diff --git a/.changeset/angry-sheep-matter.md b/.changeset/angry-sheep-matter.md new file mode 100644 index 0000000..a743ae0 --- /dev/null +++ b/.changeset/angry-sheep-matter.md @@ -0,0 +1,5 @@ +--- +'@layerstack/svelte-state': patch +--- + +feat: Add `TimerState` diff --git a/.changeset/bitter-buttons-trade.md b/.changeset/bitter-buttons-trade.md new file mode 100644 index 0000000..464ccff --- /dev/null +++ b/.changeset/bitter-buttons-trade.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +feat: Add `platform` to get details of browser (operating system, etc) diff --git a/.changeset/brave-ideas-scream.md b/.changeset/brave-ideas-scream.md new file mode 100644 index 0000000..12e2325 --- /dev/null +++ b/.changeset/brave-ideas-scream.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +fix(isActive): Do not match when path is not at the beginning diff --git a/.changeset/bright-jokes-press.md b/.changeset/bright-jokes-press.md new file mode 100644 index 0000000..a321e32 --- /dev/null +++ b/.changeset/bright-jokes-press.md @@ -0,0 +1,9 @@ +--- +'@layerstack/svelte-actions': patch +'@layerstack/svelte-stores': patch +'@layerstack/svelte-state': patch +'@layerstack/svelte-table': patch +'@layerstack/utils': patch +--- + +chore: Remove unused deps diff --git a/.changeset/cold-actors-burn.md b/.changeset/cold-actors-burn.md new file mode 100644 index 0000000..b65ec50 --- /dev/null +++ b/.changeset/cold-actors-burn.md @@ -0,0 +1,5 @@ +--- +'@layerstack/svelte-state': patch +--- + +fix(SelectionState): Improve `current` type (based on `single`) diff --git a/.changeset/config.json b/.changeset/config.json index 5f00299..74e6477 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -7,5 +7,5 @@ "access": "public", "baseBranch": "main", "updateInternalDependencies": "patch", - "ignore": [] + "ignore": ["@layerstack/docs"] } diff --git a/.changeset/cuddly-cows-win.md b/.changeset/cuddly-cows-win.md new file mode 100644 index 0000000..bef12da --- /dev/null +++ b/.changeset/cuddly-cows-win.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +fix: Add `FormatConfig` as top-level export diff --git a/.changeset/cyan-guests-sip.md b/.changeset/cyan-guests-sip.md new file mode 100644 index 0000000..8940248 --- /dev/null +++ b/.changeset/cyan-guests-sip.md @@ -0,0 +1,10 @@ +--- +'@layerstack/svelte-actions': patch +'@layerstack/svelte-stores': patch +'@layerstack/svelte-state': patch +'@layerstack/svelte-table': patch +'@layerstack/tailwind': patch +'@layerstack/utils': patch +--- + +refactor: Replace `date-fns` usage with new date utils (based on d3-time) to reduce bundle size diff --git a/.changeset/dull-meals-post.md b/.changeset/dull-meals-post.md new file mode 100644 index 0000000..1a97070 --- /dev/null +++ b/.changeset/dull-meals-post.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +feat: Add string utils `toCamelCase()`, `toSnakeCase()`, `toKebabCase()`, and `toPascalCase()` diff --git a/.changeset/eager-bugs-laugh.md b/.changeset/eager-bugs-laugh.md new file mode 100644 index 0000000..78151f2 --- /dev/null +++ b/.changeset/eager-bugs-laugh.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +refactor: Remove `platform` nesting of user agent introspection functions (already nested in `env` export) diff --git a/.changeset/empty-dancers-rule.md b/.changeset/empty-dancers-rule.md new file mode 100644 index 0000000..f3e08e4 --- /dev/null +++ b/.changeset/empty-dancers-rule.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +feat: Add additional time formats (hour, minute, second, millisecond). Resolves #84 diff --git a/.changeset/empty-wasps-watch.md b/.changeset/empty-wasps-watch.md new file mode 100644 index 0000000..c6d1b53 --- /dev/null +++ b/.changeset/empty-wasps-watch.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +fix(Duration): Support `.toISOString()` to output ISO 8601 duration strings (ex. `P2DT3H5M`) diff --git a/.changeset/fancy-poets-lead.md b/.changeset/fancy-poets-lead.md new file mode 100644 index 0000000..f7c4e1f --- /dev/null +++ b/.changeset/fancy-poets-lead.md @@ -0,0 +1,5 @@ +--- +'@layerstack/svelte-state': patch +--- + +feat: Add `MediaQueryPresets` diff --git a/.changeset/fluffy-eggs-joke.md b/.changeset/fluffy-eggs-joke.md new file mode 100644 index 0000000..e072e03 --- /dev/null +++ b/.changeset/fluffy-eggs-joke.md @@ -0,0 +1,5 @@ +--- +'@layerstack/svelte-state': minor +--- + +feat: Add `@layerstack/svelte-state` package, initially with `selectionState` and `uniqueState` diff --git a/.changeset/four-signs-smell.md b/.changeset/four-signs-smell.md new file mode 100644 index 0000000..efa6850 --- /dev/null +++ b/.changeset/four-signs-smell.md @@ -0,0 +1,5 @@ +--- +'@layerstack/tailwind': patch +--- + +fix: Change `culori` dep to devDependencies (only used for generation and not runtime) diff --git a/.changeset/fresh-pants-accept.md b/.changeset/fresh-pants-accept.md new file mode 100644 index 0000000..b53a848 --- /dev/null +++ b/.changeset/fresh-pants-accept.md @@ -0,0 +1,6 @@ +--- +'@layerstack/tailwind': major +'@layerstack/utils': minor +--- + +Tailwind 4 support diff --git a/.changeset/khaki-bars-smell.md b/.changeset/khaki-bars-smell.md new file mode 100644 index 0000000..8c04056 --- /dev/null +++ b/.changeset/khaki-bars-smell.md @@ -0,0 +1,5 @@ +--- +'@layerstack/tailwind': patch +--- + +fix(theme.css): Apply tailwind typography `.prose` css variable overrides within `@layer utilities` to fix deployment. Properly set opacity for some variables diff --git a/.changeset/lazy-bottles-rule.md b/.changeset/lazy-bottles-rule.md new file mode 100644 index 0000000..4cfb615 --- /dev/null +++ b/.changeset/lazy-bottles-rule.md @@ -0,0 +1,5 @@ +--- +'@layerstack/tailwind': patch +--- + +fix: Change `tailwindcss` dep to devDependecies diff --git a/.changeset/legal-seals-march.md b/.changeset/legal-seals-march.md new file mode 100644 index 0000000..eb712ee --- /dev/null +++ b/.changeset/legal-seals-march.md @@ -0,0 +1,5 @@ +--- +'@layerstack/svelte-state': patch +--- + +breaking(SelectionState): Refine API (use `current` property setter instead of `setSelected()` and rename `toggleSelected()` to `toggle()`) diff --git a/.changeset/light-mice-brake.md b/.changeset/light-mice-brake.md new file mode 100644 index 0000000..3ee986c --- /dev/null +++ b/.changeset/light-mice-brake.md @@ -0,0 +1,5 @@ +--- +'@layerstack/svelte-state': patch +--- + +breaking(TimerState): Rename `onTick` to `tick` diff --git a/.changeset/loud-rockets-tease.md b/.changeset/loud-rockets-tease.md new file mode 100644 index 0000000..1915bb9 --- /dev/null +++ b/.changeset/loud-rockets-tease.md @@ -0,0 +1,5 @@ +--- +'@layerstack/svelte-state': minor +--- + +breaking: Migrate `selectionState` and `uniqueState` to `SelectionState` and `UniqueState` classes diff --git a/.changeset/mean-taxis-drive.md b/.changeset/mean-taxis-drive.md new file mode 100644 index 0000000..cd2e2ce --- /dev/null +++ b/.changeset/mean-taxis-drive.md @@ -0,0 +1,5 @@ +--- +'@layerstack/tailwind': patch +--- + +fix: Split theme generation CLI from runtime theme utils diff --git a/.changeset/modern-hairs-open.md b/.changeset/modern-hairs-open.md new file mode 100644 index 0000000..454991a --- /dev/null +++ b/.changeset/modern-hairs-open.md @@ -0,0 +1,5 @@ +--- +'@layerstack/tailwind': patch +--- + +breaking: Rename `theme.css` to `core.css`. Provide default colors for all theme variables including deriving `-50`:`-950` shades (`primary-700`, etc). Add `themes/basic.css` for simple light/dark use cases diff --git a/.changeset/odd-dots-greet.md b/.changeset/odd-dots-greet.md new file mode 100644 index 0000000..555dc53 --- /dev/null +++ b/.changeset/odd-dots-greet.md @@ -0,0 +1,5 @@ +--- +'@layerstack/svelte-state': patch +--- + +Add PaginationState diff --git a/.changeset/odd-hands-tie.md b/.changeset/odd-hands-tie.md new file mode 100644 index 0000000..0ecd95e --- /dev/null +++ b/.changeset/odd-hands-tie.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +feat: Add new date utils including `parseDate`, `timeInterval`, `startOfInterval`, `endOfInterval`, `intervalOffset`, and more diff --git a/.changeset/odd-yaks-see.md b/.changeset/odd-yaks-see.md new file mode 100644 index 0000000..139ad4f --- /dev/null +++ b/.changeset/odd-yaks-see.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +feat: Add `mapKeys()` and `mapValues()` object utils diff --git a/.changeset/open-schools-spend.md b/.changeset/open-schools-spend.md new file mode 100644 index 0000000..9b154ac --- /dev/null +++ b/.changeset/open-schools-spend.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +feat(format): Support passing `locale` as part of config object diff --git a/.changeset/plain-crews-cry.md b/.changeset/plain-crews-cry.md new file mode 100644 index 0000000..2811541 --- /dev/null +++ b/.changeset/plain-crews-cry.md @@ -0,0 +1,5 @@ +--- +'@layerstack/svelte-state': patch +--- + +fix(TimerState): Only restart timer after updating delay if previously running diff --git a/.changeset/polite-moments-build.md b/.changeset/polite-moments-build.md new file mode 100644 index 0000000..e371742 --- /dev/null +++ b/.changeset/polite-moments-build.md @@ -0,0 +1,5 @@ +--- +'@layerstack/svelte-state': patch +--- + +fix(MediaQueryPresets): Add workaround for `screen` and `print` for upstream svelte issue diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000..b561fe2 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,58 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "@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/docs": "1.0.1", + "@layerstack/svelte-state": "0.0.0" + }, + "changesets": [ + "angry-sheep-matter", + "bitter-buttons-trade", + "brave-ideas-scream", + "bright-jokes-press", + "cold-actors-burn", + "cuddly-cows-win", + "cyan-guests-sip", + "dull-meals-post", + "eager-bugs-laugh", + "empty-dancers-rule", + "empty-wasps-watch", + "fancy-poets-lead", + "fluffy-eggs-joke", + "four-signs-smell", + "fresh-pants-accept", + "khaki-bars-smell", + "lazy-bottles-rule", + "legal-seals-march", + "light-mice-brake", + "loud-rockets-tease", + "mean-taxis-drive", + "modern-hairs-open", + "odd-dots-greet", + "odd-hands-tie", + "odd-yaks-see", + "open-schools-spend", + "plain-crews-cry", + "polite-moments-build", + "quick-ducks-do", + "ripe-pens-raise", + "seven-humans-sink", + "seven-teeth-ring", + "slimy-bags-beg", + "smooth-ties-lie", + "social-poems-start", + "solid-lands-shine", + "swift-clocks-warn", + "tidy-drinks-rush", + "tiny-dogs-shave", + "tricky-snails-repeat", + "twelve-cloths-live", + "two-doodles-return", + "wicked-items-change" + ] +} diff --git a/.changeset/quick-ducks-do.md b/.changeset/quick-ducks-do.md new file mode 100644 index 0000000..db563f6 --- /dev/null +++ b/.changeset/quick-ducks-do.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': major +--- + +breaking: Replace `getDuration()` / `humanizeDuration()` utils with `Duration` class (with `.format()` method) diff --git a/.changeset/ripe-pens-raise.md b/.changeset/ripe-pens-raise.md new file mode 100644 index 0000000..01ad106 --- /dev/null +++ b/.changeset/ripe-pens-raise.md @@ -0,0 +1,5 @@ +--- +'@layerstack/tailwind': patch +--- + +fix(theme.css): Provide default colors (instead of black) for theme variables. Use `color-mix()` to derive `-50`:`-950` shades of all theme colors (primary-100, success-700, etc) diff --git a/.changeset/seven-humans-sink.md b/.changeset/seven-humans-sink.md new file mode 100644 index 0000000..eb83ce7 --- /dev/null +++ b/.changeset/seven-humans-sink.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +fix: Add more date utils to top-level exports including `intervalOffset`, `intervalDifference`, `isSameInterval`, `isDateWithin`, and more diff --git a/.changeset/seven-teeth-ring.md b/.changeset/seven-teeth-ring.md new file mode 100644 index 0000000..d4dc405 --- /dev/null +++ b/.changeset/seven-teeth-ring.md @@ -0,0 +1,5 @@ +--- +'@layerstack/svelte-state': patch +--- + +fix: Add `PaginationState` to top-level exports diff --git a/.changeset/slimy-bags-beg.md b/.changeset/slimy-bags-beg.md new file mode 100644 index 0000000..c447665 --- /dev/null +++ b/.changeset/slimy-bags-beg.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +feat(format): Support passing config option to easily set `type` and additional `options` as single object (ex. `format(number, { type: 'currency', options: { notation: 'compact' } })`) diff --git a/.changeset/smooth-ties-lie.md b/.changeset/smooth-ties-lie.md new file mode 100644 index 0000000..4c5df95 --- /dev/null +++ b/.changeset/smooth-ties-lie.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +breaking(utils): Lowercase all periodTypeMappings, simplify (`DAY-TIME` => `daytime`, etc), and add `PeriodTypeCode` type diff --git a/.changeset/social-poems-start.md b/.changeset/social-poems-start.md new file mode 100644 index 0000000..dcfa94d --- /dev/null +++ b/.changeset/social-poems-start.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +feat(formatDate): Support second argument as explicit `format` string accepting both `Unicode` and `strftime` formats (converting `Unicode` to `strftime`) while still supporting period type string/enum. diff --git a/.changeset/solid-lands-shine.md b/.changeset/solid-lands-shine.md new file mode 100644 index 0000000..985d4d1 --- /dev/null +++ b/.changeset/solid-lands-shine.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +feat: Add `NestedRecord` type diff --git a/.changeset/swift-clocks-warn.md b/.changeset/swift-clocks-warn.md new file mode 100644 index 0000000..f21ff5e --- /dev/null +++ b/.changeset/swift-clocks-warn.md @@ -0,0 +1,9 @@ +--- +'@layerstack/svelte-actions': patch +'@layerstack/svelte-stores': patch +'@layerstack/svelte-table': patch +'@layerstack/tailwind': patch +'@layerstack/utils': patch +--- + +Update dependencies diff --git a/.changeset/tidy-drinks-rush.md b/.changeset/tidy-drinks-rush.md new file mode 100644 index 0000000..52f8dde --- /dev/null +++ b/.changeset/tidy-drinks-rush.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +fix(format): Improve typing for `FormatConfig` and `formatDate()` diff --git a/.changeset/tiny-dogs-shave.md b/.changeset/tiny-dogs-shave.md new file mode 100644 index 0000000..1f90de2 --- /dev/null +++ b/.changeset/tiny-dogs-shave.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +feat(parseDate): Support optional `format` argument accepting both `Unicode` and `strftime` formats (converting `Unicode` to `strftime`) diff --git a/.changeset/tricky-snails-repeat.md b/.changeset/tricky-snails-repeat.md new file mode 100644 index 0000000..19db446 --- /dev/null +++ b/.changeset/tricky-snails-repeat.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +feat(clamp): Update types to support `Date` diff --git a/.changeset/twelve-cloths-live.md b/.changeset/twelve-cloths-live.md new file mode 100644 index 0000000..143b311 --- /dev/null +++ b/.changeset/twelve-cloths-live.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +fix: Update `PeriodType.Month` `default` variant to include full name, and `long` to include year. diff --git a/.changeset/two-doodles-return.md b/.changeset/two-doodles-return.md new file mode 100644 index 0000000..6e159f0 --- /dev/null +++ b/.changeset/two-doodles-return.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +feat(format): Support passing PeriodTypeCode strings to easily format dates (ex. `format(date, 'day')`) diff --git a/.changeset/wicked-items-change.md b/.changeset/wicked-items-change.md new file mode 100644 index 0000000..f4c0f63 --- /dev/null +++ b/.changeset/wicked-items-change.md @@ -0,0 +1,5 @@ +--- +'@layerstack/utils': patch +--- + +fix(Duration): Support `fractional` values (ex. `1.5s`). Useful with `minUnits` or `totalUnits` diff --git a/README.md b/README.md index 3e0d0b0..c30dc55 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,30 @@ [![](https://img.shields.io/github/actions/workflow/status/techniq/layerstack/ci.yml?style=flat)](https://github.com/techniq/layerstack/actions/workflows/ci.yml) ![](https://img.shields.io/github/license/layerstack?style=flat) -[![](https://dcbadge.vercel.app/api/server/697JhMPD3t?style=flat)](https://discord.gg/697JhMPD3t) +[![](https://dcbadge.limes.pink/api/server/697JhMPD3t?style=flat)](https://discord.gg/697JhMPD3t) ## Companion libraries - [LayerChart](https://layerchart.com) - composable chart components to build a wide range of visualizations - [Svelte UX](https://svelte-ux.techniq.dev/) - components to build highly interactive applications. + +## Sponsors + +This project is supported by the following beautiful people/organizations: + +

+ + Logos from Sponsors + +

+ +## Community + +Join the Discord server to ask questions, find collaborators, or just say hi! + + + + + LayerStack Discord community + + \ No newline at end of file diff --git a/packages/svelte-actions/CHANGELOG.md b/packages/svelte-actions/CHANGELOG.md index 4d2e9c0..966262a 100644 --- a/packages/svelte-actions/CHANGELOG.md +++ b/packages/svelte-actions/CHANGELOG.md @@ -1,5 +1,130 @@ # @layerstack/svelte-actions +## 1.0.1-next.16 + +### Patch Changes + +- Updated dependencies [[`d43c010`](https://github.com/techniq/layerstack/commit/d43c010d45681df2c78693e59de4915ce57b3dd9), [`73c58ed`](https://github.com/techniq/layerstack/commit/73c58edd94931b5774262fed1ecfbd8ba3bd087a), [`73c58ed`](https://github.com/techniq/layerstack/commit/73c58edd94931b5774262fed1ecfbd8ba3bd087a)]: + - @layerstack/utils@2.0.0-next.16 + +## 1.0.1-next.15 + +### Patch Changes + +- Updated dependencies [[`b7f39f7`](https://github.com/techniq/layerstack/commit/b7f39f7cfd3b58bf12e51f75e0b8bfda7a833899)]: + - @layerstack/utils@2.0.0-next.15 + +## 1.0.1-next.14 + +### Patch Changes + +- Updated dependencies [[`28027b3`](https://github.com/techniq/layerstack/commit/28027b3f71014e7926e779554a1d9cbd0ad65e07)]: + - @layerstack/utils@2.0.0-next.14 + +## 1.0.1-next.13 + +### Patch Changes + +- Updated dependencies [[`e366ee7`](https://github.com/techniq/layerstack/commit/e366ee7f43cc1340aafeff7021eee2714b590733)]: + - @layerstack/utils@2.0.0-next.13 + +## 1.0.1-next.12 + +### Patch Changes + +- chore: Remove unused deps ([#76](https://github.com/techniq/layerstack/pull/76)) + +- Updated dependencies [[`49ccf88`](https://github.com/techniq/layerstack/commit/49ccf8863b5f6402eb4caa72b53380611ae80ad1), [`1ebd4db`](https://github.com/techniq/layerstack/commit/1ebd4db5b1fb3d3d820312aa1aa5a84d7926200e)]: + - @layerstack/utils@2.0.0-next.12 + +## 1.0.1-next.11 + +### Patch Changes + +- Updated dependencies [[`ad4c34f`](https://github.com/techniq/layerstack/commit/ad4c34f8db8e67a702a317e0056559ac98ac61d5), [`7c986f8`](https://github.com/techniq/layerstack/commit/7c986f8401575c99709788f2feca6070fdee44b8)]: + - @layerstack/utils@2.0.0-next.11 + +## 1.0.1-next.10 + +### Patch Changes + +- Updated dependencies [[`32eb536`](https://github.com/techniq/layerstack/commit/32eb5367e8a9e545026c6254827547b374d1db94)]: + - @layerstack/utils@2.0.0-next.10 + +## 1.0.1-next.9 + +### Patch Changes + +- refactor: Replace `date-fns` usage with new date utils (based on d3-time) to reduce bundle size ([#71](https://github.com/techniq/layerstack/pull/71)) + +- Updated dependencies [[`abd845a`](https://github.com/techniq/layerstack/commit/abd845a53b4b1cdc3a61a6503b6cb4fd144d35a5), [`abd845a`](https://github.com/techniq/layerstack/commit/abd845a53b4b1cdc3a61a6503b6cb4fd144d35a5)]: + - @layerstack/utils@2.0.0-next.9 + +## 1.0.1-next.8 + +### Patch Changes + +- Updated dependencies [[`e47ed35`](https://github.com/techniq/layerstack/commit/e47ed359ae04ce24d70f3ab5369366f77cdc93d6)]: + - @layerstack/utils@2.0.0-next.8 + +## 1.0.1-next.7 + +### Patch Changes + +- Updated dependencies [[`a6df412`](https://github.com/techniq/layerstack/commit/a6df412a42636fead1b1ce4f92d114ecc6b1d727)]: + - @layerstack/utils@2.0.0-next.7 + +## 1.0.1-next.6 + +### Patch Changes + +- Updated dependencies [[`23651ad`](https://github.com/techniq/layerstack/commit/23651adc92ef675c3fedb4fbc6fa3d976df57cb4)]: + - @layerstack/utils@2.0.0-next.6 + +## 1.0.1-next.5 + +### Patch Changes + +- Updated dependencies [[`7642289`](https://github.com/techniq/layerstack/commit/7642289e1a99cf8092f2695491fd78b35a796bff)]: + - @layerstack/utils@2.0.0-next.5 + +## 1.0.1-next.4 + +### Patch Changes + +- Updated dependencies [[`ab0bb08`](https://github.com/techniq/layerstack/commit/ab0bb086257e281aa10ef13a3296aedf95c777f9), [`48b0aea`](https://github.com/techniq/layerstack/commit/48b0aead52ca6aeb2135a5297f5d774c8b510e12), [`38c4443`](https://github.com/techniq/layerstack/commit/38c44438c2454d3ffe328be15c1077987f64ee24), [`eaca635`](https://github.com/techniq/layerstack/commit/eaca6356ccd5288950aca64b8082ef18df2757ec)]: + - @layerstack/utils@2.0.0-next.4 + +## 1.0.1-next.3 + +### Patch Changes + +- Updated dependencies [[`4ed65a7`](https://github.com/techniq/layerstack/commit/4ed65a76562db9af2d18a196a2ba9e58f959aa5c)]: + - @layerstack/utils@2.0.0-next.3 + +## 1.0.1-next.2 + +### Patch Changes + +- Updated dependencies [[`955e07b`](https://github.com/techniq/layerstack/commit/955e07b5aed62acd8afba10f9eaa68b90d72bb74)]: + - @layerstack/utils@1.1.0-next.2 + +## 1.0.1-next.1 + +### Patch Changes + +- Update dependencies ([#31](https://github.com/techniq/layerstack/pull/31)) + +- Updated dependencies [[`b7ca80b`](https://github.com/techniq/layerstack/commit/b7ca80b6a8a07c53ec4a99864ec6b9fd1ecab0b4)]: + - @layerstack/utils@1.1.0-next.1 + +## 1.0.1-next.0 + +### Patch Changes + +- Updated dependencies [[`6cdcb26`](https://github.com/techniq/layerstack/commit/6cdcb26cabd0539cee2885efbaa39e7787a34114), [`c6bb443`](https://github.com/techniq/layerstack/commit/c6bb443d12ee12bd69417dcfa5880b6bf78c9f09), [`c13e65e`](https://github.com/techniq/layerstack/commit/c13e65e059d690cbc282635f6e48a27d715e5997)]: + - @layerstack/utils@1.1.0-next.0 + ## 1.0.1 ### Patch Changes diff --git a/packages/svelte-actions/package.json b/packages/svelte-actions/package.json index b95b51f..a5f7602 100644 --- a/packages/svelte-actions/package.json +++ b/packages/svelte-actions/package.json @@ -4,7 +4,7 @@ "author": "Sean Lynch ", "license": "MIT", "repository": "techniq/layerstack", - "version": "1.0.1", + "version": "1.0.1-next.16", "scripts": { "dev": "rimraf dist && tsc -p tsconfig.build.json --watch", "build": "rimraf dist && tsc -p tsconfig.build.json", @@ -20,29 +20,23 @@ "devDependencies": { "@sveltejs/package": "^2.3.11", "@sveltejs/vite-plugin-svelte": "^5.0.3", - "@types/d3-array": "^3.2.1", "@types/d3-scale": "^4.0.9", - "@types/lodash-es": "^4.17.12", - "@vitest/coverage-v8": "^3.0.7", - "prettier": "^3.5.2", + "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "rimraf": "6.0.1", - "svelte": "^5.20.4", - "svelte-check": "^4.1.4", - "svelte2tsx": "^0.7.34", + "svelte": "^5.28.2", + "svelte-check": "^4.1.6", + "svelte2tsx": "^0.7.36", "tslib": "^2.8.1", - "typescript": "^5.7.3", + "typescript": "^5.8.3", "vite": "^6.3.5", "vitest": "^3.1.3" }, "type": "module", "dependencies": { - "@floating-ui/dom": "^1.6.13", + "@floating-ui/dom": "^1.7.0", "@layerstack/utils": "workspace:*", - "d3-array": "^3.2.4", - "d3-scale": "^4.0.2", - "date-fns": "^4.1.0", - "lodash-es": "^4.17.21" + "d3-scale": "^4.0.2" }, "main": "./dist/index.js", "exports": { diff --git a/packages/svelte-state/.prettierignore b/packages/svelte-state/.prettierignore new file mode 100644 index 0000000..17a42fc --- /dev/null +++ b/packages/svelte-state/.prettierignore @@ -0,0 +1,15 @@ +.DS_Store +node_modules +/build +/dist +/.svelte-kit +/package +.env +.env.* +!.env.example +coverage/ + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/packages/svelte-state/CHANGELOG.md b/packages/svelte-state/CHANGELOG.md new file mode 100644 index 0000000..60070f9 --- /dev/null +++ b/packages/svelte-state/CHANGELOG.md @@ -0,0 +1,165 @@ +# @layerstack/svelte-state + +## 0.1.0-next.21 + +### Patch Changes + +- Updated dependencies [[`d43c010`](https://github.com/techniq/layerstack/commit/d43c010d45681df2c78693e59de4915ce57b3dd9), [`73c58ed`](https://github.com/techniq/layerstack/commit/73c58edd94931b5774262fed1ecfbd8ba3bd087a), [`73c58ed`](https://github.com/techniq/layerstack/commit/73c58edd94931b5774262fed1ecfbd8ba3bd087a)]: + - @layerstack/utils@2.0.0-next.16 + +## 0.1.0-next.20 + +### Patch Changes + +- Updated dependencies [[`b7f39f7`](https://github.com/techniq/layerstack/commit/b7f39f7cfd3b58bf12e51f75e0b8bfda7a833899)]: + - @layerstack/utils@2.0.0-next.15 + +## 0.1.0-next.19 + +### Patch Changes + +- Updated dependencies [[`28027b3`](https://github.com/techniq/layerstack/commit/28027b3f71014e7926e779554a1d9cbd0ad65e07)]: + - @layerstack/utils@2.0.0-next.14 + +## 0.1.0-next.18 + +### Patch Changes + +- Updated dependencies [[`e366ee7`](https://github.com/techniq/layerstack/commit/e366ee7f43cc1340aafeff7021eee2714b590733)]: + - @layerstack/utils@2.0.0-next.13 + +## 0.1.0-next.17 + +### Patch Changes + +- chore: Remove unused deps ([#76](https://github.com/techniq/layerstack/pull/76)) + +- Updated dependencies [[`49ccf88`](https://github.com/techniq/layerstack/commit/49ccf8863b5f6402eb4caa72b53380611ae80ad1), [`1ebd4db`](https://github.com/techniq/layerstack/commit/1ebd4db5b1fb3d3d820312aa1aa5a84d7926200e)]: + - @layerstack/utils@2.0.0-next.12 + +## 0.1.0-next.16 + +### Patch Changes + +- Updated dependencies [[`ad4c34f`](https://github.com/techniq/layerstack/commit/ad4c34f8db8e67a702a317e0056559ac98ac61d5), [`7c986f8`](https://github.com/techniq/layerstack/commit/7c986f8401575c99709788f2feca6070fdee44b8)]: + - @layerstack/utils@2.0.0-next.11 + +## 0.1.0-next.15 + +### Patch Changes + +- Updated dependencies [[`32eb536`](https://github.com/techniq/layerstack/commit/32eb5367e8a9e545026c6254827547b374d1db94)]: + - @layerstack/utils@2.0.0-next.10 + +## 0.1.0-next.14 + +### Patch Changes + +- refactor: Replace `date-fns` usage with new date utils (based on d3-time) to reduce bundle size ([#71](https://github.com/techniq/layerstack/pull/71)) + +- Updated dependencies [[`abd845a`](https://github.com/techniq/layerstack/commit/abd845a53b4b1cdc3a61a6503b6cb4fd144d35a5), [`abd845a`](https://github.com/techniq/layerstack/commit/abd845a53b4b1cdc3a61a6503b6cb4fd144d35a5)]: + - @layerstack/utils@2.0.0-next.9 + +## 0.1.0-next.13 + +### Patch Changes + +- Updated dependencies [[`e47ed35`](https://github.com/techniq/layerstack/commit/e47ed359ae04ce24d70f3ab5369366f77cdc93d6)]: + - @layerstack/utils@2.0.0-next.8 + +## 0.1.0-next.12 + +### Patch Changes + +- Updated dependencies [[`a6df412`](https://github.com/techniq/layerstack/commit/a6df412a42636fead1b1ce4f92d114ecc6b1d727)]: + - @layerstack/utils@2.0.0-next.7 + +## 0.1.0-next.11 + +### Patch Changes + +- Updated dependencies [[`23651ad`](https://github.com/techniq/layerstack/commit/23651adc92ef675c3fedb4fbc6fa3d976df57cb4)]: + - @layerstack/utils@2.0.0-next.6 + +## 0.1.0-next.10 + +### Patch Changes + +- Updated dependencies [[`7642289`](https://github.com/techniq/layerstack/commit/7642289e1a99cf8092f2695491fd78b35a796bff)]: + - @layerstack/utils@2.0.0-next.5 + +## 0.1.0-next.9 + +### Patch Changes + +- Updated dependencies [[`ab0bb08`](https://github.com/techniq/layerstack/commit/ab0bb086257e281aa10ef13a3296aedf95c777f9), [`48b0aea`](https://github.com/techniq/layerstack/commit/48b0aead52ca6aeb2135a5297f5d774c8b510e12), [`38c4443`](https://github.com/techniq/layerstack/commit/38c44438c2454d3ffe328be15c1077987f64ee24), [`eaca635`](https://github.com/techniq/layerstack/commit/eaca6356ccd5288950aca64b8082ef18df2757ec)]: + - @layerstack/utils@2.0.0-next.4 + +## 0.1.0-next.8 + +### Patch Changes + +- fix: Add `PaginationState` to top-level exports ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 0.1.0-next.7 + +### Patch Changes + +- fix(TimerState): Only restart timer after updating delay if previously running ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 0.1.0-next.6 + +### Patch Changes + +- breaking(TimerState): Rename `onTick` to `tick` ([#31](https://github.com/techniq/layerstack/pull/31)) + +- Updated dependencies [[`4ed65a7`](https://github.com/techniq/layerstack/commit/4ed65a76562db9af2d18a196a2ba9e58f959aa5c)]: + - @layerstack/utils@2.0.0-next.3 + +## 0.1.0-next.5 + +### Patch Changes + +- fix(SelectionState): Improve `current` type (based on `single`) ([#31](https://github.com/techniq/layerstack/pull/31)) + +- Add PaginationState ([#60](https://github.com/techniq/layerstack/pull/60)) + +- fix(MediaQueryPresets): Add workaround for `screen` and `print` for upstream svelte issue ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 0.1.0-next.4 + +### Patch Changes + +- feat: Add `MediaQueryPresets` ([#31](https://github.com/techniq/layerstack/pull/31)) + +- breaking(SelectionState): Refine API (use `current` property setter instead of `setSelected()` and rename `toggleSelected()` to `toggle()`) ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 0.1.0-next.3 + +### Patch Changes + +- feat: Add `TimerState` ([#56](https://github.com/techniq/layerstack/pull/56)) + +## 0.1.0-next.2 + +### Patch Changes + +- Updated dependencies [[`955e07b`](https://github.com/techniq/layerstack/commit/955e07b5aed62acd8afba10f9eaa68b90d72bb74)]: + - @layerstack/utils@1.1.0-next.2 + +## 0.1.0-next.1 + +### Minor Changes + +- breaking: Migrate `selectionState` and `uniqueState` to `SelectionState` and `UniqueState` classes ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 0.1.0-next.0 + +### Minor Changes + +- feat: Add `@layerstack/svelte-state` package, initially with `selectionState` and `uniqueState` ([#31](https://github.com/techniq/layerstack/pull/31)) + +### Patch Changes + +- Updated dependencies [[`b7ca80b`](https://github.com/techniq/layerstack/commit/b7ca80b6a8a07c53ec4a99864ec6b9fd1ecab0b4)]: + - @layerstack/utils@1.1.0-next.1 diff --git a/packages/svelte-state/LICENSE b/packages/svelte-state/LICENSE new file mode 100644 index 0000000..882619f --- /dev/null +++ b/packages/svelte-state/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2024 Sean Lynch + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/packages/svelte-state/README.md b/packages/svelte-state/README.md new file mode 100644 index 0000000..4fdd67f --- /dev/null +++ b/packages/svelte-state/README.md @@ -0,0 +1,9 @@ +# LayerStack svelte-stores + +![](https://img.shields.io/github/license/techniq/layerstack?style=flat) +[![](https://img.shields.io/github/actions/workflow/status/techniq/layerstack/ci.yml?style=flat)](https://github.com/techniq/layerstack/actions/workflows/ci.yml) + +![](https://img.shields.io/github/license/layerstack?style=flat) +[![](https://dcbadge.vercel.app/api/server/697JhMPD3t?style=flat)](https://discord.gg/697JhMPD3t) + +See also the companion libraries [LayerChart](https://layerchart.com) for a large collection of composable chart components to build a wide range of visualizations, and [Svelte UX](https://svelte-ux.techniq.dev/) for a collection of components to build highly interactive applications. diff --git a/packages/svelte-state/package.json b/packages/svelte-state/package.json new file mode 100644 index 0000000..d6a4ea7 --- /dev/null +++ b/packages/svelte-state/package.json @@ -0,0 +1,54 @@ +{ + "name": "@layerstack/svelte-state", + "description": "TODO", + "author": "Sean Lynch ", + "license": "MIT", + "repository": "techniq/layerstack", + "version": "0.1.0-next.21", + "scripts": { + "dev": "rimraf dist && tsc -p tsconfig.build.json --watch", + "build": "rimraf dist && tsc -p tsconfig.build.json", + "preview": "vite preview", + "package": "svelte-package", + "prepublishOnly": "svelte-package", + "check": "svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", + "test:unit": "TZ=UTC+4 vitest", + "lint": "prettier --check .", + "format": "prettier --write ." + }, + "devDependencies": { + "@sveltejs/kit": "^2.20.8", + "@sveltejs/package": "^2.3.11", + "@sveltejs/vite-plugin-svelte": "^5.0.3", + "prettier": "^3.5.3", + "prettier-plugin-svelte": "^3.3.3", + "rimraf": "6.0.1", + "svelte": "^5.28.2", + "svelte-check": "^4.1.6", + "svelte2tsx": "^0.7.36", + "tslib": "^2.8.1", + "typescript": "^5.8.3", + "vite": "^6.3.4", + "vitest": "^3.1.2" + }, + "type": "module", + "dependencies": { + "@layerstack/utils": "workspace:*" + }, + "main": "./dist/index.js", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "svelte": "./dist/index.js" + }, + "./*": { + "types": "./dist/*.d.ts", + "svelte": "./dist/*.js" + } + }, + "files": [ + "dist" + ], + "svelte": "./dist/index.js" +} diff --git a/packages/svelte-state/src/lib/index.ts b/packages/svelte-state/src/lib/index.ts new file mode 100644 index 0000000..95ff9d6 --- /dev/null +++ b/packages/svelte-state/src/lib/index.ts @@ -0,0 +1,5 @@ +export { MediaQueryPresets } from './mediaQueryPresets.svelte.js'; +export { PaginationState } from './paginationState.svelte.js'; +export { SelectionState } from './selectionState.svelte.js'; +export { TimerState } from './timerState.svelte.js'; +export { UniqueState } from './uniqueState.svelte.js'; diff --git a/packages/svelte-state/src/lib/mediaQueryPresets.svelte.ts b/packages/svelte-state/src/lib/mediaQueryPresets.svelte.ts new file mode 100644 index 0000000..a10265c --- /dev/null +++ b/packages/svelte-state/src/lib/mediaQueryPresets.svelte.ts @@ -0,0 +1,30 @@ +import { MediaQuery } from 'svelte/reactivity'; + +export class MediaQueryPresets { + width(width: number) { + return new MediaQuery(`(min-width: ${width}px)`); + } + + height(height: number) { + return new MediaQuery(`(min-height: ${height}px)`); + } + + // Matches tailwind defaults (https://tailwindcss.com/docs/responsive-design) + smScreen = this.width(640); + mdScreen = this.width(768); + lgScreen = this.width(1024); + xlScreen = this.width(1280); + xxlScreen = this.width(1536); + + screen = new MediaQuery('screen and (min-width: 0)'); // workaround for https://github.com/sveltejs/svelte/issues/15930 + print = new MediaQuery('print and (min-width: 0)'); // workaround for https://github.com/sveltejs/svelte/issues/15930 + + dark = new MediaQuery('(prefers-color-scheme: dark)'); + light = new MediaQuery('(prefers-color-scheme: light)'); + + motion = new MediaQuery('(prefers-reduced-motion: no-preference)'); + motionReduce = new MediaQuery('(prefers-reduced-motion: reduce)'); + + landscape = new MediaQuery('(orientation: landscape)'); + portrait = new MediaQuery('(orientation: portrait)'); +} diff --git a/packages/svelte-state/src/lib/paginationState.svelte.ts b/packages/svelte-state/src/lib/paginationState.svelte.ts new file mode 100644 index 0000000..5fdf83b --- /dev/null +++ b/packages/svelte-state/src/lib/paginationState.svelte.ts @@ -0,0 +1,97 @@ +import { clamp } from '@layerstack/utils'; + +export type PaginationOptions = { + /** Initial page */ + page?: number; + + /** Number of items per page */ + perPage?: number; + + /** Total number of items */ + total?: number; +}; + +export class PaginationState { + #page: number; + #perPage: number; + #total: number; + + constructor(options: PaginationOptions = {}) { + this.#page = options.page ?? 1; + this.#perPage = options.perPage ?? 25; + this.#total = options.total ?? 0; + } + + get page() { + return this.#page; + } + + set page(value: number) { + // Do not allow page to exceed bounds (ex. call nextPage() when on last page) + this.#page = clamp(value, 1, this.totalPages); + } + + get perPage() { + return this.#perPage; + } + + set perPage(value: number) { + this.#perPage = value; + } + + get total() { + return this.#total; + } + + set total(value: number) { + this.#total = value; + } + + get totalPages() { + return Math.ceil(this.total / this.perPage); + } + + get from() { + return Math.min(this.total, Math.max(0, (this.page - 1) * this.perPage + 1)); + } + + get to() { + return Math.min(this.total, this.page * this.perPage); + } + + get isFirst() { + return this.page === 1; + } + + get isLast() { + return this.page >= this.totalPages; + } + + get hasPrevious() { + return this.page > 1 && this.totalPages > 0; + } + + get hasNext() { + return this.page < this.totalPages; + } + + nextPage = () => { + this.page = this.page + 1; + }; + + prevPage = () => { + this.page = this.page - 1; + }; + + firstPage = () => { + this.page = 1; + }; + + lastPage = () => { + this.page = Math.ceil(this.total / this.perPage); + }; + + slice(data: T[]) { + return data.slice((this.page - 1) * this.perPage, this.page * this.perPage); + } +} diff --git a/packages/svelte-state/src/lib/paginationState.test.svelte.ts b/packages/svelte-state/src/lib/paginationState.test.svelte.ts new file mode 100644 index 0000000..84f600b --- /dev/null +++ b/packages/svelte-state/src/lib/paginationState.test.svelte.ts @@ -0,0 +1,139 @@ +import { describe, it, expect } from 'vitest'; + +import { PaginationState } from './paginationState.svelte.js'; + +describe('PaginationState', () => { + it('should initialize with default values', () => { + const paginationState = new PaginationState(); + expect(paginationState.page).toEqual(1); + expect(paginationState.perPage).toEqual(25); + expect(paginationState.total).toEqual(0); + expect(paginationState.totalPages).toEqual(0); + expect(paginationState.from).toEqual(0); + expect(paginationState.to).toEqual(0); + expect(paginationState.isFirst).toEqual(true); + expect(paginationState.isLast).toEqual(true); + expect(paginationState.hasPrevious).toEqual(false); + expect(paginationState.hasNext).toEqual(false); + }); + + it('should initialize with total only', () => { + const paginationState = new PaginationState({ total: 100 }); + expect(paginationState.page).toEqual(1); + expect(paginationState.perPage).toEqual(25); + expect(paginationState.total).toEqual(100); + expect(paginationState.totalPages).toEqual(4); + expect(paginationState.from).toEqual(1); + expect(paginationState.to).toEqual(25); + expect(paginationState.isFirst).toEqual(true); + expect(paginationState.isLast).toEqual(false); + expect(paginationState.hasPrevious).toEqual(false); + expect(paginationState.hasNext).toEqual(true); + }); + + it('should initialize with page', () => { + const paginationState = new PaginationState({ page: 2, total: 100 }); + expect(paginationState.page).toEqual(2); + expect(paginationState.perPage).toEqual(25); + expect(paginationState.total).toEqual(100); + expect(paginationState.totalPages).toEqual(4); + expect(paginationState.from).toEqual(26); + expect(paginationState.to).toEqual(50); + expect(paginationState.isFirst).toEqual(false); + expect(paginationState.isLast).toEqual(false); + expect(paginationState.hasPrevious).toEqual(true); + expect(paginationState.hasNext).toEqual(true); + }); + + it('should initialize with perPage', () => { + const paginationState = new PaginationState({ perPage: 10, total: 100 }); + expect(paginationState.page).toEqual(1); + expect(paginationState.perPage).toEqual(10); + expect(paginationState.total).toEqual(100); + expect(paginationState.totalPages).toEqual(10); + expect(paginationState.from).toEqual(1); + expect(paginationState.to).toEqual(10); + expect(paginationState.isFirst).toEqual(true); + expect(paginationState.isLast).toEqual(false); + expect(paginationState.hasPrevious).toEqual(false); + expect(paginationState.hasNext).toEqual(true); + }); + + it('should increment page', () => { + const paginationState = new PaginationState({ total: 100 }); + expect(paginationState.page).toEqual(1); + expect(paginationState.from).toEqual(1); + expect(paginationState.to).toEqual(25); + expect(paginationState.isFirst).toEqual(true); + expect(paginationState.isLast).toEqual(false); + expect(paginationState.hasPrevious).toEqual(false); + expect(paginationState.hasNext).toEqual(true); + + paginationState.nextPage(); + expect(paginationState.page).toEqual(2); + expect(paginationState.from).toEqual(26); + expect(paginationState.to).toEqual(50); + expect(paginationState.isFirst).toEqual(false); + expect(paginationState.isLast).toEqual(false); + expect(paginationState.hasPrevious).toEqual(true); + expect(paginationState.hasNext).toEqual(true); + }); + + it('should decrement page', () => { + const paginationState = new PaginationState({ page: 2, total: 100 }); + expect(paginationState.page).toEqual(2); + expect(paginationState.from).toEqual(26); + expect(paginationState.to).toEqual(50); + expect(paginationState.isFirst).toEqual(false); + expect(paginationState.isLast).toEqual(false); + expect(paginationState.hasPrevious).toEqual(true); + expect(paginationState.hasNext).toEqual(true); + + paginationState.prevPage(); + expect(paginationState.page).toEqual(1); + expect(paginationState.from).toEqual(1); + expect(paginationState.to).toEqual(25); + expect(paginationState.isFirst).toEqual(true); + expect(paginationState.isLast).toEqual(false); + expect(paginationState.hasPrevious).toEqual(false); + expect(paginationState.hasNext).toEqual(true); + }); + + it('should clamp page', () => { + const paginationState = new PaginationState({ page: 4, total: 100 }); + expect(paginationState.page).toEqual(4); + expect(paginationState.from).toEqual(76); + expect(paginationState.to).toEqual(100); + expect(paginationState.isFirst).toEqual(false); + expect(paginationState.isLast).toEqual(true); + expect(paginationState.hasPrevious).toEqual(true); + expect(paginationState.hasNext).toEqual(false); + + paginationState.nextPage(); + expect(paginationState.page).toEqual(4); + expect(paginationState.from).toEqual(76); + expect(paginationState.to).toEqual(100); + expect(paginationState.isFirst).toEqual(false); + expect(paginationState.isLast).toEqual(true); + expect(paginationState.hasPrevious).toEqual(true); + expect(paginationState.hasNext).toEqual(false); + }); + + it('should slice data', () => { + const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + const paginationState = new PaginationState({ perPage: 5, total: data.length }); + expect(paginationState.slice(data)).toEqual([1, 2, 3, 4, 5]); + + paginationState.nextPage(); + expect(paginationState.slice(data)).toEqual([6, 7, 8, 9, 10]); + + paginationState.nextPage(); + expect(paginationState.slice(data)).toEqual([6, 7, 8, 9, 10]); // clamped + + paginationState.prevPage(); + expect(paginationState.slice(data)).toEqual([1, 2, 3, 4, 5]); + + paginationState.prevPage(); + expect(paginationState.slice(data)).toEqual([1, 2, 3, 4, 5]); // clamped + }); +}); diff --git a/packages/svelte-state/src/lib/selectionState.svelte.ts b/packages/svelte-state/src/lib/selectionState.svelte.ts new file mode 100644 index 0000000..171a723 --- /dev/null +++ b/packages/svelte-state/src/lib/selectionState.svelte.ts @@ -0,0 +1,132 @@ +import { UniqueState } from './uniqueState.svelte.js'; + +export type SelectionOptions = { + /** Initial values */ + initial?: T[]; + + /** All values to select when `toggleAll()` is called */ + all?: T[]; + + /** Only allow 1 selected value */ + single?: S; + + /** Maximum number of values that can be selected */ + max?: number; +}; + +export class SelectionState { + #initial: T[]; + #selected: UniqueState; + + all: Array; + single: S; + max: number | undefined; + + constructor(options: SelectionOptions = {}) { + this.#initial = options.initial ?? []; + this.#selected = new UniqueState(this.#initial); + + this.all = options.all ?? []; + this.single = (options.single ?? false) as S; + this.max = options.max; + } + + get current(): S extends true ? T | null : T[] { + return ( + this.single + ? (Array.from(this.#selected.current)[0] ?? null) + : Array.from(this.#selected.current) + ) as S extends true ? T | null : T[]; + } + + set current(values: T[] | T | null) { + if (Array.isArray(values)) { + if (this.max == null || values.length < this.max) { + this.#selected.clear(); + this.#selected.addEach(values); + } else { + throw new Error(`Too many values selected. Current: ${values.length}, max: ${this.max}`); + } + } else if (values != null) { + // single + this.#selected.clear(); + this.#selected.add(values); + } else { + // null + this.#selected.clear(); + } + } + + /** Check if a value is selected */ + isSelected(value: T) { + return this.#selected.current.has(value); + } + + /** Check if the selection is empty */ + isEmpty() { + return this.#selected.current.size === 0; + } + + /** Check if all values in `all` are selected */ + isAllSelected() { + return this.all.every((v) => this.#selected.current.has(v)); + } + + /** Check if any values in `all` are selected */ + isAnySelected() { + return this.all.some((v) => this.#selected.current.has(v)); + } + + /** Check if the selection is at the maximum */ + isMaxSelected() { + return this.max != null ? this.#selected.current.size >= this.max : false; + } + + /** Check if a value is disabled (max reached) */ + isDisabled(value: T) { + return !this.isSelected(value) && this.isMaxSelected(); + } + + /** Clear all selected values */ + clear() { + this.#selected.clear(); + } + + /** Reset to initial values */ + reset() { + this.#selected.reset(); + } + + /** Toggle a value */ + toggle(value: T) { + if (this.#selected.current.has(value)) { + // Remove + const prevSelected = [...this.#selected.current]; + this.#selected.clear(); + this.#selected.addEach(prevSelected.filter((v) => v != value)); + } else if (this.single) { + // Replace + this.#selected.clear(); + this.#selected.add(value); + } else { + // Add + if (this.max == null || this.#selected.current.size < this.max) { + return this.#selected.add(value); + } + } + } + + /** Toggle all values */ + toggleAll() { + let values: T[]; + if (this.isAllSelected()) { + // Deselect all (within current `all`, for example page/filtered result) + values = [...this.#selected.current].filter((v) => !this.all.includes(v)); + } else { + // Select all (`new Set()` will dedupe) + values = [...this.#selected.current, ...this.all]; + } + this.#selected.clear(); + this.#selected.addEach(values); + } +} diff --git a/packages/svelte-state/src/lib/selectionState.test.svelte.ts b/packages/svelte-state/src/lib/selectionState.test.svelte.ts new file mode 100644 index 0000000..4f1f1be --- /dev/null +++ b/packages/svelte-state/src/lib/selectionState.test.svelte.ts @@ -0,0 +1,111 @@ +import { describe, it, expect } from 'vitest'; + +import { SelectionState } from './selectionState.svelte.js'; + +describe('SelectionState', () => { + it('should be empty array by default', () => { + const selectionState = new SelectionState(); + expect(selectionState.current).instanceOf(Array); + expect(selectionState.current.length).toEqual(0); + }); + + it('should contain initial values', () => { + const selectionState = new SelectionState({ initial: ['a', 'b', 'c'] }); + expect(selectionState.current.length).toEqual(3); + expect(selectionState.current.includes('a')).toBe(true); + expect(selectionState.current.includes('b')).toBe(true); + expect(selectionState.current.includes('c')).toBe(true); + }); + + it('should clear', () => { + const selectionState = new SelectionState({ initial: ['a', 'b', 'c'] }); + expect(selectionState.current.length).toEqual(3); + + selectionState.clear(); + expect(selectionState.current.length).toEqual(0); + }); + + it('should reset to initial values', () => { + const selectionState = new SelectionState({ initial: ['a', 'b', 'c'] }); + expect(selectionState.current.length).toEqual(3); + + selectionState.toggle('d'); + expect(selectionState.current.length).toEqual(4); + + selectionState.reset(); + expect(selectionState.current.length).toEqual(3); + expect(Array.from(selectionState.current)).toEqual(['a', 'b', 'c']); + + selectionState.clear(); + expect(selectionState.current.length).toEqual(0); + selectionState.reset(); + expect(selectionState.current.length).toEqual(3); + expect(Array.from(selectionState.current)).toEqual(['a', 'b', 'c']); + }); + + it('should toggle value', () => { + const selectionState = new SelectionState(); + expect(selectionState.current.length).toEqual(0); + + selectionState.toggle('a'); + expect(selectionState.current.length).toEqual(1); + expect(selectionState.current.includes('a')).toBe(true); + + selectionState.toggle('a'); + expect(selectionState.current.length).toEqual(0); + expect(selectionState.current.includes('a')).toBe(false); + }); + + it('should toggle all', () => { + const selectionState = new SelectionState({ all: ['a', 'b', 'c'] }); + expect(selectionState.current.length).toEqual(0); + + selectionState.toggleAll(); + expect(selectionState.current.length).toEqual(3); + expect(Array.from(selectionState.current)).toEqual(['a', 'b', 'c']); + }); + + it('should check if any values are selected', () => { + const selectionState = new SelectionState({ all: ['a', 'b', 'c'] }); + + expect(selectionState.isAnySelected()).toBe(false); + selectionState.toggle('a'); + expect(selectionState.isAnySelected()).toBe(true); + }); + + it('should check if all values are selected', () => { + const selectionState = new SelectionState({ all: ['a', 'b', 'c'] }); + + expect(selectionState.isAllSelected()).toBe(false); + selectionState.toggle('a'); + expect(selectionState.isAllSelected()).toBe(false); + selectionState.toggle('b'); + expect(selectionState.isAllSelected()).toBe(false); + selectionState.toggle('c'); + expect(selectionState.isAllSelected()).toBe(true); + }); + + it('should limit max', () => { + const selectionState = new SelectionState({ max: 2 }); + expect(selectionState.max).toEqual(2); + + expect(selectionState.isMaxSelected()).toBe(false); + selectionState.toggle('a'); + selectionState.toggle('b'); + selectionState.toggle('c'); + expect(selectionState.current.length).toEqual(2); + expect(Array.from(selectionState.current)).toEqual(['a', 'b']); + expect(selectionState.isMaxSelected()).toBe(true); + }); + + it('should check if value is disabled', () => { + const selectionState = new SelectionState({ max: 2 }); + expect(selectionState.max).toEqual(2); + + selectionState.toggle('a'); + selectionState.toggle('b'); + expect(selectionState.isDisabled('a')).toBe(false); + expect(selectionState.isDisabled('b')).toBe(false); + expect(selectionState.isDisabled('c')).toBe(true); + }); +}); diff --git a/packages/svelte-state/src/lib/timerState.svelte.ts b/packages/svelte-state/src/lib/timerState.svelte.ts new file mode 100644 index 0000000..7d220a2 --- /dev/null +++ b/packages/svelte-state/src/lib/timerState.svelte.ts @@ -0,0 +1,96 @@ +export type TimerOptions = { + initial?: T; + + /** Delay between ticks in milliseconds + * @default 1000 + */ + delay?: number; + + /** Start disabled (manually call `start()`) + * @default false + */ + disabled?: boolean; + + /** Called on each interval tick. Returned value is used to update store value, defaulting to current Date */ + tick?: (current: T | null) => any; +}; + +/** + * Subscribable timer/interval state + */ +export class TimerState { + #initial: T | null; + #current: T | null = $state(null); + #intervalId: ReturnType | null = null; + #delay: number; + #disabled: boolean; + #running = $state(false); + #tick: (current: T | null) => any; + + constructor(options: TimerOptions = {}) { + this.#initial = options.initial ?? null; + this.#current = this.#initial; + this.#delay = options.delay ?? 1000; + this.#disabled = options.disabled ?? false; + this.#tick = options.tick ?? (() => new Date()); + + if (!this.#disabled) { + this.start(); + } + + $effect(() => { + return this.stop; + }); + } + + get current() { + return this.#current; + } + + set current(value: T | null) { + if (!this.#disabled) { + this.start(); + } + + this.#current = value; + } + + get delay() { + return this.#delay; + } + + set delay(value: number) { + const isRunning = this.#running; + this.stop(); + this.#delay = value; + + if (isRunning) { + // Restart if was running + this.start(); + } + } + + start = () => { + stop(); + this.#intervalId = setInterval(() => { + this.#current = this.#tick(this.#current) ?? new Date(); + }, this.#delay); + this.#running = true; + }; + + stop = () => { + if (this.#intervalId) { + clearInterval(this.#intervalId); + } + this.#intervalId = null; + this.#running = false; + }; + + reset = () => { + return (this.#current = this.#initial); + }; + + get running() { + return this.#running; + } +} diff --git a/packages/svelte-state/src/lib/uniqueState.svelte.ts b/packages/svelte-state/src/lib/uniqueState.svelte.ts new file mode 100644 index 0000000..971f9bb --- /dev/null +++ b/packages/svelte-state/src/lib/uniqueState.svelte.ts @@ -0,0 +1,52 @@ +import { SvelteSet } from 'svelte/reactivity'; + +/** + * State to manage unique values using `SvelteSet` with improved + * ergonomics and better control of updates + */ +export class UniqueState { + #initial: T[]; + current: SvelteSet; + + constructor(initial?: T[]) { + this.#initial = initial ?? []; + this.current = new SvelteSet(initial ?? []); + } + + /** Clear all values */ + clear() { + this.current.clear(); + } + + /** Reset to initial values */ + reset() { + this.clear(); + this.addEach(this.#initial); + } + + /** Add a value */ + add(value: T) { + this.current.add(value); + } + + /** Add multiple values */ + addEach(values: T[]) { + for (const value of values) { + this.current.add(value); + } + } + + /** Remove a value */ + delete(value: T) { + this.current.delete(value); + } + + /** Toggle a value */ + toggle(value: T) { + if (this.current.has(value)) { + this.current.delete(value); + } else { + this.current.add(value); + } + } +} diff --git a/packages/svelte-state/src/lib/uniqueState.test.svelte.ts b/packages/svelte-state/src/lib/uniqueState.test.svelte.ts new file mode 100644 index 0000000..56f719f --- /dev/null +++ b/packages/svelte-state/src/lib/uniqueState.test.svelte.ts @@ -0,0 +1,68 @@ +import { describe, it, expect } from 'vitest'; + +import { UniqueState } from './uniqueState.svelte.js'; + +describe('UniqueState', () => { + it('should be empty set by default', () => { + const uniqueState = new UniqueState(); + expect(uniqueState.current).instanceOf(Set); + expect(uniqueState.current.size).toEqual(0); + }); + + it('should contain initial values', () => { + const uniqueState = new UniqueState(['a', 'b', 'c']); + expect(uniqueState.current.size).toEqual(3); + expect(uniqueState.current.has('a')).toBe(true); + expect(uniqueState.current.has('b')).toBe(true); + expect(uniqueState.current.has('c')).toBe(true); + }); + + it('should toggle value', () => { + const uniqueState = new UniqueState(); + expect(uniqueState.current.size).toEqual(0); + + uniqueState.toggle('a'); + expect(uniqueState.current.size).toEqual(1); + expect(uniqueState.current.has('a')).toBe(true); + + uniqueState.toggle('a'); + expect(uniqueState.current.size).toEqual(0); + expect(uniqueState.current.has('a')).toBe(false); + }); + + it('should add multiple values', () => { + const uniqueState = new UniqueState(); + + uniqueState.addEach(['a', 'b', 'c']); + expect(uniqueState.current.size).toEqual(3); + expect(uniqueState.current.has('a')).toBe(true); + expect(uniqueState.current.has('b')).toBe(true); + expect(uniqueState.current.has('c')).toBe(true); + }); + + it('should clear', () => { + const uniqueState = new UniqueState(['a', 'b', 'c']); + expect(uniqueState.current.size).toEqual(3); + + uniqueState.clear(); + expect(uniqueState.current.size).toEqual(0); + }); + + it('should reset to initial values', () => { + const uniqueState = new UniqueState(['a', 'b', 'c']); + expect(uniqueState.current.size).toEqual(3); + + uniqueState.add('d'); + expect(uniqueState.current.size).toEqual(4); + + uniqueState.reset(); + expect(uniqueState.current.size).toEqual(3); + expect(Array.from(uniqueState.current)).toEqual(['a', 'b', 'c']); + + uniqueState.clear(); + expect(uniqueState.current.size).toEqual(0); + uniqueState.reset(); + expect(uniqueState.current.size).toEqual(3); + expect(Array.from(uniqueState.current)).toEqual(['a', 'b', 'c']); + }); +}); diff --git a/packages/svelte-state/tsconfig.build.json b/packages/svelte-state/tsconfig.build.json new file mode 100644 index 0000000..eeccde4 --- /dev/null +++ b/packages/svelte-state/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["./src/**/*.test.ts"] +} diff --git a/packages/svelte-state/tsconfig.json b/packages/svelte-state/tsconfig.json new file mode 100644 index 0000000..8557be8 --- /dev/null +++ b/packages/svelte-state/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "noErrorTruncation": true, + "incremental": true, + "outDir": "./dist", + "target": "esnext", + "lib": ["es2021", "DOM"], + "sourceMap": true, + "alwaysStrict": true, + "strict": true, + "module": "NodeNext", + "moduleResolution": "NodeNext", + "declaration": true, + "declarationMap": true + }, + "include": ["./src/**/*.ts"] +} diff --git a/packages/svelte-state/vite.config.js b/packages/svelte-state/vite.config.js new file mode 100644 index 0000000..66860a6 --- /dev/null +++ b/packages/svelte-state/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vitest/config'; + +export default defineConfig({ + test: { + include: ['src/**/*.{test,test.svelte,spec}.{js,ts}'], + }, +}); diff --git a/packages/svelte-stores/CHANGELOG.md b/packages/svelte-stores/CHANGELOG.md index 9fb21f1..9509b36 100644 --- a/packages/svelte-stores/CHANGELOG.md +++ b/packages/svelte-stores/CHANGELOG.md @@ -1,5 +1,130 @@ # @layerstack/svelte-stores +## 1.0.2-next.16 + +### Patch Changes + +- Updated dependencies [[`d43c010`](https://github.com/techniq/layerstack/commit/d43c010d45681df2c78693e59de4915ce57b3dd9), [`73c58ed`](https://github.com/techniq/layerstack/commit/73c58edd94931b5774262fed1ecfbd8ba3bd087a), [`73c58ed`](https://github.com/techniq/layerstack/commit/73c58edd94931b5774262fed1ecfbd8ba3bd087a)]: + - @layerstack/utils@2.0.0-next.16 + +## 1.0.2-next.15 + +### Patch Changes + +- Updated dependencies [[`b7f39f7`](https://github.com/techniq/layerstack/commit/b7f39f7cfd3b58bf12e51f75e0b8bfda7a833899)]: + - @layerstack/utils@2.0.0-next.15 + +## 1.0.2-next.14 + +### Patch Changes + +- Updated dependencies [[`28027b3`](https://github.com/techniq/layerstack/commit/28027b3f71014e7926e779554a1d9cbd0ad65e07)]: + - @layerstack/utils@2.0.0-next.14 + +## 1.0.2-next.13 + +### Patch Changes + +- Updated dependencies [[`e366ee7`](https://github.com/techniq/layerstack/commit/e366ee7f43cc1340aafeff7021eee2714b590733)]: + - @layerstack/utils@2.0.0-next.13 + +## 1.0.2-next.12 + +### Patch Changes + +- chore: Remove unused deps ([#76](https://github.com/techniq/layerstack/pull/76)) + +- Updated dependencies [[`49ccf88`](https://github.com/techniq/layerstack/commit/49ccf8863b5f6402eb4caa72b53380611ae80ad1), [`1ebd4db`](https://github.com/techniq/layerstack/commit/1ebd4db5b1fb3d3d820312aa1aa5a84d7926200e)]: + - @layerstack/utils@2.0.0-next.12 + +## 1.0.2-next.11 + +### Patch Changes + +- Updated dependencies [[`ad4c34f`](https://github.com/techniq/layerstack/commit/ad4c34f8db8e67a702a317e0056559ac98ac61d5), [`7c986f8`](https://github.com/techniq/layerstack/commit/7c986f8401575c99709788f2feca6070fdee44b8)]: + - @layerstack/utils@2.0.0-next.11 + +## 1.0.2-next.10 + +### Patch Changes + +- Updated dependencies [[`32eb536`](https://github.com/techniq/layerstack/commit/32eb5367e8a9e545026c6254827547b374d1db94)]: + - @layerstack/utils@2.0.0-next.10 + +## 1.0.2-next.9 + +### Patch Changes + +- refactor: Replace `date-fns` usage with new date utils (based on d3-time) to reduce bundle size ([#71](https://github.com/techniq/layerstack/pull/71)) + +- Updated dependencies [[`abd845a`](https://github.com/techniq/layerstack/commit/abd845a53b4b1cdc3a61a6503b6cb4fd144d35a5), [`abd845a`](https://github.com/techniq/layerstack/commit/abd845a53b4b1cdc3a61a6503b6cb4fd144d35a5)]: + - @layerstack/utils@2.0.0-next.9 + +## 1.0.2-next.8 + +### Patch Changes + +- Updated dependencies [[`e47ed35`](https://github.com/techniq/layerstack/commit/e47ed359ae04ce24d70f3ab5369366f77cdc93d6)]: + - @layerstack/utils@2.0.0-next.8 + +## 1.0.2-next.7 + +### Patch Changes + +- Updated dependencies [[`a6df412`](https://github.com/techniq/layerstack/commit/a6df412a42636fead1b1ce4f92d114ecc6b1d727)]: + - @layerstack/utils@2.0.0-next.7 + +## 1.0.2-next.6 + +### Patch Changes + +- Updated dependencies [[`23651ad`](https://github.com/techniq/layerstack/commit/23651adc92ef675c3fedb4fbc6fa3d976df57cb4)]: + - @layerstack/utils@2.0.0-next.6 + +## 1.0.2-next.5 + +### Patch Changes + +- Updated dependencies [[`7642289`](https://github.com/techniq/layerstack/commit/7642289e1a99cf8092f2695491fd78b35a796bff)]: + - @layerstack/utils@2.0.0-next.5 + +## 1.0.2-next.4 + +### Patch Changes + +- Updated dependencies [[`ab0bb08`](https://github.com/techniq/layerstack/commit/ab0bb086257e281aa10ef13a3296aedf95c777f9), [`48b0aea`](https://github.com/techniq/layerstack/commit/48b0aead52ca6aeb2135a5297f5d774c8b510e12), [`38c4443`](https://github.com/techniq/layerstack/commit/38c44438c2454d3ffe328be15c1077987f64ee24), [`eaca635`](https://github.com/techniq/layerstack/commit/eaca6356ccd5288950aca64b8082ef18df2757ec)]: + - @layerstack/utils@2.0.0-next.4 + +## 1.0.2-next.3 + +### Patch Changes + +- Updated dependencies [[`4ed65a7`](https://github.com/techniq/layerstack/commit/4ed65a76562db9af2d18a196a2ba9e58f959aa5c)]: + - @layerstack/utils@2.0.0-next.3 + +## 1.0.2-next.2 + +### Patch Changes + +- Updated dependencies [[`955e07b`](https://github.com/techniq/layerstack/commit/955e07b5aed62acd8afba10f9eaa68b90d72bb74)]: + - @layerstack/utils@1.1.0-next.2 + +## 1.0.2-next.1 + +### Patch Changes + +- Update dependencies ([#31](https://github.com/techniq/layerstack/pull/31)) + +- Updated dependencies [[`b7ca80b`](https://github.com/techniq/layerstack/commit/b7ca80b6a8a07c53ec4a99864ec6b9fd1ecab0b4)]: + - @layerstack/utils@1.1.0-next.1 + +## 1.0.2-next.0 + +### Patch Changes + +- Updated dependencies [[`6cdcb26`](https://github.com/techniq/layerstack/commit/6cdcb26cabd0539cee2885efbaa39e7787a34114), [`c6bb443`](https://github.com/techniq/layerstack/commit/c6bb443d12ee12bd69417dcfa5880b6bf78c9f09), [`c13e65e`](https://github.com/techniq/layerstack/commit/c13e65e059d690cbc282635f6e48a27d715e5997)]: + - @layerstack/utils@1.1.0-next.0 + ## 1.0.2 ### Patch Changes diff --git a/packages/svelte-stores/package.json b/packages/svelte-stores/package.json index 94aa1ac..2e3dbfb 100644 --- a/packages/svelte-stores/package.json +++ b/packages/svelte-stores/package.json @@ -4,7 +4,7 @@ "author": "Sean Lynch ", "license": "MIT", "repository": "techniq/layerstack", - "version": "1.0.2", + "version": "1.0.2-next.16", "scripts": { "dev": "rimraf dist && tsc -p tsconfig.build.json --watch", "build": "rimraf dist && tsc -p tsconfig.build.json", @@ -21,28 +21,24 @@ "@sveltejs/kit": "^2.21.0", "@sveltejs/package": "^2.3.11", "@sveltejs/vite-plugin-svelte": "^5.0.3", - "@types/d3-array": "^3.2.1", "@types/lodash-es": "^4.17.12", - "@vitest/coverage-v8": "^3.0.7", - "prettier": "^3.5.2", + "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "rimraf": "6.0.1", - "svelte": "^5.20.4", - "svelte-check": "^4.1.4", - "svelte2tsx": "^0.7.34", + "svelte": "^5.28.2", + "svelte-check": "^4.1.6", + "svelte2tsx": "^0.7.36", "tslib": "^2.8.1", - "typescript": "^5.7.3", + "typescript": "^5.8.3", "vite": "^6.3.5", "vitest": "^3.1.3" }, "type": "module", "dependencies": { "@layerstack/utils": "workspace:*", - "d3-array": "^3.2.4", - "date-fns": "^4.1.0", "immer": "^10.1.1", "lodash-es": "^4.17.21", - "zod": "^3.24.2" + "zod": "^3.24.3" }, "main": "./dist/index.js", "exports": { diff --git a/packages/svelte-stores/src/lib/localStore.ts b/packages/svelte-stores/src/lib/localStore.ts index 47da353..96f0986 100644 --- a/packages/svelte-stores/src/lib/localStore.ts +++ b/packages/svelte-stores/src/lib/localStore.ts @@ -1,5 +1,4 @@ import { writable } from 'svelte/store'; -import { isFunction } from 'lodash-es'; import { parse, stringify } from '@layerstack/utils'; import { browser } from '@layerstack/utils/env'; @@ -42,10 +41,11 @@ function localStore(key: string, initialValue: Value, options?: LocalStor ? expireObject(previousExpiry, previousExpiry) : previousExpiry; - const expiry = isFunction(options?.expiry) - ? // @ts-expect-error - options?.expiry(prunedPreviousExpiry) // Update expiry on write - : options?.expiry; + const expiry = + typeof options?.expiry === 'function' + ? // @ts-expect-error + options?.expiry(prunedPreviousExpiry) // Update expiry on write + : options?.expiry; previousExpiry = expiry; localStorage.setItem(key, stringify({ value: val, expiry })); diff --git a/packages/svelte-table/CHANGELOG.md b/packages/svelte-table/CHANGELOG.md index 8f82406..7dc2113 100644 --- a/packages/svelte-table/CHANGELOG.md +++ b/packages/svelte-table/CHANGELOG.md @@ -1,5 +1,147 @@ # @layerstack/svelte-table +## 1.0.1-next.16 + +### Patch Changes + +- Updated dependencies [[`d43c010`](https://github.com/techniq/layerstack/commit/d43c010d45681df2c78693e59de4915ce57b3dd9), [`73c58ed`](https://github.com/techniq/layerstack/commit/73c58edd94931b5774262fed1ecfbd8ba3bd087a), [`73c58ed`](https://github.com/techniq/layerstack/commit/73c58edd94931b5774262fed1ecfbd8ba3bd087a)]: + - @layerstack/utils@2.0.0-next.16 + - @layerstack/svelte-actions@1.0.1-next.16 + +## 1.0.1-next.15 + +### Patch Changes + +- Updated dependencies [[`b7f39f7`](https://github.com/techniq/layerstack/commit/b7f39f7cfd3b58bf12e51f75e0b8bfda7a833899)]: + - @layerstack/utils@2.0.0-next.15 + - @layerstack/svelte-actions@1.0.1-next.15 + +## 1.0.1-next.14 + +### Patch Changes + +- Updated dependencies [[`28027b3`](https://github.com/techniq/layerstack/commit/28027b3f71014e7926e779554a1d9cbd0ad65e07)]: + - @layerstack/utils@2.0.0-next.14 + - @layerstack/svelte-actions@1.0.1-next.14 + +## 1.0.1-next.13 + +### Patch Changes + +- Updated dependencies [[`e366ee7`](https://github.com/techniq/layerstack/commit/e366ee7f43cc1340aafeff7021eee2714b590733)]: + - @layerstack/utils@2.0.0-next.13 + - @layerstack/svelte-actions@1.0.1-next.13 + +## 1.0.1-next.12 + +### Patch Changes + +- chore: Remove unused deps ([#76](https://github.com/techniq/layerstack/pull/76)) + +- Updated dependencies [[`49ccf88`](https://github.com/techniq/layerstack/commit/49ccf8863b5f6402eb4caa72b53380611ae80ad1), [`1ebd4db`](https://github.com/techniq/layerstack/commit/1ebd4db5b1fb3d3d820312aa1aa5a84d7926200e)]: + - @layerstack/svelte-actions@1.0.1-next.12 + - @layerstack/utils@2.0.0-next.12 + +## 1.0.1-next.11 + +### Patch Changes + +- Updated dependencies [[`ad4c34f`](https://github.com/techniq/layerstack/commit/ad4c34f8db8e67a702a317e0056559ac98ac61d5), [`7c986f8`](https://github.com/techniq/layerstack/commit/7c986f8401575c99709788f2feca6070fdee44b8)]: + - @layerstack/utils@2.0.0-next.11 + - @layerstack/svelte-actions@1.0.1-next.11 + +## 1.0.1-next.10 + +### Patch Changes + +- Updated dependencies [[`32eb536`](https://github.com/techniq/layerstack/commit/32eb5367e8a9e545026c6254827547b374d1db94)]: + - @layerstack/utils@2.0.0-next.10 + - @layerstack/svelte-actions@1.0.1-next.10 + +## 1.0.1-next.9 + +### Patch Changes + +- refactor: Replace `date-fns` usage with new date utils (based on d3-time) to reduce bundle size ([#71](https://github.com/techniq/layerstack/pull/71)) + +- Updated dependencies [[`abd845a`](https://github.com/techniq/layerstack/commit/abd845a53b4b1cdc3a61a6503b6cb4fd144d35a5), [`abd845a`](https://github.com/techniq/layerstack/commit/abd845a53b4b1cdc3a61a6503b6cb4fd144d35a5)]: + - @layerstack/svelte-actions@1.0.1-next.9 + - @layerstack/utils@2.0.0-next.9 + +## 1.0.1-next.8 + +### Patch Changes + +- Updated dependencies [[`e47ed35`](https://github.com/techniq/layerstack/commit/e47ed359ae04ce24d70f3ab5369366f77cdc93d6)]: + - @layerstack/utils@2.0.0-next.8 + - @layerstack/svelte-actions@1.0.1-next.8 + +## 1.0.1-next.7 + +### Patch Changes + +- Updated dependencies [[`a6df412`](https://github.com/techniq/layerstack/commit/a6df412a42636fead1b1ce4f92d114ecc6b1d727)]: + - @layerstack/utils@2.0.0-next.7 + - @layerstack/svelte-actions@1.0.1-next.7 + +## 1.0.1-next.6 + +### Patch Changes + +- Updated dependencies [[`23651ad`](https://github.com/techniq/layerstack/commit/23651adc92ef675c3fedb4fbc6fa3d976df57cb4)]: + - @layerstack/utils@2.0.0-next.6 + - @layerstack/svelte-actions@1.0.1-next.6 + +## 1.0.1-next.5 + +### Patch Changes + +- Updated dependencies [[`7642289`](https://github.com/techniq/layerstack/commit/7642289e1a99cf8092f2695491fd78b35a796bff)]: + - @layerstack/utils@2.0.0-next.5 + - @layerstack/svelte-actions@1.0.1-next.5 + +## 1.0.1-next.4 + +### Patch Changes + +- Updated dependencies [[`ab0bb08`](https://github.com/techniq/layerstack/commit/ab0bb086257e281aa10ef13a3296aedf95c777f9), [`48b0aea`](https://github.com/techniq/layerstack/commit/48b0aead52ca6aeb2135a5297f5d774c8b510e12), [`38c4443`](https://github.com/techniq/layerstack/commit/38c44438c2454d3ffe328be15c1077987f64ee24), [`eaca635`](https://github.com/techniq/layerstack/commit/eaca6356ccd5288950aca64b8082ef18df2757ec)]: + - @layerstack/utils@2.0.0-next.4 + - @layerstack/svelte-actions@1.0.1-next.4 + +## 1.0.1-next.3 + +### Patch Changes + +- Updated dependencies [[`4ed65a7`](https://github.com/techniq/layerstack/commit/4ed65a76562db9af2d18a196a2ba9e58f959aa5c)]: + - @layerstack/utils@2.0.0-next.3 + - @layerstack/svelte-actions@1.0.1-next.3 + +## 1.0.1-next.2 + +### Patch Changes + +- Updated dependencies [[`955e07b`](https://github.com/techniq/layerstack/commit/955e07b5aed62acd8afba10f9eaa68b90d72bb74)]: + - @layerstack/utils@1.1.0-next.2 + - @layerstack/svelte-actions@1.0.1-next.2 + +## 1.0.1-next.1 + +### Patch Changes + +- Update dependencies ([#31](https://github.com/techniq/layerstack/pull/31)) + +- Updated dependencies [[`b7ca80b`](https://github.com/techniq/layerstack/commit/b7ca80b6a8a07c53ec4a99864ec6b9fd1ecab0b4)]: + - @layerstack/svelte-actions@1.0.1-next.1 + - @layerstack/utils@1.1.0-next.1 + +## 1.0.1-next.0 + +### Patch Changes + +- Updated dependencies [[`6cdcb26`](https://github.com/techniq/layerstack/commit/6cdcb26cabd0539cee2885efbaa39e7787a34114), [`c6bb443`](https://github.com/techniq/layerstack/commit/c6bb443d12ee12bd69417dcfa5880b6bf78c9f09), [`c13e65e`](https://github.com/techniq/layerstack/commit/c13e65e059d690cbc282635f6e48a27d715e5997)]: + - @layerstack/utils@1.1.0-next.0 + - @layerstack/svelte-actions@1.0.1-next.0 + ## 1.0.1 ### Patch Changes diff --git a/packages/svelte-table/package.json b/packages/svelte-table/package.json index f8fe6ce..e225e88 100644 --- a/packages/svelte-table/package.json +++ b/packages/svelte-table/package.json @@ -4,7 +4,7 @@ "author": "Sean Lynch ", "license": "MIT", "repository": "techniq/layerstack", - "version": "1.0.1", + "version": "1.0.1-next.16", "scripts": { "dev": "rimraf dist && tsc -p tsconfig.build.json --watch", "build": "rimraf dist && tsc -p tsconfig.build.json", @@ -22,15 +22,14 @@ "@sveltejs/vite-plugin-svelte": "^5.0.3", "@types/d3-array": "^3.2.1", "@types/lodash-es": "^4.17.12", - "@vitest/coverage-v8": "^3.0.7", - "prettier": "^3.5.2", + "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "rimraf": "6.0.1", - "svelte": "^5.20.4", - "svelte-check": "^4.1.4", - "svelte2tsx": "^0.7.34", + "svelte": "^5.28.2", + "svelte-check": "^4.1.6", + "svelte2tsx": "^0.7.36", "tslib": "^2.8.1", - "typescript": "^5.7.3", + "typescript": "^5.8.3", "vite": "^6.3.5", "vitest": "^3.1.3" }, @@ -39,7 +38,6 @@ "@layerstack/svelte-actions": "workspace:*", "@layerstack/utils": "workspace:*", "d3-array": "^3.2.4", - "date-fns": "^4.1.0", "lodash-es": "^4.17.21" }, "main": "./dist/index.js", diff --git a/packages/svelte-table/src/lib/stores.ts b/packages/svelte-table/src/lib/stores.ts index 3761993..169613d 100644 --- a/packages/svelte-table/src/lib/stores.ts +++ b/packages/svelte-table/src/lib/stores.ts @@ -1,6 +1,5 @@ import { writable } from 'svelte/store'; import type { ComponentEvents } from 'svelte'; -import { isFunction } from 'lodash-es'; import { index } from 'd3-array'; import { sortFunc } from '@layerstack/utils'; @@ -78,7 +77,7 @@ function createState(column: ColumnDef, props?: TableOrderProps, prevState?: Tab : 'asc'; let handler: SortFunc | undefined = undefined; - if (isFunction(column.orderBy)) { + if (typeof column.orderBy === 'function') { handler = column.orderBy; } else if (typeof column.orderBy === 'string') { handler = sortFunc(column.orderBy, direction); diff --git a/packages/svelte-table/src/lib/utils.ts b/packages/svelte-table/src/lib/utils.ts index 57cf341..b158697 100644 --- a/packages/svelte-table/src/lib/utils.ts +++ b/packages/svelte-table/src/lib/utils.ts @@ -1,7 +1,6 @@ -import { isFunction, get } from 'lodash-es'; -import { parseISO } from 'date-fns'; +import { get } from 'lodash-es'; -import { PeriodType } from '@layerstack/utils'; +import { PeriodType, parseDate } from '@layerstack/utils'; import type { ColumnDef } from './types.js'; @@ -100,7 +99,7 @@ export function getCellHeader(column: ColumnDef) { export function getCellValue(column: ColumnDef, rowData: any, rowIndex?: number) { let value = undefined; - if (isFunction(column.value)) { + if (typeof column.value === 'function') { value = column.value?.(rowData, rowIndex); } @@ -110,7 +109,7 @@ export function getCellValue(column: ColumnDef, rowData: any, rowIndex?: number) if ( typeof value === 'string' && - !isFunction(column.format) && + typeof column.format !== 'function' && (column.format ?? 'none') in PeriodType ) { // Convert date string to Date instance @@ -118,7 +117,7 @@ export function getCellValue(column: ColumnDef, rowData: any, rowIndex?: number) // TODO: Should we handle date-only strings different? // value = new Date(value); // console.log({ column: column.name, value }); - value = parseISO(value); + value = parseDate(value); } return value; diff --git a/packages/tailwind/.prettierignore b/packages/tailwind/.prettierignore index 17a42fc..a114bd1 100644 --- a/packages/tailwind/.prettierignore +++ b/packages/tailwind/.prettierignore @@ -13,3 +13,6 @@ coverage/ pnpm-lock.yaml package-lock.json yarn.lock + +# Ignore generated files +src/lib/css/themes/generated/* diff --git a/packages/tailwind/CHANGELOG.md b/packages/tailwind/CHANGELOG.md index 4babf97..2245e39 100644 --- a/packages/tailwind/CHANGELOG.md +++ b/packages/tailwind/CHANGELOG.md @@ -1,5 +1,158 @@ # @layerstack/tailwind +## 2.0.0-next.19 + +### Patch Changes + +- Updated dependencies [[`d43c010`](https://github.com/techniq/layerstack/commit/d43c010d45681df2c78693e59de4915ce57b3dd9), [`73c58ed`](https://github.com/techniq/layerstack/commit/73c58edd94931b5774262fed1ecfbd8ba3bd087a), [`73c58ed`](https://github.com/techniq/layerstack/commit/73c58edd94931b5774262fed1ecfbd8ba3bd087a)]: + - @layerstack/utils@2.0.0-next.16 + +## 2.0.0-next.18 + +### Patch Changes + +- Updated dependencies [[`b7f39f7`](https://github.com/techniq/layerstack/commit/b7f39f7cfd3b58bf12e51f75e0b8bfda7a833899)]: + - @layerstack/utils@2.0.0-next.15 + +## 2.0.0-next.17 + +### Patch Changes + +- Updated dependencies [[`28027b3`](https://github.com/techniq/layerstack/commit/28027b3f71014e7926e779554a1d9cbd0ad65e07)]: + - @layerstack/utils@2.0.0-next.14 + +## 2.0.0-next.16 + +### Patch Changes + +- Updated dependencies [[`e366ee7`](https://github.com/techniq/layerstack/commit/e366ee7f43cc1340aafeff7021eee2714b590733)]: + - @layerstack/utils@2.0.0-next.13 + +## 2.0.0-next.15 + +### Patch Changes + +- fix: Split theme generation CLI from runtime theme utils ([#80](https://github.com/techniq/layerstack/pull/80)) + +## 2.0.0-next.14 + +### Patch Changes + +- fix: Change `culori` dep to devDependencies (only used for generation and not runtime) ([#79](https://github.com/techniq/layerstack/pull/79)) + +- fix: Change `tailwindcss` dep to devDependecies ([#79](https://github.com/techniq/layerstack/pull/79)) + +- Updated dependencies [[`49ccf88`](https://github.com/techniq/layerstack/commit/49ccf8863b5f6402eb4caa72b53380611ae80ad1), [`1ebd4db`](https://github.com/techniq/layerstack/commit/1ebd4db5b1fb3d3d820312aa1aa5a84d7926200e)]: + - @layerstack/utils@2.0.0-next.12 + +## 2.0.0-next.13 + +### Patch Changes + +- Updated dependencies [[`ad4c34f`](https://github.com/techniq/layerstack/commit/ad4c34f8db8e67a702a317e0056559ac98ac61d5), [`7c986f8`](https://github.com/techniq/layerstack/commit/7c986f8401575c99709788f2feca6070fdee44b8)]: + - @layerstack/utils@2.0.0-next.11 + +## 2.0.0-next.12 + +### Patch Changes + +- Updated dependencies [[`32eb536`](https://github.com/techniq/layerstack/commit/32eb5367e8a9e545026c6254827547b374d1db94)]: + - @layerstack/utils@2.0.0-next.10 + +## 2.0.0-next.11 + +### Patch Changes + +- refactor: Replace `date-fns` usage with new date utils (based on d3-time) to reduce bundle size ([#71](https://github.com/techniq/layerstack/pull/71)) + +- Updated dependencies [[`abd845a`](https://github.com/techniq/layerstack/commit/abd845a53b4b1cdc3a61a6503b6cb4fd144d35a5), [`abd845a`](https://github.com/techniq/layerstack/commit/abd845a53b4b1cdc3a61a6503b6cb4fd144d35a5)]: + - @layerstack/utils@2.0.0-next.9 + +## 2.0.0-next.10 + +### Patch Changes + +- Updated dependencies [[`e47ed35`](https://github.com/techniq/layerstack/commit/e47ed359ae04ce24d70f3ab5369366f77cdc93d6)]: + - @layerstack/utils@2.0.0-next.8 + +## 2.0.0-next.9 + +### Patch Changes + +- Updated dependencies [[`a6df412`](https://github.com/techniq/layerstack/commit/a6df412a42636fead1b1ce4f92d114ecc6b1d727)]: + - @layerstack/utils@2.0.0-next.7 + +## 2.0.0-next.8 + +### Patch Changes + +- Updated dependencies [[`23651ad`](https://github.com/techniq/layerstack/commit/23651adc92ef675c3fedb4fbc6fa3d976df57cb4)]: + - @layerstack/utils@2.0.0-next.6 + +## 2.0.0-next.7 + +### Patch Changes + +- Updated dependencies [[`7642289`](https://github.com/techniq/layerstack/commit/7642289e1a99cf8092f2695491fd78b35a796bff)]: + - @layerstack/utils@2.0.0-next.5 + +## 2.0.0-next.6 + +### Patch Changes + +- Updated dependencies [[`ab0bb08`](https://github.com/techniq/layerstack/commit/ab0bb086257e281aa10ef13a3296aedf95c777f9), [`48b0aea`](https://github.com/techniq/layerstack/commit/48b0aead52ca6aeb2135a5297f5d774c8b510e12), [`38c4443`](https://github.com/techniq/layerstack/commit/38c44438c2454d3ffe328be15c1077987f64ee24), [`eaca635`](https://github.com/techniq/layerstack/commit/eaca6356ccd5288950aca64b8082ef18df2757ec)]: + - @layerstack/utils@2.0.0-next.4 + +## 2.0.0-next.5 + +### Patch Changes + +- Updated dependencies [[`4ed65a7`](https://github.com/techniq/layerstack/commit/4ed65a76562db9af2d18a196a2ba9e58f959aa5c)]: + - @layerstack/utils@2.0.0-next.3 + +## 2.0.0-next.4 + +### Patch Changes + +- Updated dependencies [[`955e07b`](https://github.com/techniq/layerstack/commit/955e07b5aed62acd8afba10f9eaa68b90d72bb74)]: + - @layerstack/utils@1.1.0-next.2 + +## 2.0.0-next.3 + +### Patch Changes + +- Update dependencies ([#31](https://github.com/techniq/layerstack/pull/31)) + +- Updated dependencies [[`b7ca80b`](https://github.com/techniq/layerstack/commit/b7ca80b6a8a07c53ec4a99864ec6b9fd1ecab0b4)]: + - @layerstack/utils@1.1.0-next.1 + +## 2.0.0-next.2 + +### Patch Changes + +- breaking: Rename `theme.css` to `core.css` ([#31](https://github.com/techniq/layerstack/pull/31)) + +- feat: Add `themes/basic.css` for simple light/dark use cases ([#31](https://github.com/techniq/layerstack/pull/31)) + +- fix(theme.css): Provide default colors (instead of black) for all theme variables. Use `color-mix()` to derive `-50`:`-950` shades of all theme colors (primary-100, success-700, etc) ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 2.0.0-next.1 + +### Patch Changes + +- fix(theme.css): Apply tailwind typography `.prose` css variable overrides within `@layer utilities` to fix deployment. Properly set opacity for some variables ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 2.0.0-next.0 + +### Major Changes + +- Tailwind 4 support ([#32](https://github.com/techniq/layerstack/pull/32)) + +### Patch Changes + +- Updated dependencies [[`6cdcb26`](https://github.com/techniq/layerstack/commit/6cdcb26cabd0539cee2885efbaa39e7787a34114), [`c6bb443`](https://github.com/techniq/layerstack/commit/c6bb443d12ee12bd69417dcfa5880b6bf78c9f09), [`c13e65e`](https://github.com/techniq/layerstack/commit/c13e65e059d690cbc282635f6e48a27d715e5997)]: + - @layerstack/utils@1.1.0-next.0 + ## 1.0.1 ### Patch Changes diff --git a/packages/tailwind/package.json b/packages/tailwind/package.json index 372a102..a10ba9c 100644 --- a/packages/tailwind/package.json +++ b/packages/tailwind/package.json @@ -4,10 +4,11 @@ "author": "Sean Lynch ", "license": "MIT", "repository": "techniq/layerstack", - "version": "1.0.1", + "version": "2.0.0-next.19", "scripts": { "dev": "rimraf dist && tsc -p tsconfig.build.json --watch", - "build": "rimraf dist && tsc -p tsconfig.build.json && cp -r ./src/lib/plugin* dist", + "build": "rimraf dist && tsc -p tsconfig.build.json && pnpm build:css && cp -r ./src/lib/css dist", + "build:css": "tsc --noEmit && tsx ./src/lib/cli/index.ts", "preview": "vite preview", "package": "svelte-package", "prepublishOnly": "svelte-package", @@ -23,11 +24,15 @@ "@types/culori": "^2.1.1", "@types/d3-array": "^3.2.1", "@types/lodash-es": "^4.17.12", + "@types/node": "^24.0.1", + "culori": "^4.0.1", "daisyui": "^4.12.24", - "prettier": "^3.5.2", + "prettier": "^3.5.3", "rimraf": "6.0.1", + "tailwindcss": "^4.1.5", "tslib": "^2.8.1", - "typescript": "^5.7.3", + "tsx": "^4.19.4", + "typescript": "^5.8.3", "vite": "^6.3.5", "vitest": "^3.1.3" }, @@ -35,19 +40,18 @@ "dependencies": { "@layerstack/utils": "workspace:^", "clsx": "^2.1.1", - "culori": "^4.0.1", "d3-array": "^3.2.4", - "date-fns": "^4.1.0", "lodash-es": "^4.17.21", - "tailwind-merge": "^2.5.4", - "tailwindcss": "^3.4.15" + "tailwind-merge": "^3.2.0" }, "main": "./dist/index.js", "exports": { ".": "./dist/index.js", "./daisy": "./dist/daisy.js", "./skeleton": "./dist/skeleton.js", - "./plugin": "./dist/plugin.cjs" + "./*.css": "./dist/css/*.css", + "./themes/basic.css": "./dist/css/themes/basic.css", + "./themes/*.css": "./dist/css/themes/generated/*.css" }, "files": [ "dist" diff --git a/packages/tailwind/src/lib/__snapshots__/theme.test.ts.snap b/packages/tailwind/src/lib/__snapshots__/theme.test.ts.snap index 050991d..82c26f9 100644 --- a/packages/tailwind/src/lib/__snapshots__/theme.test.ts.snap +++ b/packages/tailwind/src/lib/__snapshots__/theme.test.ts.snap @@ -2,114 +2,114 @@ exports[`processThemeColors > Process theme colors recursive colors object 1`] = ` { - "--color-accent": "292.1893 84.0796% 60.5882%", - "--color-accent-100": "286.9565 100% 95.4902%", - "--color-accent-200": "288.2609 95.8333% 90.5882%", - "--color-accent-300": "291.1111 93.1034% 82.9412%", - "--color-accent-400": "292.0313 91.4286% 72.549%", - "--color-accent-50": "289.0909 100% 97.8431%", - "--color-accent-500": "292.1893 84.0796% 60.5882%", - "--color-accent-600": "293.4104 69.4779% 48.8235%", - "--color-accent-700": "294.6939 72.4138% 39.8039%", - "--color-accent-800": "295.4237 70.2381% 32.9412%", - "--color-accent-900": "296.7033 63.6364% 28.0392%", - "--color-accent-content": "0 0% 100%", - "--color-danger": "0 84.2365% 60.1961%", - "--color-danger-100": "0 93.3333% 94.1176%", - "--color-danger-200": "0 96.2963% 89.4118%", - "--color-danger-300": "0 93.5484% 81.7647%", - "--color-danger-400": "0 90.604% 70.7843%", - "--color-danger-50": "0 85.7143% 97.2549%", - "--color-danger-500": "0 84.2365% 60.1961%", - "--color-danger-600": "0 72.2222% 50.5882%", - "--color-danger-700": "0 73.7089% 41.7647%", - "--color-danger-800": "0 70% 35.2941%", - "--color-danger-900": "0 62.8205% 30.5882%", - "--color-danger-content": "0 85.7211% 4.1843%", - "--color-info": "217.2193 91.2195% 59.8039%", - "--color-info-100": "214.2857 94.5946% 92.7451%", - "--color-info-200": "213.3333 96.9231% 87.2549%", - "--color-info-300": "211.6981 96.3636% 78.4314%", - "--color-info-400": "213.1169 93.9024% 67.8431%", - "--color-info-50": "213.75 100% 96.8627%", - "--color-info-500": "217.2193 91.2195% 59.8039%", - "--color-info-600": "221.2121 83.1933% 53.3333%", - "--color-info-700": "224.2781 76.3265% 48.0392%", - "--color-info-800": "225.931 70.7317% 40.1961%", - "--color-info-900": "224.4444 64.2857% 32.9412%", - "--color-info-content": "225.5179 89.4756% 4.2952%", - "--color-neutral": "220 8.9362% 46.0784%", - "--color-neutral-100": "220 14.2857% 95.8824%", - "--color-neutral-200": "220 13.0435% 90.9804%", - "--color-neutral-300": "216 12.1951% 83.9216%", - "--color-neutral-400": "217.8947 10.6145% 64.902%", - "--color-neutral-50": "210 20% 98.0392%", - "--color-neutral-500": "220 8.9362% 46.0784%", - "--color-neutral-600": "215 13.7931% 34.1176%", - "--color-neutral-700": "216.9231 19.1176% 26.6667%", - "--color-neutral-800": "215 27.907% 16.8627%", - "--color-neutral-900": "220.9091 39.2857% 10.9804%", - "--color-neutral-content": "0 0% 100%", - "--color-primary": "221.2121 83.1933% 53.3333%", - "--color-primary-100": "214.2857 94.5946% 92.7451%", - "--color-primary-200": "213.3333 96.9231% 87.2549%", - "--color-primary-300": "211.6981 96.3636% 78.4314%", - "--color-primary-400": "213.1169 93.9024% 67.8431%", - "--color-primary-50": "213.75 100% 96.8627%", - "--color-primary-500": "217.2193 91.2195% 59.8039%", - "--color-primary-600": "221.2121 83.1933% 53.3333%", - "--color-primary-700": "224.2781 76.3265% 48.0392%", - "--color-primary-800": "225.931 70.7317% 40.1961%", - "--color-primary-900": "224.4444 64.2857% 32.9412%", - "--color-primary-content": "0 0% 100%", - "--color-secondary": "24.5815 94.9791% 53.1373%", - "--color-secondary-100": "34.2857 100% 91.7647%", - "--color-secondary-200": "32.1429 97.6744% 83.1373%", - "--color-secondary-300": "30.6569 97.1631% 72.3529%", - "--color-secondary-400": "27.0157 95.9799% 60.9804%", - "--color-secondary-50": "33.3333 100% 96.4706%", - "--color-secondary-500": "24.5815 94.9791% 53.1373%", - "--color-secondary-600": "20.5405 90.2439% 48.2353%", - "--color-secondary-700": "17.4725 88.3495% 40.3922%", - "--color-secondary-800": "15 79.0698% 33.7255%", - "--color-secondary-900": "15.283 74.6479% 27.8431%", - "--color-secondary-content": "0 0% 100%", - "--color-success": "142.0859 70.5628% 45.2941%", - "--color-success-100": "140.625 84.2105% 92.549%", - "--color-success-200": "141 78.9474% 85.098%", - "--color-success-300": "141.7143 76.6423% 73.1373%", - "--color-success-400": "141.8919 69.1589% 58.0392%", - "--color-success-50": "138.4615 76.4706% 96.6667%", - "--color-success-500": "142.0859 70.5628% 45.2941%", - "--color-success-600": "142.1277 76.2162% 36.2745%", - "--color-success-700": "142.4299 71.8121% 29.2157%", - "--color-success-800": "142.7848 64.2276% 24.1176%", - "--color-success-900": "143.8095 61.165% 20.1961%", - "--color-success-content": "131.0117 94.2327% 2.8668%", - "--color-surface-100": "0 0% 100%", - "--color-surface-200": "220 13.0435% 90.9804%", - "--color-surface-300": "216 12.1951% 83.9216%", - "--color-surface-content": "220.9091 39.2857% 10.9804%", - "--color-warning": "37.6923 92.126% 50.1961%", - "--color-warning-100": "48 96.4912% 88.8235%", - "--color-warning-200": "48 96.6387% 76.6667%", - "--color-warning-300": "45.9429 96.6851% 64.5098%", - "--color-warning-400": "43.2558 96.4126% 56.2745%", - "--color-warning-50": "48 100% 96.0784%", - "--color-warning-500": "37.6923 92.126% 50.1961%", - "--color-warning-600": "32.1327 94.6188% 43.7255%", - "--color-warning-700": "25.9649 90.4762% 37.0588%", - "--color-warning-800": "22.7273 82.5% 31.3725%", - "--color-warning-900": "21.7143 77.7778% 26.4706%", - "--color-warning-content": "26.0785 99.1481% 4.0603%", - "accent-950": "#4a044e", + "--color-accent": "hsl(292.6122 96.3522% 57.5124%)", + "--color-accent-100": "hsl(287.8451 100% 95.4466%)", + "--color-accent-200": "hsl(288.4167 100% 90.6671%)", + "--color-accent-300": "hsl(292.1393 100% 82.8641%)", + "--color-accent-400": "hsl(292.7825 100% 70.8783%)", + "--color-accent-50": "hsl(289.0916 95.9544% 97.7939%)", + "--color-accent-500": "hsl(292.6122 96.3522% 57.5124%)", + "--color-accent-600": "hsl(293.9463 100% 43.5771%)", + "--color-accent-700": "hsl(295.0291 100% 35.8976%)", + "--color-accent-800": "hsl(295.7977 98.2382% 29.3476%)", + "--color-accent-900": "hsl(296.7004 72.3479% 27.247%)", + "--color-accent-content": "hsl(0 0% 100%)", + "--color-danger": "hsl(356.946 95.8988% 57.7229%)", + "--color-danger-100": "hsl(359.982 98.7846% 94.2472%)", + "--color-danger-200": "hsl(359.9472 100% 89.4922%)", + "--color-danger-300": "hsl(359.7222 100% 81.734%)", + "--color-danger-400": "hsl(358.748 100% 69.5576%)", + "--color-danger-50": "hsl(359.9996 88.2079% 97.3213%)", + "--color-danger-500": "hsl(356.946 95.8988% 57.7229%)", + "--color-danger-600": "hsl(357.2057 100% 45.3229%)", + "--color-danger-700": "hsl(357.7206 100% 37.8442%)", + "--color-danger-800": "hsl(355.9407 91.1549% 32.5499%)", + "--color-danger-900": "hsl(358.7969 69.3004% 30.075%)", + "--color-danger-content": "hsl(359.0578 94.0193% 4.3184%)", + "--color-info": "hsl(216.2564 100% 58.4666%)", + "--color-info-100": "hsl(214.2845 96.222% 92.7756%)", + "--color-info-200": "hsl(213.2677 100% 87.2546%)", + "--color-info-300": "hsl(210.6944 100% 77.8296%)", + "--color-info-400": "hsl(211.9564 100% 65.79%)", + "--color-info-50": "hsl(213.7504 96.4852% 96.7906%)", + "--color-info-500": "hsl(216.2564 100% 58.4666%)", + "--color-info-600": "hsl(221.3366 97.0631% 53.4981%)", + "--color-info-700": "hsl(225.3451 84.0953% 48.9841%)", + "--color-info-800": "hsl(227.0987 75.7431% 41.1352%)", + "--color-info-900": "hsl(224.8632 67.2785% 33.3285%)", + "--color-info-content": "hsl(226.5507 94.5113% 4.5837%)", + "--color-neutral": "hsl(220.0279 10.2643% 46.2976%)", + "--color-neutral-100": "hsl(220.0003 14.9678% 95.8979%)", + "--color-neutral-200": "hsl(220.0003 13.5652% 91.0486%)", + "--color-neutral-300": "hsl(215.9989 13.1233% 84.0013%)", + "--color-neutral-400": "hsl(217.9005 11.9219% 64.2616%)", + "--color-neutral-50": "hsl(209.9983 24.1882% 98.0992%)", + "--color-neutral-500": "hsl(220.0279 10.2643% 46.2976%)", + "--color-neutral-600": "hsl(214.9937 15.6629% 34.2475%)", + "--color-neutral-700": "hsl(216.9394 21.105% 26.8119%)", + "--color-neutral-800": "hsl(214.9924 30.9869% 16.9495%)", + "--color-neutral-900": "hsl(220.9996 41.6876% 11.0655%)", + "--color-neutral-content": "hsl(0 0% 100%)", + "--color-primary": "hsl(221.3366 97.0631% 53.4981%)", + "--color-primary-100": "hsl(214.2845 96.222% 92.7756%)", + "--color-primary-200": "hsl(213.2677 100% 87.2546%)", + "--color-primary-300": "hsl(210.6944 100% 77.8296%)", + "--color-primary-400": "hsl(211.9564 100% 65.79%)", + "--color-primary-50": "hsl(213.7504 96.4852% 96.7906%)", + "--color-primary-500": "hsl(216.2564 100% 58.4666%)", + "--color-primary-600": "hsl(221.3366 97.0631% 53.4981%)", + "--color-primary-700": "hsl(225.3451 84.0953% 48.9841%)", + "--color-primary-800": "hsl(227.0987 75.7431% 41.1352%)", + "--color-primary-900": "hsl(224.8632 67.2785% 33.3285%)", + "--color-primary-content": "hsl(0 0% 100%)", + "--color-secondary": "hsl(24.6441 100% 50%)", + "--color-secondary-100": "hsl(34.5099 100% 91.6292%)", + "--color-secondary-200": "hsl(32.2202 100% 82.8417%)", + "--color-secondary-300": "hsl(31.5676 100% 70.6964%)", + "--color-secondary-400": "hsl(31.8315 100% 50.6921%)", + "--color-secondary-50": "hsl(33.7504 100% 96.4632%)", + "--color-secondary-500": "hsl(24.6441 100% 50%)", + "--color-secondary-600": "hsl(17.9987 100% 48.0353%)", + "--color-secondary-700": "hsl(15.7046 100% 39.5941%)", + "--color-secondary-800": "hsl(16.9704 100% 31.2249%)", + "--color-secondary-900": "hsl(15.9878 83.1158% 27.0385%)", + "--color-secondary-content": "hsl(0 0% 100%)", + "--color-success": "hsl(144.0579 100% 39.3578%)", + "--color-success-100": "hsl(140.6473 84.3761% 92.4545%)", + "--color-success-200": "hsl(141.1448 81.0714% 84.817%)", + "--color-success-300": "hsl(142.6564 81.2473% 71.3902%)", + "--color-success-400": "hsl(150.0644 95.5607% 44.7591%)", + "--color-success-50": "hsl(138.4592 76.5139% 96.6798%)", + "--color-success-500": "hsl(144.0579 100% 39.3578%)", + "--color-success-600": "hsl(142.2931 100% 32.5651%)", + "--color-success-700": "hsl(144.6836 100% 25.4999%)", + "--color-success-800": "hsl(147.7182 97.1538% 20.3636%)", + "--color-success-900": "hsl(145.734 73.0788% 18.9907%)", + "--color-success-content": "hsl(128.7384 100% 2.8818%)", + "--color-surface-100": "hsl(0 0% 100%)", + "--color-surface-200": "hsl(220.0003 13.5652% 91.0486%)", + "--color-surface-300": "hsl(215.9989 13.1233% 84.0013%)", + "--color-surface-content": "hsl(220.9996 41.6876% 11.0655%)", + "--color-warning": "hsl(36.3337 100% 49.7136%)", + "--color-warning-100": "hsl(47.994 97.3389% 88.7262%)", + "--color-warning-200": "hsl(48.0232 98.2285% 75.896%)", + "--color-warning-300": "hsl(46.9903 100% 59.3803%)", + "--color-warning-400": "hsl(43.6353 100% 50%)", + "--color-warning-50": "hsl(48.3807 100% 95.9997%)", + "--color-warning-500": "hsl(36.3337 100% 49.7136%)", + "--color-warning-600": "hsl(30.0996 100% 44.1884%)", + "--color-warning-700": "hsl(24.6812 100% 36.5894%)", + "--color-warning-800": "hsl(23.7595 100% 29.5153%)", + "--color-warning-900": "hsl(23.0369 90.1705% 25.264%)", + "--color-warning-content": "hsl(23.327 100% 4.2669%)", + "accent-950": "oklch(0.293 0.136 325.661)", "color-scheme": "light", - "danger-950": "#450a0a", - "info-950": "#172554", - "neutral-950": "#030712", - "primary-950": "#172554", - "secondary-950": "#431407", - "success-950": "#052e16", - "warning-950": "#451a03", + "danger-950": "oklch(0.258 0.092 26.042)", + "info-950": "oklch(0.282 0.091 267.935)", + "neutral-950": "oklch(0.13 0.028 261.692)", + "primary-950": "oklch(0.282 0.091 267.935)", + "secondary-950": "oklch(0.266 0.079 36.259)", + "success-950": "oklch(0.266 0.065 152.934)", + "warning-950": "oklch(0.279 0.077 45.635)", } `; diff --git a/packages/tailwind/src/lib/daisy.ts b/packages/tailwind/src/lib/cli/daisy.ts similarity index 96% rename from packages/tailwind/src/lib/daisy.ts rename to packages/tailwind/src/lib/cli/daisy.ts index f9d8e51..9916583 100644 --- a/packages/tailwind/src/lib/daisy.ts +++ b/packages/tailwind/src/lib/cli/daisy.ts @@ -49,7 +49,7 @@ const daisyColorMap = { }; /** - * Map Daisy UI color names to Svelte UX names, and sort themes + * Map Daisy UI color names to LayerStack names, and sort themes */ function mapColorsName(themes: typeof daisyThemes, colorMap: typeof daisyColorMap) { let themesGeneric = themes as unknown as Record>; diff --git a/packages/tailwind/src/lib/cli/index.ts b/packages/tailwind/src/lib/cli/index.ts new file mode 100755 index 0000000..35b5b6e --- /dev/null +++ b/packages/tailwind/src/lib/cli/index.ts @@ -0,0 +1,80 @@ +import { writeFileSync, mkdirSync } from 'node:fs'; +import { dirname } from 'node:path'; +import { format } from 'prettier'; + +import { entries } from '@layerstack/utils'; +import { mapKeys } from '@layerstack/utils/object'; + +import { colorNames, themeStylesString, type Colors, type SupportedColorSpace } from './utils.js'; +import { themes as daisyThemes } from './daisy.js'; +import { themes as skeletonThemes } from './skeleton.js'; + +/** + * Build theme CSS variables + */ +function buildThemeCss(colorSpace: SupportedColorSpace) { + let result: string[] = []; + + result.push('@theme {'); + + // Register theme colors variables with placeholder values + colorNames.forEach((color) => { + result.push(`--color-${color}: ${colorSpace}(0 0 0);`); + }); + + result.push('}'); + + return format(result.join('\n'), { parser: 'css' }); +} + +/** + * Build themes as CSS files + */ +async function buildThemesCss(themes: Record, colorSpace: SupportedColorSpace) { + let result: string[] = []; + + let rootThemeName: string = ''; + entries(themes).map(([themeName, themeColors], index) => { + if (index === 0) { + // Root / default theme + result.push(`:root { ${themeStylesString(themeColors, colorSpace)} }`); + rootThemeName = themeName; + } else if (index === 1) { + // Dark theme + result.push(`@media (prefers-color-scheme: dark) { + :root { ${themeStylesString(themeColors, colorSpace)} } + }`); + + // Also register first and second theme by name AFTER @media for precedence + result.push( + `[data-theme=${rootThemeName}] { ${themeStylesString(themes[rootThemeName], colorSpace)} }` + ); + result.push(`[data-theme=${themeName}] { ${themeStylesString(themeColors, colorSpace)} }`); + } else { + result.push(`[data-theme=${themeName}] { ${themeStylesString(themeColors, colorSpace)} }`); + } + }); + + return format(result.join('\n\n'), { parser: 'css' }); +} + +function writeFile(filePath: string, data: string) { + mkdirSync(dirname(filePath), { recursive: true }); + writeFileSync(filePath, data); + console.log(`Wrote ${filePath}`); +} + +const daisyCss = await buildThemesCss(daisyThemes, 'hsl'); +writeFile('src/lib/css/themes/generated/daisy.css', daisyCss); + +const skeletonCss = await buildThemesCss(skeletonThemes, 'hsl'); +writeFile('src/lib/css/themes/generated/skeleton.css', skeletonCss); + +const allThemes = { + ...daisyThemes, + ...mapKeys(skeletonThemes, (key: string) => + key === 'light' ? 'skeleton-light' : key === 'dark' ? 'skeleton-dark' : key + ), +}; +const allThemesCss = await buildThemesCss(allThemes, 'hsl'); +writeFile('src/lib/css/themes/generated/all.css', allThemesCss); diff --git a/packages/tailwind/src/lib/skeleton.ts b/packages/tailwind/src/lib/cli/skeleton.ts similarity index 100% rename from packages/tailwind/src/lib/skeleton.ts rename to packages/tailwind/src/lib/cli/skeleton.ts diff --git a/packages/tailwind/src/lib/skeleton/crimson.ts b/packages/tailwind/src/lib/cli/skeleton/crimson.ts similarity index 100% rename from packages/tailwind/src/lib/skeleton/crimson.ts rename to packages/tailwind/src/lib/cli/skeleton/crimson.ts diff --git a/packages/tailwind/src/lib/skeleton/gold-nouveau.ts b/packages/tailwind/src/lib/cli/skeleton/gold-nouveau.ts similarity index 100% rename from packages/tailwind/src/lib/skeleton/gold-nouveau.ts rename to packages/tailwind/src/lib/cli/skeleton/gold-nouveau.ts diff --git a/packages/tailwind/src/lib/skeleton/hamlindigo.ts b/packages/tailwind/src/lib/cli/skeleton/hamlindigo.ts similarity index 100% rename from packages/tailwind/src/lib/skeleton/hamlindigo.ts rename to packages/tailwind/src/lib/cli/skeleton/hamlindigo.ts diff --git a/packages/tailwind/src/lib/skeleton/index.ts b/packages/tailwind/src/lib/cli/skeleton/index.ts similarity index 91% rename from packages/tailwind/src/lib/skeleton/index.ts rename to packages/tailwind/src/lib/cli/skeleton/index.ts index a25271d..6bea742 100644 --- a/packages/tailwind/src/lib/skeleton/index.ts +++ b/packages/tailwind/src/lib/cli/skeleton/index.ts @@ -8,7 +8,12 @@ import seafoam from './seafoam.js'; import skeleton from './skeleton.js'; import vintage from './vintage.js'; import wintry from './wintry.js'; -import type { CSSRuleObject } from 'tailwindcss/types/config.js'; + +// `CSSRuleObject` copied from tailwindcss/types/config.js (no longer available in v4 - https://github.com/tailwindlabs/tailwindcss/blob/v3.4.17/types/config.d.ts#L15) +interface RecursiveKeyValuePair { + [key: string]: V | RecursiveKeyValuePair; +} +type CSSRuleObject = RecursiveKeyValuePair; export const themes = { crimson, diff --git a/packages/tailwind/src/lib/skeleton/modern.ts b/packages/tailwind/src/lib/cli/skeleton/modern.ts similarity index 100% rename from packages/tailwind/src/lib/skeleton/modern.ts rename to packages/tailwind/src/lib/cli/skeleton/modern.ts diff --git a/packages/tailwind/src/lib/skeleton/rocket.ts b/packages/tailwind/src/lib/cli/skeleton/rocket.ts similarity index 100% rename from packages/tailwind/src/lib/skeleton/rocket.ts rename to packages/tailwind/src/lib/cli/skeleton/rocket.ts diff --git a/packages/tailwind/src/lib/skeleton/sahara.ts b/packages/tailwind/src/lib/cli/skeleton/sahara.ts similarity index 100% rename from packages/tailwind/src/lib/skeleton/sahara.ts rename to packages/tailwind/src/lib/cli/skeleton/sahara.ts diff --git a/packages/tailwind/src/lib/skeleton/seafoam.ts b/packages/tailwind/src/lib/cli/skeleton/seafoam.ts similarity index 100% rename from packages/tailwind/src/lib/skeleton/seafoam.ts rename to packages/tailwind/src/lib/cli/skeleton/seafoam.ts diff --git a/packages/tailwind/src/lib/skeleton/skeleton.ts b/packages/tailwind/src/lib/cli/skeleton/skeleton.ts similarity index 100% rename from packages/tailwind/src/lib/skeleton/skeleton.ts rename to packages/tailwind/src/lib/cli/skeleton/skeleton.ts diff --git a/packages/tailwind/src/lib/skeleton/vintage.ts b/packages/tailwind/src/lib/cli/skeleton/vintage.ts similarity index 100% rename from packages/tailwind/src/lib/skeleton/vintage.ts rename to packages/tailwind/src/lib/cli/skeleton/vintage.ts diff --git a/packages/tailwind/src/lib/skeleton/wintry.ts b/packages/tailwind/src/lib/cli/skeleton/wintry.ts similarity index 100% rename from packages/tailwind/src/lib/skeleton/wintry.ts rename to packages/tailwind/src/lib/cli/skeleton/wintry.ts diff --git a/packages/tailwind/src/lib/cli/utils.ts b/packages/tailwind/src/lib/cli/utils.ts new file mode 100644 index 0000000..54ff310 --- /dev/null +++ b/packages/tailwind/src/lib/cli/utils.ts @@ -0,0 +1,194 @@ +import { + rgb, + hsl, + oklch, + clampRgb, + interpolate, + wcagContrast, + formatCss, + type Color, + type Hsl, + type Oklch, + type Rgb, +} from 'culori'; +import { entries, fromEntries, keys } from '@layerstack/utils'; +import { colors, semanticColors, shades, stateColors } from '../theme.js'; + +export type SupportedColorSpace = 'rgb' | 'hsl' | 'oklch'; +export type Colors = Record; + +export const colorNames = [ + // Semantic & State colors (ex. `priamry`, 'primary-content`, 'primary-100`, ...) + ...colors.flatMap((color) => [ + color, // default + `${color}-content`, // text/content + ...shades.map((shade) => `${color}-${shade}`), + ]), + + // Surfaces + 'surface-100', + 'surface-200', + 'surface-300', + 'surface-content', +]; + +/** + * Generate missing theme colors (if needed), convert names to CSS variables and to a common color space (hsl, oklch, etc) + */ +export function processThemeColors(colors: Colors, colorSpace: SupportedColorSpace) { + // TODO: make all semanatic colors optional as well + + // Generate optional semanatic colors + colors['neutral'] ??= colors['neutral-500'] ?? 'oklch(.355192 .032071 262.988584)'; + + // Generate optional state colors + colors['info'] ??= colors['info-500'] ?? 'oklch(0.7206 0.191 231.6)'; + colors['success'] ??= colors['success-500'] ?? 'oklch(64.8% 0.150 160)'; + colors['warning'] ??= colors['warning-500'] ?? 'oklch(0.8471 0.199 83.87)'; + colors['danger'] ??= colors['danger-500'] ?? 'oklch(0.7176 0.221 22.18)'; + + // Generate optional content colors + for (const color of [...semanticColors, ...stateColors]) { + // Add `primary` from `primary-500` if not defined in theme (ex. Skeleton) + colors[color] ??= colors[`${color}-500`]; + colors[`${color}-content`] ??= foregroundColor(colors[color]) as string; + + // Generate color shades (ex. `primary-500`) if not defined. Useful for Daisy but not Skeleton themes, for example + for (const shade of shades) { + const shadeColorName = `${color}-${shade}`; + if (!(shadeColorName in colors)) { + // Find the next shade above (shade < 500) or below (shade > 500) and use as reference, if available + const referenceShade = + keys(colors) + .map((key) => { + const [c, s] = String(key).split('-'); + return [c, Number(s)] as [string, number]; + }) + .find(([c, s]) => c === color && (s < 500 ? s > shade : s < shade))?.[1] ?? 500; + const referenceColor = colors[`${color}-${referenceShade}`] ?? colors[color]; + + if (shade < 500) { + colors[shadeColorName] ??= lightenColor( + referenceColor, + (referenceShade - shade) / 1000 + ) as string; // 100 == 0.1 + } else if (shade > 500) { + colors[shadeColorName] ??= darkenColor( + colors[color], + (shade - referenceShade) / 1000 + ) as string; // 100 == 0.1 + } else { + colors[shadeColorName] ??= colors[color] as string; + } + } + } + } + + // Generate optional surface colors + colors['surface-100'] ??= 'oklch(100 0 0)'; + colors['surface-200'] ??= darkenColor(colors['surface-100'], 0.07) as string; + colors['surface-300'] ??= darkenColor(colors['surface-200'], 0.07) as string; + colors['surface-content'] ??= foregroundColor(colors['surface-100']) as string; + + // Add `color-scheme: "dark"` for `dark` theme (if not set) + colors['color-scheme'] ??= isDark(colors['surface-content']) ? 'light' : 'dark'; + + const result = fromEntries( + entries(colors).map(([name, value]) => { + if (colorNames.includes(String(name))) { + // Convert each color to common colorspace and add variable + return [`--color-${name}`, convertColor(value, colorSpace)]; + } else { + // Additional properties such as `color-scheme` or CSS variable + return [name, value]; + } + }) + ); + + return result; +} + +function round(value: number, decimals: number) { + if (value) { + return Number(value.toFixed(decimals)); + } else { + return 0; + } +} + +function isDark(color: Color | string) { + try { + if (wcagContrast(color, 'black') < wcagContrast(color, 'white')) { + return true; + } + return false; + } catch (e) { + return false; + } +} + +/** Lighten or darken color based on contrast of input */ +function foregroundColor(color: Color | string, percentage = 0.8) { + try { + return isDark(color) ? lightenColor(color, percentage) : darkenColor(color, percentage); + } catch (e) { + // console.error('Unable to generate foreground color', color); + } +} + +function lightenColor(color: Color | string, percentage: number) { + try { + return formatCss(interpolate([color, 'white'], 'oklch')(percentage)); + } catch (e) { + // console.error('Unable to generate lighten color', color); + } +} + +function darkenColor(color: Color | string, percentage: number) { + try { + return formatCss(interpolate([color, 'black'], 'oklch')(percentage)); + } catch (e) { + // console.error('Unable to generate darken color', color); + } +} + +/** + * Convert color to space separated components string + */ +export function convertColor(color: Color | string, colorSpace: SupportedColorSpace, decimals = 4) { + try { + if (colorSpace === 'rgb') { + const computedColor = typeof color === 'string' ? rgb(color) : (color as Rgb); + if (computedColor) { + const { r, g, b } = computedColor; + return `rgb(${round(r * 255, decimals)} ${round(g * 255, decimals)} ${round(b * 255, decimals)})`; + } + } else if (colorSpace === 'hsl') { + const computedColor = typeof color === 'string' ? hsl(clampRgb(color)) : (color as Hsl); + if (computedColor) { + const { h, s, l } = computedColor; + return `hsl(${round(h ?? 0, decimals)} ${round(s * 100, decimals)}% ${round(l * 100, decimals)}%)`; + } + } else if (colorSpace === 'oklch') { + const computedColor = typeof color === 'string' ? oklch(clampRgb(color)) : (color as Oklch); + if (computedColor) { + const { l, c, h } = computedColor; + return `oklch(${round(l, decimals)} ${round(c, decimals)} ${round(h ?? 0, decimals)})`; + } + } + } catch (e) { + // console.error('Unable to convert color object to string', color); + } +} + +/** + * Process theme to style variables + */ +export function themeStylesString(colors: Colors, colorSpace: SupportedColorSpace) { + const styleProperties = processThemeColors(colors, colorSpace); + return entries(styleProperties) + .map(([key, value]) => { + return `${key}: ${value};`; + }) + .join('\n'); +} diff --git a/packages/tailwind/src/lib/css/core.css b/packages/tailwind/src/lib/css/core.css new file mode 100644 index 0000000..d6095a3 --- /dev/null +++ b/packages/tailwind/src/lib/css/core.css @@ -0,0 +1,165 @@ +@theme { + /* + * Semantic colors + */ + --color-primary: var(--color-blue-500); + --color-primary-content: color-mix(in oklab, var(--color-primary) 50%, black); + + --color-secondary: var(--color-orange-500); + --color-secondary-content: color-mix(in oklab, var(--color-secondary) 50%, black); + + --color-accent: var(--color-purple-500); + --color-accent-content: color-mix(in oklab, var(--color-accent) 50%, black); + + --color-neutral: var(--color-gray-500); + --color-neutral-content: color-mix(in oklab, var(--color-neutral) 50%, black); + + /* + * Status colors + */ + --color-info: hsl(200 100% 50%); + --color-info-content: color-mix(in oklab, var(--color-info) 50%, black); + + --color-success: hsl(160 100% 30%); + --color-success-content: color-mix(in oklab, var(--color-success) 50%, black); + + --color-warning: hsl(45 100% 50%); + --color-warning-content: color-mix(in oklab, var(--color-warning) 50%, black); + + --color-danger: hsl(0 100% 70%); + --color-danger-content: color-mix(in oklab, var(--color-danger) 50%, black); + + /* + * Surface colors + */ + --color-surface-100: var(--color-white); + --color-surface-200: var(--color-gray-100); + --color-surface-300: var(--color-gray-300); + --color-surface-content: var(--color-gray-900); + + /* + * Extra colors + */ + --color-primary-50: color-mix(in oklab, var(--color-primary) 50%, white); + --color-primary-100: color-mix(in oklab, var(--color-primary) 60%, white); + --color-primary-200: color-mix(in oklab, var(--color-primary) 70%, white); + --color-primary-300: color-mix(in oklab, var(--color-primary) 80%, white); + --color-primary-400: color-mix(in oklab, var(--color-primary) 90%, white); + --color-primary-500: var(--color-primary); + --color-primary-600: color-mix(in oklab, var(--color-primary) 90%, black); + --color-primary-700: color-mix(in oklab, var(--color-primary) 80%, black); + --color-primary-800: color-mix(in oklab, var(--color-primary) 70%, black); + --color-primary-900: color-mix(in oklab, var(--color-primary) 60%, black); + --color-primary-950: color-mix(in oklab, var(--color-primary) 50%, black); + + --color-secondary-50: color-mix(in oklab, var(--color-secondary) 50%, white); + --color-secondary-100: color-mix(in oklab, var(--color-secondary) 60%, white); + --color-secondary-200: color-mix(in oklab, var(--color-secondary) 70%, white); + --color-secondary-300: color-mix(in oklab, var(--color-secondary) 80%, white); + --color-secondary-400: color-mix(in oklab, var(--color-secondary) 90%, white); + --color-secondary-500: var(--color-secondary); + --color-secondary-600: color-mix(in oklab, var(--color-secondary) 90%, black); + --color-secondary-700: color-mix(in oklab, var(--color-secondary) 80%, black); + --color-secondary-800: color-mix(in oklab, var(--color-secondary) 70%, black); + --color-secondary-900: color-mix(in oklab, var(--color-secondary) 60%, black); + --color-secondary-950: color-mix(in oklab, var(--color-secondary) 50%, black); + + --color-accent-50: color-mix(in oklab, var(--color-accent) 50%, white); + --color-accent-100: color-mix(in oklab, var(--color-accent) 60%, white); + --color-accent-200: color-mix(in oklab, var(--color-accent) 70%, white); + --color-accent-300: color-mix(in oklab, var(--color-accent) 80%, white); + --color-accent-400: color-mix(in oklab, var(--color-accent) 90%, white); + --color-accent-500: var(--color-accent); + --color-accent-600: color-mix(in oklab, var(--color-accent) 90%, black); + --color-accent-700: color-mix(in oklab, var(--color-accent) 80%, black); + --color-accent-800: color-mix(in oklab, var(--color-accent) 70%, black); + --color-accent-900: color-mix(in oklab, var(--color-accent) 60%, black); + --color-accent-950: color-mix(in oklab, var(--color-accent) 50%, black); + + --color-neutral-50: color-mix(in oklab, var(--color-neutral) 50%, white); + --color-neutral-100: color-mix(in oklab, var(--color-neutral) 60%, white); + --color-neutral-200: color-mix(in oklab, var(--color-neutral) 70%, white); + --color-neutral-300: color-mix(in oklab, var(--color-neutral) 80%, white); + --color-neutral-400: color-mix(in oklab, var(--color-neutral) 90%, white); + --color-neutral-500: var(--color-neutral); + --color-neutral-600: color-mix(in oklab, var(--color-neutral) 90%, black); + --color-neutral-700: color-mix(in oklab, var(--color-neutral) 80%, black); + --color-neutral-800: color-mix(in oklab, var(--color-neutral) 70%, black); + --color-neutral-900: color-mix(in oklab, var(--color-neutral) 60%, black); + --color-neutral-950: color-mix(in oklab, var(--color-neutral) 50%, black); + + --color-info-50: color-mix(in oklab, var(--color-info) 50%, white); + --color-info-100: color-mix(in oklab, var(--color-info) 60%, white); + --color-info-200: color-mix(in oklab, var(--color-info) 70%, white); + --color-info-300: color-mix(in oklab, var(--color-info) 80%, white); + --color-info-400: color-mix(in oklab, var(--color-info) 90%, white); + --color-info-500: var(--color-info); + --color-info-600: color-mix(in oklab, var(--color-info) 90%, black); + --color-info-700: color-mix(in oklab, var(--color-info) 80%, black); + --color-info-800: color-mix(in oklab, var(--color-info) 70%, black); + --color-info-900: color-mix(in oklab, var(--color-info) 60%, black); + --color-info-950: color-mix(in oklab, var(--color-info) 50%, black); + + --color-success-50: color-mix(in oklab, var(--color-success) 50%, white); + --color-success-100: color-mix(in oklab, var(--color-success) 60%, white); + --color-success-200: color-mix(in oklab, var(--color-success) 70%, white); + --color-success-300: color-mix(in oklab, var(--color-success) 80%, white); + --color-success-400: color-mix(in oklab, var(--color-success) 90%, white); + --color-success-500: var(--color-success); + --color-success-600: color-mix(in oklab, var(--color-success) 90%, black); + --color-success-700: color-mix(in oklab, var(--color-success) 80%, black); + --color-success-800: color-mix(in oklab, var(--color-success) 70%, black); + --color-success-900: color-mix(in oklab, var(--color-success) 60%, black); + --color-success-950: color-mix(in oklab, var(--color-success) 50%, black); + + --color-warning-50: color-mix(in oklab, var(--color-warning) 50%, white); + --color-warning-100: color-mix(in oklab, var(--color-warning) 60%, white); + --color-warning-200: color-mix(in oklab, var(--color-warning) 70%, white); + --color-warning-300: color-mix(in oklab, var(--color-warning) 80%, white); + --color-warning-400: color-mix(in oklab, var(--color-warning) 90%, white); + --color-warning-500: var(--color-warning); + --color-warning-600: color-mix(in oklab, var(--color-warning) 90%, black); + --color-warning-700: color-mix(in oklab, var(--color-warning) 80%, black); + --color-warning-800: color-mix(in oklab, var(--color-warning) 70%, black); + --color-warning-900: color-mix(in oklab, var(--color-warning) 60%, black); + --color-warning-950: color-mix(in oklab, var(--color-warning) 50%, black); + + --color-danger-50: color-mix(in oklab, var(--color-danger) 50%, white); + --color-danger-100: color-mix(in oklab, var(--color-danger) 60%, white); + --color-danger-200: color-mix(in oklab, var(--color-danger) 70%, white); + --color-danger-300: color-mix(in oklab, var(--color-danger) 80%, white); + --color-danger-400: color-mix(in oklab, var(--color-danger) 90%, white); + --color-danger-500: var(--color-danger); + --color-danger-600: color-mix(in oklab, var(--color-danger) 90%, black); + --color-danger-700: color-mix(in oklab, var(--color-danger) 80%, black); + --color-danger-800: color-mix(in oklab, var(--color-danger) 70%, black); + --color-danger-900: color-mix(in oklab, var(--color-danger) 60%, black); + --color-danger-950: color-mix(in oklab, var(--color-danger) 50%, black); +} + +/* Use `` to activate `dark:` variant */ +@custom-variant dark (&:where(.dark, .dark *)); + +/* + Tailwind CSS Typography plugin overrides +*/ +@layer utilities { + .prose { + --tw-prose-body: var(--color-surface-content); + --tw-prose-headings: var(--color-surface-content); + --tw-prose-lead: var(--color-surface-content); + --tw-prose-links: var(--color-surface-content); + --tw-prose-bold: var(--color-surface-content); + --tw-prose-counters: color-mix(in oklab, var(--color-surface-content) 30%, transparent); + --tw-prose-bullets: color-mix(in oklab, var(--color-surface-content) 20%, transparent); + --tw-prose-hr: color-mix(in oklab, var(--color-surface-content) 20%, transparent); + --tw-prose-quotes: var(--color-surface-content); + --tw-prose-quote-borders: var(--color-surface-content); + --tw-prose-captions: var(--color-surface-content); + --tw-prose-code: var(--color-surface-content); + --tw-prose-pre-code: var(--color-surface-content); + --tw-prose-pre-bg: var(--color-surface-content); + --tw-prose-th-borders: var(--color-surface-300); + --tw-prose-td-borders: var(--color-surface-300); + } +} diff --git a/packages/tailwind/src/lib/css/themes/basic.css b/packages/tailwind/src/lib/css/themes/basic.css new file mode 100644 index 0000000..437d940 --- /dev/null +++ b/packages/tailwind/src/lib/css/themes/basic.css @@ -0,0 +1,45 @@ +:root { + color-scheme: light; + --color-primary: var(--color-blue-500); + --color-primary-content: var(--color-white); + --color-secondary: var(--color-orange-500); + --color-surface-100: var(--color-white); + --color-surface-200: var(--color-gray-100); + --color-surface-300: var(--color-gray-300); + --color-surface-content: var(--color-gray-900); +} + +@media (prefers-color-scheme: dark) { + :root { + color-scheme: dark; + --color-primary: var(--color-blue-500); + --color-primary-content: var(--color-white); + --color-secondary: var(--color-orange-500); + --color-surface-100: var(--color-zinc-800); + --color-surface-200: var(--color-zinc-900); + --color-surface-300: var(--color-zinc-950); + --color-surface-content: var(--color-zinc-100); + } +} + +[data-theme='light'] { + color-scheme: light; + --color-primary: var(--color-blue-500); + --color-primary-content: var(--color-white); + --color-secondary: var(--color-orange-500); + --color-surface-100: var(--color-white); + --color-surface-200: var(--color-gray-100); + --color-surface-300: var(--color-gray-300); + --color-surface-content: var(--color-gray-900); +} + +[data-theme='dark'] { + color-scheme: dark; + --color-primary: var(--color-blue-500); + --color-primary-content: var(--color-white); + --color-secondary: var(--color-orange-500); + --color-surface-100: var(--color-zinc-800); + --color-surface-200: var(--color-zinc-900); + --color-surface-300: var(--color-zinc-950); + --color-surface-content: var(--color-zinc-100); +} diff --git a/packages/tailwind/src/lib/css/themes/generated/all.css b/packages/tailwind/src/lib/css/themes/generated/all.css new file mode 100644 index 0000000..779f6f4 --- /dev/null +++ b/packages/tailwind/src/lib/css/themes/generated/all.css @@ -0,0 +1,5589 @@ +:root { + color-scheme: light; + --color-primary: hsl(257.4075 100% 50%); + --color-secondary: hsl(310.4453 100% 50%); + --color-secondary-content: hsl(320.0789 100% 98.6494%); + --color-accent: hsl(173.4835 100% 42.1865%); + --color-neutral: hsl(214.2857 19.6262% 20.9804%); + --color-neutral-content: hsl(212.3077 19.403% 86.8627%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-200: hsl(0 0% 94.902%); + --color-surface-300: hsl(180 1.9608% 90%); + --color-surface-content: hsl(215 27.907% 16.8627%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(227.6647 100% 91.0748%); + --color-primary-50: hsl(232.3457 100% 76.8157%); + --color-primary-100: hsl(233.4035 100% 74.9896%); + --color-primary-200: hsl(236.0867 100% 71.5789%); + --color-primary-300: hsl(239.9818 100% 68.5879%); + --color-primary-400: hsl(245.7714 100% 62.5712%); + --color-primary-500: hsl(257.4075 100% 50%); + --color-primary-600: hsl(256.3942 100% 45.2974%); + --color-primary-700: hsl(255.9702 100% 38.7195%); + --color-primary-800: hsl(255.3947 100% 32.3445%); + --color-primary-900: hsl(254.5739 100% 26.1938%); + --color-secondary-50: hsl(312.9534 100% 79.1139%); + --color-secondary-100: hsl(312.8775 100% 76.9231%); + --color-secondary-200: hsl(312.6258 100% 72.1652%); + --color-secondary-300: hsl(312.1478 100% 66.4927%); + --color-secondary-400: hsl(311.0379 100% 57.9643%); + --color-secondary-500: hsl(310.4453 100% 50%); + --color-secondary-600: hsl(314.516 100% 47.3052%); + --color-secondary-700: hsl(314.6511 100% 40.4525%); + --color-secondary-800: hsl(314.8343 100% 33.8111%); + --color-secondary-900: hsl(315.0952 100% 27.4033%); + --color-accent-content: hsl(168.722 100% 3.2602%); + --color-accent-50: hsl(171.3855 72.5307% 71.4464%); + --color-accent-100: hsl(171.7771 72.9012% 68.0855%); + --color-accent-200: hsl(172.7542 74.2685% 59.9573%); + --color-accent-300: hsl(174.6018 100% 43.9907%); + --color-accent-400: hsl(174.0311 100% 43.1035%); + --color-accent-500: hsl(173.4835 100% 42.1865%); + --color-accent-600: hsl(173.4232 100% 36.6415%); + --color-accent-700: hsl(173.3439 100% 31.2487%); + --color-accent-800: hsl(173.2358 100% 26.0221%); + --color-accent-900: hsl(173.0804 100% 20.9795%); + --color-neutral-50: hsl(214.3814 5.8279% 54.0221%); + --color-neutral-100: hsl(214.3741 5.7772% 50.1155%); + --color-neutral-200: hsl(214.3577 7.6767% 42.4628%); + --color-neutral-300: hsl(214.3385 10.2652% 35.04%); + --color-neutral-400: hsl(214.3153 13.944% 27.8698%); + --color-neutral-500: hsl(214.2857 19.6262% 20.9804%); + --color-neutral-600: hsl(214.2857 20.3782% 17.7128%); + --color-neutral-700: hsl(214.2857 21.4338% 14.5349%); + --color-neutral-800: hsl(214.2857 23.0159% 11.455%); + --color-neutral-900: hsl(214.2857 25.6311% 8.4834%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); +} + +@media (prefers-color-scheme: dark) { + :root { + color-scheme: dark; + --color-primary: hsl(234.8208 100% 72.6713%); + --color-secondary: hsl(313.3209 100% 66.1653%); + --color-accent: hsl(173.7346 100% 40.1728%); + --color-neutral: hsl(213.3333 17.6471% 20%); + --color-neutral-content: hsl(220 13.3758% 69.2157%); + --color-surface-100: hsl(212.3077 18.3099% 13.9216%); + --color-surface-200: hsl(212.7273 18.0328% 11.9608%); + --color-surface-300: hsl(213.3333 17.6471% 10%); + --color-surface-content: hsl(220 13.3758% 69.2157%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(236.4483 66.7205% 5.3866%); + --color-primary-50: hsl(229.7915 100% 84.0735%); + --color-primary-100: hsl(230.1859 100% 82.7145%); + --color-primary-200: hsl(231.0667 100% 80.0547%); + --color-primary-300: hsl(232.0983 100% 77.4828%); + --color-primary-400: hsl(233.327 100% 75.0147%); + --color-primary-500: hsl(234.8208 100% 72.6713%); + --color-primary-600: hsl(235.0704 70.3808% 64.2382%); + --color-primary-700: hsl(235.0704 47.9454% 54.6908%); + --color-primary-800: hsl(235.0704 40.46% 45.4378%); + --color-primary-900: hsl(235.0704 41.5282% 36.5104%); + --color-secondary-content: hsl(320.8908 83.2641% 5.2689%); + --color-secondary-50: hsl(314.3395 100% 83.432%); + --color-secondary-100: hsl(314.31 100% 81.8013%); + --color-secondary-200: hsl(314.212 100% 78.4165%); + --color-secondary-300: hsl(314.0445 100% 74.8016%); + --color-secondary-400: hsl(313.7722 100% 70.8191%); + --color-secondary-500: hsl(313.3209 100% 66.1653%); + --color-secondary-600: hsl(318.1553 84.2932% 60.7486%); + --color-secondary-700: hsl(318.1553 59.0977% 51.679%); + --color-secondary-800: hsl(318.1553 56.347% 42.889%); + --color-secondary-900: hsl(318.1553 57.9256% 34.4083%); + --color-accent-content: hsl(168.7443 100% 2.9908%); + --color-accent-50: hsl(171.1098 64.2687% 71.4638%); + --color-accent-100: hsl(171.4554 64.6409% 68.3324%); + --color-accent-200: hsl(172.2753 65.8475% 61.2424%); + --color-accent-300: hsl(173.5236 68.6512% 51.112%); + --color-accent-400: hsl(174.292 100% 41.2676%); + --color-accent-500: hsl(173.7346 100% 40.1728%); + --color-accent-600: hsl(173.6737 100% 34.8763%); + --color-accent-700: hsl(173.5935 100% 29.7251%); + --color-accent-800: hsl(173.484 100% 24.7328%); + --color-accent-900: hsl(173.3263 100% 19.9161%); + --color-neutral-50: hsl(213.4653 4.9421% 53.3722%); + --color-neutral-100: hsl(213.4565 5.0146% 49.4173%); + --color-neutral-200: hsl(213.4361 6.723% 41.6751%); + --color-neutral-300: hsl(213.4108 9.0416% 34.1738%); + --color-neutral-400: hsl(213.3782 12.3819% 26.9382%); + --color-neutral-500: hsl(213.3333 17.6471% 20%); + --color-neutral-600: hsl(213.3333 18.3577% 16.8534%); + --color-neutral-700: hsl(213.3333 19.3599% 13.7931%); + --color-neutral-800: hsl(213.3333 20.8717% 10.8272%); + --color-neutral-900: hsl(213.3333 23.3974% 7.9657%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + } +} + +[data-theme="light"] { + color-scheme: light; + --color-primary: hsl(257.4075 100% 50%); + --color-secondary: hsl(310.4453 100% 50%); + --color-secondary-content: hsl(320.0789 100% 98.6494%); + --color-accent: hsl(173.4835 100% 42.1865%); + --color-neutral: hsl(214.2857 19.6262% 20.9804%); + --color-neutral-content: hsl(212.3077 19.403% 86.8627%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-200: hsl(0 0% 94.902%); + --color-surface-300: hsl(180 1.9608% 90%); + --color-surface-content: hsl(215 27.907% 16.8627%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(227.6647 100% 91.0748%); + --color-primary-50: hsl(232.3457 100% 76.8157%); + --color-primary-100: hsl(233.4035 100% 74.9896%); + --color-primary-200: hsl(236.0867 100% 71.5789%); + --color-primary-300: hsl(239.9818 100% 68.5879%); + --color-primary-400: hsl(245.7714 100% 62.5712%); + --color-primary-500: hsl(257.4075 100% 50%); + --color-primary-600: hsl(256.3942 100% 45.2974%); + --color-primary-700: hsl(255.9702 100% 38.7195%); + --color-primary-800: hsl(255.3947 100% 32.3445%); + --color-primary-900: hsl(254.5739 100% 26.1938%); + --color-secondary-50: hsl(312.9534 100% 79.1139%); + --color-secondary-100: hsl(312.8775 100% 76.9231%); + --color-secondary-200: hsl(312.6258 100% 72.1652%); + --color-secondary-300: hsl(312.1478 100% 66.4927%); + --color-secondary-400: hsl(311.0379 100% 57.9643%); + --color-secondary-500: hsl(310.4453 100% 50%); + --color-secondary-600: hsl(314.516 100% 47.3052%); + --color-secondary-700: hsl(314.6511 100% 40.4525%); + --color-secondary-800: hsl(314.8343 100% 33.8111%); + --color-secondary-900: hsl(315.0952 100% 27.4033%); + --color-accent-content: hsl(168.722 100% 3.2602%); + --color-accent-50: hsl(171.3855 72.5307% 71.4464%); + --color-accent-100: hsl(171.7771 72.9012% 68.0855%); + --color-accent-200: hsl(172.7542 74.2685% 59.9573%); + --color-accent-300: hsl(174.6018 100% 43.9907%); + --color-accent-400: hsl(174.0311 100% 43.1035%); + --color-accent-500: hsl(173.4835 100% 42.1865%); + --color-accent-600: hsl(173.4232 100% 36.6415%); + --color-accent-700: hsl(173.3439 100% 31.2487%); + --color-accent-800: hsl(173.2358 100% 26.0221%); + --color-accent-900: hsl(173.0804 100% 20.9795%); + --color-neutral-50: hsl(214.3814 5.8279% 54.0221%); + --color-neutral-100: hsl(214.3741 5.7772% 50.1155%); + --color-neutral-200: hsl(214.3577 7.6767% 42.4628%); + --color-neutral-300: hsl(214.3385 10.2652% 35.04%); + --color-neutral-400: hsl(214.3153 13.944% 27.8698%); + --color-neutral-500: hsl(214.2857 19.6262% 20.9804%); + --color-neutral-600: hsl(214.2857 20.3782% 17.7128%); + --color-neutral-700: hsl(214.2857 21.4338% 14.5349%); + --color-neutral-800: hsl(214.2857 23.0159% 11.455%); + --color-neutral-900: hsl(214.2857 25.6311% 8.4834%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); +} + +[data-theme="dark"] { + color-scheme: dark; + --color-primary: hsl(234.8208 100% 72.6713%); + --color-secondary: hsl(313.3209 100% 66.1653%); + --color-accent: hsl(173.7346 100% 40.1728%); + --color-neutral: hsl(213.3333 17.6471% 20%); + --color-neutral-content: hsl(220 13.3758% 69.2157%); + --color-surface-100: hsl(212.3077 18.3099% 13.9216%); + --color-surface-200: hsl(212.7273 18.0328% 11.9608%); + --color-surface-300: hsl(213.3333 17.6471% 10%); + --color-surface-content: hsl(220 13.3758% 69.2157%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(236.4483 66.7205% 5.3866%); + --color-primary-50: hsl(229.7915 100% 84.0735%); + --color-primary-100: hsl(230.1859 100% 82.7145%); + --color-primary-200: hsl(231.0667 100% 80.0547%); + --color-primary-300: hsl(232.0983 100% 77.4828%); + --color-primary-400: hsl(233.327 100% 75.0147%); + --color-primary-500: hsl(234.8208 100% 72.6713%); + --color-primary-600: hsl(235.0704 70.3808% 64.2382%); + --color-primary-700: hsl(235.0704 47.9454% 54.6908%); + --color-primary-800: hsl(235.0704 40.46% 45.4378%); + --color-primary-900: hsl(235.0704 41.5282% 36.5104%); + --color-secondary-content: hsl(320.8908 83.2641% 5.2689%); + --color-secondary-50: hsl(314.3395 100% 83.432%); + --color-secondary-100: hsl(314.31 100% 81.8013%); + --color-secondary-200: hsl(314.212 100% 78.4165%); + --color-secondary-300: hsl(314.0445 100% 74.8016%); + --color-secondary-400: hsl(313.7722 100% 70.8191%); + --color-secondary-500: hsl(313.3209 100% 66.1653%); + --color-secondary-600: hsl(318.1553 84.2932% 60.7486%); + --color-secondary-700: hsl(318.1553 59.0977% 51.679%); + --color-secondary-800: hsl(318.1553 56.347% 42.889%); + --color-secondary-900: hsl(318.1553 57.9256% 34.4083%); + --color-accent-content: hsl(168.7443 100% 2.9908%); + --color-accent-50: hsl(171.1098 64.2687% 71.4638%); + --color-accent-100: hsl(171.4554 64.6409% 68.3324%); + --color-accent-200: hsl(172.2753 65.8475% 61.2424%); + --color-accent-300: hsl(173.5236 68.6512% 51.112%); + --color-accent-400: hsl(174.292 100% 41.2676%); + --color-accent-500: hsl(173.7346 100% 40.1728%); + --color-accent-600: hsl(173.6737 100% 34.8763%); + --color-accent-700: hsl(173.5935 100% 29.7251%); + --color-accent-800: hsl(173.484 100% 24.7328%); + --color-accent-900: hsl(173.3263 100% 19.9161%); + --color-neutral-50: hsl(213.4653 4.9421% 53.3722%); + --color-neutral-100: hsl(213.4565 5.0146% 49.4173%); + --color-neutral-200: hsl(213.4361 6.723% 41.6751%); + --color-neutral-300: hsl(213.4108 9.0416% 34.1738%); + --color-neutral-400: hsl(213.3782 12.3819% 26.9382%); + --color-neutral-500: hsl(213.3333 17.6471% 20%); + --color-neutral-600: hsl(213.3333 18.3577% 16.8534%); + --color-neutral-700: hsl(213.3333 19.3599% 13.7931%); + --color-neutral-800: hsl(213.3333 20.8717% 10.8272%); + --color-neutral-900: hsl(213.3333 23.3974% 7.9657%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); +} + +[data-theme="cupcake"] { + color-scheme: light; + --color-primary: hsl(183.0303 47.3684% 59.0196%); + --color-secondary: hsl(338.25 71.4286% 78.0392%); + --color-accent: hsl(39 84.1121% 58.0392%); + --color-neutral: hsl(280 46.4789% 13.9216%); + --color-surface-100: hsl(24 33.3333% 97.0588%); + --color-surface-200: hsl(26.6667 21.9512% 91.9608%); + --color-surface-300: hsl(22.5 14.2857% 89.0196%); + --color-surface-content: hsl(280 46.4789% 13.9216%); + --rounded-btn: 1.9rem; + --tab-border: 2px; + --tab-radius: 0.7rem; + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(183.592 61.9534% 3.5354%); + --color-primary-50: hsl(182.8135 45.0464% 78.3089%); + --color-primary-100: hsl(182.8508 45.1979% 76.2843%); + --color-primary-200: hsl(182.9191 45.5551% 72.1801%); + --color-primary-300: hsl(182.9757 46.0058% 67.9748%); + --color-primary-400: hsl(183.0156 46.5882% 63.6177%); + --color-primary-500: hsl(183.0303 47.3684% 59.0196%); + --color-primary-600: hsl(183.0303 34.7686% 51.0581%); + --color-primary-700: hsl(183.0303 33.9069% 43.3151%); + --color-primary-800: hsl(183.0303 34.7075% 35.8109%); + --color-primary-900: hsl(183.0303 35.8784% 28.5707%); + --color-secondary-content: hsl(338.3261 36.8805% 5.6774%); + --color-secondary-50: hsl(339.9637 77.8725% 88.3746%); + --color-secondary-100: hsl(339.7914 77.1042% 87.2641%); + --color-secondary-200: hsl(339.435 75.6078% 85.0159%); + --color-secondary-300: hsl(339.0611 74.1636% 82.7301%); + --color-secondary-400: hsl(338.667 72.7707% 80.4053%); + --color-secondary-500: hsl(338.25 71.4286% 78.0392%); + --color-secondary-600: hsl(338.25 42.6122% 67.7308%); + --color-secondary-700: hsl(338.25 28.0605% 57.7052%); + --color-secondary-800: hsl(338.25 20.9292% 47.9888%); + --color-secondary-900: hsl(338.25 21.4516% 38.6143%); + --color-accent-content: hsl(32.7716 89.276% 4.078%); + --color-accent-50: hsl(36.6302 84.5383% 79.2533%); + --color-accent-100: hsl(36.7295 84.3776% 77.2485%); + --color-accent-200: hsl(36.9903 84.0998% 73.1112%); + --color-accent-300: hsl(37.3729 83.9063% 68.7199%); + --color-accent-400: hsl(37.9652 83.8573% 63.8784%); + --color-accent-500: hsl(39 84.1121% 58.0392%); + --color-accent-600: hsl(39 62.1248% 50.1987%); + --color-accent-700: hsl(39 62.723% 42.5733%); + --color-accent-800: hsl(39 64.2304% 35.1831%); + --color-accent-900: hsl(39 66.4374% 28.053%); + --color-neutral-content: hsl(277.4916 8.9902% 81.0734%); + --color-neutral-50: hsl(277.9531 8.5356% 49.8233%); + --color-neutral-100: hsl(278.0513 10.0106% 45.5792%); + --color-neutral-200: hsl(278.2915 13.7729% 37.2757%); + --color-neutral-300: hsl(278.6202 19.2768% 29.2321%); + --color-neutral-400: hsl(279.1131 28.2712% 21.4582%); + --color-neutral-500: hsl(280 46.4789% 13.9216%); + --color-neutral-600: hsl(280 49.2159% 11.525%); + --color-neutral-700: hsl(280 53.2465% 9.1942%); + --color-neutral-800: hsl(279.7716 58.6676% 6.9821%); + --color-neutral-900: hsl(278.4947 63.6173% 4.9951%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); +} + +[data-theme="bumblebee"] { + color-scheme: light; + --color-primary: hsl(51.1671 100% 50%); + --color-primary-content: hsl(48.6495 31.4788% 22.6077%); + --color-secondary: hsl(38.6454 100% 50%); + --color-secondary-content: hsl(34.0814 58.921% 22.9243%); + --color-accent: hsl(28.7938 100% 65.8965%); + --color-neutral: hsl(249.9215 99.0127% 6.9007%); + --color-surface-100: hsl(180 100% 100%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-50: hsl(50.1329 100% 77.853%); + --color-primary-100: hsl(50.174 100% 75.4365%); + --color-primary-200: hsl(50.3764 100% 70.0218%); + --color-primary-300: hsl(50.8957 100% 62.9194%); + --color-primary-400: hsl(52.2272 100% 50%); + --color-primary-500: hsl(51.1671 100% 50%); + --color-primary-600: hsl(49.7902 100% 44.6334%); + --color-primary-700: hsl(49.6894 100% 38.1464%); + --color-primary-800: hsl(49.5526 100% 31.8595%); + --color-primary-900: hsl(49.3574 100% 25.7938%); + --color-secondary-50: hsl(35.3928 100% 77.3594%); + --color-secondary-100: hsl(35.514 100% 75.0514%); + --color-secondary-200: hsl(35.9342 100% 70.0664%); + --color-secondary-300: hsl(36.8072 100% 64.0955%); + --color-secondary-400: hsl(39.4957 100% 53.7492%); + --color-secondary-500: hsl(38.6454 100% 50%); + --color-secondary-600: hsl(36.7251 100% 45.5675%); + --color-secondary-700: hsl(36.5002 100% 38.9527%); + --color-secondary-800: hsl(36.1949 100% 32.5418%); + --color-secondary-900: hsl(35.7596 100% 26.3565%); + --color-accent-content: hsl(21.2807 83.2924% 5.0996%); + --color-accent-50: hsl(27.8466 100% 82.4383%); + --color-accent-100: hsl(27.8448 100% 80.7792%); + --color-accent-200: hsl(27.8857 100% 77.3881%); + --color-accent-300: hsl(28.0125 100% 73.8545%); + --color-accent-400: hsl(28.2784 100% 70.0873%); + --color-accent-500: hsl(28.7938 100% 65.8965%); + --color-accent-600: hsl(26.6421 79.7786% 59.5008%); + --color-accent-700: hsl(26.6421 56.4524% 50.602%); + --color-accent-800: hsl(26.6421 56.2193% 41.9775%); + --color-accent-900: hsl(26.6421 57.8295% 33.6566%); + --color-neutral-content: hsl(235.0933 11.0335% 79.1266%); + --color-neutral-50: hsl(236.3956 12.1636% 44.9745%); + --color-neutral-100: hsl(236.7583 14.3576% 40.3892%); + --color-neutral-200: hsl(237.8082 20.0825% 31.485%); + --color-neutral-300: hsl(239.7177 28.7822% 22.991%); + --color-neutral-400: hsl(243.8584 48.1176% 14.5744%); + --color-neutral-500: hsl(249.9215 99.0127% 6.9007%); + --color-neutral-600: hsl(248.7387 99.1294% 5.7048%); + --color-neutral-700: hsl(247.6985 99.2322% 4.5433%); + --color-neutral-800: hsl(246.8474 99.3165% 3.4191%); + --color-neutral-900: hsl(246.3091 99.3699% 2.3356%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(223.8136 0.0001% 90.851%); + --color-surface-300: hsl(223.8136 0% 82.4954%); + --color-surface-content: hsl(223.8136 0% 8.6104%); +} + +[data-theme="emerald"] { + color-scheme: light; + --color-primary: hsl(141.1765 50% 60%); + --color-primary-content: hsl(151.1111 28.4211% 18.6275%); + --color-secondary: hsl(218.8776 96.0784% 60%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent: hsl(10.4895 88.8199% 68.4314%); + --color-accent-content: hsl(0 0% 0%); + --color-neutral: hsl(219.2308 20.3125% 25.098%); + --color-neutral-content: hsl(210 20% 98.0392%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-content: hsl(219.2308 20.3125% 25.098%); + --animation-btn: 0; + --animation-input: 0; + --btn-focus-scale: 1; + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-50: hsl(136.9122 48.8676% 79.068%); + --color-primary-100: hsl(137.241 48.887% 77.0872%); + --color-primary-200: hsl(137.9749 48.9801% 73.057%); + --color-primary-300: hsl(138.8376 49.1664% 68.9068%); + --color-primary-400: hsl(139.8774 49.4843% 64.5848%); + --color-primary-500: hsl(141.1765 50% 60%); + --color-primary-600: hsl(141.1765 36.4625% 51.9175%); + --color-primary-700: hsl(141.1765 34.3462% 44.0569%); + --color-primary-800: hsl(141.1765 35.1432% 36.4386%); + --color-primary-900: hsl(141.1765 36.3078% 29.0884%); + --color-secondary-50: hsl(217.7582 100% 78.5099%); + --color-secondary-100: hsl(217.9342 100% 76.5881%); + --color-secondary-200: hsl(218.2972 100% 72.7424%); + --color-secondary-300: hsl(218.6097 99.4576% 68.7869%); + --color-secondary-400: hsl(218.7788 97.7141% 64.5195%); + --color-secondary-500: hsl(218.8776 96.0784% 60%); + --color-secondary-600: hsl(218.8776 70.0652% 51.9175%); + --color-secondary-700: hsl(218.8776 65.9986% 44.0569%); + --color-secondary-800: hsl(218.8776 67.53% 36.4386%); + --color-secondary-900: hsl(218.8776 69.7678% 29.0884%); + --color-accent-50: hsl(11.1276 99.7017% 83.5571%); + --color-accent-100: hsl(11.0807 98.3642% 81.9586%); + --color-accent-200: hsl(10.9696 95.7901% 78.7075%); + --color-accent-300: hsl(10.8343 93.3439% 75.3784%); + --color-accent-400: hsl(10.6739 91.0205% 71.9599%); + --color-accent-500: hsl(10.4895 88.8199% 68.4314%); + --color-accent-600: hsl(10.4895 60.4039% 59.3085%); + --color-accent-700: hsl(10.4895 42.8018% 50.436%); + --color-accent-800: hsl(10.4895 42.9118% 41.8371%); + --color-accent-900: hsl(10.4895 44.1451% 33.5407%); + --color-neutral-50: hsl(219.0029 7.5926% 56.6636%); + --color-neutral-100: hsl(219.0128 7.5265% 52.9589%); + --color-neutral-200: hsl(219.039 8.7761% 45.6856%); + --color-neutral-300: hsl(219.0777 11.4776% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1166% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3125% 25.098%); + --color-neutral-600: hsl(219.2308 20.959% 21.3223%); + --color-neutral-700: hsl(219.2308 21.8532% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1644% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2595% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(223.8136 0.0001% 90.851%); + --color-surface-300: hsl(223.8136 0% 82.4954%); +} + +[data-theme="corporate"] { + color-scheme: light; + --color-primary: hsl(228.8755 100% 65.0987%); + --color-secondary: hsl(214.9091 26.3158% 59.0196%); + --color-accent: hsl(154.2 49.0196% 60%); + --color-neutral: hsl(233.3333 27.2727% 12.9412%); + --color-neutral-content: hsl(210 38.4615% 94.902%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-content: hsl(233.3333 27.2727% 12.9412%); + --rounded-box: 0.25rem; + --rounded-btn: 0.125rem; + --rounded-badge: 0.125rem; + --tab-radius: 0.25rem; + --animation-btn: 0; + --animation-input: 0; + --btn-focus-scale: 1; + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(233.8621 84.3302% 4.8956%); + --color-primary-50: hsl(223.386 100% 79.6774%); + --color-primary-100: hsl(223.7755 100% 77.9322%); + --color-primary-200: hsl(224.6622 100% 74.5121%); + --color-primary-300: hsl(225.7388 100% 71.2051%); + --color-primary-400: hsl(227.0922 100% 68.0469%); + --color-primary-500: hsl(228.8755 100% 65.0987%); + --color-primary-600: hsl(229.3476 75.6093% 57.7428%); + --color-primary-700: hsl(229.3476 56.1811% 49.0846%); + --color-primary-800: hsl(229.3476 57.3484% 40.6934%); + --color-primary-900: hsl(229.3476 59.0442% 32.5975%); + --color-secondary-content: hsl(218.0454 38.1404% 3.3095%); + --color-secondary-50: hsl(214.9523 27.3495% 77.0969%); + --color-secondary-100: hsl(214.9469 27.2411% 75.0581%); + --color-secondary-200: hsl(214.9366 27.0194% 71.003%); + --color-secondary-300: hsl(214.927 26.7912% 66.9781%); + --color-secondary-400: hsl(214.9179 26.5566% 62.9836%); + --color-secondary-500: hsl(214.9091 26.3158% 59.0196%); + --color-secondary-600: hsl(214.9091 19.3159% 51.0581%); + --color-secondary-700: hsl(214.9091 18.8372% 43.3151%); + --color-secondary-800: hsl(214.9091 19.2819% 35.8109%); + --color-secondary-900: hsl(214.9091 19.9325% 28.5707%); + --color-accent-content: hsl(149.8793 61.5121% 3.6425%); + --color-accent-50: hsl(150.5849 47.4928% 79.03%); + --color-accent-100: hsl(150.8798 47.5557% 77.0501%); + --color-accent-200: hsl(151.5279 47.7361% 73.0236%); + --color-accent-300: hsl(152.2721 48.0103% 68.8804%); + --color-accent-400: hsl(153.1448 48.4163% 64.569%); + --color-accent-500: hsl(154.2 49.0196% 60%); + --color-accent-600: hsl(154.2 35.7475% 51.9175%); + --color-accent-700: hsl(154.2 33.6728% 44.0569%); + --color-accent-800: hsl(154.2 34.4541% 36.4386%); + --color-accent-900: hsl(154.2 35.5958% 29.0884%); + --color-neutral-50: hsl(231.2026 5.275% 48.6833%); + --color-neutral-100: hsl(231.2834 6.1879% 44.3781%); + --color-neutral-200: hsl(231.4942 8.5092% 35.9872%); + --color-neutral-300: hsl(231.8106 11.8708% 27.9174%); + --color-neutral-400: hsl(232.3322 17.2238% 20.2136%); + --color-neutral-500: hsl(233.3333 27.2727% 12.9412%); + --color-neutral-600: hsl(233.3333 29.0082% 10.6656%); + --color-neutral-700: hsl(233.3333 31.5923% 8.4525%); + --color-neutral-800: hsl(233.3333 35.8271% 6.3076%); + --color-neutral-900: hsl(234.3645 41.069% 4.3255%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(223.8136 0.0001% 90.851%); + --color-surface-300: hsl(223.8136 0% 82.4954%); +} + +[data-theme="synthwave"] { + color-scheme: dark; + --color-primary: hsl(320.7273 69.6203% 69.0196%); + --color-secondary: hsl(197.0323 86.5922% 64.902%); + --color-accent: hsl(49.4271 100% 50%); + --color-neutral: hsl(253 58.8235% 20%); + --color-neutral-content: hsl(260 60% 98.0392%); + --color-surface-100: hsl(253.3333 58.4416% 15.098%); + --color-surface-content: hsl(260 60% 98.0392%); + --color-info: hsl(199.125 86.9565% 63.9216%); + --color-info-content: hsl(257.4545 63.2184% 17.0588%); + --color-success: hsl(168.0992 74.2331% 68.0392%); + --color-success-content: hsl(257.4545 63.2184% 17.0588%); + --color-warning: hsl(46.6667 75% 67.0588%); + --color-warning-content: hsl(257.4545 63.2184% 17.0588%); + --color-danger: hsl(10.3448 75.3247% 69.8039%); + --color-danger-content: hsl(257.4545 63.2184% 17.0588%); + --color-primary-content: hsl(322.2472 57.6268% 4.6639%); + --color-primary-50: hsl(323.4709 77.1979% 83.964%); + --color-primary-100: hsl(323.1958 76.2529% 82.3979%); + --color-primary-200: hsl(322.6282 74.4376% 79.2039%); + --color-primary-300: hsl(322.0328 72.7232% 75.9199%); + --color-primary-400: hsl(321.4025 71.1141% 72.5322%); + --color-primary-500: hsl(320.7273 69.6203% 69.0196%); + --color-primary-600: hsl(320.7273 47.0609% 59.8241%); + --color-primary-700: hsl(320.7273 33.2228% 50.881%); + --color-primary-800: hsl(320.7273 32.7146% 42.2137%); + --color-primary-900: hsl(320.7273 33.6462% 33.8513%); + --color-secondary-content: hsl(199.8597 77.5595% 4.4948%); + --color-secondary-50: hsl(198.6286 87.5707% 82.3884%); + --color-secondary-100: hsl(198.5299 87.3898% 80.6702%); + --color-secondary-200: hsl(198.2955 87.065% 77.1293%); + --color-secondary-300: hsl(197.995 86.8027% 73.4012%); + --color-secondary-400: hsl(197.5953 86.6285% 69.3901%); + --color-secondary-500: hsl(197.0323 86.5922% 64.902%); + --color-secondary-600: hsl(197.0323 60.8465% 56.2146%); + --color-secondary-700: hsl(197.0323 48.1402% 47.7657%); + --color-secondary-800: hsl(197.0323 49.1687% 39.5772%); + --color-secondary-900: hsl(197.0323 50.6649% 31.677%); + --color-accent-content: hsl(42.0309 100% 4.4636%); + --color-accent-50: hsl(47.8889 100% 77.9546%); + --color-accent-100: hsl(47.953 100% 75.5857%); + --color-accent-200: hsl(48.21 100% 70.3294%); + --color-accent-300: hsl(48.7969 100% 63.6303%); + --color-accent-400: hsl(50.659 100% 50%); + --color-accent-500: hsl(49.4271 100% 50%); + --color-accent-600: hsl(48.1946 100% 44.5287%); + --color-accent-700: hsl(48.0778 100% 38.0561%); + --color-accent-800: hsl(47.9192 100% 31.783%); + --color-accent-900: hsl(47.6929 100% 25.7307%); + --color-neutral-50: hsl(242.6109 16.2414% 54.6966%); + --color-neutral-100: hsl(243.0522 16.0433% 50.7656%); + --color-neutral-200: hsl(244.1805 20.7248% 42.997%); + --color-neutral-300: hsl(245.814 27.8394% 35.3399%); + --color-neutral-400: hsl(248.3741 38.6467% 27.7449%); + --color-neutral-500: hsl(253 58.8235% 20%); + --color-neutral-600: hsl(253 61.1923% 16.8534%); + --color-neutral-700: hsl(253 64.5328% 13.7931%); + --color-neutral-800: hsl(252.9101 69.3474% 10.8416%); + --color-neutral-900: hsl(251.6793 74.2761% 8.1355%); + --color-info-50: hsl(200.8937 88.4055% 81.8757%); + --color-info-100: hsl(200.7867 88.1686% 80.1116%); + --color-info-200: hsl(200.5322 87.7336% 76.4788%); + --color-info-300: hsl(200.2037 87.3638% 72.6563%); + --color-info-400: hsl(199.7613 87.0865% 68.5421%); + --color-info-500: hsl(199.125 86.9565% 63.9216%); + --color-info-600: hsl(199.125 61.6002% 55.3552%); + --color-info-700: hsl(199.125 50.477% 47.0239%); + --color-info-800: hsl(199.125 51.5728% 38.9495%); + --color-info-900: hsl(199.125 53.1682% 31.1592%); + --color-success-50: hsl(165.7904 73.4139% 84.0541%); + --color-success-100: hsl(166.0004 73.4102% 82.4735%); + --color-success-200: hsl(166.4461 73.4546% 79.2076%); + --color-success-300: hsl(166.9337 73.5842% 75.7654%); + --color-success-400: hsl(167.4771 73.8276% 72.0809%); + --color-success-500: hsl(168.0992 74.2331% 68.0392%); + --color-success-600: hsl(168.0992 50.6828% 58.9647%); + --color-success-700: hsl(168.0992 36.0014% 50.1393%); + --color-success-800: hsl(168.0992 36.5293% 41.586%); + --color-success-900: hsl(168.0992 37.5856% 33.3336%); + --color-warning-50: hsl(46.4369 73.7305% 82.6664%); + --color-warning-100: hsl(46.4224 73.8225% 81.039%); + --color-warning-200: hsl(46.4149 74.0316% 77.7326%); + --color-warning-300: hsl(46.4432 74.2841% 74.3334%); + --color-warning-400: hsl(46.5203 74.5973% 70.7991%); + --color-warning-500: hsl(46.6667 75% 67.0588%); + --color-warning-600: hsl(46.6667 51.6945% 58.1053%); + --color-warning-700: hsl(46.6667 37.8406% 49.3975%); + --color-warning-800: hsl(46.6667 38.6217% 40.9582%); + --color-warning-900: hsl(46.6667 39.7562% 32.8159%); + --color-danger-50: hsl(10.8299 82.947% 83.9235%); + --color-danger-100: hsl(10.7951 82.039% 82.3996%); + --color-danger-200: hsl(10.7126 80.2701% 79.3204%); + --color-danger-300: hsl(10.6114 78.5618% 76.1974%); + --color-danger-400: hsl(10.4895 76.9131% 73.0273%); + --color-danger-500: hsl(10.3448 75.3247% 69.8039%); + --color-danger-600: hsl(10.3448 50.492% 60.5117%); + --color-danger-700: hsl(10.3448 35.4633% 51.4744%); + --color-danger-800: hsl(10.3448 34.0935% 42.7159%); + --color-danger-900: hsl(10.3448 35.0525% 34.2655%); + --color-surface-200: hsl(253.3333 60.5355% 13.3118%); + --color-surface-300: hsl(253.3333 63.0075% 11.6804%); +} + +[data-theme="retro"] { + color-scheme: light; + --color-primary: hsl(2.6667 73.7705% 76.0784%); + --color-primary-content: hsl(345 5.2632% 14.902%); + --color-secondary: hsl(144.6154 27.2727% 71.9608%); + --color-secondary-content: hsl(345 5.2632% 14.902%); + --color-accent: hsl(24 66.6667% 58.8235%); + --color-accent-content: hsl(345 5.2632% 14.902%); + --color-neutral: hsl(340 6.9767% 16.8627%); + --color-neutral-content: hsl(43.2 40.9836% 88.0392%); + --color-surface-100: hsl(44.1176 47.2222% 85.8824%); + --color-surface-200: hsl(45 47.0588% 80%); + --color-surface-300: hsl(44.3077 47.4453% 73.1373%); + --color-surface-content: hsl(345 5.2632% 14.902%); + --color-info: hsl(221.2121 83.1933% 53.3333%); + --color-success: hsl(142.1277 76.2162% 36.2745%); + --color-warning: hsl(32.1327 94.6188% 43.7255%); + --color-danger: hsl(3.3252 87.4903% 61.7362%); + --rounded-box: 0.4rem; + --rounded-btn: 0.4rem; + --rounded-badge: 0.4rem; + --tab-radius: 0.4rem; + --color-primary-50: hsl(3.6837 81.4365% 87.2108%); + --color-primary-100: hsl(3.5985 80.5338% 86.0016%); + --color-primary-200: hsl(3.4105 78.7692% 83.562%); + --color-primary-300: hsl(3.1958 77.0559% 81.0946%); + --color-primary-400: hsl(2.9498 75.3906% 78.6%); + --color-primary-500: hsl(2.6667 73.7705% 76.0784%); + --color-primary-600: hsl(2.6667 45.5144% 66.0119%); + --color-primary-700: hsl(2.6667 30.4983% 56.2217%); + --color-primary-800: hsl(2.6667 24.1779% 46.7334%); + --color-primary-900: hsl(2.6667 24.7981% 37.5789%); + --color-secondary-50: hsl(143.494 27.2321% 84.5322%); + --color-secondary-100: hsl(143.6018 27.2295% 83.1334%); + --color-secondary-200: hsl(143.8285 27.2286% 80.3383%); + --color-secondary-300: hsl(144.0715 27.2347% 77.5454%); + --color-secondary-400: hsl(144.333 27.2489% 74.7534%); + --color-secondary-500: hsl(144.6154 27.2727% 71.9608%); + --color-secondary-600: hsl(144.6154 17.8294% 62.4024%); + --color-secondary-700: hsl(144.6154 12.3379% 53.1063%); + --color-secondary-800: hsl(144.6154 11.1035% 44.0969%); + --color-secondary-900: hsl(144.6154 11.4058% 35.4045%); + --color-accent-50: hsl(22.7677 70.4023% 78.1888%); + --color-accent-100: hsl(22.8402 69.917% 76.1434%); + --color-accent-200: hsl(23.0105 68.982% 72.0018%); + --color-accent-300: hsl(23.232 68.1074% 67.7706%); + --color-accent-400: hsl(23.5391 67.3191% 63.4061%); + --color-accent-500: hsl(24 66.6667% 58.8235%); + --color-accent-600: hsl(24 48.9957% 50.8862%); + --color-accent-700: hsl(24 48.1139% 43.1668%); + --color-accent-800: hsl(24 49.2539% 35.6853%); + --color-accent-900: hsl(24 50.9217% 28.4671%); + --color-neutral-50: hsl(340.6798 1.6296% 51.2796%); + --color-neutral-100: hsl(340.6417 1.8068% 47.1695%); + --color-neutral-200: hsl(340.5493 2.4512% 39.1408%); + --color-neutral-300: hsl(340.4265 3.351% 31.3895%); + --color-neutral-400: hsl(340.2553 4.7018% 23.9487%); + --color-neutral-500: hsl(340 6.9767% 16.8627%); + --color-neutral-600: hsl(340 7.3125% 14.1033%); + --color-neutral-700: hsl(340 7.7946% 11.4195%); + --color-neutral-800: hsl(340 8.542% 8.8185%); + --color-neutral-900: hsl(340 9.8471% 6.309%); + --color-info-content: hsl(218.9847 98.1914% 91.1191%); + --color-info-50: hsl(219.5223 90.8982% 75.1352%); + --color-info-100: hsl(219.6486 89.9471% 72.8089%); + --color-info-200: hsl(219.9484 88.1075% 68.1172%); + --color-info-300: hsl(220.3175 86.3541% 63.3558%); + --color-info-400: hsl(220.756 84.7001% 58.4762%); + --color-info-500: hsl(221.2121 83.1933% 53.3333%); + --color-info-600: hsl(221.2121 73.8664% 46.0735%); + --color-info-700: hsl(221.2121 75.2921% 39.0129%); + --color-info-800: hsl(221.2121 77.2709% 32.17%); + --color-info-900: hsl(221.2121 80.1841% 25.5679%); + --color-success-content: hsl(130.1256 95.7127% 1.9343%); + --color-success-50: hsl(130.3106 37.672% 68.7269%); + --color-success-100: hsl(130.8008 37.753% 65.7761%); + --color-success-200: hsl(131.9998 38.0525% 59.7265%); + --color-success-300: hsl(133.6564 38.6495% 53.3423%); + --color-success-400: hsl(136.2425 46.3769% 46.2272%); + --color-success-500: hsl(142.1277 76.2162% 36.2745%); + --color-success-600: hsl(142.1277 77.8784% 31.1197%); + --color-success-700: hsl(142.1277 80.1246% 26.1063%); + --color-success-800: hsl(142.117 83.2701% 21.2525%); + --color-success-900: hsl(141.7625 86.5918% 16.6991%); + --color-warning-content: hsl(17.1667 99.4327% 3.3181%); + --color-warning-50: hsl(25.8631 74.2191% 73.8529%); + --color-warning-100: hsl(26.0117 73.723% 71.3345%); + --color-warning-200: hsl(26.407 72.8234% 66.1392%); + --color-warning-300: hsl(27.0339 72.1185% 60.5933%); + --color-warning-400: hsl(28.2027 71.8262% 54.2587%); + --color-warning-500: hsl(32.1327 94.6188% 43.7255%); + --color-warning-600: hsl(32.0048 95.4642% 37.8169%); + --color-warning-700: hsl(31.7888 96.25% 32.1253%); + --color-warning-800: hsl(31.4433 96.9725% 26.6578%); + --color-warning-900: hsl(30.8928 97.6278% 21.425%); + --color-danger-content: hsl(1.5684 84.471% 4.3206%); + --color-danger-50: hsl(6.645 100% 80.3116%); + --color-danger-100: hsl(6.3908 100% 78.5508%); + --color-danger-200: hsl(5.9013 97.1794% 74.6701%); + --color-danger-300: hsl(5.2994 93.7104% 70.5565%); + --color-danger-400: hsl(4.4885 90.4774% 66.2706%); + --color-danger-500: hsl(3.3252 87.4903% 61.7362%); + --color-danger-600: hsl(3.3252 63.0279% 53.4395%); + --color-danger-700: hsl(3.3252 55.8261% 45.3704%); + --color-danger-800: hsl(3.3252 57.0831% 37.5502%); + --color-danger-900: hsl(3.3252 58.917% 30.0052%); +} + +[data-theme="cyberpunk"] { + color-scheme: light; + fontfamily: + ui-monospace, + SFMono-Regular, + Menlo, + Monaco, + Consolas, + Liberation Mono, + Courier New, + monospace; + --color-primary: hsl(340.8799 100% 69.8833%); + --color-secondary: hsl(185.3347 100% 50%); + --color-accent: hsl(278.9515 100% 72.6993%); + --color-neutral: hsl(227.154 55.502% 14.9159%); + --color-neutral-content: hsl(55.763 100% 64.174%); + --color-surface-100: hsl(55.763 100% 64.174%); + --rounded-box: 0; + --rounded-btn: 0; + --rounded-badge: 0; + --tab-radius: 0; + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(346.8024 75.2266% 5.4755%); + --color-primary-50: hsl(344.7937 100% 84.5824%); + --color-primary-100: hsl(344.4947 100% 83.1034%); + --color-primary-200: hsl(343.8257 100% 80.0716%); + --color-primary-300: hsl(343.0366 100% 76.9079%); + --color-primary-400: hsl(342.0814 100% 73.5494%); + --color-primary-500: hsl(340.8799 100% 69.8833%); + --color-primary-600: hsl(342.9615 81.8536% 63.8065%); + --color-primary-700: hsl(342.9615 55.9738% 54.3182%); + --color-primary-800: hsl(342.9615 47.9562% 45.1225%); + --color-primary-900: hsl(342.9615 49.2314% 36.2503%); + --color-secondary-content: hsl(188.6497 100% 4.3357%); + --color-secondary-50: hsl(185.2602 100% 76.7471%); + --color-secondary-100: hsl(185.2286 100% 73.9042%); + --color-secondary-200: hsl(185.0291 100% 66.961%); + --color-secondary-300: hsl(184.1125 100% 51.9055%); + --color-secondary-400: hsl(184.6264 100% 50%); + --color-secondary-500: hsl(185.3347 100% 50%); + --color-secondary-600: hsl(185.6259 100% 43.6904%); + --color-secondary-700: hsl(185.6826 100% 37.3325%); + --color-secondary-800: hsl(185.7597 100% 31.1707%); + --color-secondary-900: hsl(185.8697 100% 25.2257%); + --color-accent-content: hsl(275.3124 66.7705% 5.409%); + --color-accent-50: hsl(278.3746 100% 85.6921%); + --color-accent-100: hsl(278.3913 100% 84.3414%); + --color-accent-200: hsl(278.4507 100% 81.593%); + --color-accent-300: hsl(278.5533 100% 78.7624%); + --color-accent-400: hsl(278.713 100% 75.8158%); + --color-accent-500: hsl(278.9515 100% 72.6993%); + --color-accent-600: hsl(276.8801 70.9879% 64.3939%); + --color-accent-700: hsl(276.8801 48.2916% 54.8252%); + --color-accent-800: hsl(276.8801 40.5299% 45.5515%); + --color-accent-900: hsl(276.8801 41.5972% 36.6042%); + --color-neutral-50: hsl(223.8431 12.0156% 50.1588%); + --color-neutral-100: hsl(223.942 13.9346% 45.9467%); + --color-neutral-200: hsl(224.2145 18.9277% 37.715%); + --color-neutral-300: hsl(224.6551 25.9706% 29.7651%); + --color-neutral-400: hsl(225.4462 36.7496% 22.1398%); + --color-neutral-500: hsl(227.154 55.502% 14.9159%); + --color-neutral-600: hsl(227.154 58.5406% 12.3967%); + --color-neutral-700: hsl(227.1673 62.9432% 9.9483%); + --color-neutral-800: hsl(228.0532 67.8056% 7.6712%); + --color-neutral-900: hsl(230.2087 72.2472% 5.604%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(55.2439 79.4658% 58.4392%); + --color-surface-300: hsl(55.2439 64.0317% 52.8944%); + --color-surface-content: hsl(54.2672 85.597% 4.6878%); +} + +[data-theme="valentine"] { + color-scheme: light; + --color-primary: hsl(353.2258 73.8095% 67.0588%); + --color-secondary: hsl(254.1176 86.4407% 76.8627%); + --color-accent: hsl(181.5584 33.6245% 55.098%); + --color-neutral: hsl(336 42.8571% 48.0392%); + --color-neutral-content: hsl(318.4615 46.4286% 89.0196%); + --color-surface-100: hsl(318.9474 65.5172% 94.3137%); + --color-surface-content: hsl(343.6364 38.4615% 28.0392%); + --color-info: hsl(221.2121 83.1933% 53.3333%); + --color-success: hsl(142.1277 76.2162% 36.2745%); + --color-warning: hsl(32.1327 94.6188% 43.7255%); + --color-danger: hsl(4.3168 100% 67.8206%); + --rounded-btn: 1.9rem; + --tab-radius: 0.7rem; + --color-primary-content: hsl(355.2354 65.019% 4.5186%); + --color-primary-50: hsl(356.3783 84.5787% 83.2964%); + --color-primary-100: hsl(356.1335 83.2065% 81.6242%); + --color-primary-200: hsl(355.5849 80.5941% 78.1944%); + --color-primary-300: hsl(354.9399 78.1543% 74.6397%); + --color-primary-400: hsl(354.1687 75.8889% 70.9395%); + --color-primary-500: hsl(353.2258 73.8095% 67.0588%); + --color-primary-600: hsl(353.2258 50.874% 58.1053%); + --color-primary-700: hsl(353.2258 37.2399% 49.3975%); + --color-primary-800: hsl(353.2258 38.0087% 40.9582%); + --color-primary-900: hsl(353.2258 39.1251% 32.8159%); + --color-secondary-content: hsl(253.3704 47.3508% 5.5587%); + --color-secondary-50: hsl(251.2403 93.2239% 87.848%); + --color-secondary-100: hsl(251.5088 92.3994% 86.6789%); + --color-secondary-200: hsl(252.0792 90.8044% 84.3054%); + --color-secondary-300: hsl(252.6989 89.2797% 81.8819%); + --color-secondary-400: hsl(253.3754 87.825% 79.4034%); + --color-secondary-500: hsl(254.1176 86.4407% 76.8627%); + --color-secondary-600: hsl(254.1176 52.648% 66.6995%); + --color-secondary-700: hsl(254.1176 35.0397% 56.8151%); + --color-secondary-800: hsl(254.1176 27.1103% 47.2355%); + --color-secondary-900: hsl(254.1176 27.7981% 37.9931%); + --color-accent-content: hsl(181.9361 54.2036% 2.9988%); + --color-accent-50: hsl(181.1201 31.9936% 75.5961%); + --color-accent-100: hsl(181.172 32.0993% 73.3719%); + --color-accent-200: hsl(181.2752 32.3497% 68.9032%); + --color-accent-300: hsl(181.3759 32.667% 64.391%); + --color-accent-400: hsl(181.4716 33.0775% 59.8058%); + --color-accent-500: hsl(181.5584 33.6245% 55.098%); + --color-accent-600: hsl(181.5584 27.7927% 47.6204%); + --color-accent-700: hsl(181.5584 28.3113% 40.3481%); + --color-accent-800: hsl(181.5584 29.0302% 33.2999%); + --color-accent-900: hsl(181.5584 30.0861% 26.4998%); + --color-neutral-50: hsl(340.521 44.3687% 72.4144%); + --color-neutral-100: hsl(340.1773 43.7625% 69.8222%); + --color-neutral-200: hsl(339.4108 42.5861% 64.5785%); + --color-neutral-300: hsl(338.507 41.4744% 59.2357%); + --color-neutral-400: hsl(337.4068 40.4623% 53.7516%); + --color-neutral-500: hsl(336 42.8571% 48.0392%); + --color-neutral-600: hsl(336 43.5592% 41.4327%); + --color-neutral-700: hsl(336 44.4961% 35.0074%); + --color-neutral-800: hsl(336 45.8033% 28.7803%); + --color-neutral-900: hsl(336 47.7421% 22.7723%); + --color-info-content: hsl(218.9847 98.1914% 91.1191%); + --color-info-50: hsl(219.5223 90.8982% 75.1352%); + --color-info-100: hsl(219.6486 89.9471% 72.8089%); + --color-info-200: hsl(219.9484 88.1075% 68.1172%); + --color-info-300: hsl(220.3175 86.3541% 63.3558%); + --color-info-400: hsl(220.756 84.7001% 58.4762%); + --color-info-500: hsl(221.2121 83.1933% 53.3333%); + --color-info-600: hsl(221.2121 73.8664% 46.0735%); + --color-info-700: hsl(221.2121 75.2921% 39.0129%); + --color-info-800: hsl(221.2121 77.2709% 32.17%); + --color-info-900: hsl(221.2121 80.1841% 25.5679%); + --color-success-content: hsl(130.1256 95.7127% 1.9343%); + --color-success-50: hsl(130.3106 37.672% 68.7269%); + --color-success-100: hsl(130.8008 37.753% 65.7761%); + --color-success-200: hsl(131.9998 38.0525% 59.7265%); + --color-success-300: hsl(133.6564 38.6495% 53.3423%); + --color-success-400: hsl(136.2425 46.3769% 46.2272%); + --color-success-500: hsl(142.1277 76.2162% 36.2745%); + --color-success-600: hsl(142.1277 77.8784% 31.1197%); + --color-success-700: hsl(142.1277 80.1246% 26.1063%); + --color-success-800: hsl(142.117 83.2701% 21.2525%); + --color-success-900: hsl(141.7625 86.5918% 16.6991%); + --color-warning-content: hsl(17.1667 99.4327% 3.3181%); + --color-warning-50: hsl(25.8631 74.2191% 73.8529%); + --color-warning-100: hsl(26.0117 73.723% 71.3345%); + --color-warning-200: hsl(26.407 72.8234% 66.1392%); + --color-warning-300: hsl(27.0339 72.1185% 60.5933%); + --color-warning-400: hsl(28.2027 71.8262% 54.2587%); + --color-warning-500: hsl(32.1327 94.6188% 43.7255%); + --color-warning-600: hsl(32.0048 95.4642% 37.8169%); + --color-warning-700: hsl(31.7888 96.25% 32.1253%); + --color-warning-800: hsl(31.4433 96.9725% 26.6578%); + --color-warning-900: hsl(30.8928 97.6278% 21.425%); + --color-danger-content: hsl(2.2254 79.7261% 5.3196%); + --color-danger-50: hsl(7.875 100% 82.4603%); + --color-danger-100: hsl(7.5951 100% 80.8734%); + --color-danger-200: hsl(6.9757 100% 77.6885%); + --color-danger-300: hsl(6.2552 100% 74.4738%); + --color-danger-400: hsl(5.3935 100% 71.2011%); + --color-danger-500: hsl(4.3168 100% 67.8206%); + --color-danger-600: hsl(3.8876 82.183% 61.887%); + --color-danger-700: hsl(3.8876 57.1084% 52.6615%); + --color-danger-800: hsl(3.8876 52.3288% 43.7204%); + --color-danger-900: hsl(3.8876 53.7661% 35.094%); + --color-surface-200: hsl(318.9474 23.7231% 85.6578%); + --color-surface-300: hsl(318.9474 13.9672% 77.7526%); +} + +[data-theme="halloween"] { + color-scheme: dark; + --color-primary: hsl(33.6272 100% 50%); + --color-primary-content: hsl(180 7.3171% 8.0392%); + --color-secondary: hsl(277.6985 100% 38.1041%); + --color-accent: hsl(96.7808 100% 33.291%); + --color-accent-content: hsl(0 0% 0%); + --color-neutral: hsl(31.4286 80.7692% 10.1961%); + --color-surface-100: hsl(0 0% 12.9412%); + --color-info: hsl(221.2121 83.1933% 53.3333%); + --color-success: hsl(142.1277 76.2162% 36.2745%); + --color-warning: hsl(32.1327 94.6188% 43.7255%); + --color-danger: hsl(3.3252 87.4903% 61.7362%); + --color-primary-50: hsl(30.5586 100% 76.7985%); + --color-primary-100: hsl(30.665 100% 74.4632%); + --color-primary-200: hsl(31.0742 100% 69.4404%); + --color-primary-300: hsl(32.0073 100% 63.4507%); + --color-primary-400: hsl(35.3246 100% 52.6838%); + --color-primary-500: hsl(33.6272 100% 50%); + --color-primary-600: hsl(31.3856 100% 46.3119%); + --color-primary-700: hsl(31.1135 100% 39.5951%); + --color-primary-800: hsl(30.7444 100% 33.0855%); + --color-primary-900: hsl(30.2184 100% 26.8049%); + --color-secondary-content: hsl(266.0416 66.9607% 89.8355%); + --color-secondary-50: hsl(268.5109 61.9036% 71.1559%); + --color-secondary-100: hsl(268.9772 61.2997% 68.3449%); + --color-secondary-200: hsl(270.0665 60.2412% 62.5283%); + --color-secondary-300: hsl(271.4878 59.4987% 56.2799%); + --color-secondary-400: hsl(273.6337 61.9136% 48.9933%); + --color-secondary-500: hsl(277.6985 100% 38.1041%); + --color-secondary-600: hsl(277.4696 100% 33.0628%); + --color-secondary-700: hsl(277.1684 100% 28.1599%); + --color-secondary-800: hsl(276.756 100% 23.4082%); + --color-secondary-900: hsl(276.1609 100% 18.8237%); + --color-accent-50: hsl(100.6724 47.2624% 66.5219%); + --color-accent-100: hsl(100.3767 47.2888% 63.2972%); + --color-accent-200: hsl(99.5185 47.5807% 56.5563%); + --color-accent-300: hsl(97.8942 50.508% 48.9943%); + --color-accent-400: hsl(92.3742 88.8493% 37.1684%); + --color-accent-500: hsl(96.7808 100% 33.291%); + --color-accent-600: hsl(97.2135 100% 28.8437%); + --color-accent-700: hsl(97.7849 100% 24.5184%); + --color-accent-800: hsl(98.5708 100% 20.3265%); + --color-accent-900: hsl(99.7125 100% 16.2821%); + --color-neutral-content: hsl(28.9179 10.4732% 80.1481%); + --color-neutral-50: hsl(29.1471 10.9763% 47.5094%); + --color-neutral-100: hsl(29.2041 12.9927% 43.0957%); + --color-neutral-200: hsl(29.3599 18.3125% 34.4772%); + --color-neutral-300: hsl(29.6223 26.6018% 26.1474%); + --color-neutral-400: hsl(30.1722 41.778% 18.0888%); + --color-neutral-500: hsl(31.4286 80.7692% 10.1961%); + --color-neutral-600: hsl(30.6369 83.0916% 8.4539%); + --color-neutral-700: hsl(29.3129 85.2476% 6.8051%); + --color-neutral-800: hsl(27.0711 87.184% 5.2477%); + --color-neutral-900: hsl(23.5495 88.7968% 3.7804%); + --color-info-content: hsl(218.9847 98.1914% 91.1191%); + --color-info-50: hsl(219.5223 90.8982% 75.1352%); + --color-info-100: hsl(219.6486 89.9471% 72.8089%); + --color-info-200: hsl(219.9484 88.1075% 68.1172%); + --color-info-300: hsl(220.3175 86.3541% 63.3558%); + --color-info-400: hsl(220.756 84.7001% 58.4762%); + --color-info-500: hsl(221.2121 83.1933% 53.3333%); + --color-info-600: hsl(221.2121 73.8664% 46.0735%); + --color-info-700: hsl(221.2121 75.2921% 39.0129%); + --color-info-800: hsl(221.2121 77.2709% 32.17%); + --color-info-900: hsl(221.2121 80.1841% 25.5679%); + --color-success-content: hsl(130.1256 95.7127% 1.9343%); + --color-success-50: hsl(130.3106 37.672% 68.7269%); + --color-success-100: hsl(130.8008 37.753% 65.7761%); + --color-success-200: hsl(131.9998 38.0525% 59.7265%); + --color-success-300: hsl(133.6564 38.6495% 53.3423%); + --color-success-400: hsl(136.2425 46.3769% 46.2272%); + --color-success-500: hsl(142.1277 76.2162% 36.2745%); + --color-success-600: hsl(142.1277 77.8784% 31.1197%); + --color-success-700: hsl(142.1277 80.1246% 26.1063%); + --color-success-800: hsl(142.117 83.2701% 21.2525%); + --color-success-900: hsl(141.7625 86.5918% 16.6991%); + --color-warning-content: hsl(17.1667 99.4327% 3.3181%); + --color-warning-50: hsl(25.8631 74.2191% 73.8529%); + --color-warning-100: hsl(26.0117 73.723% 71.3345%); + --color-warning-200: hsl(26.407 72.8234% 66.1392%); + --color-warning-300: hsl(27.0339 72.1185% 60.5933%); + --color-warning-400: hsl(28.2027 71.8262% 54.2587%); + --color-warning-500: hsl(32.1327 94.6188% 43.7255%); + --color-warning-600: hsl(32.0048 95.4642% 37.8169%); + --color-warning-700: hsl(31.7888 96.25% 32.1253%); + --color-warning-800: hsl(31.4433 96.9725% 26.6578%); + --color-warning-900: hsl(30.8928 97.6278% 21.425%); + --color-danger-content: hsl(1.5684 84.471% 4.3206%); + --color-danger-50: hsl(6.645 100% 80.3116%); + --color-danger-100: hsl(6.3908 100% 78.5508%); + --color-danger-200: hsl(5.9013 97.1794% 74.6701%); + --color-danger-300: hsl(5.2994 93.7104% 70.5565%); + --color-danger-400: hsl(4.4885 90.4774% 66.2706%); + --color-danger-500: hsl(3.3252 87.4903% 61.7362%); + --color-danger-600: hsl(3.3252 63.0279% 53.4395%); + --color-danger-700: hsl(3.3252 55.8261% 45.3704%); + --color-danger-800: hsl(3.3252 57.0831% 37.5502%); + --color-danger-900: hsl(3.3252 58.917% 30.0052%); + --color-surface-200: hsl(223.8136 0% 11.3419%); + --color-surface-300: hsl(223.8136 0% 9.8814%); + --color-surface-content: hsl(223.8136 0% 80.5478%); +} + +[data-theme="garden"] { + color-scheme: light; + --color-primary: hsl(332.4702 100% 49.8311%); + --color-primary-content: hsl(0 0% 100%); + --color-secondary: hsl(334.2857 37.1981% 40.5882%); + --color-accent: hsl(138.8571 15.9817% 42.9412%); + --color-neutral: hsl(43.9024 100% 8.0392%); + --color-neutral-content: hsl(0 4.3478% 90.9804%); + --color-surface-100: hsl(0 4.3478% 90.9804%); + --color-surface-content: hsl(0 3.2258% 6.0784%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-50: hsl(341.896 100% 77.9663%); + --color-primary-100: hsl(341.3859 100% 75.7437%); + --color-primary-200: hsl(340.11 100% 70.989%); + --color-primary-300: hsl(338.245 100% 65.4594%); + --color-primary-400: hsl(334.7005 100% 57.4679%); + --color-primary-500: hsl(332.4702 100% 49.8311%); + --color-primary-600: hsl(332.7244 100% 43.3427%); + --color-primary-700: hsl(333.0571 100% 37.0325%); + --color-primary-800: hsl(333.5091 100% 30.9168%); + --color-primary-900: hsl(334.1547 100% 25.0163%); + --color-secondary-content: hsl(339.8087 30.77% 88.0909%); + --color-secondary-50: hsl(338.1948 28.408% 67.3715%); + --color-secondary-100: hsl(337.9003 28.061% 64.4189%); + --color-secondary-200: hsl(337.2399 27.3651% 58.5114%); + --color-secondary-300: hsl(336.4575 26.6755% 52.5898%); + --color-secondary-400: hsl(335.5026 29.7694% 46.6311%); + --color-secondary-500: hsl(334.2857 37.1981% 40.5882%); + --color-secondary-600: hsl(334.2857 37.9214% 34.9011%); + --color-secondary-700: hsl(334.2857 38.8936% 29.37%); + --color-secondary-800: hsl(334.2857 40.2633% 24.0096%); + --color-secondary-900: hsl(334.2857 42.3236% 18.8377%); + --color-accent-content: hsl(136.3164 32.9542% 1.6499%); + --color-accent-50: hsl(136.9081 12.1332% 67.7982%); + --color-accent-100: hsl(137.0565 12.1128% 64.97%); + --color-accent-200: hsl(137.3907 12.0755% 59.3645%); + --color-accent-300: hsl(137.7872 12.0454% 53.8264%); + --color-accent-400: hsl(138.2658 12.8458% 48.3536%); + --color-accent-500: hsl(138.8571 15.9817% 42.9412%); + --color-accent-600: hsl(138.8571 16.2752% 36.9637%); + --color-accent-700: hsl(138.8571 16.6686% 31.1503%); + --color-accent-800: hsl(138.8571 17.2209% 25.5161%); + --color-accent-900: hsl(138.8571 18.0476% 20.0802%); + --color-neutral-50: hsl(43.0486 10.3803% 46.0248%); + --color-neutral-100: hsl(43.0406 12.4039% 41.5066%); + --color-neutral-200: hsl(43.0491 17.9226% 32.6951%); + --color-neutral-300: hsl(43.1427 27.0789% 24.1868%); + --color-neutral-400: hsl(43.5427 45.997% 15.912%); + --color-neutral-500: hsl(43.9024 100% 8.0392%); + --color-neutral-600: hsl(43.0881 100% 6.7079%); + --color-neutral-700: hsl(41.9118 100% 5.413%); + --color-neutral-800: hsl(40.0729 100% 4.1582%); + --color-neutral-900: hsl(36.8782 100% 2.9474%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(0 2.0599% 82.6136%); + --color-surface-300: hsl(0 1.3069% 74.9723%); +} + +[data-theme="forest"] { + color-scheme: dark; + --color-primary: hsl(141.039 71.9626% 41.9608%); + --color-primary-content: hsl(0 0% 0%); + --color-secondary: hsl(163.7419 72.77% 41.7647%); + --color-accent: hsl(174.9677 72.77% 41.7647%); + --color-neutral: hsl(161.3793 36.7089% 15.4902%); + --color-surface-100: hsl(0 12.1951% 8.0392%); + --rounded-btn: 1.9rem; + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-50: hsl(129.9902 46.7848% 72.2578%); + --color-primary-100: hsl(130.4892 46.8542% 69.574%); + --color-primary-200: hsl(131.6961 47.1389% 64.0222%); + --color-primary-300: hsl(133.3335 47.7269% 58.0809%); + --color-primary-400: hsl(135.821 48.9141% 51.3492%); + --color-primary-500: hsl(141.039 71.9626% 41.9608%); + --color-primary-600: hsl(141.039 73.3154% 36.1043%); + --color-primary-700: hsl(141.039 75.1308% 30.4085%); + --color-primary-800: hsl(141.039 77.6831% 24.8884%); + --color-primary-900: hsl(141.0313 81.4818% 19.5656%); + --color-secondary-content: hsl(153.645 94.9339% 2.5067%); + --color-secondary-50: hsl(156.6298 45.6454% 72.3384%); + --color-secondary-100: hsl(157.041 45.8255% 69.6641%); + --color-secondary-200: hsl(157.9893 46.3397% 64.1266%); + --color-secondary-300: hsl(159.1808 47.1734% 58.1857%); + --color-secondary-400: hsl(160.8126 48.6393% 51.4157%); + --color-secondary-500: hsl(163.7419 72.77% 41.7647%); + --color-secondary-600: hsl(163.7419 74.1444% 35.9324%); + --color-secondary-700: hsl(163.7419 75.9894% 30.2602%); + --color-secondary-800: hsl(163.7419 78.5839% 24.7628%); + --color-secondary-900: hsl(163.7323 82.3878% 19.4684%); + --color-accent-content: hsl(171.4042 94.9339% 2.5067%); + --color-accent-50: hsl(172.031 45.2779% 72.4164%); + --color-accent-100: hsl(172.2406 45.4875% 69.7469%); + --color-accent-200: hsl(172.7001 46.0643% 64.2162%); + --color-accent-300: hsl(173.2354 46.9671% 58.2753%); + --color-accent-400: hsl(173.9044 48.514% 51.4914%); + --color-accent-500: hsl(174.9677 72.77% 41.7647%); + --color-accent-600: hsl(174.9677 74.1444% 35.9324%); + --color-accent-700: hsl(174.9677 75.9894% 30.2602%); + --color-accent-800: hsl(174.9677 78.5839% 24.7628%); + --color-accent-900: hsl(174.9648 82.3878% 19.4684%); + --color-neutral-content: hsl(157.0371 6.8619% 81.5089%); + --color-neutral-50: hsl(157.83 6.6834% 50.9312%); + --color-neutral-100: hsl(158.0038 7.5771% 46.7703%); + --color-neutral-200: hsl(158.4331 10.506% 38.6189%); + --color-neutral-300: hsl(159.0245 14.8451% 30.702%); + --color-neutral-400: hsl(159.9009 22.0285% 23.015%); + --color-neutral-500: hsl(161.3793 36.7089% 15.4902%); + --color-neutral-600: hsl(161.3793 38.6401% 12.9001%); + --color-neutral-700: hsl(161.3793 41.4428% 10.381%); + --color-neutral-800: hsl(161.3793 45.8561% 7.9397%); + --color-neutral-900: hsl(160.9627 51.9832% 5.6499%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(0 13.0424% 6.8651%); + --color-surface-300: hsl(360 14.1163% 5.7928%); + --color-surface-content: hsl(0.603 1.4217% 79.1884%); +} + +[data-theme="aqua"] { + color-scheme: dark; + --color-primary: hsl(181.7949 92.8571% 49.4118%); + --color-primary-content: hsl(181.4118 100% 16.6667%); + --color-secondary: hsl(274.4118 30.9091% 56.8627%); + --color-accent: hsl(47.0588 100% 80%); + --color-neutral: hsl(205.4015 53.7255% 50%); + --color-surface-100: hsl(218.6087 52.5114% 42.9412%); + --color-info: hsl(221.2121 83.1933% 53.3333%); + --color-success: hsl(142.1277 76.2162% 36.2745%); + --color-warning: hsl(32.1327 94.6188% 43.7255%); + --color-danger: hsl(4.9473 100% 69.8114%); + --color-primary-50: hsl(182.0187 87.0513% 80.8851%); + --color-primary-100: hsl(182.0657 87.17% 78.8467%); + --color-primary-200: hsl(182.1381 87.4807% 74.4519%); + --color-primary-300: hsl(182.17 87.9367% 69.3953%); + --color-primary-400: hsl(182.1296 88.673% 62.9696%); + --color-primary-500: hsl(181.7949 92.8571% 49.4118%); + --color-primary-600: hsl(181.7984 93.9765% 42.7147%); + --color-primary-700: hsl(181.8072 95.0196% 36.2836%); + --color-primary-800: hsl(181.8237 95.9813% 30.1237%); + --color-primary-900: hsl(181.852 96.8555% 24.2442%); + --color-secondary-content: hsl(270.3771 47.5679% 3.1336%); + --color-secondary-50: hsl(273.0767 32.3941% 76.1582%); + --color-secondary-100: hsl(273.1975 32.2236% 74.0096%); + --color-secondary-200: hsl(273.4555 31.8838% 69.719%); + --color-secondary-300: hsl(273.7392 31.5482% 65.4345%); + --color-secondary-400: hsl(274.055 31.2211% 61.1514%); + --color-secondary-500: hsl(274.4118 30.9091% 56.8627%); + --color-secondary-600: hsl(274.4118 23.7719% 49.1674%); + --color-secondary-700: hsl(274.4118 24.2014% 41.6832%); + --color-secondary-800: hsl(274.4118 24.7957% 34.4299%); + --color-secondary-900: hsl(274.4118 25.667% 27.4317%); + --color-accent-content: hsl(46.9809 44.6774% 5.9515%); + --color-accent-50: hsl(47.1462 99.8274% 89.3924%); + --color-accent-100: hsl(47.1209 99.8515% 88.3936%); + --color-accent-200: hsl(47.0802 99.896% 86.3696%); + --color-accent-300: hsl(47.0544 99.9355% 84.3033%); + --color-accent-400: hsl(47.0461 99.9702% 82.1847%); + --color-accent-500: hsl(47.0588 100% 80%); + --color-accent-600: hsl(47.0588 57.3873% 69.4496%); + --color-accent-700: hsl(47.0588 37.0777% 59.1887%); + --color-accent-800: hsl(47.0588 26.0044% 49.2443%); + --color-accent-900: hsl(47.0588 26.6366% 39.6497%); + --color-neutral-content: hsl(214.2304 84.8508% 2.984%); + --color-neutral-50: hsl(207.2202 54.2891% 73.3918%); + --color-neutral-100: hsl(207.1291 54.109% 70.9395%); + --color-neutral-200: hsl(206.9056 53.793% 65.9856%); + --color-neutral-300: hsl(206.5986 53.5656% 60.9256%); + --color-neutral-400: hsl(206.1459 53.4918% 55.6697%); + --color-neutral-500: hsl(205.4015 53.7255% 50%); + --color-neutral-600: hsl(205.4015 54.5705% 43.1515%); + --color-neutral-700: hsl(205.4015 55.6965% 36.4909%); + --color-neutral-800: hsl(205.4015 57.2644% 30.0358%); + --color-neutral-900: hsl(205.4015 59.5829% 23.8077%); + --color-info-content: hsl(218.9847 98.1914% 91.1191%); + --color-info-50: hsl(219.5223 90.8982% 75.1352%); + --color-info-100: hsl(219.6486 89.9471% 72.8089%); + --color-info-200: hsl(219.9484 88.1075% 68.1172%); + --color-info-300: hsl(220.3175 86.3541% 63.3558%); + --color-info-400: hsl(220.756 84.7001% 58.4762%); + --color-info-500: hsl(221.2121 83.1933% 53.3333%); + --color-info-600: hsl(221.2121 73.8664% 46.0735%); + --color-info-700: hsl(221.2121 75.2921% 39.0129%); + --color-info-800: hsl(221.2121 77.2709% 32.17%); + --color-info-900: hsl(221.2121 80.1841% 25.5679%); + --color-success-content: hsl(130.1256 95.7127% 1.9343%); + --color-success-50: hsl(130.3106 37.672% 68.7269%); + --color-success-100: hsl(130.8008 37.753% 65.7761%); + --color-success-200: hsl(131.9998 38.0525% 59.7265%); + --color-success-300: hsl(133.6564 38.6495% 53.3423%); + --color-success-400: hsl(136.2425 46.3769% 46.2272%); + --color-success-500: hsl(142.1277 76.2162% 36.2745%); + --color-success-600: hsl(142.1277 77.8784% 31.1197%); + --color-success-700: hsl(142.1277 80.1246% 26.1063%); + --color-success-800: hsl(142.117 83.2701% 21.2525%); + --color-success-900: hsl(141.7625 86.5918% 16.6991%); + --color-warning-content: hsl(17.1667 99.4327% 3.3181%); + --color-warning-50: hsl(25.8631 74.2191% 73.8529%); + --color-warning-100: hsl(26.0117 73.723% 71.3345%); + --color-warning-200: hsl(26.407 72.8234% 66.1392%); + --color-warning-300: hsl(27.0339 72.1185% 60.5933%); + --color-warning-400: hsl(28.2027 71.8262% 54.2587%); + --color-warning-500: hsl(32.1327 94.6188% 43.7255%); + --color-warning-600: hsl(32.0048 95.4642% 37.8169%); + --color-warning-700: hsl(31.7888 96.25% 32.1253%); + --color-warning-800: hsl(31.4433 96.9725% 26.6578%); + --color-warning-900: hsl(30.8928 97.6278% 21.425%); + --color-danger-content: hsl(2.8839 74.8129% 5.3446%); + --color-danger-50: hsl(7.8583 100% 83.4404%); + --color-danger-100: hsl(7.6181 100% 81.9469%); + --color-danger-200: hsl(7.092 100% 78.956%); + --color-danger-300: hsl(6.4907 100% 75.9498%); + --color-danger-400: hsl(5.7895 100% 72.9111%); + --color-danger-500: hsl(4.9473 100% 69.8114%); + --color-danger-600: hsl(4.5357 77.8427% 62.9193%); + --color-danger-700: hsl(4.5357 53.6367% 53.5525%); + --color-danger-800: hsl(4.5357 47.405% 44.4745%); + --color-danger-900: hsl(4.5357 48.6844% 35.7159%); + --color-surface-200: hsl(218.6087 53.1579% 38.7403%); + --color-surface-300: hsl(218.6087 53.8843% 34.9038%); + --color-surface-content: hsl(217.8029 45.0593% 88.3418%); +} + +[data-theme="lofi"] { + color-scheme: light; + --color-primary: hsl(0 0% 5.098%); + --color-primary-content: hsl(180 100% 100%); + --color-secondary: hsl(0 1.9608% 10%); + --color-secondary-content: hsl(180 100% 100%); + --color-accent: hsl(0 0% 14.902%); + --color-accent-content: hsl(180 100% 100%); + --color-neutral: hsl(0 0% 0%); + --color-neutral-content: hsl(180 100% 100%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-200: hsl(0 0% 94.902%); + --color-surface-300: hsl(0 1.9608% 90%); + --color-surface-content: hsl(0 0% 0%); + --color-info: hsl(186.3996 64.5332% 61.9566%); + --color-success: hsl(156.3531 98.7858% 70.4206%); + --color-warning: hsl(40.5761 100% 70.509%); + --color-danger: hsl(7.4376 100% 75.3917%); + --rounded-box: 0.25rem; + --rounded-btn: 0.125rem; + --rounded-badge: 0.125rem; + --tab-radius: 0.125rem; + --animation-btn: 0; + --animation-input: 0; + --btn-focus-scale: 1; + --color-primary-50: hsl(223.8136 0% 43.0525%); + --color-primary-100: hsl(223.8136 0% 38.3522%); + --color-primary-200: hsl(223.8136 0% 29.2546%); + --color-primary-300: hsl(223.8136 0% 20.613%); + --color-primary-400: hsl(223.8136 0% 12.5143%); + --color-primary-500: hsl(0 0% 5.098%); + --color-primary-600: hsl(223.8136 0% 3.7908%); + --color-primary-700: hsl(223.8136 0% 2.6624%); + --color-primary-800: hsl(223.8136 0% 1.7836%); + --color-primary-900: hsl(223.8136 0% 1.1232%); + --color-secondary-50: hsl(0.0797 0.297% 46.5899%); + --color-secondary-100: hsl(0.0763 0.3518% 42.1381%); + --color-secondary-200: hsl(0.0675 0.4958% 33.4846%); + --color-secondary-300: hsl(0.0547 0.7169% 25.2009%); + --color-secondary-400: hsl(0.0348 1.1027% 17.3446%); + --color-secondary-500: hsl(0 1.9608% 10%); + --color-secondary-600: hsl(0 2.1253% 8.0874%); + --color-secondary-700: hsl(360 2.3823% 6.2272%); + --color-secondary-800: hsl(0 2.8376% 4.4244%); + --color-secondary-900: hsl(0 3.0353% 2.7978%); + --color-accent-50: hsl(223.8136 0% 49.9489%); + --color-accent-100: hsl(223.8136 0% 45.7415%); + --color-accent-200: hsl(223.8136 0% 37.5342%); + --color-accent-300: hsl(223.8136 0% 29.6297%); + --color-accent-400: hsl(223.8136 0% 22.0676%); + --color-accent-500: hsl(0 0% 14.902%); + --color-accent-600: hsl(223.8136 0% 12.3844%); + --color-accent-700: hsl(223.8136 0% 9.936%); + --color-accent-800: hsl(223.8136 0% 7.563%); + --color-accent-900: hsl(223.8136 0% 5.2736%); + --color-neutral-50: hsl(223.8136 0% 33.3837%); + --color-neutral-100: hsl(223.8136 0% 28.0604%); + --color-neutral-200: hsl(223.8136 0% 17.9236%); + --color-neutral-300: hsl(223.8136 0% 8.6104%); + --color-neutral-400: hsl(223.8136 0% 1.292%); + --color-neutral-500: hsl(0 0% 0%); + --color-neutral-600: hsl(0 0% 0%); + --color-neutral-700: hsl(0 0% 0%); + --color-neutral-800: hsl(0 0% 0%); + --color-neutral-900: hsl(0 0% 0%); + --color-info-content: hsl(187.4876 70.1734% 3.9993%); + --color-info-50: hsl(186.7721 62.267% 80.5435%); + --color-info-100: hsl(186.7651 62.3978% 78.6757%); + --color-info-200: hsl(186.7339 62.7191% 74.8475%); + --color-info-300: hsl(186.6728 63.1445% 70.8529%); + --color-info-400: hsl(186.569 63.7204% 66.6089%); + --color-info-500: hsl(186.3996 64.5332% 61.9566%); + --color-info-600: hsl(186.3996 46.4145% 53.6327%); + --color-info-700: hsl(186.3996 40.7904% 45.5372%); + --color-info-800: hsl(186.3996 41.7054% 37.6914%); + --color-info-900: hsl(186.3996 43.04% 30.1216%); + --color-success-content: hsl(153.9692 70.833% 5.0121%); + --color-success-50: hsl(152.2143 100% 86.1265%); + --color-success-100: hsl(152.52 100% 84.6962%); + --color-success-200: hsl(153.1981 100% 81.691%); + --color-success-300: hsl(153.9958 99.9595% 78.4296%); + --color-success-400: hsl(155.0548 99.3365% 74.727%); + --color-success-500: hsl(156.3531 98.7858% 70.4206%); + --color-success-600: hsl(156.3531 65.7665% 61.0522%); + --color-success-700: hsl(156.3531 46.0015% 51.941%); + --color-success-800: hsl(156.3531 43.3981% 43.1107%); + --color-success-900: hsl(156.3531 44.6075% 34.5912%); + --color-warning-content: hsl(36.3719 72.4108% 5.2493%); + --color-warning-50: hsl(39.9253 100% 84.8697%); + --color-warning-100: hsl(39.937 100% 83.4194%); + --color-warning-200: hsl(39.9914 100% 80.4483%); + --color-warning-300: hsl(40.0992 100% 77.3518%); + --color-warning-400: hsl(40.2818 100% 74.0724%); + --color-warning-500: hsl(40.5761 100% 70.509%); + --color-warning-600: hsl(38.4331 72.921% 62.5713%); + --color-warning-700: hsl(38.4331 50.3912% 53.2521%); + --color-warning-800: hsl(38.4331 45.0823% 44.2202%); + --color-warning-900: hsl(38.4331 46.3062% 35.5062%); + --color-danger-content: hsl(5.5076 60.4131% 5.7797%); + --color-danger-50: hsl(9.1407 100% 86.4251%); + --color-danger-100: hsl(8.9831 100% 85.202%); + --color-danger-200: hsl(8.648 100% 82.7572%); + --color-danger-300: hsl(8.2828 100% 80.311%); + --color-danger-400: hsl(7.8818 100% 77.8584%); + --color-danger-500: hsl(7.4376 100% 75.3917%); + --color-danger-600: hsl(6.7589 73.2118% 67.5762%); + --color-danger-700: hsl(6.7589 48.2891% 57.5718%); + --color-danger-800: hsl(6.7589 36.2157% 47.8759%); + --color-danger-900: hsl(6.7589 37.1219% 38.5212%); +} + +[data-theme="pastel"] { + color-scheme: light; + --color-primary: hsl(283.6364 21.5686% 80%); + --color-secondary: hsl(351.6279 70.4918% 88.0392%); + --color-accent: hsl(158.4906 54.6392% 80.9804%); + --color-neutral: hsl(198.6207 43.7186% 60.9804%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-200: hsl(210 20% 98.0392%); + --color-surface-300: hsl(216 12.1951% 83.9216%); + --rounded-btn: 1.9rem; + --tab-radius: 0.7rem; + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(283.6364 9.7204% 5.9355%); + --color-primary-50: hsl(283.5486 21.8954% 88.9249%); + --color-primary-100: hsl(283.5578 21.8599% 87.9272%); + --color-primary-200: hsl(283.5766 21.7884% 85.9362%); + --color-primary-300: hsl(283.5959 21.7159% 83.9513%); + --color-primary-400: hsl(283.6158 21.6427% 81.9726%); + --color-primary-500: hsl(283.6364 21.5686% 80%); + --color-primary-600: hsl(283.6364 12.3777% 69.4496%); + --color-primary-700: hsl(283.6364 7.9971% 59.1887%); + --color-primary-800: hsl(283.6364 5.6088% 49.2443%); + --color-primary-900: hsl(283.6364 5.7451% 39.6497%); + --color-secondary-content: hsl(351.6279 16.0851% 7.0107%); + --color-secondary-50: hsl(352.2067 73.9056% 93.5351%); + --color-secondary-100: hsl(352.1466 73.5135% 92.9336%); + --color-secondary-200: hsl(352.0235 72.7392% 91.7237%); + --color-secondary-300: hsl(351.8962 71.9776% 90.5047%); + --color-secondary-400: hsl(351.7644 71.2286% 89.2766%); + --color-secondary-500: hsl(351.6279 70.4918% 88.0392%); + --color-secondary-600: hsl(351.6279 31.4466% 76.4968%); + --color-secondary-700: hsl(351.6279 18.3684% 65.2711%); + --color-secondary-800: hsl(351.6279 11.8366% 54.3916%); + --color-secondary-900: hsl(351.6279 10.1431% 43.895%); + --color-accent-content: hsl(158.4906 22.9113% 6.0666%); + --color-accent-50: hsl(157.397 54.5046% 89.7167%); + --color-accent-100: hsl(157.5077 54.5064% 88.7637%); + --color-accent-200: hsl(157.7366 54.5187% 86.8462%); + --color-accent-300: hsl(157.9759 54.5439% 84.9114%); + --color-accent-400: hsl(158.2268 54.5834% 82.957%); + --color-accent-500: hsl(158.4906 54.6392% 80.9804%); + --color-accent-600: hsl(158.4906 30.682% 70.309%); + --color-accent-700: hsl(158.4906 19.6225% 59.9305%); + --color-accent-800: hsl(158.4906 13.342% 49.872%); + --color-accent-900: hsl(158.4906 13.6622% 40.1674%); + --color-neutral-content: hsl(201.2505 54.4162% 3.674%); + --color-neutral-50: hsl(199.3241 43.6959% 78.689%); + --color-neutral-100: hsl(199.2725 43.6632% 76.7489%); + --color-neutral-200: hsl(199.155 43.6165% 72.8576%); + --color-neutral-300: hsl(199.0133 43.6012% 68.9433%); + --color-neutral-400: hsl(198.8393 43.6293% 64.9916%); + --color-neutral-500: hsl(198.6207 43.7186% 60.9804%); + --color-neutral-600: hsl(198.6207 31.6664% 52.7769%); + --color-neutral-700: hsl(198.6207 28.8102% 44.7986%); + --color-neutral-800: hsl(198.6207 29.4674% 37.0663%); + --color-neutral-900: hsl(198.6207 30.4268% 29.6061%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-content: hsl(223.8136 0% 8.6104%); +} + +[data-theme="fantasy"] { + color-scheme: light; + --color-primary: hsl(295.8488 100% 23.0482%); + --color-secondary: hsl(203.8078 100% 38.1183%); + --color-accent: hsl(31.6284 100% 50%); + --color-neutral: hsl(215 27.907% 16.8627%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-content: hsl(215 27.907% 16.8627%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(298.257 28.839% 85.0197%); + --color-primary-50: hsl(297.0731 27.7729% 59.2785%); + --color-primary-100: hsl(296.8868 27.6575% 55.6187%); + --color-primary-200: hsl(296.5105 29.5051% 48.2514%); + --color-primary-300: hsl(296.1555 40.2323% 40.6875%); + --color-primary-400: hsl(295.9274 59.247% 32.3994%); + --color-primary-500: hsl(295.8488 100% 23.0482%); + --color-primary-600: hsl(295.7779 100% 19.8648%); + --color-primary-700: hsl(295.6831 100% 16.7688%); + --color-primary-800: hsl(295.5505 100% 13.7682%); + --color-primary-900: hsl(295.3533 100% 10.8732%); + --color-secondary-content: hsl(206.3032 64.8301% 88.452%); + --color-secondary-50: hsl(205.449 62.9331% 67.6036%); + --color-secondary-100: hsl(205.2166 62.7883% 64.4478%); + --color-secondary-200: hsl(204.5298 62.7383% 57.7688%); + --color-secondary-300: hsl(203.1374 63.7803% 49.8672%); + --color-secondary-400: hsl(200.7972 100% 39.4983%); + --color-secondary-500: hsl(203.8078 100% 38.1183%); + --color-secondary-600: hsl(204.0521 100% 33.0753%); + --color-secondary-700: hsl(204.3735 100% 28.1707%); + --color-secondary-800: hsl(204.8135 100% 23.4173%); + --color-secondary-900: hsl(205.4486 100% 18.8312%); + --color-accent-content: hsl(15.8841 100% 4.6857%); + --color-accent-50: hsl(28.1294 100% 76.9529%); + --color-accent-100: hsl(28.2092 100% 74.6669%); + --color-accent-200: hsl(28.5451 100% 69.7968%); + --color-accent-300: hsl(29.342 100% 64.1361%); + --color-accent-400: hsl(31.7781 100% 55.5285%); + --color-accent-500: hsl(31.6284 100% 50%); + --color-accent-600: hsl(29.7039 100% 45.9845%); + --color-accent-700: hsl(29.4138 100% 39.3126%); + --color-accent-800: hsl(29.0201 100% 32.8464%); + --color-accent-900: hsl(28.4589 100% 26.6077%); + --color-neutral-content: hsl(215.101 6.8198% 81.6528%); + --color-neutral-50: hsl(215.0645 6.466% 51.37%); + --color-neutral-100: hsl(215.0583 7.1439% 47.261%); + --color-neutral-200: hsl(215.0453 9.6966% 39.2287%); + --color-neutral-300: hsl(215.0315 13.2724% 31.4641%); + --color-neutral-400: hsl(215.0172 18.6763% 23.9967%); + --color-neutral-500: hsl(215 27.907% 16.8627%); + --color-neutral-600: hsl(215 29.2499% 14.1033%); + --color-neutral-700: hsl(215 31.1786% 11.4195%); + --color-neutral-800: hsl(215 34.1679% 8.8185%); + --color-neutral-900: hsl(214.999 39.3899% 6.309%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(223.8136 0.0001% 90.851%); + --color-surface-300: hsl(223.8136 0% 82.4954%); +} + +[data-theme="wireframe"] { + color-scheme: light; + fontfamily: + Chalkboard, + comic sans ms, + "sans-serif"; + --color-primary: hsl(0 0% 72.1569%); + --color-secondary: hsl(0 0% 72.1569%); + --color-accent: hsl(0 0% 72.1569%); + --color-neutral: hsl(0 0% 92.1569%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-200: hsl(0 0% 93.3333%); + --color-surface-300: hsl(0 0% 86.6667%); + --color-info: hsl(240 100% 50%); + --color-success: hsl(120 100% 25.098%); + --color-warning: hsl(60 30.1961% 50%); + --color-danger: hsl(0 100% 50%); + --rounded-box: 0.2rem; + --rounded-btn: 0.2rem; + --rounded-badge: 0.2rem; + --tab-radius: 0.2rem; + --color-primary-content: hsl(223.8136 0% 4.8865%); + --color-primary-50: hsl(223.8136 0% 84.4751%); + --color-primary-100: hsl(223.8136 0% 83.0887%); + --color-primary-200: hsl(223.8136 0% 80.3289%); + --color-primary-300: hsl(223.8136 0% 77.5868%); + --color-primary-400: hsl(223.8136 0% 74.8627%); + --color-primary-500: hsl(0 0% 72.1569%); + --color-primary-600: hsl(223.8136 0% 62.5743%); + --color-primary-700: hsl(223.8136 0% 53.2547%); + --color-primary-800: hsl(223.8136 0% 44.2224%); + --color-primary-900: hsl(223.8136 0% 35.508%); + --color-secondary-content: hsl(223.8136 0% 4.8865%); + --color-secondary-50: hsl(223.8136 0% 84.4751%); + --color-secondary-100: hsl(223.8136 0% 83.0887%); + --color-secondary-200: hsl(223.8136 0% 80.3289%); + --color-secondary-300: hsl(223.8136 0% 77.5868%); + --color-secondary-400: hsl(223.8136 0% 74.8627%); + --color-secondary-500: hsl(0 0% 72.1569%); + --color-secondary-600: hsl(223.8136 0% 62.5743%); + --color-secondary-700: hsl(223.8136 0% 53.2547%); + --color-secondary-800: hsl(223.8136 0% 44.2224%); + --color-secondary-900: hsl(223.8136 0% 35.508%); + --color-accent-content: hsl(223.8136 0% 4.8865%); + --color-accent-50: hsl(223.8136 0% 84.4751%); + --color-accent-100: hsl(223.8136 0% 83.0887%); + --color-accent-200: hsl(223.8136 0% 80.3289%); + --color-accent-300: hsl(223.8136 0% 77.5868%); + --color-accent-400: hsl(223.8136 0% 74.8627%); + --color-accent-500: hsl(0 0% 72.1569%); + --color-accent-600: hsl(223.8136 0% 62.5743%); + --color-accent-700: hsl(223.8136 0% 53.2547%); + --color-accent-800: hsl(223.8136 0% 44.2224%); + --color-accent-900: hsl(223.8136 0% 35.508%); + --color-neutral-content: hsl(223.8136 0% 7.5614%); + --color-neutral-50: hsl(223.8136 0.0002% 95.6713%); + --color-neutral-100: hsl(223.8136 0.0001% 95.2796%); + --color-neutral-200: hsl(223.8136 0.0001% 94.497%); + --color-neutral-300: hsl(223.8136 0.0001% 93.7158%); + --color-neutral-400: hsl(223.8136 0.0001% 92.9357%); + --color-neutral-500: hsl(0 0% 92.1569%); + --color-neutral-600: hsl(223.8136 0% 80.1063%); + --color-neutral-700: hsl(223.8136 0% 68.3865%); + --color-neutral-800: hsl(223.8136 0% 57.0281%); + --color-neutral-900: hsl(223.8136 0% 46.0694%); + --color-info-content: hsl(217.6355 100% 88.8385%); + --color-info-50: hsl(220.1478 100% 70.0069%); + --color-info-100: hsl(220.6406 100% 67.3724%); + --color-info-200: hsl(221.8025 100% 62.1077%); + --color-info-300: hsl(223.3146 100% 56.7575%); + --color-info-400: hsl(225.4892 100% 50.9722%); + --color-info-500: hsl(240 100% 50%); + --color-info-600: hsl(240 100% 43.4908%); + --color-info-700: hsl(240 100% 37.1603%); + --color-info-800: hsl(240 100% 31.025%); + --color-info-900: hsl(240 100% 25.1055%); + --color-success-content: hsl(114.0582 29.7922% 85.8982%); + --color-success-50: hsl(114.9829 29.0112% 61.5926%); + --color-success-100: hsl(115.1825 28.9427% 58.1273%); + --color-success-200: hsl(115.6697 28.8898% 51.1462%); + --color-success-300: hsl(116.3298 36.9889% 43.9879%); + --color-success-400: hsl(117.3101 52.2408% 36.2837%); + --color-success-500: hsl(120 100% 25.098%); + --color-success-600: hsl(120 100% 21.6617%); + --color-success-700: hsl(120 100% 18.3196%); + --color-success-800: hsl(120 100% 15.0806%); + --color-success-900: hsl(120 100% 11.9556%); + --color-warning-content: hsl(60 58.4815% 2.487%); + --color-warning-50: hsl(61.4892 29.4687% 72.6435%); + --color-warning-100: hsl(61.3343 29.4818% 70.1688%); + --color-warning-200: hsl(61.0154 29.5398% 65.2093%); + --color-warning-300: hsl(60.6851 29.6554% 60.2196%); + --color-warning-400: hsl(60.3454 29.8574% 55.1685%); + --color-warning-500: hsl(60 30.1961% 50%); + --color-warning-600: hsl(60 30.671% 43.1515%); + --color-warning-700: hsl(60 31.3039% 36.4909%); + --color-warning-800: hsl(60 32.1851% 30.0358%); + --color-warning-900: hsl(60 33.4882% 23.8077%); + --color-danger-content: hsl(0 100% 4.3052%); + --color-danger-50: hsl(8.2867 100% 76.3184%); + --color-danger-100: hsl(7.9087 100% 74.1471%); + --color-danger-200: hsl(7.0314 100% 69.7153%); + --color-danger-300: hsl(5.9169 100% 65.0332%); + --color-danger-400: hsl(4.3532 100% 59.6704%); + --color-danger-500: hsl(0 100% 50%); + --color-danger-600: hsl(0 100% 43.4908%); + --color-danger-700: hsl(0 100% 37.1603%); + --color-danger-800: hsl(0 100% 31.025%); + --color-danger-900: hsl(0 100% 25.1055%); + --color-surface-content: hsl(223.8136 0% 8.6104%); +} + +[data-theme="black"] { + color-scheme: dark; + --color-primary: hsl(0 0% 21.5686%); + --color-secondary: hsl(0 0% 21.5686%); + --color-accent: hsl(0 0% 21.5686%); + --color-surface-100: hsl(0 0% 0%); + --color-surface-200: hsl(0 0% 7.8431%); + --color-surface-300: hsl(0 0% 14.902%); + --color-surface-content: hsl(0 0% 83.9216%); + --color-neutral: hsl(0 0% 21.5686%); + --color-info: hsl(240 100% 50%); + --color-success: hsl(120 100% 25.098%); + --color-warning: hsl(60 100% 50%); + --color-danger: hsl(0 100% 50%); + --rounded-box: 0; + --rounded-btn: 0; + --rounded-badge: 0; + --animation-btn: 0; + --animation-input: 0; + --btn-focus-scale: 1; + --tab-radius: 0; + --color-primary-content: hsl(223.8136 0% 82.8083%); + --color-primary-50: hsl(223.8136 0% 54.3307%); + --color-primary-100: hsl(223.8136 0% 50.4525%); + --color-primary-200: hsl(223.8136 0% 42.8576%); + --color-primary-300: hsl(223.8136 0% 35.4946%); + --color-primary-400: hsl(223.8136 0% 28.3879%); + --color-primary-500: hsl(0 0% 21.5686%); + --color-primary-600: hsl(223.8136 0% 18.2285%); + --color-primary-700: hsl(223.8136 0% 14.9799%); + --color-primary-800: hsl(223.8136 0% 11.8316%); + --color-primary-900: hsl(223.8136 0% 8.7941%); + --color-secondary-content: hsl(223.8136 0% 82.8083%); + --color-secondary-50: hsl(223.8136 0% 54.3307%); + --color-secondary-100: hsl(223.8136 0% 50.4525%); + --color-secondary-200: hsl(223.8136 0% 42.8576%); + --color-secondary-300: hsl(223.8136 0% 35.4946%); + --color-secondary-400: hsl(223.8136 0% 28.3879%); + --color-secondary-500: hsl(0 0% 21.5686%); + --color-secondary-600: hsl(223.8136 0% 18.2285%); + --color-secondary-700: hsl(223.8136 0% 14.9799%); + --color-secondary-800: hsl(223.8136 0% 11.8316%); + --color-secondary-900: hsl(223.8136 0% 8.7941%); + --color-accent-content: hsl(223.8136 0% 82.8083%); + --color-accent-50: hsl(223.8136 0% 54.3307%); + --color-accent-100: hsl(223.8136 0% 50.4525%); + --color-accent-200: hsl(223.8136 0% 42.8576%); + --color-accent-300: hsl(223.8136 0% 35.4946%); + --color-accent-400: hsl(223.8136 0% 28.3879%); + --color-accent-500: hsl(0 0% 21.5686%); + --color-accent-600: hsl(223.8136 0% 18.2285%); + --color-accent-700: hsl(223.8136 0% 14.9799%); + --color-accent-800: hsl(223.8136 0% 11.8316%); + --color-accent-900: hsl(223.8136 0% 8.7941%); + --color-neutral-content: hsl(223.8136 0% 82.8083%); + --color-neutral-50: hsl(223.8136 0% 54.3307%); + --color-neutral-100: hsl(223.8136 0% 50.4525%); + --color-neutral-200: hsl(223.8136 0% 42.8576%); + --color-neutral-300: hsl(223.8136 0% 35.4946%); + --color-neutral-400: hsl(223.8136 0% 28.3879%); + --color-neutral-500: hsl(0 0% 21.5686%); + --color-neutral-600: hsl(223.8136 0% 18.2285%); + --color-neutral-700: hsl(223.8136 0% 14.9799%); + --color-neutral-800: hsl(223.8136 0% 11.8316%); + --color-neutral-900: hsl(223.8136 0% 8.7941%); + --color-info-content: hsl(217.6355 100% 88.8385%); + --color-info-50: hsl(220.1478 100% 70.0069%); + --color-info-100: hsl(220.6406 100% 67.3724%); + --color-info-200: hsl(221.8025 100% 62.1077%); + --color-info-300: hsl(223.3146 100% 56.7575%); + --color-info-400: hsl(225.4892 100% 50.9722%); + --color-info-500: hsl(240 100% 50%); + --color-info-600: hsl(240 100% 43.4908%); + --color-info-700: hsl(240 100% 37.1603%); + --color-info-800: hsl(240 100% 31.025%); + --color-info-900: hsl(240 100% 25.1055%); + --color-success-content: hsl(114.0582 29.7922% 85.8982%); + --color-success-50: hsl(114.9829 29.0112% 61.5926%); + --color-success-100: hsl(115.1825 28.9427% 58.1273%); + --color-success-200: hsl(115.6697 28.8898% 51.1462%); + --color-success-300: hsl(116.3298 36.9889% 43.9879%); + --color-success-400: hsl(117.3101 52.2408% 36.2837%); + --color-success-500: hsl(120 100% 25.098%); + --color-success-600: hsl(120 100% 21.6617%); + --color-success-700: hsl(120 100% 18.3196%); + --color-success-800: hsl(120 100% 15.0806%); + --color-success-900: hsl(120 100% 11.9556%); + --color-warning-content: hsl(60 100% 4.3052%); + --color-warning-50: hsl(60.675 100% 81.8925%); + --color-warning-100: hsl(60.5874 100% 79.9583%); + --color-warning-200: hsl(60.4193 100% 75.7757%); + --color-warning-300: hsl(60.2624 100% 70.9297%); + --color-warning-400: hsl(60.1197 100% 64.6815%); + --color-warning-500: hsl(60 100% 50%); + --color-warning-600: hsl(60 100% 43.4908%); + --color-warning-700: hsl(60 100% 37.1603%); + --color-warning-800: hsl(60 100% 31.025%); + --color-warning-900: hsl(60 100% 25.1055%); + --color-danger-content: hsl(0 100% 4.3052%); + --color-danger-50: hsl(8.2867 100% 76.3184%); + --color-danger-100: hsl(7.9087 100% 74.1471%); + --color-danger-200: hsl(7.0314 100% 69.7153%); + --color-danger-300: hsl(5.9169 100% 65.0332%); + --color-danger-400: hsl(4.3532 100% 59.6704%); + --color-danger-500: hsl(0 100% 50%); + --color-danger-600: hsl(0 100% 43.4908%); + --color-danger-700: hsl(0 100% 37.1603%); + --color-danger-800: hsl(0 100% 31.025%); + --color-danger-900: hsl(0 100% 25.1055%); +} + +[data-theme="luxury"] { + color-scheme: dark; + --color-primary: hsl(180 100% 100%); + --color-secondary: hsl(218.4 54.3478% 18.0392%); + --color-accent: hsl(318.6207 21.8045% 26.0784%); + --color-neutral: hsl(28.2353 100% 10%); + --color-neutral-content: hsl(44.3478 100% 81.9608%); + --color-surface-100: hsl(240 10% 3.9216%); + --color-surface-200: hsl(270 4.3478% 9.0196%); + --color-surface-300: hsl(270 2.1739% 18.0392%); + --color-surface-content: hsl(37.0833 67.2897% 58.0392%); + --color-info: hsl(202.3529 100% 70%); + --color-success: hsl(89.0066 61.6327% 51.9608%); + --color-warning: hsl(53.9063 68.8172% 63.5294%); + --color-danger: hsl(0 100% 71.7647%); + --color-primary-content: hsl(223.8136 0% 8.6104%); + --color-primary-50: hsl(180 100% 100%); + --color-primary-100: hsl(180 100% 100%); + --color-primary-200: hsl(180 100% 100%); + --color-primary-300: hsl(180 100% 100%); + --color-primary-400: hsl(180 100% 100%); + --color-primary-500: hsl(180 100% 100%); + --color-primary-600: hsl(223.8136 0% 86.9817%); + --color-primary-700: hsl(223.8136 0% 74.3206%); + --color-primary-800: hsl(223.8136 0% 62.0499%); + --color-primary-900: hsl(223.8136 0% 50.2111%); + --color-secondary-content: hsl(217.7182 14.6321% 82.1044%); + --color-secondary-50: hsl(217.7798 13.7575% 52.4196%); + --color-secondary-100: hsl(217.8017 14.5197% 48.3703%); + --color-secondary-200: hsl(217.865 19.5423% 40.4323%); + --color-secondary-300: hsl(217.9676 26.4833% 32.7223%); + --color-secondary-400: hsl(218.135 36.8301% 25.2563%); + --color-secondary-500: hsl(218.4 54.3478% 18.0392%); + --color-secondary-600: hsl(218.4 56.785% 15.1346%); + --color-secondary-700: hsl(218.4 60.2584% 12.3096%); + --color-secondary-800: hsl(218.4882 65.3329% 9.5862%); + --color-secondary-900: hsl(219.7022 70.5247% 7.1001%); + --color-accent-content: hsl(321.804 9.1751% 84.1009%); + --color-accent-50: hsl(320.9429 8.6664% 57.518%); + --color-accent-100: hsl(320.7772 8.5791% 53.8623%); + --color-accent-200: hsl(320.398 9.5894% 46.6666%); + --color-accent-300: hsl(319.937 12.4622% 39.6322%); + --color-accent-400: hsl(319.3622 16.3102% 32.7674%); + --color-accent-500: hsl(318.6207 21.8045% 26.0784%); + --color-accent-600: hsl(318.6207 22.4717% 22.1818%); + --color-accent-700: hsl(318.6207 23.3916% 18.392%); + --color-accent-800: hsl(318.6207 24.7353% 14.7192%); + --color-accent-900: hsl(318.6207 26.8688% 11.1755%); + --color-neutral-50: hsl(26.1584 13.4946% 47.6189%); + --color-neutral-100: hsl(26.2321 15.9644% 43.1971%); + --color-neutral-200: hsl(26.4349 22.4924% 34.5443%); + --color-neutral-300: hsl(26.7889 32.7619% 26.1407%); + --color-neutral-400: hsl(27.6144 52.3033% 17.904%); + --color-neutral-500: hsl(28.2353 100% 10%); + --color-neutral-600: hsl(26.9561 100% 8.4267%); + --color-neutral-700: hsl(25.1523 100% 6.8966%); + --color-neutral-800: hsl(22.431 100% 5.4136%); + --color-neutral-900: hsl(19.2002 100% 3.9829%); + --color-info-content: hsl(204.7862 72.4887% 4.9919%); + --color-info-50: hsl(203.0847 100% 84.459%); + --color-info-100: hsl(203.0649 100% 82.9823%); + --color-info-200: hsl(202.9944 100% 79.9667%); + --color-info-300: hsl(202.87 100% 76.8396%); + --color-info-400: hsl(202.6692 100% 73.5484%); + --color-info-500: hsl(202.3529 100% 70%); + --color-info-600: hsl(202.3529 66.8883% 60.6836%); + --color-info-700: hsl(202.3529 46.9184% 51.6228%); + --color-info-800: hsl(202.3529 44.8363% 42.8414%); + --color-info-900: hsl(202.3529 46.0938% 34.3691%); + --color-success-content: hsl(98.177 87.1227% 3.2841%); + --color-success-50: hsl(93.8231 60.0454% 76.0657%); + --color-success-100: hsl(93.5558 59.9767% 73.7592%); + --color-success-200: hsl(92.92 59.934% 69.0106%); + --color-success-300: hsl(92.0867 60.0729% 63.9948%); + --color-success-400: hsl(90.9122 60.5218% 58.5062%); + --color-success-500: hsl(89.0066 61.6327% 51.9608%); + --color-success-600: hsl(89.0066 57.843% 44.8703%); + --color-success-700: hsl(89.0066 58.9899% 37.9744%); + --color-success-800: hsl(89.0066 60.5839% 31.2912%); + --color-success-900: hsl(89.0066 62.9346% 24.8431%); + --color-warning-content: hsl(52.979 69.7687% 4.1759%); + --color-warning-50: hsl(54.4726 66.0555% 80.9981%); + --color-warning-100: hsl(54.3766 66.2754% 79.208%); + --color-warning-200: hsl(54.2021 66.7586% 75.5598%); + --color-warning-300: hsl(54.0567 67.3172% 71.7851%); + --color-warning-400: hsl(53.9517 67.9838% 67.8163%); + --color-warning-500: hsl(53.9063 68.8172% 63.5294%); + --color-warning-600: hsl(53.9063 48.9036% 55.0114%); + --color-warning-700: hsl(53.9062 40.638% 46.7272%); + --color-warning-800: hsl(53.9063 41.5259% 38.6984%); + --color-warning-900: hsl(53.9062 42.8191% 30.9522%); + --color-danger-content: hsl(0 67.9518% 5.1267%); + --color-danger-50: hsl(3.1601 100% 84.2905%); + --color-danger-100: hsl(2.914 100% 82.8904%); + --color-danger-200: hsl(2.366 100% 80.1005%); + --color-danger-300: hsl(1.7245 100% 77.3209%); + --color-danger-400: hsl(0.955 100% 74.5454%); + --color-danger-500: hsl(0 100% 71.7647%); + --color-danger-600: hsl(0 65.5321% 62.2305%); + --color-danger-700: hsl(0 45.4118% 52.958%); + --color-danger-800: hsl(0 41.1145% 43.9713%); + --color-danger-900: hsl(0 42.2372% 35.3009%); +} + +[data-theme="dracula"] { + color-scheme: dark; + --color-primary: hsl(325.5224 100% 73.7255%); + --color-secondary: hsl(264.7059 89.4737% 77.6471%); + --color-accent: hsl(31.0204 100% 71.1765%); + --color-neutral: hsl(229.5652 15.0327% 30%); + --color-surface-100: hsl(231.4286 14.8936% 18.4314%); + --color-surface-content: hsl(60 30% 96.0784%); + --color-info: hsl(190.5263 96.6102% 76.8627%); + --color-success: hsl(135.1765 94.4444% 64.7059%); + --color-warning: hsl(64.9091 91.6667% 76.4706%); + --color-danger: hsl(0 100% 66.6667%); + --color-primary-content: hsl(327.0388 62.6652% 5.2933%); + --color-primary-50: hsl(326.4622 100% 86.069%); + --color-primary-100: hsl(326.3986 100% 84.7655%); + --color-primary-200: hsl(326.2484 100% 82.1233%); + --color-primary-300: hsl(326.0609 100% 79.4204%); + --color-primary-400: hsl(325.8246 100% 76.6332%); + --color-primary-500: hsl(325.5224 100% 73.7255%); + --color-primary-600: hsl(325.5224 63.8888% 63.9493%); + --color-primary-700: hsl(325.5224 43.6342% 54.4415%); + --color-primary-800: hsl(325.5224 37.1973% 45.2268%); + --color-primary-900: hsl(325.5224 38.1841% 36.3364%); + --color-secondary-content: hsl(264.2383 46.6781% 5.6557%); + --color-secondary-50: hsl(262.5555 95.8176% 88.2425%); + --color-secondary-100: hsl(262.7658 95.0498% 87.1141%); + --color-secondary-200: hsl(263.2046 93.562% 84.824%); + --color-secondary-300: hsl(263.6709 92.1368% 82.4865%); + --color-secondary-400: hsl(264.1694 90.7738% 80.0966%); + --color-secondary-500: hsl(264.7059 89.4737% 77.6471%); + --color-secondary-600: hsl(264.7059 53.7579% 67.387%); + --color-secondary-700: hsl(264.7059 35.5279% 57.4085%); + --color-secondary-800: hsl(264.7059 26.8251% 47.7377%); + --color-secondary-900: hsl(264.7059 27.4983% 38.4072%); + --color-accent-content: hsl(28.3535 69.4897% 5.0802%); + --color-accent-50: hsl(30.498 100% 84.7445%); + --color-accent-100: hsl(30.5044 100% 83.3204%); + --color-accent-200: hsl(30.5434 100% 80.4324%); + --color-accent-300: hsl(30.6279 100% 77.4722%); + --color-accent-400: hsl(30.7767 100% 74.4056%); + --color-accent-500: hsl(31.0204 100% 71.1765%); + --color-accent-600: hsl(31.0204 65.9964% 61.7149%); + --color-accent-700: hsl(31.0204 45.9234% 52.5129%); + --color-accent-800: hsl(31.0204 42.3337% 43.5947%); + --color-accent-900: hsl(31.0204 43.4999% 34.9903%); + --color-neutral-content: hsl(228.5119 7.5426% 84.9164%); + --color-neutral-50: hsl(228.7476 7.1804% 59.7062%); + --color-neutral-100: hsl(228.7972 7.1174% 56.2417%); + --color-neutral-200: hsl(228.916 7.1422% 49.4266%); + --color-neutral-300: hsl(229.07 9.1319% 42.7722%); + --color-neutral-400: hsl(229.2764 11.6705% 36.2914%); + --color-neutral-500: hsl(229.5652 15.0327% 30%); + --color-neutral-600: hsl(229.5652 15.4309% 25.6194%); + --color-neutral-700: hsl(229.5652 15.9749% 21.3591%); + --color-neutral-800: hsl(229.5652 16.7588% 17.2301%); + --color-neutral-900: hsl(229.5652 17.9783% 13.2464%); + --color-info-content: hsl(190.7831 52.2364% 5.587%); + --color-info-50: hsl(190.9724 97.5291% 88.1319%); + --color-info-100: hsl(190.9432 97.4127% 86.9765%); + --color-info-200: hsl(190.8727 97.1892% 84.6091%); + --color-info-300: hsl(190.7831 96.9793% 82.1519%); + --color-info-400: hsl(190.6699 96.7852% 79.5812%); + --color-info-500: hsl(190.5263 96.6102% 76.8627%); + --color-info-600: hsl(190.5263 58.8419% 66.6995%); + --color-info-700: hsl(190.5263 39.162% 56.8151%); + --color-info-800: hsl(190.5263 30.2997% 47.2355%); + --color-info-900: hsl(190.5263 31.0684% 37.9931%); + --color-success-content: hsl(129.7201 81.9304% 4.5887%); + --color-success-50: hsl(128.2448 98.0719% 84.1559%); + --color-success-100: hsl(128.6906 97.5433% 82.4676%); + --color-success-200: hsl(129.7163 96.5603% 78.8817%); + --color-success-300: hsl(130.9926 95.6897% 74.9196%); + --color-success-400: hsl(132.6797 94.9614% 70.3687%); + --color-success-500: hsl(135.1765 94.4444% 64.7059%); + --color-success-600: hsl(135.1765 66.4739% 56.0427%); + --color-success-700: hsl(135.1765 52.9635% 47.6173%); + --color-success-800: hsl(135.1765 54.0986% 39.4517%); + --color-success-900: hsl(135.1765 55.7502% 31.5734%); + --color-warning-content: hsl(65.024 50.978% 5.5294%); + --color-warning-50: hsl(66.4482 93.4042% 87.9702%); + --color-warning-100: hsl(66.2798 93.1772% 86.7927%); + --color-warning-200: hsl(65.9416 92.7455% 84.3782%); + --color-warning-300: hsl(65.601 92.3465% 81.8699%); + --color-warning-400: hsl(65.2573 91.9847% 79.2451%); + --color-warning-500: hsl(64.9091 91.6667% 76.4706%); + --color-warning-600: hsl(64.9091 56.1971% 66.3557%); + --color-warning-700: hsl(64.9091 37.5301% 56.5184%); + --color-warning-800: hsl(64.9091 29.3928% 46.9844%); + --color-warning-900: hsl(64.9091 30.1426% 37.786%); + --color-danger-content: hsl(360 80.335% 4.7747%); + --color-danger-50: hsl(4.5218 100% 81.6113%); + --color-danger-100: hsl(4.2119 100% 79.9674%); + --color-danger-200: hsl(3.5048 100% 76.6825%); + --color-danger-300: hsl(2.6403 100% 73.3893%); + --color-danger-400: hsl(1.5334 100% 70.0648%); + --color-danger-500: hsl(0 100% 66.6667%); + --color-danger-600: hsl(360 69.1789% 57.7615%); + --color-danger-700: hsl(360 51.3633% 49.1008%); + --color-danger-800: hsl(0 52.4301% 40.7072%); + --color-danger-900: hsl(360 53.98% 32.6088%); + --color-surface-200: hsl(231.4286 15.3279% 16.356%); + --color-surface-300: hsl(231.4286 15.8335% 14.4607%); +} + +[data-theme="cmyk"] { + color-scheme: light; + --color-primary: hsl(202.7219 83.2512% 60.1961%); + --color-secondary: hsl(335.25 77.6699% 59.6078%); + --color-accent: hsl(56.1951 100% 59.8039%); + --color-neutral: hsl(0 0% 10.1961%); + --color-surface-100: hsl(180 100% 100%); + --color-info: hsl(192.2034 48.3607% 52.1569%); + --color-success: hsl(291.0638 48.4536% 38.0392%); + --color-warning: hsl(25.0267 84.6154% 56.6667%); + --color-danger: hsl(3.956 80.531% 55.6863%); + --color-primary-content: hsl(208.3528 85.2384% 4.1669%); + --color-primary-50: hsl(204.8062 85.1282% 79.9227%); + --color-primary-100: hsl(204.6929 84.818% 77.9852%); + --color-primary-200: hsl(204.4186 84.2456% 74.0044%); + --color-primary-300: hsl(204.0519 83.757% 69.8252%); + --color-primary-400: hsl(203.5323 83.3938% 65.3218%); + --color-primary-500: hsl(202.7219 83.2512% 60.1961%); + --color-primary-600: hsl(202.7219 60.6301% 52.0894%); + --color-primary-700: hsl(202.7219 56.716% 44.2052%); + --color-primary-800: hsl(202.7219 58.0275% 36.5641%); + --color-primary-900: hsl(202.7219 59.9436% 29.1919%); + --color-secondary-content: hsl(342.5628 83.408% 4.0369%); + --color-secondary-50: hsl(340.9226 90.4677% 80.5355%); + --color-secondary-100: hsl(340.4917 88.7202% 78.513%); + --color-secondary-200: hsl(339.5367 85.4522% 74.3085%); + --color-secondary-300: hsl(338.4159 82.4897% 69.8458%); + --color-secondary-400: hsl(337.0457 79.8633% 65.0235%); + --color-secondary-500: hsl(335.25 77.6699% 59.6078%); + --color-secondary-600: hsl(335.25 56.79% 51.5738%); + --color-secondary-700: hsl(335.25 54.2417% 43.7602%); + --color-secondary-800: hsl(335.25 55.509% 36.1875%); + --color-secondary-900: hsl(335.25 57.3617% 28.8813%); + --color-accent-content: hsl(55.0595 92.6247% 4.47%); + --color-accent-50: hsl(56.6701 98.3135% 82.318%); + --color-accent-100: hsl(56.5387 98.53% 80.5085%); + --color-accent-200: hsl(56.3105 98.9455% 76.6664%); + --color-accent-300: hsl(56.1421 99.3344% 72.372%); + --color-accent-400: hsl(56.067 99.6905% 67.2295%); + --color-accent-500: hsl(56.1951 100% 59.8039%); + --color-accent-600: hsl(56.1951 73.0214% 51.7456%); + --color-accent-700: hsl(56.1951 69.2624% 43.9085%); + --color-accent-800: hsl(56.1951 70.8751% 36.313%); + --color-accent-900: hsl(56.1951 73.2321% 28.9848%); + --color-neutral-content: hsl(223.8136 0% 79.7895%); + --color-neutral-50: hsl(223.8136 0% 46.7263%); + --color-neutral-100: hsl(223.8136 0% 42.2843%); + --color-neutral-200: hsl(223.8136 0% 33.6486%); + --color-neutral-300: hsl(223.8136 0% 25.3798%); + --color-neutral-400: hsl(223.8136 0% 17.5346%); + --color-neutral-500: hsl(0 0% 10.1961%); + --color-neutral-600: hsl(223.8136 0% 8.2592%); + --color-neutral-700: hsl(223.8136 0% 6.3755%); + --color-neutral-800: hsl(223.8136 0% 4.5499%); + --color-neutral-900: hsl(223.8136 0% 2.8828%); + --color-info-content: hsl(196.4254 76.4613% 3.0069%); + --color-info-50: hsl(193.4024 46.4431% 74.7537%); + --color-info-100: hsl(193.3396 46.5097% 72.4102%); + --color-info-200: hsl(193.1827 46.7061% 67.6594%); + --color-info-300: hsl(192.9679 47.0206% 62.7795%); + --color-info-400: hsl(192.6633 47.5227% 57.6785%); + --color-info-500: hsl(192.2034 48.3607% 52.1569%); + --color-info-600: hsl(192.2034 45.0293% 45.0422%); + --color-info-700: hsl(192.2034 45.9187% 38.1228%); + --color-info-800: hsl(192.2034 47.1545% 31.4168%); + --color-info-900: hsl(192.2034 48.9765% 24.9467%); + --color-success-content: hsl(291.4769 31.417% 87.5815%); + --color-success-50: hsl(291.1507 30.2435% 66.1403%); + --color-success-100: hsl(291.105 30.0895% 63.0941%); + --color-success-200: hsl(291.0214 29.8106% 56.9945%); + --color-success-300: hsl(290.9605 29.5988% 50.8537%); + --color-success-400: hsl(290.9507 36.6721% 44.5983%); + --color-success-500: hsl(291.0638 48.4536% 38.0392%); + --color-success-600: hsl(291.0638 49.4603% 32.6666%); + --color-success-700: hsl(291.0638 50.8174% 27.4415%); + --color-success-800: hsl(291.0638 52.7375% 22.3775%); + --color-success-900: hsl(291.0638 55.6438% 17.4916%); + --color-warning-content: hsl(15.6727 91.5104% 4.0305%); + --color-warning-50: hsl(22.4417 90.6782% 78.4351%); + --color-warning-100: hsl(22.5456 89.854% 76.3321%); + --color-warning-200: hsl(22.8086 88.2823% 72.0044%); + --color-warning-300: hsl(23.1937 86.8337% 67.4467%); + --color-warning-400: hsl(23.8196 85.561% 62.4934%); + --color-warning-500: hsl(25.0267 84.6154% 56.6667%); + --color-warning-600: hsl(25.0267 65.6022% 48.9955%); + --color-warning-700: hsl(25.0267 66.7915% 41.5349%); + --color-warning-800: hsl(25.0267 68.4377% 34.3043%); + --color-warning-900: hsl(25.0267 70.8517% 27.3282%); + --color-danger-content: hsl(1.4472 91.2249% 3.8993%); + --color-danger-50: hsl(7.5281 94.4656% 77.7269%); + --color-danger-100: hsl(7.3341 92.6594% 75.5053%); + --color-danger-200: hsl(6.8556 89.2314% 70.9487%); + --color-danger-300: hsl(6.2143 86.0441% 66.2078%); + --color-danger-400: hsl(5.3207 83.1156% 61.1974%); + --color-danger-500: hsl(3.956 80.531% 55.6863%); + --color-danger-600: hsl(3.956 64.988% 48.1361%); + --color-danger-700: hsl(3.956 66.1876% 40.7931%); + --color-danger-800: hsl(3.956 67.8494% 33.6766%); + --color-danger-900: hsl(3.956 70.2888% 26.8105%); + --color-surface-200: hsl(223.8136 0.0001% 90.851%); + --color-surface-300: hsl(223.8136 0% 82.4954%); + --color-surface-content: hsl(223.8136 0% 8.6104%); +} + +[data-theme="autumn"] { + color-scheme: light; + --color-primary: hsl(344.2336 95.8042% 28.0392%); + --color-secondary: hsl(0.4444 63.3803% 58.2353%); + --color-accent: hsl(27.4766 56.0209% 62.549%); + --color-neutral: hsl(22.1053 17.1171% 43.5294%); + --color-surface-100: hsl(0 0% 94.5098%); + --color-info: hsl(186.9421 47.8261% 49.6078%); + --color-success: hsl(164.5946 33.6364% 43.1373%); + --color-warning: hsl(30.1408 84.1897% 49.6078%); + --color-danger: hsl(354.4845 100% 41.642%); + --color-primary-content: hsl(359.7822 43.9393% 87.1844%); + --color-primary-50: hsl(358.0209 38.9348% 64.1187%); + --color-primary-100: hsl(357.6026 38.2676% 60.7289%); + --color-primary-200: hsl(356.5219 37.0114% 53.8268%); + --color-primary-300: hsl(354.9098 41.0895% 46.6607%); + --color-primary-400: hsl(352.1432 55.5307% 38.8986%); + --color-primary-500: hsl(344.2336 95.8042% 28.0392%); + --color-primary-600: hsl(344.7131 96.4491% 24.1531%); + --color-primary-700: hsl(345.4076 97.0474% 20.401%); + --color-primary-800: hsl(346.432 97.5965% 16.789%); + --color-primary-900: hsl(348.0043 98.093% 13.3252%); + --color-secondary-content: hsl(0.2272 77.0618% 3.7077%); + --color-secondary-50: hsl(3.9709 73.8854% 77.9902%); + --color-secondary-100: hsl(3.7621 72.6137% 75.876%); + --color-secondary-200: hsl(3.2584 70.15% 71.5931%); + --color-secondary-300: hsl(2.6012 67.7884% 67.2339%); + --color-secondary-400: hsl(1.714 65.5289% 62.7884%); + --color-secondary-500: hsl(0.4444 63.3803% 58.2353%); + --color-secondary-600: hsl(0.4444 46.7549% 50.3706%); + --color-secondary-700: hsl(0.4444 46.8789% 42.7217%); + --color-secondary-800: hsl(0.4444 48.0015% 35.3087%); + --color-secondary-900: hsl(0.4444 49.6448% 28.1565%); + --color-accent-content: hsl(23.1592 62.2725% 3.9486%); + --color-accent-50: hsl(26.6918 57.9104% 79.6627%); + --color-accent-100: hsl(26.749 57.6731% 77.7967%); + --color-accent-200: hsl(26.8783 57.2123% 74.0475%); + --color-accent-300: hsl(27.034 56.7757% 70.2672%); + --color-accent-400: hsl(27.2274 56.3733% 66.4418%); + --color-accent-500: hsl(27.4766 56.0209% 62.549%); + --color-accent-600: hsl(27.4766 40.114% 54.152%); + --color-accent-700: hsl(27.4766 34.5188% 45.9854%); + --color-accent-800: hsl(27.4766 35.2854% 38.0707%); + --color-accent-900: hsl(27.4766 36.403% 30.4344%); + --color-neutral-content: hsl(21.7051 14.4479% 88.1294%); + --color-neutral-50: hsl(21.8336 13.9743% 68.0144%); + --color-neutral-100: hsl(21.8561 13.8981% 65.2139%); + --color-neutral-200: hsl(21.9052 13.7385% 59.6709%); + --color-neutral-300: hsl(21.9613 13.5684% 54.2074%); + --color-neutral-400: hsl(22.0268 14.0309% 48.8261%); + --color-neutral-500: hsl(22.1053 17.1171% 43.5294%); + --color-neutral-600: hsl(22.1053 17.4271% 37.4793%); + --color-neutral-700: hsl(22.1053 17.8424% 31.5953%); + --color-neutral-800: hsl(22.1053 18.425% 25.8927%); + --color-neutral-900: hsl(22.1053 19.296% 20.3908%); + --color-info-content: hsl(189.8329 79.9138% 2.8035%); + --color-info-50: hsl(187.6316 43.8366% 73.8052%); + --color-info-100: hsl(187.6134 43.987% 71.3575%); + --color-info-200: hsl(187.5526 44.3735% 66.3754%); + --color-info-300: hsl(187.4455 44.9229% 61.2154%); + --color-info-400: hsl(187.2636 45.7411% 55.739%); + --color-info-500: hsl(186.9421 47.8261% 49.6078%); + --color-info-600: hsl(186.9421 48.5843% 42.8077%); + --color-info-700: hsl(186.9421 49.5951% 36.1942%); + --color-info-800: hsl(186.9421 51.0029% 29.7847%); + --color-info-900: hsl(186.9421 53.0861% 23.6006%); + --color-success-content: hsl(159.7703 62.82% 1.8522%); + --color-success-50: hsl(161.7205 24.1199% 68.9039%); + --color-success-100: hsl(161.9382 24.1719% 66.1021%); + --color-success-200: hsl(162.4256 24.32% 60.488%); + --color-success-300: hsl(163.0019 24.5517% 54.8343%); + --color-success-400: hsl(163.703 25.8435% 49.0873%); + --color-success-500: hsl(164.5946 33.6364% 43.1373%); + --color-success-600: hsl(164.5946 34.2511% 37.1356%); + --color-success-700: hsl(164.5946 35.0751% 31.2986%); + --color-success-800: hsl(164.5946 36.2317% 25.6416%); + --color-success-900: hsl(164.5946 37.962% 20.1837%); + --color-warning-content: hsl(17.2366 98.0793% 3.7644%); + --color-warning-50: hsl(25.1016 86.5844% 76.4303%); + --color-warning-100: hsl(25.2458 85.907% 74.1214%); + --color-warning-200: hsl(25.625 84.6391% 69.3357%); + --color-warning-300: hsl(26.2144 83.5325% 64.1965%); + --color-warning-400: hsl(27.2725 82.7199% 58.3212%); + --color-warning-500: hsl(30.1408 84.1897% 49.6078%); + --color-warning-600: hsl(30.1408 85.5245% 42.8077%); + --color-warning-700: hsl(30.1408 87.3037% 36.1942%); + --color-warning-800: hsl(30.1092 89.6017% 29.813%); + --color-warning-900: hsl(29.8634 91.7987% 23.8037%); + --color-danger-content: hsl(4.986 99.3475% 90.8534%); + --color-danger-50: hsl(3.2054 83.4371% 73.2191%); + --color-danger-100: hsl(2.7424 81.4951% 70.5394%); + --color-danger-200: hsl(1.487 77.8227% 65.0369%); + --color-danger-300: hsl(359.4121 74.6315% 58.9829%); + --color-danger-400: hsl(354.9466 73.2158% 49.998%); + --color-danger-500: hsl(354.4845 100% 41.642%); + --color-danger-600: hsl(354.9957 100% 36.1642%); + --color-danger-700: hsl(355.6672 100% 30.8367%); + --color-danger-800: hsl(356.4983 100% 25.6735%); + --color-danger-900: hsl(357.264 100% 20.692%); + --color-surface-200: hsl(223.8136 0% 85.8369%); + --color-surface-300: hsl(223.8136 0% 77.9161%); + --color-surface-content: hsl(223.8136 0% 7.8761%); +} + +[data-theme="business"] { + color-scheme: dark; + --color-primary: hsl(210 64.1026% 30.5882%); + --color-secondary: hsl(200 12.931% 54.5098%); + --color-accent: hsl(12.5153 79.5122% 59.8039%); + --color-neutral: hsl(212.7273 13.5802% 15.8824%); + --color-surface-100: hsl(0 0% 12.549%); + --color-info: hsl(199.1549 100% 41.7647%); + --color-success: hsl(144 30.9735% 55.6863%); + --color-warning: hsl(39.2308 64.3564% 60.3922%); + --color-danger: hsl(6.3415 55.6561% 43.3333%); + --rounded-box: 0.25rem; + --rounded-btn: 0.125rem; + --rounded-badge: 0.125rem; + --color-primary-content: hsl(211.9142 30.4685% 85.6944%); + --color-primary-50: hsl(211.6742 29.2018% 61.3824%); + --color-primary-100: hsl(211.623 29.0154% 57.9803%); + --color-primary-200: hsl(211.4902 28.6516% 51.2171%); + --color-primary-300: hsl(211.2823 35.3524% 44.4821%); + --color-primary-400: hsl(210.9011 46.4518% 37.6981%); + --color-primary-500: hsl(210 64.1026% 30.5882%); + --color-primary-600: hsl(210 65.7672% 26.1351%); + --color-primary-700: hsl(210 68.0384% 21.8041%); + --color-primary-800: hsl(210 71.3057% 17.6067%); + --color-primary-900: hsl(210.055 76.1295% 13.576%); + --color-secondary-content: hsl(201.8357 23.1727% 2.7116%); + --color-secondary-50: hsl(200.2005 13.2026% 74.4186%); + --color-secondary-100: hsl(200.1838 13.1735% 72.1591%); + --color-secondary-200: hsl(200.147 13.1143% 67.6749%); + --color-secondary-300: hsl(200.105 13.0539% 63.238%); + --color-secondary-400: hsl(200.0566 12.9926% 58.8494%); + --color-secondary-500: hsl(200 12.931% 54.5098%); + --color-secondary-600: hsl(200 10.9468% 47.1048%); + --color-secondary-700: hsl(200 11.1534% 39.903%); + --color-secondary-800: hsl(200 11.4398% 32.9233%); + --color-secondary-900: hsl(200 11.8609% 26.1892%); + --color-accent-content: hsl(7.0767 84.0379% 4.0801%); + --color-accent-50: hsl(12.8008 89.374% 79.2809%); + --color-accent-100: hsl(12.7671 88.1328% 77.2657%); + --color-accent-200: hsl(12.6881 85.7511% 73.1554%); + --color-accent-300: hsl(12.6003 83.5063% 68.9163%); + --color-accent-400: hsl(12.5239 81.4129% 64.5003%); + --color-accent-500: hsl(12.5153 79.5122% 59.8039%); + --color-accent-600: hsl(12.5153 58.0609% 51.7456%); + --color-accent-700: hsl(12.5153 55.072% 43.9085%); + --color-accent-800: hsl(12.5153 56.3543% 36.313%); + --color-accent-900: hsl(12.5153 58.2285% 28.9848%); + --color-neutral-content: hsl(212.8863 3.0767% 81.3508%); + --color-neutral-50: hsl(212.8512 2.9246% 50.6328%); + --color-neutral-100: hsl(212.844 3.3363% 46.4743%); + --color-neutral-200: hsl(212.8265 4.5557% 38.3558%); + --color-neutral-300: hsl(212.8038 6.2849% 30.5253%); + --color-neutral-400: hsl(212.7729 8.9406% 23.0183%); + --color-neutral-500: hsl(212.7273 13.5802% 15.8824%); + --color-neutral-600: hsl(212.7273 14.2762% 13.2438%); + --color-neutral-700: hsl(212.7273 15.2829% 10.6777%); + --color-neutral-800: hsl(212.7273 16.8605% 8.1908%); + --color-neutral-900: hsl(212.7273 19.6668% 5.7913%); + --color-info-content: hsl(212.5951 100% 3.2038%); + --color-info-50: hsl(204.9772 68.8424% 73.5398%); + --color-info-100: hsl(204.8233 68.6424% 70.9989%); + --color-info-200: hsl(204.4219 68.3451% 65.7488%); + --color-info-300: hsl(203.81 68.2709% 60.1164%); + --color-info-400: hsl(202.7269 68.6838% 53.5988%); + --color-info-500: hsl(199.1549 100% 41.7647%); + --color-info-600: hsl(199.3341 100% 36.2717%); + --color-info-700: hsl(199.5695 100% 30.9295%); + --color-info-800: hsl(199.8907 100% 25.752%); + --color-info-900: hsl(200.3526 100% 20.7567%); + --color-success-content: hsl(139.6933 49.6712% 3.0195%); + --color-success-50: hsl(140.9887 30.3385% 75.8203%); + --color-success-100: hsl(141.2316 30.3576% 73.6196%); + --color-success-200: hsl(141.7691 30.4224% 69.2043%); + --color-success-300: hsl(142.3905 30.533% 64.7588%); + --color-success-400: hsl(143.1213 30.7072% 60.2634%); + --color-success-500: hsl(144 30.9735% 55.6863%); + --color-success-600: hsl(144 24.9954% 48.1361%); + --color-success-700: hsl(144 25.4568% 40.7931%); + --color-success-800: hsl(144 26.0959% 33.6766%); + --color-success-900: hsl(144 27.0342% 26.8105%); + --color-warning-content: hsl(35.11 73.3698% 3.8774%); + --color-warning-50: hsl(38.1926 64.0169% 78.9784%); + --color-warning-100: hsl(38.2426 63.9819% 77.0255%); + --color-warning-200: hsl(38.3737 63.9456% 73.0711%); + --color-warning-300: hsl(38.5606 63.9709% 69.024%); + --color-warning-400: hsl(38.8302 64.0888% 64.8309%); + --color-warning-500: hsl(39.2308 64.3564% 60.3922%); + --color-warning-600: hsl(39.2308 46.8064% 52.2613%); + --color-warning-700: hsl(39.2308 43.4818% 44.3536%); + --color-warning-800: hsl(39.2308 44.4838% 36.6897%); + --color-warning-900: hsl(39.2308 45.9475% 29.2955%); + --color-danger-content: hsl(9.0406 53.9346% 88.9946%); + --color-danger-50: hsl(8.5775 48.7104% 69.4418%); + --color-danger-100: hsl(8.4597 47.9787% 66.6165%); + --color-danger-200: hsl(8.162 46.5316% 60.9343%); + --color-danger-300: hsl(7.7535 45.1181% 55.1946%); + --color-danger-400: hsl(7.1801 44.9039% 49.3597%); + --color-danger-500: hsl(6.3415 55.6561% 43.3333%); + --color-danger-600: hsl(6.3415 56.6686% 37.3075%); + --color-danger-700: hsl(6.3415 58.0255% 31.447%); + --color-danger-800: hsl(6.3415 59.9295% 25.7672%); + --color-danger-900: hsl(6.3415 62.777% 20.2873%); + --color-surface-200: hsl(223.8136 0% 10.9838%); + --color-surface-300: hsl(223.8136 0% 9.5543%); + --color-surface-content: hsl(223.8136 0% 80.4409%); +} + +[data-theme="acid"] { + color-scheme: light; + --color-primary: hsl(300 100% 50%); + --color-secondary: hsl(25.9816 100% 50%); + --color-accent: hsl(73.0318 100% 50%); + --color-neutral: hsl(254.0153 97.4904% 16.1015%); + --color-surface-100: hsl(0 0% 98.0392%); + --color-info: hsl(210.0636 100% 50%); + --color-success: hsl(152.4739 100% 50%); + --color-warning: hsl(53.2818 100% 50%); + --color-danger: hsl(0 100% 50%); + --rounded-box: 1.25rem; + --rounded-btn: 1rem; + --rounded-badge: 1rem; + --tab-radius: 0.7rem; + --color-primary-content: hsl(303.7094 100% 4.8138%); + --color-primary-50: hsl(300 100% 79.7412%); + --color-primary-100: hsl(300 100% 77.575%); + --color-primary-200: hsl(300 100% 72.8384%); + --color-primary-300: hsl(300 100% 67.1361%); + --color-primary-400: hsl(300 100% 58.5001%); + --color-primary-500: hsl(300 100% 50%); + --color-primary-600: hsl(302.4994 100% 46.824%); + --color-primary-700: hsl(302.5229 100% 40.0371%); + --color-primary-800: hsl(302.5548 100% 33.4595%); + --color-primary-900: hsl(302.6002 100% 27.1134%); + --color-secondary-content: hsl(10.1311 100% 4.8114%); + --color-secondary-50: hsl(23.6927 100% 76.2996%); + --color-secondary-100: hsl(23.7165 100% 73.9684%); + --color-secondary-200: hsl(23.9438 100% 69.0094%); + --color-secondary-300: hsl(24.6847 100% 63.2298%); + --color-secondary-400: hsl(27.6825 100% 53.8578%); + --color-secondary-500: hsl(25.9816 100% 50%); + --color-secondary-600: hsl(23.8934 100% 46.8088%); + --color-secondary-700: hsl(23.5537 100% 40.024%); + --color-secondary-800: hsl(23.0931 100% 33.4485%); + --color-secondary-900: hsl(22.4368 100% 27.1043%); + --color-accent-content: hsl(80.5651 100% 4.3404%); + --color-accent-50: hsl(77.0177 100% 78.2827%); + --color-accent-100: hsl(76.637 100% 75.8468%); + --color-accent-200: hsl(75.6887 100% 70.3186%); + --color-accent-300: hsl(74.2299 100% 62.8551%); + --color-accent-400: hsl(71.8109 100% 50%); + --color-accent-500: hsl(73.0318 100% 50%); + --color-accent-600: hsl(73.3808 100% 43.7215%); + --color-accent-700: hsl(73.5156 100% 37.3594%); + --color-accent-800: hsl(73.6988 100% 31.1935%); + --color-accent-900: hsl(73.9603 100% 25.2445%); + --color-neutral-content: hsl(231.8127 23.4749% 82.2725%); + --color-neutral-50: hsl(233.6449 21.0781% 52.7408%); + --color-neutral-100: hsl(234.1486 21.7398% 48.7122%); + --color-neutral-200: hsl(235.5731 28.5165% 40.8393%); + --color-neutral-300: hsl(238.0264 37.1684% 33.2711%); + --color-neutral-400: hsl(242.9395 51.9839% 25.4939%); + --color-neutral-500: hsl(254.0153 97.4904% 16.1015%); + --color-neutral-600: hsl(252.9572 97.8569% 13.7455%); + --color-neutral-700: hsl(251.4827 98.1952% 11.4635%); + --color-neutral-800: hsl(249.5473 98.5033% 9.2603%); + --color-neutral-900: hsl(247.774 98.7779% 7.1418%); + --color-info-content: hsl(225.0408 100% 4.4164%); + --color-info-50: hsl(210.0186 100% 74.1831%); + --color-info-100: hsl(209.9793 100% 71.6469%); + --color-info-200: hsl(209.6887 100% 66.2016%); + --color-info-300: hsl(208.6982 100% 59.4997%); + --color-info-400: hsl(206.562 100% 50%); + --color-info-500: hsl(210.0636 100% 50%); + --color-info-600: hsl(210.7877 100% 44.2196%); + --color-info-700: hsl(211.0945 100% 37.7893%); + --color-info-800: hsl(211.511 100% 31.5573%); + --color-info-900: hsl(212.1055 100% 25.5446%); + --color-success-content: hsl(138.1514 100% 4.3426%); + --color-success-50: hsl(149.0902 100% 76.2099%); + --color-success-100: hsl(150.0929 100% 73.1203%); + --color-success-200: hsl(152.9737 100% 65.1278%); + --color-success-300: hsl(158.3301 100% 50%); + --color-success-400: hsl(155.4451 100% 50%); + --color-success-500: hsl(152.4739 100% 50%); + --color-success-600: hsl(152.0782 100% 43.7361%); + --color-success-700: hsl(151.7969 100% 37.372%); + --color-success-800: hsl(151.4148 100% 31.2042%); + --color-success-900: hsl(150.8692 100% 25.2533%); + --color-warning-content: hsl(48.6708 100% 4.3843%); + --color-warning-50: hsl(52.3743 100% 78.7644%); + --color-warning-100: hsl(52.3745 100% 76.4638%); + --color-warning-200: hsl(52.4598 100% 71.3651%); + --color-warning-300: hsl(52.7474 100% 64.9582%); + --color-warning-400: hsl(53.9826 100% 51.1169%); + --color-warning-500: hsl(53.2818 100% 50%); + --color-warning-600: hsl(52.6028 100% 44.0089%); + --color-warning-700: hsl(52.5287 100% 37.6075%); + --color-warning-800: hsl(52.4281 100% 31.4034%); + --color-warning-900: hsl(52.2845 100% 25.4176%); + --color-danger-content: hsl(0 100% 4.8612%); + --color-danger-50: hsl(8.8437 100% 75.3492%); + --color-danger-100: hsl(8.3614 100% 73.0335%); + --color-danger-200: hsl(7.2264 100% 68.2221%); + --color-danger-300: hsl(5.7332 100% 62.8914%); + --color-danger-400: hsl(3.4 100% 55.6562%); + --color-danger-500: hsl(0 100% 50%); + --color-danger-600: hsl(360 100% 47.1349%); + --color-danger-700: hsl(0 100% 40.3055%); + --color-danger-800: hsl(0 100% 33.6866%); + --color-danger-900: hsl(0 100% 27.3007%); + --color-surface-200: hsl(223.8136 0.0001% 89.0602%); + --color-surface-300: hsl(223.8136 0% 80.8599%); + --color-surface-content: hsl(223.8136 0% 8.3482%); +} + +[data-theme="lemonade"] { + color-scheme: light; + --color-primary: hsl(93.4996 100% 29.0294%); + --color-secondary: hsl(60.8502 100% 37.6616%); + --color-accent: hsl(52.6958 100% 46.4788%); + --color-neutral: hsl(58.4134 100% 10.1809%); + --color-surface-100: hsl(82.6841 81.8906% 96.5044%); + --color-info: hsl(197.1466 55.5016% 80.42%); + --color-success: hsl(142.5226 32.7183% 79.3071%); + --color-warning: hsl(54.0615 32.8556% 76.7519%); + --color-danger: hsl(6.2376 58.9836% 84.8923%); + --color-primary-content: hsl(109.1708 100% 1.5316%); + --color-primary-50: hsl(97.93 38.4425% 63.2134%); + --color-primary-100: hsl(97.5997 38.486% 59.7635%); + --color-primary-200: hsl(96.6731 38.7883% 52.6394%); + --color-primary-300: hsl(95.0069 48.8173% 44.8423%); + --color-primary-400: hsl(89.9607 85.7813% 33.5969%); + --color-primary-500: hsl(93.4996 100% 29.0294%); + --color-primary-600: hsl(93.9523 100% 25.108%); + --color-primary-700: hsl(94.5526 100% 21.2941%); + --color-primary-800: hsl(95.3827 100% 17.5979%); + --color-primary-900: hsl(96.598 100% 14.0317%); + --color-secondary-content: hsl(61.6131 100% 2.655%); + --color-secondary-50: hsl(63.2518 56.1981% 70.3169%); + --color-secondary-100: hsl(62.9727 56.3816% 67.3239%); + --color-secondary-200: hsl(62.4033 57.039% 60.9192%); + --color-secondary-300: hsl(61.8114 58.4603% 53.3641%); + --color-secondary-400: hsl(61.082 100% 38.9992%); + --color-secondary-500: hsl(60.8502 100% 37.6616%); + --color-secondary-600: hsl(60.8591 100% 32.675%); + --color-secondary-700: hsl(60.8707 100% 27.8252%); + --color-secondary-800: hsl(60.8866 100% 23.1249%); + --color-secondary-900: hsl(60.9096 100% 18.59%); + --color-accent-content: hsl(48.1577 100% 3.8343%); + --color-accent-50: hsl(52.0804 82.9217% 75.8541%); + --color-accent-100: hsl(52.0424 83.2457% 73.3537%); + --color-accent-200: hsl(52.061 84.0111% 67.9033%); + --color-accent-300: hsl(52.3065 85.0851% 61.2291%); + --color-accent-400: hsl(53.6574 99.2271% 46.9722%); + --color-accent-500: hsl(52.6958 100% 46.4788%); + --color-accent-600: hsl(52.6344 100% 40.4042%); + --color-accent-700: hsl(52.554 100% 34.4962%); + --color-accent-800: hsl(52.4446 100% 28.7704%); + --color-accent-900: hsl(52.288 100% 23.2461%); + --color-neutral-content: hsl(62.4437 11.0501% 80.3925%); + --color-neutral-50: hsl(61.3377 11.6994% 47.9634%); + --color-neutral-100: hsl(61.1184 13.951% 43.5385%); + --color-neutral-200: hsl(60.6131 20.0975% 34.8351%); + --color-neutral-300: hsl(60.0045 30.456% 26.2683%); + --color-neutral-400: hsl(59.3163 54.0588% 17.6182%); + --color-neutral-500: hsl(58.4134 100% 10.1809%); + --color-neutral-600: hsl(58.3507 100% 8.5853%); + --color-neutral-700: hsl(58.2624 100% 7.0334%); + --color-neutral-800: hsl(58.1296 100% 5.5294%); + --color-neutral-900: hsl(57.9085 100% 4.0784%); + --color-info-content: hsl(197.1466 24.2582% 5.9916%); + --color-info-50: hsl(197.3691 55.6859% 89.2917%); + --color-info-100: hsl(197.3487 55.6586% 88.3127%); + --color-info-200: hsl(197.305 55.6085% 86.3506%); + --color-info-300: hsl(197.2572 55.565% 84.382%); + --color-info-400: hsl(197.2046 55.529% 82.4056%); + --color-info-500: hsl(197.1466 55.5016% 80.42%); + --color-info-600: hsl(197.1466 31.5623% 69.8178%); + --color-info-700: hsl(197.1466 20.3046% 59.5065%); + --color-info-800: hsl(197.1466 14.053% 49.5132%); + --color-info-900: hsl(197.1466 14.3927% 39.8715%); + --color-success-content: hsl(142.5226 15.4982% 5.8428%); + --color-success-50: hsl(141.6518 32.7194% 88.6213%); + --color-success-100: hsl(141.739 32.7147% 87.5875%); + --color-success-200: hsl(141.9199 32.7082% 85.5196%); + --color-success-300: hsl(142.1102 32.7063% 83.4506%); + --color-success-400: hsl(142.3108 32.7094% 81.38%); + --color-success-500: hsl(142.5226 32.7183% 79.3071%); + --color-success-600: hsl(142.5226 19.0479% 68.8422%); + --color-success-700: hsl(142.5226 12.3923% 58.6645%); + --color-success-800: hsl(142.5226 8.883% 48.8006%); + --color-success-900: hsl(142.5226 9.101% 39.2838%); + --color-warning-content: hsl(54.0615 18.5712% 5.501%); + --color-warning-50: hsl(54.4564 32.5814% 87.1401%); + --color-warning-100: hsl(54.4125 32.6067% 85.9808%); + --color-warning-200: hsl(54.3246 32.6607% 83.6663%); + --color-warning-300: hsl(54.2367 32.7198% 81.3571%); + --color-warning-400: hsl(54.1489 32.7845% 79.0526%); + --color-warning-500: hsl(54.0615 32.8556% 76.7519%); + --color-warning-600: hsl(54.0615 20.0485% 66.6023%); + --color-warning-700: hsl(54.0615 13.3562% 56.7313%); + --color-warning-800: hsl(54.0615 10.3694% 47.1646%); + --color-warning-900: hsl(54.0615 10.6329% 37.9345%); + --color-danger-content: hsl(6.2376 18.0861% 6.5898%); + --color-danger-50: hsl(6.4363 61.5681% 91.7492%); + --color-danger-100: hsl(6.4176 61.2769% 90.9918%); + --color-danger-200: hsl(6.3779 60.6976% 89.4737%); + --color-danger-300: hsl(6.3349 60.1224% 87.951%); + --color-danger-400: hsl(6.2882 59.5511% 86.4238%); + --color-danger-500: hsl(6.2376 58.9836% 84.8923%); + --color-danger-600: hsl(6.2376 29.7446% 73.7382%); + --color-danger-700: hsl(6.2376 18.1679% 62.8902%); + --color-danger-800: hsl(6.2376 11.9807% 52.3767%); + --color-danger-900: hsl(6.2376 11.142% 42.2332%); + --color-surface-200: hsl(82.6841 21.1834% 87.6585%); + --color-surface-300: hsl(82.6841 11.6925% 79.5797%); + --color-surface-content: hsl(82.6841 4.7019% 8.1429%); +} + +[data-theme="night"] { + color-scheme: dark; + --color-primary: hsl(198.4375 93.2039% 59.6078%); + --color-secondary: hsl(234.4538 89.4737% 73.9216%); + --color-accent: hsl(328.855 85.6209% 70%); + --color-neutral: hsl(217.2414 32.5843% 17.451%); + --color-surface-100: hsl(222.2222 47.3684% 11.1765%); + --color-info: hsl(198.4615 90.2041% 48.0392%); + --color-info-content: hsl(0 0% 0%); + --color-success: hsl(172.4551 66.0079% 50.3922%); + --color-warning: hsl(40.6098 88.172% 63.5294%); + --color-danger: hsl(350.9353 94.5578% 71.1765%); + --color-primary-content: hsl(203.6994 90.5513% 4.326%); + --color-primary-50: hsl(201.1834 95.3375% 80.8549%); + --color-primary-100: hsl(201.0466 95.007% 78.9452%); + --color-primary-200: hsl(200.7106 94.3895% 74.9603%); + --color-primary-300: hsl(200.2524 93.8466% 70.6536%); + --color-primary-400: hsl(199.5808 93.4162% 65.7806%); + --color-primary-500: hsl(198.4375 93.2039% 59.6078%); + --color-primary-600: hsl(198.4375 68.148% 51.5738%); + --color-primary-700: hsl(198.4375 65.0901% 43.7602%); + --color-primary-800: hsl(198.4375 66.6109% 36.1875%); + --color-primary-900: hsl(198.4375 68.834% 28.8813%); + --color-secondary-content: hsl(235.565 56.8311% 5.2561%); + --color-secondary-50: hsl(231.3883 97.6838% 85.6269%); + --color-secondary-100: hsl(231.6256 96.7279% 84.3101%); + --color-secondary-200: hsl(232.1616 94.8549% 81.6823%); + --color-secondary-300: hsl(232.7946 93.027% 79.0686%); + --color-secondary-400: hsl(233.5481 91.2361% 76.478%); + --color-secondary-500: hsl(234.4538 89.4737% 73.9216%); + --color-secondary-600: hsl(234.4538 57.0088% 64.1212%); + --color-secondary-700: hsl(234.4538 38.8764% 54.5898%); + --color-secondary-800: hsl(234.4538 32.942% 45.3523%); + --color-secondary-900: hsl(234.4538 33.8134% 36.4399%); + --color-accent-content: hsl(331.3375 64.9536% 4.8701%); + --color-accent-50: hsl(332.2661 98.013% 85.0031%); + --color-accent-100: hsl(331.9428 96.4242% 83.4779%); + --color-accent-200: hsl(331.2651 93.4108% 80.3364%); + --color-accent-300: hsl(330.5363 90.6073% 77.0609%); + --color-accent-400: hsl(329.7407 88.0091% 73.6283%); + --color-accent-500: hsl(328.855 85.6209% 70%); + --color-accent-600: hsl(328.855 57.2704% 60.6836%); + --color-accent-700: hsl(328.855 40.1719% 51.6228%); + --color-accent-800: hsl(328.855 38.3893% 42.8414%); + --color-accent-900: hsl(328.855 39.4659% 34.3691%); + --color-neutral-content: hsl(217.0558 8.3669% 81.8251%); + --color-neutral-50: hsl(217.0594 7.9131% 51.7923%); + --color-neutral-100: hsl(217.0633 8.5821% 47.7122%); + --color-neutral-200: hsl(217.0769 11.6027% 39.7314%); + --color-neutral-300: hsl(217.1027 15.7981% 32.0085%); + --color-neutral-400: hsl(217.1509 22.0652% 24.5706%); + --color-neutral-500: hsl(217.2414 32.5843% 17.451%); + --color-neutral-600: hsl(217.2414 34.097% 14.6189%); + --color-neutral-700: hsl(217.2414 36.2609% 11.8646%); + --color-neutral-800: hsl(217.2414 39.5951% 9.1951%); + --color-neutral-900: hsl(217.2804 45.292% 6.6228%); + --color-info-50: hsl(203.4771 82.9215% 76.8862%); + --color-info-100: hsl(203.3168 82.6486% 74.6076%); + --color-info-200: hsl(202.906 82.1878% 69.8521%); + --color-info-300: hsl(202.2997 81.898% 64.6679%); + --color-info-400: hsl(201.2804 81.9454% 58.5588%); + --color-info-500: hsl(198.4615 90.2041% 48.0392%); + --color-info-600: hsl(198.4655 91.644% 41.4408%); + --color-info-700: hsl(198.5209 93.0736% 35.1126%); + --color-info-800: hsl(198.6615 94.3968% 29.0776%); + --color-info-900: hsl(198.9317 95.6042% 23.3406%); + --color-success-content: hsl(169.1372 91.8135% 3.3131%); + --color-success-50: hsl(169.0357 60.9289% 77.223%); + --color-success-100: hsl(169.2869 61.0884% 74.9343%); + --color-success-200: hsl(169.8372 61.5465% 70.1334%); + --color-success-300: hsl(170.4774 62.2767% 64.8849%); + --color-success-400: hsl(171.2723 63.498% 58.799%); + --color-success-500: hsl(172.4551 66.0079% 50.3922%); + --color-success-600: hsl(172.4551 65.9945% 43.4953%); + --color-success-700: hsl(172.4551 67.3452% 36.7876%); + --color-success-800: hsl(172.4551 69.2253% 30.2868%); + --color-success-900: hsl(172.4551 72.0039% 24.0148%); + --color-warning-content: hsl(36.8484 81.2888% 4.4313%); + --color-warning-50: hsl(39.1379 88.6283% 81.5778%); + --color-warning-100: hsl(39.2032 88.5219% 79.8039%); + --color-warning-200: hsl(39.378 88.3334% 76.1568%); + --color-warning-300: hsl(39.6336 88.1903% 72.3238%); + --color-warning-400: hsl(40.014 88.1187% 68.1941%); + --color-warning-500: hsl(40.6098 88.172% 63.5294%); + --color-warning-600: hsl(40.6098 62.6577% 55.0114%); + --color-warning-700: hsl(40.6098 52.0675% 46.7272%); + --color-warning-800: hsl(40.6098 53.2051% 38.6984%); + --color-warning-900: hsl(40.6098 54.862% 30.9522%); + --color-danger-content: hsl(353.3132 66.7558% 5.0377%); + --color-danger-50: hsl(354.1213 100% 85.1155%); + --color-danger-100: hsl(353.8868 100% 83.7278%); + --color-danger-200: hsl(353.3674 100% 80.9163%); + --color-danger-300: hsl(352.7649 100% 78.0401%); + --color-danger-400: hsl(351.9595 97.7077% 74.7813%); + --color-danger-500: hsl(350.9353 94.5578% 71.1765%); + --color-danger-600: hsl(350.9353 62.4047% 61.7149%); + --color-danger-700: hsl(350.9353 43.4242% 52.5129%); + --color-danger-800: hsl(350.9353 40.0298% 43.5947%); + --color-danger-900: hsl(350.9353 41.1326% 34.9903%); + --color-surface-200: hsl(222.2222 49.6903% 9.7303%); + --color-surface-300: hsl(222.219 52.5148% 8.4092%); + --color-surface-content: hsl(220.8541 7.8181% 80.145%); +} + +[data-theme="coffee"] { + color-scheme: dark; + --color-primary: hsl(29.5833 66.6667% 57.6471%); + --color-secondary: hsl(182.4 24.7525% 19.8039%); + --color-accent: hsl(194.1935 74.4% 24.5098%); + --color-neutral: hsl(300 20% 5.8824%); + --color-surface-100: hsl(306 18.5185% 10.5882%); + --color-surface-content: hsl(37.4257 46.5438% 57.451%); + --color-info: hsl(171.1475 36.5269% 67.2549%); + --color-success: hsl(92.5 25% 62.3529%); + --color-warning: hsl(43.125 100% 68.6275%); + --color-danger: hsl(9.7561 95.3488% 74.7059%); + --color-primary-content: hsl(22.4563 80.4753% 3.7247%); + --color-primary-50: hsl(27.9304 68.7647% 77.6841%); + --color-primary-100: hsl(28.0223 68.4476% 75.5946%); + --color-primary-200: hsl(28.2439 67.8511% 71.3566%); + --color-primary-300: hsl(28.5389 67.3237% 67.008%); + --color-primary-400: hsl(28.9537 66.9032% 62.4833%); + --color-primary-500: hsl(29.5833 66.6667% 57.6471%); + --color-primary-600: hsl(29.5833 49.6464% 49.8549%); + --color-primary-700: hsl(29.5833 50.5306% 42.2766%); + --color-primary-800: hsl(29.5833 51.7536% 34.932%); + --color-primary-900: hsl(29.5833 53.5452% 27.8459%); + --color-secondary-content: hsl(181.7497 6.3066% 82.5018%); + --color-secondary-50: hsl(181.9436 6.1715% 53.4862%); + --color-secondary-100: hsl(181.9804 6.2691% 49.528%); + --color-secondary-200: hsl(182.0633 8.5256% 41.7666%); + --color-secondary-300: hsl(182.1608 11.6961% 34.2219%); + --color-secondary-400: hsl(182.2743 16.5036% 26.9029%); + --color-secondary-500: hsl(182.4 24.7525% 19.8039%); + --color-secondary-600: hsl(182.4 25.7595% 16.6815%); + --color-secondary-700: hsl(182.4 27.181% 13.6448%); + --color-secondary-800: hsl(182.4 29.3285% 10.7017%); + --color-secondary-900: hsl(182.4 32.9243% 7.8622%); + --color-accent-content: hsl(197.579 22.0364% 84.6848%); + --color-accent-50: hsl(197.2253 21.7661% 58.7581%); + --color-accent-100: hsl(197.1362 21.7552% 55.1321%); + --color-accent-200: hsl(196.8977 23.6884% 47.909%); + --color-accent-300: hsl(196.5233 32.0291% 40.6633%); + --color-accent-400: hsl(195.8553 45.1257% 33.2008%); + --color-accent-500: hsl(194.1935 74.4% 24.5098%); + --color-accent-600: hsl(194.1935 76.8268% 20.8067%); + --color-accent-700: hsl(194.2034 80.0892% 17.2148%); + --color-accent-800: hsl(194.3516 83.4129% 13.8434%); + --color-accent-900: hsl(194.7514 86.5001% 10.7113%); + --color-neutral-content: hsl(301.3634 1.6631% 78.569%); + --color-neutral-50: hsl(301.1604 2.0087% 43.6882%); + --color-neutral-100: hsl(301.1129 2.4028% 39.0296%); + --color-neutral-200: hsl(300.9913 3.4789% 30.003%); + --color-neutral-300: hsl(300.8135 5.2582% 21.4113%); + --color-neutral-400: hsl(300.5288 8.8169% 13.3317%); + --color-neutral-500: hsl(300 20% 5.8824%); + --color-neutral-600: hsl(300 22.8081% 4.4859%); + --color-neutral-700: hsl(300 24.3932% 3.2167%); + --color-neutral-800: hsl(300 24.3932% 2.1549%); + --color-neutral-900: hsl(300 24.3932% 1.357%); + --color-info-content: hsl(170.7967 35.8533% 4.2918%); + --color-info-50: hsl(170.1487 35.9249% 82.1693%); + --color-info-100: hsl(170.2466 35.9625% 80.5361%); + --color-info-200: hsl(170.451 36.0551% 77.2571%); + --color-info-300: hsl(170.668 36.1752% 73.9561%); + --color-info-400: hsl(170.8994 36.3296% 70.6255%); + --color-info-500: hsl(171.1475 36.5269% 67.2549%); + --color-info-600: hsl(171.1475 25.1298% 58.2772%); + --color-info-700: hsl(171.1475 18.2648% 49.5459%); + --color-info-800: hsl(171.1475 18.6407% 41.0838%); + --color-info-900: hsl(171.1475 19.1865% 32.9195%); + --color-success-content: hsl(94.7435 31.7487% 3.6691%); + --color-success-50: hsl(93.3782 25.2385% 79.0975%); + --color-success-100: hsl(93.3001 25.2049% 77.2235%); + --color-success-200: hsl(93.1318 25.1416% 73.4871%); + --color-success-300: hsl(92.945 25.0847% 69.7647%); + --color-success-400: hsl(92.736 25.0365% 66.0543%); + --color-success-500: hsl(92.5 25% 62.3529%); + --color-success-600: hsl(92.5 17.9279% 53.9801%); + --color-success-700: hsl(92.5 15.5352% 45.8371%); + --color-success-800: hsl(92.5 15.8814% 37.9451%); + --color-success-900: hsl(92.5 16.3861% 30.3309%); + --color-warning-content: hsl(40.9339 75.8444% 4.8966%); + --color-warning-50: hsl(42.3467 100% 84.1486%); + --color-warning-100: hsl(42.3625 100% 82.6164%); + --color-warning-200: hsl(42.4289 100% 79.4633%); + --color-warning-300: hsl(42.5562 100% 76.1489%); + --color-warning-400: hsl(42.7715 100% 72.5901%); + --color-warning-500: hsl(43.125 100% 68.6275%); + --color-warning-600: hsl(43.125 67.8715% 59.4804%); + --color-warning-700: hsl(43.125 48.0339% 50.5843%); + --color-warning-800: hsl(43.125 47.8696% 41.9626%); + --color-warning-900: hsl(43.125 49.2411% 33.6443%); + --color-danger-content: hsl(8.1248 57.6757% 5.361%); + --color-danger-50: hsl(10.6001 100% 86.333%); + --color-danger-100: hsl(10.4952 100% 85.1052%); + --color-danger-200: hsl(10.2754 100% 82.6536%); + --color-danger-300: hsl(10.0524 99.7767% 80.1823%); + --color-danger-400: hsl(9.916 97.5138% 77.4734%); + --color-danger-500: hsl(9.7561 95.3488% 74.7059%); + --color-danger-600: hsl(9.7561 60.0763% 64.8087%); + --color-danger-700: hsl(9.7561 40.7152% 55.1832%); + --color-danger-800: hsl(9.7561 33.6764% 45.8545%); + --color-danger-900: hsl(9.7561 34.5572% 36.8541%); + --color-surface-200: hsl(306 19.4793% 9.1931%); + --color-surface-300: hsl(306 20.6526% 7.9189%); +} + +[data-theme="winter"] { + color-scheme: light; + --color-primary: hsl(215.4061 100% 50%); + --color-secondary: hsl(246.9231 47.2727% 43.1373%); + --color-accent: hsl(310.4132 49.3878% 51.9608%); + --color-neutral: hsl(217.0213 92.1569% 10%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-200: hsl(216.9231 100% 97.451%); + --color-surface-300: hsl(218.8235 43.5897% 92.3529%); + --color-surface-content: hsl(214.2857 30.0613% 31.9608%); + --color-info: hsl(191.5385 92.8571% 78.0392%); + --color-success: hsl(181.5 46.5116% 66.2745%); + --color-warning: hsl(32.3077 61.9048% 83.5294%); + --color-danger: hsl(0 63.3803% 72.1569%); + --color-primary-content: hsl(212.4625 100% 90.3464%); + --color-primary-50: hsl(213.4814 100% 73.358%); + --color-primary-100: hsl(213.5783 100% 70.833%); + --color-primary-200: hsl(213.6319 100% 65.5289%); + --color-primary-300: hsl(213.1749 100% 59.3604%); + --color-primary-400: hsl(210.994 100% 50%); + --color-primary-500: hsl(215.4061 100% 50%); + --color-primary-600: hsl(216.4922 100% 44.989%); + --color-primary-700: hsl(216.8494 100% 38.4533%); + --color-primary-800: hsl(217.3345 100% 32.1192%); + --color-primary-900: hsl(218.0263 100% 26.008%); + --color-secondary-content: hsl(235.8529 43.4015% 88.5918%); + --color-secondary-50: hsl(238.0994 39.4748% 69.0245%); + --color-secondary-100: hsl(238.605 38.8639% 66.2902%); + --color-secondary-200: hsl(239.8565 37.5885% 60.8873%); + --color-secondary-300: hsl(241.5263 36.8215% 55.1732%); + --color-secondary-400: hsl(243.7677 37.2698% 49.2895%); + --color-secondary-500: hsl(246.9231 47.2727% 43.1373%); + --color-secondary-600: hsl(246.9231 48.1367% 37.1356%); + --color-secondary-700: hsl(246.9231 49.2947% 31.2986%); + --color-secondary-800: hsl(246.9231 50.9202% 25.6416%); + --color-secondary-900: hsl(246.9231 53.352% 20.1837%); + --color-accent-content: hsl(314.095 77.778% 3.0142%); + --color-accent-50: hsl(313.8406 53.6827% 75.1216%); + --color-accent-100: hsl(313.5177 53.0661% 72.7338%); + --color-accent-200: hsl(312.8416 51.9014% 67.8663%); + --color-accent-300: hsl(312.1147 50.8536% 62.8424%); + --color-accent-400: hsl(311.3176 49.9771% 57.5911%); + --color-accent-500: hsl(310.4132 49.3878% 51.9608%); + --color-accent-600: hsl(310.4132 46.351% 44.8703%); + --color-accent-700: hsl(310.4132 47.2701% 37.9744%); + --color-accent-800: hsl(310.4132 48.5473% 31.2912%); + --color-accent-900: hsl(310.4132 50.431% 24.8431%); + --color-neutral-content: hsl(215.5731 13.2527% 79.9757%); + --color-neutral-50: hsl(215.5382 13.9448% 47.0444%); + --color-neutral-100: hsl(215.5369 16.4864% 42.5914%); + --color-neutral-200: hsl(215.5391 23.1742% 33.8988%); + --color-neutral-300: hsl(215.5419 33.5602% 25.5065%); + --color-neutral-400: hsl(215.4795 52.5215% 17.4096%); + --color-neutral-500: hsl(217.0213 92.1569% 10%); + --color-neutral-600: hsl(218.3577 93.1679% 8.3688%); + --color-neutral-700: hsl(220.3389 94.0951% 6.8006%); + --color-neutral-800: hsl(223.1084 94.9213% 5.297%); + --color-neutral-900: hsl(225.5098 95.6116% 3.8605%); + --color-info-content: hsl(191.6883 47.1681% 5.7082%); + --color-info-50: hsl(191.9494 93.5787% 88.5692%); + --color-info-100: hsl(191.9202 93.4828% 87.4704%); + --color-info-200: hsl(191.8518 93.3011% 85.2298%); + --color-info-300: hsl(191.7679 93.1345% 82.9224%); + --color-info-400: hsl(191.665 92.9854% 80.5326%); + --color-info-500: hsl(191.5385 92.8571% 78.0392%); + --color-info-600: hsl(191.5385 55.3959% 67.7308%); + --color-info-700: hsl(191.5385 36.4787% 57.7052%); + --color-info-800: hsl(191.5385 27.2079% 47.9888%); + --color-info-900: hsl(191.5385 27.8871% 38.6143%); + --color-success-content: hsl(181.6021 46.4015% 4.2334%); + --color-success-50: hsl(181.1021 44.9532% 81.8911%); + --color-success-100: hsl(181.15 45.0719% 80.2125%); + --color-success-200: hsl(181.2439 45.3408% 76.8252%); + --color-success-300: hsl(181.3345 45.66% 73.3868%); + --color-success-400: hsl(181.4205 46.0435% 69.8789%); + --color-success-500: hsl(181.5 46.5116% 66.2745%); + --color-success-600: hsl(181.5 32.292% 57.4178%); + --color-success-700: hsl(181.5 24.3179% 48.8041%); + --color-success-800: hsl(181.5 24.8261% 40.4561%); + --color-success-900: hsl(181.5 25.5647% 32.4018%); + --color-warning-content: hsl(32.3077 21.2829% 6.4075%); + --color-warning-50: hsl(32.1495 62.5681% 90.9627%); + --color-warning-100: hsl(32.1646 62.4921% 90.1392%); + --color-warning-200: hsl(32.1964 62.3415% 88.4908%); + --color-warning-300: hsl(32.2307 62.1933% 86.84%); + --color-warning-400: hsl(32.2676 62.0476% 85.1864%); + --color-warning-500: hsl(32.3077 61.9048% 83.5294%); + --color-warning-600: hsl(32.3077 32.553% 72.5435%); + --color-warning-700: hsl(32.3077 20.2257% 61.8591%); + --color-warning-800: hsl(32.3077 13.4617% 51.5041%); + --color-warning-900: hsl(32.3077 12.9698% 41.5135%); + --color-danger-content: hsl(0 46.1725% 4.9576%); + --color-danger-50: hsl(1.4623 70.6764% 85.0656%); + --color-danger-100: hsl(1.343 69.825% 83.6596%); + --color-danger-200: hsl(1.0781 68.1549% 80.8258%); + --color-danger-300: hsl(0.7723 66.5259% 77.9637%); + --color-danger-400: hsl(0.4169 64.9351% 75.0739%); + --color-danger-500: hsl(0 63.3803% 72.1569%); + --color-danger-600: hsl(0 41.3338% 62.5743%); + --color-danger-700: hsl(0 28.5625% 53.2547%); + --color-danger-800: hsl(0 25.5507% 44.2224%); + --color-danger-900: hsl(0 26.2443% 35.508%); +} + +[data-theme="dim"] { + color-scheme: dark; + --color-primary: hsl(108.1319 66.4234% 73.1373%); + --color-secondary: hsl(12.1472 100% 68.0392%); + --color-accent: hsl(276.5517 66.4122% 74.3137%); + --color-neutral: hsl(220 21.1268% 13.9216%); + --color-neutral-content: hsl(196.6667 30.5085% 76.8627%); + --color-surface-100: hsl(220 17.6471% 20%); + --color-surface-200: hsl(220 17.2414% 17.0588%); + --color-surface-300: hsl(218.5714 17.9487% 15.2941%); + --color-surface-content: hsl(196.6667 30.5085% 76.8627%); + --color-info: hsl(185.5814 100% 57.8431%); + --color-success: hsl(158.7234 81.5029% 66.0784%); + --color-warning: hsl(47.7632 82.6087% 63.9216%); + --color-danger: hsl(11.4 100% 80.3922%); + --color-primary-content: hsl(109.2864 45.7907% 5.0786%); + --color-primary-50: hsl(108.2365 67.728% 85.6578%); + --color-primary-100: hsl(108.2362 67.5517% 84.3133%); + --color-primary-200: hsl(108.2302 67.2186% 81.5959%); + --color-primary-300: hsl(108.2144 66.9153% 78.8345%); + --color-primary-400: hsl(108.1839 66.6476% 76.0194%); + --color-primary-500: hsl(108.1319 66.4234% 73.1373%); + --color-primary-600: hsl(108.1319 42.7753% 63.4337%); + --color-primary-700: hsl(108.1319 29.3455% 53.9964%); + --color-primary-800: hsl(108.1319 25.473% 44.8502%); + --color-primary-900: hsl(108.1319 26.1546% 36.0257%); + --color-secondary-content: hsl(8.1035 77.2309% 4.8583%); + --color-secondary-50: hsl(13.2996 100% 82.6119%); + --color-secondary-100: hsl(13.1729 100% 81.0356%); + --color-secondary-200: hsl(12.9127 100% 77.87%); + --color-secondary-300: hsl(12.6472 100% 74.6715%); + --color-secondary-400: hsl(12.3852 100% 71.4114%); + --color-secondary-500: hsl(12.1472 100% 68.0392%); + --color-secondary-600: hsl(12.1472 68.2752% 58.9647%); + --color-secondary-700: hsl(12.1472 48.4977% 50.1393%); + --color-secondary-800: hsl(12.1472 49.2088% 41.586%); + --color-secondary-900: hsl(12.1472 50.6319% 33.3336%); + --color-accent-content: hsl(276.1458 43.0163% 5.2138%); + --color-accent-50: hsl(275.4992 69.5985% 86.1986%); + --color-accent-100: hsl(275.6036 69.2177% 84.9093%); + --color-accent-200: hsl(275.8201 68.4744% 82.31%); + --color-accent-300: hsl(276.0483 67.7571% 79.6807%); + --color-accent-400: hsl(276.2911 67.0686% 77.0171%); + --color-accent-500: hsl(276.5517 66.4122% 74.3137%); + --color-accent-600: hsl(276.5517 42.0819% 64.465%); + --color-accent-700: hsl(276.5517 28.6092% 54.8865%); + --color-accent-800: hsl(276.5517 23.951% 45.6034%); + --color-accent-900: hsl(276.5517 24.581% 36.647%); + --color-neutral-50: hsl(219.7345 4.1219% 49.3365%); + --color-neutral-100: hsl(219.7434 4.836% 45.0809%); + --color-neutral-200: hsl(219.7678 6.6511% 36.7822%); + --color-neutral-300: hsl(219.8063 9.275% 28.7932%); + --color-neutral-400: hsl(219.8723 13.432% 21.1544%); + --color-neutral-500: hsl(220 21.1268% 13.9216%); + --color-neutral-600: hsl(220 22.3709% 11.525%); + --color-neutral-700: hsl(220 24.2029% 9.1942%); + --color-neutral-800: hsl(220 27.1536% 6.9353%); + --color-neutral-900: hsl(220.4941 32.1307% 4.7748%); + --color-info-content: hsl(187.5008 95.0323% 4.4149%); + --color-info-50: hsl(186.5921 100% 82.6325%); + --color-info-100: hsl(186.5964 100% 80.7885%); + --color-info-200: hsl(186.5633 100% 76.826%); + --color-info-300: hsl(186.4518 100% 72.3093%); + --color-info-400: hsl(186.2036 100% 66.7305%); + --color-info-500: hsl(185.5814 100% 57.8431%); + --color-info-600: hsl(185.5814 73.9493% 50.0268%); + --color-info-700: hsl(185.5814 75.1812% 42.425%); + --color-info-800: hsl(185.5814 76.9943% 35.0576%); + --color-info-900: hsl(185.5814 79.6498% 27.9494%); + --color-success-content: hsl(155.8249 72.0506% 4.5168%); + --color-success-50: hsl(154.4968 81.3033% 83.7028%); + --color-success-100: hsl(154.8405 81.2094% 82.045%); + --color-success-200: hsl(155.592 81.0825% 78.5827%); + --color-success-300: hsl(156.4525 81.0572% 74.8653%); + --color-success-400: hsl(157.4672 81.1723% 70.7755%); + --color-success-500: hsl(158.7234 81.5029% 66.0784%); + --color-success-600: hsl(158.7234 56.6858% 57.2459%); + --color-success-700: hsl(158.7234 42.991% 48.6558%); + --color-success-800: hsl(158.7234 43.8922% 40.3305%); + --color-success-900: hsl(158.7234 45.2022% 32.2982%); + --color-warning-content: hsl(45.624 77.4997% 4.3782%); + --color-warning-50: hsl(47.2624 80.964% 81.6716%); + --color-warning-100: hsl(47.2502 81.0798% 79.9154%); + --color-warning-200: hsl(47.2587 81.3413% 76.3092%); + --color-warning-300: hsl(47.325 81.6582% 72.527%); + --color-warning-400: hsl(47.4757 82.0607% 68.4672%); + --color-warning-500: hsl(47.7632 82.6087% 63.9216%); + --color-warning-600: hsl(47.7632 58.5202% 55.3552%); + --color-warning-700: hsl(47.7632 47.9532% 47.0239%); + --color-warning-800: hsl(47.7632 48.9941% 38.9495%); + --color-warning-900: hsl(47.7632 50.5098% 31.1592%); + --color-danger-content: hsl(11.1905 43.5269% 5.9992%); + --color-danger-50: hsl(12.0884 100% 89.1555%); + --color-danger-100: hsl(12.0178 100% 88.1789%); + --color-danger-200: hsl(11.8723 100% 86.2288%); + --color-danger-300: hsl(11.7209 100% 84.2821%); + --color-danger-400: hsl(11.5636 100% 82.3372%); + --color-danger-500: hsl(11.4 100% 80.3922%); + --color-danger-600: hsl(11.4 56.9024% 69.7934%); + --color-danger-700: hsl(11.4 36.6169% 59.4854%); + --color-danger-800: hsl(11.4 25.3652% 49.4954%); + --color-danger-900: hsl(11.4 25.9786% 39.8568%); +} + +[data-theme="nord"] { + color-scheme: light; + --color-primary: hsl(213.0769 31.9672% 52.1569%); + --color-secondary: hsl(210 34.0426% 63.1373%); + --color-accent: hsl(193.3333 43.3735% 67.451%); + --color-neutral: hsl(220 16.4835% 35.6863%); + --color-neutral-content: hsl(218.8235 27.8689% 88.0392%); + --color-surface-100: hsl(217.5 26.6667% 94.1176%); + --color-surface-200: hsl(218.1818 26.8293% 91.9608%); + --color-surface-300: hsl(218.8235 27.8689% 88.0392%); + --color-surface-content: hsl(220 16.3636% 21.5686%); + --color-info: hsl(311.0526 20.2128% 63.1373%); + --color-success: hsl(92.4 27.7778% 64.7059%); + --color-warning: hsl(40 70.5882% 73.3333%); + --color-danger: hsl(354.2553 42.3423% 56.4706%); + --rounded-box: 0.4rem; + --rounded-btn: 0.2rem; + --rounded-badge: 0.4rem; + --tab-radius: 0.2rem; + --color-primary-content: hsl(218.4765 57.2613% 2.707%); + --color-primary-50: hsl(213.2981 33.3966% 73.3113%); + --color-primary-100: hsl(213.2809 33.2391% 70.9331%); + --color-primary-200: hsl(213.2436 32.9207% 66.1998%); + --color-primary-300: hsl(213.2004 32.5998% 61.4955%); + --color-primary-400: hsl(213.1472 32.2799% 56.8166%); + --color-primary-500: hsl(213.0769 31.9672% 52.1569%); + --color-primary-600: hsl(213.0769 29.7651% 45.0422%); + --color-primary-700: hsl(213.0769 30.353% 38.1228%); + --color-primary-800: hsl(213.0769 31.1699% 31.4168%); + --color-primary-900: hsl(213.0769 32.3743% 24.9467%); + --color-secondary-content: hsl(212.5249 40.5044% 3.8138%); + --color-secondary-50: hsl(210.2625 34.964% 79.5289%); + --color-secondary-100: hsl(210.2393 34.861% 77.6931%); + --color-secondary-200: hsl(210.1896 34.6545% 74.0333%); + --color-secondary-300: hsl(210.1344 34.4482% 70.3885%); + --color-secondary-400: hsl(210.072 34.2436% 66.7571%); + --color-secondary-500: hsl(210 34.0426% 63.1373%); + --color-secondary-600: hsl(210 24.2664% 54.6676%); + --color-secondary-700: hsl(210 20.4489% 46.4305%); + --color-secondary-800: hsl(210 20.8986% 38.4473%); + --color-secondary-900: hsl(210 21.5538% 30.7451%); + --color-accent-content: hsl(193.9847 41.433% 4.345%); + --color-accent-50: hsl(193.6739 43.0636% 82.2112%); + --color-accent-100: hsl(193.6487 43.0737% 80.589%); + --color-accent-200: hsl(193.5909 43.108% 77.3362%); + --color-accent-300: hsl(193.5211 43.1652% 74.0675%); + --color-accent-400: hsl(193.4366 43.251% 70.7757%); + --color-accent-500: hsl(193.3333 43.3735% 67.451%); + --color-accent-600: hsl(193.3333 29.7841% 58.4491%); + --color-accent-700: hsl(193.3333 21.4941% 49.6942%); + --color-accent-800: hsl(193.3333 21.9351% 41.2093%); + --color-accent-900: hsl(193.3333 22.5754% 33.023%); + --color-neutral-50: hsl(219.7846 9.9087% 63.2244%); + --color-neutral-100: hsl(219.7969 9.8397% 60.039%); + --color-neutral-200: hsl(219.8272 9.692% 53.7569%); + --color-neutral-300: hsl(219.8678 10.4907% 47.5986%); + --color-neutral-400: hsl(219.923 13.1389% 41.572%); + --color-neutral-500: hsl(220 16.4835% 35.6863%); + --color-neutral-600: hsl(220 16.8491% 30.604%); + --color-neutral-700: hsl(220 17.3435% 25.6613%); + --color-neutral-800: hsl(220 18.0461% 20.8709%); + --color-neutral-900: hsl(220 19.1166% 16.2491%); + --color-info-content: hsl(311.7127 25.1694% 3.7363%); + --color-info-50: hsl(312.0916 21.1337% 79.5121%); + --color-info-100: hsl(311.9883 21.0353% 77.6757%); + --color-info-200: hsl(311.7735 20.8355% 74.0158%); + --color-info-300: hsl(311.5467 20.6316% 70.3731%); + --color-info-400: hsl(311.3069 20.4239% 66.7471%); + --color-info-500: hsl(311.0526 20.2128% 63.1373%); + --color-info-600: hsl(311.0526 14.4082% 54.6676%); + --color-info-700: hsl(311.0526 12.1415% 46.4305%); + --color-info-800: hsl(311.0526 12.4085% 38.4473%); + --color-info-900: hsl(311.0526 12.7976% 30.7451%); + --color-success-content: hsl(94.1028 31.4788% 3.9559%); + --color-success-50: hsl(93.2777 28.0121% 80.454%); + --color-success-100: hsl(93.1985 27.9782% 78.696%); + --color-success-200: hsl(93.0287 27.9147% 75.1878%); + --color-success-300: hsl(92.8414 27.8585% 71.6883%); + --color-success-400: hsl(92.6333 27.8119% 68.1953%); + --color-success-500: hsl(92.4 27.7778% 64.7059%); + --color-success-600: hsl(92.4 19.5511% 56.0427%); + --color-success-700: hsl(92.4 15.5775% 47.6173%); + --color-success-800: hsl(92.4 15.9113% 39.4517%); + --color-success-900: hsl(92.4 16.3971% 31.5734%); + --color-warning-content: hsl(39.418 47.8284% 5.115%); + --color-warning-50: hsl(39.7064 70.6878% 85.5821%); + --color-warning-100: hsl(39.7214 70.6588% 84.2522%); + --color-warning-200: hsl(39.7617 70.611% 81.5752%); + --color-warning-300: hsl(39.8186 70.5801% 78.8696%); + --color-warning-400: hsl(39.8961 70.5704% 76.1264%); + --color-warning-500: hsl(40 70.5882% 73.3333%); + --color-warning-600: hsl(40 45.3387% 63.6056%); + --color-warning-700: hsl(40 31.0581% 54.1448%); + --color-warning-800: hsl(40 26.7976% 44.9757%); + --color-warning-900: hsl(40 27.5125% 36.1293%); + --color-danger-content: hsl(356.2047 61.9196% 3.2446%); + --color-danger-50: hsl(356.9859 47.2799% 76.746%); + --color-danger-100: hsl(356.7833 46.6863% 74.5624%); + --color-danger-200: hsl(356.3233 45.5253% 70.153%); + --color-danger-300: hsl(355.7719 44.4052% 65.6793%); + --color-danger-400: hsl(355.0985 43.3376% 61.1267%); + --color-danger-500: hsl(354.2553 42.3423% 56.4706%); + --color-danger-600: hsl(354.2553 33.0926% 48.8236%); + --color-danger-700: hsl(354.2553 33.6947% 41.3865%); + --color-danger-800: hsl(354.2553 34.5282% 34.1788%); + --color-danger-900: hsl(354.2553 35.7507% 27.2246%); +} + +[data-theme="sunset"] { + color-scheme: dark; + --color-primary: hsl(15.7317 100% 67.8431%); + --color-secondary: hsl(340.9859 97.2603% 71.3725%); + --color-accent: hsl(262.9565 92% 75.4902%); + --color-neutral: hsl(204.0206 23.4236% 14.0508%); + --color-neutral-content: hsl(204.4439 10.9185% 62.1538%); + --color-surface-100: hsl(203.8689 30.8151% 10.324%); + --color-surface-200: hsl(203.7604 36.6879% 8.5153%); + --color-surface-300: hsl(203.6293 45.4194% 6.7469%); + --color-surface-content: hsl(208.1633 34.2657% 71.9608%); + --color-info: hsl(186.7347 71.0145% 72.9412%); + --color-success: hsl(120 43.8596% 77.6471%); + --color-warning: hsl(34.375 77.4194% 75.6863%); + --color-danger: hsl(358.2353 100% 86.6667%); + --rounded-box: 1.2rem; + --rounded-btn: 0.8rem; + --rounded-badge: 0.4rem; + --tab-radius: 0.7rem; + --color-primary-content: hsl(11.0193 77.6858% 4.8459%); + --color-primary-50: hsl(16.2896 100% 82.629%); + --color-primary-100: hsl(16.2012 100% 81.045%); + --color-primary-200: hsl(16.0316 100% 77.8561%); + --color-primary-300: hsl(15.8807 100% 74.6207%); + --color-primary-400: hsl(15.768 100% 71.3039%); + --color-primary-500: hsl(15.7317 100% 67.8431%); + --color-primary-600: hsl(15.7317 68.4076% 58.7928%); + --color-primary-700: hsl(15.7317 48.6682% 49.9909%); + --color-primary-800: hsl(15.7317 49.6607% 41.4604%); + --color-primary-900: hsl(15.7317 51.1012% 33.2301%); + --color-secondary-content: hsl(344.3218 67.6206% 5.0743%); + --color-secondary-50: hsl(343.7257 100% 85.0523%); + --color-secondary-100: hsl(343.5316 100% 83.6556%); + --color-secondary-200: hsl(343.0988 100% 80.8235%); + --color-secondary-300: hsl(342.5925 100% 77.9217%); + --color-secondary-400: hsl(341.9888 100% 74.9189%); + --color-secondary-500: hsl(340.9859 97.2603% 71.3725%); + --color-secondary-600: hsl(340.9859 64.0391% 61.8867%); + --color-secondary-700: hsl(340.9859 44.5004% 52.6613%); + --color-secondary-800: hsl(340.9859 40.7763% 43.7203%); + --color-secondary-900: hsl(340.9859 41.8963% 35.0939%); + --color-accent-content: hsl(261.766 53.8495% 5.4262%); + --color-accent-50: hsl(260.174 99.531% 87.2551%); + --color-accent-100: hsl(260.4373 98.6064% 86.0169%); + --color-accent-200: hsl(260.9925 96.824% 83.4948%); + --color-accent-300: hsl(261.5914 95.129% 80.9066%); + --color-accent-400: hsl(262.2424 93.5206% 78.2429%); + --color-accent-500: hsl(262.9565 92% 75.4902%); + --color-accent-600: hsl(262.9565 57.2882% 65.4963%); + --color-accent-700: hsl(262.9565 38.5779% 55.7766%); + --color-accent-800: hsl(262.9565 31.1449% 46.3567%); + --color-accent-900: hsl(262.9565 31.9505% 37.2683%); + --color-neutral-50: hsl(204.5187 4.3944% 49.4697%); + --color-neutral-100: hsl(204.4964 5.1649% 45.2221%); + --color-neutral-200: hsl(204.4403 7.135% 36.9356%); + --color-neutral-300: hsl(204.3608 10.0124% 28.9524%); + --color-neutral-400: hsl(204.2381 14.6403% 21.3089%); + --color-neutral-500: hsl(204.0206 23.4236% 14.0508%); + --color-neutral-600: hsl(204.0206 24.7896% 11.6383%); + --color-neutral-700: hsl(204.0206 26.7984% 9.292%); + --color-neutral-800: hsl(204.0206 30.0269% 7.018%); + --color-neutral-900: hsl(204.3802 35.3077% 4.8498%); + --color-info-content: hsl(186.9571 49.0367% 5.0735%); + --color-info-50: hsl(186.8462 70.1059% 85.795%); + --color-info-100: hsl(186.8476 70.1656% 84.4454%); + --color-info-200: hsl(186.8422 70.3093% 81.7011%); + --color-info-300: hsl(186.8239 70.4917% 78.884%); + --color-info-400: hsl(186.7895 70.7222% 75.9739%); + --color-info-500: hsl(186.7347 71.0145% 72.9412%); + --color-info-600: hsl(186.7347 45.8502% 63.2618%); + --color-info-700: hsl(186.7347 31.5013% 53.8481%); + --color-info-800: hsl(186.7347 27.5094% 44.7246%); + --color-info-900: hsl(186.7347 28.2476% 35.9222%); + --color-success-content: hsl(120 23.3288% 5.6208%); + --color-success-50: hsl(119.1013 44.5815% 87.7387%); + --color-success-100: hsl(119.1865 44.4967% 86.6213%); + --color-success-200: hsl(119.3665 44.3299% 84.3844%); + --color-success-300: hsl(119.5608 44.1676% 82.1436%); + --color-success-400: hsl(119.7712 44.0105% 79.8982%); + --color-success-500: hsl(120 43.8596% 77.6471%); + --color-success-600: hsl(120 26.3519% 67.387%); + --color-success-700: hsl(120 17.4156% 57.4085%); + --color-success-800: hsl(120 13.1495% 47.7377%); + --color-success-900: hsl(120 13.4796% 38.4072%); + --color-warning-content: hsl(33.9312 45.817% 5.4014%); + --color-warning-50: hsl(33.9386 78.587% 86.8668%); + --color-warning-100: hsl(33.9722 78.4438% 85.6516%); + --color-warning-200: hsl(34.0481 78.1657% 83.2051%); + --color-warning-300: hsl(34.1381 77.9003% 80.7332%); + --color-warning-400: hsl(34.2455 77.6503% 78.2297%); + --color-warning-500: hsl(34.375 77.4194% 75.6863%); + --color-warning-600: hsl(34.375 48.0626% 65.6682%); + --color-warning-700: hsl(34.375 32.3125% 55.925%); + --color-warning-800: hsl(34.375 25.929% 46.4823%); + --color-warning-900: hsl(34.375 26.5978% 37.3718%); + --color-danger-content: hsl(358.2353 26.121% 6.8271%); + --color-danger-50: hsl(359.0066 100% 92.6921%); + --color-danger-100: hsl(358.9295 100% 92.0258%); + --color-danger-200: hsl(358.7694 100% 90.6914%); + --color-danger-300: hsl(358.6009 100% 89.3539%); + --color-danger-400: hsl(358.4231 100% 88.0126%); + --color-danger-500: hsl(358.2353 100% 86.6667%); + --color-danger-600: hsl(358.2353 47.3078% 75.2936%); + --color-danger-700: hsl(358.2353 28.2043% 64.2327%); + --color-danger-800: hsl(358.2353 18.3645% 53.5128%); + --color-danger-900: hsl(358.2353 16.3096% 43.1702%); +} + +[data-theme="skeleton-light"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(160.5882 54.8387% 87.8431%); + --color-primary-200: hsl(160.4651 55.8442% 84.902%); + --color-primary-300: hsl(160.5882 54.8387% 75.6863%); + --color-primary-400: hsl(160 55.5556% 57.6471%); + --color-primary-500: hsl(160 85.0746% 39.4118%); + --color-primary-600: hsl(160 84.5304% 35.4902%); + --color-primary-700: hsl(160 85.4305% 29.6078%); + --color-primary-800: hsl(159.6117 85.124% 23.7255%); + --color-primary-900: hsl(160 85.7143% 19.2157%); + --color-secondary-100: hsl(243.75 76.1905% 91.7647%); + --color-secondary-200: hsl(243 76.9231% 89.8039%); + --color-secondary-300: hsl(243.75 76.1905% 83.5294%); + --color-secondary-400: hsl(243.2432 75.5102% 71.1765%); + --color-secondary-500: hsl(243.3962 75.3555% 58.6275%); + --color-secondary-600: hsl(243.3566 59.3361% 52.7451%); + --color-secondary-700: hsl(243.0252 52.8889% 44.1176%); + --color-secondary-800: hsl(243.1579 53.0726% 35.098%); + --color-secondary-900: hsl(243.8462 53.4247% 28.6275%); + --color-accent-100: hsl(199.0909 84.6154% 89.8039%); + --color-accent-200: hsl(198.5455 84.6154% 87.2549%); + --color-accent-300: hsl(198.6207 82.8571% 79.4118%); + --color-accent-400: hsl(198.7013 83.6957% 63.9216%); + --color-accent-500: hsl(198.6301 88.664% 48.4314%); + --color-accent-600: hsl(198.5787 88.3408% 43.7255%); + --color-accent-700: hsl(198.6585 88.172% 36.4706%); + --color-accent-800: hsl(198.6364 89.1892% 29.0196%); + --color-accent-900: hsl(198.5047 88.4298% 23.7255%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(329.1892 67.2727% 89.2157%); + --color-danger-200: hsl(330 67.6471% 86.6667%); + --color-danger-300: hsl(330.4 68.8073% 78.6275%); + --color-danger-400: hsl(330.229 68.5864% 62.549%); + --color-danger-500: hsl(330.1604 78.903% 46.4706%); + --color-danger-600: hsl(330.3571 78.5047% 41.9608%); + --color-danger-700: hsl(330 78.6517% 34.902%); + --color-danger-800: hsl(330 78.8732% 27.8431%); + --color-danger-900: hsl(330 79.3103% 22.7451%); + --color-surface-100: hsl(228 22.7273% 91.3725%); + --color-surface-200: hsl(227.1429 24.1379% 88.6275%); + --color-surface-300: hsl(225.8824 23.2877% 85.6863%); + surface-400: rgb(128 140 177); + surface-500: rgb(73 90 143); + surface-600: rgb(66 81 129); + surface-700: rgb(55 68 107); + surface-800: rgb(44 54 86); + surface-900: rgb(36 44 70); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(330.1604 78.903% 46.4706%); + --color-primary: hsl(160 85.0746% 39.4118%); + --color-primary-50: hsl(160.5193 54.8337% 88.4639%); + --color-secondary: hsl(243.3962 75.3555% 58.6275%); + --color-secondary-50: hsl(243.6812 76.4014% 92.1848%); + --color-accent: hsl(198.6301 88.664% 48.4314%); + --color-accent-50: hsl(199.1094 84.6794% 90.3249%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(329.2701 67.5446% 89.7696%); +} + +[data-theme="skeleton-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(160.5882 54.8387% 87.8431%); + --color-primary-200: hsl(160.4651 55.8442% 84.902%); + --color-primary-300: hsl(160.5882 54.8387% 75.6863%); + --color-primary-400: hsl(160 55.5556% 57.6471%); + --color-primary-500: hsl(160 85.0746% 39.4118%); + --color-primary-600: hsl(160 84.5304% 35.4902%); + --color-primary-700: hsl(160 85.4305% 29.6078%); + --color-primary-800: hsl(159.6117 85.124% 23.7255%); + --color-primary-900: hsl(160 85.7143% 19.2157%); + --color-secondary-100: hsl(243.75 76.1905% 91.7647%); + --color-secondary-200: hsl(243 76.9231% 89.8039%); + --color-secondary-300: hsl(243.75 76.1905% 83.5294%); + --color-secondary-400: hsl(243.2432 75.5102% 71.1765%); + --color-secondary-500: hsl(243.3962 75.3555% 58.6275%); + --color-secondary-600: hsl(243.3566 59.3361% 52.7451%); + --color-secondary-700: hsl(243.0252 52.8889% 44.1176%); + --color-secondary-800: hsl(243.1579 53.0726% 35.098%); + --color-secondary-900: hsl(243.8462 53.4247% 28.6275%); + --color-accent-100: hsl(199.0909 84.6154% 89.8039%); + --color-accent-200: hsl(198.5455 84.6154% 87.2549%); + --color-accent-300: hsl(198.6207 82.8571% 79.4118%); + --color-accent-400: hsl(198.7013 83.6957% 63.9216%); + --color-accent-500: hsl(198.6301 88.664% 48.4314%); + --color-accent-600: hsl(198.5787 88.3408% 43.7255%); + --color-accent-700: hsl(198.6585 88.172% 36.4706%); + --color-accent-800: hsl(198.6364 89.1892% 29.0196%); + --color-accent-900: hsl(198.5047 88.4298% 23.7255%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(329.1892 67.2727% 89.2157%); + --color-danger-200: hsl(330 67.6471% 86.6667%); + --color-danger-300: hsl(330.4 68.8073% 78.6275%); + --color-danger-400: hsl(330.229 68.5864% 62.549%); + --color-danger-500: hsl(330.1604 78.903% 46.4706%); + --color-danger-600: hsl(330.3571 78.5047% 41.9608%); + --color-danger-700: hsl(330 78.6517% 34.902%); + --color-danger-800: hsl(330 78.8732% 27.8431%); + --color-danger-900: hsl(330 79.3103% 22.7451%); + --color-surface-100: hsl(225 32.0988% 31.7647%); + --color-surface-200: hsl(225.7143 32.3077% 25.4902%); + --color-surface-300: hsl(225.8824 32.0755% 20.7843%); + surface-400: rgb(128 140 177); + surface-500: rgb(73 90 143); + surface-600: rgb(66 81 129); + surface-700: rgb(55 68 107); + surface-800: rgb(44 54 86); + surface-900: rgb(36 44 70); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(330.1604 78.903% 46.4706%); + --color-primary: hsl(160 85.0746% 39.4118%); + --color-primary-50: hsl(160.5193 54.8337% 88.4639%); + --color-secondary: hsl(243.3962 75.3555% 58.6275%); + --color-secondary-50: hsl(243.6812 76.4014% 92.1848%); + --color-accent: hsl(198.6301 88.664% 48.4314%); + --color-accent-50: hsl(199.1094 84.6794% 90.3249%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(329.2701 67.5446% 89.7696%); +} + +[data-theme="wintry"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(214.2857 94.5946% 92.7451%); + --color-primary-200: hsl(213.3333 96.9231% 87.2549%); + --color-primary-300: hsl(211.6981 96.3636% 78.4314%); + --color-primary-400: hsl(213.1169 93.9024% 67.8431%); + --color-primary-500: hsl(217.2193 91.2195% 59.8039%); + --color-primary-600: hsl(221.2121 83.1933% 53.3333%); + --color-primary-700: hsl(224.2781 76.3265% 48.0392%); + --color-primary-800: hsl(225.931 70.7317% 40.1961%); + --color-primary-900: hsl(224.4444 64.2857% 32.9412%); + --color-secondary-100: hsl(204 93.75% 93.7255%); + --color-secondary-200: hsl(200.597 94.3662% 86.0784%); + --color-secondary-300: hsl(199.3701 95.4887% 73.9216%); + --color-secondary-400: hsl(198.4375 93.2039% 59.6078%); + --color-secondary-500: hsl(198.6301 88.664% 48.4314%); + --color-secondary-600: hsl(200.4061 98.01% 39.4118%); + --color-secondary-700: hsl(201.2658 96.3415% 32.1569%); + --color-secondary-800: hsl(200.9524 90% 27.451%); + --color-secondary-900: hsl(202.0408 80.3279% 23.9216%); + --color-accent-100: hsl(226.4516 100% 93.9216%); + --color-accent-200: hsl(228 96.4912% 88.8235%); + --color-accent-300: hsl(229.6552 93.5484% 81.7647%); + --color-accent-400: hsl(234.4538 89.4737% 73.9216%); + --color-accent-500: hsl(238.7324 83.5294% 66.6667%); + --color-accent-600: hsl(243.3962 75.3555% 58.6275%); + --color-accent-700: hsl(244.5205 57.9365% 50.5882%); + --color-accent-800: hsl(243.6522 54.5024% 41.3725%); + --color-accent-900: hsl(242.1687 47.4286% 34.3137%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(329.1892 67.2727% 89.2157%); + --color-danger-200: hsl(330 67.6471% 86.6667%); + --color-danger-300: hsl(330.4 68.8073% 78.6275%); + --color-danger-400: hsl(330.229 68.5864% 62.549%); + --color-danger-500: hsl(330.1604 78.903% 46.4706%); + --color-danger-600: hsl(330.3571 78.5047% 41.9608%); + --color-danger-700: hsl(330 78.6517% 34.902%); + --color-danger-800: hsl(330 78.8732% 27.8431%); + --color-danger-900: hsl(330 79.3103% 22.7451%); + --color-surface-100: hsl(210 20% 98.0392%); + --color-surface-200: hsl(220 14.2857% 95.8824%); + --color-surface-300: hsl(220 13.0435% 90.9804%); + surface-400: rgb(156 163 175); + surface-500: rgb(107 114 128); + surface-600: rgb(75 85 99); + surface-700: rgb(55 65 81); + surface-800: rgb(31 41 55); + surface-900: rgb(17 24 39); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(330.1604 78.903% 46.4706%); + --color-primary: hsl(217.2193 91.2195% 59.8039%); + --color-primary-50: hsl(214.2894 94.7383% 93.1112%); + --color-secondary: hsl(198.6301 88.664% 48.4314%); + --color-secondary-50: hsl(204.0111 93.8261% 94.0431%); + --color-accent: hsl(238.7324 83.5294% 66.6667%); + --color-accent-50: hsl(226.4169 100% 94.2217%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(329.2701 67.5446% 89.7696%); +} + +[data-theme="wintry-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(214.2857 94.5946% 92.7451%); + --color-primary-200: hsl(213.3333 96.9231% 87.2549%); + --color-primary-300: hsl(211.6981 96.3636% 78.4314%); + --color-primary-400: hsl(213.1169 93.9024% 67.8431%); + --color-primary-500: hsl(217.2193 91.2195% 59.8039%); + --color-primary-600: hsl(221.2121 83.1933% 53.3333%); + --color-primary-700: hsl(224.2781 76.3265% 48.0392%); + --color-primary-800: hsl(225.931 70.7317% 40.1961%); + --color-primary-900: hsl(224.4444 64.2857% 32.9412%); + --color-secondary-100: hsl(204 93.75% 93.7255%); + --color-secondary-200: hsl(200.597 94.3662% 86.0784%); + --color-secondary-300: hsl(199.3701 95.4887% 73.9216%); + --color-secondary-400: hsl(198.4375 93.2039% 59.6078%); + --color-secondary-500: hsl(198.6301 88.664% 48.4314%); + --color-secondary-600: hsl(200.4061 98.01% 39.4118%); + --color-secondary-700: hsl(201.2658 96.3415% 32.1569%); + --color-secondary-800: hsl(200.9524 90% 27.451%); + --color-secondary-900: hsl(202.0408 80.3279% 23.9216%); + --color-accent-100: hsl(226.4516 100% 93.9216%); + --color-accent-200: hsl(228 96.4912% 88.8235%); + --color-accent-300: hsl(229.6552 93.5484% 81.7647%); + --color-accent-400: hsl(234.4538 89.4737% 73.9216%); + --color-accent-500: hsl(238.7324 83.5294% 66.6667%); + --color-accent-600: hsl(243.3962 75.3555% 58.6275%); + --color-accent-700: hsl(244.5205 57.9365% 50.5882%); + --color-accent-800: hsl(243.6522 54.5024% 41.3725%); + --color-accent-900: hsl(242.1687 47.4286% 34.3137%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(329.1892 67.2727% 89.2157%); + --color-danger-200: hsl(330 67.6471% 86.6667%); + --color-danger-300: hsl(330.4 68.8073% 78.6275%); + --color-danger-400: hsl(330.229 68.5864% 62.549%); + --color-danger-500: hsl(330.1604 78.903% 46.4706%); + --color-danger-600: hsl(330.3571 78.5047% 41.9608%); + --color-danger-700: hsl(330 78.6517% 34.902%); + --color-danger-800: hsl(330 78.8732% 27.8431%); + --color-danger-900: hsl(330 79.3103% 22.7451%); + --color-surface-100: hsl(216.9231 19.1176% 26.6667%); + --color-surface-200: hsl(215 27.907% 16.8627%); + --color-surface-300: hsl(220.9091 39.2857% 10.9804%); + surface-400: rgb(156 163 175); + surface-500: rgb(107 114 128); + surface-600: rgb(75 85 99); + surface-700: rgb(55 65 81); + surface-800: rgb(31 41 55); + surface-900: rgb(17 24 39); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(330.1604 78.903% 46.4706%); + --color-primary: hsl(217.2193 91.2195% 59.8039%); + --color-primary-50: hsl(214.2894 94.7383% 93.1112%); + --color-secondary: hsl(198.6301 88.664% 48.4314%); + --color-secondary-50: hsl(204.0111 93.8261% 94.0431%); + --color-accent: hsl(238.7324 83.5294% 66.6667%); + --color-accent-50: hsl(226.4169 100% 94.2217%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(329.2701 67.5446% 89.7696%); +} + +[data-theme="modern"] { + --color-primary-content: hsl(0 0% 100%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(329.0909 80.4878% 91.9608%); + --color-primary-200: hsl(329.2683 80.3922% 90%); + --color-primary-300: hsl(330.4615 80.2469% 84.1176%); + --color-primary-400: hsl(330.2609 81.5603% 72.3529%); + --color-primary-500: hsl(330.3659 81.1881% 60.3922%); + --color-primary-600: hsl(330.2041 63.0901% 54.3137%); + --color-primary-700: hsl(330.2439 53.2468% 45.2941%); + --color-primary-800: hsl(330.303 53.5135% 36.2745%); + --color-primary-900: hsl(330.3704 53.6424% 29.6078%); + --color-secondary-100: hsl(188.7805 69.4915% 88.4314%); + --color-secondary-200: hsl(188.2353 69.863% 85.6863%); + --color-secondary-300: hsl(188.6747 70.9402% 77.0588%); + --color-secondary-400: hsl(188.75 70.5882% 60%); + --color-secondary-500: hsl(188.7379 94.4954% 42.7451%); + --color-secondary-600: hsl(188.7097 94.898% 38.4314%); + --color-secondary-700: hsl(188.5714 93.9024% 32.1569%); + --color-secondary-800: hsl(188.7805 93.8931% 25.6863%); + --color-secondary-900: hsl(188.9109 94.3925% 20.9804%); + --color-accent-100: hsl(172.7273 54.0984% 88.0392%); + --color-accent-200: hsl(174.1463 53.2468% 84.902%); + --color-accent-300: hsl(172.7273 54.0984% 76.0784%); + --color-accent-400: hsl(173.6842 53.271% 58.0392%); + --color-accent-500: hsl(173.4146 80.3922% 40%); + --color-accent-600: hsl(173.1081 80.4348% 36.0784%); + --color-accent-700: hsl(173.6585 80.3922% 30%); + --color-accent-800: hsl(173.8776 80.3279% 23.9216%); + --color-accent-900: hsl(173.25 80% 19.6078%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(0 85% 92.1569%); + --color-danger-200: hsl(0 84.3137% 90%); + --color-danger-300: hsl(0 85.1852% 84.1176%); + --color-danger-400: hsl(0 84.507% 72.1569%); + --color-danger-500: hsl(0 84.2365% 60.1961%); + --color-danger-600: hsl(0 65.812% 54.1176%); + --color-danger-700: hsl(0 55.6522% 45.098%); + --color-danger-800: hsl(0 55.4348% 36.0784%); + --color-danger-900: hsl(0 56% 29.4118%); + --color-surface-100: hsl(240 84% 95.098%); + --color-surface-200: hsl(240 82.3529% 93.3333%); + --color-surface-300: hsl(238.3333 85.7143% 91.7647%); + surface-400: rgb(146 148 245); + surface-500: rgb(99 102 241); + surface-600: rgb(89 92 217); + surface-700: rgb(74 77 181); + surface-800: rgb(59 61 145); + surface-900: rgb(49 50 118); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(0 84.2365% 60.1961%); + --color-primary: hsl(330.3659 81.1881% 60.3922%); + --color-primary-50: hsl(329.1599 80.7897% 92.3751%); + --color-secondary: hsl(188.7379 94.4954% 42.7451%); + --color-secondary-50: hsl(188.7824 69.4811% 89.0237%); + --color-accent: hsl(173.4146 80.3922% 40%); + --color-accent-50: hsl(172.6855 54.0885% 88.6496%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(0.0349 85.3775% 92.5596%); +} + +[data-theme="modern-dark"] { + --color-primary-content: hsl(0 0% 100%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(329.0909 80.4878% 91.9608%); + --color-primary-200: hsl(329.2683 80.3922% 90%); + --color-primary-300: hsl(330.4615 80.2469% 84.1176%); + --color-primary-400: hsl(330.2609 81.5603% 72.3529%); + --color-primary-500: hsl(330.3659 81.1881% 60.3922%); + --color-primary-600: hsl(330.2041 63.0901% 54.3137%); + --color-primary-700: hsl(330.2439 53.2468% 45.2941%); + --color-primary-800: hsl(330.303 53.5135% 36.2745%); + --color-primary-900: hsl(330.3704 53.6424% 29.6078%); + --color-secondary-100: hsl(188.7805 69.4915% 88.4314%); + --color-secondary-200: hsl(188.2353 69.863% 85.6863%); + --color-secondary-300: hsl(188.6747 70.9402% 77.0588%); + --color-secondary-400: hsl(188.75 70.5882% 60%); + --color-secondary-500: hsl(188.7379 94.4954% 42.7451%); + --color-secondary-600: hsl(188.7097 94.898% 38.4314%); + --color-secondary-700: hsl(188.5714 93.9024% 32.1569%); + --color-secondary-800: hsl(188.7805 93.8931% 25.6863%); + --color-secondary-900: hsl(188.9109 94.3925% 20.9804%); + --color-accent-100: hsl(172.7273 54.0984% 88.0392%); + --color-accent-200: hsl(174.1463 53.2468% 84.902%); + --color-accent-300: hsl(172.7273 54.0984% 76.0784%); + --color-accent-400: hsl(173.6842 53.271% 58.0392%); + --color-accent-500: hsl(173.4146 80.3922% 40%); + --color-accent-600: hsl(173.1081 80.4348% 36.0784%); + --color-accent-700: hsl(173.6585 80.3922% 30%); + --color-accent-800: hsl(173.8776 80.3279% 23.9216%); + --color-accent-900: hsl(173.25 80% 19.6078%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(0 85% 92.1569%); + --color-danger-200: hsl(0 84.3137% 90%); + --color-danger-300: hsl(0 85.1852% 84.1176%); + --color-danger-400: hsl(0 84.507% 72.1569%); + --color-danger-500: hsl(0 84.2365% 60.1961%); + --color-danger-600: hsl(0 65.812% 54.1176%); + --color-danger-700: hsl(0 55.6522% 45.098%); + --color-danger-800: hsl(0 55.4348% 36.0784%); + --color-danger-900: hsl(0 56% 29.4118%); + --color-surface-100: hsl(238.3178 41.9608% 50%); + --color-surface-200: hsl(238.6047 42.1569% 40%); + --color-surface-300: hsl(239.1304 41.3174% 32.7451%); + surface-400: rgb(146 148 245); + surface-500: rgb(99 102 241); + surface-600: rgb(89 92 217); + surface-700: rgb(74 77 181); + surface-800: rgb(59 61 145); + surface-900: rgb(49 50 118); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(0 84.2365% 60.1961%); + --color-primary: hsl(330.3659 81.1881% 60.3922%); + --color-primary-50: hsl(329.1599 80.7897% 92.3751%); + --color-secondary: hsl(188.7379 94.4954% 42.7451%); + --color-secondary-50: hsl(188.7824 69.4811% 89.0237%); + --color-accent: hsl(173.4146 80.3922% 40%); + --color-accent-50: hsl(172.6855 54.0885% 88.6496%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(0.0349 85.3775% 92.5596%); +} + +[data-theme="rocket"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(188.7805 69.4915% 88.4314%); + --color-primary-200: hsl(188.2353 69.863% 85.6863%); + --color-primary-300: hsl(188.6747 70.9402% 77.0588%); + --color-primary-400: hsl(188.75 70.5882% 60%); + --color-primary-500: hsl(188.7379 94.4954% 42.7451%); + --color-primary-600: hsl(188.7097 94.898% 38.4314%); + --color-primary-700: hsl(188.5714 93.9024% 32.1569%); + --color-primary-800: hsl(188.7805 93.8931% 25.6863%); + --color-primary-900: hsl(188.9109 94.3925% 20.9804%); + --color-secondary-100: hsl(217.2973 90.2439% 91.9608%); + --color-secondary-200: hsl(217.0213 92.1569% 90%); + --color-secondary-300: hsl(217.2973 90.2439% 83.9216%); + --color-secondary-400: hsl(217.0992 91.6084% 71.9608%); + --color-secondary-500: hsl(217.2193 91.2195% 59.8039%); + --color-secondary-600: hsl(217.1429 71.1864% 53.7255%); + --color-secondary-700: hsl(217.0213 61.5721% 44.902%); + --color-secondary-800: hsl(217.1681 61.7486% 35.8824%); + --color-secondary-900: hsl(217.1739 61.3333% 29.4118%); + --color-accent-100: hsl(271.875 88.8889% 92.9412%); + --color-accent-200: hsl(270 90.9091% 91.3725%); + --color-accent-300: hsl(270.4615 91.5493% 86.0784%); + --color-accent-400: hsl(270.7965 90.4% 75.4902%); + --color-accent-500: hsl(270.7407 91.0112% 65.098%); + --color-accent-600: hsl(270.6207 68.7204% 58.6275%); + --color-accent-700: hsl(270.7438 48.5944% 48.8235%); + --color-accent-800: hsl(270.9278 48.7437% 39.0196%); + --color-accent-900: hsl(270.3797 48.4663% 31.9608%); + --color-success-100: hsl(102.1622 64.9123% 88.8235%); + --color-success-200: hsl(102.6667 63.3803% 86.0784%); + --color-success-300: hsl(101.9178 63.4783% 77.451%); + --color-success-400: hsl(101.7188 64% 60.7843%); + --color-success-500: hsl(101.8681 81.25% 43.9216%); + --color-success-600: hsl(102.0732 81.1881% 39.6078%); + --color-success-700: hsl(101.9118 80.9524% 32.9412%); + --color-success-800: hsl(101.8349 80.7407% 26.4706%); + --color-success-900: hsl(101.7978 81.6514% 21.3725%); + --color-warning-100: hsl(45.3659 91.1111% 91.1765%); + --color-warning-200: hsl(45.6 89.2857% 89.0196%); + --color-warning-300: hsl(44.4444 91.0112% 82.549%); + --color-warning-400: hsl(45.1064 89.8089% 69.2157%); + --color-warning-500: hsl(44.8515 90.1786% 56.0784%); + --color-warning-600: hsl(44.8352 72.2222% 50.5882%); + --color-warning-700: hsl(44.9007 70.2326% 42.1569%); + --color-warning-800: hsl(45.124 70.7602% 33.5294%); + --color-warning-900: hsl(44.8485 70.2128% 27.6471%); + --color-danger-100: hsl(342.2222 47.3684% 88.8235%); + --color-danger-200: hsl(341.1429 49.2958% 86.0784%); + --color-danger-300: hsl(342.2222 47.3684% 77.6471%); + --color-danger-400: hsl(341.875 48% 60.7843%); + --color-danger-500: hsl(342.0438 60.8889% 44.1176%); + --color-danger-600: hsl(341.9512 60.5911% 39.8039%); + --color-danger-700: hsl(341.9417 60.9467% 33.1373%); + --color-danger-800: hsl(341.9277 61.4815% 26.4706%); + --color-danger-900: hsl(342.0896 60.3604% 21.7647%); + --color-surface-100: hsl(220 15% 92.1569%); + --color-surface-200: hsl(217.5 14.8148% 89.4118%); + --color-surface-300: hsl(216 14.7059% 86.6667%); + surface-400: rgb(147 158 174); + surface-500: rgb(100 116 139); + surface-600: rgb(90 104 125); + surface-700: rgb(75 87 104); + surface-800: rgb(60 70 83); + surface-900: rgb(49 57 68); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(101.8681 81.25% 43.9216%); + --color-warning: hsl(44.8515 90.1786% 56.0784%); + --color-danger: hsl(342.0438 60.8889% 44.1176%); + --color-primary: hsl(188.7379 94.4954% 42.7451%); + --color-primary-50: hsl(188.7824 69.4811% 89.0237%); + --color-secondary: hsl(217.2193 91.2195% 59.8039%); + --color-secondary-50: hsl(217.2953 90.4058% 92.3659%); + --color-accent: hsl(270.7407 91.0112% 65.098%); + --color-accent-50: hsl(271.8354 89.0885% 93.3015%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(102.1849 64.9768% 89.3912%); + --color-warning-50: hsl(45.3756 91.104% 91.6245%); + --color-danger-50: hsl(342.2736 47.511% 89.3875%); +} + +[data-theme="rocket-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(188.7805 69.4915% 88.4314%); + --color-primary-200: hsl(188.2353 69.863% 85.6863%); + --color-primary-300: hsl(188.6747 70.9402% 77.0588%); + --color-primary-400: hsl(188.75 70.5882% 60%); + --color-primary-500: hsl(188.7379 94.4954% 42.7451%); + --color-primary-600: hsl(188.7097 94.898% 38.4314%); + --color-primary-700: hsl(188.5714 93.9024% 32.1569%); + --color-primary-800: hsl(188.7805 93.8931% 25.6863%); + --color-primary-900: hsl(188.9109 94.3925% 20.9804%); + --color-secondary-100: hsl(217.2973 90.2439% 91.9608%); + --color-secondary-200: hsl(217.0213 92.1569% 90%); + --color-secondary-300: hsl(217.2973 90.2439% 83.9216%); + --color-secondary-400: hsl(217.0992 91.6084% 71.9608%); + --color-secondary-500: hsl(217.2193 91.2195% 59.8039%); + --color-secondary-600: hsl(217.1429 71.1864% 53.7255%); + --color-secondary-700: hsl(217.0213 61.5721% 44.902%); + --color-secondary-800: hsl(217.1681 61.7486% 35.8824%); + --color-secondary-900: hsl(217.1739 61.3333% 29.4118%); + --color-accent-100: hsl(271.875 88.8889% 92.9412%); + --color-accent-200: hsl(270 90.9091% 91.3725%); + --color-accent-300: hsl(270.4615 91.5493% 86.0784%); + --color-accent-400: hsl(270.7965 90.4% 75.4902%); + --color-accent-500: hsl(270.7407 91.0112% 65.098%); + --color-accent-600: hsl(270.6207 68.7204% 58.6275%); + --color-accent-700: hsl(270.7438 48.5944% 48.8235%); + --color-accent-800: hsl(270.9278 48.7437% 39.0196%); + --color-accent-900: hsl(270.3797 48.4663% 31.9608%); + --color-success-100: hsl(102.1622 64.9123% 88.8235%); + --color-success-200: hsl(102.6667 63.3803% 86.0784%); + --color-success-300: hsl(101.9178 63.4783% 77.451%); + --color-success-400: hsl(101.7188 64% 60.7843%); + --color-success-500: hsl(101.8681 81.25% 43.9216%); + --color-success-600: hsl(102.0732 81.1881% 39.6078%); + --color-success-700: hsl(101.9118 80.9524% 32.9412%); + --color-success-800: hsl(101.8349 80.7407% 26.4706%); + --color-success-900: hsl(101.7978 81.6514% 21.3725%); + --color-warning-100: hsl(45.3659 91.1111% 91.1765%); + --color-warning-200: hsl(45.6 89.2857% 89.0196%); + --color-warning-300: hsl(44.4444 91.0112% 82.549%); + --color-warning-400: hsl(45.1064 89.8089% 69.2157%); + --color-warning-500: hsl(44.8515 90.1786% 56.0784%); + --color-warning-600: hsl(44.8352 72.2222% 50.5882%); + --color-warning-700: hsl(44.9007 70.2326% 42.1569%); + --color-warning-800: hsl(45.124 70.7602% 33.5294%); + --color-warning-900: hsl(44.8485 70.2128% 27.6471%); + --color-danger-100: hsl(342.2222 47.3684% 88.8235%); + --color-danger-200: hsl(341.1429 49.2958% 86.0784%); + --color-danger-300: hsl(342.2222 47.3684% 77.6471%); + --color-danger-400: hsl(341.875 48% 60.7843%); + --color-danger-500: hsl(342.0438 60.8889% 44.1176%); + --color-danger-600: hsl(341.9512 60.5911% 39.8039%); + --color-danger-700: hsl(341.9417 60.9467% 33.1373%); + --color-danger-800: hsl(341.9277 61.4815% 26.4706%); + --color-danger-900: hsl(342.0896 60.3604% 21.7647%); + --color-surface-100: hsl(215.1724 16.2011% 35.098%); + --color-surface-200: hsl(213.913 16.0839% 28.0392%); + --color-surface-300: hsl(214.7368 16.2393% 22.9412%); + surface-400: rgb(147 158 174); + surface-500: rgb(100 116 139); + surface-600: rgb(90 104 125); + surface-700: rgb(75 87 104); + surface-800: rgb(60 70 83); + surface-900: rgb(49 57 68); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(101.8681 81.25% 43.9216%); + --color-warning: hsl(44.8515 90.1786% 56.0784%); + --color-danger: hsl(342.0438 60.8889% 44.1176%); + --color-primary: hsl(188.7379 94.4954% 42.7451%); + --color-primary-50: hsl(188.7824 69.4811% 89.0237%); + --color-secondary: hsl(217.2193 91.2195% 59.8039%); + --color-secondary-50: hsl(217.2953 90.4058% 92.3659%); + --color-accent: hsl(270.7407 91.0112% 65.098%); + --color-accent-50: hsl(271.8354 89.0885% 93.3015%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(102.1849 64.9768% 89.3912%); + --color-warning-50: hsl(45.3756 91.104% 91.6245%); + --color-danger-50: hsl(342.2736 47.511% 89.3875%); +} + +[data-theme="seafoam"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(176 45.4545% 93.5294%); + --color-primary-200: hsl(176.6667 42.8571% 91.7647%); + --color-primary-300: hsl(175.8621 43.2836% 86.8627%); + --color-primary-400: hsl(176.5385 44.0678% 76.8627%); + --color-primary-500: hsl(175.9459 44.0476% 67.0588%); + --color-primary-600: hsl(176.3636 32.6733% 60.3922%); + --color-primary-700: hsl(175.6364 21.7391% 50.3922%); + --color-primary-800: hsl(176 21.9512% 40.1961%); + --color-primary-900: hsl(175 21.4286% 32.9412%); + --color-secondary-100: hsl(222 12.8205% 84.7059%); + --color-secondary-200: hsl(221.5385 13.4021% 80.9804%); + --color-secondary-300: hsl(220 13.3758% 69.2157%); + --color-secondary-400: hsl(220 15.2542% 46.2745%); + --color-secondary-500: hsl(219.2308 44.0678% 23.1373%); + --color-secondary-600: hsl(219.5745 43.9252% 20.9804%); + --color-secondary-700: hsl(220 43.8202% 17.451%); + --color-secondary-800: hsl(218.7097 43.662% 13.9216%); + --color-secondary-900: hsl(219.2308 44.8276% 11.3725%); + --color-accent-100: hsl(14.1176 100% 90%); + --color-accent-200: hsl(15 100% 87.451%); + --color-accent-300: hsl(14.1176 100% 80%); + --color-accent-400: hsl(14.1573 100% 65.098%); + --color-accent-500: hsl(14.3529 100% 50%); + --color-accent-600: hsl(14.3478 100% 45.098%); + --color-accent-700: hsl(14.4503 100% 37.451%); + --color-accent-800: hsl(14.5098 100% 30%); + --color-accent-900: hsl(14.4 100% 24.5098%); + --color-success-100: hsl(161.3333 81.8182% 89.2157%); + --color-success-200: hsl(161.7857 82.3529% 86.6667%); + --color-success-300: hsl(162 81.8182% 78.4314%); + --color-success-400: hsl(161.9231 81.25% 62.3529%); + --color-success-500: hsl(161.9731 94.8936% 46.0784%); + --color-success-600: hsl(162.0896 95.2607% 41.3725%); + --color-success-700: hsl(162.0359 94.3503% 34.7059%); + --color-success-800: hsl(161.9549 94.3262% 27.6471%); + --color-success-900: hsl(161.8349 94.7826% 22.549%); + --color-warning-100: hsl(58 78.9474% 92.549%); + --color-warning-200: hsl(58.3784 78.7234% 90.7843%); + --color-warning-300: hsl(57.9661 78.6667% 85.2941%); + --color-warning-400: hsl(58.2524 77.4436% 73.9216%); + --color-warning-500: hsl(57.9592 77.7778% 62.9412%); + --color-warning-600: hsl(57.7444 60.181% 56.6667%); + --color-warning-700: hsl(57.8378 46.0581% 47.2549%); + --color-warning-800: hsl(57.9545 45.8333% 37.6471%); + --color-warning-900: hsl(57.5 45.5696% 30.9804%); + --color-danger-100: hsl(0 60.8696% 90.9804%); + --color-danger-200: hsl(0 61.4035% 88.8235%); + --color-danger-300: hsl(0 60.8696% 81.9608%); + --color-danger-400: hsl(0 61.25% 68.6275%); + --color-danger-500: hsl(0 60.8696% 54.902%); + --color-danger-600: hsl(0 50% 49.4118%); + --color-danger-700: hsl(0 49.763% 41.3725%); + --color-danger-800: hsl(0 50% 32.9412%); + --color-danger-900: hsl(0 50.365% 26.8627%); + --color-surface-100: hsl(182.2222 69.2308% 92.3529%); + --color-surface-200: hsl(180 66.0377% 89.6078%); + --color-surface-300: hsl(180 66.1538% 87.2549%); + surface-400: rgb(102 223 225); + surface-500: rgb(37 209 212); + surface-600: rgb(33 188 191); + surface-700: rgb(28 157 159); + surface-800: rgb(22 125 127); + surface-900: rgb(18 102 104); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(161.9731 94.8936% 46.0784%); + --color-warning: hsl(57.9592 77.7778% 62.9412%); + --color-danger: hsl(0 60.8696% 54.902%); + --color-primary: hsl(175.9459 44.0476% 67.0588%); + --color-primary-50: hsl(175.9851 45.4522% 93.8545%); + --color-secondary: hsl(219.2308 44.0678% 23.1373%); + --color-secondary-50: hsl(221.997 12.8364% 85.4596%); + --color-accent: hsl(14.3529 100% 50%); + --color-accent-50: hsl(14.1448 100% 90.4963%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(161.2453 81.8677% 89.7845%); + --color-warning-50: hsl(58.0387 78.8938% 92.9257%); + --color-danger-50: hsl(0.0284 61.0823% 91.437%); +} + +[data-theme="seafoam-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(176 45.4545% 93.5294%); + --color-primary-200: hsl(176.6667 42.8571% 91.7647%); + --color-primary-300: hsl(175.8621 43.2836% 86.8627%); + --color-primary-400: hsl(176.5385 44.0678% 76.8627%); + --color-primary-500: hsl(175.9459 44.0476% 67.0588%); + --color-primary-600: hsl(176.3636 32.6733% 60.3922%); + --color-primary-700: hsl(175.6364 21.7391% 50.3922%); + --color-primary-800: hsl(176 21.9512% 40.1961%); + --color-primary-900: hsl(175 21.4286% 32.9412%); + --color-secondary-100: hsl(222 12.8205% 84.7059%); + --color-secondary-200: hsl(221.5385 13.4021% 80.9804%); + --color-secondary-300: hsl(220 13.3758% 69.2157%); + --color-secondary-400: hsl(220 15.2542% 46.2745%); + --color-secondary-500: hsl(219.2308 44.0678% 23.1373%); + --color-secondary-600: hsl(219.5745 43.9252% 20.9804%); + --color-secondary-700: hsl(220 43.8202% 17.451%); + --color-secondary-800: hsl(218.7097 43.662% 13.9216%); + --color-secondary-900: hsl(219.2308 44.8276% 11.3725%); + --color-accent-100: hsl(14.1176 100% 90%); + --color-accent-200: hsl(15 100% 87.451%); + --color-accent-300: hsl(14.1176 100% 80%); + --color-accent-400: hsl(14.1573 100% 65.098%); + --color-accent-500: hsl(14.3529 100% 50%); + --color-accent-600: hsl(14.3478 100% 45.098%); + --color-accent-700: hsl(14.4503 100% 37.451%); + --color-accent-800: hsl(14.5098 100% 30%); + --color-accent-900: hsl(14.4 100% 24.5098%); + --color-success-100: hsl(161.3333 81.8182% 89.2157%); + --color-success-200: hsl(161.7857 82.3529% 86.6667%); + --color-success-300: hsl(162 81.8182% 78.4314%); + --color-success-400: hsl(161.9231 81.25% 62.3529%); + --color-success-500: hsl(161.9731 94.8936% 46.0784%); + --color-success-600: hsl(162.0896 95.2607% 41.3725%); + --color-success-700: hsl(162.0359 94.3503% 34.7059%); + --color-success-800: hsl(161.9549 94.3262% 27.6471%); + --color-success-900: hsl(161.8349 94.7826% 22.549%); + --color-warning-100: hsl(58 78.9474% 92.549%); + --color-warning-200: hsl(58.3784 78.7234% 90.7843%); + --color-warning-300: hsl(57.9661 78.6667% 85.2941%); + --color-warning-400: hsl(58.2524 77.4436% 73.9216%); + --color-warning-500: hsl(57.9592 77.7778% 62.9412%); + --color-warning-600: hsl(57.7444 60.181% 56.6667%); + --color-warning-700: hsl(57.8378 46.0581% 47.2549%); + --color-warning-800: hsl(57.9545 45.8333% 37.6471%); + --color-warning-900: hsl(57.5 45.5696% 30.9804%); + --color-danger-100: hsl(0 60.8696% 90.9804%); + --color-danger-200: hsl(0 61.4035% 88.8235%); + --color-danger-300: hsl(0 60.8696% 81.9608%); + --color-danger-400: hsl(0 61.25% 68.6275%); + --color-danger-500: hsl(0 60.8696% 54.902%); + --color-danger-600: hsl(0 50% 49.4118%); + --color-danger-700: hsl(0 49.763% 41.3725%); + --color-danger-800: hsl(0 50% 32.9412%); + --color-danger-900: hsl(0 50.365% 26.8627%); + --color-surface-100: hsl(180.916 70.0535% 36.6667%); + --color-surface-200: hsl(181.1429 70.4698% 29.2157%); + --color-surface-300: hsl(181.3953 70.4918% 23.9216%); + surface-400: rgb(102 223 225); + surface-500: rgb(37 209 212); + surface-600: rgb(33 188 191); + surface-700: rgb(28 157 159); + surface-800: rgb(22 125 127); + surface-900: rgb(18 102 104); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(161.9731 94.8936% 46.0784%); + --color-warning: hsl(57.9592 77.7778% 62.9412%); + --color-danger: hsl(0 60.8696% 54.902%); + --color-primary: hsl(175.9459 44.0476% 67.0588%); + --color-primary-50: hsl(175.9851 45.4522% 93.8545%); + --color-secondary: hsl(219.2308 44.0678% 23.1373%); + --color-secondary-50: hsl(221.997 12.8364% 85.4596%); + --color-accent: hsl(14.3529 100% 50%); + --color-accent-50: hsl(14.1448 100% 90.4963%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(161.2453 81.8677% 89.7845%); + --color-warning-50: hsl(58.0387 78.8938% 92.9257%); + --color-danger-50: hsl(0.0284 61.0823% 91.437%); +} + +[data-theme="vintage"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 0%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(31.4286 84% 90.1961%); + --color-primary-200: hsl(31.1538 83.871% 87.8431%); + --color-primary-300: hsl(31.4286 84% 80.3922%); + --color-primary-400: hsl(31.0345 82.8571% 65.6863%); + --color-primary-500: hsl(31.1538 83.2% 50.9804%); + --color-primary-600: hsl(31.2766 80.3419% 45.8824%); + --color-primary-700: hsl(31.1538 79.5918% 38.4314%); + --color-primary-800: hsl(30.9677 79.4872% 30.5882%); + --color-primary-900: hsl(31.1765 79.6875% 25.098%); + --color-secondary-100: hsl(136.3636 35.4839% 93.9216%); + --color-secondary-200: hsl(137.1429 36.8421% 92.549%); + --color-secondary-300: hsl(136.3636 35.4839% 87.8431%); + --color-secondary-400: hsl(135.3846 36.4486% 79.0196%); + --color-secondary-500: hsl(135.2727 35.9477% 70%); + --color-secondary-600: hsl(135.9184 25.9259% 62.9412%); + --color-secondary-700: hsl(135.7143 17.3554% 52.549%); + --color-secondary-800: hsl(134.5455 15.3488% 42.1569%); + --color-secondary-900: hsl(135.5556 15.4286% 34.3137%); + --color-accent-100: hsl(188.7805 69.4915% 88.4314%); + --color-accent-200: hsl(188.2353 69.863% 85.6863%); + --color-accent-300: hsl(188.6747 70.9402% 77.0588%); + --color-accent-400: hsl(188.75 70.5882% 60%); + --color-accent-500: hsl(188.7379 94.4954% 42.7451%); + --color-accent-600: hsl(188.7097 94.898% 38.4314%); + --color-accent-700: hsl(188.5714 93.9024% 32.1569%); + --color-accent-800: hsl(188.7805 93.8931% 25.6863%); + --color-accent-900: hsl(188.9109 94.3925% 20.9804%); + --color-success-100: hsl(100.9091 52.381% 91.7647%); + --color-success-200: hsl(100 50.9434% 89.6078%); + --color-success-300: hsl(98.1818 51.1628% 83.1373%); + --color-success-400: hsl(98.961 51.6779% 70.7843%); + --color-success-500: hsl(98.7273 51.4019% 58.0392%); + --color-success-600: hsl(98.7879 40.7407% 52.3529%); + --color-success-700: hsl(98.7805 36.9369% 43.5294%); + --color-success-800: hsl(99.0909 37.0787% 34.902%); + --color-success-900: hsl(98.4906 36.5517% 28.4314%); + --color-warning-100: hsl(39.5122 87.234% 90.7843%); + --color-warning-200: hsl(39.2308 89.6552% 88.6275%); + --color-warning-300: hsl(39.759 89.2473% 81.7647%); + --color-warning-400: hsl(39.7241 88.9571% 68.0392%); + --color-warning-500: hsl(39.7101 88.8412% 54.3137%); + --color-warning-600: hsl(39.6774 74.4% 49.0196%); + --color-warning-700: hsl(39.6154 75% 40.7843%); + --color-warning-800: hsl(39.6774 74.6988% 32.549%); + --color-warning-900: hsl(39.4118 75% 26.6667%); + --color-danger-100: hsl(3.1579 54.2857% 93.1373%); + --color-danger-200: hsl(5 54.5455% 91.3725%); + --color-danger-300: hsl(3.2432 52.1127% 86.0784%); + --color-danger-400: hsl(3.6923 52.8455% 75.8824%); + --color-danger-500: hsl(3.871 52.5424% 65.2941%); + --color-danger-600: hsl(3.5714 40% 58.8235%); + --color-danger-700: hsl(4.2857 28% 49.0196%); + --color-danger-800: hsl(4.2857 28% 39.2157%); + --color-danger-900: hsl(4 27.6074% 31.9608%); + --color-surface-100: hsl(30 3.3333% 88.2353%); + --color-surface-200: hsl(20 3.7975% 84.5098%); + --color-surface-300: hsl(20 3.0303% 80.5882%); + surface-400: rgb(121 115 111); + surface-500: rgb(63 55 49); + surface-600: rgb(57 50 44); + surface-700: rgb(47 41 37); + surface-800: rgb(38 33 29); + surface-900: rgb(31 27 24); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(98.7273 51.4019% 58.0392%); + --color-warning: hsl(39.7101 88.8412% 54.3137%); + --color-danger: hsl(3.871 52.5424% 65.2941%); + --color-primary: hsl(31.1538 83.2% 50.9804%); + --color-primary-50: hsl(31.4148 84.0933% 90.6922%); + --color-secondary: hsl(135.2727 35.9477% 70%); + --color-secondary-50: hsl(136.3397 35.4883% 94.2255%); + --color-accent: hsl(188.7379 94.4954% 42.7451%); + --color-accent-50: hsl(188.7824 69.4811% 89.0237%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(100.9235 52.4104% 92.1781%); + --color-warning-50: hsl(39.5093 87.2642% 91.251%); + --color-danger-50: hsl(3.1696 54.3994% 93.4821%); +} + +[data-theme="vintage-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 0%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(31.4286 84% 90.1961%); + --color-primary-200: hsl(31.1538 83.871% 87.8431%); + --color-primary-300: hsl(31.4286 84% 80.3922%); + --color-primary-400: hsl(31.0345 82.8571% 65.6863%); + --color-primary-500: hsl(31.1538 83.2% 50.9804%); + --color-primary-600: hsl(31.2766 80.3419% 45.8824%); + --color-primary-700: hsl(31.1538 79.5918% 38.4314%); + --color-primary-800: hsl(30.9677 79.4872% 30.5882%); + --color-primary-900: hsl(31.1765 79.6875% 25.098%); + --color-secondary-100: hsl(136.3636 35.4839% 93.9216%); + --color-secondary-200: hsl(137.1429 36.8421% 92.549%); + --color-secondary-300: hsl(136.3636 35.4839% 87.8431%); + --color-secondary-400: hsl(135.3846 36.4486% 79.0196%); + --color-secondary-500: hsl(135.2727 35.9477% 70%); + --color-secondary-600: hsl(135.9184 25.9259% 62.9412%); + --color-secondary-700: hsl(135.7143 17.3554% 52.549%); + --color-secondary-800: hsl(134.5455 15.3488% 42.1569%); + --color-secondary-900: hsl(135.5556 15.4286% 34.3137%); + --color-accent-100: hsl(188.7805 69.4915% 88.4314%); + --color-accent-200: hsl(188.2353 69.863% 85.6863%); + --color-accent-300: hsl(188.6747 70.9402% 77.0588%); + --color-accent-400: hsl(188.75 70.5882% 60%); + --color-accent-500: hsl(188.7379 94.4954% 42.7451%); + --color-accent-600: hsl(188.7097 94.898% 38.4314%); + --color-accent-700: hsl(188.5714 93.9024% 32.1569%); + --color-accent-800: hsl(188.7805 93.8931% 25.6863%); + --color-accent-900: hsl(188.9109 94.3925% 20.9804%); + --color-success-100: hsl(100.9091 52.381% 91.7647%); + --color-success-200: hsl(100 50.9434% 89.6078%); + --color-success-300: hsl(98.1818 51.1628% 83.1373%); + --color-success-400: hsl(98.961 51.6779% 70.7843%); + --color-success-500: hsl(98.7273 51.4019% 58.0392%); + --color-success-600: hsl(98.7879 40.7407% 52.3529%); + --color-success-700: hsl(98.7805 36.9369% 43.5294%); + --color-success-800: hsl(99.0909 37.0787% 34.902%); + --color-success-900: hsl(98.4906 36.5517% 28.4314%); + --color-warning-100: hsl(39.5122 87.234% 90.7843%); + --color-warning-200: hsl(39.2308 89.6552% 88.6275%); + --color-warning-300: hsl(39.759 89.2473% 81.7647%); + --color-warning-400: hsl(39.7241 88.9571% 68.0392%); + --color-warning-500: hsl(39.7101 88.8412% 54.3137%); + --color-warning-600: hsl(39.6774 74.4% 49.0196%); + --color-warning-700: hsl(39.6154 75% 40.7843%); + --color-warning-800: hsl(39.6774 74.6988% 32.549%); + --color-warning-900: hsl(39.4118 75% 26.6667%); + --color-danger-100: hsl(3.1579 54.2857% 93.1373%); + --color-danger-200: hsl(5 54.5455% 91.3725%); + --color-danger-300: hsl(3.2432 52.1127% 86.0784%); + --color-danger-400: hsl(3.6923 52.8455% 75.8824%); + --color-danger-500: hsl(3.871 52.5424% 65.2941%); + --color-danger-600: hsl(3.5714 40% 58.8235%); + --color-danger-700: hsl(4.2857 28% 49.0196%); + --color-danger-800: hsl(4.2857 28% 39.2157%); + --color-danger-900: hsl(4 27.6074% 31.9608%); + --color-surface-100: hsl(24 11.9048% 16.4706%); + --color-surface-200: hsl(26.6667 13.4328% 13.1373%); + --color-surface-300: hsl(25.7143 12.7273% 10.7843%); + surface-400: rgb(121 115 111); + surface-500: rgb(63 55 49); + surface-600: rgb(57 50 44); + surface-700: rgb(47 41 37); + surface-800: rgb(38 33 29); + surface-900: rgb(31 27 24); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(98.7273 51.4019% 58.0392%); + --color-warning: hsl(39.7101 88.8412% 54.3137%); + --color-danger: hsl(3.871 52.5424% 65.2941%); + --color-primary: hsl(31.1538 83.2% 50.9804%); + --color-primary-50: hsl(31.4148 84.0933% 90.6922%); + --color-secondary: hsl(135.2727 35.9477% 70%); + --color-secondary-50: hsl(136.3397 35.4883% 94.2255%); + --color-accent: hsl(188.7379 94.4954% 42.7451%); + --color-accent-50: hsl(188.7824 69.4811% 89.0237%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(100.9235 52.4104% 92.1781%); + --color-warning-50: hsl(39.5093 87.2642% 91.251%); + --color-danger-50: hsl(3.1696 54.3994% 93.4821%); +} + +[data-theme="sahara"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(38.3333 81.8182% 91.3725%); + --color-primary-200: hsl(38.6667 81.8182% 89.2157%); + --color-primary-300: hsl(38.3333 81.8182% 82.7451%); + --color-primary-400: hsl(38.4375 83.1169% 69.8039%); + --color-primary-500: hsl(38.2418 82.7273% 56.8627%); + --color-primary-600: hsl(38.2822 65.4618% 51.1765%); + --color-primary-700: hsl(38.3824 62.3853% 42.7451%); + --color-primary-800: hsl(38.1818 63.2184% 34.1176%); + --color-primary-900: hsl(38 63.3803% 27.8431%); + --color-secondary-100: hsl(171.7241 59.1837% 90.3922%); + --color-secondary-200: hsl(173.3333 58.0645% 87.8431%); + --color-secondary-300: hsl(172.7586 58% 80.3922%); + --color-secondary-400: hsl(172.9412 58.6207% 65.8824%); + --color-secondary-500: hsl(172.9655 58.2329% 51.1765%); + --color-secondary-600: hsl(172.6718 55.7447% 46.0784%); + --color-secondary-700: hsl(173.3333 55.102% 38.4314%); + --color-secondary-800: hsl(173.1034 55.414% 30.7843%); + --color-secondary-900: hsl(173.2394 55.9055% 24.902%); + --color-accent-100: hsl(86.6667 60% 94.1176%); + --color-accent-200: hsl(84.5455 57.8947% 92.549%); + --color-accent-300: hsl(84 57.377% 88.0392%); + --color-accent-400: hsl(84.7619 58.8785% 79.0196%); + --color-accent-500: hsl(84.2697 58.1699% 70%); + --color-accent-600: hsl(84.75 42.5532% 63.1373%); + --color-accent-700: hsl(84.5455 27.2727% 52.549%); + --color-accent-800: hsl(84.4444 25.2336% 41.9608%); + --color-accent-900: hsl(83.7209 24.5714% 34.3137%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.5172 74.359% 92.3529%); + --color-warning-200: hsl(45 75% 90.5882%); + --color-warning-300: hsl(44.2105 74.026% 84.902%); + --color-warning-400: hsl(45 73.5294% 73.3333%); + --color-warning-500: hsl(44.7887 73.1959% 61.9608%); + --color-warning-600: hsl(45 56.6372% 55.6863%); + --color-warning-700: hsl(44.8598 45.1477% 46.4706%); + --color-warning-800: hsl(45.1765 44.9735% 37.0588%); + --color-warning-900: hsl(45.2174 44.5161% 30.3922%); + --color-danger-100: hsl(330 65% 92.1569%); + --color-danger-200: hsl(330 64% 90.1961%); + --color-danger-300: hsl(330.5882 64.557% 84.5098%); + --color-danger-400: hsl(329.6629 64.0288% 72.7451%); + --color-danger-500: hsl(329.7638 63.8191% 60.9804%); + --color-danger-600: hsl(330 49.5652% 54.902%); + --color-danger-700: hsl(329.6842 40.7725% 45.6863%); + --color-danger-800: hsl(329.2105 40.8602% 36.4706%); + --color-danger-900: hsl(330 40.7895% 29.8039%); + --color-surface-100: hsl(348.5714 63.6364% 93.5294%); + --color-surface-200: hsl(351.4286 66.6667% 91.7647%); + --color-surface-300: hsl(349.7143 66.0377% 89.6078%); + surface-400: rgb(229 131 147); + surface-500: rgb(218 78 101); + surface-600: rgb(196 70 91); + surface-700: rgb(164 59 76); + surface-800: rgb(131 47 61); + surface-900: rgb(107 38 49); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(44.7887 73.1959% 61.9608%); + --color-danger: hsl(329.7638 63.8191% 60.9804%); + --color-primary: hsl(38.2418 82.7273% 56.8627%); + --color-primary-50: hsl(38.3297 81.8482% 91.8078%); + --color-secondary: hsl(172.9655 58.2329% 51.1765%); + --color-secondary-50: hsl(171.6868 59.1825% 90.8822%); + --color-accent: hsl(84.2697 58.1699% 70%); + --color-accent-50: hsl(86.6928 60.0216% 94.4134%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.5261 74.3486% 92.7374%); + --color-danger-50: hsl(330.0542 65.1822% 92.5558%); +} + +[data-theme="sahara-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(38.3333 81.8182% 91.3725%); + --color-primary-200: hsl(38.6667 81.8182% 89.2157%); + --color-primary-300: hsl(38.3333 81.8182% 82.7451%); + --color-primary-400: hsl(38.4375 83.1169% 69.8039%); + --color-primary-500: hsl(38.2418 82.7273% 56.8627%); + --color-primary-600: hsl(38.2822 65.4618% 51.1765%); + --color-primary-700: hsl(38.3824 62.3853% 42.7451%); + --color-primary-800: hsl(38.1818 63.2184% 34.1176%); + --color-primary-900: hsl(38 63.3803% 27.8431%); + --color-secondary-100: hsl(171.7241 59.1837% 90.3922%); + --color-secondary-200: hsl(173.3333 58.0645% 87.8431%); + --color-secondary-300: hsl(172.7586 58% 80.3922%); + --color-secondary-400: hsl(172.9412 58.6207% 65.8824%); + --color-secondary-500: hsl(172.9655 58.2329% 51.1765%); + --color-secondary-600: hsl(172.6718 55.7447% 46.0784%); + --color-secondary-700: hsl(173.3333 55.102% 38.4314%); + --color-secondary-800: hsl(173.1034 55.414% 30.7843%); + --color-secondary-900: hsl(173.2394 55.9055% 24.902%); + --color-accent-100: hsl(86.6667 60% 94.1176%); + --color-accent-200: hsl(84.5455 57.8947% 92.549%); + --color-accent-300: hsl(84 57.377% 88.0392%); + --color-accent-400: hsl(84.7619 58.8785% 79.0196%); + --color-accent-500: hsl(84.2697 58.1699% 70%); + --color-accent-600: hsl(84.75 42.5532% 63.1373%); + --color-accent-700: hsl(84.5455 27.2727% 52.549%); + --color-accent-800: hsl(84.4444 25.2336% 41.9608%); + --color-accent-900: hsl(83.7209 24.5714% 34.3137%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.5172 74.359% 92.3529%); + --color-warning-200: hsl(45 75% 90.5882%); + --color-warning-300: hsl(44.2105 74.026% 84.902%); + --color-warning-400: hsl(45 73.5294% 73.3333%); + --color-warning-500: hsl(44.7887 73.1959% 61.9608%); + --color-warning-600: hsl(45 56.6372% 55.6863%); + --color-warning-700: hsl(44.8598 45.1477% 46.4706%); + --color-warning-800: hsl(45.1765 44.9735% 37.0588%); + --color-warning-900: hsl(45.2174 44.5161% 30.3922%); + --color-danger-100: hsl(330 65% 92.1569%); + --color-danger-200: hsl(330 64% 90.1961%); + --color-danger-300: hsl(330.5882 64.557% 84.5098%); + --color-danger-400: hsl(329.6629 64.0288% 72.7451%); + --color-danger-500: hsl(329.7638 63.8191% 60.9804%); + --color-danger-600: hsl(330 49.5652% 54.902%); + --color-danger-700: hsl(329.6842 40.7725% 45.6863%); + --color-danger-800: hsl(329.2105 40.8602% 36.4706%); + --color-danger-900: hsl(330 40.7895% 29.8039%); + --color-surface-100: hsl(350.2857 47.0852% 43.7255%); + --color-surface-200: hsl(350 47.191% 34.902%); + --color-surface-300: hsl(350.4348 47.5862% 28.4314%); + surface-400: rgb(229 131 147); + surface-500: rgb(218 78 101); + surface-600: rgb(196 70 91); + surface-700: rgb(164 59 76); + surface-800: rgb(131 47 61); + surface-900: rgb(107 38 49); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(44.7887 73.1959% 61.9608%); + --color-danger: hsl(329.7638 63.8191% 60.9804%); + --color-primary: hsl(38.2418 82.7273% 56.8627%); + --color-primary-50: hsl(38.3297 81.8482% 91.8078%); + --color-secondary: hsl(172.9655 58.2329% 51.1765%); + --color-secondary-50: hsl(171.6868 59.1825% 90.8822%); + --color-accent: hsl(84.2697 58.1699% 70%); + --color-accent-50: hsl(86.6928 60.0216% 94.4134%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.5261 74.3486% 92.7374%); + --color-danger-50: hsl(330.0542 65.1822% 92.5558%); +} + +[data-theme="hamlindigo"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 100%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(222.8571 70% 96.0784%); + --color-primary-200: hsl(221.0526 76% 95.098%); + --color-primary-300: hsl(221.3793 70.7317% 91.9608%); + --color-primary-400: hsl(221.1765 71.831% 86.0784%); + --color-primary-500: hsl(221.9178 72.2772% 80.1961%); + --color-primary-600: hsl(221.8182 46.4789% 72.1569%); + --color-primary-700: hsl(221.4545 27.0936% 60.1961%); + --color-primary-800: hsl(222.2727 17.8862% 48.2353%); + --color-primary-900: hsl(221.6667 18% 39.2157%); + --color-secondary-100: hsl(40 29.4118% 90%); + --color-secondary-200: hsl(43.3333 28.125% 87.451%); + --color-secondary-300: hsl(42 29.4118% 80%); + --color-secondary-400: hsl(42.3529 28.4916% 64.902%); + --color-secondary-500: hsl(41.9178 28.6275% 50%); + --color-secondary-600: hsl(41.8182 28.6957% 45.098%); + --color-secondary-700: hsl(42.5455 28.7958% 37.451%); + --color-secondary-800: hsl(41.8605 28.1046% 30%); + --color-secondary-900: hsl(42.8571 28% 24.5098%); + --color-accent-100: hsl(192.8571 28% 90.1961%); + --color-accent-200: hsl(191.25 25.8065% 87.8431%); + --color-accent-300: hsl(191.5385 26% 80.3922%); + --color-accent-400: hsl(191.4894 26.8571% 65.6863%); + --color-accent-500: hsl(190.9091 26.4% 50.9804%); + --color-accent-600: hsl(191 25.641% 45.8824%); + --color-accent-700: hsl(191.0204 25.1282% 38.2353%); + --color-accent-800: hsl(190.5 25.641% 30.5882%); + --color-accent-900: hsl(191.25 25% 25.098%); + --color-success-100: hsl(161.25 27.5862% 88.6275%); + --color-success-200: hsl(164.2105 26.0274% 85.6863%); + --color-success-300: hsl(162.5806 26.4957% 77.0588%); + --color-success-400: hsl(162.2222 26.4706% 60%); + --color-success-500: hsl(162.0779 35.1598% 42.9412%); + --color-success-600: hsl(162.6087 35.0254% 38.6275%); + --color-success-700: hsl(162.4138 35.3659% 32.1569%); + --color-success-800: hsl(161.7391 34.8485% 25.8824%); + --color-success-900: hsl(161.0526 35.1852% 21.1765%); + --color-warning-100: hsl(41.25 69.5652% 90.9804%); + --color-warning-200: hsl(41.5385 68.4211% 88.8235%); + --color-warning-300: hsl(41.6129 67.3913% 81.9608%); + --color-warning-400: hsl(41.2844 67.7019% 68.4314%); + --color-warning-500: hsl(41.1538 67.8261% 54.902%); + --color-warning-600: hsl(41.1429 55.5556% 49.4118%); + --color-warning-700: hsl(41.0256 55.4502% 41.3725%); + --color-warning-800: hsl(40.8511 55.9524% 32.9412%); + --color-warning-900: hsl(41.2987 56.2044% 26.8627%); + --color-danger-100: hsl(341.5385 25.4902% 90%); + --color-danger-200: hsl(341.25 25.8065% 87.8431%); + --color-danger-300: hsl(341.5385 26% 80.3922%); + --color-danger-400: hsl(341.7391 26.1364% 65.4902%); + --color-danger-500: hsl(341.5385 25.8964% 50.7843%); + --color-danger-600: hsl(341.6949 25.3219% 45.6863%); + --color-danger-700: hsl(341.6327 25.1282% 38.2353%); + --color-danger-800: hsl(341.5385 25.1613% 30.3922%); + --color-danger-900: hsl(342.5806 24.4094% 24.902%); + --color-surface-100: hsl(226.6667 24.3243% 92.7451%); + --color-surface-200: hsl(221.5385 26.5306% 90.3922%); + --color-surface-300: hsl(221.25 25.8065% 87.8431%); + surface-400: rgb(146 159 191); + surface-500: rgb(99 118 163); + surface-600: rgb(89 106 147); + surface-700: rgb(74 89 122); + surface-800: rgb(59 71 98); + surface-900: rgb(49 58 80); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(162.0779 35.1598% 42.9412%); + --color-warning: hsl(41.1538 67.8261% 54.902%); + --color-danger: hsl(341.5385 25.8964% 50.7843%); + --color-primary: hsl(221.9178 72.2772% 80.1961%); + --color-primary-50: hsl(222.8528 70.0572% 96.2746%); + --color-secondary: hsl(41.9178 28.6275% 50%); + --color-secondary-50: hsl(40.0008 29.4184% 90.4964%); + --color-accent: hsl(190.9091 26.4% 50.9804%); + --color-accent-50: hsl(192.8593 28.0029% 90.6835%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(161.2189 27.5849% 89.1941%); + --color-warning-50: hsl(41.2516 69.5712% 91.4334%); + --color-danger-50: hsl(341.5628 25.5286% 90.4978%); +} + +[data-theme="hamlindigo-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 100%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(222.8571 70% 96.0784%); + --color-primary-200: hsl(221.0526 76% 95.098%); + --color-primary-300: hsl(221.3793 70.7317% 91.9608%); + --color-primary-400: hsl(221.1765 71.831% 86.0784%); + --color-primary-500: hsl(221.9178 72.2772% 80.1961%); + --color-primary-600: hsl(221.8182 46.4789% 72.1569%); + --color-primary-700: hsl(221.4545 27.0936% 60.1961%); + --color-primary-800: hsl(222.2727 17.8862% 48.2353%); + --color-primary-900: hsl(221.6667 18% 39.2157%); + --color-secondary-100: hsl(40 29.4118% 90%); + --color-secondary-200: hsl(43.3333 28.125% 87.451%); + --color-secondary-300: hsl(42 29.4118% 80%); + --color-secondary-400: hsl(42.3529 28.4916% 64.902%); + --color-secondary-500: hsl(41.9178 28.6275% 50%); + --color-secondary-600: hsl(41.8182 28.6957% 45.098%); + --color-secondary-700: hsl(42.5455 28.7958% 37.451%); + --color-secondary-800: hsl(41.8605 28.1046% 30%); + --color-secondary-900: hsl(42.8571 28% 24.5098%); + --color-accent-100: hsl(192.8571 28% 90.1961%); + --color-accent-200: hsl(191.25 25.8065% 87.8431%); + --color-accent-300: hsl(191.5385 26% 80.3922%); + --color-accent-400: hsl(191.4894 26.8571% 65.6863%); + --color-accent-500: hsl(190.9091 26.4% 50.9804%); + --color-accent-600: hsl(191 25.641% 45.8824%); + --color-accent-700: hsl(191.0204 25.1282% 38.2353%); + --color-accent-800: hsl(190.5 25.641% 30.5882%); + --color-accent-900: hsl(191.25 25% 25.098%); + --color-success-100: hsl(161.25 27.5862% 88.6275%); + --color-success-200: hsl(164.2105 26.0274% 85.6863%); + --color-success-300: hsl(162.5806 26.4957% 77.0588%); + --color-success-400: hsl(162.2222 26.4706% 60%); + --color-success-500: hsl(162.0779 35.1598% 42.9412%); + --color-success-600: hsl(162.6087 35.0254% 38.6275%); + --color-success-700: hsl(162.4138 35.3659% 32.1569%); + --color-success-800: hsl(161.7391 34.8485% 25.8824%); + --color-success-900: hsl(161.0526 35.1852% 21.1765%); + --color-warning-100: hsl(41.25 69.5652% 90.9804%); + --color-warning-200: hsl(41.5385 68.4211% 88.8235%); + --color-warning-300: hsl(41.6129 67.3913% 81.9608%); + --color-warning-400: hsl(41.2844 67.7019% 68.4314%); + --color-warning-500: hsl(41.1538 67.8261% 54.902%); + --color-warning-600: hsl(41.1429 55.5556% 49.4118%); + --color-warning-700: hsl(41.0256 55.4502% 41.3725%); + --color-warning-800: hsl(40.8511 55.9524% 32.9412%); + --color-warning-900: hsl(41.2987 56.2044% 26.8627%); + --color-danger-100: hsl(341.5385 25.4902% 90%); + --color-danger-200: hsl(341.25 25.8065% 87.8431%); + --color-danger-300: hsl(341.5385 26% 80.3922%); + --color-danger-400: hsl(341.7391 26.1364% 65.4902%); + --color-danger-500: hsl(341.5385 25.8964% 50.7843%); + --color-danger-600: hsl(341.6949 25.3219% 45.6863%); + --color-danger-700: hsl(341.6327 25.1282% 38.2353%); + --color-danger-800: hsl(341.5385 25.1613% 30.3922%); + --color-danger-900: hsl(342.5806 24.4094% 24.902%); + --color-surface-100: hsl(221.25 24.4898% 38.4314%); + --color-surface-200: hsl(221.5385 24.8408% 30.7843%); + --color-surface-300: hsl(222.5806 24.031% 25.2941%); + surface-400: rgb(146 159 191); + surface-500: rgb(99 118 163); + surface-600: rgb(89 106 147); + surface-700: rgb(74 89 122); + surface-800: rgb(59 71 98); + surface-900: rgb(49 58 80); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(162.0779 35.1598% 42.9412%); + --color-warning: hsl(41.1538 67.8261% 54.902%); + --color-danger: hsl(341.5385 25.8964% 50.7843%); + --color-primary: hsl(221.9178 72.2772% 80.1961%); + --color-primary-50: hsl(222.8528 70.0572% 96.2746%); + --color-secondary: hsl(41.9178 28.6275% 50%); + --color-secondary-50: hsl(40.0008 29.4184% 90.4964%); + --color-accent: hsl(190.9091 26.4% 50.9804%); + --color-accent-50: hsl(192.8593 28.0029% 90.6835%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(161.2189 27.5849% 89.1941%); + --color-warning-50: hsl(41.2516 69.5712% 91.4334%); + --color-danger-50: hsl(341.5628 25.5286% 90.4978%); +} + +[data-theme="gold-nouveau"] { + --color-primary-content: hsl(0 0% 100%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(266.6667 36% 95.098%); + --color-primary-200: hsl(268.4211 37.2549% 90%); + --color-primary-300: hsl(270 36.9565% 81.9608%); + --color-primary-400: hsl(269.1176 36.9565% 63.9216%); + --color-primary-500: hsl(268.9655 37.0213% 46.0784%); + --color-primary-600: hsl(269.0323 36.9048% 32.9412%); + --color-primary-700: hsl(268 36.5854% 24.1176%); + --color-primary-800: hsl(268.8889 38.0282% 13.9216%); + --color-primary-900: hsl(272.3077 37.1429% 6.8627%); + --color-secondary-100: hsl(210.6667 81.8182% 89.2157%); + --color-secondary-200: hsl(211.0714 82.3529% 86.6667%); + --color-secondary-300: hsl(210.6667 81.8182% 78.4314%); + --color-secondary-400: hsl(211.1538 81.25% 62.3529%); + --color-secondary-500: hsl(210.9417 94.8936% 46.0784%); + --color-secondary-600: hsl(210.7463 95.2607% 41.3725%); + --color-secondary-700: hsl(210.8982 94.3503% 34.7059%); + --color-secondary-800: hsl(211.1278 94.3262% 27.6471%); + --color-secondary-900: hsl(210.8257 94.7826% 22.549%); + --color-accent-100: hsl(243 58.8235% 93.3333%); + --color-accent-200: hsl(244.6154 61.9048% 91.7647%); + --color-accent-300: hsl(244.5 58.8235% 86.6667%); + --color-accent-400: hsl(243.4286 59.322% 76.8627%); + --color-accent-500: hsl(244.1584 59.7633% 66.8627%); + --color-accent-600: hsl(243.956 44.8276% 60.1961%); + --color-accent-700: hsl(243.9474 29.9213% 50.1961%); + --color-accent-800: hsl(243.9344 29.7561% 40.1961%); + --color-accent-900: hsl(243.6735 29.3413% 32.7451%); + --color-success-100: hsl(135 40% 92.1569%); + --color-success-200: hsl(134.2857 42.8571% 90.3922%); + --color-success-300: hsl(132.7273 41.7722% 84.5098%); + --color-success-400: hsl(134.4828 41.4286% 72.549%); + --color-success-500: hsl(133.7349 41.7085% 60.9804%); + --color-success-600: hsl(133.7838 32.1739% 54.902%); + --color-success-700: hsl(133.5484 26.4957% 45.8824%); + --color-success-800: hsl(134.4 26.8817% 36.4706%); + --color-success-900: hsl(133.1707 26.7974% 30%); + --color-warning-100: hsl(31.3636 81.4815% 89.4118%); + --color-warning-200: hsl(32.1429 82.3529% 86.6667%); + --color-warning-300: hsl(32.3596 81.6514% 78.6275%); + --color-warning-400: hsl(31.9231 82.1053% 62.7451%); + --color-warning-500: hsl(32.0179 93.3054% 46.8627%); + --color-warning-600: hsl(31.9403 93.4884% 42.1569%); + --color-warning-700: hsl(31.976 93.2961% 35.098%); + --color-warning-800: hsl(31.791 93.0556% 28.2353%); + --color-warning-900: hsl(31.9266 93.1624% 22.9412%); + --color-danger-100: hsl(350.7692 37.1429% 86.2745%); + --color-danger-200: hsl(350.625 36.3636% 82.7451%); + --color-danger-300: hsl(350.5882 36.1702% 72.3529%); + --color-danger-400: hsl(351.3333 36.5854% 51.7647%); + --color-danger-500: hsl(351.0938 81.0127% 30.9804%); + --color-danger-600: hsl(351.1304 80.4196% 28.0392%); + --color-danger-700: hsl(350.625 81.3559% 23.1373%); + --color-danger-800: hsl(351.4286 81.0526% 18.6275%); + --color-danger-900: hsl(350.4762 81.8182% 15.098%); + --color-surface-100: hsl(270 40% 98.0392%); + --color-surface-200: hsl(266.6667 36% 95.098%); + --color-surface-300: hsl(268.4211 37.2549% 90%); + surface-400: rgb(162 129 197); + surface-500: rgb(116 74 161); + surface-600: rgb(83 53 115); + surface-700: rgb(60 39 84); + surface-800: rgb(35 22 49); + surface-900: rgb(18 11 24); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(133.7349 41.7085% 60.9804%); + --color-warning: hsl(32.0179 93.3054% 46.8627%); + --color-danger: hsl(351.0938 81.0127% 30.9804%); + --color-primary: hsl(268.9655 37.0213% 46.0784%); + --color-primary-50: hsl(266.6537 36.0218% 95.3428%); + --color-secondary: hsl(210.9417 94.8936% 46.0784%); + --color-secondary-50: hsl(210.6786 81.9499% 89.7608%); + --color-accent: hsl(244.1584 59.7633% 66.8627%); + --color-accent-50: hsl(242.9607 58.9204% 93.669%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(134.964 40.0072% 92.55%); + --color-warning-50: hsl(31.3488 81.5757% 89.9476%); + --color-danger-50: hsl(350.8113 37.2561% 86.9627%); +} + +[data-theme="gold-nouveau-dark"] { + --color-primary-content: hsl(0 0% 100%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(266.6667 36% 95.098%); + --color-primary-200: hsl(268.4211 37.2549% 90%); + --color-primary-300: hsl(270 36.9565% 81.9608%); + --color-primary-400: hsl(269.1176 36.9565% 63.9216%); + --color-primary-500: hsl(268.9655 37.0213% 46.0784%); + --color-primary-600: hsl(269.0323 36.9048% 32.9412%); + --color-primary-700: hsl(268 36.5854% 24.1176%); + --color-primary-800: hsl(268.8889 38.0282% 13.9216%); + --color-primary-900: hsl(272.3077 37.1429% 6.8627%); + --color-secondary-100: hsl(210.6667 81.8182% 89.2157%); + --color-secondary-200: hsl(211.0714 82.3529% 86.6667%); + --color-secondary-300: hsl(210.6667 81.8182% 78.4314%); + --color-secondary-400: hsl(211.1538 81.25% 62.3529%); + --color-secondary-500: hsl(210.9417 94.8936% 46.0784%); + --color-secondary-600: hsl(210.7463 95.2607% 41.3725%); + --color-secondary-700: hsl(210.8982 94.3503% 34.7059%); + --color-secondary-800: hsl(211.1278 94.3262% 27.6471%); + --color-secondary-900: hsl(210.8257 94.7826% 22.549%); + --color-accent-100: hsl(243 58.8235% 93.3333%); + --color-accent-200: hsl(244.6154 61.9048% 91.7647%); + --color-accent-300: hsl(244.5 58.8235% 86.6667%); + --color-accent-400: hsl(243.4286 59.322% 76.8627%); + --color-accent-500: hsl(244.1584 59.7633% 66.8627%); + --color-accent-600: hsl(243.956 44.8276% 60.1961%); + --color-accent-700: hsl(243.9474 29.9213% 50.1961%); + --color-accent-800: hsl(243.9344 29.7561% 40.1961%); + --color-accent-900: hsl(243.6735 29.3413% 32.7451%); + --color-success-100: hsl(135 40% 92.1569%); + --color-success-200: hsl(134.2857 42.8571% 90.3922%); + --color-success-300: hsl(132.7273 41.7722% 84.5098%); + --color-success-400: hsl(134.4828 41.4286% 72.549%); + --color-success-500: hsl(133.7349 41.7085% 60.9804%); + --color-success-600: hsl(133.7838 32.1739% 54.902%); + --color-success-700: hsl(133.5484 26.4957% 45.8824%); + --color-success-800: hsl(134.4 26.8817% 36.4706%); + --color-success-900: hsl(133.1707 26.7974% 30%); + --color-warning-100: hsl(31.3636 81.4815% 89.4118%); + --color-warning-200: hsl(32.1429 82.3529% 86.6667%); + --color-warning-300: hsl(32.3596 81.6514% 78.6275%); + --color-warning-400: hsl(31.9231 82.1053% 62.7451%); + --color-warning-500: hsl(32.0179 93.3054% 46.8627%); + --color-warning-600: hsl(31.9403 93.4884% 42.1569%); + --color-warning-700: hsl(31.976 93.2961% 35.098%); + --color-warning-800: hsl(31.791 93.0556% 28.2353%); + --color-warning-900: hsl(31.9266 93.1624% 22.9412%); + --color-danger-100: hsl(350.7692 37.1429% 86.2745%); + --color-danger-200: hsl(350.625 36.3636% 82.7451%); + --color-danger-300: hsl(350.5882 36.1702% 72.3529%); + --color-danger-400: hsl(351.3333 36.5854% 51.7647%); + --color-danger-500: hsl(351.0938 81.0127% 30.9804%); + --color-danger-600: hsl(351.1304 80.4196% 28.0392%); + --color-danger-700: hsl(350.625 81.3559% 23.1373%); + --color-danger-800: hsl(351.4286 81.0526% 18.6275%); + --color-danger-900: hsl(350.4762 81.8182% 15.098%); + --color-surface-100: hsl(268 36.5854% 24.1176%); + --color-surface-200: hsl(268.8889 38.0282% 13.9216%); + --color-surface-300: hsl(272.3077 37.1429% 6.8627%); + surface-400: rgb(162 129 197); + surface-500: rgb(116 74 161); + surface-600: rgb(83 53 115); + surface-700: rgb(60 39 84); + surface-800: rgb(35 22 49); + surface-900: rgb(18 11 24); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(133.7349 41.7085% 60.9804%); + --color-warning: hsl(32.0179 93.3054% 46.8627%); + --color-danger: hsl(351.0938 81.0127% 30.9804%); + --color-primary: hsl(268.9655 37.0213% 46.0784%); + --color-primary-50: hsl(266.6537 36.0218% 95.3428%); + --color-secondary: hsl(210.9417 94.8936% 46.0784%); + --color-secondary-50: hsl(210.6786 81.9499% 89.7608%); + --color-accent: hsl(244.1584 59.7633% 66.8627%); + --color-accent-50: hsl(242.9607 58.9204% 93.669%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(134.964 40.0072% 92.55%); + --color-warning-50: hsl(31.3488 81.5757% 89.9476%); + --color-danger-50: hsl(350.8113 37.2561% 86.9627%); +} diff --git a/packages/tailwind/src/lib/css/themes/generated/daisy.css b/packages/tailwind/src/lib/css/themes/generated/daisy.css new file mode 100644 index 0000000..bd5da58 --- /dev/null +++ b/packages/tailwind/src/lib/css/themes/generated/daisy.css @@ -0,0 +1,3609 @@ +:root { + color-scheme: light; + --color-primary: hsl(257.4075 100% 50%); + --color-secondary: hsl(310.4453 100% 50%); + --color-secondary-content: hsl(320.0789 100% 98.6494%); + --color-accent: hsl(173.4835 100% 42.1865%); + --color-neutral: hsl(214.2857 19.6262% 20.9804%); + --color-neutral-content: hsl(212.3077 19.403% 86.8627%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-200: hsl(0 0% 94.902%); + --color-surface-300: hsl(180 1.9608% 90%); + --color-surface-content: hsl(215 27.907% 16.8627%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(227.6647 100% 91.0748%); + --color-primary-50: hsl(232.3457 100% 76.8157%); + --color-primary-100: hsl(233.4035 100% 74.9896%); + --color-primary-200: hsl(236.0867 100% 71.5789%); + --color-primary-300: hsl(239.9818 100% 68.5879%); + --color-primary-400: hsl(245.7714 100% 62.5712%); + --color-primary-500: hsl(257.4075 100% 50%); + --color-primary-600: hsl(256.3942 100% 45.2974%); + --color-primary-700: hsl(255.9702 100% 38.7195%); + --color-primary-800: hsl(255.3947 100% 32.3445%); + --color-primary-900: hsl(254.5739 100% 26.1938%); + --color-secondary-50: hsl(312.9534 100% 79.1139%); + --color-secondary-100: hsl(312.8775 100% 76.9231%); + --color-secondary-200: hsl(312.6258 100% 72.1652%); + --color-secondary-300: hsl(312.1478 100% 66.4927%); + --color-secondary-400: hsl(311.0379 100% 57.9643%); + --color-secondary-500: hsl(310.4453 100% 50%); + --color-secondary-600: hsl(314.516 100% 47.3052%); + --color-secondary-700: hsl(314.6511 100% 40.4525%); + --color-secondary-800: hsl(314.8343 100% 33.8111%); + --color-secondary-900: hsl(315.0952 100% 27.4033%); + --color-accent-content: hsl(168.722 100% 3.2602%); + --color-accent-50: hsl(171.3855 72.5307% 71.4464%); + --color-accent-100: hsl(171.7771 72.9012% 68.0855%); + --color-accent-200: hsl(172.7542 74.2685% 59.9573%); + --color-accent-300: hsl(174.6018 100% 43.9907%); + --color-accent-400: hsl(174.0311 100% 43.1035%); + --color-accent-500: hsl(173.4835 100% 42.1865%); + --color-accent-600: hsl(173.4232 100% 36.6415%); + --color-accent-700: hsl(173.3439 100% 31.2487%); + --color-accent-800: hsl(173.2358 100% 26.0221%); + --color-accent-900: hsl(173.0804 100% 20.9795%); + --color-neutral-50: hsl(214.3814 5.8279% 54.0221%); + --color-neutral-100: hsl(214.3741 5.7772% 50.1155%); + --color-neutral-200: hsl(214.3577 7.6767% 42.4628%); + --color-neutral-300: hsl(214.3385 10.2652% 35.04%); + --color-neutral-400: hsl(214.3153 13.944% 27.8698%); + --color-neutral-500: hsl(214.2857 19.6262% 20.9804%); + --color-neutral-600: hsl(214.2857 20.3782% 17.7128%); + --color-neutral-700: hsl(214.2857 21.4338% 14.5349%); + --color-neutral-800: hsl(214.2857 23.0159% 11.455%); + --color-neutral-900: hsl(214.2857 25.6311% 8.4834%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); +} + +@media (prefers-color-scheme: dark) { + :root { + color-scheme: dark; + --color-primary: hsl(234.8208 100% 72.6713%); + --color-secondary: hsl(313.3209 100% 66.1653%); + --color-accent: hsl(173.7346 100% 40.1728%); + --color-neutral: hsl(213.3333 17.6471% 20%); + --color-neutral-content: hsl(220 13.3758% 69.2157%); + --color-surface-100: hsl(212.3077 18.3099% 13.9216%); + --color-surface-200: hsl(212.7273 18.0328% 11.9608%); + --color-surface-300: hsl(213.3333 17.6471% 10%); + --color-surface-content: hsl(220 13.3758% 69.2157%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(236.4483 66.7205% 5.3866%); + --color-primary-50: hsl(229.7915 100% 84.0735%); + --color-primary-100: hsl(230.1859 100% 82.7145%); + --color-primary-200: hsl(231.0667 100% 80.0547%); + --color-primary-300: hsl(232.0983 100% 77.4828%); + --color-primary-400: hsl(233.327 100% 75.0147%); + --color-primary-500: hsl(234.8208 100% 72.6713%); + --color-primary-600: hsl(235.0704 70.3808% 64.2382%); + --color-primary-700: hsl(235.0704 47.9454% 54.6908%); + --color-primary-800: hsl(235.0704 40.46% 45.4378%); + --color-primary-900: hsl(235.0704 41.5282% 36.5104%); + --color-secondary-content: hsl(320.8908 83.2641% 5.2689%); + --color-secondary-50: hsl(314.3395 100% 83.432%); + --color-secondary-100: hsl(314.31 100% 81.8013%); + --color-secondary-200: hsl(314.212 100% 78.4165%); + --color-secondary-300: hsl(314.0445 100% 74.8016%); + --color-secondary-400: hsl(313.7722 100% 70.8191%); + --color-secondary-500: hsl(313.3209 100% 66.1653%); + --color-secondary-600: hsl(318.1553 84.2932% 60.7486%); + --color-secondary-700: hsl(318.1553 59.0977% 51.679%); + --color-secondary-800: hsl(318.1553 56.347% 42.889%); + --color-secondary-900: hsl(318.1553 57.9256% 34.4083%); + --color-accent-content: hsl(168.7443 100% 2.9908%); + --color-accent-50: hsl(171.1098 64.2687% 71.4638%); + --color-accent-100: hsl(171.4554 64.6409% 68.3324%); + --color-accent-200: hsl(172.2753 65.8475% 61.2424%); + --color-accent-300: hsl(173.5236 68.6512% 51.112%); + --color-accent-400: hsl(174.292 100% 41.2676%); + --color-accent-500: hsl(173.7346 100% 40.1728%); + --color-accent-600: hsl(173.6737 100% 34.8763%); + --color-accent-700: hsl(173.5935 100% 29.7251%); + --color-accent-800: hsl(173.484 100% 24.7328%); + --color-accent-900: hsl(173.3263 100% 19.9161%); + --color-neutral-50: hsl(213.4653 4.9421% 53.3722%); + --color-neutral-100: hsl(213.4565 5.0146% 49.4173%); + --color-neutral-200: hsl(213.4361 6.723% 41.6751%); + --color-neutral-300: hsl(213.4108 9.0416% 34.1738%); + --color-neutral-400: hsl(213.3782 12.3819% 26.9382%); + --color-neutral-500: hsl(213.3333 17.6471% 20%); + --color-neutral-600: hsl(213.3333 18.3577% 16.8534%); + --color-neutral-700: hsl(213.3333 19.3599% 13.7931%); + --color-neutral-800: hsl(213.3333 20.8717% 10.8272%); + --color-neutral-900: hsl(213.3333 23.3974% 7.9657%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + } +} + +[data-theme="light"] { + color-scheme: light; + --color-primary: hsl(257.4075 100% 50%); + --color-secondary: hsl(310.4453 100% 50%); + --color-secondary-content: hsl(320.0789 100% 98.6494%); + --color-accent: hsl(173.4835 100% 42.1865%); + --color-neutral: hsl(214.2857 19.6262% 20.9804%); + --color-neutral-content: hsl(212.3077 19.403% 86.8627%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-200: hsl(0 0% 94.902%); + --color-surface-300: hsl(180 1.9608% 90%); + --color-surface-content: hsl(215 27.907% 16.8627%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(227.6647 100% 91.0748%); + --color-primary-50: hsl(232.3457 100% 76.8157%); + --color-primary-100: hsl(233.4035 100% 74.9896%); + --color-primary-200: hsl(236.0867 100% 71.5789%); + --color-primary-300: hsl(239.9818 100% 68.5879%); + --color-primary-400: hsl(245.7714 100% 62.5712%); + --color-primary-500: hsl(257.4075 100% 50%); + --color-primary-600: hsl(256.3942 100% 45.2974%); + --color-primary-700: hsl(255.9702 100% 38.7195%); + --color-primary-800: hsl(255.3947 100% 32.3445%); + --color-primary-900: hsl(254.5739 100% 26.1938%); + --color-secondary-50: hsl(312.9534 100% 79.1139%); + --color-secondary-100: hsl(312.8775 100% 76.9231%); + --color-secondary-200: hsl(312.6258 100% 72.1652%); + --color-secondary-300: hsl(312.1478 100% 66.4927%); + --color-secondary-400: hsl(311.0379 100% 57.9643%); + --color-secondary-500: hsl(310.4453 100% 50%); + --color-secondary-600: hsl(314.516 100% 47.3052%); + --color-secondary-700: hsl(314.6511 100% 40.4525%); + --color-secondary-800: hsl(314.8343 100% 33.8111%); + --color-secondary-900: hsl(315.0952 100% 27.4033%); + --color-accent-content: hsl(168.722 100% 3.2602%); + --color-accent-50: hsl(171.3855 72.5307% 71.4464%); + --color-accent-100: hsl(171.7771 72.9012% 68.0855%); + --color-accent-200: hsl(172.7542 74.2685% 59.9573%); + --color-accent-300: hsl(174.6018 100% 43.9907%); + --color-accent-400: hsl(174.0311 100% 43.1035%); + --color-accent-500: hsl(173.4835 100% 42.1865%); + --color-accent-600: hsl(173.4232 100% 36.6415%); + --color-accent-700: hsl(173.3439 100% 31.2487%); + --color-accent-800: hsl(173.2358 100% 26.0221%); + --color-accent-900: hsl(173.0804 100% 20.9795%); + --color-neutral-50: hsl(214.3814 5.8279% 54.0221%); + --color-neutral-100: hsl(214.3741 5.7772% 50.1155%); + --color-neutral-200: hsl(214.3577 7.6767% 42.4628%); + --color-neutral-300: hsl(214.3385 10.2652% 35.04%); + --color-neutral-400: hsl(214.3153 13.944% 27.8698%); + --color-neutral-500: hsl(214.2857 19.6262% 20.9804%); + --color-neutral-600: hsl(214.2857 20.3782% 17.7128%); + --color-neutral-700: hsl(214.2857 21.4338% 14.5349%); + --color-neutral-800: hsl(214.2857 23.0159% 11.455%); + --color-neutral-900: hsl(214.2857 25.6311% 8.4834%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); +} + +[data-theme="dark"] { + color-scheme: dark; + --color-primary: hsl(234.8208 100% 72.6713%); + --color-secondary: hsl(313.3209 100% 66.1653%); + --color-accent: hsl(173.7346 100% 40.1728%); + --color-neutral: hsl(213.3333 17.6471% 20%); + --color-neutral-content: hsl(220 13.3758% 69.2157%); + --color-surface-100: hsl(212.3077 18.3099% 13.9216%); + --color-surface-200: hsl(212.7273 18.0328% 11.9608%); + --color-surface-300: hsl(213.3333 17.6471% 10%); + --color-surface-content: hsl(220 13.3758% 69.2157%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(236.4483 66.7205% 5.3866%); + --color-primary-50: hsl(229.7915 100% 84.0735%); + --color-primary-100: hsl(230.1859 100% 82.7145%); + --color-primary-200: hsl(231.0667 100% 80.0547%); + --color-primary-300: hsl(232.0983 100% 77.4828%); + --color-primary-400: hsl(233.327 100% 75.0147%); + --color-primary-500: hsl(234.8208 100% 72.6713%); + --color-primary-600: hsl(235.0704 70.3808% 64.2382%); + --color-primary-700: hsl(235.0704 47.9454% 54.6908%); + --color-primary-800: hsl(235.0704 40.46% 45.4378%); + --color-primary-900: hsl(235.0704 41.5282% 36.5104%); + --color-secondary-content: hsl(320.8908 83.2641% 5.2689%); + --color-secondary-50: hsl(314.3395 100% 83.432%); + --color-secondary-100: hsl(314.31 100% 81.8013%); + --color-secondary-200: hsl(314.212 100% 78.4165%); + --color-secondary-300: hsl(314.0445 100% 74.8016%); + --color-secondary-400: hsl(313.7722 100% 70.8191%); + --color-secondary-500: hsl(313.3209 100% 66.1653%); + --color-secondary-600: hsl(318.1553 84.2932% 60.7486%); + --color-secondary-700: hsl(318.1553 59.0977% 51.679%); + --color-secondary-800: hsl(318.1553 56.347% 42.889%); + --color-secondary-900: hsl(318.1553 57.9256% 34.4083%); + --color-accent-content: hsl(168.7443 100% 2.9908%); + --color-accent-50: hsl(171.1098 64.2687% 71.4638%); + --color-accent-100: hsl(171.4554 64.6409% 68.3324%); + --color-accent-200: hsl(172.2753 65.8475% 61.2424%); + --color-accent-300: hsl(173.5236 68.6512% 51.112%); + --color-accent-400: hsl(174.292 100% 41.2676%); + --color-accent-500: hsl(173.7346 100% 40.1728%); + --color-accent-600: hsl(173.6737 100% 34.8763%); + --color-accent-700: hsl(173.5935 100% 29.7251%); + --color-accent-800: hsl(173.484 100% 24.7328%); + --color-accent-900: hsl(173.3263 100% 19.9161%); + --color-neutral-50: hsl(213.4653 4.9421% 53.3722%); + --color-neutral-100: hsl(213.4565 5.0146% 49.4173%); + --color-neutral-200: hsl(213.4361 6.723% 41.6751%); + --color-neutral-300: hsl(213.4108 9.0416% 34.1738%); + --color-neutral-400: hsl(213.3782 12.3819% 26.9382%); + --color-neutral-500: hsl(213.3333 17.6471% 20%); + --color-neutral-600: hsl(213.3333 18.3577% 16.8534%); + --color-neutral-700: hsl(213.3333 19.3599% 13.7931%); + --color-neutral-800: hsl(213.3333 20.8717% 10.8272%); + --color-neutral-900: hsl(213.3333 23.3974% 7.9657%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); +} + +[data-theme="cupcake"] { + color-scheme: light; + --color-primary: hsl(183.0303 47.3684% 59.0196%); + --color-secondary: hsl(338.25 71.4286% 78.0392%); + --color-accent: hsl(39 84.1121% 58.0392%); + --color-neutral: hsl(280 46.4789% 13.9216%); + --color-surface-100: hsl(24 33.3333% 97.0588%); + --color-surface-200: hsl(26.6667 21.9512% 91.9608%); + --color-surface-300: hsl(22.5 14.2857% 89.0196%); + --color-surface-content: hsl(280 46.4789% 13.9216%); + --rounded-btn: 1.9rem; + --tab-border: 2px; + --tab-radius: 0.7rem; + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(183.592 61.9534% 3.5354%); + --color-primary-50: hsl(182.8135 45.0464% 78.3089%); + --color-primary-100: hsl(182.8508 45.1979% 76.2843%); + --color-primary-200: hsl(182.9191 45.5551% 72.1801%); + --color-primary-300: hsl(182.9757 46.0058% 67.9748%); + --color-primary-400: hsl(183.0156 46.5882% 63.6177%); + --color-primary-500: hsl(183.0303 47.3684% 59.0196%); + --color-primary-600: hsl(183.0303 34.7686% 51.0581%); + --color-primary-700: hsl(183.0303 33.9069% 43.3151%); + --color-primary-800: hsl(183.0303 34.7075% 35.8109%); + --color-primary-900: hsl(183.0303 35.8784% 28.5707%); + --color-secondary-content: hsl(338.3261 36.8805% 5.6774%); + --color-secondary-50: hsl(339.9637 77.8725% 88.3746%); + --color-secondary-100: hsl(339.7914 77.1042% 87.2641%); + --color-secondary-200: hsl(339.435 75.6078% 85.0159%); + --color-secondary-300: hsl(339.0611 74.1636% 82.7301%); + --color-secondary-400: hsl(338.667 72.7707% 80.4053%); + --color-secondary-500: hsl(338.25 71.4286% 78.0392%); + --color-secondary-600: hsl(338.25 42.6122% 67.7308%); + --color-secondary-700: hsl(338.25 28.0605% 57.7052%); + --color-secondary-800: hsl(338.25 20.9292% 47.9888%); + --color-secondary-900: hsl(338.25 21.4516% 38.6143%); + --color-accent-content: hsl(32.7716 89.276% 4.078%); + --color-accent-50: hsl(36.6302 84.5383% 79.2533%); + --color-accent-100: hsl(36.7295 84.3776% 77.2485%); + --color-accent-200: hsl(36.9903 84.0998% 73.1112%); + --color-accent-300: hsl(37.3729 83.9063% 68.7199%); + --color-accent-400: hsl(37.9652 83.8573% 63.8784%); + --color-accent-500: hsl(39 84.1121% 58.0392%); + --color-accent-600: hsl(39 62.1248% 50.1987%); + --color-accent-700: hsl(39 62.723% 42.5733%); + --color-accent-800: hsl(39 64.2304% 35.1831%); + --color-accent-900: hsl(39 66.4374% 28.053%); + --color-neutral-content: hsl(277.4916 8.9902% 81.0734%); + --color-neutral-50: hsl(277.9531 8.5356% 49.8233%); + --color-neutral-100: hsl(278.0513 10.0106% 45.5792%); + --color-neutral-200: hsl(278.2915 13.7729% 37.2757%); + --color-neutral-300: hsl(278.6202 19.2768% 29.2321%); + --color-neutral-400: hsl(279.1131 28.2712% 21.4582%); + --color-neutral-500: hsl(280 46.4789% 13.9216%); + --color-neutral-600: hsl(280 49.2159% 11.525%); + --color-neutral-700: hsl(280 53.2465% 9.1942%); + --color-neutral-800: hsl(279.7716 58.6676% 6.9821%); + --color-neutral-900: hsl(278.4947 63.6173% 4.9951%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); +} + +[data-theme="bumblebee"] { + color-scheme: light; + --color-primary: hsl(51.1671 100% 50%); + --color-primary-content: hsl(48.6495 31.4788% 22.6077%); + --color-secondary: hsl(38.6454 100% 50%); + --color-secondary-content: hsl(34.0814 58.921% 22.9243%); + --color-accent: hsl(28.7938 100% 65.8965%); + --color-neutral: hsl(249.9215 99.0127% 6.9007%); + --color-surface-100: hsl(180 100% 100%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-50: hsl(50.1329 100% 77.853%); + --color-primary-100: hsl(50.174 100% 75.4365%); + --color-primary-200: hsl(50.3764 100% 70.0218%); + --color-primary-300: hsl(50.8957 100% 62.9194%); + --color-primary-400: hsl(52.2272 100% 50%); + --color-primary-500: hsl(51.1671 100% 50%); + --color-primary-600: hsl(49.7902 100% 44.6334%); + --color-primary-700: hsl(49.6894 100% 38.1464%); + --color-primary-800: hsl(49.5526 100% 31.8595%); + --color-primary-900: hsl(49.3574 100% 25.7938%); + --color-secondary-50: hsl(35.3928 100% 77.3594%); + --color-secondary-100: hsl(35.514 100% 75.0514%); + --color-secondary-200: hsl(35.9342 100% 70.0664%); + --color-secondary-300: hsl(36.8072 100% 64.0955%); + --color-secondary-400: hsl(39.4957 100% 53.7492%); + --color-secondary-500: hsl(38.6454 100% 50%); + --color-secondary-600: hsl(36.7251 100% 45.5675%); + --color-secondary-700: hsl(36.5002 100% 38.9527%); + --color-secondary-800: hsl(36.1949 100% 32.5418%); + --color-secondary-900: hsl(35.7596 100% 26.3565%); + --color-accent-content: hsl(21.2807 83.2924% 5.0996%); + --color-accent-50: hsl(27.8466 100% 82.4383%); + --color-accent-100: hsl(27.8448 100% 80.7792%); + --color-accent-200: hsl(27.8857 100% 77.3881%); + --color-accent-300: hsl(28.0125 100% 73.8545%); + --color-accent-400: hsl(28.2784 100% 70.0873%); + --color-accent-500: hsl(28.7938 100% 65.8965%); + --color-accent-600: hsl(26.6421 79.7786% 59.5008%); + --color-accent-700: hsl(26.6421 56.4524% 50.602%); + --color-accent-800: hsl(26.6421 56.2193% 41.9775%); + --color-accent-900: hsl(26.6421 57.8295% 33.6566%); + --color-neutral-content: hsl(235.0933 11.0335% 79.1266%); + --color-neutral-50: hsl(236.3956 12.1636% 44.9745%); + --color-neutral-100: hsl(236.7583 14.3576% 40.3892%); + --color-neutral-200: hsl(237.8082 20.0825% 31.485%); + --color-neutral-300: hsl(239.7177 28.7822% 22.991%); + --color-neutral-400: hsl(243.8584 48.1176% 14.5744%); + --color-neutral-500: hsl(249.9215 99.0127% 6.9007%); + --color-neutral-600: hsl(248.7387 99.1294% 5.7048%); + --color-neutral-700: hsl(247.6985 99.2322% 4.5433%); + --color-neutral-800: hsl(246.8474 99.3165% 3.4191%); + --color-neutral-900: hsl(246.3091 99.3699% 2.3356%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(223.8136 0.0001% 90.851%); + --color-surface-300: hsl(223.8136 0% 82.4954%); + --color-surface-content: hsl(223.8136 0% 8.6104%); +} + +[data-theme="emerald"] { + color-scheme: light; + --color-primary: hsl(141.1765 50% 60%); + --color-primary-content: hsl(151.1111 28.4211% 18.6275%); + --color-secondary: hsl(218.8776 96.0784% 60%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent: hsl(10.4895 88.8199% 68.4314%); + --color-accent-content: hsl(0 0% 0%); + --color-neutral: hsl(219.2308 20.3125% 25.098%); + --color-neutral-content: hsl(210 20% 98.0392%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-content: hsl(219.2308 20.3125% 25.098%); + --animation-btn: 0; + --animation-input: 0; + --btn-focus-scale: 1; + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-50: hsl(136.9122 48.8676% 79.068%); + --color-primary-100: hsl(137.241 48.887% 77.0872%); + --color-primary-200: hsl(137.9749 48.9801% 73.057%); + --color-primary-300: hsl(138.8376 49.1664% 68.9068%); + --color-primary-400: hsl(139.8774 49.4843% 64.5848%); + --color-primary-500: hsl(141.1765 50% 60%); + --color-primary-600: hsl(141.1765 36.4625% 51.9175%); + --color-primary-700: hsl(141.1765 34.3462% 44.0569%); + --color-primary-800: hsl(141.1765 35.1432% 36.4386%); + --color-primary-900: hsl(141.1765 36.3078% 29.0884%); + --color-secondary-50: hsl(217.7582 100% 78.5099%); + --color-secondary-100: hsl(217.9342 100% 76.5881%); + --color-secondary-200: hsl(218.2972 100% 72.7424%); + --color-secondary-300: hsl(218.6097 99.4576% 68.7869%); + --color-secondary-400: hsl(218.7788 97.7141% 64.5195%); + --color-secondary-500: hsl(218.8776 96.0784% 60%); + --color-secondary-600: hsl(218.8776 70.0652% 51.9175%); + --color-secondary-700: hsl(218.8776 65.9986% 44.0569%); + --color-secondary-800: hsl(218.8776 67.53% 36.4386%); + --color-secondary-900: hsl(218.8776 69.7678% 29.0884%); + --color-accent-50: hsl(11.1276 99.7017% 83.5571%); + --color-accent-100: hsl(11.0807 98.3642% 81.9586%); + --color-accent-200: hsl(10.9696 95.7901% 78.7075%); + --color-accent-300: hsl(10.8343 93.3439% 75.3784%); + --color-accent-400: hsl(10.6739 91.0205% 71.9599%); + --color-accent-500: hsl(10.4895 88.8199% 68.4314%); + --color-accent-600: hsl(10.4895 60.4039% 59.3085%); + --color-accent-700: hsl(10.4895 42.8018% 50.436%); + --color-accent-800: hsl(10.4895 42.9118% 41.8371%); + --color-accent-900: hsl(10.4895 44.1451% 33.5407%); + --color-neutral-50: hsl(219.0029 7.5926% 56.6636%); + --color-neutral-100: hsl(219.0128 7.5265% 52.9589%); + --color-neutral-200: hsl(219.039 8.7761% 45.6856%); + --color-neutral-300: hsl(219.0777 11.4776% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1166% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3125% 25.098%); + --color-neutral-600: hsl(219.2308 20.959% 21.3223%); + --color-neutral-700: hsl(219.2308 21.8532% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1644% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2595% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(223.8136 0.0001% 90.851%); + --color-surface-300: hsl(223.8136 0% 82.4954%); +} + +[data-theme="corporate"] { + color-scheme: light; + --color-primary: hsl(228.8755 100% 65.0987%); + --color-secondary: hsl(214.9091 26.3158% 59.0196%); + --color-accent: hsl(154.2 49.0196% 60%); + --color-neutral: hsl(233.3333 27.2727% 12.9412%); + --color-neutral-content: hsl(210 38.4615% 94.902%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-content: hsl(233.3333 27.2727% 12.9412%); + --rounded-box: 0.25rem; + --rounded-btn: 0.125rem; + --rounded-badge: 0.125rem; + --tab-radius: 0.25rem; + --animation-btn: 0; + --animation-input: 0; + --btn-focus-scale: 1; + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(233.8621 84.3302% 4.8956%); + --color-primary-50: hsl(223.386 100% 79.6774%); + --color-primary-100: hsl(223.7755 100% 77.9322%); + --color-primary-200: hsl(224.6622 100% 74.5121%); + --color-primary-300: hsl(225.7388 100% 71.2051%); + --color-primary-400: hsl(227.0922 100% 68.0469%); + --color-primary-500: hsl(228.8755 100% 65.0987%); + --color-primary-600: hsl(229.3476 75.6093% 57.7428%); + --color-primary-700: hsl(229.3476 56.1811% 49.0846%); + --color-primary-800: hsl(229.3476 57.3484% 40.6934%); + --color-primary-900: hsl(229.3476 59.0442% 32.5975%); + --color-secondary-content: hsl(218.0454 38.1404% 3.3095%); + --color-secondary-50: hsl(214.9523 27.3495% 77.0969%); + --color-secondary-100: hsl(214.9469 27.2411% 75.0581%); + --color-secondary-200: hsl(214.9366 27.0194% 71.003%); + --color-secondary-300: hsl(214.927 26.7912% 66.9781%); + --color-secondary-400: hsl(214.9179 26.5566% 62.9836%); + --color-secondary-500: hsl(214.9091 26.3158% 59.0196%); + --color-secondary-600: hsl(214.9091 19.3159% 51.0581%); + --color-secondary-700: hsl(214.9091 18.8372% 43.3151%); + --color-secondary-800: hsl(214.9091 19.2819% 35.8109%); + --color-secondary-900: hsl(214.9091 19.9325% 28.5707%); + --color-accent-content: hsl(149.8793 61.5121% 3.6425%); + --color-accent-50: hsl(150.5849 47.4928% 79.03%); + --color-accent-100: hsl(150.8798 47.5557% 77.0501%); + --color-accent-200: hsl(151.5279 47.7361% 73.0236%); + --color-accent-300: hsl(152.2721 48.0103% 68.8804%); + --color-accent-400: hsl(153.1448 48.4163% 64.569%); + --color-accent-500: hsl(154.2 49.0196% 60%); + --color-accent-600: hsl(154.2 35.7475% 51.9175%); + --color-accent-700: hsl(154.2 33.6728% 44.0569%); + --color-accent-800: hsl(154.2 34.4541% 36.4386%); + --color-accent-900: hsl(154.2 35.5958% 29.0884%); + --color-neutral-50: hsl(231.2026 5.275% 48.6833%); + --color-neutral-100: hsl(231.2834 6.1879% 44.3781%); + --color-neutral-200: hsl(231.4942 8.5092% 35.9872%); + --color-neutral-300: hsl(231.8106 11.8708% 27.9174%); + --color-neutral-400: hsl(232.3322 17.2238% 20.2136%); + --color-neutral-500: hsl(233.3333 27.2727% 12.9412%); + --color-neutral-600: hsl(233.3333 29.0082% 10.6656%); + --color-neutral-700: hsl(233.3333 31.5923% 8.4525%); + --color-neutral-800: hsl(233.3333 35.8271% 6.3076%); + --color-neutral-900: hsl(234.3645 41.069% 4.3255%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(223.8136 0.0001% 90.851%); + --color-surface-300: hsl(223.8136 0% 82.4954%); +} + +[data-theme="synthwave"] { + color-scheme: dark; + --color-primary: hsl(320.7273 69.6203% 69.0196%); + --color-secondary: hsl(197.0323 86.5922% 64.902%); + --color-accent: hsl(49.4271 100% 50%); + --color-neutral: hsl(253 58.8235% 20%); + --color-neutral-content: hsl(260 60% 98.0392%); + --color-surface-100: hsl(253.3333 58.4416% 15.098%); + --color-surface-content: hsl(260 60% 98.0392%); + --color-info: hsl(199.125 86.9565% 63.9216%); + --color-info-content: hsl(257.4545 63.2184% 17.0588%); + --color-success: hsl(168.0992 74.2331% 68.0392%); + --color-success-content: hsl(257.4545 63.2184% 17.0588%); + --color-warning: hsl(46.6667 75% 67.0588%); + --color-warning-content: hsl(257.4545 63.2184% 17.0588%); + --color-danger: hsl(10.3448 75.3247% 69.8039%); + --color-danger-content: hsl(257.4545 63.2184% 17.0588%); + --color-primary-content: hsl(322.2472 57.6268% 4.6639%); + --color-primary-50: hsl(323.4709 77.1979% 83.964%); + --color-primary-100: hsl(323.1958 76.2529% 82.3979%); + --color-primary-200: hsl(322.6282 74.4376% 79.2039%); + --color-primary-300: hsl(322.0328 72.7232% 75.9199%); + --color-primary-400: hsl(321.4025 71.1141% 72.5322%); + --color-primary-500: hsl(320.7273 69.6203% 69.0196%); + --color-primary-600: hsl(320.7273 47.0609% 59.8241%); + --color-primary-700: hsl(320.7273 33.2228% 50.881%); + --color-primary-800: hsl(320.7273 32.7146% 42.2137%); + --color-primary-900: hsl(320.7273 33.6462% 33.8513%); + --color-secondary-content: hsl(199.8597 77.5595% 4.4948%); + --color-secondary-50: hsl(198.6286 87.5707% 82.3884%); + --color-secondary-100: hsl(198.5299 87.3898% 80.6702%); + --color-secondary-200: hsl(198.2955 87.065% 77.1293%); + --color-secondary-300: hsl(197.995 86.8027% 73.4012%); + --color-secondary-400: hsl(197.5953 86.6285% 69.3901%); + --color-secondary-500: hsl(197.0323 86.5922% 64.902%); + --color-secondary-600: hsl(197.0323 60.8465% 56.2146%); + --color-secondary-700: hsl(197.0323 48.1402% 47.7657%); + --color-secondary-800: hsl(197.0323 49.1687% 39.5772%); + --color-secondary-900: hsl(197.0323 50.6649% 31.677%); + --color-accent-content: hsl(42.0309 100% 4.4636%); + --color-accent-50: hsl(47.8889 100% 77.9546%); + --color-accent-100: hsl(47.953 100% 75.5857%); + --color-accent-200: hsl(48.21 100% 70.3294%); + --color-accent-300: hsl(48.7969 100% 63.6303%); + --color-accent-400: hsl(50.659 100% 50%); + --color-accent-500: hsl(49.4271 100% 50%); + --color-accent-600: hsl(48.1946 100% 44.5287%); + --color-accent-700: hsl(48.0778 100% 38.0561%); + --color-accent-800: hsl(47.9192 100% 31.783%); + --color-accent-900: hsl(47.6929 100% 25.7307%); + --color-neutral-50: hsl(242.6109 16.2414% 54.6966%); + --color-neutral-100: hsl(243.0522 16.0433% 50.7656%); + --color-neutral-200: hsl(244.1805 20.7248% 42.997%); + --color-neutral-300: hsl(245.814 27.8394% 35.3399%); + --color-neutral-400: hsl(248.3741 38.6467% 27.7449%); + --color-neutral-500: hsl(253 58.8235% 20%); + --color-neutral-600: hsl(253 61.1923% 16.8534%); + --color-neutral-700: hsl(253 64.5328% 13.7931%); + --color-neutral-800: hsl(252.9101 69.3474% 10.8416%); + --color-neutral-900: hsl(251.6793 74.2761% 8.1355%); + --color-info-50: hsl(200.8937 88.4055% 81.8757%); + --color-info-100: hsl(200.7867 88.1686% 80.1116%); + --color-info-200: hsl(200.5322 87.7336% 76.4788%); + --color-info-300: hsl(200.2037 87.3638% 72.6563%); + --color-info-400: hsl(199.7613 87.0865% 68.5421%); + --color-info-500: hsl(199.125 86.9565% 63.9216%); + --color-info-600: hsl(199.125 61.6002% 55.3552%); + --color-info-700: hsl(199.125 50.477% 47.0239%); + --color-info-800: hsl(199.125 51.5728% 38.9495%); + --color-info-900: hsl(199.125 53.1682% 31.1592%); + --color-success-50: hsl(165.7904 73.4139% 84.0541%); + --color-success-100: hsl(166.0004 73.4102% 82.4735%); + --color-success-200: hsl(166.4461 73.4546% 79.2076%); + --color-success-300: hsl(166.9337 73.5842% 75.7654%); + --color-success-400: hsl(167.4771 73.8276% 72.0809%); + --color-success-500: hsl(168.0992 74.2331% 68.0392%); + --color-success-600: hsl(168.0992 50.6828% 58.9647%); + --color-success-700: hsl(168.0992 36.0014% 50.1393%); + --color-success-800: hsl(168.0992 36.5293% 41.586%); + --color-success-900: hsl(168.0992 37.5856% 33.3336%); + --color-warning-50: hsl(46.4369 73.7305% 82.6664%); + --color-warning-100: hsl(46.4224 73.8225% 81.039%); + --color-warning-200: hsl(46.4149 74.0316% 77.7326%); + --color-warning-300: hsl(46.4432 74.2841% 74.3334%); + --color-warning-400: hsl(46.5203 74.5973% 70.7991%); + --color-warning-500: hsl(46.6667 75% 67.0588%); + --color-warning-600: hsl(46.6667 51.6945% 58.1053%); + --color-warning-700: hsl(46.6667 37.8406% 49.3975%); + --color-warning-800: hsl(46.6667 38.6217% 40.9582%); + --color-warning-900: hsl(46.6667 39.7562% 32.8159%); + --color-danger-50: hsl(10.8299 82.947% 83.9235%); + --color-danger-100: hsl(10.7951 82.039% 82.3996%); + --color-danger-200: hsl(10.7126 80.2701% 79.3204%); + --color-danger-300: hsl(10.6114 78.5618% 76.1974%); + --color-danger-400: hsl(10.4895 76.9131% 73.0273%); + --color-danger-500: hsl(10.3448 75.3247% 69.8039%); + --color-danger-600: hsl(10.3448 50.492% 60.5117%); + --color-danger-700: hsl(10.3448 35.4633% 51.4744%); + --color-danger-800: hsl(10.3448 34.0935% 42.7159%); + --color-danger-900: hsl(10.3448 35.0525% 34.2655%); + --color-surface-200: hsl(253.3333 60.5355% 13.3118%); + --color-surface-300: hsl(253.3333 63.0075% 11.6804%); +} + +[data-theme="retro"] { + color-scheme: light; + --color-primary: hsl(2.6667 73.7705% 76.0784%); + --color-primary-content: hsl(345 5.2632% 14.902%); + --color-secondary: hsl(144.6154 27.2727% 71.9608%); + --color-secondary-content: hsl(345 5.2632% 14.902%); + --color-accent: hsl(24 66.6667% 58.8235%); + --color-accent-content: hsl(345 5.2632% 14.902%); + --color-neutral: hsl(340 6.9767% 16.8627%); + --color-neutral-content: hsl(43.2 40.9836% 88.0392%); + --color-surface-100: hsl(44.1176 47.2222% 85.8824%); + --color-surface-200: hsl(45 47.0588% 80%); + --color-surface-300: hsl(44.3077 47.4453% 73.1373%); + --color-surface-content: hsl(345 5.2632% 14.902%); + --color-info: hsl(221.2121 83.1933% 53.3333%); + --color-success: hsl(142.1277 76.2162% 36.2745%); + --color-warning: hsl(32.1327 94.6188% 43.7255%); + --color-danger: hsl(3.3252 87.4903% 61.7362%); + --rounded-box: 0.4rem; + --rounded-btn: 0.4rem; + --rounded-badge: 0.4rem; + --tab-radius: 0.4rem; + --color-primary-50: hsl(3.6837 81.4365% 87.2108%); + --color-primary-100: hsl(3.5985 80.5338% 86.0016%); + --color-primary-200: hsl(3.4105 78.7692% 83.562%); + --color-primary-300: hsl(3.1958 77.0559% 81.0946%); + --color-primary-400: hsl(2.9498 75.3906% 78.6%); + --color-primary-500: hsl(2.6667 73.7705% 76.0784%); + --color-primary-600: hsl(2.6667 45.5144% 66.0119%); + --color-primary-700: hsl(2.6667 30.4983% 56.2217%); + --color-primary-800: hsl(2.6667 24.1779% 46.7334%); + --color-primary-900: hsl(2.6667 24.7981% 37.5789%); + --color-secondary-50: hsl(143.494 27.2321% 84.5322%); + --color-secondary-100: hsl(143.6018 27.2295% 83.1334%); + --color-secondary-200: hsl(143.8285 27.2286% 80.3383%); + --color-secondary-300: hsl(144.0715 27.2347% 77.5454%); + --color-secondary-400: hsl(144.333 27.2489% 74.7534%); + --color-secondary-500: hsl(144.6154 27.2727% 71.9608%); + --color-secondary-600: hsl(144.6154 17.8294% 62.4024%); + --color-secondary-700: hsl(144.6154 12.3379% 53.1063%); + --color-secondary-800: hsl(144.6154 11.1035% 44.0969%); + --color-secondary-900: hsl(144.6154 11.4058% 35.4045%); + --color-accent-50: hsl(22.7677 70.4023% 78.1888%); + --color-accent-100: hsl(22.8402 69.917% 76.1434%); + --color-accent-200: hsl(23.0105 68.982% 72.0018%); + --color-accent-300: hsl(23.232 68.1074% 67.7706%); + --color-accent-400: hsl(23.5391 67.3191% 63.4061%); + --color-accent-500: hsl(24 66.6667% 58.8235%); + --color-accent-600: hsl(24 48.9957% 50.8862%); + --color-accent-700: hsl(24 48.1139% 43.1668%); + --color-accent-800: hsl(24 49.2539% 35.6853%); + --color-accent-900: hsl(24 50.9217% 28.4671%); + --color-neutral-50: hsl(340.6798 1.6296% 51.2796%); + --color-neutral-100: hsl(340.6417 1.8068% 47.1695%); + --color-neutral-200: hsl(340.5493 2.4512% 39.1408%); + --color-neutral-300: hsl(340.4265 3.351% 31.3895%); + --color-neutral-400: hsl(340.2553 4.7018% 23.9487%); + --color-neutral-500: hsl(340 6.9767% 16.8627%); + --color-neutral-600: hsl(340 7.3125% 14.1033%); + --color-neutral-700: hsl(340 7.7946% 11.4195%); + --color-neutral-800: hsl(340 8.542% 8.8185%); + --color-neutral-900: hsl(340 9.8471% 6.309%); + --color-info-content: hsl(218.9847 98.1914% 91.1191%); + --color-info-50: hsl(219.5223 90.8982% 75.1352%); + --color-info-100: hsl(219.6486 89.9471% 72.8089%); + --color-info-200: hsl(219.9484 88.1075% 68.1172%); + --color-info-300: hsl(220.3175 86.3541% 63.3558%); + --color-info-400: hsl(220.756 84.7001% 58.4762%); + --color-info-500: hsl(221.2121 83.1933% 53.3333%); + --color-info-600: hsl(221.2121 73.8664% 46.0735%); + --color-info-700: hsl(221.2121 75.2921% 39.0129%); + --color-info-800: hsl(221.2121 77.2709% 32.17%); + --color-info-900: hsl(221.2121 80.1841% 25.5679%); + --color-success-content: hsl(130.1256 95.7127% 1.9343%); + --color-success-50: hsl(130.3106 37.672% 68.7269%); + --color-success-100: hsl(130.8008 37.753% 65.7761%); + --color-success-200: hsl(131.9998 38.0525% 59.7265%); + --color-success-300: hsl(133.6564 38.6495% 53.3423%); + --color-success-400: hsl(136.2425 46.3769% 46.2272%); + --color-success-500: hsl(142.1277 76.2162% 36.2745%); + --color-success-600: hsl(142.1277 77.8784% 31.1197%); + --color-success-700: hsl(142.1277 80.1246% 26.1063%); + --color-success-800: hsl(142.117 83.2701% 21.2525%); + --color-success-900: hsl(141.7625 86.5918% 16.6991%); + --color-warning-content: hsl(17.1667 99.4327% 3.3181%); + --color-warning-50: hsl(25.8631 74.2191% 73.8529%); + --color-warning-100: hsl(26.0117 73.723% 71.3345%); + --color-warning-200: hsl(26.407 72.8234% 66.1392%); + --color-warning-300: hsl(27.0339 72.1185% 60.5933%); + --color-warning-400: hsl(28.2027 71.8262% 54.2587%); + --color-warning-500: hsl(32.1327 94.6188% 43.7255%); + --color-warning-600: hsl(32.0048 95.4642% 37.8169%); + --color-warning-700: hsl(31.7888 96.25% 32.1253%); + --color-warning-800: hsl(31.4433 96.9725% 26.6578%); + --color-warning-900: hsl(30.8928 97.6278% 21.425%); + --color-danger-content: hsl(1.5684 84.471% 4.3206%); + --color-danger-50: hsl(6.645 100% 80.3116%); + --color-danger-100: hsl(6.3908 100% 78.5508%); + --color-danger-200: hsl(5.9013 97.1794% 74.6701%); + --color-danger-300: hsl(5.2994 93.7104% 70.5565%); + --color-danger-400: hsl(4.4885 90.4774% 66.2706%); + --color-danger-500: hsl(3.3252 87.4903% 61.7362%); + --color-danger-600: hsl(3.3252 63.0279% 53.4395%); + --color-danger-700: hsl(3.3252 55.8261% 45.3704%); + --color-danger-800: hsl(3.3252 57.0831% 37.5502%); + --color-danger-900: hsl(3.3252 58.917% 30.0052%); +} + +[data-theme="cyberpunk"] { + color-scheme: light; + fontfamily: + ui-monospace, + SFMono-Regular, + Menlo, + Monaco, + Consolas, + Liberation Mono, + Courier New, + monospace; + --color-primary: hsl(340.8799 100% 69.8833%); + --color-secondary: hsl(185.3347 100% 50%); + --color-accent: hsl(278.9515 100% 72.6993%); + --color-neutral: hsl(227.154 55.502% 14.9159%); + --color-neutral-content: hsl(55.763 100% 64.174%); + --color-surface-100: hsl(55.763 100% 64.174%); + --rounded-box: 0; + --rounded-btn: 0; + --rounded-badge: 0; + --tab-radius: 0; + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(346.8024 75.2266% 5.4755%); + --color-primary-50: hsl(344.7937 100% 84.5824%); + --color-primary-100: hsl(344.4947 100% 83.1034%); + --color-primary-200: hsl(343.8257 100% 80.0716%); + --color-primary-300: hsl(343.0366 100% 76.9079%); + --color-primary-400: hsl(342.0814 100% 73.5494%); + --color-primary-500: hsl(340.8799 100% 69.8833%); + --color-primary-600: hsl(342.9615 81.8536% 63.8065%); + --color-primary-700: hsl(342.9615 55.9738% 54.3182%); + --color-primary-800: hsl(342.9615 47.9562% 45.1225%); + --color-primary-900: hsl(342.9615 49.2314% 36.2503%); + --color-secondary-content: hsl(188.6497 100% 4.3357%); + --color-secondary-50: hsl(185.2602 100% 76.7471%); + --color-secondary-100: hsl(185.2286 100% 73.9042%); + --color-secondary-200: hsl(185.0291 100% 66.961%); + --color-secondary-300: hsl(184.1125 100% 51.9055%); + --color-secondary-400: hsl(184.6264 100% 50%); + --color-secondary-500: hsl(185.3347 100% 50%); + --color-secondary-600: hsl(185.6259 100% 43.6904%); + --color-secondary-700: hsl(185.6826 100% 37.3325%); + --color-secondary-800: hsl(185.7597 100% 31.1707%); + --color-secondary-900: hsl(185.8697 100% 25.2257%); + --color-accent-content: hsl(275.3124 66.7705% 5.409%); + --color-accent-50: hsl(278.3746 100% 85.6921%); + --color-accent-100: hsl(278.3913 100% 84.3414%); + --color-accent-200: hsl(278.4507 100% 81.593%); + --color-accent-300: hsl(278.5533 100% 78.7624%); + --color-accent-400: hsl(278.713 100% 75.8158%); + --color-accent-500: hsl(278.9515 100% 72.6993%); + --color-accent-600: hsl(276.8801 70.9879% 64.3939%); + --color-accent-700: hsl(276.8801 48.2916% 54.8252%); + --color-accent-800: hsl(276.8801 40.5299% 45.5515%); + --color-accent-900: hsl(276.8801 41.5972% 36.6042%); + --color-neutral-50: hsl(223.8431 12.0156% 50.1588%); + --color-neutral-100: hsl(223.942 13.9346% 45.9467%); + --color-neutral-200: hsl(224.2145 18.9277% 37.715%); + --color-neutral-300: hsl(224.6551 25.9706% 29.7651%); + --color-neutral-400: hsl(225.4462 36.7496% 22.1398%); + --color-neutral-500: hsl(227.154 55.502% 14.9159%); + --color-neutral-600: hsl(227.154 58.5406% 12.3967%); + --color-neutral-700: hsl(227.1673 62.9432% 9.9483%); + --color-neutral-800: hsl(228.0532 67.8056% 7.6712%); + --color-neutral-900: hsl(230.2087 72.2472% 5.604%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(55.2439 79.4658% 58.4392%); + --color-surface-300: hsl(55.2439 64.0317% 52.8944%); + --color-surface-content: hsl(54.2672 85.597% 4.6878%); +} + +[data-theme="valentine"] { + color-scheme: light; + --color-primary: hsl(353.2258 73.8095% 67.0588%); + --color-secondary: hsl(254.1176 86.4407% 76.8627%); + --color-accent: hsl(181.5584 33.6245% 55.098%); + --color-neutral: hsl(336 42.8571% 48.0392%); + --color-neutral-content: hsl(318.4615 46.4286% 89.0196%); + --color-surface-100: hsl(318.9474 65.5172% 94.3137%); + --color-surface-content: hsl(343.6364 38.4615% 28.0392%); + --color-info: hsl(221.2121 83.1933% 53.3333%); + --color-success: hsl(142.1277 76.2162% 36.2745%); + --color-warning: hsl(32.1327 94.6188% 43.7255%); + --color-danger: hsl(4.3168 100% 67.8206%); + --rounded-btn: 1.9rem; + --tab-radius: 0.7rem; + --color-primary-content: hsl(355.2354 65.019% 4.5186%); + --color-primary-50: hsl(356.3783 84.5787% 83.2964%); + --color-primary-100: hsl(356.1335 83.2065% 81.6242%); + --color-primary-200: hsl(355.5849 80.5941% 78.1944%); + --color-primary-300: hsl(354.9399 78.1543% 74.6397%); + --color-primary-400: hsl(354.1687 75.8889% 70.9395%); + --color-primary-500: hsl(353.2258 73.8095% 67.0588%); + --color-primary-600: hsl(353.2258 50.874% 58.1053%); + --color-primary-700: hsl(353.2258 37.2399% 49.3975%); + --color-primary-800: hsl(353.2258 38.0087% 40.9582%); + --color-primary-900: hsl(353.2258 39.1251% 32.8159%); + --color-secondary-content: hsl(253.3704 47.3508% 5.5587%); + --color-secondary-50: hsl(251.2403 93.2239% 87.848%); + --color-secondary-100: hsl(251.5088 92.3994% 86.6789%); + --color-secondary-200: hsl(252.0792 90.8044% 84.3054%); + --color-secondary-300: hsl(252.6989 89.2797% 81.8819%); + --color-secondary-400: hsl(253.3754 87.825% 79.4034%); + --color-secondary-500: hsl(254.1176 86.4407% 76.8627%); + --color-secondary-600: hsl(254.1176 52.648% 66.6995%); + --color-secondary-700: hsl(254.1176 35.0397% 56.8151%); + --color-secondary-800: hsl(254.1176 27.1103% 47.2355%); + --color-secondary-900: hsl(254.1176 27.7981% 37.9931%); + --color-accent-content: hsl(181.9361 54.2036% 2.9988%); + --color-accent-50: hsl(181.1201 31.9936% 75.5961%); + --color-accent-100: hsl(181.172 32.0993% 73.3719%); + --color-accent-200: hsl(181.2752 32.3497% 68.9032%); + --color-accent-300: hsl(181.3759 32.667% 64.391%); + --color-accent-400: hsl(181.4716 33.0775% 59.8058%); + --color-accent-500: hsl(181.5584 33.6245% 55.098%); + --color-accent-600: hsl(181.5584 27.7927% 47.6204%); + --color-accent-700: hsl(181.5584 28.3113% 40.3481%); + --color-accent-800: hsl(181.5584 29.0302% 33.2999%); + --color-accent-900: hsl(181.5584 30.0861% 26.4998%); + --color-neutral-50: hsl(340.521 44.3687% 72.4144%); + --color-neutral-100: hsl(340.1773 43.7625% 69.8222%); + --color-neutral-200: hsl(339.4108 42.5861% 64.5785%); + --color-neutral-300: hsl(338.507 41.4744% 59.2357%); + --color-neutral-400: hsl(337.4068 40.4623% 53.7516%); + --color-neutral-500: hsl(336 42.8571% 48.0392%); + --color-neutral-600: hsl(336 43.5592% 41.4327%); + --color-neutral-700: hsl(336 44.4961% 35.0074%); + --color-neutral-800: hsl(336 45.8033% 28.7803%); + --color-neutral-900: hsl(336 47.7421% 22.7723%); + --color-info-content: hsl(218.9847 98.1914% 91.1191%); + --color-info-50: hsl(219.5223 90.8982% 75.1352%); + --color-info-100: hsl(219.6486 89.9471% 72.8089%); + --color-info-200: hsl(219.9484 88.1075% 68.1172%); + --color-info-300: hsl(220.3175 86.3541% 63.3558%); + --color-info-400: hsl(220.756 84.7001% 58.4762%); + --color-info-500: hsl(221.2121 83.1933% 53.3333%); + --color-info-600: hsl(221.2121 73.8664% 46.0735%); + --color-info-700: hsl(221.2121 75.2921% 39.0129%); + --color-info-800: hsl(221.2121 77.2709% 32.17%); + --color-info-900: hsl(221.2121 80.1841% 25.5679%); + --color-success-content: hsl(130.1256 95.7127% 1.9343%); + --color-success-50: hsl(130.3106 37.672% 68.7269%); + --color-success-100: hsl(130.8008 37.753% 65.7761%); + --color-success-200: hsl(131.9998 38.0525% 59.7265%); + --color-success-300: hsl(133.6564 38.6495% 53.3423%); + --color-success-400: hsl(136.2425 46.3769% 46.2272%); + --color-success-500: hsl(142.1277 76.2162% 36.2745%); + --color-success-600: hsl(142.1277 77.8784% 31.1197%); + --color-success-700: hsl(142.1277 80.1246% 26.1063%); + --color-success-800: hsl(142.117 83.2701% 21.2525%); + --color-success-900: hsl(141.7625 86.5918% 16.6991%); + --color-warning-content: hsl(17.1667 99.4327% 3.3181%); + --color-warning-50: hsl(25.8631 74.2191% 73.8529%); + --color-warning-100: hsl(26.0117 73.723% 71.3345%); + --color-warning-200: hsl(26.407 72.8234% 66.1392%); + --color-warning-300: hsl(27.0339 72.1185% 60.5933%); + --color-warning-400: hsl(28.2027 71.8262% 54.2587%); + --color-warning-500: hsl(32.1327 94.6188% 43.7255%); + --color-warning-600: hsl(32.0048 95.4642% 37.8169%); + --color-warning-700: hsl(31.7888 96.25% 32.1253%); + --color-warning-800: hsl(31.4433 96.9725% 26.6578%); + --color-warning-900: hsl(30.8928 97.6278% 21.425%); + --color-danger-content: hsl(2.2254 79.7261% 5.3196%); + --color-danger-50: hsl(7.875 100% 82.4603%); + --color-danger-100: hsl(7.5951 100% 80.8734%); + --color-danger-200: hsl(6.9757 100% 77.6885%); + --color-danger-300: hsl(6.2552 100% 74.4738%); + --color-danger-400: hsl(5.3935 100% 71.2011%); + --color-danger-500: hsl(4.3168 100% 67.8206%); + --color-danger-600: hsl(3.8876 82.183% 61.887%); + --color-danger-700: hsl(3.8876 57.1084% 52.6615%); + --color-danger-800: hsl(3.8876 52.3288% 43.7204%); + --color-danger-900: hsl(3.8876 53.7661% 35.094%); + --color-surface-200: hsl(318.9474 23.7231% 85.6578%); + --color-surface-300: hsl(318.9474 13.9672% 77.7526%); +} + +[data-theme="halloween"] { + color-scheme: dark; + --color-primary: hsl(33.6272 100% 50%); + --color-primary-content: hsl(180 7.3171% 8.0392%); + --color-secondary: hsl(277.6985 100% 38.1041%); + --color-accent: hsl(96.7808 100% 33.291%); + --color-accent-content: hsl(0 0% 0%); + --color-neutral: hsl(31.4286 80.7692% 10.1961%); + --color-surface-100: hsl(0 0% 12.9412%); + --color-info: hsl(221.2121 83.1933% 53.3333%); + --color-success: hsl(142.1277 76.2162% 36.2745%); + --color-warning: hsl(32.1327 94.6188% 43.7255%); + --color-danger: hsl(3.3252 87.4903% 61.7362%); + --color-primary-50: hsl(30.5586 100% 76.7985%); + --color-primary-100: hsl(30.665 100% 74.4632%); + --color-primary-200: hsl(31.0742 100% 69.4404%); + --color-primary-300: hsl(32.0073 100% 63.4507%); + --color-primary-400: hsl(35.3246 100% 52.6838%); + --color-primary-500: hsl(33.6272 100% 50%); + --color-primary-600: hsl(31.3856 100% 46.3119%); + --color-primary-700: hsl(31.1135 100% 39.5951%); + --color-primary-800: hsl(30.7444 100% 33.0855%); + --color-primary-900: hsl(30.2184 100% 26.8049%); + --color-secondary-content: hsl(266.0416 66.9607% 89.8355%); + --color-secondary-50: hsl(268.5109 61.9036% 71.1559%); + --color-secondary-100: hsl(268.9772 61.2997% 68.3449%); + --color-secondary-200: hsl(270.0665 60.2412% 62.5283%); + --color-secondary-300: hsl(271.4878 59.4987% 56.2799%); + --color-secondary-400: hsl(273.6337 61.9136% 48.9933%); + --color-secondary-500: hsl(277.6985 100% 38.1041%); + --color-secondary-600: hsl(277.4696 100% 33.0628%); + --color-secondary-700: hsl(277.1684 100% 28.1599%); + --color-secondary-800: hsl(276.756 100% 23.4082%); + --color-secondary-900: hsl(276.1609 100% 18.8237%); + --color-accent-50: hsl(100.6724 47.2624% 66.5219%); + --color-accent-100: hsl(100.3767 47.2888% 63.2972%); + --color-accent-200: hsl(99.5185 47.5807% 56.5563%); + --color-accent-300: hsl(97.8942 50.508% 48.9943%); + --color-accent-400: hsl(92.3742 88.8493% 37.1684%); + --color-accent-500: hsl(96.7808 100% 33.291%); + --color-accent-600: hsl(97.2135 100% 28.8437%); + --color-accent-700: hsl(97.7849 100% 24.5184%); + --color-accent-800: hsl(98.5708 100% 20.3265%); + --color-accent-900: hsl(99.7125 100% 16.2821%); + --color-neutral-content: hsl(28.9179 10.4732% 80.1481%); + --color-neutral-50: hsl(29.1471 10.9763% 47.5094%); + --color-neutral-100: hsl(29.2041 12.9927% 43.0957%); + --color-neutral-200: hsl(29.3599 18.3125% 34.4772%); + --color-neutral-300: hsl(29.6223 26.6018% 26.1474%); + --color-neutral-400: hsl(30.1722 41.778% 18.0888%); + --color-neutral-500: hsl(31.4286 80.7692% 10.1961%); + --color-neutral-600: hsl(30.6369 83.0916% 8.4539%); + --color-neutral-700: hsl(29.3129 85.2476% 6.8051%); + --color-neutral-800: hsl(27.0711 87.184% 5.2477%); + --color-neutral-900: hsl(23.5495 88.7968% 3.7804%); + --color-info-content: hsl(218.9847 98.1914% 91.1191%); + --color-info-50: hsl(219.5223 90.8982% 75.1352%); + --color-info-100: hsl(219.6486 89.9471% 72.8089%); + --color-info-200: hsl(219.9484 88.1075% 68.1172%); + --color-info-300: hsl(220.3175 86.3541% 63.3558%); + --color-info-400: hsl(220.756 84.7001% 58.4762%); + --color-info-500: hsl(221.2121 83.1933% 53.3333%); + --color-info-600: hsl(221.2121 73.8664% 46.0735%); + --color-info-700: hsl(221.2121 75.2921% 39.0129%); + --color-info-800: hsl(221.2121 77.2709% 32.17%); + --color-info-900: hsl(221.2121 80.1841% 25.5679%); + --color-success-content: hsl(130.1256 95.7127% 1.9343%); + --color-success-50: hsl(130.3106 37.672% 68.7269%); + --color-success-100: hsl(130.8008 37.753% 65.7761%); + --color-success-200: hsl(131.9998 38.0525% 59.7265%); + --color-success-300: hsl(133.6564 38.6495% 53.3423%); + --color-success-400: hsl(136.2425 46.3769% 46.2272%); + --color-success-500: hsl(142.1277 76.2162% 36.2745%); + --color-success-600: hsl(142.1277 77.8784% 31.1197%); + --color-success-700: hsl(142.1277 80.1246% 26.1063%); + --color-success-800: hsl(142.117 83.2701% 21.2525%); + --color-success-900: hsl(141.7625 86.5918% 16.6991%); + --color-warning-content: hsl(17.1667 99.4327% 3.3181%); + --color-warning-50: hsl(25.8631 74.2191% 73.8529%); + --color-warning-100: hsl(26.0117 73.723% 71.3345%); + --color-warning-200: hsl(26.407 72.8234% 66.1392%); + --color-warning-300: hsl(27.0339 72.1185% 60.5933%); + --color-warning-400: hsl(28.2027 71.8262% 54.2587%); + --color-warning-500: hsl(32.1327 94.6188% 43.7255%); + --color-warning-600: hsl(32.0048 95.4642% 37.8169%); + --color-warning-700: hsl(31.7888 96.25% 32.1253%); + --color-warning-800: hsl(31.4433 96.9725% 26.6578%); + --color-warning-900: hsl(30.8928 97.6278% 21.425%); + --color-danger-content: hsl(1.5684 84.471% 4.3206%); + --color-danger-50: hsl(6.645 100% 80.3116%); + --color-danger-100: hsl(6.3908 100% 78.5508%); + --color-danger-200: hsl(5.9013 97.1794% 74.6701%); + --color-danger-300: hsl(5.2994 93.7104% 70.5565%); + --color-danger-400: hsl(4.4885 90.4774% 66.2706%); + --color-danger-500: hsl(3.3252 87.4903% 61.7362%); + --color-danger-600: hsl(3.3252 63.0279% 53.4395%); + --color-danger-700: hsl(3.3252 55.8261% 45.3704%); + --color-danger-800: hsl(3.3252 57.0831% 37.5502%); + --color-danger-900: hsl(3.3252 58.917% 30.0052%); + --color-surface-200: hsl(223.8136 0% 11.3419%); + --color-surface-300: hsl(223.8136 0% 9.8814%); + --color-surface-content: hsl(223.8136 0% 80.5478%); +} + +[data-theme="garden"] { + color-scheme: light; + --color-primary: hsl(332.4702 100% 49.8311%); + --color-primary-content: hsl(0 0% 100%); + --color-secondary: hsl(334.2857 37.1981% 40.5882%); + --color-accent: hsl(138.8571 15.9817% 42.9412%); + --color-neutral: hsl(43.9024 100% 8.0392%); + --color-neutral-content: hsl(0 4.3478% 90.9804%); + --color-surface-100: hsl(0 4.3478% 90.9804%); + --color-surface-content: hsl(0 3.2258% 6.0784%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-50: hsl(341.896 100% 77.9663%); + --color-primary-100: hsl(341.3859 100% 75.7437%); + --color-primary-200: hsl(340.11 100% 70.989%); + --color-primary-300: hsl(338.245 100% 65.4594%); + --color-primary-400: hsl(334.7005 100% 57.4679%); + --color-primary-500: hsl(332.4702 100% 49.8311%); + --color-primary-600: hsl(332.7244 100% 43.3427%); + --color-primary-700: hsl(333.0571 100% 37.0325%); + --color-primary-800: hsl(333.5091 100% 30.9168%); + --color-primary-900: hsl(334.1547 100% 25.0163%); + --color-secondary-content: hsl(339.8087 30.77% 88.0909%); + --color-secondary-50: hsl(338.1948 28.408% 67.3715%); + --color-secondary-100: hsl(337.9003 28.061% 64.4189%); + --color-secondary-200: hsl(337.2399 27.3651% 58.5114%); + --color-secondary-300: hsl(336.4575 26.6755% 52.5898%); + --color-secondary-400: hsl(335.5026 29.7694% 46.6311%); + --color-secondary-500: hsl(334.2857 37.1981% 40.5882%); + --color-secondary-600: hsl(334.2857 37.9214% 34.9011%); + --color-secondary-700: hsl(334.2857 38.8936% 29.37%); + --color-secondary-800: hsl(334.2857 40.2633% 24.0096%); + --color-secondary-900: hsl(334.2857 42.3236% 18.8377%); + --color-accent-content: hsl(136.3164 32.9542% 1.6499%); + --color-accent-50: hsl(136.9081 12.1332% 67.7982%); + --color-accent-100: hsl(137.0565 12.1128% 64.97%); + --color-accent-200: hsl(137.3907 12.0755% 59.3645%); + --color-accent-300: hsl(137.7872 12.0454% 53.8264%); + --color-accent-400: hsl(138.2658 12.8458% 48.3536%); + --color-accent-500: hsl(138.8571 15.9817% 42.9412%); + --color-accent-600: hsl(138.8571 16.2752% 36.9637%); + --color-accent-700: hsl(138.8571 16.6686% 31.1503%); + --color-accent-800: hsl(138.8571 17.2209% 25.5161%); + --color-accent-900: hsl(138.8571 18.0476% 20.0802%); + --color-neutral-50: hsl(43.0486 10.3803% 46.0248%); + --color-neutral-100: hsl(43.0406 12.4039% 41.5066%); + --color-neutral-200: hsl(43.0491 17.9226% 32.6951%); + --color-neutral-300: hsl(43.1427 27.0789% 24.1868%); + --color-neutral-400: hsl(43.5427 45.997% 15.912%); + --color-neutral-500: hsl(43.9024 100% 8.0392%); + --color-neutral-600: hsl(43.0881 100% 6.7079%); + --color-neutral-700: hsl(41.9118 100% 5.413%); + --color-neutral-800: hsl(40.0729 100% 4.1582%); + --color-neutral-900: hsl(36.8782 100% 2.9474%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(0 2.0599% 82.6136%); + --color-surface-300: hsl(0 1.3069% 74.9723%); +} + +[data-theme="forest"] { + color-scheme: dark; + --color-primary: hsl(141.039 71.9626% 41.9608%); + --color-primary-content: hsl(0 0% 0%); + --color-secondary: hsl(163.7419 72.77% 41.7647%); + --color-accent: hsl(174.9677 72.77% 41.7647%); + --color-neutral: hsl(161.3793 36.7089% 15.4902%); + --color-surface-100: hsl(0 12.1951% 8.0392%); + --rounded-btn: 1.9rem; + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-50: hsl(129.9902 46.7848% 72.2578%); + --color-primary-100: hsl(130.4892 46.8542% 69.574%); + --color-primary-200: hsl(131.6961 47.1389% 64.0222%); + --color-primary-300: hsl(133.3335 47.7269% 58.0809%); + --color-primary-400: hsl(135.821 48.9141% 51.3492%); + --color-primary-500: hsl(141.039 71.9626% 41.9608%); + --color-primary-600: hsl(141.039 73.3154% 36.1043%); + --color-primary-700: hsl(141.039 75.1308% 30.4085%); + --color-primary-800: hsl(141.039 77.6831% 24.8884%); + --color-primary-900: hsl(141.0313 81.4818% 19.5656%); + --color-secondary-content: hsl(153.645 94.9339% 2.5067%); + --color-secondary-50: hsl(156.6298 45.6454% 72.3384%); + --color-secondary-100: hsl(157.041 45.8255% 69.6641%); + --color-secondary-200: hsl(157.9893 46.3397% 64.1266%); + --color-secondary-300: hsl(159.1808 47.1734% 58.1857%); + --color-secondary-400: hsl(160.8126 48.6393% 51.4157%); + --color-secondary-500: hsl(163.7419 72.77% 41.7647%); + --color-secondary-600: hsl(163.7419 74.1444% 35.9324%); + --color-secondary-700: hsl(163.7419 75.9894% 30.2602%); + --color-secondary-800: hsl(163.7419 78.5839% 24.7628%); + --color-secondary-900: hsl(163.7323 82.3878% 19.4684%); + --color-accent-content: hsl(171.4042 94.9339% 2.5067%); + --color-accent-50: hsl(172.031 45.2779% 72.4164%); + --color-accent-100: hsl(172.2406 45.4875% 69.7469%); + --color-accent-200: hsl(172.7001 46.0643% 64.2162%); + --color-accent-300: hsl(173.2354 46.9671% 58.2753%); + --color-accent-400: hsl(173.9044 48.514% 51.4914%); + --color-accent-500: hsl(174.9677 72.77% 41.7647%); + --color-accent-600: hsl(174.9677 74.1444% 35.9324%); + --color-accent-700: hsl(174.9677 75.9894% 30.2602%); + --color-accent-800: hsl(174.9677 78.5839% 24.7628%); + --color-accent-900: hsl(174.9648 82.3878% 19.4684%); + --color-neutral-content: hsl(157.0371 6.8619% 81.5089%); + --color-neutral-50: hsl(157.83 6.6834% 50.9312%); + --color-neutral-100: hsl(158.0038 7.5771% 46.7703%); + --color-neutral-200: hsl(158.4331 10.506% 38.6189%); + --color-neutral-300: hsl(159.0245 14.8451% 30.702%); + --color-neutral-400: hsl(159.9009 22.0285% 23.015%); + --color-neutral-500: hsl(161.3793 36.7089% 15.4902%); + --color-neutral-600: hsl(161.3793 38.6401% 12.9001%); + --color-neutral-700: hsl(161.3793 41.4428% 10.381%); + --color-neutral-800: hsl(161.3793 45.8561% 7.9397%); + --color-neutral-900: hsl(160.9627 51.9832% 5.6499%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(0 13.0424% 6.8651%); + --color-surface-300: hsl(360 14.1163% 5.7928%); + --color-surface-content: hsl(0.603 1.4217% 79.1884%); +} + +[data-theme="aqua"] { + color-scheme: dark; + --color-primary: hsl(181.7949 92.8571% 49.4118%); + --color-primary-content: hsl(181.4118 100% 16.6667%); + --color-secondary: hsl(274.4118 30.9091% 56.8627%); + --color-accent: hsl(47.0588 100% 80%); + --color-neutral: hsl(205.4015 53.7255% 50%); + --color-surface-100: hsl(218.6087 52.5114% 42.9412%); + --color-info: hsl(221.2121 83.1933% 53.3333%); + --color-success: hsl(142.1277 76.2162% 36.2745%); + --color-warning: hsl(32.1327 94.6188% 43.7255%); + --color-danger: hsl(4.9473 100% 69.8114%); + --color-primary-50: hsl(182.0187 87.0513% 80.8851%); + --color-primary-100: hsl(182.0657 87.17% 78.8467%); + --color-primary-200: hsl(182.1381 87.4807% 74.4519%); + --color-primary-300: hsl(182.17 87.9367% 69.3953%); + --color-primary-400: hsl(182.1296 88.673% 62.9696%); + --color-primary-500: hsl(181.7949 92.8571% 49.4118%); + --color-primary-600: hsl(181.7984 93.9765% 42.7147%); + --color-primary-700: hsl(181.8072 95.0196% 36.2836%); + --color-primary-800: hsl(181.8237 95.9813% 30.1237%); + --color-primary-900: hsl(181.852 96.8555% 24.2442%); + --color-secondary-content: hsl(270.3771 47.5679% 3.1336%); + --color-secondary-50: hsl(273.0767 32.3941% 76.1582%); + --color-secondary-100: hsl(273.1975 32.2236% 74.0096%); + --color-secondary-200: hsl(273.4555 31.8838% 69.719%); + --color-secondary-300: hsl(273.7392 31.5482% 65.4345%); + --color-secondary-400: hsl(274.055 31.2211% 61.1514%); + --color-secondary-500: hsl(274.4118 30.9091% 56.8627%); + --color-secondary-600: hsl(274.4118 23.7719% 49.1674%); + --color-secondary-700: hsl(274.4118 24.2014% 41.6832%); + --color-secondary-800: hsl(274.4118 24.7957% 34.4299%); + --color-secondary-900: hsl(274.4118 25.667% 27.4317%); + --color-accent-content: hsl(46.9809 44.6774% 5.9515%); + --color-accent-50: hsl(47.1462 99.8274% 89.3924%); + --color-accent-100: hsl(47.1209 99.8515% 88.3936%); + --color-accent-200: hsl(47.0802 99.896% 86.3696%); + --color-accent-300: hsl(47.0544 99.9355% 84.3033%); + --color-accent-400: hsl(47.0461 99.9702% 82.1847%); + --color-accent-500: hsl(47.0588 100% 80%); + --color-accent-600: hsl(47.0588 57.3873% 69.4496%); + --color-accent-700: hsl(47.0588 37.0777% 59.1887%); + --color-accent-800: hsl(47.0588 26.0044% 49.2443%); + --color-accent-900: hsl(47.0588 26.6366% 39.6497%); + --color-neutral-content: hsl(214.2304 84.8508% 2.984%); + --color-neutral-50: hsl(207.2202 54.2891% 73.3918%); + --color-neutral-100: hsl(207.1291 54.109% 70.9395%); + --color-neutral-200: hsl(206.9056 53.793% 65.9856%); + --color-neutral-300: hsl(206.5986 53.5656% 60.9256%); + --color-neutral-400: hsl(206.1459 53.4918% 55.6697%); + --color-neutral-500: hsl(205.4015 53.7255% 50%); + --color-neutral-600: hsl(205.4015 54.5705% 43.1515%); + --color-neutral-700: hsl(205.4015 55.6965% 36.4909%); + --color-neutral-800: hsl(205.4015 57.2644% 30.0358%); + --color-neutral-900: hsl(205.4015 59.5829% 23.8077%); + --color-info-content: hsl(218.9847 98.1914% 91.1191%); + --color-info-50: hsl(219.5223 90.8982% 75.1352%); + --color-info-100: hsl(219.6486 89.9471% 72.8089%); + --color-info-200: hsl(219.9484 88.1075% 68.1172%); + --color-info-300: hsl(220.3175 86.3541% 63.3558%); + --color-info-400: hsl(220.756 84.7001% 58.4762%); + --color-info-500: hsl(221.2121 83.1933% 53.3333%); + --color-info-600: hsl(221.2121 73.8664% 46.0735%); + --color-info-700: hsl(221.2121 75.2921% 39.0129%); + --color-info-800: hsl(221.2121 77.2709% 32.17%); + --color-info-900: hsl(221.2121 80.1841% 25.5679%); + --color-success-content: hsl(130.1256 95.7127% 1.9343%); + --color-success-50: hsl(130.3106 37.672% 68.7269%); + --color-success-100: hsl(130.8008 37.753% 65.7761%); + --color-success-200: hsl(131.9998 38.0525% 59.7265%); + --color-success-300: hsl(133.6564 38.6495% 53.3423%); + --color-success-400: hsl(136.2425 46.3769% 46.2272%); + --color-success-500: hsl(142.1277 76.2162% 36.2745%); + --color-success-600: hsl(142.1277 77.8784% 31.1197%); + --color-success-700: hsl(142.1277 80.1246% 26.1063%); + --color-success-800: hsl(142.117 83.2701% 21.2525%); + --color-success-900: hsl(141.7625 86.5918% 16.6991%); + --color-warning-content: hsl(17.1667 99.4327% 3.3181%); + --color-warning-50: hsl(25.8631 74.2191% 73.8529%); + --color-warning-100: hsl(26.0117 73.723% 71.3345%); + --color-warning-200: hsl(26.407 72.8234% 66.1392%); + --color-warning-300: hsl(27.0339 72.1185% 60.5933%); + --color-warning-400: hsl(28.2027 71.8262% 54.2587%); + --color-warning-500: hsl(32.1327 94.6188% 43.7255%); + --color-warning-600: hsl(32.0048 95.4642% 37.8169%); + --color-warning-700: hsl(31.7888 96.25% 32.1253%); + --color-warning-800: hsl(31.4433 96.9725% 26.6578%); + --color-warning-900: hsl(30.8928 97.6278% 21.425%); + --color-danger-content: hsl(2.8839 74.8129% 5.3446%); + --color-danger-50: hsl(7.8583 100% 83.4404%); + --color-danger-100: hsl(7.6181 100% 81.9469%); + --color-danger-200: hsl(7.092 100% 78.956%); + --color-danger-300: hsl(6.4907 100% 75.9498%); + --color-danger-400: hsl(5.7895 100% 72.9111%); + --color-danger-500: hsl(4.9473 100% 69.8114%); + --color-danger-600: hsl(4.5357 77.8427% 62.9193%); + --color-danger-700: hsl(4.5357 53.6367% 53.5525%); + --color-danger-800: hsl(4.5357 47.405% 44.4745%); + --color-danger-900: hsl(4.5357 48.6844% 35.7159%); + --color-surface-200: hsl(218.6087 53.1579% 38.7403%); + --color-surface-300: hsl(218.6087 53.8843% 34.9038%); + --color-surface-content: hsl(217.8029 45.0593% 88.3418%); +} + +[data-theme="lofi"] { + color-scheme: light; + --color-primary: hsl(0 0% 5.098%); + --color-primary-content: hsl(180 100% 100%); + --color-secondary: hsl(0 1.9608% 10%); + --color-secondary-content: hsl(180 100% 100%); + --color-accent: hsl(0 0% 14.902%); + --color-accent-content: hsl(180 100% 100%); + --color-neutral: hsl(0 0% 0%); + --color-neutral-content: hsl(180 100% 100%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-200: hsl(0 0% 94.902%); + --color-surface-300: hsl(0 1.9608% 90%); + --color-surface-content: hsl(0 0% 0%); + --color-info: hsl(186.3996 64.5332% 61.9566%); + --color-success: hsl(156.3531 98.7858% 70.4206%); + --color-warning: hsl(40.5761 100% 70.509%); + --color-danger: hsl(7.4376 100% 75.3917%); + --rounded-box: 0.25rem; + --rounded-btn: 0.125rem; + --rounded-badge: 0.125rem; + --tab-radius: 0.125rem; + --animation-btn: 0; + --animation-input: 0; + --btn-focus-scale: 1; + --color-primary-50: hsl(223.8136 0% 43.0525%); + --color-primary-100: hsl(223.8136 0% 38.3522%); + --color-primary-200: hsl(223.8136 0% 29.2546%); + --color-primary-300: hsl(223.8136 0% 20.613%); + --color-primary-400: hsl(223.8136 0% 12.5143%); + --color-primary-500: hsl(0 0% 5.098%); + --color-primary-600: hsl(223.8136 0% 3.7908%); + --color-primary-700: hsl(223.8136 0% 2.6624%); + --color-primary-800: hsl(223.8136 0% 1.7836%); + --color-primary-900: hsl(223.8136 0% 1.1232%); + --color-secondary-50: hsl(0.0797 0.297% 46.5899%); + --color-secondary-100: hsl(0.0763 0.3518% 42.1381%); + --color-secondary-200: hsl(0.0675 0.4958% 33.4846%); + --color-secondary-300: hsl(0.0547 0.7169% 25.2009%); + --color-secondary-400: hsl(0.0348 1.1027% 17.3446%); + --color-secondary-500: hsl(0 1.9608% 10%); + --color-secondary-600: hsl(0 2.1253% 8.0874%); + --color-secondary-700: hsl(360 2.3823% 6.2272%); + --color-secondary-800: hsl(0 2.8376% 4.4244%); + --color-secondary-900: hsl(0 3.0353% 2.7978%); + --color-accent-50: hsl(223.8136 0% 49.9489%); + --color-accent-100: hsl(223.8136 0% 45.7415%); + --color-accent-200: hsl(223.8136 0% 37.5342%); + --color-accent-300: hsl(223.8136 0% 29.6297%); + --color-accent-400: hsl(223.8136 0% 22.0676%); + --color-accent-500: hsl(0 0% 14.902%); + --color-accent-600: hsl(223.8136 0% 12.3844%); + --color-accent-700: hsl(223.8136 0% 9.936%); + --color-accent-800: hsl(223.8136 0% 7.563%); + --color-accent-900: hsl(223.8136 0% 5.2736%); + --color-neutral-50: hsl(223.8136 0% 33.3837%); + --color-neutral-100: hsl(223.8136 0% 28.0604%); + --color-neutral-200: hsl(223.8136 0% 17.9236%); + --color-neutral-300: hsl(223.8136 0% 8.6104%); + --color-neutral-400: hsl(223.8136 0% 1.292%); + --color-neutral-500: hsl(0 0% 0%); + --color-neutral-600: hsl(0 0% 0%); + --color-neutral-700: hsl(0 0% 0%); + --color-neutral-800: hsl(0 0% 0%); + --color-neutral-900: hsl(0 0% 0%); + --color-info-content: hsl(187.4876 70.1734% 3.9993%); + --color-info-50: hsl(186.7721 62.267% 80.5435%); + --color-info-100: hsl(186.7651 62.3978% 78.6757%); + --color-info-200: hsl(186.7339 62.7191% 74.8475%); + --color-info-300: hsl(186.6728 63.1445% 70.8529%); + --color-info-400: hsl(186.569 63.7204% 66.6089%); + --color-info-500: hsl(186.3996 64.5332% 61.9566%); + --color-info-600: hsl(186.3996 46.4145% 53.6327%); + --color-info-700: hsl(186.3996 40.7904% 45.5372%); + --color-info-800: hsl(186.3996 41.7054% 37.6914%); + --color-info-900: hsl(186.3996 43.04% 30.1216%); + --color-success-content: hsl(153.9692 70.833% 5.0121%); + --color-success-50: hsl(152.2143 100% 86.1265%); + --color-success-100: hsl(152.52 100% 84.6962%); + --color-success-200: hsl(153.1981 100% 81.691%); + --color-success-300: hsl(153.9958 99.9595% 78.4296%); + --color-success-400: hsl(155.0548 99.3365% 74.727%); + --color-success-500: hsl(156.3531 98.7858% 70.4206%); + --color-success-600: hsl(156.3531 65.7665% 61.0522%); + --color-success-700: hsl(156.3531 46.0015% 51.941%); + --color-success-800: hsl(156.3531 43.3981% 43.1107%); + --color-success-900: hsl(156.3531 44.6075% 34.5912%); + --color-warning-content: hsl(36.3719 72.4108% 5.2493%); + --color-warning-50: hsl(39.9253 100% 84.8697%); + --color-warning-100: hsl(39.937 100% 83.4194%); + --color-warning-200: hsl(39.9914 100% 80.4483%); + --color-warning-300: hsl(40.0992 100% 77.3518%); + --color-warning-400: hsl(40.2818 100% 74.0724%); + --color-warning-500: hsl(40.5761 100% 70.509%); + --color-warning-600: hsl(38.4331 72.921% 62.5713%); + --color-warning-700: hsl(38.4331 50.3912% 53.2521%); + --color-warning-800: hsl(38.4331 45.0823% 44.2202%); + --color-warning-900: hsl(38.4331 46.3062% 35.5062%); + --color-danger-content: hsl(5.5076 60.4131% 5.7797%); + --color-danger-50: hsl(9.1407 100% 86.4251%); + --color-danger-100: hsl(8.9831 100% 85.202%); + --color-danger-200: hsl(8.648 100% 82.7572%); + --color-danger-300: hsl(8.2828 100% 80.311%); + --color-danger-400: hsl(7.8818 100% 77.8584%); + --color-danger-500: hsl(7.4376 100% 75.3917%); + --color-danger-600: hsl(6.7589 73.2118% 67.5762%); + --color-danger-700: hsl(6.7589 48.2891% 57.5718%); + --color-danger-800: hsl(6.7589 36.2157% 47.8759%); + --color-danger-900: hsl(6.7589 37.1219% 38.5212%); +} + +[data-theme="pastel"] { + color-scheme: light; + --color-primary: hsl(283.6364 21.5686% 80%); + --color-secondary: hsl(351.6279 70.4918% 88.0392%); + --color-accent: hsl(158.4906 54.6392% 80.9804%); + --color-neutral: hsl(198.6207 43.7186% 60.9804%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-200: hsl(210 20% 98.0392%); + --color-surface-300: hsl(216 12.1951% 83.9216%); + --rounded-btn: 1.9rem; + --tab-radius: 0.7rem; + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(283.6364 9.7204% 5.9355%); + --color-primary-50: hsl(283.5486 21.8954% 88.9249%); + --color-primary-100: hsl(283.5578 21.8599% 87.9272%); + --color-primary-200: hsl(283.5766 21.7884% 85.9362%); + --color-primary-300: hsl(283.5959 21.7159% 83.9513%); + --color-primary-400: hsl(283.6158 21.6427% 81.9726%); + --color-primary-500: hsl(283.6364 21.5686% 80%); + --color-primary-600: hsl(283.6364 12.3777% 69.4496%); + --color-primary-700: hsl(283.6364 7.9971% 59.1887%); + --color-primary-800: hsl(283.6364 5.6088% 49.2443%); + --color-primary-900: hsl(283.6364 5.7451% 39.6497%); + --color-secondary-content: hsl(351.6279 16.0851% 7.0107%); + --color-secondary-50: hsl(352.2067 73.9056% 93.5351%); + --color-secondary-100: hsl(352.1466 73.5135% 92.9336%); + --color-secondary-200: hsl(352.0235 72.7392% 91.7237%); + --color-secondary-300: hsl(351.8962 71.9776% 90.5047%); + --color-secondary-400: hsl(351.7644 71.2286% 89.2766%); + --color-secondary-500: hsl(351.6279 70.4918% 88.0392%); + --color-secondary-600: hsl(351.6279 31.4466% 76.4968%); + --color-secondary-700: hsl(351.6279 18.3684% 65.2711%); + --color-secondary-800: hsl(351.6279 11.8366% 54.3916%); + --color-secondary-900: hsl(351.6279 10.1431% 43.895%); + --color-accent-content: hsl(158.4906 22.9113% 6.0666%); + --color-accent-50: hsl(157.397 54.5046% 89.7167%); + --color-accent-100: hsl(157.5077 54.5064% 88.7637%); + --color-accent-200: hsl(157.7366 54.5187% 86.8462%); + --color-accent-300: hsl(157.9759 54.5439% 84.9114%); + --color-accent-400: hsl(158.2268 54.5834% 82.957%); + --color-accent-500: hsl(158.4906 54.6392% 80.9804%); + --color-accent-600: hsl(158.4906 30.682% 70.309%); + --color-accent-700: hsl(158.4906 19.6225% 59.9305%); + --color-accent-800: hsl(158.4906 13.342% 49.872%); + --color-accent-900: hsl(158.4906 13.6622% 40.1674%); + --color-neutral-content: hsl(201.2505 54.4162% 3.674%); + --color-neutral-50: hsl(199.3241 43.6959% 78.689%); + --color-neutral-100: hsl(199.2725 43.6632% 76.7489%); + --color-neutral-200: hsl(199.155 43.6165% 72.8576%); + --color-neutral-300: hsl(199.0133 43.6012% 68.9433%); + --color-neutral-400: hsl(198.8393 43.6293% 64.9916%); + --color-neutral-500: hsl(198.6207 43.7186% 60.9804%); + --color-neutral-600: hsl(198.6207 31.6664% 52.7769%); + --color-neutral-700: hsl(198.6207 28.8102% 44.7986%); + --color-neutral-800: hsl(198.6207 29.4674% 37.0663%); + --color-neutral-900: hsl(198.6207 30.4268% 29.6061%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-content: hsl(223.8136 0% 8.6104%); +} + +[data-theme="fantasy"] { + color-scheme: light; + --color-primary: hsl(295.8488 100% 23.0482%); + --color-secondary: hsl(203.8078 100% 38.1183%); + --color-accent: hsl(31.6284 100% 50%); + --color-neutral: hsl(215 27.907% 16.8627%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-content: hsl(215 27.907% 16.8627%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(158.9382 100% 33.2172%); + --color-warning: hsl(44.7108 100% 50%); + --color-danger: hsl(356.8706 100% 67.3052%); + --color-primary-content: hsl(298.257 28.839% 85.0197%); + --color-primary-50: hsl(297.0731 27.7729% 59.2785%); + --color-primary-100: hsl(296.8868 27.6575% 55.6187%); + --color-primary-200: hsl(296.5105 29.5051% 48.2514%); + --color-primary-300: hsl(296.1555 40.2323% 40.6875%); + --color-primary-400: hsl(295.9274 59.247% 32.3994%); + --color-primary-500: hsl(295.8488 100% 23.0482%); + --color-primary-600: hsl(295.7779 100% 19.8648%); + --color-primary-700: hsl(295.6831 100% 16.7688%); + --color-primary-800: hsl(295.5505 100% 13.7682%); + --color-primary-900: hsl(295.3533 100% 10.8732%); + --color-secondary-content: hsl(206.3032 64.8301% 88.452%); + --color-secondary-50: hsl(205.449 62.9331% 67.6036%); + --color-secondary-100: hsl(205.2166 62.7883% 64.4478%); + --color-secondary-200: hsl(204.5298 62.7383% 57.7688%); + --color-secondary-300: hsl(203.1374 63.7803% 49.8672%); + --color-secondary-400: hsl(200.7972 100% 39.4983%); + --color-secondary-500: hsl(203.8078 100% 38.1183%); + --color-secondary-600: hsl(204.0521 100% 33.0753%); + --color-secondary-700: hsl(204.3735 100% 28.1707%); + --color-secondary-800: hsl(204.8135 100% 23.4173%); + --color-secondary-900: hsl(205.4486 100% 18.8312%); + --color-accent-content: hsl(15.8841 100% 4.6857%); + --color-accent-50: hsl(28.1294 100% 76.9529%); + --color-accent-100: hsl(28.2092 100% 74.6669%); + --color-accent-200: hsl(28.5451 100% 69.7968%); + --color-accent-300: hsl(29.342 100% 64.1361%); + --color-accent-400: hsl(31.7781 100% 55.5285%); + --color-accent-500: hsl(31.6284 100% 50%); + --color-accent-600: hsl(29.7039 100% 45.9845%); + --color-accent-700: hsl(29.4138 100% 39.3126%); + --color-accent-800: hsl(29.0201 100% 32.8464%); + --color-accent-900: hsl(28.4589 100% 26.6077%); + --color-neutral-content: hsl(215.101 6.8198% 81.6528%); + --color-neutral-50: hsl(215.0645 6.466% 51.37%); + --color-neutral-100: hsl(215.0583 7.1439% 47.261%); + --color-neutral-200: hsl(215.0453 9.6966% 39.2287%); + --color-neutral-300: hsl(215.0315 13.2724% 31.4641%); + --color-neutral-400: hsl(215.0172 18.6763% 23.9967%); + --color-neutral-500: hsl(215 27.907% 16.8627%); + --color-neutral-600: hsl(215 29.2499% 14.1033%); + --color-neutral-700: hsl(215 31.1786% 11.4195%); + --color-neutral-800: hsl(215 34.1679% 8.8185%); + --color-neutral-900: hsl(214.999 39.3899% 6.309%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-content: hsl(143.4375 100% 2.0605%); + --color-success-50: hsl(147.3179 40.9835% 69.2004%); + --color-success-100: hsl(147.8507 41.1583% 66.2464%); + --color-success-200: hsl(149.1296 41.6896% 60.1308%); + --color-success-300: hsl(150.8516 42.626% 53.5333%); + --color-success-400: hsl(153.506 52.7364% 45.7661%); + --color-success-500: hsl(158.9382 100% 33.2172%); + --color-success-600: hsl(158.6898 100% 28.779%); + --color-success-700: hsl(158.3618 100% 24.4626%); + --color-success-800: hsl(157.9108 100% 20.2792%); + --color-success-900: hsl(157.2553 100% 16.2431%); + --color-warning-content: hsl(34.0938 100% 4.5776%); + --color-warning-50: hsl(42.459 100% 77.4929%); + --color-warning-100: hsl(42.5716 100% 75.1201%); + --color-warning-200: hsl(42.9633 100% 69.897%); + --color-warning-300: hsl(43.7898 100% 63.3363%); + --color-warning-400: hsl(46.4372 100% 50%); + --color-warning-500: hsl(44.7108 100% 50%); + --color-warning-600: hsl(42.8332 100% 45.2761%); + --color-warning-700: hsl(42.6662 100% 38.7012%); + --color-warning-800: hsl(42.4396 100% 32.329%); + --color-warning-900: hsl(42.1163 100% 26.181%); + --color-danger-content: hsl(358.4678 80.9018% 5.3134%); + --color-danger-50: hsl(2.5475 100% 82.9143%); + --color-danger-100: hsl(2.1539 100% 81.382%); + --color-danger-200: hsl(1.252 100% 78.3187%); + --color-danger-300: hsl(0.1416 100% 75.2484%); + --color-danger-400: hsl(358.7344 100% 71.5547%); + --color-danger-500: hsl(356.8706 100% 67.3052%); + --color-danger-600: hsl(357.1922 83.1914% 61.6035%); + --color-danger-700: hsl(357.1922 57.9396% 52.4168%); + --color-danger-800: hsl(357.1922 53.6188% 43.5134%); + --color-danger-900: hsl(357.1922 55.0988% 34.9232%); + --color-surface-200: hsl(223.8136 0.0001% 90.851%); + --color-surface-300: hsl(223.8136 0% 82.4954%); +} + +[data-theme="wireframe"] { + color-scheme: light; + fontfamily: + Chalkboard, + comic sans ms, + "sans-serif"; + --color-primary: hsl(0 0% 72.1569%); + --color-secondary: hsl(0 0% 72.1569%); + --color-accent: hsl(0 0% 72.1569%); + --color-neutral: hsl(0 0% 92.1569%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-200: hsl(0 0% 93.3333%); + --color-surface-300: hsl(0 0% 86.6667%); + --color-info: hsl(240 100% 50%); + --color-success: hsl(120 100% 25.098%); + --color-warning: hsl(60 30.1961% 50%); + --color-danger: hsl(0 100% 50%); + --rounded-box: 0.2rem; + --rounded-btn: 0.2rem; + --rounded-badge: 0.2rem; + --tab-radius: 0.2rem; + --color-primary-content: hsl(223.8136 0% 4.8865%); + --color-primary-50: hsl(223.8136 0% 84.4751%); + --color-primary-100: hsl(223.8136 0% 83.0887%); + --color-primary-200: hsl(223.8136 0% 80.3289%); + --color-primary-300: hsl(223.8136 0% 77.5868%); + --color-primary-400: hsl(223.8136 0% 74.8627%); + --color-primary-500: hsl(0 0% 72.1569%); + --color-primary-600: hsl(223.8136 0% 62.5743%); + --color-primary-700: hsl(223.8136 0% 53.2547%); + --color-primary-800: hsl(223.8136 0% 44.2224%); + --color-primary-900: hsl(223.8136 0% 35.508%); + --color-secondary-content: hsl(223.8136 0% 4.8865%); + --color-secondary-50: hsl(223.8136 0% 84.4751%); + --color-secondary-100: hsl(223.8136 0% 83.0887%); + --color-secondary-200: hsl(223.8136 0% 80.3289%); + --color-secondary-300: hsl(223.8136 0% 77.5868%); + --color-secondary-400: hsl(223.8136 0% 74.8627%); + --color-secondary-500: hsl(0 0% 72.1569%); + --color-secondary-600: hsl(223.8136 0% 62.5743%); + --color-secondary-700: hsl(223.8136 0% 53.2547%); + --color-secondary-800: hsl(223.8136 0% 44.2224%); + --color-secondary-900: hsl(223.8136 0% 35.508%); + --color-accent-content: hsl(223.8136 0% 4.8865%); + --color-accent-50: hsl(223.8136 0% 84.4751%); + --color-accent-100: hsl(223.8136 0% 83.0887%); + --color-accent-200: hsl(223.8136 0% 80.3289%); + --color-accent-300: hsl(223.8136 0% 77.5868%); + --color-accent-400: hsl(223.8136 0% 74.8627%); + --color-accent-500: hsl(0 0% 72.1569%); + --color-accent-600: hsl(223.8136 0% 62.5743%); + --color-accent-700: hsl(223.8136 0% 53.2547%); + --color-accent-800: hsl(223.8136 0% 44.2224%); + --color-accent-900: hsl(223.8136 0% 35.508%); + --color-neutral-content: hsl(223.8136 0% 7.5614%); + --color-neutral-50: hsl(223.8136 0.0002% 95.6713%); + --color-neutral-100: hsl(223.8136 0.0001% 95.2796%); + --color-neutral-200: hsl(223.8136 0.0001% 94.497%); + --color-neutral-300: hsl(223.8136 0.0001% 93.7158%); + --color-neutral-400: hsl(223.8136 0.0001% 92.9357%); + --color-neutral-500: hsl(0 0% 92.1569%); + --color-neutral-600: hsl(223.8136 0% 80.1063%); + --color-neutral-700: hsl(223.8136 0% 68.3865%); + --color-neutral-800: hsl(223.8136 0% 57.0281%); + --color-neutral-900: hsl(223.8136 0% 46.0694%); + --color-info-content: hsl(217.6355 100% 88.8385%); + --color-info-50: hsl(220.1478 100% 70.0069%); + --color-info-100: hsl(220.6406 100% 67.3724%); + --color-info-200: hsl(221.8025 100% 62.1077%); + --color-info-300: hsl(223.3146 100% 56.7575%); + --color-info-400: hsl(225.4892 100% 50.9722%); + --color-info-500: hsl(240 100% 50%); + --color-info-600: hsl(240 100% 43.4908%); + --color-info-700: hsl(240 100% 37.1603%); + --color-info-800: hsl(240 100% 31.025%); + --color-info-900: hsl(240 100% 25.1055%); + --color-success-content: hsl(114.0582 29.7922% 85.8982%); + --color-success-50: hsl(114.9829 29.0112% 61.5926%); + --color-success-100: hsl(115.1825 28.9427% 58.1273%); + --color-success-200: hsl(115.6697 28.8898% 51.1462%); + --color-success-300: hsl(116.3298 36.9889% 43.9879%); + --color-success-400: hsl(117.3101 52.2408% 36.2837%); + --color-success-500: hsl(120 100% 25.098%); + --color-success-600: hsl(120 100% 21.6617%); + --color-success-700: hsl(120 100% 18.3196%); + --color-success-800: hsl(120 100% 15.0806%); + --color-success-900: hsl(120 100% 11.9556%); + --color-warning-content: hsl(60 58.4815% 2.487%); + --color-warning-50: hsl(61.4892 29.4687% 72.6435%); + --color-warning-100: hsl(61.3343 29.4818% 70.1688%); + --color-warning-200: hsl(61.0154 29.5398% 65.2093%); + --color-warning-300: hsl(60.6851 29.6554% 60.2196%); + --color-warning-400: hsl(60.3454 29.8574% 55.1685%); + --color-warning-500: hsl(60 30.1961% 50%); + --color-warning-600: hsl(60 30.671% 43.1515%); + --color-warning-700: hsl(60 31.3039% 36.4909%); + --color-warning-800: hsl(60 32.1851% 30.0358%); + --color-warning-900: hsl(60 33.4882% 23.8077%); + --color-danger-content: hsl(0 100% 4.3052%); + --color-danger-50: hsl(8.2867 100% 76.3184%); + --color-danger-100: hsl(7.9087 100% 74.1471%); + --color-danger-200: hsl(7.0314 100% 69.7153%); + --color-danger-300: hsl(5.9169 100% 65.0332%); + --color-danger-400: hsl(4.3532 100% 59.6704%); + --color-danger-500: hsl(0 100% 50%); + --color-danger-600: hsl(0 100% 43.4908%); + --color-danger-700: hsl(0 100% 37.1603%); + --color-danger-800: hsl(0 100% 31.025%); + --color-danger-900: hsl(0 100% 25.1055%); + --color-surface-content: hsl(223.8136 0% 8.6104%); +} + +[data-theme="black"] { + color-scheme: dark; + --color-primary: hsl(0 0% 21.5686%); + --color-secondary: hsl(0 0% 21.5686%); + --color-accent: hsl(0 0% 21.5686%); + --color-surface-100: hsl(0 0% 0%); + --color-surface-200: hsl(0 0% 7.8431%); + --color-surface-300: hsl(0 0% 14.902%); + --color-surface-content: hsl(0 0% 83.9216%); + --color-neutral: hsl(0 0% 21.5686%); + --color-info: hsl(240 100% 50%); + --color-success: hsl(120 100% 25.098%); + --color-warning: hsl(60 100% 50%); + --color-danger: hsl(0 100% 50%); + --rounded-box: 0; + --rounded-btn: 0; + --rounded-badge: 0; + --animation-btn: 0; + --animation-input: 0; + --btn-focus-scale: 1; + --tab-radius: 0; + --color-primary-content: hsl(223.8136 0% 82.8083%); + --color-primary-50: hsl(223.8136 0% 54.3307%); + --color-primary-100: hsl(223.8136 0% 50.4525%); + --color-primary-200: hsl(223.8136 0% 42.8576%); + --color-primary-300: hsl(223.8136 0% 35.4946%); + --color-primary-400: hsl(223.8136 0% 28.3879%); + --color-primary-500: hsl(0 0% 21.5686%); + --color-primary-600: hsl(223.8136 0% 18.2285%); + --color-primary-700: hsl(223.8136 0% 14.9799%); + --color-primary-800: hsl(223.8136 0% 11.8316%); + --color-primary-900: hsl(223.8136 0% 8.7941%); + --color-secondary-content: hsl(223.8136 0% 82.8083%); + --color-secondary-50: hsl(223.8136 0% 54.3307%); + --color-secondary-100: hsl(223.8136 0% 50.4525%); + --color-secondary-200: hsl(223.8136 0% 42.8576%); + --color-secondary-300: hsl(223.8136 0% 35.4946%); + --color-secondary-400: hsl(223.8136 0% 28.3879%); + --color-secondary-500: hsl(0 0% 21.5686%); + --color-secondary-600: hsl(223.8136 0% 18.2285%); + --color-secondary-700: hsl(223.8136 0% 14.9799%); + --color-secondary-800: hsl(223.8136 0% 11.8316%); + --color-secondary-900: hsl(223.8136 0% 8.7941%); + --color-accent-content: hsl(223.8136 0% 82.8083%); + --color-accent-50: hsl(223.8136 0% 54.3307%); + --color-accent-100: hsl(223.8136 0% 50.4525%); + --color-accent-200: hsl(223.8136 0% 42.8576%); + --color-accent-300: hsl(223.8136 0% 35.4946%); + --color-accent-400: hsl(223.8136 0% 28.3879%); + --color-accent-500: hsl(0 0% 21.5686%); + --color-accent-600: hsl(223.8136 0% 18.2285%); + --color-accent-700: hsl(223.8136 0% 14.9799%); + --color-accent-800: hsl(223.8136 0% 11.8316%); + --color-accent-900: hsl(223.8136 0% 8.7941%); + --color-neutral-content: hsl(223.8136 0% 82.8083%); + --color-neutral-50: hsl(223.8136 0% 54.3307%); + --color-neutral-100: hsl(223.8136 0% 50.4525%); + --color-neutral-200: hsl(223.8136 0% 42.8576%); + --color-neutral-300: hsl(223.8136 0% 35.4946%); + --color-neutral-400: hsl(223.8136 0% 28.3879%); + --color-neutral-500: hsl(0 0% 21.5686%); + --color-neutral-600: hsl(223.8136 0% 18.2285%); + --color-neutral-700: hsl(223.8136 0% 14.9799%); + --color-neutral-800: hsl(223.8136 0% 11.8316%); + --color-neutral-900: hsl(223.8136 0% 8.7941%); + --color-info-content: hsl(217.6355 100% 88.8385%); + --color-info-50: hsl(220.1478 100% 70.0069%); + --color-info-100: hsl(220.6406 100% 67.3724%); + --color-info-200: hsl(221.8025 100% 62.1077%); + --color-info-300: hsl(223.3146 100% 56.7575%); + --color-info-400: hsl(225.4892 100% 50.9722%); + --color-info-500: hsl(240 100% 50%); + --color-info-600: hsl(240 100% 43.4908%); + --color-info-700: hsl(240 100% 37.1603%); + --color-info-800: hsl(240 100% 31.025%); + --color-info-900: hsl(240 100% 25.1055%); + --color-success-content: hsl(114.0582 29.7922% 85.8982%); + --color-success-50: hsl(114.9829 29.0112% 61.5926%); + --color-success-100: hsl(115.1825 28.9427% 58.1273%); + --color-success-200: hsl(115.6697 28.8898% 51.1462%); + --color-success-300: hsl(116.3298 36.9889% 43.9879%); + --color-success-400: hsl(117.3101 52.2408% 36.2837%); + --color-success-500: hsl(120 100% 25.098%); + --color-success-600: hsl(120 100% 21.6617%); + --color-success-700: hsl(120 100% 18.3196%); + --color-success-800: hsl(120 100% 15.0806%); + --color-success-900: hsl(120 100% 11.9556%); + --color-warning-content: hsl(60 100% 4.3052%); + --color-warning-50: hsl(60.675 100% 81.8925%); + --color-warning-100: hsl(60.5874 100% 79.9583%); + --color-warning-200: hsl(60.4193 100% 75.7757%); + --color-warning-300: hsl(60.2624 100% 70.9297%); + --color-warning-400: hsl(60.1197 100% 64.6815%); + --color-warning-500: hsl(60 100% 50%); + --color-warning-600: hsl(60 100% 43.4908%); + --color-warning-700: hsl(60 100% 37.1603%); + --color-warning-800: hsl(60 100% 31.025%); + --color-warning-900: hsl(60 100% 25.1055%); + --color-danger-content: hsl(0 100% 4.3052%); + --color-danger-50: hsl(8.2867 100% 76.3184%); + --color-danger-100: hsl(7.9087 100% 74.1471%); + --color-danger-200: hsl(7.0314 100% 69.7153%); + --color-danger-300: hsl(5.9169 100% 65.0332%); + --color-danger-400: hsl(4.3532 100% 59.6704%); + --color-danger-500: hsl(0 100% 50%); + --color-danger-600: hsl(0 100% 43.4908%); + --color-danger-700: hsl(0 100% 37.1603%); + --color-danger-800: hsl(0 100% 31.025%); + --color-danger-900: hsl(0 100% 25.1055%); +} + +[data-theme="luxury"] { + color-scheme: dark; + --color-primary: hsl(180 100% 100%); + --color-secondary: hsl(218.4 54.3478% 18.0392%); + --color-accent: hsl(318.6207 21.8045% 26.0784%); + --color-neutral: hsl(28.2353 100% 10%); + --color-neutral-content: hsl(44.3478 100% 81.9608%); + --color-surface-100: hsl(240 10% 3.9216%); + --color-surface-200: hsl(270 4.3478% 9.0196%); + --color-surface-300: hsl(270 2.1739% 18.0392%); + --color-surface-content: hsl(37.0833 67.2897% 58.0392%); + --color-info: hsl(202.3529 100% 70%); + --color-success: hsl(89.0066 61.6327% 51.9608%); + --color-warning: hsl(53.9063 68.8172% 63.5294%); + --color-danger: hsl(0 100% 71.7647%); + --color-primary-content: hsl(223.8136 0% 8.6104%); + --color-primary-50: hsl(180 100% 100%); + --color-primary-100: hsl(180 100% 100%); + --color-primary-200: hsl(180 100% 100%); + --color-primary-300: hsl(180 100% 100%); + --color-primary-400: hsl(180 100% 100%); + --color-primary-500: hsl(180 100% 100%); + --color-primary-600: hsl(223.8136 0% 86.9817%); + --color-primary-700: hsl(223.8136 0% 74.3206%); + --color-primary-800: hsl(223.8136 0% 62.0499%); + --color-primary-900: hsl(223.8136 0% 50.2111%); + --color-secondary-content: hsl(217.7182 14.6321% 82.1044%); + --color-secondary-50: hsl(217.7798 13.7575% 52.4196%); + --color-secondary-100: hsl(217.8017 14.5197% 48.3703%); + --color-secondary-200: hsl(217.865 19.5423% 40.4323%); + --color-secondary-300: hsl(217.9676 26.4833% 32.7223%); + --color-secondary-400: hsl(218.135 36.8301% 25.2563%); + --color-secondary-500: hsl(218.4 54.3478% 18.0392%); + --color-secondary-600: hsl(218.4 56.785% 15.1346%); + --color-secondary-700: hsl(218.4 60.2584% 12.3096%); + --color-secondary-800: hsl(218.4882 65.3329% 9.5862%); + --color-secondary-900: hsl(219.7022 70.5247% 7.1001%); + --color-accent-content: hsl(321.804 9.1751% 84.1009%); + --color-accent-50: hsl(320.9429 8.6664% 57.518%); + --color-accent-100: hsl(320.7772 8.5791% 53.8623%); + --color-accent-200: hsl(320.398 9.5894% 46.6666%); + --color-accent-300: hsl(319.937 12.4622% 39.6322%); + --color-accent-400: hsl(319.3622 16.3102% 32.7674%); + --color-accent-500: hsl(318.6207 21.8045% 26.0784%); + --color-accent-600: hsl(318.6207 22.4717% 22.1818%); + --color-accent-700: hsl(318.6207 23.3916% 18.392%); + --color-accent-800: hsl(318.6207 24.7353% 14.7192%); + --color-accent-900: hsl(318.6207 26.8688% 11.1755%); + --color-neutral-50: hsl(26.1584 13.4946% 47.6189%); + --color-neutral-100: hsl(26.2321 15.9644% 43.1971%); + --color-neutral-200: hsl(26.4349 22.4924% 34.5443%); + --color-neutral-300: hsl(26.7889 32.7619% 26.1407%); + --color-neutral-400: hsl(27.6144 52.3033% 17.904%); + --color-neutral-500: hsl(28.2353 100% 10%); + --color-neutral-600: hsl(26.9561 100% 8.4267%); + --color-neutral-700: hsl(25.1523 100% 6.8966%); + --color-neutral-800: hsl(22.431 100% 5.4136%); + --color-neutral-900: hsl(19.2002 100% 3.9829%); + --color-info-content: hsl(204.7862 72.4887% 4.9919%); + --color-info-50: hsl(203.0847 100% 84.459%); + --color-info-100: hsl(203.0649 100% 82.9823%); + --color-info-200: hsl(202.9944 100% 79.9667%); + --color-info-300: hsl(202.87 100% 76.8396%); + --color-info-400: hsl(202.6692 100% 73.5484%); + --color-info-500: hsl(202.3529 100% 70%); + --color-info-600: hsl(202.3529 66.8883% 60.6836%); + --color-info-700: hsl(202.3529 46.9184% 51.6228%); + --color-info-800: hsl(202.3529 44.8363% 42.8414%); + --color-info-900: hsl(202.3529 46.0938% 34.3691%); + --color-success-content: hsl(98.177 87.1227% 3.2841%); + --color-success-50: hsl(93.8231 60.0454% 76.0657%); + --color-success-100: hsl(93.5558 59.9767% 73.7592%); + --color-success-200: hsl(92.92 59.934% 69.0106%); + --color-success-300: hsl(92.0867 60.0729% 63.9948%); + --color-success-400: hsl(90.9122 60.5218% 58.5062%); + --color-success-500: hsl(89.0066 61.6327% 51.9608%); + --color-success-600: hsl(89.0066 57.843% 44.8703%); + --color-success-700: hsl(89.0066 58.9899% 37.9744%); + --color-success-800: hsl(89.0066 60.5839% 31.2912%); + --color-success-900: hsl(89.0066 62.9346% 24.8431%); + --color-warning-content: hsl(52.979 69.7687% 4.1759%); + --color-warning-50: hsl(54.4726 66.0555% 80.9981%); + --color-warning-100: hsl(54.3766 66.2754% 79.208%); + --color-warning-200: hsl(54.2021 66.7586% 75.5598%); + --color-warning-300: hsl(54.0567 67.3172% 71.7851%); + --color-warning-400: hsl(53.9517 67.9838% 67.8163%); + --color-warning-500: hsl(53.9063 68.8172% 63.5294%); + --color-warning-600: hsl(53.9063 48.9036% 55.0114%); + --color-warning-700: hsl(53.9062 40.638% 46.7272%); + --color-warning-800: hsl(53.9063 41.5259% 38.6984%); + --color-warning-900: hsl(53.9062 42.8191% 30.9522%); + --color-danger-content: hsl(0 67.9518% 5.1267%); + --color-danger-50: hsl(3.1601 100% 84.2905%); + --color-danger-100: hsl(2.914 100% 82.8904%); + --color-danger-200: hsl(2.366 100% 80.1005%); + --color-danger-300: hsl(1.7245 100% 77.3209%); + --color-danger-400: hsl(0.955 100% 74.5454%); + --color-danger-500: hsl(0 100% 71.7647%); + --color-danger-600: hsl(0 65.5321% 62.2305%); + --color-danger-700: hsl(0 45.4118% 52.958%); + --color-danger-800: hsl(0 41.1145% 43.9713%); + --color-danger-900: hsl(0 42.2372% 35.3009%); +} + +[data-theme="dracula"] { + color-scheme: dark; + --color-primary: hsl(325.5224 100% 73.7255%); + --color-secondary: hsl(264.7059 89.4737% 77.6471%); + --color-accent: hsl(31.0204 100% 71.1765%); + --color-neutral: hsl(229.5652 15.0327% 30%); + --color-surface-100: hsl(231.4286 14.8936% 18.4314%); + --color-surface-content: hsl(60 30% 96.0784%); + --color-info: hsl(190.5263 96.6102% 76.8627%); + --color-success: hsl(135.1765 94.4444% 64.7059%); + --color-warning: hsl(64.9091 91.6667% 76.4706%); + --color-danger: hsl(0 100% 66.6667%); + --color-primary-content: hsl(327.0388 62.6652% 5.2933%); + --color-primary-50: hsl(326.4622 100% 86.069%); + --color-primary-100: hsl(326.3986 100% 84.7655%); + --color-primary-200: hsl(326.2484 100% 82.1233%); + --color-primary-300: hsl(326.0609 100% 79.4204%); + --color-primary-400: hsl(325.8246 100% 76.6332%); + --color-primary-500: hsl(325.5224 100% 73.7255%); + --color-primary-600: hsl(325.5224 63.8888% 63.9493%); + --color-primary-700: hsl(325.5224 43.6342% 54.4415%); + --color-primary-800: hsl(325.5224 37.1973% 45.2268%); + --color-primary-900: hsl(325.5224 38.1841% 36.3364%); + --color-secondary-content: hsl(264.2383 46.6781% 5.6557%); + --color-secondary-50: hsl(262.5555 95.8176% 88.2425%); + --color-secondary-100: hsl(262.7658 95.0498% 87.1141%); + --color-secondary-200: hsl(263.2046 93.562% 84.824%); + --color-secondary-300: hsl(263.6709 92.1368% 82.4865%); + --color-secondary-400: hsl(264.1694 90.7738% 80.0966%); + --color-secondary-500: hsl(264.7059 89.4737% 77.6471%); + --color-secondary-600: hsl(264.7059 53.7579% 67.387%); + --color-secondary-700: hsl(264.7059 35.5279% 57.4085%); + --color-secondary-800: hsl(264.7059 26.8251% 47.7377%); + --color-secondary-900: hsl(264.7059 27.4983% 38.4072%); + --color-accent-content: hsl(28.3535 69.4897% 5.0802%); + --color-accent-50: hsl(30.498 100% 84.7445%); + --color-accent-100: hsl(30.5044 100% 83.3204%); + --color-accent-200: hsl(30.5434 100% 80.4324%); + --color-accent-300: hsl(30.6279 100% 77.4722%); + --color-accent-400: hsl(30.7767 100% 74.4056%); + --color-accent-500: hsl(31.0204 100% 71.1765%); + --color-accent-600: hsl(31.0204 65.9964% 61.7149%); + --color-accent-700: hsl(31.0204 45.9234% 52.5129%); + --color-accent-800: hsl(31.0204 42.3337% 43.5947%); + --color-accent-900: hsl(31.0204 43.4999% 34.9903%); + --color-neutral-content: hsl(228.5119 7.5426% 84.9164%); + --color-neutral-50: hsl(228.7476 7.1804% 59.7062%); + --color-neutral-100: hsl(228.7972 7.1174% 56.2417%); + --color-neutral-200: hsl(228.916 7.1422% 49.4266%); + --color-neutral-300: hsl(229.07 9.1319% 42.7722%); + --color-neutral-400: hsl(229.2764 11.6705% 36.2914%); + --color-neutral-500: hsl(229.5652 15.0327% 30%); + --color-neutral-600: hsl(229.5652 15.4309% 25.6194%); + --color-neutral-700: hsl(229.5652 15.9749% 21.3591%); + --color-neutral-800: hsl(229.5652 16.7588% 17.2301%); + --color-neutral-900: hsl(229.5652 17.9783% 13.2464%); + --color-info-content: hsl(190.7831 52.2364% 5.587%); + --color-info-50: hsl(190.9724 97.5291% 88.1319%); + --color-info-100: hsl(190.9432 97.4127% 86.9765%); + --color-info-200: hsl(190.8727 97.1892% 84.6091%); + --color-info-300: hsl(190.7831 96.9793% 82.1519%); + --color-info-400: hsl(190.6699 96.7852% 79.5812%); + --color-info-500: hsl(190.5263 96.6102% 76.8627%); + --color-info-600: hsl(190.5263 58.8419% 66.6995%); + --color-info-700: hsl(190.5263 39.162% 56.8151%); + --color-info-800: hsl(190.5263 30.2997% 47.2355%); + --color-info-900: hsl(190.5263 31.0684% 37.9931%); + --color-success-content: hsl(129.7201 81.9304% 4.5887%); + --color-success-50: hsl(128.2448 98.0719% 84.1559%); + --color-success-100: hsl(128.6906 97.5433% 82.4676%); + --color-success-200: hsl(129.7163 96.5603% 78.8817%); + --color-success-300: hsl(130.9926 95.6897% 74.9196%); + --color-success-400: hsl(132.6797 94.9614% 70.3687%); + --color-success-500: hsl(135.1765 94.4444% 64.7059%); + --color-success-600: hsl(135.1765 66.4739% 56.0427%); + --color-success-700: hsl(135.1765 52.9635% 47.6173%); + --color-success-800: hsl(135.1765 54.0986% 39.4517%); + --color-success-900: hsl(135.1765 55.7502% 31.5734%); + --color-warning-content: hsl(65.024 50.978% 5.5294%); + --color-warning-50: hsl(66.4482 93.4042% 87.9702%); + --color-warning-100: hsl(66.2798 93.1772% 86.7927%); + --color-warning-200: hsl(65.9416 92.7455% 84.3782%); + --color-warning-300: hsl(65.601 92.3465% 81.8699%); + --color-warning-400: hsl(65.2573 91.9847% 79.2451%); + --color-warning-500: hsl(64.9091 91.6667% 76.4706%); + --color-warning-600: hsl(64.9091 56.1971% 66.3557%); + --color-warning-700: hsl(64.9091 37.5301% 56.5184%); + --color-warning-800: hsl(64.9091 29.3928% 46.9844%); + --color-warning-900: hsl(64.9091 30.1426% 37.786%); + --color-danger-content: hsl(360 80.335% 4.7747%); + --color-danger-50: hsl(4.5218 100% 81.6113%); + --color-danger-100: hsl(4.2119 100% 79.9674%); + --color-danger-200: hsl(3.5048 100% 76.6825%); + --color-danger-300: hsl(2.6403 100% 73.3893%); + --color-danger-400: hsl(1.5334 100% 70.0648%); + --color-danger-500: hsl(0 100% 66.6667%); + --color-danger-600: hsl(360 69.1789% 57.7615%); + --color-danger-700: hsl(360 51.3633% 49.1008%); + --color-danger-800: hsl(0 52.4301% 40.7072%); + --color-danger-900: hsl(360 53.98% 32.6088%); + --color-surface-200: hsl(231.4286 15.3279% 16.356%); + --color-surface-300: hsl(231.4286 15.8335% 14.4607%); +} + +[data-theme="cmyk"] { + color-scheme: light; + --color-primary: hsl(202.7219 83.2512% 60.1961%); + --color-secondary: hsl(335.25 77.6699% 59.6078%); + --color-accent: hsl(56.1951 100% 59.8039%); + --color-neutral: hsl(0 0% 10.1961%); + --color-surface-100: hsl(180 100% 100%); + --color-info: hsl(192.2034 48.3607% 52.1569%); + --color-success: hsl(291.0638 48.4536% 38.0392%); + --color-warning: hsl(25.0267 84.6154% 56.6667%); + --color-danger: hsl(3.956 80.531% 55.6863%); + --color-primary-content: hsl(208.3528 85.2384% 4.1669%); + --color-primary-50: hsl(204.8062 85.1282% 79.9227%); + --color-primary-100: hsl(204.6929 84.818% 77.9852%); + --color-primary-200: hsl(204.4186 84.2456% 74.0044%); + --color-primary-300: hsl(204.0519 83.757% 69.8252%); + --color-primary-400: hsl(203.5323 83.3938% 65.3218%); + --color-primary-500: hsl(202.7219 83.2512% 60.1961%); + --color-primary-600: hsl(202.7219 60.6301% 52.0894%); + --color-primary-700: hsl(202.7219 56.716% 44.2052%); + --color-primary-800: hsl(202.7219 58.0275% 36.5641%); + --color-primary-900: hsl(202.7219 59.9436% 29.1919%); + --color-secondary-content: hsl(342.5628 83.408% 4.0369%); + --color-secondary-50: hsl(340.9226 90.4677% 80.5355%); + --color-secondary-100: hsl(340.4917 88.7202% 78.513%); + --color-secondary-200: hsl(339.5367 85.4522% 74.3085%); + --color-secondary-300: hsl(338.4159 82.4897% 69.8458%); + --color-secondary-400: hsl(337.0457 79.8633% 65.0235%); + --color-secondary-500: hsl(335.25 77.6699% 59.6078%); + --color-secondary-600: hsl(335.25 56.79% 51.5738%); + --color-secondary-700: hsl(335.25 54.2417% 43.7602%); + --color-secondary-800: hsl(335.25 55.509% 36.1875%); + --color-secondary-900: hsl(335.25 57.3617% 28.8813%); + --color-accent-content: hsl(55.0595 92.6247% 4.47%); + --color-accent-50: hsl(56.6701 98.3135% 82.318%); + --color-accent-100: hsl(56.5387 98.53% 80.5085%); + --color-accent-200: hsl(56.3105 98.9455% 76.6664%); + --color-accent-300: hsl(56.1421 99.3344% 72.372%); + --color-accent-400: hsl(56.067 99.6905% 67.2295%); + --color-accent-500: hsl(56.1951 100% 59.8039%); + --color-accent-600: hsl(56.1951 73.0214% 51.7456%); + --color-accent-700: hsl(56.1951 69.2624% 43.9085%); + --color-accent-800: hsl(56.1951 70.8751% 36.313%); + --color-accent-900: hsl(56.1951 73.2321% 28.9848%); + --color-neutral-content: hsl(223.8136 0% 79.7895%); + --color-neutral-50: hsl(223.8136 0% 46.7263%); + --color-neutral-100: hsl(223.8136 0% 42.2843%); + --color-neutral-200: hsl(223.8136 0% 33.6486%); + --color-neutral-300: hsl(223.8136 0% 25.3798%); + --color-neutral-400: hsl(223.8136 0% 17.5346%); + --color-neutral-500: hsl(0 0% 10.1961%); + --color-neutral-600: hsl(223.8136 0% 8.2592%); + --color-neutral-700: hsl(223.8136 0% 6.3755%); + --color-neutral-800: hsl(223.8136 0% 4.5499%); + --color-neutral-900: hsl(223.8136 0% 2.8828%); + --color-info-content: hsl(196.4254 76.4613% 3.0069%); + --color-info-50: hsl(193.4024 46.4431% 74.7537%); + --color-info-100: hsl(193.3396 46.5097% 72.4102%); + --color-info-200: hsl(193.1827 46.7061% 67.6594%); + --color-info-300: hsl(192.9679 47.0206% 62.7795%); + --color-info-400: hsl(192.6633 47.5227% 57.6785%); + --color-info-500: hsl(192.2034 48.3607% 52.1569%); + --color-info-600: hsl(192.2034 45.0293% 45.0422%); + --color-info-700: hsl(192.2034 45.9187% 38.1228%); + --color-info-800: hsl(192.2034 47.1545% 31.4168%); + --color-info-900: hsl(192.2034 48.9765% 24.9467%); + --color-success-content: hsl(291.4769 31.417% 87.5815%); + --color-success-50: hsl(291.1507 30.2435% 66.1403%); + --color-success-100: hsl(291.105 30.0895% 63.0941%); + --color-success-200: hsl(291.0214 29.8106% 56.9945%); + --color-success-300: hsl(290.9605 29.5988% 50.8537%); + --color-success-400: hsl(290.9507 36.6721% 44.5983%); + --color-success-500: hsl(291.0638 48.4536% 38.0392%); + --color-success-600: hsl(291.0638 49.4603% 32.6666%); + --color-success-700: hsl(291.0638 50.8174% 27.4415%); + --color-success-800: hsl(291.0638 52.7375% 22.3775%); + --color-success-900: hsl(291.0638 55.6438% 17.4916%); + --color-warning-content: hsl(15.6727 91.5104% 4.0305%); + --color-warning-50: hsl(22.4417 90.6782% 78.4351%); + --color-warning-100: hsl(22.5456 89.854% 76.3321%); + --color-warning-200: hsl(22.8086 88.2823% 72.0044%); + --color-warning-300: hsl(23.1937 86.8337% 67.4467%); + --color-warning-400: hsl(23.8196 85.561% 62.4934%); + --color-warning-500: hsl(25.0267 84.6154% 56.6667%); + --color-warning-600: hsl(25.0267 65.6022% 48.9955%); + --color-warning-700: hsl(25.0267 66.7915% 41.5349%); + --color-warning-800: hsl(25.0267 68.4377% 34.3043%); + --color-warning-900: hsl(25.0267 70.8517% 27.3282%); + --color-danger-content: hsl(1.4472 91.2249% 3.8993%); + --color-danger-50: hsl(7.5281 94.4656% 77.7269%); + --color-danger-100: hsl(7.3341 92.6594% 75.5053%); + --color-danger-200: hsl(6.8556 89.2314% 70.9487%); + --color-danger-300: hsl(6.2143 86.0441% 66.2078%); + --color-danger-400: hsl(5.3207 83.1156% 61.1974%); + --color-danger-500: hsl(3.956 80.531% 55.6863%); + --color-danger-600: hsl(3.956 64.988% 48.1361%); + --color-danger-700: hsl(3.956 66.1876% 40.7931%); + --color-danger-800: hsl(3.956 67.8494% 33.6766%); + --color-danger-900: hsl(3.956 70.2888% 26.8105%); + --color-surface-200: hsl(223.8136 0.0001% 90.851%); + --color-surface-300: hsl(223.8136 0% 82.4954%); + --color-surface-content: hsl(223.8136 0% 8.6104%); +} + +[data-theme="autumn"] { + color-scheme: light; + --color-primary: hsl(344.2336 95.8042% 28.0392%); + --color-secondary: hsl(0.4444 63.3803% 58.2353%); + --color-accent: hsl(27.4766 56.0209% 62.549%); + --color-neutral: hsl(22.1053 17.1171% 43.5294%); + --color-surface-100: hsl(0 0% 94.5098%); + --color-info: hsl(186.9421 47.8261% 49.6078%); + --color-success: hsl(164.5946 33.6364% 43.1373%); + --color-warning: hsl(30.1408 84.1897% 49.6078%); + --color-danger: hsl(354.4845 100% 41.642%); + --color-primary-content: hsl(359.7822 43.9393% 87.1844%); + --color-primary-50: hsl(358.0209 38.9348% 64.1187%); + --color-primary-100: hsl(357.6026 38.2676% 60.7289%); + --color-primary-200: hsl(356.5219 37.0114% 53.8268%); + --color-primary-300: hsl(354.9098 41.0895% 46.6607%); + --color-primary-400: hsl(352.1432 55.5307% 38.8986%); + --color-primary-500: hsl(344.2336 95.8042% 28.0392%); + --color-primary-600: hsl(344.7131 96.4491% 24.1531%); + --color-primary-700: hsl(345.4076 97.0474% 20.401%); + --color-primary-800: hsl(346.432 97.5965% 16.789%); + --color-primary-900: hsl(348.0043 98.093% 13.3252%); + --color-secondary-content: hsl(0.2272 77.0618% 3.7077%); + --color-secondary-50: hsl(3.9709 73.8854% 77.9902%); + --color-secondary-100: hsl(3.7621 72.6137% 75.876%); + --color-secondary-200: hsl(3.2584 70.15% 71.5931%); + --color-secondary-300: hsl(2.6012 67.7884% 67.2339%); + --color-secondary-400: hsl(1.714 65.5289% 62.7884%); + --color-secondary-500: hsl(0.4444 63.3803% 58.2353%); + --color-secondary-600: hsl(0.4444 46.7549% 50.3706%); + --color-secondary-700: hsl(0.4444 46.8789% 42.7217%); + --color-secondary-800: hsl(0.4444 48.0015% 35.3087%); + --color-secondary-900: hsl(0.4444 49.6448% 28.1565%); + --color-accent-content: hsl(23.1592 62.2725% 3.9486%); + --color-accent-50: hsl(26.6918 57.9104% 79.6627%); + --color-accent-100: hsl(26.749 57.6731% 77.7967%); + --color-accent-200: hsl(26.8783 57.2123% 74.0475%); + --color-accent-300: hsl(27.034 56.7757% 70.2672%); + --color-accent-400: hsl(27.2274 56.3733% 66.4418%); + --color-accent-500: hsl(27.4766 56.0209% 62.549%); + --color-accent-600: hsl(27.4766 40.114% 54.152%); + --color-accent-700: hsl(27.4766 34.5188% 45.9854%); + --color-accent-800: hsl(27.4766 35.2854% 38.0707%); + --color-accent-900: hsl(27.4766 36.403% 30.4344%); + --color-neutral-content: hsl(21.7051 14.4479% 88.1294%); + --color-neutral-50: hsl(21.8336 13.9743% 68.0144%); + --color-neutral-100: hsl(21.8561 13.8981% 65.2139%); + --color-neutral-200: hsl(21.9052 13.7385% 59.6709%); + --color-neutral-300: hsl(21.9613 13.5684% 54.2074%); + --color-neutral-400: hsl(22.0268 14.0309% 48.8261%); + --color-neutral-500: hsl(22.1053 17.1171% 43.5294%); + --color-neutral-600: hsl(22.1053 17.4271% 37.4793%); + --color-neutral-700: hsl(22.1053 17.8424% 31.5953%); + --color-neutral-800: hsl(22.1053 18.425% 25.8927%); + --color-neutral-900: hsl(22.1053 19.296% 20.3908%); + --color-info-content: hsl(189.8329 79.9138% 2.8035%); + --color-info-50: hsl(187.6316 43.8366% 73.8052%); + --color-info-100: hsl(187.6134 43.987% 71.3575%); + --color-info-200: hsl(187.5526 44.3735% 66.3754%); + --color-info-300: hsl(187.4455 44.9229% 61.2154%); + --color-info-400: hsl(187.2636 45.7411% 55.739%); + --color-info-500: hsl(186.9421 47.8261% 49.6078%); + --color-info-600: hsl(186.9421 48.5843% 42.8077%); + --color-info-700: hsl(186.9421 49.5951% 36.1942%); + --color-info-800: hsl(186.9421 51.0029% 29.7847%); + --color-info-900: hsl(186.9421 53.0861% 23.6006%); + --color-success-content: hsl(159.7703 62.82% 1.8522%); + --color-success-50: hsl(161.7205 24.1199% 68.9039%); + --color-success-100: hsl(161.9382 24.1719% 66.1021%); + --color-success-200: hsl(162.4256 24.32% 60.488%); + --color-success-300: hsl(163.0019 24.5517% 54.8343%); + --color-success-400: hsl(163.703 25.8435% 49.0873%); + --color-success-500: hsl(164.5946 33.6364% 43.1373%); + --color-success-600: hsl(164.5946 34.2511% 37.1356%); + --color-success-700: hsl(164.5946 35.0751% 31.2986%); + --color-success-800: hsl(164.5946 36.2317% 25.6416%); + --color-success-900: hsl(164.5946 37.962% 20.1837%); + --color-warning-content: hsl(17.2366 98.0793% 3.7644%); + --color-warning-50: hsl(25.1016 86.5844% 76.4303%); + --color-warning-100: hsl(25.2458 85.907% 74.1214%); + --color-warning-200: hsl(25.625 84.6391% 69.3357%); + --color-warning-300: hsl(26.2144 83.5325% 64.1965%); + --color-warning-400: hsl(27.2725 82.7199% 58.3212%); + --color-warning-500: hsl(30.1408 84.1897% 49.6078%); + --color-warning-600: hsl(30.1408 85.5245% 42.8077%); + --color-warning-700: hsl(30.1408 87.3037% 36.1942%); + --color-warning-800: hsl(30.1092 89.6017% 29.813%); + --color-warning-900: hsl(29.8634 91.7987% 23.8037%); + --color-danger-content: hsl(4.986 99.3475% 90.8534%); + --color-danger-50: hsl(3.2054 83.4371% 73.2191%); + --color-danger-100: hsl(2.7424 81.4951% 70.5394%); + --color-danger-200: hsl(1.487 77.8227% 65.0369%); + --color-danger-300: hsl(359.4121 74.6315% 58.9829%); + --color-danger-400: hsl(354.9466 73.2158% 49.998%); + --color-danger-500: hsl(354.4845 100% 41.642%); + --color-danger-600: hsl(354.9957 100% 36.1642%); + --color-danger-700: hsl(355.6672 100% 30.8367%); + --color-danger-800: hsl(356.4983 100% 25.6735%); + --color-danger-900: hsl(357.264 100% 20.692%); + --color-surface-200: hsl(223.8136 0% 85.8369%); + --color-surface-300: hsl(223.8136 0% 77.9161%); + --color-surface-content: hsl(223.8136 0% 7.8761%); +} + +[data-theme="business"] { + color-scheme: dark; + --color-primary: hsl(210 64.1026% 30.5882%); + --color-secondary: hsl(200 12.931% 54.5098%); + --color-accent: hsl(12.5153 79.5122% 59.8039%); + --color-neutral: hsl(212.7273 13.5802% 15.8824%); + --color-surface-100: hsl(0 0% 12.549%); + --color-info: hsl(199.1549 100% 41.7647%); + --color-success: hsl(144 30.9735% 55.6863%); + --color-warning: hsl(39.2308 64.3564% 60.3922%); + --color-danger: hsl(6.3415 55.6561% 43.3333%); + --rounded-box: 0.25rem; + --rounded-btn: 0.125rem; + --rounded-badge: 0.125rem; + --color-primary-content: hsl(211.9142 30.4685% 85.6944%); + --color-primary-50: hsl(211.6742 29.2018% 61.3824%); + --color-primary-100: hsl(211.623 29.0154% 57.9803%); + --color-primary-200: hsl(211.4902 28.6516% 51.2171%); + --color-primary-300: hsl(211.2823 35.3524% 44.4821%); + --color-primary-400: hsl(210.9011 46.4518% 37.6981%); + --color-primary-500: hsl(210 64.1026% 30.5882%); + --color-primary-600: hsl(210 65.7672% 26.1351%); + --color-primary-700: hsl(210 68.0384% 21.8041%); + --color-primary-800: hsl(210 71.3057% 17.6067%); + --color-primary-900: hsl(210.055 76.1295% 13.576%); + --color-secondary-content: hsl(201.8357 23.1727% 2.7116%); + --color-secondary-50: hsl(200.2005 13.2026% 74.4186%); + --color-secondary-100: hsl(200.1838 13.1735% 72.1591%); + --color-secondary-200: hsl(200.147 13.1143% 67.6749%); + --color-secondary-300: hsl(200.105 13.0539% 63.238%); + --color-secondary-400: hsl(200.0566 12.9926% 58.8494%); + --color-secondary-500: hsl(200 12.931% 54.5098%); + --color-secondary-600: hsl(200 10.9468% 47.1048%); + --color-secondary-700: hsl(200 11.1534% 39.903%); + --color-secondary-800: hsl(200 11.4398% 32.9233%); + --color-secondary-900: hsl(200 11.8609% 26.1892%); + --color-accent-content: hsl(7.0767 84.0379% 4.0801%); + --color-accent-50: hsl(12.8008 89.374% 79.2809%); + --color-accent-100: hsl(12.7671 88.1328% 77.2657%); + --color-accent-200: hsl(12.6881 85.7511% 73.1554%); + --color-accent-300: hsl(12.6003 83.5063% 68.9163%); + --color-accent-400: hsl(12.5239 81.4129% 64.5003%); + --color-accent-500: hsl(12.5153 79.5122% 59.8039%); + --color-accent-600: hsl(12.5153 58.0609% 51.7456%); + --color-accent-700: hsl(12.5153 55.072% 43.9085%); + --color-accent-800: hsl(12.5153 56.3543% 36.313%); + --color-accent-900: hsl(12.5153 58.2285% 28.9848%); + --color-neutral-content: hsl(212.8863 3.0767% 81.3508%); + --color-neutral-50: hsl(212.8512 2.9246% 50.6328%); + --color-neutral-100: hsl(212.844 3.3363% 46.4743%); + --color-neutral-200: hsl(212.8265 4.5557% 38.3558%); + --color-neutral-300: hsl(212.8038 6.2849% 30.5253%); + --color-neutral-400: hsl(212.7729 8.9406% 23.0183%); + --color-neutral-500: hsl(212.7273 13.5802% 15.8824%); + --color-neutral-600: hsl(212.7273 14.2762% 13.2438%); + --color-neutral-700: hsl(212.7273 15.2829% 10.6777%); + --color-neutral-800: hsl(212.7273 16.8605% 8.1908%); + --color-neutral-900: hsl(212.7273 19.6668% 5.7913%); + --color-info-content: hsl(212.5951 100% 3.2038%); + --color-info-50: hsl(204.9772 68.8424% 73.5398%); + --color-info-100: hsl(204.8233 68.6424% 70.9989%); + --color-info-200: hsl(204.4219 68.3451% 65.7488%); + --color-info-300: hsl(203.81 68.2709% 60.1164%); + --color-info-400: hsl(202.7269 68.6838% 53.5988%); + --color-info-500: hsl(199.1549 100% 41.7647%); + --color-info-600: hsl(199.3341 100% 36.2717%); + --color-info-700: hsl(199.5695 100% 30.9295%); + --color-info-800: hsl(199.8907 100% 25.752%); + --color-info-900: hsl(200.3526 100% 20.7567%); + --color-success-content: hsl(139.6933 49.6712% 3.0195%); + --color-success-50: hsl(140.9887 30.3385% 75.8203%); + --color-success-100: hsl(141.2316 30.3576% 73.6196%); + --color-success-200: hsl(141.7691 30.4224% 69.2043%); + --color-success-300: hsl(142.3905 30.533% 64.7588%); + --color-success-400: hsl(143.1213 30.7072% 60.2634%); + --color-success-500: hsl(144 30.9735% 55.6863%); + --color-success-600: hsl(144 24.9954% 48.1361%); + --color-success-700: hsl(144 25.4568% 40.7931%); + --color-success-800: hsl(144 26.0959% 33.6766%); + --color-success-900: hsl(144 27.0342% 26.8105%); + --color-warning-content: hsl(35.11 73.3698% 3.8774%); + --color-warning-50: hsl(38.1926 64.0169% 78.9784%); + --color-warning-100: hsl(38.2426 63.9819% 77.0255%); + --color-warning-200: hsl(38.3737 63.9456% 73.0711%); + --color-warning-300: hsl(38.5606 63.9709% 69.024%); + --color-warning-400: hsl(38.8302 64.0888% 64.8309%); + --color-warning-500: hsl(39.2308 64.3564% 60.3922%); + --color-warning-600: hsl(39.2308 46.8064% 52.2613%); + --color-warning-700: hsl(39.2308 43.4818% 44.3536%); + --color-warning-800: hsl(39.2308 44.4838% 36.6897%); + --color-warning-900: hsl(39.2308 45.9475% 29.2955%); + --color-danger-content: hsl(9.0406 53.9346% 88.9946%); + --color-danger-50: hsl(8.5775 48.7104% 69.4418%); + --color-danger-100: hsl(8.4597 47.9787% 66.6165%); + --color-danger-200: hsl(8.162 46.5316% 60.9343%); + --color-danger-300: hsl(7.7535 45.1181% 55.1946%); + --color-danger-400: hsl(7.1801 44.9039% 49.3597%); + --color-danger-500: hsl(6.3415 55.6561% 43.3333%); + --color-danger-600: hsl(6.3415 56.6686% 37.3075%); + --color-danger-700: hsl(6.3415 58.0255% 31.447%); + --color-danger-800: hsl(6.3415 59.9295% 25.7672%); + --color-danger-900: hsl(6.3415 62.777% 20.2873%); + --color-surface-200: hsl(223.8136 0% 10.9838%); + --color-surface-300: hsl(223.8136 0% 9.5543%); + --color-surface-content: hsl(223.8136 0% 80.4409%); +} + +[data-theme="acid"] { + color-scheme: light; + --color-primary: hsl(300 100% 50%); + --color-secondary: hsl(25.9816 100% 50%); + --color-accent: hsl(73.0318 100% 50%); + --color-neutral: hsl(254.0153 97.4904% 16.1015%); + --color-surface-100: hsl(0 0% 98.0392%); + --color-info: hsl(210.0636 100% 50%); + --color-success: hsl(152.4739 100% 50%); + --color-warning: hsl(53.2818 100% 50%); + --color-danger: hsl(0 100% 50%); + --rounded-box: 1.25rem; + --rounded-btn: 1rem; + --rounded-badge: 1rem; + --tab-radius: 0.7rem; + --color-primary-content: hsl(303.7094 100% 4.8138%); + --color-primary-50: hsl(300 100% 79.7412%); + --color-primary-100: hsl(300 100% 77.575%); + --color-primary-200: hsl(300 100% 72.8384%); + --color-primary-300: hsl(300 100% 67.1361%); + --color-primary-400: hsl(300 100% 58.5001%); + --color-primary-500: hsl(300 100% 50%); + --color-primary-600: hsl(302.4994 100% 46.824%); + --color-primary-700: hsl(302.5229 100% 40.0371%); + --color-primary-800: hsl(302.5548 100% 33.4595%); + --color-primary-900: hsl(302.6002 100% 27.1134%); + --color-secondary-content: hsl(10.1311 100% 4.8114%); + --color-secondary-50: hsl(23.6927 100% 76.2996%); + --color-secondary-100: hsl(23.7165 100% 73.9684%); + --color-secondary-200: hsl(23.9438 100% 69.0094%); + --color-secondary-300: hsl(24.6847 100% 63.2298%); + --color-secondary-400: hsl(27.6825 100% 53.8578%); + --color-secondary-500: hsl(25.9816 100% 50%); + --color-secondary-600: hsl(23.8934 100% 46.8088%); + --color-secondary-700: hsl(23.5537 100% 40.024%); + --color-secondary-800: hsl(23.0931 100% 33.4485%); + --color-secondary-900: hsl(22.4368 100% 27.1043%); + --color-accent-content: hsl(80.5651 100% 4.3404%); + --color-accent-50: hsl(77.0177 100% 78.2827%); + --color-accent-100: hsl(76.637 100% 75.8468%); + --color-accent-200: hsl(75.6887 100% 70.3186%); + --color-accent-300: hsl(74.2299 100% 62.8551%); + --color-accent-400: hsl(71.8109 100% 50%); + --color-accent-500: hsl(73.0318 100% 50%); + --color-accent-600: hsl(73.3808 100% 43.7215%); + --color-accent-700: hsl(73.5156 100% 37.3594%); + --color-accent-800: hsl(73.6988 100% 31.1935%); + --color-accent-900: hsl(73.9603 100% 25.2445%); + --color-neutral-content: hsl(231.8127 23.4749% 82.2725%); + --color-neutral-50: hsl(233.6449 21.0781% 52.7408%); + --color-neutral-100: hsl(234.1486 21.7398% 48.7122%); + --color-neutral-200: hsl(235.5731 28.5165% 40.8393%); + --color-neutral-300: hsl(238.0264 37.1684% 33.2711%); + --color-neutral-400: hsl(242.9395 51.9839% 25.4939%); + --color-neutral-500: hsl(254.0153 97.4904% 16.1015%); + --color-neutral-600: hsl(252.9572 97.8569% 13.7455%); + --color-neutral-700: hsl(251.4827 98.1952% 11.4635%); + --color-neutral-800: hsl(249.5473 98.5033% 9.2603%); + --color-neutral-900: hsl(247.774 98.7779% 7.1418%); + --color-info-content: hsl(225.0408 100% 4.4164%); + --color-info-50: hsl(210.0186 100% 74.1831%); + --color-info-100: hsl(209.9793 100% 71.6469%); + --color-info-200: hsl(209.6887 100% 66.2016%); + --color-info-300: hsl(208.6982 100% 59.4997%); + --color-info-400: hsl(206.562 100% 50%); + --color-info-500: hsl(210.0636 100% 50%); + --color-info-600: hsl(210.7877 100% 44.2196%); + --color-info-700: hsl(211.0945 100% 37.7893%); + --color-info-800: hsl(211.511 100% 31.5573%); + --color-info-900: hsl(212.1055 100% 25.5446%); + --color-success-content: hsl(138.1514 100% 4.3426%); + --color-success-50: hsl(149.0902 100% 76.2099%); + --color-success-100: hsl(150.0929 100% 73.1203%); + --color-success-200: hsl(152.9737 100% 65.1278%); + --color-success-300: hsl(158.3301 100% 50%); + --color-success-400: hsl(155.4451 100% 50%); + --color-success-500: hsl(152.4739 100% 50%); + --color-success-600: hsl(152.0782 100% 43.7361%); + --color-success-700: hsl(151.7969 100% 37.372%); + --color-success-800: hsl(151.4148 100% 31.2042%); + --color-success-900: hsl(150.8692 100% 25.2533%); + --color-warning-content: hsl(48.6708 100% 4.3843%); + --color-warning-50: hsl(52.3743 100% 78.7644%); + --color-warning-100: hsl(52.3745 100% 76.4638%); + --color-warning-200: hsl(52.4598 100% 71.3651%); + --color-warning-300: hsl(52.7474 100% 64.9582%); + --color-warning-400: hsl(53.9826 100% 51.1169%); + --color-warning-500: hsl(53.2818 100% 50%); + --color-warning-600: hsl(52.6028 100% 44.0089%); + --color-warning-700: hsl(52.5287 100% 37.6075%); + --color-warning-800: hsl(52.4281 100% 31.4034%); + --color-warning-900: hsl(52.2845 100% 25.4176%); + --color-danger-content: hsl(0 100% 4.8612%); + --color-danger-50: hsl(8.8437 100% 75.3492%); + --color-danger-100: hsl(8.3614 100% 73.0335%); + --color-danger-200: hsl(7.2264 100% 68.2221%); + --color-danger-300: hsl(5.7332 100% 62.8914%); + --color-danger-400: hsl(3.4 100% 55.6562%); + --color-danger-500: hsl(0 100% 50%); + --color-danger-600: hsl(360 100% 47.1349%); + --color-danger-700: hsl(0 100% 40.3055%); + --color-danger-800: hsl(0 100% 33.6866%); + --color-danger-900: hsl(0 100% 27.3007%); + --color-surface-200: hsl(223.8136 0.0001% 89.0602%); + --color-surface-300: hsl(223.8136 0% 80.8599%); + --color-surface-content: hsl(223.8136 0% 8.3482%); +} + +[data-theme="lemonade"] { + color-scheme: light; + --color-primary: hsl(93.4996 100% 29.0294%); + --color-secondary: hsl(60.8502 100% 37.6616%); + --color-accent: hsl(52.6958 100% 46.4788%); + --color-neutral: hsl(58.4134 100% 10.1809%); + --color-surface-100: hsl(82.6841 81.8906% 96.5044%); + --color-info: hsl(197.1466 55.5016% 80.42%); + --color-success: hsl(142.5226 32.7183% 79.3071%); + --color-warning: hsl(54.0615 32.8556% 76.7519%); + --color-danger: hsl(6.2376 58.9836% 84.8923%); + --color-primary-content: hsl(109.1708 100% 1.5316%); + --color-primary-50: hsl(97.93 38.4425% 63.2134%); + --color-primary-100: hsl(97.5997 38.486% 59.7635%); + --color-primary-200: hsl(96.6731 38.7883% 52.6394%); + --color-primary-300: hsl(95.0069 48.8173% 44.8423%); + --color-primary-400: hsl(89.9607 85.7813% 33.5969%); + --color-primary-500: hsl(93.4996 100% 29.0294%); + --color-primary-600: hsl(93.9523 100% 25.108%); + --color-primary-700: hsl(94.5526 100% 21.2941%); + --color-primary-800: hsl(95.3827 100% 17.5979%); + --color-primary-900: hsl(96.598 100% 14.0317%); + --color-secondary-content: hsl(61.6131 100% 2.655%); + --color-secondary-50: hsl(63.2518 56.1981% 70.3169%); + --color-secondary-100: hsl(62.9727 56.3816% 67.3239%); + --color-secondary-200: hsl(62.4033 57.039% 60.9192%); + --color-secondary-300: hsl(61.8114 58.4603% 53.3641%); + --color-secondary-400: hsl(61.082 100% 38.9992%); + --color-secondary-500: hsl(60.8502 100% 37.6616%); + --color-secondary-600: hsl(60.8591 100% 32.675%); + --color-secondary-700: hsl(60.8707 100% 27.8252%); + --color-secondary-800: hsl(60.8866 100% 23.1249%); + --color-secondary-900: hsl(60.9096 100% 18.59%); + --color-accent-content: hsl(48.1577 100% 3.8343%); + --color-accent-50: hsl(52.0804 82.9217% 75.8541%); + --color-accent-100: hsl(52.0424 83.2457% 73.3537%); + --color-accent-200: hsl(52.061 84.0111% 67.9033%); + --color-accent-300: hsl(52.3065 85.0851% 61.2291%); + --color-accent-400: hsl(53.6574 99.2271% 46.9722%); + --color-accent-500: hsl(52.6958 100% 46.4788%); + --color-accent-600: hsl(52.6344 100% 40.4042%); + --color-accent-700: hsl(52.554 100% 34.4962%); + --color-accent-800: hsl(52.4446 100% 28.7704%); + --color-accent-900: hsl(52.288 100% 23.2461%); + --color-neutral-content: hsl(62.4437 11.0501% 80.3925%); + --color-neutral-50: hsl(61.3377 11.6994% 47.9634%); + --color-neutral-100: hsl(61.1184 13.951% 43.5385%); + --color-neutral-200: hsl(60.6131 20.0975% 34.8351%); + --color-neutral-300: hsl(60.0045 30.456% 26.2683%); + --color-neutral-400: hsl(59.3163 54.0588% 17.6182%); + --color-neutral-500: hsl(58.4134 100% 10.1809%); + --color-neutral-600: hsl(58.3507 100% 8.5853%); + --color-neutral-700: hsl(58.2624 100% 7.0334%); + --color-neutral-800: hsl(58.1296 100% 5.5294%); + --color-neutral-900: hsl(57.9085 100% 4.0784%); + --color-info-content: hsl(197.1466 24.2582% 5.9916%); + --color-info-50: hsl(197.3691 55.6859% 89.2917%); + --color-info-100: hsl(197.3487 55.6586% 88.3127%); + --color-info-200: hsl(197.305 55.6085% 86.3506%); + --color-info-300: hsl(197.2572 55.565% 84.382%); + --color-info-400: hsl(197.2046 55.529% 82.4056%); + --color-info-500: hsl(197.1466 55.5016% 80.42%); + --color-info-600: hsl(197.1466 31.5623% 69.8178%); + --color-info-700: hsl(197.1466 20.3046% 59.5065%); + --color-info-800: hsl(197.1466 14.053% 49.5132%); + --color-info-900: hsl(197.1466 14.3927% 39.8715%); + --color-success-content: hsl(142.5226 15.4982% 5.8428%); + --color-success-50: hsl(141.6518 32.7194% 88.6213%); + --color-success-100: hsl(141.739 32.7147% 87.5875%); + --color-success-200: hsl(141.9199 32.7082% 85.5196%); + --color-success-300: hsl(142.1102 32.7063% 83.4506%); + --color-success-400: hsl(142.3108 32.7094% 81.38%); + --color-success-500: hsl(142.5226 32.7183% 79.3071%); + --color-success-600: hsl(142.5226 19.0479% 68.8422%); + --color-success-700: hsl(142.5226 12.3923% 58.6645%); + --color-success-800: hsl(142.5226 8.883% 48.8006%); + --color-success-900: hsl(142.5226 9.101% 39.2838%); + --color-warning-content: hsl(54.0615 18.5712% 5.501%); + --color-warning-50: hsl(54.4564 32.5814% 87.1401%); + --color-warning-100: hsl(54.4125 32.6067% 85.9808%); + --color-warning-200: hsl(54.3246 32.6607% 83.6663%); + --color-warning-300: hsl(54.2367 32.7198% 81.3571%); + --color-warning-400: hsl(54.1489 32.7845% 79.0526%); + --color-warning-500: hsl(54.0615 32.8556% 76.7519%); + --color-warning-600: hsl(54.0615 20.0485% 66.6023%); + --color-warning-700: hsl(54.0615 13.3562% 56.7313%); + --color-warning-800: hsl(54.0615 10.3694% 47.1646%); + --color-warning-900: hsl(54.0615 10.6329% 37.9345%); + --color-danger-content: hsl(6.2376 18.0861% 6.5898%); + --color-danger-50: hsl(6.4363 61.5681% 91.7492%); + --color-danger-100: hsl(6.4176 61.2769% 90.9918%); + --color-danger-200: hsl(6.3779 60.6976% 89.4737%); + --color-danger-300: hsl(6.3349 60.1224% 87.951%); + --color-danger-400: hsl(6.2882 59.5511% 86.4238%); + --color-danger-500: hsl(6.2376 58.9836% 84.8923%); + --color-danger-600: hsl(6.2376 29.7446% 73.7382%); + --color-danger-700: hsl(6.2376 18.1679% 62.8902%); + --color-danger-800: hsl(6.2376 11.9807% 52.3767%); + --color-danger-900: hsl(6.2376 11.142% 42.2332%); + --color-surface-200: hsl(82.6841 21.1834% 87.6585%); + --color-surface-300: hsl(82.6841 11.6925% 79.5797%); + --color-surface-content: hsl(82.6841 4.7019% 8.1429%); +} + +[data-theme="night"] { + color-scheme: dark; + --color-primary: hsl(198.4375 93.2039% 59.6078%); + --color-secondary: hsl(234.4538 89.4737% 73.9216%); + --color-accent: hsl(328.855 85.6209% 70%); + --color-neutral: hsl(217.2414 32.5843% 17.451%); + --color-surface-100: hsl(222.2222 47.3684% 11.1765%); + --color-info: hsl(198.4615 90.2041% 48.0392%); + --color-info-content: hsl(0 0% 0%); + --color-success: hsl(172.4551 66.0079% 50.3922%); + --color-warning: hsl(40.6098 88.172% 63.5294%); + --color-danger: hsl(350.9353 94.5578% 71.1765%); + --color-primary-content: hsl(203.6994 90.5513% 4.326%); + --color-primary-50: hsl(201.1834 95.3375% 80.8549%); + --color-primary-100: hsl(201.0466 95.007% 78.9452%); + --color-primary-200: hsl(200.7106 94.3895% 74.9603%); + --color-primary-300: hsl(200.2524 93.8466% 70.6536%); + --color-primary-400: hsl(199.5808 93.4162% 65.7806%); + --color-primary-500: hsl(198.4375 93.2039% 59.6078%); + --color-primary-600: hsl(198.4375 68.148% 51.5738%); + --color-primary-700: hsl(198.4375 65.0901% 43.7602%); + --color-primary-800: hsl(198.4375 66.6109% 36.1875%); + --color-primary-900: hsl(198.4375 68.834% 28.8813%); + --color-secondary-content: hsl(235.565 56.8311% 5.2561%); + --color-secondary-50: hsl(231.3883 97.6838% 85.6269%); + --color-secondary-100: hsl(231.6256 96.7279% 84.3101%); + --color-secondary-200: hsl(232.1616 94.8549% 81.6823%); + --color-secondary-300: hsl(232.7946 93.027% 79.0686%); + --color-secondary-400: hsl(233.5481 91.2361% 76.478%); + --color-secondary-500: hsl(234.4538 89.4737% 73.9216%); + --color-secondary-600: hsl(234.4538 57.0088% 64.1212%); + --color-secondary-700: hsl(234.4538 38.8764% 54.5898%); + --color-secondary-800: hsl(234.4538 32.942% 45.3523%); + --color-secondary-900: hsl(234.4538 33.8134% 36.4399%); + --color-accent-content: hsl(331.3375 64.9536% 4.8701%); + --color-accent-50: hsl(332.2661 98.013% 85.0031%); + --color-accent-100: hsl(331.9428 96.4242% 83.4779%); + --color-accent-200: hsl(331.2651 93.4108% 80.3364%); + --color-accent-300: hsl(330.5363 90.6073% 77.0609%); + --color-accent-400: hsl(329.7407 88.0091% 73.6283%); + --color-accent-500: hsl(328.855 85.6209% 70%); + --color-accent-600: hsl(328.855 57.2704% 60.6836%); + --color-accent-700: hsl(328.855 40.1719% 51.6228%); + --color-accent-800: hsl(328.855 38.3893% 42.8414%); + --color-accent-900: hsl(328.855 39.4659% 34.3691%); + --color-neutral-content: hsl(217.0558 8.3669% 81.8251%); + --color-neutral-50: hsl(217.0594 7.9131% 51.7923%); + --color-neutral-100: hsl(217.0633 8.5821% 47.7122%); + --color-neutral-200: hsl(217.0769 11.6027% 39.7314%); + --color-neutral-300: hsl(217.1027 15.7981% 32.0085%); + --color-neutral-400: hsl(217.1509 22.0652% 24.5706%); + --color-neutral-500: hsl(217.2414 32.5843% 17.451%); + --color-neutral-600: hsl(217.2414 34.097% 14.6189%); + --color-neutral-700: hsl(217.2414 36.2609% 11.8646%); + --color-neutral-800: hsl(217.2414 39.5951% 9.1951%); + --color-neutral-900: hsl(217.2804 45.292% 6.6228%); + --color-info-50: hsl(203.4771 82.9215% 76.8862%); + --color-info-100: hsl(203.3168 82.6486% 74.6076%); + --color-info-200: hsl(202.906 82.1878% 69.8521%); + --color-info-300: hsl(202.2997 81.898% 64.6679%); + --color-info-400: hsl(201.2804 81.9454% 58.5588%); + --color-info-500: hsl(198.4615 90.2041% 48.0392%); + --color-info-600: hsl(198.4655 91.644% 41.4408%); + --color-info-700: hsl(198.5209 93.0736% 35.1126%); + --color-info-800: hsl(198.6615 94.3968% 29.0776%); + --color-info-900: hsl(198.9317 95.6042% 23.3406%); + --color-success-content: hsl(169.1372 91.8135% 3.3131%); + --color-success-50: hsl(169.0357 60.9289% 77.223%); + --color-success-100: hsl(169.2869 61.0884% 74.9343%); + --color-success-200: hsl(169.8372 61.5465% 70.1334%); + --color-success-300: hsl(170.4774 62.2767% 64.8849%); + --color-success-400: hsl(171.2723 63.498% 58.799%); + --color-success-500: hsl(172.4551 66.0079% 50.3922%); + --color-success-600: hsl(172.4551 65.9945% 43.4953%); + --color-success-700: hsl(172.4551 67.3452% 36.7876%); + --color-success-800: hsl(172.4551 69.2253% 30.2868%); + --color-success-900: hsl(172.4551 72.0039% 24.0148%); + --color-warning-content: hsl(36.8484 81.2888% 4.4313%); + --color-warning-50: hsl(39.1379 88.6283% 81.5778%); + --color-warning-100: hsl(39.2032 88.5219% 79.8039%); + --color-warning-200: hsl(39.378 88.3334% 76.1568%); + --color-warning-300: hsl(39.6336 88.1903% 72.3238%); + --color-warning-400: hsl(40.014 88.1187% 68.1941%); + --color-warning-500: hsl(40.6098 88.172% 63.5294%); + --color-warning-600: hsl(40.6098 62.6577% 55.0114%); + --color-warning-700: hsl(40.6098 52.0675% 46.7272%); + --color-warning-800: hsl(40.6098 53.2051% 38.6984%); + --color-warning-900: hsl(40.6098 54.862% 30.9522%); + --color-danger-content: hsl(353.3132 66.7558% 5.0377%); + --color-danger-50: hsl(354.1213 100% 85.1155%); + --color-danger-100: hsl(353.8868 100% 83.7278%); + --color-danger-200: hsl(353.3674 100% 80.9163%); + --color-danger-300: hsl(352.7649 100% 78.0401%); + --color-danger-400: hsl(351.9595 97.7077% 74.7813%); + --color-danger-500: hsl(350.9353 94.5578% 71.1765%); + --color-danger-600: hsl(350.9353 62.4047% 61.7149%); + --color-danger-700: hsl(350.9353 43.4242% 52.5129%); + --color-danger-800: hsl(350.9353 40.0298% 43.5947%); + --color-danger-900: hsl(350.9353 41.1326% 34.9903%); + --color-surface-200: hsl(222.2222 49.6903% 9.7303%); + --color-surface-300: hsl(222.219 52.5148% 8.4092%); + --color-surface-content: hsl(220.8541 7.8181% 80.145%); +} + +[data-theme="coffee"] { + color-scheme: dark; + --color-primary: hsl(29.5833 66.6667% 57.6471%); + --color-secondary: hsl(182.4 24.7525% 19.8039%); + --color-accent: hsl(194.1935 74.4% 24.5098%); + --color-neutral: hsl(300 20% 5.8824%); + --color-surface-100: hsl(306 18.5185% 10.5882%); + --color-surface-content: hsl(37.4257 46.5438% 57.451%); + --color-info: hsl(171.1475 36.5269% 67.2549%); + --color-success: hsl(92.5 25% 62.3529%); + --color-warning: hsl(43.125 100% 68.6275%); + --color-danger: hsl(9.7561 95.3488% 74.7059%); + --color-primary-content: hsl(22.4563 80.4753% 3.7247%); + --color-primary-50: hsl(27.9304 68.7647% 77.6841%); + --color-primary-100: hsl(28.0223 68.4476% 75.5946%); + --color-primary-200: hsl(28.2439 67.8511% 71.3566%); + --color-primary-300: hsl(28.5389 67.3237% 67.008%); + --color-primary-400: hsl(28.9537 66.9032% 62.4833%); + --color-primary-500: hsl(29.5833 66.6667% 57.6471%); + --color-primary-600: hsl(29.5833 49.6464% 49.8549%); + --color-primary-700: hsl(29.5833 50.5306% 42.2766%); + --color-primary-800: hsl(29.5833 51.7536% 34.932%); + --color-primary-900: hsl(29.5833 53.5452% 27.8459%); + --color-secondary-content: hsl(181.7497 6.3066% 82.5018%); + --color-secondary-50: hsl(181.9436 6.1715% 53.4862%); + --color-secondary-100: hsl(181.9804 6.2691% 49.528%); + --color-secondary-200: hsl(182.0633 8.5256% 41.7666%); + --color-secondary-300: hsl(182.1608 11.6961% 34.2219%); + --color-secondary-400: hsl(182.2743 16.5036% 26.9029%); + --color-secondary-500: hsl(182.4 24.7525% 19.8039%); + --color-secondary-600: hsl(182.4 25.7595% 16.6815%); + --color-secondary-700: hsl(182.4 27.181% 13.6448%); + --color-secondary-800: hsl(182.4 29.3285% 10.7017%); + --color-secondary-900: hsl(182.4 32.9243% 7.8622%); + --color-accent-content: hsl(197.579 22.0364% 84.6848%); + --color-accent-50: hsl(197.2253 21.7661% 58.7581%); + --color-accent-100: hsl(197.1362 21.7552% 55.1321%); + --color-accent-200: hsl(196.8977 23.6884% 47.909%); + --color-accent-300: hsl(196.5233 32.0291% 40.6633%); + --color-accent-400: hsl(195.8553 45.1257% 33.2008%); + --color-accent-500: hsl(194.1935 74.4% 24.5098%); + --color-accent-600: hsl(194.1935 76.8268% 20.8067%); + --color-accent-700: hsl(194.2034 80.0892% 17.2148%); + --color-accent-800: hsl(194.3516 83.4129% 13.8434%); + --color-accent-900: hsl(194.7514 86.5001% 10.7113%); + --color-neutral-content: hsl(301.3634 1.6631% 78.569%); + --color-neutral-50: hsl(301.1604 2.0087% 43.6882%); + --color-neutral-100: hsl(301.1129 2.4028% 39.0296%); + --color-neutral-200: hsl(300.9913 3.4789% 30.003%); + --color-neutral-300: hsl(300.8135 5.2582% 21.4113%); + --color-neutral-400: hsl(300.5288 8.8169% 13.3317%); + --color-neutral-500: hsl(300 20% 5.8824%); + --color-neutral-600: hsl(300 22.8081% 4.4859%); + --color-neutral-700: hsl(300 24.3932% 3.2167%); + --color-neutral-800: hsl(300 24.3932% 2.1549%); + --color-neutral-900: hsl(300 24.3932% 1.357%); + --color-info-content: hsl(170.7967 35.8533% 4.2918%); + --color-info-50: hsl(170.1487 35.9249% 82.1693%); + --color-info-100: hsl(170.2466 35.9625% 80.5361%); + --color-info-200: hsl(170.451 36.0551% 77.2571%); + --color-info-300: hsl(170.668 36.1752% 73.9561%); + --color-info-400: hsl(170.8994 36.3296% 70.6255%); + --color-info-500: hsl(171.1475 36.5269% 67.2549%); + --color-info-600: hsl(171.1475 25.1298% 58.2772%); + --color-info-700: hsl(171.1475 18.2648% 49.5459%); + --color-info-800: hsl(171.1475 18.6407% 41.0838%); + --color-info-900: hsl(171.1475 19.1865% 32.9195%); + --color-success-content: hsl(94.7435 31.7487% 3.6691%); + --color-success-50: hsl(93.3782 25.2385% 79.0975%); + --color-success-100: hsl(93.3001 25.2049% 77.2235%); + --color-success-200: hsl(93.1318 25.1416% 73.4871%); + --color-success-300: hsl(92.945 25.0847% 69.7647%); + --color-success-400: hsl(92.736 25.0365% 66.0543%); + --color-success-500: hsl(92.5 25% 62.3529%); + --color-success-600: hsl(92.5 17.9279% 53.9801%); + --color-success-700: hsl(92.5 15.5352% 45.8371%); + --color-success-800: hsl(92.5 15.8814% 37.9451%); + --color-success-900: hsl(92.5 16.3861% 30.3309%); + --color-warning-content: hsl(40.9339 75.8444% 4.8966%); + --color-warning-50: hsl(42.3467 100% 84.1486%); + --color-warning-100: hsl(42.3625 100% 82.6164%); + --color-warning-200: hsl(42.4289 100% 79.4633%); + --color-warning-300: hsl(42.5562 100% 76.1489%); + --color-warning-400: hsl(42.7715 100% 72.5901%); + --color-warning-500: hsl(43.125 100% 68.6275%); + --color-warning-600: hsl(43.125 67.8715% 59.4804%); + --color-warning-700: hsl(43.125 48.0339% 50.5843%); + --color-warning-800: hsl(43.125 47.8696% 41.9626%); + --color-warning-900: hsl(43.125 49.2411% 33.6443%); + --color-danger-content: hsl(8.1248 57.6757% 5.361%); + --color-danger-50: hsl(10.6001 100% 86.333%); + --color-danger-100: hsl(10.4952 100% 85.1052%); + --color-danger-200: hsl(10.2754 100% 82.6536%); + --color-danger-300: hsl(10.0524 99.7767% 80.1823%); + --color-danger-400: hsl(9.916 97.5138% 77.4734%); + --color-danger-500: hsl(9.7561 95.3488% 74.7059%); + --color-danger-600: hsl(9.7561 60.0763% 64.8087%); + --color-danger-700: hsl(9.7561 40.7152% 55.1832%); + --color-danger-800: hsl(9.7561 33.6764% 45.8545%); + --color-danger-900: hsl(9.7561 34.5572% 36.8541%); + --color-surface-200: hsl(306 19.4793% 9.1931%); + --color-surface-300: hsl(306 20.6526% 7.9189%); +} + +[data-theme="winter"] { + color-scheme: light; + --color-primary: hsl(215.4061 100% 50%); + --color-secondary: hsl(246.9231 47.2727% 43.1373%); + --color-accent: hsl(310.4132 49.3878% 51.9608%); + --color-neutral: hsl(217.0213 92.1569% 10%); + --color-surface-100: hsl(180 100% 100%); + --color-surface-200: hsl(216.9231 100% 97.451%); + --color-surface-300: hsl(218.8235 43.5897% 92.3529%); + --color-surface-content: hsl(214.2857 30.0613% 31.9608%); + --color-info: hsl(191.5385 92.8571% 78.0392%); + --color-success: hsl(181.5 46.5116% 66.2745%); + --color-warning: hsl(32.3077 61.9048% 83.5294%); + --color-danger: hsl(0 63.3803% 72.1569%); + --color-primary-content: hsl(212.4625 100% 90.3464%); + --color-primary-50: hsl(213.4814 100% 73.358%); + --color-primary-100: hsl(213.5783 100% 70.833%); + --color-primary-200: hsl(213.6319 100% 65.5289%); + --color-primary-300: hsl(213.1749 100% 59.3604%); + --color-primary-400: hsl(210.994 100% 50%); + --color-primary-500: hsl(215.4061 100% 50%); + --color-primary-600: hsl(216.4922 100% 44.989%); + --color-primary-700: hsl(216.8494 100% 38.4533%); + --color-primary-800: hsl(217.3345 100% 32.1192%); + --color-primary-900: hsl(218.0263 100% 26.008%); + --color-secondary-content: hsl(235.8529 43.4015% 88.5918%); + --color-secondary-50: hsl(238.0994 39.4748% 69.0245%); + --color-secondary-100: hsl(238.605 38.8639% 66.2902%); + --color-secondary-200: hsl(239.8565 37.5885% 60.8873%); + --color-secondary-300: hsl(241.5263 36.8215% 55.1732%); + --color-secondary-400: hsl(243.7677 37.2698% 49.2895%); + --color-secondary-500: hsl(246.9231 47.2727% 43.1373%); + --color-secondary-600: hsl(246.9231 48.1367% 37.1356%); + --color-secondary-700: hsl(246.9231 49.2947% 31.2986%); + --color-secondary-800: hsl(246.9231 50.9202% 25.6416%); + --color-secondary-900: hsl(246.9231 53.352% 20.1837%); + --color-accent-content: hsl(314.095 77.778% 3.0142%); + --color-accent-50: hsl(313.8406 53.6827% 75.1216%); + --color-accent-100: hsl(313.5177 53.0661% 72.7338%); + --color-accent-200: hsl(312.8416 51.9014% 67.8663%); + --color-accent-300: hsl(312.1147 50.8536% 62.8424%); + --color-accent-400: hsl(311.3176 49.9771% 57.5911%); + --color-accent-500: hsl(310.4132 49.3878% 51.9608%); + --color-accent-600: hsl(310.4132 46.351% 44.8703%); + --color-accent-700: hsl(310.4132 47.2701% 37.9744%); + --color-accent-800: hsl(310.4132 48.5473% 31.2912%); + --color-accent-900: hsl(310.4132 50.431% 24.8431%); + --color-neutral-content: hsl(215.5731 13.2527% 79.9757%); + --color-neutral-50: hsl(215.5382 13.9448% 47.0444%); + --color-neutral-100: hsl(215.5369 16.4864% 42.5914%); + --color-neutral-200: hsl(215.5391 23.1742% 33.8988%); + --color-neutral-300: hsl(215.5419 33.5602% 25.5065%); + --color-neutral-400: hsl(215.4795 52.5215% 17.4096%); + --color-neutral-500: hsl(217.0213 92.1569% 10%); + --color-neutral-600: hsl(218.3577 93.1679% 8.3688%); + --color-neutral-700: hsl(220.3389 94.0951% 6.8006%); + --color-neutral-800: hsl(223.1084 94.9213% 5.297%); + --color-neutral-900: hsl(225.5098 95.6116% 3.8605%); + --color-info-content: hsl(191.6883 47.1681% 5.7082%); + --color-info-50: hsl(191.9494 93.5787% 88.5692%); + --color-info-100: hsl(191.9202 93.4828% 87.4704%); + --color-info-200: hsl(191.8518 93.3011% 85.2298%); + --color-info-300: hsl(191.7679 93.1345% 82.9224%); + --color-info-400: hsl(191.665 92.9854% 80.5326%); + --color-info-500: hsl(191.5385 92.8571% 78.0392%); + --color-info-600: hsl(191.5385 55.3959% 67.7308%); + --color-info-700: hsl(191.5385 36.4787% 57.7052%); + --color-info-800: hsl(191.5385 27.2079% 47.9888%); + --color-info-900: hsl(191.5385 27.8871% 38.6143%); + --color-success-content: hsl(181.6021 46.4015% 4.2334%); + --color-success-50: hsl(181.1021 44.9532% 81.8911%); + --color-success-100: hsl(181.15 45.0719% 80.2125%); + --color-success-200: hsl(181.2439 45.3408% 76.8252%); + --color-success-300: hsl(181.3345 45.66% 73.3868%); + --color-success-400: hsl(181.4205 46.0435% 69.8789%); + --color-success-500: hsl(181.5 46.5116% 66.2745%); + --color-success-600: hsl(181.5 32.292% 57.4178%); + --color-success-700: hsl(181.5 24.3179% 48.8041%); + --color-success-800: hsl(181.5 24.8261% 40.4561%); + --color-success-900: hsl(181.5 25.5647% 32.4018%); + --color-warning-content: hsl(32.3077 21.2829% 6.4075%); + --color-warning-50: hsl(32.1495 62.5681% 90.9627%); + --color-warning-100: hsl(32.1646 62.4921% 90.1392%); + --color-warning-200: hsl(32.1964 62.3415% 88.4908%); + --color-warning-300: hsl(32.2307 62.1933% 86.84%); + --color-warning-400: hsl(32.2676 62.0476% 85.1864%); + --color-warning-500: hsl(32.3077 61.9048% 83.5294%); + --color-warning-600: hsl(32.3077 32.553% 72.5435%); + --color-warning-700: hsl(32.3077 20.2257% 61.8591%); + --color-warning-800: hsl(32.3077 13.4617% 51.5041%); + --color-warning-900: hsl(32.3077 12.9698% 41.5135%); + --color-danger-content: hsl(0 46.1725% 4.9576%); + --color-danger-50: hsl(1.4623 70.6764% 85.0656%); + --color-danger-100: hsl(1.343 69.825% 83.6596%); + --color-danger-200: hsl(1.0781 68.1549% 80.8258%); + --color-danger-300: hsl(0.7723 66.5259% 77.9637%); + --color-danger-400: hsl(0.4169 64.9351% 75.0739%); + --color-danger-500: hsl(0 63.3803% 72.1569%); + --color-danger-600: hsl(0 41.3338% 62.5743%); + --color-danger-700: hsl(0 28.5625% 53.2547%); + --color-danger-800: hsl(0 25.5507% 44.2224%); + --color-danger-900: hsl(0 26.2443% 35.508%); +} + +[data-theme="dim"] { + color-scheme: dark; + --color-primary: hsl(108.1319 66.4234% 73.1373%); + --color-secondary: hsl(12.1472 100% 68.0392%); + --color-accent: hsl(276.5517 66.4122% 74.3137%); + --color-neutral: hsl(220 21.1268% 13.9216%); + --color-neutral-content: hsl(196.6667 30.5085% 76.8627%); + --color-surface-100: hsl(220 17.6471% 20%); + --color-surface-200: hsl(220 17.2414% 17.0588%); + --color-surface-300: hsl(218.5714 17.9487% 15.2941%); + --color-surface-content: hsl(196.6667 30.5085% 76.8627%); + --color-info: hsl(185.5814 100% 57.8431%); + --color-success: hsl(158.7234 81.5029% 66.0784%); + --color-warning: hsl(47.7632 82.6087% 63.9216%); + --color-danger: hsl(11.4 100% 80.3922%); + --color-primary-content: hsl(109.2864 45.7907% 5.0786%); + --color-primary-50: hsl(108.2365 67.728% 85.6578%); + --color-primary-100: hsl(108.2362 67.5517% 84.3133%); + --color-primary-200: hsl(108.2302 67.2186% 81.5959%); + --color-primary-300: hsl(108.2144 66.9153% 78.8345%); + --color-primary-400: hsl(108.1839 66.6476% 76.0194%); + --color-primary-500: hsl(108.1319 66.4234% 73.1373%); + --color-primary-600: hsl(108.1319 42.7753% 63.4337%); + --color-primary-700: hsl(108.1319 29.3455% 53.9964%); + --color-primary-800: hsl(108.1319 25.473% 44.8502%); + --color-primary-900: hsl(108.1319 26.1546% 36.0257%); + --color-secondary-content: hsl(8.1035 77.2309% 4.8583%); + --color-secondary-50: hsl(13.2996 100% 82.6119%); + --color-secondary-100: hsl(13.1729 100% 81.0356%); + --color-secondary-200: hsl(12.9127 100% 77.87%); + --color-secondary-300: hsl(12.6472 100% 74.6715%); + --color-secondary-400: hsl(12.3852 100% 71.4114%); + --color-secondary-500: hsl(12.1472 100% 68.0392%); + --color-secondary-600: hsl(12.1472 68.2752% 58.9647%); + --color-secondary-700: hsl(12.1472 48.4977% 50.1393%); + --color-secondary-800: hsl(12.1472 49.2088% 41.586%); + --color-secondary-900: hsl(12.1472 50.6319% 33.3336%); + --color-accent-content: hsl(276.1458 43.0163% 5.2138%); + --color-accent-50: hsl(275.4992 69.5985% 86.1986%); + --color-accent-100: hsl(275.6036 69.2177% 84.9093%); + --color-accent-200: hsl(275.8201 68.4744% 82.31%); + --color-accent-300: hsl(276.0483 67.7571% 79.6807%); + --color-accent-400: hsl(276.2911 67.0686% 77.0171%); + --color-accent-500: hsl(276.5517 66.4122% 74.3137%); + --color-accent-600: hsl(276.5517 42.0819% 64.465%); + --color-accent-700: hsl(276.5517 28.6092% 54.8865%); + --color-accent-800: hsl(276.5517 23.951% 45.6034%); + --color-accent-900: hsl(276.5517 24.581% 36.647%); + --color-neutral-50: hsl(219.7345 4.1219% 49.3365%); + --color-neutral-100: hsl(219.7434 4.836% 45.0809%); + --color-neutral-200: hsl(219.7678 6.6511% 36.7822%); + --color-neutral-300: hsl(219.8063 9.275% 28.7932%); + --color-neutral-400: hsl(219.8723 13.432% 21.1544%); + --color-neutral-500: hsl(220 21.1268% 13.9216%); + --color-neutral-600: hsl(220 22.3709% 11.525%); + --color-neutral-700: hsl(220 24.2029% 9.1942%); + --color-neutral-800: hsl(220 27.1536% 6.9353%); + --color-neutral-900: hsl(220.4941 32.1307% 4.7748%); + --color-info-content: hsl(187.5008 95.0323% 4.4149%); + --color-info-50: hsl(186.5921 100% 82.6325%); + --color-info-100: hsl(186.5964 100% 80.7885%); + --color-info-200: hsl(186.5633 100% 76.826%); + --color-info-300: hsl(186.4518 100% 72.3093%); + --color-info-400: hsl(186.2036 100% 66.7305%); + --color-info-500: hsl(185.5814 100% 57.8431%); + --color-info-600: hsl(185.5814 73.9493% 50.0268%); + --color-info-700: hsl(185.5814 75.1812% 42.425%); + --color-info-800: hsl(185.5814 76.9943% 35.0576%); + --color-info-900: hsl(185.5814 79.6498% 27.9494%); + --color-success-content: hsl(155.8249 72.0506% 4.5168%); + --color-success-50: hsl(154.4968 81.3033% 83.7028%); + --color-success-100: hsl(154.8405 81.2094% 82.045%); + --color-success-200: hsl(155.592 81.0825% 78.5827%); + --color-success-300: hsl(156.4525 81.0572% 74.8653%); + --color-success-400: hsl(157.4672 81.1723% 70.7755%); + --color-success-500: hsl(158.7234 81.5029% 66.0784%); + --color-success-600: hsl(158.7234 56.6858% 57.2459%); + --color-success-700: hsl(158.7234 42.991% 48.6558%); + --color-success-800: hsl(158.7234 43.8922% 40.3305%); + --color-success-900: hsl(158.7234 45.2022% 32.2982%); + --color-warning-content: hsl(45.624 77.4997% 4.3782%); + --color-warning-50: hsl(47.2624 80.964% 81.6716%); + --color-warning-100: hsl(47.2502 81.0798% 79.9154%); + --color-warning-200: hsl(47.2587 81.3413% 76.3092%); + --color-warning-300: hsl(47.325 81.6582% 72.527%); + --color-warning-400: hsl(47.4757 82.0607% 68.4672%); + --color-warning-500: hsl(47.7632 82.6087% 63.9216%); + --color-warning-600: hsl(47.7632 58.5202% 55.3552%); + --color-warning-700: hsl(47.7632 47.9532% 47.0239%); + --color-warning-800: hsl(47.7632 48.9941% 38.9495%); + --color-warning-900: hsl(47.7632 50.5098% 31.1592%); + --color-danger-content: hsl(11.1905 43.5269% 5.9992%); + --color-danger-50: hsl(12.0884 100% 89.1555%); + --color-danger-100: hsl(12.0178 100% 88.1789%); + --color-danger-200: hsl(11.8723 100% 86.2288%); + --color-danger-300: hsl(11.7209 100% 84.2821%); + --color-danger-400: hsl(11.5636 100% 82.3372%); + --color-danger-500: hsl(11.4 100% 80.3922%); + --color-danger-600: hsl(11.4 56.9024% 69.7934%); + --color-danger-700: hsl(11.4 36.6169% 59.4854%); + --color-danger-800: hsl(11.4 25.3652% 49.4954%); + --color-danger-900: hsl(11.4 25.9786% 39.8568%); +} + +[data-theme="nord"] { + color-scheme: light; + --color-primary: hsl(213.0769 31.9672% 52.1569%); + --color-secondary: hsl(210 34.0426% 63.1373%); + --color-accent: hsl(193.3333 43.3735% 67.451%); + --color-neutral: hsl(220 16.4835% 35.6863%); + --color-neutral-content: hsl(218.8235 27.8689% 88.0392%); + --color-surface-100: hsl(217.5 26.6667% 94.1176%); + --color-surface-200: hsl(218.1818 26.8293% 91.9608%); + --color-surface-300: hsl(218.8235 27.8689% 88.0392%); + --color-surface-content: hsl(220 16.3636% 21.5686%); + --color-info: hsl(311.0526 20.2128% 63.1373%); + --color-success: hsl(92.4 27.7778% 64.7059%); + --color-warning: hsl(40 70.5882% 73.3333%); + --color-danger: hsl(354.2553 42.3423% 56.4706%); + --rounded-box: 0.4rem; + --rounded-btn: 0.2rem; + --rounded-badge: 0.4rem; + --tab-radius: 0.2rem; + --color-primary-content: hsl(218.4765 57.2613% 2.707%); + --color-primary-50: hsl(213.2981 33.3966% 73.3113%); + --color-primary-100: hsl(213.2809 33.2391% 70.9331%); + --color-primary-200: hsl(213.2436 32.9207% 66.1998%); + --color-primary-300: hsl(213.2004 32.5998% 61.4955%); + --color-primary-400: hsl(213.1472 32.2799% 56.8166%); + --color-primary-500: hsl(213.0769 31.9672% 52.1569%); + --color-primary-600: hsl(213.0769 29.7651% 45.0422%); + --color-primary-700: hsl(213.0769 30.353% 38.1228%); + --color-primary-800: hsl(213.0769 31.1699% 31.4168%); + --color-primary-900: hsl(213.0769 32.3743% 24.9467%); + --color-secondary-content: hsl(212.5249 40.5044% 3.8138%); + --color-secondary-50: hsl(210.2625 34.964% 79.5289%); + --color-secondary-100: hsl(210.2393 34.861% 77.6931%); + --color-secondary-200: hsl(210.1896 34.6545% 74.0333%); + --color-secondary-300: hsl(210.1344 34.4482% 70.3885%); + --color-secondary-400: hsl(210.072 34.2436% 66.7571%); + --color-secondary-500: hsl(210 34.0426% 63.1373%); + --color-secondary-600: hsl(210 24.2664% 54.6676%); + --color-secondary-700: hsl(210 20.4489% 46.4305%); + --color-secondary-800: hsl(210 20.8986% 38.4473%); + --color-secondary-900: hsl(210 21.5538% 30.7451%); + --color-accent-content: hsl(193.9847 41.433% 4.345%); + --color-accent-50: hsl(193.6739 43.0636% 82.2112%); + --color-accent-100: hsl(193.6487 43.0737% 80.589%); + --color-accent-200: hsl(193.5909 43.108% 77.3362%); + --color-accent-300: hsl(193.5211 43.1652% 74.0675%); + --color-accent-400: hsl(193.4366 43.251% 70.7757%); + --color-accent-500: hsl(193.3333 43.3735% 67.451%); + --color-accent-600: hsl(193.3333 29.7841% 58.4491%); + --color-accent-700: hsl(193.3333 21.4941% 49.6942%); + --color-accent-800: hsl(193.3333 21.9351% 41.2093%); + --color-accent-900: hsl(193.3333 22.5754% 33.023%); + --color-neutral-50: hsl(219.7846 9.9087% 63.2244%); + --color-neutral-100: hsl(219.7969 9.8397% 60.039%); + --color-neutral-200: hsl(219.8272 9.692% 53.7569%); + --color-neutral-300: hsl(219.8678 10.4907% 47.5986%); + --color-neutral-400: hsl(219.923 13.1389% 41.572%); + --color-neutral-500: hsl(220 16.4835% 35.6863%); + --color-neutral-600: hsl(220 16.8491% 30.604%); + --color-neutral-700: hsl(220 17.3435% 25.6613%); + --color-neutral-800: hsl(220 18.0461% 20.8709%); + --color-neutral-900: hsl(220 19.1166% 16.2491%); + --color-info-content: hsl(311.7127 25.1694% 3.7363%); + --color-info-50: hsl(312.0916 21.1337% 79.5121%); + --color-info-100: hsl(311.9883 21.0353% 77.6757%); + --color-info-200: hsl(311.7735 20.8355% 74.0158%); + --color-info-300: hsl(311.5467 20.6316% 70.3731%); + --color-info-400: hsl(311.3069 20.4239% 66.7471%); + --color-info-500: hsl(311.0526 20.2128% 63.1373%); + --color-info-600: hsl(311.0526 14.4082% 54.6676%); + --color-info-700: hsl(311.0526 12.1415% 46.4305%); + --color-info-800: hsl(311.0526 12.4085% 38.4473%); + --color-info-900: hsl(311.0526 12.7976% 30.7451%); + --color-success-content: hsl(94.1028 31.4788% 3.9559%); + --color-success-50: hsl(93.2777 28.0121% 80.454%); + --color-success-100: hsl(93.1985 27.9782% 78.696%); + --color-success-200: hsl(93.0287 27.9147% 75.1878%); + --color-success-300: hsl(92.8414 27.8585% 71.6883%); + --color-success-400: hsl(92.6333 27.8119% 68.1953%); + --color-success-500: hsl(92.4 27.7778% 64.7059%); + --color-success-600: hsl(92.4 19.5511% 56.0427%); + --color-success-700: hsl(92.4 15.5775% 47.6173%); + --color-success-800: hsl(92.4 15.9113% 39.4517%); + --color-success-900: hsl(92.4 16.3971% 31.5734%); + --color-warning-content: hsl(39.418 47.8284% 5.115%); + --color-warning-50: hsl(39.7064 70.6878% 85.5821%); + --color-warning-100: hsl(39.7214 70.6588% 84.2522%); + --color-warning-200: hsl(39.7617 70.611% 81.5752%); + --color-warning-300: hsl(39.8186 70.5801% 78.8696%); + --color-warning-400: hsl(39.8961 70.5704% 76.1264%); + --color-warning-500: hsl(40 70.5882% 73.3333%); + --color-warning-600: hsl(40 45.3387% 63.6056%); + --color-warning-700: hsl(40 31.0581% 54.1448%); + --color-warning-800: hsl(40 26.7976% 44.9757%); + --color-warning-900: hsl(40 27.5125% 36.1293%); + --color-danger-content: hsl(356.2047 61.9196% 3.2446%); + --color-danger-50: hsl(356.9859 47.2799% 76.746%); + --color-danger-100: hsl(356.7833 46.6863% 74.5624%); + --color-danger-200: hsl(356.3233 45.5253% 70.153%); + --color-danger-300: hsl(355.7719 44.4052% 65.6793%); + --color-danger-400: hsl(355.0985 43.3376% 61.1267%); + --color-danger-500: hsl(354.2553 42.3423% 56.4706%); + --color-danger-600: hsl(354.2553 33.0926% 48.8236%); + --color-danger-700: hsl(354.2553 33.6947% 41.3865%); + --color-danger-800: hsl(354.2553 34.5282% 34.1788%); + --color-danger-900: hsl(354.2553 35.7507% 27.2246%); +} + +[data-theme="sunset"] { + color-scheme: dark; + --color-primary: hsl(15.7317 100% 67.8431%); + --color-secondary: hsl(340.9859 97.2603% 71.3725%); + --color-accent: hsl(262.9565 92% 75.4902%); + --color-neutral: hsl(204.0206 23.4236% 14.0508%); + --color-neutral-content: hsl(204.4439 10.9185% 62.1538%); + --color-surface-100: hsl(203.8689 30.8151% 10.324%); + --color-surface-200: hsl(203.7604 36.6879% 8.5153%); + --color-surface-300: hsl(203.6293 45.4194% 6.7469%); + --color-surface-content: hsl(208.1633 34.2657% 71.9608%); + --color-info: hsl(186.7347 71.0145% 72.9412%); + --color-success: hsl(120 43.8596% 77.6471%); + --color-warning: hsl(34.375 77.4194% 75.6863%); + --color-danger: hsl(358.2353 100% 86.6667%); + --rounded-box: 1.2rem; + --rounded-btn: 0.8rem; + --rounded-badge: 0.4rem; + --tab-radius: 0.7rem; + --color-primary-content: hsl(11.0193 77.6858% 4.8459%); + --color-primary-50: hsl(16.2896 100% 82.629%); + --color-primary-100: hsl(16.2012 100% 81.045%); + --color-primary-200: hsl(16.0316 100% 77.8561%); + --color-primary-300: hsl(15.8807 100% 74.6207%); + --color-primary-400: hsl(15.768 100% 71.3039%); + --color-primary-500: hsl(15.7317 100% 67.8431%); + --color-primary-600: hsl(15.7317 68.4076% 58.7928%); + --color-primary-700: hsl(15.7317 48.6682% 49.9909%); + --color-primary-800: hsl(15.7317 49.6607% 41.4604%); + --color-primary-900: hsl(15.7317 51.1012% 33.2301%); + --color-secondary-content: hsl(344.3218 67.6206% 5.0743%); + --color-secondary-50: hsl(343.7257 100% 85.0523%); + --color-secondary-100: hsl(343.5316 100% 83.6556%); + --color-secondary-200: hsl(343.0988 100% 80.8235%); + --color-secondary-300: hsl(342.5925 100% 77.9217%); + --color-secondary-400: hsl(341.9888 100% 74.9189%); + --color-secondary-500: hsl(340.9859 97.2603% 71.3725%); + --color-secondary-600: hsl(340.9859 64.0391% 61.8867%); + --color-secondary-700: hsl(340.9859 44.5004% 52.6613%); + --color-secondary-800: hsl(340.9859 40.7763% 43.7203%); + --color-secondary-900: hsl(340.9859 41.8963% 35.0939%); + --color-accent-content: hsl(261.766 53.8495% 5.4262%); + --color-accent-50: hsl(260.174 99.531% 87.2551%); + --color-accent-100: hsl(260.4373 98.6064% 86.0169%); + --color-accent-200: hsl(260.9925 96.824% 83.4948%); + --color-accent-300: hsl(261.5914 95.129% 80.9066%); + --color-accent-400: hsl(262.2424 93.5206% 78.2429%); + --color-accent-500: hsl(262.9565 92% 75.4902%); + --color-accent-600: hsl(262.9565 57.2882% 65.4963%); + --color-accent-700: hsl(262.9565 38.5779% 55.7766%); + --color-accent-800: hsl(262.9565 31.1449% 46.3567%); + --color-accent-900: hsl(262.9565 31.9505% 37.2683%); + --color-neutral-50: hsl(204.5187 4.3944% 49.4697%); + --color-neutral-100: hsl(204.4964 5.1649% 45.2221%); + --color-neutral-200: hsl(204.4403 7.135% 36.9356%); + --color-neutral-300: hsl(204.3608 10.0124% 28.9524%); + --color-neutral-400: hsl(204.2381 14.6403% 21.3089%); + --color-neutral-500: hsl(204.0206 23.4236% 14.0508%); + --color-neutral-600: hsl(204.0206 24.7896% 11.6383%); + --color-neutral-700: hsl(204.0206 26.7984% 9.292%); + --color-neutral-800: hsl(204.0206 30.0269% 7.018%); + --color-neutral-900: hsl(204.3802 35.3077% 4.8498%); + --color-info-content: hsl(186.9571 49.0367% 5.0735%); + --color-info-50: hsl(186.8462 70.1059% 85.795%); + --color-info-100: hsl(186.8476 70.1656% 84.4454%); + --color-info-200: hsl(186.8422 70.3093% 81.7011%); + --color-info-300: hsl(186.8239 70.4917% 78.884%); + --color-info-400: hsl(186.7895 70.7222% 75.9739%); + --color-info-500: hsl(186.7347 71.0145% 72.9412%); + --color-info-600: hsl(186.7347 45.8502% 63.2618%); + --color-info-700: hsl(186.7347 31.5013% 53.8481%); + --color-info-800: hsl(186.7347 27.5094% 44.7246%); + --color-info-900: hsl(186.7347 28.2476% 35.9222%); + --color-success-content: hsl(120 23.3288% 5.6208%); + --color-success-50: hsl(119.1013 44.5815% 87.7387%); + --color-success-100: hsl(119.1865 44.4967% 86.6213%); + --color-success-200: hsl(119.3665 44.3299% 84.3844%); + --color-success-300: hsl(119.5608 44.1676% 82.1436%); + --color-success-400: hsl(119.7712 44.0105% 79.8982%); + --color-success-500: hsl(120 43.8596% 77.6471%); + --color-success-600: hsl(120 26.3519% 67.387%); + --color-success-700: hsl(120 17.4156% 57.4085%); + --color-success-800: hsl(120 13.1495% 47.7377%); + --color-success-900: hsl(120 13.4796% 38.4072%); + --color-warning-content: hsl(33.9312 45.817% 5.4014%); + --color-warning-50: hsl(33.9386 78.587% 86.8668%); + --color-warning-100: hsl(33.9722 78.4438% 85.6516%); + --color-warning-200: hsl(34.0481 78.1657% 83.2051%); + --color-warning-300: hsl(34.1381 77.9003% 80.7332%); + --color-warning-400: hsl(34.2455 77.6503% 78.2297%); + --color-warning-500: hsl(34.375 77.4194% 75.6863%); + --color-warning-600: hsl(34.375 48.0626% 65.6682%); + --color-warning-700: hsl(34.375 32.3125% 55.925%); + --color-warning-800: hsl(34.375 25.929% 46.4823%); + --color-warning-900: hsl(34.375 26.5978% 37.3718%); + --color-danger-content: hsl(358.2353 26.121% 6.8271%); + --color-danger-50: hsl(359.0066 100% 92.6921%); + --color-danger-100: hsl(358.9295 100% 92.0258%); + --color-danger-200: hsl(358.7694 100% 90.6914%); + --color-danger-300: hsl(358.6009 100% 89.3539%); + --color-danger-400: hsl(358.4231 100% 88.0126%); + --color-danger-500: hsl(358.2353 100% 86.6667%); + --color-danger-600: hsl(358.2353 47.3078% 75.2936%); + --color-danger-700: hsl(358.2353 28.2043% 64.2327%); + --color-danger-800: hsl(358.2353 18.3645% 53.5128%); + --color-danger-900: hsl(358.2353 16.3096% 43.1702%); +} diff --git a/packages/tailwind/src/lib/css/themes/generated/skeleton.css b/packages/tailwind/src/lib/css/themes/generated/skeleton.css new file mode 100644 index 0000000..81917a8 --- /dev/null +++ b/packages/tailwind/src/lib/css/themes/generated/skeleton.css @@ -0,0 +1,2201 @@ +:root { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(160.5882 54.8387% 87.8431%); + --color-primary-200: hsl(160.4651 55.8442% 84.902%); + --color-primary-300: hsl(160.5882 54.8387% 75.6863%); + --color-primary-400: hsl(160 55.5556% 57.6471%); + --color-primary-500: hsl(160 85.0746% 39.4118%); + --color-primary-600: hsl(160 84.5304% 35.4902%); + --color-primary-700: hsl(160 85.4305% 29.6078%); + --color-primary-800: hsl(159.6117 85.124% 23.7255%); + --color-primary-900: hsl(160 85.7143% 19.2157%); + --color-secondary-100: hsl(243.75 76.1905% 91.7647%); + --color-secondary-200: hsl(243 76.9231% 89.8039%); + --color-secondary-300: hsl(243.75 76.1905% 83.5294%); + --color-secondary-400: hsl(243.2432 75.5102% 71.1765%); + --color-secondary-500: hsl(243.3962 75.3555% 58.6275%); + --color-secondary-600: hsl(243.3566 59.3361% 52.7451%); + --color-secondary-700: hsl(243.0252 52.8889% 44.1176%); + --color-secondary-800: hsl(243.1579 53.0726% 35.098%); + --color-secondary-900: hsl(243.8462 53.4247% 28.6275%); + --color-accent-100: hsl(199.0909 84.6154% 89.8039%); + --color-accent-200: hsl(198.5455 84.6154% 87.2549%); + --color-accent-300: hsl(198.6207 82.8571% 79.4118%); + --color-accent-400: hsl(198.7013 83.6957% 63.9216%); + --color-accent-500: hsl(198.6301 88.664% 48.4314%); + --color-accent-600: hsl(198.5787 88.3408% 43.7255%); + --color-accent-700: hsl(198.6585 88.172% 36.4706%); + --color-accent-800: hsl(198.6364 89.1892% 29.0196%); + --color-accent-900: hsl(198.5047 88.4298% 23.7255%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(329.1892 67.2727% 89.2157%); + --color-danger-200: hsl(330 67.6471% 86.6667%); + --color-danger-300: hsl(330.4 68.8073% 78.6275%); + --color-danger-400: hsl(330.229 68.5864% 62.549%); + --color-danger-500: hsl(330.1604 78.903% 46.4706%); + --color-danger-600: hsl(330.3571 78.5047% 41.9608%); + --color-danger-700: hsl(330 78.6517% 34.902%); + --color-danger-800: hsl(330 78.8732% 27.8431%); + --color-danger-900: hsl(330 79.3103% 22.7451%); + --color-surface-100: hsl(228 22.7273% 91.3725%); + --color-surface-200: hsl(227.1429 24.1379% 88.6275%); + --color-surface-300: hsl(225.8824 23.2877% 85.6863%); + surface-400: rgb(128 140 177); + surface-500: rgb(73 90 143); + surface-600: rgb(66 81 129); + surface-700: rgb(55 68 107); + surface-800: rgb(44 54 86); + surface-900: rgb(36 44 70); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(330.1604 78.903% 46.4706%); + --color-primary: hsl(160 85.0746% 39.4118%); + --color-primary-50: hsl(160.5193 54.8337% 88.4639%); + --color-secondary: hsl(243.3962 75.3555% 58.6275%); + --color-secondary-50: hsl(243.6812 76.4014% 92.1848%); + --color-accent: hsl(198.6301 88.664% 48.4314%); + --color-accent-50: hsl(199.1094 84.6794% 90.3249%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(329.2701 67.5446% 89.7696%); +} + +@media (prefers-color-scheme: dark) { + :root { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(160.5882 54.8387% 87.8431%); + --color-primary-200: hsl(160.4651 55.8442% 84.902%); + --color-primary-300: hsl(160.5882 54.8387% 75.6863%); + --color-primary-400: hsl(160 55.5556% 57.6471%); + --color-primary-500: hsl(160 85.0746% 39.4118%); + --color-primary-600: hsl(160 84.5304% 35.4902%); + --color-primary-700: hsl(160 85.4305% 29.6078%); + --color-primary-800: hsl(159.6117 85.124% 23.7255%); + --color-primary-900: hsl(160 85.7143% 19.2157%); + --color-secondary-100: hsl(243.75 76.1905% 91.7647%); + --color-secondary-200: hsl(243 76.9231% 89.8039%); + --color-secondary-300: hsl(243.75 76.1905% 83.5294%); + --color-secondary-400: hsl(243.2432 75.5102% 71.1765%); + --color-secondary-500: hsl(243.3962 75.3555% 58.6275%); + --color-secondary-600: hsl(243.3566 59.3361% 52.7451%); + --color-secondary-700: hsl(243.0252 52.8889% 44.1176%); + --color-secondary-800: hsl(243.1579 53.0726% 35.098%); + --color-secondary-900: hsl(243.8462 53.4247% 28.6275%); + --color-accent-100: hsl(199.0909 84.6154% 89.8039%); + --color-accent-200: hsl(198.5455 84.6154% 87.2549%); + --color-accent-300: hsl(198.6207 82.8571% 79.4118%); + --color-accent-400: hsl(198.7013 83.6957% 63.9216%); + --color-accent-500: hsl(198.6301 88.664% 48.4314%); + --color-accent-600: hsl(198.5787 88.3408% 43.7255%); + --color-accent-700: hsl(198.6585 88.172% 36.4706%); + --color-accent-800: hsl(198.6364 89.1892% 29.0196%); + --color-accent-900: hsl(198.5047 88.4298% 23.7255%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(329.1892 67.2727% 89.2157%); + --color-danger-200: hsl(330 67.6471% 86.6667%); + --color-danger-300: hsl(330.4 68.8073% 78.6275%); + --color-danger-400: hsl(330.229 68.5864% 62.549%); + --color-danger-500: hsl(330.1604 78.903% 46.4706%); + --color-danger-600: hsl(330.3571 78.5047% 41.9608%); + --color-danger-700: hsl(330 78.6517% 34.902%); + --color-danger-800: hsl(330 78.8732% 27.8431%); + --color-danger-900: hsl(330 79.3103% 22.7451%); + --color-surface-100: hsl(225 32.0988% 31.7647%); + --color-surface-200: hsl(225.7143 32.3077% 25.4902%); + --color-surface-300: hsl(225.8824 32.0755% 20.7843%); + surface-400: rgb(128 140 177); + surface-500: rgb(73 90 143); + surface-600: rgb(66 81 129); + surface-700: rgb(55 68 107); + surface-800: rgb(44 54 86); + surface-900: rgb(36 44 70); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(330.1604 78.903% 46.4706%); + --color-primary: hsl(160 85.0746% 39.4118%); + --color-primary-50: hsl(160.5193 54.8337% 88.4639%); + --color-secondary: hsl(243.3962 75.3555% 58.6275%); + --color-secondary-50: hsl(243.6812 76.4014% 92.1848%); + --color-accent: hsl(198.6301 88.664% 48.4314%); + --color-accent-50: hsl(199.1094 84.6794% 90.3249%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(329.2701 67.5446% 89.7696%); + } +} + +[data-theme="light"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(160.5882 54.8387% 87.8431%); + --color-primary-200: hsl(160.4651 55.8442% 84.902%); + --color-primary-300: hsl(160.5882 54.8387% 75.6863%); + --color-primary-400: hsl(160 55.5556% 57.6471%); + --color-primary-500: hsl(160 85.0746% 39.4118%); + --color-primary-600: hsl(160 84.5304% 35.4902%); + --color-primary-700: hsl(160 85.4305% 29.6078%); + --color-primary-800: hsl(159.6117 85.124% 23.7255%); + --color-primary-900: hsl(160 85.7143% 19.2157%); + --color-secondary-100: hsl(243.75 76.1905% 91.7647%); + --color-secondary-200: hsl(243 76.9231% 89.8039%); + --color-secondary-300: hsl(243.75 76.1905% 83.5294%); + --color-secondary-400: hsl(243.2432 75.5102% 71.1765%); + --color-secondary-500: hsl(243.3962 75.3555% 58.6275%); + --color-secondary-600: hsl(243.3566 59.3361% 52.7451%); + --color-secondary-700: hsl(243.0252 52.8889% 44.1176%); + --color-secondary-800: hsl(243.1579 53.0726% 35.098%); + --color-secondary-900: hsl(243.8462 53.4247% 28.6275%); + --color-accent-100: hsl(199.0909 84.6154% 89.8039%); + --color-accent-200: hsl(198.5455 84.6154% 87.2549%); + --color-accent-300: hsl(198.6207 82.8571% 79.4118%); + --color-accent-400: hsl(198.7013 83.6957% 63.9216%); + --color-accent-500: hsl(198.6301 88.664% 48.4314%); + --color-accent-600: hsl(198.5787 88.3408% 43.7255%); + --color-accent-700: hsl(198.6585 88.172% 36.4706%); + --color-accent-800: hsl(198.6364 89.1892% 29.0196%); + --color-accent-900: hsl(198.5047 88.4298% 23.7255%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(329.1892 67.2727% 89.2157%); + --color-danger-200: hsl(330 67.6471% 86.6667%); + --color-danger-300: hsl(330.4 68.8073% 78.6275%); + --color-danger-400: hsl(330.229 68.5864% 62.549%); + --color-danger-500: hsl(330.1604 78.903% 46.4706%); + --color-danger-600: hsl(330.3571 78.5047% 41.9608%); + --color-danger-700: hsl(330 78.6517% 34.902%); + --color-danger-800: hsl(330 78.8732% 27.8431%); + --color-danger-900: hsl(330 79.3103% 22.7451%); + --color-surface-100: hsl(228 22.7273% 91.3725%); + --color-surface-200: hsl(227.1429 24.1379% 88.6275%); + --color-surface-300: hsl(225.8824 23.2877% 85.6863%); + surface-400: rgb(128 140 177); + surface-500: rgb(73 90 143); + surface-600: rgb(66 81 129); + surface-700: rgb(55 68 107); + surface-800: rgb(44 54 86); + surface-900: rgb(36 44 70); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(330.1604 78.903% 46.4706%); + --color-primary: hsl(160 85.0746% 39.4118%); + --color-primary-50: hsl(160.5193 54.8337% 88.4639%); + --color-secondary: hsl(243.3962 75.3555% 58.6275%); + --color-secondary-50: hsl(243.6812 76.4014% 92.1848%); + --color-accent: hsl(198.6301 88.664% 48.4314%); + --color-accent-50: hsl(199.1094 84.6794% 90.3249%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(329.2701 67.5446% 89.7696%); +} + +[data-theme="dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(160.5882 54.8387% 87.8431%); + --color-primary-200: hsl(160.4651 55.8442% 84.902%); + --color-primary-300: hsl(160.5882 54.8387% 75.6863%); + --color-primary-400: hsl(160 55.5556% 57.6471%); + --color-primary-500: hsl(160 85.0746% 39.4118%); + --color-primary-600: hsl(160 84.5304% 35.4902%); + --color-primary-700: hsl(160 85.4305% 29.6078%); + --color-primary-800: hsl(159.6117 85.124% 23.7255%); + --color-primary-900: hsl(160 85.7143% 19.2157%); + --color-secondary-100: hsl(243.75 76.1905% 91.7647%); + --color-secondary-200: hsl(243 76.9231% 89.8039%); + --color-secondary-300: hsl(243.75 76.1905% 83.5294%); + --color-secondary-400: hsl(243.2432 75.5102% 71.1765%); + --color-secondary-500: hsl(243.3962 75.3555% 58.6275%); + --color-secondary-600: hsl(243.3566 59.3361% 52.7451%); + --color-secondary-700: hsl(243.0252 52.8889% 44.1176%); + --color-secondary-800: hsl(243.1579 53.0726% 35.098%); + --color-secondary-900: hsl(243.8462 53.4247% 28.6275%); + --color-accent-100: hsl(199.0909 84.6154% 89.8039%); + --color-accent-200: hsl(198.5455 84.6154% 87.2549%); + --color-accent-300: hsl(198.6207 82.8571% 79.4118%); + --color-accent-400: hsl(198.7013 83.6957% 63.9216%); + --color-accent-500: hsl(198.6301 88.664% 48.4314%); + --color-accent-600: hsl(198.5787 88.3408% 43.7255%); + --color-accent-700: hsl(198.6585 88.172% 36.4706%); + --color-accent-800: hsl(198.6364 89.1892% 29.0196%); + --color-accent-900: hsl(198.5047 88.4298% 23.7255%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(329.1892 67.2727% 89.2157%); + --color-danger-200: hsl(330 67.6471% 86.6667%); + --color-danger-300: hsl(330.4 68.8073% 78.6275%); + --color-danger-400: hsl(330.229 68.5864% 62.549%); + --color-danger-500: hsl(330.1604 78.903% 46.4706%); + --color-danger-600: hsl(330.3571 78.5047% 41.9608%); + --color-danger-700: hsl(330 78.6517% 34.902%); + --color-danger-800: hsl(330 78.8732% 27.8431%); + --color-danger-900: hsl(330 79.3103% 22.7451%); + --color-surface-100: hsl(225 32.0988% 31.7647%); + --color-surface-200: hsl(225.7143 32.3077% 25.4902%); + --color-surface-300: hsl(225.8824 32.0755% 20.7843%); + surface-400: rgb(128 140 177); + surface-500: rgb(73 90 143); + surface-600: rgb(66 81 129); + surface-700: rgb(55 68 107); + surface-800: rgb(44 54 86); + surface-900: rgb(36 44 70); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(330.1604 78.903% 46.4706%); + --color-primary: hsl(160 85.0746% 39.4118%); + --color-primary-50: hsl(160.5193 54.8337% 88.4639%); + --color-secondary: hsl(243.3962 75.3555% 58.6275%); + --color-secondary-50: hsl(243.6812 76.4014% 92.1848%); + --color-accent: hsl(198.6301 88.664% 48.4314%); + --color-accent-50: hsl(199.1094 84.6794% 90.3249%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(329.2701 67.5446% 89.7696%); +} + +[data-theme="wintry"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(214.2857 94.5946% 92.7451%); + --color-primary-200: hsl(213.3333 96.9231% 87.2549%); + --color-primary-300: hsl(211.6981 96.3636% 78.4314%); + --color-primary-400: hsl(213.1169 93.9024% 67.8431%); + --color-primary-500: hsl(217.2193 91.2195% 59.8039%); + --color-primary-600: hsl(221.2121 83.1933% 53.3333%); + --color-primary-700: hsl(224.2781 76.3265% 48.0392%); + --color-primary-800: hsl(225.931 70.7317% 40.1961%); + --color-primary-900: hsl(224.4444 64.2857% 32.9412%); + --color-secondary-100: hsl(204 93.75% 93.7255%); + --color-secondary-200: hsl(200.597 94.3662% 86.0784%); + --color-secondary-300: hsl(199.3701 95.4887% 73.9216%); + --color-secondary-400: hsl(198.4375 93.2039% 59.6078%); + --color-secondary-500: hsl(198.6301 88.664% 48.4314%); + --color-secondary-600: hsl(200.4061 98.01% 39.4118%); + --color-secondary-700: hsl(201.2658 96.3415% 32.1569%); + --color-secondary-800: hsl(200.9524 90% 27.451%); + --color-secondary-900: hsl(202.0408 80.3279% 23.9216%); + --color-accent-100: hsl(226.4516 100% 93.9216%); + --color-accent-200: hsl(228 96.4912% 88.8235%); + --color-accent-300: hsl(229.6552 93.5484% 81.7647%); + --color-accent-400: hsl(234.4538 89.4737% 73.9216%); + --color-accent-500: hsl(238.7324 83.5294% 66.6667%); + --color-accent-600: hsl(243.3962 75.3555% 58.6275%); + --color-accent-700: hsl(244.5205 57.9365% 50.5882%); + --color-accent-800: hsl(243.6522 54.5024% 41.3725%); + --color-accent-900: hsl(242.1687 47.4286% 34.3137%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(329.1892 67.2727% 89.2157%); + --color-danger-200: hsl(330 67.6471% 86.6667%); + --color-danger-300: hsl(330.4 68.8073% 78.6275%); + --color-danger-400: hsl(330.229 68.5864% 62.549%); + --color-danger-500: hsl(330.1604 78.903% 46.4706%); + --color-danger-600: hsl(330.3571 78.5047% 41.9608%); + --color-danger-700: hsl(330 78.6517% 34.902%); + --color-danger-800: hsl(330 78.8732% 27.8431%); + --color-danger-900: hsl(330 79.3103% 22.7451%); + --color-surface-100: hsl(210 20% 98.0392%); + --color-surface-200: hsl(220 14.2857% 95.8824%); + --color-surface-300: hsl(220 13.0435% 90.9804%); + surface-400: rgb(156 163 175); + surface-500: rgb(107 114 128); + surface-600: rgb(75 85 99); + surface-700: rgb(55 65 81); + surface-800: rgb(31 41 55); + surface-900: rgb(17 24 39); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(330.1604 78.903% 46.4706%); + --color-primary: hsl(217.2193 91.2195% 59.8039%); + --color-primary-50: hsl(214.2894 94.7383% 93.1112%); + --color-secondary: hsl(198.6301 88.664% 48.4314%); + --color-secondary-50: hsl(204.0111 93.8261% 94.0431%); + --color-accent: hsl(238.7324 83.5294% 66.6667%); + --color-accent-50: hsl(226.4169 100% 94.2217%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(329.2701 67.5446% 89.7696%); +} + +[data-theme="wintry-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(214.2857 94.5946% 92.7451%); + --color-primary-200: hsl(213.3333 96.9231% 87.2549%); + --color-primary-300: hsl(211.6981 96.3636% 78.4314%); + --color-primary-400: hsl(213.1169 93.9024% 67.8431%); + --color-primary-500: hsl(217.2193 91.2195% 59.8039%); + --color-primary-600: hsl(221.2121 83.1933% 53.3333%); + --color-primary-700: hsl(224.2781 76.3265% 48.0392%); + --color-primary-800: hsl(225.931 70.7317% 40.1961%); + --color-primary-900: hsl(224.4444 64.2857% 32.9412%); + --color-secondary-100: hsl(204 93.75% 93.7255%); + --color-secondary-200: hsl(200.597 94.3662% 86.0784%); + --color-secondary-300: hsl(199.3701 95.4887% 73.9216%); + --color-secondary-400: hsl(198.4375 93.2039% 59.6078%); + --color-secondary-500: hsl(198.6301 88.664% 48.4314%); + --color-secondary-600: hsl(200.4061 98.01% 39.4118%); + --color-secondary-700: hsl(201.2658 96.3415% 32.1569%); + --color-secondary-800: hsl(200.9524 90% 27.451%); + --color-secondary-900: hsl(202.0408 80.3279% 23.9216%); + --color-accent-100: hsl(226.4516 100% 93.9216%); + --color-accent-200: hsl(228 96.4912% 88.8235%); + --color-accent-300: hsl(229.6552 93.5484% 81.7647%); + --color-accent-400: hsl(234.4538 89.4737% 73.9216%); + --color-accent-500: hsl(238.7324 83.5294% 66.6667%); + --color-accent-600: hsl(243.3962 75.3555% 58.6275%); + --color-accent-700: hsl(244.5205 57.9365% 50.5882%); + --color-accent-800: hsl(243.6522 54.5024% 41.3725%); + --color-accent-900: hsl(242.1687 47.4286% 34.3137%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(329.1892 67.2727% 89.2157%); + --color-danger-200: hsl(330 67.6471% 86.6667%); + --color-danger-300: hsl(330.4 68.8073% 78.6275%); + --color-danger-400: hsl(330.229 68.5864% 62.549%); + --color-danger-500: hsl(330.1604 78.903% 46.4706%); + --color-danger-600: hsl(330.3571 78.5047% 41.9608%); + --color-danger-700: hsl(330 78.6517% 34.902%); + --color-danger-800: hsl(330 78.8732% 27.8431%); + --color-danger-900: hsl(330 79.3103% 22.7451%); + --color-surface-100: hsl(216.9231 19.1176% 26.6667%); + --color-surface-200: hsl(215 27.907% 16.8627%); + --color-surface-300: hsl(220.9091 39.2857% 10.9804%); + surface-400: rgb(156 163 175); + surface-500: rgb(107 114 128); + surface-600: rgb(75 85 99); + surface-700: rgb(55 65 81); + surface-800: rgb(31 41 55); + surface-900: rgb(17 24 39); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(330.1604 78.903% 46.4706%); + --color-primary: hsl(217.2193 91.2195% 59.8039%); + --color-primary-50: hsl(214.2894 94.7383% 93.1112%); + --color-secondary: hsl(198.6301 88.664% 48.4314%); + --color-secondary-50: hsl(204.0111 93.8261% 94.0431%); + --color-accent: hsl(238.7324 83.5294% 66.6667%); + --color-accent-50: hsl(226.4169 100% 94.2217%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(329.2701 67.5446% 89.7696%); +} + +[data-theme="modern"] { + --color-primary-content: hsl(0 0% 100%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(329.0909 80.4878% 91.9608%); + --color-primary-200: hsl(329.2683 80.3922% 90%); + --color-primary-300: hsl(330.4615 80.2469% 84.1176%); + --color-primary-400: hsl(330.2609 81.5603% 72.3529%); + --color-primary-500: hsl(330.3659 81.1881% 60.3922%); + --color-primary-600: hsl(330.2041 63.0901% 54.3137%); + --color-primary-700: hsl(330.2439 53.2468% 45.2941%); + --color-primary-800: hsl(330.303 53.5135% 36.2745%); + --color-primary-900: hsl(330.3704 53.6424% 29.6078%); + --color-secondary-100: hsl(188.7805 69.4915% 88.4314%); + --color-secondary-200: hsl(188.2353 69.863% 85.6863%); + --color-secondary-300: hsl(188.6747 70.9402% 77.0588%); + --color-secondary-400: hsl(188.75 70.5882% 60%); + --color-secondary-500: hsl(188.7379 94.4954% 42.7451%); + --color-secondary-600: hsl(188.7097 94.898% 38.4314%); + --color-secondary-700: hsl(188.5714 93.9024% 32.1569%); + --color-secondary-800: hsl(188.7805 93.8931% 25.6863%); + --color-secondary-900: hsl(188.9109 94.3925% 20.9804%); + --color-accent-100: hsl(172.7273 54.0984% 88.0392%); + --color-accent-200: hsl(174.1463 53.2468% 84.902%); + --color-accent-300: hsl(172.7273 54.0984% 76.0784%); + --color-accent-400: hsl(173.6842 53.271% 58.0392%); + --color-accent-500: hsl(173.4146 80.3922% 40%); + --color-accent-600: hsl(173.1081 80.4348% 36.0784%); + --color-accent-700: hsl(173.6585 80.3922% 30%); + --color-accent-800: hsl(173.8776 80.3279% 23.9216%); + --color-accent-900: hsl(173.25 80% 19.6078%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(0 85% 92.1569%); + --color-danger-200: hsl(0 84.3137% 90%); + --color-danger-300: hsl(0 85.1852% 84.1176%); + --color-danger-400: hsl(0 84.507% 72.1569%); + --color-danger-500: hsl(0 84.2365% 60.1961%); + --color-danger-600: hsl(0 65.812% 54.1176%); + --color-danger-700: hsl(0 55.6522% 45.098%); + --color-danger-800: hsl(0 55.4348% 36.0784%); + --color-danger-900: hsl(0 56% 29.4118%); + --color-surface-100: hsl(240 84% 95.098%); + --color-surface-200: hsl(240 82.3529% 93.3333%); + --color-surface-300: hsl(238.3333 85.7143% 91.7647%); + surface-400: rgb(146 148 245); + surface-500: rgb(99 102 241); + surface-600: rgb(89 92 217); + surface-700: rgb(74 77 181); + surface-800: rgb(59 61 145); + surface-900: rgb(49 50 118); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(0 84.2365% 60.1961%); + --color-primary: hsl(330.3659 81.1881% 60.3922%); + --color-primary-50: hsl(329.1599 80.7897% 92.3751%); + --color-secondary: hsl(188.7379 94.4954% 42.7451%); + --color-secondary-50: hsl(188.7824 69.4811% 89.0237%); + --color-accent: hsl(173.4146 80.3922% 40%); + --color-accent-50: hsl(172.6855 54.0885% 88.6496%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(0.0349 85.3775% 92.5596%); +} + +[data-theme="modern-dark"] { + --color-primary-content: hsl(0 0% 100%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(329.0909 80.4878% 91.9608%); + --color-primary-200: hsl(329.2683 80.3922% 90%); + --color-primary-300: hsl(330.4615 80.2469% 84.1176%); + --color-primary-400: hsl(330.2609 81.5603% 72.3529%); + --color-primary-500: hsl(330.3659 81.1881% 60.3922%); + --color-primary-600: hsl(330.2041 63.0901% 54.3137%); + --color-primary-700: hsl(330.2439 53.2468% 45.2941%); + --color-primary-800: hsl(330.303 53.5135% 36.2745%); + --color-primary-900: hsl(330.3704 53.6424% 29.6078%); + --color-secondary-100: hsl(188.7805 69.4915% 88.4314%); + --color-secondary-200: hsl(188.2353 69.863% 85.6863%); + --color-secondary-300: hsl(188.6747 70.9402% 77.0588%); + --color-secondary-400: hsl(188.75 70.5882% 60%); + --color-secondary-500: hsl(188.7379 94.4954% 42.7451%); + --color-secondary-600: hsl(188.7097 94.898% 38.4314%); + --color-secondary-700: hsl(188.5714 93.9024% 32.1569%); + --color-secondary-800: hsl(188.7805 93.8931% 25.6863%); + --color-secondary-900: hsl(188.9109 94.3925% 20.9804%); + --color-accent-100: hsl(172.7273 54.0984% 88.0392%); + --color-accent-200: hsl(174.1463 53.2468% 84.902%); + --color-accent-300: hsl(172.7273 54.0984% 76.0784%); + --color-accent-400: hsl(173.6842 53.271% 58.0392%); + --color-accent-500: hsl(173.4146 80.3922% 40%); + --color-accent-600: hsl(173.1081 80.4348% 36.0784%); + --color-accent-700: hsl(173.6585 80.3922% 30%); + --color-accent-800: hsl(173.8776 80.3279% 23.9216%); + --color-accent-900: hsl(173.25 80% 19.6078%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.3333 84.9057% 89.6078%); + --color-warning-200: hsl(45.2632 85.0746% 86.8627%); + --color-warning-300: hsl(45.4945 85.0467% 79.0196%); + --color-warning-400: hsl(45.5696 84.0426% 63.1373%); + --color-warning-500: hsl(45.3982 93.3884% 47.451%); + --color-warning-600: hsl(45.2941 93.578% 42.7451%); + --color-warning-700: hsl(45.1765 93.4066% 35.6863%); + --color-warning-800: hsl(45.3333 93.1034% 28.4314%); + --color-warning-900: hsl(45.4054 93.2773% 23.3333%); + --color-danger-100: hsl(0 85% 92.1569%); + --color-danger-200: hsl(0 84.3137% 90%); + --color-danger-300: hsl(0 85.1852% 84.1176%); + --color-danger-400: hsl(0 84.507% 72.1569%); + --color-danger-500: hsl(0 84.2365% 60.1961%); + --color-danger-600: hsl(0 65.812% 54.1176%); + --color-danger-700: hsl(0 55.6522% 45.098%); + --color-danger-800: hsl(0 55.4348% 36.0784%); + --color-danger-900: hsl(0 56% 29.4118%); + --color-surface-100: hsl(238.3178 41.9608% 50%); + --color-surface-200: hsl(238.6047 42.1569% 40%); + --color-surface-300: hsl(239.1304 41.3174% 32.7451%); + surface-400: rgb(146 148 245); + surface-500: rgb(99 102 241); + surface-600: rgb(89 92 217); + surface-700: rgb(74 77 181); + surface-800: rgb(59 61 145); + surface-900: rgb(49 50 118); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(45.3982 93.3884% 47.451%); + --color-danger: hsl(0 84.2365% 60.1961%); + --color-primary: hsl(330.3659 81.1881% 60.3922%); + --color-primary-50: hsl(329.1599 80.7897% 92.3751%); + --color-secondary: hsl(188.7379 94.4954% 42.7451%); + --color-secondary-50: hsl(188.7824 69.4811% 89.0237%); + --color-accent: hsl(173.4146 80.3922% 40%); + --color-accent-50: hsl(172.6855 54.0885% 88.6496%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.3431 84.8929% 90.1357%); + --color-danger-50: hsl(0.0349 85.3775% 92.5596%); +} + +[data-theme="rocket"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(188.7805 69.4915% 88.4314%); + --color-primary-200: hsl(188.2353 69.863% 85.6863%); + --color-primary-300: hsl(188.6747 70.9402% 77.0588%); + --color-primary-400: hsl(188.75 70.5882% 60%); + --color-primary-500: hsl(188.7379 94.4954% 42.7451%); + --color-primary-600: hsl(188.7097 94.898% 38.4314%); + --color-primary-700: hsl(188.5714 93.9024% 32.1569%); + --color-primary-800: hsl(188.7805 93.8931% 25.6863%); + --color-primary-900: hsl(188.9109 94.3925% 20.9804%); + --color-secondary-100: hsl(217.2973 90.2439% 91.9608%); + --color-secondary-200: hsl(217.0213 92.1569% 90%); + --color-secondary-300: hsl(217.2973 90.2439% 83.9216%); + --color-secondary-400: hsl(217.0992 91.6084% 71.9608%); + --color-secondary-500: hsl(217.2193 91.2195% 59.8039%); + --color-secondary-600: hsl(217.1429 71.1864% 53.7255%); + --color-secondary-700: hsl(217.0213 61.5721% 44.902%); + --color-secondary-800: hsl(217.1681 61.7486% 35.8824%); + --color-secondary-900: hsl(217.1739 61.3333% 29.4118%); + --color-accent-100: hsl(271.875 88.8889% 92.9412%); + --color-accent-200: hsl(270 90.9091% 91.3725%); + --color-accent-300: hsl(270.4615 91.5493% 86.0784%); + --color-accent-400: hsl(270.7965 90.4% 75.4902%); + --color-accent-500: hsl(270.7407 91.0112% 65.098%); + --color-accent-600: hsl(270.6207 68.7204% 58.6275%); + --color-accent-700: hsl(270.7438 48.5944% 48.8235%); + --color-accent-800: hsl(270.9278 48.7437% 39.0196%); + --color-accent-900: hsl(270.3797 48.4663% 31.9608%); + --color-success-100: hsl(102.1622 64.9123% 88.8235%); + --color-success-200: hsl(102.6667 63.3803% 86.0784%); + --color-success-300: hsl(101.9178 63.4783% 77.451%); + --color-success-400: hsl(101.7188 64% 60.7843%); + --color-success-500: hsl(101.8681 81.25% 43.9216%); + --color-success-600: hsl(102.0732 81.1881% 39.6078%); + --color-success-700: hsl(101.9118 80.9524% 32.9412%); + --color-success-800: hsl(101.8349 80.7407% 26.4706%); + --color-success-900: hsl(101.7978 81.6514% 21.3725%); + --color-warning-100: hsl(45.3659 91.1111% 91.1765%); + --color-warning-200: hsl(45.6 89.2857% 89.0196%); + --color-warning-300: hsl(44.4444 91.0112% 82.549%); + --color-warning-400: hsl(45.1064 89.8089% 69.2157%); + --color-warning-500: hsl(44.8515 90.1786% 56.0784%); + --color-warning-600: hsl(44.8352 72.2222% 50.5882%); + --color-warning-700: hsl(44.9007 70.2326% 42.1569%); + --color-warning-800: hsl(45.124 70.7602% 33.5294%); + --color-warning-900: hsl(44.8485 70.2128% 27.6471%); + --color-danger-100: hsl(342.2222 47.3684% 88.8235%); + --color-danger-200: hsl(341.1429 49.2958% 86.0784%); + --color-danger-300: hsl(342.2222 47.3684% 77.6471%); + --color-danger-400: hsl(341.875 48% 60.7843%); + --color-danger-500: hsl(342.0438 60.8889% 44.1176%); + --color-danger-600: hsl(341.9512 60.5911% 39.8039%); + --color-danger-700: hsl(341.9417 60.9467% 33.1373%); + --color-danger-800: hsl(341.9277 61.4815% 26.4706%); + --color-danger-900: hsl(342.0896 60.3604% 21.7647%); + --color-surface-100: hsl(220 15% 92.1569%); + --color-surface-200: hsl(217.5 14.8148% 89.4118%); + --color-surface-300: hsl(216 14.7059% 86.6667%); + surface-400: rgb(147 158 174); + surface-500: rgb(100 116 139); + surface-600: rgb(90 104 125); + surface-700: rgb(75 87 104); + surface-800: rgb(60 70 83); + surface-900: rgb(49 57 68); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(101.8681 81.25% 43.9216%); + --color-warning: hsl(44.8515 90.1786% 56.0784%); + --color-danger: hsl(342.0438 60.8889% 44.1176%); + --color-primary: hsl(188.7379 94.4954% 42.7451%); + --color-primary-50: hsl(188.7824 69.4811% 89.0237%); + --color-secondary: hsl(217.2193 91.2195% 59.8039%); + --color-secondary-50: hsl(217.2953 90.4058% 92.3659%); + --color-accent: hsl(270.7407 91.0112% 65.098%); + --color-accent-50: hsl(271.8354 89.0885% 93.3015%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(102.1849 64.9768% 89.3912%); + --color-warning-50: hsl(45.3756 91.104% 91.6245%); + --color-danger-50: hsl(342.2736 47.511% 89.3875%); +} + +[data-theme="rocket-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(188.7805 69.4915% 88.4314%); + --color-primary-200: hsl(188.2353 69.863% 85.6863%); + --color-primary-300: hsl(188.6747 70.9402% 77.0588%); + --color-primary-400: hsl(188.75 70.5882% 60%); + --color-primary-500: hsl(188.7379 94.4954% 42.7451%); + --color-primary-600: hsl(188.7097 94.898% 38.4314%); + --color-primary-700: hsl(188.5714 93.9024% 32.1569%); + --color-primary-800: hsl(188.7805 93.8931% 25.6863%); + --color-primary-900: hsl(188.9109 94.3925% 20.9804%); + --color-secondary-100: hsl(217.2973 90.2439% 91.9608%); + --color-secondary-200: hsl(217.0213 92.1569% 90%); + --color-secondary-300: hsl(217.2973 90.2439% 83.9216%); + --color-secondary-400: hsl(217.0992 91.6084% 71.9608%); + --color-secondary-500: hsl(217.2193 91.2195% 59.8039%); + --color-secondary-600: hsl(217.1429 71.1864% 53.7255%); + --color-secondary-700: hsl(217.0213 61.5721% 44.902%); + --color-secondary-800: hsl(217.1681 61.7486% 35.8824%); + --color-secondary-900: hsl(217.1739 61.3333% 29.4118%); + --color-accent-100: hsl(271.875 88.8889% 92.9412%); + --color-accent-200: hsl(270 90.9091% 91.3725%); + --color-accent-300: hsl(270.4615 91.5493% 86.0784%); + --color-accent-400: hsl(270.7965 90.4% 75.4902%); + --color-accent-500: hsl(270.7407 91.0112% 65.098%); + --color-accent-600: hsl(270.6207 68.7204% 58.6275%); + --color-accent-700: hsl(270.7438 48.5944% 48.8235%); + --color-accent-800: hsl(270.9278 48.7437% 39.0196%); + --color-accent-900: hsl(270.3797 48.4663% 31.9608%); + --color-success-100: hsl(102.1622 64.9123% 88.8235%); + --color-success-200: hsl(102.6667 63.3803% 86.0784%); + --color-success-300: hsl(101.9178 63.4783% 77.451%); + --color-success-400: hsl(101.7188 64% 60.7843%); + --color-success-500: hsl(101.8681 81.25% 43.9216%); + --color-success-600: hsl(102.0732 81.1881% 39.6078%); + --color-success-700: hsl(101.9118 80.9524% 32.9412%); + --color-success-800: hsl(101.8349 80.7407% 26.4706%); + --color-success-900: hsl(101.7978 81.6514% 21.3725%); + --color-warning-100: hsl(45.3659 91.1111% 91.1765%); + --color-warning-200: hsl(45.6 89.2857% 89.0196%); + --color-warning-300: hsl(44.4444 91.0112% 82.549%); + --color-warning-400: hsl(45.1064 89.8089% 69.2157%); + --color-warning-500: hsl(44.8515 90.1786% 56.0784%); + --color-warning-600: hsl(44.8352 72.2222% 50.5882%); + --color-warning-700: hsl(44.9007 70.2326% 42.1569%); + --color-warning-800: hsl(45.124 70.7602% 33.5294%); + --color-warning-900: hsl(44.8485 70.2128% 27.6471%); + --color-danger-100: hsl(342.2222 47.3684% 88.8235%); + --color-danger-200: hsl(341.1429 49.2958% 86.0784%); + --color-danger-300: hsl(342.2222 47.3684% 77.6471%); + --color-danger-400: hsl(341.875 48% 60.7843%); + --color-danger-500: hsl(342.0438 60.8889% 44.1176%); + --color-danger-600: hsl(341.9512 60.5911% 39.8039%); + --color-danger-700: hsl(341.9417 60.9467% 33.1373%); + --color-danger-800: hsl(341.9277 61.4815% 26.4706%); + --color-danger-900: hsl(342.0896 60.3604% 21.7647%); + --color-surface-100: hsl(215.1724 16.2011% 35.098%); + --color-surface-200: hsl(213.913 16.0839% 28.0392%); + --color-surface-300: hsl(214.7368 16.2393% 22.9412%); + surface-400: rgb(147 158 174); + surface-500: rgb(100 116 139); + surface-600: rgb(90 104 125); + surface-700: rgb(75 87 104); + surface-800: rgb(60 70 83); + surface-900: rgb(49 57 68); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(101.8681 81.25% 43.9216%); + --color-warning: hsl(44.8515 90.1786% 56.0784%); + --color-danger: hsl(342.0438 60.8889% 44.1176%); + --color-primary: hsl(188.7379 94.4954% 42.7451%); + --color-primary-50: hsl(188.7824 69.4811% 89.0237%); + --color-secondary: hsl(217.2193 91.2195% 59.8039%); + --color-secondary-50: hsl(217.2953 90.4058% 92.3659%); + --color-accent: hsl(270.7407 91.0112% 65.098%); + --color-accent-50: hsl(271.8354 89.0885% 93.3015%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(102.1849 64.9768% 89.3912%); + --color-warning-50: hsl(45.3756 91.104% 91.6245%); + --color-danger-50: hsl(342.2736 47.511% 89.3875%); +} + +[data-theme="seafoam"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(176 45.4545% 93.5294%); + --color-primary-200: hsl(176.6667 42.8571% 91.7647%); + --color-primary-300: hsl(175.8621 43.2836% 86.8627%); + --color-primary-400: hsl(176.5385 44.0678% 76.8627%); + --color-primary-500: hsl(175.9459 44.0476% 67.0588%); + --color-primary-600: hsl(176.3636 32.6733% 60.3922%); + --color-primary-700: hsl(175.6364 21.7391% 50.3922%); + --color-primary-800: hsl(176 21.9512% 40.1961%); + --color-primary-900: hsl(175 21.4286% 32.9412%); + --color-secondary-100: hsl(222 12.8205% 84.7059%); + --color-secondary-200: hsl(221.5385 13.4021% 80.9804%); + --color-secondary-300: hsl(220 13.3758% 69.2157%); + --color-secondary-400: hsl(220 15.2542% 46.2745%); + --color-secondary-500: hsl(219.2308 44.0678% 23.1373%); + --color-secondary-600: hsl(219.5745 43.9252% 20.9804%); + --color-secondary-700: hsl(220 43.8202% 17.451%); + --color-secondary-800: hsl(218.7097 43.662% 13.9216%); + --color-secondary-900: hsl(219.2308 44.8276% 11.3725%); + --color-accent-100: hsl(14.1176 100% 90%); + --color-accent-200: hsl(15 100% 87.451%); + --color-accent-300: hsl(14.1176 100% 80%); + --color-accent-400: hsl(14.1573 100% 65.098%); + --color-accent-500: hsl(14.3529 100% 50%); + --color-accent-600: hsl(14.3478 100% 45.098%); + --color-accent-700: hsl(14.4503 100% 37.451%); + --color-accent-800: hsl(14.5098 100% 30%); + --color-accent-900: hsl(14.4 100% 24.5098%); + --color-success-100: hsl(161.3333 81.8182% 89.2157%); + --color-success-200: hsl(161.7857 82.3529% 86.6667%); + --color-success-300: hsl(162 81.8182% 78.4314%); + --color-success-400: hsl(161.9231 81.25% 62.3529%); + --color-success-500: hsl(161.9731 94.8936% 46.0784%); + --color-success-600: hsl(162.0896 95.2607% 41.3725%); + --color-success-700: hsl(162.0359 94.3503% 34.7059%); + --color-success-800: hsl(161.9549 94.3262% 27.6471%); + --color-success-900: hsl(161.8349 94.7826% 22.549%); + --color-warning-100: hsl(58 78.9474% 92.549%); + --color-warning-200: hsl(58.3784 78.7234% 90.7843%); + --color-warning-300: hsl(57.9661 78.6667% 85.2941%); + --color-warning-400: hsl(58.2524 77.4436% 73.9216%); + --color-warning-500: hsl(57.9592 77.7778% 62.9412%); + --color-warning-600: hsl(57.7444 60.181% 56.6667%); + --color-warning-700: hsl(57.8378 46.0581% 47.2549%); + --color-warning-800: hsl(57.9545 45.8333% 37.6471%); + --color-warning-900: hsl(57.5 45.5696% 30.9804%); + --color-danger-100: hsl(0 60.8696% 90.9804%); + --color-danger-200: hsl(0 61.4035% 88.8235%); + --color-danger-300: hsl(0 60.8696% 81.9608%); + --color-danger-400: hsl(0 61.25% 68.6275%); + --color-danger-500: hsl(0 60.8696% 54.902%); + --color-danger-600: hsl(0 50% 49.4118%); + --color-danger-700: hsl(0 49.763% 41.3725%); + --color-danger-800: hsl(0 50% 32.9412%); + --color-danger-900: hsl(0 50.365% 26.8627%); + --color-surface-100: hsl(182.2222 69.2308% 92.3529%); + --color-surface-200: hsl(180 66.0377% 89.6078%); + --color-surface-300: hsl(180 66.1538% 87.2549%); + surface-400: rgb(102 223 225); + surface-500: rgb(37 209 212); + surface-600: rgb(33 188 191); + surface-700: rgb(28 157 159); + surface-800: rgb(22 125 127); + surface-900: rgb(18 102 104); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(161.9731 94.8936% 46.0784%); + --color-warning: hsl(57.9592 77.7778% 62.9412%); + --color-danger: hsl(0 60.8696% 54.902%); + --color-primary: hsl(175.9459 44.0476% 67.0588%); + --color-primary-50: hsl(175.9851 45.4522% 93.8545%); + --color-secondary: hsl(219.2308 44.0678% 23.1373%); + --color-secondary-50: hsl(221.997 12.8364% 85.4596%); + --color-accent: hsl(14.3529 100% 50%); + --color-accent-50: hsl(14.1448 100% 90.4963%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(161.2453 81.8677% 89.7845%); + --color-warning-50: hsl(58.0387 78.8938% 92.9257%); + --color-danger-50: hsl(0.0284 61.0823% 91.437%); +} + +[data-theme="seafoam-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(176 45.4545% 93.5294%); + --color-primary-200: hsl(176.6667 42.8571% 91.7647%); + --color-primary-300: hsl(175.8621 43.2836% 86.8627%); + --color-primary-400: hsl(176.5385 44.0678% 76.8627%); + --color-primary-500: hsl(175.9459 44.0476% 67.0588%); + --color-primary-600: hsl(176.3636 32.6733% 60.3922%); + --color-primary-700: hsl(175.6364 21.7391% 50.3922%); + --color-primary-800: hsl(176 21.9512% 40.1961%); + --color-primary-900: hsl(175 21.4286% 32.9412%); + --color-secondary-100: hsl(222 12.8205% 84.7059%); + --color-secondary-200: hsl(221.5385 13.4021% 80.9804%); + --color-secondary-300: hsl(220 13.3758% 69.2157%); + --color-secondary-400: hsl(220 15.2542% 46.2745%); + --color-secondary-500: hsl(219.2308 44.0678% 23.1373%); + --color-secondary-600: hsl(219.5745 43.9252% 20.9804%); + --color-secondary-700: hsl(220 43.8202% 17.451%); + --color-secondary-800: hsl(218.7097 43.662% 13.9216%); + --color-secondary-900: hsl(219.2308 44.8276% 11.3725%); + --color-accent-100: hsl(14.1176 100% 90%); + --color-accent-200: hsl(15 100% 87.451%); + --color-accent-300: hsl(14.1176 100% 80%); + --color-accent-400: hsl(14.1573 100% 65.098%); + --color-accent-500: hsl(14.3529 100% 50%); + --color-accent-600: hsl(14.3478 100% 45.098%); + --color-accent-700: hsl(14.4503 100% 37.451%); + --color-accent-800: hsl(14.5098 100% 30%); + --color-accent-900: hsl(14.4 100% 24.5098%); + --color-success-100: hsl(161.3333 81.8182% 89.2157%); + --color-success-200: hsl(161.7857 82.3529% 86.6667%); + --color-success-300: hsl(162 81.8182% 78.4314%); + --color-success-400: hsl(161.9231 81.25% 62.3529%); + --color-success-500: hsl(161.9731 94.8936% 46.0784%); + --color-success-600: hsl(162.0896 95.2607% 41.3725%); + --color-success-700: hsl(162.0359 94.3503% 34.7059%); + --color-success-800: hsl(161.9549 94.3262% 27.6471%); + --color-success-900: hsl(161.8349 94.7826% 22.549%); + --color-warning-100: hsl(58 78.9474% 92.549%); + --color-warning-200: hsl(58.3784 78.7234% 90.7843%); + --color-warning-300: hsl(57.9661 78.6667% 85.2941%); + --color-warning-400: hsl(58.2524 77.4436% 73.9216%); + --color-warning-500: hsl(57.9592 77.7778% 62.9412%); + --color-warning-600: hsl(57.7444 60.181% 56.6667%); + --color-warning-700: hsl(57.8378 46.0581% 47.2549%); + --color-warning-800: hsl(57.9545 45.8333% 37.6471%); + --color-warning-900: hsl(57.5 45.5696% 30.9804%); + --color-danger-100: hsl(0 60.8696% 90.9804%); + --color-danger-200: hsl(0 61.4035% 88.8235%); + --color-danger-300: hsl(0 60.8696% 81.9608%); + --color-danger-400: hsl(0 61.25% 68.6275%); + --color-danger-500: hsl(0 60.8696% 54.902%); + --color-danger-600: hsl(0 50% 49.4118%); + --color-danger-700: hsl(0 49.763% 41.3725%); + --color-danger-800: hsl(0 50% 32.9412%); + --color-danger-900: hsl(0 50.365% 26.8627%); + --color-surface-100: hsl(180.916 70.0535% 36.6667%); + --color-surface-200: hsl(181.1429 70.4698% 29.2157%); + --color-surface-300: hsl(181.3953 70.4918% 23.9216%); + surface-400: rgb(102 223 225); + surface-500: rgb(37 209 212); + surface-600: rgb(33 188 191); + surface-700: rgb(28 157 159); + surface-800: rgb(22 125 127); + surface-900: rgb(18 102 104); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(161.9731 94.8936% 46.0784%); + --color-warning: hsl(57.9592 77.7778% 62.9412%); + --color-danger: hsl(0 60.8696% 54.902%); + --color-primary: hsl(175.9459 44.0476% 67.0588%); + --color-primary-50: hsl(175.9851 45.4522% 93.8545%); + --color-secondary: hsl(219.2308 44.0678% 23.1373%); + --color-secondary-50: hsl(221.997 12.8364% 85.4596%); + --color-accent: hsl(14.3529 100% 50%); + --color-accent-50: hsl(14.1448 100% 90.4963%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(161.2453 81.8677% 89.7845%); + --color-warning-50: hsl(58.0387 78.8938% 92.9257%); + --color-danger-50: hsl(0.0284 61.0823% 91.437%); +} + +[data-theme="vintage"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 0%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(31.4286 84% 90.1961%); + --color-primary-200: hsl(31.1538 83.871% 87.8431%); + --color-primary-300: hsl(31.4286 84% 80.3922%); + --color-primary-400: hsl(31.0345 82.8571% 65.6863%); + --color-primary-500: hsl(31.1538 83.2% 50.9804%); + --color-primary-600: hsl(31.2766 80.3419% 45.8824%); + --color-primary-700: hsl(31.1538 79.5918% 38.4314%); + --color-primary-800: hsl(30.9677 79.4872% 30.5882%); + --color-primary-900: hsl(31.1765 79.6875% 25.098%); + --color-secondary-100: hsl(136.3636 35.4839% 93.9216%); + --color-secondary-200: hsl(137.1429 36.8421% 92.549%); + --color-secondary-300: hsl(136.3636 35.4839% 87.8431%); + --color-secondary-400: hsl(135.3846 36.4486% 79.0196%); + --color-secondary-500: hsl(135.2727 35.9477% 70%); + --color-secondary-600: hsl(135.9184 25.9259% 62.9412%); + --color-secondary-700: hsl(135.7143 17.3554% 52.549%); + --color-secondary-800: hsl(134.5455 15.3488% 42.1569%); + --color-secondary-900: hsl(135.5556 15.4286% 34.3137%); + --color-accent-100: hsl(188.7805 69.4915% 88.4314%); + --color-accent-200: hsl(188.2353 69.863% 85.6863%); + --color-accent-300: hsl(188.6747 70.9402% 77.0588%); + --color-accent-400: hsl(188.75 70.5882% 60%); + --color-accent-500: hsl(188.7379 94.4954% 42.7451%); + --color-accent-600: hsl(188.7097 94.898% 38.4314%); + --color-accent-700: hsl(188.5714 93.9024% 32.1569%); + --color-accent-800: hsl(188.7805 93.8931% 25.6863%); + --color-accent-900: hsl(188.9109 94.3925% 20.9804%); + --color-success-100: hsl(100.9091 52.381% 91.7647%); + --color-success-200: hsl(100 50.9434% 89.6078%); + --color-success-300: hsl(98.1818 51.1628% 83.1373%); + --color-success-400: hsl(98.961 51.6779% 70.7843%); + --color-success-500: hsl(98.7273 51.4019% 58.0392%); + --color-success-600: hsl(98.7879 40.7407% 52.3529%); + --color-success-700: hsl(98.7805 36.9369% 43.5294%); + --color-success-800: hsl(99.0909 37.0787% 34.902%); + --color-success-900: hsl(98.4906 36.5517% 28.4314%); + --color-warning-100: hsl(39.5122 87.234% 90.7843%); + --color-warning-200: hsl(39.2308 89.6552% 88.6275%); + --color-warning-300: hsl(39.759 89.2473% 81.7647%); + --color-warning-400: hsl(39.7241 88.9571% 68.0392%); + --color-warning-500: hsl(39.7101 88.8412% 54.3137%); + --color-warning-600: hsl(39.6774 74.4% 49.0196%); + --color-warning-700: hsl(39.6154 75% 40.7843%); + --color-warning-800: hsl(39.6774 74.6988% 32.549%); + --color-warning-900: hsl(39.4118 75% 26.6667%); + --color-danger-100: hsl(3.1579 54.2857% 93.1373%); + --color-danger-200: hsl(5 54.5455% 91.3725%); + --color-danger-300: hsl(3.2432 52.1127% 86.0784%); + --color-danger-400: hsl(3.6923 52.8455% 75.8824%); + --color-danger-500: hsl(3.871 52.5424% 65.2941%); + --color-danger-600: hsl(3.5714 40% 58.8235%); + --color-danger-700: hsl(4.2857 28% 49.0196%); + --color-danger-800: hsl(4.2857 28% 39.2157%); + --color-danger-900: hsl(4 27.6074% 31.9608%); + --color-surface-100: hsl(30 3.3333% 88.2353%); + --color-surface-200: hsl(20 3.7975% 84.5098%); + --color-surface-300: hsl(20 3.0303% 80.5882%); + surface-400: rgb(121 115 111); + surface-500: rgb(63 55 49); + surface-600: rgb(57 50 44); + surface-700: rgb(47 41 37); + surface-800: rgb(38 33 29); + surface-900: rgb(31 27 24); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(98.7273 51.4019% 58.0392%); + --color-warning: hsl(39.7101 88.8412% 54.3137%); + --color-danger: hsl(3.871 52.5424% 65.2941%); + --color-primary: hsl(31.1538 83.2% 50.9804%); + --color-primary-50: hsl(31.4148 84.0933% 90.6922%); + --color-secondary: hsl(135.2727 35.9477% 70%); + --color-secondary-50: hsl(136.3397 35.4883% 94.2255%); + --color-accent: hsl(188.7379 94.4954% 42.7451%); + --color-accent-50: hsl(188.7824 69.4811% 89.0237%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(100.9235 52.4104% 92.1781%); + --color-warning-50: hsl(39.5093 87.2642% 91.251%); + --color-danger-50: hsl(3.1696 54.3994% 93.4821%); +} + +[data-theme="vintage-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 0%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(31.4286 84% 90.1961%); + --color-primary-200: hsl(31.1538 83.871% 87.8431%); + --color-primary-300: hsl(31.4286 84% 80.3922%); + --color-primary-400: hsl(31.0345 82.8571% 65.6863%); + --color-primary-500: hsl(31.1538 83.2% 50.9804%); + --color-primary-600: hsl(31.2766 80.3419% 45.8824%); + --color-primary-700: hsl(31.1538 79.5918% 38.4314%); + --color-primary-800: hsl(30.9677 79.4872% 30.5882%); + --color-primary-900: hsl(31.1765 79.6875% 25.098%); + --color-secondary-100: hsl(136.3636 35.4839% 93.9216%); + --color-secondary-200: hsl(137.1429 36.8421% 92.549%); + --color-secondary-300: hsl(136.3636 35.4839% 87.8431%); + --color-secondary-400: hsl(135.3846 36.4486% 79.0196%); + --color-secondary-500: hsl(135.2727 35.9477% 70%); + --color-secondary-600: hsl(135.9184 25.9259% 62.9412%); + --color-secondary-700: hsl(135.7143 17.3554% 52.549%); + --color-secondary-800: hsl(134.5455 15.3488% 42.1569%); + --color-secondary-900: hsl(135.5556 15.4286% 34.3137%); + --color-accent-100: hsl(188.7805 69.4915% 88.4314%); + --color-accent-200: hsl(188.2353 69.863% 85.6863%); + --color-accent-300: hsl(188.6747 70.9402% 77.0588%); + --color-accent-400: hsl(188.75 70.5882% 60%); + --color-accent-500: hsl(188.7379 94.4954% 42.7451%); + --color-accent-600: hsl(188.7097 94.898% 38.4314%); + --color-accent-700: hsl(188.5714 93.9024% 32.1569%); + --color-accent-800: hsl(188.7805 93.8931% 25.6863%); + --color-accent-900: hsl(188.9109 94.3925% 20.9804%); + --color-success-100: hsl(100.9091 52.381% 91.7647%); + --color-success-200: hsl(100 50.9434% 89.6078%); + --color-success-300: hsl(98.1818 51.1628% 83.1373%); + --color-success-400: hsl(98.961 51.6779% 70.7843%); + --color-success-500: hsl(98.7273 51.4019% 58.0392%); + --color-success-600: hsl(98.7879 40.7407% 52.3529%); + --color-success-700: hsl(98.7805 36.9369% 43.5294%); + --color-success-800: hsl(99.0909 37.0787% 34.902%); + --color-success-900: hsl(98.4906 36.5517% 28.4314%); + --color-warning-100: hsl(39.5122 87.234% 90.7843%); + --color-warning-200: hsl(39.2308 89.6552% 88.6275%); + --color-warning-300: hsl(39.759 89.2473% 81.7647%); + --color-warning-400: hsl(39.7241 88.9571% 68.0392%); + --color-warning-500: hsl(39.7101 88.8412% 54.3137%); + --color-warning-600: hsl(39.6774 74.4% 49.0196%); + --color-warning-700: hsl(39.6154 75% 40.7843%); + --color-warning-800: hsl(39.6774 74.6988% 32.549%); + --color-warning-900: hsl(39.4118 75% 26.6667%); + --color-danger-100: hsl(3.1579 54.2857% 93.1373%); + --color-danger-200: hsl(5 54.5455% 91.3725%); + --color-danger-300: hsl(3.2432 52.1127% 86.0784%); + --color-danger-400: hsl(3.6923 52.8455% 75.8824%); + --color-danger-500: hsl(3.871 52.5424% 65.2941%); + --color-danger-600: hsl(3.5714 40% 58.8235%); + --color-danger-700: hsl(4.2857 28% 49.0196%); + --color-danger-800: hsl(4.2857 28% 39.2157%); + --color-danger-900: hsl(4 27.6074% 31.9608%); + --color-surface-100: hsl(24 11.9048% 16.4706%); + --color-surface-200: hsl(26.6667 13.4328% 13.1373%); + --color-surface-300: hsl(25.7143 12.7273% 10.7843%); + surface-400: rgb(121 115 111); + surface-500: rgb(63 55 49); + surface-600: rgb(57 50 44); + surface-700: rgb(47 41 37); + surface-800: rgb(38 33 29); + surface-900: rgb(31 27 24); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(98.7273 51.4019% 58.0392%); + --color-warning: hsl(39.7101 88.8412% 54.3137%); + --color-danger: hsl(3.871 52.5424% 65.2941%); + --color-primary: hsl(31.1538 83.2% 50.9804%); + --color-primary-50: hsl(31.4148 84.0933% 90.6922%); + --color-secondary: hsl(135.2727 35.9477% 70%); + --color-secondary-50: hsl(136.3397 35.4883% 94.2255%); + --color-accent: hsl(188.7379 94.4954% 42.7451%); + --color-accent-50: hsl(188.7824 69.4811% 89.0237%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(100.9235 52.4104% 92.1781%); + --color-warning-50: hsl(39.5093 87.2642% 91.251%); + --color-danger-50: hsl(3.1696 54.3994% 93.4821%); +} + +[data-theme="sahara"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(38.3333 81.8182% 91.3725%); + --color-primary-200: hsl(38.6667 81.8182% 89.2157%); + --color-primary-300: hsl(38.3333 81.8182% 82.7451%); + --color-primary-400: hsl(38.4375 83.1169% 69.8039%); + --color-primary-500: hsl(38.2418 82.7273% 56.8627%); + --color-primary-600: hsl(38.2822 65.4618% 51.1765%); + --color-primary-700: hsl(38.3824 62.3853% 42.7451%); + --color-primary-800: hsl(38.1818 63.2184% 34.1176%); + --color-primary-900: hsl(38 63.3803% 27.8431%); + --color-secondary-100: hsl(171.7241 59.1837% 90.3922%); + --color-secondary-200: hsl(173.3333 58.0645% 87.8431%); + --color-secondary-300: hsl(172.7586 58% 80.3922%); + --color-secondary-400: hsl(172.9412 58.6207% 65.8824%); + --color-secondary-500: hsl(172.9655 58.2329% 51.1765%); + --color-secondary-600: hsl(172.6718 55.7447% 46.0784%); + --color-secondary-700: hsl(173.3333 55.102% 38.4314%); + --color-secondary-800: hsl(173.1034 55.414% 30.7843%); + --color-secondary-900: hsl(173.2394 55.9055% 24.902%); + --color-accent-100: hsl(86.6667 60% 94.1176%); + --color-accent-200: hsl(84.5455 57.8947% 92.549%); + --color-accent-300: hsl(84 57.377% 88.0392%); + --color-accent-400: hsl(84.7619 58.8785% 79.0196%); + --color-accent-500: hsl(84.2697 58.1699% 70%); + --color-accent-600: hsl(84.75 42.5532% 63.1373%); + --color-accent-700: hsl(84.5455 27.2727% 52.549%); + --color-accent-800: hsl(84.4444 25.2336% 41.9608%); + --color-accent-900: hsl(83.7209 24.5714% 34.3137%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.5172 74.359% 92.3529%); + --color-warning-200: hsl(45 75% 90.5882%); + --color-warning-300: hsl(44.2105 74.026% 84.902%); + --color-warning-400: hsl(45 73.5294% 73.3333%); + --color-warning-500: hsl(44.7887 73.1959% 61.9608%); + --color-warning-600: hsl(45 56.6372% 55.6863%); + --color-warning-700: hsl(44.8598 45.1477% 46.4706%); + --color-warning-800: hsl(45.1765 44.9735% 37.0588%); + --color-warning-900: hsl(45.2174 44.5161% 30.3922%); + --color-danger-100: hsl(330 65% 92.1569%); + --color-danger-200: hsl(330 64% 90.1961%); + --color-danger-300: hsl(330.5882 64.557% 84.5098%); + --color-danger-400: hsl(329.6629 64.0288% 72.7451%); + --color-danger-500: hsl(329.7638 63.8191% 60.9804%); + --color-danger-600: hsl(330 49.5652% 54.902%); + --color-danger-700: hsl(329.6842 40.7725% 45.6863%); + --color-danger-800: hsl(329.2105 40.8602% 36.4706%); + --color-danger-900: hsl(330 40.7895% 29.8039%); + --color-surface-100: hsl(348.5714 63.6364% 93.5294%); + --color-surface-200: hsl(351.4286 66.6667% 91.7647%); + --color-surface-300: hsl(349.7143 66.0377% 89.6078%); + surface-400: rgb(229 131 147); + surface-500: rgb(218 78 101); + surface-600: rgb(196 70 91); + surface-700: rgb(164 59 76); + surface-800: rgb(131 47 61); + surface-900: rgb(107 38 49); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(44.7887 73.1959% 61.9608%); + --color-danger: hsl(329.7638 63.8191% 60.9804%); + --color-primary: hsl(38.2418 82.7273% 56.8627%); + --color-primary-50: hsl(38.3297 81.8482% 91.8078%); + --color-secondary: hsl(172.9655 58.2329% 51.1765%); + --color-secondary-50: hsl(171.6868 59.1825% 90.8822%); + --color-accent: hsl(84.2697 58.1699% 70%); + --color-accent-50: hsl(86.6928 60.0216% 94.4134%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.5261 74.3486% 92.7374%); + --color-danger-50: hsl(330.0542 65.1822% 92.5558%); +} + +[data-theme="sahara-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 0%); + --color-accent-content: hsl(0 0% 0%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(38.3333 81.8182% 91.3725%); + --color-primary-200: hsl(38.6667 81.8182% 89.2157%); + --color-primary-300: hsl(38.3333 81.8182% 82.7451%); + --color-primary-400: hsl(38.4375 83.1169% 69.8039%); + --color-primary-500: hsl(38.2418 82.7273% 56.8627%); + --color-primary-600: hsl(38.2822 65.4618% 51.1765%); + --color-primary-700: hsl(38.3824 62.3853% 42.7451%); + --color-primary-800: hsl(38.1818 63.2184% 34.1176%); + --color-primary-900: hsl(38 63.3803% 27.8431%); + --color-secondary-100: hsl(171.7241 59.1837% 90.3922%); + --color-secondary-200: hsl(173.3333 58.0645% 87.8431%); + --color-secondary-300: hsl(172.7586 58% 80.3922%); + --color-secondary-400: hsl(172.9412 58.6207% 65.8824%); + --color-secondary-500: hsl(172.9655 58.2329% 51.1765%); + --color-secondary-600: hsl(172.6718 55.7447% 46.0784%); + --color-secondary-700: hsl(173.3333 55.102% 38.4314%); + --color-secondary-800: hsl(173.1034 55.414% 30.7843%); + --color-secondary-900: hsl(173.2394 55.9055% 24.902%); + --color-accent-100: hsl(86.6667 60% 94.1176%); + --color-accent-200: hsl(84.5455 57.8947% 92.549%); + --color-accent-300: hsl(84 57.377% 88.0392%); + --color-accent-400: hsl(84.7619 58.8785% 79.0196%); + --color-accent-500: hsl(84.2697 58.1699% 70%); + --color-accent-600: hsl(84.75 42.5532% 63.1373%); + --color-accent-700: hsl(84.5455 27.2727% 52.549%); + --color-accent-800: hsl(84.4444 25.2336% 41.9608%); + --color-accent-900: hsl(83.7209 24.5714% 34.3137%); + --color-success-100: hsl(84.3243 64.9123% 88.8235%); + --color-success-200: hsl(84 63.3803% 86.0784%); + --color-success-300: hsl(83.8356 64.6018% 77.8431%); + --color-success-400: hsl(83.622 63.8191% 60.9804%); + --color-success-500: hsl(83.7363 80.531% 44.3137%); + --color-success-600: hsl(83.7805 80.3922% 40%); + --color-success-700: hsl(83.8235 80% 33.3333%); + --color-success-800: hsl(83.6697 80.7407% 26.4706%); + --color-success-900: hsl(83.5955 80.1802% 21.7647%); + --color-warning-100: hsl(45.5172 74.359% 92.3529%); + --color-warning-200: hsl(45 75% 90.5882%); + --color-warning-300: hsl(44.2105 74.026% 84.902%); + --color-warning-400: hsl(45 73.5294% 73.3333%); + --color-warning-500: hsl(44.7887 73.1959% 61.9608%); + --color-warning-600: hsl(45 56.6372% 55.6863%); + --color-warning-700: hsl(44.8598 45.1477% 46.4706%); + --color-warning-800: hsl(45.1765 44.9735% 37.0588%); + --color-warning-900: hsl(45.2174 44.5161% 30.3922%); + --color-danger-100: hsl(330 65% 92.1569%); + --color-danger-200: hsl(330 64% 90.1961%); + --color-danger-300: hsl(330.5882 64.557% 84.5098%); + --color-danger-400: hsl(329.6629 64.0288% 72.7451%); + --color-danger-500: hsl(329.7638 63.8191% 60.9804%); + --color-danger-600: hsl(330 49.5652% 54.902%); + --color-danger-700: hsl(329.6842 40.7725% 45.6863%); + --color-danger-800: hsl(329.2105 40.8602% 36.4706%); + --color-danger-900: hsl(330 40.7895% 29.8039%); + --color-surface-100: hsl(350.2857 47.0852% 43.7255%); + --color-surface-200: hsl(350 47.191% 34.902%); + --color-surface-300: hsl(350.4348 47.5862% 28.4314%); + surface-400: rgb(229 131 147); + surface-500: rgb(218 78 101); + surface-600: rgb(196 70 91); + surface-700: rgb(164 59 76); + surface-800: rgb(131 47 61); + surface-900: rgb(107 38 49); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(83.7363 80.531% 44.3137%); + --color-warning: hsl(44.7887 73.1959% 61.9608%); + --color-danger: hsl(329.7638 63.8191% 60.9804%); + --color-primary: hsl(38.2418 82.7273% 56.8627%); + --color-primary-50: hsl(38.3297 81.8482% 91.8078%); + --color-secondary: hsl(172.9655 58.2329% 51.1765%); + --color-secondary-50: hsl(171.6868 59.1825% 90.8822%); + --color-accent: hsl(84.2697 58.1699% 70%); + --color-accent-50: hsl(86.6928 60.0216% 94.4134%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(84.3865 64.9546% 89.3922%); + --color-warning-50: hsl(45.5261 74.3486% 92.7374%); + --color-danger-50: hsl(330.0542 65.1822% 92.5558%); +} + +[data-theme="hamlindigo"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 100%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(222.8571 70% 96.0784%); + --color-primary-200: hsl(221.0526 76% 95.098%); + --color-primary-300: hsl(221.3793 70.7317% 91.9608%); + --color-primary-400: hsl(221.1765 71.831% 86.0784%); + --color-primary-500: hsl(221.9178 72.2772% 80.1961%); + --color-primary-600: hsl(221.8182 46.4789% 72.1569%); + --color-primary-700: hsl(221.4545 27.0936% 60.1961%); + --color-primary-800: hsl(222.2727 17.8862% 48.2353%); + --color-primary-900: hsl(221.6667 18% 39.2157%); + --color-secondary-100: hsl(40 29.4118% 90%); + --color-secondary-200: hsl(43.3333 28.125% 87.451%); + --color-secondary-300: hsl(42 29.4118% 80%); + --color-secondary-400: hsl(42.3529 28.4916% 64.902%); + --color-secondary-500: hsl(41.9178 28.6275% 50%); + --color-secondary-600: hsl(41.8182 28.6957% 45.098%); + --color-secondary-700: hsl(42.5455 28.7958% 37.451%); + --color-secondary-800: hsl(41.8605 28.1046% 30%); + --color-secondary-900: hsl(42.8571 28% 24.5098%); + --color-accent-100: hsl(192.8571 28% 90.1961%); + --color-accent-200: hsl(191.25 25.8065% 87.8431%); + --color-accent-300: hsl(191.5385 26% 80.3922%); + --color-accent-400: hsl(191.4894 26.8571% 65.6863%); + --color-accent-500: hsl(190.9091 26.4% 50.9804%); + --color-accent-600: hsl(191 25.641% 45.8824%); + --color-accent-700: hsl(191.0204 25.1282% 38.2353%); + --color-accent-800: hsl(190.5 25.641% 30.5882%); + --color-accent-900: hsl(191.25 25% 25.098%); + --color-success-100: hsl(161.25 27.5862% 88.6275%); + --color-success-200: hsl(164.2105 26.0274% 85.6863%); + --color-success-300: hsl(162.5806 26.4957% 77.0588%); + --color-success-400: hsl(162.2222 26.4706% 60%); + --color-success-500: hsl(162.0779 35.1598% 42.9412%); + --color-success-600: hsl(162.6087 35.0254% 38.6275%); + --color-success-700: hsl(162.4138 35.3659% 32.1569%); + --color-success-800: hsl(161.7391 34.8485% 25.8824%); + --color-success-900: hsl(161.0526 35.1852% 21.1765%); + --color-warning-100: hsl(41.25 69.5652% 90.9804%); + --color-warning-200: hsl(41.5385 68.4211% 88.8235%); + --color-warning-300: hsl(41.6129 67.3913% 81.9608%); + --color-warning-400: hsl(41.2844 67.7019% 68.4314%); + --color-warning-500: hsl(41.1538 67.8261% 54.902%); + --color-warning-600: hsl(41.1429 55.5556% 49.4118%); + --color-warning-700: hsl(41.0256 55.4502% 41.3725%); + --color-warning-800: hsl(40.8511 55.9524% 32.9412%); + --color-warning-900: hsl(41.2987 56.2044% 26.8627%); + --color-danger-100: hsl(341.5385 25.4902% 90%); + --color-danger-200: hsl(341.25 25.8065% 87.8431%); + --color-danger-300: hsl(341.5385 26% 80.3922%); + --color-danger-400: hsl(341.7391 26.1364% 65.4902%); + --color-danger-500: hsl(341.5385 25.8964% 50.7843%); + --color-danger-600: hsl(341.6949 25.3219% 45.6863%); + --color-danger-700: hsl(341.6327 25.1282% 38.2353%); + --color-danger-800: hsl(341.5385 25.1613% 30.3922%); + --color-danger-900: hsl(342.5806 24.4094% 24.902%); + --color-surface-100: hsl(226.6667 24.3243% 92.7451%); + --color-surface-200: hsl(221.5385 26.5306% 90.3922%); + --color-surface-300: hsl(221.25 25.8065% 87.8431%); + surface-400: rgb(146 159 191); + surface-500: rgb(99 118 163); + surface-600: rgb(89 106 147); + surface-700: rgb(74 89 122); + surface-800: rgb(59 71 98); + surface-900: rgb(49 58 80); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(162.0779 35.1598% 42.9412%); + --color-warning: hsl(41.1538 67.8261% 54.902%); + --color-danger: hsl(341.5385 25.8964% 50.7843%); + --color-primary: hsl(221.9178 72.2772% 80.1961%); + --color-primary-50: hsl(222.8528 70.0572% 96.2746%); + --color-secondary: hsl(41.9178 28.6275% 50%); + --color-secondary-50: hsl(40.0008 29.4184% 90.4964%); + --color-accent: hsl(190.9091 26.4% 50.9804%); + --color-accent-50: hsl(192.8593 28.0029% 90.6835%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(161.2189 27.5849% 89.1941%); + --color-warning-50: hsl(41.2516 69.5712% 91.4334%); + --color-danger-50: hsl(341.5628 25.5286% 90.4978%); +} + +[data-theme="hamlindigo-dark"] { + --color-primary-content: hsl(0 0% 0%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 100%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(222.8571 70% 96.0784%); + --color-primary-200: hsl(221.0526 76% 95.098%); + --color-primary-300: hsl(221.3793 70.7317% 91.9608%); + --color-primary-400: hsl(221.1765 71.831% 86.0784%); + --color-primary-500: hsl(221.9178 72.2772% 80.1961%); + --color-primary-600: hsl(221.8182 46.4789% 72.1569%); + --color-primary-700: hsl(221.4545 27.0936% 60.1961%); + --color-primary-800: hsl(222.2727 17.8862% 48.2353%); + --color-primary-900: hsl(221.6667 18% 39.2157%); + --color-secondary-100: hsl(40 29.4118% 90%); + --color-secondary-200: hsl(43.3333 28.125% 87.451%); + --color-secondary-300: hsl(42 29.4118% 80%); + --color-secondary-400: hsl(42.3529 28.4916% 64.902%); + --color-secondary-500: hsl(41.9178 28.6275% 50%); + --color-secondary-600: hsl(41.8182 28.6957% 45.098%); + --color-secondary-700: hsl(42.5455 28.7958% 37.451%); + --color-secondary-800: hsl(41.8605 28.1046% 30%); + --color-secondary-900: hsl(42.8571 28% 24.5098%); + --color-accent-100: hsl(192.8571 28% 90.1961%); + --color-accent-200: hsl(191.25 25.8065% 87.8431%); + --color-accent-300: hsl(191.5385 26% 80.3922%); + --color-accent-400: hsl(191.4894 26.8571% 65.6863%); + --color-accent-500: hsl(190.9091 26.4% 50.9804%); + --color-accent-600: hsl(191 25.641% 45.8824%); + --color-accent-700: hsl(191.0204 25.1282% 38.2353%); + --color-accent-800: hsl(190.5 25.641% 30.5882%); + --color-accent-900: hsl(191.25 25% 25.098%); + --color-success-100: hsl(161.25 27.5862% 88.6275%); + --color-success-200: hsl(164.2105 26.0274% 85.6863%); + --color-success-300: hsl(162.5806 26.4957% 77.0588%); + --color-success-400: hsl(162.2222 26.4706% 60%); + --color-success-500: hsl(162.0779 35.1598% 42.9412%); + --color-success-600: hsl(162.6087 35.0254% 38.6275%); + --color-success-700: hsl(162.4138 35.3659% 32.1569%); + --color-success-800: hsl(161.7391 34.8485% 25.8824%); + --color-success-900: hsl(161.0526 35.1852% 21.1765%); + --color-warning-100: hsl(41.25 69.5652% 90.9804%); + --color-warning-200: hsl(41.5385 68.4211% 88.8235%); + --color-warning-300: hsl(41.6129 67.3913% 81.9608%); + --color-warning-400: hsl(41.2844 67.7019% 68.4314%); + --color-warning-500: hsl(41.1538 67.8261% 54.902%); + --color-warning-600: hsl(41.1429 55.5556% 49.4118%); + --color-warning-700: hsl(41.0256 55.4502% 41.3725%); + --color-warning-800: hsl(40.8511 55.9524% 32.9412%); + --color-warning-900: hsl(41.2987 56.2044% 26.8627%); + --color-danger-100: hsl(341.5385 25.4902% 90%); + --color-danger-200: hsl(341.25 25.8065% 87.8431%); + --color-danger-300: hsl(341.5385 26% 80.3922%); + --color-danger-400: hsl(341.7391 26.1364% 65.4902%); + --color-danger-500: hsl(341.5385 25.8964% 50.7843%); + --color-danger-600: hsl(341.6949 25.3219% 45.6863%); + --color-danger-700: hsl(341.6327 25.1282% 38.2353%); + --color-danger-800: hsl(341.5385 25.1613% 30.3922%); + --color-danger-900: hsl(342.5806 24.4094% 24.902%); + --color-surface-100: hsl(221.25 24.4898% 38.4314%); + --color-surface-200: hsl(221.5385 24.8408% 30.7843%); + --color-surface-300: hsl(222.5806 24.031% 25.2941%); + surface-400: rgb(146 159 191); + surface-500: rgb(99 118 163); + surface-600: rgb(89 106 147); + surface-700: rgb(74 89 122); + surface-800: rgb(59 71 98); + surface-900: rgb(49 58 80); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(162.0779 35.1598% 42.9412%); + --color-warning: hsl(41.1538 67.8261% 54.902%); + --color-danger: hsl(341.5385 25.8964% 50.7843%); + --color-primary: hsl(221.9178 72.2772% 80.1961%); + --color-primary-50: hsl(222.8528 70.0572% 96.2746%); + --color-secondary: hsl(41.9178 28.6275% 50%); + --color-secondary-50: hsl(40.0008 29.4184% 90.4964%); + --color-accent: hsl(190.9091 26.4% 50.9804%); + --color-accent-50: hsl(192.8593 28.0029% 90.6835%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(161.2189 27.5849% 89.1941%); + --color-warning-50: hsl(41.2516 69.5712% 91.4334%); + --color-danger-50: hsl(341.5628 25.5286% 90.4978%); +} + +[data-theme="gold-nouveau"] { + --color-primary-content: hsl(0 0% 100%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 0%); + --color-primary-100: hsl(266.6667 36% 95.098%); + --color-primary-200: hsl(268.4211 37.2549% 90%); + --color-primary-300: hsl(270 36.9565% 81.9608%); + --color-primary-400: hsl(269.1176 36.9565% 63.9216%); + --color-primary-500: hsl(268.9655 37.0213% 46.0784%); + --color-primary-600: hsl(269.0323 36.9048% 32.9412%); + --color-primary-700: hsl(268 36.5854% 24.1176%); + --color-primary-800: hsl(268.8889 38.0282% 13.9216%); + --color-primary-900: hsl(272.3077 37.1429% 6.8627%); + --color-secondary-100: hsl(210.6667 81.8182% 89.2157%); + --color-secondary-200: hsl(211.0714 82.3529% 86.6667%); + --color-secondary-300: hsl(210.6667 81.8182% 78.4314%); + --color-secondary-400: hsl(211.1538 81.25% 62.3529%); + --color-secondary-500: hsl(210.9417 94.8936% 46.0784%); + --color-secondary-600: hsl(210.7463 95.2607% 41.3725%); + --color-secondary-700: hsl(210.8982 94.3503% 34.7059%); + --color-secondary-800: hsl(211.1278 94.3262% 27.6471%); + --color-secondary-900: hsl(210.8257 94.7826% 22.549%); + --color-accent-100: hsl(243 58.8235% 93.3333%); + --color-accent-200: hsl(244.6154 61.9048% 91.7647%); + --color-accent-300: hsl(244.5 58.8235% 86.6667%); + --color-accent-400: hsl(243.4286 59.322% 76.8627%); + --color-accent-500: hsl(244.1584 59.7633% 66.8627%); + --color-accent-600: hsl(243.956 44.8276% 60.1961%); + --color-accent-700: hsl(243.9474 29.9213% 50.1961%); + --color-accent-800: hsl(243.9344 29.7561% 40.1961%); + --color-accent-900: hsl(243.6735 29.3413% 32.7451%); + --color-success-100: hsl(135 40% 92.1569%); + --color-success-200: hsl(134.2857 42.8571% 90.3922%); + --color-success-300: hsl(132.7273 41.7722% 84.5098%); + --color-success-400: hsl(134.4828 41.4286% 72.549%); + --color-success-500: hsl(133.7349 41.7085% 60.9804%); + --color-success-600: hsl(133.7838 32.1739% 54.902%); + --color-success-700: hsl(133.5484 26.4957% 45.8824%); + --color-success-800: hsl(134.4 26.8817% 36.4706%); + --color-success-900: hsl(133.1707 26.7974% 30%); + --color-warning-100: hsl(31.3636 81.4815% 89.4118%); + --color-warning-200: hsl(32.1429 82.3529% 86.6667%); + --color-warning-300: hsl(32.3596 81.6514% 78.6275%); + --color-warning-400: hsl(31.9231 82.1053% 62.7451%); + --color-warning-500: hsl(32.0179 93.3054% 46.8627%); + --color-warning-600: hsl(31.9403 93.4884% 42.1569%); + --color-warning-700: hsl(31.976 93.2961% 35.098%); + --color-warning-800: hsl(31.791 93.0556% 28.2353%); + --color-warning-900: hsl(31.9266 93.1624% 22.9412%); + --color-danger-100: hsl(350.7692 37.1429% 86.2745%); + --color-danger-200: hsl(350.625 36.3636% 82.7451%); + --color-danger-300: hsl(350.5882 36.1702% 72.3529%); + --color-danger-400: hsl(351.3333 36.5854% 51.7647%); + --color-danger-500: hsl(351.0938 81.0127% 30.9804%); + --color-danger-600: hsl(351.1304 80.4196% 28.0392%); + --color-danger-700: hsl(350.625 81.3559% 23.1373%); + --color-danger-800: hsl(351.4286 81.0526% 18.6275%); + --color-danger-900: hsl(350.4762 81.8182% 15.098%); + --color-surface-100: hsl(270 40% 98.0392%); + --color-surface-200: hsl(266.6667 36% 95.098%); + --color-surface-300: hsl(268.4211 37.2549% 90%); + surface-400: rgb(162 129 197); + surface-500: rgb(116 74 161); + surface-600: rgb(83 53 115); + surface-700: rgb(60 39 84); + surface-800: rgb(35 22 49); + surface-900: rgb(18 11 24); + color-scheme: light; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(133.7349 41.7085% 60.9804%); + --color-warning: hsl(32.0179 93.3054% 46.8627%); + --color-danger: hsl(351.0938 81.0127% 30.9804%); + --color-primary: hsl(268.9655 37.0213% 46.0784%); + --color-primary-50: hsl(266.6537 36.0218% 95.3428%); + --color-secondary: hsl(210.9417 94.8936% 46.0784%); + --color-secondary-50: hsl(210.6786 81.9499% 89.7608%); + --color-accent: hsl(244.1584 59.7633% 66.8627%); + --color-accent-50: hsl(242.9607 58.9204% 93.669%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(134.964 40.0072% 92.55%); + --color-warning-50: hsl(31.3488 81.5757% 89.9476%); + --color-danger-50: hsl(350.8113 37.2561% 86.9627%); +} + +[data-theme="gold-nouveau-dark"] { + --color-primary-content: hsl(0 0% 100%); + --color-secondary-content: hsl(0 0% 100%); + --color-accent-content: hsl(0 0% 100%); + --color-success-content: hsl(0 0% 0%); + --color-warning-content: hsl(0 0% 0%); + --color-danger-content: hsl(0 0% 100%); + --color-surface-content: hsl(0 0% 100%); + --color-primary-100: hsl(266.6667 36% 95.098%); + --color-primary-200: hsl(268.4211 37.2549% 90%); + --color-primary-300: hsl(270 36.9565% 81.9608%); + --color-primary-400: hsl(269.1176 36.9565% 63.9216%); + --color-primary-500: hsl(268.9655 37.0213% 46.0784%); + --color-primary-600: hsl(269.0323 36.9048% 32.9412%); + --color-primary-700: hsl(268 36.5854% 24.1176%); + --color-primary-800: hsl(268.8889 38.0282% 13.9216%); + --color-primary-900: hsl(272.3077 37.1429% 6.8627%); + --color-secondary-100: hsl(210.6667 81.8182% 89.2157%); + --color-secondary-200: hsl(211.0714 82.3529% 86.6667%); + --color-secondary-300: hsl(210.6667 81.8182% 78.4314%); + --color-secondary-400: hsl(211.1538 81.25% 62.3529%); + --color-secondary-500: hsl(210.9417 94.8936% 46.0784%); + --color-secondary-600: hsl(210.7463 95.2607% 41.3725%); + --color-secondary-700: hsl(210.8982 94.3503% 34.7059%); + --color-secondary-800: hsl(211.1278 94.3262% 27.6471%); + --color-secondary-900: hsl(210.8257 94.7826% 22.549%); + --color-accent-100: hsl(243 58.8235% 93.3333%); + --color-accent-200: hsl(244.6154 61.9048% 91.7647%); + --color-accent-300: hsl(244.5 58.8235% 86.6667%); + --color-accent-400: hsl(243.4286 59.322% 76.8627%); + --color-accent-500: hsl(244.1584 59.7633% 66.8627%); + --color-accent-600: hsl(243.956 44.8276% 60.1961%); + --color-accent-700: hsl(243.9474 29.9213% 50.1961%); + --color-accent-800: hsl(243.9344 29.7561% 40.1961%); + --color-accent-900: hsl(243.6735 29.3413% 32.7451%); + --color-success-100: hsl(135 40% 92.1569%); + --color-success-200: hsl(134.2857 42.8571% 90.3922%); + --color-success-300: hsl(132.7273 41.7722% 84.5098%); + --color-success-400: hsl(134.4828 41.4286% 72.549%); + --color-success-500: hsl(133.7349 41.7085% 60.9804%); + --color-success-600: hsl(133.7838 32.1739% 54.902%); + --color-success-700: hsl(133.5484 26.4957% 45.8824%); + --color-success-800: hsl(134.4 26.8817% 36.4706%); + --color-success-900: hsl(133.1707 26.7974% 30%); + --color-warning-100: hsl(31.3636 81.4815% 89.4118%); + --color-warning-200: hsl(32.1429 82.3529% 86.6667%); + --color-warning-300: hsl(32.3596 81.6514% 78.6275%); + --color-warning-400: hsl(31.9231 82.1053% 62.7451%); + --color-warning-500: hsl(32.0179 93.3054% 46.8627%); + --color-warning-600: hsl(31.9403 93.4884% 42.1569%); + --color-warning-700: hsl(31.976 93.2961% 35.098%); + --color-warning-800: hsl(31.791 93.0556% 28.2353%); + --color-warning-900: hsl(31.9266 93.1624% 22.9412%); + --color-danger-100: hsl(350.7692 37.1429% 86.2745%); + --color-danger-200: hsl(350.625 36.3636% 82.7451%); + --color-danger-300: hsl(350.5882 36.1702% 72.3529%); + --color-danger-400: hsl(351.3333 36.5854% 51.7647%); + --color-danger-500: hsl(351.0938 81.0127% 30.9804%); + --color-danger-600: hsl(351.1304 80.4196% 28.0392%); + --color-danger-700: hsl(350.625 81.3559% 23.1373%); + --color-danger-800: hsl(351.4286 81.0526% 18.6275%); + --color-danger-900: hsl(350.4762 81.8182% 15.098%); + --color-surface-100: hsl(268 36.5854% 24.1176%); + --color-surface-200: hsl(268.8889 38.0282% 13.9216%); + --color-surface-300: hsl(272.3077 37.1429% 6.8627%); + surface-400: rgb(162 129 197); + surface-500: rgb(116 74 161); + surface-600: rgb(83 53 115); + surface-700: rgb(60 39 84); + surface-800: rgb(35 22 49); + surface-900: rgb(18 11 24); + color-scheme: dark; + --color-neutral: hsl(219.2308 20.3127% 25.0981%); + --color-info: hsl(197.2976 100% 50%); + --color-success: hsl(133.7349 41.7085% 60.9804%); + --color-warning: hsl(32.0179 93.3054% 46.8627%); + --color-danger: hsl(351.0938 81.0127% 30.9804%); + --color-primary: hsl(268.9655 37.0213% 46.0784%); + --color-primary-50: hsl(266.6537 36.0218% 95.3428%); + --color-secondary: hsl(210.9417 94.8936% 46.0784%); + --color-secondary-50: hsl(210.6786 81.9499% 89.7608%); + --color-accent: hsl(244.1584 59.7633% 66.8627%); + --color-accent-50: hsl(242.9607 58.9204% 93.669%); + --color-neutral-content: hsl(218.9657 7.9689% 83.7344%); + --color-neutral-50: hsl(219.0029 7.5927% 56.6637%); + --color-neutral-100: hsl(219.0128 7.5266% 52.959%); + --color-neutral-200: hsl(219.0391 8.7762% 45.6857%); + --color-neutral-300: hsl(219.0777 11.4777% 38.6058%); + --color-neutral-400: hsl(219.1367 15.1168% 31.7363%); + --color-neutral-500: hsl(219.2308 20.3127% 25.0981%); + --color-neutral-600: hsl(219.2308 20.9593% 21.3224%); + --color-neutral-700: hsl(219.2308 21.8534% 17.6503%); + --color-neutral-800: hsl(219.2308 23.1647% 14.0914%); + --color-neutral-900: hsl(219.2308 25.2598% 10.6578%); + --color-info-content: hsl(208.1554 100% 4.4791%); + --color-info-50: hsl(198.0379 100% 75.2757%); + --color-info-100: hsl(197.8374 100% 72.5384%); + --color-info-200: hsl(197.139 100% 66.1909%); + --color-info-300: hsl(195.2063 100% 55.8279%); + --color-info-400: hsl(195.3352 100% 50%); + --color-info-500: hsl(197.2976 100% 50%); + --color-info-600: hsl(198.5199 100% 44.6308%); + --color-info-700: hsl(198.7027 100% 38.1442%); + --color-info-800: hsl(198.9509 100% 31.8576%); + --color-info-900: hsl(199.305 100% 25.7923%); + --color-success-50: hsl(134.964 40.0072% 92.55%); + --color-warning-50: hsl(31.3488 81.5757% 89.9476%); + --color-danger-50: hsl(350.8113 37.2561% 86.9627%); +} diff --git a/packages/tailwind/src/lib/css/utils.css b/packages/tailwind/src/lib/css/utils.css new file mode 100644 index 0000000..736ca73 --- /dev/null +++ b/packages/tailwind/src/lib/css/utils.css @@ -0,0 +1,215 @@ +/* Stack grid children */ +@utility grid-stack { + & > * { + grid-area: 1 / 1; + } +} + +/* Grid column classes (RAM) */ +@utility grid-cols-xs { + grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); +} + +@utility grid-cols-sm { + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); +} + +@utility grid-cols-md { + grid-template-columns: repeat(auto-fill, minmax(400px, 1fr)); +} + +@utility grid-cols-lg { + grid-template-columns: repeat(auto-fill, minmax(600px, 1fr)); +} + +/* Hide scrollbar */ +@utility scrollbar-none { + -ms-overflow-style: none; + scrollbar-width: none; + &::-webkit-scrollbar: { + display: none; + } +} + +/** + * `elevation-#` classes + * @see https://www.joshwcomeau.com/css/designing-shadows/ + */ +@utility elevation-none { + box-shadow: none; +} + +@utility elevation-0 { + box-shadow: + 0px 0px 0px 0px hsl(0 0% 0% / 20%), + 0px 0px 0px 0px hsl(0 0% 0% / 14%), + 0px 0px 0px 0px hsl(0 0% 0% / 12%); +} + +@utility elevation-1 { + box-shadow: + 0px 2px 1px -1px hsl(0 0% 0% / 20%), + 0px 1px 1px 0px hsl(0 0% 0% / 14%), + 0px 1px 3px 0px hsl(0 0% 0% / 12%); +} + +@utility elevation-2 { + box-shadow: + 0px 3px 1px -2px hsl(0 0% 0% / 20%), + 0px 2px 2px 0px hsl(0 0% 0% / 14%), + 0px 1px 5px 0px hsl(0 0% 0% / 12%); +} + +@utility elevation-3 { + box-shadow: + 0px 3px 3px -2px hsl(0 0% 0% / 20%), + 0px 3px 4px 0px hsl(0 0% 0% / 14%), + 0px 1px 8px 0px hsl(0 0% 0% / 12%); +} + +@utility elevation-4 { + box-shadow: + 0px 2px 4px -1px hsl(0 0% 0% / 20%), + 0px 4px 5px 0px hsl(0 0% 0% / 14%), + 0px 1px 10px 0px hsl(0 0% 0% / 12%); +} + +@utility elevation-5 { + box-shadow: + 0px 3px 5px -1px hsl(0 0% 0% / 20%), + 0px 5px 8px 0px hsl(0 0% 0% / 14%), + 0px 1px 14px 0px hsl(0 0% 0% / 12%); +} + +@utility elevation-6 { + box-shadow: + 0px 3px 5px -1px hsl(0 0% 0% / 20%), + 0px 6px 10px 0px hsl(0 0% 0% / 14%), + 0px 1px 18px 0px hsl(0 0% 0% / 12%); +} + +@utility elevation-7 { + box-shadow: + 0px 4px 5px -2px hsl(0 0% 0% / 20%), + 0px 7px 10px 1px hsl(0 0% 0% / 14%), + 0px 2px 16px 1px hsl(0 0% 0% / 12%); +} + +@utility elevation-8 { + box-shadow: + 0px 5px 5px -3px hsl(0 0% 0% / 20%), + 0px 8px 10px 1px hsl(0 0% 0% / 14%), + 0px 3px 14px 2px hsl(0 0% 0% / 12%); +} + +@utility elevation-9 { + box-shadow: + 0px 5px 6px -3px hsl(0 0% 0% / 20%), + 0px 9px 12px 1px hsl(0 0% 0% / 14%), + 0px 3px 16px 2px hsl(0 0% 0% / 12%); +} + +@utility elevation-10 { + box-shadow: + 0px 6px 6px -3px hsl(0 0% 0% / 20%), + 0px 10px 14px 1px hsl(0 0% 0% / 14%), + 0px 4px 18px 3px hsl(0 0% 0% / 12%); +} + +@utility elevation-11 { + box-shadow: + 0px 6px 7px -4px hsl(0 0% 0% / 20%), + 0px 11px 15px 1px hsl(0 0% 0% / 14%), + 0px 4px 20px 3px hsl(0 0% 0% / 12%); +} + +@utility elevation-12 { + box-shadow: + 0px 7px 8px -4px hsl(0 0% 0% / 20%), + 0px 12px 17px 2px hsl(0 0% 0% / 14%), + 0px 5px 22px 4px hsl(0 0% 0% / 12%); +} + +@utility elevation-13 { + box-shadow: + 0px 7px 8px -4px hsl(0 0% 0% / 20%), + 0px 13px 19px 2px hsl(0 0% 0% / 14%), + 0px 5px 24px 4px hsl(0 0% 0% / 12%); +} + +@utility elevation-14 { + box-shadow: + 0px 7px 9px -4px hsl(0 0% 0% / 20%), + 0px 14px 21px 2px hsl(0 0% 0% / 14%), + 0px 5px 26px 4px hsl(0 0% 0% / 12%); +} + +@utility elevation-15 { + box-shadow: + 0px 8px 9px -5px hsl(0 0% 0% / 20%), + 0px 15px 22px 2px hsl(0 0% 0% / 14%), + 0px 6px 28px 5px hsl(0 0% 0% / 12%); +} + +@utility elevation-16 { + box-shadow: + 0px 8px 10px -5px hsl(0 0% 0% / 20%), + 0px 16px 24px 2px hsl(0 0% 0% / 14%), + 0px 6px 30px 5px hsl(0 0% 0% / 12%); +} + +@utility elevation-17 { + box-shadow: + 0px 8px 11px -5px hsl(0 0% 0% / 20%), + 0px 17px 26px 2px hsl(0 0% 0% / 14%), + 0px 6px 32px 5px hsl(0 0% 0% / 12%); +} + +@utility elevation-18 { + box-shadow: + 0px 9px 11px -5px hsl(0 0% 0% / 20%), + 0px 18px 28px 2px hsl(0 0% 0% / 14%), + 0px 7px 34px 6px hsl(0 0% 0% / 12%); +} + +@utility elevation-19 { + box-shadow: + 0px 9px 12px -6px hsl(0 0% 0% / 20%), + 0px 19px 29px 2px hsl(0 0% 0% / 14%), + 0px 7px 36px 6px hsl(0 0% 0% / 12%); +} + +@utility elevation-20 { + box-shadow: + 0px 10px 13px -6px hsl(0 0% 0% / 20%), + 0px 20px 31px 3px hsl(0 0% 0% / 14%), + 0px 8px 38px 7px hsl(0 0% 0% / 12%); +} + +@utility elevation-21 { + box-shadow: + 0px 10px 13px -6px hsl(0 0% 0% / 20%), + 0px 21px 33px 3px hsl(0 0% 0% / 14%), + 0px 8px 40px 7px hsl(0 0% 0% / 12%); +} + +@utility elevation-22 { + box-shadow: + 0px 10px 14px -6px hsl(0 0% 0% / 20%), + 0px 22px 35px 3px hsl(0 0% 0% / 14%), + 0px 8px 42px 7px hsl(0 0% 0% / 12%); +} + +@utility elevation-23 { + box-shadow: + 0px 11px 14px -7px hsl(0 0% 0% / 20%), + 0px 23px 36px 3px hsl(0 0% 0% / 14%), + 0px 9px 44px 8px hsl(0 0% 0% / 12%); +} + +@utility elevation-24 { + box-shadow: + 0px 11px 15px -7px hsl(0 0% 0% / 20%), + 0px 24px 38px 3px hsl(0 0% 0% / 14%), + 0px 9px 46px 8px hsl(0 0% 0% / 12%); +} diff --git a/packages/tailwind/src/lib/plugin.cjs b/packages/tailwind/src/lib/plugin.cjs deleted file mode 100644 index d705af5..0000000 --- a/packages/tailwind/src/lib/plugin.cjs +++ /dev/null @@ -1,85 +0,0 @@ -const plugin = require('tailwindcss/plugin'); - -const { createThemeColors, injectThemes } = require('./plugin/theme.cjs'); -const colorMix = require('./plugin/colorMix.cjs'); -const elevation = require('./plugin/elevation.cjs'); - -// TODO: Type options (convert to Typescript and use generic argument, or use jsdoc?) -module.exports = plugin.withOptions( - (options = {}) => { - const colorSpace = options?.colorSpace ?? 'hsl'; - - return function (api) { - const { addBase, addUtilities, config } = api; - - injectThemes(colorSpace, addBase, config); - - // colorMix(api); // Remove `bg-mix-*` / etc utils until needed (and better browser support) - - elevation(api); - - // Stack grid children - addUtilities({ - '.grid-stack': { - '& > *': { - 'grid-area': '1 / 1', - }, - }, - }); - - // Hide scrollbar - addUtilities({ - '.scrollbar-none': { - '-ms-overflow-style': 'none', - 'scrollbar-width': 'none', - '&::-webkit-scrollbar': { - display: 'none', - }, - }, - }); - }; - }, - (options) => { - const colorSpace = options?.colorSpace ?? 'hsl'; - - return { - darkMode: 'class', - theme: { - extend: { - colors: createThemeColors(colorSpace), - borderColor: (theme) => ({ - DEFAULT: theme('colors.surface-content/20%'), - }), - outlineColor: (theme) => ({ - DEFAULT: theme('colors.surface-content/20%'), - }), - ringOffsetColor: (theme) => ({ - DEFAULT: theme('colors.surface-100/100%'), - }), - typography: ({ theme }) => ({ - DEFAULT: { - css: { - '--tw-prose-body': theme('colors.surface-content'), - '--tw-prose-headings': theme('colors.surface-content'), - '--tw-prose-lead': theme('colors.surface-content'), - '--tw-prose-links': theme('colors.surface-content'), - '--tw-prose-bold': theme('colors.surface-content'), - '--tw-prose-counters': theme('colors.surface-content/30%'), - '--tw-prose-bullets': theme('colors.surface-content/30%'), - '--tw-prose-hr': theme('colors.surface-content/20%'), - '--tw-prose-quotes': theme('colors.surface-content'), - '--tw-prose-quote-borders': theme('colors.surface-content'), - '--tw-prose-captions': theme('colors.surface-content'), - '--tw-prose-code': theme('colors.surface-content'), - '--tw-prose-pre-code': theme('colors.surface-content'), - '--tw-prose-pre-bg': theme('colors.surface-content'), - '--tw-prose-th-borders': theme('colors.surface-300'), - '--tw-prose-td-borders': theme('colors.surface-300'), - }, - }, - }), - }, - }, - }; - } -); diff --git a/packages/tailwind/src/lib/plugin/colorMix.cjs b/packages/tailwind/src/lib/plugin/colorMix.cjs deleted file mode 100644 index 244d4d0..0000000 --- a/packages/tailwind/src/lib/plugin/colorMix.cjs +++ /dev/null @@ -1,38 +0,0 @@ -module.exports = function ({ matchUtilities }) { - // color-mix (ex. `bg-mix-[indigo/80]`, or `bg-mix-[indigo/-40]`) - // https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix - // https://twitter.com/Saadeghi/status/1727954306140172295 - // https://twitter.com/crswll/status/1724459346489139675 - matchUtilities({ - 'text-mix': (value) => { - const [color, percent] = value.split('/'); - return { - color: `color-mix(in oklab,color-mix(in oklab,${color},${ - percent?.startsWith('-') ? 'black' : percent?.endsWith('%') ? 'transparent' : 'white' - } ${ - percent?.replace('-', '') + '%' - }),transparent calc(100% - 100% * var(--tw-text-opacity,1)))`, - }; - }, - 'bg-mix': (value) => { - const [color, percent] = value.split('/'); - return { - backgroundColor: `color-mix(in oklab,color-mix(in oklab,${color},${ - percent?.startsWith('-') ? 'black' : percent?.endsWith('%') ? 'transparent' : 'white' - } ${ - percent?.replace('-', '') + '%' - }),transparent calc(100% - 100% * var(--tw-bg-opacity,1)))`, - }; - }, - 'border-mix': (value) => { - const [color, percent] = value.split('/'); - return { - borderColor: `color-mix(in oklab,color-mix(in oklab,${color},${ - percent?.startsWith('-') ? 'black' : percent?.endsWith('%') ? 'transparent' : 'white' - } ${ - percent?.replace('-', '') + '%' - }),transparent calc(100% - 100% * var(--tw-border-opacity,1)))`, - }; - }, - }); -}; diff --git a/packages/tailwind/src/lib/plugin/elevation.cjs b/packages/tailwind/src/lib/plugin/elevation.cjs deleted file mode 100644 index 7e716c3..0000000 --- a/packages/tailwind/src/lib/plugin/elevation.cjs +++ /dev/null @@ -1,133 +0,0 @@ -module.exports = function ({ addUtilities }) { - addUtilities({ - // Add `elevation-#` classes - '.elevation-none': { - 'box-shadow': 'none', - }, - - '.elevation-0': { - 'box-shadow': - '0px 0px 0px 0px rgba(0,0,0,0.20), 0px 0px 0px 0px rgba(0,0,0,0.14), 0px 0px 0px 0px rgba(0,0,0,0.12)', - }, - - '.elevation-1': { - 'box-shadow': - '0px 2px 1px -1px rgba(0,0,0,0.20), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)', - }, - - '.elevation-2': { - 'box-shadow': - '0px 3px 1px -2px rgba(0,0,0,0.20), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12)', - }, - - '.elevation-3': { - 'box-shadow': - '0px 3px 3px -2px rgba(0,0,0,0.20), 0px 3px 4px 0px rgba(0,0,0,0.14), 0px 1px 8px 0px rgba(0,0,0,0.12)', - }, - - '.elevation-4': { - 'box-shadow': - '0px 2px 4px -1px rgba(0,0,0,0.20), 0px 4px 5px 0px rgba(0,0,0,0.14), 0px 1px 10px 0px rgba(0,0,0,0.12)', - }, - - '.elevation-5': { - 'box-shadow': - '0px 3px 5px -1px rgba(0,0,0,0.20), 0px 5px 8px 0px rgba(0,0,0,0.14), 0px 1px 14px 0px rgba(0,0,0,0.12)', - }, - - '.elevation-6': { - 'box-shadow': - '0px 3px 5px -1px rgba(0,0,0,0.20), 0px 6px 10px 0px rgba(0,0,0,0.14), 0px 1px 18px 0px rgba(0,0,0,0.12)', - }, - - '.elevation-7': { - 'box-shadow': - '0px 4px 5px -2px rgba(0,0,0,0.20), 0px 7px 10px 1px rgba(0,0,0,0.14), 0px 2px 16px 1px rgba(0,0,0,0.12)', - }, - - '.elevation-8': { - 'box-shadow': - '0px 5px 5px -3px rgba(0,0,0,0.20), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)', - }, - - '.elevation-9': { - 'box-shadow': - '0px 5px 6px -3px rgba(0,0,0,0.20), 0px 9px 12px 1px rgba(0,0,0,0.14), 0px 3px 16px 2px rgba(0,0,0,0.12)', - }, - - '.elevation-10': { - 'box-shadow': - '0px 6px 6px -3px rgba(0,0,0,0.20), 0px 10px 14px 1px rgba(0,0,0,0.14), 0px 4px 18px 3px rgba(0,0,0,0.12)', - }, - - '.elevation-11': { - 'box-shadow': - '0px 6px 7px -4px rgba(0,0,0,0.20), 0px 11px 15px 1px rgba(0,0,0,0.14), 0px 4px 20px 3px rgba(0,0,0,0.12)', - }, - - '.elevation-12': { - 'box-shadow': - '0px 7px 8px -4px rgba(0,0,0,0.20), 0px 12px 17px 2px rgba(0,0,0,0.14), 0px 5px 22px 4px rgba(0,0,0,0.12)', - }, - - '.elevation-13': { - 'box-shadow': - '0px 7px 8px -4px rgba(0,0,0,0.20), 0px 13px 19px 2px rgba(0,0,0,0.14), 0px 5px 24px 4px rgba(0,0,0,0.12)', - }, - - '.elevation-14': { - 'box-shadow': - '0px 7px 9px -4px rgba(0,0,0,0.20), 0px 14px 21px 2px rgba(0,0,0,0.14), 0px 5px 26px 4px rgba(0,0,0,0.12)', - }, - - '.elevation-15': { - 'box-shadow': - '0px 8px 9px -5px rgba(0,0,0,0.20), 0px 15px 22px 2px rgba(0,0,0,0.14), 0px 6px 28px 5px rgba(0,0,0,0.12)', - }, - - '.elevation-16': { - 'box-shadow': - '0px 8px 10px -5px rgba(0,0,0,0.20), 0px 16px 24px 2px rgba(0,0,0,0.14), 0px 6px 30px 5px rgba(0,0,0,0.12)', - }, - - '.elevation-17': { - 'box-shadow': - '0px 8px 11px -5px rgba(0,0,0,0.20), 0px 17px 26px 2px rgba(0,0,0,0.14), 0px 6px 32px 5px rgba(0,0,0,0.12)', - }, - - '.elevation-18': { - 'box-shadow': - '0px 9px 11px -5px rgba(0,0,0,0.20), 0px 18px 28px 2px rgba(0,0,0,0.14), 0px 7px 34px 6px rgba(0,0,0,0.12)', - }, - - '.elevation-19': { - 'box-shadow': - '0px 9px 12px -6px rgba(0,0,0,0.20), 0px 19px 29px 2px rgba(0,0,0,0.14), 0px 7px 36px 6px rgba(0,0,0,0.12)', - }, - - '.elevation-20': { - 'box-shadow': - '0px 10px 13px -6px rgba(0,0,0,0.20), 0px 20px 31px 3px rgba(0,0,0,0.14), 0px 8px 38px 7px rgba(0,0,0,0.12)', - }, - - '.elevation-21': { - 'box-shadow': - '0px 10px 13px -6px rgba(0,0,0,0.20), 0px 21px 33px 3px rgba(0,0,0,0.14), 0px 8px 40px 7px rgba(0,0,0,0.12)', - }, - - '.elevation-22': { - 'box-shadow': - '0px 10px 14px -6px rgba(0,0,0,0.20), 0px 22px 35px 3px rgba(0,0,0,0.14), 0px 8px 42px 7px rgba(0,0,0,0.12)', - }, - - '.elevation-23': { - 'box-shadow': - '0px 11px 14px -7px rgba(0,0,0,0.20), 0px 23px 36px 3px rgba(0,0,0,0.14), 0px 9px 44px 8px rgba(0,0,0,0.12)', - }, - - '.elevation-24': { - 'box-shadow': - '0px 11px 15px -7px rgba(0,0,0,0.20), 0px 24px 38px 3px rgba(0,0,0,0.14), 0px 9px 46px 8px rgba(0,0,0,0.12)', - }, - }); -}; diff --git a/packages/tailwind/src/lib/plugin/theme.cjs b/packages/tailwind/src/lib/plugin/theme.cjs deleted file mode 100644 index 425ca3a..0000000 --- a/packages/tailwind/src/lib/plugin/theme.cjs +++ /dev/null @@ -1,61 +0,0 @@ -const colors = require('tailwindcss/colors'); -const { createThemeColors, processThemeColors } = require('../theme'); -const { entries } = require('@layerstack/utils'); - -const defaultThemes = { - light: { - primary: colors['blue']['500'], - 'primary-content': 'white', - secondary: colors['blue']['500'], - 'surface-100': 'white', - 'surface-200': colors['gray']['100'], - 'surface-300': colors['gray']['300'], - 'surface-content': colors['gray']['900'], - }, - dark: { - primary: colors['blue']['500'], - 'primary-content': 'white', - secondary: colors['blue']['500'], - 'surface-100': colors['zinc']['800'], - 'surface-200': colors['zinc']['900'], - 'surface-300': colors['zinc']['950'], - 'surface-content': colors['zinc']['100'], - }, -}; - -/** - * Inject all Tailwind config themes (`{ ux: { themes: [] }}`) into base CSS - * @param {'rgb' | 'hsl' | 'oklch'} colorSpace - */ -function injectThemes(colorSpace, addBase, config) { - const themes = config('ux.themes') ?? defaultThemes; - const themeRoot = config('ux.themeRoot') ?? ':root'; - - const cssThemes = {}; - let rootThemeName = null; - entries(themes).map(([themeName, themeColors], index) => { - if (index === 0) { - // Root / default theme - cssThemes[themeRoot] = processThemeColors(themeColors, colorSpace); - rootThemeName = themeName; - } else if (index === 1) { - // Dark theme - cssThemes['@media (prefers-color-scheme: dark)'] = { - [themeRoot]: processThemeColors(themeColors, colorSpace), - }; - - // Also register first and second theme by name AFTER @media for precedence - cssThemes[`[data-theme=${rootThemeName}]`] = processThemeColors( - themes[rootThemeName], - colorSpace - ); - cssThemes[`[data-theme=${themeName}]`] = processThemeColors(themeColors, colorSpace); - } else { - cssThemes[`[data-theme=${themeName}]`] = processThemeColors(themeColors, colorSpace); - } - }); - - addBase(cssThemes); -} - -module.exports = { createThemeColors, injectThemes }; diff --git a/packages/tailwind/src/lib/theme.test.ts b/packages/tailwind/src/lib/theme.test.ts deleted file mode 100644 index b170918..0000000 --- a/packages/tailwind/src/lib/theme.test.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { describe, it, expect } from 'vitest'; -import { flattenThemeColors, processThemeColors } from './theme.js'; -import tailwindColors from 'tailwindcss/colors.js'; - -describe('flattenThemeColors', () => { - it('Flatten recursive colors object', () => { - const actual = flattenThemeColors({ - // Simple key-value pair - primary: '#ff0000', - dark: { - // Default value - DEFAULT: '#000', - // Nested once - blue: '#0000ff', - red: { - // Nested twice - 500: '#f00', - // Multiple nested properties - content: 'white', - }, - }, - light: { - // Should not be used, since objects do not guarantee respecting insertion, but it should work without any error - green: { 100: '#0f0' }, - 'green-100': '#0f0', - }, - }); - const expected = { - primary: '#ff0000', - dark: '#000', - 'dark-blue': '#0000ff', - 'dark-red-500': '#f00', - 'dark-red-content': 'white', - 'light-green-100': '#0f0', - }; - - expect(actual).toEqual(expected); - }); -}); - -describe('processThemeColors', () => { - it('Process theme colors recursive colors object', () => { - const actual = processThemeColors( - { - // overriding semantic colors - primary: { - ...tailwindColors.blue, - content: 'white', - DEFAULT: tailwindColors.blue[600], - }, - secondary: { ...tailwindColors.orange, content: 'white' }, - accent: { ...tailwindColors.fuchsia, content: 'white' }, - neutral: { ...tailwindColors.gray, content: 'white' }, - // overriding state colors - info: tailwindColors.blue, - success: tailwindColors.green, - warning: tailwindColors.amber, - danger: tailwindColors.red, - // overriding surface colors - surface: { - 100: 'white', - 200: tailwindColors.gray[200], - 300: tailwindColors.gray[300], - content: tailwindColors.gray[900], - }, - }, - 'hsl' - ); - - expect(actual).toMatchSnapshot(); - }); -}); diff --git a/packages/tailwind/src/lib/theme.ts b/packages/tailwind/src/lib/theme.ts index 0a90551..d708d60 100644 --- a/packages/tailwind/src/lib/theme.ts +++ b/packages/tailwind/src/lib/theme.ts @@ -1,257 +1,36 @@ import { range } from 'd3-array'; -import { - rgb, - hsl, - oklch, - clampRgb, - interpolate, - wcagContrast, - formatCss, - type Color, - type Hsl, - type Oklch, - type Rgb, -} from 'culori'; -import { entries, fromEntries, keys } from '@layerstack/utils'; - -export type SupportedColorSpace = 'rgb' | 'hsl' | 'oklch'; - export const semanticColors = ['primary', 'secondary', 'accent', 'neutral'] as const; export const stateColors = ['info', 'success', 'warning', 'danger'] as const; export const colors = [...semanticColors, ...stateColors]; - export const shades = [50, ...range(100, 1000, 100)]; -export const colorNames = [ - // Semantic & State colors (ex. `priamry`, 'primary-content`, 'primary-100`, ...) - ...colors.flatMap((color) => [ - color, // default - `${color}-content`, // text/content - ...shades.map((shade) => `${color}-${shade}`), - ]), - - // Surfaces - 'surface-100', - 'surface-200', - 'surface-300', - 'surface-content', -]; - /** - * Generate theme colors (ex. { primary: hsl(var(--color-primary) / ), ... }) + * Get themes names from css file (`[data-theme="..."]`) split into `light` and `dark` collections determined by `color-scheme` property */ -export function createThemeColors(colorSpace: SupportedColorSpace) { - return fromEntries( - colorNames.map((color) => [color, `${colorSpace}(var(--color-${color}) / )`]) - ); -} +export function getThemeNames(cssContent: string) { + const themeBlocks = cssContent.split(/\[data-theme=/); -/** - * Get themes names split into light and dark collections determined by `color-scheme` property - */ -export function getThemeNames(themes: Record) { - const light: string[] = []; - const dark: string[] = []; + const light = []; + const dark = []; + + // Skip first element as it's content before first theme + for (let i = 1; i < themeBlocks.length; i++) { + const block = themeBlocks[i]; - entries(themes).map(([themeName, props]) => { - if (props['color-scheme'] === 'dark') { + // Extract theme name + const nameMatch = block.match(/^"([^"]+)"/); + if (!nameMatch) continue; + const themeName = nameMatch[1]; + + if (block.includes('color-scheme: dark')) { dark.push(themeName); } else { light.push(themeName); } - }); - - return { light, dark }; -} - -export interface NestedColors { - [key: string]: string | NestedColors; -} - -/** - * Flatten nested color objects into a single-level color object with concatenated keys - */ -export function flattenThemeColors( - themeColors: NestedColors, - keys: (string | number)[] = [], - memo?: Record -) { - return entries(themeColors).reduce>((memo, [key, value]) => { - if (typeof value === 'string') { - memo[(key === 'DEFAULT' ? keys : [...keys, key]).join('-')] = value; - } else if (value) { - flattenThemeColors(value, [...keys, key], memo); - } - return memo; - }, memo ?? {}); -} - -/** - * Convert names to CSS variables and color values common color space (hsl, oklch, etc) and space separated - */ -export function processThemeColors(themeColors: NestedColors, colorSpace: SupportedColorSpace) { - const colors = flattenThemeColors(themeColors); - - // TODO: make all semanatic colors optional as well - - // Generate optional semanatic colors - colors['neutral'] ??= colors['neutral-500'] ?? 'oklch(.355192 .032071 262.988584)'; - - // Generate optional state colors - colors['info'] ??= colors['info-500'] ?? 'oklch(0.7206 0.191 231.6)'; - colors['success'] ??= colors['success-500'] ?? 'oklch(64.8% 0.150 160)'; - colors['warning'] ??= colors['warning-500'] ?? 'oklch(0.8471 0.199 83.87)'; - colors['danger'] ??= colors['danger-500'] ?? 'oklch(0.7176 0.221 22.18)'; - - // Generate optional content colors - for (const color of [...semanticColors, ...stateColors]) { - // Add `primary` from `primary-500` if not defined in theme (ex. Skeleton) - colors[color] ??= colors[`${color}-500`]; - colors[`${color}-content`] ??= foregroundColor(colors[color]) as string; - - // Generate color shades (ex. `primary-500`) if not defined. Useful for Daisy but not Skeleton themes, for example - for (const shade of shades) { - const shadeColorName = `${color}-${shade}`; - if (!(shadeColorName in colors)) { - // Find the next shade above (shade < 500) or below (shade > 500) and use as reference, if available - const referenceShade = - keys(colors) - .map((key) => { - const [c, s] = String(key).split('-'); - return [c, Number(s)] as [string, number]; - }) - .find(([c, s]) => c === color && (s < 500 ? s > shade : s < shade))?.[1] ?? 500; - const referenceColor = colors[`${color}-${referenceShade}`] ?? colors[color]; - - if (shade < 500) { - colors[shadeColorName] ??= lightenColor( - referenceColor, - (referenceShade - shade) / 1000 - ) as string; // 100 == 0.1 - } else if (shade > 500) { - colors[shadeColorName] ??= darkenColor( - colors[color], - (shade - referenceShade) / 1000 - ) as string; // 100 == 0.1 - } else { - colors[shadeColorName] ??= colors[color] as string; - } - } - } - } - - // Generate optional surface colors - colors['surface-100'] ??= 'oklch(100 0 0)'; - colors['surface-200'] ??= darkenColor(colors['surface-100'], 0.07) as string; - colors['surface-300'] ??= darkenColor(colors['surface-200'], 0.07) as string; - colors['surface-content'] ??= foregroundColor(colors['surface-100']) as string; - - // Add `color-scheme: "dark"` for `dark` theme (if not set) - colors['color-scheme'] ??= isDark(colors['surface-content']) ? 'light' : 'dark'; - - const result = fromEntries( - entries(colors).map(([name, value]) => { - if (colorNames.includes(String(name))) { - // Add space separated color variables for each color - return [`--color-${name}`, colorVariableValue(value, colorSpace)]; - } else { - // Additional properties such as `color-scheme` or CSS variable - return [name, value]; - } - }) - ); - - return result; -} - -function round(value: number, decimals: number) { - if (value) { - return Number(value.toFixed(decimals)); - } else { - return 0; - } -} - -function isDark(color: Color | string) { - try { - if (wcagContrast(color, 'black') < wcagContrast(color, 'white')) { - return true; - } - return false; - } catch (e) { - return false; - } -} - -/** Lighten or darken color based on contrast of input */ -function foregroundColor(color: Color | string, percentage = 0.8) { - try { - return isDark(color) ? lightenColor(color, percentage) : darkenColor(color, percentage); - } catch (e) { - // console.error('Unable to generate foreground color', color); } -} -function lightenColor(color: Color | string, percentage: number) { - try { - return formatCss(interpolate([color, 'white'], 'oklch')(percentage)); - } catch (e) { - // console.error('Unable to generate lighten color', color); - } -} - -function darkenColor(color: Color | string, percentage: number) { - try { - return formatCss(interpolate([color, 'black'], 'oklch')(percentage)); - } catch (e) { - // console.error('Unable to generate darken color', color); - } -} - -/** - * Convert color to space separated components string - */ -export function colorVariableValue( - color: Color | string, - colorSpace: SupportedColorSpace, - decimals = 4 -) { - try { - if (colorSpace === 'rgb') { - const computedColor = typeof color === 'string' ? rgb(color) : (color as Rgb); - if (computedColor) { - const { r, g, b } = computedColor; - return `${round(r * 255, decimals)} ${round(g * 255, decimals)} ${round(b * 255, decimals)}`; - } - } else if (colorSpace === 'hsl') { - const computedColor = typeof color === 'string' ? hsl(clampRgb(color)) : (color as Hsl); - if (computedColor) { - const { h, s, l } = computedColor; - return `${round(h ?? 0, decimals)} ${round(s * 100, decimals)}% ${round(l * 100, decimals)}%`; - } - } else if (colorSpace === 'oklch') { - const computedColor = typeof color === 'string' ? oklch(clampRgb(color)) : (color as Oklch); - if (computedColor) { - const { l, c, h } = computedColor; - return `${round(l, decimals)} ${round(c, decimals)} ${round(h ?? 0, decimals)}`; - } - } - } catch (e) { - // console.error('Unable to convert color object to string', color); - } -} - -/** - * Process theme to style variables - */ -export function themeStylesString(theme: NestedColors, colorSpace: SupportedColorSpace) { - const styleProperties = processThemeColors(theme, colorSpace); - return entries(styleProperties) - .map(([key, value]) => { - return `${key}: ${value};`; - }) - .join('\n'); + return { light, dark }; } /** Return a script tag that will set the initial theme from localStorage. This allows setting diff --git a/packages/tailwind/tsconfig.build.json b/packages/tailwind/tsconfig.build.json index eeccde4..437fd3f 100644 --- a/packages/tailwind/tsconfig.build.json +++ b/packages/tailwind/tsconfig.build.json @@ -1,4 +1,4 @@ { "extends": "./tsconfig.json", - "exclude": ["./src/**/*.test.ts"] + "exclude": ["./src/**/*.test.ts", "./src/lib/cli.ts"] } diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 6674891..e402b22 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -1,11 +1,135 @@ # @layerstack/utils +## 2.0.0-next.16 + +### Patch Changes + +- fix(isActive): Do not match when path is not at the beginning ([#90](https://github.com/techniq/layerstack/pull/90)) + +- fix(Duration): Support `.toISOString()` to output ISO 8601 duration strings (ex. `P2DT3H5M`) ([#92](https://github.com/techniq/layerstack/pull/92)) + +- fix(Duration): Support `fractional` values (ex. `1.5s`). Useful with `minUnits` or `totalUnits` ([#92](https://github.com/techniq/layerstack/pull/92)) + +## 2.0.0-next.15 + +### Patch Changes + +- feat(clamp): Update types to support `Date` ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 2.0.0-next.14 + +### Patch Changes + +- feat: Add additional time formats (hour, minute, second, millisecond). Resolves #84 ([#85](https://github.com/techniq/layerstack/pull/85)) + +## 2.0.0-next.13 + +### Patch Changes + +- feat(format): Support passing `locale` as part of config object ([#82](https://github.com/techniq/layerstack/pull/82)) + +## 2.0.0-next.12 + +### Patch Changes + +- chore: Remove unused deps ([#76](https://github.com/techniq/layerstack/pull/76)) + +- feat: Add string utils `toCamelCase()`, `toSnakeCase()`, `toKebabCase()`, and `toPascalCase()` ([#79](https://github.com/techniq/layerstack/pull/79)) + +## 2.0.0-next.11 + +### Patch Changes + +- feat(formatDate): Support second argument as explicit `format` string accepting both `Unicode` and `strftime` formats (converting `Unicode` to `strftime`) while still supporting period type string/enum. ([#74](https://github.com/techniq/layerstack/pull/74)) + +- feat(parseDate): Support optional `format` argument accepting both `Unicode` and `strftime` formats (converting `Unicode` to `strftime`) ([#74](https://github.com/techniq/layerstack/pull/74)) + +## 2.0.0-next.10 + +### Patch Changes + +- fix: Add more date utils to top-level exports including `intervalOffset`, `intervalDifference`, `isSameInterval`, `isDateWithin`, and more ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 2.0.0-next.9 + +### Patch Changes + +- refactor: Replace `date-fns` usage with new date utils (based on d3-time) to reduce bundle size ([#71](https://github.com/techniq/layerstack/pull/71)) + +- feat: Add new date utils including `parseDate`, `timeInterval`, `startOfInterval`, `endOfInterval`, `intervalOffset`, and more ([#71](https://github.com/techniq/layerstack/pull/71)) + +## 2.0.0-next.8 + +### Patch Changes + +- refactor: Remove `platform` nesting of user agent introspection functions (already nested in `env` export) ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 2.0.0-next.7 + +### Patch Changes + +- feat: Add `platform` to get details of browser (operating system, etc) ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 2.0.0-next.6 + +### Patch Changes + +- fix: Add `FormatConfig` as top-level export ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 2.0.0-next.5 + +### Patch Changes + +- fix(format): Improve typing for `FormatConfig` and `formatDate()` ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 2.0.0-next.4 + +### Patch Changes + +- feat(format): Support passing config option to easily set `type` and additional `options` as single object (ex. `format(number, { type: 'currency', options: { notation: 'compact' } })`) ([#66](https://github.com/techniq/layerstack/pull/66)) + +- breaking(utils): Lowercase all periodTypeMappings, simplify (`DAY-TIME` => `daytime`, etc), and add `PeriodTypeCode` type ([#31](https://github.com/techniq/layerstack/pull/31)) + +- fix: Update `PeriodType.Month` `default` variant to include full name, and `long` to include year. ([#31](https://github.com/techniq/layerstack/pull/31)) + +- feat(format): Support passing PeriodTypeCode strings to easily format dates (ex. `format(date, 'day')`) ([#66](https://github.com/techniq/layerstack/pull/66)) + +## 2.0.0-next.3 + +### Major Changes + +- breaking: Replace `getDuration()` / `humanizeDuration()` utils with `Duration` class (with `.format()` method) ([#62](https://github.com/techniq/layerstack/pull/62)) + +## 1.1.0-next.2 + +### Patch Changes + +- fix(format): Do not truncate decimal values when using `metric` preset (ex. 0.5) ([#53](https://github.com/techniq/layerstack/pull/53)) + ## 1.0.1 ### Patch Changes - fix(format): Do not truncate decimal values when using `metric` preset (ex. 0.5) ([#53](https://github.com/techniq/layerstack/pull/53)) +## 1.1.0-next.1 + +### Patch Changes + +- Update dependencies ([#31](https://github.com/techniq/layerstack/pull/31)) + +## 1.1.0-next.0 + +### Minor Changes + +- Tailwind 4 support ([#32](https://github.com/techniq/layerstack/pull/32)) + +### Patch Changes + +- feat: Add `mapKeys()` and `mapValues()` object utils ([#32](https://github.com/techniq/layerstack/pull/32)) + +- feat: Add `NestedRecord` type ([#32](https://github.com/techniq/layerstack/pull/32)) + ## 1.0.0 ### Major Changes diff --git a/packages/utils/package.json b/packages/utils/package.json index aceec53..4107474 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -4,15 +4,15 @@ "author": "Sean Lynch ", "license": "MIT", "repository": "techniq/layerstack", - "version": "1.0.1", + "version": "2.0.0-next.16", "scripts": { "dev": "rimraf dist && tsc -p tsconfig.build.json --watch", "build": "rimraf dist && tsc -p tsconfig.build.json", "preview": "vite preview", "package": "svelte-package", "prepublishOnly": "svelte-package", - "check": "svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", + "check": "tsc --noEmit", + "check:watch": "tsc --noEmit --watch", "test:unit": "TZ=UTC+4 vitest", "lint": "prettier --check .", "format": "prettier --write ." @@ -21,23 +21,24 @@ "@sveltejs/package": "^2.3.11", "@sveltejs/vite-plugin-svelte": "^5.0.3", "@types/d3-array": "^3.2.1", + "@types/d3-time": "^3.0.4", + "@types/d3-time-format": "^4.0.3", "@types/lodash-es": "^4.17.12", - "@vitest/coverage-v8": "^3.0.7", - "prettier": "^3.5.2", + "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "rimraf": "6.0.1", - "svelte": "^5.20.4", - "svelte-check": "^4.1.4", - "svelte2tsx": "^0.7.34", + "svelte": "^5.28.2", + "svelte2tsx": "^0.7.36", "tslib": "^2.8.1", - "typescript": "^5.7.3", + "typescript": "^5.8.3", "vite": "^6.3.5", "vitest": "^3.1.3" }, "type": "module", "dependencies": { "d3-array": "^3.2.4", - "date-fns": "^4.1.0", + "d3-time": "^3.1.0", + "d3-time-format": "^4.1.0", "lodash-es": "^4.17.21" }, "main": "./dist/index.js", diff --git a/packages/utils/src/lib/array.test.ts b/packages/utils/src/lib/array.test.ts index da498ba..0a42369 100644 --- a/packages/utils/src/lib/array.test.ts +++ b/packages/utils/src/lib/array.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from 'vitest'; import { greatestAbs, sumObjects } from './array.js'; -import { testDate } from './date.test.js'; +import { testDateStr } from './date.test.js'; describe('sumObjects', () => { it('Sum array of objects ', () => { @@ -11,7 +11,7 @@ describe('sumObjects', () => { { one: null, two: null, three: null, four: null }, { one: NaN, two: NaN, three: NaN, four: NaN }, { one: 'NaN', two: 'NaN', three: 'NaN', four: 'NaN' }, - { one: '3', two: 6, four: '4', startDate: new Date(testDate) }, + { one: '3', two: 6, four: '4', startDate: new Date(testDateStr) }, ]; const actual = sumObjects(values); @@ -21,7 +21,7 @@ describe('sumObjects', () => { three: 9, four: 4, extra: 0, - startDate: +new Date(testDate), + startDate: +new Date(testDateStr), }; expect(actual).toEqual(expected); diff --git a/packages/utils/src/lib/date.test.ts b/packages/utils/src/lib/date.test.ts index 51081a8..0ee0275 100644 --- a/packages/utils/src/lib/date.test.ts +++ b/packages/utils/src/lib/date.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from 'vitest'; +import { describe, it, expect, test } from 'vitest'; import { formatDate, getMonthDaysByWeek, @@ -12,19 +12,41 @@ import { hasDayOfWeek, replaceDayOfWeek, isStringDate, + timeInterval, + startOfInterval, + endOfInterval, + parseDate, + intervalOffset, + isSameInterval, + intervalDifference, + isLeapYear, + isDateWithin, } from './date.js'; -import { formatWithLocale } from './format.js'; -import { createLocaleSettings, defaultLocale } from './locale.js'; +import { createLocaleSettings, defaultLocale, LocaleSettings } from './locale.js'; import { PeriodType, type FormatDateOptions, DayOfWeek, type CustomIntlDateTimeFormatOptions, DateToken, + PeriodTypeCode, + TimeIntervalType, } from './date_types.js'; import { getWeekStartsOnFromIntl } from './dateInternal.js'; +import { + timeDay, + timeHour, + timeMillisecond, + timeMinute, + timeMonth, + timeYear, + timeSecond, + timeWeek, +} from 'd3-time'; + +export const testDateStr = '2023-11-21'; // "good" default date as the day (21) is bigger than 12 (number of months). And november is a good month1 (because why not?) +export const testDate = parseDate('2023-11-21'); // "good" default date as the day (21) is bigger than 12 (number of months). And november is a good month1 (because why not?) -export const testDate = '2023-11-21'; // "good" default date as the day (21) is bigger than 12 (number of months). And november is a good month1 (because why not?) const dt_2M_2d = new Date(2023, 10, 21); const dt_2M_1d = new Date(2023, 10, 7); const dt_1M_1d = new Date(2023, 2, 7); @@ -57,249 +79,990 @@ describe('formatDate()', () => { expect(formatDate('invalid date')).equal(''); }); - describe('should format date for PeriodType.Day', () => { - const localDate = new Date(2023, 10, 21); - const cases = [ - ['short', defaultLocale, '11/21'], - ['short', fr, '21/11'], - ['long', defaultLocale, 'Nov 21, 2023'], - ['long', fr, '21 nov. 2023'], - ] as const; + it('should allow formatting with PeriodType', () => { + expect(formatDate(testDate, PeriodType.Day)).equal('11/21/2023'); + }); - for (const c of cases) { - const [variant, locales, expected] = c; - it(c.toString(), () => { - expect(formatDateWithLocale(locales, localDate, PeriodType.Day, { variant })).equal( - expected - ); - }); - } + it('should allow formatting with PeriodTypeCode', () => { + expect(formatDate(testDate, 'day')).equal('11/21/2023'); }); - describe('should format date string for PeriodType.Day', () => { - const cases = [ - ['short', defaultLocale, '11/21'], - ['short', fr, '21/11'], - ['long', defaultLocale, 'Nov 21, 2023'], - ['long', fr, '21 nov. 2023'], + describe('strftime format', () => { + test.each([ + [new Date('2023-03-07T04:00:00.000Z'), '%Y-%m-%d', '2023-03-07'], + // [new Date('2023-03-07T04:00:00.000Z'), '%m/%d/%Y', '3/7/2023'], // Not suported + [new Date('2023-03-07T04:00:00.000Z'), '%m/%d/%Y', '03/07/2023'], + [new Date('2023-03-07T04:00:00.000Z'), '%m/%d/%y', '03/07/23'], + [new Date('2023-03-07T04:00:00.000Z'), '%A, %B %d, %Y', 'Tuesday, March 07, 2023'], + [new Date('1900-01-01T15:25:59.000Z'), '%H:%M:%S', '11:25:59'], + [new Date('1900-01-01T18:30:00.000Z'), '%I:%M %p', '02:30 PM'], + [new Date('2023-03-07T18:30:45.000Z'), '%Y-%m-%d %H:%M:%S', '2023-03-07 14:30:45'], + [new Date('2023-03-07T21:30:45.000Z'), '%Y-%m-%d %H:%M:%S %Z', '2023-03-07 17:30:45 -0400'], + ])('formatDate(%s, %s) => %s', (date, format, expected) => { + expect(formatDate(date, format)).toEqual(expected); + }); + }); + + describe('Unicode format', () => { + test.each([ + [new Date('2023-03-07T04:00:00.000Z'), 'yyyy-MM-dd', '2023-03-07'], + // [new Date('2023-03-07T04:00:00.000Z'), 'M/d/yyyy', '3/7/2023'], // Not suported + [new Date('2023-03-07T04:00:00.000Z'), 'MM/dd/yyyy', '03/07/2023'], + [new Date('2023-03-07T04:00:00.000Z'), 'M/d/yy', '03/07/23'], + [new Date('2023-03-07T04:00:00.000Z'), 'EEEE, MMMM dd, yyyy', 'Tuesday, March 07, 2023'], + [new Date('1900-01-01T15:25:59.000Z'), 'HH:mm:ss', '11:25:59'], + [new Date('1900-01-01T18:30:00.000Z'), 'hh:mm a', '02:30 PM'], + [new Date('2023-03-07T18:30:45.000Z'), 'yyyy-MM-dd HH:mm:ss', '2023-03-07 14:30:45'], + [new Date('2023-03-07T21:30:45.000Z'), 'yyyy-MM-dd HH:mm:ss z', '2023-03-07 17:30:45 -0400'], + ])('formatDate(%s, %s) => %s', (date, format, expected) => { + expect(formatDate(date, format)).toEqual(expected); + }); + }); +}); + +describe('formatDateWithLocale()', () => { + describe('PeriodType', () => { + const cases: [PeriodType, FormatDateOptions, Date, [LocaleSettings, string][]][] = [ + // PeriodType.Day + [ + PeriodType.Day, + { variant: 'short' }, + testDate, + [ + [defaultLocale, '11/21'], + [fr, '21/11'], + ], + ], + [ + PeriodType.Day, + { variant: 'default' }, + testDate, + [ + [defaultLocale, '11/21/2023'], + [fr, '21/11/2023'], + ], + ], + [ + PeriodType.Day, + { variant: 'long' }, + testDate, + [ + [defaultLocale, 'Nov 21, 2023'], + [fr, '21 nov. 2023'], + ], + ], + + // PeriodType.DayTime + [ + PeriodType.DayTime, + { variant: 'short' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '3/7/2023, 2:02 PM'], + [fr, '07/03/2023 14:02'], + ], + ], + [ + PeriodType.DayTime, + { variant: 'default' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '3/7/2023, 02:02 PM'], + [fr, '07/03/2023 14:02'], + ], + ], + [ + PeriodType.DayTime, + { variant: 'long' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '3/7/2023, 02:02:03 PM'], + [fr, '07/03/2023 14:02:03'], + ], + ], + + // PeriodType.TimeOnly + [ + PeriodType.TimeOnly, + { variant: 'short' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02 PM'], + [fr, '14:02'], + ], + ], + [ + PeriodType.TimeOnly, + { variant: 'default' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '02:02:03 PM'], + [fr, '14:02:03'], + ], + ], + [ + PeriodType.TimeOnly, + { variant: 'long' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '02:02:03.004 PM'], + [fr, '14:02:03,004'], + ], + ], + + // PeriodType.Hour + [ + PeriodType.Hour, + { variant: 'short' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2 PM'], + [fr, '14 h'], + ], + ], + [ + PeriodType.Hour, + { variant: 'default' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2 PM'], + [fr, '14 h'], + ], + ], + [ + PeriodType.Hour, + { variant: 'long' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '02 PM'], + [fr, '14 h'], + ], + ], + + // PeriodType.Minute + [ + PeriodType.Minute, + { variant: 'short' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02 PM'], + [fr, '14:02'], + ], + ], + [ + PeriodType.Minute, + { variant: 'default' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02 PM'], + [fr, '14:02'], + ], + ], + [ + PeriodType.Minute, + { variant: 'long' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '02:02 PM'], + [fr, '14:02'], + ], + ], + + // PeriodType.Second + [ + PeriodType.Second, + { variant: 'short' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02:03 PM'], + [fr, '14:02:03'], + ], + ], + [ + PeriodType.Second, + { variant: 'default' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02:03 PM'], + [fr, '14:02:03'], + ], + ], + [ + PeriodType.Second, + { variant: 'long' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '02:02:03 PM'], + [fr, '14:02:03'], + ], + ], + + // PeriodType.Millisecond + [ + PeriodType.Millisecond, + { variant: 'short' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02:03.004 PM'], + [fr, '14:02:03,004'], + ], + ], + [ + PeriodType.Millisecond, + { variant: 'default' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02:03.004 PM'], + [fr, '14:02:03,004'], + ], + ], + [ + PeriodType.Millisecond, + { variant: 'long' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '02:02:03.004 PM'], + [fr, '14:02:03,004'], + ], + ], + + // PeriodType.WeekSun / Mon + [ + PeriodType.WeekSun, + { variant: 'short' }, + testDate, + [ + [defaultLocale, '11/19 - 11/25'], + [fr, '19/11 - 25/11'], + ], + ], + [ + PeriodType.WeekSun, + { variant: 'default' }, + testDate, + [ + [defaultLocale, '11/19/2023 - 11/25/2023'], + [fr, '19/11/2023 - 25/11/2023'], + ], + ], + [ + PeriodType.WeekSun, + { variant: 'long' }, + testDate, + [ + [defaultLocale, '11/19/2023 - 11/25/2023'], + [fr, '19/11/2023 - 25/11/2023'], + ], + ], + [ + PeriodType.WeekMon, + { variant: 'long' }, + testDate, + [ + [defaultLocale, '11/20/2023 - 11/26/2023'], + [fr, '20/11/2023 - 26/11/2023'], + ], + ], + + // PeriodType.Week + [ + PeriodType.Week, + { variant: 'short' }, + testDate, + [ + [defaultLocale, '11/19 - 11/25'], + [fr, '20/11 - 26/11'], + ], + ], + [ + PeriodType.Week, + { variant: 'default' }, + testDate, + [ + [defaultLocale, '11/19/2023 - 11/25/2023'], + [fr, '20/11/2023 - 26/11/2023'], + ], + ], + [ + PeriodType.Week, + { variant: 'long' }, + testDate, + [ + [defaultLocale, '11/19/2023 - 11/25/2023'], + [fr, '20/11/2023 - 26/11/2023'], + ], + ], + + // PeriodType.Month + [ + PeriodType.Month, + { variant: 'short' }, + testDate, + [ + [defaultLocale, 'Nov'], + [fr, 'nov.'], + ], + ], + [ + PeriodType.Month, + { variant: 'default' }, + testDate, + [ + [defaultLocale, 'November'], + [fr, 'novembre'], + ], + ], + [ + PeriodType.Month, + { variant: 'long' }, + testDate, + [ + [defaultLocale, 'November 2023'], + [fr, 'novembre 2023'], + ], + ], + + // PeriodType.MonthYear + [ + PeriodType.MonthYear, + { variant: 'short' }, + testDate, + [ + [defaultLocale, 'Nov 23'], + [fr, 'nov. 23'], + ], + ], + [ + PeriodType.MonthYear, + { variant: 'default' }, + testDate, + [ + [defaultLocale, 'November 2023'], + [fr, 'novembre 2023'], + ], + ], + [ + PeriodType.MonthYear, + { variant: 'long' }, + testDate, + [ + [defaultLocale, 'November 2023'], + [fr, 'novembre 2023'], + ], + ], + + // PeriodType.Quarter + [ + PeriodType.Quarter, + { variant: 'short' }, + testDate, + [ + [defaultLocale, 'Oct - Dec 23'], + [fr, 'oct. - déc. 23'], + ], + ], + [ + PeriodType.Quarter, + { variant: 'default' }, + testDate, + [ + [defaultLocale, 'October - December 2023'], + [fr, 'octobre - décembre 2023'], + ], + ], + [ + PeriodType.Quarter, + { variant: 'long' }, + testDate, + [ + [defaultLocale, 'October 2023 - December 2023'], + [fr, 'octobre 2023 - décembre 2023'], + ], + ], + + // PeriodType.CalendarYear + [ + PeriodType.CalendarYear, + { variant: 'short' }, + testDate, + [ + [defaultLocale, '23'], + [fr, '23'], + ], + ], + [ + PeriodType.CalendarYear, + { variant: 'default' }, + testDate, + [ + [defaultLocale, '2023'], + [fr, '2023'], + ], + ], + [ + PeriodType.CalendarYear, + { variant: 'long' }, + testDate, + [ + [defaultLocale, '2023'], + [fr, '2023'], + ], + ], + + // PeriodType.FiscalYearOctober + [ + PeriodType.FiscalYearOctober, + { variant: 'short' }, + testDate, + [ + [defaultLocale, '24'], + [fr, '24'], + ], + ], + [ + PeriodType.FiscalYearOctober, + { variant: 'default' }, + testDate, + [ + [defaultLocale, '2024'], + [fr, '2024'], + ], + ], + [ + PeriodType.FiscalYearOctober, + { variant: 'long' }, + testDate, + [ + [defaultLocale, '2024'], + [fr, '2024'], + ], + ], + + // PeriodType.BiWeek1Sun + [ + PeriodType.BiWeek1Sun, + { variant: 'short' }, + testDate, + [ + [defaultLocale, '11/12 - 11/25'], + [fr, '12/11 - 25/11'], + ], + ], + [ + PeriodType.BiWeek1Sun, + { variant: 'default' }, + testDate, + [ + [defaultLocale, '11/12/2023 - 11/25/2023'], + [fr, '12/11/2023 - 25/11/2023'], + ], + ], + [ + PeriodType.BiWeek1Sun, + { variant: 'long' }, + testDate, + [ + [defaultLocale, '11/12/2023 - 11/25/2023'], + [fr, '12/11/2023 - 25/11/2023'], + ], + ], ] as const; for (const c of cases) { - const [variant, locales, expected] = c; - it(c.toString(), () => { - expect(formatDateWithLocale(locales, testDate, PeriodType.Day, { variant })).equal( - expected - ); + const [periodType, options, date, locales] = c; + describe(PeriodType[periodType], () => { + describe(`options: ${JSON.stringify(options)}`, () => { + for (const [locale, expected] of locales) { + it(`locale: ${locale.locale}`, () => { + expect(formatDateWithLocale(locale, date, periodType, options)).equal(expected); + }); + } + }); }); } }); - describe('should format date string for DayTime, TimeOnly', () => { - const cases: [Date, PeriodType, FormatDateOptions, string[]][] = [ + describe('PeriodTypeCode string', () => { + const cases: [PeriodTypeCode, FormatDateOptions, Date, [LocaleSettings, string][]][] = [ + // 'day' + [ + 'day', + { variant: 'short' }, + testDate, + [ + [defaultLocale, '11/21'], + [fr, '21/11'], + ], + ], + [ + 'day', + { variant: 'default' }, + testDate, + [ + [defaultLocale, '11/21/2023'], + [fr, '21/11/2023'], + ], + ], + [ + 'day', + { variant: 'long' }, + testDate, + [ + [defaultLocale, 'Nov 21, 2023'], + [fr, '21 nov. 2023'], + ], + ], + + // 'daytime' + [ + 'daytime', + { variant: 'short' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '3/7/2023, 2:02 PM'], + [fr, '07/03/2023 14:02'], + ], + ], + [ + 'daytime', + { variant: 'default' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '3/7/2023, 02:02 PM'], + [fr, '07/03/2023 14:02'], + ], + ], + [ + 'daytime', + { variant: 'long' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '3/7/2023, 02:02:03 PM'], + [fr, '07/03/2023 14:02:03'], + ], + ], + + // 'time' + [ + 'time', + { variant: 'short' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02 PM'], + [fr, '14:02'], + ], + ], + [ + 'time', + { variant: 'default' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '02:02:03 PM'], + [fr, '14:02:03'], + ], + ], + [ + 'time', + { variant: 'long' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '02:02:03.004 PM'], + [fr, '14:02:03,004'], + ], + ], + + // hour + [ + 'hour', + { variant: 'short' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2 PM'], + [fr, '14 h'], + ], + ], + [ + 'hour', + { variant: 'default' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2 PM'], + [fr, '14 h'], + ], + ], + [ + 'hour', + { variant: 'long' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '02 PM'], + [fr, '14 h'], + ], + ], + + // minute + [ + 'minute', + { variant: 'short' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02 PM'], + [fr, '14:02'], + ], + ], + [ + 'minute', + { variant: 'default' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02 PM'], + [fr, '14:02'], + ], + ], + [ + 'minute', + { variant: 'long' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '02:02 PM'], + [fr, '14:02'], + ], + ], + + // second + [ + 'second', + { variant: 'short' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02:03 PM'], + [fr, '14:02:03'], + ], + ], + [ + 'second', + { variant: 'default' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02:03 PM'], + [fr, '14:02:03'], + ], + ], + [ + 'second', + { variant: 'long' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '02:02:03 PM'], + [fr, '14:02:03'], + ], + ], + + // millisecond + [ + 'millisecond', + { variant: 'short' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02:03.004 PM'], + [fr, '14:02:03,004'], + ], + ], + [ + 'millisecond', + { variant: 'default' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '2:02:03.004 PM'], + [fr, '14:02:03,004'], + ], + ], + [ + 'millisecond', + { variant: 'long' }, + dt_1M_1d_time_pm, + [ + [defaultLocale, '02:02:03.004 PM'], + [fr, '14:02:03,004'], + ], + ], + + // 'week-sun' + [ + 'week-sun', + { variant: 'short' }, + testDate, + [ + [defaultLocale, '11/19 - 11/25'], + [fr, '19/11 - 25/11'], + ], + ], + [ + 'week-sun', + { variant: 'default' }, + testDate, + [ + [defaultLocale, '11/19/2023 - 11/25/2023'], + [fr, '19/11/2023 - 25/11/2023'], + ], + ], + [ + 'week-sun', + { variant: 'long' }, + testDate, + [ + [defaultLocale, '11/19/2023 - 11/25/2023'], + [fr, '19/11/2023 - 25/11/2023'], + ], + ], + + // 'week-mon' [ - dt_1M_1d_time_pm, - PeriodType.DayTime, + 'week-mon', + { variant: 'long' }, + testDate, + [ + [defaultLocale, '11/20/2023 - 11/26/2023'], + [fr, '20/11/2023 - 26/11/2023'], + ], + ], + // 'week' + [ + 'week', { variant: 'short' }, - ['3/7/2023, 2:02 PM', '07/03/2023 14:02'], + testDate, + [ + [defaultLocale, '11/19 - 11/25'], + [fr, '20/11 - 26/11'], + ], ], [ - dt_1M_1d_time_pm, - PeriodType.DayTime, + 'week', { variant: 'default' }, - ['3/7/2023, 02:02 PM', '07/03/2023 14:02'], + testDate, + [ + [defaultLocale, '11/19/2023 - 11/25/2023'], + [fr, '20/11/2023 - 26/11/2023'], + ], ], [ - dt_1M_1d_time_pm, - PeriodType.DayTime, + 'week', { variant: 'long' }, - ['3/7/2023, 02:02:03 PM', '07/03/2023 14:02:03'], + testDate, + [ + [defaultLocale, '11/19/2023 - 11/25/2023'], + [fr, '20/11/2023 - 26/11/2023'], + ], ], - [dt_1M_1d_time_pm, PeriodType.TimeOnly, { variant: 'short' }, ['2:02 PM', '14:02']], - [dt_1M_1d_time_pm, PeriodType.TimeOnly, { variant: 'default' }, ['02:02:03 PM', '14:02:03']], + + // 'month' [ - dt_1M_1d_time_pm, - PeriodType.TimeOnly, + 'month', + { variant: 'short' }, + testDate, + [ + [defaultLocale, 'Nov'], + [fr, 'nov.'], + ], + ], + [ + 'month', + { variant: 'default' }, + testDate, + [ + [defaultLocale, 'November'], + [fr, 'novembre'], + ], + ], + [ + 'month', { variant: 'long' }, - ['02:02:03.004 PM', '14:02:03,004'], + testDate, + [ + [defaultLocale, 'November 2023'], + [fr, 'novembre 2023'], + ], ], - ]; - - for (const c of cases) { - const [date, periodType, options, [expected_default, expected_fr]] = c; - it(c.toString(), () => { - expect(formatWithLocale(defaultLocale, date, periodType, options)).equal(expected_default); - }); - - it(c.toString() + 'fr', () => { - expect(formatWithLocale(fr, date, periodType, options)).equal(expected_fr); - }); - } - }); - - describe('should format date for PeriodType.WeekSun / Mon no mather the locale', () => { - const cases = [ - [PeriodType.WeekSun, 'short', defaultLocale, '11/19 - 11/25'], - [PeriodType.WeekSun, 'short', fr, '19/11 - 25/11'], - [PeriodType.WeekSun, 'long', defaultLocale, '11/19/2023 - 11/25/2023'], - [PeriodType.WeekSun, 'long', fr, '19/11/2023 - 25/11/2023'], - [PeriodType.WeekMon, 'long', defaultLocale, '11/20/2023 - 11/26/2023'], - [PeriodType.WeekMon, 'long', fr, '20/11/2023 - 26/11/2023'], - ] as const; - - for (const c of cases) { - const [periodType, variant, locales, expected] = c; - it(c.toString(), () => { - expect(formatDateWithLocale(locales, testDate, periodType, { variant })).equal(expected); - }); - } - }); - - describe('should format date for PeriodType.Week with the good weekstarton locale', () => { - const cases = [ - [PeriodType.Week, 'short', defaultLocale, '11/19 - 11/25'], - [PeriodType.Week, 'short', fr, '20/11 - 26/11'], - [PeriodType.Week, 'long', defaultLocale, '11/19/2023 - 11/25/2023'], - [PeriodType.Week, 'long', fr, '20/11/2023 - 26/11/2023'], - - [PeriodType.Week, 'short', defaultLocale, '11/19 - 11/25'], - [PeriodType.Week, 'short', fr, '20/11 - 26/11'], - [PeriodType.Week, 'long', defaultLocale, '11/19/2023 - 11/25/2023'], - [PeriodType.Week, 'long', fr, '20/11/2023 - 26/11/2023'], - ] as const; - - for (const c of cases) { - const [periodType, variant, locales, expected] = c; - it(c.toString(), () => { - expect(formatDateWithLocale(locales, testDate, periodType, { variant })).equal(expected); - }); - } - }); - - describe('should format date for PeriodType.Month', () => { - const cases = [ - ['short', defaultLocale, 'Nov'], - ['short', fr, 'nov.'], - ['long', defaultLocale, 'November'], - ['long', fr, 'novembre'], - ] as const; - - for (const c of cases) { - const [variant, locales, expected] = c; - it(c.toString(), () => { - expect(formatDateWithLocale(locales, testDate, PeriodType.Month, { variant })).equal( - expected - ); - }); - } - }); - - describe('should format date for PeriodType.MonthYear', () => { - const cases = [ - ['short', defaultLocale, 'Nov 23'], - ['short', fr, 'nov. 23'], - ['long', defaultLocale, 'November 2023'], - ['long', fr, 'novembre 2023'], - ] as const; - - for (const c of cases) { - const [variant, locales, expected] = c; - it(c.toString(), () => { - expect(formatDateWithLocale(locales, testDate, PeriodType.MonthYear, { variant })).equal( - expected - ); - }); - } - }); - describe('should format date for PeriodType.Quarter', () => { - const cases = [ - ['short', defaultLocale, 'Oct - Dec 23'], - ['short', fr, 'oct. - déc. 23'], - ['long', defaultLocale, 'October - December 2023'], - ['long', fr, 'octobre - décembre 2023'], - ] as const; + // 'month-year' + [ + 'month-year', + { variant: 'short' }, + testDate, + [ + [defaultLocale, 'Nov 23'], + [fr, 'nov. 23'], + ], + ], + [ + 'month-year', + { variant: 'default' }, + testDate, + [ + [defaultLocale, 'November 2023'], + [fr, 'novembre 2023'], + ], + ], + [ + 'month-year', + { variant: 'long' }, + testDate, + [ + [defaultLocale, 'November 2023'], + [fr, 'novembre 2023'], + ], + ], - for (const c of cases) { - const [variant, locales, expected] = c; - it(c.toString(), () => { - expect(formatDateWithLocale(locales, testDate, PeriodType.Quarter, { variant })).equal( - expected - ); - }); - } - }); + // 'quarter' + [ + 'quarter', + { variant: 'short' }, + testDate, + [ + [defaultLocale, 'Oct - Dec 23'], + [fr, 'oct. - déc. 23'], + ], + ], + [ + 'quarter', + { variant: 'default' }, + testDate, + [ + [defaultLocale, 'October - December 2023'], + [fr, 'octobre - décembre 2023'], + ], + ], + [ + 'quarter', + { variant: 'long' }, + testDate, + [ + [defaultLocale, 'October 2023 - December 2023'], + [fr, 'octobre 2023 - décembre 2023'], + ], + ], - describe('should format date for PeriodType.CalendarYear', () => { - const cases = [ - ['short', defaultLocale, '23'], - ['short', fr, '23'], - ['long', defaultLocale, '2023'], - ['long', fr, '2023'], - ] as const; + // 'year' + [ + 'year', + { variant: 'short' }, + testDate, + [ + [defaultLocale, '23'], + [fr, '23'], + ], + ], + [ + 'year', + { variant: 'default' }, + testDate, + [ + [defaultLocale, '2023'], + [fr, '2023'], + ], + ], + [ + 'year', + { variant: 'long' }, + testDate, + [ + [defaultLocale, '2023'], + [fr, '2023'], + ], + ], - for (const c of cases) { - const [variant, locales, expected] = c; - it(c.toString(), () => { - expect(formatDateWithLocale(locales, testDate, PeriodType.CalendarYear, { variant })).equal( - expected - ); - }); - } - }); + // 'fiscal-year-october' + [ + 'fiscal-year-october', + { variant: 'short' }, + testDate, + [ + [defaultLocale, '24'], + [fr, '24'], + ], + ], + [ + 'fiscal-year-october', + { variant: 'default' }, + testDate, + [ + [defaultLocale, '2024'], + [fr, '2024'], + ], + ], + [ + 'fiscal-year-october', + { variant: 'long' }, + testDate, + [ + [defaultLocale, '2024'], + [fr, '2024'], + ], + ], - describe('should format date for PeriodType.FiscalYearOctober', () => { - const cases = [ - ['short', defaultLocale, '24'], - ['short', fr, '24'], - ['long', defaultLocale, '2024'], - ['long', fr, '2024'], - ] as const; + // 'biweek1-sun' + [ + 'biweek1-sun', + { variant: 'short' }, + testDate, + [ + [defaultLocale, '11/12 - 11/25'], + [fr, '12/11 - 25/11'], + ], + ], + [ + 'biweek1-sun', + { variant: 'default' }, + testDate, + [ + [defaultLocale, '11/12/2023 - 11/25/2023'], + [fr, '12/11/2023 - 25/11/2023'], + ], + ], + [ + 'biweek1-sun', + { variant: 'long' }, + testDate, + [ + [defaultLocale, '11/12/2023 - 11/25/2023'], + [fr, '12/11/2023 - 25/11/2023'], + ], + ], + ]; for (const c of cases) { - const [variant, locales, expected] = c; - it(c.toString(), () => { - expect( - formatDateWithLocale(locales, testDate, PeriodType.FiscalYearOctober, { variant }) - ).equal(expected); + const [periodTypeCode, options, date, locales] = c; + describe(periodTypeCode, () => { + describe(`options: ${JSON.stringify(options)}`, () => { + for (const [locale, expected] of locales) { + it(`locale: ${locale.locale}`, () => { + expect(formatDateWithLocale(locale, date, periodTypeCode, options)).equal(expected); + }); + } + }); }); } }); - describe('should format date for PeriodType.BiWeek1Sun', () => { + describe('should format date string for PeriodType.Day', () => { const cases = [ - ['short', defaultLocale, '11/12 - 11/25'], - ['short', fr, '12/11 - 25/11'], - ['long', defaultLocale, '11/12/2023 - 11/25/2023'], - ['long', fr, '12/11/2023 - 25/11/2023'], + ['short', defaultLocale, '11/21'], + ['short', fr, '21/11'], + ['default', defaultLocale, '11/21/2023'], + ['default', fr, '21/11/2023'], + ['long', defaultLocale, 'Nov 21, 2023'], + ['long', fr, '21 nov. 2023'], ] as const; for (const c of cases) { - const [variant, locales, expected] = c; + const [variant, locale, expected] = c; it(c.toString(), () => { - expect(formatDateWithLocale(locales, testDate, PeriodType.BiWeek1Sun, { variant })).equal( + expect(formatDateWithLocale(locale, testDateStr, PeriodType.Day, { variant })).equal( expected ); }); } }); - - describe('should format date for PeriodType.undefined', () => { - const expected = '2023-11-21T00:00:00-04:00'; - const cases = [ - ['short', defaultLocale], - ['short', fr], - ['long', defaultLocale], - ['long', fr], - ] as const; - - for (const c of cases) { - const [variant, locales] = c; - it(c.toString(), () => { - // @ts-expect-error - expect(formatDateWithLocale(locales, testDate, undefined, { variant })).equal(expected); - }); - } - }); }); describe('formatIntl() tokens', () => { @@ -406,7 +1169,7 @@ describe('localToUtcDate()', () => { describe('getMonthDaysByWeek()', () => { it('default starting Week: Sunday', () => { - const dates = getMonthDaysByWeek(new Date(testDate)); + const dates = getMonthDaysByWeek(testDate); expect(dates).toMatchInlineSnapshot(` [ [ @@ -459,7 +1222,7 @@ describe('getMonthDaysByWeek()', () => { }); it('Starting Week: Monday', () => { - const dates = getMonthDaysByWeek(new Date(testDate), 1); + const dates = getMonthDaysByWeek(testDate, 1); expect(dates).toMatchInlineSnapshot(` [ [ @@ -530,16 +1293,96 @@ describe('getWeekStartsOnFromIntl() tokens', () => { }); describe('getPeriodTypeByCode()', () => { - it('week', () => { - const val = getPeriodTypeByCode('WEEK'); - expect(val).toBe(PeriodType.Week); + const data = [ + ['custom', PeriodType.Custom], + ['day', PeriodType.Day], + ['daytime', PeriodType.DayTime], + ['time', PeriodType.TimeOnly], + ['hour', PeriodType.Hour], + ['minute', PeriodType.Minute], + ['second', PeriodType.Second], + ['millisecond', PeriodType.Millisecond], + ['week', PeriodType.Week], + ['week-sun', PeriodType.WeekSun], + ['week-mon', PeriodType.WeekMon], + ['week-tue', PeriodType.WeekTue], + ['week-wed', PeriodType.WeekWed], + ['week-thu', PeriodType.WeekThu], + ['week-fri', PeriodType.WeekFri], + ['week-sat', PeriodType.WeekSat], + ['month', PeriodType.Month], + ['month-year', PeriodType.MonthYear], + ['quarter', PeriodType.Quarter], + ['year', PeriodType.CalendarYear], + ['fiscal-year-october', PeriodType.FiscalYearOctober], + ['biweek1', PeriodType.BiWeek1], + ['biweek1-sun', PeriodType.BiWeek1Sun], + ['biweek1-mon', PeriodType.BiWeek1Mon], + ['biweek1-tue', PeriodType.BiWeek1Tue], + ['biweek1-wed', PeriodType.BiWeek1Wed], + ['biweek1-thu', PeriodType.BiWeek1Thu], + ['biweek1-fri', PeriodType.BiWeek1Fri], + ['biweek1-sat', PeriodType.BiWeek1Sat], + ['biweek2', PeriodType.BiWeek2], + ['biweek2-sun', PeriodType.BiWeek2Sun], + ['biweek2-mon', PeriodType.BiWeek2Mon], + ['biweek2-tue', PeriodType.BiWeek2Tue], + ['biweek2-wed', PeriodType.BiWeek2Wed], + ['biweek2-thu', PeriodType.BiWeek2Thu], + ['biweek2-fri', PeriodType.BiWeek2Fri], + ['biweek2-sat', PeriodType.BiWeek2Sat], + ] as const; + + data.forEach(([code, periodType]) => { + it(code, () => { + const val = getPeriodTypeByCode(code); + expect(val).toBe(periodType); + }); }); }); describe('getPeriodTypeCode()', () => { - it('BiWeek1Sat', () => { - const val = getPeriodTypeCode(PeriodType.BiWeek1Sat); - expect(val).toBe('BIWEEK1-SAT'); + const data = [ + ['custom', PeriodType.Custom], + ['day', PeriodType.Day], + ['daytime', PeriodType.DayTime], + ['time', PeriodType.TimeOnly], + ['week', PeriodType.Week], + ['week-sun', PeriodType.WeekSun], + ['week-mon', PeriodType.WeekMon], + ['week-tue', PeriodType.WeekTue], + ['week-wed', PeriodType.WeekWed], + ['week-thu', PeriodType.WeekThu], + ['week-fri', PeriodType.WeekFri], + ['week-sat', PeriodType.WeekSat], + ['month', PeriodType.Month], + ['month-year', PeriodType.MonthYear], + ['quarter', PeriodType.Quarter], + ['year', PeriodType.CalendarYear], + ['fiscal-year-october', PeriodType.FiscalYearOctober], + ['biweek1', PeriodType.BiWeek1], + ['biweek1-sun', PeriodType.BiWeek1Sun], + ['biweek1-mon', PeriodType.BiWeek1Mon], + ['biweek1-tue', PeriodType.BiWeek1Tue], + ['biweek1-wed', PeriodType.BiWeek1Wed], + ['biweek1-thu', PeriodType.BiWeek1Thu], + ['biweek1-fri', PeriodType.BiWeek1Fri], + ['biweek1-sat', PeriodType.BiWeek1Sat], + ['biweek2', PeriodType.BiWeek2], + ['biweek2-sun', PeriodType.BiWeek2Sun], + ['biweek2-mon', PeriodType.BiWeek2Mon], + ['biweek2-tue', PeriodType.BiWeek2Tue], + ['biweek2-wed', PeriodType.BiWeek2Wed], + ['biweek2-thu', PeriodType.BiWeek2Thu], + ['biweek2-fri', PeriodType.BiWeek2Fri], + ['biweek2-sat', PeriodType.BiWeek2Sat], + ] as const; + + data.forEach(([code, periodType]) => { + it(code, () => { + const val = getPeriodTypeCode(periodType); + expect(val).toBe(code); + }); }); }); @@ -693,3 +1536,225 @@ describe('isStringDate()', () => { expect(isStringDate('1982-03-30T11:25:59.1234567Z')).true; }); }); + +describe('parseDate()', () => { + it('date only as locale date', () => { + expect(parseDate('1982-03-30')).toEqual(new Date('1982-03-30T04:00:00.000Z')); + }); + + it('date and time only (hour/minute) as locale date', () => { + expect(parseDate('1982-03-30T04:00')).toEqual(new Date('1982-03-30T08:00:00.000Z')); + }); + + it('date and time only (hour/minute/second) as locale date', () => { + expect(parseDate('1982-03-30T04:00:00')).toEqual(new Date('1982-03-30T08:00:00.000Z')); + }); + + it('should not equal UTC date', () => { + // Just an extra check + expect(parseDate('1982-03-30')).not.toEqual(new Date('1982-03-30')); + }); + + it('date with timezome (UTC)', () => { + expect(parseDate('1982-03-30T11:25:59Z')).toEqual(new Date('1982-03-30T11:25:59Z')); + }); + + it('date with time (offset)', () => { + expect(parseDate('1982-03-30T00:00:00-01:00')).toEqual(new Date('1982-03-30T00:00:00-01:00')); + }); + + it('date with time and 3 digit milliseconds (UTC)', () => { + expect(parseDate('1982-03-30T11:25:59.123Z')).toEqual(new Date('1982-03-30T11:25:59.123Z')); + }); + + it('date with time with 7 digit milliseconds (UTC)', () => { + expect(parseDate('1982-03-30T11:25:59.1234567Z')).toEqual( + new Date('1982-03-30T11:25:59.1234567Z') + ); + }); + + it('invalid date string', () => { + expect(parseDate('some_string')).toEqual(new Date('Invalid Date')); + }); + + describe('strftime format', () => { + test.each([ + ['2023-03-07', '%Y-%m-%d', new Date('2023-03-07T04:00:00.000Z')], + ['3/7/2023', '%m/%d/%Y', new Date('2023-03-07T04:00:00.000Z')], + ['03/07/2023', '%m/%d/%Y', new Date('2023-03-07T04:00:00.000Z')], + ['03/07/23', '%m/%d/%y', new Date('2023-03-07T04:00:00.000Z')], + ['3/7/23', '%m/%d/%y', new Date('2023-03-07T04:00:00.000Z')], + ['Tuesday, March 7, 2023', '%A, %B %d, %Y', new Date('2023-03-07T04:00:00.000Z')], + ['11:25:59', '%H:%M:%S', new Date('1900-01-01T15:25:59.000Z')], + ['2:30 PM', '%I:%M %p', new Date('1900-01-01T18:30:00.000Z')], + ['2023-03-07 14:30:45', '%Y-%m-%d %H:%M:%S', new Date('2023-03-07T18:30:45.000Z')], + ['2023-03-07 14:30:45 -07:00', '%Y-%m-%d %H:%M:%S %Z', new Date('2023-03-07T21:30:45.000Z')], + ])('parseDate(%s, %s) => %s', (date, format, expected) => { + expect(parseDate(date, format)).toEqual(expected); + }); + }); + + describe('Unicode format', () => { + test.each([ + ['2023-03-07', 'yyyy-MM-dd', new Date('2023-03-07T04:00:00.000Z')], + ['3/7/2023', 'M/d/yyyy', new Date('2023-03-07T04:00:00.000Z')], + ['03/07/2023', 'MM/dd/yyyy', new Date('2023-03-07T04:00:00.000Z')], + ['3/7/23', 'M/d/yy', new Date('2023-03-07T04:00:00.000Z')], + ['Tuesday, December 25, 2023', 'EEEE, MMMM dd, yyyy', new Date('2023-12-25T04:00:00.000Z')], + ['11:25:59', 'HH:mm:ss', new Date('1900-01-01T15:25:59.000Z')], + ['2:30 PM', 'hh:mm a', new Date('1900-01-01T18:30:00.000Z')], + ['2023-03-07 14:30:45', 'yyyy-MM-dd HH:mm:ss', new Date('2023-03-07T18:30:45.000Z')], + ['2023-03-07 14:30:45 -07:00', 'yyyy-MM-dd HH:mm:ss z', new Date('2023-03-07T21:30:45.000Z')], + ])('parseDate(%s, %s) => %s', (date, format, expected) => { + expect(parseDate(date, format)).toEqual(expected); + }); + }); +}); + +describe('timeInterval()', () => { + test.each([ + ['millisecond', timeMillisecond], + ['second', timeSecond], + ['minute', timeMinute], + ['hour', timeHour], + ['day', timeDay], + ['week', timeWeek], + ['month', timeMonth], + // ['quarter', timeMonth.every(3)], // TODO: how to verify this? + ['year', timeYear], + ])('timeInterval(%s) => %s', (interval, expected) => { + expect(timeInterval(interval as TimeIntervalType)).toEqual(expected); + }); +}); + +describe('startOfInterval()', () => { + test.each([ + ['millisecond', '2023-03-07T14:02:03.004'], + ['second', '2023-03-07T14:02:03'], + ['minute', '2023-03-07T14:02'], + ['hour', '2023-03-07T14:00:00.000'], + ['day', '2023-03-07'], + ['week', '2023-03-05'], + ['month', '2023-03-01'], + ['quarter', '2023-01-01'], + ['year', '2023-01-01'], + ])('startOfInterval(%s, %s) => %s', (interval, expected) => { + expect(startOfInterval(interval as TimeIntervalType, dt_1M_1d_time_pm)).toEqual( + parseDate(expected) + ); + }); +}); + +describe('endOfInterval()', () => { + test.each([ + ['millisecond', '2023-03-07T14:02:03.004'], + ['second', '2023-03-07T14:02:03.999'], + ['minute', '2023-03-07T14:02:59.999'], + ['hour', '2023-03-07T14:59:59.999'], + ['day', '2023-03-07T23:59:59.999'], + ['week', '2023-03-11T23:59:59.999'], + ['month', '2023-03-31T23:59:59.999'], + ['quarter', '2023-03-31T23:59:59.999'], + ['year', '2023-12-31T23:59:59.999'], + ])('endOfInterval(%s, %s) => %s', (interval, expected) => { + expect(endOfInterval(interval as TimeIntervalType, dt_1M_1d_time_pm)).toEqual( + parseDate(expected) + ); + }); +}); + +describe('intervalOffset()', () => { + test.each([ + ['millisecond', 1, '2023-11-21T04:00:00.001Z'], + ['millisecond', -1, '2023-11-21T03:59:59.999Z'], + ['second', 1, '2023-11-21T04:00:01Z'], + ['second', -1, '2023-11-21T03:59:59Z'], + ['minute', 1, '2023-11-21T04:01:00Z'], + ['minute', -1, '2023-11-21T03:59:00Z'], + ['hour', 1, '2023-11-21T05:00:00Z'], + ['hour', -1, '2023-11-21T03:00:00Z'], + ['day', 1, '2023-11-22'], + ['day', -1, '2023-11-20'], + ['week', 1, '2023-11-28'], + ['week', -1, '2023-11-14'], + ['month', 1, '2023-12-21'], + ['month', -1, '2023-10-21'], + ['quarter', 1, '2024-02-01'], + ['quarter', -1, '2023-08-01'], + ['year', 1, '2024-11-21'], + ['year', -1, '2022-11-21'], + ])('intervalOffset(%s, %s, %s) => %s', (interval, offset, expected) => { + expect(intervalOffset(interval as TimeIntervalType, testDate, offset)).toEqual( + parseDate(expected) + ); + }); +}); + +describe('isSameInterval()', () => { + test.each([ + ['day', '2023-03-07T00:00', '2023-03-07T23:59', true], + ['day', '2023-03-07T11:00', '2023-03-08T12:00', false], + ['week', '2023-03-07', '2023-03-08', true], + ['week', '2023-03-07', '2023-03-14', false], + ['month', '2023-03-07', '2023-03-30', true], + ['month', '2023-03-07', '2023-04-07', false], + ['quarter', '2023-03-07', '2023-01-07', true], + ['quarter', '2023-03-07', '2023-04-07', false], + ['year', '2023-03-07', '2023-11-21', true], + ['year', '2023-03-07', '2024-03-07', false], + ])('isSameInterval(%s, %s, %s) => %s', (interval, date1, date2, expected) => { + expect(isSameInterval(interval as TimeIntervalType, parseDate(date1), parseDate(date2))).toBe( + expected + ); + }); +}); + +describe('intervalDifference()', () => { + test.each([ + ['day', '2023-03-07T00:00', '2023-03-07T23:59', 0], // Same day + ['day', '2023-03-07', '2023-03-08', 1], // Next day + ['day', '2023-01-01', '2023-12-31', 364], // Full year + ['day', '2023-01-01', '2024-01-01', 365], // Next year + ['week', '2023-03-05', '2023-03-11', 0], // Same week + ['week', '2023-03-07', '2023-03-14', 1], // Next week + ['month', '2023-01-01', '2023-01-31', 0], // Same month + ['month', '2023-01-01', '2023-02-01', 1], // Next month + ['quarter', '2023-01-01', '2023-03-31', 0], // Same quarter + ['quarter', '2023-01-01', '2023-04-01', 1], // Next quarter + ['year', '2023-01-01', '2023-12-31', 0], // Same year + ['year', '2023-01-01', '2024-01-01', 1], // Next year + ])('intervalDifference(%s, %s, %s) => %s', (interval, date1, date2, expected) => { + expect( + intervalDifference(interval as TimeIntervalType, parseDate(date1), parseDate(date2)) + ).toEqual(expected); + }); +}); + +describe('isLeapYear()', () => { + test.each([ + ['2020-01-01', true], + ['2021-01-01', false], + ['2022-01-01', false], + ['2023-01-01', false], + ['2024-01-01', true], + ])('isLeapYear(%s) => %s', (date, expected) => { + expect(isLeapYear(parseDate(date))).toBe(expected); + }); +}); + +describe('isDateWithin()', () => { + test.each([ + ['2023-03-07', '2023-03-06', '2023-03-08', true], // between + ['2023-03-07', '2023-03-07', '2023-03-08', true], // match start + ['2023-03-07', '2023-03-06', '2023-03-07', true], // match end + ['2023-03-07', '2023-03-08', '2023-03-09', false], // outside start + ['2023-03-07', '2023-03-05', '2023-03-06', false], // outside end + ])('isDateWithin(%s, %s) => %s', (date, start, end, expected) => { + expect( + isDateWithin(parseDate(date), { + start: parseDate(start), + end: parseDate(end), + }) + ).toBe(expected); + }); +}); diff --git a/packages/utils/src/lib/date.ts b/packages/utils/src/lib/date.ts index 139f443..6fda1d5 100644 --- a/packages/utils/src/lib/date.ts +++ b/packages/utils/src/lib/date.ts @@ -1,34 +1,24 @@ import { - startOfDay, - endOfDay, - startOfWeek, - endOfWeek, - startOfMonth, - endOfMonth, - startOfQuarter, - endOfQuarter, - startOfYear, - endOfYear, - min, - max, - addMonths, - addDays, - differenceInDays, - differenceInWeeks, - differenceInMonths, - differenceInQuarters, - differenceInYears, - addWeeks, - addQuarters, - addYears, - isSameDay, - isSameWeek, - isSameMonth, - isSameQuarter, - isSameYear, - parseISO, - formatISO, -} from 'date-fns'; + CountableTimeInterval, + timeDay, + timeHour, + timeMillisecond, + timeMinute, + timeMonth, + timeSecond, + timeWeek, + timeYear, + timeInterval as d3TimeInterval, + type TimeInterval, + timeMonday, + timeTuesday, + timeWednesday, + timeThursday, + timeFriday, + timeSaturday, +} from 'd3-time'; +import { timeFormat, timeParse } from 'd3-time-format'; +import { min, max } from 'd3-array'; import { hasKeyOf } from './typeGuards.js'; import { assertNever, entries } from './typeHelpers.js'; @@ -41,8 +31,12 @@ import { type CustomIntlDateTimeFormatOptions, type FormatDateOptions, type DateFormatVariantPreset, + periodTypeMappings, + PeriodTypeCode, + type TimeIntervalType, } from './date_types.js'; import { defaultLocale, type LocaleSettings } from './locale.js'; +import { convertUnicodeToStrftime } from './dateInternal.js'; export * from './date_types.js'; @@ -75,6 +69,15 @@ export function getPeriodTypeNameWithLocale(settings: LocaleSettings, periodType case PeriodType.TimeOnly: return dico.Time; + case PeriodType.Hour: + return dico.Hour; + case PeriodType.Minute: + return dico.Minute; + case PeriodType.Second: + return dico.Second; + case PeriodType.Millisecond: + return dico.Millisecond; + case PeriodType.WeekSun: return `${dico.Week} (${getDayOfWeekName(DayOfWeek.Sunday, locale)})`; case PeriodType.WeekMon: @@ -142,54 +145,13 @@ export function getPeriodTypeNameWithLocale(settings: LocaleSettings, periodType } } -const periodTypeMappings: Record = { - [PeriodType.Custom]: 'CUSTOM', - - [PeriodType.Day]: 'DAY', - [PeriodType.DayTime]: 'DAY-TIME', - [PeriodType.TimeOnly]: 'TIME', - - [PeriodType.WeekSun]: 'WEEK-SUN', - [PeriodType.WeekMon]: 'WEEK-MON', - [PeriodType.WeekTue]: 'WEEK-TUE', - [PeriodType.WeekWed]: 'WEEK-WED', - [PeriodType.WeekThu]: 'WEEK-THU', - [PeriodType.WeekFri]: 'WEEK-FRI', - [PeriodType.WeekSat]: 'WEEK-SAT', - [PeriodType.Week]: 'WEEK', - - [PeriodType.Month]: 'MTH', - [PeriodType.MonthYear]: 'MTH-CY', - [PeriodType.Quarter]: 'QTR', - [PeriodType.CalendarYear]: 'CY', - [PeriodType.FiscalYearOctober]: 'FY-OCT', - - [PeriodType.BiWeek1Sun]: 'BIWEEK1-SUN', - [PeriodType.BiWeek1Mon]: 'BIWEEK1-MON', - [PeriodType.BiWeek1Tue]: 'BIWEEK1-TUE', - [PeriodType.BiWeek1Wed]: 'BIWEEK1-WED', - [PeriodType.BiWeek1Thu]: 'BIWEEK1-THU', - [PeriodType.BiWeek1Fri]: 'BIWEEK1-FRI', - [PeriodType.BiWeek1Sat]: 'BIWEEK1-SAT', - [PeriodType.BiWeek1]: 'BIWEEK1', - - [PeriodType.BiWeek2Sun]: 'BIWEEK2-SUN', - [PeriodType.BiWeek2Mon]: 'BIWEEK2-MON', - [PeriodType.BiWeek2Tue]: 'BIWEEK2-TUE', - [PeriodType.BiWeek2Wed]: 'BIWEEK2-WED', - [PeriodType.BiWeek2Thu]: 'BIWEEK2-THU', - [PeriodType.BiWeek2Fri]: 'BIWEEK2-FRI', - [PeriodType.BiWeek2Sat]: 'BIWEEK2-SAT', - [PeriodType.BiWeek2]: 'BIWEEK2', -}; - -export function getPeriodTypeCode(periodType: PeriodType): string { +export function getPeriodTypeCode(periodType: PeriodType): PeriodTypeCode { return periodTypeMappings[periodType]; } -export function getPeriodTypeByCode(code: string): PeriodType { +export function getPeriodTypeByCode(code: PeriodTypeCode) { const element = entries(periodTypeMappings).find((c) => c[1] === code); - return parseInt(String(element?.[0] ?? '1')); + return parseInt(String(element?.[0] ?? '0')); } export function getDayOfWeek(periodType: PeriodType): DayOfWeek | null { @@ -243,15 +205,15 @@ export function getMonthDaysByWeek( dateInTheMonth: Date, weekStartsOn: DayOfWeek = DayOfWeek.Sunday ): Date[][] { - const startOfFirstWeek = startOfWeek(startOfMonth(dateInTheMonth), { weekStartsOn }); - const endOfLastWeek = endOfWeek(endOfMonth(dateInTheMonth), { weekStartsOn }); + const startOfFirstWeek = startOfWeek(startOfInterval('month', dateInTheMonth), weekStartsOn); + const endOfLastWeek = endOfWeek(endOfInterval('month', dateInTheMonth), weekStartsOn); const list = []; let valueToAdd = startOfFirstWeek; while (valueToAdd <= endOfLastWeek) { list.push(valueToAdd); - valueToAdd = addDays(valueToAdd, 1); + valueToAdd = intervalOffset('day', valueToAdd, 1); } return chunk(list, 7) as Date[][]; @@ -304,7 +266,7 @@ export function getFiscalYearRange( const numberOfMonths = (options && options.numberOfMonths) || 12; const startDate = new Date((fiscalYear || 0) - 1, startMonth - 1, 1); - const endDate = endOfMonth(addMonths(startDate, numberOfMonths - 1)); + const endDate = endOfInterval('month', intervalOffset('month', startDate, numberOfMonths - 1)); return { startDate, endDate }; } @@ -329,13 +291,51 @@ const biweekBaseDates = [new Date('1799-12-22T00:00'), new Date('1799-12-15T00:0 export function startOfBiWeek(date: Date, week: number, startOfWeek: DayOfWeek) { var weekBaseDate = biweekBaseDates[week - 1]; - var baseDate = addDays(weekBaseDate, startOfWeek); - var periodsSince = Math.floor(differenceInDays(date, baseDate) / 14); - return addDays(baseDate, periodsSince * 14); + var baseDate = intervalOffset('day', weekBaseDate, startOfWeek); + var periodsSince = Math.floor(intervalDifference('day', baseDate, date) / 14); + return intervalOffset('day', baseDate, periodsSince * 14); } export function endOfBiWeek(date: Date, week: number, startOfWeek: DayOfWeek) { - return addDays(startOfBiWeek(date, week, startOfWeek), 13); + return intervalOffset('day', startOfBiWeek(date, week, startOfWeek), 13); +} + +function startOfWeek(date: Date, weekStartsOn: DayOfWeek) { + switch (weekStartsOn) { + case DayOfWeek.Sunday: + return startOfInterval(timeWeek, date); + case DayOfWeek.Monday: + return startOfInterval(timeMonday, date); + case DayOfWeek.Tuesday: + return startOfInterval(timeTuesday, date); + case DayOfWeek.Wednesday: + return startOfInterval(timeWednesday, date); + case DayOfWeek.Thursday: + return startOfInterval(timeThursday, date); + case DayOfWeek.Friday: + return startOfInterval(timeFriday, date); + case DayOfWeek.Saturday: + return startOfInterval(timeSaturday, date); + } +} + +function endOfWeek(date: Date, weekStartsOn: DayOfWeek) { + switch (weekStartsOn) { + case DayOfWeek.Sunday: + return endOfInterval(timeWeek, date); + case DayOfWeek.Monday: + return endOfInterval(timeMonday, date); + case DayOfWeek.Tuesday: + return endOfInterval(timeTuesday, date); + case DayOfWeek.Wednesday: + return endOfInterval(timeWednesday, date); + case DayOfWeek.Thursday: + return endOfInterval(timeThursday, date); + case DayOfWeek.Friday: + return endOfInterval(timeFriday, date); + case DayOfWeek.Saturday: + return endOfInterval(timeSaturday, date); + } } export function getDateFuncsByPeriodType( @@ -349,107 +349,101 @@ export function getDateFuncsByPeriodType( switch (periodType) { case PeriodType.Day: return { - start: startOfDay, - end: endOfDay, - add: addDays, - difference: differenceInDays, - isSame: isSameDay, + start: startOfInterval('day'), + end: endOfInterval('day'), + add: (date: Date, amount: number) => intervalOffset('day', date, amount), + difference: intervalDifference('day'), + isSame: isSameInterval('day'), }; case PeriodType.Week: case PeriodType.WeekSun: return { - start: startOfWeek, - end: endOfWeek, - add: addWeeks, - difference: differenceInWeeks, - isSame: isSameWeek, + start: startOfInterval(timeWeek), + end: endOfInterval(timeWeek), + add: (date: Date, amount: number) => intervalOffset('week', date, amount), + difference: intervalDifference(timeWeek), + isSame: isSameInterval(timeWeek), }; case PeriodType.WeekMon: return { - start: (date: Date) => startOfWeek(date, { weekStartsOn: 1 }), - end: (date: Date) => endOfWeek(date, { weekStartsOn: 1 }), - add: addWeeks, - difference: differenceInWeeks, - isSame: (dateLeft: Date, dateRight: Date) => - isSameWeek(dateLeft, dateRight, { weekStartsOn: 1 }), + start: startOfInterval(timeMonday), + end: endOfInterval(timeMonday), + add: (date: Date, amount: number) => intervalOffset('week', date, amount), + difference: intervalDifference(timeMonday), + isSame: isSameInterval(timeMonday), }; case PeriodType.WeekTue: return { - start: (date: Date) => startOfWeek(date, { weekStartsOn: 2 }), - end: (date: Date) => endOfWeek(date, { weekStartsOn: 2 }), - add: addWeeks, - difference: differenceInWeeks, - isSame: (dateLeft: Date, dateRight: Date) => - isSameWeek(dateLeft, dateRight, { weekStartsOn: 2 }), + start: startOfInterval(timeTuesday), + end: endOfInterval(timeTuesday), + add: (date: Date, amount: number) => intervalOffset('week', date, amount), + difference: intervalDifference(timeTuesday), + isSame: isSameInterval(timeTuesday), }; case PeriodType.WeekWed: return { - start: (date: Date) => startOfWeek(date, { weekStartsOn: 3 }), - end: (date: Date) => endOfWeek(date, { weekStartsOn: 3 }), - add: addWeeks, - difference: differenceInWeeks, - isSame: (dateLeft: Date, dateRight: Date) => - isSameWeek(dateLeft, dateRight, { weekStartsOn: 3 }), + start: startOfInterval(timeWednesday), + end: endOfInterval(timeWednesday), + add: (date: Date, amount: number) => intervalOffset('week', date, amount), + difference: intervalDifference(timeWednesday), + isSame: isSameInterval(timeWednesday), }; case PeriodType.WeekThu: return { - start: (date: Date) => startOfWeek(date, { weekStartsOn: 4 }), - end: (date: Date) => endOfWeek(date, { weekStartsOn: 4 }), - add: addWeeks, - difference: differenceInWeeks, - isSame: (dateLeft: Date, dateRight: Date) => - isSameWeek(dateLeft, dateRight, { weekStartsOn: 4 }), + start: startOfInterval(timeThursday), + end: endOfInterval(timeThursday), + add: (date: Date, amount: number) => intervalOffset('week', date, amount), + difference: intervalDifference(timeThursday), + isSame: isSameInterval(timeThursday), }; case PeriodType.WeekFri: return { - start: (date: Date) => startOfWeek(date, { weekStartsOn: 5 }), - end: (date: Date) => endOfWeek(date, { weekStartsOn: 5 }), - add: addWeeks, - difference: differenceInWeeks, - isSame: (dateLeft: Date, dateRight: Date) => - isSameWeek(dateLeft, dateRight, { weekStartsOn: 5 }), + start: startOfInterval(timeFriday), + end: endOfInterval(timeFriday), + add: (date: Date, amount: number) => intervalOffset('week', date, amount), + difference: intervalDifference(timeFriday), + isSame: isSameInterval(timeFriday), }; case PeriodType.WeekSat: return { - start: (date: Date) => startOfWeek(date, { weekStartsOn: 6 }), - end: (date: Date) => endOfWeek(date, { weekStartsOn: 6 }), - add: addWeeks, - difference: differenceInWeeks, - isSame: (dateLeft: Date, dateRight: Date) => - isSameWeek(dateLeft, dateRight, { weekStartsOn: 6 }), + start: startOfInterval(timeSaturday), + end: endOfInterval(timeSaturday), + add: (date: Date, amount: number) => intervalOffset('week', date, amount), + difference: intervalDifference(timeSaturday), + isSame: isSameInterval(timeSaturday), }; case PeriodType.Month: return { - start: startOfMonth, - end: endOfMonth, - add: addMonths, - difference: differenceInMonths, - isSame: isSameMonth, + start: startOfInterval('month'), + end: endOfInterval('month'), + add: (date: Date, amount: number) => intervalOffset('month', date, amount), + difference: intervalDifference('month'), + isSame: isSameInterval('month'), }; case PeriodType.Quarter: return { - start: startOfQuarter, - end: endOfQuarter, - add: addQuarters, - difference: differenceInQuarters, - isSame: isSameQuarter, + start: startOfInterval('quarter'), + end: endOfInterval('quarter'), + add: (date: Date, amount: number) => intervalOffset('quarter', date, amount), + difference: intervalDifference('quarter'), + isSame: isSameInterval('quarter'), }; case PeriodType.CalendarYear: return { - start: startOfYear, - end: endOfYear, - add: addYears, - difference: differenceInYears, - isSame: isSameYear, + start: startOfInterval('year'), + end: endOfInterval('year'), + add: (date: Date, amount: number) => intervalOffset('year', date, amount), + difference: intervalDifference('year'), + isSame: isSameInterval('year'), }; case PeriodType.FiscalYearOctober: return { start: startOfFiscalYear, end: endOfFiscalYear, - add: addYears, - difference: differenceInYears, + add: (date: Date, amount: number) => intervalOffset('year', date, amount), + difference: intervalDifference('year'), isSame: isSameFiscalYear, }; @@ -476,12 +470,14 @@ export function getDateFuncsByPeriodType( return { start: (date: Date) => startOfBiWeek(date, week, dayOfWeek), end: (date: Date) => endOfBiWeek(date, week, dayOfWeek), - add: (date: Date, amount: number) => addWeeks(date, amount * 2), + add: (date: Date, amount: number) => intervalOffset('week', date, amount * 2), difference: (dateLeft: Date, dateRight: Date) => { - return differenceInWeeks(dateLeft, dateRight) / 2; + // TODO: Use interval based on start of bi-week (sunday, monday, etc) + return intervalDifference('week', dateLeft, dateRight) / 2; }, isSame: (dateLeft: Date, dateRight: Date) => { - return isSameDay( + return isSameInterval( + 'day', startOfBiWeek(dateLeft, week, dayOfWeek), startOfBiWeek(dateRight, week, dayOfWeek) ); @@ -493,17 +489,21 @@ export function getDateFuncsByPeriodType( case PeriodType.Custom: case PeriodType.DayTime: case PeriodType.TimeOnly: + case PeriodType.Hour: + case PeriodType.Minute: + case PeriodType.Second: + case PeriodType.Millisecond: case PeriodType.MonthYear: case null: case undefined: // Default to end of day if periodType == null, etc return { - start: startOfDay, - end: endOfDay, - add: addDays, - difference: differenceInDays, - isSame: isSameDay, + start: startOfInterval('day'), + end: endOfInterval('day'), + add: (date: Date, amount: number) => intervalOffset('day', date, amount), + difference: intervalDifference('day'), + isSame: isSameInterval('day'), }; default: @@ -511,21 +511,6 @@ export function getDateFuncsByPeriodType( } } -export function formatISODate( - date: Date | string | null | undefined, - representation: 'complete' | 'date' | 'time' = 'complete' -) { - if (date == null) { - return ''; - } - - if (typeof date === 'string') { - date = parseISO(date); - } - - return formatISO(date, { representation }); -} - export function formatIntl( settings: LocaleSettings, dt: Date, @@ -639,22 +624,43 @@ function range( ) { const start = biWeek === undefined - ? startOfWeek(date, { weekStartsOn }) + ? startOfWeek(date, weekStartsOn) : startOfBiWeek(date, biWeek, weekStartsOn); const end = - biWeek === undefined - ? endOfWeek(date, { weekStartsOn }) - : endOfBiWeek(date, biWeek, weekStartsOn); + biWeek === undefined ? endOfWeek(date, weekStartsOn) : endOfBiWeek(date, biWeek, weekStartsOn); return formatIntl(settings, start, formatToUse) + ' - ' + formatIntl(settings, end, formatToUse); } export function formatDate( date: Date | string | null | undefined, - periodType: PeriodType, + periodOrFormat: PeriodType | PeriodTypeCode | string, options: FormatDateOptions = {} ): string { - return formatDateWithLocale(defaultLocale, date, periodType, options); + if (typeof periodOrFormat === 'string' && !getPeriodTypeByCode(periodOrFormat as any)) { + if (!date) { + return ''; + } else if (typeof date === 'string') { + // If periodOrFormat is string, treat as unicode/strftime format + date = parseDate(date); + } + + let strftimeFormat = periodOrFormat; + if (!periodOrFormat.includes('%')) { + // Unicode format, convert to strftime format + strftimeFormat = convertUnicodeToStrftime(periodOrFormat); + // console.log({ periodOrFormat, strftimeFormat }); + } + + return timeFormat(strftimeFormat)(date); + } + + return formatDateWithLocale( + defaultLocale, + date, + periodOrFormat as PeriodType | PeriodTypeCode, + options + ); } export function updatePeriodTypeWithWeekStartsOn( @@ -699,11 +705,11 @@ export function updatePeriodTypeWithWeekStartsOn( export function formatDateWithLocale( settings: LocaleSettings, date: Date | string | null | undefined, - periodType: PeriodType, + periodType: PeriodType | PeriodTypeCode, options: FormatDateOptions = {} ): string { if (typeof date === 'string') { - date = parseISO(date); + date = parseDate(date); } // Handle 'Invalid Date' @@ -714,7 +720,24 @@ export function formatDateWithLocale( const weekStartsOn = options.weekStartsOn ?? settings.formats.dates.weekStartsOn; - const { day, dayTime, timeOnly, week, month, monthsYear, year } = settings.formats.dates.presets; + const { + day, + dayTime, + timeOnly, + hour, + minute, + second, + millisecond, + week, + month, + monthsYear, + year, + } = settings.formats.dates.presets; + + periodType = + typeof periodType === 'string' + ? getPeriodTypeByCode(periodType) + : ((periodType ?? PeriodType.Day) as PeriodType); periodType = updatePeriodTypeWithWeekStartsOn(weekStartsOn, periodType) ?? periodType; @@ -742,6 +765,18 @@ export function formatDateWithLocale( case PeriodType.TimeOnly: return formatIntl(settings, date, rv(timeOnly!)!); + case PeriodType.Hour: + return formatIntl(settings, date, rv(hour!)!); + + case PeriodType.Minute: + return formatIntl(settings, date, rv(minute!)!); + + case PeriodType.Second: + return formatIntl(settings, date, rv(second!)!); + + case PeriodType.Millisecond: + return formatIntl(settings, date, rv(millisecond!)!); + case PeriodType.Week: //Should never happen, but to make types happy case PeriodType.WeekSun: return range(settings, date, 0, rv(week!)!); @@ -766,8 +801,8 @@ export function formatDateWithLocale( case PeriodType.Quarter: return [ - formatIntl(settings, startOfQuarter(date), rv(month!)!), - formatIntl(settings, endOfQuarter(date), rv(monthsYear!)!), + formatIntl(settings, startOfInterval('quarter', date), rv(month!)!), + formatIntl(settings, endOfInterval('quarter', date), rv(monthsYear!)!), ].join(' - '); case PeriodType.CalendarYear: @@ -810,7 +845,7 @@ export function formatDateWithLocale( return range(settings, date, 6, rv(week!)!, 2); default: - return formatISO(date); + return date.toISOString(); // default: // assertNever(periodType); // This will now report unhandled cases } @@ -867,15 +902,240 @@ export function randomDate(from: Date, to: Date) { } // '1982-03-30' +// '1982-03-30T04:00' +// '1982-03-30T04:00:00' // '1982-03-30T11:25:59Z' // '1982-03-30T11:25:59-04:00' // '1982-03-30T11:25:59.123Z' // '1982-03-30T11:25:59.1234567Z' -const DATE_FORMAT = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(.\d+|)(Z|(-|\+)\d{2}:\d{2}))?$/; +const DATE_FORMAT = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d+|)?(Z|(-|\+)\d{2}:\d{2}?)?)?)?$/; /** - * Determine if string is UTC (yyyy-mm-ddThh:mm:ssZ) or Offset (yyyy-mm-ddThh:mm:ss-ZZ:ZZ) or Date-only (yyyy-mm-dd) date string + * Determine if string is valid date string + * - Date-only (yyyy-mm-dd) + * - Date with time (yyyy-mm-ddThh:mm:ss) + * - Date with time and timezone (yyyy-mm-ddThh:mm:ssZ) + * - Date with time and offset (yyyy-mm-ddThh:mm:ss-ZZ:ZZ) + * - Date with time and 3 digit milliseconds (yyyy-mm-ddThh:mm:ss.sss) with or without timezone / offset + * - Date with time and 7 digit milliseconds (yyyy-mm-ddThh:mm:ss.sssssss) with or without timezone / offset */ export function isStringDate(value: string) { return DATE_FORMAT.test(value); } + +/** + * Determine if string is a date string with time (yyyy-mm-ddThh:mm:ss) + */ +export function isStringDateWithTime(value: string) { + return isStringDate(value) && value.includes('T'); +} + +/** + * Determine if string is a date string with time and timezone (yyyy-mm-ddThh:mm:ssZ) or Offset (yyyy-mm-ddThh:mm:ss-ZZ:ZZ) + */ +export function isStringDateWithTimezone(value: string) { + return isStringDateWithTime(value) && /Z$|[+-]\d{2}:\d{2}$/.test(value); +} + +/** Parse a date string as a local Date if no timezone is specified + * @param dateStr - The date string to parse + * @param format - The format of the date string. If not provided, expects ISO 8601 format. + * - If provided, will use the format to parse the date string. + * - Supports Unicode or strftime date format strings, but will be converted to applicable strftime format before parsing. + * @returns A Date object + */ +export function parseDate(dateStr: string, format?: string) { + // If format is provided, use it to parse the date string + if (format) { + let strftimeFormat = format; + if (!format.includes('%')) { + // Unicode format, convert to strftime format + strftimeFormat = convertUnicodeToStrftime(format); + // console.log({ format, strftimeFormat }); + } + + return timeParse(strftimeFormat)(dateStr) ?? new Date('Invalid Date'); + } + + if (!isStringDate(dateStr)) return new Date('Invalid Date'); + + if (isStringDateWithTime(dateStr)) { + // Respect timezone. Also parses unqualified strings like '1982-03-30T04:00' as local date + return new Date(dateStr); + } + + const [date, time] = dateStr.split('T'); + const [year, month, day] = date.split('-').map(Number); + + if (time) { + const [hour, minute, second] = time.split(':').map(Number); + return new Date(year, month - 1, day, hour, minute, second); + } else { + return new Date(year, month - 1, day); + } +} + +/** Custom time interval for quarters */ +export const timeQuarter = d3TimeInterval( + // floor + (date) => { + date.setMonth(date.getMonth() - (date.getMonth() % 3), 1); + date.setHours(0, 0, 0, 0); + }, + // offset + (date, step) => date.setMonth(date.getMonth() + step * 3, 1), + // count + (start, end) => (end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24 * 30 * 3), + // field + (date) => date.getMonth() // TODO: what should this be? +); + +/** Get a time interval function by name */ +export function timeInterval(name: TimeIntervalType) { + switch (name) { + case 'millisecond': + return timeMillisecond; + case 'second': + return timeSecond; + case 'minute': + return timeMinute; + case 'hour': + return timeHour; + case 'day': + return timeDay; + case 'week': + return timeWeek; + case 'month': + return timeMonth; + case 'quarter': + return timeQuarter; + case 'year': + return timeYear; + } +} + +/** + * Get the date at the start of the interval + * @param interval The time interval to use + * @param date Optional date to get start of interval for. If not provided, returns a function that takes a date. + * @returns Either a Date or a function that takes a date and returns a Date + */ +export function startOfInterval(interval: TimeInterval | TimeIntervalType, date: Date): Date; +export function startOfInterval(interval: TimeInterval | TimeIntervalType): (date: Date) => Date; +export function startOfInterval( + interval: TimeInterval | TimeIntervalType, + date?: Date +): Date | ((date: Date) => Date) { + interval = typeof interval === 'string' ? timeInterval(interval) : interval; + + if (date === undefined) { + return (date: Date) => new Date(interval.floor(date)); + } + + return new Date(interval.floor(date)); +} + +/** + * Get the date at the end of the interval + * Similar to `interval.ceil(date)` except: + * - returns end of day instead of start of next day + * - properly handles start of day (i.e. not return same date) + * @param interval The time interval to use + * @param date Optional date to get end of interval for. If not provided, returns a function that takes a date. + * @returns Either a Date or a function that takes a date and returns a Date + */ +export function endOfInterval(interval: TimeInterval | TimeIntervalType, date: Date): Date; +export function endOfInterval(interval: TimeInterval | TimeIntervalType): (date: Date) => Date; +export function endOfInterval( + interval: TimeInterval | TimeIntervalType, + date?: Date +): Date | ((date: Date) => Date) { + interval = typeof interval === 'string' ? timeInterval(interval) : interval; + + if (date === undefined) { + return (date: Date) => new Date(interval.offset(interval.floor(date), 1).getTime() - 1); + } + + // Can not use `new Date(+interval.ceil(date) - 1)`; as `.ceil()` will return same date when start of the day (matching `.floor()`) + return new Date(interval.offset(interval.floor(date), 1).getTime() - 1); +} + +/** Add or subtract an interval from a date */ +export function intervalOffset( + interval: TimeInterval | TimeIntervalType, + date: Date, + offset: number +) { + interval = typeof interval === 'string' ? timeInterval(interval) : interval; + return interval.offset(date, offset); +} + +/** Check if two dates are in the same interval (such as same day or month) */ +export function isSameInterval( + interval: TimeInterval | TimeIntervalType, + date1: Date, + date2: Date +): boolean; +export function isSameInterval( + interval: TimeInterval | TimeIntervalType +): (date1: Date, date2: Date) => boolean; +export function isSameInterval( + interval: TimeInterval | TimeIntervalType, + date1?: Date, + date2?: Date +) { + interval = typeof interval === 'string' ? timeInterval(interval) : interval; + + if (date1 === undefined || date2 === undefined) { + return (date1: Date, date2: Date) => + interval.floor(date1).getTime() === interval.floor(date2).getTime(); + } + + return interval.floor(date1).getTime() === interval.floor(date2).getTime(); +} + +/** Get the number of intervals between two dates (based on boundaries crossed) */ +export function intervalDifference( + interval: CountableTimeInterval | TimeIntervalType, + date1: Date, + date2: Date +): number; +export function intervalDifference( + interval: CountableTimeInterval | TimeIntervalType +): (date1: Date, date2: Date) => number; +export function intervalDifference( + interval: CountableTimeInterval | TimeIntervalType, + date1?: Date, + date2?: Date +) { + interval = typeof interval === 'string' ? timeInterval(interval) : interval; + + if (date1 === undefined || date2 === undefined) { + return (date1: Date, date2: Date) => interval.count(date1, date2); + } + + return interval.count(date1, date2); +} + +/** Check if date is a leap year */ +export function isLeapYear(date: Date) { + return ( + date.getFullYear() % 400 === 0 || + (date.getFullYear() % 4 === 0 && date.getFullYear() % 100 !== 0) + ); +} + +/** Check if first date is before second date */ +export function isDateBefore(date1: Date, date2: Date) { + return date1.getTime() < date2.getTime(); +} + +/** Check if first date is after second date */ +export function isDateAfter(date1: Date, date2: Date) { + return date1.getTime() > date2.getTime(); +} + +/** Check if date is within interval */ +export function isDateWithin(date: Date, range: { start: Date; end: Date }) { + return date.getTime() >= range.start.getTime() && date.getTime() <= range.end.getTime(); +} diff --git a/packages/utils/src/lib/dateInternal.ts b/packages/utils/src/lib/dateInternal.ts index cbeaead..ec66912 100644 --- a/packages/utils/src/lib/dateInternal.ts +++ b/packages/utils/src/lib/dateInternal.ts @@ -10,3 +10,178 @@ export function getWeekStartsOnFromIntl(locales?: string): DayOfWeek { const weekInfo = locale.weekInfo ?? locale.getWeekInfo?.(); return (weekInfo?.firstDay ?? 0) % 7; // (in Intl, sunday is 7 not 0, so we need to mod 7) } + +/** + * Unicode to strftime format mapping + * Based on Unicode TR35 Date Field Symbol Table and POSIX strftime + * @see https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table + * @see https://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.html + */ +const unicodeToStrftime = { + // ===== YEAR ===== + y: '%y', // 2-digit year (00-99) + yy: '%y', // 2-digit year with leading zero + yyyy: '%Y', // 4-digit year + Y: '%Y', // 4-digit year (short form) + + // ===== MONTH ===== + M: '%m', // Month as number (1-12, but strftime uses 01-12) + MM: '%m', // Month as 2-digit number (01-12) + MMM: '%b', // Abbreviated month name (Jan, Feb, etc.) + MMMM: '%B', // Full month name (January, February, etc.) + L: '%m', // Standalone month number (same as M in most cases) + LL: '%m', // Standalone month number, 2-digit + LLL: '%b', // Standalone abbreviated month name + LLLL: '%B', // Standalone full month name + + // ===== WEEK ===== + w: null, // ❌ Week of year (1-53) - no direct strftime equivalent + ww: null, // ❌ Week of year, 2-digit - no direct strftime equivalent + W: '%W', // Week of year (Monday as first day) - close match + + // ===== DAY ===== + d: '%d', // Day of month (1-31, but strftime uses 01-31) + dd: '%d', // Day of month, 2-digit (01-31) + D: '%j', // Day of year (1-366, but strftime uses 001-366) + DD: '%j', // Day of year, 2-digit - strftime always uses 3 digits + DDD: '%j', // Day of year, 3-digit (001-366) + + // ===== WEEKDAY ===== + E: '%a', // Abbreviated weekday name (Mon, Tue, etc.) + EE: '%a', // Abbreviated weekday name + EEE: '%a', // Abbreviated weekday name + EEEE: '%A', // Full weekday name (Monday, Tuesday, etc.) + EEEEE: null, // ❌ Narrow weekday name (M, T, W) - no strftime equivalent + EEEEEE: null, // ❌ Short weekday name - no strftime equivalent + e: '%u', // Local weekday number (1-7, Monday=1) - close match + ee: '%u', // Local weekday number, 2-digit + eee: '%a', // Local abbreviated weekday name + eeee: '%A', // Local full weekday name + c: '%u', // Standalone weekday number + cc: '%u', // Standalone weekday number, 2-digit + ccc: '%a', // Standalone abbreviated weekday name + cccc: '%A', // Standalone full weekday name + + // ===== PERIOD (AM/PM) ===== + a: '%p', // AM/PM + aa: '%p', // AM/PM + aaa: '%p', // AM/PM + aaaa: '%p', // AM/PM (long form, but strftime only has short) + aaaaa: null, // ❌ Narrow AM/PM (A/P) - no strftime equivalent + + // ===== HOUR ===== + h: '%I', // Hour in 12-hour format (1-12) + hh: '%I', // Hour in 12-hour format, 2-digit (01-12) + H: '%H', // Hour in 24-hour format (0-23) + HH: '%H', // Hour in 24-hour format, 2-digit (00-23) + K: null, // ❌ Hour in 12-hour format (0-11) - no direct strftime equivalent + KK: null, // ❌ Hour in 12-hour format, 2-digit (00-11) - no strftime equivalent + k: null, // ❌ Hour in 24-hour format (1-24) - no direct strftime equivalent + kk: null, // ❌ Hour in 24-hour format, 2-digit (01-24) - no strftime equivalent + + // ===== MINUTE ===== + m: '%M', // Minutes (0-59) + mm: '%M', // Minutes, 2-digit (00-59) + + // ===== SECOND ===== + s: '%S', // Seconds (0-59) + ss: '%S', // Seconds, 2-digit (00-59) + S: null, // ❌ Fractional seconds (1 digit) - no direct strftime equivalent + SS: null, // ❌ Fractional seconds (2 digits) - no direct strftime equivalent + SSS: null, // ❌ Fractional seconds (3 digits) - no direct strftime equivalent + A: null, // ❌ Milliseconds in day - no strftime equivalent + + // ===== TIMEZONE ===== + z: '%Z', // Timezone name (EST, PST, etc.) + zz: '%Z', // Timezone name + zzz: '%Z', // Timezone name + zzzz: '%Z', // Full timezone name + Z: '%z', // Timezone offset (+0000, -0500, etc.) + ZZ: '%z', // Timezone offset + ZZZ: '%z', // Timezone offset + ZZZZ: null, // ❌ GMT-relative timezone - partial strftime support + ZZZZZ: null, // ❌ ISO 8601 timezone - no direct strftime equivalent + O: null, // ❌ Localized GMT offset - no strftime equivalent + OOOO: null, // ❌ Full localized GMT offset - no strftime equivalent + v: null, // ❌ Generic timezone - no strftime equivalent + vvvv: null, // ❌ Generic timezone full - no strftime equivalent + V: null, // ❌ Timezone ID - no strftime equivalent + VV: null, // ❌ Timezone ID - no strftime equivalent + VVV: null, // ❌ Timezone exemplar city - no strftime equivalent + VVVV: null, // ❌ Generic location format - no strftime equivalent + X: null, // ❌ ISO 8601 timezone - no direct strftime equivalent + XX: null, // ❌ ISO 8601 timezone - no direct strftime equivalent + XXX: null, // ❌ ISO 8601 timezone - no direct strftime equivalent + XXXX: null, // ❌ ISO 8601 timezone - no direct strftime equivalent + XXXXX: null, // ❌ ISO 8601 timezone - no direct strftime equivalent + x: null, // ❌ ISO 8601 timezone - no direct strftime equivalent + xx: null, // ❌ ISO 8601 timezone - no direct strftime equivalent + xxx: null, // ❌ ISO 8601 timezone - no direct strftime equivalent + xxxx: null, // ❌ ISO 8601 timezone - no direct strftime equivalent + xxxxx: null, // ❌ ISO 8601 timezone - no direct strftime equivalent + + // ===== QUARTER ===== + Q: null, // ❌ Quarter (1-4) - no strftime equivalent + QQ: null, // ❌ Quarter, 2-digit (01-04) - no strftime equivalent + QQQ: null, // ❌ Abbreviated quarter (Q1, Q2, etc.) - no strftime equivalent + QQQQ: null, // ❌ Full quarter (1st quarter, etc.) - no strftime equivalent + QQQQQ: null, // ❌ Narrow quarter - no strftime equivalent + q: null, // ❌ Standalone quarter - no strftime equivalent + qq: null, // ❌ Standalone quarter, 2-digit - no strftime equivalent + qqq: null, // ❌ Standalone abbreviated quarter - no strftime equivalent + qqqq: null, // ❌ Standalone full quarter - no strftime equivalent + qqqqq: null, // ❌ Standalone narrow quarter - no strftime equivalent + + // ===== ERA ===== + G: null, // ❌ Era designator (AD, BC) - no strftime equivalent + GG: null, // ❌ Era designator - no strftime equivalent + GGG: null, // ❌ Era designator - no strftime equivalent + GGGG: null, // ❌ Era designator full - no strftime equivalent + GGGGG: null, // ❌ Era designator narrow - no strftime equivalent +}; + +/** + * Convert a Unicode format string to strftime format + * @param unicodeFormat - The Unicode format string to convert + * @returns The strftime format string + */ +export function convertUnicodeToStrftime(unicodeFormat: string) { + let result = ''; + let i = 0; + let unsupportedPatterns = []; + + while (i < unicodeFormat.length) { + let matched = false; + + // Try to match the longest possible pattern starting at current position + for (let len = Math.min(5, unicodeFormat.length - i); len >= 1; len--) { + const pattern = unicodeFormat.substring(i, i + len); + if (pattern in unicodeToStrftime) { + const strftimeEquivalent = unicodeToStrftime[pattern as keyof typeof unicodeToStrftime]; + + if (strftimeEquivalent === null) { + unsupportedPatterns.push(pattern); + result += pattern; // Keep original if unsupported + } else { + result += strftimeEquivalent; + } + + i += len; + matched = true; + break; + } + } + + // If no pattern matched, copy the character as-is + if (!matched) { + result += unicodeFormat[i]; + i++; + } + } + + if (unsupportedPatterns.length > 0) { + console.warn('Unsupported patterns:', [...new Set(unsupportedPatterns)]); + } + + return result; +} diff --git a/packages/utils/src/lib/dateRange.ts b/packages/utils/src/lib/dateRange.ts index 8ef3fb6..ba89262 100644 --- a/packages/utils/src/lib/dateRange.ts +++ b/packages/utils/src/lib/dateRange.ts @@ -1,6 +1,12 @@ -import { startOfDay, isLeapYear, isAfter, isBefore, subYears } from 'date-fns'; - -import { getDateFuncsByPeriodType, updatePeriodTypeWithWeekStartsOn } from './date.js'; +import { + getDateFuncsByPeriodType, + intervalOffset, + isLeapYear, + isDateAfter, + isDateBefore, + startOfInterval, + updatePeriodTypeWithWeekStartsOn, +} from './date.js'; import { PeriodType } from './date_types.js'; import type { LocaleSettings } from './locale.js'; @@ -34,7 +40,7 @@ export function getDateRangePresets( periodType: PeriodType ): { label: string; value: DateRange }[] { let now = new Date(); - const today = startOfDay(now); + const today = startOfInterval('day', now); if (settings) { periodType = @@ -201,12 +207,12 @@ export function getPreviousYearPeriodOffset( // if year before reference date is a leap year and is before 2/29 const adjustForLeapYear = options?.referenceDate ? (isLeapYear(options?.referenceDate) && - isAfter( + isDateAfter( options?.referenceDate, new Date(options?.referenceDate.getFullYear(), /*Feb*/ 1, 28) )) || - (isLeapYear(subYears(options?.referenceDate, 1)) && - isBefore( + (isLeapYear(intervalOffset('year', options?.referenceDate, -1)) && + isDateBefore( options?.referenceDate, new Date(options?.referenceDate.getFullYear(), /*Feb*/ 1, 29) )) @@ -269,7 +275,8 @@ export function getPeriodComparisonOffset( switch (view) { case 'prevPeriod': const dateFuncs = getDateFuncsByPeriodType(settings, period.periodType); - return dateFuncs.difference(period.from, period.to) - 1; // Difference counts full days, need additoinal offset + // return dateFuncs.difference(period.from, period.to) - 1; // Difference counts full days, need additional offset + return dateFuncs.difference(period.to, period.from); // Difference counts full days, need additional offset case 'prevYear': return getPreviousYearPeriodOffset(period.periodType, { diff --git a/packages/utils/src/lib/date_types.ts b/packages/utils/src/lib/date_types.ts index f10cfce..3b2885e 100644 --- a/packages/utils/src/lib/date_types.ts +++ b/packages/utils/src/lib/date_types.ts @@ -1,4 +1,5 @@ import type { DateRange } from './dateRange.js'; +import { ValueOf } from './typeHelpers.js'; export type SelectedDate = Date | Date[] | DateRange | null | undefined; @@ -16,6 +17,10 @@ export enum PeriodType { Day = 10, DayTime = 11, TimeOnly = 15, + Hour = 16, + Minute = 17, + Second = 18, + Millisecond = 19, Week = 20, // will be replaced by WeekSun, WeekMon, etc depending on locale `weekStartsOn` WeekSun = 21, @@ -51,6 +56,63 @@ export enum PeriodType { BiWeek2Sat = 87, } +export const periodTypeMappings = { + [PeriodType.Custom]: 'custom', + [PeriodType.Day]: 'day', + [PeriodType.DayTime]: 'daytime', + [PeriodType.TimeOnly]: 'time', + [PeriodType.Hour]: 'hour', + [PeriodType.Minute]: 'minute', + [PeriodType.Second]: 'second', + [PeriodType.Millisecond]: 'millisecond', + + [PeriodType.WeekSun]: 'week-sun', + [PeriodType.WeekMon]: 'week-mon', + [PeriodType.WeekTue]: 'week-tue', + [PeriodType.WeekWed]: 'week-wed', + [PeriodType.WeekThu]: 'week-thu', + [PeriodType.WeekFri]: 'week-fri', + [PeriodType.WeekSat]: 'week-sat', + [PeriodType.Week]: 'week', + + [PeriodType.Month]: 'month', + [PeriodType.MonthYear]: 'month-year', + [PeriodType.Quarter]: 'quarter', + [PeriodType.CalendarYear]: 'year', + [PeriodType.FiscalYearOctober]: 'fiscal-year-october', + + [PeriodType.BiWeek1Sun]: 'biweek1-sun', + [PeriodType.BiWeek1Mon]: 'biweek1-mon', + [PeriodType.BiWeek1Tue]: 'biweek1-tue', + [PeriodType.BiWeek1Wed]: 'biweek1-wed', + [PeriodType.BiWeek1Thu]: 'biweek1-thu', + [PeriodType.BiWeek1Fri]: 'biweek1-fri', + [PeriodType.BiWeek1Sat]: 'biweek1-sat', + [PeriodType.BiWeek1]: 'biweek1', + + [PeriodType.BiWeek2Sun]: 'biweek2-sun', + [PeriodType.BiWeek2Mon]: 'biweek2-mon', + [PeriodType.BiWeek2Tue]: 'biweek2-tue', + [PeriodType.BiWeek2Wed]: 'biweek2-wed', + [PeriodType.BiWeek2Thu]: 'biweek2-thu', + [PeriodType.BiWeek2Fri]: 'biweek2-fri', + [PeriodType.BiWeek2Sat]: 'biweek2-sat', + [PeriodType.BiWeek2]: 'biweek2', +} as const; + +export type PeriodTypeCode = ValueOf; + +export type TimeIntervalType = + | 'millisecond' + | 'second' + | 'minute' + | 'hour' + | 'day' + | 'week' + | 'month' + | 'quarter' + | 'year'; + export enum DayOfWeek { Sunday = 0, Monday = 1, @@ -145,6 +207,10 @@ export interface FormatDateLocaleOptions { day?: DateFormatVariantPreset; dayTime?: DateFormatVariantPreset; timeOnly?: DateFormatVariantPreset; + hour?: DateFormatVariantPreset; + minute?: DateFormatVariantPreset; + second?: DateFormatVariantPreset; + millisecond?: DateFormatVariantPreset; week?: DateFormatVariantPreset; month?: DateFormatVariantPreset; monthsYear?: DateFormatVariantPreset; diff --git a/packages/utils/src/lib/dictionary.ts b/packages/utils/src/lib/dictionary.ts index 614d024..a2a8821 100644 --- a/packages/utils/src/lib/dictionary.ts +++ b/packages/utils/src/lib/dictionary.ts @@ -10,6 +10,10 @@ export type DictionaryMessagesOptions = { Day?: string; DayTime?: string; Time?: string; + Hour?: string; + Minute?: string; + Second?: string; + Millisecond?: string; Week?: string; BiWeek?: string; Month?: string; diff --git a/packages/utils/src/lib/duration.test.ts b/packages/utils/src/lib/duration.test.ts new file mode 100644 index 0000000..87bca71 --- /dev/null +++ b/packages/utils/src/lib/duration.test.ts @@ -0,0 +1,293 @@ +import { describe, it, expect, test } from 'vitest'; + +import { Duration, DurationOption, DurationUnits } from './duration.js'; +import { intervalOffset } from './date.js'; + +describe('Duration', () => { + it('default', () => { + const actual = new Duration(); + expect(actual.years).equal(0); + expect(actual.days).equal(0); + expect(actual.hours).equal(0); + expect(actual.minutes).equal(0); + expect(actual.seconds).equal(0); + expect(actual.milliseconds).equal(0); + }); + + it('start/end range with strings', () => { + const actual = new Duration({ start: '2025-05-19', end: '2025-05-20' }); + expect(actual.years).equal(0); + expect(actual.days).equal(1); + expect(actual.hours).equal(0); + expect(actual.minutes).equal(0); + expect(actual.seconds).equal(0); + expect(actual.milliseconds).equal(0); + }); + + it('start/end range with Date objects', () => { + const actual = new Duration({ start: new Date('2025-05-19'), end: new Date('2025-05-20') }); + expect(actual.years).equal(0); + expect(actual.days).equal(1); + expect(actual.hours).equal(0); + expect(actual.minutes).equal(0); + expect(actual.seconds).equal(0); + expect(actual.milliseconds).equal(0); + }); + + it('start-only should use `now` for end', () => { + const start = intervalOffset('day', new Date(), -10); + const actual = new Duration({ start }); + expect(actual.years).equal(0); + expect(actual.days).equal(10); + expect(actual.hours).equal(0); + expect(actual.minutes).equal(0); + expect(actual.seconds).equal(0); + // expect(actual.milliseconds).equal(0); // Ignoring just in case test timing is off + }); + + it('duration option', () => { + const actual = new Duration({ duration: { seconds: 10 } }); + expect(actual.years).equal(0); + expect(actual.days).equal(0); + expect(actual.hours).equal(0); + expect(actual.minutes).equal(0); + expect(actual.seconds).equal(10); + expect(actual.milliseconds).equal(0); + }); + + it('duration option with carryover seconds', () => { + const actual = new Duration({ duration: { seconds: 90 } }); + expect(actual.years).equal(0); + expect(actual.days).equal(0); + expect(actual.hours).equal(0); + expect(actual.minutes).equal(1); + expect(actual.seconds).equal(30); + expect(actual.milliseconds).equal(0); + }); + + it('duration option with carryover minutes', () => { + const actual = new Duration({ duration: { minutes: 90 } }); + expect(actual.years).equal(0); + expect(actual.days).equal(0); + expect(actual.hours).equal(1); + expect(actual.minutes).equal(30); + expect(actual.seconds).equal(0); + expect(actual.milliseconds).equal(0); + }); + + it('duration option with carryover hours', () => { + const actual = new Duration({ duration: { hours: 30 } }); + expect(actual.years).equal(0); + expect(actual.days).equal(1); + expect(actual.hours).equal(6); + expect(actual.minutes).equal(0); + expect(actual.seconds).equal(0); + expect(actual.milliseconds).equal(0); + }); + + it('duration comparison with explicit duration', () => { + const duration1 = new Duration({ duration: { seconds: 10 } }); + const duration2 = new Duration({ duration: { seconds: 11 } }); + + expect(duration1 < duration2).equal(true); + expect(duration2 > duration1).equal(true); + expect(duration1 != duration2).equal(true); + }); + + it('duration comparison with dates', () => { + const duration1 = new Duration({ start: '2025-05-19', end: '2025-05-20' }); + const duration2 = new Duration({ start: '2025-05-19', end: '2025-05-21' }); + + expect(duration1 < duration2).equal(true); + expect(duration2 > duration1).equal(true); + }); + + it('duration comparison with dates and duration', () => { + const duration = new Duration({ start: '2025-05-19', end: '2025-05-20' }); + + const durationSame = new Duration({ duration: { days: 1 } }); + // TODO: Why is `valueOf()` not called implicitly? + // expect(duration == durationSame).equal(true); + expect(duration.valueOf() == durationSame.valueOf()).equal(true); + + const durationMore = new Duration({ duration: { days: 2 } }); + expect(duration < durationMore).equal(true); + + const durationLess = new Duration({ duration: { hours: 3 } }); + expect(duration > durationLess).equal(true); + }); + + it('toJSON', () => { + const duration = new Duration({ + duration: { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + }); + const json = duration.toJSON(); + expect(json).eql({ + years: 0, + days: 1, + hours: 2, + minutes: 3, + seconds: 4, + milliseconds: 5, + }); + }); + + it('toJSON', () => { + const duration = new Duration({ + duration: { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + }); + const string = JSON.stringify(duration); + expect(string).eql('{"years":0,"days":1,"hours":2,"minutes":3,"seconds":4,"milliseconds":5}'); + }); + + it('reconstruct from JSON', () => { + const duration = new Duration({ + duration: { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + }); + const json = JSON.parse(JSON.stringify(duration)); + const duration2 = new Duration({ duration: json }); + + expect(duration2.years).equal(0); + expect(duration2.days).equal(1); + expect(duration2.hours).equal(2); + expect(duration2.minutes).equal(3); + expect(duration2.seconds).equal(4); + expect(duration2.milliseconds).equal(5); + }); + + describe('format', () => { + it('default', () => { + const duration = new Duration({ + duration: { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + }); + const actual = duration.format(); + expect(actual).equal('1d 2h 3m 4s 5ms'); + }); + + it('long variant', () => { + const duration = new Duration({ + duration: { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + }); + const actual = duration.format({ variant: 'long' }); + expect(actual).equal('1 day and 2 hours and 3 minutes and 4 seconds and 5 milliseconds'); + }); + + describe('options', () => { + test.each([ + // Hour (normal, minUnits, fractional) + [{ days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, {}, '1d 2h 3m 4s 5ms'], + [ + { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + { minUnits: DurationUnits.Hour }, + '1d 2h', + ], + [ + { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + { minUnits: DurationUnits.Hour, fractional: true }, + '1d 2.05h', + ], + // Second (normal, minUnits, fractional) + [{ seconds: 1, milliseconds: 500 }, {}, '1s 500ms'], + [{ seconds: 1, milliseconds: 500 }, { minUnits: DurationUnits.Second }, '1s'], + [ + { seconds: 1, milliseconds: 500 }, + { minUnits: DurationUnits.Second, fractional: true }, + '1.5s', + ], + // Total units + [{ days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, { totalUnits: 1 }, '1d'], + [ + { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + { totalUnits: 2 }, + '1d 2h', + ], + [ + { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + { totalUnits: 3 }, + '1d 2h 3m', + ], + [ + { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + { totalUnits: 4 }, + '1d 2h 3m 4s', + ], + [ + { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + { totalUnits: 5 }, + '1d 2h 3m 4s 5ms', + ], + // Total units with minUnits + [ + { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + { totalUnits: 4, minUnits: DurationUnits.Minute }, + '1d 2h 3m', + ], + [ + { days: 0, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + { totalUnits: 4, minUnits: DurationUnits.Minute }, + '2h 3m', + ], + // Total units with fractional + [ + { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + { totalUnits: 1, fractional: true }, + '1.08d', + ], + [ + { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + { totalUnits: 4, minUnits: DurationUnits.Minute, fractional: true }, + '1d 2h 3.07m', + ], + ] satisfies Array<[DurationOption, Parameters[0], string]>)( + 'new Duration({ duration: %s }).format(%s) => %s', + (_duration, options, expected) => { + const duration = new Duration({ duration: _duration }); + const actual = duration.format(options); + expect(actual).equal(expected); + } + ); + }); + + it('totalUnits', () => { + const duration = new Duration({ + duration: { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + }); + const actual = duration.format({ totalUnits: 3 }); + expect(actual).equal('1d 2h 3m'); + }); + }); + + it('toString', () => { + const duration = new Duration({ + duration: { days: 1, hours: 2, minutes: 3, seconds: 4, milliseconds: 5 }, + }); + const actual = duration.toString(); + expect(actual).equal('1d 2h 3m 4s 5ms'); + }); + + describe('toISOString', () => { + it('basic', () => { + const duration = new Duration({ + duration: { years: 1, days: 2, hours: 3, minutes: 4, seconds: 5, milliseconds: 6 }, + }); + const actual = duration.toISOString(); + expect(actual).equal('P1Y2DT3H4M5.6S'); + }); + + it('years only', () => { + const duration = new Duration({ + duration: { years: 1 }, + }); + const actual = duration.toISOString(); + expect(actual).equal('P1Y'); + }); + + it('hour only', () => { + const duration = new Duration({ + duration: { hours: 1 }, + }); + const actual = duration.toISOString(); + expect(actual).equal('PT1H'); + }); + }); +}); diff --git a/packages/utils/src/lib/duration.ts b/packages/utils/src/lib/duration.ts index cf06969..0af10c4 100644 --- a/packages/utils/src/lib/duration.ts +++ b/packages/utils/src/lib/duration.ts @@ -1,12 +1,15 @@ -import { parseISO } from 'date-fns'; - -export type Duration = { - milliseconds: number; - seconds: number; - minutes: number; - hours: number; - days: number; - years: number; +import { parseDate } from './date.js'; +import { round } from './number.js'; + +// TODO: Support months or weeks? + +export type DurationOption = { + milliseconds?: number; + seconds?: number; + minutes?: number; + hours?: number; + days?: number; + years?: number; }; export enum DurationUnits { @@ -17,137 +20,225 @@ export enum DurationUnits { Second, Millisecond, } -// export enum DurationUnits { -// Millisecond = 1, -// Second = 1000 * Millisecond, -// Minute = 60 * Second, -// Hour = 60 * Minute, -// Day = 24 * Hour, -// Year = 365 * Day, -// } - -export function getDuration( - start?: Date | string, - end?: Date | string | null, - duration?: Partial -): Duration | null { - const startDate = typeof start === 'string' ? parseISO(start) : start; - const endDate = typeof end === 'string' ? parseISO(end) : end; - - const differenceInMs = startDate - ? Math.abs(Number(endDate || new Date()) - Number(startDate)) - : undefined; - - if (!Number.isFinite(differenceInMs) && duration == null) { - return null; + +export class Duration { + #milliseconds = 0; + #seconds = 0; + #minutes = 0; + #hours = 0; + #days = 0; + #years = 0; + + constructor( + options: { + start?: Date | string; + end?: Date | string | null; + duration?: DurationOption; + } = {} + ) { + const startDate = typeof options.start === 'string' ? parseDate(options.start) : options.start; + const endDate = typeof options.end === 'string' ? parseDate(options.end) : options.end; + + const differenceInMs = startDate + ? Math.abs(Number(endDate || new Date()) - Number(startDate)) + : undefined; + + if (!Number.isFinite(differenceInMs) && options.duration == null) { + return; + } + + this.#milliseconds = options.duration?.milliseconds ?? differenceInMs ?? 0; + this.#seconds = options.duration?.seconds ?? 0; + this.#minutes = options.duration?.minutes ?? 0; + this.#hours = options.duration?.hours ?? 0; + this.#days = options.duration?.days ?? 0; + this.#years = options.duration?.years ?? 0; + + if (this.#milliseconds >= 1000) { + const carrySeconds = (this.#milliseconds - (this.#milliseconds % 1000)) / 1000; + this.#seconds += carrySeconds; + this.#milliseconds = this.#milliseconds - carrySeconds * 1000; + } + + if (this.#seconds >= 60) { + const carryMinutes = (this.#seconds - (this.#seconds % 60)) / 60; + this.#minutes += carryMinutes; + this.#seconds = this.#seconds - carryMinutes * 60; + } + + if (this.#minutes >= 60) { + const carryHours = (this.#minutes - (this.#minutes % 60)) / 60; + this.#hours += carryHours; + this.#minutes = this.#minutes - carryHours * 60; + } + + if (this.#hours >= 24) { + const carryDays = (this.#hours - (this.#hours % 24)) / 24; + this.#days += carryDays; + this.#hours = this.#hours - carryDays * 24; + } + + if (this.#days >= 365) { + const carryYears = (this.#days - (this.#days % 365)) / 365; + this.#years += carryYears; + this.#days = this.#days - carryYears * 365; + } } - var milliseconds = duration?.milliseconds ?? differenceInMs ?? 0; - var seconds = duration?.seconds ?? 0; - var minutes = duration?.minutes ?? 0; - var hours = duration?.hours ?? 0; - var days = duration?.days ?? 0; - var years = duration?.years ?? 0; - - if (milliseconds >= 1000) { - const carrySeconds = (milliseconds - (milliseconds % 1000)) / 1000; - seconds += carrySeconds; - milliseconds = milliseconds - carrySeconds * 1000; + get years() { + return this.#years; } - if (seconds >= 60) { - const carryMinutes = (seconds - (seconds % 60)) / 60; - minutes += carryMinutes; - seconds = seconds - carryMinutes * 60; + get days() { + return this.#days; } - if (minutes >= 60) { - const carryHours = (minutes - (minutes % 60)) / 60; - hours += carryHours; - minutes = minutes - carryHours * 60; + get hours() { + return this.#hours; } - if (hours >= 24) { - const carryDays = (hours - (hours % 24)) / 24; - days += carryDays; - hours = hours - carryDays * 24; + get minutes() { + return this.#minutes; } - if (days >= 365) { - const carryYears = (days - (days % 365)) / 365; - years += carryYears; - days = days - carryYears * 365; + get seconds() { + return this.#seconds; } - return { - milliseconds, - seconds, - minutes, - hours, - days, - years, - }; -} + get milliseconds() { + return this.#milliseconds; + } -// See also: https://stackoverflow.com/questions/19700283/how-to-convert-time-milliseconds-to-hours-min-sec-format-in-javascript/33909506 -export function humanizeDuration(config: { - start?: Date | string; - end?: Date | string | null; - duration?: Partial; - minUnits?: DurationUnits; - totalUnits?: number; - variant?: 'short' | 'long'; -}) { - const { start, end, minUnits, totalUnits = 99, variant = 'short' } = config; - - const duration = getDuration(start, end, config.duration); - - if (duration === null) { - return 'unknown'; + valueOf() { + return ( + this.#milliseconds + + this.#seconds * 1000 + + this.#minutes * 60 * 1000 + + this.#hours * 60 * 60 * 1000 + + this.#days * 24 * 60 * 60 * 1000 + + this.#years * 365 * 24 * 60 * 60 * 1000 + ); } - var sentenceArr = []; - var unitNames = - variant === 'short' - ? ['y', 'd', 'h', 'm', 's', 'ms'] - : ['years', 'days', 'hours', 'minutes', 'seconds', 'milliseconds']; - - var unitNums = [ - duration.years, - duration.days, - duration.hours, - duration.minutes, - duration.seconds, - duration.milliseconds, - ].filter((x, i) => i <= (minUnits ?? 99)); - - // Combine unit numbers and names - for (var i in unitNums) { - if (sentenceArr.length >= totalUnits) { - break; - } + toJSON() { + return { + years: this.#years, + days: this.#days, + hours: this.#hours, + minutes: this.#minutes, + seconds: this.#seconds, + milliseconds: this.#milliseconds, + }; + } + + format( + options: { + minUnits?: DurationUnits; + totalUnits?: number; + fractional?: boolean; + variant?: 'short' | 'long'; + } = {} + ) { + const { minUnits = 99, totalUnits = 99, fractional = false, variant = 'short' } = options; + + let sentenceArr = []; + + const unitNames = + variant === 'short' + ? ['y', 'd', 'h', 'm', 's', 'ms'] + : ['years', 'days', 'hours', 'minutes', 'seconds', 'milliseconds']; + + const unitValues = [ + this.years, + this.days, + this.hours, + this.minutes, + this.seconds, + this.milliseconds, + ]; + + const filteredUnitValues = unitValues.filter((x, i) => i <= minUnits); + + // Combine unit numbers and names + for (let [i, unitValue] of filteredUnitValues.entries()) { + if (sentenceArr.length >= totalUnits) { + break; + } + + let unitName = unitNames[i]; + const isLastUnit = + i === filteredUnitValues.length - 1 || + (unitValue !== 0 && sentenceArr.length + 1 >= totalUnits); + + if (fractional && isLastUnit) { + // Last unit, add fractional part of next unit + let fraction = 0; + switch (i) { + case DurationUnits.Millisecond: + // No more units + break; + case DurationUnits.Second: + unitValue += round(this.milliseconds / 1000, 2); + break; + case DurationUnits.Minute: + unitValue += round(this.seconds / 60, 2); + break; + case DurationUnits.Hour: + unitValue += round(this.minutes / 60, 2); + break; + case DurationUnits.Day: + unitValue += round(this.hours / 24, 2); + break; + case DurationUnits.Year: + unitValue += round(this.days / 365, 2); + break; + } + } - const unitNum = unitNums[i]; - let unitName = unitNames[i]; - - // Hide `0` values unless last unit (and none shown before) - if (unitNum !== 0 || (sentenceArr.length === 0 && Number(i) === unitNums.length - 1)) { - switch (variant) { - case 'short': - sentenceArr.push(unitNum + unitName); - break; - - case 'long': - if (unitNum === 1) { - // Trim off plural `s` - unitName = unitName.slice(0, -1); - } - sentenceArr.push(unitNum + ' ' + unitName); - break; + // Hide `0` values unless last unit (and none shown before) + if (unitValue !== 0 || (sentenceArr.length === 0 && isLastUnit)) { + switch (variant) { + case 'short': + sentenceArr.push(unitValue + unitName); + break; + + case 'long': + if (unitValue === 1) { + // Trim off plural `s` + unitName = unitName.slice(0, -1); + } + sentenceArr.push(unitValue + ' ' + unitName); + break; + } } } + + const sentence = sentenceArr.join(variant === 'long' ? ' and ' : ' '); + return sentence; + } + + toString() { + return this.format(); } - const sentence = sentenceArr.join(variant === 'long' ? ' and ' : ' '); - return sentence; + /** + * Returns the ISO 8601 duration string representation of the duration. + * @returns ISO 8601 duration string (e.g. "P3Y6M4DT12H30M5S") + * @see https://en.wikipedia.org/wiki/ISO_8601#Durations + */ + toISOString() { + let str = 'P'; + if (this.#years) str += this.#years + 'Y'; + if (this.#days) str += this.#days + 'D'; + if (this.#hours || this.#minutes || this.#seconds || this.#milliseconds) str += 'T'; + if (this.#hours) str += this.#hours + 'H'; + if (this.#minutes) str += this.#minutes + 'M'; + if (this.#seconds || this.#milliseconds) { + str += this.#seconds; + if (this.#milliseconds) str += '.' + this.#milliseconds; + str += 'S'; + } + if (str === 'P') str = 'PT0S'; // zero duration + return str; + } } diff --git a/packages/utils/src/lib/env.ts b/packages/utils/src/lib/env.ts index e28458f..4b11a6f 100644 --- a/packages/utils/src/lib/env.ts +++ b/packages/utils/src/lib/env.ts @@ -2,3 +2,48 @@ // See: https://kit.svelte.dev/docs/packaging export const browser = typeof window !== 'undefined'; export const ssr = typeof window === 'undefined'; + +/** + * Get the operating system of the browser + */ +export function getOS() { + const userAgent = navigator.userAgent; + + if (userAgent.includes('Mac')) { + return 'macOS'; + } else if (userAgent.includes('Windows')) { + return 'Windows'; + } else if (userAgent.includes('Linux')) { + return 'Linux'; + } else if (userAgent.includes('iPhone') || userAgent.includes('iPad')) { + return 'iOS'; + } else if (userAgent.includes('Android')) { + return 'Android'; + } + + return 'Unknown'; +} + +export function isMac() { + return getOS() === 'macOS'; +} +export function isWindows() { + return getOS() === 'Windows'; +} +export function isLinux() { + return getOS() === 'Linux'; +} +export function isIOS() { + return getOS() === 'iOS'; +} +export function isAndroid() { + return getOS() === 'Android'; +} + +export function getModifierSymbol() { + return isMac() ? '⌘' : 'Ctrl'; +} + +export function getModifierKey() { + return isMac() ? 'metaKey' : 'ctrlKey'; +} diff --git a/packages/utils/src/lib/format.test.ts b/packages/utils/src/lib/format.test.ts index 7017ac2..939c4ac 100644 --- a/packages/utils/src/lib/format.test.ts +++ b/packages/utils/src/lib/format.test.ts @@ -1,9 +1,9 @@ import { describe, it, expect } from 'vitest'; import { format } from './format.js'; +import { parseDate } from './date.js'; import { PeriodType } from './date_types.js'; -import { testDate } from './date.test.js'; -import { parseISO } from 'date-fns'; +import { testDate, testDateStr } from './date.test.js'; describe('format()', () => { it('returns empty string for null', () => { @@ -16,47 +16,136 @@ describe('format()', () => { expect(actual).equal(''); }); - it('returns value as string for style "none"', () => { - const actual = format(1234.5678, 'none'); - expect(actual).equal('1234.5678'); + describe('format based on value type', () => { + it('integer', () => { + const actual = format(1234); + expect(actual).equal('1,234'); + }); + it('decimal', () => { + const actual = format(1234.5678); + expect(actual).equal('1,234.57'); + }); + it('date string', () => { + const actual = format(testDateStr); + expect(actual).equal('11/21/2023'); + }); + it('date', () => { + const actual = format(parseDate(testDateStr)); + expect(actual).equal('11/21/2023'); + }); + it('string', () => { + const actual = format('hello'); + expect(actual).equal('hello'); + }); }); - // See `number.test.ts` for more number tests - it('formats number with number format (integer)', () => { - const actual = format(1234.5678, 'integer'); - expect(actual).equal('1,235'); - }); + describe('formats number', () => { + // See `number.test.ts` for more number tests + it('returns original value as string for style "none"', () => { + const actual = format(1234.5678, 'none'); + expect(actual).equal('1234.5678'); + }); - // See `date.test.ts` for more date tests - it('formats date with PeriodType format (date)', () => { - const actual = format(testDate, PeriodType.Day); - expect(actual).equal('11/21/2023'); - }); + it('formats with "integer" type', () => { + const actual = format(1234.5678, 'integer'); + expect(actual).equal('1,235'); + }); - it('formats number with custom function', () => { - const actual = format(1234.5678, (value) => Math.round(value).toString()); - expect(actual).equal('1235'); - }); + it('formats with "integer" config with default options', () => { + const actual = format(1234.5678, { type: 'integer' }); + expect(actual).equal('1,235'); + }); - // Default format based on value type - it('format based on value type (integer)', () => { - const actual = format(1234); - expect(actual).equal('1,234'); - }); - it('format based on value type (decimal)', () => { - const actual = format(1234.5678); - expect(actual).equal('1,234.57'); - }); - it('format based on value type (date string)', () => { - const actual = format(testDate); - expect(actual).equal('11/21/2023'); - }); - it('format based on value type (date)', () => { - const actual = format(parseISO(testDate)); - expect(actual).equal('11/21/2023'); + it('formats with "integer" config with extra options', () => { + const actual = format(1234.5678, { + type: 'integer', + options: { maximumSignificantDigits: 2 }, + }); + expect(actual).equal('1,200'); + }); + + it('formats with "decimal" config with default options', () => { + const actual = format(1234.5678, { type: 'decimal' }); + expect(actual).equal('1,234.57'); + }); + + it('formats with "decimal" config with locale (es)', () => { + const actual = format(1234.5678, { type: 'decimal', locale: 'es' }); + expect(actual).equal('1234,57'); + }); + + it('formats with "decimal" config with locale (de)', () => { + const actual = format(1234.5678, { type: 'decimal', locale: 'de' }); + expect(actual).equal('1.234,57'); + }); + + it('formats with "decimal" config with extra options', () => { + const actual = format(1234.5678, { type: 'decimal', options: { fractionDigits: 3 } }); + expect(actual).equal('1,234.568'); + }); + + it('formats with "currency" config with default options', () => { + const actual = format(1234.5678, { type: 'currency' }); + expect(actual).equal('$1,234.57'); + }); + + it('formats with "currency" config with extra options (currency)', () => { + const actual = format(1234.5678, { type: 'currency', options: { currency: 'EUR' } }); + expect(actual).equal('€1,234.57'); + }); + + it('formats with "currency" config with extra options (compact notation)', () => { + const actual = format(1234.5678, { + type: 'currency', + options: { notation: 'compact' }, + }); + expect(actual).equal('$1.23K'); + }); + + it('formats with "currency" config with extra options (compact notation with short display)', () => { + const actual = format(1234.5678, { + type: 'currency', + options: { notation: 'compact', maximumSignificantDigits: 2 }, + }); + expect(actual).equal('$1.2K'); + }); + + it('formats with custom function', () => { + const actual = format(1234.5678, (value) => Math.round(value).toString()); + expect(actual).equal('1235'); + }); }); - it('format based on value type (string)', () => { - const actual = format('hello'); - expect(actual).equal('hello'); + + describe('formats date', () => { + // See `date.test.ts` for more date tests + it('formats date with PeriodType (date)', () => { + const actual = format(testDate, PeriodType.Day); + expect(actual).equal('11/21/2023'); + }); + + it('formats date with period type code (date)', () => { + const actual = format(testDate, 'day'); + expect(actual).equal('11/21/2023'); + }); + + it('formats date with config with default options', () => { + const actual = format(testDate, { type: 'day' }); + expect(actual).equal('11/21/2023'); + }); + + it('formats date with config with locale', () => { + const actual = format(testDate, { type: 'day', locale: 'es' }); + expect(actual).equal('21/11/2023'); + }); + + it('formats date with config with locale', () => { + const actual = format(testDate, { type: 'day', locale: 'de' }); + expect(actual).equal('21.11.2023'); + }); + + it('formats date with config with extra options', () => { + const actual = format(testDate, { type: 'day', options: { variant: 'short' } }); + expect(actual).equal('11/21'); + }); }); }); diff --git a/packages/utils/src/lib/format.ts b/packages/utils/src/lib/format.ts index e3869cd..b3a005c 100644 --- a/packages/utils/src/lib/format.ts +++ b/packages/utils/src/lib/format.ts @@ -3,60 +3,160 @@ import { getPeriodTypeNameWithLocale, getDayOfWeekName, isStringDate, + periodTypeMappings, } from './date.js'; import { formatNumberWithLocale } from './number.js'; import type { FormatNumberOptions, FormatNumberStyle } from './number.js'; -import { defaultLocale, type LocaleSettings } from './locale.js'; -import { PeriodType, type FormatDateOptions, DayOfWeek } from './date_types.js'; +import { createLocaleSettings, defaultLocale, type LocaleSettings } from './locale.js'; +import { + PeriodType, + type FormatDateOptions, + DayOfWeek, + type PeriodTypeCode, +} from './date_types.js'; -export type FormatType = FormatNumberStyle | PeriodType | CustomFormatter; export type CustomFormatter = (value: any) => string; +export type FormatType = FormatNumberStyle | PeriodType | PeriodTypeCode | CustomFormatter; +export type FormatConfig = + | { type: FormatNumberStyle; options?: FormatNumberOptions } + | { type: PeriodType | PeriodTypeCode; options?: FormatDateOptions }; + // re-export for convenience -export type { FormatNumberStyle, PeriodType }; +export type { FormatNumberStyle, PeriodType, PeriodTypeCode }; /** * Generic format which can handle Dates, Numbers, or custom format function */ export function format(value: null | undefined, format?: FormatType): string; +export function format(value: null | undefined, config: { type: FormatType }): string; + +// number export function format( value: number, format?: FormatNumberStyle | CustomFormatter, - options?: FormatNumberOptions + options?: FormatNumberOptions, + locale?: string ): string; +export function format( + value: number, + config: { + type: FormatNumberStyle | CustomFormatter; + options?: FormatNumberOptions; + locale?: string; + } +): string; + +// Date export function format( value: string | Date, - format?: PeriodType | CustomFormatter, - options?: FormatDateOptions + format?: PeriodType | PeriodTypeCode | CustomFormatter, + options?: FormatDateOptions, + locale?: string ): string; +export function format( + value: string | Date, + config: { + type: PeriodType | PeriodTypeCode | CustomFormatter; + options?: FormatDateOptions; + locale?: string; + } +): string; + export function format( value: any, - format?: FormatType, + formatOrConfig?: + | FormatType + | { type: FormatType; options?: FormatNumberOptions | FormatDateOptions; locale?: string }, options?: FormatNumberOptions | FormatDateOptions ): any { - return formatWithLocale(defaultLocale, value, format, options); + if (typeof formatOrConfig === 'object') { + const locale = formatOrConfig.locale + ? createLocaleSettings({ locale: formatOrConfig.locale }) + : defaultLocale; + return formatWithLocale(locale, value, formatOrConfig.type, formatOrConfig.options); + } + return formatWithLocale(defaultLocale, value, formatOrConfig as FormatType, options); } +// null | undefined export function formatWithLocale( settings: LocaleSettings, - value: any, + value: null | undefined, format?: FormatType, options?: FormatNumberOptions | FormatDateOptions +): string; +export function formatWithLocale( + settings: LocaleSettings, + value: null | undefined, + config: FormatConfig +): string; + +// number +export function formatWithLocale( + settings: LocaleSettings, + value: number, + format?: FormatNumberStyle | CustomFormatter, + options?: FormatNumberOptions +): string; +export function formatWithLocale( + settings: LocaleSettings, + value: number, + config: FormatConfig +): string; + +// Date +export function formatWithLocale( + settings: LocaleSettings, + value: string | Date, + format?: PeriodType | PeriodTypeCode | CustomFormatter, + options?: FormatDateOptions +): string; +export function formatWithLocale( + settings: LocaleSettings, + value: string | Date, + config: FormatConfig +): string; + +export function formatWithLocale( + settings: LocaleSettings, + value: any, + formatOrConfig?: FormatType | FormatConfig, + options?: FormatNumberOptions | FormatDateOptions ) { + const format = + formatOrConfig && typeof formatOrConfig === 'object' && 'type' in formatOrConfig + ? formatOrConfig.type + : (formatOrConfig as FormatType); + + const formatOptions = + formatOrConfig && + typeof formatOrConfig === 'object' && + 'type' in formatOrConfig && + 'options' in formatOrConfig + ? formatOrConfig.options + : options; + if (typeof format === 'function') { return format(value); - } else if (value instanceof Date || isStringDate(value) || (format && format in PeriodType)) { + } else if ( + value instanceof Date || + isStringDate(value) || + (format && + (format in PeriodType || + Object.values(periodTypeMappings).includes(format as PeriodTypeCode))) + ) { return formatDateWithLocale( settings, value, - (format ?? PeriodType.Day) as PeriodType, - options as FormatDateOptions + format as PeriodType | PeriodTypeCode, + formatOptions as FormatDateOptions ); } else if (typeof value === 'number') { return formatNumberWithLocale( settings, value, format as FormatNumberStyle, - options as FormatNumberOptions + formatOptions as FormatNumberOptions ); } else if (typeof value === 'string') { // Keep original value if already string @@ -76,7 +176,7 @@ export type FormatFunction = (( ) => string) & (( value: Date | string | null | undefined, - period: PeriodType, + period: PeriodType | PeriodTypeCode, options?: FormatDateOptions ) => string); @@ -91,7 +191,7 @@ export type FormatFunctions = FormatFunction & FormatFunctionProperties; export function buildFormatters(settings: LocaleSettings): FormatFunctions { const mainFormat = ( value: any, - style: FormatNumberStyle | PeriodType, + style: FormatNumberStyle | PeriodType | PeriodTypeCode, options?: FormatNumberOptions | FormatDateOptions ) => formatWithLocale(settings, value, style, options); diff --git a/packages/utils/src/lib/index.ts b/packages/utils/src/lib/index.ts index a7912b2..31f6a15 100644 --- a/packages/utils/src/lib/index.ts +++ b/packages/utils/src/lib/index.ts @@ -1,15 +1,30 @@ // top-level exports export { flatten, unique, greatestAbs } from './array.js'; -export { formatDate, getDateFuncsByPeriodType } from './date.js'; +export { + formatDate, + parseDate, + timeInterval, + startOfInterval, + endOfInterval, + intervalOffset, + isSameInterval, + intervalDifference, + isLeapYear, + isDateBefore, + isDateAfter, + isDateWithin, + getDateFuncsByPeriodType, +} from './date.js'; export { PeriodType, DayOfWeek, DateToken } from './date_types.js'; export * from './date_types.js'; export * from './dom.js'; -export { getDuration, humanizeDuration, DurationUnits } from './duration.js'; +export { Duration, DurationUnits } from './duration.js'; export * from './file.js'; export { format, formatWithLocale, type FormatType, + type FormatConfig, type FormatFunction, type FormatFunctionProperties, type FormatFunctions, diff --git a/packages/utils/src/lib/json.ts b/packages/utils/src/lib/json.ts index e65abd1..56d446d 100644 --- a/packages/utils/src/lib/json.ts +++ b/packages/utils/src/lib/json.ts @@ -1,5 +1,4 @@ -import { parseISO } from 'date-fns'; -import { isStringDate } from './date.js'; +import { isStringDate, parseDate } from './date.js'; /** * JSON.stringify() with custom handling for `Map` and `Set`. To be used with `parse()` @@ -43,7 +42,7 @@ export function parse(value: string): T { */ export function reviver(key: string, value: any) { if (typeof value === 'string' && isStringDate(value)) { - return parseISO(value); + return parseDate(value); } else if (typeof value === 'object' && value !== null) { if (value._type === 'Map') { return new Map(value.value); diff --git a/packages/utils/src/lib/locale.ts b/packages/utils/src/lib/locale.ts index bb31963..b50a0e7 100644 --- a/packages/utils/src/lib/locale.ts +++ b/packages/utils/src/lib/locale.ts @@ -92,6 +92,10 @@ const defaultLocaleSettings: LocaleSettings = { Day: 'Day', DayTime: 'Day Time', Time: 'Time', + Hour: 'Hour', + Minute: 'Minute', + Second: 'Second', + Millisecond: 'Millisecond', Week: 'Week', BiWeek: 'Bi-Week', Month: 'Month', @@ -195,6 +199,41 @@ const defaultLocaleSettings: LocaleSettings = { DateToken.MiliSecond_3, ], }, + hour: { + short: [DateToken.Hour_numeric], + default: [DateToken.Hour_numeric], + long: [DateToken.Hour_2Digit], + }, + minute: { + short: [DateToken.Hour_numeric, DateToken.Minute_numeric], + default: [DateToken.Hour_numeric, DateToken.Minute_numeric], + long: [DateToken.Hour_2Digit, DateToken.Minute_2Digit], + }, + second: { + short: [DateToken.Hour_numeric, DateToken.Minute_numeric, DateToken.Second_numeric], + default: [DateToken.Hour_numeric, DateToken.Minute_numeric, DateToken.Second_numeric], + long: [DateToken.Hour_2Digit, DateToken.Minute_2Digit, DateToken.Second_2Digit], + }, + millisecond: { + short: [ + DateToken.Hour_numeric, + DateToken.Minute_numeric, + DateToken.Second_numeric, + DateToken.MiliSecond_3, + ], + default: [ + DateToken.Hour_numeric, + DateToken.Minute_numeric, + DateToken.Second_numeric, + DateToken.MiliSecond_3, + ], + long: [ + DateToken.Hour_2Digit, + DateToken.Minute_2Digit, + DateToken.Second_2Digit, + DateToken.MiliSecond_3, + ], + }, week: { short: [DateToken.DayOfMonth_numeric, DateToken.Month_numeric], @@ -203,8 +242,8 @@ const defaultLocaleSettings: LocaleSettings = { }, month: { short: DateToken.Month_short, - default: DateToken.Month_short, - long: DateToken.Month_long, + default: DateToken.Month_long, + long: [DateToken.Month_long, DateToken.Year_numeric], }, monthsYear: { short: [DateToken.Month_short, DateToken.Year_2Digit], diff --git a/packages/utils/src/lib/number.test.ts b/packages/utils/src/lib/number.test.ts index 8349551..01f1b00 100644 --- a/packages/utils/src/lib/number.test.ts +++ b/packages/utils/src/lib/number.test.ts @@ -4,22 +4,44 @@ import { clamp, formatNumber, formatNumberWithLocale, round, step } from './numb import { createLocaleSettings } from './locale.js'; describe('clamp()', () => { - it('no change', () => { - const original = 15; - const actual = clamp(original, 10, 20); - expect(actual).equal(15); - }); + describe('number', () => { + it('no change', () => { + const original = 15; + const actual = clamp(original, 10, 20); + expect(actual).equal(15); + }); - it('clamp min', () => { - const original = 5; - const actual = clamp(original, 10, 20); - expect(actual).equal(10); + it('clamp min', () => { + const original = 5; + const actual = clamp(original, 10, 20); + expect(actual).equal(10); + }); + + it('clamp max', () => { + const original = 25; + const actual = clamp(original, 10, 20); + expect(actual).equal(20); + }); }); - it('clamp max', () => { - const original = 25; - const actual = clamp(original, 10, 20); - expect(actual).equal(20); + describe('Date', () => { + it('no change', () => { + const original = new Date(2020, 0, 15); + const actual = clamp(original, new Date(2020, 0, 10), new Date(2020, 0, 20)); + expect(actual).toEqual(original); + }); + + it('clamp min', () => { + const original = new Date(2020, 0, 5); + const actual = clamp(original, new Date(2020, 0, 10), new Date(2020, 0, 20)); + expect(actual).toEqual(new Date(2020, 0, 10)); + }); + + it('clamp max', () => { + const original = new Date(2020, 0, 25); + const actual = clamp(original, new Date(2020, 0, 10), new Date(2020, 0, 20)); + expect(actual).toEqual(new Date(2020, 0, 20)); + }); }); }); diff --git a/packages/utils/src/lib/number.ts b/packages/utils/src/lib/number.ts index a1b34ed..6b28029 100644 --- a/packages/utils/src/lib/number.ts +++ b/packages/utils/src/lib/number.ts @@ -118,9 +118,9 @@ export function formatNumberWithLocale( } /** - * Clamps value within min and max + * Clamps value within min and max. Supports number and Date */ -export function clamp(value: number, min: number, max: number) { +export function clamp(value: T, min: T, max: T) { return value < min ? min : value > max ? max : value; } diff --git a/packages/utils/src/lib/object.test.ts b/packages/utils/src/lib/object.test.ts index c4e0ac7..e479640 100644 --- a/packages/utils/src/lib/object.test.ts +++ b/packages/utils/src/lib/object.test.ts @@ -1,12 +1,12 @@ import { describe, it, expect } from 'vitest'; -import { addHours, subHours } from 'date-fns'; +import { intervalOffset } from './date.js'; import { expireObject, omit, omitNil, pick } from './object.js'; describe('expireObject', () => { it('simple value not expired', () => { const original = 123; - const expiry = addHours(new Date(), 1); + const expiry = intervalOffset('hour', new Date(), 1); const actual = expireObject(original, expiry); expect(actual).equal(original); @@ -14,7 +14,7 @@ describe('expireObject', () => { it('simple value expired', () => { const original = 123; - const expiry = subHours(new Date(), 1); + const expiry = intervalOffset('hour', new Date(), -1); const actual = expireObject(original, expiry); expect(actual).toBeNull(); @@ -22,7 +22,7 @@ describe('expireObject', () => { it('Date not expired', () => { const original = new Date(); - const expiry = addHours(new Date(), 1); + const expiry = intervalOffset('hour', new Date(), 1); const actual = expireObject(original, expiry); expect(actual).equal(original); @@ -30,7 +30,7 @@ describe('expireObject', () => { it('Date expired', () => { const original = new Date(); - const expiry = subHours(new Date(), 1); + const expiry = intervalOffset('hour', new Date(), -1); const actual = expireObject(original, expiry); expect(actual).toBeNull(); @@ -42,7 +42,7 @@ describe('expireObject', () => { two: 2, three: 3, }; - const expiry = addHours(new Date(), 1); + const expiry = intervalOffset('hour', new Date(), 1); const actual = expireObject(original, expiry); expect(actual).equal(original); @@ -54,7 +54,7 @@ describe('expireObject', () => { two: 2, three: 3, }; - const expiry = subHours(new Date(), 1); + const expiry = intervalOffset('hour', new Date(), -1); const actual = expireObject(original, expiry); expect(actual).toBeNull(); @@ -67,7 +67,7 @@ describe('expireObject', () => { three: 3, }; const expiry = { - two: subHours(new Date(), 1), + two: intervalOffset('hour', new Date(), -1), }; const actual = expireObject(original, expiry); @@ -89,9 +89,9 @@ describe('expireObject', () => { three: 3, }; const expiry = { - one: subHours(new Date(), 3), - two: addHours(new Date(), 1), - $default: subHours(new Date(), 1), + one: intervalOffset('hour', new Date(), -3), + two: intervalOffset('hour', new Date(), 1), + $default: intervalOffset('hour', new Date(), -1), }; const actual = expireObject(original, expiry); @@ -112,9 +112,9 @@ describe('expireObject', () => { three: 3, }; const expiry = { - one: subHours(new Date(), 3), - two: addHours(new Date(), 1), - four: subHours(new Date(), 1), + one: intervalOffset('hour', new Date(), -3), + two: intervalOffset('hour', new Date(), 1), + four: intervalOffset('hour', new Date(), -1), }; const actual = expireObject(original, expiry); @@ -139,8 +139,8 @@ describe('expireObject', () => { three: 3, }; const expiry = { - one: subHours(new Date(), 3), - two: addHours(new Date(), 1), + one: intervalOffset('hour', new Date(), -3), + two: intervalOffset('hour', new Date(), 1), }; const actual = expireObject(original, expiry); @@ -166,9 +166,9 @@ describe('expireObject', () => { }; const expiry = { one: { - foo: subHours(new Date(), 3), + foo: intervalOffset('hour', new Date(), -3), }, - two: addHours(new Date(), 1), + two: intervalOffset('hour', new Date(), 1), }; const actual = expireObject(original, expiry); @@ -188,8 +188,8 @@ describe('expireObject', () => { it('removes $default expiry if expired', () => { const expiry = { - one: addHours(new Date(), 1), - $default: subHours(new Date(), 1), + one: intervalOffset('hour', new Date(), 1), + $default: intervalOffset('hour', new Date(), -1), }; // Test cleaning up expiry diff --git a/packages/utils/src/lib/object.ts b/packages/utils/src/lib/object.ts index fc28caf..6df031f 100644 --- a/packages/utils/src/lib/object.ts +++ b/packages/utils/src/lib/object.ts @@ -1,5 +1,6 @@ -import { get, camelCase, mergeWith } from 'lodash-es'; +import { get, mergeWith } from 'lodash-es'; import { entries, fromEntries, keys } from './typeHelpers.js'; +import { toCamelCase } from './string.js'; export function isLiteralObject(obj: any): obj is object { return obj && typeof obj === 'object' && obj.constructor === Object; @@ -11,7 +12,7 @@ export function isEmptyObject(obj: any) { export function camelCaseKeys(obj: any) { return keys(obj).reduce( - (acc, key) => ((acc[camelCase(key ? String(key) : undefined)] = obj[key]), acc), + (acc, key) => ((acc[toCamelCase(key ? String(key) : '')] = obj[key]), acc), {} as any ); } @@ -187,3 +188,23 @@ export function pick(obj: T, keys: string[]): Partial export function keysByValues(obj: T): Record { return fromEntries(entries(obj).map(([key, value]) => [String(value), key])); } + +/** + * Map keys of an object + */ +export function mapKeys( + obj: T, + fn: (key: keyof T) => string +): Record { + return fromEntries(entries(obj).map(([key, value]) => [fn(key), value])); +} + +/** + * Map values of an object + */ +export function mapValues( + obj: T, + fn: (value: T[keyof T]) => V +): Record { + return fromEntries(entries(obj).map(([key, value]) => [key, fn(value)])) as Record; +} diff --git a/packages/utils/src/lib/rollup.ts b/packages/utils/src/lib/rollup.ts index c27f275..b35eeeb 100644 --- a/packages/utils/src/lib/rollup.ts +++ b/packages/utils/src/lib/rollup.ts @@ -1,5 +1,5 @@ import { rollup } from 'd3-array'; -import { get, isFunction } from 'lodash-es'; +import { get } from 'lodash-es'; export default function ( data: T[], @@ -13,7 +13,7 @@ export default function ( // } const keyFuncs = keys.map((key) => { - if (isFunction(key)) { + if (typeof key === 'function') { return key; } else if (typeof key === 'string') { return (d: any) => get(d, key) || emptyKey; diff --git a/packages/utils/src/lib/routing.test.ts b/packages/utils/src/lib/routing.test.ts index 3eb15b9..4591d9c 100644 --- a/packages/utils/src/lib/routing.test.ts +++ b/packages/utils/src/lib/routing.test.ts @@ -26,4 +26,10 @@ describe('isActive()', () => { const path = '/foo'; expect(isActive(currentUrl, path)).false; }); + + it('path should not match if not at beginning', () => { + const currentUrl = new URL('http://localhost/foo/bar'); + const path = '/bar'; + expect(isActive(currentUrl, path)).false; + }); }); diff --git a/packages/utils/src/lib/routing.ts b/packages/utils/src/lib/routing.ts index d4f2b24..5f3f063 100644 --- a/packages/utils/src/lib/routing.ts +++ b/packages/utils/src/lib/routing.ts @@ -35,7 +35,7 @@ export function isActive(currentUrl: URL, path: string) { // home must be direct match (otherwise matches all) return currentUrl.pathname === path; } else { - // Matches full path next character is `/` - return currentUrl.pathname.match(path + '($|\\/)') != null; + // Matches path at start of pathname, followed by end or slash + return currentUrl.pathname.match('^' + path + '($|\\/)') != null; } } diff --git a/packages/utils/src/lib/string.test.ts b/packages/utils/src/lib/string.test.ts index 24f4267..31b5667 100644 --- a/packages/utils/src/lib/string.test.ts +++ b/packages/utils/src/lib/string.test.ts @@ -1,17 +1,149 @@ -import { describe, it, expect } from 'vitest'; +import { describe, test, expect } from 'vitest'; -import { toTitleCase } from './string.js'; +import { + isUpperCase, + romanize, + toCamelCase, + toKebabCase, + toPascalCase, + toSnakeCase, + toTitleCase, + truncate, +} from './string.js'; + +describe('isUpperCase()', () => { + test.each([ + ['A', true], + ['a', false], + ['THE QUICK BROWN FOX', true], + ['the quick brown fox', false], + ['The Quick Brown Fox', false], + ['The quick brown fox', false], + ])('isUpperCase(%s) => %s', (original, expected) => { + expect(isUpperCase(original)).equal(expected); + }); +}); describe('toTitleCase()', () => { - it('basic', () => { - const original = 'this is a test'; - const expected = 'This is a Test'; + test.each([ + ['A long time ago', 'A Long Time Ago'], // sentence + ['the quick brown fox', 'The Quick Brown Fox'], // lower case + ['THE QUICK BROWN FOX', 'The Quick Brown Fox'], // upper case + ['the_quick_brown_fox', 'The Quick Brown Fox'], // snake case + ['the-quick-brown-fox', 'The Quick Brown Fox'], // kebab case + ['theQuickBrownFox', 'The Quick Brown Fox'], // pascal case + ['the - quick * brown# fox', 'The Quick Brown Fox'], // punctuation + ])('toTitleCase(%s) => %s', (original, expected) => { expect(toTitleCase(original)).equal(expected); }); +}); - it('basic', () => { - const original = 'A long time ago'; - const expected = 'A Long Time Ago'; - expect(toTitleCase(original)).equal(expected); +describe('toCamelCase()', () => { + test.each([ + ['the quick brown fox', 'theQuickBrownFox'], // lower case + ['the_quick_brown_fox', 'theQuickBrownFox'], // snake case + ['the-quick-brown-fox', 'theQuickBrownFox'], // kebab case + ['THE-QUICK-BROWN-FOX', 'theQuickBrownFox'], // snake case (all caps) + ['theQuickBrownFox', 'theQuickBrownFox'], // pascal case + ['thequickbrownfox', 'thequickbrownfox'], // lowercase + ['the - quick * brown# fox', 'theQuickBrownFox'], // punctuation + ['behold theQuickBrownFox', 'beholdTheQuickBrownFox'], + ['Behold theQuickBrownFox', 'beholdTheQuickBrownFox'], + ['The quick brown FOX', 'theQuickBrownFox'], // all caps words are camel-cased + ['theQUickBrownFox', 'theQUickBrownFox'], // all caps substrings >= 4 chars are camel-cased + ['theQUIckBrownFox', 'theQUIckBrownFox'], + ])('toCamelCase(%s) => %s', (original, expected) => { + expect(toCamelCase(original)).equal(expected); + }); +}); + +describe('toSnakeCase()', () => { + test.each([ + ['the quick brown fox', 'the_quick_brown_fox'], // lower case + ['the-quick-brown-fox', 'the_quick_brown_fox'], // kebab case + ['the_quick_brown_fox', 'the_quick_brown_fox'], // snake case + ['theQuickBrownFox', 'the_quick_brown_fox'], // pascal case + ['theQuickBrown Fox', 'the_quick_brown_fox'], // space separated words + ['thequickbrownfox', 'thequickbrownfox'], // no spaces + ['the - quick * brown# fox', 'the_quick_brown_fox'], // punctuation + ['theQUICKBrownFox', 'the_q_u_i_c_k_brown_fox'], // all caps words are snake-cased + ])('toSnakeCase(%s) => %s', (original, expected) => { + expect(toSnakeCase(original)).equal(expected); + }); +}); + +describe('toKebabCase()', () => { + test.each([ + ['the quick brown fox', 'the-quick-brown-fox'], // lower case + ['the-quick-brown-fox', 'the-quick-brown-fox'], // kebab case + ['the_quick_brown_fox', 'the-quick-brown-fox'], // snake case + ['theQuickBrownFox', 'the-quick-brown-fox'], // pascal case + ['theQuickBrown Fox', 'the-quick-brown-fox'], // space separated words + ['thequickbrownfox', 'thequickbrownfox'], // no spaces + ['the - quick * brown# fox', 'the-quick-brown-fox'], // punctuation + ['theQUICKBrownFox', 'the-q-u-i-c-k-brown-fox'], // all caps words are snake-cased + ])('toKebabCase(%s) => %s', (original, expected) => { + expect(toKebabCase(original)).equal(expected); + }); +}); + +describe('toPascalCase()', () => { + test.each([ + ['the quick brown fox', 'TheQuickBrownFox'], // lower case + ['the_quick_brown_fox', 'TheQuickBrownFox'], // snake case + ['the-quick-brown-fox', 'TheQuickBrownFox'], // kebab case + ['theQuickBrownFox', 'TheQuickBrownFox'], // pascal case + ['thequickbrownfox', 'Thequickbrownfox'], // lowercase + ['the - quick * brown# fox', 'TheQuickBrownFox'], // punctuation + ['theQUICKBrownFox', 'TheQUICKBrownFox'], // all caps words are pascal-cased + ])('toPascalCase(%s) => %s', (original, expected) => { + expect(toPascalCase(original)).equal(expected); + }); +}); + +describe('romanize()', () => { + test.each([ + [1, 'I'], + [2, 'II'], + [3, 'III'], + [4, 'IV'], + [5, 'V'], + [6, 'VI'], + [7, 'VII'], + [8, 'VIII'], + [9, 'IX'], + [10, 'X'], + [11, 'XI'], + [12, 'XII'], + [13, 'XIII'], + [14, 'XIV'], + [15, 'XV'], + [16, 'XVI'], + [17, 'XVII'], + [18, 'XVIII'], + [19, 'XIX'], + [20, 'XX'], + [40, 'XL'], + [49, 'XLIX'], + [50, 'L'], + [90, 'XC'], + [100, 'C'], + [400, 'CD'], + [500, 'D'], + [900, 'CM'], + [1000, 'M'], + ])('romanize(%s) => %s', (original, expected) => { + expect(romanize(original)).equal(expected); + }); +}); + +describe('truncate()', () => { + test.each([ + ['the quick brown fox', 9, undefined, 'the quick…'], + ['the quick brown fox', 15, undefined, 'the quick brown…'], + ['the quick brown fox', 15, 3, 'the quick br…fox'], + ['the quick brown fox', 9, Infinity, '…brown fox'], + ])('truncate(%s, %s) => %s', (original, totalChars, endChars, expected) => { + expect(truncate(original, totalChars, endChars)).equal(expected); }); }); diff --git a/packages/utils/src/lib/string.ts b/packages/utils/src/lib/string.ts index 303e6f7..a44dabf 100644 --- a/packages/utils/src/lib/string.ts +++ b/packages/utils/src/lib/string.ts @@ -1,53 +1,80 @@ import { entries } from './typeHelpers.js'; +// any combination of spaces and punctuation characters - http://stackoverflow.com/a/25575009 +const wordSeparatorsRegEx = /[\s\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]+/; + +const uppercaseChars = '[A-Z\u00C0-\u00DC\u00D9-\u00DD]'; // includes accented characters +const capitalsRegEx = new RegExp(uppercaseChars, 'g'); +const allCapitalsRegEx = new RegExp(`^${uppercaseChars}+$`); + +const camelCaseRegEx = /^[a-z\u00E0-\u00FCA-Z\u00C0-\u00DC][\d|a-z\u00E0-\u00FCA-Z\u00C0-\u00DC]*$/; + /** * Check if str only contians upper case letters */ export function isUpperCase(str: string) { - return /^[A-Z]*$/.test(str); + return /^[A-Z ]*$/.test(str); } /** * Returns string with the first letter of each word converted to uppercase (and remainder as lowercase) */ export function toTitleCase(str: string, ignore = ['a', 'an', 'is', 'the']) { - return str - .toLowerCase() - .split(' ') + const withSpaces = isUpperCase(str) ? str : str.replace(/([A-Z])/g, ' $1').trim(); + return withSpaces + .split(wordSeparatorsRegEx) .map((word, index) => { - if (index > 0 && ignore.includes(word)) { + if (index !== 0 && ignore.includes(word)) { return word; } else { - return word.charAt(0).toUpperCase() + word.slice(1); + return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); } }) .join(' '); } -/** - * Generates a unique Id, with prefix if provided - */ -const idMap = new Map(); -export function uniqueId(prefix = '') { - let id = (idMap.get(prefix) ?? 0) + 1; - idMap.set(prefix, id); - return prefix + id; +/** Convert string to camel case */ +export function toCamelCase(str: string) { + const words = str.split(wordSeparatorsRegEx); + return words + .map((word, i) => { + if (word === '') { + return ''; + } + const isCamelCase = camelCaseRegEx.test(word) && !allCapitalsRegEx.test(word); + let firstLetter = word[0]; + firstLetter = i > 0 ? firstLetter.toUpperCase() : firstLetter.toLowerCase(); + return firstLetter + (!isCamelCase ? word.slice(1).toLowerCase() : word.slice(1)); + }) + .join(''); } -/** - * Truncate text with option to keep a number of characters on end. Inserts ellipsis between parts - */ -export function truncate(text: string, totalChars: number, endChars: number = 0) { - endChars = Math.min(endChars, totalChars); +/** Convert string to snake case */ +export function toSnakeCase(str: string) { + // Replace capitals with space + lower case equivalent for later parsing + return str + .replace(capitalsRegEx, (match) => ' ' + (match.toLowerCase() || match)) + .split(wordSeparatorsRegEx) + .join('_'); +} - const start = text.slice(0, totalChars - endChars); - const end = endChars > 0 ? text.slice(-endChars) : ''; +/** Convert string to kebab case */ +export function toKebabCase(str: string) { + return str + .replace(capitalsRegEx, (match) => '-' + (match.toLowerCase() || match)) + .split(wordSeparatorsRegEx) + .join('-'); +} - if (start.length + end.length < text.length) { - return start + '…' + end; - } else { - return text; - } +/** Convert string to pascal case */ +export function toPascalCase(str: string) { + return ( + str + .split(wordSeparatorsRegEx) + .map((word) => word[0].toUpperCase() + word.slice(1)) + // .map((word) => toTitleCase(word, [])) + .join('') + ); } /** Get the roman numeral for the given value */ @@ -79,3 +106,29 @@ export function romanize(value: number) { return result; } + +/** + * Truncate text with option to keep a number of characters on end. Inserts ellipsis between parts + */ +export function truncate(text: string, totalChars: number, endChars: number = 0) { + endChars = Math.min(endChars, totalChars); + + const start = text.slice(0, totalChars - endChars); + const end = endChars > 0 ? text.slice(-endChars) : ''; + + if (start.length + end.length < text.length) { + return start + '…' + end; + } else { + return text; + } +} + +/** + * Generates a unique Id, with prefix if provided + */ +const idMap = new Map(); +export function uniqueId(prefix = '') { + let id = (idMap.get(prefix) ?? 0) + 1; + idMap.set(prefix, id); + return prefix + id; +} diff --git a/packages/utils/src/lib/styles.ts b/packages/utils/src/lib/styles.ts index 205d289..ef2e4d4 100644 --- a/packages/utils/src/lib/styles.ts +++ b/packages/utils/src/lib/styles.ts @@ -1,4 +1,5 @@ import { entries } from './typeHelpers.js'; +import { toKebabCase } from './string.js'; /** * Convert object to style string @@ -8,7 +9,7 @@ export function objectToString(styleObj: { [key: string]: string }) { .map(([key, value]) => { if (value) { // Convert camelCase into kaboob-case (ex. (transformOrigin => transform-origin)) - const propertyName = key.replace(/([A-Z])/g, '-$1').toLowerCase(); + const propertyName = toKebabCase(key); return `${propertyName}: ${value};`; } else { return null; diff --git a/packages/utils/src/lib/typeHelpers.ts b/packages/utils/src/lib/typeHelpers.ts index b0df3d7..ebdcc33 100644 --- a/packages/utils/src/lib/typeHelpers.ts +++ b/packages/utils/src/lib/typeHelpers.ts @@ -1,16 +1,5 @@ // https://basarat.gitbooks.io/typescript/docs/types/never.html#use-case-exhaustive-checks -// import type { colors } from '../styles/theme.js'; -// import type { ComponentProps as SvelteComponentProps, SvelteComponent } from 'svelte'; -// import type { derived, Readable } from 'svelte/store'; -// import type { -// FlyParams, -// SlideParams, -// BlurParams, -// FadeParams, -// ScaleParams, -// } from 'svelte/transition'; - // https://www.typescriptlang.org/docs/handbook/basic-types.html#never export function fail(message: string): never { throw new Error(message); @@ -28,9 +17,16 @@ export type Omit = Pick>; */ export type Merge = Omit> & N; -// Get values of object (similar to Object.values()) +/** + * Get values of object (similar to Object.values()) + */ export type ValueOf = T[keyof T]; +/** + * Nested Record type + */ +export type NestedRecord = { [key: string]: T | NestedRecord }; + // Get keys of object (strongly-typed) // Reason Object.keys() isn't like this by default due to runtime properties: https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208 export function keys(o: T) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ca9105..ac46037 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,84 +24,106 @@ importers: packages/svelte-actions: dependencies: '@floating-ui/dom': - specifier: ^1.6.13 - version: 1.6.13 + specifier: ^1.7.0 + version: 1.7.0 '@layerstack/utils': specifier: workspace:* version: link:../utils - d3-array: - specifier: ^3.2.4 - version: 3.2.4 d3-scale: specifier: ^4.0.2 version: 4.0.2 - date-fns: - specifier: ^4.1.0 - version: 4.1.0 - lodash-es: - specifier: ^4.17.21 - version: 4.17.21 devDependencies: '@sveltejs/package': specifier: ^2.3.11 - version: 2.3.11(svelte@5.20.4)(typescript@5.7.3) + version: 2.3.11(svelte@5.28.6)(typescript@5.8.3) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) - '@types/d3-array': - specifier: ^3.2.1 - version: 3.2.1 + version: 5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) '@types/d3-scale': specifier: ^4.0.9 version: 4.0.9 - '@types/lodash-es': - specifier: ^4.17.12 - version: 4.17.12 - '@vitest/coverage-v8': - specifier: ^3.0.7 - version: 3.0.7(vitest@3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) prettier: - specifier: ^3.5.2 - version: 3.5.2 + specifier: ^3.5.3 + version: 3.5.3 prettier-plugin-svelte: specifier: ^3.3.3 - version: 3.3.3(prettier@3.5.2)(svelte@5.20.4) + version: 3.3.3(prettier@3.5.3)(svelte@5.28.6) rimraf: specifier: 6.0.1 version: 6.0.1 svelte: - specifier: ^5.20.4 - version: 5.20.4 + specifier: ^5.28.2 + version: 5.28.6 svelte-check: - specifier: ^4.1.4 - version: 4.1.4(picomatch@4.0.2)(svelte@5.20.4)(typescript@5.7.3) + specifier: ^4.1.6 + version: 4.1.7(picomatch@4.0.2)(svelte@5.28.6)(typescript@5.8.3) svelte2tsx: - specifier: ^0.7.34 - version: 0.7.34(svelte@5.20.4)(typescript@5.7.3) + specifier: ^0.7.36 + version: 0.7.37(svelte@5.28.6)(typescript@5.8.3) tslib: specifier: ^2.8.1 version: 2.8.1 typescript: - specifier: ^5.7.3 - version: 5.7.3 + specifier: ^5.8.3 + version: 5.8.3 vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + version: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) vitest: specifier: ^3.1.3 - version: 3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + version: 3.1.3(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) + + packages/svelte-state: + dependencies: + '@layerstack/utils': + specifier: workspace:* + version: link:../utils + devDependencies: + '@sveltejs/kit': + specifier: ^2.20.8 + version: 2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)))(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) + '@sveltejs/package': + specifier: ^2.3.11 + version: 2.3.11(svelte@5.28.6)(typescript@5.8.3) + '@sveltejs/vite-plugin-svelte': + specifier: ^5.0.3 + version: 5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) + prettier: + specifier: ^3.5.3 + version: 3.5.3 + prettier-plugin-svelte: + specifier: ^3.3.3 + version: 3.3.3(prettier@3.5.3)(svelte@5.28.6) + rimraf: + specifier: 6.0.1 + version: 6.0.1 + svelte: + specifier: ^5.28.2 + version: 5.28.6 + svelte-check: + specifier: ^4.1.6 + version: 4.1.7(picomatch@4.0.2)(svelte@5.28.6)(typescript@5.8.3) + svelte2tsx: + specifier: ^0.7.36 + version: 0.7.37(svelte@5.28.6)(typescript@5.8.3) + tslib: + specifier: ^2.8.1 + version: 2.8.1 + typescript: + specifier: ^5.8.3 + version: 5.8.3 + vite: + specifier: ^6.3.4 + version: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) + vitest: + specifier: ^3.1.2 + version: 3.1.3(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) packages/svelte-stores: dependencies: '@layerstack/utils': specifier: workspace:* version: link:../utils - d3-array: - specifier: ^3.2.4 - version: 3.2.4 - date-fns: - specifier: ^4.1.0 - version: 4.1.0 immer: specifier: ^10.1.1 version: 10.1.1 @@ -109,57 +131,51 @@ importers: specifier: ^4.17.21 version: 4.17.21 zod: - specifier: ^3.24.2 - version: 3.24.2 + specifier: ^3.24.3 + version: 3.24.4 devDependencies: '@sveltejs/kit': specifier: ^2.21.0 - version: 2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)))(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) + version: 2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)))(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) '@sveltejs/package': specifier: ^2.3.11 - version: 2.3.11(svelte@5.20.4)(typescript@5.7.3) + version: 2.3.11(svelte@5.28.6)(typescript@5.8.3) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) - '@types/d3-array': - specifier: ^3.2.1 - version: 3.2.1 + version: 5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 - '@vitest/coverage-v8': - specifier: ^3.0.7 - version: 3.0.7(vitest@3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) prettier: - specifier: ^3.5.2 - version: 3.5.2 + specifier: ^3.5.3 + version: 3.5.3 prettier-plugin-svelte: specifier: ^3.3.3 - version: 3.3.3(prettier@3.5.2)(svelte@5.20.4) + version: 3.3.3(prettier@3.5.3)(svelte@5.28.6) rimraf: specifier: 6.0.1 version: 6.0.1 svelte: - specifier: ^5.20.4 - version: 5.20.4 + specifier: ^5.28.2 + version: 5.28.6 svelte-check: - specifier: ^4.1.4 - version: 4.1.4(picomatch@4.0.2)(svelte@5.20.4)(typescript@5.7.3) + specifier: ^4.1.6 + version: 4.1.7(picomatch@4.0.2)(svelte@5.28.6)(typescript@5.8.3) svelte2tsx: - specifier: ^0.7.34 - version: 0.7.34(svelte@5.20.4)(typescript@5.7.3) + specifier: ^0.7.36 + version: 0.7.37(svelte@5.28.6)(typescript@5.8.3) tslib: specifier: ^2.8.1 version: 2.8.1 typescript: - specifier: ^5.7.3 - version: 5.7.3 + specifier: ^5.8.3 + version: 5.8.3 vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + version: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) vitest: specifier: ^3.1.3 - version: 3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + version: 3.1.3(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) packages/svelte-table: dependencies: @@ -172,58 +188,52 @@ importers: d3-array: specifier: ^3.2.4 version: 3.2.4 - date-fns: - specifier: ^4.1.0 - version: 4.1.0 lodash-es: specifier: ^4.17.21 version: 4.17.21 devDependencies: '@sveltejs/package': specifier: ^2.3.11 - version: 2.3.11(svelte@5.20.4)(typescript@5.7.3) + version: 2.3.11(svelte@5.28.6)(typescript@5.8.3) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) + version: 5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) '@types/d3-array': specifier: ^3.2.1 version: 3.2.1 '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 - '@vitest/coverage-v8': - specifier: ^3.0.7 - version: 3.0.7(vitest@3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) prettier: - specifier: ^3.5.2 - version: 3.5.2 + specifier: ^3.5.3 + version: 3.5.3 prettier-plugin-svelte: specifier: ^3.3.3 - version: 3.3.3(prettier@3.5.2)(svelte@5.20.4) + version: 3.3.3(prettier@3.5.3)(svelte@5.28.6) rimraf: specifier: 6.0.1 version: 6.0.1 svelte: - specifier: ^5.20.4 - version: 5.20.4 + specifier: ^5.28.2 + version: 5.28.6 svelte-check: - specifier: ^4.1.4 - version: 4.1.4(picomatch@4.0.2)(svelte@5.20.4)(typescript@5.7.3) + specifier: ^4.1.6 + version: 4.1.7(picomatch@4.0.2)(svelte@5.28.6)(typescript@5.8.3) svelte2tsx: - specifier: ^0.7.34 - version: 0.7.34(svelte@5.20.4)(typescript@5.7.3) + specifier: ^0.7.36 + version: 0.7.37(svelte@5.28.6)(typescript@5.8.3) tslib: specifier: ^2.8.1 version: 2.8.1 typescript: - specifier: ^5.7.3 - version: 5.7.3 + specifier: ^5.8.3 + version: 5.8.3 vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + version: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) vitest: specifier: ^3.1.3 - version: 3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + version: 3.1.3(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) packages/tailwind: dependencies: @@ -233,31 +243,22 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 - culori: - specifier: ^4.0.1 - version: 4.0.1 d3-array: specifier: ^3.2.4 version: 3.2.4 - date-fns: - specifier: ^4.1.0 - version: 4.1.0 lodash-es: specifier: ^4.17.21 version: 4.17.21 tailwind-merge: - specifier: ^2.5.4 - version: 2.5.4 - tailwindcss: - specifier: ^3.4.15 - version: 3.4.15 + specifier: ^3.2.0 + version: 3.3.0 devDependencies: '@skeletonlabs/tw-plugin': specifier: ^0.4.1 - version: 0.4.1(tailwindcss@3.4.15) + version: 0.4.1(tailwindcss@4.1.6) '@sveltejs/package': specifier: ^2.3.11 - version: 2.3.11(svelte@5.28.6)(typescript@5.7.3) + version: 2.3.11(svelte@5.28.6)(typescript@5.8.3) '@types/culori': specifier: ^2.1.1 version: 2.1.1 @@ -267,34 +268,49 @@ importers: '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 + '@types/node': + specifier: ^24.0.1 + version: 24.0.1 + culori: + specifier: ^4.0.1 + version: 4.0.1 daisyui: specifier: ^4.12.24 - version: 4.12.24(postcss@8.4.49) + version: 4.12.24(postcss@8.5.3) prettier: - specifier: ^3.5.2 - version: 3.5.2 + specifier: ^3.5.3 + version: 3.5.3 rimraf: specifier: 6.0.1 version: 6.0.1 + tailwindcss: + specifier: ^4.1.5 + version: 4.1.6 tslib: specifier: ^2.8.1 version: 2.8.1 + tsx: + specifier: ^4.19.4 + version: 4.19.4 typescript: - specifier: ^5.7.3 - version: 5.7.3 + specifier: ^5.8.3 + version: 5.8.3 vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + version: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) vitest: specifier: ^3.1.3 - version: 3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + version: 3.1.3(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) packages/utils: dependencies: d3-array: specifier: ^3.2.4 version: 3.2.4 - date-fns: + d3-time: + specifier: ^3.1.0 + version: 3.1.0 + d3-time-format: specifier: ^4.1.0 version: 4.1.0 lodash-es: @@ -303,49 +319,49 @@ importers: devDependencies: '@sveltejs/package': specifier: ^2.3.11 - version: 2.3.11(svelte@5.20.4)(typescript@5.7.3) + version: 2.3.11(svelte@5.28.6)(typescript@5.8.3) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) + version: 5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) '@types/d3-array': specifier: ^3.2.1 version: 3.2.1 + '@types/d3-time': + specifier: ^3.0.4 + version: 3.0.4 + '@types/d3-time-format': + specifier: ^4.0.3 + version: 4.0.3 '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 - '@vitest/coverage-v8': - specifier: ^3.0.7 - version: 3.0.7(vitest@3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) prettier: - specifier: ^3.5.2 - version: 3.5.2 + specifier: ^3.5.3 + version: 3.5.3 prettier-plugin-svelte: specifier: ^3.3.3 - version: 3.3.3(prettier@3.5.2)(svelte@5.20.4) + version: 3.3.3(prettier@3.5.3)(svelte@5.28.6) rimraf: specifier: 6.0.1 version: 6.0.1 svelte: - specifier: ^5.20.4 - version: 5.20.4 - svelte-check: - specifier: ^4.1.4 - version: 4.1.4(picomatch@4.0.2)(svelte@5.20.4)(typescript@5.7.3) + specifier: ^5.28.2 + version: 5.28.6 svelte2tsx: - specifier: ^0.7.34 - version: 0.7.34(svelte@5.20.4)(typescript@5.7.3) + specifier: ^0.7.36 + version: 0.7.37(svelte@5.28.6)(typescript@5.8.3) tslib: specifier: ^2.8.1 version: 2.8.1 typescript: - specifier: ^5.7.3 - version: 5.7.3 + specifier: ^5.8.3 + version: 5.8.3 vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + version: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) vitest: specifier: ^3.1.3 - version: 3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + version: 3.1.3(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) sites/docs: dependencies: @@ -355,6 +371,9 @@ importers: '@layerstack/svelte-actions': specifier: workspace:* version: link:../../packages/svelte-actions + '@layerstack/svelte-state': + specifier: workspace:* + version: link:../../packages/svelte-state '@layerstack/svelte-stores': specifier: workspace:* version: link:../../packages/svelte-stores @@ -376,12 +395,6 @@ importers: d3-array: specifier: ^3.2.4 version: 3.2.4 - date-fns: - specifier: ^4.1.0 - version: 4.1.0 - lodash-es: - specifier: ^4.17.21 - version: 4.17.21 prism-svelte: specifier: ^0.5.0 version: 0.5.0 @@ -389,14 +402,14 @@ importers: specifier: ^1.9.0 version: 1.9.0 prismjs: - specifier: ^1.29.0 - version: 1.29.0 + specifier: ^1.30.0 + version: 1.30.0 sveld: specifier: ^0.22.1 - version: 0.22.1(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(yaml@2.7.1))(postcss@8.5.3) + version: 0.22.1(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.7.1))(postcss@8.5.3) tailwind-merge: - specifier: ^2.5.4 - version: 2.5.4 + specifier: ^3.2.0 + version: 3.3.0 devDependencies: '@changesets/cli': specifier: ^2.29.4 @@ -404,114 +417,98 @@ importers: '@fortawesome/free-solid-svg-icons': specifier: ^6.7.2 version: 6.7.2 + '@iconify-json/lucide': + specifier: ^1.2.53 + version: 1.2.53 '@sveltejs/adapter-cloudflare': specifier: ^7.0.3 - version: 7.0.3(@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)))(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)))(wrangler@4.14.4(@cloudflare/workers-types@4.20250514.0)) + version: 7.0.3(@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)))(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)))(wrangler@4.14.4(@cloudflare/workers-types@4.20250514.0)) '@sveltejs/kit': specifier: ^2.21.0 - version: 2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)))(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) + version: 2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)))(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) '@sveltejs/package': specifier: ^2.3.11 - version: 2.3.11(svelte@5.20.4)(typescript@5.7.3) + version: 2.3.11(svelte@5.28.6)(typescript@5.8.3) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) + version: 5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) '@tailwindcss/typography': specifier: ^0.5.16 - version: 0.5.16(tailwindcss@3.4.15) + version: 0.5.16(tailwindcss@4.1.6) + '@tailwindcss/vite': + specifier: ^4.1.5 + version: 4.1.6(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) '@types/d3-array': specifier: ^3.2.1 version: 3.2.1 - '@types/lodash-es': - specifier: ^4.17.12 - version: 4.17.12 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 - autoprefixer: - specifier: ^10.4.19 - version: 10.4.20(postcss@8.5.3) mdsvex: - specifier: ^0.12.3 - version: 0.12.3(svelte@5.20.4) + specifier: ^0.12.5 + version: 0.12.6(svelte@5.28.6) posthog-js: - specifier: ^1.223.5 - version: 1.223.5(@rrweb/types@2.0.0-alpha.18) + specifier: ^1.239.0 + version: 1.242.1 prettier: - specifier: ^3.5.2 - version: 3.5.2 + specifier: ^3.5.3 + version: 3.5.3 prettier-plugin-svelte: specifier: ^3.3.3 - version: 3.3.3(prettier@3.5.2)(svelte@5.20.4) + version: 3.3.3(prettier@3.5.3)(svelte@5.28.6) rehype-slug: specifier: ^6.0.0 version: 6.0.0 svelte: - specifier: ^5.20.4 - version: 5.20.4 + specifier: ^5.28.2 + version: 5.28.6 svelte-check: - specifier: ^4.1.4 - version: 4.1.4(picomatch@4.0.2)(svelte@5.20.4)(typescript@5.7.3) + specifier: ^4.1.6 + version: 4.1.7(picomatch@4.0.2)(svelte@5.28.6)(typescript@5.8.3) svelte-json-tree: specifier: ^2.2.0 - version: 2.2.0(svelte@5.20.4) + version: 2.2.0(svelte@5.28.6) svelte-ux: - specifier: ^1.0.0 - version: 1.0.0(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(yaml@2.7.1))(postcss@8.5.3)(svelte@5.20.4) + specifier: 2.0.0-next.13 + version: 2.0.0-next.13(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.7.1))(postcss@8.5.3)(svelte@5.28.6) svelte2tsx: - specifier: ^0.7.34 - version: 0.7.34(svelte@5.20.4)(typescript@5.7.3) + specifier: ^0.7.36 + version: 0.7.37(svelte@5.28.6)(typescript@5.8.3) tailwindcss: - specifier: ^3.4.15 - version: 3.4.15 + specifier: ^4.1.5 + version: 4.1.6 tslib: specifier: ^2.8.1 version: 2.8.1 typescript: - specifier: ^5.7.3 - version: 5.7.3 + specifier: ^5.8.3 + version: 5.8.3 unist-util-visit: specifier: ^5.0.0 version: 5.0.0 + unplugin-icons: + specifier: ^22.1.0 + version: 22.1.0(svelte@5.28.6) vite: specifier: ^6.3.5 - version: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + version: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) packages: - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@babel/parser@7.26.9': - resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} - engines: {node: '>=6.0.0'} - hasBin: true + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} '@babel/runtime@7.27.1': resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.9': - resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} - engines: {node: '>=6.9.0'} - - '@bcoe/v8-coverage@1.0.2': - resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} - engines: {node: '>=18'} - '@changesets/apply-release-plan@7.0.12': resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} @@ -777,11 +774,20 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@floating-ui/core@1.6.9': - resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} + '@floating-ui/core@1.7.0': + resolution: {integrity: sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==} + + '@floating-ui/core@1.7.2': + resolution: {integrity: sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==} - '@floating-ui/dom@1.6.13': - resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} + '@floating-ui/dom@1.7.0': + resolution: {integrity: sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==} + + '@floating-ui/dom@1.7.2': + resolution: {integrity: sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==} + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} '@floating-ui/utils@0.2.9': resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} @@ -794,6 +800,15 @@ packages: resolution: {integrity: sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==} engines: {node: '>=6'} + '@iconify-json/lucide@1.2.53': + resolution: {integrity: sha512-LAdOrHp70uYqf/Q9g13qPafF6qjg4XEez7C/0Np5oLSOzfEF49lpMk3xa6ysYTPoWdPYE0qSc/NP3ebJWg3aJg==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -903,13 +918,9 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} @@ -932,20 +943,20 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@layerstack/svelte-actions@1.0.0': - resolution: {integrity: sha512-cnVxMbcc+xYta9hwHnLja4a7bR7cfX/QW9jDY4ZCI8RIt+3lKNRE+u2XzWoGp4Qsx7A0/nGUIiLWpDBgO1ihsQ==} + '@layerstack/svelte-actions@1.0.1-next.12': + resolution: {integrity: sha512-dndWTlYu8b1u6vw2nrO7NssccoACArGG75WoNlyVC13KuENZlWdKE9Q79/wlnbq00NeQMNKMjJwRMsrKQj2ULA==} - '@layerstack/svelte-stores@1.0.0': - resolution: {integrity: sha512-SPH6mjEtHLRBMFYrGUNpGsNsCAGRClYZ9nGQHa1OZdLgziBys/5+7Z3tpJ0K6kODR1ZM1bv16P9n1IfRyEjzpg==} + '@layerstack/svelte-stores@1.0.2-next.12': + resolution: {integrity: sha512-XwKyGCXl3+NHQzB3LsPSo6Rb0TjoY3LZzb1Snw09VnOUxvA9skMmVnM8EO3eKFti/8tyOLReddEUA1ygUaT4Lg==} - '@layerstack/svelte-table@1.0.0': - resolution: {integrity: sha512-Q3nZYYpuGF45gmiGmBQ6NiIY5ip6nTJZR4Xx16A2I9Wkr9qEWMj4wC/HIRmNTMLOIc82EkDnDoJs2GQscKEh8Q==} + '@layerstack/svelte-table@1.0.1-next.12': + resolution: {integrity: sha512-u5zFdXQWlEJTGXNf52ku6hjyxmjp6ge6GwkW+oecqknY8v0b9d1MfrEw3dGJ4Ap88I0aBIdufmOkd0TTEwiCkQ==} - '@layerstack/tailwind@1.0.0': - resolution: {integrity: sha512-xV2M6KRNBmbhV9XAvTHiw/BJSTIh5eby+Hj1iXXkMr88fObZHn4s1G2BILEDbdwjZl6Ivu1Du0gO9Vz3lzflUA==} + '@layerstack/tailwind@2.0.0-next.15': + resolution: {integrity: sha512-7tqKE3OV7/ybeDOORX++USYYCBJa7IgTya2czFpzbgXGo7CQDVyuv+0J1DggjRcEqhhXQA4MUhgnhcRaZvHxWg==} - '@layerstack/utils@1.0.0': - resolution: {integrity: sha512-kIH8lo4MEzPGtdxQRacy8RsSVhMQwe62ckuev62xQDE5QcUJ4wB9EMaRWaQK8CfEOpUERGPgkMPMbMqPhdp0gw==} + '@layerstack/utils@2.0.0-next.12': + resolution: {integrity: sha512-fhGZUlSr3N+D44BYm37WKMGSEFyZBW+dwIqtGU8Cl54mR4TLQ/UwyGhdpgIHyH/x/8q1abE0fP0Dn6ZsrDE3BA==} '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -1091,9 +1102,6 @@ packages: cpu: [x64] os: [win32] - '@rrweb/types@2.0.0-alpha.18': - resolution: {integrity: sha512-iMH3amHthJZ9x3gGmBPmdfim7wLGygC2GciIkw2A6SO8giSn8PHYtRT8OKNH4V+k3SZ6RSnYHcTQxBA7pSWZ3Q==} - '@skeletonlabs/tw-plugin@0.4.1': resolution: {integrity: sha512-crrC8BGKis0GNTp7V2HF6mk1ECLUvAxgTTV26LMgt/rV3U6Xd7N7dL5qIL8fE4MTHvpKa1SBsdqsnMbEvATeEg==} peerDependencies: @@ -1145,11 +1153,101 @@ packages: resolution: {integrity: sha512-08eKiDAjj4zLug1taXSIJ0kGL5cawjVCyJkBb6EWSg5fEPX6L+Wtr0CH2If4j5KYylz85iaZiFlUItvgJvll5g==} engines: {node: ^14.13.1 || ^16.0.0 || >=18} + '@tailwindcss/node@4.1.6': + resolution: {integrity: sha512-ed6zQbgmKsjsVvodAS1q1Ld2BolEuxJOSyyNc+vhkjdmfNUDCmQnlXBfQkHrlzNmslxHsQU/bFmzcEbv4xXsLg==} + + '@tailwindcss/oxide-android-arm64@4.1.6': + resolution: {integrity: sha512-VHwwPiwXtdIvOvqT/0/FLH/pizTVu78FOnI9jQo64kSAikFSZT7K4pjyzoDpSMaveJTGyAKvDjuhxJxKfmvjiQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.6': + resolution: {integrity: sha512-weINOCcqv1HVBIGptNrk7c6lWgSFFiQMcCpKM4tnVi5x8OY2v1FrV76jwLukfT6pL1hyajc06tyVmZFYXoxvhQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.6': + resolution: {integrity: sha512-3FzekhHG0ww1zQjQ1lPoq0wPrAIVXAbUkWdWM8u5BnYFZgb9ja5ejBqyTgjpo5mfy0hFOoMnMuVDI+7CXhXZaQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.6': + resolution: {integrity: sha512-4m5F5lpkBZhVQJq53oe5XgJ+aFYWdrgkMwViHjRsES3KEu2m1udR21B1I77RUqie0ZYNscFzY1v9aDssMBZ/1w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6': + resolution: {integrity: sha512-qU0rHnA9P/ZoaDKouU1oGPxPWzDKtIfX7eOGi5jOWJKdxieUJdVV+CxWZOpDWlYTd4N3sFQvcnVLJWJ1cLP5TA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.6': + resolution: {integrity: sha512-jXy3TSTrbfgyd3UxPQeXC3wm8DAgmigzar99Km9Sf6L2OFfn/k+u3VqmpgHQw5QNfCpPe43em6Q7V76Wx7ogIQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.6': + resolution: {integrity: sha512-8kjivE5xW0qAQ9HX9reVFmZj3t+VmljDLVRJpVBEoTR+3bKMnvC7iLcoSGNIUJGOZy1mLVq7x/gerVg0T+IsYw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.6': + resolution: {integrity: sha512-A4spQhwnWVpjWDLXnOW9PSinO2PTKJQNRmL/aIl2U/O+RARls8doDfs6R41+DAXK0ccacvRyDpR46aVQJJCoCg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.6': + resolution: {integrity: sha512-YRee+6ZqdzgiQAHVSLfl3RYmqeeaWVCk796MhXhLQu2kJu2COHBkqlqsqKYx3p8Hmk5pGCQd2jTAoMWWFeyG2A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.6': + resolution: {integrity: sha512-qAp4ooTYrBQ5pk5jgg54/U1rCJ/9FLYOkkQ/nTE+bVMseMfB6O7J8zb19YTpWuu4UdfRf5zzOrNKfl6T64MNrQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.6': + resolution: {integrity: sha512-nqpDWk0Xr8ELO/nfRUDjk1pc9wDJ3ObeDdNMHLaymc4PJBWj11gdPCWZFKSK2AVKjJQC7J2EfmSmf47GN7OuLg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.6': + resolution: {integrity: sha512-5k9xF33xkfKpo9wCvYcegQ21VwIBU1/qEbYlVukfEIyQbEA47uK8AAwS7NVjNE3vHzcmxMYwd0l6L4pPjjm1rQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.6': + resolution: {integrity: sha512-0bpEBQiGx+227fW4G0fLQ8vuvyy5rsB1YIYNapTq3aRsJ9taF3f5cCaovDjN5pUGKKzcpMrZst/mhNaKAPOHOA==} + engines: {node: '>= 10'} + '@tailwindcss/typography@0.5.16': resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==} peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' + '@tailwindcss/vite@4.1.6': + resolution: {integrity: sha512-zjtqjDeY1w3g2beYQtrMAf51n5G7o+UwmyOjtsDMP7t6XyoRMOidcoKP32ps7AkNOHIXEOK0bhIC05dj8oJp4w==} + peerDependencies: + vite: ^5.2.0 || ^6 + '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} @@ -1162,6 +1260,9 @@ packages: '@types/d3-scale@4.0.9': resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + '@types/d3-time@3.0.4': resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} @@ -1183,15 +1284,18 @@ packages: '@types/lodash@4.14.201': resolution: {integrity: sha512-y9euML0cim1JrykNxADLfaG0FgD1g/yTHwUs/Jg9ZIU7WKj2/4IW9Lbb1WZbvck78W/lfGXFfe+u2EGfIJXdLQ==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@22.13.5': - resolution: {integrity: sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==} - '@types/node@22.15.18': resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==} + '@types/node@24.0.1': + resolution: {integrity: sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw==} + '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -1204,15 +1308,6 @@ packages: '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - '@vitest/coverage-v8@3.0.7': - resolution: {integrity: sha512-Av8WgBJLTrfLOer0uy3CxjlVuWK4CzcLBndW1Nm2vI+3hZ2ozHututkfc7Blu1u6waeQ7J8gzPK/AsBRnWA5mQ==} - peerDependencies: - '@vitest/browser': 3.0.7 - vitest: 3.0.7 - peerDependenciesMeta: - '@vitest/browser': - optional: true - '@vitest/expect@3.1.3': resolution: {integrity: sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==} @@ -1242,11 +1337,6 @@ packages: '@vitest/utils@3.1.3': resolution: {integrity: sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==} - acorn-typescript@1.4.13: - resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} - peerDependencies: - acorn: '>=8.9.0' - acorn-walk@8.3.2: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} @@ -1281,16 +1371,6 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -1309,13 +1389,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - autoprefixer@10.4.20: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -1327,10 +1400,6 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - blake3-wasm@2.1.5: resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} @@ -1341,11 +1410,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} @@ -1358,9 +1422,6 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - caniuse-lite@1.0.30001649: - resolution: {integrity: sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ==} - chai@5.2.0: resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} engines: {node: '>=12'} @@ -1372,14 +1433,14 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -1405,14 +1466,16 @@ packages: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - comment-parser@1.4.1: resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} @@ -1424,10 +1487,6 @@ packages: core-js@3.40.0: resolution: {integrity: sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==} - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1490,9 +1549,6 @@ packages: dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} - date-fns@4.1.0: - resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} - debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -1536,16 +1592,10 @@ packages: devalue@5.1.1: resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} @@ -1553,15 +1603,16 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.5: - resolution: {integrity: sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==} - emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -1574,10 +1625,6 @@ packages: engines: {node: '>=18'} hasBin: true - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - esm-env@1.2.2: resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} @@ -1586,9 +1633,6 @@ packages: engines: {node: '>=4'} hasBin: true - esrap@1.4.5: - resolution: {integrity: sha512-CjNMjkBWWZeHn+VX+gS8YvFwJ5+NDhg8aWZBSFJPR8qQduDNjbJodA2WcwCm7uQa5Rjqj+nZvVmceg1RbHFB9g==} - esrap@1.4.6: resolution: {integrity: sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==} @@ -1612,6 +1656,9 @@ packages: exsolve@1.0.5: resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==} + exsolve@1.0.7: + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} @@ -1619,10 +1666,6 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -1633,14 +1676,6 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - fdir@6.4.3: - resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.4.4: resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} peerDependencies: @@ -1664,9 +1699,6 @@ packages: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -1686,6 +1718,9 @@ packages: get-source@2.0.12: resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -1693,22 +1728,18 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - glob@11.0.0: resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} engines: {node: 20 || >=22} hasBin: true + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -1716,10 +1747,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -1730,9 +1757,6 @@ packages: hast-util-to-string@3.0.0: resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - human-id@4.1.1: resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} hasBin: true @@ -1755,18 +1779,10 @@ packages: is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - is-builtin-module@3.2.1: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} - is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -1804,33 +1820,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.0.1: resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} engines: {node: 20 || >=22} - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} - hasBin: true - jiti@2.4.2: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true @@ -1846,20 +1839,80 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} + lightningcss-darwin-arm64@1.29.2: + resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.2: + resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.2: + resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.2: + resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.2: + resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.29.2: + resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.29.2: + resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.29.2: + resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.29.2: + resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.2: + resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.2: + resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} + engines: {node: '>= 12.0.0'} lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + local-pkg@1.1.1: + resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} + engines: {node: '>=14'} locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} @@ -1889,9 +1942,6 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.0.0: resolution: {integrity: sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==} engines: {node: 20 || >=22} @@ -1899,18 +1949,11 @@ packages: magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} - - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - mdsvex@0.12.3: - resolution: {integrity: sha512-C/uIJamjNo5PHHnR3JHqsBPoLcfUBpzRmAEB6FLMXI/s7XHOceswjDMKqSPEW2WHmYpKm0taZ3U20GSyhMridA==} + mdsvex@0.12.6: + resolution: {integrity: sha512-pupx2gzWh3hDtm/iDW4WuCpljmyHbHi34r7ktOqpPGvyiM4MyfNgdJ3qMizXdgCErmvYC9Nn/qyjePy+4ss9Wg==} peerDependencies: svelte: ^3.56.0 || ^4.0.0 || ^5.0.0-next.120 @@ -1936,14 +1979,22 @@ packages: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} engines: {node: 20 || >=22} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -1959,19 +2010,11 @@ packages: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -1984,25 +2027,6 @@ packages: encoding: optional: true - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} @@ -2033,15 +2057,15 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} package-manager-detector@0.2.11: resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} @@ -2056,10 +2080,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} @@ -2081,9 +2101,6 @@ packages: periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2095,23 +2112,15 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 + pkg-types@2.1.1: + resolution: {integrity: sha512-eY0QFb6eSwc9+0d/5D2lFFUq+A3n3QNGSy/X2Nvp+6MfzGw2u6EbA7S80actgjY1lkvvI0pqB+a4hioMh443Ew==} postcss-js@4.0.1: resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} @@ -2119,18 +2128,6 @@ packages: peerDependencies: postcss: ^8.4.21 - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - postcss-load-config@6.0.1: resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} @@ -2149,35 +2146,24 @@ packages: yaml: optional: true - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - postcss-selector-parser@6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} engines: {node: '>=4'} - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.3: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} - posthog-js@1.223.5: - resolution: {integrity: sha512-QCapVOZ0zusWR2BryAc3utuEwlsK4xhbpaHWi56cUJwdHOi3gThmXL/bpS5KZtYAJN3UUEwN5Ef3IcfDLp9fMQ==} + posthog-js@1.242.1: + resolution: {integrity: sha512-j2mzw0eukyuw/Qm3tNZ6pfaXmc7eglWj6ftmvR1Lz9GtMr85ndGNXJvIGO+6PBrQW2o0D1G0k/KV93ehta0hFA==} peerDependencies: '@rrweb/types': 2.0.0-alpha.17 + rrweb-snapshot: 2.0.0-alpha.17 + peerDependenciesMeta: + '@rrweb/types': + optional: true + rrweb-snapshot: + optional: true preact@10.26.2: resolution: {integrity: sha512-0gNmv4qpS9HaN3+40CLBAnKe0ZfyE4ZWo5xKlC1rVrr0ckkEvJvAQqKaHANdFKsGstoxrY4AItZ7kZSGVoVjgg==} @@ -2193,8 +2179,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.5.2: - resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==} + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} hasBin: true @@ -2210,8 +2196,8 @@ packages: prism-themes@1.9.0: resolution: {integrity: sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==} - prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} quansync@0.2.10: @@ -2220,17 +2206,10 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - readdirp@4.1.2: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} @@ -2246,6 +2225,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve.exports@2.0.3: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} @@ -2255,10 +2237,6 @@ packages: engines: {node: '>= 0.4'} hasBin: true - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -2295,11 +2273,6 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} @@ -2358,9 +2331,6 @@ packages: stacktracey@2.1.8: resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} - std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} @@ -2388,15 +2358,6 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -2405,8 +2366,8 @@ packages: resolution: {integrity: sha512-81zODtru1jsOujk+RUgj4RT3fXaG2nFZIWkeVkm0ZyqsrHxTNUfGJEQgkj6jcvwiEEVbYLUHvehnkfCbKDnarQ==} hasBin: true - svelte-check@4.1.4: - resolution: {integrity: sha512-v0j7yLbT29MezzaQJPEDwksybTE2Ups9rUxEXy92T06TiA0cbqcO8wAOwNUVkFW6B0hsYHA+oAX3BS8b/2oHtw==} + svelte-check@4.1.7: + resolution: {integrity: sha512-1jX4BzXrQJhC/Jt3SqYf6Ntu//vmfc6VWp07JkRfK2nn+22yIblspVUo96gzMkg0Zov8lQicxhxsMzOctwcMQQ==} engines: {node: '>= 18.0.0'} hasBin: true peerDependencies: @@ -2455,13 +2416,13 @@ packages: typescript: optional: true - svelte-ux@1.0.0: - resolution: {integrity: sha512-9ANwk4C3L1dTYT2bx2AkXlq7eXcclGp/Myvo4CkcZNrG1GOItIemkYU5MHkAg3BT+D4jSPsWBiup2j1Hq4FAfA==} + svelte-ux@2.0.0-next.13: + resolution: {integrity: sha512-PWugr8yFJDCrxCFOYcHQfySoi6UndguVIn5Xy7VuYtS75I+lW+wB4BRzMd+epOsMVib00yPOiH4XTblQaXIdDQ==} peerDependencies: svelte: ^3.56.0 || ^4.0.0 || ^5.0.0 - svelte2tsx@0.7.34: - resolution: {integrity: sha512-WTMhpNhFf8/h3SMtR5dkdSy2qfveomkhYei/QW9gSPccb0/b82tjHvLop6vT303ZkGswU/da1s6XvrLgthQPCw==} + svelte2tsx@0.7.37: + resolution: {integrity: sha512-uQCWibXwUNPGQBGTZP1axIpFGFHTXXN30/ppodLVXCnX23U1nzEhqiVtFSEQjtUK3pFVxPhdnfyxD6ikxMCzPQ==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 @@ -2470,36 +2431,27 @@ packages: resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==} engines: {node: '>=16'} - svelte@5.20.4: - resolution: {integrity: sha512-2Mo/AfObaw9zuD0u1JJ7sOVzRCGcpETEyDkLbtkcctWpCMCIyT0iz83xD8JT29SR7O4SgswuPRIDYReYF/607A==} - engines: {node: '>=18'} - svelte@5.28.6: resolution: {integrity: sha512-9qqr7mw8YR9PAnxGFfzCK6PUlNGtns7wVavrhnxyf3fpB1mP/Ol55Z2UnIapsSzNNl3k9qw7cZ22PdE8+xT/jQ==} engines: {node: '>=18'} - tailwind-merge@2.5.4: - resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==} + tailwind-merge@3.3.0: + resolution: {integrity: sha512-fyW/pEfcQSiigd5SNn0nApUOxx0zB/dm6UDU/rEwc2c3sX2smWUNbapHv+QRqLGVp9GWX3THIa7MUGPo+YkDzQ==} - tailwindcss@3.4.15: - resolution: {integrity: sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwindcss@4.1.6: + resolution: {integrity: sha512-j0cGLTreM6u4OWzBeLBpycK0WIh8w7kSwcUsQZoGLHZ7xDTdM69lN64AgoIEEwFi0tnhs4wSykUa5YWxAzgFYg==} - term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} - test-exclude@7.0.1: - resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -2507,6 +2459,9 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + tinyglobby@0.2.12: resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} @@ -2542,26 +2497,28 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + tsx@4.19.4: + resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} + engines: {node: '>=18.0.0'} + hasBin: true + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.8.0: + resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} @@ -2569,15 +2526,24 @@ packages: unenv@2.0.0-rc.15: resolution: {integrity: sha512-J/rEIZU8w6FOfLNz/hNKsnY+fFHWnu9MH4yRbSZF3xbbGHovcetXPs7sD+9p8L6CeNC//I9bhRYAOsBt2u7/OA==} + unist-util-is@4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + unist-util-visit-parents@3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit@2.0.3: + resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} @@ -2585,11 +2551,32 @@ packages: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true + unplugin-icons@22.1.0: + resolution: {integrity: sha512-ect2ZNtk1Zgwb0NVHd0C1IDW/MV+Jk/xaq4t8o6rYdVS3+L660ZdD5kTSQZvsgdwCvquRw+/wYn75hsweRjoIA==} peerDependencies: - browserslist: '>= 4.21.0' + '@svgr/core': '>=7.0.0' + '@svgx/core': ^1.0.1 + '@vue/compiler-sfc': ^3.0.2 || ^2.7.0 + svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 + vue-template-compiler: ^2.6.12 + vue-template-es2015-compiler: ^1.9.0 + peerDependenciesMeta: + '@svgr/core': + optional: true + '@svgx/core': + optional: true + '@vue/compiler-sfc': + optional: true + svelte: + optional: true + vue-template-compiler: + optional: true + vue-template-es2015-compiler: + optional: true + + unplugin@2.3.5: + resolution: {integrity: sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==} + engines: {node: '>=18.12.0'} util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -2684,6 +2671,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -2736,10 +2726,9 @@ packages: utf-8-validate: optional: true - yaml@2.6.1: - resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} - engines: {node: '>= 14'} - hasBin: true + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} yaml@2.7.1: resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} @@ -2755,34 +2744,27 @@ packages: zod@3.22.3: resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} - zod@3.24.2: - resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} + zod@3.24.4: + resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} -snapshots: + zod@3.25.67: + resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==} - '@alloc/quick-lru@5.2.0': {} +snapshots: '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@babel/helper-string-parser@7.25.9': {} - - '@babel/helper-validator-identifier@7.25.9': {} - - '@babel/parser@7.26.9': + '@antfu/install-pkg@1.1.0': dependencies: - '@babel/types': 7.26.9 + package-manager-detector: 1.3.0 + tinyexec: 1.0.1 - '@babel/runtime@7.27.1': {} + '@antfu/utils@8.1.1': {} - '@babel/types@7.26.9': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@bcoe/v8-coverage@1.0.2': {} + '@babel/runtime@7.27.1': {} '@changesets/apply-release-plan@7.0.12': dependencies: @@ -3046,15 +3028,26 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@floating-ui/core@1.6.9': + '@floating-ui/core@1.7.0': dependencies: '@floating-ui/utils': 0.2.9 - '@floating-ui/dom@1.6.13': + '@floating-ui/core@1.7.2': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.0': dependencies: - '@floating-ui/core': 1.6.9 + '@floating-ui/core': 1.7.0 '@floating-ui/utils': 0.2.9 + '@floating-ui/dom@1.7.2': + dependencies: + '@floating-ui/core': 1.7.2 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/utils@0.2.10': {} + '@floating-ui/utils@0.2.9': {} '@fortawesome/fontawesome-common-types@6.7.2': {} @@ -3063,6 +3056,25 @@ snapshots: dependencies: '@fortawesome/fontawesome-common-types': 6.7.2 + '@iconify-json/lucide@1.2.53': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.3.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@antfu/utils': 8.1.1 + '@iconify/types': 2.0.0 + debug: 4.4.1 + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.1 + mlly: 1.7.4 + transitivePeerDependencies: + - supports-color + '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.0.4 @@ -3147,13 +3159,9 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@istanbuljs/schema@0.1.3': {} - - '@jridgewell/gen-mapping@0.3.5': + '@isaacs/fs-minipass@4.0.1': dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + minipass: 7.1.2 '@jridgewell/gen-mapping@0.3.8': dependencies: @@ -3177,49 +3185,39 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@layerstack/svelte-actions@1.0.0': + '@layerstack/svelte-actions@1.0.1-next.12': dependencies: - '@floating-ui/dom': 1.6.13 - '@layerstack/utils': 1.0.0 - d3-array: 3.2.4 + '@floating-ui/dom': 1.7.2 + '@layerstack/utils': 2.0.0-next.12 d3-scale: 4.0.2 - date-fns: 4.1.0 - lodash-es: 4.17.21 - '@layerstack/svelte-stores@1.0.0': + '@layerstack/svelte-stores@1.0.2-next.12': dependencies: - '@layerstack/utils': 1.0.0 - d3-array: 3.2.4 - date-fns: 4.1.0 + '@layerstack/utils': 2.0.0-next.12 immer: 10.1.1 lodash-es: 4.17.21 - zod: 3.24.2 + zod: 3.25.67 - '@layerstack/svelte-table@1.0.0': + '@layerstack/svelte-table@1.0.1-next.12': dependencies: - '@layerstack/svelte-actions': 1.0.0 - '@layerstack/utils': 1.0.0 + '@layerstack/svelte-actions': 1.0.1-next.12 + '@layerstack/utils': 2.0.0-next.12 d3-array: 3.2.4 - date-fns: 4.1.0 lodash-es: 4.17.21 - '@layerstack/tailwind@1.0.0': + '@layerstack/tailwind@2.0.0-next.15': dependencies: - '@layerstack/utils': 1.0.0 + '@layerstack/utils': 2.0.0-next.12 clsx: 2.1.1 - culori: 4.0.1 d3-array: 3.2.4 - date-fns: 4.1.0 lodash-es: 4.17.21 - tailwind-merge: 2.5.4 - tailwindcss: 3.4.15 - transitivePeerDependencies: - - ts-node + tailwind-merge: 3.3.0 - '@layerstack/utils@1.0.0': + '@layerstack/utils@2.0.0-next.12': dependencies: d3-array: 3.2.4 - date-fns: 4.1.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 lodash-es: 4.17.21 '@manypkg/find-root@1.1.0': @@ -3339,27 +3337,25 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.40.2': optional: true - '@rrweb/types@2.0.0-alpha.18': {} - - '@skeletonlabs/tw-plugin@0.4.1(tailwindcss@3.4.15)': + '@skeletonlabs/tw-plugin@0.4.1(tailwindcss@4.1.6)': dependencies: - tailwindcss: 3.4.15 + tailwindcss: 4.1.6 '@sveltejs/acorn-typescript@1.0.5(acorn@8.14.1)': dependencies: acorn: 8.14.1 - '@sveltejs/adapter-cloudflare@7.0.3(@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)))(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)))(wrangler@4.14.4(@cloudflare/workers-types@4.20250514.0))': + '@sveltejs/adapter-cloudflare@7.0.3(@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)))(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)))(wrangler@4.14.4(@cloudflare/workers-types@4.20250514.0))': dependencies: '@cloudflare/workers-types': 4.20250514.0 - '@sveltejs/kit': 2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)))(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) + '@sveltejs/kit': 2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)))(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) worktop: 0.8.0-next.18 wrangler: 4.14.4(@cloudflare/workers-types@4.20250514.0) - '@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)))(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1))': + '@sveltejs/kit@2.21.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)))(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1))': dependencies: '@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1) - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) '@types/cookie': 0.6.0 acorn: 8.14.1 cookie: 0.6.0 @@ -3371,50 +3367,39 @@ snapshots: sade: 1.8.1 set-cookie-parser: 2.7.1 sirv: 3.0.1 - svelte: 5.20.4 - vite: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) - - '@sveltejs/package@2.3.11(svelte@5.20.4)(typescript@5.7.3)': - dependencies: - chokidar: 4.0.3 - kleur: 4.1.5 - sade: 1.8.1 - semver: 7.7.2 - svelte: 5.20.4 - svelte2tsx: 0.7.34(svelte@5.20.4)(typescript@5.7.3) - transitivePeerDependencies: - - typescript + svelte: 5.28.6 + vite: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) - '@sveltejs/package@2.3.11(svelte@5.28.6)(typescript@5.7.3)': + '@sveltejs/package@2.3.11(svelte@5.28.6)(typescript@5.8.3)': dependencies: chokidar: 4.0.3 kleur: 4.1.5 sade: 1.8.1 semver: 7.7.2 svelte: 5.28.6 - svelte2tsx: 0.7.34(svelte@5.28.6)(typescript@5.7.3) + svelte2tsx: 0.7.37(svelte@5.28.6)(typescript@5.8.3) transitivePeerDependencies: - typescript - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)))(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)))(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) debug: 4.4.0 - svelte: 5.20.4 - vite: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + svelte: 5.28.6 + vite: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1))': + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)))(svelte@5.20.4)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)))(svelte@5.28.6)(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) debug: 4.4.0 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 - svelte: 5.20.4 - vite: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) - vitefu: 1.0.6(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) + svelte: 5.28.6 + vite: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) + vitefu: 1.0.6(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) transitivePeerDependencies: - supports-color @@ -3425,13 +3410,84 @@ snapshots: transitivePeerDependencies: - encoding - '@tailwindcss/typography@0.5.16(tailwindcss@3.4.15)': + '@tailwindcss/node@4.1.6': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.29.2 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.6 + + '@tailwindcss/oxide-android-arm64@4.1.6': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.6': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.6': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.6': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.6': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.6': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.6': + optional: true + + '@tailwindcss/oxide@4.1.6': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.6 + '@tailwindcss/oxide-darwin-arm64': 4.1.6 + '@tailwindcss/oxide-darwin-x64': 4.1.6 + '@tailwindcss/oxide-freebsd-x64': 4.1.6 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.6 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.6 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.6 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.6 + '@tailwindcss/oxide-linux-x64-musl': 4.1.6 + '@tailwindcss/oxide-wasm32-wasi': 4.1.6 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.6 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.6 + + '@tailwindcss/typography@0.5.16(tailwindcss@4.1.6)': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.15 + tailwindcss: 4.1.6 + + '@tailwindcss/vite@4.1.6(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1))': + dependencies: + '@tailwindcss/node': 4.1.6 + '@tailwindcss/oxide': 4.1.6 + tailwindcss: 4.1.6 + vite: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) '@types/cookie@0.6.0': {} @@ -3443,6 +3499,8 @@ snapshots: dependencies: '@types/d3-time': 3.0.4 + '@types/d3-time-format@4.0.3': {} + '@types/d3-time@3.0.4': {} '@types/estree@0.0.39': {} @@ -3461,45 +3519,30 @@ snapshots: '@types/lodash@4.14.201': {} - '@types/node@12.20.55': {} - - '@types/node@22.13.5': + '@types/mdast@4.0.4': dependencies: - undici-types: 6.20.0 + '@types/unist': 3.0.2 + + '@types/node@12.20.55': {} '@types/node@22.15.18': dependencies: undici-types: 6.21.0 - optional: true + + '@types/node@24.0.1': + dependencies: + undici-types: 7.8.0 '@types/prismjs@1.26.5': {} '@types/resolve@1.17.1': dependencies: - '@types/node': 22.13.5 + '@types/node': 22.15.18 '@types/unist@2.0.11': {} '@types/unist@3.0.2': {} - '@vitest/coverage-v8@3.0.7(vitest@3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@bcoe/v8-coverage': 1.0.2 - debug: 4.4.0 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 - magicast: 0.3.5 - std-env: 3.8.0 - test-exclude: 7.0.1 - tinyrainbow: 2.0.0 - vitest: 3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) - transitivePeerDependencies: - - supports-color - '@vitest/expect@3.1.3': dependencies: '@vitest/spy': 3.1.3 @@ -3507,13 +3550,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.3(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1))': + '@vitest/mocker@3.1.3(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1))': dependencies: '@vitest/spy': 3.1.3 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + vite: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) '@vitest/pretty-format@3.1.3': dependencies: @@ -3540,10 +3583,6 @@ snapshots: loupe: 3.1.3 tinyrainbow: 2.0.0 - acorn-typescript@1.4.13(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - acorn-walk@8.3.2: {} acorn@8.14.0: {} @@ -3562,15 +3601,6 @@ snapshots: ansi-styles@6.2.1: {} - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@5.0.2: {} - argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -3585,16 +3615,6 @@ snapshots: assertion-error@2.0.1: {} - autoprefixer@10.4.20(postcss@8.5.3): - dependencies: - browserslist: 4.23.3 - caniuse-lite: 1.0.30001649 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - axobject-query@4.1.0: {} balanced-match@1.0.2: {} @@ -3603,8 +3623,6 @@ snapshots: dependencies: is-windows: 1.0.2 - binary-extensions@2.3.0: {} - blake3-wasm@2.1.5: {} brace-expansion@2.0.1: @@ -3615,21 +3633,12 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.23.3: - dependencies: - caniuse-lite: 1.0.30001649 - electron-to-chromium: 1.5.5 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) - builtin-modules@3.3.0: {} cac@6.7.14: {} camelcase-css@2.0.1: {} - caniuse-lite@1.0.30001649: {} - chai@5.2.0: dependencies: assertion-error: 2.0.1 @@ -3642,22 +3651,12 @@ snapshots: check-error@2.1.1: {} - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - chokidar@4.0.3: dependencies: readdirp: 4.1.2 + chownr@3.0.0: {} + ci-info@3.9.0: {} clsx@2.1.1: {} @@ -3665,8 +3664,8 @@ snapshots: code-red@1.0.4: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - '@types/estree': 1.0.6 - acorn: 8.14.0 + '@types/estree': 1.0.7 + acorn: 8.14.1 estree-walker: 3.0.3 periscopic: 3.1.0 @@ -3688,22 +3687,18 @@ snapshots: color-string: 1.9.1 optional: true - commander@4.1.1: {} - comment-parser@1.4.1: {} + confbox@0.1.8: {} + + confbox@0.2.2: {} + cookie@0.6.0: {} cookie@0.7.2: {} core-js@3.40.0: {} - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -3754,12 +3749,12 @@ snapshots: dependencies: d3-array: 3.2.4 - daisyui@4.12.24(postcss@8.4.49): + daisyui@4.12.24(postcss@8.5.3): dependencies: css-selector-tokenizer: 0.8.0 culori: 3.3.0 picocolors: 1.1.1 - postcss-js: 4.0.1(postcss@8.4.49) + postcss-js: 4.0.1(postcss@8.5.3) transitivePeerDependencies: - postcss @@ -3767,8 +3762,6 @@ snapshots: dataloader@1.4.0: {} - date-fns@4.1.0: {} - debug@4.4.0: dependencies: ms: 2.1.3 @@ -3787,29 +3780,27 @@ snapshots: detect-indent@6.1.0: {} - detect-libc@2.0.4: - optional: true + detect-libc@2.0.4: {} devalue@5.1.1: {} - didyoumean@1.2.2: {} - dir-glob@3.0.1: dependencies: path-type: 4.0.0 - dlv@1.1.3: {} - dotenv@16.4.5: {} eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.5: {} - emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -3845,16 +3836,10 @@ snapshots: '@esbuild/win32-ia32': 0.25.4 '@esbuild/win32-x64': 0.25.4 - escalade@3.1.2: {} - esm-env@1.2.2: {} esprima@4.0.1: {} - esrap@1.4.5: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - esrap@1.4.6: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -3873,6 +3858,8 @@ snapshots: exsolve@1.0.5: {} + exsolve@1.0.7: {} + extendable-error@0.1.7: {} external-editor@3.1.0: @@ -3881,14 +3868,6 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3903,10 +3882,6 @@ snapshots: dependencies: reusify: 1.0.4 - fdir@6.4.3(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.4.4(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -3924,11 +3899,9 @@ snapshots: foreground-child@3.3.0: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 4.1.0 - fraction.js@4.3.7: {} - fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -3951,36 +3924,29 @@ snapshots: data-uri-to-buffer: 2.0.2 source-map: 0.6.1 + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + github-slugger@2.0.0: {} glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - glob@11.0.0: dependencies: foreground-child: 3.3.0 jackspeak: 4.0.1 minimatch: 10.0.1 minipass: 7.1.2 - package-json-from-dist: 1.0.0 + package-json-from-dist: 1.0.1 path-scurry: 2.0.0 + globals@15.15.0: {} + globby@11.1.0: dependencies: array-union: 2.1.0 @@ -3992,8 +3958,6 @@ snapshots: graceful-fs@4.2.11: {} - has-flag@4.0.0: {} - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -4006,8 +3970,6 @@ snapshots: dependencies: '@types/hast': 3.0.4 - html-escaper@2.0.2: {} - human-id@4.1.1: {} iconv-lite@0.4.24: @@ -4023,18 +3985,10 @@ snapshots: is-arrayish@0.3.2: optional: true - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - is-builtin-module@3.2.1: dependencies: builtin-modules: 3.3.0 - is-core-module@2.15.1: - dependencies: - hasown: 2.0.2 - is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -4053,7 +4007,7 @@ snapshots: is-reference@3.0.3: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 is-subdir@1.2.0: dependencies: @@ -4063,43 +4017,13 @@ snapshots: isexe@2.0.0: {} - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-lib-source-maps@5.0.6: - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - debug: 4.4.0 - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - - istanbul-reports@3.1.7: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jackspeak@4.0.1: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jiti@1.21.6: {} - - jiti@2.4.2: - optional: true + jiti@2.4.2: {} js-yaml@3.14.1: dependencies: @@ -4112,14 +4036,61 @@ snapshots: kleur@4.1.5: {} - lilconfig@2.1.0: {} + kolorist@1.8.0: {} + + lightningcss-darwin-arm64@1.29.2: + optional: true - lilconfig@3.1.2: {} + lightningcss-darwin-x64@1.29.2: + optional: true + + lightningcss-freebsd-x64@1.29.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.2: + optional: true + + lightningcss-linux-arm64-gnu@1.29.2: + optional: true + + lightningcss-linux-arm64-musl@1.29.2: + optional: true + + lightningcss-linux-x64-gnu@1.29.2: + optional: true + + lightningcss-linux-x64-musl@1.29.2: + optional: true + + lightningcss-win32-arm64-msvc@1.29.2: + optional: true + + lightningcss-win32-x64-msvc@1.29.2: + optional: true + + lightningcss@1.29.2: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.2 + lightningcss-darwin-x64: 1.29.2 + lightningcss-freebsd-x64: 1.29.2 + lightningcss-linux-arm-gnueabihf: 1.29.2 + lightningcss-linux-arm64-gnu: 1.29.2 + lightningcss-linux-arm64-musl: 1.29.2 + lightningcss-linux-x64-gnu: 1.29.2 + lightningcss-linux-x64-musl: 1.29.2 + lightningcss-win32-arm64-msvc: 1.29.2 + lightningcss-win32-x64-msvc: 1.29.2 lilconfig@3.1.3: optional: true - lines-and-columns@1.2.4: {} + local-pkg@1.1.1: + dependencies: + mlly: 1.7.4 + pkg-types: 2.1.1 + quansync: 0.2.10 locate-character@3.0.0: {} @@ -4143,32 +4114,22 @@ snapshots: dependencies: tslib: 2.8.1 - lru-cache@10.4.3: {} - lru-cache@11.0.0: {} magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - magicast@0.3.5: - dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 - source-map-js: 1.2.1 - - make-dir@4.0.0: - dependencies: - semver: 7.7.1 - mdn-data@2.0.30: {} - mdsvex@0.12.3(svelte@5.20.4): + mdsvex@0.12.6(svelte@5.28.6): dependencies: + '@types/mdast': 4.0.4 '@types/unist': 2.0.11 prism-svelte: 0.4.7 - prismjs: 1.29.0 - svelte: 5.20.4 + prismjs: 1.30.0 + svelte: 5.28.6 + unist-util-visit: 2.0.3 vfile-message: 2.0.4 merge2@1.4.1: {} @@ -4201,11 +4162,20 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.5: + minipass@7.1.2: {} + + minizlib@3.0.2: dependencies: - brace-expansion: 2.0.1 + minipass: 7.1.2 - minipass@7.1.2: {} + mkdirp@3.0.1: {} + + mlly@1.7.4: + dependencies: + acorn: 8.14.1 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 mri@1.2.0: {} @@ -4215,16 +4185,8 @@ snapshots: mustache@4.2.0: {} - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - nanoid@3.3.11: {} - nanoid@3.3.7: {} - no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -4234,16 +4196,6 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-releases@2.0.18: {} - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - ohash@2.0.11: {} os-tmpdir@1.0.2: {} @@ -4266,14 +4218,14 @@ snapshots: p-try@2.2.0: {} - package-json-from-dist@1.0.0: {} - package-json-from-dist@1.0.1: {} package-manager-detector@0.2.11: dependencies: quansync: 0.2.10 + package-manager-detector@1.3.0: {} + pascal-case@3.1.2: dependencies: no-case: 3.0.4 @@ -4285,11 +4237,6 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - path-scurry@2.0.0: dependencies: lru-cache: 11.0.0 @@ -4305,84 +4252,58 @@ snapshots: periscopic@3.1.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-walker: 3.0.3 is-reference: 3.0.3 - picocolors@1.0.1: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.2: {} - pify@2.3.0: {} - pify@4.0.1: {} - pirates@4.0.6: {} - - postcss-import@15.1.0(postcss@8.4.49): + pkg-types@1.3.1: dependencies: - postcss: 8.4.49 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 + confbox: 0.1.8 + mlly: 1.7.4 + pathe: 2.0.3 - postcss-js@4.0.1(postcss@8.4.49): + pkg-types@2.1.1: dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.49 + confbox: 0.2.2 + exsolve: 1.0.7 + pathe: 2.0.3 - postcss-load-config@4.0.2(postcss@8.4.49): + postcss-js@4.0.1(postcss@8.5.3): dependencies: - lilconfig: 3.1.2 - yaml: 2.6.1 - optionalDependencies: - postcss: 8.4.49 + camelcase-css: 2.0.1 + postcss: 8.5.3 - postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(yaml@2.7.1): + postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.7.1): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 2.4.2 postcss: 8.5.3 + tsx: 4.19.4 yaml: 2.7.1 optional: true - postcss-nested@6.2.0(postcss@8.4.49): - dependencies: - postcss: 8.4.49 - postcss-selector-parser: 6.1.2 - postcss-selector-parser@6.0.10: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.4.49: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.3: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 - posthog-js@1.223.5(@rrweb/types@2.0.0-alpha.18): + posthog-js@1.242.1: dependencies: - '@rrweb/types': 2.0.0-alpha.18 core-js: 3.40.0 fflate: 0.4.8 preact: 10.26.2 @@ -4390,14 +4311,14 @@ snapshots: preact@10.26.2: {} - prettier-plugin-svelte@3.3.3(prettier@3.5.2)(svelte@5.20.4): + prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.28.6): dependencies: - prettier: 3.5.2 - svelte: 5.20.4 + prettier: 3.5.3 + svelte: 5.28.6 prettier@2.8.8: {} - prettier@3.5.2: {} + prettier@3.5.3: {} printable-characters@1.0.42: {} @@ -4407,16 +4328,12 @@ snapshots: prism-themes@1.9.0: {} - prismjs@1.29.0: {} + prismjs@1.30.0: {} quansync@0.2.10: {} queue-microtask@1.2.3: {} - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -4424,10 +4341,6 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - readdirp@4.1.2: {} regexparam@3.0.0: {} @@ -4442,6 +4355,8 @@ snapshots: resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve.exports@2.0.3: {} resolve@1.22.10: @@ -4450,18 +4365,12 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@1.22.8: - dependencies: - is-core-module: 2.15.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - reusify@1.0.4: {} rimraf@6.0.1: dependencies: glob: 11.0.0 - package-json-from-dist: 1.0.0 + package-json-from-dist: 1.0.1 rollup-plugin-svelte@7.2.2(rollup@2.79.2)(svelte@4.2.19): dependencies: @@ -4510,8 +4419,6 @@ snapshots: safer-buffer@2.1.2: {} - semver@7.7.1: {} - semver@7.7.2: {} set-cookie-parser@2.7.1: {} @@ -4584,8 +4491,6 @@ snapshots: as-table: 1.0.55 get-source: 2.0.12 - std-env@3.8.0: {} - std-env@3.9.0: {} stoppable@1.1.0: {} @@ -4612,34 +4517,20 @@ snapshots: strip-bom@3.0.0: {} - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - supports-preserve-symlinks-flag@1.0.0: {} - sveld@0.22.1(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(yaml@2.7.1))(postcss@8.5.3): + sveld@0.22.1(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.7.1))(postcss@8.5.3): dependencies: '@rollup/plugin-node-resolve': 13.3.0(rollup@2.79.2) acorn: 8.14.0 comment-parser: 1.4.1 - prettier: 3.5.2 + prettier: 3.5.3 rollup: 2.79.2 rollup-plugin-svelte: 7.2.2(rollup@2.79.2)(svelte@4.2.19) svelte: 4.2.19 - svelte-preprocess: 6.0.3(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(yaml@2.7.1))(postcss@8.5.3)(svelte@4.2.19)(typescript@5.7.3) + svelte-preprocess: 6.0.3(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.7.1))(postcss@8.5.3)(svelte@4.2.19)(typescript@5.8.3) tinyglobby: 0.2.12 - typescript: 5.7.3 + typescript: 5.8.3 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -4651,53 +4542,50 @@ snapshots: - stylus - sugarss - svelte-check@4.1.4(picomatch@4.0.2)(svelte@5.20.4)(typescript@5.7.3): + svelte-check@4.1.7(picomatch@4.0.2)(svelte@5.28.6)(typescript@5.8.3): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 4.0.3 - fdir: 6.4.3(picomatch@4.0.2) + fdir: 6.4.4(picomatch@4.0.2) picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.20.4 - typescript: 5.7.3 + svelte: 5.28.6 + typescript: 5.8.3 transitivePeerDependencies: - picomatch - svelte-json-tree@2.2.0(svelte@5.20.4): + svelte-json-tree@2.2.0(svelte@5.28.6): dependencies: - svelte: 5.20.4 + svelte: 5.28.6 - svelte-preprocess@6.0.3(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(yaml@2.7.1))(postcss@8.5.3)(svelte@4.2.19)(typescript@5.7.3): + svelte-preprocess@6.0.3(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.7.1))(postcss@8.5.3)(svelte@4.2.19)(typescript@5.8.3): dependencies: svelte: 4.2.19 optionalDependencies: postcss: 8.5.3 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.3)(yaml@2.7.1) - typescript: 5.7.3 + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.7.1) + typescript: 5.8.3 - svelte-ux@1.0.0(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(yaml@2.7.1))(postcss@8.5.3)(svelte@5.20.4): + svelte-ux@2.0.0-next.13(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.7.1))(postcss@8.5.3)(svelte@5.28.6): 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.0 - '@layerstack/svelte-table': 1.0.0 - '@layerstack/tailwind': 1.0.0 - '@layerstack/utils': 1.0.0 + '@floating-ui/dom': 1.7.2 + '@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 - sveld: 0.22.1(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(yaml@2.7.1))(postcss@8.5.3) - svelte: 5.20.4 - zod: 3.24.2 + prismjs: 1.30.0 + sveld: 0.22.1(postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.7.1))(postcss@8.5.3) + svelte: 5.28.6 + zod: 3.25.67 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -4708,29 +4596,21 @@ snapshots: - sass - stylus - sugarss - - ts-node - svelte2tsx@0.7.34(svelte@5.20.4)(typescript@5.7.3): - dependencies: - dedent-js: 1.0.1 - pascal-case: 3.1.2 - svelte: 5.20.4 - typescript: 5.7.3 - - svelte2tsx@0.7.34(svelte@5.28.6)(typescript@5.7.3): + svelte2tsx@0.7.37(svelte@5.28.6)(typescript@5.8.3): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 svelte: 5.28.6 - typescript: 5.7.3 + typescript: 5.8.3 svelte@4.2.19: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 - '@types/estree': 1.0.6 - acorn: 8.14.0 + '@types/estree': 1.0.7 + acorn: 8.14.1 aria-query: 5.3.2 axobject-query: 4.1.0 code-red: 1.0.4 @@ -4741,23 +4621,6 @@ snapshots: magic-string: 0.30.17 periscopic: 3.1.0 - svelte@5.20.4: - dependencies: - '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.5.0 - '@types/estree': 1.0.6 - acorn: 8.14.0 - acorn-typescript: 1.4.13(acorn@8.14.0) - aria-query: 5.3.2 - axobject-query: 4.1.0 - clsx: 2.1.1 - esm-env: 1.2.2 - esrap: 1.4.5 - is-reference: 3.0.3 - locate-character: 3.0.0 - magic-string: 0.30.17 - zimmerframe: 1.1.2 - svelte@5.28.6: dependencies: '@ampproject/remapping': 2.3.0 @@ -4775,58 +4638,32 @@ snapshots: magic-string: 0.30.17 zimmerframe: 1.1.2 - tailwind-merge@2.5.4: {} - - tailwindcss@3.4.15: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.6 - lilconfig: 2.1.0 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.4.49 - postcss-import: 15.1.0(postcss@8.4.49) - postcss-js: 4.0.1(postcss@8.4.49) - postcss-load-config: 4.0.2(postcss@8.4.49) - postcss-nested: 6.2.0(postcss@8.4.49) - postcss-selector-parser: 6.1.2 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node + tailwind-merge@3.3.0: {} - term-size@2.2.1: {} + tailwindcss@4.1.6: {} - test-exclude@7.0.1: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 - minimatch: 9.0.5 + tapable@2.2.1: {} - thenify-all@1.6.0: + tar@7.4.3: dependencies: - thenify: 3.3.1 + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 + term-size@2.2.1: {} tinybench@2.9.0: {} tinyexec@0.3.2: {} + tinyexec@1.0.1: {} + tinyglobby@0.2.12: dependencies: - fdir: 6.4.3(picomatch@4.0.2) + fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 tinyglobby@0.2.13: @@ -4852,18 +4689,22 @@ snapshots: tr46@0.0.3: {} - ts-interface-checker@0.1.13: {} - tslib@2.8.1: {} - typescript@5.7.3: {} + tsx@4.19.4: + dependencies: + esbuild: 0.25.4 + get-tsconfig: 4.10.0 + optionalDependencies: + fsevents: 2.3.3 + + typescript@5.8.3: {} ufo@1.6.1: {} - undici-types@6.20.0: {} + undici-types@6.21.0: {} - undici-types@6.21.0: - optional: true + undici-types@7.8.0: {} undici@5.29.0: dependencies: @@ -4877,6 +4718,8 @@ snapshots: pathe: 2.0.3 ufo: 1.6.1 + unist-util-is@4.1.0: {} + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.2 @@ -4885,11 +4728,22 @@ snapshots: dependencies: '@types/unist': 2.0.11 + unist-util-visit-parents@3.1.1: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 4.1.0 + unist-util-visit-parents@6.0.1: dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 + unist-util-visit@2.0.3: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 + unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.2 @@ -4898,11 +4752,23 @@ snapshots: universalify@0.1.2: {} - update-browserslist-db@1.1.0(browserslist@4.23.3): + unplugin-icons@22.1.0(svelte@5.28.6): + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/utils': 2.3.0 + debug: 4.4.1 + local-pkg: 1.1.1 + unplugin: 2.3.5 + optionalDependencies: + svelte: 5.28.6 + transitivePeerDependencies: + - supports-color + + unplugin@2.3.5: dependencies: - browserslist: 4.23.3 - escalade: 3.1.2 - picocolors: 1.0.1 + acorn: 8.14.1 + picomatch: 4.0.2 + webpack-virtual-modules: 0.6.2 util-deprecate@1.0.2: {} @@ -4911,13 +4777,13 @@ snapshots: '@types/unist': 2.0.11 unist-util-stringify-position: 2.0.3 - vite-node@3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1): + vite-node@3.1.3(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + vite: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - jiti @@ -4932,7 +4798,7 @@ snapshots: - tsx - yaml - vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1): + vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1): dependencies: esbuild: 0.25.4 fdir: 6.4.4(picomatch@4.0.2) @@ -4941,19 +4807,21 @@ snapshots: rollup: 4.40.2 tinyglobby: 0.2.13 optionalDependencies: - '@types/node': 22.15.18 + '@types/node': 24.0.1 fsevents: 2.3.3 jiti: 2.4.2 + lightningcss: 1.29.2 + tsx: 4.19.4 yaml: 2.7.1 - vitefu@1.0.6(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)): + vitefu@1.0.6(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)): optionalDependencies: - vite: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + vite: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) - vitest@3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1): + vitest@3.1.3(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1): dependencies: '@vitest/expect': 3.1.3 - '@vitest/mocker': 3.1.3(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) + '@vitest/mocker': 3.1.3(vite@6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1)) '@vitest/pretty-format': 3.1.3 '@vitest/runner': 3.1.3 '@vitest/snapshot': 3.1.3 @@ -4970,11 +4838,11 @@ snapshots: tinyglobby: 0.2.13 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) - vite-node: 3.1.3(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) + vite: 6.3.5(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) + vite-node: 3.1.3(@types/node@24.0.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.7.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.15.18 + '@types/node': 24.0.1 transitivePeerDependencies: - jiti - less @@ -4993,6 +4861,8 @@ snapshots: webidl-conversions@3.0.1: {} + webpack-virtual-modules@0.6.2: {} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -5052,7 +4922,7 @@ snapshots: ws@8.18.0: {} - yaml@2.6.1: {} + yallist@5.0.0: {} yaml@2.7.1: optional: true @@ -5067,4 +4937,6 @@ snapshots: zod@3.22.3: {} - zod@3.24.2: {} + zod@3.24.4: {} + + zod@3.25.67: {} diff --git a/sites/docs/CHANGELOG.md b/sites/docs/CHANGELOG.md index 4508763..01d1ffe 100644 --- a/sites/docs/CHANGELOG.md +++ b/sites/docs/CHANGELOG.md @@ -1,5 +1,27 @@ # @layerstack/docs +## 1.1.0-next.1 + +### Patch Changes + +- Updated dependencies [[`46c12ab`](https://github.com/techniq/layerstack/commit/46c12ab8d3848611d73d8fddb06e0039351f827c)]: + - @layerstack/tailwind@2.0.0-next.1 + +## 1.1.0-next.0 + +### Minor Changes + +- Tailwind 4 support ([#32](https://github.com/techniq/layerstack/pull/32)) + +### Patch Changes + +- Updated dependencies [[`6cdcb26`](https://github.com/techniq/layerstack/commit/6cdcb26cabd0539cee2885efbaa39e7787a34114), [`c6bb443`](https://github.com/techniq/layerstack/commit/c6bb443d12ee12bd69417dcfa5880b6bf78c9f09), [`c13e65e`](https://github.com/techniq/layerstack/commit/c13e65e059d690cbc282635f6e48a27d715e5997)]: + - @layerstack/tailwind@2.0.0-next.0 + - @layerstack/utils@1.1.0-next.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 + ## 1.0.2 ### Patch Changes diff --git a/sites/docs/package.json b/sites/docs/package.json index 5249e21..e2e4a1c 100644 --- a/sites/docs/package.json +++ b/sites/docs/package.json @@ -5,9 +5,9 @@ "license": "MIT", "private": true, "repository": "techniq/layerstack", - "version": "1.0.2", + "version": "1.1.0-next.1", "scripts": { - "dev": "vite dev", + "dev": "vite dev --port 3004", "build": "vite build", "preview": "vite preview", "package": "svelte-package", @@ -21,35 +21,37 @@ "devDependencies": { "@changesets/cli": "^2.29.4", "@fortawesome/free-solid-svg-icons": "^6.7.2", + "@iconify-json/lucide": "^1.2.53", "@sveltejs/adapter-cloudflare": "^7.0.3", "@sveltejs/kit": "^2.21.0", "@sveltejs/package": "^2.3.11", "@sveltejs/vite-plugin-svelte": "^5.0.3", "@tailwindcss/typography": "^0.5.16", + "@tailwindcss/vite": "^4.1.5", "@types/d3-array": "^3.2.1", - "@types/lodash-es": "^4.17.12", "@types/prismjs": "^1.26.5", - "autoprefixer": "^10.4.19", - "mdsvex": "^0.12.3", - "posthog-js": "^1.223.5", - "prettier": "^3.5.2", + "mdsvex": "^0.12.5", + "posthog-js": "^1.239.0", + "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", "rehype-slug": "^6.0.0", - "svelte": "^5.20.4", - "svelte-check": "^4.1.4", + "svelte": "^5.28.2", + "svelte-check": "^4.1.6", "svelte-json-tree": "^2.2.0", - "svelte-ux": "^1.0.0", - "svelte2tsx": "^0.7.34", - "tailwindcss": "^3.4.15", + "svelte-ux": "2.0.0-next.13", + "svelte2tsx": "^0.7.36", + "tailwindcss": "^4.1.5", "tslib": "^2.8.1", - "typescript": "^5.7.3", + "typescript": "^5.8.3", "unist-util-visit": "^5.0.0", + "unplugin-icons": "^22.1.0", "vite": "^6.3.5" }, "type": "module", "dependencies": { "@fortawesome/fontawesome-common-types": "^6.7.2", "@layerstack/svelte-actions": "workspace:*", + "@layerstack/svelte-state": "workspace:*", "@layerstack/svelte-stores": "workspace:*", "@layerstack/svelte-table": "workspace:*", "@layerstack/tailwind": "workspace:*", @@ -57,13 +59,11 @@ "@mdi/js": "^7.4.47", "clsx": "^2.1.1", "d3-array": "^3.2.4", - "date-fns": "^4.1.0", - "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", - "tailwind-merge": "^2.5.4" + "tailwind-merge": "^3.2.0" }, "peerDependencies": { "svelte": "^3.56.0 || ^4.0.0 || ^5.0.0-next.120" diff --git a/sites/docs/postcss.config.cjs b/sites/docs/postcss.config.cjs deleted file mode 100644 index cdbe50f..0000000 --- a/sites/docs/postcss.config.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - plugins: { - 'tailwindcss/nesting': {}, - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/sites/docs/src/app.d.ts b/sites/docs/src/app.d.ts index 9ddf6b0..23f62aa 100644 --- a/sites/docs/src/app.d.ts +++ b/sites/docs/src/app.d.ts @@ -1,4 +1,5 @@ /// +export * from 'unplugin-icons/types/svelte'; // See https://kit.svelte.dev/docs/types#app // for information about these interfaces diff --git a/sites/docs/src/docs/Blockquote.svelte b/sites/docs/src/docs/Blockquote.svelte index adde748..3e16321 100644 --- a/sites/docs/src/docs/Blockquote.svelte +++ b/sites/docs/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/sites/docs/src/docs/Code.svelte b/sites/docs/src/docs/Code.svelte index c843968..5e01aa5 100644 --- a/sites/docs/src/docs/Code.svelte +++ b/sites/docs/src/docs/Code.svelte @@ -17,11 +17,11 @@ } = {}; -
+
{#if source}
           {@html highlightedSource}
       
diff --git a/sites/docs/src/docs/Preview.svelte b/sites/docs/src/docs/Preview.svelte index 01a52fb..ef6d69d 100644 --- a/sites/docs/src/docs/Preview.svelte +++ b/sites/docs/src/docs/Preview.svelte @@ -26,7 +26,7 @@ } -
+
@@ -55,9 +55,9 @@ -
+
Chart data
diff --git a/sites/docs/src/docs/ViewSourceButton.svelte b/sites/docs/src/docs/ViewSourceButton.svelte index 228adb9..559a3ab 100644 --- a/sites/docs/src/docs/ViewSourceButton.svelte +++ b/sites/docs/src/docs/ViewSourceButton.svelte @@ -17,9 +17,9 @@ -
+
{label}
{href}
diff --git a/sites/docs/src/routes/+layout.server.ts b/sites/docs/src/routes/+layout.server.ts index e3911f9..cf970e6 100644 --- a/sites/docs/src/routes/+layout.server.ts +++ b/sites/docs/src/routes/+layout.server.ts @@ -1,20 +1,11 @@ -import { redirect } from '@sveltejs/kit'; - import { env } from '$env/dynamic/private'; -import themes from '../../themes.json' assert { type: 'json' }; import { getThemeNames } from '@layerstack/tailwind'; +import themeCss from '@layerstack/tailwind/themes/all.css?raw'; -export async function load({ url }) { - // Redirect `svelte-ux.vercel.app` to `svelte-ux.techniq.dev` - if (url.host === 'svelte-ux.vercel.app') { - const newUrl = new URL(url); - newUrl.host = 'svelte-ux.techniq.dev'; - redirect(302, newUrl.toString()); - } - +export async function load() { return { - themes: getThemeNames(themes), + themes: getThemeNames(themeCss), // themes: { light: ['light'], dark: ['dark'] }, pr_id: env.VERCEL_GIT_PULL_REQUEST_ID, }; diff --git a/sites/docs/src/routes/+layout.svelte b/sites/docs/src/routes/+layout.svelte index 1c8dc18..93a7eea 100644 --- a/sites/docs/src/routes/+layout.svelte +++ b/sites/docs/src/routes/+layout.svelte @@ -47,13 +47,13 @@ }, AppBar: { classes: - 'bg-primary text-primary-content shadow-md [text-shadow:1px_1px_2px_theme(colors.primary-700)]', + 'bg-primary text-primary-content shadow-md [text-shadow:1px_1px_2px_var(--color-primary-700)]', }, NavItem: { classes: { root: 'text-sm text-surface-content/70 pl-6 py-2 hover:bg-surface-100/70 relative', active: - 'text-primary bg-surface-100 font-medium before:absolute before:bg-primary before:rounded-full before:w-1 before:h-2/3 before:left-[6px] shadow z-10', + 'text-primary bg-surface-100 font-medium before:absolute before:bg-primary before:rounded-full before:w-1 before:h-2/3 before:left-[6px] shadow-sm z-10', }, }, }, @@ -138,26 +138,14 @@ - +
- -
- LayerStack for Svelte 5 has been released! - - - Visit the preview docs - -
- +