@epam/ai-dial-ui-kit 0.15.0-dev.2 → 0.15.0-dev.21

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 (148) hide show
  1. package/README.md +185 -0
  2. package/dist/CHANGELOG.md +35 -0
  3. package/dist/DateCellRenderer-CkFOYZGc.cjs +1 -0
  4. package/dist/{DateCellRenderer-BVM-Q8yx.cjs → DateCellRenderer-ZLb4GAUV.cjs} +26 -26
  5. package/dist/IconButton-CVttu-k-.cjs +1 -0
  6. package/dist/{JsonEditor-qv1Z0dLX.cjs → JsonEditor-BDe6elKO.cjs} +1 -1
  7. package/dist/{MarkdownEditor-DHn2pYOJ.cjs → MarkdownEditor-C7BONfsl.cjs} +1 -1
  8. package/dist/{MarkdownEditor-jQ8nDJfx.cjs → MarkdownEditor-FVzYMdkC.cjs} +1 -1
  9. package/dist/{MarkdownEditorContainer-Bzcnoemw.cjs → MarkdownEditorContainer-BA94ffC4.cjs} +1 -1
  10. package/dist/{Switch-CUKClcEz.cjs → Switch-CfxMs3AZ.cjs} +1 -1
  11. package/dist/components/Dropdown/Dropdown.js +70 -65
  12. package/dist/components/Dropdown/DropdownSubMenuItem.js +63 -55
  13. package/dist/components/Dropdown/constants.js +16 -14
  14. package/dist/components/DropdownIcon/DropdownIcon.js +43 -32
  15. package/dist/components/FileManager/FileManager.js +2 -2
  16. package/dist/components/New/Accordion/Accordion.js +72 -66
  17. package/dist/components/New/Breadcrumbs/Breadcrumbs.js +159 -0
  18. package/dist/components/New/Breadcrumbs/constants.js +41 -0
  19. package/dist/components/New/ButtonDropdown/ButtonDropdown.js +7 -6
  20. package/dist/components/New/Calendar/Calendar.js +337 -289
  21. package/dist/components/New/Calendar/constants.js +5 -5
  22. package/dist/components/New/CaptionText/CaptionText.js +18 -15
  23. package/dist/components/New/CardShell/CardShell.js +5 -3
  24. package/dist/components/New/Checkbox/Checkbox.js +67 -56
  25. package/dist/components/New/Checkbox/CheckboxBox.js +5 -3
  26. package/dist/components/New/CloseButton/CloseButton.js +18 -16
  27. package/dist/components/New/CollapsibleSidebar/CollapsibleSidebar.js +39 -34
  28. package/dist/components/New/ConfirmationPopup/ConfirmationPopup.js +44 -39
  29. package/dist/components/New/Dropdown/Dropdown.js +112 -105
  30. package/dist/components/New/Dropdown/DropdownSubMenuItem.js +17 -17
  31. package/dist/components/New/Dropdown/constants.js +22 -17
  32. package/dist/components/New/EllipsisTooltip/EllipsisTooltip.js +20 -18
  33. package/dist/components/New/FileDropzone/FileDropzone.js +27 -25
  34. package/dist/components/New/FileIcon/FileIcon.js +55 -0
  35. package/dist/components/New/FileIcon/constants.js +134 -0
  36. package/dist/components/New/FileIcon/icons/FileGlyph.js +150 -0
  37. package/dist/components/New/FileIcon/icons/FolderGlyph.js +50 -0
  38. package/dist/components/New/FileName/FileName.js +78 -0
  39. package/dist/components/New/FilterChips/FilterChips.js +43 -0
  40. package/dist/components/New/FilterChips/constants.js +5 -0
  41. package/dist/components/New/FolderName/FolderName.js +16 -0
  42. package/dist/components/New/FolderPath/FolderPath.js +29 -28
  43. package/dist/components/New/Highlight/Highlight.js +23 -30
  44. package/dist/components/New/InfoButton/InfoButton.js +13 -11
  45. package/dist/components/New/InlineSelect/InlineSelect.js +43 -41
  46. package/dist/components/New/InteractiveTooltip/InteractiveTooltip.js +41 -39
  47. package/dist/components/New/InteractiveTooltip/constants.js +2 -2
  48. package/dist/components/New/Label/Label.js +13 -8
  49. package/dist/components/New/MenuItem/MenuItem.js +29 -27
  50. package/dist/components/New/MenuItem/constants.js +9 -8
  51. package/dist/components/New/NoDataContent/NoDataContent.js +21 -19
  52. package/dist/components/New/Notification/Notification.js +33 -29
  53. package/dist/components/New/NumberInput/NumberInput.js +42 -33
  54. package/dist/components/New/PasswordInput/PasswordInput.js +41 -35
  55. package/dist/components/New/Popup/Popup.js +46 -44
  56. package/dist/components/New/Popup/constants.js +3 -3
  57. package/dist/components/New/Radio/Radio.js +75 -64
  58. package/dist/components/New/RadioGroup/RadioGroup.js +76 -65
  59. package/dist/components/New/RadioGroupPopupField/RadioGroupPopupField.js +117 -106
  60. package/dist/components/New/ResizableContainer/ResizableContainer.js +42 -40
  61. package/dist/components/New/Search/Search.js +29 -27
  62. package/dist/components/New/SegmentedControl/SegmentedControl.js +29 -23
  63. package/dist/components/New/Select/Select.js +120 -109
  64. package/dist/components/New/Select/constants.js +23 -20
  65. package/dist/components/New/SharedEntityIndicator/SharedEntityIndicator.js +34 -0
  66. package/dist/components/New/Switch/Switch.js +69 -58
  67. package/dist/components/New/Tabs/Tabs.js +125 -61
  68. package/dist/components/New/Tag/Tag.js +42 -40
  69. package/dist/components/New/TagInput/TagInput.js +45 -43
  70. package/dist/components/New/ToggleIconButton/ToggleIconButton.js +26 -24
  71. package/dist/components/New/Tooltip/TooltipContent.js +11 -9
  72. package/dist/components/New/Tooltip/constants.js +1 -1
  73. package/dist/components/New/TransferQueue/TransferQueue.js +124 -0
  74. package/dist/components/New/TransferQueue/TransferQueueHeader.js +71 -0
  75. package/dist/components/New/TransferQueue/TransferQueueRow.js +119 -0
  76. package/dist/components/New/TransferQueue/constants.js +24 -0
  77. package/dist/components/New/constants/overlay.js +15 -9
  78. package/dist/components/Popup/constants.js +8 -8
  79. package/dist/components/ProgressBar/ProgressBar.js +45 -33
  80. package/dist/components/SchemaRenderer/components/SchemaAdditionalPropertiesEditor.js +46 -31
  81. package/dist/components/SchemaRenderer/components/SchemaKeyValueEditor.js +223 -135
  82. package/dist/components/SchemaRenderer/types.js +19 -8
  83. package/dist/components/SchemaRenderer/utils.js +121 -96
  84. package/dist/components/Skeleton/Skeleton.js +25 -19
  85. package/dist/components/Spinner/Spinner.js +7 -5
  86. package/dist/components/Tooltip/TooltipContent.js +11 -11
  87. package/dist/components-manifest.json +779 -37
  88. package/dist/constants/public-class-names.js +198 -0
  89. package/dist/dial-ui-kit.cjs +2 -2
  90. package/dist/dial-ui-kit.js +322 -295
  91. package/dist/editors.cjs +1 -1
  92. package/dist/file-manager.cjs +1 -1
  93. package/dist/grid.cjs +1 -1
  94. package/dist/index.css +2 -2
  95. package/dist/lazy-BEsZqouS.cjs +1 -0
  96. package/dist/merge-classes-BEJXjzkx.cjs +1 -0
  97. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +419 -399
  98. package/dist/src/components/New/Accordion/Accordion.d.ts +4 -0
  99. package/dist/src/components/New/Breadcrumbs/Breadcrumbs.d.ts +94 -0
  100. package/dist/src/components/New/Breadcrumbs/constants.d.ts +60 -0
  101. package/dist/src/components/New/Calendar/Calendar.d.ts +14 -1
  102. package/dist/src/components/New/Calendar/constants.d.ts +1 -1
  103. package/dist/src/components/New/Dropdown/Dropdown.d.ts +9 -1
  104. package/dist/src/components/New/Dropdown/constants.d.ts +3 -0
  105. package/dist/src/components/New/FileIcon/FileIcon.d.ts +61 -0
  106. package/dist/src/components/New/FileIcon/constants.d.ts +16 -0
  107. package/dist/src/components/New/FileIcon/icons/FileGlyph.d.ts +18 -0
  108. package/dist/src/components/New/FileIcon/icons/FolderGlyph.d.ts +17 -0
  109. package/dist/src/components/New/FileName/FileName.d.ts +79 -0
  110. package/dist/src/components/New/FilterChips/FilterChips.d.ts +69 -0
  111. package/dist/src/components/New/FilterChips/constants.d.ts +13 -0
  112. package/dist/src/components/New/FolderName/FolderName.d.ts +37 -0
  113. package/dist/src/components/New/InteractiveTooltip/constants.d.ts +5 -4
  114. package/dist/src/components/New/Notification/Notification.d.ts +18 -0
  115. package/dist/src/components/New/Popup/constants.d.ts +1 -1
  116. package/dist/src/components/New/Select/constants.d.ts +3 -2
  117. package/dist/src/components/New/SharedEntityIndicator/SharedEntityIndicator.d.ts +35 -0
  118. package/dist/src/components/New/Tabs/Tabs.d.ts +54 -6
  119. package/dist/src/components/New/Tooltip/constants.d.ts +5 -3
  120. package/dist/src/components/New/TransferQueue/TransferQueue.d.ts +139 -0
  121. package/dist/src/components/New/TransferQueue/TransferQueueHeader.d.ts +16 -0
  122. package/dist/src/components/New/TransferQueue/TransferQueueRow.d.ts +10 -0
  123. package/dist/src/components/New/TransferQueue/constants.d.ts +6 -0
  124. package/dist/src/components/New/constants/overlay.d.ts +13 -0
  125. package/dist/src/components/Popup/constants.d.ts +1 -1
  126. package/dist/src/components/SchemaRenderer/types.d.ts +11 -0
  127. package/dist/src/components/SchemaRenderer/utils.d.ts +5 -1
  128. package/dist/src/constants/public-class-names.d.ts +189 -0
  129. package/dist/src/index.d.ts +21 -0
  130. package/dist/src/types/accordion.d.ts +7 -0
  131. package/dist/src/types/breadcrumbs.d.ts +9 -0
  132. package/dist/src/types/transfer-queue.d.ts +10 -0
  133. package/dist/src/utils/__tests__/timezone.spec.d.ts +1 -0
  134. package/dist/src/utils/sub-menu-floating.d.ts +7 -4
  135. package/dist/src/utils/timezone.d.ts +24 -0
  136. package/dist/types/accordion.js +4 -0
  137. package/dist/types/breadcrumbs.js +4 -0
  138. package/dist/types/transfer-queue.js +4 -0
  139. package/dist/use-file-manager-tabs-4s-dbnmu.cjs +3 -0
  140. package/dist/utils/merge-classes.js +12 -5
  141. package/dist/utils/sub-menu-floating.js +98 -54
  142. package/dist/utils/timezone.js +19 -0
  143. package/package.json +2 -2
  144. package/dist/DateCellRenderer-ssp7eaZY.cjs +0 -1
  145. package/dist/IconButton-DWqoaBWf.cjs +0 -1
  146. package/dist/lazy-tfN4sKhq.cjs +0 -1
  147. package/dist/merge-classes-Dipy1Ih1.cjs +0 -1
  148. package/dist/use-file-manager-tabs-DjdR_mYM.cjs +0 -3
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.15.0-dev.2",
3
- "generatedAt": "2026-09-14T19:45:07.934Z",
2
+ "version": "0.15.0-dev.21",
3
+ "generatedAt": "2026-09-27T13:45:56.317Z",
4
4
  "kit": {
5
5
  "name": "@epam/ai-dial-ui-kit",
6
6
  "description": "A modern UI kit for building AI DIAL interfaces with React",
@@ -17,7 +17,7 @@
17
17
  "setupNotes": "## Next.js Integration\n1. Install the package. React is the only peer you have to supply — everything\n the kit renders with, it installs itself.\n\n``` bash\nnpm install @epam/ai-dial-ui-kit\nnpm install react react-dom\n```\n\nAdd the editor packages only if you use the `@epam/ai-dial-ui-kit/editors`\nsubpath. They are optional peers, so `npm install` stays quiet without them, and\nthe kit only reaches for them when a `Lazy*` editor actually mounts:\n\n``` bash\nnpm install monaco-editor @monaco-editor/react @uiw/react-md-editor\n```\n\n2. Import style in the root layout of the project:\n\n```tsx\n// app/layout.tsx\nimport \"@epam/ai-dial-ui-kit/styles.css\";\n```\n\n3. Usage example\n\n```tsx\n// app/page.tsx\n\"use client\";\nimport { DialPrimaryButton } from \"@epam/ai-dial-ui-kit\";\n\nexport default function Home() {\n return (\n <div className=\"w-full h-full flex flex-col gap-3 items-center justify-center\">\n <h1>Test library</h1>\n <DialPrimaryButton onClick={() => alert('Hello AI DIAL!')} />\n </div>\n );\n}\n```\nSee \"🎨 Theming & Customization\" section in README."
18
18
  },
19
19
  "styles": "# Typography CSS Utility Classes\n\n## Design-system-compliant classes (`dial-*-text`)\n\nUse these by default. They follow the design system type scale.\n\n| Class | Design name | Weight | Size / Line-height |\n| --------------------------------- | --------------------------- | -------- | ----------------------------------- |\n| `.dial-display1-text` | Display 1 | semibold | 32px / 48px |\n| `.dial-display2-text` | Display 2 | semibold | 28px / 40px |\n| `.dial-display3-text` | Display 3 | semibold | 22px / 32px |\n| `.dial-h1-text` | Heading 1 | semibold | 20px / 28px |\n| `.dial-h2-text` | Heading 2 | semibold | 18px / 26px |\n| `.dial-h3-text` | Heading 3 | semibold | 16px / 24px |\n| `.dial-body-text` | Body Text | normal | 16px / 24px |\n| `.dial-body-semi-text` | Body Text (Semi Bold) | semibold | 16px / 24px |\n| `.dial-body-paragraph-text` | Body Paragraph | normal | 16px / 26px |\n| `.dial-body-paragraph-semi-text` | Body Paragraph (Semi Bold) | semibold | 16px / 26px |\n| `.dial-small-text` | Small Text | normal | 14px / 20px |\n| `.dial-small-semi-text` | Small Text (Semi Bold) | semibold | 14px / 20px |\n| `.dial-small-paragraph-text` | Small Paragraph | normal | 14px / 24px |\n| `.dial-small-paragraph-semi-text` | Small Paragraph (Semi Bold) | semibold | 14px / 24px |\n| `.dial-tiny-text` | Tiny Text | normal | 12px / 16px |\n| `.dial-tiny-lead-text` | Tiny Text Lead | normal | 12px / 16px (+0.03em, uppercase) |\n| `.dial-tiny-semi-text` | Tiny Text (Semi Bold) | semibold | 12px / 16px |\n| `.dial-tiny-lead-semi-text` | Tiny Text Lead (Semi Bold) | semibold | 12px / 16px (+0.03em, uppercase) |\n| `.dial-caption-text` | Caption | normal | 10px / 12px |\n| `.dial-caption-lead-semi-text` | Caption Lead (Semi Bold) | semibold | 10px / 12px (+0.06em, uppercase) |\n| `.dial-code-text` | Code | normal | 14px / 20px (Fira Code / monospace) |\n| `.dial-italic-text` | Italic | normal | 18px / 22px (serif, italic) |\n| `.dial-small-italic-text` | Small Italic | normal | 14px / 20px (serif, italic) |\n| `.dial-tiny-italic-text` | Tiny Italic | normal | 12px / 16px (serif, italic) |\n| `.dial-caption-italic-text` | Caption Italic | normal | 10px / 12px (serif, italic) |\n\nThe three `*-lead-*` classes apply `text-transform: uppercase` themselves — pass them the sentence-case string, not a pre-uppercased one, so the accessible name stays readable.\n\n`.dial-code-text` resolves its family through `var(--theme-font-mono, var(--font-fira-code, 'Fira Code'))` before falling back to the system monospace stack. The kit ships no font file; the host provides the face.\n\nThe `*-italic-text` classes use a serif italic face and are intended for mathematical and formula symbols. Their line-heights follow the corresponding typography size; the default 18px variant uses a fixed 22px line-height to keep standalone symbols vertically aligned without changing their container's height.\n\n## Legacy classes (avoid in new code)\n\nClasses like `dial-h1`, `dial-h2`, `dial-body`, `dial-small*`, `dial-tiny*`, `dial-caption` are legacy. They can be used in legacy projects if user explicidly specify they need legacy typography.\n\n## Raw SCSS source\n",
20
- "theming": "# Theming & CSS Variable Tokens\n\nAI DIAL UI Kit uses CSS custom properties (variables) for theming.\nDark and light themes are switched by setting different values for these variables on `:root` or a theme wrapper element.\n\n## Usage in Tailwind\n\nThe Tailwind config maps CSS variables to utility classes.\nUse these classes in your components:\n\n```tsx\n// Backgrounds\n<div className=\"bg-layer-0\" /> // darkest background\n<div className=\"bg-layer-1\" /> // main content area\n<div className=\"bg-layer-2\" /> // elevated panels\n\n// Text\n<span className=\"text-primary\" /> // main text color\n<span className=\"text-secondary\" /> // muted text\n<span className=\"text-error\" /> // error state\n\n// Borders\n<div className=\"border border-primary\" /> // standard border\n<div className=\"border border-error\" /> // error border\n```\n\n## Override CSS Variables\n\n```css\n:root {\n --bg-layer-0: #000000;\n --bg-layer-1: #0c101d;\n --bg-layer-2: #161b2d;\n --bg-layer-3: #1d2439;\n --text-primary: #eef1f7;\n --text-secondary: #9fa6bd;\n --text-error: #f76464;\n --stroke-primary: #696e7c;\n --controls-bg-accent-primary: #3664e2;\n /* ... see tailwind.config.js for full list */\n}\n```\n\n## Token Reference\n\n\n### backgroundsColors\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `layer-sunken` | `var(--bg-layer-sunken)` | `#EEF1F7` |\n| `layer-base` | `var(--bg-layer-base)` | `#F5F7FA` |\n| `layer-raised` | `var(--bg-layer-raised)` | `#FCFCFC` |\n| `gradient-1` | `var(--bg-gradient-1)` | `#1D4ED8` |\n| `gradient-1-hover` | `var(--bg-gradient-1-hover)` | `#6785FB` |\n| `gradient-1-active` | `var(--bg-gradient-1-active)` | `#1D4ED8` |\n| `gradient-2` | `var(--bg-gradient-2)` | `#885DF2` |\n| `gradient-2-hover` | `var(--bg-gradient-2-hover)` | `#885DF2` |\n| `gradient-2-active` | `var(--bg-gradient-2-active)` | `#7C3AED` |\n| `control-accent-alpha` | `var(--bg-control-accent-alpha)` | `#2764D90F` |\n| `control-accent-alpha-hover` | `var(--bg-control-accent-alpha-hover)` | `#2764D924` |\n| `control-accent-alpha-active` | `var(--bg-control-accent-alpha-active)` | `#2764D933` |\n| `control-accent` | `var(--bg-control-accent)` | `#1D4ED8` |\n| `control-accent-hover` | `var(--bg-control-accent-hover)` | `#5976E9` |\n| `control-neutral` | `var(--bg-control-neutral)` | `#FCFCFC` |\n| `control-neutral-hover-strong` | `var(--bg-control-neutral-hover-strong)` | `#848E9C` |\n| `control-neutral-active` | `var(--bg-control-neutral-active)` | `#D1DBEA` |\n| `control-neutral-default` | `var(--bg-control-neutral-default)` | `#ACB3C3` |\n| `control-inverted` | `var(--bg-control-inverted)` | `#57647A` |\n| `control-error` | `var(--bg-control-error)` | `#AE2F2F` |\n| `control-error-hover` | `var(--bg-control-error-hover)` | `#BF3939` |\n| `control-error-active` | `var(--bg-control-error-active)` | `#CC4545` |\n| `control-error-alpha-hover` | `var(--bg-control-error-alpha-hover)` | `#F764641A` |\n| `control-error-alpha-active` | `var(--bg-control-error-alpha-active)` | `#F7646433` |\n| `control-disable-primary` | `var(--bg-control-disable-primary)` | `#DCE0E8` |\n| `control-disable-secondary` | `var(--bg-control-disable-secondary)` | `#ACB3C3` |\n| `green-1` | `var(--bg-visual-green-1)` | `#CDE8E5` |\n| `green-2` | `var(--bg-visual-green-2)` | `#D1F0DC` |\n| `violet-1` | `var(--bg-visual-violet-1)` | `#DDE3F9` |\n| `violet-2` | `var(--bg-visual-violet-2)` | `#F1E9FF` |\n\n### shadowColors\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `xs-1` | `var(--shadow-xs-1)` | `#2764D933` |\n| `xs-2` | `var(--shadow-xs-2)` | `#161B2D08` |\n\n### borderColors\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `accent-alpha` | `var(--stroke-accent-alpha)` | `#2764D933` |\n| `gradient-1` | `var(--stroke-gradient-1)` | `#5976E9` |\n| `gradient-2` | `var(--stroke-gradient-2)` | `#885DF2` |\n| `accent-focus` | `var(--stroke-accent-focus)` | `#6785FB` |\n| `error-alpha` | `var(--stroke-error-alpha)` | `#AE2F2F73` |\n| `control-disable-primary` | `var(--stroke-control-disable-primary)` | `#848E9C` |\n\n### textColors\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `warning-icon` | `var(--text-warning-icon)` | `#EEC840` |\n| `green-1` | `var(--text-visual-green-1)` | `#059669` |\n| `green-2` | `var(--text-visual-green-2)` | `#0D6E72` |\n| `green-3` | `var(--text-visual-green-3)` | `#065F46` |\n| `brown-1` | `var(--text-visual-brown-1)` | `#D36817` |\n| `brown-2` | `var(--text-visual-brown-2)` | `#B45309` |\n| `violet-1` | `var(--text-visual-violet-1)` | `#7C3AED` |\n| `violet-2` | `var(--text-visual-violet-2)` | `#3730B7` |\n| `control-permanent` | `var(--text-control-permanent)` | `#FCFCFC` |\n| `control-inverted` | `var(--text-control-inverted)` | `#FCFCFC` |\n| `control-disable-primary` | `var(--text-control-disable-primary)` | `#848E9C` |\n| `control-disable-secondary` | `var(--text-control-disable-secondary)` | `#DCE0E8` |\n| `control-accent-hover` | `var(--text-control-accent-hover)` | `#5976E9` |\n| `control-accent-active` | `var(--text-control-accent-active)` | `#6785FB` |\n\n### backgroundsColorsToRemove\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `layer-0` | `var(--bg-layer-0)` | `#FCFCFC` |\n| `layer-1` | `var(--bg-layer-1)` | `#E0E6F0` |\n| `layer-2` | `var(--bg-layer-2)` | `#EEF1F7` |\n| `layer-3` | `var(--bg-layer-3)` | `#FCFCFC` |\n| `layer-4` | `var(--bg-layer-4)` | `#D1DBEA` |\n| `accent-primary-alpha` | `var(--bg-accent-primary-alpha)` | `#7DA4FF26` |\n| `accent-secondary-alpha` | `var(--bg-accent-secondary-alpha)` | `#37BABC2E` |\n| `accent-tertiary-alpha` | `var(--bg-accent-tertiary-alpha)` | `#A972FF2E` |\n| `accent-primary` | `var(--bg-accent-primary)` | `#5C8DEA` |\n| `accent-secondary` | `var(--bg-accent-secondary)` | `#37BABC` |\n| `red-400` | `var(--bg-red-400)` | `#F76464` |\n| `controls-accent-primary` | `var(--controls-bg-accent-primary)` | `#124ACE` |\n| `controls-accent-primary-hover` | `var(--controls-bg-accent-primary-hover)` | `#2656D9` |\n| `controls-accent-primary-active` | `var(--controls-bg-accent-primary-active)` | `#3664E2` |\n| `controls-accent-primary-alpha-active` | `var(--controls-bg-accent-primary-alpha-active)` | `#7DA4FF5C` |\n| `controls-accent-secondary-alpha-active` | `var(--controls-bg-accent-secondary-alpha-active)` | `#37BABC5C` |\n| `controls-accent-tertiary-alpha-active` | `var(--controls-bg-accent-tertiary-alpha-active)` | `#A972FF5C` |\n| `controls-error` | `var(--controls-bg-error)` | `#AE2F2F` |\n| `controls-error-hover` | `var(--controls-bg-error-hover)` | `#BF3939` |\n| `controls-error-active` | `var(--controls-bg-error-active)` | `#CC4545` |\n| `controls-error-alpha-active` | `var(--controls-bg-error-alpha-active)` | `#F764645C` |\n| `controls-disable-accent` | `var(--controls-bg-disable-accent)` | `#7C8293` |\n| `controls-disable` | `var(--controls-bg-disable)` | `#D1DBEA` |\n| `controls-neutral-hover` | `var(--controls-bg-neutral-hover)` | `#D1DBEA` |\n| `controls-neutral-active` | `var(--controls-bg-neutral-active)` | `#9FA6BD` |\n| `controls-accent-success-alpha-hover` | `var(--controls-bg-accent-success-alpha-hover)` | `#37BABC2E` |\n| `controls-accent-success-alpha-active` | `var(--controls-bg-accent-success-alpha-active)` | `#37BABC5C` |\n| `controls-enable-primary` | `var(--controls-enable-primary)` | `#FCFCFC` |\n\n### borderColorsToRemove\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `accent-primary` | `var(--stroke-accent-primary)` | `#124ACE` |\n| `accent-secondary` | `var(--stroke-accent-secondary)` | `#007274` |\n| `controls-accent` | `var(--controls-bg-accent)` | `#5C8DEA` |\n| `red-900` | `var(--red-900)` | `#402027` |\n\n### textColorsToRemove\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `accent-primary` | `var(--text-accent-primary)` | `#7DA4FF` |\n| `accent-secondary` | `var(--text-accent-secondary)` | `#37BABC` |\n| `accent-tertiary` | `var(--text-accent-tertiary)` | `#A972FF` |\n| `controls-permanent` | `var(--controls-text-permanent)` | `#FCFCFC` |\n| `controls-accent-disable` | `var(--controls-text-accent-disable)` | `#D1DBEA` |\n| `controls-primary-disable` | `var(--controls-text-primary-disable)` | `#696E7C` |\n| `controls-secondary-disable` | `var(--controls-text-secondary-disable)` | `#9FA6BD` |\n| `controls-neutral` | `var(--controls-text-neutral)` | `#161B2D` |\n| `controls-accent-primary-hover` | `var(--controls-text-accent-primary-hover)` | `#3664E2` |\n| `controls-accent-primary-active` | `var(--controls-text-accent-primary-active)` | `#7DA4FF` |",
20
+ "theming": "# Theming & CSS Variable Tokens\n\nAI DIAL UI Kit uses CSS custom properties (variables) for theming.\nDark and light themes are switched by setting different values for these variables on `:root` or a theme wrapper element.\n\n## Usage in Tailwind\n\nThe Tailwind config maps CSS variables to utility classes.\nUse these classes in your components:\n\n```tsx\n// Backgrounds\n<div className=\"bg-layer-0\" /> // darkest background\n<div className=\"bg-layer-1\" /> // main content area\n<div className=\"bg-layer-2\" /> // elevated panels\n\n// Text\n<span className=\"text-primary\" /> // main text color\n<span className=\"text-secondary\" /> // muted text\n<span className=\"text-error\" /> // error state\n\n// Borders\n<div className=\"border border-primary\" /> // standard border\n<div className=\"border border-error\" /> // error border\n```\n\n## Override CSS Variables\n\n```css\n:root {\n --bg-layer-0: #000000;\n --bg-layer-1: #0c101d;\n --bg-layer-2: #161b2d;\n --bg-layer-3: #1d2439;\n --text-primary: #eef1f7;\n --text-secondary: #9fa6bd;\n --text-error: #f76464;\n --stroke-primary: #696e7c;\n --controls-bg-accent-primary: #3664e2;\n /* ... see tailwind.config.js for full list */\n}\n```\n\n## Overlay stacking\n\nPortalled overlays stack on a ladder driven by one variable, `--z-overlay`\n(default `52`): `z-popup` (base — `Popup` backdrop), `z-floating` (+1 —\n`Dropdown`/`Select` overlays, submenus, `Calendar`), `z-interactive-tooltip`\n(+2 — `InteractiveTooltip`), `z-tooltip` (+3 — `Tooltip`). To lift every\noverlay above a host's own sticky header or modal, set the base once on `:root`\n(or in a `ThemeScope` class) — the steps move together, so their order is kept:\n\n```css\n:root {\n --z-overlay: 1000;\n}\n```\n\nDo not override `[role='menu']` or hardcode `z-[53]` in a host. To move one\noverlay only, pass a `z-*` utility through its class prop (`listClassName`,\n`overlayClassName`, `contentClassName`, `panelClassName`) — `mergeClasses`\nreplaces the layer's step with it.\n\n## Token Reference\n\n\n### backgroundsColors\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `layer-sunken` | `var(--bg-layer-sunken)` | `#EEF1F7` |\n| `layer-base` | `var(--bg-layer-base)` | `#F5F7FA` |\n| `layer-raised` | `var(--bg-layer-raised)` | `#FCFCFC` |\n| `gradient-1` | `var(--bg-gradient-1)` | `#1D4ED8` |\n| `gradient-1-hover` | `var(--bg-gradient-1-hover)` | `#6785FB` |\n| `gradient-1-active` | `var(--bg-gradient-1-active)` | `#1D4ED8` |\n| `gradient-2` | `var(--bg-gradient-2)` | `#885DF2` |\n| `gradient-2-hover` | `var(--bg-gradient-2-hover)` | `#885DF2` |\n| `gradient-2-active` | `var(--bg-gradient-2-active)` | `#7C3AED` |\n| `control-accent-alpha` | `var(--bg-control-accent-alpha)` | `#2764D90F` |\n| `control-accent-alpha-hover` | `var(--bg-control-accent-alpha-hover)` | `#2764D924` |\n| `control-accent-alpha-active` | `var(--bg-control-accent-alpha-active)` | `#2764D933` |\n| `control-accent` | `var(--bg-control-accent)` | `#1D4ED8` |\n| `control-accent-hover` | `var(--bg-control-accent-hover)` | `#5976E9` |\n| `control-neutral` | `var(--bg-control-neutral)` | `#FCFCFC` |\n| `control-neutral-hover-strong` | `var(--bg-control-neutral-hover-strong)` | `#848E9C` |\n| `control-neutral-active` | `var(--bg-control-neutral-active)` | `#D1DBEA` |\n| `control-neutral-default` | `var(--bg-control-neutral-default)` | `#ACB3C3` |\n| `control-inverted` | `var(--bg-control-inverted)` | `#57647A` |\n| `control-error` | `var(--bg-control-error)` | `#AE2F2F` |\n| `control-error-hover` | `var(--bg-control-error-hover)` | `#BF3939` |\n| `control-error-active` | `var(--bg-control-error-active)` | `#CC4545` |\n| `control-error-alpha-hover` | `var(--bg-control-error-alpha-hover)` | `#F764641A` |\n| `control-error-alpha-active` | `var(--bg-control-error-alpha-active)` | `#F7646433` |\n| `control-disable-primary` | `var(--bg-control-disable-primary)` | `#DCE0E8` |\n| `control-disable-secondary` | `var(--bg-control-disable-secondary)` | `#ACB3C3` |\n| `green-1` | `var(--bg-visual-green-1)` | `#CDE8E5` |\n| `green-2` | `var(--bg-visual-green-2)` | `#D1F0DC` |\n| `violet-1` | `var(--bg-visual-violet-1)` | `#DDE3F9` |\n| `violet-2` | `var(--bg-visual-violet-2)` | `#F1E9FF` |\n\n### shadowColors\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `xs-1` | `var(--shadow-xs-1)` | `#2764D933` |\n| `xs-2` | `var(--shadow-xs-2)` | `#161B2D08` |\n\n### borderColors\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `accent-alpha` | `var(--stroke-accent-alpha)` | `#2764D933` |\n| `gradient-1` | `var(--stroke-gradient-1)` | `#5976E9` |\n| `gradient-2` | `var(--stroke-gradient-2)` | `#885DF2` |\n| `accent-focus` | `var(--stroke-accent-focus)` | `#6785FB` |\n| `error-alpha` | `var(--stroke-error-alpha)` | `#AE2F2F73` |\n| `control-disable-primary` | `var(--stroke-control-disable-primary)` | `#848E9C` |\n\n### textColors\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `warning-icon` | `var(--text-warning-icon)` | `#EEC840` |\n| `green-1` | `var(--text-visual-green-1)` | `#059669` |\n| `green-2` | `var(--text-visual-green-2)` | `#0D6E72` |\n| `green-3` | `var(--text-visual-green-3)` | `#065F46` |\n| `brown-1` | `var(--text-visual-brown-1)` | `#D36817` |\n| `brown-2` | `var(--text-visual-brown-2)` | `#B45309` |\n| `violet-1` | `var(--text-visual-violet-1)` | `#7C3AED` |\n| `violet-2` | `var(--text-visual-violet-2)` | `#3730B7` |\n| `control-permanent` | `var(--text-control-permanent)` | `#FCFCFC` |\n| `control-inverted` | `var(--text-control-inverted)` | `#FCFCFC` |\n| `control-disable-primary` | `var(--text-control-disable-primary)` | `#848E9C` |\n| `control-disable-secondary` | `var(--text-control-disable-secondary)` | `#DCE0E8` |\n| `control-accent-hover` | `var(--text-control-accent-hover)` | `#5976E9` |\n| `control-accent-active` | `var(--text-control-accent-active)` | `#6785FB` |\n\n### backgroundsColorsToRemove\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `layer-0` | `var(--bg-layer-0)` | `#FCFCFC` |\n| `layer-1` | `var(--bg-layer-1)` | `#E0E6F0` |\n| `layer-2` | `var(--bg-layer-2)` | `#EEF1F7` |\n| `layer-3` | `var(--bg-layer-3)` | `#FCFCFC` |\n| `layer-4` | `var(--bg-layer-4)` | `#D1DBEA` |\n| `accent-primary-alpha` | `var(--bg-accent-primary-alpha)` | `#7DA4FF26` |\n| `accent-secondary-alpha` | `var(--bg-accent-secondary-alpha)` | `#37BABC2E` |\n| `accent-tertiary-alpha` | `var(--bg-accent-tertiary-alpha)` | `#A972FF2E` |\n| `accent-primary` | `var(--bg-accent-primary)` | `#5C8DEA` |\n| `accent-secondary` | `var(--bg-accent-secondary)` | `#37BABC` |\n| `red-400` | `var(--bg-red-400)` | `#F76464` |\n| `controls-accent-primary` | `var(--controls-bg-accent-primary)` | `#124ACE` |\n| `controls-accent-primary-hover` | `var(--controls-bg-accent-primary-hover)` | `#2656D9` |\n| `controls-accent-primary-active` | `var(--controls-bg-accent-primary-active)` | `#3664E2` |\n| `controls-accent-primary-alpha-active` | `var(--controls-bg-accent-primary-alpha-active)` | `#7DA4FF5C` |\n| `controls-accent-secondary-alpha-active` | `var(--controls-bg-accent-secondary-alpha-active)` | `#37BABC5C` |\n| `controls-accent-tertiary-alpha-active` | `var(--controls-bg-accent-tertiary-alpha-active)` | `#A972FF5C` |\n| `controls-error` | `var(--controls-bg-error)` | `#AE2F2F` |\n| `controls-error-hover` | `var(--controls-bg-error-hover)` | `#BF3939` |\n| `controls-error-active` | `var(--controls-bg-error-active)` | `#CC4545` |\n| `controls-error-alpha-active` | `var(--controls-bg-error-alpha-active)` | `#F764645C` |\n| `controls-disable-accent` | `var(--controls-bg-disable-accent)` | `#7C8293` |\n| `controls-disable` | `var(--controls-bg-disable)` | `#D1DBEA` |\n| `controls-neutral-hover` | `var(--controls-bg-neutral-hover)` | `#D1DBEA` |\n| `controls-neutral-active` | `var(--controls-bg-neutral-active)` | `#9FA6BD` |\n| `controls-accent-success-alpha-hover` | `var(--controls-bg-accent-success-alpha-hover)` | `#37BABC2E` |\n| `controls-accent-success-alpha-active` | `var(--controls-bg-accent-success-alpha-active)` | `#37BABC5C` |\n| `controls-enable-primary` | `var(--controls-enable-primary)` | `#FCFCFC` |\n\n### borderColorsToRemove\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `accent-primary` | `var(--stroke-accent-primary)` | `#124ACE` |\n| `accent-secondary` | `var(--stroke-accent-secondary)` | `#007274` |\n| `controls-accent` | `var(--controls-bg-accent)` | `#5C8DEA` |\n| `red-900` | `var(--red-900)` | `#402027` |\n\n### textColorsToRemove\n| Tailwind class suffix | CSS variable | Default value |\n|---|---|---|\n| `accent-primary` | `var(--text-accent-primary)` | `#7DA4FF` |\n| `accent-secondary` | `var(--text-accent-secondary)` | `#37BABC` |\n| `accent-tertiary` | `var(--text-accent-tertiary)` | `#A972FF` |\n| `controls-permanent` | `var(--controls-text-permanent)` | `#FCFCFC` |\n| `controls-accent-disable` | `var(--controls-text-accent-disable)` | `#D1DBEA` |\n| `controls-primary-disable` | `var(--controls-text-primary-disable)` | `#696E7C` |\n| `controls-secondary-disable` | `var(--controls-text-secondary-disable)` | `#9FA6BD` |\n| `controls-neutral` | `var(--controls-text-neutral)` | `#161B2D` |\n| `controls-accent-primary-hover` | `var(--controls-text-accent-primary-hover)` | `#3664E2` |\n| `controls-accent-primary-active` | `var(--controls-text-accent-primary-active)` | `#7DA4FF` |",
21
21
  "components": [
22
22
  {
23
23
  "name": "Spinner",
@@ -212,6 +212,12 @@
212
212
  "required": true,
213
213
  "description": "Message text to display inside the alert"
214
214
  },
215
+ {
216
+ "name": "action",
217
+ "type": "ReactNode",
218
+ "required": false,
219
+ "description": "Optional control (typically a small `Button`) rendered at the inline end, after the text and before the close button; the caller supplies its accessible name"
220
+ },
215
221
  {
216
222
  "name": "closable",
217
223
  "type": "boolean",
@@ -247,7 +253,7 @@
247
253
  }
248
254
  ],
249
255
  "examples": [
250
- "<Notification\n variant={NotificationVariant.Info}\n message=\"This is an info alert.\"\n/>\n\n<Notification\n variant={NotificationVariant.Success}\n title=\"Saved\"\n message=\"Changes saved successfully.\"\n/>\n\n<Notification\n variant={NotificationVariant.Error}\n closable\n message=\"Something went wrong.\"\n onClose={(e) => console.log('closed', e)}\n/>\n\n<Notification\n variant={NotificationVariant.Loading}\n title=\"Processing\"\n message=\"Please wait...\"\n/>\n\n<Notification\n variant={NotificationVariant.General}\n type={NotificationType.SectionMessage}\n title=\"Title\"\n message=\"Description text example\"\n/>"
256
+ "<Notification\n variant={NotificationVariant.Info}\n message=\"This is an info alert.\"\n/>\n\n<Notification\n variant={NotificationVariant.Success}\n title=\"Saved\"\n message=\"Changes saved successfully.\"\n/>\n\n<Notification\n variant={NotificationVariant.Error}\n closable\n message=\"Something went wrong.\"\n onClose={(e) => console.log('closed', e)}\n/>\n\n<Notification\n variant={NotificationVariant.Loading}\n title=\"Processing\"\n message=\"Please wait...\"\n/>\n\n<Notification\n variant={NotificationVariant.General}\n type={NotificationType.SectionMessage}\n title=\"Title\"\n message=\"Description text example\"\n/>\n\n<Notification\n variant={NotificationVariant.Error}\n type={NotificationType.SectionMessage}\n title=\"Couldn't finish this response\"\n message=\"Something went wrong. Try again in a moment.\"\n action={\n <Button\n variant={ButtonVariant.Neutral}\n appearance={ButtonAppearance.Outlined}\n size={ElementSize.Small}\n label=\"Try again\"\n onClick={handleRetry}\n />\n }\n/>"
251
257
  ],
252
258
  "sourceFile": "components/New/Notification/Notification.tsx"
253
259
  },
@@ -429,6 +435,12 @@
429
435
  "required": false,
430
436
  "description": "Callback fired with the next value when the selection changes"
431
437
  },
438
+ {
439
+ "name": "onBlur",
440
+ "type": "FocusEventHandler<HTMLInputElement>",
441
+ "required": false,
442
+ "description": "Called when the Calendar's input field loses focus, e.g. for on-blur validation"
443
+ },
432
444
  {
433
445
  "name": "labelProps",
434
446
  "type": "LabelProps",
@@ -491,6 +503,13 @@
491
503
  "type": "string",
492
504
  "required": false,
493
505
  "description": "Additional classes merged onto the trigger field, overriding conflicting defaults"
506
+ },
507
+ {
508
+ "name": "showTimezone",
509
+ "type": "boolean",
510
+ "required": false,
511
+ "defaultValue": "false",
512
+ "description": "Shows the viewer's timezone (e.g. `(GMT+01:00) Europe/Berlin`) at the trailing edge of the `time` field"
494
513
  }
495
514
  ],
496
515
  "examples": [
@@ -543,6 +562,71 @@
543
562
  ],
544
563
  "sourceFile": "components/New/FolderPath/FolderPath.tsx"
545
564
  },
565
+ {
566
+ "name": "Breadcrumbs",
567
+ "category": "Components_2_0",
568
+ "generation": "2.0",
569
+ "description": "A navigation trail: where the user is, and every level they can step back to.\naliases: Breadcrumb|NavigationPath|BreadcrumbTrail\nDesign system 2.0\n\nThe last item is the current page — drawn semibold and primary, and never a\ncontrol, since a link to the page you are already on does nothing. Every\nearlier item with an `href` or an `onClick` is a link; one with neither is\ndrawn as plain text, which is how a read-only location path is built.\n\nThe trail never wraps. Segments truncate instead, each revealing its full\nlabel in a tooltip only once it is actually clipped, and a trail longer than\n`maxVisibleItems` collapses its middle behind an ellipsis menu — the root and\nthe current page, the two segments that carry the most meaning, always stay\non screen.\n\na11y: an `<ol>` inside a named `<nav>`, with `aria-current=\"page\"` on the last\nsegment. Separators are decorative and hidden from assistive tech, so the\ntrail is announced as a list of links rather than a string of chevrons.\n\nThe trail is drawn at `dial-small-text` by default; `size` switches it to\n`dial-h2-text` for a trail that doubles as the page heading, where the\ntoken's own semibold weight applies to every segment.\n\nLabels are the caller's to translate; the two accessible names default to\nEnglish and take an override.",
570
+ "props": [
571
+ {
572
+ "name": "items",
573
+ "type": "BreadcrumbsItem[]",
574
+ "required": true,
575
+ "description": "The trail, outermost first; the last entry is the current page"
576
+ },
577
+ {
578
+ "name": "maxVisibleItems",
579
+ "type": "number",
580
+ "required": false,
581
+ "defaultValue": "DEFAULT_MAX_VISIBLE_ITEMS",
582
+ "description": "Segments drawn before the middle collapses behind an ellipsis menu"
583
+ },
584
+ {
585
+ "name": "size",
586
+ "type": "BreadcrumbsSize",
587
+ "required": false,
588
+ "defaultValue": "BreadcrumbsSize.Small",
589
+ "description": "The trail's type scale: `dial-small-text` or `dial-h2-text`"
590
+ },
591
+ {
592
+ "name": "separator",
593
+ "type": "ReactNode",
594
+ "required": false,
595
+ "defaultValue": "defaultSeparator",
596
+ "description": "Node drawn between two segments; defaults to a right chevron"
597
+ },
598
+ {
599
+ "name": "ariaLabel",
600
+ "type": "string",
601
+ "required": false,
602
+ "defaultValue": "'Breadcrumb'",
603
+ "description": "Accessible name for the `<nav>`"
604
+ },
605
+ {
606
+ "name": "overflowAriaLabel",
607
+ "type": "string",
608
+ "required": false,
609
+ "defaultValue": "'Show hidden path segments'",
610
+ "description": "Accessible name for the ellipsis button"
611
+ },
612
+ {
613
+ "name": "className",
614
+ "type": "string",
615
+ "required": false,
616
+ "description": "Additional CSS classes for the `<nav>`"
617
+ },
618
+ {
619
+ "name": "itemClassName",
620
+ "type": "string",
621
+ "required": false,
622
+ "description": "Additional CSS classes applied to every segment"
623
+ }
624
+ ],
625
+ "examples": [
626
+ "<Breadcrumbs\n ariaLabel={t('File path')}\n items={[\n { label: t('My files'), onClick: () => open('/') },\n { label: 'DK Test', onClick: () => open('/DK Test') },\n { label: 'DK Test with nested' },\n ]}\n/>"
627
+ ],
628
+ "sourceFile": "components/New/Breadcrumbs/Breadcrumbs.tsx"
629
+ },
546
630
  {
547
631
  "name": "DangerButton",
548
632
  "category": "Components_2_0",
@@ -1992,6 +2076,12 @@
1992
2076
  "required": false,
1993
2077
  "description": "Additional CSS classes applied to the floating overlay"
1994
2078
  },
2079
+ {
2080
+ "name": "listStyle",
2081
+ "type": "CSSProperties",
2082
+ "required": false,
2083
+ "description": "Inline style applied to the floating overlay, under the dropdown's own positioning styles"
2084
+ },
1995
2085
  {
1996
2086
  "name": "outsidePressIgnoreRef",
1997
2087
  "type": "RefObject<HTMLElement | null>",
@@ -2243,6 +2333,13 @@
2243
2333
  "required": false,
2244
2334
  "description": "Fired when the header is clicked. Receives the next expanded state."
2245
2335
  },
2336
+ {
2337
+ "name": "caretPosition",
2338
+ "type": "AccordionCaretPosition",
2339
+ "required": false,
2340
+ "defaultValue": "AccordionCaretPosition.End",
2341
+ "description": "Where the header draws its caret: before or after the title."
2342
+ },
2246
2343
  {
2247
2344
  "name": "className",
2248
2345
  "type": "string",
@@ -2841,7 +2938,7 @@
2841
2938
  "name": "Tabs",
2842
2939
  "category": "Components_2_0",
2843
2940
  "generation": "2.0",
2844
- "description": "A horizontal row of tabs, underlining the active one and showing optional count badges.\naliases: TabRow|TabNavigation|TabBar\nDesign system 2.0\n\nFollows the ARIA tabs pattern with automatic activation: only the active tab is\nin the tab order, and the arrow keys move both focus and selection. `Home` and\n`End` jump to the first and last tab, and the arrows wrap around the ends.\nTabs marked `disabled` are greyed out, cannot be clicked, and are skipped by\nkeyboard navigation.\n\nThe component renders the tabs only; the panels stay with the consumer.",
2941
+ "description": "A row or rail of tabs, marking the active one and showing optional icons and count badges.\naliases: TabRow|TabNavigation|TabBar|VerticalTabs|SettingsNav|SideNav\nDesign system 2.0\n\nFollows the ARIA tabs pattern with automatic activation: only the active tab is\nin the tab order, and the arrow keys move both focus and selection. `Home` and\n`End` jump to the first and last tab, and the arrows wrap around the ends.\nTabs marked `disabled` are greyed out, cannot be clicked, and are skipped by\nkeyboard navigation.\n\n`TabOrientation.Horizontal` draws the default row: the active tab takes a\ngradient underline, and `ArrowLeft` / `ArrowRight` move along it.\n`TabOrientation.Vertical` draws the settings-page rail instead — full-width\nrows with the active one on a tinted pill rather than an underline, driven by\n`ArrowUp` / `ArrowDown`. The rail is the shape to reach for when the tabs\nlabel whole pages of a settings surface; the row, when they filter one.\n\n`className` lands on whichever element is outermost: the heading wrapper when\n`sectionLabel` is set, the `role=\"tablist\"` itself when it is not.\n\nThe component renders the tabs only; the panels stay with the consumer.",
2845
2942
  "props": [
2846
2943
  {
2847
2944
  "name": "tabs",
@@ -2861,6 +2958,19 @@
2861
2958
  "required": true,
2862
2959
  "description": "Fired with the tab's `id` when the user selects a tab."
2863
2960
  },
2961
+ {
2962
+ "name": "orientation",
2963
+ "type": "TabOrientation",
2964
+ "required": false,
2965
+ "defaultValue": "TabOrientation.Horizontal",
2966
+ "description": "Layout direction of the tab list."
2967
+ },
2968
+ {
2969
+ "name": "sectionLabel",
2970
+ "type": "string",
2971
+ "required": false,
2972
+ "description": "Heading rendered above the tabs, which also names the tab list."
2973
+ },
2864
2974
  {
2865
2975
  "name": "ariaLabel",
2866
2976
  "type": "string",
@@ -2871,20 +2981,92 @@
2871
2981
  "name": "className",
2872
2982
  "type": "string",
2873
2983
  "required": false,
2874
- "description": "Additional CSS classes for the tab list container."
2984
+ "description": "Additional CSS classes for the root element."
2985
+ },
2986
+ {
2987
+ "name": "tabListClassName",
2988
+ "type": "string",
2989
+ "required": false,
2990
+ "description": "Additional CSS classes for the `role=\"tablist\"`."
2875
2991
  },
2876
2992
  {
2877
2993
  "name": "tabClassName",
2878
2994
  "type": "string",
2879
2995
  "required": false,
2880
2996
  "description": "Additional CSS classes applied to every tab."
2997
+ },
2998
+ {
2999
+ "name": "sectionLabelClassName",
3000
+ "type": "string",
3001
+ "required": false,
3002
+ "description": "Additional CSS classes for the `sectionLabel` heading."
2881
3003
  }
2882
3004
  ],
2883
3005
  "examples": [
2884
- "<Tabs\n ariaLabel=\"Conversation views\"\n tabs={[\n { id: 'all', label: 'All', count: 12 },\n { id: 'shared', label: 'Shared with me' },\n ]}\n activeTabId={activeTabId}\n onTabChange={setActiveTabId}\n/>"
3006
+ "<Tabs\n ariaLabel=\"Conversation views\"\n tabs={[\n { id: 'all', label: 'All', count: 12 },\n { id: 'shared', label: 'Shared with me' },\n ]}\n activeTabId={activeTabId}\n onTabChange={setActiveTabId}\n/>",
3007
+ "<Tabs\norientation={TabOrientation.Vertical}\nsectionLabel={t('Settings')}\nclassName=\"w-[240px] shrink-0 border-e border-e-tertiary\"\ntabs={[\n{ id: 'preferences', label: t('Preferences'), icon: <IconSettings size={18} /> },\n{ id: 'usage', label: t('Usage'), icon: <IconChartBar size={18} /> },\n]}\nactiveTabId={activeTabId}\nonTabChange={setActiveTabId}\n/>"
2885
3008
  ],
2886
3009
  "sourceFile": "components/New/Tabs/Tabs.tsx"
2887
3010
  },
3011
+ {
3012
+ "name": "FilterChips",
3013
+ "category": "Components_2_0",
3014
+ "generation": "2.0",
3015
+ "description": "A row of filter chips that picks one value out of a few.\naliases: FilterChipRow|ChipTabs|TagTabs|FilterTabs\nDesign system 2.0\n\nThe chip-shaped sibling of the kit's other single-select rows, and the one to\nreach for when the options label a *subset of a list* — \"All\", \"Shared\",\n\"Mine\" above a history panel. `Tabs` underlines the active option and reads\nas navigation between panels; `SegmentedControl` sinks equal segments into a\ntrack and reads as a view switch. This one draws `TagAppearance.Selectable`\nchips: no fill until selected, and a semibold label once it is. Selecting a\nchip therefore widens it by the difference between the regular and semibold\nlabel — give the row `stretch`, or the chips a width, if that shift matters.\n\nEach chip is a toggle button carrying its state on `aria-pressed`, wrapped in\na named `role=\"group\"` — the pattern `Tag` is built for. That makes every\nchip its own tab stop, which is what a filter row wants: unlike a\n`radiogroup`, arrowing onto a chip never changes the filter by accident.\nName the group through `aria-label` or `aria-labelledby`, or the chips are\nannounced as a handful of unrelated toggles.\n\nThere is no disabled chip. An option the user must not pick is left out of\n`items` — a chip that renders but cannot be activated is a label and nothing\nelse, and `Tag` drops its button role when disabled, so it would not even\nannounce as unavailable.\n\nLabels are the caller's to translate — the component ships no English\ndefaults.",
3016
+ "props": [
3017
+ {
3018
+ "name": "items",
3019
+ "type": "FilterChipItem<T>[]",
3020
+ "required": true,
3021
+ "description": "Chips to render, in order; each needs a unique `value` and a `label`"
3022
+ },
3023
+ {
3024
+ "name": "value",
3025
+ "type": "T",
3026
+ "required": true,
3027
+ "description": "The `value` of the selected chip"
3028
+ },
3029
+ {
3030
+ "name": "onChange",
3031
+ "type": "(value: T) => void",
3032
+ "required": true,
3033
+ "description": "Called with the `value` of the chip the user picked. A click on the already-selected chip fires it again, so a row that clears back to a default handles that itself"
3034
+ },
3035
+ {
3036
+ "name": "stretch",
3037
+ "type": "boolean",
3038
+ "required": false,
3039
+ "defaultValue": "false",
3040
+ "description": "Grows the chips to share the row width equally instead of hugging their labels"
3041
+ },
3042
+ {
3043
+ "name": "className",
3044
+ "type": "string",
3045
+ "required": false,
3046
+ "description": "Additional classes for the row, e.g. its padding or `flex-wrap`"
3047
+ },
3048
+ {
3049
+ "name": "chipClassName",
3050
+ "type": "string",
3051
+ "required": false,
3052
+ "description": "Additional classes for every chip. A panel too narrow for the chips' default padding can tighten it here"
3053
+ },
3054
+ {
3055
+ "name": "'aria-label'",
3056
+ "type": "string",
3057
+ "required": false
3058
+ },
3059
+ {
3060
+ "name": "'aria-labelledby'",
3061
+ "type": "string",
3062
+ "required": false
3063
+ }
3064
+ ],
3065
+ "examples": [
3066
+ "<FilterChips\n aria-label={t('Filter chats')}\n value={tab}\n onChange={setTab}\n items={[\n { value: 'all', label: t('All') },\n { value: 'mine', label: t('My chats') },\n { value: 'shared', label: t('Shared') },\n ]}\n/>"
3067
+ ],
3068
+ "sourceFile": "components/New/FilterChips/FilterChips.tsx"
3069
+ },
2888
3070
  {
2889
3071
  "name": "FileDropzone",
2890
3072
  "category": "Components_2_0",
@@ -2919,63 +3101,315 @@
2919
3101
  "name": "onReject",
2920
3102
  "type": "(files: File[]) => void",
2921
3103
  "required": false,
2922
- "description": "Fired with dropped files that `accept` excluded."
3104
+ "description": "Fired with dropped files that `accept` excluded."
3105
+ },
3106
+ {
3107
+ "name": "accept",
3108
+ "type": "string",
3109
+ "required": false,
3110
+ "description": "Comma-separated `accept` tokens."
3111
+ },
3112
+ {
3113
+ "name": "multiple",
3114
+ "type": "boolean",
3115
+ "required": false,
3116
+ "defaultValue": "false",
3117
+ "description": "Whether more than one file can be selected."
3118
+ },
3119
+ {
3120
+ "name": "disabled",
3121
+ "type": "boolean",
3122
+ "required": false,
3123
+ "defaultValue": "false",
3124
+ "description": "Disables picking and dropping."
3125
+ },
3126
+ {
3127
+ "name": "errorText",
3128
+ "type": "string",
3129
+ "required": false,
3130
+ "description": "Error message rendered below the area."
3131
+ },
3132
+ {
3133
+ "name": "icon",
3134
+ "type": "ReactNode",
3135
+ "required": false,
3136
+ "description": "Icon rendered above the copy."
3137
+ },
3138
+ {
3139
+ "name": "id",
3140
+ "type": "string",
3141
+ "required": false,
3142
+ "description": "`id` of the underlying file input."
3143
+ },
3144
+ {
3145
+ "name": "ariaLabel",
3146
+ "type": "string",
3147
+ "required": false,
3148
+ "description": "Accessible name; needed when `label` carries no text."
3149
+ },
3150
+ {
3151
+ "name": "className",
3152
+ "type": "string",
3153
+ "required": false,
3154
+ "description": "Additional CSS classes for the drop area."
3155
+ }
3156
+ ],
3157
+ "examples": [
3158
+ "<FileDropzone\n label=\"Drag and drop it or click here to upload\"\n description=\"File formats .md, .zip and .skill\"\n accept=\".md,.zip,.skill\"\n onChange={(files) => upload(files)}\n onReject={() => setError('Unsupported file format')}\n/>"
3159
+ ],
3160
+ "sourceFile": "components/New/FileDropzone/FileDropzone.tsx"
3161
+ },
3162
+ {
3163
+ "name": "FileIcon",
3164
+ "category": "Components_2_0",
3165
+ "generation": "2.0",
3166
+ "description": "The icon of a file or folder row in a file manager: a file-type glyph picked\nby extension, or a folder, with an optional shared badge and loading state.\naliases: FileTypeIcon|EntityIcon\nDesign system 2.0\n\nThe root is a `role=\"img\"` whose name says what the item is, and that it is\nshared — the badge itself is drawn inside the image, so its tooltip is a\npointer-only hint and never the only place the state is conveyed. While\n`loading`, the root drops the role and holds a `Spinner`, which announces\nitself as a status. Pass `decorative` when the row already names the item.",
3167
+ "props": [
3168
+ {
3169
+ "name": "type",
3170
+ "type": "DialItemType",
3171
+ "required": true,
3172
+ "description": "Whether the item is a file or a folder"
3173
+ },
3174
+ {
3175
+ "name": "name",
3176
+ "type": "string",
3177
+ "required": true,
3178
+ "description": "Item name; a file's extension is read from it"
3179
+ },
3180
+ {
3181
+ "name": "fileExtension",
3182
+ "type": "string",
3183
+ "required": false,
3184
+ "description": "Extension overriding the one in `name`"
3185
+ },
3186
+ {
3187
+ "name": "shared",
3188
+ "type": "boolean",
3189
+ "required": false,
3190
+ "defaultValue": "false",
3191
+ "description": "Draws the shared badge"
3192
+ },
3193
+ {
3194
+ "name": "loading",
3195
+ "type": "boolean",
3196
+ "required": false,
3197
+ "defaultValue": "false",
3198
+ "description": "Replaces the glyph with a spinner"
3199
+ },
3200
+ {
3201
+ "name": "size",
3202
+ "type": "number",
3203
+ "required": false,
3204
+ "defaultValue": "DIAL_ICON_SIZE.MD",
3205
+ "description": "Glyph size in px"
3206
+ },
3207
+ {
3208
+ "name": "className",
3209
+ "type": "string",
3210
+ "required": false,
3211
+ "description": "Additional CSS classes for the root element"
3212
+ },
3213
+ {
3214
+ "name": "decorative",
3215
+ "type": "boolean",
3216
+ "required": false,
3217
+ "defaultValue": "false",
3218
+ "description": "Hides the icon from assistive technology"
3219
+ },
3220
+ {
3221
+ "name": "label",
3222
+ "type": "string",
3223
+ "required": false,
3224
+ "description": "Accessible name, overriding the generated one"
3225
+ },
3226
+ {
3227
+ "name": "loadingLabel",
3228
+ "type": "string",
3229
+ "required": false,
3230
+ "defaultValue": "'Loading'",
3231
+ "description": "Accessible name of the spinner"
3232
+ },
3233
+ {
3234
+ "name": "sharedIndicatorClassName",
3235
+ "type": "string",
3236
+ "required": false,
3237
+ "description": "Additional CSS classes for the shared badge"
3238
+ },
3239
+ {
3240
+ "name": "sharedIndicatorTooltip",
3241
+ "type": "ReactNode",
3242
+ "required": false,
3243
+ "description": "Tooltip shown over the shared badge"
3244
+ }
3245
+ ],
3246
+ "examples": [
3247
+ "<FileIcon name=\"report.pdf\" type={DialItemType.File} shared />\n<FileIcon name=\"Projects\" type={DialItemType.Folder} loading />"
3248
+ ],
3249
+ "sourceFile": "components/New/FileIcon/FileIcon.tsx"
3250
+ },
3251
+ {
3252
+ "name": "FileName",
3253
+ "category": "Components_2_0",
3254
+ "generation": "2.0",
3255
+ "description": "A file or folder name with its type icon, truncated with a tooltip when it\ndoes not fit.\naliases: FileDisplay|NameDisplay\nDesign system 2.0\n\nThe visible name already says what the item is, so the icon is decorative;\nthe shared state, which only the badge shows, is announced by a\nvisually-hidden `sharedLabel` after the name instead.\n\nWhile `loading` the icon is swapped for a `Spinner`, which is left in the\naccessibility tree so the busy state is announced.\n\nWith `details` the text switches to two lines — the name, then the metadata.",
3256
+ "props": [
3257
+ {
3258
+ "name": "name",
3259
+ "type": "string",
3260
+ "required": true,
3261
+ "description": "Full item name, with or without an extension"
3262
+ },
3263
+ {
3264
+ "name": "type",
3265
+ "type": "DialItemType",
3266
+ "required": false,
3267
+ "defaultValue": "DialItemType.File",
3268
+ "description": "Whether the item is a file or a folder"
3269
+ },
3270
+ {
3271
+ "name": "fileExtension",
3272
+ "type": "string",
3273
+ "required": false,
3274
+ "description": "Extension overriding the one in `name`"
3275
+ },
3276
+ {
3277
+ "name": "shared",
3278
+ "type": "boolean",
3279
+ "required": false,
3280
+ "defaultValue": "false",
3281
+ "description": "Draws the shared badge on the icon"
3282
+ },
3283
+ {
3284
+ "name": "loading",
3285
+ "type": "boolean",
3286
+ "required": false,
3287
+ "defaultValue": "false",
3288
+ "description": "Replaces the icon with a spinner"
3289
+ },
3290
+ {
3291
+ "name": "loadingLabel",
3292
+ "type": "string",
3293
+ "required": false,
3294
+ "description": "Accessible name of the spinner"
3295
+ },
3296
+ {
3297
+ "name": "iconSize",
3298
+ "type": "number",
3299
+ "required": false,
3300
+ "description": "Icon size in px"
3301
+ },
3302
+ {
3303
+ "name": "details",
3304
+ "type": "ReactNode",
3305
+ "required": false,
3306
+ "description": "Metadata under the name"
3307
+ },
3308
+ {
3309
+ "name": "isInvalidName",
3310
+ "type": "boolean",
3311
+ "required": false,
3312
+ "defaultValue": "false",
3313
+ "description": "Mutes the name, marking it as invalid"
3314
+ },
3315
+ {
3316
+ "name": "className",
3317
+ "type": "string",
3318
+ "required": false,
3319
+ "description": "Additional CSS classes for the root element"
3320
+ },
3321
+ {
3322
+ "name": "nameClassName",
3323
+ "type": "string",
3324
+ "required": false,
3325
+ "description": "Additional CSS classes for the name text"
3326
+ },
3327
+ {
3328
+ "name": "sharedIndicatorClassName",
3329
+ "type": "string",
3330
+ "required": false,
3331
+ "description": "Additional CSS classes for the shared badge"
3332
+ },
3333
+ {
3334
+ "name": "sharedIndicatorTooltip",
3335
+ "type": "ReactNode",
3336
+ "required": false,
3337
+ "description": "Tooltip shown over the shared badge"
2923
3338
  },
2924
3339
  {
2925
- "name": "accept",
3340
+ "name": "sharedLabel",
2926
3341
  "type": "string",
2927
3342
  "required": false,
2928
- "description": "Comma-separated `accept` tokens."
3343
+ "defaultValue": "'Shared'",
3344
+ "description": "Screen-reader text announcing the shared state"
2929
3345
  },
2930
3346
  {
2931
- "name": "multiple",
3347
+ "name": "hideTooltip",
2932
3348
  "type": "boolean",
2933
3349
  "required": false,
2934
3350
  "defaultValue": "false",
2935
- "description": "Whether more than one file can be selected."
3351
+ "description": "Suppresses the full-name tooltip"
2936
3352
  },
2937
3353
  {
2938
- "name": "disabled",
2939
- "type": "boolean",
3354
+ "name": "tooltipContent",
3355
+ "type": "ReactNode",
2940
3356
  "required": false,
2941
- "defaultValue": "false",
2942
- "description": "Disables picking and dropping."
2943
- },
3357
+ "description": "Shown instead of the full name while truncated"
3358
+ }
3359
+ ],
3360
+ "examples": [
3361
+ "<FileName name=\"Document.pdf\" shared />\n<FileName\n name=\"Document.pdf\"\n details={<span className=\"dial-tiny-text text-secondary\">24 KB · Jul 20</span>}\n/>"
3362
+ ],
3363
+ "sourceFile": "components/New/FileName/FileName.tsx"
3364
+ },
3365
+ {
3366
+ "name": "FolderName",
3367
+ "category": "Components_2_0",
3368
+ "generation": "2.0",
3369
+ "description": "A folder name with the folder icon, truncated with a tooltip when it does\nnot fit.\naliases: FolderDisplay|DirectoryName\nDesign system 2.0\n\nA `FileName` fixed to `DialItemType.Folder`, so it shares every behaviour of\nit — decorative icon, visually-hidden shared label, `details` line and the\n`loading` spinner. Its root carries `dial-kit-folder-name` on top of\n`dial-kit-file-name`.",
3370
+ "props": [],
3371
+ "examples": [
3372
+ "<FolderName name=\"Organization\" shared />\n<FolderName name=\"Uploads\" loading />"
3373
+ ],
3374
+ "sourceFile": "components/New/FolderName/FolderName.tsx"
3375
+ },
3376
+ {
3377
+ "name": "SharedEntityIndicator",
3378
+ "category": "Components_2_0",
3379
+ "generation": "2.0",
3380
+ "description": "A small arrow badge marking an entity as shared.\naliases: SharedIcon|AccessIndicator\nDesign system 2.0\n\nA `role=\"img\"` named by `label`, so it can stand on its own. Placed inside a\nlarger `role=\"img\"` — as `FileIcon` does — its name is folded into the\nparent's, which is why `FileIcon` names the shared state itself. The tooltip\nis a pointer-only hint: the badge is not focusable, and the tooltip never\nreaches assistive technology, so `label` is what carries the meaning.",
3381
+ "props": [
2944
3382
  {
2945
- "name": "errorText",
3383
+ "name": "label",
2946
3384
  "type": "string",
2947
3385
  "required": false,
2948
- "description": "Error message rendered below the area."
3386
+ "defaultValue": "'Shared'",
3387
+ "description": "Accessible name of the badge"
2949
3388
  },
2950
3389
  {
2951
- "name": "icon",
3390
+ "name": "tooltip",
2952
3391
  "type": "ReactNode",
2953
3392
  "required": false,
2954
- "description": "Icon rendered above the copy."
2955
- },
2956
- {
2957
- "name": "id",
2958
- "type": "string",
2959
- "required": false,
2960
- "description": "`id` of the underlying file input."
3393
+ "description": "Tooltip shown while the badge is hovered"
2961
3394
  },
2962
3395
  {
2963
- "name": "ariaLabel",
2964
- "type": "string",
3396
+ "name": "size",
3397
+ "type": "number",
2965
3398
  "required": false,
2966
- "description": "Accessible name; needed when `label` carries no text."
3399
+ "defaultValue": "12",
3400
+ "description": "Arrow size in px"
2967
3401
  },
2968
3402
  {
2969
3403
  "name": "className",
2970
3404
  "type": "string",
2971
3405
  "required": false,
2972
- "description": "Additional CSS classes for the drop area."
3406
+ "description": "Additional CSS classes for the badge"
2973
3407
  }
2974
3408
  ],
2975
3409
  "examples": [
2976
- "<FileDropzone\n label=\"Drag and drop it or click here to upload\"\n description=\"File formats .md, .zip and .skill\"\n accept=\".md,.zip,.skill\"\n onChange={(files) => upload(files)}\n onReject={() => setError('Unsupported file format')}\n/>"
3410
+ "<SharedEntityIndicator />\n<SharedEntityIndicator tooltip=\"Shared with 3 people\" className=\"absolute -bottom-0.5 -left-0.5\" />"
2977
3411
  ],
2978
- "sourceFile": "components/New/FileDropzone/FileDropzone.tsx"
3412
+ "sourceFile": "components/New/SharedEntityIndicator/SharedEntityIndicator.tsx"
2979
3413
  },
2980
3414
  {
2981
3415
  "name": "Tag",
@@ -3792,6 +4226,67 @@
3792
4226
  ],
3793
4227
  "sourceFile": "components/New/NoDataContent/NoDataContent.tsx"
3794
4228
  },
4229
+ {
4230
+ "name": "TransferQueue",
4231
+ "category": "Components_2_0",
4232
+ "generation": "2.0",
4233
+ "description": "A floating panel listing the files of an upload, download, import or export\nwith a live status per row.\naliases: UploadQueue|ImportQueue|ExportQueue|UploadProgress|ProgressToast\nDesign system 2.0\n\nEach row shows the file's `FileIcon` and name, and a trailing status: a\nspinner (with a cancel control on hover or focus) while in progress, a check\non success, a warning or error icon whose reason is both its tooltip and its\naccessible name, or \"Canceled\". The header carries the host's title, a count\nof failed items, and collapse and close controls. Collapsed while work runs,\nthe rows are replaced by one aggregate `ProgressBar`.\n\nClosing while an item is in progress or has failed asks for confirmation\nfirst. Once every item has succeeded the queue closes itself after\n`autoCloseDelay`; a warned or canceled row keeps it open so it can be read.\n\nThe root is a polite `role=\"status\"` live region. Positioning is left to\nthe host — wrap it in a fixed container at the screen corner.",
4234
+ "props": [
4235
+ {
4236
+ "name": "title",
4237
+ "type": "string",
4238
+ "required": true,
4239
+ "description": "Heading, rendered verbatim"
4240
+ },
4241
+ {
4242
+ "name": "items",
4243
+ "type": "TransferQueueItem[]",
4244
+ "required": true,
4245
+ "description": "Items to show, in display order"
4246
+ },
4247
+ {
4248
+ "name": "onClose",
4249
+ "type": "() => void",
4250
+ "required": true,
4251
+ "description": "Called when the queue should close"
4252
+ },
4253
+ {
4254
+ "name": "onCancelItem",
4255
+ "type": "(id: string) => void",
4256
+ "required": false,
4257
+ "description": "Called with an item's id when the user cancels it"
4258
+ },
4259
+ {
4260
+ "name": "labels",
4261
+ "type": "Partial<TransferQueueLabels>",
4262
+ "required": false,
4263
+ "description": "Overrides for the English default strings"
4264
+ },
4265
+ {
4266
+ "name": "autoCloseDelay",
4267
+ "type": "number",
4268
+ "required": false,
4269
+ "defaultValue": "TRANSFER_QUEUE_AUTO_CLOSE_DELAY_MS",
4270
+ "description": "Delay before an all-succeeded queue closes itself; `0` disables"
4271
+ },
4272
+ {
4273
+ "name": "className",
4274
+ "type": "string",
4275
+ "required": false,
4276
+ "description": "Additional CSS classes for the root panel"
4277
+ },
4278
+ {
4279
+ "name": "bodyClassName",
4280
+ "type": "string",
4281
+ "required": false,
4282
+ "description": "Additional CSS classes for the list of rows"
4283
+ }
4284
+ ],
4285
+ "examples": [
4286
+ "<TransferQueue\n title=\"Importing 2 files\"\n items={[\n { id: '1', name: 'report.pdf', status: TransferQueueItemStatus.Success },\n { id: '2', name: 'data.csv', status: TransferQueueItemStatus.InProgress, percent: 40 },\n ]}\n onClose={handleClose}\n onCancelItem={handleCancel}\n/>"
4287
+ ],
4288
+ "sourceFile": "components/New/TransferQueue/TransferQueue.tsx"
4289
+ },
3795
4290
  {
3796
4291
  "name": "Grid",
3797
4292
  "category": "Components_2_0",
@@ -5480,7 +5975,8 @@
5480
5975
  "examples": [
5481
5976
  "<DialFileIcon extension=\".pdf\" />\n<DialFileIcon extension=\"tsx\" size={28} stroke={1.25} />\n<DialFileIcon extension=\"unknown\" decorative /> // decorative, hidden from AT"
5482
5977
  ],
5483
- "sourceFile": "components/FileIcon/FileIcon.tsx"
5978
+ "sourceFile": "components/FileIcon/FileIcon.tsx",
5979
+ "supersededBy": "FileIcon"
5484
5980
  },
5485
5981
  {
5486
5982
  "name": "DialFormItem",
@@ -5598,7 +6094,8 @@
5598
6094
  "examples": [
5599
6095
  "<DialSharedEntityIndicator />\n<DialSharedEntityIndicator size={12} label=\"Opens in new window\" />"
5600
6096
  ],
5601
- "sourceFile": "components/SharedEntityIndicator/SharedEntityIndicator.tsx"
6097
+ "sourceFile": "components/SharedEntityIndicator/SharedEntityIndicator.tsx",
6098
+ "supersededBy": "SharedEntityIndicator"
5602
6099
  },
5603
6100
  {
5604
6101
  "name": "DialFileName",
@@ -5678,7 +6175,8 @@
5678
6175
  "examples": [
5679
6176
  "// Without details\n<DialFileName name=\"Document.pdf\" />\n\n// With details (file size and updated date)\n<DialFileName\n name=\"Document.pdf\"\n details={<span className=\"text-secondary\">24 KB · Jul 20, 2025</span>}\n/>"
5680
6177
  ],
5681
- "sourceFile": "components/FileName/FileName.tsx"
6178
+ "sourceFile": "components/FileName/FileName.tsx",
6179
+ "supersededBy": "FileName"
5682
6180
  },
5683
6181
  {
5684
6182
  "name": "DialFolderName",
@@ -5755,7 +6253,8 @@
5755
6253
  "examples": [
5756
6254
  "<DialFolderName name=\"Organization\" />"
5757
6255
  ],
5758
- "sourceFile": "components/FolderName/FolderName.tsx"
6256
+ "sourceFile": "components/FolderName/FolderName.tsx",
6257
+ "supersededBy": "FolderName"
5759
6258
  },
5760
6259
  {
5761
6260
  "name": "DialResizableContainer",
@@ -10375,6 +10874,47 @@
10375
10874
  "sourceFile": "components/New/Calendar/Calendar.tsx",
10376
10875
  "typeBody": "Date | string | null"
10377
10876
  },
10877
+ {
10878
+ "name": "BreadcrumbsSize",
10879
+ "kind": "enum",
10880
+ "members": [
10881
+ {
10882
+ "name": "Small",
10883
+ "value": "'small'",
10884
+ "comment": "14px `dial-small-text`, with a `dial-small-semi-text` current page."
10885
+ },
10886
+ {
10887
+ "name": "Heading",
10888
+ "value": "'heading'",
10889
+ "comment": "18px `dial-h2-text`, for a trail that doubles as the page heading. The\ntoken is semibold, so every segment is — including the current page."
10890
+ }
10891
+ ],
10892
+ "sourceFile": "types/breadcrumbs.ts"
10893
+ },
10894
+ {
10895
+ "name": "BreadcrumbsItem",
10896
+ "kind": "interface",
10897
+ "members": [
10898
+ {
10899
+ "name": "label",
10900
+ "value": "string"
10901
+ },
10902
+ {
10903
+ "name": "href?",
10904
+ "value": "string"
10905
+ },
10906
+ {
10907
+ "name": "onClick?",
10908
+ "value": "(event: MouseEvent<HTMLElement>) => void"
10909
+ },
10910
+ {
10911
+ "name": "icon?",
10912
+ "value": "ReactNode"
10913
+ }
10914
+ ],
10915
+ "sourceFile": "components/New/Breadcrumbs/Breadcrumbs.tsx",
10916
+ "description": "One step of the trail rendered by ."
10917
+ },
10378
10918
  {
10379
10919
  "name": "TextareaResize",
10380
10920
  "kind": "enum",
@@ -10398,6 +10938,24 @@
10398
10938
  ],
10399
10939
  "sourceFile": "components/New/Textarea/Textarea.tsx"
10400
10940
  },
10941
+ {
10942
+ "name": "AccordionCaretPosition",
10943
+ "kind": "enum",
10944
+ "members": [
10945
+ {
10946
+ "name": "Start",
10947
+ "value": "'start'",
10948
+ "comment": "Before the title, at the header's leading edge."
10949
+ },
10950
+ {
10951
+ "name": "End",
10952
+ "value": "'end'",
10953
+ "comment": "After the title, at the header's trailing edge."
10954
+ }
10955
+ ],
10956
+ "sourceFile": "types/accordion.ts",
10957
+ "description": "Where an `Accordion` header draws its caret."
10958
+ },
10401
10959
  {
10402
10960
  "name": "RadioGroupItem",
10403
10961
  "kind": "interface",
@@ -10472,6 +11030,10 @@
10472
11030
  "name": "count?",
10473
11031
  "value": "number"
10474
11032
  },
11033
+ {
11034
+ "name": "icon?",
11035
+ "value": "ReactNode"
11036
+ },
10475
11037
  {
10476
11038
  "name": "disabled?",
10477
11039
  "value": "boolean"
@@ -10480,6 +11042,25 @@
10480
11042
  "sourceFile": "components/New/Tabs/Tabs.tsx",
10481
11043
  "description": "A single tab entry rendered by ."
10482
11044
  },
11045
+ {
11046
+ "name": "FilterChipItem",
11047
+ "kind": "interface",
11048
+ "members": [
11049
+ {
11050
+ "name": "value",
11051
+ "value": "T"
11052
+ },
11053
+ {
11054
+ "name": "label",
11055
+ "value": "string"
11056
+ },
11057
+ {
11058
+ "name": "icon?",
11059
+ "value": "ReactNode"
11060
+ }
11061
+ ],
11062
+ "sourceFile": "components/New/FilterChips/FilterChips.tsx"
11063
+ },
10483
11064
  {
10484
11065
  "name": "TagAppearance",
10485
11066
  "kind": "enum",
@@ -10544,6 +11125,140 @@
10544
11125
  }
10545
11126
  ],
10546
11127
  "sourceFile": "types/tooltip.ts"
11128
+ },
11129
+ {
11130
+ "name": "TransferQueueItem",
11131
+ "kind": "interface",
11132
+ "members": [
11133
+ {
11134
+ "name": "id",
11135
+ "value": "string"
11136
+ },
11137
+ {
11138
+ "name": "name",
11139
+ "value": "string"
11140
+ },
11141
+ {
11142
+ "name": "status",
11143
+ "value": "TransferQueueItemStatus"
11144
+ },
11145
+ {
11146
+ "name": "percent?",
11147
+ "value": "number"
11148
+ },
11149
+ {
11150
+ "name": "message?",
11151
+ "value": "string"
11152
+ }
11153
+ ],
11154
+ "sourceFile": "components/New/TransferQueue/TransferQueue.tsx",
11155
+ "description": "One file (or other named unit of work) tracked by a `TransferQueue`."
11156
+ },
11157
+ {
11158
+ "name": "TransferQueueLabels",
11159
+ "kind": "interface",
11160
+ "members": [
11161
+ {
11162
+ "name": "cancelItemAriaLabel",
11163
+ "value": "(name: string) => string"
11164
+ },
11165
+ {
11166
+ "name": "itemProgressAriaLabel",
11167
+ "value": "(name: string) => string"
11168
+ },
11169
+ {
11170
+ "name": "successLabel",
11171
+ "value": "string"
11172
+ },
11173
+ {
11174
+ "name": "canceledLabel",
11175
+ "value": "string"
11176
+ },
11177
+ {
11178
+ "name": "failedMessage",
11179
+ "value": "string"
11180
+ },
11181
+ {
11182
+ "name": "warningMessage",
11183
+ "value": "string"
11184
+ },
11185
+ {
11186
+ "name": "queueProgressAriaLabel",
11187
+ "value": "string"
11188
+ },
11189
+ {
11190
+ "name": "queueProgressValueText",
11191
+ "value": "(completed: number, total: number) => string"
11192
+ },
11193
+ {
11194
+ "name": "collapseAriaLabel",
11195
+ "value": "string"
11196
+ },
11197
+ {
11198
+ "name": "expandAriaLabel",
11199
+ "value": "string"
11200
+ },
11201
+ {
11202
+ "name": "closeAriaLabel",
11203
+ "value": "string"
11204
+ },
11205
+ {
11206
+ "name": "closeConfirmHeader",
11207
+ "value": "string"
11208
+ },
11209
+ {
11210
+ "name": "closeConfirmDescriptionInProgress",
11211
+ "value": "string"
11212
+ },
11213
+ {
11214
+ "name": "closeConfirmDescriptionFailed",
11215
+ "value": "string"
11216
+ },
11217
+ {
11218
+ "name": "closeConfirmDescriptionMixed",
11219
+ "value": "string"
11220
+ },
11221
+ {
11222
+ "name": "closeConfirmLabel",
11223
+ "value": "string"
11224
+ },
11225
+ {
11226
+ "name": "closeCancelLabel",
11227
+ "value": "string"
11228
+ }
11229
+ ],
11230
+ "sourceFile": "components/New/TransferQueue/TransferQueue.tsx",
11231
+ "description": "Every user-visible string of `TransferQueue`."
11232
+ },
11233
+ {
11234
+ "name": "TransferQueueItemStatus",
11235
+ "kind": "enum",
11236
+ "members": [
11237
+ {
11238
+ "name": "InProgress",
11239
+ "value": "'inProgress'",
11240
+ "comment": "Queued or running; the row shows a spinner and, when cancelable, a cancel control."
11241
+ },
11242
+ {
11243
+ "name": "Success",
11244
+ "value": "'success'"
11245
+ },
11246
+ {
11247
+ "name": "Warning",
11248
+ "value": "'warning'",
11249
+ "comment": "Delivered, but not everything the user asked for made it through."
11250
+ },
11251
+ {
11252
+ "name": "Failed",
11253
+ "value": "'failed'"
11254
+ },
11255
+ {
11256
+ "name": "Canceled",
11257
+ "value": "'canceled'"
11258
+ }
11259
+ ],
11260
+ "sourceFile": "types/transfer-queue.ts",
11261
+ "description": "Lifecycle status of one item in a `TransferQueue`."
10547
11262
  }
10548
11263
  ],
10549
11264
  "hooks": [
@@ -10614,6 +11329,18 @@
10614
11329
  "description": "Tests a file against the value of a native `accept` attribute.\n\nThe file picker filters by `accept` on its own, but a drop does not: dropping\na `.png` onto an input that accepts `.md` hands the file over regardless. Any\ndrop target therefore has to re-check what it received.\n\nSupports all three `accept` token forms — an extension (`.md`), a full MIME\ntype (`text/markdown`) and a MIME wildcard (`image/*`). An empty or missing\n`accept` accepts everything, matching the attribute's own semantics.",
10615
11330
  "signature": "(file: File, accept?: string) => boolean"
10616
11331
  },
11332
+ {
11333
+ "name": "DEFAULT_TRANSFER_QUEUE_LABELS",
11334
+ "sourceFile": "components/New/TransferQueue/constants.ts",
11335
+ "description": "English defaults for every `TransferQueue` string; a host passes translations through `labels`.",
11336
+ "signature": "DEFAULT_TRANSFER_QUEUE_LABELS: TransferQueueLabels"
11337
+ },
11338
+ {
11339
+ "name": "TRANSFER_QUEUE_AUTO_CLOSE_DELAY_MS",
11340
+ "sourceFile": "components/New/TransferQueue/constants.ts",
11341
+ "description": "Delay before a queue whose items have all succeeded closes itself.",
11342
+ "signature": "TRANSFER_QUEUE_AUTO_CLOSE_DELAY_MS = 8000"
11343
+ },
10617
11344
  {
10618
11345
  "name": "GRID_SELECTION_COLUMN_ID",
10619
11346
  "sourceFile": "components/New/Grid/Grid.tsx",
@@ -10686,6 +11413,16 @@
10686
11413
  "sourceFile": "utils/flat-to-hierarchy-convertor.ts",
10687
11414
  "description": "Helper to create a root folder wrapping flat items.\nUseful when you want the entire tree to be nested under a single root.",
10688
11415
  "signature": "function wrapInRootFolder(flatItems: FlatFileItem[], rootName = 'Prompts', rootPath = 'prompts/public/', rootFolderId = 'root'): DialFile[]"
11416
+ },
11417
+ {
11418
+ "name": "getTimezoneLabel",
11419
+ "sourceFile": "utils/timezone.ts",
11420
+ "description": "Returns a timezone as a hint label for time-of-day fields, e.g.\n`(GMT+01:00) Europe/Berlin`: the UTC offset in effect at `options.date`\nrendered by `Intl` (`timeZoneName: 'longOffset'`), followed by the IANA\ntimezone name.",
11421
+ "signature": "({\n locale,\n timeZone,\n date = new Date(),\n}: TimezoneLabelOptions = {}) => string"
11422
+ },
11423
+ {
11424
+ "name": "TimezoneLabelOptions",
11425
+ "sourceFile": "utils/timezone.ts"
10689
11426
  }
10690
11427
  ],
10691
11428
  "constants": [
@@ -10738,6 +11475,11 @@
10738
11475
  "name": "NOT_ALLOWED_SPACES_REGEXP",
10739
11476
  "sourceFile": "constants/validation.ts",
10740
11477
  "signature": "NOT_ALLOWED_SPACES_REGEXP = new RegExp(NOT_ALLOWED_SPACES)"
11478
+ },
11479
+ {
11480
+ "name": "DIAL_KIT_CLASS",
11481
+ "sourceFile": "constants/public-class-names.ts",
11482
+ "signature": "DIAL_KIT_CLASS = {\n /* ── Feedback and status ───────────────────────────────────────────────── */\n /** The `role=\"status\"` root of a `Spinner`. */\n spinner: 'dial-kit-spinner',\n /**\n * The outermost element of a `ProgressBar`: the box wrapping its label,\n * track and readout — or the track itself, which is the root when the bar\n * has neither.\n */\n progressBar: 'dial-kit-progress-bar',\n /** The root of a `Skeleton`, wrapping its avatar and text rows. */\n skeleton: 'dial-kit-skeleton',\n /**\n * The `Notification` surface. Present on every wrapper too — the toast and\n * section-message variants of error, info, success, warning, loading and\n * general all render this component.\n */\n notification: 'dial-kit-notification',\n /** The empty-state root of `NoDataContent`. */\n noDataContent: 'dial-kit-no-data-content',\n /** The `role=\"status\"` panel of a `TransferQueue`: header, rows and aggregate bar. */\n transferQueue: 'dial-kit-transfer-queue',\n\n /* ── Text ──────────────────────────────────────────────────────────────── */\n /** The text element of a `Highlight`, which renders the matched query. */\n highlight: 'dial-kit-highlight',\n /** The caption line under a field, rendered by `CaptionText`. */\n captionText: 'dial-kit-caption-text',\n /**\n * A caption in its error variant — what `ErrorText` renders. Additive to\n * `captionText`, since one component draws both.\n */\n errorText: 'dial-kit-error-text',\n /** The `Label` root, which wraps the `label` element and its info button. */\n label: 'dial-kit-label',\n\n /* ── Containers ────────────────────────────────────────────────────────── */\n /** The `article` element of a `CardShell`. */\n cardShell: 'dial-kit-card-shell',\n /** The `aside` element of a `CollapsibleSidebar`. */\n collapsibleSidebar: 'dial-kit-collapsible-sidebar',\n /** The content box inside a `ResizableContainer`'s resize frame. */\n resizableContainer: 'dial-kit-resizable-container',\n /**\n * The `role=\"dialog\"` panel of a `Popup`. Its backdrop is reached through\n * `overlayClassName`.\n */\n popup: 'dial-kit-popup',\n /** The `Popup` panel of a `ConfirmationPopup`, additive to `popup`. */\n confirmationPopup: 'dial-kit-confirmation-popup',\n /** The root of an `Accordion`. */\n accordion: 'dial-kit-accordion',\n /** The breadcrumb root of a `FolderPath`. */\n folderPath: 'dial-kit-folder-path',\n /** The `nav` element of a `Breadcrumbs` trail. */\n breadcrumbs: 'dial-kit-breadcrumbs',\n /**\n * One segment of a `Breadcrumbs` trail: the link, button or plain span that\n * draws the label — not the `li`, which also holds the separator after it.\n */\n breadcrumbsItem: 'dial-kit-breadcrumbs-item',\n\n /* ── Menus and overlays ────────────────────────────────────────────────── */\n /**\n * The trigger wrapper of a `Dropdown`. Its floating panel is reached through\n * `listClassName`.\n */\n dropdown: 'dial-kit-dropdown',\n /**\n * The `role=\"none\"` item list inside a dropdown overlay — the box that holds\n * the rows and owns their vertical padding. Present in both generations, and\n * on a submenu's own list. It is *not* the floating panel.\n */\n dropdownList: 'dial-kit-dropdown-list',\n /**\n * One row of a floating overlay: a dropdown item, a `Select` option, a\n * submenu trigger, or a submenu child. It sits on the element that draws the\n * row box — so on the wrapper, not the inner button, for a row that has a\n * `rightControl` beside it.\n */\n menuItem: 'dial-kit-menuitem',\n /**\n * The trailing check of a chosen `MenuItemMark.Check` row. Decorative, like\n * the glyph itself — the row's `aria-checked` / `aria-selected` carries the\n * state.\n */\n menuItemCheck: 'dial-kit-menuitem-check',\n /** The primary icon of a `DialDropdownIcon` trigger. */\n dropdownIcon: 'dial-kit-dropdown-icon',\n /**\n * The caret badge of a `DialDropdownIcon` trigger — the round plate the\n * chevron sits on. Absent when `showCaret` is `false`.\n */\n dropdownIconCaret: 'dial-kit-dropdown-icon-caret',\n /** The bubble of a `Tooltip`, rendered by `TooltipContent` into a portal. */\n tooltip: 'dial-kit-tooltip',\n /** The panel of an `InteractiveTooltip` — the one whose content takes focus. */\n interactiveTooltip: 'dial-kit-interactive-tooltip',\n /** The text element of an `EllipsisTooltip`, which is also its trigger. */\n ellipsisTooltip: 'dial-kit-ellipsis-tooltip',\n\n /* ── Fields ────────────────────────────────────────────────────────────── */\n /** The `Search` field, additive to the `dial-kit-input` its `Input` carries. */\n search: 'dial-kit-search',\n /** The `PasswordInput` field, additive to `dial-kit-input`. */\n passwordInput: 'dial-kit-password-input',\n /** The `NumberInput` field, additive to `dial-kit-input`. */\n numberInput: 'dial-kit-number-input',\n /** The `TagInput` field, additive to `dial-kit-input`. */\n tagInput: 'dial-kit-tag-input',\n /** The root of a `Select`, wrapping its label, field and caption. */\n select: 'dial-kit-select',\n /** The trigger button of an `InlineSelect`. */\n inlineSelect: 'dial-kit-inline-select',\n /** The root of a `Calendar`, wrapping its label and date field. */\n calendar: 'dial-kit-calendar',\n /** The drop area of a `FileDropzone`. */\n fileDropzone: 'dial-kit-file-dropzone',\n /**\n * The root of a `FileIcon`, wrapping the file or folder glyph (or\n * its spinner while loading) and the shared badge.\n */\n fileIcon: 'dial-kit-file-icon',\n /** The row of a `FileName`: its type icon, the name and any details. */\n fileName: 'dial-kit-file-name',\n /** The `FileName` row of a `FolderName`, additive to `fileName`. */\n folderName: 'dial-kit-folder-name',\n /**\n * The `role=\"img\"` badge of a `SharedEntityIndicator` — standalone, or the\n * shared badge a `FileIcon` draws over its glyph.\n */\n sharedEntityIndicator: 'dial-kit-shared-entity-indicator',\n\n /* ── Controls ──────────────────────────────────────────────────────────── */\n /** The row of a `Switch`: the control and its label. */\n switch: 'dial-kit-switch',\n /** The row of a `Checkbox`: the box and its label. */\n checkbox: 'dial-kit-checkbox',\n /** The decorative box a `CheckboxBox` draws, in a checkbox or a menu row. */\n checkboxBox: 'dial-kit-checkbox-box',\n /** The row of a `Radio`: the circle and its label. */\n radio: 'dial-kit-radio',\n /** The root of a `RadioGroup`, wrapping its label and its radios. */\n radioGroup: 'dial-kit-radio-group',\n /**\n * The root of a `RadioGroupPopupField`, wrapping its label and the collapsed\n * field that opens the group.\n */\n radioGroupPopupField: 'dial-kit-radio-group-popup-field',\n /** The `role=\"radiogroup\"` track of a `SegmentedControl`. */\n segmentedControl: 'dial-kit-segmented-control',\n /** One segment of a `SegmentedControl`. */\n segmentedControlItem: 'dial-kit-segmented-control-item',\n /**\n * The outermost element of a `Tabs`: the box wrapping its heading and tab\n * list — or the `role=\"tablist\"` itself, which is the root when the tabs\n * carry no `sectionLabel`.\n */\n tabs: 'dial-kit-tabs',\n /**\n * The `role=\"tablist\"` holding the tabs, in either orientation. Additive to\n * `tabs` when there is no heading above it, since one element is then both.\n */\n tabList: 'dial-kit-tab-list',\n /**\n * One tab inside `Tabs`, in either orientation. The selected tab of a\n * horizontal row keeps its own `dial-kit-tab-selected-underline`.\n */\n tab: 'dial-kit-tab',\n /**\n * The selected tab, additive to `tab`. A horizontal row draws its selection\n * with `dial-kit-tab-selected-underline`, which carries the gradient rule;\n * this one carries no declarations and marks the selected tab in either\n * orientation.\n */\n tabSelected: 'dial-kit-tab-selected',\n /** The `sectionLabel` heading above a `Tabs`. Absent when there is none. */\n tabsSectionLabel: 'dial-kit-tabs-section-label',\n /**\n * The `role=\"group\"` row of a `FilterChips`. Its chips are `Tag` pills, so\n * they carry `dial-kit-tag` and have no entry of their own.\n */\n filterChips: 'dial-kit-filter-chips',\n /** A `Tag` pill, wherever it is rendered — including a `TagInput`'s rows. */\n tag: 'dial-kit-tag',\n /**\n * A `ToggleIconButton`, additive to the `dial-kit-base-icon-button` it\n * already carries.\n */\n toggleIconButton: 'dial-kit-toggle-icon-button',\n /** A `CloseButton`, additive to `dial-kit-base-icon-button`. */\n closeButton: 'dial-kit-close-button',\n /** An `InfoButton`, additive to `dial-kit-base-icon-button`. */\n infoButton: 'dial-kit-info-button',\n /**\n * The wrapper of a `ButtonDropdown` — its trigger carries\n * `dial-kit-base-button`.\n */\n buttonDropdown: 'dial-kit-button-dropdown',\n} as const"
10741
11483
  }
10742
11484
  ]
10743
11485
  }