@publish.os/cli 0.0.1-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/README.md +13 -0
  2. package/dist/assets/nextjs/defaults/app/globals.css +6 -0
  3. package/dist/assets/nextjs/defaults/app/providers.tsx +1 -0
  4. package/dist/assets/nextjs/defaults/group/layout.tsx +13 -0
  5. package/dist/assets/nextjs/defaults/group/leaf.tsx +29 -0
  6. package/dist/assets/nextjs/defaults/group/page.tsx +50 -0
  7. package/dist/assets/nextjs/defaults/project/next.config.mjs +49 -0
  8. package/dist/assets/nextjs/defaults/project/package.json +10 -0
  9. package/dist/assets/nextjs/defaults/project/postcss.config.mjs +5 -0
  10. package/dist/assets/nextjs/defaults/project/tsconfig.json +32 -0
  11. package/dist/assets/nextjs/defaults/root/css/radius.css +34 -0
  12. package/dist/assets/nextjs/defaults/root/css/scaling.css +50 -0
  13. package/dist/assets/nextjs/defaults/root/css/typography.css +487 -0
  14. package/dist/assets/nextjs/defaults/root/css/zindex.css +29 -0
  15. package/dist/assets/nextjs/defaults/root/globals.css +122 -0
  16. package/dist/assets/nextjs/defaults/root/layout.tsx +15 -0
  17. package/dist/assets/nextjs/defaults/root/page.tsx +66 -0
  18. package/dist/assets/nextjs/defaults/root/theme.css +248 -0
  19. package/dist/assets/nextjs/defaults/source/_internal/logger.ts +20 -0
  20. package/dist/assets/nextjs/shims/global-layout.tsx +28 -0
  21. package/dist/assets/nextjs/shims/group-layout.tsx +7 -0
  22. package/dist/assets/nextjs/shims/group-page.tsx +12 -0
  23. package/dist/assets/nextjs/shims/leaf-page.tsx +13 -0
  24. package/dist/assets/nextjs/shims/metadata-route.tmpl +4 -0
  25. package/dist/assets/nextjs/shims/root-page.tsx +12 -0
  26. package/dist/publish.os.d.mts +1 -0
  27. package/dist/publish.os.mjs +10133 -0
  28. package/package.json +24 -0
@@ -0,0 +1,487 @@
1
+ @theme inline {
2
+ --color-typography-body: var(--typography-body);
3
+ --color-typography-headings: var(--typography-headings);
4
+ --color-typography-lead: var(--typography-lead);
5
+ --color-typography-links: var(--typography-links);
6
+ --color-typography-bold: var(--typography-bold);
7
+ --color-typography-counters: var(--typography-counters);
8
+ --color-typography-bullets: var(--typography-bullets);
9
+ --color-typography-hr: var(--typography-hr);
10
+ --color-typography-quotes: var(--typography-quotes);
11
+ --color-typography-quote-borders: var(--typography-quote-borders);
12
+ --color-typography-captions: var(--typography-captions);
13
+ --color-typography-code: var(--typography-code);
14
+ --color-typography-variable: var(--typography-variable);
15
+ --color-typography-th-borders: var(--typography-th-borders);
16
+ --color-typography-td-borders: var(--typography-td-borders);
17
+ --color-typography-pre-code: var(--typography-pre-code);
18
+ --color-typography-pre-bg: var(--typography-pre-bg);
19
+ --color-typography-pre-border: var(--typography-pre-border);
20
+ }
21
+
22
+ @layer components {
23
+ .markdown-prose {
24
+ max-width: 72ch;
25
+ color: var(--typography-body);
26
+ font-size: calc(
27
+ var(--typography-base-size) *
28
+ var(--typography-size-factor, 1)
29
+ );
30
+ line-height: var(--typography-line-height);
31
+
32
+ & :where(p):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
33
+ margin-block: calc(0.375rem * var(--typography-spacing-factor, 1));
34
+ color: var(--typography-body);
35
+ }
36
+
37
+ &
38
+ :where(.lead):not(.not-markdown-prose):not(
39
+ :where(.not-markdown-prose *)
40
+ ) {
41
+ margin-block: calc(1.5em * var(--typography-spacing-factor, 1));
42
+ color: var(--typography-lead);
43
+ font-size: 1.25em;
44
+ line-height: 1.6;
45
+ }
46
+
47
+ & :where(a):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
48
+ color: var(--typography-links);
49
+ font-weight: 500;
50
+ overflow-wrap: break-word;
51
+ text-decoration: underline;
52
+ text-underline-offset: 0.2em;
53
+ word-break: break-word;
54
+ }
55
+
56
+ &
57
+ :where(strong):not(.not-markdown-prose):not(
58
+ :where(.not-markdown-prose *)
59
+ ) {
60
+ color: var(--typography-bold);
61
+ font-weight: 600;
62
+ }
63
+
64
+ & :where(del):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
65
+ color: var(--typography-captions);
66
+ }
67
+
68
+ &
69
+ :where(a strong, blockquote strong, thead th strong):not(
70
+ .not-markdown-prose
71
+ ):not(:where(.not-markdown-prose *)) {
72
+ color: inherit;
73
+ }
74
+
75
+ & :where(h1):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
76
+ margin-block: calc(1.5em * var(--typography-spacing-factor, 1))
77
+ calc(0.375rem * var(--typography-spacing-factor, 1));
78
+ color: var(--typography-headings);
79
+ font-size: calc(2.25rem * var(--typography-size-factor, 1));
80
+ font-weight: 600;
81
+ line-height: 1.111;
82
+ }
83
+
84
+ & :where(h2):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
85
+ margin-block: calc(1.25em * var(--typography-spacing-factor, 1))
86
+ calc(0.375rem * var(--typography-spacing-factor, 1));
87
+ color: var(--typography-headings);
88
+ font-size: calc(1.5rem * var(--typography-size-factor, 1));
89
+ font-weight: 600;
90
+ line-height: 1.333;
91
+ }
92
+
93
+ & :where(h3):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
94
+ margin-block: calc(1em * var(--typography-spacing-factor, 1))
95
+ calc(0.375rem * var(--typography-spacing-factor, 1));
96
+ color: var(--typography-headings);
97
+ font-size: calc(1.25rem * var(--typography-size-factor, 1));
98
+ font-weight: 600;
99
+ line-height: 1.45;
100
+ }
101
+
102
+ & :where(h4):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
103
+ margin-block: calc(0.875em * var(--typography-spacing-factor, 1))
104
+ calc(0.375rem * var(--typography-spacing-factor, 1));
105
+ color: var(--typography-headings);
106
+ font-size: calc(1rem * var(--typography-size-factor, 1));
107
+ font-weight: 600;
108
+ line-height: 1.5;
109
+ }
110
+
111
+ &
112
+ :where(h5, h6):not(.not-markdown-prose):not(
113
+ :where(.not-markdown-prose *)
114
+ ) {
115
+ margin-block: calc(0.875em * var(--typography-spacing-factor, 1))
116
+ calc(0.375rem * var(--typography-spacing-factor, 1));
117
+ color: var(--typography-headings);
118
+ font-size: calc(0.875rem * var(--typography-size-factor, 1));
119
+ font-weight: 600;
120
+ line-height: 1.5;
121
+ }
122
+
123
+ &
124
+ :where(h1, h2, h3, h4, h5, h6)
125
+ strong:not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
126
+ color: inherit;
127
+ font-weight: 700;
128
+ }
129
+
130
+ &
131
+ :where(ul, ol):not(.not-markdown-prose):not(
132
+ :where(.not-markdown-prose *)
133
+ ) {
134
+ margin-block: calc(0.375rem * var(--typography-spacing-factor, 1));
135
+ padding-inline-start: calc(1.625em * var(--typography-spacing-factor, 1));
136
+ color: var(--typography-body);
137
+ }
138
+
139
+ & :where(ul):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
140
+ list-style-type: disc;
141
+ }
142
+
143
+ & :where(ol):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
144
+ list-style-type: decimal;
145
+ }
146
+
147
+ &
148
+ :where(ol[type="A"]):not(.not-markdown-prose):not(
149
+ :where(.not-markdown-prose *)
150
+ ) {
151
+ list-style-type: upper-alpha;
152
+ }
153
+
154
+ &
155
+ :where(ol[type="a"]):not(.not-markdown-prose):not(
156
+ :where(.not-markdown-prose *)
157
+ ) {
158
+ list-style-type: lower-alpha;
159
+ }
160
+
161
+ &
162
+ :where(ol[type="I"]):not(.not-markdown-prose):not(
163
+ :where(.not-markdown-prose *)
164
+ ) {
165
+ list-style-type: upper-roman;
166
+ }
167
+
168
+ &
169
+ :where(ol[type="i"]):not(.not-markdown-prose):not(
170
+ :where(.not-markdown-prose *)
171
+ ) {
172
+ list-style-type: lower-roman;
173
+ }
174
+
175
+ & :where(li):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
176
+ margin-block: calc(0.5em * var(--typography-spacing-factor, 1));
177
+ }
178
+
179
+ &
180
+ :where(ol > li, ul > li):not(.not-markdown-prose):not(
181
+ :where(.not-markdown-prose *)
182
+ ) {
183
+ padding-inline-start: calc(0.375em * var(--typography-spacing-factor, 1));
184
+ }
185
+
186
+ &
187
+ :where(li > input[type="checkbox"]):not(.not-markdown-prose):not(
188
+ :where(.not-markdown-prose *)
189
+ ) {
190
+ margin-inline-end: calc(0.5em * var(--typography-spacing-factor, 1));
191
+ vertical-align: middle;
192
+ }
193
+
194
+ &
195
+ :where(ol > li):not(.not-markdown-prose):not(
196
+ :where(.not-markdown-prose *)
197
+ )::marker {
198
+ color: var(--typography-counters);
199
+ font-weight: 400;
200
+ }
201
+
202
+ &
203
+ :where(ul > li):not(.not-markdown-prose):not(
204
+ :where(.not-markdown-prose *)
205
+ )::marker {
206
+ color: var(--typography-bullets);
207
+ }
208
+
209
+ &
210
+ :where(ul ul, ul ol, ol ul, ol ol):not(.not-markdown-prose):not(
211
+ :where(.not-markdown-prose *)
212
+ ) {
213
+ margin-block: calc(0.75em * var(--typography-spacing-factor, 1));
214
+ }
215
+
216
+ & > ul > li p:not(.not-markdown-prose):not(:where(.not-markdown-prose *)),
217
+ & > ol > li p:not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
218
+ margin-block: calc(0.75em * var(--typography-spacing-factor, 1));
219
+ }
220
+
221
+ &
222
+ > ul
223
+ > li
224
+ > p:first-child:not(.not-markdown-prose):not(
225
+ :where(.not-markdown-prose *)
226
+ ),
227
+ &
228
+ > ol
229
+ > li
230
+ > p:first-child:not(.not-markdown-prose):not(
231
+ :where(.not-markdown-prose *)
232
+ ) {
233
+ margin-top: calc(1.25em * var(--typography-spacing-factor, 1));
234
+ }
235
+
236
+ &
237
+ > ul
238
+ > li
239
+ > p:last-child:not(.not-markdown-prose):not(
240
+ :where(.not-markdown-prose *)
241
+ ),
242
+ &
243
+ > ol
244
+ > li
245
+ > p:last-child:not(.not-markdown-prose):not(
246
+ :where(.not-markdown-prose *)
247
+ ) {
248
+ margin-bottom: calc(1.25em * var(--typography-spacing-factor, 1));
249
+ }
250
+
251
+ & :where(dl):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
252
+ margin-block: calc(1.25em * var(--typography-spacing-factor, 1));
253
+ }
254
+
255
+ & :where(dt):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
256
+ margin-top: calc(1.25em * var(--typography-spacing-factor, 1));
257
+ color: var(--typography-headings);
258
+ font-weight: 600;
259
+ }
260
+
261
+ & :where(dd):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
262
+ margin-top: calc(0.5em * var(--typography-spacing-factor, 1));
263
+ padding-inline-start: calc(1.625em * var(--typography-spacing-factor, 1));
264
+ }
265
+
266
+ & :where(code):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
267
+ border: 1px solid var(--typography-pre-border);
268
+ border-radius: var(--radius-kbd);
269
+ background-color: var(--typography-pre-bg);
270
+ color: var(--typography-variable);
271
+ font-family: var(--font-mono);
272
+ font-size: 0.85em;
273
+ font-weight: 600;
274
+ line-height: 1;
275
+ padding: 0.1875rem 0.3125rem;
276
+ }
277
+
278
+ & :where(code):not(:where(pre code))::before,
279
+ & :where(code):not(:where(pre code))::after {
280
+ content: none;
281
+ }
282
+
283
+ &
284
+ :where(
285
+ a code,
286
+ h1 code,
287
+ h2 code,
288
+ h3 code,
289
+ h4 code,
290
+ h5 code,
291
+ h6 code,
292
+ blockquote code,
293
+ thead th code
294
+ ):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
295
+ color: inherit;
296
+ }
297
+
298
+ & :where(pre):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
299
+ margin-block: calc(1.714em * var(--typography-spacing-factor, 1));
300
+ border: 1px solid var(--typography-pre-border);
301
+ border-radius: var(--radius-codeblock);
302
+ background-color: var(--typography-pre-bg);
303
+ color: var(--typography-pre-code);
304
+ font-size: 0.875em;
305
+ font-weight: 400;
306
+ line-height: 1.714;
307
+ overflow-x: auto;
308
+ padding: calc(0.857em * var(--typography-spacing-factor, 1))
309
+ calc(1.143em * var(--typography-spacing-factor, 1));
310
+ }
311
+
312
+ &
313
+ :where(pre)
314
+ :where(code):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
315
+ border: 0;
316
+ border-radius: 0;
317
+ background-color: transparent;
318
+ color: inherit;
319
+ font: inherit;
320
+ padding: 0;
321
+ }
322
+
323
+ & :where(pre) :where(code)::before,
324
+ & :where(pre) :where(code)::after {
325
+ content: none;
326
+ }
327
+
328
+ & :where(kbd):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
329
+ border: 1px solid var(--typography-pre-border);
330
+ border-radius: var(--radius-kbd);
331
+ background-color: var(--typography-pre-bg);
332
+ color: var(--typography-code);
333
+ font-family: inherit;
334
+ font-size: 0.875em;
335
+ font-weight: 500;
336
+ line-height: 1;
337
+ padding: 0.1875rem 0.375rem;
338
+ }
339
+
340
+ &
341
+ :where(blockquote):not(.not-markdown-prose):not(
342
+ :where(.not-markdown-prose *)
343
+ ) {
344
+ margin-block: calc(0.375rem * var(--typography-spacing-factor, 1));
345
+ border-inline-start: 0.25rem solid var(--typography-quote-borders);
346
+ color: var(--typography-quotes);
347
+ font-style: italic;
348
+ font-weight: 500;
349
+ padding-inline-start: calc(1.25em * var(--typography-spacing-factor, 1));
350
+ quotes: "\201C" "\201D" "\2018" "\2019";
351
+ }
352
+
353
+ &
354
+ :where(blockquote p:first-of-type):not(.not-markdown-prose):not(
355
+ :where(.not-markdown-prose *)
356
+ )::before {
357
+ content: open-quote;
358
+ }
359
+
360
+ &
361
+ :where(blockquote p:last-of-type):not(.not-markdown-prose):not(
362
+ :where(.not-markdown-prose *)
363
+ )::after {
364
+ content: close-quote;
365
+ }
366
+
367
+ & :where(hr):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
368
+ height: 1px;
369
+ margin-block: calc(1.25em * var(--typography-spacing-factor, 1));
370
+ border: 0;
371
+ background-color: var(--typography-hr);
372
+ }
373
+
374
+ &
375
+ :where(table):not(.not-markdown-prose):not(
376
+ :where(.not-markdown-prose *)
377
+ ) {
378
+ width: 100%;
379
+ margin-block: calc(2em * var(--typography-spacing-factor, 1));
380
+ color: var(--typography-body);
381
+ font-size: 0.875em;
382
+ line-height: 1.714;
383
+ table-layout: auto;
384
+ text-align: left;
385
+ }
386
+
387
+ &
388
+ :where(thead):not(.not-markdown-prose):not(
389
+ :where(.not-markdown-prose *)
390
+ ) {
391
+ border-bottom: 1px solid var(--typography-th-borders);
392
+ }
393
+
394
+ &
395
+ :where(tbody tr):not(.not-markdown-prose):not(
396
+ :where(.not-markdown-prose *)
397
+ ) {
398
+ border-bottom: 1px solid var(--typography-td-borders);
399
+ }
400
+
401
+ &
402
+ :where(tbody tr:last-child):not(.not-markdown-prose):not(
403
+ :where(.not-markdown-prose *)
404
+ ) {
405
+ border-bottom: 0;
406
+ }
407
+
408
+ & :where(th):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
409
+ border: 1px solid var(--typography-th-borders);
410
+ color: var(--typography-headings);
411
+ font-weight: 600;
412
+ padding: calc(0.571em * var(--typography-spacing-factor, 1));
413
+ vertical-align: bottom;
414
+ }
415
+
416
+ & :where(td):not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
417
+ border: 1px solid var(--typography-td-borders);
418
+ padding: calc(0.571em * var(--typography-spacing-factor, 1));
419
+ vertical-align: baseline;
420
+ }
421
+
422
+ &
423
+ :where(img, picture, video):not(.not-markdown-prose):not(
424
+ :where(.not-markdown-prose *)
425
+ ) {
426
+ margin-block: calc(2em * var(--typography-spacing-factor, 1));
427
+ }
428
+
429
+ &
430
+ :where(picture):not(.not-markdown-prose):not(
431
+ :where(.not-markdown-prose *)
432
+ ) {
433
+ display: block;
434
+ }
435
+
436
+ &
437
+ :where(picture > img):not(.not-markdown-prose):not(
438
+ :where(.not-markdown-prose *)
439
+ ) {
440
+ margin-block: 0;
441
+ }
442
+
443
+ &
444
+ :where(figure):not(.not-markdown-prose):not(
445
+ :where(.not-markdown-prose *)
446
+ ) {
447
+ margin-block: calc(2em * var(--typography-spacing-factor, 1));
448
+ }
449
+
450
+ &
451
+ :where(figure > *):not(.not-markdown-prose):not(
452
+ :where(.not-markdown-prose *)
453
+ ) {
454
+ margin-block: 0;
455
+ }
456
+
457
+ &
458
+ :where(figcaption):not(.not-markdown-prose):not(
459
+ :where(.not-markdown-prose *)
460
+ ) {
461
+ margin-top: calc(0.857em * var(--typography-spacing-factor, 1));
462
+ color: var(--typography-captions);
463
+ font-size: 0.875em;
464
+ line-height: 1.43;
465
+ }
466
+
467
+ &
468
+ > :first-child:not(.not-markdown-prose):not(
469
+ :where(.not-markdown-prose *)
470
+ ) {
471
+ margin-top: 0;
472
+ }
473
+
474
+ &
475
+ > :last-child:not(.not-markdown-prose):not(
476
+ :where(.not-markdown-prose *)
477
+ ) {
478
+ margin-bottom: 0;
479
+ }
480
+
481
+ &
482
+ :where(hr, h2, h3, h4, h5, h6)
483
+ + *:not(.not-markdown-prose):not(:where(.not-markdown-prose *)) {
484
+ margin-top: 0;
485
+ }
486
+ }
487
+ }
@@ -0,0 +1,29 @@
1
+ @layer utilities {
2
+ .z-content {
3
+ z-index: var(--z-content);
4
+ }
5
+
6
+ .z-nav {
7
+ z-index: var(--z-nav);
8
+ }
9
+
10
+ .z-overlay {
11
+ z-index: var(--z-overlay);
12
+ }
13
+
14
+ .z-modal {
15
+ z-index: var(--z-modal);
16
+ }
17
+
18
+ .z-search {
19
+ z-index: var(--z-search);
20
+ }
21
+
22
+ .z-toast {
23
+ z-index: var(--z-toast);
24
+ }
25
+
26
+ .z-progress {
27
+ z-index: var(--z-progress);
28
+ }
29
+ }
@@ -0,0 +1,122 @@
1
+ /*
2
+ * publishOS Tailwind defaults.
3
+ *
4
+ * theme.css defines runtime CSS variables. This file exposes those variables to
5
+ * Tailwind utilities. Tenants can add more @theme mappings in globals.css using
6
+ * the same pattern.
7
+ */
8
+
9
+ @theme inline {
10
+ --font-sans: var(--font-sans);
11
+ --font-mono: var(--font-mono);
12
+
13
+ --color-foreground-1: var(--foreground-1);
14
+ --color-foreground-2: var(--foreground-2);
15
+ --color-foreground-3: var(--foreground-3);
16
+ --color-foreground-4: var(--foreground-4);
17
+
18
+ --color-surface-background: var(--surface-background);
19
+ --color-surface-1: var(--surface-1);
20
+ --color-surface-2: var(--surface-2);
21
+ --color-surface-3: var(--surface-3);
22
+ --color-surface-4: var(--surface-4);
23
+ --color-surface-hover: var(--surface-hover);
24
+ --color-surface-active: var(--surface-active);
25
+ --color-surface-overlay: var(--surface-overlay);
26
+ --color-surface-menu: var(--surface-menu);
27
+ --color-surface-menu-foreground: var(--surface-menu-foreground);
28
+ --color-surface-menu-hover: var(--surface-menu-hover);
29
+ --color-surface-menu-hover-foreground: var(--surface-menu-hover-foreground);
30
+ --color-surface-menu-active: var(--surface-menu-active);
31
+ --color-surface-menu-active-foreground: var(--surface-menu-active-foreground);
32
+ --color-surface-menu-disabled: var(--surface-menu-disabled);
33
+ --color-surface-menu-disabled-foreground: var(
34
+ --surface-menu-disabled-foreground
35
+ );
36
+
37
+ --color-accent-1: var(--accent-1);
38
+ --color-accent-2: var(--accent-2);
39
+ --color-accent-3: var(--accent-3);
40
+ --color-accent-4: var(--accent-4);
41
+ --color-accent-foreground: var(--accent-foreground);
42
+
43
+ --color-stroke-1: var(--stroke-1);
44
+ --color-stroke-2: var(--stroke-2);
45
+ --color-stroke-3: var(--stroke-3);
46
+ --color-stroke-4: var(--stroke-4);
47
+
48
+ --color-focus-ring: var(--focus-ring);
49
+
50
+ --color-selection-background: var(--selection-background);
51
+ --color-selection-foreground: var(--selection-foreground);
52
+
53
+ --color-progress-bar-fill: var(--progress-bar-fill);
54
+ --color-progress-bar-background: var(--progress-bar-background);
55
+
56
+ /*
57
+ * Radius utilities.
58
+ * These are calculated based on --theme-radius (default "md").
59
+ * Use rounded-card, rounded-button, rounded-popup, etc.
60
+ */
61
+
62
+ --radius-button: var(--radius-button);
63
+ --radius-kbd: var(--radius-kbd);
64
+ --radius-input: var(--radius-input);
65
+ --radius-card: var(--radius-card);
66
+ --radius-codeblock: var(--radius-codeblock);
67
+ --radius-badge: var(--radius-badge);
68
+ --radius-avatar: var(--radius-avatar);
69
+ --radius-panel: var(--radius-panel);
70
+ --radius-popup: var(--radius-popup);
71
+ --radius-checkbox: var(--radius-checkbox);
72
+ --radius-switch-thumb: var(--radius-switch-thumb);
73
+ --radius-switch-track: var(--radius-switch-track);
74
+ --radius-scrollbar-thumb: var(--radius-scrollbar-thumb);
75
+ --radius-link-underline: var(--radius-link-underline);
76
+
77
+ --z-index-content: var(--z-content);
78
+ --z-index-nav: var(--z-nav);
79
+ --z-index-overlay: var(--z-overlay);
80
+ --z-index-modal: var(--z-modal);
81
+ --z-index-search: var(--z-search);
82
+ --z-index-toast: var(--z-toast);
83
+ --z-index-progress: var(--z-progress);
84
+ }
85
+
86
+ @layer base {
87
+ *,
88
+ *::before,
89
+ *::after {
90
+ box-sizing: border-box;
91
+ }
92
+
93
+ html {
94
+ min-height: 100%;
95
+ font-family: var(--font-sans);
96
+ -webkit-font-smoothing: antialiased;
97
+ }
98
+
99
+ body {
100
+ min-height: 100%;
101
+ margin: 0;
102
+ background-color: var(--surface-background);
103
+ color: var(--foreground-2);
104
+ }
105
+
106
+ ::selection {
107
+ background-color: var(--selection-background);
108
+ color: var(--selection-foreground);
109
+ }
110
+
111
+ :focus-visible {
112
+ outline: 2px solid var(--focus-ring);
113
+ outline-offset: 2px;
114
+ }
115
+
116
+ code,
117
+ kbd,
118
+ pre,
119
+ samp {
120
+ font-family: var(--font-mono);
121
+ }
122
+ }
@@ -0,0 +1,15 @@
1
+ import { SiteHeader } from "@publish.os/nextjs/components/site-header";
2
+ import type { RootLayoutProps } from "@publish.os/nextjs/types";
3
+ import { log } from "@source/_internal/logger";
4
+
5
+ export default function DefaultRootLayout(props: RootLayoutProps) {
6
+ log.debug("[default:root-layout]", props);
7
+ const { children, site, tree } = props;
8
+
9
+ return (
10
+ <div className="min-h-screen bg-surface-background">
11
+ <SiteHeader site={site} tree={tree} />
12
+ <main className="w-full">{children}</main>
13
+ </div>
14
+ );
15
+ }