@epam/ai-dial-ui-kit 0.13.0-dev.9 → 0.14.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/dist/CHANGELOG.md +48 -1
- package/dist/{JsonEditor-CRSkEnWP.cjs → JsonEditor-pyqbLZZf.cjs} +1 -1
- package/dist/{JsonEditor-Djt1V27V.js → JsonEditor-v9m_npfK.js} +1 -1
- package/dist/MarkdownEditor-5UpxUtXf.js +75 -0
- package/dist/{MarkdownEditor-BbGX2uA9.cjs → MarkdownEditor-9aPIyyuu.cjs} +1 -1
- package/dist/MarkdownEditor-BjqdSHPU.cjs +1 -0
- package/dist/{MarkdownEditor-DtKScLM2.js → MarkdownEditor-CWZVSR--.js} +1 -1
- package/dist/components-manifest.json +3420 -391
- package/dist/dial-ui-kit.cjs.js +1 -1
- package/dist/dial-ui-kit.es.js +201 -148
- package/dist/{index-JVDPW40K.js → index-DKDaSZqV.js} +24490 -21241
- package/dist/index-xlqMH2Q1.cjs +71 -0
- package/dist/index.css +6 -2
- package/dist/mcp-server.cjs +29 -9
- package/dist/migration-guides/0.13.0/caption-semi-text-lead-rename.md +82 -0
- package/dist/migration-guides/0.13.0/field-label-props-unification.md +94 -0
- package/dist/migration-guides/0.13.0/focus-border-token-rename.md +106 -0
- package/dist/migration-guides/0.13.0/progress-bar-2-0-rewrite.md +103 -0
- package/dist/migration-guides/0.13.0/spinner-dial-prefix-removal.md +69 -0
- package/dist/migration-guides/0.13.0/typography-heading-scale-shift.md +93 -0
- package/dist/migration-guides/README.md +6 -0
- package/dist/src/components/Accordion/Accordion.d.ts +1 -0
- package/dist/src/components/Analytics/Bar/Bar.d.ts +12 -7
- package/dist/src/components/Analytics/BarGroup/BarGroup.d.ts +23 -16
- package/dist/src/components/Analytics/Card/Card.d.ts +14 -3
- package/dist/src/components/Analytics/ErrorTag/ErrorTag.d.ts +1 -0
- package/dist/src/components/Analytics/Histogram/Histogram.d.ts +9 -6
- package/dist/src/components/Analytics/Histogram/utils.d.ts +10 -0
- package/dist/src/components/AutocompleteInput/AutocompleteInputValue.d.ts +1 -0
- package/dist/src/components/Breadcrumb/Breadcrumb.d.ts +1 -0
- package/dist/src/components/Breadcrumb/BreadcrumbItem.d.ts +3 -0
- package/dist/src/components/Button/Button.d.ts +1 -0
- package/dist/src/components/Button/ButtonWrappers.d.ts +1 -15
- package/dist/src/components/ButtonDropdown/ButtonDropdown.d.ts +1 -0
- package/dist/src/components/CaptionText/CaptionText.d.ts +1 -0
- package/dist/src/components/Checkbox/Checkbox.d.ts +1 -0
- package/dist/src/components/CloseButton/CloseButton.d.ts +1 -0
- package/dist/src/components/CollapsibleSidebar/CollapsibleSidebar.d.ts +1 -0
- package/dist/src/components/ConfirmationPopup/ConfirmationPopup.d.ts +1 -0
- package/dist/src/components/DraggableItem/DraggableItem.d.ts +1 -0
- package/dist/src/components/DropdownIcon/DropdownIcon.d.ts +1 -0
- package/dist/src/components/EllipsisTooltip/EllipsisTooltip.d.ts +1 -0
- package/dist/src/components/FabButton/FabButton.d.ts +8 -3
- package/dist/src/components/FileIcon/FileIcon.d.ts +1 -0
- package/dist/src/components/FileManager/FileManager.d.ts +3 -0
- package/dist/src/components/FileManager/FileManagerProvider.d.ts +1 -0
- package/dist/src/components/FileManager/components/DestinationFolderPopup/DestinationFolderPopup.d.ts +3 -0
- package/dist/src/components/FileManager/components/FoldersTree/FoldersTree.d.ts +3 -0
- package/dist/src/components/FileManager/hooks/use-file-manager-context.d.ts +2 -0
- package/dist/src/components/FileManager/hooks/use-file-manager-tabs.d.ts +3 -0
- package/dist/src/components/FileName/FileName.d.ts +1 -0
- package/dist/src/components/FolderName/FolderName.d.ts +1 -0
- package/dist/src/components/FormItem/FormItem.d.ts +1 -0
- package/dist/src/components/FormPopup/FormPopup.d.ts +1 -0
- package/dist/src/components/Grid/Grid.d.ts +1 -0
- package/dist/src/components/Grid/comparators/base-column-comparator.d.ts +1 -0
- package/dist/src/components/Grid/renderers/DateCellRenderer.d.ts +1 -0
- package/dist/src/components/Icon/Icon.d.ts +1 -0
- package/dist/src/components/IconButton/IconButton.d.ts +5 -0
- package/dist/src/components/IconButton/IconButtonWrappers.d.ts +1 -0
- package/dist/src/components/Input/Input.d.ts +1 -0
- package/dist/src/components/InputPopup/InputPopup.d.ts +1 -0
- package/dist/src/components/JsonEditor/JsonEditor.d.ts +1 -0
- package/dist/src/components/Label/Label.d.ts +1 -0
- package/dist/src/components/LabelledText/LabelledText.d.ts +1 -0
- package/dist/src/components/LoadFileArea/LoadFileArea.d.ts +1 -0
- package/dist/src/components/LoadFileArea/LoadFileAreaField.d.ts +1 -0
- package/dist/src/components/Loader/Loader.d.ts +1 -0
- package/dist/src/components/MarkdownEditor/MarkdownEditor.d.ts +1 -0
- package/dist/src/components/New/Accordion/Accordion.d.ts +71 -0
- package/dist/src/components/New/Button/Button.d.ts +66 -0
- package/dist/src/components/New/Button/ButtonWrappers.d.ts +94 -0
- package/dist/src/components/New/Button/__tests__/utils.spec.d.ts +1 -0
- package/dist/src/components/New/Button/constants.d.ts +2 -0
- package/dist/src/components/New/Button/utils.d.ts +2 -0
- package/dist/src/components/New/ButtonDropdown/ButtonDropdown.d.ts +24 -0
- package/dist/src/components/New/ButtonDropdown/constants.d.ts +1 -0
- package/dist/src/components/New/Calendar/Calendar.d.ts +55 -0
- package/dist/src/components/New/Calendar/constants.d.ts +17 -0
- package/dist/src/components/New/Calendar/utils.d.ts +25 -0
- package/dist/src/components/New/Calendar/utils.spec.d.ts +1 -0
- package/dist/src/components/New/CaptionText/CaptionText.d.ts +21 -0
- package/dist/src/components/New/CardShell/CardShell.d.ts +14 -0
- package/dist/src/components/New/CloseButton/CloseButton.d.ts +33 -0
- package/dist/src/components/New/ConfirmationPopup/ConfirmationPopup.d.ts +55 -0
- package/dist/src/components/New/ConfirmationPopup/constants.d.ts +14 -0
- package/dist/src/components/New/Dropdown/Dropdown.d.ts +87 -0
- package/dist/src/components/New/Dropdown/DropdownSubMenuItem.d.ts +8 -0
- package/dist/src/components/New/Dropdown/constants.d.ts +9 -0
- package/dist/src/components/New/FileDropzone/FileDropzone.d.ts +81 -0
- package/dist/src/components/New/FolderPath/FolderPath.d.ts +32 -0
- package/dist/src/components/New/Highlight/Highlight.d.ts +19 -0
- package/dist/src/components/New/IconButton/IconButton.d.ts +48 -0
- package/dist/src/components/New/IconButton/IconButtonWrappers.d.ts +71 -0
- package/dist/src/components/New/InfoButton/InfoButton.d.ts +26 -0
- package/dist/src/components/New/InfoButton/InfoButton.stories.d.ts +6 -0
- package/dist/src/components/New/InlineSelect/InlineSelect.d.ts +51 -0
- package/dist/src/components/New/Input/Button/InputButton.d.ts +25 -0
- package/dist/src/components/New/Input/Button/constants.d.ts +1 -0
- package/dist/src/components/New/Input/Input.d.ts +67 -0
- package/dist/src/components/New/Input/utils.d.ts +2 -0
- package/dist/src/components/New/Label/Label.d.ts +33 -0
- package/dist/src/components/New/MarkdownEditor/MarkdownEditor.d.ts +33 -0
- package/dist/src/components/New/MarkdownEditor/constants.d.ts +20 -0
- package/dist/src/components/New/Notification/Notification.d.ts +7 -0
- package/dist/src/components/New/Notification/constants.d.ts +12 -1
- package/dist/src/components/New/NumberInput/NumberInput.d.ts +36 -0
- package/dist/src/components/New/PasswordInput/PasswordInput.d.ts +33 -0
- package/dist/src/components/New/Popup/Popup.d.ts +72 -0
- package/dist/src/components/New/Popup/constants.d.ts +10 -0
- package/dist/src/components/New/Search/Search.d.ts +42 -0
- package/dist/src/components/New/Select/MultiSelectTags.d.ts +17 -0
- package/dist/src/components/New/Select/Select.d.ts +110 -0
- package/dist/src/components/New/Select/SelectSubMenuItem.d.ts +8 -0
- package/dist/src/components/New/Select/constants.d.ts +32 -0
- package/dist/src/components/New/Switch/Switch.d.ts +38 -0
- package/dist/src/components/New/Tabs/Tabs.d.ts +63 -0
- package/dist/src/components/New/Tag/Tag.d.ts +45 -0
- package/dist/src/components/New/TagInput/TagInput.d.ts +72 -0
- package/dist/src/components/New/TagInput/utils.d.ts +21 -0
- package/dist/src/components/New/TagInput/utils.spec.d.ts +1 -0
- package/dist/src/components/New/Textarea/Textarea.d.ts +39 -0
- package/dist/src/components/New/constants/overlay.d.ts +24 -0
- package/dist/src/components/NoDataContent/NoDataContent.d.ts +1 -0
- package/dist/src/components/Notification/Notification.d.ts +1 -0
- package/dist/src/components/NumberInput/NumberInput.d.ts +1 -0
- package/dist/src/components/Pagination/Pagination.d.ts +3 -0
- package/dist/src/components/PasswordInput/PasswordInput.d.ts +1 -0
- package/dist/src/components/Popup/Popup.d.ts +2 -1
- package/dist/src/components/ProgressBar/ProgressBar.d.ts +51 -10
- package/dist/src/components/RadioButton/RadioButton.d.ts +1 -0
- package/dist/src/components/RadioGroup/RadioGroup.d.ts +1 -0
- package/dist/src/components/RadioGroupPopupField/RadioGroupPopupField.d.ts +1 -0
- package/dist/src/components/RemoveButton/RemoveButton.d.ts +1 -0
- package/dist/src/components/ResizableContainer/ConditionalResizableContainer.d.ts +1 -0
- package/dist/src/components/ResizableContainer/ResizableContainer.d.ts +1 -0
- package/dist/src/components/SchemaRenderer/SchemaRenderer.d.ts +1 -0
- package/dist/src/components/SchemaRenderer/components/SchemaKeyValueEditor.d.ts +9 -1
- package/dist/src/components/SchemaRenderer/types.d.ts +6 -1
- package/dist/src/components/SchemaRenderer/utils.d.ts +1 -0
- package/dist/src/components/Search/Search.d.ts +1 -0
- package/dist/src/components/SegmentedControl/SegmentedControl.d.ts +1 -0
- package/dist/src/components/Select/Select.d.ts +1 -0
- package/dist/src/components/SelectField/SelectField.d.ts +1 -0
- package/dist/src/components/SharedEntityIndicator/SharedEntityIndicator.d.ts +1 -0
- package/dist/src/components/Skeleton/Skeleton.d.ts +19 -18
- package/dist/src/components/Skeleton/utils.d.ts +2 -2
- package/dist/src/components/Slider/Slider.d.ts +1 -0
- package/dist/src/components/Spinner/Spinner.d.ts +5 -2
- package/dist/src/components/Steps/Steps.d.ts +1 -0
- package/dist/src/components/Switch/Switch.d.ts +1 -0
- package/dist/src/components/Tabs/Tabs.d.ts +1 -0
- package/dist/src/components/Tag/Tag.d.ts +1 -0
- package/dist/src/components/TagInput/TagInput.d.ts +1 -0
- package/dist/src/components/Textarea/Textarea.d.ts +1 -0
- package/dist/src/components/Tooltip/Tooltip.d.ts +1 -0
- package/dist/src/components/Tooltip/TooltipContainer.d.ts +1 -0
- package/dist/src/components/Tooltip/TooltipContent.d.ts +1 -0
- package/dist/src/components/Tooltip/TooltipTrigger.d.ts +1 -0
- package/dist/src/index.d.ts +89 -13
- package/dist/src/mcp/types.d.ts +12 -0
- package/dist/src/models/dropdown.d.ts +27 -0
- package/dist/src/types/button.d.ts +1 -0
- package/dist/src/types/calendar.d.ts +6 -0
- package/dist/src/types/skeleton.d.ts +3 -3
- package/dist/src/utils/__tests__/accessible-name.spec.d.ts +1 -0
- package/dist/src/utils/__tests__/file-accept.spec.d.ts +1 -0
- package/dist/src/utils/accessible-name.d.ts +19 -0
- package/dist/src/utils/file-accept.d.ts +16 -0
- package/dist/src/utils/sub-menu-floating.d.ts +15 -2
- package/package.json +4 -2
- package/dist/index-CmA_N28F.cjs +0 -71
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Migrating the `focus` border token → `focus-black` — v0.12.x → v0.13.0
|
|
2
|
+
|
|
3
|
+
## Why this changed
|
|
4
|
+
|
|
5
|
+
The border token was named `focus` — after the _state_ it is used in rather than the _value_ it holds. That naming left nowhere to put a second focus colour, so when the blue focus ring arrived it had to be `focus-blue`, an odd sibling to a token whose name implied it covered all focus styling.
|
|
6
|
+
|
|
7
|
+
Both tokens are now named for their colour: `focus-black` and `focus-blue`. The rendered colour of `focus-black` is identical to the old `focus` (`#161B2D`, grey-1000) — this is a naming change, not a visual one.
|
|
8
|
+
|
|
9
|
+
## What changed
|
|
10
|
+
|
|
11
|
+
| Before | After |
|
|
12
|
+
| ----------------------------- | ---------------------- |
|
|
13
|
+
| CSS variable `--stroke-focus` | `--stroke-focus-black` |
|
|
14
|
+
| `border-focus` | `border-focus-black` |
|
|
15
|
+
| `outline-focus` | `outline-focus-black` |
|
|
16
|
+
| `divide-focus` | `divide-focus-black` |
|
|
17
|
+
| `stroke-focus` (SVG) | `stroke-focus-black` |
|
|
18
|
+
|
|
19
|
+
The token feeds Tailwind's `borderColor`, `outlineColor`, `divideColor`, and `stroke` scales, so every utility built on it moves together.
|
|
20
|
+
|
|
21
|
+
**Not affected:**
|
|
22
|
+
|
|
23
|
+
- `controls-focus` / `--controls-stroke-focus` — a separate token, unchanged.
|
|
24
|
+
- `focus-blue` / `--stroke-focus-blue` — unchanged.
|
|
25
|
+
- Tailwind's `focus:` and `focus-visible:` **variants** — unrelated to the token. `focus-visible:outline-focus` becomes `focus-visible:outline-focus-black`; the `focus-visible:` prefix stays exactly as it is.
|
|
26
|
+
|
|
27
|
+
## Step-by-step migration
|
|
28
|
+
|
|
29
|
+
### 1. Find all usages
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
grep -rEn "(border|outline|divide|stroke)-focus\b|--stroke-focus\b" src/
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The `\b` matters: without it the search also flags `focus-blue` and `--stroke-focus-blue`, which do not change.
|
|
36
|
+
|
|
37
|
+
### 2. Rename the utilities
|
|
38
|
+
|
|
39
|
+
**Before:**
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
<button className="focus-visible:outline focus-visible:outline-focus" />
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**After:**
|
|
46
|
+
|
|
47
|
+
```tsx
|
|
48
|
+
<button className="focus-visible:outline focus-visible:outline-focus-black" />
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The same applies inside SCSS `@apply` directives:
|
|
52
|
+
|
|
53
|
+
```scss
|
|
54
|
+
/* Before */
|
|
55
|
+
.my-input:focus-visible {
|
|
56
|
+
@apply border-focus;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* After */
|
|
60
|
+
.my-input:focus-visible {
|
|
61
|
+
@apply border-focus-black;
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 3. Rename the CSS variable override
|
|
66
|
+
|
|
67
|
+
Only relevant if you theme the token. Update the custom property name wherever you set it:
|
|
68
|
+
|
|
69
|
+
**Before:**
|
|
70
|
+
|
|
71
|
+
```css
|
|
72
|
+
:root {
|
|
73
|
+
--stroke-focus: #1a1a2e;
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**After:**
|
|
78
|
+
|
|
79
|
+
```css
|
|
80
|
+
:root {
|
|
81
|
+
--stroke-focus-black: #1a1a2e;
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
An override left on `--stroke-focus` is **silently ignored** — the utility falls back to the built-in `#161B2D` with no error. This is the one failure mode that neither `typecheck` nor the compiler will catch, so grep for it explicitly.
|
|
86
|
+
|
|
87
|
+
### 4. Verify
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
npm run typecheck
|
|
91
|
+
npm run test
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
`typecheck` does not see Tailwind class strings, so also confirm the utilities resolve in the compiled output:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npm run build:css
|
|
98
|
+
grep -c "stroke-focus-black" dist/index.css
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
A stale `border-focus` compiles to nothing at all — the element simply loses its focus border, which is easy to miss without a visual pass. Check focus states in Storybook by tabbing through affected controls.
|
|
102
|
+
|
|
103
|
+
## Notes
|
|
104
|
+
|
|
105
|
+
- `ringColor` is **not** wired to this token scale, so `ring-focus-black` does not resolve — just as `ring-focus` did not before. Use `outline-focus-black` for focus rings.
|
|
106
|
+
- The colour value is unchanged, so a correctly-migrated codebase should be pixel-identical to 0.12.x.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Migrating `DialProgressBar` → `ProgressBar` — v0.12.x → v0.13.0
|
|
2
|
+
|
|
3
|
+
## Why this changed
|
|
4
|
+
|
|
5
|
+
`DialProgressBar` was built on 1.0 design tokens (`bg-layer-4`, `bg-controls-accent-primary`) that are on the removal list, so it could not be used in a 2.0 screen without dragging the legacy palette in with it. Rebuilding it on the 2.0 set also let it pick up the conventions the rest of the 2.0 components already follow: no `Dial*` prefix, the shared `ElementSize` enum instead of a bespoke one, and native props passed through.
|
|
6
|
+
|
|
7
|
+
Unlike the [`Spinner` rename](spinner-dial-prefix-removal.md), this is **not** a rename only — the size enum, the label prop, and the rendered colors all changed.
|
|
8
|
+
|
|
9
|
+
## What changed
|
|
10
|
+
|
|
11
|
+
| Before | After |
|
|
12
|
+
| ------------------------------------- | -------------------------------------------- |
|
|
13
|
+
| `DialProgressBar` | `ProgressBar` |
|
|
14
|
+
| `DialProgressBarProps` | `ProgressBarProps` |
|
|
15
|
+
| `DialProgressBarSize.Small` (`'sm'`) | `ElementSize.Small` (`'small'`) |
|
|
16
|
+
| `DialProgressBarSize.Medium` (`'md'`) | `ElementSize.Standard` (`'standard'`) |
|
|
17
|
+
| `ariaLabel="…"` | `aria-label="…"` |
|
|
18
|
+
| _no visible label_ | `label` — renders above the bar and names it |
|
|
19
|
+
|
|
20
|
+
Unchanged: `value`, `max` (default `100`), `className` (still lands on the track element), the `role="progressbar"` element with `aria-valuenow` / `aria-valuemin` / `aria-valuemax`, the clamping of `value` into `0…max`, and the 4px / 8px heights.
|
|
21
|
+
|
|
22
|
+
Also changed, but requiring no code edit:
|
|
23
|
+
|
|
24
|
+
- **Colors** — track `bg-layer-4` → `bg-control-disable`, fill `bg-controls-accent-primary` → `bg-control-accent`. Both now match the 2.0 `Switch`.
|
|
25
|
+
- **Native props** — `ProgressBarProps` extends `HTMLAttributes<HTMLDivElement>`, so `aria-valuetext`, `data-*`, `onClick`, and the rest reach the element. `aria-valuetext` is the one to reach for when a percentage is not the useful announcement.
|
|
26
|
+
- **Reduced motion** — the width transition is now suppressed under `prefers-reduced-motion`.
|
|
27
|
+
- **Degenerate input** — a non-positive `max` or a non-finite `value` renders an empty bar instead of `width: NaN%`.
|
|
28
|
+
- The Storybook entry moved from `DIAL/Status/ProgressBar` to `Components_2_0/ProgressBar`. Story URLs only.
|
|
29
|
+
|
|
30
|
+
## Step-by-step migration
|
|
31
|
+
|
|
32
|
+
### 1. Find all usages
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
grep -rn "DialProgressBar" src/
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 2. Rename the import, the tag, and the size enum
|
|
39
|
+
|
|
40
|
+
**Before:**
|
|
41
|
+
|
|
42
|
+
```tsx
|
|
43
|
+
import {
|
|
44
|
+
DialProgressBar,
|
|
45
|
+
DialProgressBarSize,
|
|
46
|
+
type DialProgressBarProps,
|
|
47
|
+
} from '@epam/ai-dial-ui-kit';
|
|
48
|
+
|
|
49
|
+
<DialProgressBar value={40} ariaLabel="Upload progress" />;
|
|
50
|
+
<DialProgressBar value={40} size={DialProgressBarSize.Small} />;
|
|
51
|
+
<DialProgressBar value={40} size={DialProgressBarSize.Medium} />;
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**After:**
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
import {
|
|
58
|
+
ProgressBar,
|
|
59
|
+
ElementSize,
|
|
60
|
+
type ProgressBarProps,
|
|
61
|
+
} from '@epam/ai-dial-ui-kit';
|
|
62
|
+
|
|
63
|
+
<ProgressBar value={40} aria-label="Upload progress" />;
|
|
64
|
+
<ProgressBar value={40} size={ElementSize.Small} />;
|
|
65
|
+
<ProgressBar value={40} size={ElementSize.Standard} />;
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`ElementSize.Standard` is the default, so `size={DialProgressBarSize.Medium}` can simply be dropped.
|
|
69
|
+
|
|
70
|
+
### 3. Replace the generic label with a real one
|
|
71
|
+
|
|
72
|
+
`ariaLabel` defaulted to `"Progress"`, so a screen has as many bars called "Progress" as it has bars. Where the bar has visible surrounding text, promote it into `label` — it renders above the bar and names it through `aria-labelledby`:
|
|
73
|
+
|
|
74
|
+
**Before:**
|
|
75
|
+
|
|
76
|
+
```tsx
|
|
77
|
+
<span className="dial-small-text">Uploading</span>
|
|
78
|
+
<DialProgressBar value={progress} />
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**After:**
|
|
82
|
+
|
|
83
|
+
```tsx
|
|
84
|
+
<ProgressBar value={progress} label="Uploading" />
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Where the bar has no visible label, keep naming it explicitly with `aria-label`. The `"Progress"` fallback still applies if you pass neither, so no bar ends up anonymous.
|
|
88
|
+
|
|
89
|
+
### 4. Verify
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
npm run typecheck
|
|
93
|
+
npm run test
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
`typecheck` catches every usage: the old names are gone from the barrel, so the imports fail to resolve, and `ariaLabel` is no longer an accepted prop.
|
|
97
|
+
|
|
98
|
+
## Notes
|
|
99
|
+
|
|
100
|
+
- `ariaLabel` does **not** silently keep working — it is not part of `HTMLAttributes`, so TypeScript rejects it rather than passing it through as an unknown DOM attribute.
|
|
101
|
+
- Tests asserting `getByRole('progressbar')` keep passing. Prefer tightening them to `getByRole('progressbar', { name })` now that the name is meaningful.
|
|
102
|
+
- If you relied on the exact track color, note that `bg-control-disable` (`#DCE0E8`) is lighter than the old `bg-layer-4` (`#D1DBEA`).
|
|
103
|
+
- `DialLoader` and `Skeleton` are different components and are not affected.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Migrating `DialSpinner` → `Spinner` — v0.12.x → v0.13.0
|
|
2
|
+
|
|
3
|
+
## Why this changed
|
|
4
|
+
|
|
5
|
+
The spinner is part of the 2.0 component set, which drops the `Dial*` prefix. Keeping `DialSpinner` alongside the unprefixed 2.0 components made the export list read as two conventions at once, with no signal about which era a component belongs to.
|
|
6
|
+
|
|
7
|
+
This is a **rename only**. The component's props, defaults, DOM, roles, and styling are untouched.
|
|
8
|
+
|
|
9
|
+
## What changed
|
|
10
|
+
|
|
11
|
+
| Before | After |
|
|
12
|
+
| ------------------ | -------------- |
|
|
13
|
+
| `DialSpinner` | `Spinner` |
|
|
14
|
+
| `DialSpinnerProps` | `SpinnerProps` |
|
|
15
|
+
|
|
16
|
+
Unchanged: `size` (default `40`), `className`, `fullWidth` (default `false`), `ariaLabel` (default `"Loading"`), the outer `role="status"` container, and the inner `role="img"` ring.
|
|
17
|
+
|
|
18
|
+
The Storybook entry also moved from `DIAL/Status/Spinner` to `Components_2_0/Spinner`. This affects story URLs only, not consumers of the package.
|
|
19
|
+
|
|
20
|
+
## Step-by-step migration
|
|
21
|
+
|
|
22
|
+
### 1. Find all usages
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
grep -rn "DialSpinner" src/
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 2. Rename the import and the JSX tag
|
|
29
|
+
|
|
30
|
+
**Before:**
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
import { DialSpinner, type DialSpinnerProps } from '@epam/ai-dial-ui-kit';
|
|
34
|
+
|
|
35
|
+
const Busy: FC<DialSpinnerProps> = (props) => <DialSpinner {...props} />;
|
|
36
|
+
|
|
37
|
+
<DialSpinner size={24} fullWidth ariaLabel="Loading results" />;
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**After:**
|
|
41
|
+
|
|
42
|
+
```tsx
|
|
43
|
+
import { Spinner, type SpinnerProps } from '@epam/ai-dial-ui-kit';
|
|
44
|
+
|
|
45
|
+
const Busy: FC<SpinnerProps> = (props) => <Spinner {...props} />;
|
|
46
|
+
|
|
47
|
+
<Spinner size={24} fullWidth ariaLabel="Loading results" />;
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
If `Spinner` collides with a local component of the same name, alias the import rather than renaming your own:
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
import { Spinner as DialSpinner } from '@epam/ai-dial-ui-kit';
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 3. Verify
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npm run typecheck
|
|
60
|
+
npm run test
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`typecheck` catches every usage — there is no runtime-only path to miss, since the old name is removed from the barrel and the import fails to resolve.
|
|
64
|
+
|
|
65
|
+
## Notes
|
|
66
|
+
|
|
67
|
+
- Tests that render the spinner need no assertion changes: it still exposes `role="status"` on the container and `role="img"` with the `ariaLabel` name on the ring.
|
|
68
|
+
- `DialLoader` is a different component and is **not** renamed.
|
|
69
|
+
- `Notification`'s `loading` variant renders this spinner internally; no consumer change is needed there.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Migrating the heading type scale — v0.12.x → v0.13.0
|
|
2
|
+
|
|
3
|
+
## Why this changed
|
|
4
|
+
|
|
5
|
+
The design system's type scale has three display sizes and three heading sizes. The kit only had two display classes, so the 22px step that design calls **Display 3** was shipping as `dial-h1-text`, and every heading class was one step larger than the design named it.
|
|
6
|
+
|
|
7
|
+
Adding `dial-display3-text` at 22px/32px puts the 22px step where it belongs and lets `dial-h1-text`, `dial-h2-text`, and `dial-h3-text` carry the sizes design assigns to Heading 1–3. The set of available sizes is unchanged — the same six steps exist before and after. What moved is which class name each one answers to.
|
|
8
|
+
|
|
9
|
+
## What changed
|
|
10
|
+
|
|
11
|
+
| Class | Before | After |
|
|
12
|
+
| --------------------- | ----------- | ----------------- |
|
|
13
|
+
| `.dial-display1-text` | 32px / 48px | 32px / 48px |
|
|
14
|
+
| `.dial-display2-text` | 28px / 40px | 28px / 40px |
|
|
15
|
+
| `.dial-display3-text` | — | 22px / 32px (new) |
|
|
16
|
+
| `.dial-h1-text` | 22px / 32px | **20px / 28px** |
|
|
17
|
+
| `.dial-h2-text` | 20px / 28px | **18px / 26px** |
|
|
18
|
+
| `.dial-h3-text` | 18px / 26px | **16px / 24px** |
|
|
19
|
+
|
|
20
|
+
All six stay `font-weight: 600` with no letter-spacing.
|
|
21
|
+
|
|
22
|
+
The kit also styles bare `h1`, `h2`, and `h3` elements from these classes, so **unclassed headings shrink one step too** — an `<h1>` with no `className` renders at 20px/28px instead of 22px/32px.
|
|
23
|
+
|
|
24
|
+
## Step-by-step migration
|
|
25
|
+
|
|
26
|
+
### 1. Find all usages
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
grep -rEn "dial-h[123]-text" src/
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Also find headings that rely on the element defaults rather than a class, since those change with no class name to grep for:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
grep -rEn "<h[123](\s|>)" src/
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 2. Decide per usage: keep the size, or keep the semantic level
|
|
39
|
+
|
|
40
|
+
This is the whole migration, and it is a judgement call rather than a rename — a blind find-and-replace gets it wrong either way.
|
|
41
|
+
|
|
42
|
+
**To keep the rendered size identical**, shift the class name up one step:
|
|
43
|
+
|
|
44
|
+
| Before | After |
|
|
45
|
+
| --------------------- | --------------------------- |
|
|
46
|
+
| `dial-h1-text` (22px) | `dial-display3-text` (22px) |
|
|
47
|
+
| `dial-h2-text` (20px) | `dial-h1-text` (20px) |
|
|
48
|
+
| `dial-h3-text` (18px) | `dial-h2-text` (18px) |
|
|
49
|
+
|
|
50
|
+
**To adopt the new scale**, leave the class name alone and accept the smaller size. This is right where the class was chosen to match the heading level (an `<h2>` styled `dial-h2-text`) rather than to hit a specific pixel size.
|
|
51
|
+
|
|
52
|
+
**Before** — a dialog title that should stay at 20px:
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
<h2 className="dial-h2-text">Delete conversation</h2>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**After:**
|
|
59
|
+
|
|
60
|
+
```tsx
|
|
61
|
+
<h2 className="dial-h1-text">Delete conversation</h2>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
An `<h3>` that was picked purely for its 18px size and does not head a section is usually better off as `dial-body-semi-text` (16px/24px, the same metrics as the new `dial-h3-text`) on a non-heading element.
|
|
65
|
+
|
|
66
|
+
### 3. Re-check unclassed headings
|
|
67
|
+
|
|
68
|
+
A bare `<h1>` in prose, markdown output, or a `prose` block picks up the new 20px/28px automatically. If a specific block must hold its old size, name the class explicitly:
|
|
69
|
+
|
|
70
|
+
```tsx
|
|
71
|
+
<h1 className="dial-display3-text">Reports</h1>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 4. Verify
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npm run typecheck
|
|
78
|
+
npm run test
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Neither sees Tailwind class strings, so confirm the compiled values as well:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
npm run build:css
|
|
85
|
+
grep -o "\.dial-h1-text{[^}]*}" dist/index.css
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Then do a visual pass in Storybook — **DIAL/Typography** shows the full scale side by side, and a heading that shrank one step is the failure mode to look for.
|
|
89
|
+
|
|
90
|
+
## Notes
|
|
91
|
+
|
|
92
|
+
- Inside the kit, the 2.0 `Popup` title was re-pointed `dial-h2-text` → `dial-h1-text` and renders exactly as it did in 0.12.x. The 1.0 `DialPopup` title keeps `dial-h3-text` and therefore **adopts the new scale**: it drops from 18px/26px to 16px/24px. Nothing to change on your side — pass `titleClassName="dial-h2-text"` if a particular dialog must hold its old size.
|
|
93
|
+
- Nothing about this change is visible to TypeScript. A missed usage compiles, tests pass, and the heading simply renders one step small — so the grep in step 1 is the only reliable sweep.
|
|
@@ -16,6 +16,12 @@ migration-guides/
|
|
|
16
16
|
| ------- | ----- | ------- |
|
|
17
17
|
| 0.11.0 | [dropdown-menu-prop-flatten](0.11.0/dropdown-menu-prop-flatten.md) | `DialDropdown`/`DialDropdownIcon` `menu` prop replaced with flat `items`, `onItemClick`, `menuHeader`, `menuFooter` props |
|
|
18
18
|
| 0.12.0 | [legacy-typography-classes-removal](0.12.0/legacy-typography-classes-removal.md) | Legacy `dial-h*`, `dial-body`, `dial-small*`, `dial-tiny*`, `dial-caption` classes removed in favor of the `dial-*-text` scale |
|
|
19
|
+
| 0.13.0 | [spinner-dial-prefix-removal](0.13.0/spinner-dial-prefix-removal.md) | `DialSpinner`/`DialSpinnerProps` renamed to `Spinner`/`SpinnerProps` |
|
|
20
|
+
| 0.13.0 | [focus-border-token-rename](0.13.0/focus-border-token-rename.md) | Border token `focus` renamed to `focus-black` (`--stroke-focus` → `--stroke-focus-black`) |
|
|
21
|
+
| 0.13.0 | [typography-heading-scale-shift](0.13.0/typography-heading-scale-shift.md) | `dial-display3-text` added at 22px; `dial-h1`/`h2`/`h3-text` shifted one step down to 20/18/16px |
|
|
22
|
+
| 0.13.0 | [caption-semi-text-lead-rename](0.13.0/caption-semi-text-lead-rename.md) | `dial-caption-semi-text` renamed to `dial-caption-lead-semi-text` and now uppercases |
|
|
23
|
+
| 0.13.0 | [progress-bar-2-0-rewrite](0.13.0/progress-bar-2-0-rewrite.md) | `DialProgressBar` rebuilt on 2.0 tokens as `ProgressBar`; `DialProgressBarSize` → `ElementSize`, `ariaLabel` → `aria-label` |
|
|
24
|
+
| 0.13.0 | [field-label-props-unification](0.13.0/field-label-props-unification.md) | `Calendar`, `Switch` and `ProgressBar` take `labelProps` instead of `label`, so every 2.0 field names itself through `Label` |
|
|
19
25
|
|
|
20
26
|
---
|
|
21
27
|
|
|
@@ -29,6 +29,7 @@ export interface DialAccordionProps {
|
|
|
29
29
|
/**
|
|
30
30
|
* A collapsible panel that toggles its content when the header is clicked.
|
|
31
31
|
* aliases: Collapse|Disclosure|ExpandablePanel
|
|
32
|
+
* Design system 1.0
|
|
32
33
|
*
|
|
33
34
|
* Works as a controlled component when `expanded` is provided, otherwise it manages
|
|
34
35
|
* its own state from `defaultExpanded`. The header shows a chevron that rotates when
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { FC, ReactNode } from 'react';
|
|
2
2
|
import { AnalyticsBarColorStop } from '../../../models/analytics';
|
|
3
3
|
export interface DialAnalyticsBarProps {
|
|
4
|
-
/**
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Current value used to size and color the bar. Pass `null` when there is no
|
|
6
|
+
* data (em dash, no progress bar). Omit it when `error` is set.
|
|
7
|
+
*/
|
|
8
|
+
value?: number | null;
|
|
6
9
|
/** Upper bound of the scale. Defaults to `1`. */
|
|
7
10
|
maxValue?: number;
|
|
8
11
|
/**
|
|
@@ -18,8 +21,8 @@ export interface DialAnalyticsBarProps {
|
|
|
18
21
|
/** Optional label rendered above the bar, on the left. */
|
|
19
22
|
title?: ReactNode;
|
|
20
23
|
/**
|
|
21
|
-
* Text rendered above the bar, on the right. Defaults to `value
|
|
22
|
-
* Pass a formatted node (e.g. `"85%"`) to override.
|
|
24
|
+
* Text rendered above the bar, on the right. Defaults to `value`, or an em dash
|
|
25
|
+
* (`—`) when `value` is `null`. Pass a formatted node (e.g. `"85%"`) to override.
|
|
23
26
|
*/
|
|
24
27
|
valueLabel?: ReactNode;
|
|
25
28
|
/**
|
|
@@ -45,10 +48,12 @@ export interface DialAnalyticsBarProps {
|
|
|
45
48
|
* A compact analytics meter: a horizontal bar whose fill width and color reflect a
|
|
46
49
|
* value relative to `maxValue`, with an optional title on the left and value on the right.
|
|
47
50
|
* aliases: MetricBar|Meter|ScoreBar
|
|
51
|
+
* Design system 1.0
|
|
48
52
|
*
|
|
49
53
|
* The fill color is resolved from `colorMap` based on the normalized ratio
|
|
50
54
|
* (`value / maxValue`), so the bar shifts hue as the value grows. An empty bar
|
|
51
|
-
* (value `0`) shows only the `bg-layer-1` track.
|
|
55
|
+
* (value `0`) shows only the `bg-layer-1` track. A missing value (`null`) shows
|
|
56
|
+
* an em dash and no progress bar.
|
|
52
57
|
*
|
|
53
58
|
* @example
|
|
54
59
|
* ```tsx
|
|
@@ -65,12 +70,12 @@ export interface DialAnalyticsBarProps {
|
|
|
65
70
|
* />
|
|
66
71
|
* ```
|
|
67
72
|
*
|
|
68
|
-
* @param [value] - Current value used to size and color the bar. Omit
|
|
73
|
+
* @param [value] - Current value used to size and color the bar. Pass `null` for no data (em dash, no bar). Omit when `error` is set.
|
|
69
74
|
* @param [maxValue=1] - Upper bound of the scale.
|
|
70
75
|
* @param [error] - Renders the error state (error-colored bar + error tag).
|
|
71
76
|
* @param [isLoading] - Renders the loading state (loader + empty track).
|
|
72
77
|
* @param [title] - Optional label rendered above the bar, on the left.
|
|
73
|
-
* @param [valueLabel] - Text rendered above the bar, on the right. Defaults to `value
|
|
78
|
+
* @param [valueLabel] - Text rendered above the bar, on the right. Defaults to `value` or `—` when null.
|
|
74
79
|
* @param [colorMap=DEFAULT_ANALYTICS_BAR_COLOR_MAP] - Color bands keyed by ratio.
|
|
75
80
|
* @param [className] - Additional CSS classes for the outer container.
|
|
76
81
|
* @param [titleClassName] - Additional CSS classes for the title label.
|
|
@@ -7,14 +7,19 @@ export interface DialAnalyticsBarGroupProps {
|
|
|
7
7
|
titleTooltip?: ReactNode;
|
|
8
8
|
/** Description passed to the accordion header. Defaults to the number of entries. */
|
|
9
9
|
description?: ReactNode;
|
|
10
|
-
/** Map of metric name to numeric value. Each entry renders one bar. */
|
|
11
|
-
data: Record<string, number>;
|
|
12
10
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* `compareData`. `onBarClick` is ignored in compare mode.
|
|
11
|
+
* Map of metric name to numeric value. Each entry renders one bar.
|
|
12
|
+
* Pass `null` for a key when there is no data (em dash, no progress bar).
|
|
16
13
|
*/
|
|
17
|
-
|
|
14
|
+
data: Record<string, number | null>;
|
|
15
|
+
/**
|
|
16
|
+
* When provided, enables compare mode: keys are the union of `data` and
|
|
17
|
+
* `compareData`. Each entry renders two bars and, when both sides are numeric,
|
|
18
|
+
* a delta badge (`compareData[key] - data[key]`, three decimal places). A
|
|
19
|
+
* missing key (or explicit `null`) on either side shows an em dash with no
|
|
20
|
+
* progress bar and no delta. A rounded delta of `0` is omitted.
|
|
21
|
+
*/
|
|
22
|
+
compareData?: Record<string, number | null>;
|
|
18
23
|
/**
|
|
19
24
|
* Labels shown next to each of the two bars in compare mode.
|
|
20
25
|
* The first label is for `data`, the second for `compareData`.
|
|
@@ -34,8 +39,12 @@ export interface DialAnalyticsBarGroupProps {
|
|
|
34
39
|
nonCollapsible?: boolean;
|
|
35
40
|
/** Renders a loader in place of the bars while the data is being fetched. */
|
|
36
41
|
isLoading?: boolean;
|
|
37
|
-
/**
|
|
38
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Invoked with the entry key and value when a bar is clicked. When set, each
|
|
44
|
+
* bar becomes an interactive button. In compare mode the whole entry (label,
|
|
45
|
+
* delta, both bars) is the click target.
|
|
46
|
+
*/
|
|
47
|
+
onBarClick?: (key: string, value: number | null) => void;
|
|
39
48
|
/** Renders every bar on a single row (50% title, 50% bar + value). */
|
|
40
49
|
inline?: boolean;
|
|
41
50
|
/** Additional CSS classes for each bar's title label. */
|
|
@@ -44,10 +53,7 @@ export interface DialAnalyticsBarGroupProps {
|
|
|
44
53
|
barValueClassName?: string;
|
|
45
54
|
/** Additional CSS classes for each bar's outer container (e.g. for custom hover effects). */
|
|
46
55
|
barClassName?: string;
|
|
47
|
-
/**
|
|
48
|
-
* Map of bar key to tooltip content. When provided, hovering each bar shows its description.
|
|
49
|
-
* Not applied in compare mode.
|
|
50
|
-
*/
|
|
56
|
+
/** Map of bar key to tooltip content. When provided, hovering each bar shows its description. */
|
|
51
57
|
barDescriptions?: Record<string, ReactNode>;
|
|
52
58
|
/** Additional CSS classes for the accordion container. */
|
|
53
59
|
className?: string;
|
|
@@ -58,6 +64,7 @@ export interface DialAnalyticsBarGroupProps {
|
|
|
58
64
|
* is shown as the header description, and each entry renders a {@link DialAnalyticsBar}
|
|
59
65
|
* with the key as its title and the value as its value.
|
|
60
66
|
* aliases: MetricBarGroup|BarList|NumericResults
|
|
67
|
+
* Design system 1.0
|
|
61
68
|
*
|
|
62
69
|
* @example
|
|
63
70
|
* ```tsx
|
|
@@ -70,20 +77,20 @@ export interface DialAnalyticsBarGroupProps {
|
|
|
70
77
|
* @param title - Title passed to the accordion header.
|
|
71
78
|
* @param [titleTooltip] - Tooltip shown when hovering the accordion header title.
|
|
72
79
|
* @param [description] - Description passed to the accordion header. Defaults to the number of entries.
|
|
73
|
-
* @param data - Map of metric name to numeric value. Each entry renders one bar.
|
|
74
|
-
* @param [compareData] - Enables compare mode:
|
|
80
|
+
* @param data - Map of metric name to numeric value (or `null` when missing). Each entry renders one bar.
|
|
81
|
+
* @param [compareData] - Enables compare mode: union of keys, delta badge (`compareData − data`) when both sides are numeric and the rounded delta is non-zero, em dash (no bar) when a side is missing.
|
|
75
82
|
* @param [compareLabels] - Labels for the two bars in compare mode: first for `data`, second for `compareData`.
|
|
76
83
|
* @param [maxValue] - Upper bound passed to every bar.
|
|
77
84
|
* @param [colorMap] - Color map passed to every bar.
|
|
78
85
|
* @param [defaultExpanded=true] - Whether the accordion is expanded initially.
|
|
79
86
|
* @param [nonCollapsible] - Renders the group permanently expanded without a toggle or chevron.
|
|
80
87
|
* @param [isLoading] - Renders a loader in place of the bars while the data is being fetched.
|
|
81
|
-
* @param [onBarClick] - Invoked with the entry key and value when a bar is clicked.
|
|
88
|
+
* @param [onBarClick] - Invoked with the entry key and value when a bar (or, in compare mode, the whole entry) is clicked.
|
|
82
89
|
* @param [inline] - Renders every bar on a single row (50% title, 50% bar + value).
|
|
83
90
|
* @param [barTitleClassName] - Additional CSS classes for each bar's title label.
|
|
84
91
|
* @param [barValueClassName] - Additional CSS classes for each bar's value label.
|
|
85
92
|
* @param [barClassName] - Additional CSS classes for each bar's outer container.
|
|
86
|
-
* @param [barDescriptions] - Map of bar key to tooltip content. Hovering each bar shows its description.
|
|
93
|
+
* @param [barDescriptions] - Map of bar key to tooltip content. Hovering each bar shows its description.
|
|
87
94
|
* @param [className] - Additional CSS classes for the accordion container.
|
|
88
95
|
*/
|
|
89
96
|
export declare const DialAnalyticsBarGroup: FC<DialAnalyticsBarGroupProps>;
|
|
@@ -25,6 +25,11 @@ export interface DialAnalyticsCardProps {
|
|
|
25
25
|
* When omitted, `delta ≥ 0` → success, `delta < 0` → error.
|
|
26
26
|
*/
|
|
27
27
|
deltaPositive?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Suffix appended to the formatted delta with no space (e.g. `"s"` → `+9s`,
|
|
30
|
+
* `-19s`). Any string is valid (`s`, `ms`, `%`).
|
|
31
|
+
*/
|
|
32
|
+
deltaUnit?: string;
|
|
28
33
|
/**
|
|
29
34
|
* When provided, enables compare mode: the value area is split 50/50 with a
|
|
30
35
|
* vertical divider and each side shows its own sub-title and value.
|
|
@@ -36,6 +41,7 @@ export interface DialAnalyticsCardProps {
|
|
|
36
41
|
* A simple analytics summary card that displays a single metric as a title,
|
|
37
42
|
* a prominent value, and an optional description.
|
|
38
43
|
* aliases: MetricCard|StatCard|KpiCard
|
|
44
|
+
* Design system 1.0
|
|
39
45
|
*
|
|
40
46
|
* Two visual variants are available via the {@link AnalyticsCardVariant} enum:
|
|
41
47
|
* - `Default` — `bg-layer-3`, large `dial-display2-text` value, supports a description.
|
|
@@ -43,8 +49,9 @@ export interface DialAnalyticsCardProps {
|
|
|
43
49
|
* description (the `description` prop is ignored in this variant).
|
|
44
50
|
*
|
|
45
51
|
* **Compare mode** — pass `compareValues` to split the value area 50/50 between two
|
|
46
|
-
* metrics, each with its own sub-title.
|
|
47
|
-
*
|
|
52
|
+
* metrics, each with its own sub-title. Long sub-titles truncate to a single line and
|
|
53
|
+
* show the full text in a tooltip. Pair with `delta` to show a change badge next
|
|
54
|
+
* to the card title, and `deltaUnit` for a suffix such as `"s"`.
|
|
48
55
|
*
|
|
49
56
|
* @example
|
|
50
57
|
* ```tsx
|
|
@@ -59,7 +66,9 @@ export interface DialAnalyticsCardProps {
|
|
|
59
66
|
* ```tsx
|
|
60
67
|
* <DialAnalyticsCard
|
|
61
68
|
* title="Response time"
|
|
62
|
-
* delta={
|
|
69
|
+
* delta={9}
|
|
70
|
+
* deltaUnit="s"
|
|
71
|
+
* deltaPositive={false}
|
|
63
72
|
* compareValues={[
|
|
64
73
|
* { title: 'This week', value: '248ms' },
|
|
65
74
|
* { title: 'Last week', value: '220ms' },
|
|
@@ -75,6 +84,8 @@ export interface DialAnalyticsCardProps {
|
|
|
75
84
|
* @param [isLoading] - Renders a loader in place of the value.
|
|
76
85
|
* @param [className] - Additional CSS classes for the card container.
|
|
77
86
|
* @param [delta] - Numeric change shown as a badge next to the title. ≥0 = success, <0 = error.
|
|
87
|
+
* @param [deltaPositive] - Overrides sign-based badge colour. Use for lower-is-better metrics.
|
|
88
|
+
* @param [deltaUnit] - Suffix appended to the formatted delta (e.g. `"s"` → `+9s`).
|
|
78
89
|
* @param [compareValues] - Enables compare mode with two side-by-side metrics.
|
|
79
90
|
*/
|
|
80
91
|
export declare const DialAnalyticsCard: FC<DialAnalyticsCardProps>;
|
|
@@ -7,6 +7,7 @@ export interface DialAnalyticsErrorTagProps {
|
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* A non-interactive error tag used across analytics components to indicate that a
|
|
10
|
+
* Design system 1.0
|
|
10
11
|
* metric value could not be provided. Renders a {@link DialTag} styled with the
|
|
11
12
|
* error palette (`bg-error`, `text-error`, `border-error`).
|
|
12
13
|
*
|
|
@@ -18,7 +18,7 @@ export interface DialAnalyticsHistogramProps {
|
|
|
18
18
|
isLoading?: boolean;
|
|
19
19
|
/** Additional CSS classes for the outer container. */
|
|
20
20
|
className?: string;
|
|
21
|
-
/** Second set of values to overlay in compare mode.
|
|
21
|
+
/** Second set of values to overlay in compare mode. Primary bars are striped; compare bars are solid. */
|
|
22
22
|
compareValues?: number[];
|
|
23
23
|
/** Label for the primary values set, shown on the first tooltip line in compare mode. */
|
|
24
24
|
valueSetLabel?: string;
|
|
@@ -27,11 +27,14 @@ export interface DialAnalyticsHistogramProps {
|
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* A histogram that distributes `values` across the bands of a color map and draws a
|
|
30
|
-
* column per band. Each column's height is relative to the
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
30
|
+
* column per band. Each column's height is relative to the Y-axis max (an even
|
|
31
|
+
* ceiling of the dataset size — the "out of N" in the tooltip). Empty columns
|
|
32
|
+
* are outlined, populated columns are filled with their band color. A left
|
|
33
|
+
* Y-axis (count) and horizontal grid lines provide scale; interval labels run
|
|
34
|
+
* along the bottom. Hovering a column reveals a tooltip with its share of the
|
|
35
|
+
* total.
|
|
34
36
|
* aliases: Distribution|ColumnChart|FrequencyChart
|
|
37
|
+
* Design system 1.0
|
|
35
38
|
*
|
|
36
39
|
* @example
|
|
37
40
|
* ```tsx
|
|
@@ -49,7 +52,7 @@ export interface DialAnalyticsHistogramProps {
|
|
|
49
52
|
* @param [showCount] - When `true`, renders each column's count inside its bar.
|
|
50
53
|
* @param [isLoading] - Renders a loader in place of the histogram while the data is being fetched.
|
|
51
54
|
* @param [className] - Additional CSS classes for the outer container.
|
|
52
|
-
* @param [compareValues] - Second set of values; enables compare mode
|
|
55
|
+
* @param [compareValues] - Second set of values; enables compare mode (primary striped, compare solid).
|
|
53
56
|
* @param [valueSetLabel] - Label for the primary values set (compare mode tooltip).
|
|
54
57
|
* @param [compareValueSetLabel] - Label for the compare values set (compare mode tooltip).
|
|
55
58
|
*/
|
|
@@ -29,6 +29,16 @@ export declare const getHistogramColumnIndex: (value: number, colorMap: Analytic
|
|
|
29
29
|
* column and computes each column's height as a ratio of the tallest column.
|
|
30
30
|
*/
|
|
31
31
|
export declare const buildHistogramColumns: (values: number[], colorMap: AnalyticsBarColorStop[]) => AnalyticsHistogramColumn[];
|
|
32
|
+
/**
|
|
33
|
+
* Top of the Y-axis for a dataset of `total` values (the "out of N" in the
|
|
34
|
+
* tooltip). Rounds odd totals up so the midpoint tick is an integer
|
|
35
|
+
* (Figma: 0, 24, 48). Empty data still gets a 0–2 scale so the axis is visible.
|
|
36
|
+
*/
|
|
37
|
+
export declare const getHistogramYMax: (total: number) => number;
|
|
38
|
+
/**
|
|
39
|
+
* Three Y-axis ticks from top to bottom: `yMax`, `yMax / 2`, `0`.
|
|
40
|
+
*/
|
|
41
|
+
export declare const getHistogramYTicks: (total: number) => number[];
|
|
32
42
|
/** Formats a column's interval bound for the axis label (trims float noise). */
|
|
33
43
|
export declare const formatHistogramInterval: (value: number) => string;
|
|
34
44
|
/**
|
|
@@ -9,6 +9,7 @@ export interface DialAutocompleteInputValueProps {
|
|
|
9
9
|
/**
|
|
10
10
|
* A component that displays a list of selected items in a customizable, styled list. Each item is
|
|
11
11
|
* aliases: SelectedList|ItemDisplay
|
|
12
|
+
* Design system 1.0
|
|
12
13
|
*
|
|
13
14
|
* rendered as a tag wrapped in a tooltip, allowing for truncation and additional context when
|
|
14
15
|
* hovered. The component is flexible and supports custom CSS classes for styling the list and
|