@frontlit/page-builder 0.1.0-alpha.1 → 0.1.0-alpha.2

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 (58) hide show
  1. package/README.md +6 -2
  2. package/dist/blocks/index.d.ts +7 -5
  3. package/dist/blocks/index.js +4 -3
  4. package/dist/builder/index.d.ts +5 -7
  5. package/dist/builder/index.js +6 -5
  6. package/dist/{button-C3VrMJkr.d.ts → button-Bzt1GDO-.d.ts} +2 -2
  7. package/dist/{chunk-GTY75HW2.js → chunk-ATNM5JHI.js} +2 -2
  8. package/dist/chunk-ATNM5JHI.js.map +1 -0
  9. package/dist/{chunk-7W6Q4WA7.js → chunk-H4P5MFJI.js} +89 -73
  10. package/dist/chunk-H4P5MFJI.js.map +1 -0
  11. package/dist/{chunk-SSQWYMQR.js → chunk-HDINUNI2.js} +11 -39
  12. package/dist/chunk-HDINUNI2.js.map +1 -0
  13. package/dist/{chunk-MO76KZY2.js → chunk-KQKSLI3L.js} +339 -314
  14. package/dist/chunk-KQKSLI3L.js.map +1 -0
  15. package/dist/{chunk-RBJBODQP.js → chunk-SGNRWWG3.js} +1931 -919
  16. package/dist/chunk-SGNRWWG3.js.map +1 -0
  17. package/dist/{chunk-7KIX4WAO.js → chunk-UO7XGBGM.js} +439 -535
  18. package/dist/chunk-UO7XGBGM.js.map +1 -0
  19. package/dist/chunk-XU7ALPGQ.js +22 -0
  20. package/dist/chunk-XU7ALPGQ.js.map +1 -0
  21. package/dist/components/index.d.ts +3 -3
  22. package/dist/components/index.js +3 -2
  23. package/dist/data-slots.d.ts +3 -3
  24. package/dist/data-slots.js +1 -1
  25. package/dist/{image-D7GlnOio.d.ts → image-DAWVx1zQ.d.ts} +3 -2
  26. package/dist/index.d.ts +7 -7
  27. package/dist/index.js +7 -6
  28. package/dist/media-CnLImjVC.d.ts +21 -0
  29. package/dist/models/index.d.ts +5 -5
  30. package/dist/models/index.js +1 -0
  31. package/dist/{page-DfVl_aHX.d.ts → page-W3hQga4w.d.ts} +2 -3
  32. package/dist/primitives/index.d.ts +251 -60
  33. package/dist/primitives/index.js +2 -1
  34. package/dist/renderer/index.d.ts +3 -3
  35. package/dist/renderer/index.js +5 -4
  36. package/dist/{section-background-BgOCp5l3.d.ts → section-background-MsdE40Rk.d.ts} +1 -1
  37. package/dist/styles.css +3896 -8303
  38. package/dist/{theme-style-39nxXQy0.d.ts → theme-style-Cbl7NM-T.d.ts} +23 -1
  39. package/dist/theme.css +174 -191
  40. package/dist/{widget--uEOpdq3.d.ts → widget-B_RoG6se.d.ts} +10 -6
  41. package/package.json +21 -10
  42. package/dist/chunk-7KIX4WAO.js.map +0 -1
  43. package/dist/chunk-7W6Q4WA7.js.map +0 -1
  44. package/dist/chunk-GTY75HW2.js.map +0 -1
  45. package/dist/chunk-MO76KZY2.js.map +0 -1
  46. package/dist/chunk-RBJBODQP.js.map +0 -1
  47. package/dist/chunk-SSQWYMQR.js.map +0 -1
  48. package/dist/fonts/montserrat/montserrat-latin-100-normal.woff2 +0 -0
  49. package/dist/fonts/montserrat/montserrat-latin-200-normal.woff2 +0 -0
  50. package/dist/fonts/montserrat/montserrat-latin-300-normal.woff2 +0 -0
  51. package/dist/fonts/montserrat/montserrat-latin-400-normal.woff2 +0 -0
  52. package/dist/fonts/montserrat/montserrat-latin-500-normal.woff2 +0 -0
  53. package/dist/fonts/montserrat/montserrat-latin-600-normal.woff2 +0 -0
  54. package/dist/fonts/montserrat/montserrat-latin-700-normal.woff2 +0 -0
  55. package/dist/fonts/montserrat/montserrat-latin-800-normal.woff2 +0 -0
  56. package/dist/fonts/montserrat/montserrat-latin-900-normal.woff2 +0 -0
  57. package/dist/fonts/source-sans-3/source-sans-3-latin-400-normal.woff2 +0 -0
  58. package/dist/media-Njv378j7.d.ts +0 -13
@@ -1,77 +1,331 @@
1
1
  "use client";
2
+ import { getMediaUrl } from './chunk-XU7ALPGQ.js';
3
+ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
4
+ import { X, Check, Circle, ChevronRight, ChevronDown, ChevronUp } from 'lucide-react';
5
+ import * as React7 from 'react';
6
+ import React7__default, { useRef, useState, useLayoutEffect } from 'react';
2
7
  import { clsx } from 'clsx';
3
8
  import { twMerge } from 'tailwind-merge';
4
9
  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';
10
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
8
11
  import { cva } from 'class-variance-authority';
12
+ import { Slot } from '@radix-ui/react-slot';
13
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
14
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
15
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
9
16
  import * as LabelPrimitive from '@radix-ui/react-label';
17
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
18
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
19
+ import * as SelectPrimitive from '@radix-ui/react-select';
20
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
10
21
  import * as SwitchPrimitives from '@radix-ui/react-switch';
11
- import * as SheetPrimitive from '@radix-ui/react-dialog';
12
- import { X } from 'lucide-react';
22
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
13
23
 
14
- // src/primitives/lib/utils.ts
15
24
  function cn(...inputs) {
16
25
  return twMerge(clsx(inputs));
17
26
  }
18
- var Preheader = ({
19
- children,
20
- className = "",
21
- theme,
27
+ var AlertDialogThemeContext = React7.createContext(void 0);
28
+ function useAlertDialogTheme(providedTheme) {
29
+ const contextTheme = React7.useContext(AlertDialogThemeContext);
30
+ return providedTheme ?? contextTheme;
31
+ }
32
+ function AlertDialog({ theme, children, ...props }) {
33
+ return /* @__PURE__ */ jsx(AlertDialogThemeContext.Provider, { value: theme, children: /* @__PURE__ */ jsx(AlertDialogPrimitive.Root, { ...props, children }) });
34
+ }
35
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
36
+ var AlertDialogCancel = AlertDialogPrimitive.Cancel;
37
+ var AlertDialogAction = AlertDialogPrimitive.Action;
38
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
39
+ var AlertDialogOverlay = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
40
+ AlertDialogPrimitive.Overlay,
41
+ {
42
+ ref,
43
+ className: cn(
44
+ "fixed inset-0 z-50 bg-black/60 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
45
+ className
46
+ ),
47
+ ...props
48
+ }
49
+ ));
50
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
51
+ var AlertDialogContent = React7.forwardRef(
52
+ ({
53
+ children,
54
+ className,
55
+ closeClassName,
56
+ overlayClassName,
57
+ showCloseButton = false,
58
+ theme: providedTheme,
59
+ ...props
60
+ }, ref) => {
61
+ const theme = useAlertDialogTheme(providedTheme);
62
+ const styles = theme?.interactives?.dialog;
63
+ return /* @__PURE__ */ jsxs(AlertDialogPrimitive.Portal, { children: [
64
+ /* @__PURE__ */ jsx(AlertDialogOverlay, { className: overlayClassName }),
65
+ /* @__PURE__ */ jsxs(
66
+ AlertDialogPrimitive.Content,
67
+ {
68
+ ref,
69
+ className: cn(
70
+ "fixed top-1/2 left-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 overflow-y-auto rounded-lg border bg-popover p-6 text-popover-foreground shadow-lg outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
71
+ styles?.padding?.x,
72
+ styles?.padding?.y,
73
+ styles?.border?.width,
74
+ styles?.border?.radius,
75
+ styles?.border?.style,
76
+ styles?.shadow,
77
+ styles?.custom,
78
+ className
79
+ ),
80
+ ...props,
81
+ children: [
82
+ children,
83
+ showCloseButton ? /* @__PURE__ */ jsxs(
84
+ AlertDialogPrimitive.Cancel,
85
+ {
86
+ className: cn(
87
+ "absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none",
88
+ closeClassName
89
+ ),
90
+ children: [
91
+ /* @__PURE__ */ jsx(X, { className: "size-4" }),
92
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
93
+ ]
94
+ }
95
+ ) : null
96
+ ]
97
+ }
98
+ )
99
+ ] });
100
+ }
101
+ );
102
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
103
+ function AlertDialogHeader({
104
+ className,
22
105
  ...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
106
+ }) {
107
+ return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-2 text-left", className), ...props });
108
+ }
109
+ function AlertDialogFooter({
110
+ className,
111
+ ...props
112
+ }) {
113
+ return /* @__PURE__ */ jsx(
114
+ "div",
115
+ {
116
+ className: cn(
117
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
118
+ className
119
+ ),
120
+ ...props
121
+ }
38
122
  );
39
- return /* @__PURE__ */ jsx("p", { className: classes, ...props, children });
40
- };
41
- var Header1 = ({
123
+ }
124
+ var AlertDialogTitle = React7.forwardRef(({ className, theme: providedTheme, ...props }, ref) => {
125
+ const theme = useAlertDialogTheme(providedTheme);
126
+ const typography = theme?.typography?.header4;
127
+ return /* @__PURE__ */ jsx(
128
+ AlertDialogPrimitive.Title,
129
+ {
130
+ ref,
131
+ className: cn(
132
+ "text-lg leading-none font-semibold",
133
+ typography?.fontFamily,
134
+ typography?.fontSize,
135
+ typography?.fontWeight,
136
+ typography?.lineHeight,
137
+ typography?.letterSpacing,
138
+ typography?.textTransform,
139
+ typography?.textDecoration,
140
+ typography?.textOverflow,
141
+ className
142
+ ),
143
+ ...props
144
+ }
145
+ );
146
+ });
147
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
148
+ var AlertDialogDescription = React7.forwardRef(({ className, theme: providedTheme, ...props }, ref) => {
149
+ const theme = useAlertDialogTheme(providedTheme);
150
+ const typography = theme?.typography?.text2;
151
+ return /* @__PURE__ */ jsx(
152
+ AlertDialogPrimitive.Description,
153
+ {
154
+ ref,
155
+ className: cn(
156
+ "text-sm text-muted-foreground",
157
+ typography?.fontFamily,
158
+ typography?.fontSize,
159
+ typography?.fontWeight,
160
+ typography?.lineHeight,
161
+ typography?.letterSpacing,
162
+ typography?.textTransform,
163
+ typography?.textDecoration,
164
+ typography?.textOverflow,
165
+ className
166
+ ),
167
+ ...props
168
+ }
169
+ );
170
+ });
171
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
172
+ var AvatarThemeContext = React7.createContext(void 0);
173
+ function Avatar({ className, theme, ...props }) {
174
+ return /* @__PURE__ */ jsx(AvatarThemeContext.Provider, { value: theme, children: /* @__PURE__ */ jsx(
175
+ AvatarPrimitive.Root,
176
+ {
177
+ className: cn(
178
+ "relative flex size-10 shrink-0 overflow-hidden rounded-full bg-muted",
179
+ className
180
+ ),
181
+ ...props
182
+ }
183
+ ) });
184
+ }
185
+ var AvatarImage = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
186
+ AvatarPrimitive.Image,
187
+ {
188
+ ref,
189
+ className: cn("aspect-square size-full object-cover", className),
190
+ ...props
191
+ }
192
+ ));
193
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
194
+ var AvatarFallback = React7.forwardRef(({ className, ...props }, ref) => {
195
+ const theme = React7.useContext(AvatarThemeContext);
196
+ const typography = theme?.typography?.text2;
197
+ return /* @__PURE__ */ jsx(
198
+ AvatarPrimitive.Fallback,
199
+ {
200
+ ref,
201
+ className: cn(
202
+ "flex size-full items-center justify-center bg-muted text-muted-foreground",
203
+ typography?.fontFamily,
204
+ typography?.fontSize,
205
+ typography?.fontWeight,
206
+ typography?.lineHeight,
207
+ typography?.letterSpacing,
208
+ className
209
+ ),
210
+ ...props
211
+ }
212
+ );
213
+ });
214
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
215
+ var badgeVariants = cva(
216
+ "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",
217
+ {
218
+ variants: {
219
+ variant: {
220
+ default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
221
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
222
+ destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
223
+ outline: "text-foreground"
224
+ }
225
+ },
226
+ defaultVariants: {
227
+ variant: "default"
228
+ }
229
+ }
230
+ );
231
+ function Badge({ className, variant, ...props }) {
232
+ return /* @__PURE__ */ jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
233
+ }
234
+ var Badge2 = ({
235
+ variant = "default",
42
236
  children,
43
237
  className = "",
238
+ style = {},
44
239
  theme,
45
240
  ...props
46
241
  }) => {
47
- const typographyStyles = theme?.typography?.header1;
242
+ const typographyStyles = theme?.typography?.caption;
243
+ const buttonStyles = theme?.interactives?.button;
48
244
  const classes = cn(
49
245
  // Base styles
50
- "scroll-m-20 text-4xl font-bold tracking-tight",
51
- // Theme overrides
246
+ // "bg-secondary",
247
+ // Theme typography from caption
52
248
  typographyStyles?.fontFamily,
53
249
  typographyStyles?.fontSize,
54
250
  typographyStyles?.fontWeight,
55
251
  typographyStyles?.lineHeight,
56
252
  typographyStyles?.letterSpacing,
57
253
  typographyStyles?.textTransform,
58
- typographyStyles?.textDecoration,
59
- typographyStyles?.textOverflow,
254
+ buttonStyles?.border?.width,
255
+ buttonStyles?.border?.radius,
256
+ buttonStyles?.border?.style,
60
257
  className
61
258
  );
62
- return /* @__PURE__ */ jsx("h1", { className: classes, ...props, children });
259
+ return /* @__PURE__ */ jsx(
260
+ Badge,
261
+ {
262
+ variant,
263
+ className: classes,
264
+ style: {
265
+ ...style,
266
+ backgroundColor: style.backgroundColor,
267
+ color: style.color
268
+ },
269
+ ...props,
270
+ children
271
+ }
272
+ );
63
273
  };
64
- var Header2 = ({
274
+ var buttonVariants = cva(
275
+ "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",
276
+ {
277
+ variants: {
278
+ variant: {
279
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
280
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
281
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
282
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
283
+ ghost: "hover:bg-accent hover:text-accent-foreground",
284
+ link: "text-primary underline-offset-4 hover:underline"
285
+ },
286
+ size: {
287
+ default: "h-10 px-4 py-2",
288
+ sm: "h-9 rounded-md px-3",
289
+ lg: "h-11 rounded-md px-8",
290
+ icon: "h-10 w-10"
291
+ }
292
+ },
293
+ defaultVariants: {
294
+ variant: "default",
295
+ size: "default"
296
+ }
297
+ }
298
+ );
299
+ var Button = React7.forwardRef(
300
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
301
+ const Comp = asChild ? Slot : "button";
302
+ return /* @__PURE__ */ jsx(
303
+ Comp,
304
+ {
305
+ className: cn(buttonVariants({ variant, size, className })),
306
+ ref,
307
+ ...props
308
+ }
309
+ );
310
+ }
311
+ );
312
+ Button.displayName = "Button";
313
+ var Button2 = ({
314
+ variant = "default",
315
+ size = "default",
316
+ disabled = false,
65
317
  children,
66
318
  className = "",
67
319
  theme,
68
320
  ...props
69
321
  }) => {
70
- const typographyStyles = theme?.typography?.header2;
322
+ const buttonStyles = theme?.interactives?.button;
323
+ const typographyStyles = theme?.typography?.button;
324
+ const isIcon = size === "icon";
71
325
  const classes = cn(
72
326
  // Base styles
73
- "scroll-m-20 text-3xl font-bold tracking-tight",
74
- // Theme overrides
327
+ "",
328
+ // Theme typography
75
329
  typographyStyles?.fontFamily,
76
330
  typographyStyles?.fontSize,
77
331
  typographyStyles?.fontWeight,
@@ -80,20 +334,47 @@ var Header2 = ({
80
334
  typographyStyles?.textTransform,
81
335
  typographyStyles?.textDecoration,
82
336
  typographyStyles?.textOverflow,
337
+ // Theme interactivity. Icon buttons stay square — CTA padding
338
+ // would stretch them off the size="icon" box.
339
+ !isIcon && buttonStyles?.padding?.x,
340
+ !isIcon && buttonStyles?.padding?.y,
341
+ buttonStyles?.border?.width,
342
+ buttonStyles?.border?.radius,
343
+ buttonStyles?.border?.style,
344
+ // buttonStyles?.border?.color,
345
+ buttonStyles?.shadow,
346
+ // Theme disabled states
347
+ disabled && buttonStyles?.disabled?.opacity,
348
+ disabled && buttonStyles?.disabled?.cursor,
349
+ disabled && buttonStyles?.disabled?.color,
350
+ disabled && buttonStyles?.disabled?.background,
351
+ disabled && buttonStyles?.disabled?.border,
352
+ // User overrides
353
+ buttonStyles?.custom,
83
354
  className
84
355
  );
85
- return /* @__PURE__ */ jsx("h2", { className: classes, ...props, children });
356
+ return /* @__PURE__ */ jsx(
357
+ Button,
358
+ {
359
+ variant,
360
+ size,
361
+ disabled,
362
+ className: classes,
363
+ ...props,
364
+ children
365
+ }
366
+ );
86
367
  };
87
- var Header3 = ({
368
+ var Caption = ({
88
369
  children,
89
370
  className = "",
90
371
  theme,
91
372
  ...props
92
373
  }) => {
93
- const typographyStyles = theme?.typography?.header3;
374
+ const typographyStyles = theme?.typography?.caption;
94
375
  const classes = cn(
95
376
  // Base styles
96
- "scroll-m-20 text-2xl font-semibold tracking-normal",
377
+ "text-xs leading-7 text-muted-foreground",
97
378
  // Theme overrides
98
379
  typographyStyles?.fontFamily,
99
380
  typographyStyles?.fontSize,
@@ -105,7 +386,7 @@ var Header3 = ({
105
386
  typographyStyles?.textOverflow,
106
387
  className
107
388
  );
108
- return /* @__PURE__ */ jsx("h3", { className: classes, ...props, children });
389
+ return /* @__PURE__ */ jsx("span", { className: classes, ...props, children });
109
390
  };
110
391
  var Header4 = ({
111
392
  children,
@@ -130,64 +411,576 @@ var Header4 = ({
130
411
  );
131
412
  return /* @__PURE__ */ jsx("h4", { className: classes, ...props, children });
132
413
  };
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 = ({
414
+ var PageCard = ({
415
+ isLink,
149
416
  children,
150
417
  className = "",
151
418
  theme,
152
419
  ...props
153
420
  }) => {
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 });
421
+ const cardStyles = theme?.interactives?.card;
422
+ const classes = cn(
423
+ // Base styles
424
+ "bg-card text-card-foreground",
425
+ // Theme interactivity
426
+ cardStyles?.border?.width,
427
+ cardStyles?.border?.radius,
428
+ cardStyles?.border?.style,
429
+ cardStyles?.shadow,
430
+ isLink ? "cursor-pointer" : "",
431
+ // User overrides
432
+ cardStyles?.custom,
433
+ className
434
+ );
435
+ return /* @__PURE__ */ jsx("div", { className: classes, ...props, children });
167
436
  };
168
- var Text1 = ({ children, className = "", theme, component = "p", ...props }) => {
169
- const typographyStyles = theme?.typography?.text1;
437
+ var PageCardImage = ({
438
+ src,
439
+ alt,
440
+ className = "",
441
+ theme,
442
+ ...props
443
+ }) => {
170
444
  const classes = cn(
171
445
  // 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,
446
+ "w-full",
182
447
  className
183
448
  );
184
- return component === "p" ? /* @__PURE__ */ jsx("p", { className: classes, ...props, children }) : /* @__PURE__ */ jsx("span", { className: classes, ...props, children });
449
+ return /* @__PURE__ */ jsx("img", { src, alt, className: classes, ...props });
185
450
  };
186
- var Text2 = ({ children, className = "", theme, component = "p", ...props }) => {
187
- const typographyStyles = theme?.typography?.text2;
451
+ var PageCardContent = ({
452
+ children,
453
+ className = "",
454
+ theme,
455
+ ...props
456
+ }) => {
457
+ const cardStyles = theme?.interactives?.card;
458
+ const classes = cn(
459
+ // Base styles
460
+ "p-4",
461
+ // Theme interactivity
462
+ cardStyles?.padding?.x,
463
+ cardStyles?.padding?.y,
464
+ className
465
+ );
466
+ return /* @__PURE__ */ jsx("div", { className: classes, ...props, children });
467
+ };
468
+ var PageCardHeader = ({
469
+ children,
470
+ className = "",
471
+ theme,
472
+ ...props
473
+ }) => {
474
+ const classes = cn(
475
+ // Base styles
476
+ "pb-4",
477
+ className
478
+ );
479
+ return /* @__PURE__ */ jsx("div", { className: classes, ...props, children: /* @__PURE__ */ jsx(Header4, { theme, children }) });
480
+ };
481
+ var Checkbox = React7.forwardRef(({ className, theme, ...props }, ref) => {
482
+ const inputStyles = theme?.interactives?.input;
483
+ return /* @__PURE__ */ jsx(
484
+ CheckboxPrimitive.Root,
485
+ {
486
+ ref,
487
+ className: cn(
488
+ "peer size-4 shrink-0 rounded-sm border border-primary shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
489
+ inputStyles?.border?.width,
490
+ inputStyles?.border?.radius,
491
+ inputStyles?.border?.style,
492
+ inputStyles?.shadow,
493
+ inputStyles?.custom,
494
+ className
495
+ ),
496
+ ...props,
497
+ children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: /* @__PURE__ */ jsx(Check, { className: "size-3.5" }) })
498
+ }
499
+ );
500
+ });
501
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
502
+ var DialogThemeContext = React7.createContext(void 0);
503
+ function useDialogTheme(providedTheme) {
504
+ const contextTheme = React7.useContext(DialogThemeContext);
505
+ return providedTheme ?? contextTheme;
506
+ }
507
+ function Dialog({ theme, children, ...props }) {
508
+ return /* @__PURE__ */ jsx(DialogThemeContext.Provider, { value: theme, children: /* @__PURE__ */ jsx(DialogPrimitive.Root, { ...props, children }) });
509
+ }
510
+ var DialogTrigger = DialogPrimitive.Trigger;
511
+ var DialogClose = DialogPrimitive.Close;
512
+ var DialogPortal = DialogPrimitive.Portal;
513
+ var DialogOverlay = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
514
+ DialogPrimitive.Overlay,
515
+ {
516
+ ref,
517
+ className: cn(
518
+ "fixed inset-0 z-50 bg-black/60 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
519
+ className
520
+ ),
521
+ ...props
522
+ }
523
+ ));
524
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
525
+ var DialogContent = React7.forwardRef(
526
+ ({
527
+ children,
528
+ className,
529
+ closeClassName,
530
+ overlayClassName,
531
+ showCloseButton = true,
532
+ theme: providedTheme,
533
+ ...props
534
+ }, ref) => {
535
+ const theme = useDialogTheme(providedTheme);
536
+ const styles = theme?.interactives?.dialog;
537
+ return /* @__PURE__ */ jsxs(DialogPrimitive.Portal, { children: [
538
+ /* @__PURE__ */ jsx(DialogOverlay, { className: overlayClassName }),
539
+ /* @__PURE__ */ jsxs(
540
+ DialogPrimitive.Content,
541
+ {
542
+ ref,
543
+ className: cn(
544
+ "fixed top-1/2 left-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 overflow-y-auto rounded-lg border bg-popover p-6 text-popover-foreground shadow-lg outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
545
+ styles?.padding?.x,
546
+ styles?.padding?.y,
547
+ styles?.border?.width,
548
+ styles?.border?.radius,
549
+ styles?.border?.style,
550
+ styles?.shadow,
551
+ styles?.custom,
552
+ className
553
+ ),
554
+ ...props,
555
+ children: [
556
+ children,
557
+ showCloseButton ? /* @__PURE__ */ jsxs(
558
+ DialogPrimitive.Close,
559
+ {
560
+ className: cn(
561
+ "absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none disabled:pointer-events-none",
562
+ closeClassName
563
+ ),
564
+ children: [
565
+ /* @__PURE__ */ jsx(X, { className: "size-4" }),
566
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
567
+ ]
568
+ }
569
+ ) : null
570
+ ]
571
+ }
572
+ )
573
+ ] });
574
+ }
575
+ );
576
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
577
+ function DialogHeader({ className, ...props }) {
578
+ return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-2 text-left", className), ...props });
579
+ }
580
+ function DialogFooter({ className, ...props }) {
581
+ return /* @__PURE__ */ jsx(
582
+ "div",
583
+ {
584
+ className: cn(
585
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
586
+ className
587
+ ),
588
+ ...props
589
+ }
590
+ );
591
+ }
592
+ var DialogTitle = React7.forwardRef(({ className, theme: providedTheme, ...props }, ref) => {
593
+ const theme = useDialogTheme(providedTheme);
594
+ const typography = theme?.typography?.header4;
595
+ return /* @__PURE__ */ jsx(
596
+ DialogPrimitive.Title,
597
+ {
598
+ ref,
599
+ className: cn(
600
+ "text-lg leading-none font-semibold",
601
+ typography?.fontFamily,
602
+ typography?.fontSize,
603
+ typography?.fontWeight,
604
+ typography?.lineHeight,
605
+ typography?.letterSpacing,
606
+ typography?.textTransform,
607
+ typography?.textDecoration,
608
+ typography?.textOverflow,
609
+ className
610
+ ),
611
+ ...props
612
+ }
613
+ );
614
+ });
615
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
616
+ var DialogDescription = React7.forwardRef(({ className, theme: providedTheme, ...props }, ref) => {
617
+ const theme = useDialogTheme(providedTheme);
618
+ const typography = theme?.typography?.text2;
619
+ return /* @__PURE__ */ jsx(
620
+ DialogPrimitive.Description,
621
+ {
622
+ ref,
623
+ className: cn(
624
+ "text-sm text-muted-foreground",
625
+ typography?.fontFamily,
626
+ typography?.fontSize,
627
+ typography?.fontWeight,
628
+ typography?.lineHeight,
629
+ typography?.letterSpacing,
630
+ typography?.textTransform,
631
+ typography?.textDecoration,
632
+ typography?.textOverflow,
633
+ className
634
+ ),
635
+ ...props
636
+ }
637
+ );
638
+ });
639
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
640
+ var Sheet = DialogPrimitive.Root;
641
+ var SheetTrigger = DialogPrimitive.Trigger;
642
+ var SheetPortal = DialogPrimitive.Portal;
643
+ var SheetOverlay = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
644
+ DialogPrimitive.Overlay,
645
+ {
646
+ className: cn(
647
+ "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",
648
+ className
649
+ ),
650
+ ...props,
651
+ ref
652
+ }
653
+ ));
654
+ SheetOverlay.displayName = DialogPrimitive.Overlay.displayName;
655
+ var sheetVariants = cva(
656
+ "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",
657
+ {
658
+ variants: {
659
+ side: {
660
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
661
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
662
+ 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",
663
+ 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"
664
+ }
665
+ },
666
+ defaultVariants: {
667
+ side: "right"
668
+ }
669
+ }
670
+ );
671
+ var SheetContent = React7.forwardRef(({ side = "right", className, children, container, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { container: container ?? void 0, children: [
672
+ /* @__PURE__ */ jsx(SheetOverlay, {}),
673
+ /* @__PURE__ */ jsxs(
674
+ DialogPrimitive.Content,
675
+ {
676
+ ref,
677
+ className: cn(sheetVariants({ side }), className),
678
+ ...props,
679
+ children: [
680
+ children,
681
+ /* @__PURE__ */ jsxs(DialogPrimitive.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: [
682
+ /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
683
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
684
+ ] })
685
+ ]
686
+ }
687
+ )
688
+ ] }));
689
+ SheetContent.displayName = DialogPrimitive.Content.displayName;
690
+ var SheetTitle = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
691
+ DialogPrimitive.Title,
692
+ {
693
+ ref,
694
+ className: cn("text-lg font-semibold text-foreground", className),
695
+ ...props
696
+ }
697
+ ));
698
+ SheetTitle.displayName = DialogPrimitive.Title.displayName;
699
+ var SheetDescription = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
700
+ DialogPrimitive.Description,
701
+ {
702
+ ref,
703
+ className: cn("text-sm text-muted-foreground", className),
704
+ ...props
705
+ }
706
+ ));
707
+ SheetDescription.displayName = DialogPrimitive.Description.displayName;
708
+ function Drawer({
709
+ trigger,
710
+ children,
711
+ side = "left",
712
+ open,
713
+ setOpen,
714
+ style,
715
+ className = "",
716
+ theme: _theme
717
+ }) {
718
+ const triggerWrapRef = useRef(null);
719
+ const [container, setContainer] = useState(null);
720
+ useLayoutEffect(() => {
721
+ const root = triggerWrapRef.current?.closest("[data-pb-theme], .pb-theme");
722
+ setContainer(root instanceof HTMLElement ? root : null);
723
+ }, []);
724
+ return /* @__PURE__ */ jsxs(Sheet, { open, onOpenChange: setOpen, children: [
725
+ /* @__PURE__ */ jsx(SheetTrigger, { asChild: true, children: /* @__PURE__ */ jsx("span", { ref: triggerWrapRef, children: trigger }) }),
726
+ /* @__PURE__ */ jsx(
727
+ SheetContent,
728
+ {
729
+ side,
730
+ style,
731
+ container,
732
+ className: cn(
733
+ "bg-background text-foreground",
734
+ !container && "pb-theme",
735
+ className
736
+ ),
737
+ children
738
+ }
739
+ )
740
+ ] });
741
+ }
742
+ var DropdownMenuThemeContext = React7.createContext(void 0);
743
+ function useDropdownMenuTheme(providedTheme) {
744
+ const contextTheme = React7.useContext(DropdownMenuThemeContext);
745
+ return providedTheme ?? contextTheme;
746
+ }
747
+ function DropdownMenu({ theme, children, ...props }) {
748
+ return /* @__PURE__ */ jsx(DropdownMenuThemeContext.Provider, { value: theme, children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Root, { ...props, children }) });
749
+ }
750
+ var DropdownMenuTrigger = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Trigger, { ref, className, ...props }));
751
+ DropdownMenuTrigger.displayName = DropdownMenuPrimitive.Trigger.displayName;
752
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
753
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
754
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
755
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
756
+ var DropdownMenuContent = React7.forwardRef(({ className, sideOffset = 4, theme: providedTheme, ...props }, ref) => {
757
+ const theme = useDropdownMenuTheme(providedTheme);
758
+ const menuStyles = theme?.interactives?.menu;
759
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
760
+ DropdownMenuPrimitive.Content,
761
+ {
762
+ ref,
763
+ sideOffset,
764
+ className: cn(
765
+ "z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
766
+ menuStyles?.padding?.x,
767
+ menuStyles?.padding?.y,
768
+ menuStyles?.border?.width,
769
+ menuStyles?.border?.radius,
770
+ menuStyles?.border?.style,
771
+ menuStyles?.shadow,
772
+ menuStyles?.custom,
773
+ className
774
+ ),
775
+ ...props
776
+ }
777
+ ) });
778
+ });
779
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
780
+ var DropdownMenuItem = React7.forwardRef(({ className, inset, theme: providedTheme, ...props }, ref) => {
781
+ const theme = useDropdownMenuTheme(providedTheme);
782
+ const menuItemStyles = theme?.interactives?.menu?.item;
783
+ const typographyStyles = theme?.typography?.button;
784
+ return /* @__PURE__ */ jsx(
785
+ DropdownMenuPrimitive.Item,
786
+ {
787
+ ref,
788
+ className: cn(
789
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
790
+ inset && "pl-8",
791
+ typographyStyles?.fontFamily,
792
+ typographyStyles?.fontSize,
793
+ typographyStyles?.fontWeight,
794
+ typographyStyles?.lineHeight,
795
+ typographyStyles?.letterSpacing,
796
+ typographyStyles?.textTransform,
797
+ typographyStyles?.textDecoration,
798
+ typographyStyles?.textOverflow,
799
+ menuItemStyles?.padding?.x,
800
+ menuItemStyles?.padding?.y,
801
+ menuItemStyles?.border?.width,
802
+ menuItemStyles?.border?.radius,
803
+ menuItemStyles?.border?.style,
804
+ menuItemStyles?.custom,
805
+ className
806
+ ),
807
+ ...props
808
+ }
809
+ );
810
+ });
811
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
812
+ var DropdownMenuCheckboxItem = React7.forwardRef(({ className, children, checked, theme: providedTheme, ...props }, ref) => {
813
+ const theme = useDropdownMenuTheme(providedTheme);
814
+ const menuItemStyles = theme?.interactives?.menu?.item;
815
+ const typographyStyles = theme?.typography?.button;
816
+ return /* @__PURE__ */ jsxs(
817
+ DropdownMenuPrimitive.CheckboxItem,
818
+ {
819
+ ref,
820
+ checked,
821
+ className: cn(
822
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
823
+ typographyStyles?.fontFamily,
824
+ typographyStyles?.fontSize,
825
+ typographyStyles?.fontWeight,
826
+ typographyStyles?.lineHeight,
827
+ typographyStyles?.letterSpacing,
828
+ menuItemStyles?.padding?.x,
829
+ menuItemStyles?.padding?.y,
830
+ menuItemStyles?.border?.width,
831
+ menuItemStyles?.border?.radius,
832
+ menuItemStyles?.border?.style,
833
+ menuItemStyles?.custom,
834
+ className
835
+ ),
836
+ ...props,
837
+ children: [
838
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "size-4" }) }) }),
839
+ children
840
+ ]
841
+ }
842
+ );
843
+ });
844
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
845
+ var DropdownMenuRadioItem = React7.forwardRef(({ className, children, theme: providedTheme, ...props }, ref) => {
846
+ const theme = useDropdownMenuTheme(providedTheme);
847
+ const menuItemStyles = theme?.interactives?.menu?.item;
848
+ const typographyStyles = theme?.typography?.button;
849
+ return /* @__PURE__ */ jsxs(
850
+ DropdownMenuPrimitive.RadioItem,
851
+ {
852
+ ref,
853
+ className: cn(
854
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
855
+ typographyStyles?.fontFamily,
856
+ typographyStyles?.fontSize,
857
+ typographyStyles?.fontWeight,
858
+ typographyStyles?.lineHeight,
859
+ typographyStyles?.letterSpacing,
860
+ menuItemStyles?.padding?.x,
861
+ menuItemStyles?.padding?.y,
862
+ menuItemStyles?.border?.width,
863
+ menuItemStyles?.border?.radius,
864
+ menuItemStyles?.border?.style,
865
+ menuItemStyles?.custom,
866
+ className
867
+ ),
868
+ ...props,
869
+ children: [
870
+ /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { className: "size-2 fill-current" }) }) }),
871
+ children
872
+ ]
873
+ }
874
+ );
875
+ });
876
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
877
+ var DropdownMenuLabel = React7.forwardRef(({ className, inset, theme: providedTheme, ...props }, ref) => {
878
+ const theme = useDropdownMenuTheme(providedTheme);
879
+ const typographyStyles = theme?.typography?.caption ?? theme?.typography?.button;
880
+ return /* @__PURE__ */ jsx(
881
+ DropdownMenuPrimitive.Label,
882
+ {
883
+ ref,
884
+ className: cn(
885
+ "px-2 py-1.5 text-sm font-semibold",
886
+ inset && "pl-8",
887
+ typographyStyles?.fontFamily,
888
+ typographyStyles?.fontSize,
889
+ typographyStyles?.fontWeight,
890
+ typographyStyles?.lineHeight,
891
+ typographyStyles?.letterSpacing,
892
+ typographyStyles?.textTransform,
893
+ className
894
+ ),
895
+ ...props
896
+ }
897
+ );
898
+ });
899
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
900
+ var DropdownMenuSeparator = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
901
+ DropdownMenuPrimitive.Separator,
902
+ {
903
+ ref,
904
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
905
+ ...props
906
+ }
907
+ ));
908
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
909
+ var DropdownMenuShortcut = ({
910
+ className,
911
+ ...props
912
+ }) => /* @__PURE__ */ jsx(
913
+ "span",
914
+ {
915
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className),
916
+ ...props
917
+ }
918
+ );
919
+ var DropdownMenuSubTrigger = React7.forwardRef(({ className, inset, children, theme: providedTheme, ...props }, ref) => {
920
+ const theme = useDropdownMenuTheme(providedTheme);
921
+ const menuItemStyles = theme?.interactives?.menu?.item;
922
+ const typographyStyles = theme?.typography?.button;
923
+ return /* @__PURE__ */ jsxs(
924
+ DropdownMenuPrimitive.SubTrigger,
925
+ {
926
+ ref,
927
+ className: cn(
928
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[state=open]:bg-accent",
929
+ inset && "pl-8",
930
+ typographyStyles?.fontFamily,
931
+ typographyStyles?.fontSize,
932
+ typographyStyles?.fontWeight,
933
+ typographyStyles?.lineHeight,
934
+ typographyStyles?.letterSpacing,
935
+ menuItemStyles?.padding?.x,
936
+ menuItemStyles?.padding?.y,
937
+ menuItemStyles?.border?.radius,
938
+ menuItemStyles?.custom,
939
+ className
940
+ ),
941
+ ...props,
942
+ children: [
943
+ children,
944
+ /* @__PURE__ */ jsx(ChevronRight, { className: "ml-auto size-4" })
945
+ ]
946
+ }
947
+ );
948
+ });
949
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
950
+ var DropdownMenuSubContent = React7.forwardRef(({ className, theme: providedTheme, ...props }, ref) => {
951
+ const theme = useDropdownMenuTheme(providedTheme);
952
+ const menuStyles = theme?.interactives?.menu;
953
+ return /* @__PURE__ */ jsx(
954
+ DropdownMenuPrimitive.SubContent,
955
+ {
956
+ ref,
957
+ className: cn(
958
+ "z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg",
959
+ menuStyles?.padding?.x,
960
+ menuStyles?.padding?.y,
961
+ menuStyles?.border?.width,
962
+ menuStyles?.border?.radius,
963
+ menuStyles?.border?.style,
964
+ menuStyles?.shadow,
965
+ menuStyles?.custom,
966
+ className
967
+ ),
968
+ ...props
969
+ }
970
+ );
971
+ });
972
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
973
+ var DropdownMenuArrow = DropdownMenuPrimitive.Arrow;
974
+ var Header1 = ({
975
+ children,
976
+ className = "",
977
+ theme,
978
+ ...props
979
+ }) => {
980
+ const typographyStyles = theme?.typography?.header1;
188
981
  const classes = cn(
189
982
  // Base styles
190
- "text-sm",
983
+ "scroll-m-20 text-4xl font-bold tracking-tight",
191
984
  // Theme overrides
192
985
  typographyStyles?.fontFamily,
193
986
  typographyStyles?.fontSize,
@@ -199,22 +992,19 @@ var Text2 = ({ children, className = "", theme, component = "p", ...props }) =>
199
992
  typographyStyles?.textOverflow,
200
993
  className
201
994
  );
202
- return component === "p" ? /* @__PURE__ */ jsx("p", { className: classes, ...props, children }) : /* @__PURE__ */ jsx("span", { className: classes, ...props, children });
995
+ return /* @__PURE__ */ jsx("h1", { className: classes, ...props, children });
203
996
  };
204
- var Link = ({
997
+ var Header2 = ({
205
998
  children,
206
999
  className = "",
207
1000
  theme,
208
- disabled = false,
209
- style,
210
1001
  ...props
211
1002
  }) => {
212
- const typographyStyles = theme?.typography?.link;
213
- const linkStyles = theme?.interactives?.link;
1003
+ const typographyStyles = theme?.typography?.header2;
214
1004
  const classes = cn(
215
1005
  // Base styles
216
- "font-medium cursor-pointer",
217
- // Theme typography
1006
+ "scroll-m-20 text-3xl font-bold tracking-tight",
1007
+ // Theme overrides
218
1008
  typographyStyles?.fontFamily,
219
1009
  typographyStyles?.fontSize,
220
1010
  typographyStyles?.fontWeight,
@@ -223,90 +1013,21 @@ var Link = ({
223
1013
  typographyStyles?.textTransform,
224
1014
  typographyStyles?.textDecoration,
225
1015
  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
1016
  className
241
1017
  );
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
- );
1018
+ return /* @__PURE__ */ jsx("h2", { className: classes, ...props, children });
254
1019
  };
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,
1020
+ var Header3 = ({
298
1021
  children,
299
1022
  className = "",
300
1023
  theme,
301
1024
  ...props
302
1025
  }) => {
303
- const buttonStyles = theme?.interactives?.button;
304
- const typographyStyles = theme?.typography?.button;
305
- const isIcon = size === "icon";
1026
+ const typographyStyles = theme?.typography?.header3;
306
1027
  const classes = cn(
307
1028
  // Base styles
308
- "",
309
- // Theme typography
1029
+ "scroll-m-20 text-2xl font-semibold tracking-normal",
1030
+ // Theme overrides
310
1031
  typographyStyles?.fontFamily,
311
1032
  typographyStyles?.fontSize,
312
1033
  typographyStyles?.fontWeight,
@@ -315,38 +1036,22 @@ var Button2 = ({
315
1036
  typographyStyles?.textTransform,
316
1037
  typographyStyles?.textDecoration,
317
1038
  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
1039
  className
336
1040
  );
337
- return /* @__PURE__ */ jsx(
338
- Button,
339
- {
340
- variant,
341
- size,
342
- disabled,
343
- className: classes,
344
- ...props,
345
- children
346
- }
347
- );
1041
+ return /* @__PURE__ */ jsx("h3", { className: classes, ...props, children });
1042
+ };
1043
+ var Image2 = ({
1044
+ src,
1045
+ alt = "",
1046
+ className = "",
1047
+ theme,
1048
+ ...props
1049
+ }) => {
1050
+ const cardStyles = theme?.interactives?.card;
1051
+ const classes = cn("w-full object-cover", cardStyles?.border?.radius, className);
1052
+ return /* @__PURE__ */ jsx("img", { src, alt, className: classes, ...props });
348
1053
  };
349
- var Input = React10.forwardRef(
1054
+ var Input = React7.forwardRef(
350
1055
  ({ className, type, ...props }, ref) => {
351
1056
  return /* @__PURE__ */ jsx(
352
1057
  "input",
@@ -363,7 +1068,7 @@ var Input = React10.forwardRef(
363
1068
  }
364
1069
  );
365
1070
  Input.displayName = "Input";
366
- var Input2 = React10__default.forwardRef(
1071
+ var Input2 = React7__default.forwardRef(
367
1072
  ({
368
1073
  className = "",
369
1074
  theme,
@@ -408,128 +1113,11 @@ var Input2 = React10__default.forwardRef(
408
1113
  return /* @__PURE__ */ jsx(Input, { ref, className: classes, ...props });
409
1114
  }
410
1115
  );
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
- };
1116
+ Input2.displayName = "Input";
529
1117
  var labelVariants = cva(
530
1118
  "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
531
1119
  );
532
- var Label = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1120
+ var Label2 = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
533
1121
  LabelPrimitive.Root,
534
1122
  {
535
1123
  ref,
@@ -537,8 +1125,8 @@ var Label = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
537
1125
  ...props
538
1126
  }
539
1127
  ));
540
- Label.displayName = LabelPrimitive.Root.displayName;
541
- var Label2 = React10__default.forwardRef(
1128
+ Label2.displayName = LabelPrimitive.Root.displayName;
1129
+ var Label3 = React7__default.forwardRef(
542
1130
  ({ className = "", theme, error = false, ...props }, ref) => {
543
1131
  const typographyStyles = theme?.typography?.text2;
544
1132
  const classes = cn(
@@ -555,10 +1143,150 @@ var Label2 = React10__default.forwardRef(
555
1143
  error && "text-red-500",
556
1144
  className
557
1145
  );
558
- return /* @__PURE__ */ jsx(Label, { ref, className: classes, ...props });
1146
+ return /* @__PURE__ */ jsx(Label2, { ref, className: classes, ...props });
559
1147
  }
560
1148
  );
561
- Label2.displayName = "Label";
1149
+ Label3.displayName = "Label";
1150
+ var Link = ({
1151
+ children,
1152
+ className = "",
1153
+ theme,
1154
+ disabled = false,
1155
+ style,
1156
+ ...props
1157
+ }) => {
1158
+ const typographyStyles = theme?.typography?.link;
1159
+ const linkStyles = theme?.interactives?.link;
1160
+ const classes = cn(
1161
+ // Base styles
1162
+ "font-medium cursor-pointer",
1163
+ // Theme typography
1164
+ typographyStyles?.fontFamily,
1165
+ typographyStyles?.fontSize,
1166
+ typographyStyles?.fontWeight,
1167
+ typographyStyles?.lineHeight,
1168
+ typographyStyles?.letterSpacing,
1169
+ typographyStyles?.textTransform,
1170
+ typographyStyles?.textDecoration,
1171
+ typographyStyles?.textOverflow,
1172
+ // Theme interactivity
1173
+ linkStyles?.padding?.x,
1174
+ linkStyles?.padding?.y,
1175
+ linkStyles?.border?.width,
1176
+ linkStyles?.border?.radius,
1177
+ linkStyles?.border?.style,
1178
+ // Theme disabled states
1179
+ disabled && linkStyles?.disabled?.color,
1180
+ disabled && linkStyles?.disabled?.background,
1181
+ disabled && linkStyles?.disabled?.border,
1182
+ disabled && linkStyles?.disabled?.opacity,
1183
+ disabled && linkStyles?.disabled?.cursor,
1184
+ // User overrides
1185
+ linkStyles?.custom,
1186
+ className
1187
+ );
1188
+ return /* @__PURE__ */ jsx(
1189
+ "span",
1190
+ {
1191
+ className: classes,
1192
+ style: {
1193
+ ...style,
1194
+ textShadow: linkStyles?.textShadow || void 0
1195
+ },
1196
+ ...props,
1197
+ children
1198
+ }
1199
+ );
1200
+ };
1201
+ var PopoverThemeContext = React7.createContext(void 0);
1202
+ function usePopoverTheme(providedTheme) {
1203
+ const contextTheme = React7.useContext(PopoverThemeContext);
1204
+ return providedTheme ?? contextTheme;
1205
+ }
1206
+ function Popover({ theme, children, ...props }) {
1207
+ return /* @__PURE__ */ jsx(PopoverThemeContext.Provider, { value: theme, children: /* @__PURE__ */ jsx(PopoverPrimitive.Root, { ...props, children }) });
1208
+ }
1209
+ var PopoverTrigger = PopoverPrimitive.Trigger;
1210
+ var PopoverAnchor = PopoverPrimitive.Anchor;
1211
+ var PopoverClose = PopoverPrimitive.Close;
1212
+ var PopoverPortal = PopoverPrimitive.Portal;
1213
+ var PopoverContent = React7.forwardRef(({ className, sideOffset = 4, theme: providedTheme, ...props }, ref) => {
1214
+ const theme = usePopoverTheme(providedTheme);
1215
+ const styles = theme?.interactives?.popover;
1216
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1217
+ PopoverPrimitive.Content,
1218
+ {
1219
+ ref,
1220
+ sideOffset,
1221
+ className: cn(
1222
+ "z-50 w-72 overflow-hidden rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
1223
+ styles?.padding?.x,
1224
+ styles?.padding?.y,
1225
+ styles?.border?.width,
1226
+ styles?.border?.radius,
1227
+ styles?.border?.style,
1228
+ styles?.shadow,
1229
+ styles?.custom,
1230
+ className
1231
+ ),
1232
+ ...props
1233
+ }
1234
+ ) });
1235
+ });
1236
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
1237
+ var Preheader = ({
1238
+ children,
1239
+ className = "",
1240
+ theme,
1241
+ ...props
1242
+ }) => {
1243
+ const typographyStyles = theme?.typography?.preheader;
1244
+ const classes = cn(
1245
+ // Base styles
1246
+ "text-sm font-medium uppercase tracking-wide",
1247
+ // Theme typography
1248
+ typographyStyles?.fontFamily,
1249
+ typographyStyles?.fontSize,
1250
+ typographyStyles?.fontWeight,
1251
+ typographyStyles?.lineHeight,
1252
+ typographyStyles?.letterSpacing,
1253
+ typographyStyles?.textTransform,
1254
+ typographyStyles?.textDecoration,
1255
+ typographyStyles?.textOverflow,
1256
+ className
1257
+ );
1258
+ return /* @__PURE__ */ jsx("p", { className: classes, ...props, children });
1259
+ };
1260
+ var RadioGroupThemeContext = React7.createContext(void 0);
1261
+ function useRadioGroupTheme(providedTheme) {
1262
+ const contextTheme = React7.useContext(RadioGroupThemeContext);
1263
+ return providedTheme ?? contextTheme;
1264
+ }
1265
+ function RadioGroup2({ theme, className, ...props }) {
1266
+ return /* @__PURE__ */ jsx(RadioGroupThemeContext.Provider, { value: theme, children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, { className: cn("grid gap-2", className), ...props }) });
1267
+ }
1268
+ var RadioGroupItem = React7.forwardRef(({ className, theme: providedTheme, ...props }, ref) => {
1269
+ const theme = useRadioGroupTheme(providedTheme);
1270
+ const inputStyles = theme?.interactives?.input;
1271
+ return /* @__PURE__ */ jsx(
1272
+ RadioGroupPrimitive.Item,
1273
+ {
1274
+ ref,
1275
+ className: cn(
1276
+ "aspect-square size-4 shrink-0 rounded-full border border-primary text-primary shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",
1277
+ inputStyles?.border?.width,
1278
+ inputStyles?.border?.radius,
1279
+ inputStyles?.border?.style,
1280
+ inputStyles?.shadow,
1281
+ inputStyles?.custom,
1282
+ className
1283
+ ),
1284
+ ...props,
1285
+ children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx(Circle, { className: "size-2.5 fill-current" }) })
1286
+ }
1287
+ );
1288
+ });
1289
+ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
562
1290
  function resolveBackgroundLayerStyle(background, nextTheme) {
563
1291
  const isDark = nextTheme === "dark";
564
1292
  const attachment = background.backgroundAttachment || "scroll";
@@ -568,8 +1296,9 @@ function resolveBackgroundLayerStyle(background, nextTheme) {
568
1296
  };
569
1297
  }
570
1298
  if (background.type === "image") {
1299
+ const bgUrl = getMediaUrl(background.media);
571
1300
  return {
572
- backgroundImage: background.media?.file ? `url(${background.media.file})` : void 0,
1301
+ backgroundImage: bgUrl ? `url(${bgUrl})` : void 0,
573
1302
  backgroundSize: background.backgroundSize || "cover",
574
1303
  backgroundPosition: background.backgroundPosition || "center",
575
1304
  backgroundRepeat: background.backgroundRepeat || "no-repeat",
@@ -599,7 +1328,7 @@ var Section = ({
599
1328
  }) => {
600
1329
  const classes = cn("bg-background text-foreground relative", className);
601
1330
  const isFixed = background && background.type !== "color" && background.backgroundAttachment === "fixed";
602
- return /* @__PURE__ */ jsx(Fragment, { children: React10__default.createElement(
1331
+ return /* @__PURE__ */ jsx(Fragment, { children: React7__default.createElement(
603
1332
  component,
604
1333
  {
605
1334
  // `overflow-clip` keeps a fixed-attachment layer painted
@@ -615,10 +1344,7 @@ var Section = ({
615
1344
  suppressHydrationWarning: true,
616
1345
  "aria-hidden": true,
617
1346
  className: "pointer-events-none absolute inset-0 z-0",
618
- style: resolveBackgroundLayerStyle(
619
- background,
620
- nextTheme
621
- )
1347
+ style: resolveBackgroundLayerStyle(background, nextTheme)
622
1348
  }
623
1349
  ),
624
1350
  background && background.type === "image" && /* @__PURE__ */ jsx(
@@ -658,66 +1384,230 @@ var Section = ({
658
1384
  ] })
659
1385
  ) });
660
1386
  };
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"
1387
+ var SelectThemeContext = React7.createContext(void 0);
1388
+ function useSelectTheme(providedTheme) {
1389
+ const contextTheme = React7.useContext(SelectThemeContext);
1390
+ return providedTheme ?? contextTheme;
1391
+ }
1392
+ function Select({ theme, children, ...props }) {
1393
+ return /* @__PURE__ */ jsx(SelectThemeContext.Provider, { value: theme, children: /* @__PURE__ */ jsx(SelectPrimitive.Root, { ...props, children }) });
1394
+ }
1395
+ var SelectGroup = SelectPrimitive.Group;
1396
+ var SelectValue = SelectPrimitive.Value;
1397
+ var SelectLabel = SelectPrimitive.Label;
1398
+ var SelectTrigger = React7.forwardRef(({ className, children, theme: providedTheme, ...props }, ref) => {
1399
+ const theme = useSelectTheme(providedTheme);
1400
+ const styles = theme?.interactives?.input;
1401
+ const typography = theme?.typography?.input;
1402
+ return /* @__PURE__ */ jsxs(
1403
+ SelectPrimitive.Trigger,
1404
+ {
1405
+ ref,
1406
+ className: cn(
1407
+ "flex h-10 w-full items-center justify-between gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground shadow-xs outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
1408
+ typography?.fontFamily,
1409
+ typography?.fontSize,
1410
+ typography?.fontWeight,
1411
+ typography?.lineHeight,
1412
+ typography?.letterSpacing,
1413
+ typography?.textTransform,
1414
+ typography?.textDecoration,
1415
+ typography?.textOverflow,
1416
+ styles?.padding?.x,
1417
+ styles?.padding?.y,
1418
+ styles?.border?.width,
1419
+ styles?.border?.radius,
1420
+ styles?.border?.style,
1421
+ styles?.shadow,
1422
+ styles?.custom,
1423
+ className
1424
+ ),
1425
+ ...props,
1426
+ children: [
1427
+ children,
1428
+ /* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 opacity-50" }) })
1429
+ ]
1430
+ }
1431
+ );
1432
+ });
1433
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
1434
+ var SelectContent = React7.forwardRef(
1435
+ ({
1436
+ className,
1437
+ children,
1438
+ position = "popper",
1439
+ sideOffset = 4,
1440
+ theme: providedTheme,
1441
+ ...props
1442
+ }, ref) => {
1443
+ const theme = useSelectTheme(providedTheme);
1444
+ const styles = theme?.interactives?.menu;
1445
+ return /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
1446
+ SelectPrimitive.Content,
1447
+ {
1448
+ ref,
1449
+ position,
1450
+ sideOffset,
1451
+ className: cn(
1452
+ "relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
1453
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
1454
+ styles?.padding?.x,
1455
+ styles?.padding?.y,
1456
+ styles?.border?.width,
1457
+ styles?.border?.radius,
1458
+ styles?.border?.style,
1459
+ styles?.shadow,
1460
+ styles?.custom,
1461
+ className
1462
+ ),
1463
+ ...props,
1464
+ children: [
1465
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
1466
+ /* @__PURE__ */ jsx(
1467
+ SelectPrimitive.Viewport,
1468
+ {
1469
+ className: cn(
1470
+ "p-1",
1471
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
1472
+ ),
1473
+ children
1474
+ }
1475
+ ),
1476
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
1477
+ ]
670
1478
  }
671
- },
672
- defaultVariants: {
673
- variant: "default"
1479
+ ) });
1480
+ }
1481
+ );
1482
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
1483
+ var SelectScrollUpButton = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1484
+ SelectPrimitive.ScrollUpButton,
1485
+ {
1486
+ ref,
1487
+ className: cn("flex cursor-default items-center justify-center py-1", className),
1488
+ ...props,
1489
+ children: /* @__PURE__ */ jsx(ChevronUp, { className: "size-4" })
1490
+ }
1491
+ ));
1492
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
1493
+ var SelectScrollDownButton = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1494
+ SelectPrimitive.ScrollDownButton,
1495
+ {
1496
+ ref,
1497
+ className: cn("flex cursor-default items-center justify-center py-1", className),
1498
+ ...props,
1499
+ children: /* @__PURE__ */ jsx(ChevronDown, { className: "size-4" })
1500
+ }
1501
+ ));
1502
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
1503
+ var SelectItem = React7.forwardRef(({ className, children, theme: providedTheme, ...props }, ref) => {
1504
+ const theme = useSelectTheme(providedTheme);
1505
+ const styles = theme?.interactives?.menu?.item;
1506
+ const typography = theme?.typography?.button;
1507
+ return /* @__PURE__ */ jsxs(
1508
+ SelectPrimitive.Item,
1509
+ {
1510
+ ref,
1511
+ className: cn(
1512
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
1513
+ typography?.fontFamily,
1514
+ typography?.fontSize,
1515
+ typography?.fontWeight,
1516
+ typography?.lineHeight,
1517
+ typography?.letterSpacing,
1518
+ typography?.textTransform,
1519
+ typography?.textDecoration,
1520
+ typography?.textOverflow,
1521
+ styles?.padding?.x,
1522
+ styles?.padding?.y,
1523
+ styles?.border?.width,
1524
+ styles?.border?.radius,
1525
+ styles?.border?.style,
1526
+ styles?.custom,
1527
+ className
1528
+ ),
1529
+ ...props,
1530
+ children: [
1531
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children }),
1532
+ /* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "size-4" }) }) })
1533
+ ]
674
1534
  }
1535
+ );
1536
+ });
1537
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
1538
+ var SelectSeparator = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1539
+ SelectPrimitive.Separator,
1540
+ {
1541
+ ref,
1542
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
1543
+ ...props
675
1544
  }
1545
+ ));
1546
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
1547
+ var Separator3 = React7.forwardRef(
1548
+ ({
1549
+ className,
1550
+ orientation = "horizontal",
1551
+ decorative = true,
1552
+ theme: _theme,
1553
+ ...props
1554
+ }, ref) => /* @__PURE__ */ jsx(
1555
+ SeparatorPrimitive.Root,
1556
+ {
1557
+ ref,
1558
+ decorative,
1559
+ orientation,
1560
+ className: cn(
1561
+ "shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
1562
+ className
1563
+ ),
1564
+ ...props
1565
+ }
1566
+ )
676
1567
  );
677
- function Badge({ className, variant, ...props }) {
678
- return /* @__PURE__ */ jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
679
- }
680
- var Badge2 = ({
681
- variant = "default",
1568
+ Separator3.displayName = SeparatorPrimitive.Root.displayName;
1569
+ var Subheader1 = ({
682
1570
  children,
683
1571
  className = "",
684
- style = {},
685
1572
  theme,
1573
+ component = "h5",
686
1574
  ...props
687
1575
  }) => {
688
- const typographyStyles = theme?.typography?.caption;
689
- const buttonStyles = theme?.interactives?.button;
1576
+ const typographyStyles = theme?.typography?.subheader1;
690
1577
  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,
1578
+ typographyStyles?.fontFamily || "font-sans",
1579
+ typographyStyles?.fontSize || "text-lg",
1580
+ typographyStyles?.fontWeight || "font-medium",
1581
+ typographyStyles?.lineHeight || "leading-relaxed",
1582
+ typographyStyles?.letterSpacing || "tracking-normal",
699
1583
  typographyStyles?.textTransform,
700
- buttonStyles?.border?.width,
701
- buttonStyles?.border?.radius,
702
- buttonStyles?.border?.style,
1584
+ typographyStyles?.textDecoration,
1585
+ typographyStyles?.textOverflow,
703
1586
  className
704
1587
  );
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
- );
1588
+ return component === "h5" ? /* @__PURE__ */ jsx("h5", { className: classes, ...props, children }) : /* @__PURE__ */ jsx("span", { className: classes, ...props, children });
1589
+ };
1590
+ var Subheader2 = ({
1591
+ children,
1592
+ className = "",
1593
+ theme,
1594
+ ...props
1595
+ }) => {
1596
+ const typographyStyles = theme?.typography?.subheader2;
1597
+ const classes = [
1598
+ typographyStyles?.fontFamily || "font-sans",
1599
+ typographyStyles?.fontSize || "text-base",
1600
+ typographyStyles?.fontWeight || "font-medium",
1601
+ typographyStyles?.lineHeight || "leading-relaxed",
1602
+ typographyStyles?.letterSpacing || "tracking-normal",
1603
+ typographyStyles?.textTransform,
1604
+ typographyStyles?.textDecoration,
1605
+ typographyStyles?.textOverflow,
1606
+ className
1607
+ ].filter(Boolean).join(" ");
1608
+ return /* @__PURE__ */ jsx("h6", { className: classes, ...props, children });
719
1609
  };
720
- var Switch = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
1610
+ var Switch = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
721
1611
  SwitchPrimitives.Root,
722
1612
  {
723
1613
  className: cn(
@@ -737,15 +1627,90 @@ var Switch = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
737
1627
  }
738
1628
  ));
739
1629
  Switch.displayName = SwitchPrimitives.Root.displayName;
740
- var Switch2 = React10__default.forwardRef(({ className = "", theme, ...props }, ref) => {
1630
+ var Switch2 = React7__default.forwardRef(({ className = "", theme, ...props }, ref) => {
741
1631
  const classes = cn(
742
1632
  // Base styles
743
1633
  "",
744
1634
  // User overrides
745
1635
  className
746
1636
  );
747
- return /* @__PURE__ */ jsx(Switch, { ref, className: classes, ...props });
748
- });
1637
+ return /* @__PURE__ */ jsx(Switch, { ref, className: classes, ...props });
1638
+ });
1639
+ var Text1 = ({
1640
+ children,
1641
+ className = "",
1642
+ theme,
1643
+ component = "p",
1644
+ ...props
1645
+ }) => {
1646
+ const typographyStyles = theme?.typography?.text1;
1647
+ const classes = cn(
1648
+ // Base styles
1649
+ "text-base",
1650
+ // Theme overrides
1651
+ typographyStyles?.fontFamily,
1652
+ typographyStyles?.fontSize,
1653
+ typographyStyles?.fontWeight,
1654
+ typographyStyles?.lineHeight,
1655
+ typographyStyles?.letterSpacing,
1656
+ typographyStyles?.textTransform,
1657
+ typographyStyles?.textDecoration,
1658
+ typographyStyles?.textOverflow,
1659
+ className
1660
+ );
1661
+ return component === "p" ? /* @__PURE__ */ jsx("p", { className: classes, ...props, children }) : /* @__PURE__ */ jsx("span", { className: classes, ...props, children });
1662
+ };
1663
+ var Text2 = ({
1664
+ children,
1665
+ className = "",
1666
+ theme,
1667
+ component = "p",
1668
+ ...props
1669
+ }) => {
1670
+ const typographyStyles = theme?.typography?.text2;
1671
+ const classes = cn(
1672
+ // Base styles
1673
+ "text-sm",
1674
+ // Theme overrides
1675
+ typographyStyles?.fontFamily,
1676
+ typographyStyles?.fontSize,
1677
+ typographyStyles?.fontWeight,
1678
+ typographyStyles?.lineHeight,
1679
+ typographyStyles?.letterSpacing,
1680
+ typographyStyles?.textTransform,
1681
+ typographyStyles?.textDecoration,
1682
+ typographyStyles?.textOverflow,
1683
+ className
1684
+ );
1685
+ return component === "p" ? /* @__PURE__ */ jsx("p", { className: classes, ...props, children }) : /* @__PURE__ */ jsx("span", { className: classes, ...props, children });
1686
+ };
1687
+ var Textarea = React7__default.forwardRef(
1688
+ ({ className = "", theme, error = false, ...props }, ref) => {
1689
+ const inputStyles = theme?.interactives?.input;
1690
+ const typographyStyles = theme?.typography?.input;
1691
+ const classes = cn(
1692
+ "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",
1693
+ typographyStyles?.fontFamily,
1694
+ typographyStyles?.fontSize,
1695
+ typographyStyles?.fontWeight,
1696
+ typographyStyles?.lineHeight,
1697
+ typographyStyles?.letterSpacing,
1698
+ inputStyles?.padding?.x,
1699
+ inputStyles?.padding?.y,
1700
+ inputStyles?.border?.width,
1701
+ inputStyles?.border?.style,
1702
+ inputStyles?.border?.radius,
1703
+ inputStyles?.shadow,
1704
+ props.disabled && inputStyles?.disabled?.opacity,
1705
+ props.disabled && inputStyles?.disabled?.cursor,
1706
+ error && "border-red-300 focus:border-red-500 focus:ring-red-500",
1707
+ inputStyles?.custom,
1708
+ className
1709
+ );
1710
+ return /* @__PURE__ */ jsx("textarea", { ref, className: classes, ...props });
1711
+ }
1712
+ );
1713
+ Textarea.displayName = "Textarea";
749
1714
 
750
1715
  // src/primitives/themes/classic.ts
751
1716
  var themeStyles = {
@@ -943,6 +1908,30 @@ var themeStyles = {
943
1908
  },
944
1909
  custom: "transition-colors duration-200"
945
1910
  },
1911
+ menu: {
1912
+ padding: { x: "px-1", y: "py-1" },
1913
+ border: { width: "border", radius: "rounded-xl", style: "border-solid" },
1914
+ shadow: "shadow-xs",
1915
+ item: {
1916
+ padding: { x: "px-3", y: "py-2" },
1917
+ border: { radius: "rounded-lg" }
1918
+ }
1919
+ },
1920
+ dialog: {
1921
+ padding: { x: "px-6", y: "py-6" },
1922
+ border: { width: "border-0", radius: "rounded-xl" },
1923
+ shadow: "shadow-lg"
1924
+ },
1925
+ popover: {
1926
+ padding: { x: "px-4", y: "py-4" },
1927
+ border: { width: "border-0", radius: "rounded-xl" },
1928
+ shadow: "shadow-md"
1929
+ },
1930
+ tooltip: {
1931
+ padding: { x: "px-2", y: "py-1" },
1932
+ border: { width: "border-0", radius: "rounded-sm" },
1933
+ shadow: "shadow-sm"
1934
+ },
946
1935
  link: {
947
1936
  custom: "underline-offset-4 hover:underline",
948
1937
  disabled: {
@@ -1000,168 +1989,169 @@ var classic = {
1000
1989
  theme: themeStyles
1001
1990
  };
1002
1991
 
1003
- // src/primitives/themes/studio.ts
1992
+ // src/primitives/themes/editorial.ts
1004
1993
  var themeStyles2 = {
1005
1994
  colors: {
1006
1995
  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)"
1996
+ background: "#f6f1e8",
1997
+ foreground: "#1a1612",
1998
+ card: "#fffaf2",
1999
+ cardForeground: "#1a1612",
2000
+ popover: "#fffaf2",
2001
+ popoverForeground: "#1a1612",
2002
+ primary: "#1e3a8a",
2003
+ primaryForeground: "#fffaf2",
2004
+ secondary: "#c2410c",
2005
+ secondaryForeground: "#fffaf2",
2006
+ muted: "#ece4d6",
2007
+ mutedForeground: "#5c5348",
2008
+ accent: "#1d4ed8",
2009
+ accentForeground: "#fffaf2",
2010
+ border: "#e0d5c4",
2011
+ destructive: "#b91c1c",
2012
+ input: "#e0d5c4",
2013
+ ring: "#1e3a8a",
2014
+ chart1: "#1e3a8a",
2015
+ chart2: "#c2410c",
2016
+ chart3: "#1d4ed8",
2017
+ chart4: "#b91c1c",
2018
+ chart5: "#78716c",
2019
+ sidebar: "#fffaf2",
2020
+ sidebarForeground: "#1a1612",
2021
+ sidebarPrimary: "#1e3a8a",
2022
+ sidebarPrimaryForeground: "#fffaf2",
2023
+ sidebarAccent: "#ece4d6",
2024
+ sidebarAccentForeground: "#1a1612",
2025
+ sidebarBorder: "#e0d5c4",
2026
+ sidebarRing: "#1e3a8a",
2027
+ shadow2xs: "0 1px 2px 0 rgb(26 22 18 / 0.05)",
2028
+ shadowXs: "0 1px 2px 0 rgb(26 22 18 / 0.06)",
2029
+ shadowSm: "0 1px 2px 0 rgb(26 22 18 / 0.06), 0 2px 6px -2px rgb(26 22 18 / 0.1)",
2030
+ shadowMd: "0 8px 20px -6px rgb(26 22 18 / 0.12)",
2031
+ shadowLg: "0 16px 32px -10px rgb(26 22 18 / 0.14)",
2032
+ shadowXl: "0 24px 48px -12px rgb(26 22 18 / 0.16)",
2033
+ shadow2xl: "0 32px 64px -16px rgb(26 22 18 / 0.2)"
1045
2034
  },
1046
2035
  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",
2036
+ background: "#100e0c",
2037
+ foreground: "#f6f1e8",
2038
+ card: "#1b1713",
2039
+ cardForeground: "#f6f1e8",
2040
+ popover: "#1b1713",
2041
+ popoverForeground: "#f6f1e8",
2042
+ primary: "#93c5fd",
2043
+ primaryForeground: "#100e0c",
2044
+ secondary: "#fb923c",
2045
+ secondaryForeground: "#100e0c",
2046
+ muted: "#241f19",
2047
+ mutedForeground: "#c4b8a5",
2048
+ accent: "#60a5fa",
2049
+ accentForeground: "#100e0c",
2050
+ border: "#3a3228",
1061
2051
  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)"
2052
+ input: "#3a3228",
2053
+ ring: "#93c5fd",
2054
+ chart1: "#93c5fd",
2055
+ chart2: "#fb923c",
2056
+ chart3: "#60a5fa",
2057
+ chart4: "#f87171",
2058
+ chart5: "#a8a29e",
2059
+ sidebar: "#1b1713",
2060
+ sidebarForeground: "#f6f1e8",
2061
+ sidebarPrimary: "#93c5fd",
2062
+ sidebarPrimaryForeground: "#100e0c",
2063
+ sidebarAccent: "#241f19",
2064
+ sidebarAccentForeground: "#f6f1e8",
2065
+ sidebarBorder: "#3a3228",
2066
+ sidebarRing: "#93c5fd",
2067
+ shadow2xs: "0 1px 2px 0 rgb(0 0 0 / 0.3)",
2068
+ shadowXs: "0 1px 2px 0 rgb(0 0 0 / 0.35)",
2069
+ shadowSm: "0 2px 6px 0 rgb(0 0 0 / 0.4)",
2070
+ shadowMd: "0 8px 20px -6px rgb(0 0 0 / 0.5)",
2071
+ shadowLg: "0 16px 32px -10px rgb(0 0 0 / 0.55)",
2072
+ shadowXl: "0 24px 48px -12px rgb(0 0 0 / 0.6)",
2073
+ shadow2xl: "0 32px 64px -16px rgb(0 0 0 / 0.7)"
1085
2074
  }
1086
2075
  },
1087
2076
  typography: {
1088
2077
  preheader: {
1089
- fontFamily: "font-montserrat",
2078
+ fontFamily: "font-work-sans",
1090
2079
  fontSize: "text-xs",
1091
- fontWeight: "font-semibold",
1092
- lineHeight: "leading-normal",
2080
+ fontWeight: "font-medium",
2081
+ lineHeight: "leading-relaxed",
1093
2082
  letterSpacing: "tracking-widest",
1094
2083
  textTransform: "uppercase"
1095
2084
  },
1096
2085
  header1: {
1097
- fontFamily: "font-montserrat",
2086
+ fontFamily: "font-playfair-display",
1098
2087
  fontSize: "text-6xl",
1099
- fontWeight: "font-semibold",
2088
+ fontWeight: "font-medium",
1100
2089
  lineHeight: "leading-none",
1101
2090
  letterSpacing: "tracking-tighter"
1102
2091
  },
1103
2092
  header2: {
1104
- fontFamily: "font-montserrat",
2093
+ fontFamily: "font-playfair-display",
1105
2094
  fontSize: "text-4xl",
1106
- fontWeight: "font-semibold",
2095
+ fontWeight: "font-medium",
1107
2096
  lineHeight: "leading-tight",
1108
- letterSpacing: "tracking-tight"
2097
+ letterSpacing: "tracking-tighter"
1109
2098
  },
1110
2099
  header3: {
1111
- fontFamily: "font-montserrat",
1112
- fontSize: "text-2xl",
1113
- fontWeight: "font-semibold",
2100
+ fontFamily: "font-source-serif-4",
2101
+ fontSize: "text-3xl",
2102
+ fontWeight: "font-medium",
1114
2103
  lineHeight: "leading-snug",
1115
2104
  letterSpacing: "tracking-tight"
1116
2105
  },
1117
2106
  header4: {
1118
- fontFamily: "font-montserrat",
1119
- fontSize: "text-xl",
2107
+ fontFamily: "font-source-serif-4",
2108
+ fontSize: "text-2xl",
1120
2109
  fontWeight: "font-medium",
1121
- lineHeight: "leading-snug"
2110
+ lineHeight: "leading-snug",
2111
+ letterSpacing: "tracking-tight"
1122
2112
  },
1123
2113
  subheader1: {
1124
- fontFamily: "font-source-sans-3",
2114
+ fontFamily: "font-source-serif-4",
1125
2115
  fontSize: "text-xl",
1126
2116
  fontWeight: "font-normal",
1127
2117
  lineHeight: "leading-relaxed"
1128
2118
  },
1129
2119
  subheader2: {
1130
- fontFamily: "font-source-sans-3",
2120
+ fontFamily: "font-work-sans",
1131
2121
  fontSize: "text-lg",
1132
2122
  fontWeight: "font-normal",
1133
2123
  lineHeight: "leading-relaxed"
1134
2124
  },
1135
2125
  text1: {
1136
- fontFamily: "font-source-sans-3",
1137
- fontSize: "text-base",
2126
+ fontFamily: "font-source-serif-4",
2127
+ fontSize: "text-lg",
1138
2128
  fontWeight: "font-normal",
1139
- lineHeight: "leading-relaxed"
2129
+ lineHeight: "leading-loose"
1140
2130
  },
1141
2131
  text2: {
1142
- fontFamily: "font-source-sans-3",
2132
+ fontFamily: "font-work-sans",
1143
2133
  fontSize: "text-sm",
1144
2134
  fontWeight: "font-normal",
1145
2135
  lineHeight: "leading-relaxed"
1146
2136
  },
1147
2137
  link: {
1148
- fontFamily: "font-source-sans-3",
2138
+ fontFamily: "font-work-sans",
1149
2139
  fontSize: "text-base",
1150
2140
  fontWeight: "font-medium"
1151
2141
  },
1152
2142
  button: {
1153
- fontFamily: "font-montserrat",
2143
+ fontFamily: "font-work-sans",
1154
2144
  fontSize: "text-sm",
1155
2145
  fontWeight: "font-medium",
1156
2146
  letterSpacing: "tracking-wide"
1157
2147
  },
1158
2148
  input: {
1159
- fontFamily: "font-source-sans-3",
2149
+ fontFamily: "font-work-sans",
1160
2150
  fontSize: "text-base",
1161
2151
  fontWeight: "font-normal"
1162
2152
  },
1163
2153
  caption: {
1164
- fontFamily: "font-source-sans-3",
2154
+ fontFamily: "font-work-sans",
1165
2155
  fontSize: "text-xs",
1166
2156
  fontWeight: "font-medium",
1167
2157
  lineHeight: "leading-normal",
@@ -1173,55 +2163,77 @@ var themeStyles2 = {
1173
2163
  padding: { x: "px-6", y: "py-3" },
1174
2164
  border: {
1175
2165
  width: "border-0",
1176
- radius: "rounded-2xl"
2166
+ radius: "rounded-full"
1177
2167
  },
1178
- shadow: "shadow-xs",
2168
+ shadow: "shadow-none",
1179
2169
  custom: "transition-colors duration-200",
1180
2170
  disabled: {
1181
2171
  opacity: "opacity-50",
1182
2172
  cursor: "cursor-not-allowed"
1183
2173
  }
1184
2174
  },
2175
+ menu: {
2176
+ padding: { x: "px-1", y: "py-1" },
2177
+ border: { width: "border-0", radius: "rounded-none" },
2178
+ shadow: "shadow-none",
2179
+ item: {
2180
+ padding: { x: "px-3", y: "py-2" },
2181
+ border: { radius: "rounded-none" }
2182
+ }
2183
+ },
2184
+ dialog: {
2185
+ padding: { x: "px-6", y: "py-6" },
2186
+ border: { width: "border-0", radius: "rounded-none" },
2187
+ shadow: "shadow-none"
2188
+ },
2189
+ popover: {
2190
+ padding: { x: "px-4", y: "py-4" },
2191
+ border: { width: "border-0", radius: "rounded-none" },
2192
+ shadow: "shadow-none"
2193
+ },
2194
+ tooltip: {
2195
+ padding: { x: "px-2", y: "py-1" },
2196
+ border: { width: "border-0", radius: "rounded-none" },
2197
+ shadow: "shadow-none"
2198
+ },
1185
2199
  link: {
1186
2200
  padding: { x: "px-0", y: "py-0" },
1187
- custom: "underline-offset-4 transition-colors duration-150 hover:underline"
2201
+ custom: "underline-offset-4 decoration-1 hover:underline"
1188
2202
  },
1189
2203
  card: {
1190
2204
  padding: { x: "px-8", y: "py-8" },
1191
2205
  border: {
1192
- width: "border",
1193
- radius: "rounded-3xl",
1194
- style: "border-solid"
2206
+ width: "border-0",
2207
+ radius: "rounded-none"
1195
2208
  },
1196
- shadow: "shadow-xs",
1197
- custom: "transition-shadow duration-200 hover:shadow-lg"
2209
+ shadow: "shadow-none",
2210
+ custom: ""
1198
2211
  },
1199
2212
  input: {
1200
- borderRadius: "rounded-2xl",
1201
2213
  padding: { x: "px-4", y: "py-3" },
1202
2214
  border: {
1203
2215
  width: "border",
1204
- style: "border-solid",
1205
- radius: "rounded-2xl"
2216
+ radius: "rounded-none",
2217
+ style: "border-solid"
1206
2218
  },
1207
2219
  shadow: "shadow-none",
1208
- custom: "transition-shadow duration-150",
2220
+ custom: "",
1209
2221
  disabled: {
1210
- cursor: "cursor-not-allowed",
1211
- opacity: "opacity-50"
2222
+ opacity: "opacity-50",
2223
+ cursor: "cursor-not-allowed"
1212
2224
  }
1213
2225
  }
1214
2226
  },
1215
2227
  structure: {
1216
- page: { width: "max-w-6xl" },
2228
+ page: { width: "max-w-5xl" },
1217
2229
  section: {
1218
2230
  padding: { x: "px-6", y: "py-24" }
1219
2231
  }
1220
2232
  }
1221
2233
  };
1222
- var studio = {
1223
- id: "studio",
1224
- name: "Studio",
2234
+ var editorial = {
2235
+ id: "editorial",
2236
+ name: "Editorial",
1225
2237
  theme: themeStyles2
1226
2238
  };
1227
2239
 
@@ -1334,283 +2346,58 @@ var themeStyles3 = {
1334
2346
  },
1335
2347
  header3: {
1336
2348
  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",
2349
+ fontSize: "text-2xl",
1561
2350
  fontWeight: "font-medium",
1562
- lineHeight: "leading-snug",
1563
- letterSpacing: "tracking-tight"
2351
+ lineHeight: "leading-snug"
1564
2352
  },
1565
2353
  header4: {
1566
- fontFamily: "font-source-serif-4",
1567
- fontSize: "text-2xl",
2354
+ fontFamily: "font-roboto",
2355
+ fontSize: "text-xl",
1568
2356
  fontWeight: "font-medium",
1569
- lineHeight: "leading-snug",
1570
- letterSpacing: "tracking-tight"
2357
+ lineHeight: "leading-snug"
1571
2358
  },
1572
2359
  subheader1: {
1573
- fontFamily: "font-source-serif-4",
1574
- fontSize: "text-xl",
2360
+ fontFamily: "font-roboto",
2361
+ fontSize: "text-lg",
1575
2362
  fontWeight: "font-normal",
1576
2363
  lineHeight: "leading-relaxed"
1577
2364
  },
1578
2365
  subheader2: {
1579
- fontFamily: "font-work-sans",
1580
- fontSize: "text-lg",
2366
+ fontFamily: "font-roboto",
2367
+ fontSize: "text-base",
1581
2368
  fontWeight: "font-normal",
1582
2369
  lineHeight: "leading-relaxed"
1583
2370
  },
1584
2371
  text1: {
1585
- fontFamily: "font-source-serif-4",
1586
- fontSize: "text-lg",
2372
+ fontFamily: "font-roboto",
2373
+ fontSize: "text-base",
1587
2374
  fontWeight: "font-normal",
1588
- lineHeight: "leading-loose"
2375
+ lineHeight: "leading-relaxed"
1589
2376
  },
1590
2377
  text2: {
1591
- fontFamily: "font-work-sans",
2378
+ fontFamily: "font-roboto",
1592
2379
  fontSize: "text-sm",
1593
2380
  fontWeight: "font-normal",
1594
2381
  lineHeight: "leading-relaxed"
1595
2382
  },
1596
2383
  link: {
1597
- fontFamily: "font-work-sans",
2384
+ fontFamily: "font-roboto",
1598
2385
  fontSize: "text-base",
1599
2386
  fontWeight: "font-medium"
1600
2387
  },
1601
2388
  button: {
1602
- fontFamily: "font-work-sans",
2389
+ fontFamily: "font-roboto",
1603
2390
  fontSize: "text-sm",
1604
2391
  fontWeight: "font-medium",
1605
2392
  letterSpacing: "tracking-wide"
1606
2393
  },
1607
2394
  input: {
1608
- fontFamily: "font-work-sans",
2395
+ fontFamily: "font-roboto",
1609
2396
  fontSize: "text-base",
1610
2397
  fontWeight: "font-normal"
1611
2398
  },
1612
2399
  caption: {
1613
- fontFamily: "font-work-sans",
2400
+ fontFamily: "font-roboto",
1614
2401
  fontSize: "text-xs",
1615
2402
  fontWeight: "font-medium",
1616
2403
  lineHeight: "leading-normal",
@@ -1619,36 +2406,61 @@ var themeStyles4 = {
1619
2406
  },
1620
2407
  interactives: {
1621
2408
  button: {
1622
- padding: { x: "px-6", y: "py-3" },
2409
+ padding: { x: "px-5", y: "py-3" },
1623
2410
  border: {
1624
2411
  width: "border-0",
1625
- radius: "rounded-full"
2412
+ radius: "rounded-xl"
1626
2413
  },
1627
- shadow: "shadow-none",
2414
+ shadow: "shadow-xs",
1628
2415
  custom: "transition-colors duration-200",
1629
2416
  disabled: {
1630
2417
  opacity: "opacity-50",
1631
2418
  cursor: "cursor-not-allowed"
1632
2419
  }
1633
2420
  },
2421
+ menu: {
2422
+ padding: { x: "px-1", y: "py-1" },
2423
+ border: { width: "border", radius: "rounded-2xl", style: "border-solid" },
2424
+ shadow: "shadow-xs",
2425
+ item: {
2426
+ padding: { x: "px-3", y: "py-2" },
2427
+ border: { radius: "rounded-xl" }
2428
+ }
2429
+ },
2430
+ dialog: {
2431
+ padding: { x: "px-6", y: "py-6" },
2432
+ border: { width: "border", radius: "rounded-2xl", style: "border-solid" },
2433
+ shadow: "shadow-xl"
2434
+ },
2435
+ popover: {
2436
+ padding: { x: "px-4", y: "py-4" },
2437
+ border: { width: "border", radius: "rounded-2xl", style: "border-solid" },
2438
+ shadow: "shadow-lg"
2439
+ },
2440
+ tooltip: {
2441
+ padding: { x: "px-2", y: "py-1" },
2442
+ border: { width: "border", radius: "rounded-lg", style: "border-solid" },
2443
+ shadow: "shadow-sm"
2444
+ },
1634
2445
  link: {
1635
2446
  padding: { x: "px-0", y: "py-0" },
1636
- custom: "underline-offset-4 decoration-1 hover:underline"
2447
+ custom: "underline-offset-4 hover:underline"
1637
2448
  },
1638
2449
  card: {
1639
- padding: { x: "px-8", y: "py-8" },
2450
+ padding: { x: "px-6", y: "py-6" },
1640
2451
  border: {
1641
- width: "border-0",
1642
- radius: "rounded-none"
2452
+ width: "border",
2453
+ radius: "rounded-2xl",
2454
+ style: "border-solid"
1643
2455
  },
1644
- shadow: "shadow-none",
1645
- custom: ""
2456
+ shadow: "shadow-xs",
2457
+ custom: "transition-shadow duration-200 hover:shadow-md"
1646
2458
  },
1647
2459
  input: {
1648
2460
  padding: { x: "px-4", y: "py-3" },
1649
2461
  border: {
1650
2462
  width: "border",
1651
- radius: "rounded-none",
2463
+ radius: "rounded-xl",
1652
2464
  style: "border-solid"
1653
2465
  },
1654
2466
  shadow: "shadow-none",
@@ -1660,20 +2472,20 @@ var themeStyles4 = {
1660
2472
  }
1661
2473
  },
1662
2474
  structure: {
1663
- page: { width: "max-w-5xl" },
2475
+ page: { width: "max-w-6xl" },
1664
2476
  section: {
1665
- padding: { x: "px-6", y: "py-24" }
2477
+ padding: { x: "px-6", y: "py-16" }
1666
2478
  }
1667
2479
  }
1668
2480
  };
1669
- var editorial = {
1670
- id: "editorial",
1671
- name: "Editorial",
1672
- theme: themeStyles4
2481
+ var midnight = {
2482
+ id: "midnight",
2483
+ name: "Midnight",
2484
+ theme: themeStyles3
1673
2485
  };
1674
2486
 
1675
2487
  // src/primitives/themes/neobrutalism.ts
1676
- var themeStyles5 = {
2488
+ var themeStyles4 = {
1677
2489
  colors: {
1678
2490
  light: {
1679
2491
  background: "#f3fff9",
@@ -1758,122 +2570,395 @@ var themeStyles5 = {
1758
2570
  },
1759
2571
  typography: {
1760
2572
  preheader: {
1761
- fontFamily: "font-inter",
1762
- fontSize: "text-sm",
1763
- fontWeight: "font-bold",
2573
+ fontFamily: "font-inter",
2574
+ fontSize: "text-sm",
2575
+ fontWeight: "font-bold",
2576
+ letterSpacing: "tracking-widest",
2577
+ textTransform: "uppercase"
2578
+ },
2579
+ header1: {
2580
+ fontFamily: "font-inter",
2581
+ fontSize: "text-5xl",
2582
+ fontWeight: "font-black",
2583
+ lineHeight: "leading-none",
2584
+ letterSpacing: "tracking-tighter"
2585
+ },
2586
+ header2: {
2587
+ fontFamily: "font-inter",
2588
+ fontSize: "text-4xl",
2589
+ fontWeight: "font-extrabold",
2590
+ lineHeight: "leading-tight",
2591
+ letterSpacing: "tracking-tight"
2592
+ },
2593
+ header3: {
2594
+ fontFamily: "font-inter",
2595
+ fontSize: "text-2xl",
2596
+ fontWeight: "font-extrabold",
2597
+ lineHeight: "leading-snug"
2598
+ },
2599
+ header4: {
2600
+ fontFamily: "font-inter",
2601
+ fontSize: "text-xl",
2602
+ fontWeight: "font-bold",
2603
+ lineHeight: "leading-snug"
2604
+ },
2605
+ subheader1: {
2606
+ fontFamily: "font-inter",
2607
+ fontSize: "text-lg",
2608
+ fontWeight: "font-medium",
2609
+ lineHeight: "leading-relaxed"
2610
+ },
2611
+ subheader2: {
2612
+ fontFamily: "font-inter",
2613
+ fontSize: "text-base",
2614
+ fontWeight: "font-medium"
2615
+ },
2616
+ text1: {
2617
+ fontFamily: "font-inter",
2618
+ fontSize: "text-base",
2619
+ fontWeight: "font-medium",
2620
+ lineHeight: "leading-relaxed"
2621
+ },
2622
+ text2: {
2623
+ fontFamily: "font-inter",
2624
+ fontSize: "text-sm",
2625
+ fontWeight: "font-medium"
2626
+ },
2627
+ link: {
2628
+ fontFamily: "font-inter",
2629
+ fontSize: "text-base",
2630
+ fontWeight: "font-extrabold"
2631
+ },
2632
+ button: {
2633
+ fontFamily: "font-inter",
2634
+ fontSize: "text-base",
2635
+ fontWeight: "font-extrabold",
2636
+ letterSpacing: "tracking-wide"
2637
+ },
2638
+ input: {
2639
+ fontFamily: "font-inter",
2640
+ fontSize: "text-base",
2641
+ fontWeight: "font-medium"
2642
+ },
2643
+ caption: {
2644
+ fontFamily: "font-inter",
2645
+ fontSize: "text-xs",
2646
+ fontWeight: "font-bold",
2647
+ letterSpacing: "tracking-wide",
2648
+ textTransform: "uppercase"
2649
+ }
2650
+ },
2651
+ interactives: {
2652
+ button: {
2653
+ padding: { x: "px-6", y: "py-3" },
2654
+ border: {
2655
+ width: "border-2",
2656
+ radius: "rounded-none",
2657
+ style: "border-solid"
2658
+ },
2659
+ shadow: "shadow-md",
2660
+ custom: "transition-transform duration-150 ease-out hover:translate-x-1 hover:translate-y-1 hover:shadow-none",
2661
+ disabled: {
2662
+ opacity: "opacity-50",
2663
+ cursor: "cursor-not-allowed"
2664
+ }
2665
+ },
2666
+ menu: {
2667
+ padding: { x: "px-1", y: "py-1" },
2668
+ border: { width: "border-2", radius: "rounded-none", style: "border-solid" },
2669
+ shadow: "shadow-md",
2670
+ item: {
2671
+ padding: { x: "px-3", y: "py-2" },
2672
+ border: { radius: "rounded-none" }
2673
+ }
2674
+ },
2675
+ dialog: {
2676
+ padding: { x: "px-6", y: "py-6" },
2677
+ border: { width: "border-2", radius: "rounded-none", style: "border-solid" },
2678
+ shadow: "shadow-md"
2679
+ },
2680
+ popover: {
2681
+ padding: { x: "px-4", y: "py-4" },
2682
+ border: { width: "border-2", radius: "rounded-none", style: "border-solid" },
2683
+ shadow: "shadow-md"
2684
+ },
2685
+ tooltip: {
2686
+ padding: { x: "px-2", y: "py-1" },
2687
+ border: { width: "border-2", radius: "rounded-none", style: "border-solid" },
2688
+ shadow: "shadow-md"
2689
+ },
2690
+ link: {
2691
+ padding: { x: "px-0", y: "py-0" },
2692
+ custom: "underline decoration-2 underline-offset-4"
2693
+ },
2694
+ card: {
2695
+ padding: { x: "px-6", y: "py-6" },
2696
+ border: {
2697
+ width: "border-2",
2698
+ radius: "rounded-none",
2699
+ style: "border-solid"
2700
+ },
2701
+ shadow: "shadow-md",
2702
+ custom: "transition-transform duration-150 ease-out hover:translate-x-1 hover:translate-y-1 hover:shadow-none"
2703
+ },
2704
+ input: {
2705
+ padding: { x: "px-4", y: "py-3" },
2706
+ border: {
2707
+ width: "border-2",
2708
+ style: "border-solid",
2709
+ radius: "rounded-none"
2710
+ },
2711
+ shadow: "shadow-sm",
2712
+ custom: "",
2713
+ disabled: {
2714
+ cursor: "cursor-not-allowed",
2715
+ opacity: "opacity-50"
2716
+ }
2717
+ }
2718
+ },
2719
+ structure: {
2720
+ page: { width: "max-w-6xl" },
2721
+ section: {
2722
+ padding: { x: "px-6", y: "py-16" }
2723
+ }
2724
+ }
2725
+ };
2726
+ var neobrutalism = {
2727
+ id: "neobrutalism",
2728
+ name: "Neo-Brutalism",
2729
+ theme: themeStyles4
2730
+ };
2731
+
2732
+ // src/primitives/themes/studio.ts
2733
+ var themeStyles5 = {
2734
+ colors: {
2735
+ light: {
2736
+ background: "#f4f1ea",
2737
+ foreground: "#1c1917",
2738
+ card: "#fffcf7",
2739
+ cardForeground: "#1c1917",
2740
+ popover: "#fffcf7",
2741
+ popoverForeground: "#1c1917",
2742
+ primary: "#0f766e",
2743
+ primaryForeground: "#f4fffc",
2744
+ secondary: "#ebe4d6",
2745
+ secondaryForeground: "#1c1917",
2746
+ muted: "#ebe6dc",
2747
+ mutedForeground: "#57534e",
2748
+ accent: "#d9f3ee",
2749
+ accentForeground: "#115e59",
2750
+ destructive: "#dc2626",
2751
+ border: "#e0d8cc",
2752
+ input: "#e0d8cc",
2753
+ ring: "#0f766e",
2754
+ chart1: "#0f766e",
2755
+ chart2: "#0d9488",
2756
+ chart3: "#14b8a6",
2757
+ chart4: "#5eead4",
2758
+ chart5: "#ccfbf1",
2759
+ sidebar: "#fffcf7",
2760
+ sidebarForeground: "#1c1917",
2761
+ sidebarPrimary: "#0f766e",
2762
+ sidebarPrimaryForeground: "#f4fffc",
2763
+ sidebarAccent: "#ebe4d6",
2764
+ sidebarAccentForeground: "#1c1917",
2765
+ sidebarBorder: "#e0d8cc",
2766
+ sidebarRing: "#0f766e",
2767
+ shadow2xs: "0 1px 2px 0 rgb(28 25 23 / 0.04)",
2768
+ shadowXs: "0 1px 2px 0 rgb(28 25 23 / 0.05)",
2769
+ shadowSm: "0 1px 2px 0 rgb(15 118 110 / 0.08), 0 1px 3px -1px rgb(28 25 23 / 0.08)",
2770
+ shadowMd: "0 6px 16px -4px rgb(28 25 23 / 0.1), 0 2px 6px -2px rgb(15 118 110 / 0.08)",
2771
+ shadowLg: "0 16px 32px -8px rgb(28 25 23 / 0.12), 0 6px 12px -4px rgb(15 118 110 / 0.08)",
2772
+ shadowXl: "0 24px 48px -12px rgb(28 25 23 / 0.16)",
2773
+ shadow2xl: "0 32px 64px -16px rgb(28 25 23 / 0.22)"
2774
+ },
2775
+ dark: {
2776
+ background: "#12100d",
2777
+ foreground: "#f4efe6",
2778
+ card: "#1b1814",
2779
+ cardForeground: "#f4efe6",
2780
+ popover: "#1b1814",
2781
+ popoverForeground: "#f4efe6",
2782
+ primary: "#2dd4bf",
2783
+ primaryForeground: "#042f2e",
2784
+ secondary: "#2a241c",
2785
+ secondaryForeground: "#f4efe6",
2786
+ muted: "#221e19",
2787
+ mutedForeground: "#a8a29e",
2788
+ accent: "#134e4a",
2789
+ accentForeground: "#ccfbf1",
2790
+ destructive: "#f87171",
2791
+ border: "#2e2922",
2792
+ input: "#2e2922",
2793
+ ring: "#2dd4bf",
2794
+ chart1: "#2dd4bf",
2795
+ chart2: "#5eead4",
2796
+ chart3: "#99f6e4",
2797
+ chart4: "#14b8a6",
2798
+ chart5: "#0f766e",
2799
+ sidebar: "#1b1814",
2800
+ sidebarForeground: "#f4efe6",
2801
+ sidebarPrimary: "#2dd4bf",
2802
+ sidebarPrimaryForeground: "#042f2e",
2803
+ sidebarAccent: "#2a241c",
2804
+ sidebarAccentForeground: "#f4efe6",
2805
+ sidebarBorder: "#2e2922",
2806
+ sidebarRing: "#2dd4bf",
2807
+ shadow2xs: "0 1px 2px 0 rgb(0 0 0 / 0.28)",
2808
+ shadowXs: "0 1px 2px 0 rgb(0 0 0 / 0.32)",
2809
+ shadowSm: "0 1px 2px 0 rgb(0 0 0 / 0.36), 0 1px 3px -1px rgb(0 0 0 / 0.4)",
2810
+ shadowMd: "0 8px 20px -6px rgb(0 0 0 / 0.48)",
2811
+ shadowLg: "0 16px 32px -8px rgb(0 0 0 / 0.52)",
2812
+ shadowXl: "0 24px 48px -10px rgb(0 0 0 / 0.56)",
2813
+ shadow2xl: "0 32px 64px -12px rgb(0 0 0 / 0.64)"
2814
+ }
2815
+ },
2816
+ typography: {
2817
+ preheader: {
2818
+ fontFamily: "font-montserrat",
2819
+ fontSize: "text-xs",
2820
+ fontWeight: "font-semibold",
2821
+ lineHeight: "leading-normal",
1764
2822
  letterSpacing: "tracking-widest",
1765
2823
  textTransform: "uppercase"
1766
2824
  },
1767
2825
  header1: {
1768
- fontFamily: "font-inter",
1769
- fontSize: "text-5xl",
1770
- fontWeight: "font-black",
2826
+ fontFamily: "font-montserrat",
2827
+ fontSize: "text-6xl",
2828
+ fontWeight: "font-semibold",
1771
2829
  lineHeight: "leading-none",
1772
2830
  letterSpacing: "tracking-tighter"
1773
2831
  },
1774
2832
  header2: {
1775
- fontFamily: "font-inter",
2833
+ fontFamily: "font-montserrat",
1776
2834
  fontSize: "text-4xl",
1777
- fontWeight: "font-extrabold",
2835
+ fontWeight: "font-semibold",
1778
2836
  lineHeight: "leading-tight",
1779
2837
  letterSpacing: "tracking-tight"
1780
2838
  },
1781
2839
  header3: {
1782
- fontFamily: "font-inter",
2840
+ fontFamily: "font-montserrat",
1783
2841
  fontSize: "text-2xl",
1784
- fontWeight: "font-extrabold",
1785
- lineHeight: "leading-snug"
2842
+ fontWeight: "font-semibold",
2843
+ lineHeight: "leading-snug",
2844
+ letterSpacing: "tracking-tight"
1786
2845
  },
1787
2846
  header4: {
1788
- fontFamily: "font-inter",
2847
+ fontFamily: "font-montserrat",
1789
2848
  fontSize: "text-xl",
1790
- fontWeight: "font-bold",
2849
+ fontWeight: "font-medium",
1791
2850
  lineHeight: "leading-snug"
1792
2851
  },
1793
2852
  subheader1: {
1794
- fontFamily: "font-inter",
1795
- fontSize: "text-lg",
1796
- fontWeight: "font-medium",
2853
+ fontFamily: "font-source-sans-3",
2854
+ fontSize: "text-xl",
2855
+ fontWeight: "font-normal",
1797
2856
  lineHeight: "leading-relaxed"
1798
2857
  },
1799
2858
  subheader2: {
1800
- fontFamily: "font-inter",
1801
- fontSize: "text-base",
1802
- fontWeight: "font-medium"
2859
+ fontFamily: "font-source-sans-3",
2860
+ fontSize: "text-lg",
2861
+ fontWeight: "font-normal",
2862
+ lineHeight: "leading-relaxed"
1803
2863
  },
1804
2864
  text1: {
1805
- fontFamily: "font-inter",
2865
+ fontFamily: "font-source-sans-3",
1806
2866
  fontSize: "text-base",
1807
- fontWeight: "font-medium",
2867
+ fontWeight: "font-normal",
1808
2868
  lineHeight: "leading-relaxed"
1809
2869
  },
1810
2870
  text2: {
1811
- fontFamily: "font-inter",
2871
+ fontFamily: "font-source-sans-3",
1812
2872
  fontSize: "text-sm",
1813
- fontWeight: "font-medium"
2873
+ fontWeight: "font-normal",
2874
+ lineHeight: "leading-relaxed"
1814
2875
  },
1815
2876
  link: {
1816
- fontFamily: "font-inter",
2877
+ fontFamily: "font-source-sans-3",
1817
2878
  fontSize: "text-base",
1818
- fontWeight: "font-extrabold"
2879
+ fontWeight: "font-medium"
1819
2880
  },
1820
2881
  button: {
1821
- fontFamily: "font-inter",
1822
- fontSize: "text-base",
1823
- fontWeight: "font-extrabold",
2882
+ fontFamily: "font-montserrat",
2883
+ fontSize: "text-sm",
2884
+ fontWeight: "font-medium",
1824
2885
  letterSpacing: "tracking-wide"
1825
2886
  },
1826
2887
  input: {
1827
- fontFamily: "font-inter",
2888
+ fontFamily: "font-source-sans-3",
1828
2889
  fontSize: "text-base",
1829
- fontWeight: "font-medium"
2890
+ fontWeight: "font-normal"
1830
2891
  },
1831
2892
  caption: {
1832
- fontFamily: "font-inter",
2893
+ fontFamily: "font-source-sans-3",
1833
2894
  fontSize: "text-xs",
1834
- fontWeight: "font-bold",
1835
- letterSpacing: "tracking-wide",
1836
- textTransform: "uppercase"
2895
+ fontWeight: "font-medium",
2896
+ lineHeight: "leading-normal",
2897
+ letterSpacing: "tracking-wide"
1837
2898
  }
1838
2899
  },
1839
2900
  interactives: {
1840
2901
  button: {
1841
2902
  padding: { x: "px-6", y: "py-3" },
1842
2903
  border: {
1843
- width: "border-2",
1844
- radius: "rounded-none",
1845
- style: "border-solid"
2904
+ width: "border-0",
2905
+ radius: "rounded-2xl"
1846
2906
  },
1847
- shadow: "shadow-md",
1848
- custom: "transition-transform duration-150 ease-out hover:translate-x-1 hover:translate-y-1 hover:shadow-none",
2907
+ shadow: "shadow-xs",
2908
+ custom: "transition-colors duration-200",
1849
2909
  disabled: {
1850
2910
  opacity: "opacity-50",
1851
2911
  cursor: "cursor-not-allowed"
1852
2912
  }
1853
2913
  },
2914
+ menu: {
2915
+ padding: { x: "px-1", y: "py-1" },
2916
+ border: { width: "border", radius: "rounded-2xl", style: "border-solid" },
2917
+ shadow: "shadow-xs",
2918
+ item: {
2919
+ padding: { x: "px-3", y: "py-2" },
2920
+ border: { radius: "rounded-xl" }
2921
+ }
2922
+ },
2923
+ dialog: {
2924
+ padding: { x: "px-6", y: "py-6" },
2925
+ border: { width: "border-0", radius: "rounded-2xl" },
2926
+ shadow: "shadow-lg"
2927
+ },
2928
+ popover: {
2929
+ padding: { x: "px-4", y: "py-4" },
2930
+ border: { width: "border-0", radius: "rounded-2xl" },
2931
+ shadow: "shadow-md"
2932
+ },
2933
+ tooltip: {
2934
+ padding: { x: "px-2", y: "py-1" },
2935
+ border: { width: "border-0", radius: "rounded-lg" },
2936
+ shadow: "shadow-sm"
2937
+ },
1854
2938
  link: {
1855
2939
  padding: { x: "px-0", y: "py-0" },
1856
- custom: "underline decoration-2 underline-offset-4"
2940
+ custom: "underline-offset-4 transition-colors duration-150 hover:underline"
1857
2941
  },
1858
2942
  card: {
1859
- padding: { x: "px-6", y: "py-6" },
2943
+ padding: { x: "px-8", y: "py-8" },
1860
2944
  border: {
1861
- width: "border-2",
1862
- radius: "rounded-none",
2945
+ width: "border",
2946
+ radius: "rounded-3xl",
1863
2947
  style: "border-solid"
1864
2948
  },
1865
- shadow: "shadow-md",
1866
- custom: "transition-transform duration-150 ease-out hover:translate-x-1 hover:translate-y-1 hover:shadow-none"
2949
+ shadow: "shadow-xs",
2950
+ custom: "transition-shadow duration-200 hover:shadow-lg"
1867
2951
  },
1868
2952
  input: {
2953
+ borderRadius: "rounded-2xl",
1869
2954
  padding: { x: "px-4", y: "py-3" },
1870
2955
  border: {
1871
- width: "border-2",
2956
+ width: "border",
1872
2957
  style: "border-solid",
1873
- radius: "rounded-none"
2958
+ radius: "rounded-2xl"
1874
2959
  },
1875
- shadow: "shadow-sm",
1876
- custom: "",
2960
+ shadow: "shadow-none",
2961
+ custom: "transition-shadow duration-150",
1877
2962
  disabled: {
1878
2963
  cursor: "cursor-not-allowed",
1879
2964
  opacity: "opacity-50"
@@ -1883,129 +2968,56 @@ var themeStyles5 = {
1883
2968
  structure: {
1884
2969
  page: { width: "max-w-6xl" },
1885
2970
  section: {
1886
- padding: { x: "px-6", y: "py-16" }
2971
+ padding: { x: "px-6", y: "py-24" }
1887
2972
  }
1888
2973
  }
1889
2974
  };
1890
- var neobrutalism = {
1891
- id: "neobrutalism",
1892
- name: "Neo-Brutalism",
2975
+ var studio = {
2976
+ id: "studio",
2977
+ name: "Studio",
1893
2978
  theme: themeStyles5
1894
2979
  };
1895
2980
 
1896
2981
  // 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,
2982
+ var themes = [classic, studio, midnight, editorial, neobrutalism];
2983
+ var TooltipThemeContext = React7.createContext(void 0);
2984
+ function useTooltipTheme(providedTheme) {
2985
+ const contextTheme = React7.useContext(TooltipThemeContext);
2986
+ return providedTheme ?? contextTheme;
2987
+ }
2988
+ function TooltipProvider({ theme, children, ...props }) {
2989
+ return /* @__PURE__ */ jsx(TooltipThemeContext.Provider, { value: theme, children: /* @__PURE__ */ jsx(TooltipPrimitive.Provider, { ...props, children }) });
2990
+ }
2991
+ function Tooltip({ theme, children, ...props }) {
2992
+ return /* @__PURE__ */ jsx(TooltipThemeContext.Provider, { value: theme, children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { ...props, children }) });
2993
+ }
2994
+ var TooltipTrigger = TooltipPrimitive.Trigger;
2995
+ var TooltipPortal = TooltipPrimitive.Portal;
2996
+ var TooltipContent = React7.forwardRef(({ className, sideOffset = 6, theme: providedTheme, ...props }, ref) => {
2997
+ const theme = useTooltipTheme(providedTheme);
2998
+ const styles = theme?.interactives?.tooltip;
2999
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
3000
+ TooltipPrimitive.Content,
1939
3001
  {
1940
3002
  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
- ]
3003
+ sideOffset,
3004
+ className: cn(
3005
+ "z-50 w-fit rounded-sm bg-foreground px-2.5 py-1.5 text-xs font-medium text-background outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95",
3006
+ styles?.padding?.x,
3007
+ styles?.padding?.y,
3008
+ styles?.border?.width,
3009
+ styles?.border?.radius,
3010
+ styles?.border?.style,
3011
+ styles?.shadow,
3012
+ styles?.custom,
3013
+ className
3014
+ ),
3015
+ ...props
1950
3016
  }
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
- }
3017
+ ) });
3018
+ });
3019
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
2008
3020
 
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
3021
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Avatar, AvatarFallback, AvatarImage, Badge2 as Badge, Button, Button2, Caption, Checkbox, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DropdownMenu, DropdownMenuArrow, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Header1, Header2, Header3, Header4, Image2 as Image, Input2 as Input, Label3 as Label, Link, PageCard, PageCardContent, PageCardHeader, PageCardImage, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, Preheader, RadioGroup2 as RadioGroup, RadioGroupItem, Section, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, Subheader1, Subheader2, Switch, Switch2, Text1, Text2, Textarea, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, cn, themes };
3022
+ //# sourceMappingURL=chunk-SGNRWWG3.js.map
3023
+ //# sourceMappingURL=chunk-SGNRWWG3.js.map