@charcuterie/ui 3.0.0 → 3.1.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.
- package/README.md +10 -0
- package/dist/Badge/Badge.d.ts +33 -3
- package/dist/Badge/Badge.d.ts.map +1 -1
- package/dist/Badge/Badge.js +20 -2
- package/dist/Badge/Badge.js.map +1 -1
- package/dist/Board/Board.d.ts +119 -0
- package/dist/Board/Board.d.ts.map +1 -0
- package/dist/Board/Board.js +165 -0
- package/dist/Board/Board.js.map +1 -0
- package/dist/Board/BoardCard.d.ts +120 -0
- package/dist/Board/BoardCard.d.ts.map +1 -0
- package/dist/Board/BoardCard.js +77 -0
- package/dist/Board/BoardCard.js.map +1 -0
- package/dist/Board/BoardLaneList.d.ts +103 -0
- package/dist/Board/BoardLaneList.d.ts.map +1 -0
- package/dist/Board/BoardLaneList.js +69 -0
- package/dist/Board/BoardLaneList.js.map +1 -0
- package/dist/Board/boardMove.d.ts +116 -0
- package/dist/Board/boardMove.d.ts.map +1 -0
- package/dist/Board/boardMove.js +116 -0
- package/dist/Board/boardMove.js.map +1 -0
- package/dist/Board/useBoardDrag.d.ts +44 -0
- package/dist/Board/useBoardDrag.d.ts.map +1 -0
- package/dist/Board/useBoardDrag.js +237 -0
- package/dist/Board/useBoardDrag.js.map +1 -0
- package/dist/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox/Checkbox.js +15 -4
- package/dist/Checkbox/Checkbox.js.map +1 -1
- package/dist/DataTable/DataTable.d.ts +159 -0
- package/dist/DataTable/DataTable.d.ts.map +1 -0
- package/dist/DataTable/DataTable.js +197 -0
- package/dist/DataTable/DataTable.js.map +1 -0
- package/dist/DatePicker/DateGrid.d.ts +79 -0
- package/dist/DatePicker/DateGrid.d.ts.map +1 -0
- package/dist/DatePicker/DateGrid.js +220 -0
- package/dist/DatePicker/DateGrid.js.map +1 -0
- package/dist/DatePicker/DatePicker.d.ts +138 -0
- package/dist/DatePicker/DatePicker.d.ts.map +1 -0
- package/dist/DatePicker/DatePicker.js +384 -0
- package/dist/DatePicker/DatePicker.js.map +1 -0
- package/dist/DatePicker/datePresets.d.ts +29 -0
- package/dist/DatePicker/datePresets.d.ts.map +1 -0
- package/dist/DatePicker/datePresets.js +28 -0
- package/dist/DatePicker/datePresets.js.map +1 -0
- package/dist/DatePicker/parseDateInput.d.ts +106 -0
- package/dist/DatePicker/parseDateInput.d.ts.map +1 -0
- package/dist/DatePicker/parseDateInput.js +419 -0
- package/dist/DatePicker/parseDateInput.js.map +1 -0
- package/dist/DatePicker/plainDate.d.ts +167 -0
- package/dist/DatePicker/plainDate.d.ts.map +1 -0
- package/dist/DatePicker/plainDate.js +272 -0
- package/dist/DatePicker/plainDate.js.map +1 -0
- package/dist/MarkdownEditor/MarkdownEditor.d.ts +147 -0
- package/dist/MarkdownEditor/MarkdownEditor.d.ts.map +1 -0
- package/dist/MarkdownEditor/MarkdownEditor.js +492 -0
- package/dist/MarkdownEditor/MarkdownEditor.js.map +1 -0
- package/dist/MarkdownEditor/markdownCommands.d.ts +202 -0
- package/dist/MarkdownEditor/markdownCommands.d.ts.map +1 -0
- package/dist/MarkdownEditor/markdownCommands.js +379 -0
- package/dist/MarkdownEditor/markdownCommands.js.map +1 -0
- package/dist/MarkdownEditor/markdownSpans.d.ts +92 -0
- package/dist/MarkdownEditor/markdownSpans.d.ts.map +1 -0
- package/dist/MarkdownEditor/markdownSpans.js +303 -0
- package/dist/MarkdownEditor/markdownSpans.js.map +1 -0
- package/dist/categoricalStyles.d.ts +53 -0
- package/dist/categoricalStyles.d.ts.map +1 -0
- package/dist/categoricalStyles.js +195 -0
- package/dist/categoricalStyles.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/Badge/Badge.mdx +46 -0
- package/src/Badge/Badge.stories.tsx +98 -4
- package/src/Badge/Badge.test.tsx +157 -2
- package/src/Badge/Badge.tsx +49 -3
- package/src/Board/Board.mdx +199 -0
- package/src/Board/Board.stories.tsx +707 -0
- package/src/Board/Board.test.tsx +310 -0
- package/src/Board/Board.tsx +333 -0
- package/src/Board/BoardCard.tsx +290 -0
- package/src/Board/BoardLaneList.tsx +275 -0
- package/src/Board/boardMove.test.ts +213 -0
- package/src/Board/boardMove.ts +225 -0
- package/src/Board/useBoardDrag.ts +413 -0
- package/src/Checkbox/Checkbox.tsx +34 -3
- package/src/DataTable/DataTable.mdx +123 -0
- package/src/DataTable/DataTable.stories.tsx +411 -0
- package/src/DataTable/DataTable.test.tsx +386 -0
- package/src/DataTable/DataTable.tsx +497 -0
- package/src/DatePicker/DateGrid.tsx +467 -0
- package/src/DatePicker/DatePicker.mdx +170 -0
- package/src/DatePicker/DatePicker.stories.tsx +268 -0
- package/src/DatePicker/DatePicker.test.tsx +455 -0
- package/src/DatePicker/DatePicker.tsx +852 -0
- package/src/DatePicker/datePresets.ts +34 -0
- package/src/DatePicker/parseDateInput.test.ts +187 -0
- package/src/DatePicker/parseDateInput.ts +629 -0
- package/src/DatePicker/plainDate.test.ts +375 -0
- package/src/DatePicker/plainDate.ts +465 -0
- package/src/MarkdownEditor/MarkdownEditor.mdx +189 -0
- package/src/MarkdownEditor/MarkdownEditor.stories.tsx +267 -0
- package/src/MarkdownEditor/MarkdownEditor.test.tsx +627 -0
- package/src/MarkdownEditor/MarkdownEditor.tsx +862 -0
- package/src/MarkdownEditor/markdownCommands.test.ts +384 -0
- package/src/MarkdownEditor/markdownCommands.ts +566 -0
- package/src/MarkdownEditor/markdownSpans.test.ts +217 -0
- package/src/MarkdownEditor/markdownSpans.ts +458 -0
- package/src/argTypes.storyHelpers.ts +39 -0
- package/src/categoricalStyles.ts +244 -0
- package/src/index.ts +89 -0
- package/src/sourceRules.test.ts +52 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categoricalStyles.js","sourceRoot":"","sources":["../src/categoricalStyles.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -42,6 +42,12 @@ export type { AlertProps, AlertSize, } from "./Alert/Alert.tsx";
|
|
|
42
42
|
export { Alert } from "./Alert/Alert.tsx";
|
|
43
43
|
export type { BadgeProps } from "./Badge/Badge.tsx";
|
|
44
44
|
export { Badge } from "./Badge/Badge.tsx";
|
|
45
|
+
export type { BoardMove, BoardProps, } from "./Board/Board.tsx";
|
|
46
|
+
export { Board } from "./Board/Board.tsx";
|
|
47
|
+
export type { BoardItem } from "./Board/BoardCard.tsx";
|
|
48
|
+
export type { BoardLane } from "./Board/BoardLaneList.tsx";
|
|
49
|
+
export type { BoardDropLane, BoardDropTarget, BoardPoint, BoardRect, } from "./Board/boardMove.ts";
|
|
50
|
+
export { chooseDropIndex, chooseDropTarget, describeMove, getIsMoveMeaningful, toSettledIndex, } from "./Board/boardMove.ts";
|
|
45
51
|
export type { ButtonProps } from "./Button/Button.tsx";
|
|
46
52
|
export { Button } from "./Button/Button.tsx";
|
|
47
53
|
export type { ButtonLinkProps } from "./ButtonLink/ButtonLink.tsx";
|
|
@@ -56,8 +62,19 @@ export type { ColorSchemeIcons, ColorSchemeToggleProps, } from "./ColorSchemeTog
|
|
|
56
62
|
export { ColorSchemeToggle } from "./ColorSchemeToggle/ColorSchemeToggle.tsx";
|
|
57
63
|
export type { ComboboxProps } from "./Combobox/Combobox.tsx";
|
|
58
64
|
export { Combobox } from "./Combobox/Combobox.tsx";
|
|
65
|
+
export { CATEGORICAL_APPEARANCE_CLASS, CATEGORICAL_CONTENT_CLASS, CATEGORICAL_HOVER_CLASS, CATEGORICAL_SOLID_FILL_CLASS, } from "./categoricalStyles.ts";
|
|
59
66
|
export type { BadgeSize } from "./controlStyles.ts";
|
|
60
67
|
export { BADGE_SIZE_CLASS, CONTROL_BASE_CLASS, CONTROL_SIZE_CLASS, DOT_SIZE_CLASS, getControlClassName, ICON_CONTROL_SIZE_CLASS, MIN_TOUCH_TARGET_CLASS, SPINNER_SIZE_CLASS, } from "./controlStyles.ts";
|
|
68
|
+
export type { DataTableColumn, DataTableProps, DataTableSelection, DataTableSort, } from "./DataTable/DataTable.tsx";
|
|
69
|
+
export { DataTable } from "./DataTable/DataTable.tsx";
|
|
70
|
+
export type { DatePickerProps } from "./DatePicker/DatePicker.tsx";
|
|
71
|
+
export { DatePicker } from "./DatePicker/DatePicker.tsx";
|
|
72
|
+
export type { DatePreset } from "./DatePicker/datePresets.ts";
|
|
73
|
+
export { DEFAULT_DATE_PRESETS } from "./DatePicker/datePresets.ts";
|
|
74
|
+
export type { DateInputKeywords, DateInputResult, ParseDateInputOptions, } from "./DatePicker/parseDateInput.ts";
|
|
75
|
+
export { DEFAULT_DATE_INPUT_KEYWORDS, parseDateInput, } from "./DatePicker/parseDateInput.ts";
|
|
76
|
+
export type { DateRange, PlainDate, PlainDateFormatOptions, } from "./DatePicker/plainDate.ts";
|
|
77
|
+
export { addDays, addMonths, clampPlainDate, comparePlainDates, formatPlainDate, getDayNumber, getDaysBetween, getDaysInMonth, getFirstDayOfWeek, getIsLeapYear, getIsSameDay, getIsValidPlainDate, getIsWithinRange, getLocalPlainDate, getMonthNames, getPlainDateFromDayNumber, getWeekday, getWeekdayNames, parseIsoDate, toIsoDate, } from "./DatePicker/plainDate.ts";
|
|
61
78
|
export type { DialogProps, DialogSize, } from "./Dialog/Dialog.tsx";
|
|
62
79
|
export { Dialog } from "./Dialog/Dialog.tsx";
|
|
63
80
|
export type { EmptyStateProps, EmptyStateSize, } from "./EmptyState/EmptyState.tsx";
|
|
@@ -84,6 +101,11 @@ export type { LogLine, LogViewerProps, } from "./LogViewer/LogViewer.tsx";
|
|
|
84
101
|
export { LogViewer } from "./LogViewer/LogViewer.tsx";
|
|
85
102
|
export type { MainProps } from "./Main/Main.tsx";
|
|
86
103
|
export { Main } from "./Main/Main.tsx";
|
|
104
|
+
export type { MarkdownEditorProps, MarkdownImageUpload, } from "./MarkdownEditor/MarkdownEditor.tsx";
|
|
105
|
+
export { MarkdownEditor } from "./MarkdownEditor/MarkdownEditor.tsx";
|
|
106
|
+
export { toMarkdownImage } from "./MarkdownEditor/markdownCommands.ts";
|
|
107
|
+
export type { MarkdownLine, MarkdownLineKind, MarkdownSpan, MarkdownSpanKind, } from "./MarkdownEditor/markdownSpans.ts";
|
|
108
|
+
export { toLineIndex, toMarkdownLines, } from "./MarkdownEditor/markdownSpans.ts";
|
|
87
109
|
export type { MediaTileProps, MediaTileRatio, } from "./MediaTile/MediaTile.tsx";
|
|
88
110
|
export { MediaTile } from "./MediaTile/MediaTile.tsx";
|
|
89
111
|
export type { MediaStatus } from "./MediaTile/mediaStatus.ts";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -36,6 +36,8 @@ export { chooseColumns, DEFAULT_MAX_AUTO_COLUMNS, DEFAULT_MAX_MANUAL_COLUMNS, DE
|
|
|
36
36
|
export { localStorageColumnPersistence, readStoredChoice, useAdaptiveColumns, viewportBlockSizeResolver, } from "./AdaptiveGrid/useAdaptiveColumns.js";
|
|
37
37
|
export { Alert } from "./Alert/Alert.js";
|
|
38
38
|
export { Badge } from "./Badge/Badge.js";
|
|
39
|
+
export { Board } from "./Board/Board.js";
|
|
40
|
+
export { chooseDropIndex, chooseDropTarget, describeMove, getIsMoveMeaningful, toSettledIndex, } from "./Board/boardMove.js";
|
|
39
41
|
export { Button } from "./Button/Button.js";
|
|
40
42
|
export { ButtonLink } from "./ButtonLink/ButtonLink.js";
|
|
41
43
|
export { Card } from "./Card/Card.js";
|
|
@@ -43,7 +45,13 @@ export { Checkbox } from "./Checkbox/Checkbox.js";
|
|
|
43
45
|
export { ColorSchemeSwitcher } from "./ColorSchemeSwitcher/ColorSchemeSwitcher.js";
|
|
44
46
|
export { ColorSchemeToggle } from "./ColorSchemeToggle/ColorSchemeToggle.js";
|
|
45
47
|
export { Combobox } from "./Combobox/Combobox.js";
|
|
48
|
+
export { CATEGORICAL_APPEARANCE_CLASS, CATEGORICAL_CONTENT_CLASS, CATEGORICAL_HOVER_CLASS, CATEGORICAL_SOLID_FILL_CLASS, } from "./categoricalStyles.js";
|
|
46
49
|
export { BADGE_SIZE_CLASS, CONTROL_BASE_CLASS, CONTROL_SIZE_CLASS, DOT_SIZE_CLASS, getControlClassName, ICON_CONTROL_SIZE_CLASS, MIN_TOUCH_TARGET_CLASS, SPINNER_SIZE_CLASS, } from "./controlStyles.js";
|
|
50
|
+
export { DataTable } from "./DataTable/DataTable.js";
|
|
51
|
+
export { DatePicker } from "./DatePicker/DatePicker.js";
|
|
52
|
+
export { DEFAULT_DATE_PRESETS } from "./DatePicker/datePresets.js";
|
|
53
|
+
export { DEFAULT_DATE_INPUT_KEYWORDS, parseDateInput, } from "./DatePicker/parseDateInput.js";
|
|
54
|
+
export { addDays, addMonths, clampPlainDate, comparePlainDates, formatPlainDate, getDayNumber, getDaysBetween, getDaysInMonth, getFirstDayOfWeek, getIsLeapYear, getIsSameDay, getIsValidPlainDate, getIsWithinRange, getLocalPlainDate, getMonthNames, getPlainDateFromDayNumber, getWeekday, getWeekdayNames, parseIsoDate, toIsoDate, } from "./DatePicker/plainDate.js";
|
|
47
55
|
export { Dialog } from "./Dialog/Dialog.js";
|
|
48
56
|
export { EmptyState } from "./EmptyState/EmptyState.js";
|
|
49
57
|
export { Field } from "./Field/Field.js";
|
|
@@ -57,6 +65,9 @@ export { Listbox } from "./Listbox/Listbox.js";
|
|
|
57
65
|
export { LiveStatusIndicator } from "./LiveStatusIndicator/LiveStatusIndicator.js";
|
|
58
66
|
export { LogViewer } from "./LogViewer/LogViewer.js";
|
|
59
67
|
export { Main } from "./Main/Main.js";
|
|
68
|
+
export { MarkdownEditor } from "./MarkdownEditor/MarkdownEditor.js";
|
|
69
|
+
export { toMarkdownImage } from "./MarkdownEditor/markdownCommands.js";
|
|
70
|
+
export { toLineIndex, toMarkdownLines, } from "./MarkdownEditor/markdownSpans.js";
|
|
60
71
|
export { MediaTile } from "./MediaTile/MediaTile.js";
|
|
61
72
|
export { mediaTransitions } from "./MediaTile/mediaStatus.js";
|
|
62
73
|
export { Menu } from "./Menu/Menu.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAOH,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA2B,CAAA;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAiC,CAAA;AAE9D,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,iCAAiC,CAAA;AAKxC,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,sCAAsC,CAAA;AAK7C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAmB,CAAA;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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.
|
|
3
|
+
"version": "3.1.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",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@charcuterie/logic": "2.0.0",
|
|
52
|
-
"@charcuterie/tokens": "1.
|
|
52
|
+
"@charcuterie/tokens": "1.6.0",
|
|
53
53
|
"@floating-ui/react": "^0.27.20",
|
|
54
54
|
"@tanstack/react-virtual": "^3.13.12",
|
|
55
55
|
"tailwind-merge": "^3.6.0"
|
package/src/Badge/Badge.mdx
CHANGED
|
@@ -32,6 +32,52 @@ compile error here rather than a blank pill in production.
|
|
|
32
32
|
|
|
33
33
|
<Canvas of={BadgeStories.Interactive} />
|
|
34
34
|
|
|
35
|
+
## Colour a user picked: `categorical`
|
|
36
|
+
|
|
37
|
+
`intent` is six colours that each **mean** something, and that is exactly wrong for a
|
|
38
|
+
label somebody named "Homelab". So there is a second family — numbered, not named:
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
<Badge categorical={4}>Homelab</Badge>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Ten indexes, each with the same seven roles an intent has, generated per variant and
|
|
45
|
+
contrast-gated in **both** schemes. The point of the gating is that the choice is safe:
|
|
46
|
+
a user picking from this palette cannot pick one that is unreadable.
|
|
47
|
+
|
|
48
|
+
<Canvas of={BadgeStories.Categorical} />
|
|
49
|
+
|
|
50
|
+
`intent` and `categorical` are **mutually exclusive in the type**. A badge is one colour,
|
|
51
|
+
and `<Badge intent="danger" categorical={3}>` is a question with no answer rather than a
|
|
52
|
+
precedence rule to remember.
|
|
53
|
+
|
|
54
|
+
### Rows that predate the feature
|
|
55
|
+
|
|
56
|
+
`getCategoricalIndex(key)` from `@charcuterie/tokens` is a pure function from a string to
|
|
57
|
+
an index — stable across runs, machines and a server-rendered copy — so a hundred existing
|
|
58
|
+
labels get colours with no migration and no `Math.random()` handing the same row a
|
|
59
|
+
different colour on every reload. It is a **fallback**, never an override:
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
<Badge categorical={label.categorical ?? getCategoricalIndex(label.id)}>
|
|
63
|
+
{label.name}
|
|
64
|
+
</Badge>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Hash the row's **id** where one exists. The function deliberately does not normalize, so
|
|
68
|
+
renaming a label renames its colour too — and with ten colours, two labels in twelve will
|
|
69
|
+
share one. That is a property of the palette, not of the hash: the colour helps you scan a
|
|
70
|
+
list, the text is what says which label it is.
|
|
71
|
+
|
|
72
|
+
<Canvas of={BadgeStories.CategoricalLabels} />
|
|
73
|
+
|
|
74
|
+
### When it is `Swatch` instead
|
|
75
|
+
|
|
76
|
+
`Swatch` takes a colour arriving from the world — a physical sticker on a controller, an
|
|
77
|
+
accent extracted off an album — which is arbitrary, unthemeable and uncheckable. This
|
|
78
|
+
family is a curated set the design system owns and re-themes. Ungoverned colour is
|
|
79
|
+
`Swatch`; a choice from a palette is `categorical`.
|
|
80
|
+
|
|
35
81
|
## No implicit role
|
|
36
82
|
|
|
37
83
|
A badge is a word about something else. It is not a live region, and `role="status"` would
|
|
@@ -2,8 +2,16 @@ import {
|
|
|
2
2
|
asyncTransitions,
|
|
3
3
|
useStatus,
|
|
4
4
|
} from "@charcuterie/logic"
|
|
5
|
+
import {
|
|
6
|
+
CATEGORICAL_HUES,
|
|
7
|
+
CATEGORICAL_INDEXES,
|
|
8
|
+
getCategoricalIndex,
|
|
9
|
+
} from "@charcuterie/tokens"
|
|
5
10
|
import type { Meta, StoryObj } from "@storybook/react"
|
|
6
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
categoricalArgType,
|
|
13
|
+
intentArgType,
|
|
14
|
+
} from "../argTypes.storyHelpers.ts"
|
|
7
15
|
import { Button } from "../Button/Button.tsx"
|
|
8
16
|
import {
|
|
9
17
|
ContainerBoard,
|
|
@@ -32,7 +40,10 @@ const meta = {
|
|
|
32
40
|
title: "Components/Badge",
|
|
33
41
|
component: Badge,
|
|
34
42
|
parameters: { layout: "padded" },
|
|
35
|
-
argTypes: {
|
|
43
|
+
argTypes: {
|
|
44
|
+
categorical: categoricalArgType,
|
|
45
|
+
intent: intentArgType,
|
|
46
|
+
},
|
|
36
47
|
// The component's own defaults, restated — Storybook does not
|
|
37
48
|
// seed `args` from docgen, so an unstated default shows in the
|
|
38
49
|
// props table with nothing selected in its control.
|
|
@@ -59,7 +70,10 @@ export const Default: Story = {
|
|
|
59
70
|
|
|
60
71
|
export const AllVariants: Story = {
|
|
61
72
|
args: { children: "running" },
|
|
62
|
-
|
|
73
|
+
// `categorical` is destructured out rather than spread: this board
|
|
74
|
+
// is about intents, and the type refuses a badge holding both — a
|
|
75
|
+
// badge is one colour.
|
|
76
|
+
render: ({ categorical, ...badgeProps }) => (
|
|
63
77
|
<StorySection title="Six intents x three appearances. rip-deck declares this map twice, in two files, with hardcoded hexes.">
|
|
64
78
|
<StoryGrid columns={6}>
|
|
65
79
|
{(["soft", "solid", "outline"] as const).flatMap(
|
|
@@ -86,7 +100,7 @@ export const AllVariants: Story = {
|
|
|
86
100
|
|
|
87
101
|
export const AllStates: Story = {
|
|
88
102
|
args: { children: "running" },
|
|
89
|
-
render: (badgeProps) => (
|
|
103
|
+
render: ({ categorical, ...badgeProps }) => (
|
|
90
104
|
<StorySection title="A badge is static — no hover, no focus, no disabled. What varies is size, an optional glyph, and how it sits in a real row.">
|
|
91
105
|
<StoryGrid columns={2}>
|
|
92
106
|
<StoryCell label="sm">
|
|
@@ -123,6 +137,86 @@ export const AllStates: Story = {
|
|
|
123
137
|
),
|
|
124
138
|
}
|
|
125
139
|
|
|
140
|
+
/**
|
|
141
|
+
* The numbered family, which means nothing on purpose.
|
|
142
|
+
*
|
|
143
|
+
* Ten hues, contrast-gated in both schemes and both directions, so
|
|
144
|
+
* a user picking a colour for a label cannot pick one that is
|
|
145
|
+
* unreadable. That is the whole difference between this and
|
|
146
|
+
* `Swatch`: `Swatch` takes a colour arriving from the world — a
|
|
147
|
+
* physical sticker, an accent pulled off an album cover — and can
|
|
148
|
+
* make no promises about it at all.
|
|
149
|
+
*
|
|
150
|
+
* Flip the scheme in the toolbar. Every pill here holds its ratio
|
|
151
|
+
* on both sides, and the ring stays separable on both.
|
|
152
|
+
*/
|
|
153
|
+
export const Categorical: Story = {
|
|
154
|
+
args: { children: "label" },
|
|
155
|
+
render: ({ intent, ...badgeProps }) => (
|
|
156
|
+
<StorySection title="Ten indexes x three appearances. Numbered, not named — a user's label is not a status.">
|
|
157
|
+
<StoryGrid columns={5}>
|
|
158
|
+
{(["soft", "solid", "outline"] as const).flatMap(
|
|
159
|
+
(appearance) =>
|
|
160
|
+
CATEGORICAL_INDEXES.map((index) => (
|
|
161
|
+
<StoryCell
|
|
162
|
+
key={`${appearance}-${index}`}
|
|
163
|
+
label={`${appearance} · ${index} ${CATEGORICAL_HUES[index].label}`}
|
|
164
|
+
>
|
|
165
|
+
<Badge
|
|
166
|
+
{...badgeProps}
|
|
167
|
+
appearance={appearance}
|
|
168
|
+
categorical={index}
|
|
169
|
+
>
|
|
170
|
+
{CATEGORICAL_HUES[index].label}
|
|
171
|
+
</Badge>
|
|
172
|
+
</StoryCell>
|
|
173
|
+
)),
|
|
174
|
+
)}
|
|
175
|
+
</StoryGrid>
|
|
176
|
+
</StorySection>
|
|
177
|
+
),
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Invented labels, coloured by `getCategoricalIndex(name)` — the
|
|
182
|
+
* deterministic fallback for the rows that existed before anybody
|
|
183
|
+
* thought about colour.
|
|
184
|
+
*
|
|
185
|
+
* The point of the row is what it looks like *as a row*: this is
|
|
186
|
+
* how a task list reads when a dozen labels are on screen at once,
|
|
187
|
+
* which is the only place a categorical palette is really tested.
|
|
188
|
+
* Nobody compares two swatches in a specimen board; they scan a
|
|
189
|
+
* list for the green one.
|
|
190
|
+
*/
|
|
191
|
+
export const CategoricalLabels: Story = {
|
|
192
|
+
args: { children: "label" },
|
|
193
|
+
render: () => (
|
|
194
|
+
<StorySection title="Colour from the name, so a hundred pre-existing rows need no migration — and a stored pick still wins.">
|
|
195
|
+
<div className="flex flex-wrap gap-2">
|
|
196
|
+
{[
|
|
197
|
+
"Homelab",
|
|
198
|
+
"Errands",
|
|
199
|
+
"Anime backlog",
|
|
200
|
+
"Garage",
|
|
201
|
+
"Kitchen",
|
|
202
|
+
"Reading",
|
|
203
|
+
"Music library",
|
|
204
|
+
"Firmware",
|
|
205
|
+
"Bikes",
|
|
206
|
+
"Prints",
|
|
207
|
+
].map((label) => (
|
|
208
|
+
<Badge
|
|
209
|
+
categorical={getCategoricalIndex(label)}
|
|
210
|
+
key={label}
|
|
211
|
+
>
|
|
212
|
+
{label}
|
|
213
|
+
</Badge>
|
|
214
|
+
))}
|
|
215
|
+
</div>
|
|
216
|
+
</StorySection>
|
|
217
|
+
),
|
|
218
|
+
}
|
|
219
|
+
|
|
126
220
|
/**
|
|
127
221
|
* A label longer than the space it is given, which is the case that
|
|
128
222
|
* shipped broken: `shrink-0` plus `whitespace-nowrap` and no cap let
|
package/src/Badge/Badge.test.tsx
CHANGED
|
@@ -8,8 +8,13 @@ import { test } from "vitest"
|
|
|
8
8
|
import { mountStory } from "../mountStory.testHelpers.ts"
|
|
9
9
|
import meta, * as stories from "./Badge.stories.tsx"
|
|
10
10
|
|
|
11
|
-
const {
|
|
12
|
-
|
|
11
|
+
const {
|
|
12
|
+
Categorical,
|
|
13
|
+
CategoricalLabels,
|
|
14
|
+
Default,
|
|
15
|
+
Interactive,
|
|
16
|
+
Responsive,
|
|
17
|
+
} = composeStories(stories)
|
|
13
18
|
|
|
14
19
|
test("the text is queryable, which is what an agent matches on", async () => {
|
|
15
20
|
const { canvas } = await mountStory(Default)
|
|
@@ -151,3 +156,153 @@ test("the responsive board shows both modes at three widths", async () => {
|
|
|
151
156
|
canvas.getAllByText(LONG_LABEL),
|
|
152
157
|
).toHaveLength(6)
|
|
153
158
|
})
|
|
159
|
+
|
|
160
|
+
// ---------------------------------------------------------------
|
|
161
|
+
// The categorical family
|
|
162
|
+
// ---------------------------------------------------------------
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* The assertion this component most needs, and the one every other
|
|
166
|
+
* test here structurally cannot make.
|
|
167
|
+
*
|
|
168
|
+
* Docket shipped `--color-danger-9` — a Radix-style step Charcuterie
|
|
169
|
+
* has never had. It resolved to nothing, painted transparent, and
|
|
170
|
+
* passed every "is the badge rendered" check in the suite, because
|
|
171
|
+
* a rendered element with no background is still a rendered
|
|
172
|
+
* element. `getByText` cannot see it. `toBeVisible` cannot see it.
|
|
173
|
+
* The only thing that can is asking the browser what colour it
|
|
174
|
+
* actually painted.
|
|
175
|
+
*/
|
|
176
|
+
const getPaintedColours = (badge: HTMLElement) => {
|
|
177
|
+
const style = globalThis.getComputedStyle(badge)
|
|
178
|
+
|
|
179
|
+
return {
|
|
180
|
+
background: style.backgroundColor,
|
|
181
|
+
border: style.borderTopColor,
|
|
182
|
+
text: style.color,
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
const TRANSPARENT = "rgba(0, 0, 0, 0)"
|
|
187
|
+
|
|
188
|
+
test("a categorical badge paints a real colour, not a name that resolves to nothing", async () => {
|
|
189
|
+
const { canvas } = await mountStory(
|
|
190
|
+
composeStory(
|
|
191
|
+
{ args: { categorical: 5, children: "Homelab" } },
|
|
192
|
+
meta,
|
|
193
|
+
),
|
|
194
|
+
)
|
|
195
|
+
|
|
196
|
+
const badge = canvas.getByText("Homelab")
|
|
197
|
+
.parentElement as HTMLElement
|
|
198
|
+
|
|
199
|
+
const painted = getPaintedColours(badge)
|
|
200
|
+
|
|
201
|
+
expect(painted.background).not.toBe(TRANSPARENT)
|
|
202
|
+
|
|
203
|
+
expect(painted.border).not.toBe(TRANSPARENT)
|
|
204
|
+
|
|
205
|
+
// …and it is *the token's* value, not merely some colour. A
|
|
206
|
+
// utility resolving to an inherited or UA default would clear the
|
|
207
|
+
// check above and still be the bug.
|
|
208
|
+
const expected = globalThis
|
|
209
|
+
.getComputedStyle(document.documentElement)
|
|
210
|
+
.getPropertyValue("--color-categorical-5-surface")
|
|
211
|
+
.trim()
|
|
212
|
+
|
|
213
|
+
expect(expected).toMatch(/^#[0-9A-Fa-f]{6}$/)
|
|
214
|
+
|
|
215
|
+
const [red, green, blue] = [1, 3, 5].map((offset) =>
|
|
216
|
+
Number.parseInt(expected.slice(offset, offset + 2), 16),
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
expect(painted.background).toBe(
|
|
220
|
+
`rgb(${red}, ${green}, ${blue})`,
|
|
221
|
+
)
|
|
222
|
+
})
|
|
223
|
+
|
|
224
|
+
test("ten indexes paint ten different colours", async () => {
|
|
225
|
+
// The DOM half of the distinctness gate in `@charcuterie/tokens`.
|
|
226
|
+
// That one measures the token values; this one measures what the
|
|
227
|
+
// browser did with them, which is where an index silently falling
|
|
228
|
+
// back to its neighbour's utility would show up.
|
|
229
|
+
const { canvas } = await mountStory(Categorical)
|
|
230
|
+
|
|
231
|
+
const solids = new Set(
|
|
232
|
+
canvas
|
|
233
|
+
.getAllByText(
|
|
234
|
+
/^(Red|Orange|Amber|Lime|Green|Teal|Blue|Indigo|Purple|Pink)$/,
|
|
235
|
+
)
|
|
236
|
+
.map(
|
|
237
|
+
(label: HTMLElement) =>
|
|
238
|
+
getPaintedColours(
|
|
239
|
+
label.parentElement as HTMLElement,
|
|
240
|
+
).background,
|
|
241
|
+
),
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
solids.delete(TRANSPARENT)
|
|
245
|
+
|
|
246
|
+
// Three appearances x ten indexes, and `outline` is transparent
|
|
247
|
+
// by design — so twenty painted fills, all different.
|
|
248
|
+
expect(solids.size).toBe(20)
|
|
249
|
+
})
|
|
250
|
+
|
|
251
|
+
test("the same label name always gets the same colour", async () => {
|
|
252
|
+
// The whole point of `getCategoricalIndex`: a hundred rows that
|
|
253
|
+
// predate the feature need no migration, and the answer must not
|
|
254
|
+
// move between renders, machines, or a server-rendered copy.
|
|
255
|
+
const first = await mountStory(CategoricalLabels)
|
|
256
|
+
|
|
257
|
+
const firstColour = getPaintedColours(
|
|
258
|
+
first.canvas.getByText("Homelab")
|
|
259
|
+
.parentElement as HTMLElement,
|
|
260
|
+
).background
|
|
261
|
+
|
|
262
|
+
const second = await mountStory(CategoricalLabels)
|
|
263
|
+
|
|
264
|
+
expect(
|
|
265
|
+
getPaintedColours(
|
|
266
|
+
second.canvas.getByText("Homelab")
|
|
267
|
+
.parentElement as HTMLElement,
|
|
268
|
+
).background,
|
|
269
|
+
).toBe(firstColour)
|
|
270
|
+
|
|
271
|
+
// And two different names do not all collapse onto one colour,
|
|
272
|
+
// which a stable-but-useless hash would also satisfy.
|
|
273
|
+
expect(
|
|
274
|
+
getPaintedColours(
|
|
275
|
+
second.canvas.getByText("Errands")
|
|
276
|
+
.parentElement as HTMLElement,
|
|
277
|
+
).background,
|
|
278
|
+
).not.toBe(firstColour)
|
|
279
|
+
})
|
|
280
|
+
|
|
281
|
+
test("a categorical badge keeps every behaviour an intent badge has", async () => {
|
|
282
|
+
// `overflow`, `size` and the clipping readout are the component's,
|
|
283
|
+
// not the intent's — but a new prop threaded through a class map
|
|
284
|
+
// is exactly where that quietly stops being true.
|
|
285
|
+
const { canvasElement } = await mountStory(
|
|
286
|
+
composeStory(
|
|
287
|
+
{
|
|
288
|
+
args: {
|
|
289
|
+
categorical: 8,
|
|
290
|
+
children: LONG_LABEL,
|
|
291
|
+
overflow: "truncate",
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
meta,
|
|
295
|
+
),
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
canvasElement.style.inlineSize = "10rem"
|
|
299
|
+
|
|
300
|
+
const badge =
|
|
301
|
+
canvasElement.firstElementChild as HTMLElement
|
|
302
|
+
|
|
303
|
+
await waitFor(() => {
|
|
304
|
+
expect(badge).toHaveAttribute("title", LONG_LABEL)
|
|
305
|
+
})
|
|
306
|
+
|
|
307
|
+
expect(badge.textContent).toBe(LONG_LABEL)
|
|
308
|
+
})
|
package/src/Badge/Badge.tsx
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
CategoricalIndex,
|
|
3
|
+
IntentName,
|
|
4
|
+
} from "@charcuterie/tokens"
|
|
2
5
|
import type {
|
|
3
6
|
ComponentPropsWithRef,
|
|
4
7
|
ReactNode,
|
|
5
8
|
} from "react"
|
|
6
9
|
|
|
10
|
+
import { CATEGORICAL_APPEARANCE_CLASS } from "../categoricalStyles.ts"
|
|
7
11
|
import type { BadgeSize } from "../controlStyles.ts"
|
|
8
12
|
import { BADGE_SIZE_CLASS } from "../controlStyles.ts"
|
|
9
13
|
import type { IntentAppearance } from "../intentStyles.ts"
|
|
@@ -13,6 +17,22 @@ import { useIsTextClipped } from "./useIsTextClipped.ts"
|
|
|
13
17
|
|
|
14
18
|
export type BadgeProps = ComponentPropsWithRef<"span"> & {
|
|
15
19
|
appearance?: Exclude<IntentAppearance, "ghost">
|
|
20
|
+
/**
|
|
21
|
+
* A numbered, **non-semantic** colour: 1–10, no meaning attached.
|
|
22
|
+
*
|
|
23
|
+
* For a badge whose colour the user picked — a Docket label, a
|
|
24
|
+
* project, a chart series — where `intent` would be a lie. A
|
|
25
|
+
* "Homelab" label is not a `danger`, and the palette is curated
|
|
26
|
+
* and contrast-gated in both schemes precisely so the user cannot
|
|
27
|
+
* pick one that is unreadable. `getCategoricalIndex(key)` from
|
|
28
|
+
* `@charcuterie/tokens` is the stable fallback for a row nobody
|
|
29
|
+
* has chosen a colour for yet.
|
|
30
|
+
*
|
|
31
|
+
* Mutually exclusive with `intent` **in the type**: a badge is one
|
|
32
|
+
* colour, and passing both is a question with no answer rather
|
|
33
|
+
* than a precedence rule to remember.
|
|
34
|
+
*/
|
|
35
|
+
categorical?: CategoricalIndex
|
|
16
36
|
children: ReactNode
|
|
17
37
|
icon?: ReactNode
|
|
18
38
|
intent?: IntentName
|
|
@@ -28,7 +48,14 @@ export type BadgeProps = ComponentPropsWithRef<"span"> & {
|
|
|
28
48
|
*/
|
|
29
49
|
overflow?: "truncate" | "wrap"
|
|
30
50
|
size?: BadgeSize
|
|
31
|
-
|
|
51
|
+
/**
|
|
52
|
+
* The exclusivity, and it is deliberately the *only* thing this
|
|
53
|
+
* arm says. Both props stay declared above so `react-docgen` can
|
|
54
|
+
* see them and `storyControls.test.ts` can require a control for
|
|
55
|
+
* each; this arm's whole job is to refuse the case where both
|
|
56
|
+
* arrive with a value.
|
|
57
|
+
*/
|
|
58
|
+
} & ({ categorical?: never } | { intent?: never })
|
|
32
59
|
|
|
33
60
|
/**
|
|
34
61
|
* Four repos, and rip-deck declares the **identical** `TONE_CLASS`
|
|
@@ -54,6 +81,16 @@ export type BadgeProps = ComponentPropsWithRef<"span"> & {
|
|
|
54
81
|
* asserts the text is queryable, which is what an agent actually
|
|
55
82
|
* matches on.
|
|
56
83
|
*
|
|
84
|
+
* **`intent` or `categorical`, never both.** The two families are
|
|
85
|
+
* both seven roles wide and both paint a pill, and they answer
|
|
86
|
+
* opposite questions: an intent is a *claim* the design system
|
|
87
|
+
* makes (`danger` says what happens if you press the thing), and a
|
|
88
|
+
* categorical index is a claim about nothing at all — it is a
|
|
89
|
+
* colour a user picked for a label. Which is why the exclusivity is
|
|
90
|
+
* in the type rather than in a precedence rule: a badge is one
|
|
91
|
+
* colour, and `<Badge intent="danger" categorical={3}>` is a
|
|
92
|
+
* question with no answer.
|
|
93
|
+
*
|
|
57
94
|
* **It is capped at its container.** `shrink-0` and
|
|
58
95
|
* `whitespace-nowrap` alone let a long label paint straight through
|
|
59
96
|
* the neighbouring column — no clipping, no error, just a pill lying
|
|
@@ -62,6 +99,7 @@ export type BadgeProps = ComponentPropsWithRef<"span"> & {
|
|
|
62
99
|
*/
|
|
63
100
|
export const Badge = ({
|
|
64
101
|
appearance = "soft",
|
|
102
|
+
categorical,
|
|
65
103
|
children,
|
|
66
104
|
className,
|
|
67
105
|
icon,
|
|
@@ -87,7 +125,15 @@ export const Badge = ({
|
|
|
87
125
|
"rounded-2xl"
|
|
88
126
|
: "rounded-full",
|
|
89
127
|
BADGE_SIZE_CLASS[size],
|
|
90
|
-
|
|
128
|
+
// A ternary rather than a merged map: the two are indexed
|
|
129
|
+
// by different keys, and `undefined` is the only honest
|
|
130
|
+
// discriminant once the type has already refused the case
|
|
131
|
+
// where both arrive.
|
|
132
|
+
categorical === undefined
|
|
133
|
+
? INTENT_APPEARANCE_CLASS[intent][appearance]
|
|
134
|
+
: CATEGORICAL_APPEARANCE_CLASS[categorical][
|
|
135
|
+
appearance
|
|
136
|
+
],
|
|
91
137
|
className,
|
|
92
138
|
)}
|
|
93
139
|
// Only when something is actually hidden. A tooltip on every
|