@salesmind-ai/design-system 0.3.4 → 0.3.6

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 (203) hide show
  1. package/dist/{StatsSection-wgd8Vge1.d.cts → StatsSection-Dihy3zml.d.cts} +2 -0
  2. package/dist/{StatsSection-B8iD9L-o.d.ts → StatsSection-MfKKyqL1.d.ts} +2 -0
  3. package/dist/admin/index.cjs +68 -2928
  4. package/dist/admin/index.cjs.map +1 -1
  5. package/dist/admin/index.js +5 -2915
  6. package/dist/admin/index.js.map +1 -1
  7. package/dist/blog/index.cjs +53 -1064
  8. package/dist/blog/index.cjs.map +1 -1
  9. package/dist/blog/index.js +8 -1054
  10. package/dist/blog/index.js.map +1 -1
  11. package/dist/charts/index.cjs +46 -2694
  12. package/dist/charts/index.cjs.map +1 -1
  13. package/dist/charts/index.js +3 -2680
  14. package/dist/charts/index.js.map +1 -1
  15. package/dist/chunk-2GARWEJK.js +17 -0
  16. package/dist/chunk-2GARWEJK.js.map +1 -0
  17. package/dist/chunk-2KQVZ5FB.js +485 -0
  18. package/dist/chunk-2KQVZ5FB.js.map +1 -0
  19. package/dist/chunk-3NKRFUAR.js +37 -0
  20. package/dist/chunk-3NKRFUAR.js.map +1 -0
  21. package/dist/chunk-3TGSIILM.cjs +201 -0
  22. package/dist/chunk-3TGSIILM.cjs.map +1 -0
  23. package/dist/chunk-4GM5BGBN.cjs +801 -0
  24. package/dist/chunk-4GM5BGBN.cjs.map +1 -0
  25. package/dist/chunk-5LGDEZWY.cjs +2434 -0
  26. package/dist/chunk-5LGDEZWY.cjs.map +1 -0
  27. package/dist/chunk-6H4DSTXR.js +786 -0
  28. package/dist/chunk-6H4DSTXR.js.map +1 -0
  29. package/dist/chunk-6HKQ5ILL.cjs +1624 -0
  30. package/dist/chunk-6HKQ5ILL.cjs.map +1 -0
  31. package/dist/chunk-6UNG76Y2.js +153 -0
  32. package/dist/chunk-6UNG76Y2.js.map +1 -0
  33. package/dist/chunk-7PX2AZ6Y.js +39 -0
  34. package/dist/chunk-7PX2AZ6Y.js.map +1 -0
  35. package/dist/chunk-ARC5KXBC.js +187 -0
  36. package/dist/chunk-ARC5KXBC.js.map +1 -0
  37. package/dist/chunk-B6AVAX4F.js +1415 -0
  38. package/dist/chunk-B6AVAX4F.js.map +1 -0
  39. package/dist/chunk-BILT5KD3.js +264 -0
  40. package/dist/chunk-BILT5KD3.js.map +1 -0
  41. package/dist/chunk-C2BCDNAV.js +24 -0
  42. package/dist/chunk-C2BCDNAV.js.map +1 -0
  43. package/dist/chunk-CH42VPWE.cjs +421 -0
  44. package/dist/chunk-CH42VPWE.cjs.map +1 -0
  45. package/dist/chunk-CJ2MKVAF.cjs +46 -0
  46. package/dist/chunk-CJ2MKVAF.cjs.map +1 -0
  47. package/dist/chunk-DP74LUXG.cjs +98 -0
  48. package/dist/chunk-DP74LUXG.cjs.map +1 -0
  49. package/dist/chunk-E7D6EKJ4.cjs +44 -0
  50. package/dist/chunk-E7D6EKJ4.cjs.map +1 -0
  51. package/dist/chunk-ECXBTUH6.cjs +584 -0
  52. package/dist/chunk-ECXBTUH6.cjs.map +1 -0
  53. package/dist/chunk-EFRAP5ES.js +157 -0
  54. package/dist/chunk-EFRAP5ES.js.map +1 -0
  55. package/dist/chunk-EM7JHRYW.cjs +69 -0
  56. package/dist/chunk-EM7JHRYW.cjs.map +1 -0
  57. package/dist/chunk-FAFAP4L5.js +183 -0
  58. package/dist/chunk-FAFAP4L5.js.map +1 -0
  59. package/dist/chunk-H2Y6BSTL.cjs +69 -0
  60. package/dist/chunk-H2Y6BSTL.cjs.map +1 -0
  61. package/dist/chunk-HN4PHABT.js +126 -0
  62. package/dist/chunk-HN4PHABT.js.map +1 -0
  63. package/dist/chunk-HRENHNDJ.js +211 -0
  64. package/dist/chunk-HRENHNDJ.js.map +1 -0
  65. package/dist/chunk-I75BFEYT.cjs +2561 -0
  66. package/dist/chunk-I75BFEYT.cjs.map +1 -0
  67. package/dist/chunk-IFRATNLU.js +562 -0
  68. package/dist/chunk-IFRATNLU.js.map +1 -0
  69. package/dist/chunk-JNASH4OQ.js +1022 -0
  70. package/dist/chunk-JNASH4OQ.js.map +1 -0
  71. package/dist/chunk-JPJN4YBC.js +409 -0
  72. package/dist/chunk-JPJN4YBC.js.map +1 -0
  73. package/dist/chunk-KCKUSU2M.cjs +166 -0
  74. package/dist/chunk-KCKUSU2M.cjs.map +1 -0
  75. package/dist/chunk-KDLH35OI.cjs +1042 -0
  76. package/dist/chunk-KDLH35OI.cjs.map +1 -0
  77. package/dist/chunk-KJ2OXQF4.js +287 -0
  78. package/dist/chunk-KJ2OXQF4.js.map +1 -0
  79. package/dist/chunk-KK5UO2P4.cjs +717 -0
  80. package/dist/chunk-KK5UO2P4.cjs.map +1 -0
  81. package/dist/chunk-KNQEIU7O.cjs +1202 -0
  82. package/dist/chunk-KNQEIU7O.cjs.map +1 -0
  83. package/dist/chunk-KVGSVGRK.cjs +569 -0
  84. package/dist/chunk-KVGSVGRK.cjs.map +1 -0
  85. package/dist/chunk-L352JRV6.cjs +105 -0
  86. package/dist/chunk-L352JRV6.cjs.map +1 -0
  87. package/dist/chunk-LGNMFBLF.cjs +502 -0
  88. package/dist/chunk-LGNMFBLF.cjs.map +1 -0
  89. package/dist/chunk-LJADZITX.cjs +298 -0
  90. package/dist/chunk-LJADZITX.cjs.map +1 -0
  91. package/dist/chunk-LSR7JYVH.cjs +196 -0
  92. package/dist/chunk-LSR7JYVH.cjs.map +1 -0
  93. package/dist/chunk-MDB2WCRQ.cjs +137 -0
  94. package/dist/chunk-MDB2WCRQ.cjs.map +1 -0
  95. package/dist/chunk-MQDEE7HC.cjs +283 -0
  96. package/dist/chunk-MQDEE7HC.cjs.map +1 -0
  97. package/dist/chunk-MQRB634A.cjs +34 -0
  98. package/dist/chunk-MQRB634A.cjs.map +1 -0
  99. package/dist/chunk-MU6GW5ZV.js +2317 -0
  100. package/dist/chunk-MU6GW5ZV.js.map +1 -0
  101. package/dist/chunk-NN3TUHIH.js +28 -0
  102. package/dist/chunk-NN3TUHIH.js.map +1 -0
  103. package/dist/chunk-NT4LBP7D.cjs +111 -0
  104. package/dist/chunk-NT4LBP7D.cjs.map +1 -0
  105. package/dist/chunk-OGKGIXFC.cjs +2162 -0
  106. package/dist/chunk-OGKGIXFC.cjs.map +1 -0
  107. package/dist/chunk-OXNXEQY7.js +2538 -0
  108. package/dist/chunk-OXNXEQY7.js.map +1 -0
  109. package/dist/chunk-P5BOFE5A.js +546 -0
  110. package/dist/chunk-P5BOFE5A.js.map +1 -0
  111. package/dist/chunk-Q2MFGYTE.cjs +1449 -0
  112. package/dist/chunk-Q2MFGYTE.cjs.map +1 -0
  113. package/dist/chunk-Q75DBVDY.cjs +68 -0
  114. package/dist/chunk-Q75DBVDY.cjs.map +1 -0
  115. package/dist/chunk-RQUFZAZ7.js +1608 -0
  116. package/dist/chunk-RQUFZAZ7.js.map +1 -0
  117. package/dist/chunk-SICKWUWB.js +62 -0
  118. package/dist/chunk-SICKWUWB.js.map +1 -0
  119. package/dist/chunk-T343CCH5.js +1190 -0
  120. package/dist/chunk-T343CCH5.js.map +1 -0
  121. package/dist/chunk-T5H5PNLN.js +701 -0
  122. package/dist/chunk-T5H5PNLN.js.map +1 -0
  123. package/dist/chunk-U3LK2GID.js +2122 -0
  124. package/dist/chunk-U3LK2GID.js.map +1 -0
  125. package/dist/chunk-UFAJY2DM.js +62 -0
  126. package/dist/chunk-UFAJY2DM.js.map +1 -0
  127. package/dist/chunk-VC5LMUVQ.cjs +20 -0
  128. package/dist/chunk-VC5LMUVQ.cjs.map +1 -0
  129. package/dist/chunk-VM7WFMKI.cjs +76 -0
  130. package/dist/chunk-VM7WFMKI.cjs.map +1 -0
  131. package/dist/chunk-W2WTP6HS.cjs +233 -0
  132. package/dist/chunk-W2WTP6HS.cjs.map +1 -0
  133. package/dist/chunk-WH7PYHZY.cjs +35 -0
  134. package/dist/chunk-WH7PYHZY.cjs.map +1 -0
  135. package/dist/chunk-XU3OMQ7V.js +98 -0
  136. package/dist/chunk-XU3OMQ7V.js.map +1 -0
  137. package/dist/chunk-XWPDRMZG.js +62 -0
  138. package/dist/chunk-XWPDRMZG.js.map +1 -0
  139. package/dist/chunk-Y3CPKNB7.js +67 -0
  140. package/dist/chunk-Y3CPKNB7.js.map +1 -0
  141. package/dist/chunk-YNVRDD2P.js +98 -0
  142. package/dist/chunk-YNVRDD2P.js.map +1 -0
  143. package/dist/chunk-YSYR54XR.js +92 -0
  144. package/dist/chunk-YSYR54XR.js.map +1 -0
  145. package/dist/chunk-YTYDQBVY.cjs +162 -0
  146. package/dist/chunk-YTYDQBVY.cjs.map +1 -0
  147. package/dist/core/index.cjs +807 -4333
  148. package/dist/core/index.cjs.map +1 -1
  149. package/dist/core/index.js +14 -4130
  150. package/dist/core/index.js.map +1 -1
  151. package/dist/i18n/index.cjs +86 -558
  152. package/dist/i18n/index.cjs.map +1 -1
  153. package/dist/i18n/index.js +1 -544
  154. package/dist/i18n/index.js.map +1 -1
  155. package/dist/index.cjs +1432 -17140
  156. package/dist/index.cjs.map +1 -1
  157. package/dist/index.d.cts +1 -1
  158. package/dist/index.d.ts +1 -1
  159. package/dist/index.js +31 -16785
  160. package/dist/index.js.map +1 -1
  161. package/dist/marketing/index.cjs +142 -3072
  162. package/dist/marketing/index.cjs.map +1 -1
  163. package/dist/marketing/index.js +11 -3042
  164. package/dist/marketing/index.js.map +1 -1
  165. package/dist/motion/index.cjs +26 -1222
  166. package/dist/motion/index.cjs.map +1 -1
  167. package/dist/motion/index.js +2 -1215
  168. package/dist/motion/index.js.map +1 -1
  169. package/dist/nav/index.cjs +101 -1518
  170. package/dist/nav/index.cjs.map +1 -1
  171. package/dist/nav/index.js +4 -1498
  172. package/dist/nav/index.js.map +1 -1
  173. package/dist/report/index.cjs +171 -2403
  174. package/dist/report/index.cjs.map +1 -1
  175. package/dist/report/index.js +3 -2363
  176. package/dist/report/index.js.map +1 -1
  177. package/dist/sections/index.cjs +22 -377
  178. package/dist/sections/index.cjs.map +1 -1
  179. package/dist/sections/index.d.cts +1 -1
  180. package/dist/sections/index.d.ts +1 -1
  181. package/dist/sections/index.js +6 -369
  182. package/dist/sections/index.js.map +1 -1
  183. package/dist/social-proof/index.cjs +53 -1250
  184. package/dist/social-proof/index.cjs.map +1 -1
  185. package/dist/social-proof/index.js +6 -1235
  186. package/dist/social-proof/index.js.map +1 -1
  187. package/dist/theme/index.cjs +38 -565
  188. package/dist/theme/index.cjs.map +1 -1
  189. package/dist/theme/index.js +2 -555
  190. package/dist/theme/index.js.map +1 -1
  191. package/dist/web/client/index.cjs +38 -491
  192. package/dist/web/client/index.cjs.map +1 -1
  193. package/dist/web/client/index.js +4 -483
  194. package/dist/web/client/index.js.map +1 -1
  195. package/dist/web/index.cjs +158 -1346
  196. package/dist/web/index.cjs.map +1 -1
  197. package/dist/web/index.js +9 -1305
  198. package/dist/web/index.js.map +1 -1
  199. package/dist/web/server/index.cjs +26 -563
  200. package/dist/web/server/index.cjs.map +1 -1
  201. package/dist/web/server/index.js +1 -560
  202. package/dist/web/server/index.js.map +1 -1
  203. package/package.json +1 -1
@@ -1,573 +1,46 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var React2 = require('react');
5
- var jsxRuntime = require('react/jsx-runtime');
6
- var lucideReact = require('lucide-react');
7
- var clsx2 = require('clsx');
4
+ var chunkKCKUSU2M_cjs = require('../chunk-KCKUSU2M.cjs');
5
+ var chunkCH42VPWE_cjs = require('../chunk-CH42VPWE.cjs');
8
6
 
9
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
7
 
11
- var React2__default = /*#__PURE__*/_interopDefault(React2);
12
- var clsx2__default = /*#__PURE__*/_interopDefault(clsx2);
13
8
 
14
- // src/theme/AppearanceProvider.tsx
15
- var STORAGE_KEY = "void-appearance-settings";
16
- var DEFAULT_SETTINGS = {
17
- theme: "dark",
18
- brand: "default",
19
- navPlacement: "left",
20
- density: "comfortable",
21
- radius: "playful",
22
- customColor: "#f97316"
23
- // Default orange as fallback
24
- };
25
- function hexToRgb(hex) {
26
- const cleanHex = hex.replace(/^#/, "");
27
- const r = parseInt(cleanHex.substring(0, 2), 16);
28
- const g = parseInt(cleanHex.substring(2, 4), 16);
29
- const b = parseInt(cleanHex.substring(4, 6), 16);
30
- if (isNaN(r) || isNaN(g) || isNaN(b)) {
31
- return "249, 115, 22";
32
- }
33
- return `${r}, ${g}, ${b}`;
34
- }
35
- function generateSecondaryColor(hex) {
36
- const cleanHex = hex.replace(/^#/, "");
37
- const r = parseInt(cleanHex.substring(0, 2), 16);
38
- const g = parseInt(cleanHex.substring(2, 4), 16);
39
- const b = parseInt(cleanHex.substring(4, 6), 16);
40
- if (isNaN(r) || isNaN(g) || isNaN(b)) {
41
- return "255, 208, 0";
42
- }
43
- const secondary = {
44
- r: Math.min(255, g + 50),
45
- g: Math.min(255, b + 100),
46
- b: Math.min(255, r)
47
- };
48
- return `${secondary.r}, ${secondary.g}, ${secondary.b}`;
49
- }
50
- function loadSettings() {
51
- if (typeof window === "undefined") return DEFAULT_SETTINGS;
52
- try {
53
- const stored = localStorage.getItem(STORAGE_KEY);
54
- if (stored) {
55
- const parsed = JSON.parse(stored);
56
- return {
57
- theme: parsed.theme || DEFAULT_SETTINGS.theme,
58
- brand: parsed.brand || DEFAULT_SETTINGS.brand,
59
- navPlacement: parsed.navPlacement || DEFAULT_SETTINGS.navPlacement,
60
- density: parsed.density || DEFAULT_SETTINGS.density,
61
- radius: parsed.radius || DEFAULT_SETTINGS.radius,
62
- customColor: parsed.customColor || DEFAULT_SETTINGS.customColor
63
- };
64
- }
65
- } catch {
66
- }
67
- return {
68
- ...DEFAULT_SETTINGS,
69
- theme: "dark"
70
- };
71
- }
72
- function saveSettings(settings) {
73
- if (typeof window === "undefined") return;
74
- try {
75
- localStorage.setItem(STORAGE_KEY, JSON.stringify(settings));
76
- } catch {
77
- }
78
- }
79
- function applySettings(settings) {
80
- if (typeof document === "undefined") return;
81
- const root = document.documentElement;
82
- root.setAttribute("data-theme", settings.theme);
83
- root.setAttribute("data-brand", settings.brand);
84
- root.setAttribute("data-nav", settings.navPlacement);
85
- root.setAttribute("data-density", settings.density);
86
- root.setAttribute("data-radius", settings.radius);
87
- if (settings.brand === "custom") {
88
- const primaryRgb = hexToRgb(settings.customColor);
89
- const secondaryRgb = generateSecondaryColor(settings.customColor);
90
- root.style.setProperty("--custom-accent-rgb", primaryRgb);
91
- root.style.setProperty("--custom-accent2-rgb", secondaryRgb);
92
- } else {
93
- root.style.removeProperty("--custom-accent-rgb");
94
- root.style.removeProperty("--custom-accent2-rgb");
95
- }
96
- }
97
- function prefersReducedMotion() {
98
- if (typeof window === "undefined") return false;
99
- return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
100
- }
101
- var AppearanceContext = React2.createContext(null);
102
- function AppearanceProvider({
103
- initialSettings,
104
- disablePersistence = false,
105
- children
106
- }) {
107
- const [settings, setSettings] = React2.useState(() => ({
108
- ...DEFAULT_SETTINGS,
109
- ...initialSettings
110
- }));
111
- const [hydrated, setHydrated] = React2.useState(false);
112
- React2.useEffect(() => {
113
- if (!disablePersistence) {
114
- const loaded = loadSettings();
115
- setSettings({
116
- ...loaded,
117
- // initialSettings still take priority over localStorage
118
- ...initialSettings
119
- });
120
- }
121
- setHydrated(true);
122
- }, []);
123
- React2.useEffect(() => {
124
- applySettings(settings);
125
- if (!disablePersistence && hydrated) {
126
- saveSettings(settings);
127
- }
128
- }, [settings, disablePersistence, hydrated]);
129
- React2.useEffect(() => {
130
- if (typeof window === "undefined") return;
131
- const mediaQuery = window.matchMedia("(prefers-color-scheme: light)");
132
- const handleChange = (e) => {
133
- setSettings((prev) => {
134
- if (prev.theme === "light-contrast" || prev.theme === "dark-contrast") {
135
- return prev;
136
- }
137
- return {
138
- ...prev,
139
- theme: e.matches ? "light" : "dark"
140
- };
141
- });
142
- };
143
- mediaQuery.addEventListener("change", handleChange);
144
- return () => mediaQuery.removeEventListener("change", handleChange);
145
- }, []);
146
- React2.useEffect(() => {
147
- if (typeof window === "undefined") return;
148
- const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
149
- const handleChange = () => {
150
- applySettings(settings);
151
- };
152
- mediaQuery.addEventListener("change", handleChange);
153
- return () => mediaQuery.removeEventListener("change", handleChange);
154
- }, [settings]);
155
- const setTheme = React2.useCallback((theme) => {
156
- setSettings((prev) => ({ ...prev, theme }));
157
- }, []);
158
- const setBrand = React2.useCallback((brand) => {
159
- setSettings((prev) => ({ ...prev, brand }));
160
- }, []);
161
- const setNavPlacement = React2.useCallback((navPlacement) => {
162
- setSettings((prev) => ({ ...prev, navPlacement }));
163
- }, []);
164
- const setDensity = React2.useCallback((density) => {
165
- setSettings((prev) => ({ ...prev, density }));
166
- }, []);
167
- const setRadius = React2.useCallback((radius) => {
168
- setSettings((prev) => ({ ...prev, radius }));
169
- }, []);
170
- const setCustomColor = React2.useCallback((customColor) => {
171
- setSettings((prev) => ({ ...prev, customColor, brand: "custom" }));
172
- }, []);
173
- const setAppearance = React2.useCallback((partial) => {
174
- setSettings((prev) => ({ ...prev, ...partial }));
175
- }, []);
176
- const resetToDefaults = React2.useCallback(() => {
177
- setSettings(DEFAULT_SETTINGS);
178
- }, []);
179
- const contextValue = {
180
- ...settings,
181
- setTheme,
182
- setBrand,
183
- setNavPlacement,
184
- setDensity,
185
- setRadius,
186
- setCustomColor,
187
- setAppearance,
188
- resetToDefaults
189
- };
190
- return /* @__PURE__ */ jsxRuntime.jsx(AppearanceContext.Provider, { value: contextValue, children });
191
- }
192
- function useAppearance() {
193
- const context = React2.useContext(AppearanceContext);
194
- if (!context) {
195
- throw new Error("useAppearance must be used within an AppearanceProvider");
196
- }
197
- return context;
198
- }
199
- function initializeAppearance(settings) {
200
- const loaded = loadSettings();
201
- const merged = { ...loaded, ...settings };
202
- applySettings(merged);
203
- }
204
- var ThemeSelector = ({ className, style }) => {
205
- const { theme, setTheme } = useAppearance();
206
- const handleThemeChange = (newTheme) => {
207
- setTheme(newTheme);
208
- };
209
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx2__default.default("ds-theme-selector", className), style, role: "group", "aria-label": "Theme Selector", children: [
210
- /* @__PURE__ */ jsxRuntime.jsxs(
211
- "button",
212
- {
213
- type: "button",
214
- className: clsx2__default.default("ds-theme-selector__btn", { "ds-theme-selector__btn--active": theme === "light" }),
215
- onClick: () => handleThemeChange("light"),
216
- "aria-pressed": theme === "light",
217
- children: [
218
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sun, { className: "ds-theme-selector__icon" }),
219
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-theme-selector__label", children: "Light" })
220
- ]
221
- }
222
- ),
223
- /* @__PURE__ */ jsxRuntime.jsxs(
224
- "button",
225
- {
226
- type: "button",
227
- className: clsx2__default.default("ds-theme-selector__btn", { "ds-theme-selector__btn--active": theme === "light-contrast" }),
228
- onClick: () => handleThemeChange("light-contrast"),
229
- "aria-pressed": theme === "light-contrast",
230
- children: [
231
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sun, { className: "ds-theme-selector__icon" }),
232
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-theme-selector__label", children: "Light HC" })
233
- ]
234
- }
235
- ),
236
- /* @__PURE__ */ jsxRuntime.jsxs(
237
- "button",
238
- {
239
- type: "button",
240
- className: clsx2__default.default("ds-theme-selector__btn", { "ds-theme-selector__btn--active": theme === "dark" }),
241
- onClick: () => handleThemeChange("dark"),
242
- "aria-pressed": theme === "dark",
243
- children: [
244
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Moon, { className: "ds-theme-selector__icon" }),
245
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-theme-selector__label", children: "Dark" })
246
- ]
247
- }
248
- ),
249
- /* @__PURE__ */ jsxRuntime.jsxs(
250
- "button",
251
- {
252
- type: "button",
253
- className: clsx2__default.default("ds-theme-selector__btn", { "ds-theme-selector__btn--active": theme === "dark-contrast" }),
254
- onClick: () => handleThemeChange("dark-contrast"),
255
- "aria-pressed": theme === "dark-contrast",
256
- children: [
257
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Moon, { className: "ds-theme-selector__icon" }),
258
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-theme-selector__label", children: "Dark HC" })
259
- ]
260
- }
261
- )
262
- ] });
263
- };
264
- ThemeSelector.displayName = "ThemeSelector";
265
- var AppearancePanel = React2__default.default.forwardRef(
266
- ({ className, labels: l }, ref) => {
267
- const {
268
- theme,
269
- brand,
270
- navPlacement,
271
- density,
272
- radius,
273
- customColor,
274
- setTheme,
275
- setBrand,
276
- setNavPlacement,
277
- setDensity,
278
- setRadius,
279
- setCustomColor,
280
- resetToDefaults
281
- } = useAppearance();
282
- const colorPickerId = React2.useId();
283
- const themeOptions = [
284
- { value: "light", label: l?.themeLight ?? "Light" },
285
- { value: "light-contrast", label: l?.themeLightContrast ?? "Light (High Contrast)" },
286
- { value: "dark", label: l?.themeDark ?? "Dark" },
287
- { value: "dark-contrast", label: l?.themeDarkContrast ?? "Dark (High Contrast)" }
288
- ];
289
- const brandOptions = [
290
- { value: "default", label: l?.brandDefault ?? "Default", description: l?.brandDefaultDescription ?? "Warm Intelligence" },
291
- { value: "salesmind", label: l?.brandSalesmind ?? "SalesMind", description: l?.brandSalesmindDescription ?? "Pink-red + Gold" },
292
- { value: "custom", label: l?.brandCustom ?? "Custom", description: l?.brandCustomDescription ?? "Your color" }
293
- ];
294
- const navOptions = [
295
- { value: "left", label: l?.navLeft ?? "Left Sidebar" },
296
- { value: "right", label: l?.navRight ?? "Right Sidebar" },
297
- { value: "bottom", label: l?.navBottom ?? "Bottom Tabs" }
298
- ];
299
- const densityOptions = [
300
- { value: "comfortable", label: l?.densityComfortable ?? "Comfortable", description: l?.densityComfortableDescription ?? "Generous spacing" },
301
- { value: "compact", label: l?.densityCompact ?? "Compact", description: l?.densityCompactDescription ?? "Higher density" }
302
- ];
303
- const radiusOptions = [
304
- { value: "playful", label: l?.radiusPlayful ?? "Playful", description: l?.radiusPlayfulDescription ?? "Rounded corners" },
305
- { value: "sharp", label: l?.radiusSharp ?? "Sharp", description: l?.radiusSharpDescription ?? "Technical feel" }
306
- ];
307
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: clsx2__default.default("ds-appearance-panel", className), children: [
308
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-appearance-panel__title", children: l?.title ?? "Appearance Settings" }),
309
- /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "ds-appearance-panel__section", children: [
310
- /* @__PURE__ */ jsxRuntime.jsx("legend", { className: "ds-appearance-panel__legend", children: l?.themeHeading ?? "Theme" }),
311
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-appearance-panel__options", children: themeOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
312
- "label",
313
- {
314
- className: clsx2__default.default(
315
- "ds-appearance-panel__option",
316
- theme === option.value && "ds-appearance-panel__option--active"
317
- ),
318
- children: [
319
- /* @__PURE__ */ jsxRuntime.jsx(
320
- "input",
321
- {
322
- type: "radio",
323
- name: "theme",
324
- value: option.value,
325
- checked: theme === option.value,
326
- onChange: () => setTheme(option.value),
327
- className: "ds-appearance-panel__radio"
328
- }
329
- ),
330
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-appearance-panel__option-label", children: option.label })
331
- ]
332
- },
333
- option.value
334
- )) })
335
- ] }),
336
- /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "ds-appearance-panel__section", children: [
337
- /* @__PURE__ */ jsxRuntime.jsx("legend", { className: "ds-appearance-panel__legend", children: l?.brandHeading ?? "Brand" }),
338
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-appearance-panel__options", children: brandOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
339
- "label",
340
- {
341
- className: clsx2__default.default(
342
- "ds-appearance-panel__option",
343
- brand === option.value && "ds-appearance-panel__option--active"
344
- ),
345
- children: [
346
- /* @__PURE__ */ jsxRuntime.jsx(
347
- "input",
348
- {
349
- type: "radio",
350
- name: "brand",
351
- value: option.value,
352
- checked: brand === option.value,
353
- onChange: () => setBrand(option.value),
354
- className: "ds-appearance-panel__radio"
355
- }
356
- ),
357
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-appearance-panel__option-content", children: [
358
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-appearance-panel__option-label", children: option.label }),
359
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-appearance-panel__option-description", children: option.description })
360
- ] })
361
- ]
362
- },
363
- option.value
364
- )) }),
365
- brand === "custom" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-appearance-panel__color-picker", children: [
366
- /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: colorPickerId, className: "ds-appearance-panel__color-label", children: l?.accentColorLabel ?? "Accent Color" }),
367
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-appearance-panel__color-input-wrapper", children: [
368
- /* @__PURE__ */ jsxRuntime.jsx(
369
- "input",
370
- {
371
- type: "color",
372
- id: colorPickerId,
373
- value: customColor,
374
- onChange: (e) => setCustomColor(e.target.value),
375
- className: "ds-appearance-panel__color-input"
376
- }
377
- ),
378
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-appearance-panel__color-value", children: customColor.toUpperCase() })
379
- ] })
380
- ] })
381
- ] }),
382
- /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "ds-appearance-panel__section", children: [
383
- /* @__PURE__ */ jsxRuntime.jsx("legend", { className: "ds-appearance-panel__legend", children: l?.densityHeading ?? "Density" }),
384
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-appearance-panel__options ds-appearance-panel__options--row", children: densityOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
385
- "label",
386
- {
387
- className: clsx2__default.default(
388
- "ds-appearance-panel__option",
389
- "ds-appearance-panel__option--toggle",
390
- density === option.value && "ds-appearance-panel__option--active"
391
- ),
392
- children: [
393
- /* @__PURE__ */ jsxRuntime.jsx(
394
- "input",
395
- {
396
- type: "radio",
397
- name: "density",
398
- value: option.value,
399
- checked: density === option.value,
400
- onChange: () => setDensity(option.value),
401
- className: "ds-appearance-panel__radio"
402
- }
403
- ),
404
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-appearance-panel__option-content", children: [
405
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-appearance-panel__option-label", children: option.label }),
406
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-appearance-panel__option-description", children: option.description })
407
- ] })
408
- ]
409
- },
410
- option.value
411
- )) })
412
- ] }),
413
- /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "ds-appearance-panel__section", children: [
414
- /* @__PURE__ */ jsxRuntime.jsx("legend", { className: "ds-appearance-panel__legend", children: l?.geometryHeading ?? "Geometry" }),
415
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-appearance-panel__options ds-appearance-panel__options--row", children: radiusOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
416
- "label",
417
- {
418
- className: clsx2__default.default(
419
- "ds-appearance-panel__option",
420
- "ds-appearance-panel__option--toggle",
421
- radius === option.value && "ds-appearance-panel__option--active"
422
- ),
423
- children: [
424
- /* @__PURE__ */ jsxRuntime.jsx(
425
- "input",
426
- {
427
- type: "radio",
428
- name: "radius",
429
- value: option.value,
430
- checked: radius === option.value,
431
- onChange: () => setRadius(option.value),
432
- className: "ds-appearance-panel__radio"
433
- }
434
- ),
435
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ds-appearance-panel__option-content", children: [
436
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-appearance-panel__option-label", children: option.label }),
437
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-appearance-panel__option-description", children: option.description })
438
- ] })
439
- ]
440
- },
441
- option.value
442
- )) })
443
- ] }),
444
- /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "ds-appearance-panel__section", children: [
445
- /* @__PURE__ */ jsxRuntime.jsx("legend", { className: "ds-appearance-panel__legend", children: l?.navHeading ?? "Navigation Layout" }),
446
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-appearance-panel__options", children: navOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsxs(
447
- "label",
448
- {
449
- className: clsx2__default.default(
450
- "ds-appearance-panel__option",
451
- navPlacement === option.value && "ds-appearance-panel__option--active"
452
- ),
453
- children: [
454
- /* @__PURE__ */ jsxRuntime.jsx(
455
- "input",
456
- {
457
- type: "radio",
458
- name: "nav",
459
- value: option.value,
460
- checked: navPlacement === option.value,
461
- onChange: () => setNavPlacement(option.value),
462
- className: "ds-appearance-panel__radio"
463
- }
464
- ),
465
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-appearance-panel__option-label", children: option.label })
466
- ]
467
- },
468
- option.value
469
- )) })
470
- ] }),
471
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: resetToDefaults, className: "ds-appearance-panel__reset", children: l?.resetLabel ?? "Reset to Defaults" })
472
- ] });
473
- }
474
- );
475
- AppearancePanel.displayName = "AppearancePanel";
476
- var BRAND_PRESETS = [
477
- { value: "default", label: "Warm Intelligence", color: "#f97316" },
478
- { value: "salesmind", label: "SalesMind", color: "#ff005a" }
479
- ];
480
- var ColorPicker = React2__default.default.forwardRef(
481
- ({ className, style }, ref) => {
482
- const { brand, setBrand, customColor, setCustomColor } = useAppearance();
483
- return /* @__PURE__ */ jsxRuntime.jsxs(
484
- "div",
485
- {
486
- ref,
487
- className: clsx2__default.default("ds-color-picker", className),
488
- style,
489
- role: "group",
490
- "aria-label": "Brand Color",
491
- children: [
492
- BRAND_PRESETS.map(({ value, label, color }) => /* @__PURE__ */ jsxRuntime.jsx(
493
- "button",
494
- {
495
- type: "button",
496
- className: clsx2__default.default("ds-color-picker__swatch", {
497
- "ds-color-picker__swatch--active": brand === value
498
- }),
499
- onClick: () => setBrand(value),
500
- "aria-label": `Switch to ${label} color scheme`,
501
- "aria-pressed": brand === value,
502
- title: label,
503
- children: /* @__PURE__ */ jsxRuntime.jsx(
504
- "span",
505
- {
506
- className: "ds-color-picker__dot",
507
- style: { "--swatch-color": color }
508
- }
509
- )
510
- },
511
- value
512
- )),
513
- /* @__PURE__ */ jsxRuntime.jsxs(
514
- "label",
515
- {
516
- className: clsx2__default.default("ds-color-picker__swatch", "ds-color-picker__swatch--custom", {
517
- "ds-color-picker__swatch--active": brand === "custom"
518
- }),
519
- title: `Custom: ${customColor}`,
520
- children: [
521
- /* @__PURE__ */ jsxRuntime.jsx(
522
- "span",
523
- {
524
- className: "ds-color-picker__dot",
525
- style: { "--swatch-color": customColor }
526
- }
527
- ),
528
- /* @__PURE__ */ jsxRuntime.jsx(
529
- "input",
530
- {
531
- type: "color",
532
- value: customColor,
533
- onChange: (e) => setCustomColor(e.target.value),
534
- className: "ds-color-picker__native-input",
535
- "aria-label": "Pick a custom accent color"
536
- }
537
- )
538
- ]
539
- }
540
- )
541
- ]
542
- }
543
- );
544
- }
545
- );
546
- ColorPicker.displayName = "ColorPicker";
547
- var VoidBackground = React2__default.default.forwardRef(
548
- ({ showGrid = true, showGrain = true, className, children }, ref) => {
549
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: clsx2__default.default("void", className), children: [
550
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "void__base", "aria-hidden": "true" }),
551
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "void__orbs", "aria-hidden": "true", children: [
552
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "void__orb void__orb--warm" }),
553
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "void__orb void__orb--purple" })
554
- ] }),
555
- showGrid && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "void__grid", "aria-hidden": "true" }),
556
- showGrain && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "void__grain", "aria-hidden": "true" }),
557
- children && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "void__content", children })
558
- ] });
559
- }
560
- );
561
- VoidBackground.displayName = "VoidBackground";
562
-
563
- exports.AppearancePanel = AppearancePanel;
564
- exports.AppearanceProvider = AppearanceProvider;
565
- exports.ColorPicker = ColorPicker;
566
- exports.ThemeSelector = ThemeSelector;
567
- exports.VoidBackground = VoidBackground;
568
- exports.hexToRgb = hexToRgb;
569
- exports.initializeAppearance = initializeAppearance;
570
- exports.prefersReducedMotion = prefersReducedMotion;
571
- exports.useAppearance = useAppearance;
9
+ Object.defineProperty(exports, "ColorPicker", {
10
+ enumerable: true,
11
+ get: function () { return chunkKCKUSU2M_cjs.ColorPicker; }
12
+ });
13
+ Object.defineProperty(exports, "ThemeSelector", {
14
+ enumerable: true,
15
+ get: function () { return chunkKCKUSU2M_cjs.ThemeSelector; }
16
+ });
17
+ Object.defineProperty(exports, "VoidBackground", {
18
+ enumerable: true,
19
+ get: function () { return chunkKCKUSU2M_cjs.VoidBackground; }
20
+ });
21
+ Object.defineProperty(exports, "AppearancePanel", {
22
+ enumerable: true,
23
+ get: function () { return chunkCH42VPWE_cjs.AppearancePanel; }
24
+ });
25
+ Object.defineProperty(exports, "AppearanceProvider", {
26
+ enumerable: true,
27
+ get: function () { return chunkCH42VPWE_cjs.AppearanceProvider; }
28
+ });
29
+ Object.defineProperty(exports, "hexToRgb", {
30
+ enumerable: true,
31
+ get: function () { return chunkCH42VPWE_cjs.hexToRgb; }
32
+ });
33
+ Object.defineProperty(exports, "initializeAppearance", {
34
+ enumerable: true,
35
+ get: function () { return chunkCH42VPWE_cjs.initializeAppearance; }
36
+ });
37
+ Object.defineProperty(exports, "prefersReducedMotion", {
38
+ enumerable: true,
39
+ get: function () { return chunkCH42VPWE_cjs.prefersReducedMotion; }
40
+ });
41
+ Object.defineProperty(exports, "useAppearance", {
42
+ enumerable: true,
43
+ get: function () { return chunkCH42VPWE_cjs.useAppearance; }
44
+ });
572
45
  //# sourceMappingURL=out.js.map
573
46
  //# sourceMappingURL=index.cjs.map