@zentauri-ui/zentauri-components 2.1.3 → 2.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +8 -7
  2. package/cli/cli.integration.test.ts +44 -2
  3. package/cli/index.mjs +86 -23
  4. package/cli/props.json +14858 -0
  5. package/cli/props.test.ts +80 -0
  6. package/dist/{chunk-F6W3GJJ2.mjs → chunk-2UK6QZA6.mjs} +3 -3
  7. package/dist/{chunk-F6W3GJJ2.mjs.map → chunk-2UK6QZA6.mjs.map} +1 -1
  8. package/dist/{chunk-NNGL2AFQ.js → chunk-6KVTKYTB.js} +35 -35
  9. package/dist/{chunk-NNGL2AFQ.js.map → chunk-6KVTKYTB.js.map} +1 -1
  10. package/dist/{chunk-BOTDQV6U.mjs → chunk-BL6UVCV7.mjs} +4 -4
  11. package/dist/{chunk-BOTDQV6U.mjs.map → chunk-BL6UVCV7.mjs.map} +1 -1
  12. package/dist/{chunk-HVMYPW3Q.mjs → chunk-CZBM6ISF.mjs} +19 -6
  13. package/dist/chunk-CZBM6ISF.mjs.map +1 -0
  14. package/dist/chunk-D2GISTDL.js +19 -0
  15. package/dist/{chunk-SOYCLBHK.js.map → chunk-D2GISTDL.js.map} +1 -1
  16. package/dist/{chunk-6Q4EOLKN.js → chunk-NDF3HORF.js} +3 -3
  17. package/dist/{chunk-WIKNEHPJ.mjs.map → chunk-NDF3HORF.js.map} +1 -1
  18. package/dist/{chunk-UJPB5NHW.js → chunk-NZSZE36T.js} +18 -18
  19. package/dist/{chunk-UJPB5NHW.js.map → chunk-NZSZE36T.js.map} +1 -1
  20. package/dist/{chunk-BPSW3SRE.mjs → chunk-PAG5CTLN.mjs} +3 -3
  21. package/dist/{chunk-BPSW3SRE.mjs.map → chunk-PAG5CTLN.mjs.map} +1 -1
  22. package/dist/{chunk-GNQH247A.js → chunk-RENXBUZY.js} +6 -6
  23. package/dist/{chunk-GNQH247A.js.map → chunk-RENXBUZY.js.map} +1 -1
  24. package/dist/{chunk-APCN6NUH.js → chunk-SYEEHZXL.js} +23 -9
  25. package/dist/chunk-SYEEHZXL.js.map +1 -0
  26. package/dist/{chunk-EDJ6TVL3.js → chunk-UEE2ASYK.js} +12 -12
  27. package/dist/{chunk-EDJ6TVL3.js.map → chunk-UEE2ASYK.js.map} +1 -1
  28. package/dist/{chunk-2P4WPYC3.mjs → chunk-WBZKMSXW.mjs} +3 -3
  29. package/dist/{chunk-2P4WPYC3.mjs.map → chunk-WBZKMSXW.mjs.map} +1 -1
  30. package/dist/{chunk-COVTMJIQ.mjs → chunk-XFJIX2YP.mjs} +35 -35
  31. package/dist/{chunk-COVTMJIQ.mjs.map → chunk-XFJIX2YP.mjs.map} +1 -1
  32. package/dist/{chunk-WIKNEHPJ.mjs → chunk-ZBAKTM2R.mjs} +3 -3
  33. package/dist/chunk-ZBAKTM2R.mjs.map +1 -0
  34. package/dist/design-system/facade.js +4 -4
  35. package/dist/design-system/facade.mjs +3 -3
  36. package/dist/design-system/skeleton.d.ts +33 -33
  37. package/dist/design-system/toast.d.ts +1 -1
  38. package/dist/ui/buttons/animated.js +6 -6
  39. package/dist/ui/buttons/animated.mjs +4 -4
  40. package/dist/ui/buttons.js +7 -7
  41. package/dist/ui/buttons.mjs +5 -5
  42. package/dist/ui/dynamic-stepper.js +16 -16
  43. package/dist/ui/dynamic-stepper.mjs +5 -5
  44. package/dist/ui/pagination.js +12 -12
  45. package/dist/ui/pagination.mjs +4 -4
  46. package/dist/ui/skeleton/animated.js +9 -9
  47. package/dist/ui/skeleton/animated.mjs +2 -2
  48. package/dist/ui/skeleton.js +10 -10
  49. package/dist/ui/skeleton.mjs +2 -2
  50. package/dist/ui/toast/animated/toast-animated.d.ts.map +1 -1
  51. package/dist/ui/toast/animated.js +9 -9
  52. package/dist/ui/toast/animated.js.map +1 -1
  53. package/dist/ui/toast/animated.mjs +3 -3
  54. package/dist/ui/toast/animated.mjs.map +1 -1
  55. package/dist/ui/toast/toast-base.d.ts.map +1 -1
  56. package/dist/ui/toast/use-toast-portal.d.ts +11 -0
  57. package/dist/ui/toast/use-toast-portal.d.ts.map +1 -0
  58. package/dist/ui/toast.js +13 -13
  59. package/dist/ui/toast.mjs +2 -2
  60. package/package.json +5 -2
  61. package/src/design-system/skeleton.ts +33 -33
  62. package/src/design-system/toast.ts +1 -1
  63. package/src/ui/skeleton/skeleton.test.tsx +9 -0
  64. package/src/ui/toast/animated/toast-animated.tsx +3 -1
  65. package/src/ui/toast/toast-base.tsx +3 -1
  66. package/src/ui/toast/use-toast-portal.ts +29 -0
  67. package/dist/chunk-6Q4EOLKN.js.map +0 -1
  68. package/dist/chunk-APCN6NUH.js.map +0 -1
  69. package/dist/chunk-HVMYPW3Q.mjs.map +0 -1
  70. package/dist/chunk-SOYCLBHK.js +0 -19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zentauri-ui/zentauri-components",
3
- "version": "2.1.3",
3
+ "version": "2.1.5",
4
4
  "description": "React + Tailwind UI kit with charts, ESM/CJS builds, per-entry exports, and a zentauri-components / zentauri-ui CLI to vendor UI or hook source into your app",
5
5
  "keywords": [
6
6
  "react",
@@ -60,6 +60,7 @@
60
60
  "import": "./dist/design-system/facade.mjs",
61
61
  "require": "./dist/design-system/facade.js"
62
62
  },
63
+ "./props.json": "./cli/props.json",
63
64
  "./ui/*": {
64
65
  "types": "./dist/ui/*/index.d.ts",
65
66
  "import": "./dist/ui/*.mjs",
@@ -97,10 +98,12 @@
97
98
  "build:types": "tsc -p tsconfig.emit-types.json",
98
99
  "build": "npm run build:js && npm run build:types",
99
100
  "generate:registry": "node scripts/generate-registry.mjs",
101
+ "generate:props": "node scripts/generate-props.mjs",
100
102
  "update:test-health": "node scripts/update-test-health.mjs",
101
103
  "check:tokens": "node scripts/check-design-tokens.mjs",
104
+ "check:props": "node scripts/check-props.mjs",
102
105
  "check:exports": "node scripts/check-exports.mjs",
103
- "prepack": "npm run build && node scripts/generate-registry.mjs && node scripts/check-design-tokens.mjs && node scripts/check-exports.mjs",
106
+ "prepack": "npm run build && node scripts/generate-registry.mjs && node scripts/generate-props.mjs && node scripts/check-design-tokens.mjs && node scripts/check-props.mjs && node scripts/check-exports.mjs",
104
107
  "lint": "eslint .",
105
108
  "check-types": "tsc -p tsconfig.check-types.json --noEmit",
106
109
  "test": "vitest run",
@@ -62,25 +62,25 @@ export const zuiSkeletonAppearances = {
62
62
  "bg-[var(--zui-skeleton-subtle-bg,var(--zui-surface-muted,#00000012))] dark:bg-[var(--zui-skeleton-subtle-bg-dark,var(--zui-surface-muted-dark,#ffffff12))]",
63
63
  muted:
64
64
  "bg-[var(--zui-skeleton-muted-bg,var(--zui-fg-muted,oklch(92.9%_0.013_255.508_/_0.8)))] dark:bg-[var(--zui-skeleton-muted-bg-dark,var(--zui-fg-muted-dark,oklch(27.9%_0.041_260.031_/_0.8)))]",
65
- sky: "bg-[var(--zui-skeleton-sky-bg,color-mix(in oklch, var(--zui-color-sky,oklch(68.5%_0.169_237.323_/_0.1)) 10%, transparent))] dark:bg-[var(--zui-skeleton-sky-bg-dark,color-mix(in oklch, var(--zui-color-sky-dark,oklch(68.5%_0.169_237.323_/_0.1)) 18%, transparent))]",
66
- rose: "bg-[var(--zui-skeleton-rose-bg,color-mix(in oklch, var(--zui-color-rose,oklch(64.5%_0.246_16.439_/_0.1)) 10%, transparent))] dark:bg-[var(--zui-skeleton-rose-bg-dark,color-mix(in oklch, var(--zui-color-rose-dark,oklch(64.5%_0.246_16.439_/_0.1)) 18%, transparent))]",
65
+ sky: "bg-[var(--zui-skeleton-sky-bg,color-mix(in_oklch,var(--zui-color-sky,oklch(68.5%_0.169_237.323))_10%,transparent))] dark:bg-[var(--zui-skeleton-sky-bg-dark,color-mix(in_oklch,var(--zui-color-sky-dark,oklch(68.5%_0.169_237.323))_18%,transparent))]",
66
+ rose: "bg-[var(--zui-skeleton-rose-bg,color-mix(in_oklch,var(--zui-color-rose,oklch(64.5%_0.246_16.439))_10%,transparent))] dark:bg-[var(--zui-skeleton-rose-bg-dark,color-mix(in_oklch,var(--zui-color-rose-dark,oklch(64.5%_0.246_16.439))_18%,transparent))]",
67
67
  purple:
68
- "bg-[var(--zui-skeleton-purple-bg,color-mix(in oklch, var(--zui-color-purple,oklch(62.7%_0.265_303.9_/_0.1)) 10%, transparent))] dark:bg-[var(--zui-skeleton-purple-bg-dark,color-mix(in oklch, var(--zui-color-purple-dark,oklch(62.7%_0.265_303.9_/_0.1)) 18%, transparent))]",
69
- pink: "bg-[var(--zui-skeleton-pink-bg,color-mix(in oklch, var(--zui-color-pink,oklch(65.6%_0.241_354.308_/_0.1)) 10%, transparent))] dark:bg-[var(--zui-skeleton-pink-bg-dark,color-mix(in oklch, var(--zui-color-pink-dark,oklch(65.6%_0.241_354.308_/_0.1)) 18%, transparent))]",
68
+ "bg-[var(--zui-skeleton-purple-bg,color-mix(in_oklch,var(--zui-color-purple,oklch(62.7%_0.265_303.9))_10%,transparent))] dark:bg-[var(--zui-skeleton-purple-bg-dark,color-mix(in_oklch,var(--zui-color-purple-dark,oklch(62.7%_0.265_303.9))_18%,transparent))]",
69
+ pink: "bg-[var(--zui-skeleton-pink-bg,color-mix(in_oklch,var(--zui-color-pink,oklch(65.6%_0.241_354.308))_10%,transparent))] dark:bg-[var(--zui-skeleton-pink-bg-dark,color-mix(in_oklch,var(--zui-color-pink-dark,oklch(65.6%_0.241_354.308))_18%,transparent))]",
70
70
  orange:
71
- "bg-[var(--zui-skeleton-orange-bg,color-mix(in oklch, var(--zui-color-orange,oklch(70.5%_0.213_47.604_/_0.1)) 10%, transparent))] dark:bg-[var(--zui-skeleton-orange-bg-dark,color-mix(in oklch, var(--zui-color-orange-dark,oklch(70.5%_0.213_47.604_/_0.1)) 18%, transparent))]",
71
+ "bg-[var(--zui-skeleton-orange-bg,color-mix(in_oklch,var(--zui-color-orange,oklch(70.5%_0.213_47.604))_10%,transparent))] dark:bg-[var(--zui-skeleton-orange-bg-dark,color-mix(in_oklch,var(--zui-color-orange-dark,oklch(70.5%_0.213_47.604))_18%,transparent))]",
72
72
  yellow:
73
- "bg-[var(--zui-skeleton-yellow-bg,color-mix(in oklch, var(--zui-color-yellow,oklch(79.5%_0.184_86.047_/_0.1)) 10%, transparent))] dark:bg-[var(--zui-skeleton-yellow-bg-dark,color-mix(in oklch, var(--zui-color-yellow-dark,oklch(79.5%_0.184_86.047_/_0.1)) 18%, transparent))]",
74
- teal: "bg-[var(--zui-skeleton-teal-bg,color-mix(in oklch, var(--zui-color-teal,oklch(70.4%_0.14_182.503_/_0.1)) 10%, transparent))] dark:bg-[var(--zui-skeleton-teal-bg-dark,color-mix(in oklch, var(--zui-color-teal-dark,oklch(70.4%_0.14_182.503_/_0.1)) 18%, transparent))]",
73
+ "bg-[var(--zui-skeleton-yellow-bg,color-mix(in_oklch,var(--zui-color-yellow,oklch(79.5%_0.184_86.047))_10%,transparent))] dark:bg-[var(--zui-skeleton-yellow-bg-dark,color-mix(in_oklch,var(--zui-color-yellow-dark,oklch(79.5%_0.184_86.047))_18%,transparent))]",
74
+ teal: "bg-[var(--zui-skeleton-teal-bg,color-mix(in_oklch,var(--zui-color-teal,oklch(70.4%_0.14_182.503))_10%,transparent))] dark:bg-[var(--zui-skeleton-teal-bg-dark,color-mix(in_oklch,var(--zui-color-teal-dark,oklch(70.4%_0.14_182.503))_18%,transparent))]",
75
75
  indigo:
76
- "bg-[var(--zui-skeleton-indigo-bg,color-mix(in oklch, var(--zui-color-indigo,oklch(58.5%_0.233_277.117_/_0.1)) 10%, transparent))] dark:bg-[var(--zui-skeleton-indigo-bg-dark,color-mix(in oklch, var(--zui-color-indigo-dark,oklch(58.5%_0.233_277.117_/_0.1)) 18%, transparent))]",
76
+ "bg-[var(--zui-skeleton-indigo-bg,color-mix(in_oklch,var(--zui-color-indigo,oklch(58.5%_0.233_277.117))_10%,transparent))] dark:bg-[var(--zui-skeleton-indigo-bg-dark,color-mix(in_oklch,var(--zui-color-indigo-dark,oklch(58.5%_0.233_277.117))_18%,transparent))]",
77
77
  emerald:
78
- "bg-[var(--zui-skeleton-emerald-bg,color-mix(in oklch, var(--zui-color-emerald,oklch(69.6%_0.17_162.48_/_0.1)) 10%, transparent))] dark:bg-[var(--zui-skeleton-emerald-bg-dark,color-mix(in oklch, var(--zui-color-emerald-dark,oklch(69.6%_0.17_162.48_/_0.1)) 18%, transparent))]",
79
- gray: "bg-[var(--zui-skeleton-gray-bg,color-mix(in oklch, var(--zui-color-gray,oklch(55.1%_0.027_264.364_/_0.1)) 10%, transparent))] dark:bg-[var(--zui-skeleton-gray-bg-dark,color-mix(in oklch, var(--zui-color-gray-dark,oklch(55.1%_0.027_264.364_/_0.1)) 18%, transparent))]",
78
+ "bg-[var(--zui-skeleton-emerald-bg,color-mix(in_oklch,var(--zui-color-emerald,oklch(69.6%_0.17_162.48))_10%,transparent))] dark:bg-[var(--zui-skeleton-emerald-bg-dark,color-mix(in_oklch,var(--zui-color-emerald-dark,oklch(69.6%_0.17_162.48))_18%,transparent))]",
79
+ gray: "bg-[var(--zui-skeleton-gray-bg,color-mix(in_oklch,var(--zui-color-gray,oklch(55.1%_0.027_264.364))_10%,transparent))] dark:bg-[var(--zui-skeleton-gray-bg-dark,color-mix(in_oklch,var(--zui-color-gray-dark,oklch(55.1%_0.027_264.364))_18%,transparent))]",
80
80
  amber:
81
- "bg-[var(--zui-skeleton-amber-bg,color-mix(in oklch, var(--zui-color-amber,oklch(76.9%_0.188_70.08_/_0.1)) 10%, transparent))] dark:bg-[var(--zui-skeleton-amber-bg-dark,color-mix(in oklch, var(--zui-color-amber-dark,oklch(76.9%_0.188_70.08_/_0.1)) 18%, transparent))]",
81
+ "bg-[var(--zui-skeleton-amber-bg,color-mix(in_oklch,var(--zui-color-amber,oklch(76.9%_0.188_70.08))_10%,transparent))] dark:bg-[var(--zui-skeleton-amber-bg-dark,color-mix(in_oklch,var(--zui-color-amber-dark,oklch(76.9%_0.188_70.08))_18%,transparent))]",
82
82
  violet:
83
- "bg-[var(--zui-skeleton-violet-bg,color-mix(in oklch, var(--zui-color-violet,oklch(60.6%_0.25_292.717_/_0.1)) 10%, transparent))] dark:bg-[var(--zui-skeleton-violet-bg-dark,color-mix(in oklch, var(--zui-color-violet-dark,oklch(60.6%_0.25_292.717_/_0.1)) 18%, transparent))]",
83
+ "bg-[var(--zui-skeleton-violet-bg,color-mix(in_oklch,var(--zui-color-violet,oklch(60.6%_0.25_292.717))_10%,transparent))] dark:bg-[var(--zui-skeleton-violet-bg-dark,color-mix(in_oklch,var(--zui-color-violet-dark,oklch(60.6%_0.25_292.717))_18%,transparent))]",
84
84
  "gradient-blue":
85
85
  "bg-linear-to-r from-[var(--zui-skeleton-gradient-blue-from,var(--zui-color-blue,oklch(42.4%_0.199_265.638)))] dark:from-[var(--zui-skeleton-gradient-blue-from-dark,var(--zui-color-blue-dark,oklch(54.6%_0.245_262.881)))] to-[var(--zui-skeleton-gradient-blue-to,var(--zui-color-purple,oklch(43.8%_0.218_303.724)))] dark:to-[var(--zui-skeleton-gradient-blue-to-dark,var(--zui-color-purple-dark,oklch(55.8%_0.288_302.321)))]",
86
86
  "gradient-green":
@@ -99,39 +99,39 @@ export const zuiSkeletonAppearances = {
99
99
  "bg-linear-to-r from-[var(--zui-skeleton-gradient-pink-from,var(--zui-color-pink,oklch(45.9%_0.187_3.815)))] dark:from-[var(--zui-skeleton-gradient-pink-from-dark,var(--zui-color-pink-dark,oklch(59.2%_0.249_0.584)))] to-[var(--zui-skeleton-gradient-pink-to,var(--zui-color-rose,oklch(45.5%_0.188_13.697)))] dark:to-[var(--zui-skeleton-gradient-pink-to-dark,var(--zui-color-rose-dark,oklch(58.6%_0.253_17.585)))]",
100
100
  "gradient-orange":
101
101
  "bg-linear-to-r from-[var(--zui-skeleton-gradient-orange-from,var(--zui-color-orange,oklch(47%_0.157_37.304)))] dark:from-[var(--zui-skeleton-gradient-orange-from-dark,var(--zui-color-orange-dark,oklch(64.6%_0.222_41.116)))] to-[var(--zui-skeleton-gradient-orange-to,var(--zui-color-red,oklch(44.4%_0.177_26.899)))] dark:to-[var(--zui-skeleton-gradient-orange-to-dark,var(--zui-color-red-dark,oklch(57.7%_0.245_27.325)))]",
102
- blue: "bg-[var(--zui-skeleton-blue-bg,color-mix(in oklch, var(--zui-color-blue,#2563eb) 10%, transparent))] dark:bg-[var(--zui-skeleton-blue-bg-dark,color-mix(in oklch, var(--zui-color-blue-dark,#3b82f6) 18%, transparent))]",
103
- cyan: "bg-[var(--zui-skeleton-cyan-bg,color-mix(in oklch, var(--zui-color-cyan,#0891b2) 10%, transparent))] dark:bg-[var(--zui-skeleton-cyan-bg-dark,color-mix(in oklch, var(--zui-color-cyan-dark,#22d3ee) 18%, transparent))]",
102
+ blue: "bg-[var(--zui-skeleton-blue-bg,color-mix(in_oklch,var(--zui-color-blue,#2563eb)_10%,transparent))] dark:bg-[var(--zui-skeleton-blue-bg-dark,color-mix(in_oklch,var(--zui-color-blue-dark,#3b82f6)_18%,transparent))]",
103
+ cyan: "bg-[var(--zui-skeleton-cyan-bg,color-mix(in_oklch,var(--zui-color-cyan,#0891b2)_10%,transparent))] dark:bg-[var(--zui-skeleton-cyan-bg-dark,color-mix(in_oklch,var(--zui-color-cyan-dark,#22d3ee)_18%,transparent))]",
104
104
  green:
105
- "bg-[var(--zui-skeleton-green-bg,color-mix(in oklch, var(--zui-color-green,#16a34a) 10%, transparent))] dark:bg-[var(--zui-skeleton-green-bg-dark,color-mix(in oklch, var(--zui-color-green-dark,#22c55e) 18%, transparent))]",
106
- lime: "bg-[var(--zui-skeleton-lime-bg,color-mix(in oklch, var(--zui-color-lime,#65a30d) 10%, transparent))] dark:bg-[var(--zui-skeleton-lime-bg-dark,color-mix(in oklch, var(--zui-color-lime-dark,#a3e635) 18%, transparent))]",
107
- mint: "bg-[var(--zui-skeleton-mint-bg,color-mix(in oklch, var(--zui-color-mint,#10b981) 10%, transparent))] dark:bg-[var(--zui-skeleton-mint-bg-dark,color-mix(in oklch, var(--zui-color-mint-dark,#6ee7b7) 18%, transparent))]",
105
+ "bg-[var(--zui-skeleton-green-bg,color-mix(in_oklch,var(--zui-color-green,#16a34a)_10%,transparent))] dark:bg-[var(--zui-skeleton-green-bg-dark,color-mix(in_oklch,var(--zui-color-green-dark,#22c55e)_18%,transparent))]",
106
+ lime: "bg-[var(--zui-skeleton-lime-bg,color-mix(in_oklch,var(--zui-color-lime,#65a30d)_10%,transparent))] dark:bg-[var(--zui-skeleton-lime-bg-dark,color-mix(in_oklch,var(--zui-color-lime-dark,#a3e635)_18%,transparent))]",
107
+ mint: "bg-[var(--zui-skeleton-mint-bg,color-mix(in_oklch,var(--zui-color-mint,#10b981)_10%,transparent))] dark:bg-[var(--zui-skeleton-mint-bg-dark,color-mix(in_oklch,var(--zui-color-mint-dark,#6ee7b7)_18%,transparent))]",
108
108
  ocean:
109
- "bg-[var(--zui-skeleton-ocean-bg,color-mix(in oklch, var(--zui-color-ocean,#0284c7) 10%, transparent))] dark:bg-[var(--zui-skeleton-ocean-bg-dark,color-mix(in oklch, var(--zui-color-ocean-dark,#38bdf8) 18%, transparent))]",
109
+ "bg-[var(--zui-skeleton-ocean-bg,color-mix(in_oklch,var(--zui-color-ocean,#0284c7)_10%,transparent))] dark:bg-[var(--zui-skeleton-ocean-bg-dark,color-mix(in_oklch,var(--zui-color-ocean-dark,#38bdf8)_18%,transparent))]",
110
110
  sapphire:
111
- "bg-[var(--zui-skeleton-sapphire-bg,color-mix(in oklch, var(--zui-color-sapphire,#1d4ed8) 10%, transparent))] dark:bg-[var(--zui-skeleton-sapphire-bg-dark,color-mix(in oklch, var(--zui-color-sapphire-dark,#60a5fa) 18%, transparent))]",
111
+ "bg-[var(--zui-skeleton-sapphire-bg,color-mix(in_oklch,var(--zui-color-sapphire,#1d4ed8)_10%,transparent))] dark:bg-[var(--zui-skeleton-sapphire-bg-dark,color-mix(in_oklch,var(--zui-color-sapphire-dark,#60a5fa)_18%,transparent))]",
112
112
  lavender:
113
- "bg-[var(--zui-skeleton-lavender-bg,color-mix(in oklch, var(--zui-color-lavender,#8b5cf6) 10%, transparent))] dark:bg-[var(--zui-skeleton-lavender-bg-dark,color-mix(in oklch, var(--zui-color-lavender-dark,#a78bfa) 18%, transparent))]",
114
- ruby: "bg-[var(--zui-skeleton-ruby-bg,color-mix(in oklch, var(--zui-color-ruby,#be123c) 10%, transparent))] dark:bg-[var(--zui-skeleton-ruby-bg-dark,color-mix(in oklch, var(--zui-color-ruby-dark,#fb7185) 18%, transparent))]",
115
- red: "bg-[var(--zui-skeleton-red-bg,color-mix(in oklch, var(--zui-color-red,#dc2626) 10%, transparent))] dark:bg-[var(--zui-skeleton-red-bg-dark,color-mix(in oklch, var(--zui-color-red-dark,#ef4444) 18%, transparent))]",
113
+ "bg-[var(--zui-skeleton-lavender-bg,color-mix(in_oklch,var(--zui-color-lavender,#8b5cf6)_10%,transparent))] dark:bg-[var(--zui-skeleton-lavender-bg-dark,color-mix(in_oklch,var(--zui-color-lavender-dark,#a78bfa)_18%,transparent))]",
114
+ ruby: "bg-[var(--zui-skeleton-ruby-bg,color-mix(in_oklch,var(--zui-color-ruby,#be123c)_10%,transparent))] dark:bg-[var(--zui-skeleton-ruby-bg-dark,color-mix(in_oklch,var(--zui-color-ruby-dark,#fb7185)_18%,transparent))]",
115
+ red: "bg-[var(--zui-skeleton-red-bg,color-mix(in_oklch,var(--zui-color-red,#dc2626)_10%,transparent))] dark:bg-[var(--zui-skeleton-red-bg-dark,color-mix(in_oklch,var(--zui-color-red-dark,#ef4444)_18%,transparent))]",
116
116
  slate:
117
- "bg-[var(--zui-skeleton-slate-bg,color-mix(in oklch, var(--zui-color-slate,#475569) 10%, transparent))] dark:bg-[var(--zui-skeleton-slate-bg-dark,color-mix(in oklch, var(--zui-color-slate-dark,#64748b) 18%, transparent))]",
118
- zinc: "bg-[var(--zui-skeleton-zinc-bg,color-mix(in oklch, var(--zui-color-zinc,#52525b) 10%, transparent))] dark:bg-[var(--zui-skeleton-zinc-bg-dark,color-mix(in oklch, var(--zui-color-zinc-dark,#71717a) 18%, transparent))]",
117
+ "bg-[var(--zui-skeleton-slate-bg,color-mix(in_oklch,var(--zui-color-slate,#475569)_10%,transparent))] dark:bg-[var(--zui-skeleton-slate-bg-dark,color-mix(in_oklch,var(--zui-color-slate-dark,#64748b)_18%,transparent))]",
118
+ zinc: "bg-[var(--zui-skeleton-zinc-bg,color-mix(in_oklch,var(--zui-color-zinc,#52525b)_10%,transparent))] dark:bg-[var(--zui-skeleton-zinc-bg-dark,color-mix(in_oklch,var(--zui-color-zinc-dark,#71717a)_18%,transparent))]",
119
119
  stone:
120
- "bg-[var(--zui-skeleton-stone-bg,color-mix(in oklch, var(--zui-color-stone,#57534e) 10%, transparent))] dark:bg-[var(--zui-skeleton-stone-bg-dark,color-mix(in oklch, var(--zui-color-stone-dark,#78716c) 18%, transparent))]",
120
+ "bg-[var(--zui-skeleton-stone-bg,color-mix(in_oklch,var(--zui-color-stone,#57534e)_10%,transparent))] dark:bg-[var(--zui-skeleton-stone-bg-dark,color-mix(in_oklch,var(--zui-color-stone-dark,#78716c)_18%,transparent))]",
121
121
  royal:
122
- "bg-[var(--zui-skeleton-royal-bg,color-mix(in oklch, var(--zui-color-royal,#4338ca) 10%, transparent))] dark:bg-[var(--zui-skeleton-royal-bg-dark,color-mix(in oklch, var(--zui-color-royal-dark,#818cf8) 18%, transparent))]",
122
+ "bg-[var(--zui-skeleton-royal-bg,color-mix(in_oklch,var(--zui-color-royal,#4338ca)_10%,transparent))] dark:bg-[var(--zui-skeleton-royal-bg-dark,color-mix(in_oklch,var(--zui-color-royal-dark,#818cf8)_18%,transparent))]",
123
123
  electric:
124
- "bg-[var(--zui-skeleton-electric-bg,color-mix(in oklch, var(--zui-color-electric,#0ea5e9) 10%, transparent))] dark:bg-[var(--zui-skeleton-electric-bg-dark,color-mix(in oklch, var(--zui-color-electric-dark,#38bdf8) 18%, transparent))]",
124
+ "bg-[var(--zui-skeleton-electric-bg,color-mix(in_oklch,var(--zui-color-electric,#0ea5e9)_10%,transparent))] dark:bg-[var(--zui-skeleton-electric-bg-dark,color-mix(in_oklch,var(--zui-color-electric-dark,#38bdf8)_18%,transparent))]",
125
125
  forest:
126
- "bg-[var(--zui-skeleton-forest-bg,color-mix(in oklch, var(--zui-color-forest,#166534) 10%, transparent))] dark:bg-[var(--zui-skeleton-forest-bg-dark,color-mix(in oklch, var(--zui-color-forest-dark,#4ade80) 18%, transparent))]",
126
+ "bg-[var(--zui-skeleton-forest-bg,color-mix(in_oklch,var(--zui-color-forest,#166534)_10%,transparent))] dark:bg-[var(--zui-skeleton-forest-bg-dark,color-mix(in_oklch,var(--zui-color-forest-dark,#4ade80)_18%,transparent))]",
127
127
  sunset:
128
- "bg-[var(--zui-skeleton-sunset-bg,color-mix(in oklch, var(--zui-color-sunset,#ea580c) 10%, transparent))] dark:bg-[var(--zui-skeleton-sunset-bg-dark,color-mix(in oklch, var(--zui-color-sunset-dark,#fb923c) 18%, transparent))]",
128
+ "bg-[var(--zui-skeleton-sunset-bg,color-mix(in_oklch,var(--zui-color-sunset,#ea580c)_10%,transparent))] dark:bg-[var(--zui-skeleton-sunset-bg-dark,color-mix(in_oklch,var(--zui-color-sunset-dark,#fb923c)_18%,transparent))]",
129
129
  magenta:
130
- "bg-[var(--zui-skeleton-magenta-bg,color-mix(in oklch, var(--zui-color-magenta,#c026d3) 10%, transparent))] dark:bg-[var(--zui-skeleton-magenta-bg-dark,color-mix(in oklch, var(--zui-color-magenta-dark,#e879f9) 18%, transparent))]",
130
+ "bg-[var(--zui-skeleton-magenta-bg,color-mix(in_oklch,var(--zui-color-magenta,#c026d3)_10%,transparent))] dark:bg-[var(--zui-skeleton-magenta-bg-dark,color-mix(in_oklch,var(--zui-color-magenta-dark,#e879f9)_18%,transparent))]",
131
131
  crimson:
132
- "bg-[var(--zui-skeleton-crimson-bg,color-mix(in oklch, var(--zui-color-crimson,#b91c1c) 10%, transparent))] dark:bg-[var(--zui-skeleton-crimson-bg-dark,color-mix(in oklch, var(--zui-color-crimson-dark,#f87171) 18%, transparent))]",
133
- aqua: "bg-[var(--zui-skeleton-aqua-bg,color-mix(in oklch, var(--zui-color-aqua,#0f766e) 10%, transparent))] dark:bg-[var(--zui-skeleton-aqua-bg-dark,color-mix(in oklch, var(--zui-color-aqua-dark,#2dd4bf) 18%, transparent))]",
134
- plum: "bg-[var(--zui-skeleton-plum-bg,color-mix(in oklch, var(--zui-color-plum,#7e22ce) 10%, transparent))] dark:bg-[var(--zui-skeleton-plum-bg-dark,color-mix(in oklch, var(--zui-color-plum-dark,#c084fc) 18%, transparent))]",
132
+ "bg-[var(--zui-skeleton-crimson-bg,color-mix(in_oklch,var(--zui-color-crimson,#b91c1c)_10%,transparent))] dark:bg-[var(--zui-skeleton-crimson-bg-dark,color-mix(in_oklch,var(--zui-color-crimson-dark,#f87171)_18%,transparent))]",
133
+ aqua: "bg-[var(--zui-skeleton-aqua-bg,color-mix(in_oklch,var(--zui-color-aqua,#0f766e)_10%,transparent))] dark:bg-[var(--zui-skeleton-aqua-bg-dark,color-mix(in_oklch,var(--zui-color-aqua-dark,#2dd4bf)_18%,transparent))]",
134
+ plum: "bg-[var(--zui-skeleton-plum-bg,color-mix(in_oklch,var(--zui-color-plum,#7e22ce)_10%,transparent))] dark:bg-[var(--zui-skeleton-plum-bg-dark,color-mix(in_oklch,var(--zui-color-plum-dark,#c084fc)_18%,transparent))]",
135
135
  } as const;
136
136
 
137
137
  export const zuiSkeletonSizes = {
@@ -24,7 +24,7 @@ export const zuiToastRootAppearances = {
24
24
  "border-[color:var(--zui-toast-root-error-border,var(--zui-status-error,oklch(64.5%_0.246_16.439_/_0.5)))] dark:border-[color:var(--zui-toast-root-error-border-dark,var(--zui-status-error-dark,oklch(64.5%_0.246_16.439_/_0.5)))] bg-[var(--zui-toast-root-error-bg,var(--zui-status-error,oklch(27.1%_0.105_12.094)))] dark:bg-[var(--zui-toast-root-error-bg-dark,var(--zui-status-error-dark,oklch(27.1%_0.105_12.094)))] text-[color:var(--zui-toast-root-error-fg,var(--zui-fg,oklch(96.9%_0.015_12.422)))] dark:text-[color:var(--zui-toast-root-error-fg-dark,var(--zui-fg-dark,oklch(96.9%_0.015_12.422)))]",
25
25
  info: "border-[color:var(--zui-toast-root-info-border,var(--zui-status-info,oklch(68.5%_0.169_237.323_/_0.4)))] dark:border-[color:var(--zui-toast-root-info-border-dark,var(--zui-status-info-dark,oklch(68.5%_0.169_237.323_/_0.4)))] bg-[var(--zui-toast-root-info-bg,var(--zui-status-info,oklch(29.3%_0.066_243.157)))] dark:bg-[var(--zui-toast-root-info-bg-dark,var(--zui-status-info-dark,oklch(29.3%_0.066_243.157)))] text-[color:var(--zui-toast-root-info-fg,var(--zui-brand-fg,oklch(97.7%_0.013_236.62)))] dark:text-[color:var(--zui-toast-root-info-fg-dark,var(--zui-brand-fg-dark,oklch(97.7%_0.013_236.62)))]",
26
26
  ghost:
27
- "border-[color:var(--zui-toast-root-ghost-border,transparent)] dark:border-[color:var(--zui-toast-root-ghost-border-dark,transparent)] bg-[var(--zui-toast-root-ghost-bg,transparent)] dark:bg-[var(--zui-toast-root-ghost-bg-dark,transparent)] text-[color:var(--zui-toast-root-ghost-fg,var(--zui-fg-muted,oklch(20.8%_0.042_265.755)))] dark:text-[color:var(--zui-toast-root-ghost-fg-dark,var(--zui-fg-muted-dark,oklch(20.8%_0.042_265.755)))]",
27
+ "border-[color:var(--zui-toast-root-ghost-border,transparent)] dark:border-[color:var(--zui-toast-root-ghost-border-dark,transparent)] bg-[var(--zui-toast-root-ghost-bg,transparent)] dark:bg-[var(--zui-toast-root-ghost-bg-dark,transparent)] text-[color:var(--zui-toast-root-ghost-fg,var(--zui-fg-muted,oklch(20.8%_0.042_265.755)))] dark:text-[color:var(--zui-toast-root-ghost-fg-dark,var(--zui-fg-muted-dark,oklch(70.4%_0.04_256.788)))]",
28
28
  purple:
29
29
  "border-[color:var(--zui-toast-root-purple-border,var(--zui-color-purple,oklch(43.8%_0.218_303.724)))] dark:border-[color:var(--zui-toast-root-purple-border-dark,var(--zui-color-purple-dark,oklch(55.8%_0.288_302.321)))] bg-[var(--zui-toast-root-purple-bg,var(--zui-color-purple,oklch(29.1%_0.149_302.717)))] dark:bg-[var(--zui-toast-root-purple-bg-dark,var(--zui-color-purple-dark,oklch(29.1%_0.149_302.717)))] backdrop-blur-xl text-[color:var(--zui-toast-root-purple-fg,var(--zui-fg,oklch(97.7%_0.014_308.299)))] dark:text-[color:var(--zui-toast-root-purple-fg-dark,var(--zui-fg-dark,oklch(97.7%_0.014_308.299)))]",
30
30
  pink: "border-[color:var(--zui-toast-root-pink-border,var(--zui-color-pink,oklch(45.9%_0.187_3.815)))] dark:border-[color:var(--zui-toast-root-pink-border-dark,var(--zui-color-pink-dark,oklch(59.2%_0.249_0.584)))] bg-[var(--zui-toast-root-pink-bg,var(--zui-color-pink,oklch(28.4%_0.109_3.907)))] dark:bg-[var(--zui-toast-root-pink-bg-dark,var(--zui-color-pink-dark,oklch(28.4%_0.109_3.907)))] backdrop-blur-xl text-[color:var(--zui-toast-root-pink-fg,var(--zui-fg,oklch(97.1%_0.014_343.198)))] dark:text-[color:var(--zui-toast-root-pink-fg-dark,var(--zui-fg-dark,oklch(97.1%_0.014_343.198)))]",
@@ -40,6 +40,15 @@ describe("Skeleton", () => {
40
40
  ).not.toMatch(/animate-pulse/);
41
41
  });
42
42
 
43
+ it("should keep colored static appearances in one Tailwind arbitrary class", () => {
44
+ const { container } = render(
45
+ <Skeleton appearance="indigo" animation="none" />,
46
+ );
47
+ const root = container.querySelector('[data-slot="skeleton"]');
48
+ expect(root?.className).toContain("color-mix(in_oklch");
49
+ expect(root?.className).not.toContain("color-mix(in oklch");
50
+ });
51
+
43
52
  it("should render the requested number of text lines", () => {
44
53
  const { container } = render(<SkeletonText lines={4} />);
45
54
  const root = container.querySelector('[data-slot="skeleton-text"]');
@@ -8,6 +8,7 @@ import { cn } from "../../../lib/utils";
8
8
 
9
9
  import { toastAnimationPresets } from "./animations";
10
10
  import type { ToastProps, ToastViewportProps } from "../types";
11
+ import { useToastPortal } from "../use-toast-portal";
11
12
  import { toastRootVariants, toastViewportVariants } from "../variants";
12
13
  import {
13
14
  ToastClose,
@@ -21,13 +22,14 @@ export function ToastViewportAnimated({
21
22
  className,
22
23
  }: ToastViewportProps) {
23
24
  const ctx = useContext(ToastStoreContext);
25
+ const portalTarget = useToastPortal();
26
+
24
27
  if (!ctx) {
25
28
  throw new Error(
26
29
  "ToastViewportAnimated must be used within <ToastProvider>",
27
30
  );
28
31
  }
29
32
 
30
- const portalTarget = typeof document !== "undefined" ? document.body : null;
31
33
  if (!portalTarget) {
32
34
  return null;
33
35
  }
@@ -23,6 +23,7 @@ import type {
23
23
  ToastSectionProps,
24
24
  ToastViewportProps,
25
25
  } from "./types";
26
+ import { useToastPortal } from "./use-toast-portal";
26
27
  import { toastRootVariants, toastViewportVariants } from "./variants";
27
28
 
28
29
  export const ToastStoreContext = createContext<ToastStoreContextValue | null>(
@@ -107,11 +108,12 @@ export function ToastViewport({
107
108
  className,
108
109
  }: ToastViewportProps) {
109
110
  const ctx = useContext(ToastStoreContext);
111
+ const portalTarget = useToastPortal();
112
+
110
113
  if (!ctx) {
111
114
  throw new Error("ToastViewport must be used within <ToastProvider>");
112
115
  }
113
116
 
114
- const portalTarget = typeof document !== "undefined" ? document.body : null;
115
117
  if (!portalTarget) {
116
118
  return null;
117
119
  }
@@ -0,0 +1,29 @@
1
+ "use client";
2
+
3
+ import { useEffect, useState } from "react";
4
+
5
+ /**
6
+ * Creates a dedicated portal target appended to `document.body` for rendering
7
+ * toasts, and removes it on unmount. Shared by both the static
8
+ * (`ToastViewport`) and animated (`ToastViewportAnimated`) viewports so the
9
+ * portal lifecycle stays in one place.
10
+ *
11
+ * Returns `null` until the target exists (i.e. after the first client effect),
12
+ * so callers should bail out of rendering the portal while it is `null`.
13
+ */
14
+ export function useToastPortal(): HTMLElement | null {
15
+ const [portalTarget, setPortalTarget] = useState<HTMLElement | null>(null);
16
+
17
+ useEffect(() => {
18
+ const target = document.createElement("div");
19
+ target.setAttribute("data-zui-toast-portal", "");
20
+ document.body.appendChild(target);
21
+ setPortalTarget(target);
22
+
23
+ return () => {
24
+ target.remove();
25
+ };
26
+ }, []);
27
+
28
+ return portalTarget;
29
+ }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/design-system/toast.ts"],"names":[],"mappings":";;;AAAO,IAAM,oBAAA,GACX;AAEK,IAAM,yBAAA,GAA4B;AAAA,EACvC,UAAA,EAAY,0BAAA;AAAA,EACZ,YAAA,EAAc,8CAAA;AAAA,EACd,WAAA,EAAa,yBAAA;AAAA,EACb,aAAA,EAAe,6BAAA;AAAA,EACf,eAAA,EAAiB,iDAAA;AAAA,EACjB,cAAA,EAAgB;AAClB;AAEO,IAAM,gBAAA,GACX;AAEK,IAAM,uBAAA,GAA0B;AAAA,EACrC,OAAA,EACE,iYAAA;AAAA,EACF,OAAA,EACE,4mBAAA;AAAA,EACF,OAAA,EACE,wmBAAA;AAAA,EACF,KAAA,EACE,slBAAA;AAAA,EACF,IAAA,EAAM,4lBAAA;AAAA,EACN,KAAA,EACE,sbAAA;AAAA,EACF,MAAA,EACE,umBAAA;AAAA,EACF,IAAA,EAAM,2kBAAA;AAAA,EACN,MAAA,EACE,2lBAAA;AAAA,EACF,MAAA,EACE,mmBAAA;AAAA,EACF,IAAA,EAAM,+kBAAA;AAAA,EACN,MAAA,EACE,qmBAAA;AAAA,EACF,OAAA,EACE,inBAAA;AAAA,EACF,IAAA,EAAM,8kBAAA;AAAA,EACN,KAAA,EACE,ulBAAA;AAAA,EACF,MAAA,EACE,umBAAA;AAAA,EACF,eAAA,EACE,8qBAAA;AAAA,EACF,gBAAA,EACE,srBAAA;AAAA,EACF,cAAA,EACE,2pBAAA;AAAA,EACF,iBAAA,EACE,6rBAAA;AAAA,EACF,iBAAA,EACE,8rBAAA;AAAA,EACF,eAAA,EACE,yqBAAA;AAAA,EACF,iBAAA,EACE,msBAAA;AAAA,EACF,eAAA,EACE,oqBAAA;AAAA,EACF,iBAAA,EACE,mrBAAA;AAAA,EACF,IAAA,EAAM,8dAAA;AAAA,EACN,IAAA,EAAM,keAAA;AAAA,EACN,KAAA,EACE,0eAAA;AAAA,EACF,IAAA,EAAM,keAAA;AAAA,EACN,IAAA,EAAM,keAAA;AAAA,EACN,KAAA,EACE,weAAA;AAAA,EACF,QAAA,EACE,ggBAAA;AAAA,EACF,QAAA,EACE,kgBAAA;AAAA,EACF,IAAA,EAAM,8dAAA;AAAA,EACN,GAAA,EAAK,odAAA;AAAA,EACL,KAAA,EACE,oeAAA;AAAA,EACF,IAAA,EAAM,odAAA;AAAA,EACN,KAAA,EACE,wdAAA;AAAA,EACF,KAAA,EACE,weAAA;AAAA,EACF,QAAA,EACE,ggBAAA;AAAA,EACF,MAAA,EACE,kfAAA;AAAA,EACF,MAAA,EACE,0eAAA;AAAA,EACF,OAAA,EACE,4eAAA;AAAA,EACF,OAAA,EACE,sfAAA;AAAA,EACF,IAAA,EAAM,geAAA;AAAA,EACN,IAAA,EAAM;AACR;AAEO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI;AACN","file":"chunk-6Q4EOLKN.js","sourcesContent":["export const zuiToastViewportBase =\n \"fixed z-[60] flex max-h-screen flex-col gap-2 p-4\";\n\nexport const zuiToastViewportPositions = {\n \"top-left\": \"left-0 top-0 items-start\",\n \"top-center\": \"left-1/2 top-0 -translate-x-1/2 items-center\",\n \"top-right\": \"right-0 top-0 items-end\",\n \"bottom-left\": \"bottom-0 left-0 items-start\",\n \"bottom-center\": \"bottom-0 left-1/2 -translate-x-1/2 items-center\",\n \"bottom-right\": \"bottom-0 right-0 items-end\",\n} as const;\n\nexport const zuiToastRootBase =\n \"pointer-events-auto w-[min(100vw-2rem,380px)] rounded-xl border bg-[var(--zui-toast-root-bg,var(--zui-surface-muted,oklch(98.4%_0.003_247.858)))] dark:bg-[var(--zui-toast-root-bg-dark,var(--zui-surface-muted-dark,oklch(98.4%_0.003_247.858)))] p-4 text-[color:var(--zui-toast-root-fg,var(--zui-fg,oklch(20.8%_0.042_265.755)))] dark:text-[color:var(--zui-toast-root-fg-dark,var(--zui-fg-dark,oklch(98.4%_0.003_247.858)))] shadow-[var(--zui-toast-root-shadow,var(--zui-shadow,0_8px_24px_rgba(15,23,42,0.12)))] dark:shadow-[var(--zui-toast-root-shadow-dark,var(--zui-shadow-dark,0_18px_48px_rgba(15,23,42,0.45)))]\";\n\nexport const zuiToastRootAppearances = {\n default:\n \"bg-[var(--zui-toast-root-default-bg,var(--zui-surface-muted,oklch(12.9%_0.042_264.695)))] dark:bg-[var(--zui-toast-root-default-bg-dark,var(--zui-surface-muted-dark,oklch(12.9%_0.042_264.695)))] text-[color:var(--zui-toast-root-default-fg,var(--zui-fg,oklch(98.4%_0.003_247.858)))] dark:text-[color:var(--zui-toast-root-default-fg-dark,var(--zui-fg-dark,oklch(98.4%_0.003_247.858)))]\",\n success:\n \"border-[color:var(--zui-toast-root-success-border,var(--zui-status-success,oklch(69.6%_0.17_162.48_/_0.4)))] dark:border-[color:var(--zui-toast-root-success-border-dark,var(--zui-status-success-dark,oklch(69.6%_0.17_162.48_/_0.4)))] bg-[var(--zui-toast-root-success-bg,var(--zui-status-success,oklch(26.2%_0.051_172.552)))] dark:bg-[var(--zui-toast-root-success-bg-dark,var(--zui-status-success-dark,oklch(26.2%_0.051_172.552)))] text-[color:var(--zui-toast-root-success-fg,var(--zui-fg,oklch(97.9%_0.021_166.113)))] dark:text-[color:var(--zui-toast-root-success-fg-dark,var(--zui-fg-dark,oklch(97.9%_0.021_166.113)))]\",\n warning:\n \"border-[color:var(--zui-toast-root-warning-border,var(--zui-status-warning,oklch(76.9%_0.188_70.08_/_0.4)))] dark:border-[color:var(--zui-toast-root-warning-border-dark,var(--zui-status-warning-dark,oklch(76.9%_0.188_70.08_/_0.4)))] bg-[var(--zui-toast-root-warning-bg,var(--zui-status-warning,oklch(27.9%_0.077_45.635)))] dark:bg-[var(--zui-toast-root-warning-bg-dark,var(--zui-status-warning-dark,oklch(27.9%_0.077_45.635)))] text-[color:var(--zui-toast-root-warning-fg,var(--zui-fg,oklch(98.7%_0.022_95.277)))] dark:text-[color:var(--zui-toast-root-warning-fg-dark,var(--zui-fg-dark,oklch(98.7%_0.022_95.277)))]\",\n error:\n \"border-[color:var(--zui-toast-root-error-border,var(--zui-status-error,oklch(64.5%_0.246_16.439_/_0.5)))] dark:border-[color:var(--zui-toast-root-error-border-dark,var(--zui-status-error-dark,oklch(64.5%_0.246_16.439_/_0.5)))] bg-[var(--zui-toast-root-error-bg,var(--zui-status-error,oklch(27.1%_0.105_12.094)))] dark:bg-[var(--zui-toast-root-error-bg-dark,var(--zui-status-error-dark,oklch(27.1%_0.105_12.094)))] text-[color:var(--zui-toast-root-error-fg,var(--zui-fg,oklch(96.9%_0.015_12.422)))] dark:text-[color:var(--zui-toast-root-error-fg-dark,var(--zui-fg-dark,oklch(96.9%_0.015_12.422)))]\",\n info: \"border-[color:var(--zui-toast-root-info-border,var(--zui-status-info,oklch(68.5%_0.169_237.323_/_0.4)))] dark:border-[color:var(--zui-toast-root-info-border-dark,var(--zui-status-info-dark,oklch(68.5%_0.169_237.323_/_0.4)))] bg-[var(--zui-toast-root-info-bg,var(--zui-status-info,oklch(29.3%_0.066_243.157)))] dark:bg-[var(--zui-toast-root-info-bg-dark,var(--zui-status-info-dark,oklch(29.3%_0.066_243.157)))] text-[color:var(--zui-toast-root-info-fg,var(--zui-brand-fg,oklch(97.7%_0.013_236.62)))] dark:text-[color:var(--zui-toast-root-info-fg-dark,var(--zui-brand-fg-dark,oklch(97.7%_0.013_236.62)))]\",\n ghost:\n \"border-[color:var(--zui-toast-root-ghost-border,transparent)] dark:border-[color:var(--zui-toast-root-ghost-border-dark,transparent)] bg-[var(--zui-toast-root-ghost-bg,transparent)] dark:bg-[var(--zui-toast-root-ghost-bg-dark,transparent)] text-[color:var(--zui-toast-root-ghost-fg,var(--zui-fg-muted,oklch(20.8%_0.042_265.755)))] dark:text-[color:var(--zui-toast-root-ghost-fg-dark,var(--zui-fg-muted-dark,oklch(20.8%_0.042_265.755)))]\",\n purple:\n \"border-[color:var(--zui-toast-root-purple-border,var(--zui-color-purple,oklch(43.8%_0.218_303.724)))] dark:border-[color:var(--zui-toast-root-purple-border-dark,var(--zui-color-purple-dark,oklch(55.8%_0.288_302.321)))] bg-[var(--zui-toast-root-purple-bg,var(--zui-color-purple,oklch(29.1%_0.149_302.717)))] dark:bg-[var(--zui-toast-root-purple-bg-dark,var(--zui-color-purple-dark,oklch(29.1%_0.149_302.717)))] backdrop-blur-xl text-[color:var(--zui-toast-root-purple-fg,var(--zui-fg,oklch(97.7%_0.014_308.299)))] dark:text-[color:var(--zui-toast-root-purple-fg-dark,var(--zui-fg-dark,oklch(97.7%_0.014_308.299)))]\",\n pink: \"border-[color:var(--zui-toast-root-pink-border,var(--zui-color-pink,oklch(45.9%_0.187_3.815)))] dark:border-[color:var(--zui-toast-root-pink-border-dark,var(--zui-color-pink-dark,oklch(59.2%_0.249_0.584)))] bg-[var(--zui-toast-root-pink-bg,var(--zui-color-pink,oklch(28.4%_0.109_3.907)))] dark:bg-[var(--zui-toast-root-pink-bg-dark,var(--zui-color-pink-dark,oklch(28.4%_0.109_3.907)))] backdrop-blur-xl text-[color:var(--zui-toast-root-pink-fg,var(--zui-fg,oklch(97.1%_0.014_343.198)))] dark:text-[color:var(--zui-toast-root-pink-fg-dark,var(--zui-fg-dark,oklch(97.1%_0.014_343.198)))]\",\n orange:\n \"border-[color:var(--zui-toast-root-orange-border,var(--zui-color-orange,oklch(47%_0.157_37.304)))] dark:border-[color:var(--zui-toast-root-orange-border-dark,var(--zui-color-orange-dark,oklch(64.6%_0.222_41.116)))] bg-[var(--zui-toast-root-orange-bg,var(--zui-color-orange,oklch(26.6%_0.079_36.259)))] dark:bg-[var(--zui-toast-root-orange-bg-dark,var(--zui-color-orange-dark,oklch(26.6%_0.079_36.259)))] backdrop-blur-xl text-[color:var(--zui-toast-root-orange-fg,var(--zui-fg,oklch(98%_0.016_73.684)))] dark:text-[color:var(--zui-toast-root-orange-fg-dark,var(--zui-fg-dark,oklch(98%_0.016_73.684)))]\",\n yellow:\n \"border-[color:var(--zui-toast-root-yellow-border,var(--zui-color-yellow,oklch(47.6%_0.114_61.907)))] dark:border-[color:var(--zui-toast-root-yellow-border-dark,var(--zui-color-yellow-dark,oklch(68.1%_0.162_75.834)))] bg-[var(--zui-toast-root-yellow-bg,var(--zui-color-yellow,oklch(28.6%_0.066_53.813)))] dark:bg-[var(--zui-toast-root-yellow-bg-dark,var(--zui-color-yellow-dark,oklch(28.6%_0.066_53.813)))] backdrop-blur-xl text-[color:var(--zui-toast-root-yellow-fg,var(--zui-fg,oklch(98.7%_0.026_102.212)))] dark:text-[color:var(--zui-toast-root-yellow-fg-dark,var(--zui-fg-dark,oklch(98.7%_0.026_102.212)))]\",\n teal: \"border-[color:var(--zui-toast-root-teal-border,var(--zui-color-teal,oklch(43.7%_0.078_188.216)))] dark:border-[color:var(--zui-toast-root-teal-border-dark,var(--zui-color-teal-dark,oklch(60%_0.118_184.704)))] bg-[var(--zui-toast-root-teal-bg,var(--zui-color-teal,oklch(27.7%_0.046_192.524)))] dark:bg-[var(--zui-toast-root-teal-bg-dark,var(--zui-color-teal-dark,oklch(27.7%_0.046_192.524)))] backdrop-blur-xl text-[color:var(--zui-toast-root-teal-fg,var(--zui-fg,oklch(98.4%_0.014_180.72)))] dark:text-[color:var(--zui-toast-root-teal-fg-dark,var(--zui-fg-dark,oklch(98.4%_0.014_180.72)))]\",\n indigo:\n \"border-[color:var(--zui-toast-root-indigo-border,var(--zui-color-indigo,oklch(39.8%_0.195_277.366)))] dark:border-[color:var(--zui-toast-root-indigo-border-dark,var(--zui-color-indigo-dark,oklch(51.1%_0.262_276.966)))] bg-[var(--zui-toast-root-indigo-bg,var(--zui-color-indigo,oklch(25.7%_0.09_281.288)))] dark:bg-[var(--zui-toast-root-indigo-bg-dark,var(--zui-color-indigo-dark,oklch(25.7%_0.09_281.288)))] backdrop-blur-xl text-[color:var(--zui-toast-root-indigo-fg,var(--zui-fg,oklch(96.2%_0.018_272.314)))] dark:text-[color:var(--zui-toast-root-indigo-fg-dark,var(--zui-fg-dark,oklch(96.2%_0.018_272.314)))]\",\n emerald:\n \"border-[color:var(--zui-toast-root-emerald-border,var(--zui-color-emerald,oklch(43.2%_0.095_166.913)))] dark:border-[color:var(--zui-toast-root-emerald-border-dark,var(--zui-color-emerald-dark,oklch(59.6%_0.145_163.225)))] bg-[var(--zui-toast-root-emerald-bg,var(--zui-color-emerald,oklch(26.2%_0.051_172.552)))] dark:bg-[var(--zui-toast-root-emerald-bg-dark,var(--zui-color-emerald-dark,oklch(26.2%_0.051_172.552)))] backdrop-blur-xl text-[color:var(--zui-toast-root-emerald-fg,var(--zui-fg,oklch(97.9%_0.021_166.113)))] dark:text-[color:var(--zui-toast-root-emerald-fg-dark,var(--zui-fg-dark,oklch(97.9%_0.021_166.113)))]\",\n gray: \"border-[color:var(--zui-toast-root-gray-border,var(--zui-color-gray,oklch(27.8%_0.033_256.848)))] dark:border-[color:var(--zui-toast-root-gray-border-dark,var(--zui-color-gray-dark,oklch(44.6%_0.03_256.802)))] bg-[var(--zui-toast-root-gray-bg,var(--zui-color-gray,oklch(13%_0.028_261.692)))] dark:bg-[var(--zui-toast-root-gray-bg-dark,var(--zui-color-gray-dark,oklch(13%_0.028_261.692)))] backdrop-blur-xl text-[color:var(--zui-toast-root-gray-fg,var(--zui-fg,oklch(98.5%_0.002_247.839)))] dark:text-[color:var(--zui-toast-root-gray-fg-dark,var(--zui-fg-dark,oklch(98.5%_0.002_247.839)))]\",\n amber:\n \"border-[color:var(--zui-toast-root-amber-border,var(--zui-color-amber,oklch(47.3%_0.137_46.201)))] dark:border-[color:var(--zui-toast-root-amber-border-dark,var(--zui-color-amber-dark,oklch(66.6%_0.179_58.318)))] bg-[var(--zui-toast-root-amber-bg,var(--zui-color-amber,oklch(27.9%_0.077_45.635)))] dark:bg-[var(--zui-toast-root-amber-bg-dark,var(--zui-color-amber-dark,oklch(27.9%_0.077_45.635)))] backdrop-blur-xl text-[color:var(--zui-toast-root-amber-fg,var(--zui-fg,oklch(98.7%_0.022_95.277)))] dark:text-[color:var(--zui-toast-root-amber-fg-dark,var(--zui-fg-dark,oklch(98.7%_0.022_95.277)))]\",\n violet:\n \"border-[color:var(--zui-toast-root-violet-border,var(--zui-color-violet,oklch(43.2%_0.232_292.759)))] dark:border-[color:var(--zui-toast-root-violet-border-dark,var(--zui-color-violet-dark,oklch(54.1%_0.281_293.009)))] bg-[var(--zui-toast-root-violet-bg,var(--zui-color-violet,oklch(28.3%_0.141_291.089)))] dark:bg-[var(--zui-toast-root-violet-bg-dark,var(--zui-color-violet-dark,oklch(28.3%_0.141_291.089)))] backdrop-blur-xl text-[color:var(--zui-toast-root-violet-fg,var(--zui-fg,oklch(96.9%_0.016_293.756)))] dark:text-[color:var(--zui-toast-root-violet-fg-dark,var(--zui-fg-dark,oklch(96.9%_0.016_293.756)))]\",\n \"gradient-blue\":\n \"border-[color:var(--zui-toast-root-gradient-blue-border,var(--zui-color-blue,oklch(42.4%_0.199_265.638)))] dark:border-[color:var(--zui-toast-root-gradient-blue-border-dark,var(--zui-color-blue-dark,oklch(54.6%_0.245_262.881)))] bg-linear-to-r from-[var(--zui-toast-root-gradient-blue-from,var(--zui-color-blue,oklch(97%_0.014_254.604)))] dark:from-[var(--zui-toast-root-gradient-blue-from-dark,var(--zui-color-blue-dark,oklch(28.2%_0.091_267.935_/_0.7)))] to-[var(--zui-toast-root-gradient-blue-to,var(--zui-color-purple,oklch(97.7%_0.014_308.299)))] dark:to-[var(--zui-toast-root-gradient-blue-to-dark,var(--zui-color-purple-dark,oklch(29.1%_0.149_302.717_/_0.7)))] backdrop-blur-xl\",\n \"gradient-green\":\n \"border-[color:var(--zui-toast-root-gradient-green-border,var(--zui-color-green,oklch(44.8%_0.119_151.328)))] dark:border-[color:var(--zui-toast-root-gradient-green-border-dark,var(--zui-color-green-dark,oklch(62.7%_0.194_149.214)))] bg-linear-to-r from-[var(--zui-toast-root-gradient-green-from,var(--zui-color-green,oklch(98.2%_0.018_155.826)))] dark:from-[var(--zui-toast-root-gradient-green-from-dark,var(--zui-color-green-dark,oklch(26.6%_0.065_152.934_/_0.7)))] to-[var(--zui-toast-root-gradient-green-to,var(--zui-color-lime,oklch(98.6%_0.031_120.757)))] dark:to-[var(--zui-toast-root-gradient-green-to-dark,var(--zui-color-lime-dark,oklch(27.4%_0.072_132.109_/_0.7)))] backdrop-blur-xl\",\n \"gradient-red\":\n \"border-[color:var(--zui-toast-root-gradient-red-border,var(--zui-color-red,oklch(44.4%_0.177_26.899)))] dark:border-[color:var(--zui-toast-root-gradient-red-border-dark,var(--zui-color-red-dark,oklch(57.7%_0.245_27.325)))] bg-linear-to-r from-[var(--zui-toast-root-gradient-red-from,var(--zui-color-red,oklch(97.1%_0.013_17.38)))] dark:from-[var(--zui-toast-root-gradient-red-from-dark,var(--zui-color-red-dark,oklch(25.8%_0.092_26.042_/_0.7)))] to-[var(--zui-toast-root-gradient-red-to,var(--zui-color-pink,oklch(97.1%_0.014_343.198)))] dark:to-[var(--zui-toast-root-gradient-red-to-dark,var(--zui-color-pink-dark,oklch(28.4%_0.109_3.907_/_0.7)))] backdrop-blur-xl\",\n \"gradient-yellow\":\n \"border-[color:var(--zui-toast-root-gradient-yellow-border,var(--zui-color-yellow,oklch(47.6%_0.114_61.907)))] dark:border-[color:var(--zui-toast-root-gradient-yellow-border-dark,var(--zui-color-yellow-dark,oklch(68.1%_0.162_75.834)))] bg-linear-to-r from-[var(--zui-toast-root-gradient-yellow-from,var(--zui-color-yellow,oklch(98.7%_0.026_102.212)))] dark:from-[var(--zui-toast-root-gradient-yellow-from-dark,var(--zui-color-yellow-dark,oklch(28.6%_0.066_53.813_/_0.7)))] to-[var(--zui-toast-root-gradient-yellow-to,var(--zui-color-orange,oklch(98%_0.016_73.684)))] dark:to-[var(--zui-toast-root-gradient-yellow-to-dark,var(--zui-color-orange-dark,oklch(26.6%_0.079_36.259_/_0.7)))] backdrop-blur-xl\",\n \"gradient-purple\":\n \"border-[color:var(--zui-toast-root-gradient-purple-border,var(--zui-color-purple,oklch(43.8%_0.218_303.724)))] dark:border-[color:var(--zui-toast-root-gradient-purple-border-dark,var(--zui-color-purple-dark,oklch(55.8%_0.288_302.321)))] bg-linear-to-r from-[var(--zui-toast-root-gradient-purple-from,var(--zui-color-purple,oklch(97.7%_0.014_308.299)))] dark:from-[var(--zui-toast-root-gradient-purple-from-dark,var(--zui-color-purple-dark,oklch(29.1%_0.149_302.717_/_0.7)))] to-[var(--zui-toast-root-gradient-purple-to,var(--zui-color-pink,oklch(97.1%_0.014_343.198)))] dark:to-[var(--zui-toast-root-gradient-purple-to-dark,var(--zui-color-pink-dark,oklch(28.4%_0.109_3.907_/_0.7)))] backdrop-blur-xl\",\n \"gradient-teal\":\n \"border-[color:var(--zui-toast-root-gradient-teal-border,var(--zui-color-teal,oklch(43.7%_0.078_188.216)))] dark:border-[color:var(--zui-toast-root-gradient-teal-border-dark,var(--zui-color-teal-dark,oklch(60%_0.118_184.704)))] bg-linear-to-r from-[var(--zui-toast-root-gradient-teal-from,var(--zui-color-teal,oklch(98.4%_0.014_180.72)))] dark:from-[var(--zui-toast-root-gradient-teal-from-dark,var(--zui-color-teal-dark,oklch(27.7%_0.046_192.524_/_0.7)))] to-[var(--zui-toast-root-gradient-teal-to,var(--zui-color-cyan,oklch(98.4%_0.019_200.873)))] dark:to-[var(--zui-toast-root-gradient-teal-to-dark,var(--zui-color-cyan-dark,oklch(30.2%_0.056_229.695_/_0.7)))] backdrop-blur-xl\",\n \"gradient-indigo\":\n \"border-[color:var(--zui-toast-root-gradient-indigo-border,var(--zui-color-indigo,oklch(39.8%_0.195_277.366)))] dark:border-[color:var(--zui-toast-root-gradient-indigo-border-dark,var(--zui-color-indigo-dark,oklch(51.1%_0.262_276.966)))] bg-linear-to-r from-[var(--zui-toast-root-gradient-indigo-from,var(--zui-color-indigo,oklch(96.2%_0.018_272.314)))] dark:from-[var(--zui-toast-root-gradient-indigo-from-dark,var(--zui-color-indigo-dark,oklch(25.7%_0.09_281.288_/_0.7)))] to-[var(--zui-toast-root-gradient-indigo-to,var(--zui-color-purple,oklch(97.7%_0.014_308.299)))] dark:to-[var(--zui-toast-root-gradient-indigo-to-dark,var(--zui-color-purple-dark,oklch(29.1%_0.149_302.717_/_0.7)))] backdrop-blur-xl\",\n \"gradient-pink\":\n \"border-[color:var(--zui-toast-root-gradient-pink-border,var(--zui-color-pink,oklch(45.9%_0.187_3.815)))] dark:border-[color:var(--zui-toast-root-gradient-pink-border-dark,var(--zui-color-pink-dark,oklch(59.2%_0.249_0.584)))] bg-linear-to-r from-[var(--zui-toast-root-gradient-pink-from,var(--zui-color-pink,oklch(97.1%_0.014_343.198)))] dark:from-[var(--zui-toast-root-gradient-pink-from-dark,var(--zui-color-pink-dark,oklch(28.4%_0.109_3.907_/_0.7)))] to-[var(--zui-toast-root-gradient-pink-to,var(--zui-color-rose,oklch(96.9%_0.015_12.422)))] dark:to-[var(--zui-toast-root-gradient-pink-to-dark,var(--zui-color-rose-dark,oklch(27.1%_0.105_12.094_/_0.7)))] backdrop-blur-xl\",\n \"gradient-orange\":\n \"border-[color:var(--zui-toast-root-gradient-orange-border,var(--zui-color-orange,oklch(47%_0.157_37.304)))] dark:border-[color:var(--zui-toast-root-gradient-orange-border-dark,var(--zui-color-orange-dark,oklch(64.6%_0.222_41.116)))] bg-linear-to-r from-[var(--zui-toast-root-gradient-orange-from,var(--zui-color-orange,oklch(98%_0.016_73.684)))] dark:from-[var(--zui-toast-root-gradient-orange-from-dark,var(--zui-color-orange-dark,oklch(26.6%_0.079_36.259_/_0.7)))] to-[var(--zui-toast-root-gradient-orange-to,var(--zui-color-red,oklch(97.1%_0.013_17.38)))] dark:to-[var(--zui-toast-root-gradient-orange-to-dark,var(--zui-color-red-dark,oklch(25.8%_0.092_26.042_/_0.7)))] backdrop-blur-xl\",\n blue: \"border border-[color:var(--zui-toast-root-blue-border,var(--zui-color-blue,#2563eb))] dark:border-[color:var(--zui-toast-root-blue-border-dark,var(--zui-color-blue-dark,#3b82f6))] bg-[var(--zui-toast-root-blue-bg,oklch(25.7%_0.09_267.935))] dark:bg-[var(--zui-toast-root-blue-bg-dark,oklch(25.7%_0.09_267.935))] backdrop-blur-xl text-[color:var(--zui-toast-root-blue-fg,oklch(97.7%_0.013_236.62))] dark:text-[color:var(--zui-toast-root-blue-fg-dark,oklch(97.7%_0.013_236.62))]\",\n cyan: \"border border-[color:var(--zui-toast-root-cyan-border,var(--zui-color-cyan,#0891b2))] dark:border-[color:var(--zui-toast-root-cyan-border-dark,var(--zui-color-cyan-dark,#22d3ee))] bg-[var(--zui-toast-root-cyan-bg,oklch(30.2%_0.056_229.695))] dark:bg-[var(--zui-toast-root-cyan-bg-dark,oklch(30.2%_0.056_229.695))] backdrop-blur-xl text-[color:var(--zui-toast-root-cyan-fg,oklch(98.4%_0.019_200.873))] dark:text-[color:var(--zui-toast-root-cyan-fg-dark,oklch(98.4%_0.019_200.873))]\",\n green:\n \"border border-[color:var(--zui-toast-root-green-border,var(--zui-color-green,#16a34a))] dark:border-[color:var(--zui-toast-root-green-border-dark,var(--zui-color-green-dark,#22c55e))] bg-[var(--zui-toast-root-green-bg,oklch(26.6%_0.065_152.934))] dark:bg-[var(--zui-toast-root-green-bg-dark,oklch(26.6%_0.065_152.934))] backdrop-blur-xl text-[color:var(--zui-toast-root-green-fg,oklch(97.9%_0.021_166.113))] dark:text-[color:var(--zui-toast-root-green-fg-dark,oklch(97.9%_0.021_166.113))]\",\n lime: \"border border-[color:var(--zui-toast-root-lime-border,var(--zui-color-lime,#65a30d))] dark:border-[color:var(--zui-toast-root-lime-border-dark,var(--zui-color-lime-dark,#a3e635))] bg-[var(--zui-toast-root-lime-bg,oklch(27.4%_0.072_132.109))] dark:bg-[var(--zui-toast-root-lime-bg-dark,oklch(27.4%_0.072_132.109))] backdrop-blur-xl text-[color:var(--zui-toast-root-lime-fg,oklch(98.6%_0.031_120.757))] dark:text-[color:var(--zui-toast-root-lime-fg-dark,oklch(98.6%_0.031_120.757))]\",\n mint: \"border border-[color:var(--zui-toast-root-mint-border,var(--zui-color-mint,#10b981))] dark:border-[color:var(--zui-toast-root-mint-border-dark,var(--zui-color-mint-dark,#6ee7b7))] bg-[var(--zui-toast-root-mint-bg,oklch(26.2%_0.051_172.552))] dark:bg-[var(--zui-toast-root-mint-bg-dark,oklch(26.2%_0.051_172.552))] backdrop-blur-xl text-[color:var(--zui-toast-root-mint-fg,oklch(97.9%_0.021_166.113))] dark:text-[color:var(--zui-toast-root-mint-fg-dark,oklch(97.9%_0.021_166.113))]\",\n ocean:\n \"border border-[color:var(--zui-toast-root-ocean-border,var(--zui-color-ocean,#0284c7))] dark:border-[color:var(--zui-toast-root-ocean-border-dark,var(--zui-color-ocean-dark,#38bdf8))] bg-[var(--zui-toast-root-ocean-bg,oklch(29.3%_0.066_243.157))] dark:bg-[var(--zui-toast-root-ocean-bg-dark,oklch(29.3%_0.066_243.157))] backdrop-blur-xl text-[color:var(--zui-toast-root-ocean-fg,oklch(97.7%_0.013_236.62))] dark:text-[color:var(--zui-toast-root-ocean-fg-dark,oklch(97.7%_0.013_236.62))]\",\n sapphire:\n \"border border-[color:var(--zui-toast-root-sapphire-border,var(--zui-color-sapphire,#1d4ed8))] dark:border-[color:var(--zui-toast-root-sapphire-border-dark,var(--zui-color-sapphire-dark,#60a5fa))] bg-[var(--zui-toast-root-sapphire-bg,oklch(25.7%_0.09_281.288))] dark:bg-[var(--zui-toast-root-sapphire-bg-dark,oklch(25.7%_0.09_281.288))] backdrop-blur-xl text-[color:var(--zui-toast-root-sapphire-fg,oklch(96.2%_0.018_272.314))] dark:text-[color:var(--zui-toast-root-sapphire-fg-dark,oklch(96.2%_0.018_272.314))]\",\n lavender:\n \"border border-[color:var(--zui-toast-root-lavender-border,var(--zui-color-lavender,#8b5cf6))] dark:border-[color:var(--zui-toast-root-lavender-border-dark,var(--zui-color-lavender-dark,#a78bfa))] bg-[var(--zui-toast-root-lavender-bg,oklch(28.3%_0.141_291.089))] dark:bg-[var(--zui-toast-root-lavender-bg-dark,oklch(28.3%_0.141_291.089))] backdrop-blur-xl text-[color:var(--zui-toast-root-lavender-fg,oklch(96.9%_0.016_293.756))] dark:text-[color:var(--zui-toast-root-lavender-fg-dark,oklch(96.9%_0.016_293.756))]\",\n ruby: \"border border-[color:var(--zui-toast-root-ruby-border,var(--zui-color-ruby,#be123c))] dark:border-[color:var(--zui-toast-root-ruby-border-dark,var(--zui-color-ruby-dark,#fb7185))] bg-[var(--zui-toast-root-ruby-bg,oklch(27.1%_0.105_12.094))] dark:bg-[var(--zui-toast-root-ruby-bg-dark,oklch(27.1%_0.105_12.094))] backdrop-blur-xl text-[color:var(--zui-toast-root-ruby-fg,oklch(96.9%_0.015_12.422))] dark:text-[color:var(--zui-toast-root-ruby-fg-dark,oklch(96.9%_0.015_12.422))]\",\n red: \"border border-[color:var(--zui-toast-root-red-border,var(--zui-color-red,#dc2626))] dark:border-[color:var(--zui-toast-root-red-border-dark,var(--zui-color-red-dark,#ef4444))] bg-[var(--zui-toast-root-red-bg,oklch(25.8%_0.092_26.042))] dark:bg-[var(--zui-toast-root-red-bg-dark,oklch(25.8%_0.092_26.042))] backdrop-blur-xl text-[color:var(--zui-toast-root-red-fg,oklch(97.1%_0.013_17.38))] dark:text-[color:var(--zui-toast-root-red-fg-dark,oklch(97.1%_0.013_17.38))]\",\n slate:\n \"border border-[color:var(--zui-toast-root-slate-border,var(--zui-color-slate,#475569))] dark:border-[color:var(--zui-toast-root-slate-border-dark,var(--zui-color-slate-dark,#64748b))] bg-[var(--zui-toast-root-slate-bg,oklch(20%_0.03_255.652))] dark:bg-[var(--zui-toast-root-slate-bg-dark,oklch(20%_0.03_255.652))] backdrop-blur-xl text-[color:var(--zui-toast-root-slate-fg,oklch(98.5%_0.002_247.839))] dark:text-[color:var(--zui-toast-root-slate-fg-dark,oklch(98.5%_0.002_247.839))]\",\n zinc: \"border border-[color:var(--zui-toast-root-zinc-border,var(--zui-color-zinc,#52525b))] dark:border-[color:var(--zui-toast-root-zinc-border-dark,var(--zui-color-zinc-dark,#71717a))] bg-[var(--zui-toast-root-zinc-bg,oklch(20%_0.01_258))] dark:bg-[var(--zui-toast-root-zinc-bg-dark,oklch(20%_0.01_258))] backdrop-blur-xl text-[color:var(--zui-toast-root-zinc-fg,oklch(98.5%_0.002_247.839))] dark:text-[color:var(--zui-toast-root-zinc-fg-dark,oklch(98.5%_0.002_247.839))]\",\n stone:\n \"border border-[color:var(--zui-toast-root-stone-border,var(--zui-color-stone,#57534e))] dark:border-[color:var(--zui-toast-root-stone-border-dark,var(--zui-color-stone-dark,#78716c))] bg-[var(--zui-toast-root-stone-bg,oklch(20%_0.02_62))] dark:bg-[var(--zui-toast-root-stone-bg-dark,oklch(20%_0.02_62))] backdrop-blur-xl text-[color:var(--zui-toast-root-stone-fg,oklch(98.7%_0.022_95.277))] dark:text-[color:var(--zui-toast-root-stone-fg-dark,oklch(98.7%_0.022_95.277))]\",\n royal:\n \"border border-[color:var(--zui-toast-root-royal-border,var(--zui-color-royal,#4338ca))] dark:border-[color:var(--zui-toast-root-royal-border-dark,var(--zui-color-royal-dark,#818cf8))] bg-[var(--zui-toast-root-royal-bg,oklch(25.7%_0.09_281.288))] dark:bg-[var(--zui-toast-root-royal-bg-dark,oklch(25.7%_0.09_281.288))] backdrop-blur-xl text-[color:var(--zui-toast-root-royal-fg,oklch(96.2%_0.018_272.314))] dark:text-[color:var(--zui-toast-root-royal-fg-dark,oklch(96.2%_0.018_272.314))]\",\n electric:\n \"border border-[color:var(--zui-toast-root-electric-border,var(--zui-color-electric,#0ea5e9))] dark:border-[color:var(--zui-toast-root-electric-border-dark,var(--zui-color-electric-dark,#38bdf8))] bg-[var(--zui-toast-root-electric-bg,oklch(28.2%_0.091_267.935))] dark:bg-[var(--zui-toast-root-electric-bg-dark,oklch(28.2%_0.091_267.935))] backdrop-blur-xl text-[color:var(--zui-toast-root-electric-fg,oklch(97.7%_0.013_236.62))] dark:text-[color:var(--zui-toast-root-electric-fg-dark,oklch(97.7%_0.013_236.62))]\",\n forest:\n \"border border-[color:var(--zui-toast-root-forest-border,var(--zui-color-forest,#166534))] dark:border-[color:var(--zui-toast-root-forest-border-dark,var(--zui-color-forest-dark,#4ade80))] bg-[var(--zui-toast-root-forest-bg,oklch(26.6%_0.065_152.934))] dark:bg-[var(--zui-toast-root-forest-bg-dark,oklch(26.6%_0.065_152.934))] backdrop-blur-xl text-[color:var(--zui-toast-root-forest-fg,oklch(97.9%_0.021_166.113))] dark:text-[color:var(--zui-toast-root-forest-fg-dark,oklch(97.9%_0.021_166.113))]\",\n sunset:\n \"border border-[color:var(--zui-toast-root-sunset-border,var(--zui-color-sunset,#ea580c))] dark:border-[color:var(--zui-toast-root-sunset-border-dark,var(--zui-color-sunset-dark,#fb923c))] bg-[var(--zui-toast-root-sunset-bg,oklch(26.6%_0.079_36.259))] dark:bg-[var(--zui-toast-root-sunset-bg-dark,oklch(26.6%_0.079_36.259))] backdrop-blur-xl text-[color:var(--zui-toast-root-sunset-fg,oklch(98%_0.016_73.684))] dark:text-[color:var(--zui-toast-root-sunset-fg-dark,oklch(98%_0.016_73.684))]\",\n magenta:\n \"border border-[color:var(--zui-toast-root-magenta-border,var(--zui-color-magenta,#c026d3))] dark:border-[color:var(--zui-toast-root-magenta-border-dark,var(--zui-color-magenta-dark,#e879f9))] bg-[var(--zui-toast-root-magenta-bg,oklch(27%_0.13_316))] dark:bg-[var(--zui-toast-root-magenta-bg-dark,oklch(27%_0.13_316))] backdrop-blur-xl text-[color:var(--zui-toast-root-magenta-fg,oklch(97.1%_0.014_343.198))] dark:text-[color:var(--zui-toast-root-magenta-fg-dark,oklch(97.1%_0.014_343.198))]\",\n crimson:\n \"border border-[color:var(--zui-toast-root-crimson-border,var(--zui-color-crimson,#b91c1c))] dark:border-[color:var(--zui-toast-root-crimson-border-dark,var(--zui-color-crimson-dark,#f87171))] bg-[var(--zui-toast-root-crimson-bg,oklch(27.1%_0.105_12.094))] dark:bg-[var(--zui-toast-root-crimson-bg-dark,oklch(27.1%_0.105_12.094))] backdrop-blur-xl text-[color:var(--zui-toast-root-crimson-fg,oklch(96.9%_0.015_12.422))] dark:text-[color:var(--zui-toast-root-crimson-fg-dark,oklch(96.9%_0.015_12.422))]\",\n aqua: \"border border-[color:var(--zui-toast-root-aqua-border,var(--zui-color-aqua,#0f766e))] dark:border-[color:var(--zui-toast-root-aqua-border-dark,var(--zui-color-aqua-dark,#2dd4bf))] bg-[var(--zui-toast-root-aqua-bg,oklch(27.7%_0.046_192.524))] dark:bg-[var(--zui-toast-root-aqua-bg-dark,oklch(27.7%_0.046_192.524))] backdrop-blur-xl text-[color:var(--zui-toast-root-aqua-fg,oklch(98.4%_0.014_180.72))] dark:text-[color:var(--zui-toast-root-aqua-fg-dark,oklch(98.4%_0.014_180.72))]\",\n plum: \"border border-[color:var(--zui-toast-root-plum-border,var(--zui-color-plum,#7e22ce))] dark:border-[color:var(--zui-toast-root-plum-border-dark,var(--zui-color-plum-dark,#c084fc))] bg-[var(--zui-toast-root-plum-bg,oklch(29.1%_0.149_302.717))] dark:bg-[var(--zui-toast-root-plum-bg-dark,oklch(29.1%_0.149_302.717))] backdrop-blur-xl text-[color:var(--zui-toast-root-plum-fg,oklch(97.7%_0.014_308.299))] dark:text-[color:var(--zui-toast-root-plum-fg-dark,oklch(97.7%_0.014_308.299))]\",\n} as const;\n\nexport const zuiToastRootSizes = {\n sm: \"p-3 text-xs\",\n md: \"p-4 text-sm\",\n lg: \"p-5 text-base\",\n} as const;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ui/toast/variants.ts","../src/ui/toast/toast-base.tsx"],"names":["cva","zuiToastViewportBase","zuiToastViewportPositions","zuiToastRootBase","zuiToastRootAppearances","zuiToastRootSizes","createContext","useContext","useState","useRef","useCallback","useMemo","useEffect","createPortal","jsx","cn","jsxs"],"mappings":"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","file":"chunk-APCN6NUH.js","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nimport {\n zuiToastRootAppearances,\n zuiToastRootBase,\n zuiToastRootSizes,\n zuiToastViewportBase,\n zuiToastViewportPositions,\n} from \"../../design-system/toast\";\n\nexport const toastViewportVariants = cva(zuiToastViewportBase, {\n variants: {\n position: zuiToastViewportPositions,\n },\n defaultVariants: {\n position: \"bottom-right\",\n },\n});\n\nexport const toastRootVariants = cva(zuiToastRootBase, {\n variants: {\n appearance: zuiToastRootAppearances,\n size: zuiToastRootSizes,\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n});\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type {\n ToastContextValue,\n ToastStoreContextValue,\n InternalToast,\n ToastInput,\n ToastProps,\n ToastProviderProps,\n ToastSectionProps,\n ToastViewportProps,\n} from \"./types\";\nimport { toastRootVariants, toastViewportVariants } from \"./variants\";\n\nexport const ToastStoreContext = createContext<ToastStoreContextValue | null>(\n null,\n);\n\nlet toastDispatcher: ToastStoreContextValue[\"push\"] | null = null;\n\nexport function toast(input: ToastInput) {\n if (!toastDispatcher) {\n return \"\";\n }\n return toastDispatcher(input);\n}\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastStoreContext);\n if (!ctx) {\n throw new Error(\"useToast must be used within <ToastProvider>\");\n }\n return { toast: ctx.push, dismiss: ctx.dismiss };\n}\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n const [toasts, setToasts] = useState<InternalToast[]>([]);\n const timers = useRef<Map<string, number>>(new Map());\n\n const dismiss = useCallback((id: string) => {\n const timerId = timers.current.get(id);\n if (timerId) {\n window.clearTimeout(timerId);\n timers.current.delete(id);\n }\n setToasts((prev) => prev.filter((toastItem) => toastItem.id !== id));\n }, []);\n\n const push = useCallback(\n (input: ToastInput) => {\n const id = input.id ?? `toast-${Math.random().toString(16).slice(2)}`;\n const durationMs = input.durationMs ?? 4500;\n const record: InternalToast = {\n ...input,\n id,\n durationMs,\n animation: input.animation ?? \"slide\",\n };\n setToasts((prev) => [...prev, record]);\n const timerId = window.setTimeout(() => dismiss(id), durationMs);\n timers.current.set(id, timerId);\n return id;\n },\n [dismiss],\n );\n\n const ctx = useMemo(\n () => ({\n toasts,\n push,\n dismiss,\n }),\n [dismiss, push, toasts],\n );\n\n useEffect(() => {\n toastDispatcher = push;\n return () => {\n toastDispatcher = null;\n };\n }, [push]);\n\n return (\n <ToastStoreContext.Provider value={ctx}>\n {children}\n </ToastStoreContext.Provider>\n );\n}\n\nToastProvider.displayName = \"ToastProvider\";\n\nexport function ToastViewport({\n position = \"bottom-right\",\n className,\n}: ToastViewportProps) {\n const ctx = useContext(ToastStoreContext);\n if (!ctx) {\n throw new Error(\"ToastViewport must be used within <ToastProvider>\");\n }\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n if (!portalTarget) {\n return null;\n }\n\n return createPortal(\n <div\n className={cn(toastViewportVariants({ position }), className)}\n data-slot=\"toast-viewport\"\n >\n {ctx.toasts.map((item) => (\n <Toast\n key={item.id}\n toastId={item.id}\n appearance={item.appearance}\n size={item.size}\n animation={item.animation}\n >\n <ToastTitle>{item.title}</ToastTitle>\n {item.description ? (\n <ToastDescription>{item.description}</ToastDescription>\n ) : null}\n <ToastClose onClick={() => ctx.dismiss(item.id)} />\n </Toast>\n ))}\n </div>,\n portalTarget,\n );\n}\n\nToastViewport.displayName = \"ToastViewport\";\n\nexport function Toast({\n toastId: _toastId,\n appearance,\n size,\n animation: _animation = \"slide\",\n className,\n children,\n}: ToastProps) {\n const live = appearance === \"error\" ? \"assertive\" : \"polite\";\n\n return (\n <div\n data-slot=\"toast\"\n role={appearance === \"error\" ? \"alert\" : \"status\"}\n aria-live={live}\n aria-atomic=\"true\"\n className={cn(\n \"relative\",\n toastRootVariants({ appearance, size }),\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nToast.displayName = \"Toast\";\n\nexport function ToastTitle({ className, children }: ToastSectionProps) {\n return (\n <div data-slot=\"toast-title\" className={cn(\"font-semibold\", className)}>\n {children}\n </div>\n );\n}\n\nToastTitle.displayName = \"ToastTitle\";\n\nexport function ToastDescription({ className, children }: ToastSectionProps) {\n return (\n <div data-slot=\"toast-description\" className={cn(\"text-sm\", className)}>\n {children}\n </div>\n );\n}\n\nToastDescription.displayName = \"ToastDescription\";\n\nexport function ToastAction({ className, children }: ToastSectionProps) {\n return (\n <div data-slot=\"toast-action\" className={cn(\"mt-3\", className)}>\n {children}\n </div>\n );\n}\n\nToastAction.displayName = \"ToastAction\";\n\nexport function ToastClose({\n className,\n children,\n onClick,\n ...rest\n}: ToastSectionProps & { onClick?: () => void }) {\n return (\n <button\n type=\"button\"\n data-slot=\"toast-close\"\n aria-label=\"Dismiss notification\"\n className={cn(\n \"absolute right-3 top-3 inline-flex size-8 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/40 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950\",\n className,\n )}\n onClick={onClick}\n {...rest}\n >\n {children ?? \"×\"}\n </button>\n );\n}\n\nToastClose.displayName = \"ToastClose\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ui/toast/variants.ts","../src/ui/toast/toast-base.tsx"],"names":[],"mappings":"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","file":"chunk-HVMYPW3Q.mjs","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nimport {\n zuiToastRootAppearances,\n zuiToastRootBase,\n zuiToastRootSizes,\n zuiToastViewportBase,\n zuiToastViewportPositions,\n} from \"../../design-system/toast\";\n\nexport const toastViewportVariants = cva(zuiToastViewportBase, {\n variants: {\n position: zuiToastViewportPositions,\n },\n defaultVariants: {\n position: \"bottom-right\",\n },\n});\n\nexport const toastRootVariants = cva(zuiToastRootBase, {\n variants: {\n appearance: zuiToastRootAppearances,\n size: zuiToastRootSizes,\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n});\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type {\n ToastContextValue,\n ToastStoreContextValue,\n InternalToast,\n ToastInput,\n ToastProps,\n ToastProviderProps,\n ToastSectionProps,\n ToastViewportProps,\n} from \"./types\";\nimport { toastRootVariants, toastViewportVariants } from \"./variants\";\n\nexport const ToastStoreContext = createContext<ToastStoreContextValue | null>(\n null,\n);\n\nlet toastDispatcher: ToastStoreContextValue[\"push\"] | null = null;\n\nexport function toast(input: ToastInput) {\n if (!toastDispatcher) {\n return \"\";\n }\n return toastDispatcher(input);\n}\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastStoreContext);\n if (!ctx) {\n throw new Error(\"useToast must be used within <ToastProvider>\");\n }\n return { toast: ctx.push, dismiss: ctx.dismiss };\n}\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n const [toasts, setToasts] = useState<InternalToast[]>([]);\n const timers = useRef<Map<string, number>>(new Map());\n\n const dismiss = useCallback((id: string) => {\n const timerId = timers.current.get(id);\n if (timerId) {\n window.clearTimeout(timerId);\n timers.current.delete(id);\n }\n setToasts((prev) => prev.filter((toastItem) => toastItem.id !== id));\n }, []);\n\n const push = useCallback(\n (input: ToastInput) => {\n const id = input.id ?? `toast-${Math.random().toString(16).slice(2)}`;\n const durationMs = input.durationMs ?? 4500;\n const record: InternalToast = {\n ...input,\n id,\n durationMs,\n animation: input.animation ?? \"slide\",\n };\n setToasts((prev) => [...prev, record]);\n const timerId = window.setTimeout(() => dismiss(id), durationMs);\n timers.current.set(id, timerId);\n return id;\n },\n [dismiss],\n );\n\n const ctx = useMemo(\n () => ({\n toasts,\n push,\n dismiss,\n }),\n [dismiss, push, toasts],\n );\n\n useEffect(() => {\n toastDispatcher = push;\n return () => {\n toastDispatcher = null;\n };\n }, [push]);\n\n return (\n <ToastStoreContext.Provider value={ctx}>\n {children}\n </ToastStoreContext.Provider>\n );\n}\n\nToastProvider.displayName = \"ToastProvider\";\n\nexport function ToastViewport({\n position = \"bottom-right\",\n className,\n}: ToastViewportProps) {\n const ctx = useContext(ToastStoreContext);\n if (!ctx) {\n throw new Error(\"ToastViewport must be used within <ToastProvider>\");\n }\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n if (!portalTarget) {\n return null;\n }\n\n return createPortal(\n <div\n className={cn(toastViewportVariants({ position }), className)}\n data-slot=\"toast-viewport\"\n >\n {ctx.toasts.map((item) => (\n <Toast\n key={item.id}\n toastId={item.id}\n appearance={item.appearance}\n size={item.size}\n animation={item.animation}\n >\n <ToastTitle>{item.title}</ToastTitle>\n {item.description ? (\n <ToastDescription>{item.description}</ToastDescription>\n ) : null}\n <ToastClose onClick={() => ctx.dismiss(item.id)} />\n </Toast>\n ))}\n </div>,\n portalTarget,\n );\n}\n\nToastViewport.displayName = \"ToastViewport\";\n\nexport function Toast({\n toastId: _toastId,\n appearance,\n size,\n animation: _animation = \"slide\",\n className,\n children,\n}: ToastProps) {\n const live = appearance === \"error\" ? \"assertive\" : \"polite\";\n\n return (\n <div\n data-slot=\"toast\"\n role={appearance === \"error\" ? \"alert\" : \"status\"}\n aria-live={live}\n aria-atomic=\"true\"\n className={cn(\n \"relative\",\n toastRootVariants({ appearance, size }),\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nToast.displayName = \"Toast\";\n\nexport function ToastTitle({ className, children }: ToastSectionProps) {\n return (\n <div data-slot=\"toast-title\" className={cn(\"font-semibold\", className)}>\n {children}\n </div>\n );\n}\n\nToastTitle.displayName = \"ToastTitle\";\n\nexport function ToastDescription({ className, children }: ToastSectionProps) {\n return (\n <div data-slot=\"toast-description\" className={cn(\"text-sm\", className)}>\n {children}\n </div>\n );\n}\n\nToastDescription.displayName = \"ToastDescription\";\n\nexport function ToastAction({ className, children }: ToastSectionProps) {\n return (\n <div data-slot=\"toast-action\" className={cn(\"mt-3\", className)}>\n {children}\n </div>\n );\n}\n\nToastAction.displayName = \"ToastAction\";\n\nexport function ToastClose({\n className,\n children,\n onClick,\n ...rest\n}: ToastSectionProps & { onClick?: () => void }) {\n return (\n <button\n type=\"button\"\n data-slot=\"toast-close\"\n aria-label=\"Dismiss notification\"\n className={cn(\n \"absolute right-3 top-3 inline-flex size-8 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/40 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-950\",\n className,\n )}\n onClick={onClick}\n {...rest}\n >\n {children ?? \"×\"}\n </button>\n );\n}\n\nToastClose.displayName = \"ToastClose\";\n"]}
@@ -1,19 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkUJPB5NHW_js = require('./chunk-UJPB5NHW.js');
4
- var classVarianceAuthority = require('class-variance-authority');
5
-
6
- var buttonVariants = classVarianceAuthority.cva(chunkUJPB5NHW_js.zuiButtonBase, {
7
- variants: {
8
- appearance: chunkUJPB5NHW_js.zuiButtonAppearances,
9
- size: chunkUJPB5NHW_js.zuiButtonSizes
10
- },
11
- defaultVariants: {
12
- appearance: "default",
13
- size: "md"
14
- }
15
- });
16
-
17
- exports.buttonVariants = buttonVariants;
18
- //# sourceMappingURL=chunk-SOYCLBHK.js.map
19
- //# sourceMappingURL=chunk-SOYCLBHK.js.map