@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.
- package/component-meta/base/icon/icon.json +6 -1
- package/component-meta/base/ripple/ripple.json +6 -1
- package/component-meta/connects/rt/table/headerCellRenderer.json +1 -1
- package/component-meta/connects/rt/table/table.json +1 -1
- package/component-meta/dataDisplay/accordion/accordion.json +27 -2
- package/component-meta/dataDisplay/avatar/avatar.avatarGroup.json +15 -0
- package/component-meta/dataDisplay/avatar/avatar.json +5 -0
- package/component-meta/dataDisplay/card/card.json +10 -5
- package/component-meta/dataDisplay/chart/chart.json +78 -0
- package/component-meta/dataDisplay/chat/chatLayout.json +5 -0
- package/component-meta/dataDisplay/chat/chatOverlayLayout.json +5 -0
- package/component-meta/dataDisplay/chip/chip.json +14 -4
- package/component-meta/dataDisplay/descriptionList/descriptionList.descriptionItem.json +35 -0
- package/component-meta/dataDisplay/descriptionList/descriptionList.json +50 -0
- package/component-meta/dataDisplay/kanban/kanban.json +40 -0
- package/component-meta/dataDisplay/kanban/kanban.kanbanCard.json +50 -0
- package/component-meta/dataDisplay/kanban/kanban.kanbanColumn.json +60 -0
- package/component-meta/dataDisplay/list/list.json +5 -0
- package/component-meta/dataDisplay/meter/meter.json +75 -0
- package/component-meta/dataDisplay/personChip/personChip.json +77 -0
- package/component-meta/dataDisplay/stat/stat.json +72 -0
- package/component-meta/dataDisplay/stat/stat.statGroup.json +35 -0
- package/component-meta/dataDisplay/table/table.json +5 -0
- package/component-meta/dataDisplay/table/tableCell.json +10 -0
- package/component-meta/dataDisplay/table/tableHeadCell.json +11 -1
- package/component-meta/dataDisplay/table/tableRow.json +5 -0
- package/component-meta/dataDisplay/thumbCard/thumbCard.json +16 -6
- package/component-meta/dataDisplay/timeline/timeline.json +42 -0
- package/component-meta/dataDisplay/timeline/timeline.timelineGroup.json +35 -0
- package/component-meta/dataDisplay/timeline/timeline.timelineItem.json +55 -0
- package/component-meta/dataDisplay/treeView/treeView.json +5 -0
- package/component-meta/dataDisplay/typography/typography.json +10 -0
- package/component-meta/feedBack/emptyState/emptyState.json +62 -0
- package/component-meta/feedBack/message/message.json +5 -0
- package/component-meta/feedBack/progressIndicator/progressIndicator.circularProgress.json +1 -1
- package/component-meta/feedBack/progressIndicator/progressIndicator.json +20 -0
- package/component-meta/feedBack/skeleton/skeleton.json +7 -2
- package/component-meta/feedBack/tooltip/tooltip.json +4 -4
- package/component-meta/inputs/button/button.json +5 -0
- package/component-meta/inputs/buttonGroups/buttonGroup.json +5 -0
- package/component-meta/inputs/checkbox/checkbox.json +2 -2
- package/component-meta/inputs/radioButton/radioButton.json +6 -1
- package/component-meta/inputs/rating/rating.json +11 -1
- package/component-meta/inputs/selectField/dropdownMenu.json +45 -0
- package/component-meta/inputs/selectField/selectField.json +11 -6
- package/component-meta/inputs/slider/slider.json +8 -3
- package/component-meta/inputs/textField/textField.json +3 -3
- package/component-meta/inputs/textField/textFieldWrapper.json +16 -1
- package/component-meta/inputs/toggle/toggle.json +1 -1
- package/component-meta/inputs/valueSlider/valueSlider.json +13 -8
- package/component-meta/layout/appLayout/appLayout.json +5 -0
- package/component-meta/layout/divider/divider.json +5 -0
- package/component-meta/layout/floatingWindow/floatingWindow.json +5 -0
- package/component-meta/layout/grid/grid.column.json +1 -1
- package/component-meta/layout/grid/grid.container.json +5 -0
- package/component-meta/layout/grid/grid.row.json +5 -0
- package/component-meta/layout/page/page.json +5 -0
- package/component-meta/layout/pageHeader/pageHeader.json +5 -0
- package/component-meta/layout/sectionHeader/sectionHeader.json +73 -0
- package/component-meta/layout/sheet/sheet.json +5 -0
- package/component-meta/layout/stack/stack.json +5 -0
- package/component-meta/navigation/appBar/appBar.json +5 -0
- package/component-meta/navigation/breadcrumbs/breadcrumbs.json +5 -0
- package/component-meta/navigation/menu/menu.json +1 -1
- package/component-meta/navigation/menu/menuItem.json +1 -1
- package/component-meta/navigation/pagination/pagination.json +5 -0
- package/component-meta/navigation/stepper/stepper.json +7 -2
- package/component-meta/navigation/tabs/tab/tab.json +5 -0
- package/component-meta/navigation/tabs/tabs.json +26 -5
- package/package.json +3 -3
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Meter",
|
|
3
|
+
"description": "Share of a whole, 'X of Y': a bar with the figures beside it, coloured by thresholds (role=meter).",
|
|
4
|
+
"ssr": {
|
|
5
|
+
"safe": true,
|
|
6
|
+
"rendering": "universal"
|
|
7
|
+
},
|
|
8
|
+
"extends": [
|
|
9
|
+
"Omit<HTMLAttributes<HTMLDivElement>, \"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/meter/meter.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/meter/meter.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
|
+
"value": {
|
|
30
|
+
"type": "number",
|
|
31
|
+
"required": true,
|
|
32
|
+
"description": "How many are done (X of Y)."
|
|
33
|
+
},
|
|
34
|
+
"max": {
|
|
35
|
+
"type": "number",
|
|
36
|
+
"required": true,
|
|
37
|
+
"description": "How many there are in all (X of Y)."
|
|
38
|
+
},
|
|
39
|
+
"label": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"required": true,
|
|
42
|
+
"description": "What is measured — the accessible name, e.g. \"Requirements accepted\"."
|
|
43
|
+
},
|
|
44
|
+
"text": {
|
|
45
|
+
"type": "ReactNode | ((value: number, max: number) => ReactNode)",
|
|
46
|
+
"required": false,
|
|
47
|
+
"description": "Visible text instead of \"X of Y\": markup, or a function of (value, max)."
|
|
48
|
+
},
|
|
49
|
+
"ofLabel": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"required": false,
|
|
52
|
+
"description": "The word between the figures in the default text and in aria-valuetext."
|
|
53
|
+
},
|
|
54
|
+
"thresholds": {
|
|
55
|
+
"type": "readonly MeterThreshold[]",
|
|
56
|
+
"required": false,
|
|
57
|
+
"description": "Colour by share of `max`: the last threshold the share reaches wins."
|
|
58
|
+
},
|
|
59
|
+
"color": {
|
|
60
|
+
"type": "MeterColor",
|
|
61
|
+
"required": false,
|
|
62
|
+
"description": "A fixed colour, instead of the thresholds."
|
|
63
|
+
},
|
|
64
|
+
"hideText": {
|
|
65
|
+
"type": "boolean",
|
|
66
|
+
"required": false,
|
|
67
|
+
"description": "The bar only; the text stays available to assistive technology."
|
|
68
|
+
},
|
|
69
|
+
"data-testid": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"required": false,
|
|
72
|
+
"description": "Test id of the root `<div>`; `meter` unless given."
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "PersonChip",
|
|
3
|
+
"description": "A person as an avatar (image or initials on a steady colour) and a name; a link to their card with href; avatar-only when compact.",
|
|
4
|
+
"ssr": {
|
|
5
|
+
"safe": true,
|
|
6
|
+
"rendering": "universal"
|
|
7
|
+
},
|
|
8
|
+
"extends": [
|
|
9
|
+
"Omit<HTMLAttributes<HTMLElement>, \"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/personChip/personChip.entry.less"
|
|
19
|
+
],
|
|
20
|
+
"dependencies": [
|
|
21
|
+
"@smwb/ui-styles/less/components/avatar/avatar.entry.less"
|
|
22
|
+
],
|
|
23
|
+
"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/personChip/personChip.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/avatar/avatar.entry.less\";"
|
|
24
|
+
},
|
|
25
|
+
"props": {
|
|
26
|
+
"className": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"required": false,
|
|
29
|
+
"description": "Additional CSS class name(s) for the root element."
|
|
30
|
+
},
|
|
31
|
+
"name": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"required": true,
|
|
34
|
+
"description": "The person's name: shown beside the avatar, and the source of its initials."
|
|
35
|
+
},
|
|
36
|
+
"src": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"required": false,
|
|
39
|
+
"description": "Avatar image; initials on a colour without it or when it fails."
|
|
40
|
+
},
|
|
41
|
+
"href": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"required": false,
|
|
44
|
+
"description": "Link to the person's card."
|
|
45
|
+
},
|
|
46
|
+
"compact": {
|
|
47
|
+
"type": "boolean",
|
|
48
|
+
"required": false,
|
|
49
|
+
"description": "The avatar only; the name becomes its tooltip and accessible name."
|
|
50
|
+
},
|
|
51
|
+
"size": {
|
|
52
|
+
"type": "AvatarSize | number",
|
|
53
|
+
"required": false,
|
|
54
|
+
"description": "Avatar size: a preset or pixels. 24px by default."
|
|
55
|
+
},
|
|
56
|
+
"colorSeed": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"required": false,
|
|
59
|
+
"description": "Seed for the avatar colour (an id); the name by default."
|
|
60
|
+
},
|
|
61
|
+
"color": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"required": false,
|
|
64
|
+
"description": "A fixed avatar colour instead of the derived one."
|
|
65
|
+
},
|
|
66
|
+
"meta": {
|
|
67
|
+
"type": "ReactNode",
|
|
68
|
+
"required": false,
|
|
69
|
+
"description": "A second line under the name: a role, a date."
|
|
70
|
+
},
|
|
71
|
+
"data-testid": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"required": false,
|
|
74
|
+
"description": "Test id of the root; `person-chip` unless given."
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Stat",
|
|
3
|
+
"description": "A figure with its label, hint and optional icon: a KPI tile with a toned accent edge, or a plain stat; can be a link.",
|
|
4
|
+
"ssr": {
|
|
5
|
+
"safe": true,
|
|
6
|
+
"rendering": "universal"
|
|
7
|
+
},
|
|
8
|
+
"extends": [
|
|
9
|
+
"Omit<HTMLAttributes<HTMLElement>, \"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/stat/stat.entry.less"
|
|
19
|
+
],
|
|
20
|
+
"dependencies": [
|
|
21
|
+
"@smwb/ui-styles/less/components/icon/icon.entry.less"
|
|
22
|
+
],
|
|
23
|
+
"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/stat/stat.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/icon/icon.entry.less\";"
|
|
24
|
+
},
|
|
25
|
+
"props": {
|
|
26
|
+
"className": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"required": false,
|
|
29
|
+
"description": "Additional CSS class name(s) for the root element."
|
|
30
|
+
},
|
|
31
|
+
"label": {
|
|
32
|
+
"type": "ReactNode",
|
|
33
|
+
"required": true,
|
|
34
|
+
"description": "What the figure counts."
|
|
35
|
+
},
|
|
36
|
+
"value": {
|
|
37
|
+
"type": "ReactNode",
|
|
38
|
+
"required": true,
|
|
39
|
+
"description": "The figure — a number, or a short value such as \"3 / 14\"."
|
|
40
|
+
},
|
|
41
|
+
"hint": {
|
|
42
|
+
"type": "ReactNode",
|
|
43
|
+
"required": false,
|
|
44
|
+
"description": "A line under the value: a comparison, a period, a caveat."
|
|
45
|
+
},
|
|
46
|
+
"icon": {
|
|
47
|
+
"type": "string | ReactNode",
|
|
48
|
+
"required": false,
|
|
49
|
+
"description": "An icon beside the figure: a Material Symbols name or an element."
|
|
50
|
+
},
|
|
51
|
+
"tone": {
|
|
52
|
+
"type": "StatTone",
|
|
53
|
+
"required": false,
|
|
54
|
+
"description": "Colour of the accent (a tile's edge, the icon). `warning` and `error` colour the figure too."
|
|
55
|
+
},
|
|
56
|
+
"variant": {
|
|
57
|
+
"type": "\"tile\" | \"plain\"",
|
|
58
|
+
"required": false,
|
|
59
|
+
"description": "`tile`: a bordered card with an accent edge, for KPIs. `plain`: text only, for rows of small figures."
|
|
60
|
+
},
|
|
61
|
+
"href": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"required": false,
|
|
64
|
+
"description": "Make the whole stat a link to what the figure is made of."
|
|
65
|
+
},
|
|
66
|
+
"data-testid": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"required": false,
|
|
69
|
+
"description": "Test id of the root; `stat` unless given."
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "StatGroup",
|
|
3
|
+
"description": "Responsive grid row of stats: as many columns as fit, each at least minItemWidth wide.",
|
|
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/stat/stat.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/stat/stat.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
|
+
"minItemWidth": {
|
|
30
|
+
"type": "number | string",
|
|
31
|
+
"required": false,
|
|
32
|
+
"description": "Narrowest a stat may get before the row wraps; a CSS length or px. 9rem by default."
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -51,6 +51,11 @@
|
|
|
51
51
|
"required": false,
|
|
52
52
|
"description": "Optional accessible caption rendered for screen readers."
|
|
53
53
|
},
|
|
54
|
+
"stackBelow": {
|
|
55
|
+
"type": "\"sm\" | \"md\" | \"lg\"",
|
|
56
|
+
"required": false,
|
|
57
|
+
"description": "Show each row as a card — cells one under another, each with its column's\nlabel — while the table's container is narrower than this breakpoint:\n`sm` (420px), `md` (768px) or `lg` (1024px). A container query: the space\nthe table has decides, not the window.\n\nA cell's label is its `TableCell label`, or else the label of the head cell\nof its column: the head cell's `label`, or the text of its content. Columns\ncount as in HTML: by position in the row, with `colSpan`, after the columns\nthat `rowSpan` cells of the rows above take in the same head or body. A cell\nspanning several columns takes no label from the head and fills the card's\nwidth, and a head cell spanning several columns labels none of them. With\nseveral head rows, the lowest head cell over a column names it.\n\nThe columns come from the elements written: rows written as `TableRow` in\n`TableHead` or `TableBody`, and cells in a row (arrays and fragments\nincluded). A component that renders a row counts as a row whose cells span\nno rows down, and a component that renders cells counts as one cell, with\nits own `colSpan` and `rowSpan`: give the cells after such a component, or\nthe component's own cells, a `label`."
|
|
58
|
+
},
|
|
54
59
|
"paginationSettings": {
|
|
55
60
|
"type": "TablePaginationProps",
|
|
56
61
|
"required": false,
|
|
@@ -30,6 +30,16 @@
|
|
|
30
30
|
"type": "\"left\" | \"right\" | \"center\"",
|
|
31
31
|
"required": false,
|
|
32
32
|
"description": "Cell Align. Optional. Type: \"left\" | \"right\" | \"center\"."
|
|
33
|
+
},
|
|
34
|
+
"label": {
|
|
35
|
+
"type": "string | false",
|
|
36
|
+
"required": false,
|
|
37
|
+
"description": "The column's name, shown next to the value when the table stacks rows as\ncards (`Table stackBelow`). Without it, the cell takes the label of its\ncolumn's head cell; `false` keeps the cell unlabelled, so it fills the\ncard's width (an action, a sub-row). A caller's own `data-label` counts as a\ngiven label too."
|
|
38
|
+
},
|
|
39
|
+
"data-label": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"required": false,
|
|
42
|
+
"description": "The cell's label written by hand, as the attribute the stacked layout shows; `label` replaces it."
|
|
33
43
|
}
|
|
34
44
|
}
|
|
35
45
|
}
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"sortable": {
|
|
47
47
|
"type": "boolean",
|
|
48
48
|
"required": false,
|
|
49
|
-
"description": "Enables the interactive sort affordance with keyboard/aria support."
|
|
49
|
+
"description": "Enables the interactive sort affordance with keyboard/aria support.\n\nThe children sit inside the sort control, and controls among them keep\ntheir own input: Enter and Space sort only while the sort control itself\nhas focus, and a click sorts unless it lands in a nested control (input,\nbutton, link, label, anything focusable) or in a portal. Content that is not\na control, such as click-to-edit text, keeps its click from sorting by\ncalling `preventDefault()` on it. A nested control's name, or its value,\nbecomes part of the sort control's accessible name: put controls in\n`actions` instead."
|
|
50
50
|
},
|
|
51
51
|
"sortDirection": {
|
|
52
52
|
"type": "SortDirection",
|
|
@@ -57,6 +57,16 @@
|
|
|
57
57
|
"type": "() => void",
|
|
58
58
|
"required": false,
|
|
59
59
|
"description": "Invoked when the user activates the sort control."
|
|
60
|
+
},
|
|
61
|
+
"actions": {
|
|
62
|
+
"type": "ReactNode",
|
|
63
|
+
"required": false,
|
|
64
|
+
"description": "The column's controls — a filter field, a menu button, a column resizer —\ndrawn after the sort control, outside it. Their names and values stay out\nof the sort control's accessible name, and their keys and clicks never\nreach it. Rendered whether or not the cell is sortable.\n\nThe column header is then named after the children alone: the cell's\n`aria-labelledby` points at the sort control, unless the cell is given\n`aria-label` or `aria-labelledby`. Named from its content, the header would\ntake in the controls' names and values too."
|
|
65
|
+
},
|
|
66
|
+
"label": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"required": false,
|
|
69
|
+
"description": "The column's name for its body cells while the table stacks rows as cards\n(`Table stackBelow`). Without it, the text of the children is the name; give\n`label` where they hold no text of their own (an icon, a translated message\ncomponent) or more than the name. An empty `label` leaves the column's cells\nunlabelled, so they fill the card's width."
|
|
60
70
|
}
|
|
61
71
|
}
|
|
62
72
|
}
|
|
@@ -35,6 +35,11 @@
|
|
|
35
35
|
"type": "boolean",
|
|
36
36
|
"required": false,
|
|
37
37
|
"description": "Reflects expandable-row state (adds aria-expanded + styling)."
|
|
38
|
+
},
|
|
39
|
+
"data-testid": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"required": false,
|
|
42
|
+
"description": "Test id of the `<tr>`; `table-row` unless given."
|
|
38
43
|
}
|
|
39
44
|
}
|
|
40
45
|
}
|
|
@@ -24,6 +24,11 @@
|
|
|
24
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/thumbCard/thumbCard.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/lazyImage/lazyImage.entry.less\";"
|
|
25
25
|
},
|
|
26
26
|
"props": {
|
|
27
|
+
"className": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"required": false,
|
|
30
|
+
"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, but `role`, `tabIndex`, `onFocus`, `onBlur` and the other `aria-*` attributes go to\nthe card's content, `.smwb-thumb-card__content` (the image and the caption): that is the card's button when it has\n`onSelect`, and the element to focus."
|
|
31
|
+
},
|
|
27
32
|
"src": {
|
|
28
33
|
"type": "string",
|
|
29
34
|
"required": false,
|
|
@@ -32,17 +37,22 @@
|
|
|
32
37
|
"caption": {
|
|
33
38
|
"type": "React.ReactNode",
|
|
34
39
|
"required": false,
|
|
35
|
-
"description": "
|
|
40
|
+
"description": "Text under the image. With `onSelect` it is part of the card's button and names it, so keep controls out of it:\nthey go in `topStart` / `topEnd`."
|
|
36
41
|
},
|
|
37
42
|
"selected": {
|
|
38
43
|
"type": "boolean",
|
|
39
44
|
"required": false,
|
|
40
|
-
"description": "
|
|
45
|
+
"description": "Outlines the image; with `onSelect`, the card's button is also `aria-pressed=\"true\"`."
|
|
41
46
|
},
|
|
42
47
|
"onSelect": {
|
|
43
48
|
"type": "() => void",
|
|
44
49
|
"required": false,
|
|
45
|
-
"description": "Makes the card a
|
|
50
|
+
"description": "Makes the card selectable: its content (the image and the caption) becomes a toggle button with `aria-pressed`,\nselected by a click and by Enter / Space. The corner slots are not part of that button but its siblings, laid over\nthe image, so their controls keep their own names, clicks and keys.\n\nA click selects the card unless it lands in a control in a slot (button, link, input, anything focusable) or in a\nportal opened from the card. Slot content that is not a control keeps its click from selecting the card by calling\n`preventDefault()` on it."
|
|
51
|
+
},
|
|
52
|
+
"onClick": {
|
|
53
|
+
"type": "React.MouseEventHandler<HTMLDivElement> | undefined",
|
|
54
|
+
"required": false,
|
|
55
|
+
"description": "Runs on each click on the card, before `onSelect`, but not while the card is `disabled`.\nA click on a control in a slot runs it too, without selecting the card.\nEnter / Space select the card without a click, so they call only `onSelect`."
|
|
46
56
|
},
|
|
47
57
|
"fallback": {
|
|
48
58
|
"type": "React.ReactNode",
|
|
@@ -57,12 +67,12 @@
|
|
|
57
67
|
"topStart": {
|
|
58
68
|
"type": "React.ReactNode",
|
|
59
69
|
"required": false,
|
|
60
|
-
"description": "Top-left overlay slot (e.g. a favourite star)."
|
|
70
|
+
"description": "Top-left overlay slot (e.g. a favourite star). It sits over the image, outside the card's button, so controls here\nkeep their own names, clicks and keys; see `onSelect`."
|
|
61
71
|
},
|
|
62
72
|
"topEnd": {
|
|
63
73
|
"type": "React.ReactNode",
|
|
64
74
|
"required": false,
|
|
65
|
-
"description": "Top-right overlay slot (e.g. a kebab menu)."
|
|
75
|
+
"description": "Top-right overlay slot (e.g. a kebab menu). It sits over the image, outside the card's button, so controls here\nkeep their own names, clicks and keys; see `onSelect`."
|
|
66
76
|
},
|
|
67
77
|
"lazy": {
|
|
68
78
|
"type": "boolean",
|
|
@@ -72,7 +82,7 @@
|
|
|
72
82
|
"disabled": {
|
|
73
83
|
"type": "boolean",
|
|
74
84
|
"required": false,
|
|
75
|
-
"description": "
|
|
85
|
+
"description": "Dims the card and ignores clicks on it: neither `onClick` nor `onSelect` runs.\nKeys do not select it either, and there is no hover preview. With `onSelect`\nthe card is still a button, `aria-disabled` and out of the tab order."
|
|
76
86
|
},
|
|
77
87
|
"hoverDelay": {
|
|
78
88
|
"type": "number",
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Timeline",
|
|
3
|
+
"description": "Feed of events on a vertical line (<ol>): TimelineItem children, optionally grouped by TimelineGroup.",
|
|
4
|
+
"ssr": {
|
|
5
|
+
"safe": true,
|
|
6
|
+
"rendering": "universal"
|
|
7
|
+
},
|
|
8
|
+
"extends": [
|
|
9
|
+
"OlHTMLAttributes<HTMLOListElement>"
|
|
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/timeline/timeline.entry.less"
|
|
19
|
+
],
|
|
20
|
+
"dependencies": [
|
|
21
|
+
"@smwb/ui-styles/less/components/icon/icon.entry.less"
|
|
22
|
+
],
|
|
23
|
+
"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/timeline/timeline.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/icon/icon.entry.less\";"
|
|
24
|
+
},
|
|
25
|
+
"props": {
|
|
26
|
+
"className": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"required": false,
|
|
29
|
+
"description": "Additional CSS class name(s) for the root element."
|
|
30
|
+
},
|
|
31
|
+
"dense": {
|
|
32
|
+
"type": "boolean",
|
|
33
|
+
"required": false,
|
|
34
|
+
"description": "Tighter rows, for side panels."
|
|
35
|
+
},
|
|
36
|
+
"stickyLabels": {
|
|
37
|
+
"type": "boolean",
|
|
38
|
+
"required": false,
|
|
39
|
+
"description": "Keep a group's label in view while its events scroll past (in a scrolling container)."
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "TimelineGroup",
|
|
3
|
+
"description": "A labelled run of timeline events, e.g. one day.",
|
|
4
|
+
"ssr": {
|
|
5
|
+
"safe": true,
|
|
6
|
+
"rendering": "universal"
|
|
7
|
+
},
|
|
8
|
+
"extends": [
|
|
9
|
+
"Omit<LiHTMLAttributes<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/timeline/timeline.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/timeline/timeline.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
|
+
"label": {
|
|
30
|
+
"type": "ReactNode",
|
|
31
|
+
"required": true,
|
|
32
|
+
"description": "What groups the events — a day, a week, a stage."
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "TimelineItem",
|
|
3
|
+
"description": "One timeline event: a toned mark (icon or dot), title and meta lines, a time, 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/timeline/timeline.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/timeline/timeline.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 event itself: a line of text, usually a link."
|
|
33
|
+
},
|
|
34
|
+
"meta": {
|
|
35
|
+
"type": "ReactNode",
|
|
36
|
+
"required": false,
|
|
37
|
+
"description": "A second line: who, what kind, where."
|
|
38
|
+
},
|
|
39
|
+
"time": {
|
|
40
|
+
"type": "ReactNode",
|
|
41
|
+
"required": false,
|
|
42
|
+
"description": "When: a time or a date, at the end of the row."
|
|
43
|
+
},
|
|
44
|
+
"icon": {
|
|
45
|
+
"type": "string | ReactNode",
|
|
46
|
+
"required": false,
|
|
47
|
+
"description": "The event's mark on the line: a Material Symbols name or an element. A dot without it."
|
|
48
|
+
},
|
|
49
|
+
"tone": {
|
|
50
|
+
"type": "TimelineTone",
|
|
51
|
+
"required": false,
|
|
52
|
+
"description": "Colour of the mark."
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -87,6 +87,11 @@
|
|
|
87
87
|
"type": "(item: ITreeNodeItem, nodeId: string) => Promise<ITreeNodeItem[]>",
|
|
88
88
|
"required": false,
|
|
89
89
|
"description": "Lazily resolves children the first time a node is expanded."
|
|
90
|
+
},
|
|
91
|
+
"data-testid": {
|
|
92
|
+
"type": "string",
|
|
93
|
+
"required": false,
|
|
94
|
+
"description": "Test id of the root `<div>`; `tree-view` unless given."
|
|
90
95
|
}
|
|
91
96
|
}
|
|
92
97
|
}
|
|
@@ -46,6 +46,16 @@
|
|
|
46
46
|
"required": false,
|
|
47
47
|
"description": "Truncate with an ellipsis on a single line."
|
|
48
48
|
},
|
|
49
|
+
"lines": {
|
|
50
|
+
"type": "number",
|
|
51
|
+
"required": false,
|
|
52
|
+
"description": "Truncate with an ellipsis after this many lines."
|
|
53
|
+
},
|
|
54
|
+
"tabularNums": {
|
|
55
|
+
"type": "boolean",
|
|
56
|
+
"required": false,
|
|
57
|
+
"description": "Digits of equal width (`tabular-nums`), so figures line up in KPIs and tables."
|
|
58
|
+
},
|
|
49
59
|
"component": {
|
|
50
60
|
"type": "keyof JSX.IntrinsicElements",
|
|
51
61
|
"required": false,
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "EmptyState",
|
|
3
|
+
"description": "What a list, table or panel shows when it has nothing: an icon, a title, the message (children) and actions; a centred block or an inline muted line, medium or small.",
|
|
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/emptyState/emptyState.entry.less"
|
|
19
|
+
],
|
|
20
|
+
"dependencies": [
|
|
21
|
+
"@smwb/ui-styles/less/components/icon/icon.entry.less"
|
|
22
|
+
],
|
|
23
|
+
"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/emptyState/emptyState.entry.less\";\n@import (less) \"node_modules/@smwb/ui-styles/less/components/icon/icon.entry.less\";"
|
|
24
|
+
},
|
|
25
|
+
"props": {
|
|
26
|
+
"className": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"required": false,
|
|
29
|
+
"description": "Additional CSS class name(s) for the root element."
|
|
30
|
+
},
|
|
31
|
+
"title": {
|
|
32
|
+
"type": "ReactNode",
|
|
33
|
+
"required": false,
|
|
34
|
+
"description": "What is empty, e.g. \"No works yet\"."
|
|
35
|
+
},
|
|
36
|
+
"icon": {
|
|
37
|
+
"type": "ReactNode | string",
|
|
38
|
+
"required": false,
|
|
39
|
+
"description": "An icon name, or an icon element. Decorative: the title and the message say it all."
|
|
40
|
+
},
|
|
41
|
+
"actions": {
|
|
42
|
+
"type": "ReactNode",
|
|
43
|
+
"required": false,
|
|
44
|
+
"description": "What the reader can do about it: buttons or links."
|
|
45
|
+
},
|
|
46
|
+
"variant": {
|
|
47
|
+
"type": "\"block\" | \"inline\"",
|
|
48
|
+
"required": false,
|
|
49
|
+
"description": "`block` (default): centred, for an empty page, panel or card.\n`inline`: a muted line of text, for a list, a table or a column that came\nout empty; an action follows the last word."
|
|
50
|
+
},
|
|
51
|
+
"size": {
|
|
52
|
+
"type": "\"small\" | \"medium\"",
|
|
53
|
+
"required": false,
|
|
54
|
+
"description": "`small`: tighter, for a narrow column or a card."
|
|
55
|
+
},
|
|
56
|
+
"data-testid": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"required": false,
|
|
59
|
+
"description": "Test id of the root `<div>`; `empty-state` unless given."
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -52,6 +52,11 @@
|
|
|
52
52
|
"type": "string",
|
|
53
53
|
"required": false,
|
|
54
54
|
"description": "Accessible label for the close button."
|
|
55
|
+
},
|
|
56
|
+
"data-testid": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"required": false,
|
|
59
|
+
"description": "Test id of the root `<div>`; `message` unless given."
|
|
55
60
|
}
|
|
56
61
|
}
|
|
57
62
|
}
|