diff --git a/.changeset/breezy-bushes-admire.md b/.changeset/breezy-bushes-admire.md new file mode 100644 index 000000000..b4005cf45 --- /dev/null +++ b/.changeset/breezy-bushes-admire.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +fix: Move `culori` and `@fortawesome/fontawesome-common-types` to `devDependenies` diff --git a/.changeset/bright-crabs-play.md b/.changeset/bright-crabs-play.md new file mode 100644 index 000000000..faf5f545b --- /dev/null +++ b/.changeset/bright-crabs-play.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +feat(TableOfContents): Simplify base styling and provide greater control via `classes`, `props`, `itemIndent` and `linkIndent` props and `link` slot. diff --git a/.changeset/clear-regions-listen.md b/.changeset/clear-regions-listen.md new file mode 100644 index 000000000..26a2d7854 --- /dev/null +++ b/.changeset/clear-regions-listen.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +fix(MultiSelect): Fix reactivity scope for filteredSelectedOptions and filteredUnselectedOptions. Issue #594 diff --git a/.changeset/cool-teams-judge.md b/.changeset/cool-teams-judge.md new file mode 100644 index 000000000..4fd325210 --- /dev/null +++ b/.changeset/cool-teams-judge.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +fix(TableOfContents): Fix `classes` and `props` types diff --git a/.changeset/cuddly-coins-tease.md b/.changeset/cuddly-coins-tease.md new file mode 100644 index 000000000..3dc46ed67 --- /dev/null +++ b/.changeset/cuddly-coins-tease.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +fix(Duration): Update Duration component to new `@layerstack/utils` `Duration` class diff --git a/.changeset/cuddly-snakes-tie.md b/.changeset/cuddly-snakes-tie.md new file mode 100644 index 000000000..69dcdec29 --- /dev/null +++ b/.changeset/cuddly-snakes-tie.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +fix(NavItem): Apply active classes after base classes diff --git a/.changeset/dirty-pets-switch.md b/.changeset/dirty-pets-switch.md new file mode 100644 index 000000000..01989369b --- /dev/null +++ b/.changeset/dirty-pets-switch.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +fix(Drawer): Fix display of action buttons diff --git a/.changeset/fair-bugs-carry.md b/.changeset/fair-bugs-carry.md new file mode 100644 index 000000000..8b99115c6 --- /dev/null +++ b/.changeset/fair-bugs-carry.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +fix: Use `next` releases for all `@layerstack/*` packages diff --git a/.changeset/four-bears-join.md b/.changeset/four-bears-join.md new file mode 100644 index 000000000..4b2d1dd93 --- /dev/null +++ b/.changeset/four-bears-join.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +fix: Update deps include @layerstack/utils with improved format diff --git a/.changeset/funny-days-crash.md b/.changeset/funny-days-crash.md new file mode 100644 index 000000000..89d955886 --- /dev/null +++ b/.changeset/funny-days-crash.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +refactor: Replace `date-fns` usage with new `@layerstack/utils` date utils (based on d3-time) to reduce bundle size diff --git a/.changeset/green-maps-bathe.md b/.changeset/green-maps-bathe.md new file mode 100644 index 000000000..e649976ed --- /dev/null +++ b/.changeset/green-maps-bathe.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +docs: Update @layerstack/tailwind to `2.0.0-next.1`, fixing styling of tailwind typography when deployed diff --git a/.changeset/loose-baths-make.md b/.changeset/loose-baths-make.md new file mode 100644 index 000000000..430ca3736 --- /dev/null +++ b/.changeset/loose-baths-make.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +Update dependencies diff --git a/.changeset/loud-bees-juggle.md b/.changeset/loud-bees-juggle.md new file mode 100644 index 000000000..83a14ee57 --- /dev/null +++ b/.changeset/loud-bees-juggle.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +chore: Update @layerstack/tailwind with better theme generation and runtime separation diff --git a/.changeset/major-turkeys-ask.md b/.changeset/major-turkeys-ask.md new file mode 100644 index 000000000..09eedb0fd --- /dev/null +++ b/.changeset/major-turkeys-ask.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +fix(Menu): Support `bind:open` (underlying Popover) diff --git a/.changeset/nice-lamps-sing.md b/.changeset/nice-lamps-sing.md new file mode 100644 index 000000000..f19969c47 --- /dev/null +++ b/.changeset/nice-lamps-sing.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +chore: Update deps diff --git a/.changeset/nice-onions-sell.md b/.changeset/nice-onions-sell.md new file mode 100644 index 000000000..1d74c9ed8 --- /dev/null +++ b/.changeset/nice-onions-sell.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +feat(DateRangeField): Add `quickPresets` support diff --git a/.changeset/open-hats-arrive.md b/.changeset/open-hats-arrive.md new file mode 100644 index 000000000..562685577 --- /dev/null +++ b/.changeset/open-hats-arrive.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +fix(DateRangeField): Include year when displaying month selection diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 000000000..a68aedca5 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,30 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "svelte-ux": "1.0.0" + }, + "changesets": [ + "breezy-bushes-admire", + "bright-crabs-play", + "clear-regions-listen", + "cool-teams-judge", + "cuddly-coins-tease", + "cuddly-snakes-tie", + "dirty-pets-switch", + "fair-bugs-carry", + "four-bears-join", + "funny-days-crash", + "green-maps-bathe", + "loose-baths-make", + "loud-bees-juggle", + "major-turkeys-ask", + "nice-lamps-sing", + "nice-onions-sell", + "open-hats-arrive", + "ready-planets-deny", + "violet-books-sneeze", + "wide-months-rescue", + "witty-spies-divide" + ] +} 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/.changeset/violet-books-sneeze.md b/.changeset/violet-books-sneeze.md new file mode 100644 index 000000000..7d3938410 --- /dev/null +++ b/.changeset/violet-books-sneeze.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +feat(TreeList): Support passing `props` to underlying ul/li elements. Add `data-level` attribute to li for CSS targeting diff --git a/.changeset/wide-months-rescue.md b/.changeset/wide-months-rescue.md new file mode 100644 index 000000000..c33a51561 --- /dev/null +++ b/.changeset/wide-months-rescue.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +fix(DateRange): Fix selection gradient diff --git a/.changeset/witty-spies-divide.md b/.changeset/witty-spies-divide.md new file mode 100644 index 000000000..2497600cf --- /dev/null +++ b/.changeset/witty-spies-divide.md @@ -0,0 +1,5 @@ +--- +'svelte-ux': patch +--- + +Switch from `@tailwindcss/postcss` to `@tailwindcss/vite`. Update all non-major packages 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 diff --git a/package.json b/package.json index 65379cb0c..68e97a9e1 100644 --- a/package.json +++ b/package.json @@ -17,11 +17,11 @@ "up-deps": "pnpm update -r -i --latest" }, "devDependencies": { - "@changesets/cli": "^2.27.8", + "@changesets/cli": "^2.29.4", "@svitejs/changesets-changelog-github-compact": "^1.2.0", - "prettier-plugin-svelte": "^3.3.3", + "prettier-plugin-svelte": "^3.4.0", "rimraf": "6.0.1", - "wrangler": "^4.14.4" + "wrangler": "^4.20.0" }, "packageManager": "pnpm@10.5.1" } diff --git a/packages/svelte-ux/CHANGELOG.md b/packages/svelte-ux/CHANGELOG.md index b7e786c79..084f7ab4e 100644 --- a/packages/svelte-ux/CHANGELOG.md +++ b/packages/svelte-ux/CHANGELOG.md @@ -1,5 +1,109 @@ # svelte-ux +## 2.0.0-next.13 + +### Patch Changes + +- fix(TableOfContents): Fix `classes` and `props` types ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +## 2.0.0-next.12 + +### Patch Changes + +- feat(TableOfContents): Simplify base styling and provide greater control via `classes`, `props`, `itemIndent` and `linkIndent` props and `link` slot. ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +- feat(TreeList): Support passing `props` to underlying ul/li elements. Add `data-level` attribute to li for CSS targeting ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +## 2.0.0-next.11 + +### Patch Changes + +- chore: Update @layerstack/tailwind with better theme generation and runtime separation ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +## 2.0.0-next.10 + +### Patch Changes + +- chore: Update deps ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +## 2.0.0-next.9 + +### Patch Changes + +- fix: Move `culori` and `@fortawesome/fontawesome-common-types` to `devDependenies` ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +## 2.0.0-next.8 + +### Patch Changes + +- fix(NavItem): Apply active classes after base classes ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +- refactor: Replace `date-fns` usage with new `@layerstack/utils` date utils (based on d3-time) to reduce bundle size ([#602](https://github.com/techniq/svelte-ux/pull/602)) + +## 2.0.0-next.7 + +### Patch Changes + +- fix(Drawer): Fix display of action buttons ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +## 2.0.0-next.6 + +### Patch Changes + +- fix(MultiSelect): Fix reactivity scope for filteredSelectedOptions and filteredUnselectedOptions. Issue #594 ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +- fix: Update deps including @layerstack/utils with improved format ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +- fix(DateRangeField): Include year when displaying month selection ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +## 2.0.0-next.5 + +### Patch Changes + +- fix(Duration): Update Duration component to new `@layerstack/utils` `Duration` class ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +- Update dependencies ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +## 2.0.0-next.4 + +### Patch Changes + +- fix(Menu): Support `bind:open` (underlying Popover) ([#584](https://github.com/techniq/svelte-ux/pull/584)) + +- feat(DateRangeField): Add `quickPresets` support ([#584](https://github.com/techniq/svelte-ux/pull/584)) + +- fix(DateRange): Fix selection gradient ([#584](https://github.com/techniq/svelte-ux/pull/584)) + +## 2.0.0-next.3 + +### Patch Changes + +- fix(SelectField|MultiSelect): Unify and enhance search functionality, enabling new custom search capability in MultiSelect. + +## 2.0.0-next.2 + +### Patch Changes + +- Switch from `@tailwindcss/postcss` to `@tailwindcss/vite`. Update all non-major packages + +## 2.0.0-next.1 + +### Patch Changes + +- fix: Use `next` releases for all `@layerstack/*` packages ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +- docs: Update @layerstack/tailwind to `2.0.0-next.1`, fixing styling of tailwind typography when deployed ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +## 2.0.0-next.0 + +### Major Changes + +- Tailwind 4 support ([#571](https://github.com/techniq/svelte-ux/pull/571)) + +### Patch Changes + +- fix(Progress): Fix `TypeError: Failed to set the 'value' property on 'HTMLProgressElement': The provided double value is non-finite.` ([`6c2efa2`](https://github.com/techniq/svelte-ux/commit/6c2efa2d6d5b1a7ccf2b99c1826bc1232c51d2cc)) + ## 1.0.6 ### Patch Changes diff --git a/packages/svelte-ux/package.json b/packages/svelte-ux/package.json index c103dd0e0..1fcf26abe 100644 --- a/packages/svelte-ux/package.json +++ b/packages/svelte-ux/package.json @@ -4,9 +4,9 @@ "author": "Sean Lynch ", "license": "MIT", "repository": "techniq/svelte-ux", - "version": "1.0.6", + "version": "2.0.0-next.13", "scripts": { - "dev": "vite dev", + "dev": "vite dev --port 3001", "build": "vite build", "preview": "vite preview", "package": "svelte-package", @@ -19,59 +19,59 @@ "prepare": "svelte-kit sync" }, "devDependencies": { - "@changesets/cli": "^2.27.8", + "@changesets/cli": "^2.29.4", + "@fortawesome/fontawesome-common-types": "^6.7.2", "@fortawesome/free-solid-svg-icons": "^6.7.2", - "@sveltejs/adapter-cloudflare": "^7.0.3", - "@sveltejs/kit": "^2.21.0", + "@iconify-json/lucide": "^1.2.51", + "@sveltejs/adapter-cloudflare": "^7.0.4", + "@sveltejs/kit": "^2.21.5", "@sveltejs/package": "^2.3.11", - "@sveltejs/vite-plugin-svelte": "5.0.3", + "@sveltejs/vite-plugin-svelte": "5.1.0", "@tailwindcss/typography": "^0.5.16", - "@types/culori": "^2.1.1", + "@tailwindcss/vite": "^4.1.10", + "@types/culori": "^4.0.0", "@types/d3-array": "^3.2.1", "@types/d3-scale": "^4.0.9", "@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", + "@vitest/coverage-v8": "^3.2.3", + "culori": "^4.0.1", "marked": "^15.0.7", "mdsvex": "^0.12.3", - "posthog-js": "^1.223.4", - "prettier": "^3.5.2", - "prettier-plugin-svelte": "^3.3.3", + "posthog-js": "^1.252.0", + "prettier": "^3.5.3", + "prettier-plugin-svelte": "^3.4.0", "rehype-slug": "^6.0.0", - "svelte": "5.20.4", - "svelte-check": "^4.1.4", - "svelte2tsx": "^0.7.34", - "tailwindcss": "^3.4.17", + "svelte": "5.34.1", + "svelte-check": "^4.2.1", + "svelte2tsx": "^0.7.39", + "tailwindcss": "^4.1.10", "tslib": "^2.8.1", - "typescript": "^5.7.3", + "typescript": "^5.8.2", "unist-util-visit": "^5.0.0", - "vite": "^6.2.0", - "vitest": "^3.0.7" + "unplugin-icons": "^22.1.0", + "vite": "^6.2.1", + "vitest": "^3.2.3" }, "type": "module", "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", + "@floating-ui/dom": "^1.7.1", + "@layerstack/svelte-actions": "1.0.1-next.12", + "@layerstack/svelte-stores": "1.0.2-next.12", + "@layerstack/svelte-table": "1.0.1-next.12", + "@layerstack/tailwind": "2.0.0-next.15", + "@layerstack/utils": "2.0.0-next.12", "@mdi/js": "^7.4.47", - "culori": "^4.0.1", "d3-array": "^3.2.4", "d3-scale": "^4.0.2", - "date-fns": "^4.1.0", "esm-env": "^1.2.2", "immer": "^10.1.1", "lodash-es": "^4.17.21", "prism-svelte": "^0.5.0", "prism-themes": "^1.9.0", - "prismjs": "^1.29.0", + "prismjs": "^1.30.0", "sveld": "^0.22.1", - "zod": "^3.24.2" + "zod": "^3.25.64" }, "peerDependencies": { "svelte": "^3.56.0 || ^4.0.0 || ^5.0.0" diff --git a/packages/svelte-ux/postcss.config.cjs b/packages/svelte-ux/postcss.config.cjs deleted file mode 100644 index cdbe50f3a..000000000 --- a/packages/svelte-ux/postcss.config.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - plugins: { - 'tailwindcss/nesting': {}, - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/packages/svelte-ux/src/app.d.ts b/packages/svelte-ux/src/app.d.ts index fbfb7a9c4..8083eaaef 100644 --- a/packages/svelte-ux/src/app.d.ts +++ b/packages/svelte-ux/src/app.d.ts @@ -1,3 +1,5 @@ +// export * from 'unplugin-icons/types/svelte'; + // See https://kit.svelte.dev/docs/types#app // for information about these interfaces // and what to do when importing types 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..e2a5fef0d 100644 --- a/packages/svelte-ux/src/lib/components/AppLayout.svelte +++ b/packages/svelte-ux/src/lib/components/AppLayout.svelte @@ -13,6 +13,9 @@ /** Control whether header should be full width (deafult) or nav should be full height */ export let headerPosition: 'full' | 'inset' = 'full'; + let className: string | undefined = undefined; + export { className as class }; + export let classes: { root?: string; aside?: string; @@ -34,12 +37,12 @@ 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, classes.root, - $$props.class + className )} > 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 @@
(); -
+
{#each data as item} {@const valuePercent = item.value / (total ?? sum(data, (d) => d.value))} diff --git a/packages/svelte-ux/src/lib/components/Button.svelte b/packages/svelte-ux/src/lib/components/Button.svelte index 67b011fcd..b61caafb5 100644 --- a/packages/svelte-ux/src/lib/components/Button.svelte +++ b/packages/svelte-ux/src/lib/components/Button.svelte @@ -27,6 +27,9 @@ export let size: ButtonSize | undefined = undefined; // default in reactive groupContext below export let color: ButtonColor | undefined = undefined; // default in reactive groupContext below + let className: string | undefined = undefined; + export { className as class }; + /** @type {{root?: string, icon?: string, loading?: string}} */ export let classes: { root?: string; @@ -44,10 +47,10 @@ $: _class = cls( 'Button', 'transition duration-200 ring-surface-content/60 touch-manipulation', - 'focus:outline-none focus-visible:ring-1', + 'focus:outline-hidden focus-visible:ring-1', fullWidth ? 'flex w-full' : 'inline-flex', loading ? 'gap-2' : 'gap-1', - variant === 'none' || !rounded ? '' : rounded === 'full' ? 'rounded-full' : 'rounded', + variant === 'none' || !rounded ? '' : rounded === 'full' ? 'rounded-full' : 'rounded-sm', variant !== 'none' && [ 'items-center justify-center', 'font-medium tracking-wider whitespace-nowrap', @@ -80,329 +83,329 @@ { default: { default: [ - 'hover:[--bg-color:theme(colors.surface-content/10%)]', - // '[--text-color:theme(colors.surface-content)]', // inherit - '[--ring-color:theme(colors.surface-content/60%)]', + 'hover:[--bg-color:var(--color-surface-content)]/10', + // '[--text-color:var(--color-surface-content)]', // inherit + '[--ring-color:var(--color-surface-content)]/60', ], primary: [ - 'hover:[--bg-color:theme(colors.primary/10%)]', - '[--text-color:theme(colors.primary)]', - '[--ring-color:theme(colors.primary/60%)]', + 'hover:[--bg-color:var(--color-primary)]/10', + '[--text-color:var(--color-primary)]', + '[--ring-color:var(--color-primary)]/60', ], secondary: [ - 'hover:[--bg-color:theme(colors.secondary/10%)]', - '[--text-color:theme(colors.secondary)]', - '[--ring-color:theme(colors.secondary/60%)]', + 'hover:[--bg-color:var(--color-secondary)]/10', + '[--text-color:var(--color-secondary)]', + '[--ring-color:var(--color-secondary)]/60', ], accent: [ - 'hover:[--bg-color:theme(colors.accent/10%)]', - '[--text-color:theme(colors.accent)]', - '[--ring-color:theme(colors.accent/60%)]', + 'hover:[--bg-color:var(--color-accent)]/10', + '[--text-color:var(--color-accent)]', + '[--ring-color:var(--color-accent)]/60', ], neutral: [ - 'hover:[--bg-color:theme(colors.neutral/10%)]', - '[--text-color:theme(colors.neutral)]', - '[--ring-color:theme(colors.neutral/60%)]', + 'hover:[--bg-color:var(--color-neutral)]/10', + '[--text-color:var(--color-neutral)]', + '[--ring-color:var(--color-neutral)]/60', ], info: [ - 'hover:[--bg-color:theme(colors.info/10%)]', - '[--text-color:theme(colors.info)]', - '[--ring-color:theme(colors.info/60%)]', + 'hover:[--bg-color:var(--color-info)]/10', + '[--text-color:var(--color-info)]', + '[--ring-color:var(--color-info)]/60', ], success: [ - 'hover:[--bg-color:theme(colors.success/10%)]', - '[--text-color:theme(colors.success)]', - '[--ring-color:theme(colors.success/60%)]', + 'hover:[--bg-color:var(--color-success)]/10', + '[--text-color:var(--color-success)]', + '[--ring-color:var(--color-success)]/60', ], warning: [ - 'hover:[--bg-color:theme(colors.warning/10%)]', - '[--text-color:theme(colors.warning)]', - '[--ring-color:theme(colors.warning/60%)]', + 'hover:[--bg-color:var(--color-warning)]/10', + '[--text-color:var(--color-warning)]', + '[--ring-color:var(--color-warning)]/60', ], danger: [ - 'hover:[--bg-color:theme(colors.danger/10%)]', - '[--text-color:theme(colors.danger)]', - '[--ring-color:theme(colors.danger/60%)]', + 'hover:[--bg-color:var(--color-danger)]/10', + '[--text-color:var(--color-danger)]', + '[--ring-color:var(--color-danger)]/60', ], }, outline: { default: [ - 'hover:[--bg-color:theme(colors.surface-content/10%)]', - '[--border-color:theme(colors.surface-content)]', - '[--text-color:theme(colors.surface-content)]', - '[--ring-color:theme(colors.surface-content/60%)]', + 'hover:[--bg-color:var(--color-surface-content)]/10', + '[--border-color:var(--color-surface-content)]', + '[--text-color:var(--color-surface-content)]', + '[--ring-color:var(--color-surface-content)]/60', ], primary: [ - 'hover:[--bg-color:theme(colors.primary/10%)]', - '[--border-color:theme(colors.primary)]', - '[--text-color:theme(colors.primary)]', - '[--ring-color:theme(colors.primary/60%)]', + 'hover:[--bg-color:var(--color-primary)]/10', + '[--border-color:var(--color-primary)]', + '[--text-color:var(--color-primary)]', + '[--ring-color:var(--color-primary)]/60', ], secondary: [ - 'hover:[--bg-color:theme(colors.secondary/10%)]', - '[--border-color:theme(colors.secondary)]', - '[--text-color:theme(colors.secondary)]', - '[--ring-color:theme(colors.secondary/60%)]', + 'hover:[--bg-color:var(--color-secondary)]/10', + '[--border-color:var(--color-secondary)]', + '[--text-color:var(--color-secondary)]', + '[--ring-color:var(--color-secondary)]/60', ], accent: [ - 'hover:[--bg-color:theme(colors.accent/10%)]', - '[--border-color:theme(colors.accent)]', - '[--text-color:theme(colors.accent)]', - '[--ring-color:theme(colors.accent/60%)]', + 'hover:[--bg-color:var(--color-accent)]/10', + '[--border-color:var(--color-accent)]', + '[--text-color:var(--color-accent)]', + '[--ring-color:var(--color-accent)]/60', ], neutral: [ - 'hover:[--bg-color:theme(colors.neutral/10%)]', - '[--border-color:theme(colors.neutral)]', - '[--text-color:theme(colors.neutral)]', - '[--ring-color:theme(colors.neutral/60%)]', + 'hover:[--bg-color:var(--color-neutral)]/10', + '[--border-color:var(--color-neutral)]', + '[--text-color:var(--color-neutral)]', + '[--ring-color:var(--color-neutral)]/60', ], info: [ - 'hover:[--bg-color:theme(colors.info/10%)]', - '[--border-color:theme(colors.info)]', - '[--text-color:theme(colors.info)]', - '[--ring-color:theme(colors.info/60%)]', + 'hover:[--bg-color:var(--color-info)]/10', + '[--border-color:var(--color-info)]', + '[--text-color:var(--color-info)]', + '[--ring-color:var(--color-info)]/60', ], success: [ - 'hover:[--bg-color:theme(colors.success/10%)]', - '[--border-color:theme(colors.success)]', - '[--text-color:theme(colors.success)]', - '[--ring-color:theme(colors.success/60%)]', + 'hover:[--bg-color:var(--color-success)]/10', + '[--border-color:var(--color-success)]', + '[--text-color:var(--color-success)]', + '[--ring-color:var(--color-success)]/60', ], warning: [ - 'hover:[--bg-color:theme(colors.warning/10%)]', - '[--border-color:theme(colors.warning)]', - '[--text-color:theme(colors.warning)]', - '[--ring-color:theme(colors.warning/60%)]', + 'hover:[--bg-color:var(--color-warning)]/10', + '[--border-color:var(--color-warning)]', + '[--text-color:var(--color-warning)]', + '[--ring-color:var(--color-warning)]/60', ], danger: [ - 'hover:[--bg-color:theme(colors.danger/10%)]', - '[--border-color:theme(colors.danger)]', - '[--text-color:theme(colors.danger)]', - '[--ring-color:theme(colors.danger/60%)]', + 'hover:[--bg-color:var(--color-danger)]/10', + '[--border-color:var(--color-danger)]', + '[--text-color:var(--color-danger)]', + '[--ring-color:var(--color-danger)]/60', ], }, fill: { default: [ - `[--bg-color:theme(colors.surface-content)]`, - 'hover:[--bg-color:theme(colors.surface-content/80%)]', - '[--text-color:theme(colors.surface-200)]', - '[--ring-color:theme(colors.surface-content/60%)]', + `[--bg-color:var(--color-surface-content)]`, + 'hover:[--bg-color:var(--color-surface-content)]/80', + '[--text-color:var(--color-surface-200)]', + '[--ring-color:var(--color-surface-content)]/60', ], primary: [ - `[--bg-color:theme(colors.primary)]`, - 'hover:[--bg-color:theme(colors.primary-600)]', - '[--text-color:theme(colors.primary-content)]', - '[--ring-color:theme(colors.primary/60%)]', + `[--bg-color:var(--color-primary)]`, + 'hover:[--bg-color:var(--color-primary-600)]', + '[--text-color:var(--color-primary-content)]', + '[--ring-color:var(--color-primary)]/60', ], secondary: [ - '[--bg-color:theme(colors.secondary)]', - 'hover:[--bg-color:theme(colors.secondary-600)]', - '[--text-color:theme(colors.secondary-content)]', - '[--ring-color:theme(colors.secondary/60%)]', + '[--bg-color:var(--color-secondary)]', + 'hover:[--bg-color:var(--color-secondary-600)]', + '[--text-color:var(--color-secondary-content)]', + '[--ring-color:var(--color-secondary)]/60', ], accent: [ - '[--bg-color:theme(colors.accent)]', - 'hover:[--bg-color:theme(colors.accent-600)]', - '[--text-color:theme(colors.accent-content)]', - '[--ring-color:theme(colors.accent/60%)]', + '[--bg-color:var(--color-accent)]', + 'hover:[--bg-color:var(--color-accent-600)]', + '[--text-color:var(--color-accent-content)]', + '[--ring-color:var(--color-accent)]/60', ], neutral: [ - '[--bg-color:theme(colors.neutral)]', - 'hover:[--bg-color:theme(colors.neutral-600)]', - '[--text-color:theme(colors.neutral-content)]', - '[--ring-color:theme(colors.neutral/60%)]', + '[--bg-color:var(--color-neutral)]', + 'hover:[--bg-color:var(--color-neutral-600)]', + '[--text-color:var(--color-neutral-content)]', + '[--ring-color:var(--color-neutral)]/60', ], info: [ - `[--bg-color:theme(colors.info)]`, - 'hover:[--bg-color:theme(colors.info-600)]', - '[--text-color:theme(colors.info-content)]', - '[--ring-color:theme(colors.info/60%)]', + `[--bg-color:var(--color-info)]`, + 'hover:[--bg-color:var(--color-info-600)]', + '[--text-color:var(--color-info-content)]', + '[--ring-color:var(--color-info)]/60', ], success: [ - `[--bg-color:theme(colors.success)]`, - 'hover:[--bg-color:theme(colors.success-600)]', - '[--text-color:theme(colors.success-content)]', - '[--ring-color:theme(colors.success/60%)]', + `[--bg-color:var(--color-success)]`, + 'hover:[--bg-color:var(--color-success-600)]', + '[--text-color:var(--color-success-content)]', + '[--ring-color:var(--color-success)]/60', ], warning: [ - `[--bg-color:theme(colors.warning)]`, - 'hover:[--bg-color:theme(colors.warning-600)]', - '[--text-color:theme(colors.warning-content)]', - '[--ring-color:theme(colors.warning/60%)]', + `[--bg-color:var(--color-warning)]`, + 'hover:[--bg-color:var(--color-warning-600)]', + '[--text-color:var(--color-warning-content)]', + '[--ring-color:var(--color-warning)]/60', ], danger: [ - `[--bg-color:theme(colors.danger)]`, - 'hover:[--bg-color:theme(colors.danger-600)]', - '[--text-color:theme(colors.danger-content)]', - '[--ring-color:theme(colors.danger/60%)]', + `[--bg-color:var(--color-danger)]`, + 'hover:[--bg-color:var(--color-danger-600)]', + '[--text-color:var(--color-danger-content)]', + '[--ring-color:var(--color-danger)]/60', ], }, 'fill-light': { default: [ - '[--bg-color:theme(colors.surface-content/10%)]', - 'hover:[--bg-color:theme(colors.surface-content/20%)]', - '[--text-color:theme(colors.surface-content)]', - '[--ring-color:theme(colors.surface-content/60%)]', + '[--bg-color:var(--color-surface-content)]/10', + 'hover:[--bg-color:var(--color-surface-content)]/20', + '[--text-color:var(--color-surface-content)]', + '[--ring-color:var(--color-surface-content)]/60', ], primary: [ - '[--bg-color:theme(colors.primary/10%)]', - 'hover:[--bg-color:theme(colors.primary/20%)]', - '[--text-color:theme(colors.primary)]', - '[--ring-color:theme(colors.primary/60%)]', + '[--bg-color:var(--color-primary)]/10', + 'hover:[--bg-color:var(--color-primary)]/20', + '[--text-color:var(--color-primary)]', + '[--ring-color:var(--color-primary)]/60', ], secondary: [ - '[--bg-color:theme(colors.secondary/10%)]', - 'hover:[--bg-color:theme(colors.secondary/20%)]', - '[--text-color:theme(colors.secondary)]', - '[--ring-color:theme(colors.secondary/60%)]', + '[--bg-color:var(--color-secondary)]/10', + 'hover:[--bg-color:var(--color-secondary)]/20', + '[--text-color:var(--color-secondary)]', + '[--ring-color:var(--color-secondary)]/60', ], accent: [ - '[--bg-color:theme(colors.accent/10%)]', - 'hover:[--bg-color:theme(colors.accent/20%)]', - '[--text-color:theme(colors.accent)]', - '[--ring-color:theme(colors.secondary/60%)]', + '[--bg-color:var(--color-accent)]/10', + 'hover:[--bg-color:var(--color-accent)]/20', + '[--text-color:var(--color-accent)]', + '[--ring-color:var(--color-secondary)]/60', ], neutral: [ - '[--bg-color:theme(colors.neutral/10%)]', - 'hover:[--bg-color:theme(colors.neutral/20%)]', - '[--text-color:theme(colors.neutral)]', - '[--ring-color:theme(colors.neutral/60%)]', + '[--bg-color:var(--color-neutral)]/10', + 'hover:[--bg-color:var(--color-neutral)]/20', + '[--text-color:var(--color-neutral)]', + '[--ring-color:var(--color-neutral)]/60', ], info: [ - '[--bg-color:theme(colors.info/10%)]', - 'hover:[--bg-color:theme(colors.info/20%)]', - '[--text-color:theme(colors.info)]', - '[--ring-color:theme(colors.info/60%)]', + '[--bg-color:var(--color-info)]/10', + 'hover:[--bg-color:var(--color-info)]/20', + '[--text-color:var(--color-info)]', + '[--ring-color:var(--color-info)]/60', ], success: [ - '[--bg-color:theme(colors.success/10%)]', - 'hover:[--bg-color:theme(colors.success/20%)]', - '[--text-color:theme(colors.success)]', - '[--ring-color:theme(colors.success/60%)]', + '[--bg-color:var(--color-success)]/10', + 'hover:[--bg-color:var(--color-success)]/20', + '[--text-color:var(--color-success)]', + '[--ring-color:var(--color-success)]/60', ], warning: [ - '[--bg-color:theme(colors.warning/10%)]', - 'hover:[--bg-color:theme(colors.warning/20%)]', - '[--text-color:theme(colors.warning)]', - '[--ring-color:theme(colors.warning/60%)]', + '[--bg-color:var(--color-warning)]/10', + 'hover:[--bg-color:var(--color-warning)]/20', + '[--text-color:var(--color-warning)]', + '[--ring-color:var(--color-warning)]/60', ], danger: [ - '[--bg-color:theme(colors.danger/10%)]', - 'hover:[--bg-color:theme(colors.danger/20%)]', - '[--text-color:theme(colors.danger)]', - '[--ring-color:theme(colors.danger/60%)]', + '[--bg-color:var(--color-danger)]/10', + 'hover:[--bg-color:var(--color-danger)]/20', + '[--text-color:var(--color-danger)]', + '[--ring-color:var(--color-danger)]/60', ], }, 'fill-outline': { default: [ - '[--bg-color:theme(colors.surface-content/10%)]', - 'hover:[--bg-color:theme(colors.surface-content/20%)]', - '[--border-color:theme(colors.surface-content)]', - '[--text-color:theme(colors.surface-content)]', - '[--ring-color:theme(colors.surface-content/60%)]', + '[--bg-color:var(--color-surface-content)]/10', + 'hover:[--bg-color:var(--color-surface-content)]/20', + '[--border-color:var(--color-surface-content)]', + '[--text-color:var(--color-surface-content)]', + '[--ring-color:var(--color-surface-content)]/60', ], primary: [ - '[--bg-color:theme(colors.primary/10%)]', - 'hover:[--bg-color:theme(colors.primary/20%)]', - '[--border-color:theme(colors.primary)]', - '[--text-color:theme(colors.primary)]', - '[--ring-color:theme(colors.primary/60%)]', + '[--bg-color:var(--color-primary)]/10', + 'hover:[--bg-color:var(--color-primary)]/20', + '[--border-color:var(--color-primary)]', + '[--text-color:var(--color-primary)]', + '[--ring-color:var(--color-primary)]/60', ], secondary: [ - '[--bg-color:theme(colors.secondary/10%)]', - 'hover:[--bg-color:theme(colors.secondary/20%)]', - '[--border-color:theme(colors.secondary)]', - '[--text-color:theme(colors.secondary)]', - '[--ring-color:theme(colors.secondary/60%)]', + '[--bg-color:var(--color-secondary)]/10', + 'hover:[--bg-color:var(--color-secondary)]/20', + '[--border-color:var(--color-secondary)]', + '[--text-color:var(--color-secondary)]', + '[--ring-color:var(--color-secondary)]/60', ], accent: [ - '[--bg-color:theme(colors.accent/10%)]', - 'hover:[--bg-color:theme(colors.accent/20%)]', - '[--border-color:theme(colors.accent)]', - '[--text-color:theme(colors.accent)]', - '[--ring-color:theme(colors.accent/60%)]', + '[--bg-color:var(--color-accent)]/10', + 'hover:[--bg-color:var(--color-accent)]/20', + '[--border-color:var(--color-accent)]', + '[--text-color:var(--color-accent)]', + '[--ring-color:var(--color-accent)]/60', ], neutral: [ - '[--bg-color:theme(colors.neutral/10%)]', - 'hover:[--bg-color:theme(colors.neutral/20%)]', - '[--border-color:theme(colors.neutral)]', - '[--text-color:theme(colors.neutral)]', - '[--ring-color:theme(colors.neutral/60%)]', + '[--bg-color:var(--color-neutral)]/10', + 'hover:[--bg-color:var(--color-neutral)]/20', + '[--border-color:var(--color-neutral)]', + '[--text-color:var(--color-neutral)]', + '[--ring-color:var(--color-neutral)]/60', ], info: [ - '[--bg-color:theme(colors.info/10%)]', - 'hover:[--bg-color:theme(colors.info/20%)]', - '[--border-color:theme(colors.info)]', - '[--text-color:theme(colors.info)]', - '[--ring-color:theme(colors.info/60%)]', + '[--bg-color:var(--color-info)]/10', + 'hover:[--bg-color:var(--color-info)]/20', + '[--border-color:var(--color-info)]', + '[--text-color:var(--color-info)]', + '[--ring-color:var(--color-info)]/60', ], success: [ - '[--bg-color:theme(colors.success/10%)]', - 'hover:[--bg-color:theme(colors.success/20%)]', - '[--border-color:theme(colors.success)]', - '[--text-color:theme(colors.success)]', - '[--ring-color:theme(colors.success/60%)]', + '[--bg-color:var(--color-success)]/10', + 'hover:[--bg-color:var(--color-success)]/20', + '[--border-color:var(--color-success)]', + '[--text-color:var(--color-success)]', + '[--ring-color:var(--color-success)]/60', ], warning: [ - '[--bg-color:theme(colors.warning/10%)]', - 'hover:[--bg-color:theme(colors.warning/20%)]', - '[--border-color:theme(colors.warning)]', - '[--text-color:theme(colors.warning)]', - '[--ring-color:theme(colors.warning/60%)]', + '[--bg-color:var(--color-warning)]/10', + 'hover:[--bg-color:var(--color-warning)]/20', + '[--border-color:var(--color-warning)]', + '[--text-color:var(--color-warning)]', + '[--ring-color:var(--color-warning)]/60', ], danger: [ - '[--bg-color:theme(colors.danger/10%)]', - 'hover:[--bg-color:theme(colors.danger/20%)]', - '[--border-color:theme(colors.danger)]', - '[--text-color:theme(colors.danger)]', - '[--ring-color:theme(colors.danger/60%)]', + '[--bg-color:var(--color-danger)]/10', + 'hover:[--bg-color:var(--color-danger)]/20', + '[--border-color:var(--color-danger)]', + '[--text-color:var(--color-danger)]', + '[--ring-color:var(--color-danger)]/60', ], }, text: { default: [ - '[--text-color:theme(colors.surface-content)]', - 'hover:[--text-color:theme(colors.surface-content/80%)]', - '[--ring-color:theme(colors.surface-content/60%)]', + '[--text-color:var(--color-surface-content)]', + 'hover:[--text-color:var(--color-surface-content)]/80', + '[--ring-color:var(--color-surface-content)]/60', ], primary: [ - '[--text-color:theme(colors.primary)]', - 'hover:[--text-color:theme(colors.primary-700)]', - '[--ring-color:theme(colors.primary/60%)]', + '[--text-color:var(--color-primary)]', + 'hover:[--text-color:var(--color-primary-700)]', + '[--ring-color:var(--color-primary)]/60', ], secondary: [ - '[--text-color:theme(colors.secondary)]', - 'hover:[--text-color:theme(colors.secondary-700)]', - '[--ring-color:theme(colors.secondary/60%)]', + '[--text-color:var(--color-secondary)]', + 'hover:[--text-color:var(--color-secondary-700)]', + '[--ring-color:var(--color-secondary)]/60', ], accent: [ - '[--text-color:theme(colors.accent)]', - 'hover:[--text-color:theme(colors.accent-700)]', - '[--ring-color:theme(colors.accent/60%)]', + '[--text-color:var(--color-accent)]', + 'hover:[--text-color:var(--color-accent-700)]', + '[--ring-color:var(--color-accent)]/60', ], neutral: [ - '[--text-color:theme(colors.neutral)]', - 'hover:[--text-color:theme(colors.neutral-700)]', - '[--ring-color:theme(colors.neutral/60%)]', + '[--text-color:var(--color-neutral)]', + 'hover:[--text-color:var(--color-neutral-700)]', + '[--ring-color:var(--color-neutral)]/60', ], info: [ - '[--text-color:theme(colors.info)]', - 'hover:[--text-color:theme(colors.info-700)]', - '[--ring-color:theme(colors.info/60%)]', + '[--text-color:var(--color-info)]', + 'hover:[--text-color:var(--color-info-700)]', + '[--ring-color:var(--color-info)]/60', ], success: [ - '[--text-color:theme(colors.success)]', - 'hover:[--text-color:theme(colors.success-700)]', - '[--ring-color:theme(colors.success/60%)]', + '[--text-color:var(--color-success)]', + 'hover:[--text-color:var(--color-success-700)]', + '[--ring-color:var(--color-success)]/60', ], warning: [ - '[--text-color:theme(colors.warning)]', - 'hover:[--text-color:theme(colors.warning-700)]', - '[--ring-color:theme(colors.warning/60%)]', + '[--text-color:var(--color-warning)]', + 'hover:[--text-color:var(--color-warning-700)]', + '[--ring-color:var(--color-warning)]/60', ], danger: [ - '[--text-color:theme(colors.danger)]', - 'hover:[--text-color:theme(colors.danger-700)]', - '[--ring-color:theme(colors.danger/60%)]', + '[--text-color:var(--color-danger)]', + 'hover:[--text-color:var(--color-danger-700)]', + '[--ring-color:var(--color-danger)]/60', ], }, none: { @@ -437,7 +440,7 @@ settingsClasses.root, classes?.root, - $$props.class + className ); @@ -449,7 +452,6 @@ {type} {...$$restProps} class={_class} - style={$$props.style ?? ''} {disabled} aria-disabled={disabled ? 'true' : 'false'} use:multi={actions} diff --git a/packages/svelte-ux/src/lib/components/ButtonGroup.svelte b/packages/svelte-ux/src/lib/components/ButtonGroup.svelte index ff84283a1..7695dc918 100644 --- a/packages/svelte-ux/src/lib/components/ButtonGroup.svelte +++ b/packages/svelte-ux/src/lib/components/ButtonGroup.svelte @@ -30,7 +30,7 @@ export let variant: ComponentProps