@smwb/ui-mcp-react 2.8.0 → 2.10.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 (25) hide show
  1. package/component-meta/dataDisplay/badge/badge.json +2 -2
  2. package/component-meta/dataDisplay/chat/chat.chatFooterComposer.json +24 -0
  3. package/component-meta/dataDisplay/chat/chat.json +24 -3
  4. package/component-meta/dataDisplay/chat/chatComposer.json +1 -1
  5. package/component-meta/dataDisplay/chat/chatLayout.json +2 -1
  6. package/component-meta/dataDisplay/chat/chatOverlayLayout.json +2 -1
  7. package/component-meta/dataDisplay/dagView/dagView.json +165 -0
  8. package/component-meta/dataDisplay/diffStat/diffStat.json +65 -0
  9. package/component-meta/dataDisplay/kbd/kbd.json +55 -0
  10. package/component-meta/dataDisplay/list/listItem.json +18 -3
  11. package/component-meta/dataDisplay/qrCode/qrCode.json +60 -0
  12. package/component-meta/dataDisplay/statusDot/statusDot.json +60 -0
  13. package/component-meta/dataDisplay/swimlanes/swimlanes.json +90 -0
  14. package/component-meta/dataDisplay/treeView/treeView.json +16 -1
  15. package/component-meta/inputs/button/button.json +10 -0
  16. package/component-meta/inputs/composer/composer.json +222 -0
  17. package/component-meta/layout/sheet/sheet.json +20 -0
  18. package/component-meta/layout/tabGroups/tabGroups.json +101 -0
  19. package/component-meta/navigation/appBar/appBar.json +15 -0
  20. package/component-meta/navigation/commandPalette/commandPalette.json +161 -0
  21. package/component-meta/navigation/sidebar/sidebar.json +5 -0
  22. package/component-meta/navigation/tabs/tab/tab.json +30 -4
  23. package/component-meta/navigation/tabs/tabPanel/tabPanel.json +42 -0
  24. package/component-meta/navigation/tabs/tabs.json +39 -6
  25. package/package.json +3 -3
@@ -32,9 +32,9 @@
32
32
  "description": "Badge Content. Optional. Type: React.ReactNode."
33
33
  },
34
34
  "color": {
35
- "type": "\"primary\" | \"success\" | \"danger\"",
35
+ "type": "\"primary\" | \"success\" | \"danger\" | \"warning\"",
36
36
  "required": false,
37
- "description": "Semantic color token."
37
+ "description": "Semantic color; `warning` is amber, and carries dark ink to stay readable at this size."
38
38
  },
39
39
  "variant": {
40
40
  "type": "\"inside\" | \"outside\"",
@@ -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": {
@@ -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": {
@@ -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
+ }
@@ -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
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "Kbd",
3
+ "description": "A keyboard shortcut as key caps (<kbd>): `Mod` is Command on macOS and Ctrl elsewhere, Mac names become symbols; for a tooltip, a menu item or a command palette.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
8
+ "extends": [
9
+ "Omit<HTMLAttributes<HTMLElement>, \"children\">"
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/kbd/kbd.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/kbd/kbd.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
+ "keys": {
30
+ "type": "string[]",
31
+ "required": true,
32
+ "description": "The keys of the shortcut in order, e.g. `[\"Mod\", \"K\"]` or `[\"Shift\", \"Enter\"]`. `Mod` is the\nCommand key on macOS and Ctrl elsewhere. On macOS, `Shift`, `Alt`/`Option`, `Ctrl`/`Control`,\n`Meta`/`Cmd`/`Command`, `Enter`, `Escape`, `Tab`, `Backspace` and `Delete` are drawn as the\nsymbols of the Mac keyboard; elsewhere the same names are drawn as Ctrl, Alt, Shift, Meta, Enter,\nEsc, Tab, Backspace and Del, whatever their case. `\" \"` and `Space` are the Space key, `+` and\n`Plus` the plus key.\nArrow names (`ArrowUp` or `Up`, …) are arrows everywhere; any other key is drawn as given\n(a single letter in upper case)."
33
+ },
34
+ "platform": {
35
+ "type": "KbdPlatform",
36
+ "required": false,
37
+ "description": "The platform whose keys are drawn. Without it the browser's own is used: `other` on the\nserver and in the first client render (so that hydration matches), `mac` right after on a Mac.\nSet it for a fixed look, in stories and in tests."
38
+ },
39
+ "separator": {
40
+ "type": "string",
41
+ "required": false,
42
+ "description": "Drawn between the key caps. By default `+` on `other` and nothing on `mac`, where the symbols\nstand side by side; `\"\"` draws none. It is for the eye only; assistive technology reads `label`."
43
+ },
44
+ "label": {
45
+ "type": "string",
46
+ "required": false,
47
+ "description": "What assistive technology reads instead of the key caps. By default the key names, joined\nwith `+` on `other` (\"Ctrl+K\") and with a space on `mac` (\"Command K\")."
48
+ },
49
+ "data-testid": {
50
+ "type": "string",
51
+ "required": false,
52
+ "description": "Test id of the root `<kbd>`; `kbd` unless given."
53
+ }
54
+ }
55
+ }
@@ -30,7 +30,7 @@
30
30
  "selected": {
31
31
  "type": "boolean",
32
32
  "required": false,
33
- "description": "Controlled selected tab index or value."
33
+ "description": "Paints the row as the current one. On a link row (with `href`) it also marks the link as the current page\nwith `aria-current=\"page\"`, because `aria-selected` is not a state a list item can have; on another row it\nstays `aria-selected`."
34
34
  },
35
35
  "dense": {
36
36
  "type": "boolean",
@@ -50,12 +50,27 @@
50
50
  "endAdornment": {
51
51
  "type": "React.ReactNode",
52
52
  "required": false,
53
- "description": "End Adornment. Optional. Type: React.ReactNode."
53
+ "description": "Trailing content. On a link row (with `href`) it sits beside the link, not inside it, so it can hold a control\n(a pin button, a toggle) without nesting it in the `<a>`; a click on it does not reach `onClick`."
54
+ },
55
+ "href": {
56
+ "type": "string",
57
+ "required": false,
58
+ "description": "Makes the row a link: the `startAdornment` and the children sit in an `<a href>` that fills the row, so it can be\nfocused with Tab, opened with middle click or copied. Keep the `startAdornment` non-interactive; a control\nbelongs in the `endAdornment`. A disabled row has no `href`. A router takes the\nplain click in `onClick` with `event.preventDefault()`, and leaves a modified one (Ctrl, Meta, Shift,\nAlt, or a button other than the main one) to the browser, as a router's `Link` does."
59
+ },
60
+ "target": {
61
+ "type": "string | null",
62
+ "required": false,
63
+ "description": "Where the link (with `href`) opens. By default `\"_blank\"`: a new tab, as for `Button`. Pass `null` for an\ninternal link: the `target` attribute is left out and the link opens in place. An empty string does the same; any other\nstring is used as is."
64
+ },
65
+ "rel": {
66
+ "type": "string",
67
+ "required": false,
68
+ "description": "The `rel` of the link (with `href`). By default `\"noreferrer\"` for a link that opens another tab or window,\nand none for one that opens in place. Your own value replaces the default, so add `noreferrer` yourself\nif you still want it; an empty string drops the attribute."
54
69
  },
55
70
  "onClick": {
56
71
  "type": "React.MouseEventHandler<HTMLLIElement>",
57
72
  "required": false,
58
- "description": "Callback fired when the element is clicked."
73
+ "description": "Click handler of the row. With an `href` it runs for a click on the link (not on the `endAdornment`), before the\nbrowser follows it, so `event.preventDefault()` cancels the navigation; the row then is not a Tab stop of its\nown, the link is."
59
74
  }
60
75
  }
61
76
  }
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "QrCode",
3
+ "description": "QR code of a value as an SVG image (role=img), dark modules on white in every theme, with a quiet zone, size, caption and error-correction level.",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
8
+ "extends": [
9
+ "Omit<React.HTMLAttributes<HTMLElement>, \"children\" | \"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/qrCode/qrCode.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/qrCode/qrCode.entry.less\";"
22
+ },
23
+ "props": {
24
+ "value": {
25
+ "type": "string",
26
+ "required": true,
27
+ "description": "Text encoded in the code (a URL, a pairing token). Encoded as UTF-8 bytes."
28
+ },
29
+ "size": {
30
+ "type": "number | undefined",
31
+ "required": false,
32
+ "description": "Side of the code, quiet zone included, in pixels. Default 192."
33
+ },
34
+ "caption": {
35
+ "type": "React.ReactNode",
36
+ "required": false,
37
+ "description": "Shown under the code (a `<figcaption>`), e.g. \"Scan with the phone app\"."
38
+ },
39
+ "label": {
40
+ "type": "string | undefined",
41
+ "required": false,
42
+ "description": "Accessible name of the image. Default \"QR code\"."
43
+ },
44
+ "errorCorrection": {
45
+ "type": "QrCodeErrorCorrection | undefined",
46
+ "required": false,
47
+ "description": "Error-correction level: L 7%, M 15% (default), Q 25%, H 30% of the code may be damaged or covered."
48
+ },
49
+ "quietZone": {
50
+ "type": "number | undefined",
51
+ "required": false,
52
+ "description": "Light margin around the code in modules. Default 4, the minimum the QR spec asks for; smaller values hurt scanning."
53
+ },
54
+ "data-testid": {
55
+ "type": "string | undefined",
56
+ "required": false,
57
+ "description": "Test id of the root; `qr-code` unless given."
58
+ }
59
+ }
60
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "StatusDot",
3
+ "description": "Small status marker dot coloured by status or theme colour, with a pulse for active (role=img).",
4
+ "ssr": {
5
+ "safe": true,
6
+ "rendering": "universal"
7
+ },
8
+ "extends": [
9
+ "Omit<HTMLAttributes<HTMLSpanElement>, \"role\" | \"children\" | \"aria-label\">"
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/statusDot/statusDot.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/statusDot/statusDot.entry.less\";"
22
+ },
23
+ "props": {
24
+ "className": {
25
+ "type": "string",
26
+ "required": false,
27
+ "description": "Class name(s) for the dot's root `<span>`."
28
+ },
29
+ "status": {
30
+ "type": "StatusDotStatus | undefined",
31
+ "required": false,
32
+ "description": "What the dot says, and so its colour: `active` info, `attention` warning, `idle` neutral, `done` success,\n`error` error. `unknown` is a ring in the outline colour. Without `status` (and without `color`) the dot is\n`unknown`."
33
+ },
34
+ "color": {
35
+ "type": "StatusDotColor | undefined",
36
+ "required": false,
37
+ "description": "A theme colour instead of the status's own, or on its own with no `status` (a plain disc). Given with a\n`status`, the status still sets the shape."
38
+ },
39
+ "size": {
40
+ "type": "StatusDotSize | undefined",
41
+ "required": false,
42
+ "description": "`md` (12px) unless given; `sm` is 8px."
43
+ },
44
+ "pulse": {
45
+ "type": "boolean | undefined",
46
+ "required": false,
47
+ "description": "A ring spreads from the dot. On unless given for `active`, off for every other status. Never drawn while the\nuser prefers reduced motion."
48
+ },
49
+ "label": {
50
+ "type": "string",
51
+ "required": true,
52
+ "description": "What the dot means in words, e.g. \"Working\": the accessible name, read by assistive technology."
53
+ },
54
+ "data-testid": {
55
+ "type": "string | undefined",
56
+ "required": false,
57
+ "description": "Test id of the root; `status-dot` unless given."
58
+ }
59
+ }
60
+ }