@charcuterie/ui 3.4.0 → 3.5.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 (63) hide show
  1. package/README.md +8 -0
  2. package/dist/markdownEditorCodeMirror/livePreview.d.ts.map +1 -1
  3. package/dist/markdownEditorCodeMirror/livePreview.js +346 -3
  4. package/dist/markdownEditorCodeMirror/livePreview.js.map +1 -1
  5. package/dist/markdownEditorCodeMirror/livePreviewRanges.d.ts +99 -1
  6. package/dist/markdownEditorCodeMirror/livePreviewRanges.d.ts.map +1 -1
  7. package/dist/markdownEditorCodeMirror/livePreviewRanges.js +370 -19
  8. package/dist/markdownEditorCodeMirror/livePreviewRanges.js.map +1 -1
  9. package/package.json +1 -1
  10. package/src/Accordion/Accordion.stories.tsx +1 -1
  11. package/src/AdaptiveGrid/AdaptiveGrid.stories.tsx +1 -1
  12. package/src/Alert/Alert.stories.tsx +1 -1
  13. package/src/Badge/Badge.stories.tsx +1 -1
  14. package/src/Board/Board.stories.tsx +1 -1
  15. package/src/Button/Button.stories.tsx +1 -1
  16. package/src/ButtonLink/ButtonLink.stories.tsx +1 -1
  17. package/src/Card/Card.stories.tsx +1 -1
  18. package/src/Checkbox/Checkbox.stories.tsx +1 -1
  19. package/src/ColorSchemeSwitcher/ColorSchemeSwitcher.stories.tsx +1 -1
  20. package/src/ColorSchemeToggle/ColorSchemeToggle.stories.tsx +1 -1
  21. package/src/Combobox/Combobox.stories.tsx +1 -1
  22. package/src/DataTable/DataTable.stories.tsx +1 -1
  23. package/src/DatePicker/DatePicker.stories.tsx +1 -1
  24. package/src/Dialog/Dialog.stories.tsx +1 -1
  25. package/src/EmptyState/EmptyState.stories.tsx +1 -1
  26. package/src/Field/Field.stories.tsx +1 -1
  27. package/src/FileDropZone/FileDropZone.stories.tsx +1 -1
  28. package/src/Header/Header.stories.tsx +1 -1
  29. package/src/IconButton/IconButton.stories.tsx +1 -1
  30. package/src/Lightbox/Lightbox.stories.tsx +1 -1
  31. package/src/Listbox/Listbox.stories.tsx +1 -1
  32. package/src/LiveStatusIndicator/LiveStatusIndicator.stories.tsx +1 -1
  33. package/src/LogViewer/LogViewer.stories.tsx +1 -1
  34. package/src/Main/Main.stories.tsx +1 -1
  35. package/src/MarkdownEditor/MarkdownEditor.stories.tsx +1 -1
  36. package/src/MediaTile/MediaTile.stories.tsx +1 -1
  37. package/src/Menu/Menu.stories.tsx +1 -1
  38. package/src/Modal/Modal.stories.tsx +1 -1
  39. package/src/Picker/Picker.stories.tsx +1 -1
  40. package/src/Popover/Popover.stories.tsx +1 -1
  41. package/src/ProgressBar/ProgressBar.stories.tsx +1 -1
  42. package/src/QueryBuilder/QueryBuilder.stories.tsx +1 -1
  43. package/src/RadioGroup/RadioGroup.stories.tsx +1 -1
  44. package/src/Rail/Rail.stories.tsx +1 -1
  45. package/src/SegmentedControl/SegmentedControl.stories.tsx +1 -1
  46. package/src/Select/Select.stories.tsx +17 -6
  47. package/src/Shell/Shell.stories.tsx +1 -1
  48. package/src/Skeleton/Skeleton.stories.tsx +1 -1
  49. package/src/SortableTableHeader/SortableTableHeader.stories.tsx +1 -1
  50. package/src/Spinner/Spinner.stories.tsx +1 -1
  51. package/src/Swatch/Swatch.stories.tsx +1 -1
  52. package/src/Switch/Switch.stories.tsx +1 -1
  53. package/src/Tabs/Tabs.stories.tsx +1 -1
  54. package/src/TextLink/TextLink.stories.tsx +1 -1
  55. package/src/Toast/Toast.stories.tsx +1 -1
  56. package/src/Toolbar/Toolbar.stories.tsx +1 -1
  57. package/src/Tooltip/Tooltip.stories.tsx +1 -1
  58. package/src/VisuallyHidden/VisuallyHidden.stories.tsx +1 -1
  59. package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.mdx +28 -0
  60. package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.stories.tsx +43 -1
  61. package/src/markdownEditorCodeMirror/livePreview.ts +465 -3
  62. package/src/markdownEditorCodeMirror/livePreviewRanges.test.ts +349 -8
  63. package/src/markdownEditorCodeMirror/livePreviewRanges.ts +669 -27
@@ -130,30 +130,291 @@ const toHeaderMarkEnd = (text, to) => {
130
130
  }
131
131
  return end;
132
132
  };
133
+ /** A cell region with its surrounding padding removed. */
134
+ const toTrimmedBounds = (text, from, to) => {
135
+ let start = from;
136
+ let end = to;
137
+ while (start < end &&
138
+ (text[start] === " " || text[start] === "\t")) {
139
+ start += 1;
140
+ }
141
+ while (end > start &&
142
+ (text[end - 1] === " " || text[end - 1] === "\t")) {
143
+ end -= 1;
144
+ }
145
+ return { from: start, to: end };
146
+ };
147
+ const toAlignment = (spec) => {
148
+ if (spec.startsWith(":") && spec.endsWith(":")) {
149
+ return "center";
150
+ }
151
+ if (spec.endsWith(":")) {
152
+ return "end";
153
+ }
154
+ return "start";
155
+ };
133
156
  /**
134
- * Every decoration the document wants, in tree order.
157
+ * The delimiter row, read as alignment.
135
158
  *
136
- * Order is not sorted here on purpose — `Decoration.set(ranges,
137
- * true)` sorts, and doing it twice is the sort of thing that looks
138
- * free until a document is long.
159
+ * It is the one row a rendered table does not show — `| :--- | ---: |`
160
+ * is not content, it is the column spec — so this is where it goes
161
+ * instead of on screen. The parser hands the whole row back as a
162
+ * single `TableDelimiter` child of `Table`, which is what separates
163
+ * it from the `|` between two cells: those are children of the row.
139
164
  */
140
- export const toLivePreviewRanges = ({ from, isRawMode = false, selections, text, to, tree, }) => {
141
- const ranges = [];
142
- const pushMarker = (from, to, isRevealed) => {
143
- if (from >= to) {
144
- return;
165
+ const toColumnAlignments = (text, node) => {
166
+ for (let child = node.firstChild; child; child = child.nextSibling) {
167
+ if (child.name !== "TableDelimiter") {
168
+ continue;
169
+ }
170
+ return text
171
+ .slice(child.from, child.to)
172
+ .split("|")
173
+ .map((spec) => spec.trim())
174
+ .filter((spec, index, specs) => spec !== "" ||
175
+ (index !== 0 && index !== specs.length - 1))
176
+ .map(toAlignment);
177
+ }
178
+ return [];
179
+ };
180
+ /**
181
+ * A row's columns, as offset ranges — including the empty ones.
182
+ *
183
+ * Splitting on the `TableCell` children alone would lose them: the
184
+ * parser emits no cell node for `| |`, so a table with a blank cell
185
+ * would render with its remaining cells shifted one column left,
186
+ * which is a data-corrupting kind of wrong even though nothing was
187
+ * written. The `|` positions are the truth, so the gaps between
188
+ * them are the columns, cell node or not.
189
+ */
190
+ const toRowRegions = (row, text) => {
191
+ const regions = [];
192
+ let start = row.from;
193
+ for (let child = row.firstChild; child; child = child.nextSibling) {
194
+ if (child.name !== "TableDelimiter") {
195
+ continue;
196
+ }
197
+ // The leading `|`, which opens no column of its own.
198
+ if (child.from === start) {
199
+ start = child.to;
200
+ continue;
201
+ }
202
+ regions.push({ from: start, to: child.from });
203
+ start = child.to;
204
+ }
205
+ // What is left after the last `|`. Only a column if it holds
206
+ // something: a row that ends with a pipe and then trailing spaces
207
+ // has no final column, and counting one gives every table an
208
+ // empty extra column that nothing in the markdown asked for.
209
+ if (start < row.to &&
210
+ text.slice(start, row.to).trim() !== "") {
211
+ regions.push({ from: start, to: row.to });
212
+ }
213
+ return regions;
214
+ };
215
+ const toCellNodeIn = (row, from, to) => {
216
+ for (let child = row.firstChild; child; child = child.nextSibling) {
217
+ if (child.name === "TableCell" &&
218
+ child.from >= from &&
219
+ child.to <= to) {
220
+ return child;
221
+ }
222
+ }
223
+ return null;
224
+ };
225
+ /**
226
+ * Inline ranges over a slice → the runs a renderer can build DOM
227
+ * from, flattened.
228
+ *
229
+ * Everywhere else in this module a decoration is *applied* to text
230
+ * CodeMirror is already drawing, so overlapping ranges are free —
231
+ * the browser composes them. A widget draws its own text, so they
232
+ * are not: `**a [b](c) d**` is one strong run overlapping one link
233
+ * run, and something has to decide where the spans break. That is
234
+ * this function, and the answer is per character, which is the only
235
+ * version that cannot be defeated by a nesting nobody predicted.
236
+ *
237
+ * Concealed markers are dropped rather than split around, so a run
238
+ * of bold text stays a single segment with its `**` gone from both
239
+ * ends.
240
+ */
241
+ export const toInlineSegments = ({ from, ranges, text, to, }) => {
242
+ const isHidden = new Array(Math.max(to - from, 0)).fill(false);
243
+ const marks = [];
244
+ const images = new Map();
245
+ const hide = (hiddenFrom, hiddenTo) => {
246
+ for (let offset = Math.max(hiddenFrom, from); offset < Math.min(hiddenTo, to); offset += 1) {
247
+ isHidden[offset - from] = true;
145
248
  }
146
- ranges.push({
147
- from,
148
- isConcealed: !isRawMode && !isRevealed,
149
- to,
150
- type: "marker",
151
- });
152
249
  };
153
- tree.iterate({
154
- from,
155
- to,
156
- enter: (nodeRef) => {
250
+ for (const range of ranges) {
251
+ if (range.type === "marker" && range.isConcealed) {
252
+ hide(range.from, range.to);
253
+ }
254
+ if (range.type === "mark") {
255
+ marks.push({
256
+ from: range.from,
257
+ markKind: range.markKind,
258
+ to: range.to,
259
+ url: range.url,
260
+ });
261
+ }
262
+ if (range.type === "image") {
263
+ images.set(range.from, {
264
+ alt: range.alt,
265
+ to: range.to,
266
+ url: range.url,
267
+ });
268
+ hide(range.from, range.to);
269
+ }
270
+ }
271
+ const segments = [];
272
+ let openKey = null;
273
+ let openSegment = null;
274
+ const flush = () => {
275
+ if (openSegment && openSegment.text !== "") {
276
+ segments.push({ ...openSegment, type: "text" });
277
+ }
278
+ openKey = null;
279
+ openSegment = null;
280
+ };
281
+ for (let offset = from; offset < to; offset += 1) {
282
+ const image = images.get(offset);
283
+ if (image) {
284
+ flush();
285
+ segments.push({
286
+ alt: image.alt,
287
+ type: "image",
288
+ url: image.url,
289
+ });
290
+ offset = image.to - 1;
291
+ continue;
292
+ }
293
+ if (isHidden[offset - from]) {
294
+ continue;
295
+ }
296
+ const covering = marks.filter((mark) => mark.from <= offset && mark.to > offset);
297
+ const markKinds = [
298
+ ...new Set(covering.map((mark) => mark.markKind)),
299
+ ].sort();
300
+ const url = covering.find((mark) => mark.url)?.url;
301
+ const key = `${markKinds.join(" ")}\u0000${url ?? ""}`;
302
+ if (key !== openKey) {
303
+ flush();
304
+ openKey = key;
305
+ openSegment = {
306
+ markKinds,
307
+ text: "",
308
+ ...(url ? { url } : {}),
309
+ };
310
+ }
311
+ if (openSegment) {
312
+ openSegment.text += text[offset];
313
+ }
314
+ }
315
+ flush();
316
+ return segments;
317
+ };
318
+ /**
319
+ * A table, as rows of rendered cells — or `null` when the parser
320
+ * found no rows at all to render.
321
+ *
322
+ * Rows are padded to a rectangle here rather than in the widget:
323
+ * the width is `max(columns in the delimiter row, columns in the
324
+ * widest row)`, which is deliberately **not** what GitHub renders.
325
+ * GFM drops cells past the header's width, and dropping them in an
326
+ * *editor* means text the author typed is on screen nowhere — a
327
+ * worse failure than a table one column wider than it should be,
328
+ * with the raw markdown one toggle away.
329
+ */
330
+ const toTableRows = ({ node, text, toEnter, }) => {
331
+ const alignments = toColumnAlignments(text, node);
332
+ const rows = [];
333
+ for (let child = node.firstChild; child; child = child.nextSibling) {
334
+ if (child.name !== "TableHeader" &&
335
+ child.name !== "TableRow") {
336
+ continue;
337
+ }
338
+ const row = child;
339
+ rows.push({
340
+ cells: toRowRegions(row, text).map((region, columnIndex) => {
341
+ const bounds = toTrimmedBounds(text, region.from, region.to);
342
+ const cellNode = toCellNodeIn(row, bounds.from, bounds.to);
343
+ const cellRanges = [];
344
+ if (cellNode) {
345
+ cellNode.cursor().iterate(toEnter(cellRanges));
346
+ }
347
+ return {
348
+ alignment: alignments[columnIndex] ?? "start",
349
+ from: bounds.from,
350
+ segments: toInlineSegments({
351
+ from: bounds.from,
352
+ ranges: cellRanges,
353
+ text,
354
+ to: bounds.to,
355
+ }),
356
+ to: bounds.to,
357
+ };
358
+ }),
359
+ from: row.from,
360
+ isHeader: row.name === "TableHeader",
361
+ to: row.to,
362
+ });
363
+ }
364
+ if (rows.length === 0) {
365
+ return null;
366
+ }
367
+ const columnCount = Math.max(alignments.length, ...rows.map((row) => row.cells.length));
368
+ return rows.map((row) => ({
369
+ ...row,
370
+ cells: [
371
+ ...row.cells,
372
+ // A short row keeps its shape by gaining empty cells, and
373
+ // they collapse to the end of the row: clicking one puts the
374
+ // caret where the missing `| |` would be typed.
375
+ ...Array.from({ length: columnCount - row.cells.length }, (_unused, index) => ({
376
+ alignment: alignments[row.cells.length + index] ?? "start",
377
+ from: row.to,
378
+ segments: [],
379
+ to: row.to,
380
+ })),
381
+ ],
382
+ }));
383
+ };
384
+ /**
385
+ * Is this table drawn, or edited?
386
+ *
387
+ * One predicate, used by both passes, because they have to agree:
388
+ * the block pass draws the table exactly when the inline pass steps
389
+ * out of its way, and a disagreement paints the pipes underneath a
390
+ * rendered table or leaves a gap where neither drew anything.
391
+ */
392
+ const isTableRendered = ({ isRawMode, node, selections, }) => !isRawMode && !isInside(selections, node.from, node.to);
393
+ /**
394
+ * The walk, parameterised by where it writes.
395
+ *
396
+ * Everything the document contains is decorated into the array this
397
+ * is handed; a table cell's contents are decorated into a throwaway
398
+ * one instead, because they are not decorations over the document
399
+ * at all — they describe text a widget will draw itself. Same rules
400
+ * for `**` in a cell as for `**` in a paragraph, one
401
+ * implementation, and the recursion is bounded by the cell subtree
402
+ * rather than by a flag.
403
+ */
404
+ const toWalker = ({ isRawMode, selections, text, }) => {
405
+ const toEnter = (ranges) => {
406
+ const pushMarker = (from, to, isRevealed) => {
407
+ if (from >= to) {
408
+ return;
409
+ }
410
+ ranges.push({
411
+ from,
412
+ isConcealed: !isRawMode && !isRevealed,
413
+ to,
414
+ type: "marker",
415
+ });
416
+ };
417
+ return (nodeRef) => {
157
418
  const { name } = nodeRef;
158
419
  const headingKind = HEADING_LINE_KINDS[name];
159
420
  if (headingKind) {
@@ -190,6 +451,19 @@ export const toLivePreviewRanges = ({ from, isRawMode = false, selections, text,
190
451
  return true;
191
452
  }
192
453
  if (name === "Table") {
454
+ // A rendered table belongs to the block pass, and this one
455
+ // has nothing to say about lines that will not be drawn.
456
+ if (isTableRendered({
457
+ isRawMode,
458
+ node: nodeRef.node,
459
+ selections,
460
+ })) {
461
+ return false;
462
+ }
463
+ // Otherwise the caret is in it — or raw mode is on — and
464
+ // this is the *editing* view: the pipes, monospaced, on the
465
+ // same rule as an image or a link. You cannot edit a column
466
+ // you cannot see.
193
467
  if (!isRawMode) {
194
468
  for (let offset = toLineStart(text, nodeRef.from); offset < nodeRef.to; offset = toLineEnd(text, offset) + 1) {
195
469
  ranges.push({
@@ -309,6 +583,13 @@ export const toLivePreviewRanges = ({ from, isRawMode = false, selections, text,
309
583
  pushMarker(nodeRef.from, nodeRef.to, true);
310
584
  return false;
311
585
  }
586
+ if (name === "Escape") {
587
+ // `\|` is the only way to put a pipe in a table cell, and
588
+ // the reader wants the pipe, not the backslash. Same rule
589
+ // as any other marker: the caret brings it back.
590
+ pushMarker(nodeRef.from, nodeRef.from + 1, isInside(selections, nodeRef.from, nodeRef.to));
591
+ return false;
592
+ }
312
593
  if (name === "CodeInfo") {
313
594
  pushMarker(nodeRef.from, nodeRef.to, true);
314
595
  return false;
@@ -338,6 +619,76 @@ export const toLivePreviewRanges = ({ from, isRawMode = false, selections, text,
338
619
  return false;
339
620
  }
340
621
  return true;
622
+ };
623
+ };
624
+ return toEnter;
625
+ };
626
+ /**
627
+ * Every decoration the document wants that a plugin may provide, in
628
+ * tree order.
629
+ *
630
+ * Order is not sorted here on purpose — `Decoration.set(ranges,
631
+ * true)` sorts, and doing it twice is the sort of thing that looks
632
+ * free until a document is long.
633
+ */
634
+ export const toLivePreviewRanges = ({ from, isRawMode = false, selections, text, to, tree, }) => {
635
+ const ranges = [];
636
+ tree.iterate({
637
+ from,
638
+ to,
639
+ enter: toWalker({ isRawMode, selections, text })(ranges),
640
+ });
641
+ return ranges;
642
+ };
643
+ /**
644
+ * Block nodes a table can be nested inside.
645
+ *
646
+ * The block pass is not viewport-limited — it cannot be, since a
647
+ * block decoration is part of what *decides* the viewport — so it
648
+ * pays for the whole document on every keystroke. Descending only
649
+ * into containers keeps that a scan of the block structure rather
650
+ * than a walk of every inline node in the file.
651
+ */
652
+ const TABLE_CONTAINER_NAMES = new Set([
653
+ "Blockquote",
654
+ "BulletList",
655
+ "Document",
656
+ "ListItem",
657
+ "OrderedList",
658
+ ]);
659
+ /**
660
+ * The tables the document renders, whole-document.
661
+ *
662
+ * Separate from `toLivePreviewRanges` because CodeMirror requires
663
+ * it: block decorations come from a `StateField`, inline ones from
664
+ * a viewport-limited `ViewPlugin`, and the two passes agree via
665
+ * `isTableRendered`.
666
+ */
667
+ export const toLivePreviewTableRanges = ({ isRawMode = false, selections, text, tree, }) => {
668
+ const ranges = [];
669
+ const toEnter = toWalker({ isRawMode, selections, text });
670
+ tree.iterate({
671
+ enter: (nodeRef) => {
672
+ if (nodeRef.name !== "Table") {
673
+ return TABLE_CONTAINER_NAMES.has(nodeRef.name);
674
+ }
675
+ const node = nodeRef.node;
676
+ const rows = isTableRendered({
677
+ isRawMode,
678
+ node,
679
+ selections,
680
+ })
681
+ ? toTableRows({ node, text, toEnter })
682
+ : null;
683
+ if (rows) {
684
+ ranges.push({
685
+ from: node.from,
686
+ rows,
687
+ to: node.to,
688
+ type: "table",
689
+ });
690
+ }
691
+ return false;
341
692
  },
342
693
  });
343
694
  return ranges;
@@ -1 +1 @@
1
- {"version":3,"file":"livePreviewRanges.js","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/livePreviewRanges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"livePreviewRanges.js","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/livePreviewRanges.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@charcuterie/ui",
3
- "version": "3.4.0",
3
+ "version": "3.5.0",
4
4
  "description": "The Charcuterie components. Tokens for look, @charcuterie/logic for state, ARIA that agents can actually drive.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -53,7 +53,7 @@ const STATE_SECTIONS: AccordionItem[] = [
53
53
  ]
54
54
 
55
55
  const meta = {
56
- title: "Components/Accordion",
56
+ title: "Components/Layout/Accordion",
57
57
  component: Accordion,
58
58
  parameters: { layout: "padded" },
59
59
  args: {
@@ -68,7 +68,7 @@ const Item = ({ label }: { label: string }) => (
68
68
  )
69
69
 
70
70
  const meta = {
71
- title: "Components/AdaptiveGrid",
71
+ title: "Components/Layout/AdaptiveGrid",
72
72
  component: AdaptiveGrid,
73
73
  parameters: { layout: "padded" },
74
74
  args: {
@@ -23,7 +23,7 @@ const INTENTS = [
23
23
  ] as const
24
24
 
25
25
  const meta = {
26
- title: "Components/Alert",
26
+ title: "Components/Feedback/Alert",
27
27
  component: Alert,
28
28
  parameters: { layout: "padded" },
29
29
  argTypes: {
@@ -37,7 +37,7 @@ const INTENTS = [
37
37
  ] as const
38
38
 
39
39
  const meta = {
40
- title: "Components/Badge",
40
+ title: "Components/Data/Badge",
41
41
  component: Badge,
42
42
  parameters: { layout: "padded" },
43
43
  argTypes: {
@@ -388,7 +388,7 @@ const Frame = ({
388
388
  )
389
389
 
390
390
  const meta = {
391
- title: "Components/Board",
391
+ title: "Components/Layout/Board",
392
392
  component: Board,
393
393
  parameters: { layout: "padded" },
394
394
  args: {
@@ -31,7 +31,7 @@ const APPEARANCES: IntentAppearance[] = [
31
31
  ]
32
32
 
33
33
  const meta = {
34
- title: "Components/Button",
34
+ title: "Components/Actions/Button",
35
35
  component: Button,
36
36
  parameters: { layout: "padded" },
37
37
  argTypes: {
@@ -51,7 +51,7 @@ const APPEARANCES: IntentAppearance[] = [
51
51
  ]
52
52
 
53
53
  const meta = {
54
- title: "Components/ButtonLink",
54
+ title: "Components/Actions/ButtonLink",
55
55
  component: ButtonLink,
56
56
  parameters: { layout: "padded" },
57
57
  argTypes: {
@@ -15,7 +15,7 @@ import { ProgressBar } from "../ProgressBar/ProgressBar.tsx"
15
15
  import { Card, ELEVATION_CLASS } from "./Card.tsx"
16
16
 
17
17
  const meta = {
18
- title: "Components/Card",
18
+ title: "Components/Layout/Card",
19
19
  component: Card,
20
20
  parameters: { layout: "padded" },
21
21
  argTypes: {
@@ -9,7 +9,7 @@ import {
9
9
  import { Checkbox } from "./Checkbox.tsx"
10
10
 
11
11
  const meta = {
12
- title: "Components/Checkbox",
12
+ title: "Components/Controls/Checkbox",
13
13
  component: Checkbox,
14
14
  parameters: { layout: "padded" },
15
15
  argTypes: { size: controlSizeArgType },
@@ -85,7 +85,7 @@ const ScopedSwitcherDemo = () => {
85
85
  }
86
86
 
87
87
  const meta = {
88
- title: "Components/ColorSchemeSwitcher",
88
+ title: "Utilities/ColorSchemeSwitcher",
89
89
  component: ColorSchemeSwitcher,
90
90
  parameters: { layout: "padded" },
91
91
  // The three injected seams are functions/objects, not values a
@@ -33,7 +33,7 @@ const ICONS: ColorSchemeIcons = {
33
33
  }
34
34
 
35
35
  const meta = {
36
- title: "Components/ColorSchemeToggle",
36
+ title: "Utilities/ColorSchemeToggle",
37
37
  component: ColorSchemeToggle,
38
38
  parameters: { layout: "padded" },
39
39
  argTypes: {
@@ -34,7 +34,7 @@ const MANY: ListboxItem[] = Array.from(
34
34
  )
35
35
 
36
36
  const meta = {
37
- title: "Components/Combobox",
37
+ title: "Components/Controls/Combobox",
38
38
  component: Combobox,
39
39
  parameters: { layout: "padded" },
40
40
  } satisfies Meta<typeof Combobox>
@@ -244,7 +244,7 @@ const TaskTable = ({
244
244
  }
245
245
 
246
246
  const meta = {
247
- title: "Components/DataTable",
247
+ title: "Components/Data/DataTable",
248
248
  component: DataTable,
249
249
  parameters: { layout: "padded" },
250
250
  args: {
@@ -23,7 +23,7 @@ import type { DateRange } from "./plainDate.ts"
23
23
  const TODAY = "2026-08-19"
24
24
 
25
25
  const meta = {
26
- title: "Components/DatePicker",
26
+ title: "Components/Controls/DatePicker",
27
27
  component: DatePicker,
28
28
  args: {
29
29
  label: "Due date",
@@ -11,7 +11,7 @@ import type { DialogSize } from "./Dialog.tsx"
11
11
  import { Dialog } from "./Dialog.tsx"
12
12
 
13
13
  const meta = {
14
- title: "Components/Dialog",
14
+ title: "Components/Overlays/Dialog",
15
15
  component: Dialog,
16
16
  parameters: { layout: "padded" },
17
17
  argTypes: {
@@ -16,7 +16,7 @@ import {
16
16
  import { EmptyState } from "./EmptyState.tsx"
17
17
 
18
18
  const meta = {
19
- title: "Components/EmptyState",
19
+ title: "Components/Feedback/EmptyState",
20
20
  component: EmptyState,
21
21
  parameters: { layout: "padded" },
22
22
  args: { headingLevel: 2, size: "md" },
@@ -13,7 +13,7 @@ const TEXT_INPUT_CLASS =
13
13
  "w-full rounded-md border border-border-default bg-surface-raised px-3 py-2 text-content-primary text-sm focus-visible:outline-solid focus-visible:outline-(length:--focus-ring-width) focus-visible:outline-offset-(--focus-ring-offset) focus-visible:outline-focus-ring"
14
14
 
15
15
  const meta = {
16
- title: "Components/Field",
16
+ title: "Components/Controls/Field",
17
17
  component: Field,
18
18
  parameters: { layout: "padded" },
19
19
  args: {