From bdd25571a8c56b906de1f6c1b6b27e4538784a44 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Fri, 9 May 2025 17:04:06 -0400 Subject: [PATCH] Themer first slice (#857) * Basic scaffolding * Generate theme & palette data.js that other JS can import * Make it possible to include page-card without links * WIP * Add `appearance` to details, closes #569 Except `accent` as that's a) far less useful and b) trickier due to the icon color * Fix broken link * WIP * WIP * Icons icon * Unify styles for interactive cards * Prevent focusing inside theme icons * Fixes * Action page cards * Panel scrollables * scrollable * Scroll shadows * Add renaming UI * UI * Move styling of heading icons to `ui.css` * Support permalinks & CRUD * Make clickable cards more accessible * Style cards a little better * Default to styles panel if theme is selected * Update theme-icons.css * Custom themes should be saved under Custom * Get theme code * Bigger title * Fixes * Use theme Vue app for remixing too * Fix preview jank and make preview script more flexible * Make radio groups scrollable * Add affordance to button cards * Sticky * `` * Fix theme remixing * Improve previewing logic * Fix preview * Move `domChange()` to separate module `theme-picker.js` includes side-effects, which may not always be desirable everywhere we may want to import `domChange()` * Update preview.js * Panel animation * Hide Save button if no changes and not saved * Do not show blank code when no selection has been made * Use theme slug in filename * Remove unused component * Better UI for editing title (and any other text) * Tweak UI of renaming * Better indicate default selection * Fix preview reverting bug * Fill out app preview with more examples * Remove `zoom` from theme showcase (yields unexpected/painful results Safari), improve display in wider viewports * Pending delete * Make styles panel cards scrollable * Fix some of the Safari issues * Update search.css * Update panel.css * Select preview UI * Fix typo * Frame colors setting as color contrast * Show dark mode in color mappings * Brand color * Swatch styling * Fix caret icon * Move Starting theme to the same level as other controls * Rename typography to Fonts * Fix bug: Swatch select should show swatches from the selected palette * Move capitalize to shared utils * Add utils for handling nested objects * Icons panel * Update code.js * Move utils around * Add fit and finish to sidebar panels * Theme card: Move icons to separate data structure * Move data to dedicated folder since we now have a lot more of it * Add default icon families and variants to themes * Data * Add `deepEntries()` * Add Duotone * Spruce up icons preview * Use theme's icon family in showcase * Font cards * Font cards * Add `max-inline-size` to preview container * Remove alternate preview options * Remove theme subtitle * Support FA kit codes * Remove Pro badges from theme cards * Use panagram preview for Fonts * Consistent heading and label capitalization * Classes for different icons-card types * Update data.js.njk * Variable style on icon family cards * Fix Sharp Duotone * Clean up FA kit code hint * Hide non-functional Icon Library field * Fix theme icon heights * icon variant -> style in theme metadata * Fix bug with icons defaults not being shown * More convenient theme defaults * Fix bug with non updating URL * Fix bug * Fix multiplying badges * Custom docs pages * Add Duotone icons to Mellow theme * Fix 404 * Remove "Create" from sidebar * Fix bug * Move vue components to `/assets/`, move their CSS with them * Safari/FF compatibility * Make panels scrollable again * Fix extra spacing --------- Co-authored-by: lindsaym-fa --- docs/_data/hueRanges.js | 2 +- docs/_includes/head.njk | 3 +- docs/_includes/page-card.njk | 4 +- docs/_includes/theme-showcase.njk | 201 +++++++++- docs/_layouts/blank.njk | 1 + docs/_layouts/palette.njk | 15 +- docs/_layouts/theme.njk | 174 ++++----- .../{scripts/tweak/data.js => data/colors.js} | 36 +- docs/assets/data/fonts.js | 65 ++++ docs/assets/data/icons.js | 7 + docs/assets/data/index.js | 6 + docs/assets/data/palettes.js.njk | 32 ++ docs/assets/data/themes.js.njk | 22 ++ docs/assets/data/theming.js | 82 +++++ docs/assets/scripts/my.js | 5 + docs/assets/scripts/{tweak => }/permalink.js | 55 ++- docs/assets/scripts/sidebar-tweaks.js | 3 +- docs/assets/scripts/tweak.js | 4 +- docs/assets/scripts/tweak/code.js | 65 +++- docs/assets/scripts/util/array.js | 17 + docs/assets/scripts/util/deep.js | 180 +++++++++ docs/assets/scripts/util/dom-change.js | 2 + docs/assets/scripts/util/string.js | 24 ++ docs/assets/styles/docs.css | 169 +++++++-- docs/assets/styles/search.css | 4 +- docs/assets/styles/theme-icons.css | 93 ++++- docs/assets/styles/ui.css | 145 ++++++++ docs/assets/vue/components/color-select.js | 78 ++++ docs/assets/vue/components/editable-text.js | 82 +++++ docs/assets/vue/components/fonts-card.js | 132 +++++++ docs/assets/vue/components/icons-card.js | 175 +++++++++ docs/assets/vue/components/index.js | 12 + docs/assets/vue/components/info-tip.js | 38 ++ docs/assets/vue/components/page-card.js | 83 +++++ docs/assets/vue/components/palette-card.js | 63 ++++ docs/assets/vue/components/panel.css | 173 +++++++++ docs/assets/vue/components/scrollable.css | 89 +++++ docs/assets/vue/components/swatch-select.js | 67 ++++ docs/assets/vue/components/theme-card.js | 97 +++++ .../vue/components/ui-panel-container.js | 120 ++++++ docs/assets/vue/components/ui-panel.js | 73 ++++ docs/assets/vue/components/ui-scrollable.js | 77 ++++ .../{scripts => }/vue/directives/content.js | 0 docs/assets/{scripts => }/vue/mixins/saved.js | 2 +- docs/docs/palettes/data.js.njk | 32 ++ docs/docs/palettes/tweak.css | 36 +- docs/docs/palettes/tweak.js | 23 +- docs/docs/themes/active.md | 3 + docs/docs/themes/app/index.js | 0 docs/docs/themes/awesome.md | 3 + docs/docs/themes/brutalist.md | 3 + docs/docs/themes/classic.md | 3 + docs/docs/themes/custom.md | 7 + docs/docs/themes/data.js.njk | 22 ++ docs/docs/themes/default.md | 3 + docs/docs/themes/demo.njk | 90 ----- docs/docs/themes/demo/index.js | 69 ++++ docs/docs/themes/demo/index.njk | 46 +++ docs/docs/themes/edit/index.js | 269 ++++++++++++++ docs/docs/themes/edit/index.njk | 179 +++++++++ docs/docs/themes/edit/style.css | 149 ++++++++ docs/docs/themes/glossy.md | 3 + docs/docs/themes/matter.md | 3 + docs/docs/themes/mellow.md | 3 + docs/docs/themes/playful.md | 3 + docs/docs/themes/premium.md | 3 + docs/docs/themes/preview/app.css | 39 ++ docs/docs/themes/preview/app.njk | 20 + docs/docs/themes/preview/content.css | 342 ++++++++++++++++++ docs/docs/themes/preview/content.njk | 141 ++++++++ docs/docs/themes/preview/preview.js | 258 +++++++++++++ docs/docs/themes/remix.css | 71 +--- docs/docs/themes/remix.js | 163 --------- docs/docs/themes/showcase.css | 57 +-- docs/docs/themes/tailspin.md | 3 + src/styles/themes/brutalist.css | 5 + src/styles/themes/classic.css | 5 + src/styles/themes/matter.css | 5 + src/styles/themes/mellow.css | 6 + src/styles/themes/premium.css | 6 + 80 files changed, 4225 insertions(+), 625 deletions(-) rename docs/assets/{scripts/tweak/data.js => data/colors.js} (56%) create mode 100644 docs/assets/data/fonts.js create mode 100644 docs/assets/data/icons.js create mode 100644 docs/assets/data/index.js create mode 100644 docs/assets/data/palettes.js.njk create mode 100644 docs/assets/data/themes.js.njk create mode 100644 docs/assets/data/theming.js rename docs/assets/scripts/{tweak => }/permalink.js (66%) create mode 100644 docs/assets/scripts/util/array.js create mode 100644 docs/assets/scripts/util/deep.js create mode 100644 docs/assets/scripts/util/string.js create mode 100644 docs/assets/styles/ui.css create mode 100644 docs/assets/vue/components/color-select.js create mode 100644 docs/assets/vue/components/editable-text.js create mode 100644 docs/assets/vue/components/fonts-card.js create mode 100644 docs/assets/vue/components/icons-card.js create mode 100644 docs/assets/vue/components/index.js create mode 100644 docs/assets/vue/components/info-tip.js create mode 100644 docs/assets/vue/components/page-card.js create mode 100644 docs/assets/vue/components/palette-card.js create mode 100644 docs/assets/vue/components/panel.css create mode 100644 docs/assets/vue/components/scrollable.css create mode 100644 docs/assets/vue/components/swatch-select.js create mode 100644 docs/assets/vue/components/theme-card.js create mode 100644 docs/assets/vue/components/ui-panel-container.js create mode 100644 docs/assets/vue/components/ui-panel.js create mode 100644 docs/assets/vue/components/ui-scrollable.js rename docs/assets/{scripts => }/vue/directives/content.js (100%) rename docs/assets/{scripts => }/vue/mixins/saved.js (97%) create mode 100644 docs/docs/palettes/data.js.njk create mode 100644 docs/docs/themes/app/index.js create mode 100644 docs/docs/themes/custom.md create mode 100644 docs/docs/themes/data.js.njk delete mode 100644 docs/docs/themes/demo.njk create mode 100644 docs/docs/themes/demo/index.js create mode 100644 docs/docs/themes/demo/index.njk create mode 100644 docs/docs/themes/edit/index.js create mode 100644 docs/docs/themes/edit/index.njk create mode 100644 docs/docs/themes/edit/style.css create mode 100644 docs/docs/themes/preview/app.css create mode 100644 docs/docs/themes/preview/app.njk create mode 100644 docs/docs/themes/preview/content.css create mode 100644 docs/docs/themes/preview/content.njk create mode 100644 docs/docs/themes/preview/preview.js delete mode 100644 docs/docs/themes/remix.js diff --git a/docs/_data/hueRanges.js b/docs/_data/hueRanges.js index 1f022b31b..63d7400a6 100644 --- a/docs/_data/hueRanges.js +++ b/docs/_data/hueRanges.js @@ -1 +1 @@ -export { hueRanges as default } from '../assets/scripts/tweak/data.js'; +export { hueRanges as default } from '../assets/data/index.js'; diff --git a/docs/_includes/head.njk b/docs/_includes/head.njk index c6bd79be7..215699f92 100644 --- a/docs/_includes/head.njk +++ b/docs/_includes/head.njk @@ -32,7 +32,8 @@ {# Preset Theme #} -{% if forceTheme %} +{% if noTheme %} +{% elif forceTheme %} {% else %} diff --git a/docs/_includes/page-card.njk b/docs/_includes/page-card.njk index b684a3487..d1111fcf0 100644 --- a/docs/_includes/page-card.njk +++ b/docs/_includes/page-card.njk @@ -1,5 +1,5 @@ {%- if not page.data.unlisted -%} - +{% if page.url %}{% endif %}
{% include "svgs/" + (page.data.icon or "thumbnail-placeholder") + ".njk" ignore missing %} @@ -9,5 +9,5 @@ {%- endif %} - +{% if page.url %}{% endif %} {% endif %} diff --git a/docs/_includes/theme-showcase.njk b/docs/_includes/theme-showcase.njk index ff4450985..66bfa4e2f 100644 --- a/docs/_includes/theme-showcase.njk +++ b/docs/_includes/theme-showcase.njk @@ -7,8 +7,8 @@