@charcuterie/ui 3.26.0 → 3.28.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 (42) hide show
  1. package/README.md +4 -2
  2. package/dist/Board/Board.d.ts +20 -7
  3. package/dist/Board/Board.d.ts.map +1 -1
  4. package/dist/Board/Board.js +16 -10
  5. package/dist/Board/Board.js.map +1 -1
  6. package/dist/Board/BoardCard.d.ts +18 -12
  7. package/dist/Board/BoardCard.d.ts.map +1 -1
  8. package/dist/Board/BoardCard.js +12 -12
  9. package/dist/Board/BoardCard.js.map +1 -1
  10. package/dist/Board/BoardLaneList.d.ts +2 -1
  11. package/dist/Board/BoardLaneList.d.ts.map +1 -1
  12. package/dist/Board/BoardLaneList.js +13 -4
  13. package/dist/Board/BoardLaneList.js.map +1 -1
  14. package/dist/MarkdownEditor/MarkdownEditor.d.ts +1 -1
  15. package/dist/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  16. package/dist/MarkdownEditor/MarkdownEditor.js +130 -74
  17. package/dist/MarkdownEditor/MarkdownEditor.js.map +1 -1
  18. package/dist/Stepper/Stepper.d.ts +10 -1
  19. package/dist/Stepper/Stepper.d.ts.map +1 -1
  20. package/dist/Stepper/Stepper.js +25 -5
  21. package/dist/Stepper/Stepper.js.map +1 -1
  22. package/dist/markdownEditorCodeMirror/MarkdownEditorCodeMirror.d.ts.map +1 -1
  23. package/dist/markdownEditorCodeMirror/MarkdownEditorCodeMirror.js +135 -85
  24. package/dist/markdownEditorCodeMirror/MarkdownEditorCodeMirror.js.map +1 -1
  25. package/package.json +1 -1
  26. package/src/Board/Board.mdx +12 -0
  27. package/src/Board/Board.stories.tsx +48 -0
  28. package/src/Board/Board.test.tsx +43 -0
  29. package/src/Board/Board.tsx +34 -8
  30. package/src/Board/BoardCard.tsx +26 -16
  31. package/src/Board/BoardLaneList.tsx +35 -5
  32. package/src/MarkdownEditor/MarkdownEditor.mdx +32 -4
  33. package/src/MarkdownEditor/MarkdownEditor.test.tsx +108 -0
  34. package/src/MarkdownEditor/MarkdownEditor.tsx +89 -0
  35. package/src/Stepper/Stepper.stories.tsx +27 -0
  36. package/src/Stepper/Stepper.test.tsx +17 -2
  37. package/src/Stepper/Stepper.tsx +51 -8
  38. package/src/icons.storyHelpers.tsx +11 -0
  39. package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.mdx +3 -1
  40. package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.stories.tsx +31 -0
  41. package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.test.tsx +109 -1
  42. package/src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.tsx +84 -0
@@ -160,6 +160,11 @@ export const MarkdownEditorCodeMirror = ({ className, defaultValue = "", icons,
160
160
  const hostRef = useRef(null);
161
161
  const viewRef = useRef(null);
162
162
  const uploadCount = useRef(0);
163
+ /** The toolbar's Image button presses this. A real
164
+ * `<input type="file">` because nothing else opens a file
165
+ * picker, and it is the only way in on a touch device — there
166
+ * is nothing to paste from and nothing to drag. */
167
+ const imageInputRef = useRef(null);
163
168
  const editabilityRef = useRef(new Compartment());
164
169
  const [isRawMode, setIsRawMode] = useState(isRawModeDefault);
165
170
  const [uploadMessage, setUploadMessage] = useState("");
@@ -447,99 +452,144 @@ export const MarkdownEditorCodeMirror = ({ className, defaultValue = "", icons,
447
452
  // fades the hint under it too, and axe measures the
448
453
  // *composited* colour.
449
454
  isDisabled &&
450
- "border-border-subtle bg-surface-sunken", className), children: [_jsx("div", { className: "border-border-subtle border-b px-2 pt-2 pb-1", children: _jsx(Toolbar, { items: [
451
- {
452
- icon: icons?.bold,
453
- isDisabled: isDisabled || isReadOnly,
454
- key: "bold",
455
- label: "Bold",
456
- onSelect: () => {
457
- runCommand((state) => toggleInlineMarker(state, "**"));
455
+ "border-border-subtle bg-surface-sunken", className), children: [_jsxs("div", { className: "border-border-subtle border-b px-2 pt-2 pb-1", children: [_jsx(Toolbar, { items: [
456
+ {
457
+ icon: icons?.bold,
458
+ isDisabled: isDisabled || isReadOnly,
459
+ key: "bold",
460
+ label: "Bold",
461
+ onSelect: () => {
462
+ runCommand((state) => toggleInlineMarker(state, "**"));
463
+ },
458
464
  },
459
- },
460
- {
461
- icon: icons?.italic,
462
- isDisabled: isDisabled || isReadOnly,
463
- key: "italic",
464
- label: "Italic",
465
- onSelect: () => {
466
- runCommand((state) => toggleInlineMarker(state, "_"));
465
+ {
466
+ icon: icons?.italic,
467
+ isDisabled: isDisabled || isReadOnly,
468
+ key: "italic",
469
+ label: "Italic",
470
+ onSelect: () => {
471
+ runCommand((state) => toggleInlineMarker(state, "_"));
472
+ },
467
473
  },
468
- },
469
- {
470
- icon: icons?.heading,
471
- isDisabled: isDisabled || isReadOnly,
472
- key: "heading",
473
- label: "Heading",
474
- onSelect: () => {
475
- runCommand((state) => toggleHeading(state, 2));
474
+ {
475
+ icon: icons?.heading,
476
+ isDisabled: isDisabled || isReadOnly,
477
+ key: "heading",
478
+ label: "Heading",
479
+ onSelect: () => {
480
+ runCommand((state) => toggleHeading(state, 2));
481
+ },
476
482
  },
477
- },
478
- {
479
- icon: icons?.bulletedList,
480
- isDisabled: isDisabled || isReadOnly,
481
- key: "bulleted-list",
482
- label: "Bulleted list",
483
- onSelect: () => {
484
- runCommand((state) => toggleLinePrefix(state, MARKDOWN_LINE_PREFIXES.bulletList));
483
+ /*
484
+ IMAGE, and only when the consumer can actually take
485
+ one. A button that opens a file picker and then has
486
+ nowhere to send the file is worse than no button.
487
+
488
+ Spread rather than a `filter(Boolean)`, so the array
489
+ stays a `ToolbarItem[]` without a cast.
490
+
491
+ ⚠️ FOURTH, and the position is load-bearing rather
492
+ than aesthetic — same reason as the textarea
493
+ sibling's. `Toolbar` overflows from the END, so the
494
+ order IS the priority order, and last put Image
495
+ behind "More actions" at 900px. The whole point of
496
+ the button is that adding an image is not buried.
497
+ */
498
+ ...(onUploadImage
499
+ ? [
500
+ {
501
+ icon: icons?.image,
502
+ isDisabled: isDisabled || isReadOnly,
503
+ key: "image",
504
+ label: "Image",
505
+ onSelect: () => {
506
+ imageInputRef.current?.click();
507
+ },
508
+ },
509
+ ]
510
+ : []),
511
+ {
512
+ icon: icons?.bulletedList,
513
+ isDisabled: isDisabled || isReadOnly,
514
+ key: "bulleted-list",
515
+ label: "Bulleted list",
516
+ onSelect: () => {
517
+ runCommand((state) => toggleLinePrefix(state, MARKDOWN_LINE_PREFIXES.bulletList));
518
+ },
485
519
  },
486
- },
487
- {
488
- icon: icons?.taskList,
489
- isDisabled: isDisabled || isReadOnly,
490
- key: "task-list",
491
- label: "Task list",
492
- onSelect: () => {
493
- runCommand((state) => toggleLinePrefix(state, MARKDOWN_LINE_PREFIXES.taskList));
520
+ {
521
+ icon: icons?.taskList,
522
+ isDisabled: isDisabled || isReadOnly,
523
+ key: "task-list",
524
+ label: "Task list",
525
+ onSelect: () => {
526
+ runCommand((state) => toggleLinePrefix(state, MARKDOWN_LINE_PREFIXES.taskList));
527
+ },
494
528
  },
495
- },
496
- {
497
- icon: icons?.numberedList,
498
- isDisabled: isDisabled || isReadOnly,
499
- key: "numbered-list",
500
- label: "Numbered list",
501
- onSelect: () => {
502
- runCommand((state) => toggleLinePrefix(state, MARKDOWN_LINE_PREFIXES.orderedList));
529
+ {
530
+ icon: icons?.numberedList,
531
+ isDisabled: isDisabled || isReadOnly,
532
+ key: "numbered-list",
533
+ label: "Numbered list",
534
+ onSelect: () => {
535
+ runCommand((state) => toggleLinePrefix(state, MARKDOWN_LINE_PREFIXES.orderedList));
536
+ },
503
537
  },
504
- },
505
- {
506
- icon: icons?.quote,
507
- isDisabled: isDisabled || isReadOnly,
508
- key: "quote",
509
- label: "Quote",
510
- onSelect: () => {
511
- runCommand((state) => toggleLinePrefix(state, MARKDOWN_LINE_PREFIXES.blockquote));
538
+ {
539
+ icon: icons?.quote,
540
+ isDisabled: isDisabled || isReadOnly,
541
+ key: "quote",
542
+ label: "Quote",
543
+ onSelect: () => {
544
+ runCommand((state) => toggleLinePrefix(state, MARKDOWN_LINE_PREFIXES.blockquote));
545
+ },
512
546
  },
513
- },
514
- {
515
- icon: icons?.code,
516
- isDisabled: isDisabled || isReadOnly,
517
- key: "code",
518
- label: "Code",
519
- onSelect: () => {
520
- runCommand((state) => toggleInlineMarker(state, "`"));
547
+ {
548
+ icon: icons?.code,
549
+ isDisabled: isDisabled || isReadOnly,
550
+ key: "code",
551
+ label: "Code",
552
+ onSelect: () => {
553
+ runCommand((state) => toggleInlineMarker(state, "`"));
554
+ },
521
555
  },
522
- },
523
- {
524
- icon: icons?.link,
525
- isDisabled: isDisabled || isReadOnly,
526
- key: "link",
527
- label: "Link",
528
- onSelect: () => {
529
- runCommand((state) => insertLink(state));
556
+ {
557
+ icon: icons?.link,
558
+ isDisabled: isDisabled || isReadOnly,
559
+ key: "link",
560
+ label: "Link",
561
+ onSelect: () => {
562
+ runCommand((state) => insertLink(state));
563
+ },
530
564
  },
531
- },
532
- {
533
- /**
534
- * The "edit Markdown" toggle, as a `Switch` and not a
535
- * toolbar action — because it is state, not a verb.
536
- * A `ToolbarAction` renders a `Button`, which
537
- * announces nothing about being on.
538
- */
539
- element: (_jsx(Switch, { isChecked: isRawMode, isDisabled: isDisabled, label: rawModeLabel, onChange: setIsRawMode, size: "sm" })),
540
- key: "raw-mode",
541
- type: "control",
542
- },
543
- ], label: toolbarLabel, overflow: "panel", overflowIcon: icons?.overflow }) }), _jsx("div", { className: "flex min-h-32 flex-col px-1 text-md cq-md:min-h-48 [&>.cm-editor]:flex-1 [&_.cm-scroller]:flex-1 [&_.cm-content]:self-stretch", ref: hostRef }), _jsxs("div", { className: "flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1 px-3 pb-2", children: [_jsx("p", { className: "sr-only text-content-secondary text-sm cq-sm:not-sr-only", id: hintId, children: "Markdown. Ctrl+B bold, Ctrl+I italic, Ctrl+K link, Ctrl+E code." }), _jsx("span", { "aria-label": "Image upload", className: "text-content-secondary text-sm", role: "status", children: uploadMessage })] })] }));
565
+ {
566
+ /**
567
+ * The "edit Markdown" toggle, as a `Switch` and not a
568
+ * toolbar action — because it is state, not a verb.
569
+ * A `ToolbarAction` renders a `Button`, which
570
+ * announces nothing about being on.
571
+ */
572
+ element: (_jsx(Switch, { isChecked: isRawMode, isDisabled: isDisabled, label: rawModeLabel, onChange: setIsRawMode, size: "sm" })),
573
+ key: "raw-mode",
574
+ type: "control",
575
+ },
576
+ ], label: toolbarLabel, overflow: "panel", overflowIcon: icons?.overflow }), onUploadImage ? (_jsx("input", { accept: "image/*", "aria-hidden": "true", className: "hidden", multiple: true, onChange: (changeEvent) => {
577
+ const view = viewRef.current;
578
+ if (view) {
579
+ for (const file of Array.from(changeEvent.target.files ?? []).filter(isImageFile)) {
580
+ uploadCount.current += 1;
581
+ void uploadImage({
582
+ count: uploadCount.current,
583
+ file,
584
+ handlers: handlersRef.current,
585
+ setMessage: setUploadMessage,
586
+ view,
587
+ });
588
+ }
589
+ }
590
+ // Cleared so choosing the SAME file twice fires
591
+ // `change` the second time.
592
+ changeEvent.target.value = "";
593
+ }, ref: imageInputRef, tabIndex: -1, type: "file" })) : null] }), _jsx("div", { className: "flex min-h-32 flex-col px-1 text-md cq-md:min-h-48 [&>.cm-editor]:flex-1 [&_.cm-scroller]:flex-1 [&_.cm-content]:self-stretch", ref: hostRef }), _jsxs("div", { className: "flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1 px-3 pb-2", children: [_jsx("p", { className: "sr-only text-content-secondary text-sm cq-sm:not-sr-only", id: hintId, children: "Markdown. Ctrl+B bold, Ctrl+I italic, Ctrl+K link, Ctrl+E code." }), _jsx("span", { "aria-label": "Image upload", className: "text-content-secondary text-sm", role: "status", children: uploadMessage })] })] }));
544
594
  };
545
595
  //# sourceMappingURL=MarkdownEditorCodeMirror.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownEditorCodeMirror.js","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MarkdownEditorCodeMirror.js","sourceRoot":"","sources":["../../src/markdownEditorCodeMirror/MarkdownEditorCodeMirror.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@charcuterie/ui",
3
- "version": "3.26.0",
3
+ "version": "3.28.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",
@@ -45,6 +45,18 @@ The narrow panel there is **not a phone**. It is the same board in a sidebar, in
45
45
  window, or on a display somebody has zoomed to 175% — and a media query cannot tell any of
46
46
  those apart from a maximised 4K window.
47
47
 
48
+ ## Workflow columns and project-pool rows
49
+
50
+ The default `laneLayout="columns"` is for workflow stages. At `cq-lg` the lanes sit side by
51
+ side; below it, one selected lane stays on screen and a segmented control names the others.
52
+
53
+ `laneLayout="rows"` is for parallel project pools. Every lane becomes one horizontal band,
54
+ every lane stays visible, and the cards form a responsive grid inside their band. A consumer
55
+ can pass a short `items` array with the true `itemCount`; the remaining count stays explicit
56
+ instead of making one large pool determine the page height. Neither layout scrolls sideways.
57
+
58
+ <Canvas of={BoardStories.RowLayout} />
59
+
48
60
  ### The three card shapes
49
61
 
50
62
  Straight from the consumer requirement, which is specific because the owner answered *"which
@@ -404,6 +404,35 @@ const LANES: BoardLane[] = [
404
404
  },
405
405
  ]
406
406
 
407
+ /**
408
+ * Eight parallel project pools, not workflow steps. The repeated
409
+ * source items are cloned with lane-qualified keys so the story can
410
+ * put realistic card density in every row without claiming that one
411
+ * card belongs to eight pools.
412
+ */
413
+ const POOL_LANES: BoardLane[] = [
414
+ ["repair", "Repair source", 83],
415
+ ["add", "Add media", 78],
416
+ ["replace", "Replace copy", 66],
417
+ ["review", "Review retention", 38],
418
+ ["find", "Find source", 31],
419
+ ["extras", "Specials and films", 18],
420
+ ["difficult", "Difficult repair", 14],
421
+ ["unfiled", "Not in a lane", 1],
422
+ ].map(([key, label, itemCount]) => ({
423
+ itemCount: Number(itemCount),
424
+ items: TODO_ITEMS.slice(
425
+ 0,
426
+ Math.min(3, Number(itemCount)),
427
+ ).map((item) => ({
428
+ ...item,
429
+ key: `${String(key)}-${item.key}`,
430
+ })),
431
+ key: String(key),
432
+ label: String(label),
433
+ onShowMore: () => undefined,
434
+ }))
435
+
407
436
  /**
408
437
  * A **fixed** inline size, because the three-up layout is a
409
438
  * measurement of the board's own box. A story that inherited the
@@ -446,6 +475,25 @@ type Story = StoryObj<typeof meta>
446
475
  */
447
476
  export const Default: Story = {}
448
477
 
478
+ /**
479
+ * Parallel project pools as horizontal bands. Every lane stays on
480
+ * screen; the cards form a responsive grid inside their own lane,
481
+ * and the honest overflow keeps a large pool from making the page
482
+ * endless.
483
+ */
484
+ export const RowLayout: Story = {
485
+ render: (boardProps) => (
486
+ <Frame inlineSize="72rem">
487
+ <Board
488
+ {...boardProps}
489
+ label="Project pools"
490
+ laneLayout="rows"
491
+ lanes={POOL_LANES}
492
+ />
493
+ </Frame>
494
+ ),
495
+ }
496
+
449
497
  /**
450
498
  * Read-only against movable, side by side.
451
499
  *
@@ -23,6 +23,7 @@ const {
23
23
  LinkedLaneHeadings,
24
24
  MoveHandleByWidth,
25
25
  Responsive,
26
+ RowLayout,
26
27
  } = composeStories(stories)
27
28
 
28
29
  /**
@@ -75,6 +76,48 @@ test("a board wider than cq-lg shows every lane at once", async () => {
75
76
  ).toHaveLength(0)
76
77
  })
77
78
 
79
+ /**
80
+ * Width changes a card's chrome and metadata layout. It does not
81
+ * turn the task title back into one ellipsised line: a wider board
82
+ * is purchased to read more of the work, not less.
83
+ */
84
+ test("wide Board cards keep task titles wrapped to two lines", async () => {
85
+ const { canvas } = await mountStory(MarkdownTitles)
86
+
87
+ const titleLink = canvas.getByRole("link", {
88
+ name: /deduplicate .*archive by content hash/i,
89
+ })
90
+ const title = titleLink.closest(".line-clamp-2")
91
+
92
+ await expect(title).toHaveClass("line-clamp-2")
93
+ await expect(title).toHaveClass("wrap-anywhere")
94
+ await expect(title).not.toHaveClass("truncate")
95
+ })
96
+
97
+ test("the row layout keeps every lane visible and grids the cards inside it", async () => {
98
+ const { canvas } = await mountStory(RowLayout)
99
+
100
+ await expect(canvas.getAllByRole("group")).toHaveLength(8)
101
+ await expect(
102
+ canvas.queryAllByRole("radiogroup"),
103
+ ).toHaveLength(0)
104
+
105
+ const repair = expectAgentDrivable(canvas, {
106
+ name: "Repair source",
107
+ role: "group",
108
+ })
109
+ const list = within(repair).getByRole("list")
110
+ const columns = getComputedStyle(list)
111
+ .gridTemplateColumns.split(" ")
112
+ .filter(Boolean)
113
+
114
+ await expect(getComputedStyle(list).display).toBe("grid")
115
+ await expect(columns.length).toBeGreaterThan(1)
116
+ await expect(
117
+ within(repair).getByText("+ 80 more in Repair source"),
118
+ ).toBeInTheDocument()
119
+ })
120
+
78
121
  /**
79
122
  * The count is the lane's **real** size, not the number of rows
80
123
  * painted. A board that truncates and then reports the truncated
@@ -42,6 +42,16 @@ export type BoardProps = {
42
42
  headingLevel?: 2 | 3 | 4 | 5
43
43
  /** The board's accessible name. Required — it is a landmark. */
44
44
  label: string
45
+ /**
46
+ * How the lanes themselves are arranged.
47
+ *
48
+ * `columns` is the workflow shape: lanes sit side by side above
49
+ * `cq-lg`, and the Narrow View selects one lane. `rows` is the
50
+ * project-pool shape: every lane is one horizontal band, its cards
51
+ * form a responsive grid inside that band, and every lane stays on
52
+ * screen at every width.
53
+ */
54
+ laneLayout?: "columns" | "rows"
45
55
  lanes: readonly BoardLane[]
46
56
  /**
47
57
  * What the move handle shows **while the lanes are side by side**.
@@ -91,9 +101,11 @@ export type BoardProps = {
91
101
  * So there are **two nested containers**, and they answer two
92
102
  * different questions:
93
103
  *
94
- * - The board's own box decides *how many lanes are on screen* —
95
- * three-up at `cq-lg` and wider, one lane plus a segmented
96
- * control below it.
104
+ * - The board's own box decides *how workflow lanes are shown* —
105
+ * side by side at `cq-lg` and wider, one lane plus a segmented
106
+ * control below it. A project-pool board with
107
+ * `laneLayout="rows"` keeps every lane on screen and grids the
108
+ * cards inside each horizontal band instead.
97
109
  * - Each lane's list decides *what shape a card is* — two lines,
98
110
  * one line, or its own card. See `BoardCard`.
99
111
  *
@@ -105,9 +117,10 @@ export type BoardProps = {
105
117
  * *"No horizontal scroll, ever. The board becomes a segmented
106
118
  * control, never a pan surface."* A board that pans sideways hides
107
119
  * lanes behind a gesture with no affordance, and on a trackpad it
108
- * fights the browser's own back-navigation. So the narrow layout
109
- * shows one lane at a time and names the others in a `radiogroup`
110
- * that says how many cards each holds.
120
+ * fights the browser's own back-navigation. So the narrow workflow
121
+ * layout shows one lane at a time and names the others in a
122
+ * `radiogroup` that says how many cards each holds. A row layout
123
+ * wraps its cards inside each lane and also never pans.
111
124
  *
112
125
  * ### Moving a card is a first-class operation, and it is not a drag
113
126
  *
@@ -137,6 +150,7 @@ export const Board = ({
137
150
  className,
138
151
  headingLevel = 3,
139
152
  label,
153
+ laneLayout = "columns",
140
154
  lanes,
141
155
  moveIcon,
142
156
  narrowLaneKey,
@@ -249,7 +263,12 @@ export const Board = ({
249
263
  * board has no stray radiogroup in it.
250
264
  */}
251
265
  <SegmentedControl
252
- className="max-w-full flex-wrap cq-lg:hidden"
266
+ className={toClassName(
267
+ "max-w-full flex-wrap",
268
+ laneLayout === "rows"
269
+ ? "hidden"
270
+ : "cq-lg:hidden",
271
+ )}
253
272
  items={lanes.map((lane) => ({
254
273
  // Stacked rather than `Todo (6)`, because the count is
255
274
  // the reason to look: a lane picker that reads
@@ -276,7 +295,13 @@ export const Board = ({
276
295
  selectedValue={visibleLaneKey}
277
296
  />
278
297
 
279
- <div className="flex flex-col gap-4 cq-lg:flex-row cq-lg:items-start">
298
+ <div
299
+ className={toClassName(
300
+ "flex flex-col gap-4",
301
+ laneLayout === "columns" &&
302
+ "cq-lg:flex-row cq-lg:items-start",
303
+ )}
304
+ >
280
305
  {lanes.map((lane) => (
281
306
  <BoardLaneList
282
307
  headingLevel={headingLevel}
@@ -290,6 +315,7 @@ export const Board = ({
290
315
  }
291
316
  key={lane.key}
292
317
  lane={lane}
318
+ laneLayout={laneLayout}
293
319
  moveIcon={moveIcon}
294
320
  moveTargets={lanes
295
321
  .filter((one) => one.key !== lane.key)
@@ -135,8 +135,8 @@ type BoardItemTitleLink =
135
135
  href?: never
136
136
  onSelect?: never
137
137
  /**
138
- * Drawn instead of `title`, inside the card's own clamping box
139
- * — so it still truncates the way every other card does.
138
+ * Drawn instead of `title`, inside the card's own two-line
139
+ * clamping box — so it wraps the way every other card does.
140
140
  *
141
141
  * It **owns its navigation**: the board adds no link around it,
142
142
  * which is why `href` and `onSelect` are refused beside it.
@@ -151,6 +151,12 @@ export type BoardItem = BoardItemAccent &
151
151
  BoardItemTitleLink
152
152
 
153
153
  export type BoardCardProps = {
154
+ /**
155
+ * A grid card measures its own inline size for its inner layout.
156
+ * A list card inherits the lane's measurement, which is almost
157
+ * the same width and avoids an unnecessary nested container.
158
+ */
159
+ isInGrid: boolean
154
160
  item: BoardItem
155
161
  laneLabel: string
156
162
  /**
@@ -182,25 +188,25 @@ export type BoardCardProps = {
182
188
  * One row on the board — and *row* is only what it is at some
183
189
  * widths.
184
190
  *
185
- * ### The three shapes are one component, chosen by the lane
191
+ * ### The three shapes are one component, chosen by available space
186
192
  *
187
193
  * The requirement this was built against is unusually specific, and
188
194
  * it is specific because the owner answered "which row style?" with
189
195
  * *"all three, depending"*:
190
196
  *
191
- * | The lane is | The card is |
197
+ * | The card's available width is | The card is |
192
198
  * | --- | --- |
193
199
  * | narrower than `cq-sm` (24rem) | **two lines** — title clamped to two, metadata underneath, only the trailing slot beside it |
194
200
  * | `cq-sm` to `cq-lg` | **one line** — title ellipsised, metadata right-aligned |
195
201
  * | `cq-lg` (48rem) and wider | **a card** — its own border, surface and elevation, instead of a divider in a list |
196
202
  *
197
- * Every one of those is a **container** query against the lane's
198
- * list, never a media query, and the difference is not pedantry: a
199
- * lane in a three-up board is narrow on a 4K display, and the owner
200
- * browses zoomed in, so a 1500px window at 175% zoom is ~860
201
- * effective CSS pixels. Window width is not a proxy for the space
202
- * this card has. A `@media (max-width: …)` anywhere in this file
203
- * would be a defect.
203
+ * Every one of those is a **container** query, never a media query.
204
+ * A list card reads the lane because it fills that lane. A grid card
205
+ * is its own container because several cards share a wide row. A
206
+ * lane in a three-up board is narrow on a 4K display, and a zoomed
207
+ * browser can report far fewer effective CSS pixels than its window
208
+ * has. Window width is not a proxy for the space this card has. A
209
+ * `@media (max-width: …)` anywhere in this file would be a defect.
204
210
  *
205
211
  * It also dissolved a bug rather than only satisfying a preference:
206
212
  * a *fixed* two-line row collapsed its title to `a…` inside a narrow
@@ -249,6 +255,7 @@ export type BoardCardProps = {
249
255
  * answers this question exactly backwards.
250
256
  */
251
257
  export const BoardCard = ({
258
+ isInGrid,
252
259
  item,
253
260
  laneLabel,
254
261
  moveIcon,
@@ -287,13 +294,15 @@ export const BoardCard = ({
287
294
  const menuLabel = isMovable ? "Move" : "More"
288
295
 
289
296
  const titleBlock = (
290
- // `line-clamp-none` before `truncate`, because `line-clamp-2`
291
- // sets `display: -webkit-box` and `text-overflow` has nothing to
292
- // ellipsise inside one.
293
- //
294
297
  // A `titleContent` is clamped by the same box as a plain one —
295
298
  // it replaces the card's *words*, not the card's shape.
296
- <span className="line-clamp-2 cq-sm:line-clamp-none cq-sm:block cq-sm:truncate">
299
+ //
300
+ // A card gets more readable room as its lane grows. It must not
301
+ // spend that room by returning to a single ellipsised line: task
302
+ // titles are the card's primary text. Two lines cap card height,
303
+ // and `wrap-anywhere` keeps an unbroken URL or identifier from
304
+ // widening a row past its lane.
305
+ <span className="line-clamp-2 wrap-anywhere">
297
306
  {item.titleContent ?? item.title}
298
307
  </span>
299
308
  )
@@ -302,6 +311,7 @@ export const BoardCard = ({
302
311
  <li
303
312
  className={toClassName(
304
313
  "group relative flex gap-2 border-border-subtle border-b py-2 pe-1 last:border-b-0",
314
+ isInGrid && "@container",
305
315
  // At `cq-lg` the list stops being a list of rows: the
306
316
  // divider goes and each card grows its own box. The *list*
307
317
  // cannot do this to itself — it is the container, and a