@moloodev/ui 0.0.0-stage → 0.2.0

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 (93) hide show
  1. package/package.json +139 -3
  2. package/registry/components.ts +135 -0
  3. package/registry/fonts.css +81 -0
  4. package/registry/suit-OFL.txt +94 -0
  5. package/registry/wanted-sans-OFL.txt +93 -0
  6. package/src/components/ui/accordion.tsx +74 -0
  7. package/src/components/ui/alert-dialog.tsx +187 -0
  8. package/src/components/ui/alert.tsx +83 -0
  9. package/src/components/ui/aspect-ratio.tsx +22 -0
  10. package/src/components/ui/attachment.tsx +207 -0
  11. package/src/components/ui/avatar.tsx +109 -0
  12. package/src/components/ui/badge.tsx +54 -0
  13. package/src/components/ui/breadcrumb.tsx +126 -0
  14. package/src/components/ui/bubble.tsx +128 -0
  15. package/src/components/ui/button-group.tsx +103 -0
  16. package/src/components/ui/button.tsx +68 -0
  17. package/src/components/ui/calendar.tsx +222 -0
  18. package/src/components/ui/card.tsx +103 -0
  19. package/src/components/ui/carousel.tsx +242 -0
  20. package/src/components/ui/chart.tsx +398 -0
  21. package/src/components/ui/checkbox.tsx +28 -0
  22. package/src/components/ui/collapsible.tsx +40 -0
  23. package/src/components/ui/combobox.tsx +299 -0
  24. package/src/components/ui/command.tsx +218 -0
  25. package/src/components/ui/context-menu.tsx +271 -0
  26. package/src/components/ui/data-table.tsx +919 -0
  27. package/src/components/ui/date-picker.tsx +65 -0
  28. package/src/components/ui/dialog.tsx +224 -0
  29. package/src/components/ui/drawer.tsx +231 -0
  30. package/src/components/ui/dropdown-menu.tsx +268 -0
  31. package/src/components/ui/dropzone.tsx +186 -0
  32. package/src/components/ui/empty.tsx +101 -0
  33. package/src/components/ui/field.tsx +238 -0
  34. package/src/components/ui/form.tsx +83 -0
  35. package/src/components/ui/highlighted-source.tsx +200 -0
  36. package/src/components/ui/hover-card.tsx +51 -0
  37. package/src/components/ui/image-field.tsx +796 -0
  38. package/src/components/ui/input-group.tsx +149 -0
  39. package/src/components/ui/input-otp.tsx +86 -0
  40. package/src/components/ui/input-step.ts +19 -0
  41. package/src/components/ui/input.tsx +100 -0
  42. package/src/components/ui/item.tsx +201 -0
  43. package/src/components/ui/kbd.tsx +91 -0
  44. package/src/components/ui/kind-icon-glob.ts +24 -0
  45. package/src/components/ui/kind-icon-load.ts +52 -0
  46. package/src/components/ui/kind-icon-static.ts +46 -0
  47. package/src/components/ui/kind-icon.tsx +84 -0
  48. package/src/components/ui/kind-mark.tsx +65 -0
  49. package/src/components/ui/label.tsx +29 -0
  50. package/src/components/ui/marker.tsx +71 -0
  51. package/src/components/ui/menubar.tsx +277 -0
  52. package/src/components/ui/message-scroller.tsx +137 -0
  53. package/src/components/ui/message.tsx +92 -0
  54. package/src/components/ui/moloo-logo.tsx +45 -0
  55. package/src/components/ui/native-select.tsx +61 -0
  56. package/src/components/ui/navigation-menu.tsx +168 -0
  57. package/src/components/ui/outline-list.tsx +73 -0
  58. package/src/components/ui/pagination.tsx +130 -0
  59. package/src/components/ui/panel.tsx +108 -0
  60. package/src/components/ui/popover.tsx +90 -0
  61. package/src/components/ui/progress.tsx +117 -0
  62. package/src/components/ui/radio-group.tsx +38 -0
  63. package/src/components/ui/resizable.tsx +52 -0
  64. package/src/components/ui/scroll-area.tsx +54 -0
  65. package/src/components/ui/select.tsx +205 -0
  66. package/src/components/ui/separator.tsx +25 -0
  67. package/src/components/ui/sheet.tsx +140 -0
  68. package/src/components/ui/sidebar.tsx +746 -0
  69. package/src/components/ui/skeleton.tsx +13 -0
  70. package/src/components/ui/slider.tsx +52 -0
  71. package/src/components/ui/spinner.tsx +18 -0
  72. package/src/components/ui/switch.tsx +32 -0
  73. package/src/components/ui/table.tsx +116 -0
  74. package/src/components/ui/tabs.tsx +83 -0
  75. package/src/components/ui/tag-list-input.tsx +194 -0
  76. package/src/components/ui/textarea.tsx +18 -0
  77. package/src/components/ui/timeline.tsx +265 -0
  78. package/src/components/ui/toast.tsx +237 -0
  79. package/src/components/ui/toggle-group.tsx +90 -0
  80. package/src/components/ui/toggle.tsx +45 -0
  81. package/src/components/ui/tooltip.tsx +66 -0
  82. package/src/css.d.ts +1 -0
  83. package/src/hooks/use-clipboard.ts +82 -0
  84. package/src/hooks/use-mobile.ts +21 -0
  85. package/src/index.ts +106 -0
  86. package/src/kind-icon.ts +4 -0
  87. package/src/lib/format-relative-time.ts +41 -0
  88. package/src/lib/list-selection.ts +61 -0
  89. package/src/lib/utils.ts +6 -0
  90. package/src/moloo.css +360 -0
  91. package/src/styles.css +36 -0
  92. package/src/typeset.css +518 -0
  93. package/README.md +0 -3
package/src/styles.css ADDED
@@ -0,0 +1,36 @@
1
+ /* Host-level style entry for @moloodev/ui. Product chrome CSS stays in @moloodev/app-shell. */
2
+
3
+ /* Theme native scrollbars to match ScrollArea thumb (bg-border / w-2.5).
4
+ Stay in @layer base so utilities (no-scrollbar) can override. */
5
+ @layer base {
6
+ :where(*) {
7
+ scrollbar-width: thin;
8
+ scrollbar-color: var(--border) transparent;
9
+ }
10
+
11
+ :where(*)::-webkit-scrollbar {
12
+ width: 10px;
13
+ height: 10px;
14
+ }
15
+
16
+ :where(*)::-webkit-scrollbar-track {
17
+ background: transparent;
18
+ }
19
+
20
+ :where(*)::-webkit-scrollbar-thumb {
21
+ background-color: var(--border);
22
+ border-radius: 0.375rem;
23
+ border: 2px solid transparent;
24
+ background-clip: content-box;
25
+ }
26
+ }
27
+
28
+ @utility no-scrollbar {
29
+ -ms-overflow-style: none;
30
+ scrollbar-width: none;
31
+ &::-webkit-scrollbar {
32
+ display: none;
33
+ width: 0;
34
+ height: 0;
35
+ }
36
+ }
@@ -0,0 +1,518 @@
1
+ /*
2
+ * shadcn/typeset
3
+ * https://ui.shadcn.com/docs/typeset.
4
+ */
5
+
6
+ @layer components {
7
+ .typeset {
8
+ --typeset-font-body: inherit;
9
+ --typeset-font-heading: var(--font-heading);
10
+ --typeset-font-mono: var(--font-mono);
11
+ --typeset-size: 1em;
12
+ --typeset-leading: 1.75;
13
+ --typeset-flow: 1.25em;
14
+ }
15
+ }
16
+
17
+ @layer components {
18
+ .typeset {
19
+ font-family: var(--typeset-font-body);
20
+ font-size: calc(var(--typeset-size) * 1.125);
21
+ line-height: var(--typeset-leading);
22
+ color: var(--color-foreground, currentColor);
23
+ overflow-wrap: break-word;
24
+ margin-trim: block-start;
25
+
26
+ @media (min-width: 48rem), print {
27
+ font-size: var(--typeset-size);
28
+ }
29
+
30
+ --typeset-muted: var(
31
+ --color-muted-foreground,
32
+ color-mix(in oklab, currentColor 60%, transparent)
33
+ );
34
+ --typeset-rule: var(
35
+ --color-border,
36
+ color-mix(in oklab, currentColor 20%, transparent)
37
+ );
38
+ }
39
+
40
+ .typeset
41
+ *:not(
42
+ :where(
43
+ .not-typeset,
44
+ [data-not-typeset],
45
+ .not-typeset *,
46
+ [data-not-typeset] *
47
+ )
48
+ ) {
49
+ /* Paragraphs. */
50
+ &:where(p) {
51
+ margin-block-start: var(--typeset-flow);
52
+ margin-block-end: 0;
53
+ }
54
+
55
+ /* Headings. */
56
+ &:where(h1, h2, h3, h4, h5, h6) {
57
+ color: var(--color-foreground, currentColor);
58
+ font-family: var(--typeset-font-heading);
59
+ font-weight: 600;
60
+ margin-block-end: 0;
61
+ }
62
+ &:where(h1) {
63
+ font-size: 1.75em;
64
+ line-height: 1.3;
65
+ margin-block-start: var(--typeset-flow);
66
+ }
67
+ &:where(h2) {
68
+ font-size: 1.25em;
69
+ line-height: 1.4;
70
+ margin-block-start: calc(var(--typeset-flow) * 1.4);
71
+ }
72
+ &:where(h3) {
73
+ font-size: 1.125em;
74
+ line-height: 1.45;
75
+ margin-block-start: var(--typeset-flow);
76
+ }
77
+ &:where(h4) {
78
+ font-size: 1em;
79
+ line-height: 1.5;
80
+ margin-block-start: var(--typeset-flow);
81
+ }
82
+ &:where(h5) {
83
+ font-size: 0.875em;
84
+ line-height: 1.5;
85
+ font-weight: 500;
86
+ color: var(--typeset-muted);
87
+ margin-block-start: calc(var(--typeset-flow) / 0.875);
88
+ }
89
+ &:where(h6) {
90
+ font-size: 0.8125em;
91
+ line-height: 1.5;
92
+ font-weight: 500;
93
+ letter-spacing: 0.08em;
94
+ text-transform: uppercase;
95
+ color: var(--typeset-muted);
96
+ margin-block-start: calc(var(--typeset-flow) / 0.8125);
97
+ }
98
+ /* Anchors. */
99
+ &:where([id]) {
100
+ scroll-margin-block-start: var(--typeset-flow);
101
+ }
102
+
103
+ /* Headings own the space below them. */
104
+ &:where(h1 + *, h2 + *, h3 + *, h4 + *, h5 + *, h6 + *) {
105
+ margin-block-start: 1em;
106
+ }
107
+ &:where(:is(h1, h2, h3, h4) :is(code)) {
108
+ font-size: 0.9em;
109
+ }
110
+
111
+ /* Links. */
112
+ &:where(a) {
113
+ color: inherit;
114
+ font-weight: 500;
115
+ text-decoration-line: underline;
116
+ text-decoration-color: color-mix(in oklab, currentColor 30%, transparent);
117
+ }
118
+ &:where(a:hover) {
119
+ text-decoration-color: currentColor;
120
+ }
121
+ &:where(a:focus-visible) {
122
+ outline: 2px solid var(--color-ring, currentColor);
123
+ outline-offset: 2px;
124
+ border-radius: 0.125em;
125
+ }
126
+ &:where(:is(h1, h2, h3, h4, h5, h6) :is(a)) {
127
+ font-weight: inherit;
128
+ }
129
+
130
+ /* Inline semantics. */
131
+ &:where(strong, b) {
132
+ font-weight: 600;
133
+ }
134
+ &:where(:is(h1, h2, h3, h4) :is(strong, b)) {
135
+ font-weight: 600;
136
+ }
137
+ &:where(mark) {
138
+ background-color: color-mix(
139
+ in oklab,
140
+ oklch(0.86 0.17 95) 40%,
141
+ transparent
142
+ );
143
+ color: inherit;
144
+ padding: 0.05em 0.15em;
145
+ border-radius: 0.2em;
146
+ }
147
+ .dark &:where(mark) {
148
+ color: var(--color-foreground);
149
+ }
150
+ &:where(abbr[title]) {
151
+ text-decoration-line: underline;
152
+ text-decoration-style: dotted;
153
+ text-underline-offset: 0.2em;
154
+ cursor: help;
155
+ }
156
+ &:where(del, s) {
157
+ color: var(--typeset-muted);
158
+ text-decoration-line: line-through;
159
+ }
160
+ &:where(sup, sub) {
161
+ font-size: 0.75em;
162
+ line-height: 0;
163
+ position: relative;
164
+ vertical-align: baseline;
165
+ }
166
+ &:where(sup) {
167
+ top: -0.5em;
168
+ }
169
+ &:where(sub) {
170
+ bottom: -0.25em;
171
+ }
172
+ &:where(sup a) {
173
+ text-decoration-line: none;
174
+ font-weight: 500;
175
+ }
176
+
177
+ /* Lists. */
178
+ &:where(ul) {
179
+ list-style-type: disc;
180
+ }
181
+ &:where(ol) {
182
+ list-style-type: decimal;
183
+ }
184
+ &:where(ul ul) {
185
+ list-style-type: circle;
186
+ }
187
+ &:where(ul ul ul) {
188
+ list-style-type: square;
189
+ }
190
+ &:where(ol[type="a" i]) {
191
+ list-style-type: lower-alpha;
192
+ }
193
+ &:where(ol[type="i" i]) {
194
+ list-style-type: lower-roman;
195
+ }
196
+ &:where(ol[type="A" s]) {
197
+ list-style-type: upper-alpha;
198
+ }
199
+ &:where(ol[type="I" s]) {
200
+ list-style-type: upper-roman;
201
+ }
202
+ &:where(ul, ol) {
203
+ margin-block-start: var(--typeset-flow);
204
+ margin-block-end: 0;
205
+ padding-inline-start: 1.5em;
206
+ }
207
+ &:where(li) {
208
+ margin-block-start: 0.5em;
209
+ padding-inline-start: 0.4em;
210
+ }
211
+ &:where(li > p, li > ul, li > ol) {
212
+ margin-block-start: 0.5em;
213
+ }
214
+ &:where(ul > li)::marker {
215
+ color: var(--typeset-muted);
216
+ }
217
+ &:where(ol > li)::marker {
218
+ color: var(--typeset-muted);
219
+ }
220
+
221
+ /* GFM task lists. */
222
+ &:where(ul.contains-task-list) {
223
+ list-style-type: none;
224
+ padding-inline-start: 0.25em;
225
+ }
226
+ & :is(li.task-list-item > input[type="checkbox"]) {
227
+ appearance: none;
228
+ box-sizing: border-box;
229
+ display: inline-block;
230
+ width: 0.95em;
231
+ height: 0.95em;
232
+ margin-top: calc((1lh - 0.95em) / 2);
233
+ margin-bottom: 0;
234
+ margin-inline-end: 0.5em;
235
+ vertical-align: top;
236
+ font: inherit;
237
+ border: 2px solid var(--color-border, var(--typeset-rule));
238
+ border-radius: 0.2em;
239
+ background-color: var(--color-background, transparent);
240
+ background-position: center;
241
+ background-repeat: no-repeat;
242
+ background-size: 70% 70%;
243
+ opacity: 1;
244
+ }
245
+ & :is(li.task-list-item > input[type="checkbox"]:checked) {
246
+ border-color: var(--color-primary);
247
+ background-color: var(--color-primary);
248
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23f4f6f8' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round' d='M3.5 8.5 6.5 11.5 12.5 4.5'/%3E%3C/svg%3E");
249
+ }
250
+ :is(.dark) & :is(li.task-list-item > input[type="checkbox"]:checked) {
251
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23071215' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round' d='M3.5 8.5 6.5 11.5 12.5 4.5'/%3E%3C/svg%3E");
252
+ }
253
+
254
+ /* Disclosures. */
255
+ &:where(details) {
256
+ margin-block-start: var(--typeset-flow);
257
+ margin-block-end: 0;
258
+ }
259
+ &:where(summary) {
260
+ cursor: pointer;
261
+ font-weight: 500;
262
+ }
263
+ &:where(summary)::marker {
264
+ color: var(--typeset-muted);
265
+ }
266
+
267
+ /* Keyboard keys. */
268
+ &:where(kbd) {
269
+ font-family: inherit;
270
+ font-size: 0.85em;
271
+ font-weight: 500;
272
+ border: 1px solid var(--typeset-rule);
273
+ border-block-end-width: 2px;
274
+ border-radius: min(calc(var(--radius, 0.5em) * 0.6), 0.35em);
275
+ padding: 0.0625em 0.35em;
276
+ }
277
+
278
+ /* Definition lists. */
279
+ &:where(dl) {
280
+ margin-block-start: var(--typeset-flow);
281
+ margin-block-end: 0;
282
+ }
283
+ &:where(dt) {
284
+ font-weight: 500;
285
+ margin-block-start: 1em;
286
+ }
287
+ &:where(dt + dt) {
288
+ margin-block-start: 0.25em;
289
+ }
290
+ &:where(dd) {
291
+ margin-block-start: 0.25em;
292
+ margin-inline-start: 0;
293
+ padding-inline-start: 1em;
294
+ color: var(--typeset-muted);
295
+ }
296
+
297
+ /* Inline code. */
298
+ &:where(:not(pre) > code) {
299
+ background-color: var(
300
+ --color-muted,
301
+ color-mix(in oklab, currentColor 8%, transparent)
302
+ );
303
+ font-family: var(--typeset-font-mono);
304
+ font-size: 0.85em;
305
+ border-radius: min(calc(var(--radius, 0.5em) * 0.6), 0.35em);
306
+ padding: 0.125em 0.3em;
307
+ }
308
+
309
+ /* Code blocks. */
310
+ &:where(pre) {
311
+ background-color: var(
312
+ --color-muted,
313
+ color-mix(in oklab, currentColor 8%, transparent)
314
+ );
315
+ font-family: var(--typeset-font-mono);
316
+ font-size: 0.875em;
317
+ line-height: 1.5;
318
+ tab-size: 2;
319
+ direction: ltr;
320
+ border-radius: var(--radius, 0.5em);
321
+ padding: 0.75em 1em;
322
+ overflow-x: auto;
323
+ margin-block-start: calc(var(--typeset-flow) / 0.875);
324
+ margin-block-end: 0;
325
+ }
326
+ &:where(pre code) {
327
+ background-color: transparent;
328
+ font-family: inherit;
329
+ font-size: inherit;
330
+ padding: 0;
331
+ border-radius: 0;
332
+ }
333
+ .dark &:where(pre, :not(pre) > code) {
334
+ background-color: color-mix(in oklab, var(--foreground) 18%, var(--muted));
335
+ }
336
+
337
+ /* Blockquote. */
338
+ &:where(blockquote) {
339
+ border-inline-start: 2px solid var(--typeset-rule);
340
+ padding-inline-start: 1em;
341
+ margin-block-start: var(--typeset-flow);
342
+ margin-block-end: 0;
343
+ margin-inline: 0;
344
+ }
345
+
346
+ /* Dividers. */
347
+ &:where(hr) {
348
+ border: 0;
349
+ border-block-start: 1px solid var(--typeset-rule);
350
+ margin-block-start: calc(var(--typeset-flow) * 2.4);
351
+ margin-block-end: 0;
352
+ }
353
+ &:where(hr + h1, hr + h2, hr + h3, hr + h4) {
354
+ margin-block-start: var(--typeset-flow);
355
+ }
356
+
357
+ /* GFM footnotes. */
358
+ &:where(.footnotes, [data-footnotes]) {
359
+ margin-block-start: calc(var(--typeset-flow) * 2);
360
+ border-block-start: 1px solid var(--typeset-rule);
361
+ padding-block-start: var(--typeset-flow);
362
+ font-size: 0.875em;
363
+ color: var(--typeset-muted);
364
+ }
365
+
366
+ /* Math. */
367
+ &:where(math[display="block"]) {
368
+ margin-block-start: var(--typeset-flow);
369
+ margin-block-end: 0;
370
+ overflow-x: auto;
371
+ overflow-y: hidden;
372
+ padding-block: 0.25em;
373
+ }
374
+
375
+ /* Media. */
376
+ &:where(img, video) {
377
+ border-radius: var(--radius, 0.5em);
378
+ max-width: 100%;
379
+ height: auto;
380
+ margin-block-start: var(--typeset-flow);
381
+ margin-block-end: 0;
382
+ }
383
+ &:where(p img) {
384
+ margin-block-start: 0;
385
+ }
386
+ &:where(figure) {
387
+ margin-block-start: var(--typeset-flow);
388
+ margin-block-end: 0;
389
+ margin-inline: 0;
390
+ }
391
+ &:where(figcaption, caption) {
392
+ color: var(--typeset-muted);
393
+ font-size: 0.875em;
394
+ text-align: center;
395
+ margin-block-start: calc(0.75em / 0.875);
396
+ }
397
+ &:where(caption) {
398
+ caption-side: bottom;
399
+ }
400
+
401
+ /* Tables. Separators sit on cells, not tr:last-child: append-safe.
402
+ Bare tables stay real tables (keep their semantics) and wrap to fit. */
403
+ &:where(table) {
404
+ max-width: 100%;
405
+ font-size: 1em;
406
+ line-height: 1.5;
407
+ font-variant-numeric: tabular-nums;
408
+ border-collapse: separate;
409
+ border-spacing: 0;
410
+ border-block-end: 1px solid var(--typeset-rule);
411
+ margin-block-start: var(--typeset-flow);
412
+ margin-block-end: 0;
413
+ }
414
+
415
+ /* Horizontal scroll for any wide block. Wrap it and the wrapper owns the
416
+ flow margin. Tables shrink to fit, so widen the table to make it scroll
417
+ instead of compress. */
418
+ &:where(.typeset-scroll) {
419
+ overflow-x: auto;
420
+ margin-block-start: var(--typeset-flow);
421
+ }
422
+ &:where(.typeset-scroll > *) {
423
+ margin-block-start: 0;
424
+ }
425
+ &:where(.typeset-scroll table) {
426
+ width: max-content;
427
+ max-width: none;
428
+ }
429
+ &:where(thead th) {
430
+ font-weight: 500;
431
+ text-align: start;
432
+ white-space: nowrap;
433
+ padding: 0.65em 1em;
434
+ }
435
+ &:where(:is(tbody, tfoot) :is(td, th)) {
436
+ padding: 0.75em 1em;
437
+ text-align: start;
438
+ vertical-align: top;
439
+ border-block-start: 1px solid var(--typeset-rule);
440
+ }
441
+ &:where(tbody th, tfoot th) {
442
+ font-weight: 500;
443
+ }
444
+ &:where(th:first-child, td:first-child) {
445
+ padding-inline-start: 0;
446
+ }
447
+ &:where(th[align="center"], td[align="center"]) {
448
+ text-align: center;
449
+ }
450
+ &:where(th[align="right"], td[align="right"]) {
451
+ text-align: end;
452
+ }
453
+
454
+ /* Blocks inside list items keep the list's tighter rhythm. */
455
+ &:where(li > blockquote, li > table, li > figure) {
456
+ margin-block-start: 0.5em;
457
+ }
458
+ &:where(li > pre) {
459
+ margin-block-start: calc(0.5em / 0.875);
460
+ }
461
+
462
+ @media print {
463
+ &:where(pre, table, blockquote, figure) {
464
+ break-inside: avoid;
465
+ }
466
+ &:where(h1, h2, h3, h4) {
467
+ break-after: avoid;
468
+ }
469
+ }
470
+
471
+ /* Forced colors strips the code background, so give it a border. */
472
+ @media (forced-colors: active) {
473
+ &:where(:not(pre) > code) {
474
+ border: 1px solid;
475
+ }
476
+ }
477
+ }
478
+
479
+ /* First child adds no space above. Last so it wins ties. */
480
+ .typeset
481
+ > :where(:first-child):not(
482
+ :where(
483
+ .not-typeset,
484
+ [data-not-typeset],
485
+ .not-typeset *,
486
+ [data-not-typeset] *
487
+ )
488
+ ),
489
+ .typeset
490
+ > :where(:first-child)
491
+ > :where(:first-child):not(
492
+ :where(
493
+ .not-typeset,
494
+ [data-not-typeset],
495
+ .not-typeset *,
496
+ [data-not-typeset] *
497
+ )
498
+ ),
499
+ .typeset
500
+ :where(
501
+ li > :first-child,
502
+ blockquote > :first-child,
503
+ td > :first-child,
504
+ th > :first-child,
505
+ dd > :first-child,
506
+ figure > :first-child,
507
+ figure > picture > img
508
+ ):not(
509
+ :where(
510
+ .not-typeset,
511
+ [data-not-typeset],
512
+ .not-typeset *,
513
+ [data-not-typeset] *
514
+ )
515
+ ) {
516
+ margin-block-start: 0;
517
+ }
518
+ }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.