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

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