From b35f7bd4017235fd8e4902c771746599f4b8088d Mon Sep 17 00:00:00 2001 From: Sean Lynch Date: Mon, 3 Mar 2025 09:01:44 -0500 Subject: [PATCH 01/53] Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 47bf0d837..af61f879a 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ The projects aims to simplify building highly interactive and visual application The components are built using Tailwind with extensibility and customization in mind through the use of theming, variants, granular class overrides, and slots. A rich design token system is also currently in the works. -See also the companion library [LayerChart](https://layerchart.com) for a large collection of composable chart components to build a wide range of visualizations. +See also the companion library [LayerChart](https://layerchart.com) for a large collection of composable chart components to build a wide range of visualizations and [LayerStack](https://layerstack.dev) for a collection of svelte stores, actions, and general utilities. ## Contributing From 3ae801cd83a247909823e778bfaa4fa827e9ea5f Mon Sep 17 00:00:00 2001 From: Sean Lynch Date: Mon, 10 Mar 2025 10:52:04 -0400 Subject: [PATCH 02/53] Enter changeset prerelease/next mode (`pnpm changeset pre enter next`) --- .changeset/pre.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 000000000..29501f68c --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,8 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "svelte-ux": "1.0.0" + }, + "changesets": [] +} From 5d8d38b987f341b1104c555121063c20927db820 Mon Sep 17 00:00:00 2001 From: Sean Lynch Date: Mon, 10 Mar 2025 14:11:58 -0400 Subject: [PATCH 03/53] Tailwind CSS v4 (#562) * Initial migration to Tailwind CSS v4 using `npx @tailwindcss/upgrade` (and some manual tweaks) * Fix Gooey after bad tailwind upgrade * fix: Fix theme page (svelte-check) by adding `@reference '../app.css` * Format project (fix lint errors) * fix(docs): Fix blur input labels (@tailwindcss/upgrade) * Update `@layerstack/tailwind` and replace `tailwind.config.cjs` with css-based config * Remove custom theming page (for now) * Add changeset * Update `@layerstack/*` packages to `-next` (Tailwind 4) versions * Update tailwind 4 to latest * fix(TextField): refine classes to for tailwind 4 changes * docs(Gooey): Replace custom `bg-gradient-radial` with built-in `bg-radial` (tailwind 4) --- .changeset/ready-planets-deny.md | 5 + packages/svelte-ux/package.json | 14 +- packages/svelte-ux/postcss.config.cjs | 4 +- packages/svelte-ux/src/docs/Blockquote.svelte | 2 +- .../src/docs/ViewSourceButton.svelte | 4 +- .../src/lib/components/AppLayout.svelte | 2 +- .../src/lib/components/Avatar.svelte | 2 +- .../src/lib/components/Backdrop.svelte | 2 +- .../src/lib/components/Button.svelte | 418 ++++----- .../src/lib/components/ButtonGroup.svelte | 2 +- .../svelte-ux/src/lib/components/Card.svelte | 4 +- .../src/lib/components/Checkbox.svelte | 2 +- .../svelte-ux/src/lib/components/Code.svelte | 4 +- .../src/lib/components/Collapse.svelte | 2 +- .../src/lib/components/DateButton.svelte | 6 +- .../src/lib/components/DatePickerField.svelte | 2 +- .../src/lib/components/DateRange.svelte | 4 +- .../src/lib/components/DateRangeField.svelte | 4 +- .../src/lib/components/Dialog.svelte | 4 +- .../src/lib/components/Drawer.svelte | 4 +- .../src/lib/components/EmptyMessage.svelte | 2 +- .../lib/components/ErrorNotification.svelte | 2 +- .../svelte-ux/src/lib/components/Field.svelte | 14 +- .../svelte-ux/src/lib/components/Gooey.svelte | 2 +- .../svelte-ux/src/lib/components/Icon.svelte | 4 +- .../svelte-ux/src/lib/components/Input.svelte | 4 +- .../svelte-ux/src/lib/components/Kbd.svelte | 2 +- .../src/lib/components/LanguageSelect.svelte | 4 +- .../src/lib/components/ListItem.svelte | 6 +- .../svelte-ux/src/lib/components/Menu.svelte | 4 +- .../src/lib/components/MenuItem.svelte | 2 +- .../src/lib/components/MonthListByYear.svelte | 2 +- .../lib/components/MultiSelectField.svelte | 2 +- .../lib/components/MultiSelectOption.svelte | 4 +- .../src/lib/components/NavItem.svelte | 6 +- .../src/lib/components/Popover.svelte | 2 +- .../src/lib/components/Preview.svelte | 2 +- .../src/lib/components/Progress.svelte | 4 +- .../src/lib/components/QuickSearch.svelte | 2 +- .../src/lib/components/RangeSlider.svelte | 6 +- .../src/lib/components/SectionDivider.svelte | 2 +- .../src/lib/components/SelectField.svelte | 4 +- .../svelte-ux/src/lib/components/Tabs.svelte | 2 +- .../src/lib/components/TextField.svelte | 32 +- .../src/lib/components/ThemeSelect.svelte | 6 +- .../svelte-ux/src/lib/components/Tilt.svelte | 4 +- .../src/lib/components/TimelineEvent.svelte | 4 +- .../src/lib/components/ToggleGroup.svelte | 14 +- .../src/lib/components/Tooltip.svelte | 2 +- .../lib/components/_SelectListOptions.svelte | 2 +- .../svelte-ux/src/routes/+layout.server.ts | 5 +- packages/svelte-ux/src/routes/+layout.svelte | 4 +- packages/svelte-ux/src/routes/+page.svelte | 2 +- packages/svelte-ux/src/routes/_NavMenu.svelte | 2 +- packages/svelte-ux/src/routes/app.css | 29 +- .../src/routes/changelog/+page.svelte | 4 +- .../src/routes/customization/+layout.svelte | 4 +- .../src/routes/customization/+page.md | 20 +- .../svelte-ux/src/routes/docs/+layout.svelte | 10 +- .../docs/components/Breadcrumb/+page.svelte | 2 +- .../docs/components/Button/+page.svelte | 14 +- .../docs/components/Dialog/+page.svelte | 2 +- .../docs/components/Drawer/+page.svelte | 2 +- .../routes/docs/components/Field/+page.svelte | 13 +- .../routes/docs/components/Gooey/+page.svelte | 16 +- .../docs/components/GridTailwind/+page.svelte | 2 +- .../routes/docs/components/Icon/+page.svelte | 6 +- .../routes/docs/components/Input/+page.svelte | 2 +- .../docs/components/ListItem/+page.svelte | 6 +- .../routes/docs/components/Month/+page.svelte | 2 +- .../components/MultiSelectField/+page.svelte | 2 +- .../docs/components/Popover/+page.svelte | 26 +- .../docs/components/Progress/+page.svelte | 20 +- .../components/ProgressCircle/+page.svelte | 14 +- .../components/ScrollingValue/+page.svelte | 6 +- .../docs/components/SelectField/+page.svelte | 4 +- .../routes/docs/components/Shine/+page.svelte | 2 +- .../docs/components/SpringValue/+page.svelte | 2 +- .../components/StackTailwind/+page.svelte | 4 +- .../routes/docs/components/Steps/+page.svelte | 8 +- .../docs/components/Switch/+page.svelte | 2 +- .../docs/components/Timeline/+page.svelte | 8 +- .../docs/components/ToggleGroup/+page.svelte | 10 +- .../docs/components/Tooltip/+page.svelte | 2 +- .../docs/components/TweenedValue/+page.svelte | 2 +- .../src/routes/theme/+page.server.ts | 20 +- .../svelte-ux/src/routes/theme/+page.svelte | 12 +- .../src/routes/theme/ColorField.svelte | 4 +- packages/svelte-ux/src/routes/theme/colors.ts | 8 +- packages/svelte-ux/tailwind.config.cjs | 72 -- pnpm-lock.yaml | 834 ++++++++---------- 91 files changed, 841 insertions(+), 1007 deletions(-) create mode 100644 .changeset/ready-planets-deny.md delete mode 100644 packages/svelte-ux/tailwind.config.cjs diff --git a/.changeset/ready-planets-deny.md b/.changeset/ready-planets-deny.md new file mode 100644 index 000000000..bbf850586 --- /dev/null +++ b/.changeset/ready-planets-deny.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': major +--- + +Tailwind 4 support diff --git a/packages/svelte-ux/package.json b/packages/svelte-ux/package.json index 89c79cdb2..7a8fdda15 100644 --- a/packages/svelte-ux/package.json +++ b/packages/svelte-ux/package.json @@ -25,6 +25,7 @@ "@sveltejs/kit": "^2.17.3", "@sveltejs/package": "^2.3.10", "@sveltejs/vite-plugin-svelte": "5.0.3", + "@tailwindcss/postcss": "^4.0.12", "@tailwindcss/typography": "^0.5.16", "@types/culori": "^2.1.1", "@types/d3-array": "^3.2.1", @@ -32,7 +33,6 @@ "@types/lodash-es": "^4.17.12", "@types/prismjs": "^1.26.5", "@vitest/coverage-v8": "^3.0.7", - "autoprefixer": "^10.4.20", "daisyui": "^4.12.24", "marked": "^15.0.7", "mdsvex": "^0.12.3", @@ -43,7 +43,7 @@ "svelte": "5.20.4", "svelte-check": "^4.1.4", "svelte2tsx": "^0.7.34", - "tailwindcss": "^3.4.17", + "tailwindcss": "^4.0.12", "tslib": "^2.8.1", "typescript": "^5.7.3", "unist-util-visit": "^5.0.0", @@ -54,11 +54,11 @@ "dependencies": { "@floating-ui/dom": "^1.6.13", "@fortawesome/fontawesome-common-types": "^6.7.2", - "@layerstack/svelte-actions": "^1.0.0", - "@layerstack/svelte-stores": "^1.0.1", - "@layerstack/svelte-table": "^1.0.0", - "@layerstack/tailwind": "^1.0.0", - "@layerstack/utils": "^1.0.0", + "@layerstack/svelte-actions": "^1.0.1-next.0", + "@layerstack/svelte-stores": "^1.0.2-next.0", + "@layerstack/svelte-table": "^1.0.1-next.0", + "@layerstack/tailwind": "^2.0.0-next.0", + "@layerstack/utils": "^1.1.0-next.0", "@mdi/js": "^7.4.47", "culori": "^4.0.1", "d3-array": "^3.2.4", diff --git a/packages/svelte-ux/postcss.config.cjs b/packages/svelte-ux/postcss.config.cjs index cdbe50f3a..e5640725a 100644 --- a/packages/svelte-ux/postcss.config.cjs +++ b/packages/svelte-ux/postcss.config.cjs @@ -1,7 +1,5 @@ module.exports = { plugins: { - 'tailwindcss/nesting': {}, - tailwindcss: {}, - autoprefixer: {}, + '@tailwindcss/postcss': {}, }, }; diff --git a/packages/svelte-ux/src/docs/Blockquote.svelte b/packages/svelte-ux/src/docs/Blockquote.svelte index 79a285d23..535fd3b07 100644 --- a/packages/svelte-ux/src/docs/Blockquote.svelte +++ b/packages/svelte-ux/src/docs/Blockquote.svelte @@ -6,7 +6,7 @@
a]:font-medium [&>a]:underline [&>a]:decoration-dashed [&>a]:decoration-primary/50 [&>a]:underline-offset-2' )} > diff --git a/packages/svelte-ux/src/docs/ViewSourceButton.svelte b/packages/svelte-ux/src/docs/ViewSourceButton.svelte index ae158e9f9..56156d96d 100644 --- a/packages/svelte-ux/src/docs/ViewSourceButton.svelte +++ b/packages/svelte-ux/src/docs/ViewSourceButton.svelte @@ -20,9 +20,9 @@ -
+
{label}
{href}
diff --git a/packages/svelte-ux/src/lib/components/AppLayout.svelte b/packages/svelte-ux/src/lib/components/AppLayout.svelte index 5b43a3515..c1b8f7a0a 100644 --- a/packages/svelte-ux/src/lib/components/AppLayout.svelte +++ b/packages/svelte-ux/src/lib/components/AppLayout.svelte @@ -34,7 +34,7 @@ headerPosition === 'full' || temporaryDrawer ? '[&>header]:w-full' : '[&>header]:w-[calc(100%-var(--drawerWidth))] [&>header]:left-[var(--drawerWidth)] [&>header]:duration-500', - '[&>main]:md:ml-[var(--drawerWidth)] [&>main]:mt-[var(--headerHeight)] [&>main]:transition-[margin] [&>main]:duration-500', + 'md:[&>main]:ml-(--drawerWidth) [&>main]:mt-[var(--headerHeight)] [&>main]:transition-[margin] [&>main]:duration-500', /* Fix scrolling offset for headings (h1, ...) or other elements with an id set (``) */ '[:where(&_[id])]:scroll-m-[var(--headerHeight)]', settingsClasses.root, diff --git a/packages/svelte-ux/src/lib/components/Avatar.svelte b/packages/svelte-ux/src/lib/components/Avatar.svelte index f2ccf38fa..321a4eca3 100644 --- a/packages/svelte-ux/src/lib/components/Avatar.svelte +++ b/packages/svelte-ux/src/lib/components/Avatar.svelte @@ -14,7 +14,7 @@
['variant'] = defaults.variant; export let size: ComponentProps
{/if} -
+
(open = true)} @@ -164,7 +164,7 @@ diff --git a/packages/svelte-ux/src/lib/components/Dialog.svelte b/packages/svelte-ux/src/lib/components/Dialog.svelte index d88a2dd71..69154cff5 100644 --- a/packages/svelte-ux/src/lib/components/Dialog.svelte +++ b/packages/svelte-ux/src/lib/components/Dialog.svelte @@ -111,7 +111,7 @@ >