@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
@@ -35,6 +35,24 @@ interface DisabledStyle {
35
35
  opacity?: "opacity-50" | "opacity-75" | "opacity-100";
36
36
  cursor?: Cursor;
37
37
  }
38
+ interface MenuItemStyle {
39
+ padding?: Padding;
40
+ border?: Border;
41
+ custom?: CustomStyle;
42
+ }
43
+ interface MenuStyle {
44
+ padding?: Padding;
45
+ border?: Border;
46
+ shadow?: Shadow;
47
+ custom?: CustomStyle;
48
+ item?: MenuItemStyle;
49
+ }
50
+ interface SurfaceStyle {
51
+ padding?: Padding;
52
+ border?: Border;
53
+ shadow?: Shadow;
54
+ custom?: CustomStyle;
55
+ }
38
56
  interface Colors {
39
57
  background: string;
40
58
  foreground: string;
@@ -103,6 +121,10 @@ interface ThemeStyle {
103
121
  custom?: CustomStyle;
104
122
  disabled?: DisabledStyle;
105
123
  };
124
+ menu?: MenuStyle;
125
+ dialog?: SurfaceStyle;
126
+ popover?: SurfaceStyle;
127
+ tooltip?: SurfaceStyle;
106
128
  link: {
107
129
  padding?: Padding;
108
130
  border?: Border;
@@ -138,4 +160,4 @@ interface ThemeStyle {
138
160
  };
139
161
  }
140
162
 
141
- export type { Border as B, Colors as C, DisabledStyle as D, Padding as P, Shadow as S, ThemeStyle as T, CustomStyle as a, Typography as b };
163
+ export type { Border as B, Colors as C, DisabledStyle as D, MenuItemStyle as M, Padding as P, Shadow as S, ThemeStyle as T, CustomStyle as a, MenuStyle as b, SurfaceStyle as c, Typography as d };
package/dist/theme.css CHANGED
@@ -14,208 +14,191 @@
14
14
  * generate-theme-styles.ts). Scoped so it doesn't leak into a consuming
15
15
  * app's own chrome outside the page-builder-rendered subtree. */
16
16
  .pb-theme {
17
- --background: hsl(0 0% 100%);
18
- --foreground: hsl(222.2 84% 4.9%);
19
- --card: hsl(0 0% 100%);
20
- --card-foreground: hsl(222.2 84% 4.9%);
21
- --popover: hsl(0 0% 100%);
22
- --popover-foreground: hsl(222.2 84% 4.9%);
23
- --primary: hsl(222.2 47.4% 11.2%);
24
- --primary-foreground: hsl(210 40% 98%);
25
- --secondary: hsl(210 40% 96.1%);
26
- --secondary-foreground: hsl(222.2 47.4% 11.2%);
27
- --muted: hsl(210 40% 96.1%);
28
- --muted-foreground: hsl(215.4 16.3% 46.9%);
29
- --accent: hsl(210 40% 96.1%);
30
- --accent-foreground: hsl(222.2 47.4% 11.2%);
31
- --destructive: hsl(0 84.2% 60.2%);
32
- --destructive-foreground: hsl(210 40% 98%);
33
- --border: hsl(214.3 31.8% 91.4%);
34
- --input: hsl(214.3 31.8% 91.4%);
35
- --ring: hsl(222.2 84% 4.9%);
36
- --chart-1: hsl(12 76% 61%);
37
- --chart-2: hsl(173 58% 39%);
38
- --chart-3: hsl(197 37% 24%);
39
- --chart-4: hsl(43 74% 66%);
40
- --chart-5: hsl(27 87% 67%);
41
- --radius: 0.5rem;
42
- --sidebar-background: hsl(0 0% 98%);
43
- --sidebar-foreground: hsl(240 5.3% 26.1%);
44
- --sidebar-primary: hsl(240 5.9% 10%);
45
- --sidebar-primary-foreground: hsl(0 0% 98%);
46
- --sidebar-accent: hsl(240 4.8% 95.9%);
47
- --sidebar-accent-foreground: hsl(240 5.9% 10%);
48
- --sidebar-border: hsl(220 13% 91%);
49
- --sidebar-ring: hsl(217.2 91.2% 59.8%);
17
+ --background: hsl(0 0% 100%);
18
+ --foreground: hsl(222.2 84% 4.9%);
19
+ --card: hsl(0 0% 100%);
20
+ --card-foreground: hsl(222.2 84% 4.9%);
21
+ --popover: hsl(0 0% 100%);
22
+ --popover-foreground: hsl(222.2 84% 4.9%);
23
+ --primary: hsl(222.2 47.4% 11.2%);
24
+ --primary-foreground: hsl(210 40% 98%);
25
+ --secondary: hsl(210 40% 96.1%);
26
+ --secondary-foreground: hsl(222.2 47.4% 11.2%);
27
+ --muted: hsl(210 40% 96.1%);
28
+ --muted-foreground: hsl(215.4 16.3% 46.9%);
29
+ --accent: hsl(210 40% 96.1%);
30
+ --accent-foreground: hsl(222.2 47.4% 11.2%);
31
+ --destructive: hsl(0 84.2% 60.2%);
32
+ --destructive-foreground: hsl(210 40% 98%);
33
+ --border: hsl(214.3 31.8% 91.4%);
34
+ --input: hsl(214.3 31.8% 91.4%);
35
+ --ring: hsl(222.2 84% 4.9%);
36
+ --chart-1: hsl(12 76% 61%);
37
+ --chart-2: hsl(173 58% 39%);
38
+ --chart-3: hsl(197 37% 24%);
39
+ --chart-4: hsl(43 74% 66%);
40
+ --chart-5: hsl(27 87% 67%);
41
+ --radius: 0.5rem;
42
+ --sidebar-background: hsl(0 0% 98%);
43
+ --sidebar-foreground: hsl(240 5.3% 26.1%);
44
+ --sidebar-primary: hsl(240 5.9% 10%);
45
+ --sidebar-primary-foreground: hsl(0 0% 98%);
46
+ --sidebar-accent: hsl(240 4.8% 95.9%);
47
+ --sidebar-accent-foreground: hsl(240 5.9% 10%);
48
+ --sidebar-border: hsl(220 13% 91%);
49
+ --sidebar-ring: hsl(217.2 91.2% 59.8%);
50
50
  }
51
51
 
52
52
  .pb-theme:is(.dark, .dark *) {
53
- --background: hsl(222.2 84% 4.9%);
54
- --foreground: hsl(210 40% 98%);
55
- --card: hsl(222.2 84% 4.9%);
56
- --card-foreground: hsl(210 40% 98%);
57
- --popover: hsl(222.2 84% 4.9%);
58
- --popover-foreground: hsl(210 40% 98%);
59
- --primary: hsl(210 40% 98%);
60
- --primary-foreground: hsl(222.2 47.4% 11.2%);
61
- --secondary: hsl(217.2 32.6% 17.5%);
62
- --secondary-foreground: hsl(210 40% 98%);
63
- --muted: hsl(217.2 32.6% 17.5%);
64
- --muted-foreground: hsl(215 20.2% 65.1%);
65
- --accent: hsl(217.2 32.6% 17.5%);
66
- --accent-foreground: hsl(210 40% 98%);
67
- --destructive: hsl(0 62.8% 30.6%);
68
- --destructive-foreground: hsl(210 40% 98%);
69
- --border: hsl(217.2 32.6% 17.5%);
70
- --input: hsl(217.2 32.6% 17.5%);
71
- --ring: hsl(212.7 26.8% 83.9%);
72
- --chart-1: hsl(220 70% 50%);
73
- --chart-2: hsl(160 60% 45%);
74
- --chart-3: hsl(30 80% 55%);
75
- --chart-4: hsl(280 65% 60%);
76
- --chart-5: hsl(340 75% 55%);
77
- --sidebar-background: hsl(240 5.9% 10%);
78
- --sidebar-foreground: hsl(240 4.8% 95.9%);
79
- --sidebar-primary: hsl(224.3 76.3% 48%);
80
- --sidebar-primary-foreground: hsl(0 0% 100%);
81
- --sidebar-accent: hsl(240 3.7% 15.9%);
82
- --sidebar-accent-foreground: hsl(240 4.8% 95.9%);
83
- --sidebar-border: hsl(240 3.7% 15.9%);
84
- --sidebar-ring: hsl(217.2 91.2% 59.8%);
53
+ --background: hsl(222.2 84% 4.9%);
54
+ --foreground: hsl(210 40% 98%);
55
+ --card: hsl(222.2 84% 4.9%);
56
+ --card-foreground: hsl(210 40% 98%);
57
+ --popover: hsl(222.2 84% 4.9%);
58
+ --popover-foreground: hsl(210 40% 98%);
59
+ --primary: hsl(210 40% 98%);
60
+ --primary-foreground: hsl(222.2 47.4% 11.2%);
61
+ --secondary: hsl(217.2 32.6% 17.5%);
62
+ --secondary-foreground: hsl(210 40% 98%);
63
+ --muted: hsl(217.2 32.6% 17.5%);
64
+ --muted-foreground: hsl(215 20.2% 65.1%);
65
+ --accent: hsl(217.2 32.6% 17.5%);
66
+ --accent-foreground: hsl(210 40% 98%);
67
+ --destructive: hsl(0 62.8% 30.6%);
68
+ --destructive-foreground: hsl(210 40% 98%);
69
+ --border: hsl(217.2 32.6% 17.5%);
70
+ --input: hsl(217.2 32.6% 17.5%);
71
+ --ring: hsl(212.7 26.8% 83.9%);
72
+ --chart-1: hsl(220 70% 50%);
73
+ --chart-2: hsl(160 60% 45%);
74
+ --chart-3: hsl(30 80% 55%);
75
+ --chart-4: hsl(280 65% 60%);
76
+ --chart-5: hsl(340 75% 55%);
77
+ --sidebar-background: hsl(240 5.9% 10%);
78
+ --sidebar-foreground: hsl(240 4.8% 95.9%);
79
+ --sidebar-primary: hsl(224.3 76.3% 48%);
80
+ --sidebar-primary-foreground: hsl(0 0% 100%);
81
+ --sidebar-accent: hsl(240 3.7% 15.9%);
82
+ --sidebar-accent-foreground: hsl(240 4.8% 95.9%);
83
+ --sidebar-border: hsl(240 3.7% 15.9%);
84
+ --sidebar-ring: hsl(217.2 91.2% 59.8%);
85
85
  }
86
86
 
87
87
  /* Semantic token mapping. Runtime theme variables contain complete CSS
88
88
  * colors, which works consistently in both the public app and the dashboard. */
89
89
  @theme inline {
90
- --color-background: var(--background);
91
- --color-foreground: var(--foreground);
92
- --color-card: var(--card);
93
- --color-card-foreground: var(--card-foreground);
94
- --color-popover: var(--popover);
95
- --color-popover-foreground: var(--popover-foreground);
96
- --color-primary: var(--primary);
97
- --color-primary-foreground: var(--primary-foreground);
98
- --color-secondary: var(--secondary);
99
- --color-secondary-foreground: var(--secondary-foreground);
100
- --color-muted: var(--muted);
101
- --color-muted-foreground: var(--muted-foreground);
102
- --color-accent: var(--accent);
103
- --color-accent-foreground: var(--accent-foreground);
104
- --color-destructive: var(--destructive);
105
- --color-destructive-foreground: var(--destructive-foreground);
106
- --color-border: var(--border);
107
- --color-input: var(--input);
108
- --color-ring: var(--ring);
109
- --color-chart-1: var(--chart-1);
110
- --color-chart-2: var(--chart-2);
111
- --color-chart-3: var(--chart-3);
112
- --color-chart-4: var(--chart-4);
113
- --color-chart-5: var(--chart-5);
114
- --color-sidebar: var(--sidebar-background);
115
- --color-sidebar-foreground: var(--sidebar-foreground);
116
- --color-sidebar-primary: var(--sidebar-primary);
117
- --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
118
- --color-sidebar-accent: var(--sidebar-accent);
119
- --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
120
- --color-sidebar-border: var(--sidebar-border);
121
- --color-sidebar-ring: var(--sidebar-ring);
90
+ --color-background: var(--background);
91
+ --color-foreground: var(--foreground);
92
+ --color-card: var(--card);
93
+ --color-card-foreground: var(--card-foreground);
94
+ --color-popover: var(--popover);
95
+ --color-popover-foreground: var(--popover-foreground);
96
+ --color-primary: var(--primary);
97
+ --color-primary-foreground: var(--primary-foreground);
98
+ --color-secondary: var(--secondary);
99
+ --color-secondary-foreground: var(--secondary-foreground);
100
+ --color-muted: var(--muted);
101
+ --color-muted-foreground: var(--muted-foreground);
102
+ --color-accent: var(--accent);
103
+ --color-accent-foreground: var(--accent-foreground);
104
+ --color-destructive: var(--destructive);
105
+ --color-destructive-foreground: var(--destructive-foreground);
106
+ --color-border: var(--border);
107
+ --color-input: var(--input);
108
+ --color-ring: var(--ring);
109
+ --color-chart-1: var(--chart-1);
110
+ --color-chart-2: var(--chart-2);
111
+ --color-chart-3: var(--chart-3);
112
+ --color-chart-4: var(--chart-4);
113
+ --color-chart-5: var(--chart-5);
114
+ --color-sidebar: var(--sidebar-background);
115
+ --color-sidebar-foreground: var(--sidebar-foreground);
116
+ --color-sidebar-primary: var(--sidebar-primary);
117
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
118
+ --color-sidebar-accent: var(--sidebar-accent);
119
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
120
+ --color-sidebar-border: var(--sidebar-border);
121
+ --color-sidebar-ring: var(--sidebar-ring);
122
122
 
123
- --radius-lg: var(--radius);
124
- --radius-md: calc(var(--radius) - 2px);
125
- --radius-sm: calc(var(--radius) - 4px);
123
+ --radius-lg: var(--radius);
124
+ --radius-md: calc(var(--radius) - 2px);
125
+ --radius-sm: calc(var(--radius) - 4px);
126
126
 
127
- --shadow: var(--shadow);
128
- --shadow-2xs: var(--shadow-2xs);
129
- --shadow-xs: var(--shadow-xs);
130
- --shadow-sm: var(--shadow-sm);
131
- --shadow-md: var(--shadow-md);
132
- --shadow-lg: var(--shadow-lg);
133
- --shadow-xl: var(--shadow-xl);
134
- --shadow-2xl: var(--shadow-2xl);
127
+ --shadow: var(--shadow);
128
+ --shadow-2xs: var(--shadow-2xs);
129
+ --shadow-xs: var(--shadow-xs);
130
+ --shadow-sm: var(--shadow-sm);
131
+ --shadow-md: var(--shadow-md);
132
+ --shadow-lg: var(--shadow-lg);
133
+ --shadow-xl: var(--shadow-xl);
134
+ --shadow-2xl: var(--shadow-2xl);
135
135
 
136
- --font-open-sans:
137
- var(--font-open-sans, "Open Sans"), ui-sans-serif, system-ui, sans-serif,
138
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
139
- "Noto Color Emoji";
140
- --font-montserrat:
141
- var(--font-montserrat, Montserrat), ui-sans-serif, system-ui, sans-serif,
142
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
143
- "Noto Color Emoji";
144
- --font-lato:
145
- var(--font-lato, Lato), ui-sans-serif, system-ui, sans-serif,
146
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
147
- "Noto Color Emoji";
148
- --font-poppins:
149
- var(--font-poppins, Poppins), ui-sans-serif, system-ui, sans-serif,
150
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
151
- "Noto Color Emoji";
152
- --font-source-sans-3:
153
- var(--font-source-sans-3, "Source Sans 3"), ui-sans-serif, system-ui,
154
- sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
155
- "Noto Color Emoji";
156
- --font-raleway:
157
- var(--font-raleway, Raleway), ui-sans-serif, system-ui, sans-serif,
158
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
159
- "Noto Color Emoji";
160
- --font-noto-sans:
161
- var(--font-noto-sans, "Noto Sans"), ui-sans-serif, system-ui, sans-serif,
162
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
163
- "Noto Color Emoji";
164
- --font-merriweather:
165
- var(--font-merriweather, Merriweather), ui-serif, Georgia, Cambria,
166
- "Times New Roman", Times, serif;
167
- --font-inter:
168
- var(--font-inter, Inter), ui-sans-serif, system-ui, sans-serif,
169
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
170
- "Noto Color Emoji";
171
- --font-alegreya:
172
- var(--font-alegreya, Alegreya), ui-serif, Georgia, Cambria,
173
- "Times New Roman", Times, serif;
174
- --font-roboto:
175
- var(--font-roboto, Roboto), ui-sans-serif, system-ui, sans-serif,
176
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
177
- "Noto Color Emoji";
178
- --font-mulish:
179
- var(--font-mulish, Mulish), ui-sans-serif, system-ui, sans-serif,
180
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
181
- "Noto Color Emoji";
182
- --font-nunito:
183
- var(--font-nunito, Nunito), ui-sans-serif, system-ui, sans-serif,
184
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
185
- "Noto Color Emoji";
186
- --font-rubik:
187
- var(--font-rubik, Rubik), ui-sans-serif, system-ui, sans-serif,
188
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
189
- "Noto Color Emoji";
190
- --font-playfair-display:
191
- var(--font-playfair-display, "Playfair Display"), ui-serif, Georgia,
192
- Cambria, "Times New Roman", Times, serif;
193
- --font-oswald:
194
- var(--font-oswald, Oswald), ui-sans-serif, system-ui, sans-serif,
195
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
196
- "Noto Color Emoji";
197
- --font-pt-sans:
198
- var(--font-pt-sans, "PT Sans"), ui-sans-serif, system-ui, sans-serif,
199
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
200
- "Noto Color Emoji";
201
- --font-work-sans:
202
- var(--font-work-sans, "Work Sans"), ui-sans-serif, system-ui, sans-serif,
203
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
204
- "Noto Color Emoji";
205
- --font-roboto-slab:
206
- var(--font-roboto-slab, "Roboto Slab"), ui-serif, Georgia, Cambria,
207
- "Times New Roman", Times, serif;
208
- --font-source-serif-4:
209
- var(--font-source-serif-4, "Source Serif 4"), ui-serif, Georgia, Cambria,
210
- "Times New Roman", Times, serif;
211
- --font-bebas-neue:
212
- var(--font-bebas-neue, "Bebas Neue"), ui-sans-serif, system-ui, sans-serif,
213
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
214
- "Noto Color Emoji";
215
- --font-quicksand:
216
- var(--font-quicksand, Quicksand), ui-sans-serif, system-ui, sans-serif,
217
- "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
218
- "Noto Color Emoji";
136
+ --font-open-sans:
137
+ var(--font-open-sans, "Open Sans"), ui-sans-serif, system-ui, sans-serif,
138
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
139
+ --font-montserrat:
140
+ var(--font-montserrat, Montserrat), ui-sans-serif, system-ui, sans-serif,
141
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
142
+ --font-lato:
143
+ var(--font-lato, Lato), ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
144
+ "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
145
+ --font-poppins:
146
+ var(--font-poppins, Poppins), ui-sans-serif, system-ui, sans-serif,
147
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
148
+ --font-source-sans-3:
149
+ var(--font-source-sans-3, "Source Sans 3"), ui-sans-serif, system-ui, sans-serif,
150
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
151
+ --font-raleway:
152
+ var(--font-raleway, Raleway), ui-sans-serif, system-ui, sans-serif,
153
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
154
+ --font-noto-sans:
155
+ var(--font-noto-sans, "Noto Sans"), ui-sans-serif, system-ui, sans-serif,
156
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
157
+ --font-merriweather:
158
+ var(--font-merriweather, Merriweather), ui-serif, Georgia, Cambria,
159
+ "Times New Roman", Times, serif;
160
+ --font-inter:
161
+ var(--font-inter, Inter), ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
162
+ "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
163
+ --font-alegreya:
164
+ var(--font-alegreya, Alegreya), ui-serif, Georgia, Cambria, "Times New Roman",
165
+ Times, serif;
166
+ --font-roboto:
167
+ var(--font-roboto, Roboto), ui-sans-serif, system-ui, sans-serif,
168
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
169
+ --font-mulish:
170
+ var(--font-mulish, Mulish), ui-sans-serif, system-ui, sans-serif,
171
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
172
+ --font-nunito:
173
+ var(--font-nunito, Nunito), ui-sans-serif, system-ui, sans-serif,
174
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
175
+ --font-rubik:
176
+ var(--font-rubik, Rubik), ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
177
+ "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
178
+ --font-playfair-display:
179
+ var(--font-playfair-display, "Playfair Display"), ui-serif, Georgia, Cambria,
180
+ "Times New Roman", Times, serif;
181
+ --font-oswald:
182
+ var(--font-oswald, Oswald), ui-sans-serif, system-ui, sans-serif,
183
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
184
+ --font-pt-sans:
185
+ var(--font-pt-sans, "PT Sans"), ui-sans-serif, system-ui, sans-serif,
186
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
187
+ --font-work-sans:
188
+ var(--font-work-sans, "Work Sans"), ui-sans-serif, system-ui, sans-serif,
189
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
190
+ --font-roboto-slab:
191
+ var(--font-roboto-slab, "Roboto Slab"), ui-serif, Georgia, Cambria,
192
+ "Times New Roman", Times, serif;
193
+ --font-source-serif-4:
194
+ var(--font-source-serif-4, "Source Serif 4"), ui-serif, Georgia, Cambria,
195
+ "Times New Roman", Times, serif;
196
+ --font-bebas-neue:
197
+ var(--font-bebas-neue, "Bebas Neue"), ui-sans-serif, system-ui, sans-serif,
198
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
199
+ --font-quicksand:
200
+ var(--font-quicksand, Quicksand), ui-sans-serif, system-ui, sans-serif,
201
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
219
202
  }
220
203
 
221
204
  /* Safelist for classes the theme system composes at runtime.
@@ -1,18 +1,17 @@
1
1
  import { ComponentType, ReactNode } from 'react';
2
- import { S as SectionBackground, T as Theme } from './section-background-BgOCp5l3.js';
3
- import { T as ThemeStyle } from './theme-style-39nxXQy0.js';
2
+ import { S as SectionBackground, T as Theme } from './section-background-MsdE40Rk.js';
3
+ import { T as ThemeStyle } from './theme-style-Cbl7NM-T.js';
4
4
 
5
5
  /**
6
6
  * The kind of page a widget/block can be placed on. Kept intentionally
7
7
  * generic (unlike CourseLit's LMS-specific page types) since FrontLit pages
8
8
  * can be a marketing site, a blog post, a changelog entry, etc.
9
9
  */
10
- type PageType = "site" | "blog" | "landing" | "post" | "custom";
11
10
  interface WidgetMetadata {
12
11
  name: string;
13
12
  displayName: string;
14
13
  description?: string;
15
- compatibleWith: PageType[];
14
+ compatibleWith?: string[];
16
15
  icon?: string;
17
16
  }
18
17
  /**
@@ -51,7 +50,7 @@ interface WidgetDefaultSettings {
51
50
  layout?: string;
52
51
  }
53
52
  interface PageData extends Record<string, unknown> {
54
- pageType: PageType;
53
+ pageType?: string;
55
54
  /** Tenant branding supplied by the host application. Layout blocks use
56
55
  * this on published sites, while the builder can continue to use its
57
56
  * own local block settings. */
@@ -93,6 +92,11 @@ interface Widget<T extends WidgetDefaultSettings = WidgetDefaultSettings> {
93
92
  metadata: WidgetMetadata;
94
93
  widget: ComponentType<WidgetProps<T>>;
95
94
  editor?: ComponentType<WidgetEditorProps<T>>;
95
+ /**
96
+ * Block-specific design controls rendered on the panel's Design tab
97
+ * alongside layouts and common section styling.
98
+ */
99
+ designEditor?: ComponentType<WidgetEditorProps<T>>;
96
100
  getDefaultSettings?: () => Partial<T>;
97
101
  /**
98
102
  * Alternate layouts this block can render its data in, selectable from
@@ -102,4 +106,4 @@ interface Widget<T extends WidgetDefaultSettings = WidgetDefaultSettings> {
102
106
  layouts?: BlockLayout[];
103
107
  }
104
108
 
105
- export type { BlockLayout as B, PageData as P, Widget as W, PageType as a, WidgetDefaultSettings as b, WidgetEditorProps as c, WidgetInstance as d, WidgetMetadata as e, WidgetProps as f };
109
+ export type { BlockLayout as B, PageData as P, Widget as W, WidgetDefaultSettings as a, WidgetEditorProps as b, WidgetInstance as c, WidgetMetadata as d, WidgetProps as e };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontlit/page-builder",
3
- "version": "0.1.0-alpha.1",
3
+ "version": "0.1.0-alpha.2",
4
4
  "description": "Block-based WYSIWYG page builder and renderer for React",
5
5
  "author": "FrontLit",
6
6
  "license": "MIT",
@@ -105,22 +105,39 @@
105
105
  "landing-page",
106
106
  "frontlit"
107
107
  ],
108
+ "scripts": {
109
+ "build": "tsup && node scripts/add-use-client.mjs && tailwindcss -i src/styles.css -o dist/styles.css && cp src/theme.css dist/theme.css && rm -rf dist/fonts && cp -a fonts dist/fonts && node scripts/rewrite-font-urls.mjs",
110
+ "prepublishOnly": "pnpm run build",
111
+ "dev": "tsup --watch",
112
+ "clean": "rimraf dist",
113
+ "check-types": "tsc --noEmit"
114
+ },
108
115
  "peerDependencies": {
109
116
  "react": "^18.0.0 || ^19.0.0",
110
117
  "react-dom": "^18.0.0 || ^19.0.0"
111
118
  },
112
119
  "dependencies": {
120
+ "@frontlit/media-uploader": "0.1.0-alpha.0",
121
+ "@frontlit/text-editor": "0.1.0-alpha.1",
122
+ "@radix-ui/react-alert-dialog": "^1.1.23",
123
+ "@radix-ui/react-avatar": "^1.2.6",
124
+ "@radix-ui/react-checkbox": "^1.3.11",
113
125
  "@radix-ui/react-dialog": "^1.1.15",
126
+ "@radix-ui/react-dropdown-menu": "^2.1.24",
114
127
  "@radix-ui/react-label": "^2.1.8",
128
+ "@radix-ui/react-popover": "^1.1.23",
129
+ "@radix-ui/react-radio-group": "^1.4.7",
115
130
  "@radix-ui/react-slot": "^1.2.4",
116
131
  "@radix-ui/react-switch": "^1.2.6",
132
+ "@radix-ui/react-select": "^2.3.7",
133
+ "@radix-ui/react-separator": "^1.1.15",
134
+ "@radix-ui/react-tooltip": "^1.2.16",
117
135
  "class-variance-authority": "^0.7.1",
118
136
  "clsx": "^2.1.1",
119
137
  "color-convert": "^3.1.0",
120
138
  "lucide-react": "^0.553.0",
121
139
  "tailwind-merge": "^3.4.0",
122
- "tw-animate-css": "^1.4.0",
123
- "@frontlit/text-editor": "0.1.0-alpha.1"
140
+ "tw-animate-css": "^1.4.0"
124
141
  },
125
142
  "devDependencies": {
126
143
  "@types/color-convert": "^2.0.4",
@@ -132,11 +149,5 @@
132
149
  "tailwindcss": "^4.1.0",
133
150
  "tsup": "^8.3.0",
134
151
  "typescript": "^5.6.2"
135
- },
136
- "scripts": {
137
- "build": "tsup && node scripts/add-use-client.mjs && tailwindcss -i src/styles.css -o dist/styles.css && cp src/theme.css dist/theme.css && rm -rf dist/fonts && cp -a fonts dist/fonts && node scripts/rewrite-font-urls.mjs",
138
- "dev": "tsup --watch",
139
- "clean": "rimraf dist",
140
- "check-types": "tsc --noEmit"
141
152
  }
142
- }
153
+ }