@smwb/ui-mcp-react 2.7.0 → 2.9.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 (75) 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/table.json +1 -1
  4. package/component-meta/dataDisplay/avatar/avatar.avatarGroup.json +5 -0
  5. package/component-meta/dataDisplay/avatar/avatar.json +5 -0
  6. package/component-meta/dataDisplay/card/card.json +10 -5
  7. package/component-meta/dataDisplay/chart/chart.json +5 -0
  8. package/component-meta/dataDisplay/chat/chat.chatFooterComposer.json +24 -0
  9. package/component-meta/dataDisplay/chat/chat.json +24 -3
  10. package/component-meta/dataDisplay/chat/chatComposer.json +1 -1
  11. package/component-meta/dataDisplay/chat/chatLayout.json +7 -1
  12. package/component-meta/dataDisplay/chat/chatOverlayLayout.json +7 -1
  13. package/component-meta/dataDisplay/chip/chip.json +14 -4
  14. package/component-meta/dataDisplay/dagView/dagView.json +165 -0
  15. package/component-meta/dataDisplay/descriptionList/descriptionList.json +1 -1
  16. package/component-meta/dataDisplay/diffStat/diffStat.json +65 -0
  17. package/component-meta/dataDisplay/kanban/kanban.json +5 -0
  18. package/component-meta/dataDisplay/kanban/kanban.kanbanCard.json +5 -0
  19. package/component-meta/dataDisplay/kanban/kanban.kanbanColumn.json +5 -0
  20. package/component-meta/dataDisplay/kbd/kbd.json +55 -0
  21. package/component-meta/dataDisplay/list/list.json +5 -0
  22. package/component-meta/dataDisplay/list/listItem.json +18 -3
  23. package/component-meta/dataDisplay/meter/meter.json +5 -0
  24. package/component-meta/dataDisplay/personChip/personChip.json +5 -0
  25. package/component-meta/dataDisplay/qrCode/qrCode.json +60 -0
  26. package/component-meta/dataDisplay/stat/stat.json +5 -0
  27. package/component-meta/dataDisplay/statusDot/statusDot.json +60 -0
  28. package/component-meta/dataDisplay/swimlanes/swimlanes.json +90 -0
  29. package/component-meta/dataDisplay/table/table.json +1 -1
  30. package/component-meta/dataDisplay/table/tableCell.json +6 -1
  31. package/component-meta/dataDisplay/table/tableHeadCell.json +11 -1
  32. package/component-meta/dataDisplay/table/tableRow.json +5 -0
  33. package/component-meta/dataDisplay/thumbCard/thumbCard.json +16 -6
  34. package/component-meta/dataDisplay/treeView/treeView.json +21 -1
  35. package/component-meta/feedBack/emptyState/emptyState.json +5 -0
  36. package/component-meta/feedBack/message/message.json +5 -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 +15 -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/composer/composer.json +222 -0
  43. package/component-meta/inputs/radioButton/radioButton.json +6 -1
  44. package/component-meta/inputs/rating/rating.json +11 -1
  45. package/component-meta/inputs/selectField/dropdownMenu.json +45 -0
  46. package/component-meta/inputs/selectField/selectField.json +6 -6
  47. package/component-meta/inputs/slider/slider.json +8 -3
  48. package/component-meta/inputs/textField/textField.json +3 -3
  49. package/component-meta/inputs/textField/textFieldWrapper.json +16 -1
  50. package/component-meta/inputs/toggle/toggle.json +1 -1
  51. package/component-meta/inputs/valueSlider/valueSlider.json +13 -8
  52. package/component-meta/layout/appLayout/appLayout.json +5 -0
  53. package/component-meta/layout/divider/divider.json +5 -0
  54. package/component-meta/layout/floatingWindow/floatingWindow.json +5 -0
  55. package/component-meta/layout/grid/grid.column.json +1 -1
  56. package/component-meta/layout/grid/grid.container.json +5 -0
  57. package/component-meta/layout/grid/grid.row.json +5 -0
  58. package/component-meta/layout/page/page.json +5 -0
  59. package/component-meta/layout/pageHeader/pageHeader.json +5 -0
  60. package/component-meta/layout/sectionHeader/sectionHeader.json +5 -0
  61. package/component-meta/layout/sheet/sheet.json +25 -0
  62. package/component-meta/layout/stack/stack.json +5 -0
  63. package/component-meta/layout/tabGroups/tabGroups.json +101 -0
  64. package/component-meta/navigation/appBar/appBar.json +20 -0
  65. package/component-meta/navigation/breadcrumbs/breadcrumbs.json +5 -0
  66. package/component-meta/navigation/commandPalette/commandPalette.json +161 -0
  67. package/component-meta/navigation/menu/menu.json +1 -1
  68. package/component-meta/navigation/menu/menuItem.json +1 -1
  69. package/component-meta/navigation/pagination/pagination.json +5 -0
  70. package/component-meta/navigation/sidebar/sidebar.json +5 -0
  71. package/component-meta/navigation/stepper/stepper.json +5 -0
  72. package/component-meta/navigation/tabs/tab/tab.json +30 -4
  73. package/component-meta/navigation/tabs/tabPanel/tabPanel.json +42 -0
  74. package/component-meta/navigation/tabs/tabs.json +40 -7
  75. 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
  }
@@ -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": [
@@ -50,6 +50,11 @@
50
50
  "type": "AvatarSize | number",
51
51
  "required": false,
52
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."
53
58
  }
54
59
  }
55
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
  }
@@ -68,6 +68,11 @@
68
68
  "type": "(chart: ChartInstance) => void",
69
69
  "required": false,
70
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."
71
76
  }
72
77
  }
73
78
  }
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "ChatFooterComposer",
3
+ "description": "Props for the `Composer` Chat draws as its footer. The props Chat owns itself — `onSendMessage` (the composer's\n`onSend`), `busy`, `onStop`, `composerPlaceholder` (`placeholder`), `composerDisabled` (`disabled`), the file upload\nprops (`onAttach`, `accept`, `multiple`, `maxFiles`) and `dropTarget` (always `false`: the Chat shell is the drop\ntarget) — are left out, Chat passes them and does not let a caller override them.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
8
+ "extends": [
9
+ "Omit<\n ComposerProps,\n | \"onSend\"\n | \"busy\"\n | \"onStop\"\n | \"disabled\"\n | \"placeholder\"\n | \"onAttach\"\n | \"accept\"\n | \"multiple\"\n | \"maxFiles\"\n | \"dropTarget\"\n>"
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/chat/chat.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/chat/chat.entry.less\";"
22
+ },
23
+ "props": {}
24
+ }
@@ -20,6 +20,7 @@
20
20
  ],
21
21
  "dependencies": [
22
22
  "@smwb/ui-styles/less/components/avatar/avatar.entry.less",
23
+ "@smwb/ui-styles/less/components/composer/composer.entry.less",
23
24
  "@smwb/ui-styles/less/components/floatingButton/floatingButton.entry.less",
24
25
  "@smwb/ui-styles/less/components/icon/icon.entry.less",
25
26
  "@smwb/ui-styles/less/components/ripple/ripple.entry.less",
@@ -27,7 +28,7 @@
27
28
  "@smwb/ui-styles/less/components/textField/textField.entry.less",
28
29
  "@smwb/ui-styles/less/components/typography/typography.entry.less"
29
30
  ],
30
- "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/chat/chat.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/avatar/avatar.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/floatingButton/floatingButton.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/icon/icon.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/ripple/ripple.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/skeleton/skeleton.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/textField/textField.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/typography/typography.entry.less\";"
31
+ "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/chat/chat.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/avatar/avatar.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/composer/composer.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/floatingButton/floatingButton.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/icon/icon.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/ripple/ripple.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/skeleton/skeleton.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/textField/textField.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/typography/typography.entry.less\";"
31
32
  },
32
33
  "props": {
33
34
  "className": {
@@ -145,6 +146,26 @@
145
146
  "required": false,
146
147
  "description": "On Send Message. Optional. Type: (text: string) => void | Promise<void>."
147
148
  },
149
+ "busy": {
150
+ "type": "boolean",
151
+ "required": false,
152
+ "description": "The agent is replying: the composer's send button turns into Stop and calls `onStop`, the keys do not send, the\ntext stays editable. Not the same as `loading` (the message list skeleton). The default composer only."
153
+ },
154
+ "onStop": {
155
+ "type": "() => void",
156
+ "required": false,
157
+ "description": "Called when Stop is pressed while `busy` (and not `composerDisabled`). The default composer only."
158
+ },
159
+ "composerProps": {
160
+ "type": "ChatFooterComposerProps",
161
+ "required": false,
162
+ "description": "More props for the built-in `Composer`: `toolbar`, `attachments`, `maxLength`, `counter`, `minRows`, `maxRows`,\n`layout`, `sendKey` (default here `\"enter\"`), `value`/`defaultValue`/`onValueChange`, `clearOnSend`, `autoFocus`,\n`inputRef`, `aria-*`, `sendLabel`, `stopLabel`, `attachLabel`, `className`, `data-*`, … Chat's own props\n(`onSendMessage`, `busy`, `onStop`, `composerPlaceholder`, `composerDisabled`, the file upload props) win."
163
+ },
164
+ "legacyComposer": {
165
+ "type": "boolean",
166
+ "required": false,
167
+ "description": "Deprecated: draws the old `ChatComposer` (Enter sends, TextField DOM, `chat-composer*` test ids) instead of the\nbuilt-in `Composer`. Kept for the migration and removed with `ChatComposer` in the next major; `busy`, `onStop`\nand `composerProps` are ignored in this mode."
168
+ },
148
169
  "composerPlaceholder": {
149
170
  "type": "string",
150
171
  "required": false,
@@ -158,12 +179,12 @@
158
179
  "composerShiftEnterNewline": {
159
180
  "type": "boolean",
160
181
  "required": false,
161
- "description": "Composer Shift Enter Newline. Optional. Type: boolean."
182
+ "description": "Deprecated: works with `legacyComposer` only — the built-in `Composer` always inserts a newline on Shift+Enter.\nPass it together with `legacyComposer` until that is removed."
162
183
  },
163
184
  "composerCtrlEnterNewline": {
164
185
  "type": "boolean",
165
186
  "required": false,
166
- "description": "Composer Ctrl Enter Newline. Optional. Type: boolean."
187
+ "description": "Deprecated: works with `legacyComposer` only — with the built-in `Composer` Ctrl/⌘+Enter sends. Pass it together\nwith `legacyComposer` until that is removed."
167
188
  },
168
189
  "fileUpload": {
169
190
  "type": "boolean",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ChatComposer",
3
- "description": "Chat Composer component from the dataDisplay module.",
3
+ "description": "Deprecated: the old chat input (Enter sends, TextField-based). Use Composer; Chat draws a Composer by default (legacyComposer keeps this one during the migration).",
4
4
  "ssr": {
5
5
  "safe": true,
6
6
  "rendering": "universal"
@@ -20,6 +20,7 @@
20
20
  ],
21
21
  "dependencies": [
22
22
  "@smwb/ui-styles/less/components/avatar/avatar.entry.less",
23
+ "@smwb/ui-styles/less/components/composer/composer.entry.less",
23
24
  "@smwb/ui-styles/less/components/floatingButton/floatingButton.entry.less",
24
25
  "@smwb/ui-styles/less/components/icon/icon.entry.less",
25
26
  "@smwb/ui-styles/less/components/ripple/ripple.entry.less",
@@ -27,7 +28,7 @@
27
28
  "@smwb/ui-styles/less/components/textField/textField.entry.less",
28
29
  "@smwb/ui-styles/less/components/typography/typography.entry.less"
29
30
  ],
30
- "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/chat/chat.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/avatar/avatar.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/floatingButton/floatingButton.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/icon/icon.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/ripple/ripple.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/skeleton/skeleton.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/textField/textField.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/typography/typography.entry.less\";"
31
+ "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/chat/chat.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/avatar/avatar.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/composer/composer.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/floatingButton/floatingButton.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/icon/icon.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/ripple/ripple.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/skeleton/skeleton.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/textField/textField.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/typography/typography.entry.less\";"
31
32
  },
32
33
  "props": {
33
34
  "className": {
@@ -89,6 +90,11 @@
89
90
  "type": "ChatLayoutChatProps",
90
91
  "required": true,
91
92
  "description": "Chat configuration passed to ChatLayout."
93
+ },
94
+ "data-testid": {
95
+ "type": "string",
96
+ "required": false,
97
+ "description": "Test id of the root `<div>`; `chat-layout` unless given."
92
98
  }
93
99
  }
94
100
  }
@@ -20,6 +20,7 @@
20
20
  ],
21
21
  "dependencies": [
22
22
  "@smwb/ui-styles/less/components/avatar/avatar.entry.less",
23
+ "@smwb/ui-styles/less/components/composer/composer.entry.less",
23
24
  "@smwb/ui-styles/less/components/floatingButton/floatingButton.entry.less",
24
25
  "@smwb/ui-styles/less/components/icon/icon.entry.less",
25
26
  "@smwb/ui-styles/less/components/ripple/ripple.entry.less",
@@ -27,7 +28,7 @@
27
28
  "@smwb/ui-styles/less/components/textField/textField.entry.less",
28
29
  "@smwb/ui-styles/less/components/typography/typography.entry.less"
29
30
  ],
30
- "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/chat/chat.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/avatar/avatar.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/floatingButton/floatingButton.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/icon/icon.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/ripple/ripple.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/skeleton/skeleton.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/textField/textField.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/typography/typography.entry.less\";"
31
+ "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/chat/chat.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/avatar/avatar.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/composer/composer.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/floatingButton/floatingButton.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/icon/icon.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/ripple/ripple.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/skeleton/skeleton.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/textField/textField.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/typography/typography.entry.less\";"
31
32
  },
32
33
  "props": {
33
34
  "className": {
@@ -74,6 +75,11 @@
74
75
  "type": "ChatOverlayLayoutChatProps",
75
76
  "required": true,
76
77
  "description": "Chat configuration passed to ChatLayout."
78
+ },
79
+ "data-testid": {
80
+ "type": "string",
81
+ "required": false,
82
+ "description": "Test id of the root `<div>`; `chat-overlay-layout` unless given."
77
83
  }
78
84
  }
79
85
  }
@@ -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,165 @@
1
+ {
2
+ "name": "DagView",
3
+ "description": "A dependency graph (DAG): nodes laid out in layers (LR or TB) with arrowed edges, status colours from theme tokens, any node content through renderNode, single selection that lights the selected node's edges, and pan/zoom by mouse, wheel, trackpad, touch and keyboard (role=listbox of options).",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
8
+ "extends": [
9
+ "Omit<React.HTMLAttributes<HTMLDivElement>, \"onClick\">"
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/dagView/dagView.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/dagView/dagView.entry.less\";"
22
+ },
23
+ "props": {
24
+ "label": {
25
+ "type": "string",
26
+ "required": true,
27
+ "description": "What the graph shows: its accessible name."
28
+ },
29
+ "summary": {
30
+ "type": "string | undefined",
31
+ "required": false,
32
+ "description": "The graph in words, for screen readers; it is there on the server too."
33
+ },
34
+ "nodes": {
35
+ "type": "readonly DagViewNode<T>[]",
36
+ "required": true,
37
+ "description": "The nodes. A change of status, label or data alone does not lay the graph out again."
38
+ },
39
+ "edges": {
40
+ "type": "readonly DagViewEdge[]",
41
+ "required": true,
42
+ "description": "The edges, from the node depended on to the node that depends on it."
43
+ },
44
+ "renderNode": {
45
+ "type": "((node: DagViewNode<T>, state: DagViewNodeState) => React.ReactNode) | undefined",
46
+ "required": false,
47
+ "description": "Draws a node's content inside its box; the default shows a status dot,\nthe label and the status word. `node` and `state` are a snapshot of the\nrender they are passed to. Keep the content non-interactive where you can:\na node is an ARIA option, whose content assistive technology may read as\nplain text, and a click in it also selects the node. Links and buttons in\nit are left out of the Tab order except in the node that is the graph's\nTab stop."
48
+ },
49
+ "direction": {
50
+ "type": "DagDirection | undefined",
51
+ "required": false,
52
+ "description": "Which way the layers run: \"LR\" (left to right, default) or \"TB\" (top to bottom)."
53
+ },
54
+ "nodeWidth": {
55
+ "type": "number | undefined",
56
+ "required": false,
57
+ "description": "A node's width in pixels, unless the node sets its own; 180 by default."
58
+ },
59
+ "nodeHeight": {
60
+ "type": "number | undefined",
61
+ "required": false,
62
+ "description": "A node's height in pixels, unless the node sets its own; 56 by default."
63
+ },
64
+ "rankGap": {
65
+ "type": "number | undefined",
66
+ "required": false,
67
+ "description": "The space between layers in pixels; 64 by default."
68
+ },
69
+ "nodeGap": {
70
+ "type": "number | undefined",
71
+ "required": false,
72
+ "description": "The space between nodes in a layer in pixels; 24 by default."
73
+ },
74
+ "layout": {
75
+ "type": "((input: DagLayoutInput) => DagLayoutResult) | undefined",
76
+ "required": false,
77
+ "description": "Lays the graph out in place of the built-in layout, e.g. with dagre or elk. It must be\nsynchronous. The layout re-runs when the graph's shape changes; swapping this function\nalone does not."
78
+ },
79
+ "selectedId": {
80
+ "type": "string | null | undefined",
81
+ "required": false,
82
+ "description": "The selected node's id (controlled); null selects nothing."
83
+ },
84
+ "defaultSelectedId": {
85
+ "type": "string | null | undefined",
86
+ "required": false,
87
+ "description": "The node selected at first (uncontrolled)."
88
+ },
89
+ "onSelectedChange": {
90
+ "type": "((id: string | null) => void) | undefined",
91
+ "required": false,
92
+ "description": "A node was selected (its id) or the selection was cleared (null)."
93
+ },
94
+ "onNodeClick": {
95
+ "type": "((node: DagViewNode<T>, event: React.MouseEvent | React.KeyboardEvent) => void) | undefined",
96
+ "required": false,
97
+ "description": "A node was clicked, or chosen with Enter or Space. Not called for a disabled node."
98
+ },
99
+ "dimUnrelated": {
100
+ "type": "boolean | undefined",
101
+ "required": false,
102
+ "description": "Fades the nodes and edges that are not next to the selected node."
103
+ },
104
+ "viewport": {
105
+ "type": "DagViewViewport | undefined",
106
+ "required": false,
107
+ "description": "Where the graph is (controlled)."
108
+ },
109
+ "defaultViewport": {
110
+ "type": "DagViewViewport | undefined",
111
+ "required": false,
112
+ "description": "Where the graph is at first (uncontrolled); with `fit={false}` the page does not move after it loads."
113
+ },
114
+ "onViewportChange": {
115
+ "type": "((viewport: DagViewViewport) => void) | undefined",
116
+ "required": false,
117
+ "description": "The view moved or zoomed: at most once per frame during a gesture."
118
+ },
119
+ "fit": {
120
+ "type": "boolean | undefined",
121
+ "required": false,
122
+ "description": "Fits the graph in view once it is in the page, and again when its nodes or edges change; true by default."
123
+ },
124
+ "minZoom": {
125
+ "type": "number | undefined",
126
+ "required": false,
127
+ "description": "The smallest zoom; 0.1 by default."
128
+ },
129
+ "maxZoom": {
130
+ "type": "number | undefined",
131
+ "required": false,
132
+ "description": "The largest zoom; 2 by default."
133
+ },
134
+ "wheel": {
135
+ "type": "\"zoom\" | \"pan\" | \"none\" | undefined",
136
+ "required": false,
137
+ "description": "What a plain mouse wheel does: \"zoom\" (default), \"pan\", or \"none\" (the page scrolls). Ctrl+wheel and a trackpad pinch always zoom."
138
+ },
139
+ "controls": {
140
+ "type": "boolean | undefined",
141
+ "required": false,
142
+ "description": "Shows the zoom in, zoom out and fit buttons; true by default."
143
+ },
144
+ "labels": {
145
+ "type": "Partial<DagViewLabels> | undefined",
146
+ "required": false,
147
+ "description": "Texts for assistive technology and the buttons, over the English defaults."
148
+ },
149
+ "height": {
150
+ "type": "number | string | undefined",
151
+ "required": false,
152
+ "description": "The graph's height: a number of pixels or any CSS length; 480 by default,\nfrom the stylesheet, so a height in `style` works too. It fills the width."
153
+ },
154
+ "apiRef": {
155
+ "type": "((api: DagViewApi) => void) | undefined",
156
+ "required": false,
157
+ "description": "Gets the functions that move the view from outside."
158
+ },
159
+ "data-testid": {
160
+ "type": "string | undefined",
161
+ "required": false,
162
+ "description": "Test id of the root `<div>`; `dag-view` unless given."
163
+ }
164
+ }
165
+ }
@@ -34,7 +34,7 @@
34
34
  "layout": {
35
35
  "type": "DescriptionListLayout",
36
36
  "required": false,
37
- "description": "Current chat shell layout mode."
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
38
  },
39
39
  "termWidth": {
40
40
  "type": "number | string",
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "DiffStat",
3
+ "description": "The size of a change: \"+N −M\" (U+2212 minus) in the theme's success and error, with an optional five-cell bar of the same proportions and a compact tab variant; one accessible name (\"added N, removed M\", overridable with format) instead of the digits read twice (role=img).",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
8
+ "extends": [
9
+ "Omit<HTMLAttributes<HTMLSpanElement>, \"role\">"
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/diffStat/diffStat.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/diffStat/diffStat.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
+ "added": {
30
+ "type": "number",
31
+ "required": true,
32
+ "description": "Lines added; the figure behind \"+N\". NaN, `undefined`, Infinity and negatives count as 0."
33
+ },
34
+ "removed": {
35
+ "type": "number",
36
+ "required": true,
37
+ "description": "Lines removed; the figure behind \"−M\". NaN, `undefined`, Infinity and negatives count as 0."
38
+ },
39
+ "bar": {
40
+ "type": "boolean",
41
+ "required": false,
42
+ "description": "The five cells beside the figures. Shown by default, hidden in `compact`; set it either way."
43
+ },
44
+ "compact": {
45
+ "type": "boolean",
46
+ "required": false,
47
+ "description": "The tab variant: smaller figures, and no bar unless `bar` asks for one."
48
+ },
49
+ "format": {
50
+ "type": "DiffStatFormat",
51
+ "required": false,
52
+ "description": "How the accessible name is made from the two counts, as numbers: `DEFAULT_DIFF_STAT_FORMAT` unless given."
53
+ },
54
+ "group": {
55
+ "type": "(value: number) => string",
56
+ "required": false,
57
+ "description": "How each figure is written (it gets the count as `diffStatCount` takes it): `groupDiffStatCount` — three digits per group — unless given."
58
+ },
59
+ "data-testid": {
60
+ "type": "string",
61
+ "required": false,
62
+ "description": "Test id of the root `<span>`; `diff-stat` unless given."
63
+ }
64
+ }
65
+ }
@@ -30,6 +30,11 @@
30
30
  "type": "number | string",
31
31
  "required": false,
32
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."
33
38
  }
34
39
  }
35
40
  }
@@ -40,6 +40,11 @@
40
40
  "type": "number",
41
41
  "required": false,
42
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."
43
48
  }
44
49
  }
45
50
  }
@@ -50,6 +50,11 @@
50
50
  "type": "ReactNode",
51
51
  "required": false,
52
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."
53
58
  }
54
59
  }
55
60
  }