@frontlit/page-builder 0.1.0-alpha.1

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 (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +97 -0
  3. package/dist/alignment-dZDzN96G.d.ts +5 -0
  4. package/dist/blocks/index.d.ts +255 -0
  5. package/dist/blocks/index.js +6 -0
  6. package/dist/blocks/index.js.map +1 -0
  7. package/dist/builder/index.d.ts +240 -0
  8. package/dist/builder/index.js +8 -0
  9. package/dist/builder/index.js.map +1 -0
  10. package/dist/button-C3VrMJkr.d.ts +20 -0
  11. package/dist/chunk-7KIX4WAO.js +4229 -0
  12. package/dist/chunk-7KIX4WAO.js.map +1 -0
  13. package/dist/chunk-7W6Q4WA7.js +515 -0
  14. package/dist/chunk-7W6Q4WA7.js.map +1 -0
  15. package/dist/chunk-GTY75HW2.js +22 -0
  16. package/dist/chunk-GTY75HW2.js.map +1 -0
  17. package/dist/chunk-MO76KZY2.js +3580 -0
  18. package/dist/chunk-MO76KZY2.js.map +1 -0
  19. package/dist/chunk-RBJBODQP.js +2011 -0
  20. package/dist/chunk-RBJBODQP.js.map +1 -0
  21. package/dist/chunk-RUYOL7JZ.js +4 -0
  22. package/dist/chunk-RUYOL7JZ.js.map +1 -0
  23. package/dist/chunk-SSQWYMQR.js +393 -0
  24. package/dist/chunk-SSQWYMQR.js.map +1 -0
  25. package/dist/color-mode-DIEEt9WP.d.ts +3 -0
  26. package/dist/components/index.d.ts +36 -0
  27. package/dist/components/index.js +5 -0
  28. package/dist/components/index.js.map +1 -0
  29. package/dist/data-slots.d.ts +25 -0
  30. package/dist/data-slots.js +3 -0
  31. package/dist/data-slots.js.map +1 -0
  32. package/dist/fonts/alegreya/alegreya-latin-variable.woff2 +0 -0
  33. package/dist/fonts/bebas-neue/bebas-neue-latin-400-normal.woff2 +0 -0
  34. package/dist/fonts/inter/inter-latin-variable.woff2 +0 -0
  35. package/dist/fonts/lato/lato-latin-100-normal.woff2 +0 -0
  36. package/dist/fonts/lato/lato-latin-300-normal.woff2 +0 -0
  37. package/dist/fonts/lato/lato-latin-400-normal.woff2 +0 -0
  38. package/dist/fonts/lato/lato-latin-700-normal.woff2 +0 -0
  39. package/dist/fonts/lato/lato-latin-900-normal.woff2 +0 -0
  40. package/dist/fonts/merriweather/merriweather-latin-variable.woff2 +0 -0
  41. package/dist/fonts/montserrat/montserrat-latin-100-normal.woff2 +0 -0
  42. package/dist/fonts/montserrat/montserrat-latin-200-normal.woff2 +0 -0
  43. package/dist/fonts/montserrat/montserrat-latin-300-normal.woff2 +0 -0
  44. package/dist/fonts/montserrat/montserrat-latin-400-normal.woff2 +0 -0
  45. package/dist/fonts/montserrat/montserrat-latin-500-normal.woff2 +0 -0
  46. package/dist/fonts/montserrat/montserrat-latin-600-normal.woff2 +0 -0
  47. package/dist/fonts/montserrat/montserrat-latin-700-normal.woff2 +0 -0
  48. package/dist/fonts/montserrat/montserrat-latin-800-normal.woff2 +0 -0
  49. package/dist/fonts/montserrat/montserrat-latin-900-normal.woff2 +0 -0
  50. package/dist/fonts/montserrat/montserrat-latin-variable.woff2 +0 -0
  51. package/dist/fonts/mulish/mulish-latin-variable.woff2 +0 -0
  52. package/dist/fonts/noto-sans/noto-sans-latin-variable.woff2 +0 -0
  53. package/dist/fonts/nunito/nunito-latin-variable.woff2 +0 -0
  54. package/dist/fonts/open-sans/open-sans-latin-variable.woff2 +0 -0
  55. package/dist/fonts/oswald/oswald-latin-variable.woff2 +0 -0
  56. package/dist/fonts/playfair-display/playfair-display-latin-variable.woff2 +0 -0
  57. package/dist/fonts/poppins/poppins-latin-100-normal.woff2 +0 -0
  58. package/dist/fonts/poppins/poppins-latin-200-normal.woff2 +0 -0
  59. package/dist/fonts/poppins/poppins-latin-300-normal.woff2 +0 -0
  60. package/dist/fonts/poppins/poppins-latin-400-normal.woff2 +0 -0
  61. package/dist/fonts/poppins/poppins-latin-500-normal.woff2 +0 -0
  62. package/dist/fonts/poppins/poppins-latin-600-normal.woff2 +0 -0
  63. package/dist/fonts/poppins/poppins-latin-700-normal.woff2 +0 -0
  64. package/dist/fonts/poppins/poppins-latin-800-normal.woff2 +0 -0
  65. package/dist/fonts/poppins/poppins-latin-900-normal.woff2 +0 -0
  66. package/dist/fonts/pt-sans/pt-sans-latin-400-normal.woff2 +0 -0
  67. package/dist/fonts/pt-sans/pt-sans-latin-700-normal.woff2 +0 -0
  68. package/dist/fonts/quicksand/quicksand-latin-variable.woff2 +0 -0
  69. package/dist/fonts/raleway/raleway-latin-variable.woff2 +0 -0
  70. package/dist/fonts/roboto/roboto-latin-variable.woff2 +0 -0
  71. package/dist/fonts/roboto-slab/roboto-slab-latin-variable.woff2 +0 -0
  72. package/dist/fonts/rubik/rubik-latin-variable.woff2 +0 -0
  73. package/dist/fonts/source-sans-3/source-sans-3-latin-400-normal.woff2 +0 -0
  74. package/dist/fonts/source-sans-3/source-sans-3-latin-variable.woff2 +0 -0
  75. package/dist/fonts/source-serif-4/source-serif-4-latin-variable.woff2 +0 -0
  76. package/dist/fonts/work-sans/work-sans-latin-variable.woff2 +0 -0
  77. package/dist/image-D7GlnOio.d.ts +30 -0
  78. package/dist/index.d.ts +59 -0
  79. package/dist/index.js +10 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/media-Njv378j7.d.ts +13 -0
  82. package/dist/models/index.d.ts +8 -0
  83. package/dist/models/index.js +4 -0
  84. package/dist/models/index.js.map +1 -0
  85. package/dist/nav-link-BfxvQ1s6.d.ts +37 -0
  86. package/dist/page-DfVl_aHX.d.ts +26 -0
  87. package/dist/primitives/index.d.ts +140 -0
  88. package/dist/primitives/index.js +4 -0
  89. package/dist/primitives/index.js.map +1 -0
  90. package/dist/renderer/index.d.ts +81 -0
  91. package/dist/renderer/index.js +7 -0
  92. package/dist/renderer/index.js.map +1 -0
  93. package/dist/section-background-BgOCp5l3.d.ts +50 -0
  94. package/dist/styles.css +15322 -0
  95. package/dist/theme-style-39nxXQy0.d.ts +141 -0
  96. package/dist/theme.css +242 -0
  97. package/dist/widget--uEOpdq3.d.ts +105 -0
  98. package/package.json +142 -0
@@ -0,0 +1,2011 @@
1
+ "use client";
2
+ import { clsx } from 'clsx';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
+ import * as React10 from 'react';
6
+ import React10__default, { useRef, useState, useLayoutEffect } from 'react';
7
+ import { Slot } from '@radix-ui/react-slot';
8
+ import { cva } from 'class-variance-authority';
9
+ import * as LabelPrimitive from '@radix-ui/react-label';
10
+ import * as SwitchPrimitives from '@radix-ui/react-switch';
11
+ import * as SheetPrimitive from '@radix-ui/react-dialog';
12
+ import { X } from 'lucide-react';
13
+
14
+ // src/primitives/lib/utils.ts
15
+ function cn(...inputs) {
16
+ return twMerge(clsx(inputs));
17
+ }
18
+ var Preheader = ({
19
+ children,
20
+ className = "",
21
+ theme,
22
+ ...props
23
+ }) => {
24
+ const typographyStyles = theme?.typography?.preheader;
25
+ const classes = cn(
26
+ // Base styles
27
+ "text-sm font-medium uppercase tracking-wide",
28
+ // Theme typography
29
+ typographyStyles?.fontFamily,
30
+ typographyStyles?.fontSize,
31
+ typographyStyles?.fontWeight,
32
+ typographyStyles?.lineHeight,
33
+ typographyStyles?.letterSpacing,
34
+ typographyStyles?.textTransform,
35
+ typographyStyles?.textDecoration,
36
+ typographyStyles?.textOverflow,
37
+ className
38
+ );
39
+ return /* @__PURE__ */ jsx("p", { className: classes, ...props, children });
40
+ };
41
+ var Header1 = ({
42
+ children,
43
+ className = "",
44
+ theme,
45
+ ...props
46
+ }) => {
47
+ const typographyStyles = theme?.typography?.header1;
48
+ const classes = cn(
49
+ // Base styles
50
+ "scroll-m-20 text-4xl font-bold tracking-tight",
51
+ // Theme overrides
52
+ typographyStyles?.fontFamily,
53
+ typographyStyles?.fontSize,
54
+ typographyStyles?.fontWeight,
55
+ typographyStyles?.lineHeight,
56
+ typographyStyles?.letterSpacing,
57
+ typographyStyles?.textTransform,
58
+ typographyStyles?.textDecoration,
59
+ typographyStyles?.textOverflow,
60
+ className
61
+ );
62
+ return /* @__PURE__ */ jsx("h1", { className: classes, ...props, children });
63
+ };
64
+ var Header2 = ({
65
+ children,
66
+ className = "",
67
+ theme,
68
+ ...props
69
+ }) => {
70
+ const typographyStyles = theme?.typography?.header2;
71
+ const classes = cn(
72
+ // Base styles
73
+ "scroll-m-20 text-3xl font-bold tracking-tight",
74
+ // Theme overrides
75
+ typographyStyles?.fontFamily,
76
+ typographyStyles?.fontSize,
77
+ typographyStyles?.fontWeight,
78
+ typographyStyles?.lineHeight,
79
+ typographyStyles?.letterSpacing,
80
+ typographyStyles?.textTransform,
81
+ typographyStyles?.textDecoration,
82
+ typographyStyles?.textOverflow,
83
+ className
84
+ );
85
+ return /* @__PURE__ */ jsx("h2", { className: classes, ...props, children });
86
+ };
87
+ var Header3 = ({
88
+ children,
89
+ className = "",
90
+ theme,
91
+ ...props
92
+ }) => {
93
+ const typographyStyles = theme?.typography?.header3;
94
+ const classes = cn(
95
+ // Base styles
96
+ "scroll-m-20 text-2xl font-semibold tracking-normal",
97
+ // Theme overrides
98
+ typographyStyles?.fontFamily,
99
+ typographyStyles?.fontSize,
100
+ typographyStyles?.fontWeight,
101
+ typographyStyles?.lineHeight,
102
+ typographyStyles?.letterSpacing,
103
+ typographyStyles?.textTransform,
104
+ typographyStyles?.textDecoration,
105
+ typographyStyles?.textOverflow,
106
+ className
107
+ );
108
+ return /* @__PURE__ */ jsx("h3", { className: classes, ...props, children });
109
+ };
110
+ var Header4 = ({
111
+ children,
112
+ className = "",
113
+ theme,
114
+ ...props
115
+ }) => {
116
+ const typographyStyles = theme?.typography?.header4;
117
+ const classes = cn(
118
+ // Base styles
119
+ "scroll-m-20 text-xl font-semibold tracking-normal",
120
+ // Theme overrides
121
+ typographyStyles?.fontFamily,
122
+ typographyStyles?.fontSize,
123
+ typographyStyles?.fontWeight,
124
+ typographyStyles?.lineHeight,
125
+ typographyStyles?.letterSpacing,
126
+ typographyStyles?.textTransform,
127
+ typographyStyles?.textDecoration,
128
+ typographyStyles?.textOverflow,
129
+ className
130
+ );
131
+ return /* @__PURE__ */ jsx("h4", { className: classes, ...props, children });
132
+ };
133
+ var Subheader1 = ({ children, className = "", theme, component = "h5", ...props }) => {
134
+ const typographyStyles = theme?.typography?.subheader1;
135
+ const classes = cn(
136
+ typographyStyles?.fontFamily || "font-sans",
137
+ typographyStyles?.fontSize || "text-lg",
138
+ typographyStyles?.fontWeight || "font-medium",
139
+ typographyStyles?.lineHeight || "leading-relaxed",
140
+ typographyStyles?.letterSpacing || "tracking-normal",
141
+ typographyStyles?.textTransform,
142
+ typographyStyles?.textDecoration,
143
+ typographyStyles?.textOverflow,
144
+ className
145
+ );
146
+ return component === "h5" ? /* @__PURE__ */ jsx("h5", { className: classes, ...props, children }) : /* @__PURE__ */ jsx("span", { className: classes, ...props, children });
147
+ };
148
+ var Subheader2 = ({
149
+ children,
150
+ className = "",
151
+ theme,
152
+ ...props
153
+ }) => {
154
+ const typographyStyles = theme?.typography?.subheader2;
155
+ const classes = [
156
+ typographyStyles?.fontFamily || "font-sans",
157
+ typographyStyles?.fontSize || "text-base",
158
+ typographyStyles?.fontWeight || "font-medium",
159
+ typographyStyles?.lineHeight || "leading-relaxed",
160
+ typographyStyles?.letterSpacing || "tracking-normal",
161
+ typographyStyles?.textTransform,
162
+ typographyStyles?.textDecoration,
163
+ typographyStyles?.textOverflow,
164
+ className
165
+ ].filter(Boolean).join(" ");
166
+ return /* @__PURE__ */ jsx("h6", { className: classes, ...props, children });
167
+ };
168
+ var Text1 = ({ children, className = "", theme, component = "p", ...props }) => {
169
+ const typographyStyles = theme?.typography?.text1;
170
+ const classes = cn(
171
+ // Base styles
172
+ "text-base",
173
+ // Theme overrides
174
+ typographyStyles?.fontFamily,
175
+ typographyStyles?.fontSize,
176
+ typographyStyles?.fontWeight,
177
+ typographyStyles?.lineHeight,
178
+ typographyStyles?.letterSpacing,
179
+ typographyStyles?.textTransform,
180
+ typographyStyles?.textDecoration,
181
+ typographyStyles?.textOverflow,
182
+ className
183
+ );
184
+ return component === "p" ? /* @__PURE__ */ jsx("p", { className: classes, ...props, children }) : /* @__PURE__ */ jsx("span", { className: classes, ...props, children });
185
+ };
186
+ var Text2 = ({ children, className = "", theme, component = "p", ...props }) => {
187
+ const typographyStyles = theme?.typography?.text2;
188
+ const classes = cn(
189
+ // Base styles
190
+ "text-sm",
191
+ // Theme overrides
192
+ typographyStyles?.fontFamily,
193
+ typographyStyles?.fontSize,
194
+ typographyStyles?.fontWeight,
195
+ typographyStyles?.lineHeight,
196
+ typographyStyles?.letterSpacing,
197
+ typographyStyles?.textTransform,
198
+ typographyStyles?.textDecoration,
199
+ typographyStyles?.textOverflow,
200
+ className
201
+ );
202
+ return component === "p" ? /* @__PURE__ */ jsx("p", { className: classes, ...props, children }) : /* @__PURE__ */ jsx("span", { className: classes, ...props, children });
203
+ };
204
+ var Link = ({
205
+ children,
206
+ className = "",
207
+ theme,
208
+ disabled = false,
209
+ style,
210
+ ...props
211
+ }) => {
212
+ const typographyStyles = theme?.typography?.link;
213
+ const linkStyles = theme?.interactives?.link;
214
+ const classes = cn(
215
+ // Base styles
216
+ "font-medium cursor-pointer",
217
+ // Theme typography
218
+ typographyStyles?.fontFamily,
219
+ typographyStyles?.fontSize,
220
+ typographyStyles?.fontWeight,
221
+ typographyStyles?.lineHeight,
222
+ typographyStyles?.letterSpacing,
223
+ typographyStyles?.textTransform,
224
+ typographyStyles?.textDecoration,
225
+ typographyStyles?.textOverflow,
226
+ // Theme interactivity
227
+ linkStyles?.padding?.x,
228
+ linkStyles?.padding?.y,
229
+ linkStyles?.border?.width,
230
+ linkStyles?.border?.radius,
231
+ linkStyles?.border?.style,
232
+ // Theme disabled states
233
+ disabled && linkStyles?.disabled?.color,
234
+ disabled && linkStyles?.disabled?.background,
235
+ disabled && linkStyles?.disabled?.border,
236
+ disabled && linkStyles?.disabled?.opacity,
237
+ disabled && linkStyles?.disabled?.cursor,
238
+ // User overrides
239
+ linkStyles?.custom,
240
+ className
241
+ );
242
+ return /* @__PURE__ */ jsx(
243
+ "span",
244
+ {
245
+ className: classes,
246
+ style: {
247
+ ...style,
248
+ textShadow: linkStyles?.textShadow || void 0
249
+ },
250
+ ...props,
251
+ children
252
+ }
253
+ );
254
+ };
255
+ var buttonVariants = cva(
256
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
257
+ {
258
+ variants: {
259
+ variant: {
260
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
261
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
262
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
263
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
264
+ ghost: "hover:bg-accent hover:text-accent-foreground",
265
+ link: "text-primary underline-offset-4 hover:underline"
266
+ },
267
+ size: {
268
+ default: "h-10 px-4 py-2",
269
+ sm: "h-9 rounded-md px-3",
270
+ lg: "h-11 rounded-md px-8",
271
+ icon: "h-10 w-10"
272
+ }
273
+ },
274
+ defaultVariants: {
275
+ variant: "default",
276
+ size: "default"
277
+ }
278
+ }
279
+ );
280
+ var Button = React10.forwardRef(
281
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
282
+ const Comp = asChild ? Slot : "button";
283
+ return /* @__PURE__ */ jsx(
284
+ Comp,
285
+ {
286
+ className: cn(buttonVariants({ variant, size, className })),
287
+ ref,
288
+ ...props
289
+ }
290
+ );
291
+ }
292
+ );
293
+ Button.displayName = "Button";
294
+ var Button2 = ({
295
+ variant = "default",
296
+ size = "default",
297
+ disabled = false,
298
+ children,
299
+ className = "",
300
+ theme,
301
+ ...props
302
+ }) => {
303
+ const buttonStyles = theme?.interactives?.button;
304
+ const typographyStyles = theme?.typography?.button;
305
+ const isIcon = size === "icon";
306
+ const classes = cn(
307
+ // Base styles
308
+ "",
309
+ // Theme typography
310
+ typographyStyles?.fontFamily,
311
+ typographyStyles?.fontSize,
312
+ typographyStyles?.fontWeight,
313
+ typographyStyles?.lineHeight,
314
+ typographyStyles?.letterSpacing,
315
+ typographyStyles?.textTransform,
316
+ typographyStyles?.textDecoration,
317
+ typographyStyles?.textOverflow,
318
+ // Theme interactivity. Icon buttons stay square — CTA padding
319
+ // would stretch them off the size="icon" box.
320
+ !isIcon && buttonStyles?.padding?.x,
321
+ !isIcon && buttonStyles?.padding?.y,
322
+ buttonStyles?.border?.width,
323
+ buttonStyles?.border?.radius,
324
+ buttonStyles?.border?.style,
325
+ // buttonStyles?.border?.color,
326
+ buttonStyles?.shadow,
327
+ // Theme disabled states
328
+ disabled && buttonStyles?.disabled?.opacity,
329
+ disabled && buttonStyles?.disabled?.cursor,
330
+ disabled && buttonStyles?.disabled?.color,
331
+ disabled && buttonStyles?.disabled?.background,
332
+ disabled && buttonStyles?.disabled?.border,
333
+ // User overrides
334
+ buttonStyles?.custom,
335
+ className
336
+ );
337
+ return /* @__PURE__ */ jsx(
338
+ Button,
339
+ {
340
+ variant,
341
+ size,
342
+ disabled,
343
+ className: classes,
344
+ ...props,
345
+ children
346
+ }
347
+ );
348
+ };
349
+ var Input = React10.forwardRef(
350
+ ({ className, type, ...props }, ref) => {
351
+ return /* @__PURE__ */ jsx(
352
+ "input",
353
+ {
354
+ type,
355
+ className: cn(
356
+ "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
357
+ className
358
+ ),
359
+ ref,
360
+ ...props
361
+ }
362
+ );
363
+ }
364
+ );
365
+ Input.displayName = "Input";
366
+ var Input2 = React10__default.forwardRef(
367
+ ({
368
+ className = "",
369
+ theme,
370
+ error = false,
371
+ /*style = {},*/
372
+ ...props
373
+ }, ref) => {
374
+ const inputStyles = theme?.interactives?.input;
375
+ const typographyStyles = theme?.typography?.input;
376
+ const classes = cn(
377
+ // Base styles
378
+ // "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
379
+ // Theme typography
380
+ typographyStyles?.fontFamily,
381
+ typographyStyles?.fontSize,
382
+ typographyStyles?.fontWeight,
383
+ typographyStyles?.lineHeight,
384
+ typographyStyles?.letterSpacing,
385
+ typographyStyles?.textTransform,
386
+ typographyStyles?.textDecoration,
387
+ typographyStyles?.textOverflow,
388
+ // Theme interactivity
389
+ inputStyles?.padding?.x,
390
+ inputStyles?.padding?.y,
391
+ inputStyles?.border?.width,
392
+ inputStyles?.border?.style,
393
+ inputStyles?.border?.radius,
394
+ // inputStyles?.border?.color,
395
+ inputStyles?.shadow,
396
+ // Theme disabled states
397
+ props.disabled && inputStyles?.disabled?.opacity,
398
+ props.disabled && inputStyles?.disabled?.cursor,
399
+ props.disabled && inputStyles?.disabled?.color,
400
+ props.disabled && inputStyles?.disabled?.background,
401
+ props.disabled && inputStyles?.disabled?.border,
402
+ // Error state
403
+ error && "border-red-300 focus:border-red-500 focus:ring-red-500",
404
+ // User overrides
405
+ inputStyles?.custom,
406
+ className
407
+ );
408
+ return /* @__PURE__ */ jsx(Input, { ref, className: classes, ...props });
409
+ }
410
+ );
411
+ Input2.displayName = "Input";
412
+ var Textarea = React10__default.forwardRef(
413
+ ({ className = "", theme, error = false, ...props }, ref) => {
414
+ const inputStyles = theme?.interactives?.input;
415
+ const typographyStyles = theme?.typography?.input;
416
+ const classes = cn(
417
+ "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50",
418
+ typographyStyles?.fontFamily,
419
+ typographyStyles?.fontSize,
420
+ typographyStyles?.fontWeight,
421
+ typographyStyles?.lineHeight,
422
+ typographyStyles?.letterSpacing,
423
+ inputStyles?.padding?.x,
424
+ inputStyles?.padding?.y,
425
+ inputStyles?.border?.width,
426
+ inputStyles?.border?.style,
427
+ inputStyles?.border?.radius,
428
+ inputStyles?.shadow,
429
+ props.disabled && inputStyles?.disabled?.opacity,
430
+ props.disabled && inputStyles?.disabled?.cursor,
431
+ error && "border-red-300 focus:border-red-500 focus:ring-red-500",
432
+ inputStyles?.custom,
433
+ className
434
+ );
435
+ return /* @__PURE__ */ jsx("textarea", { ref, className: classes, ...props });
436
+ }
437
+ );
438
+ Textarea.displayName = "Textarea";
439
+ var Caption = ({
440
+ children,
441
+ className = "",
442
+ theme,
443
+ ...props
444
+ }) => {
445
+ const typographyStyles = theme?.typography?.caption;
446
+ const classes = cn(
447
+ // Base styles
448
+ "text-xs leading-7 text-muted-foreground",
449
+ // Theme overrides
450
+ typographyStyles?.fontFamily,
451
+ typographyStyles?.fontSize,
452
+ typographyStyles?.fontWeight,
453
+ typographyStyles?.lineHeight,
454
+ typographyStyles?.letterSpacing,
455
+ typographyStyles?.textTransform,
456
+ typographyStyles?.textDecoration,
457
+ typographyStyles?.textOverflow,
458
+ className
459
+ );
460
+ return /* @__PURE__ */ jsx("span", { className: classes, ...props, children });
461
+ };
462
+ var PageCard = ({
463
+ isLink,
464
+ children,
465
+ className = "",
466
+ theme,
467
+ ...props
468
+ }) => {
469
+ const cardStyles = theme?.interactives?.card;
470
+ const classes = cn(
471
+ // Base styles
472
+ "bg-card text-card-foreground",
473
+ // Theme interactivity
474
+ cardStyles?.border?.width,
475
+ cardStyles?.border?.radius,
476
+ cardStyles?.border?.style,
477
+ cardStyles?.shadow,
478
+ isLink ? "cursor-pointer" : "",
479
+ // User overrides
480
+ cardStyles?.custom,
481
+ className
482
+ );
483
+ return /* @__PURE__ */ jsx("div", { className: classes, ...props, children });
484
+ };
485
+ var PageCardImage = ({
486
+ src,
487
+ alt,
488
+ className = "",
489
+ theme,
490
+ ...props
491
+ }) => {
492
+ const classes = cn(
493
+ // Base styles
494
+ "w-full",
495
+ className
496
+ );
497
+ return /* @__PURE__ */ jsx("img", { src, alt, className: classes, ...props });
498
+ };
499
+ var PageCardContent = ({
500
+ children,
501
+ className = "",
502
+ theme,
503
+ ...props
504
+ }) => {
505
+ const cardStyles = theme?.interactives?.card;
506
+ const classes = cn(
507
+ // Base styles
508
+ "p-4",
509
+ // Theme interactivity
510
+ cardStyles?.padding?.x,
511
+ cardStyles?.padding?.y,
512
+ className
513
+ );
514
+ return /* @__PURE__ */ jsx("div", { className: classes, ...props, children });
515
+ };
516
+ var PageCardHeader = ({
517
+ children,
518
+ className = "",
519
+ theme,
520
+ ...props
521
+ }) => {
522
+ const classes = cn(
523
+ // Base styles
524
+ "pb-4",
525
+ className
526
+ );
527
+ return /* @__PURE__ */ jsx("div", { className: classes, ...props, children: /* @__PURE__ */ jsx(Header4, { theme, children }) });
528
+ };
529
+ var labelVariants = cva(
530
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
531
+ );
532
+ var Label = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
533
+ LabelPrimitive.Root,
534
+ {
535
+ ref,
536
+ className: cn(labelVariants(), className),
537
+ ...props
538
+ }
539
+ ));
540
+ Label.displayName = LabelPrimitive.Root.displayName;
541
+ var Label2 = React10__default.forwardRef(
542
+ ({ className = "", theme, error = false, ...props }, ref) => {
543
+ const typographyStyles = theme?.typography?.text2;
544
+ const classes = cn(
545
+ // Theme typography
546
+ typographyStyles?.fontFamily,
547
+ typographyStyles?.fontSize,
548
+ typographyStyles?.fontWeight,
549
+ typographyStyles?.lineHeight,
550
+ typographyStyles?.letterSpacing,
551
+ typographyStyles?.textTransform,
552
+ typographyStyles?.textDecoration,
553
+ typographyStyles?.textOverflow,
554
+ // Error state
555
+ error && "text-red-500",
556
+ className
557
+ );
558
+ return /* @__PURE__ */ jsx(Label, { ref, className: classes, ...props });
559
+ }
560
+ );
561
+ Label2.displayName = "Label";
562
+ function resolveBackgroundLayerStyle(background, nextTheme) {
563
+ const isDark = nextTheme === "dark";
564
+ const attachment = background.backgroundAttachment || "scroll";
565
+ if (background.type === "color") {
566
+ return {
567
+ backgroundColor: isDark ? background.backgroundColorDark || background.backgroundColor : background.backgroundColor
568
+ };
569
+ }
570
+ if (background.type === "image") {
571
+ return {
572
+ backgroundImage: background.media?.file ? `url(${background.media.file})` : void 0,
573
+ backgroundSize: background.backgroundSize || "cover",
574
+ backgroundPosition: background.backgroundPosition || "center",
575
+ backgroundRepeat: background.backgroundRepeat || "no-repeat",
576
+ backgroundAttachment: attachment,
577
+ maskImage: background.maskImage,
578
+ WebkitMaskImage: background.maskImage
579
+ };
580
+ }
581
+ return {
582
+ backgroundImage: isDark ? background.backgroundImageDark || background.backgroundImage : background.backgroundImage,
583
+ backgroundSize: background.gradientBackgroundSize || "cover",
584
+ backgroundPosition: background.gradientBackgroundPosition || "center",
585
+ backgroundRepeat: background.gradientBackgroundRepeat || "no-repeat",
586
+ backgroundAttachment: attachment,
587
+ maskImage: background.gradientMaskImage,
588
+ WebkitMaskImage: background.gradientMaskImage
589
+ };
590
+ }
591
+ var Section = ({
592
+ children,
593
+ className = "",
594
+ theme,
595
+ background,
596
+ nextTheme,
597
+ component = "section",
598
+ ...props
599
+ }) => {
600
+ const classes = cn("bg-background text-foreground relative", className);
601
+ const isFixed = background && background.type !== "color" && background.backgroundAttachment === "fixed";
602
+ return /* @__PURE__ */ jsx(Fragment, { children: React10__default.createElement(
603
+ component,
604
+ {
605
+ // `overflow-clip` keeps a fixed-attachment layer painted
606
+ // only within the section bounds without creating a new
607
+ // scroll container (unlike overflow-hidden in some cases).
608
+ className: cn(classes, isFixed && "overflow-clip"),
609
+ ...props
610
+ },
611
+ /* @__PURE__ */ jsxs(Fragment, { children: [
612
+ background && /* @__PURE__ */ jsx(
613
+ "div",
614
+ {
615
+ suppressHydrationWarning: true,
616
+ "aria-hidden": true,
617
+ className: "pointer-events-none absolute inset-0 z-0",
618
+ style: resolveBackgroundLayerStyle(
619
+ background,
620
+ nextTheme
621
+ )
622
+ }
623
+ ),
624
+ background && background.type === "image" && /* @__PURE__ */ jsx(
625
+ "div",
626
+ {
627
+ "aria-hidden": true,
628
+ className: "pointer-events-none absolute inset-0 z-[1]",
629
+ style: {
630
+ backgroundColor: nextTheme === "dark" ? background?.overlay?.colorDark || background?.overlay?.color : background?.overlay?.color,
631
+ opacity: background?.overlay?.opacity ? background.overlay.opacity / 10 : 0,
632
+ mixBlendMode: background?.overlay?.blendMode
633
+ }
634
+ }
635
+ ),
636
+ background && background.type === "image" && /* @__PURE__ */ jsx(
637
+ "div",
638
+ {
639
+ "aria-hidden": true,
640
+ className: "pointer-events-none absolute inset-0 z-[2]",
641
+ style: {
642
+ backdropFilter: background?.blur ? `blur(${background?.blur}px)` : void 0
643
+ }
644
+ }
645
+ ),
646
+ /* @__PURE__ */ jsx(
647
+ "div",
648
+ {
649
+ className: cn(
650
+ "mx-auto z-[3] relative overflow-hidden",
651
+ `lg:${theme?.structure?.page?.width || "max-w-6xl"}`,
652
+ theme?.structure?.section?.padding?.x || "px-4",
653
+ theme?.structure?.section?.padding?.y || "py-4"
654
+ ),
655
+ children
656
+ }
657
+ )
658
+ ] })
659
+ ) });
660
+ };
661
+ var badgeVariants = cva(
662
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
663
+ {
664
+ variants: {
665
+ variant: {
666
+ default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
667
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
668
+ destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
669
+ outline: "text-foreground"
670
+ }
671
+ },
672
+ defaultVariants: {
673
+ variant: "default"
674
+ }
675
+ }
676
+ );
677
+ function Badge({ className, variant, ...props }) {
678
+ return /* @__PURE__ */ jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
679
+ }
680
+ var Badge2 = ({
681
+ variant = "default",
682
+ children,
683
+ className = "",
684
+ style = {},
685
+ theme,
686
+ ...props
687
+ }) => {
688
+ const typographyStyles = theme?.typography?.caption;
689
+ const buttonStyles = theme?.interactives?.button;
690
+ const classes = cn(
691
+ // Base styles
692
+ // "bg-secondary",
693
+ // Theme typography from caption
694
+ typographyStyles?.fontFamily,
695
+ typographyStyles?.fontSize,
696
+ typographyStyles?.fontWeight,
697
+ typographyStyles?.lineHeight,
698
+ typographyStyles?.letterSpacing,
699
+ typographyStyles?.textTransform,
700
+ buttonStyles?.border?.width,
701
+ buttonStyles?.border?.radius,
702
+ buttonStyles?.border?.style,
703
+ className
704
+ );
705
+ return /* @__PURE__ */ jsx(
706
+ Badge,
707
+ {
708
+ variant,
709
+ className: classes,
710
+ style: {
711
+ ...style,
712
+ backgroundColor: style.backgroundColor,
713
+ color: style.color
714
+ },
715
+ ...props,
716
+ children
717
+ }
718
+ );
719
+ };
720
+ var Switch = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
721
+ SwitchPrimitives.Root,
722
+ {
723
+ className: cn(
724
+ "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
725
+ className
726
+ ),
727
+ ...props,
728
+ ref,
729
+ children: /* @__PURE__ */ jsx(
730
+ SwitchPrimitives.Thumb,
731
+ {
732
+ className: cn(
733
+ "pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
734
+ )
735
+ }
736
+ )
737
+ }
738
+ ));
739
+ Switch.displayName = SwitchPrimitives.Root.displayName;
740
+ var Switch2 = React10__default.forwardRef(({ className = "", theme, ...props }, ref) => {
741
+ const classes = cn(
742
+ // Base styles
743
+ "",
744
+ // User overrides
745
+ className
746
+ );
747
+ return /* @__PURE__ */ jsx(Switch, { ref, className: classes, ...props });
748
+ });
749
+
750
+ // src/primitives/themes/classic.ts
751
+ var themeStyles = {
752
+ colors: {
753
+ light: {
754
+ background: "#f7f7f5",
755
+ foreground: "#18181b",
756
+ card: "#ffffff",
757
+ cardForeground: "#18181b",
758
+ popover: "#ffffff",
759
+ popoverForeground: "#18181b",
760
+ primary: "#18181b",
761
+ primaryForeground: "#fafafa",
762
+ secondary: "#eeeee8",
763
+ secondaryForeground: "#18181b",
764
+ muted: "#f0efe9",
765
+ mutedForeground: "#52525b",
766
+ accent: "#eeeee8",
767
+ accentForeground: "#18181b",
768
+ destructive: "#e11d48",
769
+ border: "#e4e4de",
770
+ input: "#e4e4de",
771
+ ring: "#18181b",
772
+ chart1: "#18181b",
773
+ chart2: "#71717a",
774
+ chart3: "#a1a1aa",
775
+ chart4: "#d4d4d8",
776
+ chart5: "#e4e4e7",
777
+ sidebar: "#f7f7f5",
778
+ sidebarForeground: "#18181b",
779
+ sidebarPrimary: "#18181b",
780
+ sidebarPrimaryForeground: "#fafafa",
781
+ sidebarAccent: "#eeeee8",
782
+ sidebarAccentForeground: "#18181b",
783
+ sidebarBorder: "#e4e4de",
784
+ sidebarRing: "#18181b",
785
+ shadow2xs: "0 1px 2px 0 rgb(24 24 27 / 0.04)",
786
+ shadowXs: "0 1px 2px 0 rgb(24 24 27 / 0.05)",
787
+ shadowSm: "0 1px 2px 0 rgb(24 24 27 / 0.05), 0 1px 3px -1px rgb(24 24 27 / 0.08)",
788
+ shadowMd: "0 2px 4px -1px rgb(24 24 27 / 0.06), 0 4px 8px -2px rgb(24 24 27 / 0.08)",
789
+ shadowLg: "0 8px 16px -4px rgb(24 24 27 / 0.08), 0 4px 6px -2px rgb(24 24 27 / 0.04)",
790
+ shadowXl: "0 16px 32px -8px rgb(24 24 27 / 0.12)",
791
+ shadow2xl: "0 24px 48px -12px rgb(24 24 27 / 0.18)"
792
+ },
793
+ dark: {
794
+ background: "#09090b",
795
+ foreground: "#fafafa",
796
+ card: "#141416",
797
+ cardForeground: "#fafafa",
798
+ popover: "#18181b",
799
+ popoverForeground: "#fafafa",
800
+ primary: "#fafafa",
801
+ primaryForeground: "#09090b",
802
+ secondary: "#27272a",
803
+ secondaryForeground: "#fafafa",
804
+ muted: "#1c1c1f",
805
+ mutedForeground: "#a1a1aa",
806
+ accent: "#27272a",
807
+ accentForeground: "#fafafa",
808
+ destructive: "#fb7185",
809
+ border: "#27272a",
810
+ input: "#27272a",
811
+ ring: "#d4d4d8",
812
+ chart1: "#fafafa",
813
+ chart2: "#a1a1aa",
814
+ chart3: "#71717a",
815
+ chart4: "#52525b",
816
+ chart5: "#3f3f46",
817
+ sidebar: "#141416",
818
+ sidebarForeground: "#fafafa",
819
+ sidebarPrimary: "#fafafa",
820
+ sidebarPrimaryForeground: "#09090b",
821
+ sidebarAccent: "#27272a",
822
+ sidebarAccentForeground: "#fafafa",
823
+ sidebarBorder: "#27272a",
824
+ sidebarRing: "#d4d4d8",
825
+ shadow2xs: "0 1px 2px 0 rgb(0 0 0 / 0.24)",
826
+ shadowXs: "0 1px 2px 0 rgb(0 0 0 / 0.28)",
827
+ shadowSm: "0 1px 2px 0 rgb(0 0 0 / 0.32), 0 1px 3px -1px rgb(0 0 0 / 0.4)",
828
+ shadowMd: "0 4px 8px -2px rgb(0 0 0 / 0.4), 0 2px 4px -1px rgb(0 0 0 / 0.28)",
829
+ shadowLg: "0 12px 24px -6px rgb(0 0 0 / 0.5)",
830
+ shadowXl: "0 20px 40px -8px rgb(0 0 0 / 0.55)",
831
+ shadow2xl: "0 32px 64px -12px rgb(0 0 0 / 0.65)"
832
+ }
833
+ },
834
+ typography: {
835
+ preheader: {
836
+ fontFamily: "font-inter",
837
+ fontSize: "text-xs",
838
+ fontWeight: "font-medium",
839
+ lineHeight: "leading-normal",
840
+ letterSpacing: "tracking-widest",
841
+ textTransform: "uppercase"
842
+ },
843
+ header1: {
844
+ fontFamily: "font-inter",
845
+ fontSize: "text-5xl",
846
+ fontWeight: "font-semibold",
847
+ lineHeight: "leading-tight",
848
+ letterSpacing: "tracking-tighter"
849
+ },
850
+ header2: {
851
+ fontFamily: "font-inter",
852
+ fontSize: "text-4xl",
853
+ fontWeight: "font-semibold",
854
+ lineHeight: "leading-tight",
855
+ letterSpacing: "tracking-tight"
856
+ },
857
+ header3: {
858
+ fontFamily: "font-inter",
859
+ fontSize: "text-2xl",
860
+ fontWeight: "font-semibold",
861
+ lineHeight: "leading-snug",
862
+ letterSpacing: "tracking-tight"
863
+ },
864
+ header4: {
865
+ fontFamily: "font-inter",
866
+ fontSize: "text-xl",
867
+ fontWeight: "font-medium",
868
+ lineHeight: "leading-snug",
869
+ letterSpacing: "tracking-tight"
870
+ },
871
+ subheader1: {
872
+ fontFamily: "font-inter",
873
+ fontSize: "text-xl",
874
+ fontWeight: "font-normal",
875
+ lineHeight: "leading-relaxed",
876
+ letterSpacing: "tracking-normal"
877
+ },
878
+ subheader2: {
879
+ fontFamily: "font-inter",
880
+ fontSize: "text-lg",
881
+ fontWeight: "font-normal",
882
+ lineHeight: "leading-relaxed",
883
+ letterSpacing: "tracking-normal"
884
+ },
885
+ text1: {
886
+ fontFamily: "font-inter",
887
+ fontSize: "text-base",
888
+ fontWeight: "font-normal",
889
+ lineHeight: "leading-relaxed",
890
+ letterSpacing: "tracking-normal"
891
+ },
892
+ text2: {
893
+ fontFamily: "font-inter",
894
+ fontSize: "text-sm",
895
+ fontWeight: "font-normal",
896
+ lineHeight: "leading-relaxed",
897
+ letterSpacing: "tracking-normal"
898
+ },
899
+ caption: {
900
+ fontFamily: "font-inter",
901
+ fontSize: "text-xs",
902
+ fontWeight: "font-medium",
903
+ lineHeight: "leading-relaxed",
904
+ letterSpacing: "tracking-wide"
905
+ },
906
+ link: {
907
+ fontFamily: "font-inter",
908
+ fontSize: "text-base",
909
+ fontWeight: "font-medium",
910
+ lineHeight: "leading-relaxed",
911
+ letterSpacing: "tracking-normal",
912
+ textDecoration: "no-underline"
913
+ },
914
+ button: {
915
+ fontFamily: "font-inter",
916
+ fontSize: "text-sm",
917
+ fontWeight: "font-medium",
918
+ lineHeight: "leading-normal",
919
+ letterSpacing: "tracking-wide"
920
+ },
921
+ input: {
922
+ fontFamily: "font-inter",
923
+ fontSize: "text-sm",
924
+ fontWeight: "font-normal",
925
+ lineHeight: "leading-normal",
926
+ letterSpacing: "tracking-normal"
927
+ }
928
+ },
929
+ interactives: {
930
+ button: {
931
+ padding: {
932
+ x: "px-5",
933
+ y: "py-3"
934
+ },
935
+ border: {
936
+ width: "border-0",
937
+ radius: "rounded-xl"
938
+ },
939
+ shadow: "shadow-xs",
940
+ disabled: {
941
+ opacity: "opacity-50",
942
+ cursor: "cursor-not-allowed"
943
+ },
944
+ custom: "transition-colors duration-200"
945
+ },
946
+ link: {
947
+ custom: "underline-offset-4 hover:underline",
948
+ disabled: {
949
+ color: "gray-400",
950
+ cursor: "cursor-not-allowed"
951
+ }
952
+ },
953
+ card: {
954
+ padding: {
955
+ x: "px-6",
956
+ y: "py-6"
957
+ },
958
+ border: {
959
+ width: "border",
960
+ radius: "rounded-2xl",
961
+ style: "border-solid"
962
+ },
963
+ shadow: "shadow-xs",
964
+ custom: "transition-shadow duration-200 hover:shadow-md"
965
+ },
966
+ input: {
967
+ borderRadius: "rounded-xl",
968
+ padding: {
969
+ x: "px-4",
970
+ y: "py-3"
971
+ },
972
+ border: {
973
+ width: "border",
974
+ style: "border-solid",
975
+ radius: "rounded-xl"
976
+ },
977
+ shadow: "shadow-none",
978
+ custom: "transition-shadow duration-150 focus-visible:shadow-sm",
979
+ disabled: {
980
+ opacity: "opacity-50",
981
+ cursor: "cursor-not-allowed"
982
+ }
983
+ }
984
+ },
985
+ structure: {
986
+ page: {
987
+ width: "max-w-6xl"
988
+ },
989
+ section: {
990
+ padding: {
991
+ x: "px-6",
992
+ y: "py-20"
993
+ }
994
+ }
995
+ }
996
+ };
997
+ var classic = {
998
+ id: "classic",
999
+ name: "Classic",
1000
+ theme: themeStyles
1001
+ };
1002
+
1003
+ // src/primitives/themes/studio.ts
1004
+ var themeStyles2 = {
1005
+ colors: {
1006
+ light: {
1007
+ background: "#f4f1ea",
1008
+ foreground: "#1c1917",
1009
+ card: "#fffcf7",
1010
+ cardForeground: "#1c1917",
1011
+ popover: "#fffcf7",
1012
+ popoverForeground: "#1c1917",
1013
+ primary: "#0f766e",
1014
+ primaryForeground: "#f4fffc",
1015
+ secondary: "#ebe4d6",
1016
+ secondaryForeground: "#1c1917",
1017
+ muted: "#ebe6dc",
1018
+ mutedForeground: "#57534e",
1019
+ accent: "#d9f3ee",
1020
+ accentForeground: "#115e59",
1021
+ destructive: "#dc2626",
1022
+ border: "#e0d8cc",
1023
+ input: "#e0d8cc",
1024
+ ring: "#0f766e",
1025
+ chart1: "#0f766e",
1026
+ chart2: "#0d9488",
1027
+ chart3: "#14b8a6",
1028
+ chart4: "#5eead4",
1029
+ chart5: "#ccfbf1",
1030
+ sidebar: "#fffcf7",
1031
+ sidebarForeground: "#1c1917",
1032
+ sidebarPrimary: "#0f766e",
1033
+ sidebarPrimaryForeground: "#f4fffc",
1034
+ sidebarAccent: "#ebe4d6",
1035
+ sidebarAccentForeground: "#1c1917",
1036
+ sidebarBorder: "#e0d8cc",
1037
+ sidebarRing: "#0f766e",
1038
+ shadow2xs: "0 1px 2px 0 rgb(28 25 23 / 0.04)",
1039
+ shadowXs: "0 1px 2px 0 rgb(28 25 23 / 0.05)",
1040
+ shadowSm: "0 1px 2px 0 rgb(15 118 110 / 0.08), 0 1px 3px -1px rgb(28 25 23 / 0.08)",
1041
+ shadowMd: "0 6px 16px -4px rgb(28 25 23 / 0.1), 0 2px 6px -2px rgb(15 118 110 / 0.08)",
1042
+ shadowLg: "0 16px 32px -8px rgb(28 25 23 / 0.12), 0 6px 12px -4px rgb(15 118 110 / 0.08)",
1043
+ shadowXl: "0 24px 48px -12px rgb(28 25 23 / 0.16)",
1044
+ shadow2xl: "0 32px 64px -16px rgb(28 25 23 / 0.22)"
1045
+ },
1046
+ dark: {
1047
+ background: "#12100d",
1048
+ foreground: "#f4efe6",
1049
+ card: "#1b1814",
1050
+ cardForeground: "#f4efe6",
1051
+ popover: "#1b1814",
1052
+ popoverForeground: "#f4efe6",
1053
+ primary: "#2dd4bf",
1054
+ primaryForeground: "#042f2e",
1055
+ secondary: "#2a241c",
1056
+ secondaryForeground: "#f4efe6",
1057
+ muted: "#221e19",
1058
+ mutedForeground: "#a8a29e",
1059
+ accent: "#134e4a",
1060
+ accentForeground: "#ccfbf1",
1061
+ destructive: "#f87171",
1062
+ border: "#2e2922",
1063
+ input: "#2e2922",
1064
+ ring: "#2dd4bf",
1065
+ chart1: "#2dd4bf",
1066
+ chart2: "#5eead4",
1067
+ chart3: "#99f6e4",
1068
+ chart4: "#14b8a6",
1069
+ chart5: "#0f766e",
1070
+ sidebar: "#1b1814",
1071
+ sidebarForeground: "#f4efe6",
1072
+ sidebarPrimary: "#2dd4bf",
1073
+ sidebarPrimaryForeground: "#042f2e",
1074
+ sidebarAccent: "#2a241c",
1075
+ sidebarAccentForeground: "#f4efe6",
1076
+ sidebarBorder: "#2e2922",
1077
+ sidebarRing: "#2dd4bf",
1078
+ shadow2xs: "0 1px 2px 0 rgb(0 0 0 / 0.28)",
1079
+ shadowXs: "0 1px 2px 0 rgb(0 0 0 / 0.32)",
1080
+ shadowSm: "0 1px 2px 0 rgb(0 0 0 / 0.36), 0 1px 3px -1px rgb(0 0 0 / 0.4)",
1081
+ shadowMd: "0 8px 20px -6px rgb(0 0 0 / 0.48)",
1082
+ shadowLg: "0 16px 32px -8px rgb(0 0 0 / 0.52)",
1083
+ shadowXl: "0 24px 48px -10px rgb(0 0 0 / 0.56)",
1084
+ shadow2xl: "0 32px 64px -12px rgb(0 0 0 / 0.64)"
1085
+ }
1086
+ },
1087
+ typography: {
1088
+ preheader: {
1089
+ fontFamily: "font-montserrat",
1090
+ fontSize: "text-xs",
1091
+ fontWeight: "font-semibold",
1092
+ lineHeight: "leading-normal",
1093
+ letterSpacing: "tracking-widest",
1094
+ textTransform: "uppercase"
1095
+ },
1096
+ header1: {
1097
+ fontFamily: "font-montserrat",
1098
+ fontSize: "text-6xl",
1099
+ fontWeight: "font-semibold",
1100
+ lineHeight: "leading-none",
1101
+ letterSpacing: "tracking-tighter"
1102
+ },
1103
+ header2: {
1104
+ fontFamily: "font-montserrat",
1105
+ fontSize: "text-4xl",
1106
+ fontWeight: "font-semibold",
1107
+ lineHeight: "leading-tight",
1108
+ letterSpacing: "tracking-tight"
1109
+ },
1110
+ header3: {
1111
+ fontFamily: "font-montserrat",
1112
+ fontSize: "text-2xl",
1113
+ fontWeight: "font-semibold",
1114
+ lineHeight: "leading-snug",
1115
+ letterSpacing: "tracking-tight"
1116
+ },
1117
+ header4: {
1118
+ fontFamily: "font-montserrat",
1119
+ fontSize: "text-xl",
1120
+ fontWeight: "font-medium",
1121
+ lineHeight: "leading-snug"
1122
+ },
1123
+ subheader1: {
1124
+ fontFamily: "font-source-sans-3",
1125
+ fontSize: "text-xl",
1126
+ fontWeight: "font-normal",
1127
+ lineHeight: "leading-relaxed"
1128
+ },
1129
+ subheader2: {
1130
+ fontFamily: "font-source-sans-3",
1131
+ fontSize: "text-lg",
1132
+ fontWeight: "font-normal",
1133
+ lineHeight: "leading-relaxed"
1134
+ },
1135
+ text1: {
1136
+ fontFamily: "font-source-sans-3",
1137
+ fontSize: "text-base",
1138
+ fontWeight: "font-normal",
1139
+ lineHeight: "leading-relaxed"
1140
+ },
1141
+ text2: {
1142
+ fontFamily: "font-source-sans-3",
1143
+ fontSize: "text-sm",
1144
+ fontWeight: "font-normal",
1145
+ lineHeight: "leading-relaxed"
1146
+ },
1147
+ link: {
1148
+ fontFamily: "font-source-sans-3",
1149
+ fontSize: "text-base",
1150
+ fontWeight: "font-medium"
1151
+ },
1152
+ button: {
1153
+ fontFamily: "font-montserrat",
1154
+ fontSize: "text-sm",
1155
+ fontWeight: "font-medium",
1156
+ letterSpacing: "tracking-wide"
1157
+ },
1158
+ input: {
1159
+ fontFamily: "font-source-sans-3",
1160
+ fontSize: "text-base",
1161
+ fontWeight: "font-normal"
1162
+ },
1163
+ caption: {
1164
+ fontFamily: "font-source-sans-3",
1165
+ fontSize: "text-xs",
1166
+ fontWeight: "font-medium",
1167
+ lineHeight: "leading-normal",
1168
+ letterSpacing: "tracking-wide"
1169
+ }
1170
+ },
1171
+ interactives: {
1172
+ button: {
1173
+ padding: { x: "px-6", y: "py-3" },
1174
+ border: {
1175
+ width: "border-0",
1176
+ radius: "rounded-2xl"
1177
+ },
1178
+ shadow: "shadow-xs",
1179
+ custom: "transition-colors duration-200",
1180
+ disabled: {
1181
+ opacity: "opacity-50",
1182
+ cursor: "cursor-not-allowed"
1183
+ }
1184
+ },
1185
+ link: {
1186
+ padding: { x: "px-0", y: "py-0" },
1187
+ custom: "underline-offset-4 transition-colors duration-150 hover:underline"
1188
+ },
1189
+ card: {
1190
+ padding: { x: "px-8", y: "py-8" },
1191
+ border: {
1192
+ width: "border",
1193
+ radius: "rounded-3xl",
1194
+ style: "border-solid"
1195
+ },
1196
+ shadow: "shadow-xs",
1197
+ custom: "transition-shadow duration-200 hover:shadow-lg"
1198
+ },
1199
+ input: {
1200
+ borderRadius: "rounded-2xl",
1201
+ padding: { x: "px-4", y: "py-3" },
1202
+ border: {
1203
+ width: "border",
1204
+ style: "border-solid",
1205
+ radius: "rounded-2xl"
1206
+ },
1207
+ shadow: "shadow-none",
1208
+ custom: "transition-shadow duration-150",
1209
+ disabled: {
1210
+ cursor: "cursor-not-allowed",
1211
+ opacity: "opacity-50"
1212
+ }
1213
+ }
1214
+ },
1215
+ structure: {
1216
+ page: { width: "max-w-6xl" },
1217
+ section: {
1218
+ padding: { x: "px-6", y: "py-24" }
1219
+ }
1220
+ }
1221
+ };
1222
+ var studio = {
1223
+ id: "studio",
1224
+ name: "Studio",
1225
+ theme: themeStyles2
1226
+ };
1227
+
1228
+ // src/primitives/themes/midnight.ts
1229
+ var themeStyles3 = {
1230
+ colors: {
1231
+ light: {
1232
+ background: "#f4f5f7",
1233
+ foreground: "#1c1f26",
1234
+ card: "#ffffff",
1235
+ cardForeground: "#1c1f26",
1236
+ popover: "#ffffff",
1237
+ popoverForeground: "#1c1f26",
1238
+ primary: "#61afef",
1239
+ primaryForeground: "#0b0d11",
1240
+ secondary: "#e8eaf0",
1241
+ secondaryForeground: "#1c1f26",
1242
+ muted: "#eceef2",
1243
+ mutedForeground: "#5b6170",
1244
+ accent: "#d7f1f4",
1245
+ accentForeground: "#164e63",
1246
+ border: "#d7dbe3",
1247
+ destructive: "#e06c75",
1248
+ input: "#d7dbe3",
1249
+ ring: "#61afef",
1250
+ chart1: "#61afef",
1251
+ chart2: "#818cf8",
1252
+ chart3: "#56b6c2",
1253
+ chart4: "#98c379",
1254
+ chart5: "#e5c07b",
1255
+ sidebar: "#ffffff",
1256
+ sidebarForeground: "#1c1f26",
1257
+ sidebarPrimary: "#61afef",
1258
+ sidebarPrimaryForeground: "#0b0d11",
1259
+ sidebarAccent: "#e8eaf0",
1260
+ sidebarAccentForeground: "#1c1f26",
1261
+ sidebarBorder: "#d7dbe3",
1262
+ sidebarRing: "#61afef",
1263
+ shadow2xs: "0 1px 2px 0 rgb(28 31 38 / 0.05)",
1264
+ shadowXs: "0 1px 2px 0 rgb(28 31 38 / 0.06)",
1265
+ shadowSm: "0 1px 2px 0 rgb(97 175 239 / 0.12), 0 1px 3px -1px rgb(28 31 38 / 0.08)",
1266
+ shadowMd: "0 8px 20px -6px rgb(28 31 38 / 0.12)",
1267
+ shadowLg: "0 16px 32px -8px rgb(28 31 38 / 0.16)",
1268
+ shadowXl: "0 24px 48px -12px rgb(28 31 38 / 0.2)",
1269
+ shadow2xl: "0 32px 64px -16px rgb(28 31 38 / 0.24)"
1270
+ },
1271
+ dark: {
1272
+ background: "#0c0e12",
1273
+ foreground: "#e6e8ee",
1274
+ card: "#14171e",
1275
+ cardForeground: "#e6e8ee",
1276
+ popover: "#14171e",
1277
+ popoverForeground: "#e6e8ee",
1278
+ primary: "#61afef",
1279
+ primaryForeground: "#0b0d11",
1280
+ secondary: "#1d2230",
1281
+ secondaryForeground: "#e6e8ee",
1282
+ muted: "#171b24",
1283
+ mutedForeground: "#9aa3b2",
1284
+ accent: "#14363c",
1285
+ accentForeground: "#a5f3fc",
1286
+ border: "#262b38",
1287
+ destructive: "#e06c75",
1288
+ input: "#262b38",
1289
+ ring: "#61afef",
1290
+ chart1: "#61afef",
1291
+ chart2: "#818cf8",
1292
+ chart3: "#56b6c2",
1293
+ chart4: "#98c379",
1294
+ chart5: "#e5c07b",
1295
+ sidebar: "#14171e",
1296
+ sidebarForeground: "#e6e8ee",
1297
+ sidebarPrimary: "#61afef",
1298
+ sidebarPrimaryForeground: "#0b0d11",
1299
+ sidebarAccent: "#1d2230",
1300
+ sidebarAccentForeground: "#e6e8ee",
1301
+ sidebarBorder: "#262b38",
1302
+ sidebarRing: "#61afef",
1303
+ shadow2xs: "0 1px 2px 0 rgb(0 0 0 / 0.35)",
1304
+ shadowXs: "0 1px 2px 0 rgb(0 0 0 / 0.4)",
1305
+ shadowSm: "0 2px 6px 0 rgb(0 0 0 / 0.45)",
1306
+ shadowMd: "0 10px 24px -6px rgb(0 0 0 / 0.55)",
1307
+ shadowLg: "0 18px 36px -8px rgb(0 0 0 / 0.6)",
1308
+ shadowXl: "0 28px 52px -12px rgb(0 0 0 / 0.65)",
1309
+ shadow2xl: "0 36px 72px -16px rgb(0 0 0 / 0.75)"
1310
+ }
1311
+ },
1312
+ typography: {
1313
+ preheader: {
1314
+ fontFamily: "font-roboto",
1315
+ fontSize: "text-xs",
1316
+ fontWeight: "font-medium",
1317
+ lineHeight: "leading-normal",
1318
+ letterSpacing: "tracking-widest",
1319
+ textTransform: "uppercase"
1320
+ },
1321
+ header1: {
1322
+ fontFamily: "font-roboto",
1323
+ fontSize: "text-5xl",
1324
+ fontWeight: "font-medium",
1325
+ lineHeight: "leading-tight",
1326
+ letterSpacing: "tracking-tighter"
1327
+ },
1328
+ header2: {
1329
+ fontFamily: "font-roboto",
1330
+ fontSize: "text-4xl",
1331
+ fontWeight: "font-medium",
1332
+ lineHeight: "leading-tight",
1333
+ letterSpacing: "tracking-tight"
1334
+ },
1335
+ header3: {
1336
+ fontFamily: "font-roboto",
1337
+ fontSize: "text-2xl",
1338
+ fontWeight: "font-medium",
1339
+ lineHeight: "leading-snug"
1340
+ },
1341
+ header4: {
1342
+ fontFamily: "font-roboto",
1343
+ fontSize: "text-xl",
1344
+ fontWeight: "font-medium",
1345
+ lineHeight: "leading-snug"
1346
+ },
1347
+ subheader1: {
1348
+ fontFamily: "font-roboto",
1349
+ fontSize: "text-lg",
1350
+ fontWeight: "font-normal",
1351
+ lineHeight: "leading-relaxed"
1352
+ },
1353
+ subheader2: {
1354
+ fontFamily: "font-roboto",
1355
+ fontSize: "text-base",
1356
+ fontWeight: "font-normal",
1357
+ lineHeight: "leading-relaxed"
1358
+ },
1359
+ text1: {
1360
+ fontFamily: "font-roboto",
1361
+ fontSize: "text-base",
1362
+ fontWeight: "font-normal",
1363
+ lineHeight: "leading-relaxed"
1364
+ },
1365
+ text2: {
1366
+ fontFamily: "font-roboto",
1367
+ fontSize: "text-sm",
1368
+ fontWeight: "font-normal",
1369
+ lineHeight: "leading-relaxed"
1370
+ },
1371
+ link: {
1372
+ fontFamily: "font-roboto",
1373
+ fontSize: "text-base",
1374
+ fontWeight: "font-medium"
1375
+ },
1376
+ button: {
1377
+ fontFamily: "font-roboto",
1378
+ fontSize: "text-sm",
1379
+ fontWeight: "font-medium",
1380
+ letterSpacing: "tracking-wide"
1381
+ },
1382
+ input: {
1383
+ fontFamily: "font-roboto",
1384
+ fontSize: "text-base",
1385
+ fontWeight: "font-normal"
1386
+ },
1387
+ caption: {
1388
+ fontFamily: "font-roboto",
1389
+ fontSize: "text-xs",
1390
+ fontWeight: "font-medium",
1391
+ lineHeight: "leading-normal",
1392
+ letterSpacing: "tracking-wide"
1393
+ }
1394
+ },
1395
+ interactives: {
1396
+ button: {
1397
+ padding: { x: "px-5", y: "py-3" },
1398
+ border: {
1399
+ width: "border-0",
1400
+ radius: "rounded-xl"
1401
+ },
1402
+ shadow: "shadow-xs",
1403
+ custom: "transition-colors duration-200",
1404
+ disabled: {
1405
+ opacity: "opacity-50",
1406
+ cursor: "cursor-not-allowed"
1407
+ }
1408
+ },
1409
+ link: {
1410
+ padding: { x: "px-0", y: "py-0" },
1411
+ custom: "underline-offset-4 hover:underline"
1412
+ },
1413
+ card: {
1414
+ padding: { x: "px-6", y: "py-6" },
1415
+ border: {
1416
+ width: "border",
1417
+ radius: "rounded-2xl",
1418
+ style: "border-solid"
1419
+ },
1420
+ shadow: "shadow-xs",
1421
+ custom: "transition-shadow duration-200 hover:shadow-md"
1422
+ },
1423
+ input: {
1424
+ padding: { x: "px-4", y: "py-3" },
1425
+ border: {
1426
+ width: "border",
1427
+ radius: "rounded-xl",
1428
+ style: "border-solid"
1429
+ },
1430
+ shadow: "shadow-none",
1431
+ custom: "",
1432
+ disabled: {
1433
+ opacity: "opacity-50",
1434
+ cursor: "cursor-not-allowed"
1435
+ }
1436
+ }
1437
+ },
1438
+ structure: {
1439
+ page: { width: "max-w-6xl" },
1440
+ section: {
1441
+ padding: { x: "px-6", y: "py-16" }
1442
+ }
1443
+ }
1444
+ };
1445
+ var midnight = {
1446
+ id: "midnight",
1447
+ name: "Midnight",
1448
+ theme: themeStyles3
1449
+ };
1450
+
1451
+ // src/primitives/themes/editorial.ts
1452
+ var themeStyles4 = {
1453
+ colors: {
1454
+ light: {
1455
+ background: "#f6f1e8",
1456
+ foreground: "#1a1612",
1457
+ card: "#fffaf2",
1458
+ cardForeground: "#1a1612",
1459
+ popover: "#fffaf2",
1460
+ popoverForeground: "#1a1612",
1461
+ primary: "#1e3a8a",
1462
+ primaryForeground: "#fffaf2",
1463
+ secondary: "#c2410c",
1464
+ secondaryForeground: "#fffaf2",
1465
+ muted: "#ece4d6",
1466
+ mutedForeground: "#5c5348",
1467
+ accent: "#1d4ed8",
1468
+ accentForeground: "#fffaf2",
1469
+ border: "#e0d5c4",
1470
+ destructive: "#b91c1c",
1471
+ input: "#e0d5c4",
1472
+ ring: "#1e3a8a",
1473
+ chart1: "#1e3a8a",
1474
+ chart2: "#c2410c",
1475
+ chart3: "#1d4ed8",
1476
+ chart4: "#b91c1c",
1477
+ chart5: "#78716c",
1478
+ sidebar: "#fffaf2",
1479
+ sidebarForeground: "#1a1612",
1480
+ sidebarPrimary: "#1e3a8a",
1481
+ sidebarPrimaryForeground: "#fffaf2",
1482
+ sidebarAccent: "#ece4d6",
1483
+ sidebarAccentForeground: "#1a1612",
1484
+ sidebarBorder: "#e0d5c4",
1485
+ sidebarRing: "#1e3a8a",
1486
+ shadow2xs: "0 1px 2px 0 rgb(26 22 18 / 0.05)",
1487
+ shadowXs: "0 1px 2px 0 rgb(26 22 18 / 0.06)",
1488
+ shadowSm: "0 1px 2px 0 rgb(26 22 18 / 0.06), 0 2px 6px -2px rgb(26 22 18 / 0.1)",
1489
+ shadowMd: "0 8px 20px -6px rgb(26 22 18 / 0.12)",
1490
+ shadowLg: "0 16px 32px -10px rgb(26 22 18 / 0.14)",
1491
+ shadowXl: "0 24px 48px -12px rgb(26 22 18 / 0.16)",
1492
+ shadow2xl: "0 32px 64px -16px rgb(26 22 18 / 0.2)"
1493
+ },
1494
+ dark: {
1495
+ background: "#100e0c",
1496
+ foreground: "#f6f1e8",
1497
+ card: "#1b1713",
1498
+ cardForeground: "#f6f1e8",
1499
+ popover: "#1b1713",
1500
+ popoverForeground: "#f6f1e8",
1501
+ primary: "#93c5fd",
1502
+ primaryForeground: "#100e0c",
1503
+ secondary: "#fb923c",
1504
+ secondaryForeground: "#100e0c",
1505
+ muted: "#241f19",
1506
+ mutedForeground: "#c4b8a5",
1507
+ accent: "#60a5fa",
1508
+ accentForeground: "#100e0c",
1509
+ border: "#3a3228",
1510
+ destructive: "#f87171",
1511
+ input: "#3a3228",
1512
+ ring: "#93c5fd",
1513
+ chart1: "#93c5fd",
1514
+ chart2: "#fb923c",
1515
+ chart3: "#60a5fa",
1516
+ chart4: "#f87171",
1517
+ chart5: "#a8a29e",
1518
+ sidebar: "#1b1713",
1519
+ sidebarForeground: "#f6f1e8",
1520
+ sidebarPrimary: "#93c5fd",
1521
+ sidebarPrimaryForeground: "#100e0c",
1522
+ sidebarAccent: "#241f19",
1523
+ sidebarAccentForeground: "#f6f1e8",
1524
+ sidebarBorder: "#3a3228",
1525
+ sidebarRing: "#93c5fd",
1526
+ shadow2xs: "0 1px 2px 0 rgb(0 0 0 / 0.3)",
1527
+ shadowXs: "0 1px 2px 0 rgb(0 0 0 / 0.35)",
1528
+ shadowSm: "0 2px 6px 0 rgb(0 0 0 / 0.4)",
1529
+ shadowMd: "0 8px 20px -6px rgb(0 0 0 / 0.5)",
1530
+ shadowLg: "0 16px 32px -10px rgb(0 0 0 / 0.55)",
1531
+ shadowXl: "0 24px 48px -12px rgb(0 0 0 / 0.6)",
1532
+ shadow2xl: "0 32px 64px -16px rgb(0 0 0 / 0.7)"
1533
+ }
1534
+ },
1535
+ typography: {
1536
+ preheader: {
1537
+ fontFamily: "font-work-sans",
1538
+ fontSize: "text-xs",
1539
+ fontWeight: "font-medium",
1540
+ lineHeight: "leading-relaxed",
1541
+ letterSpacing: "tracking-widest",
1542
+ textTransform: "uppercase"
1543
+ },
1544
+ header1: {
1545
+ fontFamily: "font-playfair-display",
1546
+ fontSize: "text-6xl",
1547
+ fontWeight: "font-medium",
1548
+ lineHeight: "leading-none",
1549
+ letterSpacing: "tracking-tighter"
1550
+ },
1551
+ header2: {
1552
+ fontFamily: "font-playfair-display",
1553
+ fontSize: "text-4xl",
1554
+ fontWeight: "font-medium",
1555
+ lineHeight: "leading-tight",
1556
+ letterSpacing: "tracking-tighter"
1557
+ },
1558
+ header3: {
1559
+ fontFamily: "font-source-serif-4",
1560
+ fontSize: "text-3xl",
1561
+ fontWeight: "font-medium",
1562
+ lineHeight: "leading-snug",
1563
+ letterSpacing: "tracking-tight"
1564
+ },
1565
+ header4: {
1566
+ fontFamily: "font-source-serif-4",
1567
+ fontSize: "text-2xl",
1568
+ fontWeight: "font-medium",
1569
+ lineHeight: "leading-snug",
1570
+ letterSpacing: "tracking-tight"
1571
+ },
1572
+ subheader1: {
1573
+ fontFamily: "font-source-serif-4",
1574
+ fontSize: "text-xl",
1575
+ fontWeight: "font-normal",
1576
+ lineHeight: "leading-relaxed"
1577
+ },
1578
+ subheader2: {
1579
+ fontFamily: "font-work-sans",
1580
+ fontSize: "text-lg",
1581
+ fontWeight: "font-normal",
1582
+ lineHeight: "leading-relaxed"
1583
+ },
1584
+ text1: {
1585
+ fontFamily: "font-source-serif-4",
1586
+ fontSize: "text-lg",
1587
+ fontWeight: "font-normal",
1588
+ lineHeight: "leading-loose"
1589
+ },
1590
+ text2: {
1591
+ fontFamily: "font-work-sans",
1592
+ fontSize: "text-sm",
1593
+ fontWeight: "font-normal",
1594
+ lineHeight: "leading-relaxed"
1595
+ },
1596
+ link: {
1597
+ fontFamily: "font-work-sans",
1598
+ fontSize: "text-base",
1599
+ fontWeight: "font-medium"
1600
+ },
1601
+ button: {
1602
+ fontFamily: "font-work-sans",
1603
+ fontSize: "text-sm",
1604
+ fontWeight: "font-medium",
1605
+ letterSpacing: "tracking-wide"
1606
+ },
1607
+ input: {
1608
+ fontFamily: "font-work-sans",
1609
+ fontSize: "text-base",
1610
+ fontWeight: "font-normal"
1611
+ },
1612
+ caption: {
1613
+ fontFamily: "font-work-sans",
1614
+ fontSize: "text-xs",
1615
+ fontWeight: "font-medium",
1616
+ lineHeight: "leading-normal",
1617
+ letterSpacing: "tracking-wide"
1618
+ }
1619
+ },
1620
+ interactives: {
1621
+ button: {
1622
+ padding: { x: "px-6", y: "py-3" },
1623
+ border: {
1624
+ width: "border-0",
1625
+ radius: "rounded-full"
1626
+ },
1627
+ shadow: "shadow-none",
1628
+ custom: "transition-colors duration-200",
1629
+ disabled: {
1630
+ opacity: "opacity-50",
1631
+ cursor: "cursor-not-allowed"
1632
+ }
1633
+ },
1634
+ link: {
1635
+ padding: { x: "px-0", y: "py-0" },
1636
+ custom: "underline-offset-4 decoration-1 hover:underline"
1637
+ },
1638
+ card: {
1639
+ padding: { x: "px-8", y: "py-8" },
1640
+ border: {
1641
+ width: "border-0",
1642
+ radius: "rounded-none"
1643
+ },
1644
+ shadow: "shadow-none",
1645
+ custom: ""
1646
+ },
1647
+ input: {
1648
+ padding: { x: "px-4", y: "py-3" },
1649
+ border: {
1650
+ width: "border",
1651
+ radius: "rounded-none",
1652
+ style: "border-solid"
1653
+ },
1654
+ shadow: "shadow-none",
1655
+ custom: "",
1656
+ disabled: {
1657
+ opacity: "opacity-50",
1658
+ cursor: "cursor-not-allowed"
1659
+ }
1660
+ }
1661
+ },
1662
+ structure: {
1663
+ page: { width: "max-w-5xl" },
1664
+ section: {
1665
+ padding: { x: "px-6", y: "py-24" }
1666
+ }
1667
+ }
1668
+ };
1669
+ var editorial = {
1670
+ id: "editorial",
1671
+ name: "Editorial",
1672
+ theme: themeStyles4
1673
+ };
1674
+
1675
+ // src/primitives/themes/neobrutalism.ts
1676
+ var themeStyles5 = {
1677
+ colors: {
1678
+ light: {
1679
+ background: "#f3fff9",
1680
+ foreground: "#050505",
1681
+ card: "#ffffff",
1682
+ cardForeground: "#050505",
1683
+ popover: "#ffffff",
1684
+ popoverForeground: "#050505",
1685
+ primary: "#ffe600",
1686
+ primaryForeground: "#050505",
1687
+ secondary: "#7df9ff",
1688
+ secondaryForeground: "#050505",
1689
+ muted: "#e7fff4",
1690
+ mutedForeground: "#3f3f46",
1691
+ accent: "#2ff2f2",
1692
+ accentForeground: "#050505",
1693
+ border: "#050505",
1694
+ destructive: "#ff4911",
1695
+ input: "#050505",
1696
+ ring: "#050505",
1697
+ chart1: "#ffe600",
1698
+ chart2: "#7df9ff",
1699
+ chart3: "#2ff2f2",
1700
+ chart4: "#ff4911",
1701
+ chart5: "#6fffd7",
1702
+ sidebar: "#ffffff",
1703
+ sidebarForeground: "#050505",
1704
+ sidebarPrimary: "#ffe600",
1705
+ sidebarPrimaryForeground: "#050505",
1706
+ sidebarAccent: "#2ff2f2",
1707
+ sidebarAccentForeground: "#050505",
1708
+ sidebarBorder: "#050505",
1709
+ sidebarRing: "#050505",
1710
+ shadow2xs: "2px 2px 0 0 #050505",
1711
+ shadowXs: "3px 3px 0 0 #050505",
1712
+ shadowSm: "4px 4px 0 0 #050505",
1713
+ shadowMd: "6px 6px 0 0 #050505",
1714
+ shadowLg: "8px 8px 0 0 #050505",
1715
+ shadowXl: "10px 10px 0 0 #050505",
1716
+ shadow2xl: "14px 14px 0 0 #050505"
1717
+ },
1718
+ dark: {
1719
+ background: "#050505",
1720
+ foreground: "#6fffd7",
1721
+ card: "#0a0a0a",
1722
+ cardForeground: "#6fffd7",
1723
+ popover: "#0a0a0a",
1724
+ popoverForeground: "#6fffd7",
1725
+ primary: "#ffe600",
1726
+ primaryForeground: "#050505",
1727
+ secondary: "#7df9ff",
1728
+ secondaryForeground: "#050505",
1729
+ muted: "#141414",
1730
+ mutedForeground: "#a1a1aa",
1731
+ accent: "#2ff2f2",
1732
+ accentForeground: "#050505",
1733
+ border: "#6fffd7",
1734
+ destructive: "#ff4911",
1735
+ input: "#6fffd7",
1736
+ ring: "#6fffd7",
1737
+ chart1: "#ffe600",
1738
+ chart2: "#7df9ff",
1739
+ chart3: "#2ff2f2",
1740
+ chart4: "#ff4911",
1741
+ chart5: "#6fffd7",
1742
+ sidebar: "#050505",
1743
+ sidebarForeground: "#6fffd7",
1744
+ sidebarPrimary: "#ffe600",
1745
+ sidebarPrimaryForeground: "#050505",
1746
+ sidebarAccent: "#2ff2f2",
1747
+ sidebarAccentForeground: "#050505",
1748
+ sidebarBorder: "#6fffd7",
1749
+ sidebarRing: "#6fffd7",
1750
+ shadow2xs: "2px 2px 0 0 #6fffd7",
1751
+ shadowXs: "3px 3px 0 0 #6fffd7",
1752
+ shadowSm: "4px 4px 0 0 #6fffd7",
1753
+ shadowMd: "6px 6px 0 0 #6fffd7",
1754
+ shadowLg: "8px 8px 0 0 #6fffd7",
1755
+ shadowXl: "10px 10px 0 0 #6fffd7",
1756
+ shadow2xl: "14px 14px 0 0 #6fffd7"
1757
+ }
1758
+ },
1759
+ typography: {
1760
+ preheader: {
1761
+ fontFamily: "font-inter",
1762
+ fontSize: "text-sm",
1763
+ fontWeight: "font-bold",
1764
+ letterSpacing: "tracking-widest",
1765
+ textTransform: "uppercase"
1766
+ },
1767
+ header1: {
1768
+ fontFamily: "font-inter",
1769
+ fontSize: "text-5xl",
1770
+ fontWeight: "font-black",
1771
+ lineHeight: "leading-none",
1772
+ letterSpacing: "tracking-tighter"
1773
+ },
1774
+ header2: {
1775
+ fontFamily: "font-inter",
1776
+ fontSize: "text-4xl",
1777
+ fontWeight: "font-extrabold",
1778
+ lineHeight: "leading-tight",
1779
+ letterSpacing: "tracking-tight"
1780
+ },
1781
+ header3: {
1782
+ fontFamily: "font-inter",
1783
+ fontSize: "text-2xl",
1784
+ fontWeight: "font-extrabold",
1785
+ lineHeight: "leading-snug"
1786
+ },
1787
+ header4: {
1788
+ fontFamily: "font-inter",
1789
+ fontSize: "text-xl",
1790
+ fontWeight: "font-bold",
1791
+ lineHeight: "leading-snug"
1792
+ },
1793
+ subheader1: {
1794
+ fontFamily: "font-inter",
1795
+ fontSize: "text-lg",
1796
+ fontWeight: "font-medium",
1797
+ lineHeight: "leading-relaxed"
1798
+ },
1799
+ subheader2: {
1800
+ fontFamily: "font-inter",
1801
+ fontSize: "text-base",
1802
+ fontWeight: "font-medium"
1803
+ },
1804
+ text1: {
1805
+ fontFamily: "font-inter",
1806
+ fontSize: "text-base",
1807
+ fontWeight: "font-medium",
1808
+ lineHeight: "leading-relaxed"
1809
+ },
1810
+ text2: {
1811
+ fontFamily: "font-inter",
1812
+ fontSize: "text-sm",
1813
+ fontWeight: "font-medium"
1814
+ },
1815
+ link: {
1816
+ fontFamily: "font-inter",
1817
+ fontSize: "text-base",
1818
+ fontWeight: "font-extrabold"
1819
+ },
1820
+ button: {
1821
+ fontFamily: "font-inter",
1822
+ fontSize: "text-base",
1823
+ fontWeight: "font-extrabold",
1824
+ letterSpacing: "tracking-wide"
1825
+ },
1826
+ input: {
1827
+ fontFamily: "font-inter",
1828
+ fontSize: "text-base",
1829
+ fontWeight: "font-medium"
1830
+ },
1831
+ caption: {
1832
+ fontFamily: "font-inter",
1833
+ fontSize: "text-xs",
1834
+ fontWeight: "font-bold",
1835
+ letterSpacing: "tracking-wide",
1836
+ textTransform: "uppercase"
1837
+ }
1838
+ },
1839
+ interactives: {
1840
+ button: {
1841
+ padding: { x: "px-6", y: "py-3" },
1842
+ border: {
1843
+ width: "border-2",
1844
+ radius: "rounded-none",
1845
+ style: "border-solid"
1846
+ },
1847
+ shadow: "shadow-md",
1848
+ custom: "transition-transform duration-150 ease-out hover:translate-x-1 hover:translate-y-1 hover:shadow-none",
1849
+ disabled: {
1850
+ opacity: "opacity-50",
1851
+ cursor: "cursor-not-allowed"
1852
+ }
1853
+ },
1854
+ link: {
1855
+ padding: { x: "px-0", y: "py-0" },
1856
+ custom: "underline decoration-2 underline-offset-4"
1857
+ },
1858
+ card: {
1859
+ padding: { x: "px-6", y: "py-6" },
1860
+ border: {
1861
+ width: "border-2",
1862
+ radius: "rounded-none",
1863
+ style: "border-solid"
1864
+ },
1865
+ shadow: "shadow-md",
1866
+ custom: "transition-transform duration-150 ease-out hover:translate-x-1 hover:translate-y-1 hover:shadow-none"
1867
+ },
1868
+ input: {
1869
+ padding: { x: "px-4", y: "py-3" },
1870
+ border: {
1871
+ width: "border-2",
1872
+ style: "border-solid",
1873
+ radius: "rounded-none"
1874
+ },
1875
+ shadow: "shadow-sm",
1876
+ custom: "",
1877
+ disabled: {
1878
+ cursor: "cursor-not-allowed",
1879
+ opacity: "opacity-50"
1880
+ }
1881
+ }
1882
+ },
1883
+ structure: {
1884
+ page: { width: "max-w-6xl" },
1885
+ section: {
1886
+ padding: { x: "px-6", y: "py-16" }
1887
+ }
1888
+ }
1889
+ };
1890
+ var neobrutalism = {
1891
+ id: "neobrutalism",
1892
+ name: "Neo-Brutalism",
1893
+ theme: themeStyles5
1894
+ };
1895
+
1896
+ // src/primitives/themes/index.ts
1897
+ var themes = [
1898
+ classic,
1899
+ studio,
1900
+ midnight,
1901
+ editorial,
1902
+ neobrutalism
1903
+ ];
1904
+ var Sheet = SheetPrimitive.Root;
1905
+ var SheetTrigger = SheetPrimitive.Trigger;
1906
+ var SheetPortal = SheetPrimitive.Portal;
1907
+ var SheetOverlay = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1908
+ SheetPrimitive.Overlay,
1909
+ {
1910
+ className: cn(
1911
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
1912
+ className
1913
+ ),
1914
+ ...props,
1915
+ ref
1916
+ }
1917
+ ));
1918
+ SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
1919
+ var sheetVariants = cva(
1920
+ "fixed z-50 gap-4 bg-background p-6 text-foreground shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
1921
+ {
1922
+ variants: {
1923
+ side: {
1924
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
1925
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
1926
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
1927
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
1928
+ }
1929
+ },
1930
+ defaultVariants: {
1931
+ side: "right"
1932
+ }
1933
+ }
1934
+ );
1935
+ var SheetContent = React10.forwardRef(({ side = "right", className, children, container, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { container: container ?? void 0, children: [
1936
+ /* @__PURE__ */ jsx(SheetOverlay, {}),
1937
+ /* @__PURE__ */ jsxs(
1938
+ SheetPrimitive.Content,
1939
+ {
1940
+ ref,
1941
+ className: cn(sheetVariants({ side }), className),
1942
+ ...props,
1943
+ children: [
1944
+ children,
1945
+ /* @__PURE__ */ jsxs(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
1946
+ /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
1947
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1948
+ ] })
1949
+ ]
1950
+ }
1951
+ )
1952
+ ] }));
1953
+ SheetContent.displayName = SheetPrimitive.Content.displayName;
1954
+ var SheetTitle = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1955
+ SheetPrimitive.Title,
1956
+ {
1957
+ ref,
1958
+ className: cn("text-lg font-semibold text-foreground", className),
1959
+ ...props
1960
+ }
1961
+ ));
1962
+ SheetTitle.displayName = SheetPrimitive.Title.displayName;
1963
+ var SheetDescription = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1964
+ SheetPrimitive.Description,
1965
+ {
1966
+ ref,
1967
+ className: cn("text-sm text-muted-foreground", className),
1968
+ ...props
1969
+ }
1970
+ ));
1971
+ SheetDescription.displayName = SheetPrimitive.Description.displayName;
1972
+ function Drawer({
1973
+ trigger,
1974
+ children,
1975
+ side = "left",
1976
+ open,
1977
+ setOpen,
1978
+ style,
1979
+ className = "",
1980
+ theme: _theme
1981
+ }) {
1982
+ const triggerWrapRef = useRef(null);
1983
+ const [container, setContainer] = useState(null);
1984
+ useLayoutEffect(() => {
1985
+ const root = triggerWrapRef.current?.closest(
1986
+ "[data-pb-theme], .pb-theme"
1987
+ );
1988
+ setContainer(root instanceof HTMLElement ? root : null);
1989
+ }, []);
1990
+ return /* @__PURE__ */ jsxs(Sheet, { open, onOpenChange: setOpen, children: [
1991
+ /* @__PURE__ */ jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsx("span", { ref: triggerWrapRef, children: trigger }) }),
1992
+ /* @__PURE__ */ jsx(
1993
+ SheetContent,
1994
+ {
1995
+ side,
1996
+ style,
1997
+ container,
1998
+ className: cn(
1999
+ "bg-background text-foreground",
2000
+ !container && "pb-theme",
2001
+ className
2002
+ ),
2003
+ children
2004
+ }
2005
+ )
2006
+ ] });
2007
+ }
2008
+
2009
+ export { Badge2 as Badge, Button, Button2, Caption, Drawer, Header1, Header2, Header3, Header4, Input2 as Input, Label2 as Label, Link, PageCard, PageCardContent, PageCardHeader, PageCardImage, Preheader, Section, Subheader1, Subheader2, Switch, Switch2, Text1, Text2, Textarea, cn, themes };
2010
+ //# sourceMappingURL=chunk-RBJBODQP.js.map
2011
+ //# sourceMappingURL=chunk-RBJBODQP.js.map