@smwb/ui-mcp-react 2.6.3 → 2.8.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 (70) hide show
  1. package/component-meta/base/icon/icon.json +6 -1
  2. package/component-meta/base/ripple/ripple.json +6 -1
  3. package/component-meta/connects/rt/table/headerCellRenderer.json +1 -1
  4. package/component-meta/connects/rt/table/table.json +1 -1
  5. package/component-meta/dataDisplay/accordion/accordion.json +27 -2
  6. package/component-meta/dataDisplay/avatar/avatar.avatarGroup.json +15 -0
  7. package/component-meta/dataDisplay/avatar/avatar.json +5 -0
  8. package/component-meta/dataDisplay/card/card.json +10 -5
  9. package/component-meta/dataDisplay/chart/chart.json +78 -0
  10. package/component-meta/dataDisplay/chat/chatLayout.json +5 -0
  11. package/component-meta/dataDisplay/chat/chatOverlayLayout.json +5 -0
  12. package/component-meta/dataDisplay/chip/chip.json +14 -4
  13. package/component-meta/dataDisplay/descriptionList/descriptionList.descriptionItem.json +35 -0
  14. package/component-meta/dataDisplay/descriptionList/descriptionList.json +50 -0
  15. package/component-meta/dataDisplay/kanban/kanban.json +40 -0
  16. package/component-meta/dataDisplay/kanban/kanban.kanbanCard.json +50 -0
  17. package/component-meta/dataDisplay/kanban/kanban.kanbanColumn.json +60 -0
  18. package/component-meta/dataDisplay/list/list.json +5 -0
  19. package/component-meta/dataDisplay/meter/meter.json +75 -0
  20. package/component-meta/dataDisplay/personChip/personChip.json +77 -0
  21. package/component-meta/dataDisplay/stat/stat.json +72 -0
  22. package/component-meta/dataDisplay/stat/stat.statGroup.json +35 -0
  23. package/component-meta/dataDisplay/table/table.json +5 -0
  24. package/component-meta/dataDisplay/table/tableCell.json +10 -0
  25. package/component-meta/dataDisplay/table/tableHeadCell.json +11 -1
  26. package/component-meta/dataDisplay/table/tableRow.json +5 -0
  27. package/component-meta/dataDisplay/thumbCard/thumbCard.json +16 -6
  28. package/component-meta/dataDisplay/timeline/timeline.json +42 -0
  29. package/component-meta/dataDisplay/timeline/timeline.timelineGroup.json +35 -0
  30. package/component-meta/dataDisplay/timeline/timeline.timelineItem.json +55 -0
  31. package/component-meta/dataDisplay/treeView/treeView.json +5 -0
  32. package/component-meta/dataDisplay/typography/typography.json +10 -0
  33. package/component-meta/feedBack/emptyState/emptyState.json +62 -0
  34. package/component-meta/feedBack/message/message.json +5 -0
  35. package/component-meta/feedBack/progressIndicator/progressIndicator.circularProgress.json +1 -1
  36. package/component-meta/feedBack/progressIndicator/progressIndicator.json +20 -0
  37. package/component-meta/feedBack/skeleton/skeleton.json +7 -2
  38. package/component-meta/feedBack/tooltip/tooltip.json +4 -4
  39. package/component-meta/inputs/button/button.json +5 -0
  40. package/component-meta/inputs/buttonGroups/buttonGroup.json +5 -0
  41. package/component-meta/inputs/checkbox/checkbox.json +2 -2
  42. package/component-meta/inputs/radioButton/radioButton.json +6 -1
  43. package/component-meta/inputs/rating/rating.json +11 -1
  44. package/component-meta/inputs/selectField/dropdownMenu.json +45 -0
  45. package/component-meta/inputs/selectField/selectField.json +11 -6
  46. package/component-meta/inputs/slider/slider.json +8 -3
  47. package/component-meta/inputs/textField/textField.json +3 -3
  48. package/component-meta/inputs/textField/textFieldWrapper.json +16 -1
  49. package/component-meta/inputs/toggle/toggle.json +1 -1
  50. package/component-meta/inputs/valueSlider/valueSlider.json +13 -8
  51. package/component-meta/layout/appLayout/appLayout.json +5 -0
  52. package/component-meta/layout/divider/divider.json +5 -0
  53. package/component-meta/layout/floatingWindow/floatingWindow.json +5 -0
  54. package/component-meta/layout/grid/grid.column.json +1 -1
  55. package/component-meta/layout/grid/grid.container.json +5 -0
  56. package/component-meta/layout/grid/grid.row.json +5 -0
  57. package/component-meta/layout/page/page.json +5 -0
  58. package/component-meta/layout/pageHeader/pageHeader.json +5 -0
  59. package/component-meta/layout/sectionHeader/sectionHeader.json +73 -0
  60. package/component-meta/layout/sheet/sheet.json +5 -0
  61. package/component-meta/layout/stack/stack.json +5 -0
  62. package/component-meta/navigation/appBar/appBar.json +5 -0
  63. package/component-meta/navigation/breadcrumbs/breadcrumbs.json +5 -0
  64. package/component-meta/navigation/menu/menu.json +1 -1
  65. package/component-meta/navigation/menu/menuItem.json +1 -1
  66. package/component-meta/navigation/pagination/pagination.json +5 -0
  67. package/component-meta/navigation/stepper/stepper.json +7 -2
  68. package/component-meta/navigation/tabs/tab/tab.json +5 -0
  69. package/component-meta/navigation/tabs/tabs.json +26 -5
  70. package/package.json +3 -3
@@ -59,12 +59,17 @@
59
59
  "title": {
60
60
  "type": "string",
61
61
  "required": false,
62
- "description": "Accessible name. When provided the icon is exposed as\n`role=\"img\"`; otherwise it is `aria-hidden` (decorative)."
62
+ "description": "Accessible name, also shown as a tooltip. A non-empty `title`,\n`aria-label` or `aria-labelledby` names the icon: it is exposed as\n`role=\"img\"`, or with the `role` you pass. Without any of them the icon is\ndecorative and `aria-hidden`."
63
63
  },
64
64
  "source": {
65
65
  "type": "IconSource",
66
66
  "required": false,
67
67
  "description": "Overrides the icon source for this icon only. See IconSource."
68
+ },
69
+ "data-testid": {
70
+ "type": "string",
71
+ "required": false,
72
+ "description": "Test id of the root `<span>`; `icon` unless given."
68
73
  }
69
74
  }
70
75
  }
@@ -29,7 +29,7 @@
29
29
  "classes": {
30
30
  "type": "RippleClasses",
31
31
  "required": false,
32
- "description": "Classes. Optional. Type: RippleClasses."
32
+ "description": "Extra classes: `ripple` for the root, `child` for each ripple."
33
33
  },
34
34
  "center": {
35
35
  "type": "boolean",
@@ -45,6 +45,11 @@
45
45
  "type": "string",
46
46
  "required": false,
47
47
  "description": "Ripple color (any CSS color). Defaults to inherited currentColor."
48
+ },
49
+ "data-testid": {
50
+ "type": "string",
51
+ "required": false,
52
+ "description": "Test id of the root `<span>`; `ripple` unless given."
48
53
  }
49
54
  }
50
55
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "HeaderCellRenderer",
3
- "description": "Default renderer for sortable table header cells.",
3
+ "description": "Header text that turns into an inline text field on click, to rename the column; in a sortable table that click does not sort.",
4
4
  "ssr": {
5
5
  "safe": true,
6
6
  "rendering": "universal"
@@ -6,7 +6,7 @@
6
6
  "rendering": "universal"
7
7
  },
8
8
  "extends": [
9
- "SMWBTableProps & {\n withPagination?: boolean;\n isInfinite?: boolean;\n dense?: boolean;\n limit?: number;\n limitOptions?: number[];\n sortable?: boolean;\n expandable?: boolean;\n draggableColumns?: boolean;\n enableColumnResizing?: boolean;\n onColumnSizingChange?: (oldValue: ColumnSizingState, newValue: ColumnSizingState) => void;\n onColumnOrderChange?: (oldValue: ColumnOrderState, newValue: ColumnOrderState) => void;\n getRowCanExpand?: (row: Row<TData>) => boolean;\n renderSubComponent?: (props: { row: Row<TData> }) => React.ReactElement;\n cellAlign?: \"left\" | \"right\" | \"center\";\n isLoading?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n error?: string;\n onHeadCellClick?: (colDef?: ColumnDef<TData, TValue>) => void;\n headerCellInnerRenderer?: React.ReactElement;\n onBodyRowClick?: (row: Row<TData>, event: React.MouseEvent<HTMLTableRowElement>) => void;\n data: TData[];\n columns: ColumnDef<TData, TValue>[];\n columnResizeMode?: ColumnResizeMode;\n}"
9
+ "SMWBTableProps & {\n withPagination?: boolean;\n isInfinite?: boolean;\n dense?: boolean;\n limit?: number;\n limitOptions?: number[];\n sortable?: boolean;\n expandable?: boolean;\n draggableColumns?: boolean;\n enableColumnResizing?: boolean;\n onColumnSizingChange?: (oldValue: ColumnSizingState, newValue: ColumnSizingState) => void;\n onColumnOrderChange?: (oldValue: ColumnOrderState, newValue: ColumnOrderState) => void;\n getRowCanExpand?: (row: Row<TData>) => boolean;\n renderSubComponent?: (props: { row: Row<TData> }) => React.ReactElement;\n cellAlign?: \"left\" | \"right\" | \"center\";\n isLoading?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n error?: string;\n onHeadCellClick?: (colDef?: ColumnDef<TData, TValue>) => void;\n headerCellInnerRenderer?: React.ReactElement;\n onBodyRowClick?: (row: Row<TData>, event: React.MouseEvent<HTMLTableRowElement>) => void;\n data: TData[];\n /**\n * TanStack column definitions. A column's `meta` may add `headerActions`\n * (controls drawn beside the sort control in its head cell), `label` (its\n * name on stacked rows), `cellProps` (attributes of its body cells) and\n * `draggableColumn`.\n */\n columns: ColumnDef<TData, TValue>[];\n columnResizeMode?: ColumnResizeMode;\n}"
10
10
  ],
11
11
  "styles": {
12
12
  "base": [
@@ -25,9 +25,19 @@
25
25
  "description": "Additional CSS class name(s) for the root element."
26
26
  },
27
27
  "title": {
28
- "type": "string",
28
+ "type": "ReactNode",
29
+ "required": false,
30
+ "description": "Header text or markup (a date, an author, a badge…)."
31
+ },
32
+ "subtitle": {
33
+ "type": "ReactNode",
34
+ "required": false,
35
+ "description": "Secondary line under the title."
36
+ },
37
+ "variant": {
38
+ "type": "AccordionVariant",
29
39
  "required": false,
30
- "description": "Accessible title or tooltip text."
40
+ "description": "Visual style variant."
31
41
  },
32
42
  "isOpenByDefault": {
33
43
  "type": "boolean",
@@ -64,11 +74,26 @@
64
74
  "required": false,
65
75
  "description": "Start Adornment. Optional. Type: (isOpen: boolean) => React.ReactNode."
66
76
  },
77
+ "endAdornment": {
78
+ "type": "(isOpen: boolean) => React.ReactNode",
79
+ "required": false,
80
+ "description": "Rendered after the title, before the expand icon."
81
+ },
67
82
  "noIcon": {
68
83
  "type": "boolean",
69
84
  "required": false,
70
85
  "description": "No Icon. Optional. Type: boolean."
71
86
  },
87
+ "lazy": {
88
+ "type": "boolean",
89
+ "required": false,
90
+ "description": "Create the content on first open instead of up front."
91
+ },
92
+ "unmountOnExit": {
93
+ "type": "boolean",
94
+ "required": false,
95
+ "description": "Remove the content once the panel has collapsed (created again on open)."
96
+ },
72
97
  "onToggleClick": {
73
98
  "type": "(e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void",
74
99
  "required": false,
@@ -40,6 +40,21 @@
40
40
  "type": "() => void",
41
41
  "required": false,
42
42
  "description": "Click handler for the \"+N\" surplus chip."
43
+ },
44
+ "surplusAriaLabel": {
45
+ "type": "(count: number) => string",
46
+ "required": false,
47
+ "description": "Accessible name of the \"+N\" surplus chip."
48
+ },
49
+ "size": {
50
+ "type": "AvatarSize | number",
51
+ "required": false,
52
+ "description": "Size of the \"+N\" surplus chip: match the avatars in the group."
53
+ },
54
+ "data-testid": {
55
+ "type": "string",
56
+ "required": false,
57
+ "description": "Test id of the root `<div>`; `avatar-group` unless given."
43
58
  }
44
59
  }
45
60
  }
@@ -55,6 +55,11 @@
55
55
  "type": "ImgHTMLAttributes<HTMLImageElement>",
56
56
  "required": false,
57
57
  "description": "Extra attributes forwarded to the underlying <img> (srcSet, loading…)."
58
+ },
59
+ "data-testid": {
60
+ "type": "string",
61
+ "required": false,
62
+ "description": "Test id of the root `<div>`; `avatar` unless given."
58
63
  }
59
64
  }
60
65
  }
@@ -24,7 +24,7 @@
24
24
  "className": {
25
25
  "type": "string",
26
26
  "required": false,
27
- "description": "Additional CSS class name(s) for the root element."
27
+ "description": "Class name(s) for the root `<div>`, the card's box. `style`, `id`, `data-*`, `aria-hidden`, `ref` and event\nhandlers go to the root too. With `onClick`, `role`, `tabIndex`, `onFocus`, `onBlur` and the other `aria-*`\nattributes go to the card's button, `.smwb-card__content` (the title and the children), which is also the element\nto focus. Without `onClick` the card is not a control, and they stay on the root, which holds the footer too."
28
28
  },
29
29
  "variant": {
30
30
  "type": "\"filled\" | \"elevated\" | \"outlined\"",
@@ -34,22 +34,27 @@
34
34
  "disabled": {
35
35
  "type": "boolean",
36
36
  "required": false,
37
- "description": "Whether the control is disabled and non-interactive."
37
+ "description": "Disables the card: it says `aria-disabled`, and neither clicks nor keys run `onClick`. With `onClick` the card is\nstill a button, out of the tab order."
38
38
  },
39
39
  "title": {
40
40
  "type": "string",
41
41
  "required": false,
42
- "description": "Accessible title or tooltip text."
42
+ "description": "A heading drawn at the top of the card, not the `title` attribute. With `onClick` it is part of the card's button,\nand the button's name starts with it."
43
43
  },
44
44
  "footer": {
45
45
  "type": "ReactNode",
46
46
  "required": false,
47
- "description": "Footer slot rendered after the content."
47
+ "description": "Footer slot rendered after the content. With `onClick` it sits beside the card's button, not inside it, so\ncontrols here keep their own names, clicks and keys; see `onClick`."
48
48
  },
49
49
  "onClick": {
50
50
  "type": "React.MouseEventHandler<HTMLDivElement>",
51
51
  "required": false,
52
- "description": "Makes the card interactive (role=button, keyboard, focus ring)."
52
+ "description": "Makes the card interactive: its content (the title and the children) becomes a button, named by that content, with\na focus ring around the whole card. The footer is not part of that button but its sibling, so the card's controls\ngo there: a control in the children would sit inside the button, and its name would join the card's.\n\nRuns when the card is activated: a click on it, or Enter / Space while its button has focus. A click on a control\n(button, link, input, anything focusable), in the footer or the children, or in a portal opened from the card does\nnot run it, and neither do Enter / Space pressed on such a control. Content that is not a control keeps its click\nfrom activating the card by calling `preventDefault()` on it."
53
+ },
54
+ "data-testid": {
55
+ "type": "string",
56
+ "required": false,
57
+ "description": "Test id of the root `<div>`; `card` unless given."
53
58
  }
54
59
  }
55
60
  }
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "Chart",
3
+ "description": "An ECharts chart in the theme's palette (import from @smwb/ui-react/chart; echarts is an optional peer): option or option(palette), lazy-loaded ECharts or your own loader, a skeleton until it draws, redrawn on theme switches and resizes (not at zero size).",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal",
7
+ "note": "Renders a same-size skeleton and the summary on the server; ECharts loads and draws in the browser."
8
+ },
9
+ "extends": [
10
+ "Omit<HTMLAttributes<HTMLDivElement>, \"onClick\">"
11
+ ],
12
+ "inheritedAttributes": "Also accepts standard HTML attributes for the underlying element (see extends clause in TypeScript).",
13
+ "styles": {
14
+ "base": [
15
+ "@smwb/ui-styles/less/foundation.less",
16
+ "@smwb/ui-styles/less/theme.less"
17
+ ],
18
+ "entries": [
19
+ "@smwb/ui-styles/less/components/chart/chart.entry.less"
20
+ ],
21
+ "dependencies": [
22
+ "@smwb/ui-styles/less/components/skeleton/skeleton.entry.less"
23
+ ],
24
+ "importExample": "@import (less) \"node_modules/@smwb/ui-styles/less/foundation.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/theme.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/chart/chart.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/skeleton/skeleton.entry.less\";"
25
+ },
26
+ "props": {
27
+ "className": {
28
+ "type": "string",
29
+ "required": false,
30
+ "description": "Additional CSS class name(s) for the root element."
31
+ },
32
+ "label": {
33
+ "type": "string",
34
+ "required": true,
35
+ "description": "What the chart shows: its accessible name."
36
+ },
37
+ "summary": {
38
+ "type": "string",
39
+ "required": false,
40
+ "description": "The chart in words, for screen readers; it is there before the chart draws, and on the server."
41
+ },
42
+ "option": {
43
+ "type": "ChartOption | ((palette: ChartPalette) => ChartOption)",
44
+ "required": true,
45
+ "description": "The ECharts option, or a function of the theme's palette that returns it.\nIt is applied whole whenever it or the theme changes; an equal option\npassed again (an inline object on a re-render) does not redraw."
46
+ },
47
+ "height": {
48
+ "type": "number | string",
49
+ "required": false,
50
+ "description": "The chart's height: a number of pixels or any CSS length; 240 by default. It fills the width."
51
+ },
52
+ "loader": {
53
+ "type": "() => Promise<ChartModule>",
54
+ "required": false,
55
+ "description": "Loads ECharts in the browser: `import(\"echarts\")` by default, the whole\nlibrary. For a smaller bundle pass `() => import(\"./my-echarts\")`, a module\nthat registers only the charts you use with `echarts/core`."
56
+ },
57
+ "renderer": {
58
+ "type": "\"canvas\" | \"svg\"",
59
+ "required": false,
60
+ "description": "How ECharts draws: \"canvas\" (default) or \"svg\". Read once, when the chart is created."
61
+ },
62
+ "onClick": {
63
+ "type": "(params: ChartEventParams) => void",
64
+ "required": false,
65
+ "description": "A click on an item: a bar, a point, a node."
66
+ },
67
+ "onReady": {
68
+ "type": "(chart: ChartInstance) => void",
69
+ "required": false,
70
+ "description": "The ECharts instance, once it has drawn — for other events and actions. Called again if a theme change re-creates it."
71
+ },
72
+ "data-testid": {
73
+ "type": "string",
74
+ "required": false,
75
+ "description": "Test id of the root `<div>`; `chart` unless given."
76
+ }
77
+ }
78
+ }
@@ -89,6 +89,11 @@
89
89
  "type": "ChatLayoutChatProps",
90
90
  "required": true,
91
91
  "description": "Chat configuration passed to ChatLayout."
92
+ },
93
+ "data-testid": {
94
+ "type": "string",
95
+ "required": false,
96
+ "description": "Test id of the root `<div>`; `chat-layout` unless given."
92
97
  }
93
98
  }
94
99
  }
@@ -74,6 +74,11 @@
74
74
  "type": "ChatOverlayLayoutChatProps",
75
75
  "required": true,
76
76
  "description": "Chat configuration passed to ChatLayout."
77
+ },
78
+ "data-testid": {
79
+ "type": "string",
80
+ "required": false,
81
+ "description": "Test id of the root `<div>`; `chat-overlay-layout` unless given."
77
82
  }
78
83
  }
79
84
  }
@@ -27,7 +27,7 @@
27
27
  "className": {
28
28
  "type": "string",
29
29
  "required": false,
30
- "description": "Additional CSS class name(s) for the root element."
30
+ "description": "Class name(s) for the chip's root, a `<span>` (an `<a>` with `asLink`). `style`, `id`, `data-*`, `aria-hidden`,\n`ref` and event handlers go to the root too. In a clickable chip (`onClick`), `role`, `tabIndex`, `onFocus`,\n`onBlur` and the other `aria-*` attributes go to its button, `.smwb-chip__content` (the icon and the label), which\nis also the element to focus. Otherwise they stay on the root, which holds the delete button too."
31
31
  },
32
32
  "variant": {
33
33
  "type": "\"filled\" | \"outlined\"",
@@ -47,7 +47,7 @@
47
47
  "onDelete": {
48
48
  "type": "(event: React.SyntheticEvent) => void",
49
49
  "required": false,
50
- "description": "On Delete. Optional. Type: (event: React.SyntheticEvent) => void."
50
+ "description": "Shows a delete button in the chip and runs when it is pressed: a click, or\nEnter / Space while the button has focus. In a clickable chip it sits\nbeside the chip's button, not inside it, and pressing it does not run the\nchip's `onClick`."
51
51
  },
52
52
  "icon": {
53
53
  "type": "React.ReactNode",
@@ -67,7 +67,7 @@
67
67
  "onClick": {
68
68
  "type": "() => void",
69
69
  "required": false,
70
- "description": "Callback fired when the element is clicked."
70
+ "description": "Makes the chip clickable: its icon and label become a button, named by\nthem, with a focus ring around the whole chip. The delete button is not\npart of that button but its sibling, so it keeps its own name.\n\nRuns on a click on the chip and on Enter / Space while the chip's button\nhas focus, but not on a click or key on the delete button."
71
71
  },
72
72
  "onDeleteMouseDown": {
73
73
  "type": "React.MouseEventHandler",
@@ -77,7 +77,7 @@
77
77
  "disabled": {
78
78
  "type": "boolean",
79
79
  "required": false,
80
- "description": "Whether the control is disabled and non-interactive."
80
+ "description": "Disables the chip: it is dimmed, takes no pointer input and says `aria-disabled`, and its delete button is\ndisabled too. With `onClick` the chip is still a button, out of the tab order."
81
81
  },
82
82
  "asLink": {
83
83
  "type": "boolean",
@@ -99,10 +99,20 @@
99
99
  "required": false,
100
100
  "description": "Controlled selected tab index or value."
101
101
  },
102
+ "labelId": {
103
+ "type": "string",
104
+ "required": false,
105
+ "description": "Id of the label's element, for another element to take the chip's text as\nits name (`aria-labelledby`) without the delete button's name."
106
+ },
102
107
  "deleteAriaLabel": {
103
108
  "type": "string",
104
109
  "required": false,
105
110
  "description": "Accessible label for the delete control."
111
+ },
112
+ "data-testid": {
113
+ "type": "string",
114
+ "required": false,
115
+ "description": "Test id of the root; `chip`, or `chip-link` for a link, unless given."
106
116
  }
107
117
  }
108
118
  }
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "DescriptionItem",
3
+ "description": "One term and its description inside a DescriptionList.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
8
+ "extends": [
9
+ "HTMLAttributes<HTMLDivElement>"
10
+ ],
11
+ "inheritedAttributes": "Also accepts standard HTML attributes for the underlying element (see extends clause in TypeScript).",
12
+ "styles": {
13
+ "base": [
14
+ "@smwb/ui-styles/less/foundation.less",
15
+ "@smwb/ui-styles/less/theme.less"
16
+ ],
17
+ "entries": [
18
+ "@smwb/ui-styles/less/components/descriptionList/descriptionList.entry.less"
19
+ ],
20
+ "dependencies": [],
21
+ "importExample": "@import (less) \"node_modules/@smwb/ui-styles/less/foundation.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/theme.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/descriptionList/descriptionList.entry.less\";"
22
+ },
23
+ "props": {
24
+ "className": {
25
+ "type": "string",
26
+ "required": false,
27
+ "description": "Additional CSS class name(s) for the root element."
28
+ },
29
+ "term": {
30
+ "type": "ReactNode",
31
+ "required": true,
32
+ "description": "The field's name."
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "DescriptionList",
3
+ "description": "Field-value pairs (<dl>) from items or DescriptionItem children; side by side, stacking in a narrow container (container query).",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
8
+ "extends": [
9
+ "HTMLAttributes<HTMLDListElement>"
10
+ ],
11
+ "inheritedAttributes": "Also accepts standard HTML attributes for the underlying element (see extends clause in TypeScript).",
12
+ "styles": {
13
+ "base": [
14
+ "@smwb/ui-styles/less/foundation.less",
15
+ "@smwb/ui-styles/less/theme.less"
16
+ ],
17
+ "entries": [
18
+ "@smwb/ui-styles/less/components/descriptionList/descriptionList.entry.less"
19
+ ],
20
+ "dependencies": [],
21
+ "importExample": "@import (less) \"node_modules/@smwb/ui-styles/less/foundation.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/theme.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/descriptionList/descriptionList.entry.less\";"
22
+ },
23
+ "props": {
24
+ "className": {
25
+ "type": "string",
26
+ "required": false,
27
+ "description": "Additional CSS class name(s) for the root element."
28
+ },
29
+ "items": {
30
+ "type": "DescriptionListEntry[]",
31
+ "required": false,
32
+ "description": "The pairs as data; `DescriptionItem` children work too, and come after them."
33
+ },
34
+ "layout": {
35
+ "type": "DescriptionListLayout",
36
+ "required": false,
37
+ "description": "\"auto\" (default): each term beside its value while the list is at least\n420px wide, above it when narrower — the list's own width decides. So its\ncontent does not widen it: where the parent takes its width from its\ncontent (a flex item that does not grow, a popover, a table cell) the list\nhas no width; give it one there, or use \"row\" / \"stacked\", which fix one\nlayout and take their width from their content."
38
+ },
39
+ "termWidth": {
40
+ "type": "number | string",
41
+ "required": false,
42
+ "description": "Width of the term column in the row layout: px or any CSS track size. 30% of the list, at least 6rem, by default."
43
+ },
44
+ "dense": {
45
+ "type": "boolean",
46
+ "required": false,
47
+ "description": "Tighter spacing, for side panels."
48
+ }
49
+ }
50
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "Kanban",
3
+ "description": "A board of KanbanColumn children side by side, scrolling sideways (with snap) when they do not fit; columnWidth sets the narrowest column.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
8
+ "extends": [
9
+ "HTMLAttributes<HTMLDivElement>"
10
+ ],
11
+ "inheritedAttributes": "Also accepts standard HTML attributes for the underlying element (see extends clause in TypeScript).",
12
+ "styles": {
13
+ "base": [
14
+ "@smwb/ui-styles/less/foundation.less",
15
+ "@smwb/ui-styles/less/theme.less"
16
+ ],
17
+ "entries": [
18
+ "@smwb/ui-styles/less/components/kanban/kanban.entry.less"
19
+ ],
20
+ "dependencies": [],
21
+ "importExample": "@import (less) \"node_modules/@smwb/ui-styles/less/foundation.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/theme.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/kanban/kanban.entry.less\";"
22
+ },
23
+ "props": {
24
+ "className": {
25
+ "type": "string",
26
+ "required": false,
27
+ "description": "Additional CSS class name(s) for the root element."
28
+ },
29
+ "columnWidth": {
30
+ "type": "number | string",
31
+ "required": false,
32
+ "description": "The narrowest a column gets before the board scrolls sideways: a number of\npixels or any CSS length. 15.5rem by default."
33
+ },
34
+ "data-testid": {
35
+ "type": "string",
36
+ "required": false,
37
+ "description": "Test id of the root `<div>`; `kanban` unless given."
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "KanbanCard",
3
+ "description": "A card on a Kanban board: a title clamped to titleLines lines (a link stretched over the card with href) and content below.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
8
+ "extends": [
9
+ "Omit<HTMLAttributes<HTMLLIElement>, \"title\">"
10
+ ],
11
+ "inheritedAttributes": "Also accepts standard HTML attributes for the underlying element (see extends clause in TypeScript).",
12
+ "styles": {
13
+ "base": [
14
+ "@smwb/ui-styles/less/foundation.less",
15
+ "@smwb/ui-styles/less/theme.less"
16
+ ],
17
+ "entries": [
18
+ "@smwb/ui-styles/less/components/kanban/kanban.entry.less"
19
+ ],
20
+ "dependencies": [],
21
+ "importExample": "@import (less) \"node_modules/@smwb/ui-styles/less/foundation.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/theme.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/kanban/kanban.entry.less\";"
22
+ },
23
+ "props": {
24
+ "className": {
25
+ "type": "string",
26
+ "required": false,
27
+ "description": "Additional CSS class name(s) for the root element."
28
+ },
29
+ "title": {
30
+ "type": "ReactNode",
31
+ "required": false,
32
+ "description": "The card's title, clamped to `titleLines` lines."
33
+ },
34
+ "href": {
35
+ "type": "string",
36
+ "required": false,
37
+ "description": "Makes the title a link, and the whole card open it."
38
+ },
39
+ "titleLines": {
40
+ "type": "number",
41
+ "required": false,
42
+ "description": "Lines the title is clamped to: 3 by default."
43
+ },
44
+ "data-testid": {
45
+ "type": "string",
46
+ "required": false,
47
+ "description": "Test id of the card's `<li>`; `kanban-card` unless given."
48
+ }
49
+ }
50
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "KanbanColumn",
3
+ "description": "A board column (role=group named by its title): a count, an accent stripe, KanbanCard children, an empty placeholder and a footer.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
8
+ "extends": [
9
+ "Omit<HTMLAttributes<HTMLDivElement>, \"title\">"
10
+ ],
11
+ "inheritedAttributes": "Also accepts standard HTML attributes for the underlying element (see extends clause in TypeScript).",
12
+ "styles": {
13
+ "base": [
14
+ "@smwb/ui-styles/less/foundation.less",
15
+ "@smwb/ui-styles/less/theme.less"
16
+ ],
17
+ "entries": [
18
+ "@smwb/ui-styles/less/components/kanban/kanban.entry.less"
19
+ ],
20
+ "dependencies": [],
21
+ "importExample": "@import (less) \"node_modules/@smwb/ui-styles/less/foundation.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/theme.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/kanban/kanban.entry.less\";"
22
+ },
23
+ "props": {
24
+ "className": {
25
+ "type": "string",
26
+ "required": false,
27
+ "description": "Additional CSS class name(s) for the root element."
28
+ },
29
+ "title": {
30
+ "type": "ReactNode",
31
+ "required": true,
32
+ "description": "The column's name: text or a badge. It names the column for assistive technology."
33
+ },
34
+ "count": {
35
+ "type": "number | string | null",
36
+ "required": false,
37
+ "description": "How many cards the column holds (it may show fewer), beside the title. Nothing is shown for null."
38
+ },
39
+ "accent": {
40
+ "type": "string",
41
+ "required": false,
42
+ "description": "The column's colour, a stripe along its top: any CSS colour."
43
+ },
44
+ "empty": {
45
+ "type": "ReactNode",
46
+ "required": false,
47
+ "description": "Shown in place of the cards when there are none, e.g. \"Empty\"."
48
+ },
49
+ "footer": {
50
+ "type": "ReactNode",
51
+ "required": false,
52
+ "description": "Under the cards, e.g. a link to the rest as a list."
53
+ },
54
+ "data-testid": {
55
+ "type": "string",
56
+ "required": false,
57
+ "description": "Test id of the column's `<div>`; `kanban-column` unless given."
58
+ }
59
+ }
60
+ }
@@ -35,6 +35,11 @@
35
35
  "type": "ReactNode",
36
36
  "required": false,
37
37
  "description": "Section subheader rendered before the items."
38
+ },
39
+ "data-testid": {
40
+ "type": "string",
41
+ "required": false,
42
+ "description": "Test id of the root `<ul>`; `list` unless given."
38
43
  }
39
44
  }
40
45
  }