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

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 (149) hide show
  1. package/README.md +185 -0
  2. package/dist/CHANGELOG.md +33 -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-CpSpVa0v.cjs +1 -0
  7. package/dist/{MarkdownEditor-jQ8nDJfx.cjs → MarkdownEditor-CPzMv3lE.cjs} +1 -1
  8. package/dist/{MarkdownEditor-DHn2pYOJ.cjs → MarkdownEditor-NYMcKLJy.cjs} +1 -1
  9. package/dist/MarkdownEditorContainer-DSL5-_hG.cjs +1 -0
  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/MarkdownEditor/MarkdownEditorContainer.js +18 -16
  17. package/dist/components/New/Accordion/Accordion.js +40 -38
  18. package/dist/components/New/Breadcrumbs/Breadcrumbs.js +159 -0
  19. package/dist/components/New/Breadcrumbs/constants.js +41 -0
  20. package/dist/components/New/ButtonDropdown/ButtonDropdown.js +7 -6
  21. package/dist/components/New/Calendar/Calendar.js +337 -289
  22. package/dist/components/New/Calendar/constants.js +5 -5
  23. package/dist/components/New/CaptionText/CaptionText.js +18 -15
  24. package/dist/components/New/CardShell/CardShell.js +5 -3
  25. package/dist/components/New/Checkbox/Checkbox.js +67 -56
  26. package/dist/components/New/Checkbox/CheckboxBox.js +5 -3
  27. package/dist/components/New/CloseButton/CloseButton.js +18 -16
  28. package/dist/components/New/CollapsibleSidebar/CollapsibleSidebar.js +39 -34
  29. package/dist/components/New/ConfirmationPopup/ConfirmationPopup.js +44 -39
  30. package/dist/components/New/Dropdown/Dropdown.js +112 -105
  31. package/dist/components/New/Dropdown/DropdownSubMenuItem.js +17 -17
  32. package/dist/components/New/Dropdown/constants.js +22 -17
  33. package/dist/components/New/EllipsisTooltip/EllipsisTooltip.js +20 -18
  34. package/dist/components/New/FileDropzone/FileDropzone.js +27 -25
  35. package/dist/components/New/FileIcon/FileIcon.js +55 -0
  36. package/dist/components/New/FileIcon/constants.js +134 -0
  37. package/dist/components/New/FileIcon/icons/FileGlyph.js +150 -0
  38. package/dist/components/New/FileIcon/icons/FolderGlyph.js +50 -0
  39. package/dist/components/New/FileName/FileName.js +78 -0
  40. package/dist/components/New/FilterChips/FilterChips.js +43 -0
  41. package/dist/components/New/FilterChips/constants.js +5 -0
  42. package/dist/components/New/FolderName/FolderName.js +16 -0
  43. package/dist/components/New/FolderPath/FolderPath.js +29 -28
  44. package/dist/components/New/Highlight/Highlight.js +23 -30
  45. package/dist/components/New/InfoButton/InfoButton.js +13 -11
  46. package/dist/components/New/InlineSelect/InlineSelect.js +43 -41
  47. package/dist/components/New/InteractiveTooltip/InteractiveTooltip.js +41 -39
  48. package/dist/components/New/InteractiveTooltip/constants.js +2 -2
  49. package/dist/components/New/Label/Label.js +13 -8
  50. package/dist/components/New/MenuItem/MenuItem.js +29 -27
  51. package/dist/components/New/MenuItem/constants.js +9 -8
  52. package/dist/components/New/NoDataContent/NoDataContent.js +21 -19
  53. package/dist/components/New/Notification/Notification.js +33 -29
  54. package/dist/components/New/NumberInput/NumberInput.js +42 -33
  55. package/dist/components/New/PasswordInput/PasswordInput.js +41 -35
  56. package/dist/components/New/Popup/Popup.js +46 -44
  57. package/dist/components/New/Popup/constants.js +3 -3
  58. package/dist/components/New/Radio/Radio.js +75 -64
  59. package/dist/components/New/RadioGroup/RadioGroup.js +76 -65
  60. package/dist/components/New/RadioGroupPopupField/RadioGroupPopupField.js +117 -106
  61. package/dist/components/New/ResizableContainer/ResizableContainer.js +42 -40
  62. package/dist/components/New/Search/Search.js +29 -27
  63. package/dist/components/New/SegmentedControl/SegmentedControl.js +29 -23
  64. package/dist/components/New/Select/Select.js +120 -109
  65. package/dist/components/New/Select/constants.js +23 -20
  66. package/dist/components/New/SharedEntityIndicator/SharedEntityIndicator.js +34 -0
  67. package/dist/components/New/Switch/Switch.js +69 -58
  68. package/dist/components/New/Tabs/Tabs.js +125 -61
  69. package/dist/components/New/Tag/Tag.js +42 -40
  70. package/dist/components/New/TagInput/TagInput.js +45 -43
  71. package/dist/components/New/ToggleIconButton/ToggleIconButton.js +26 -24
  72. package/dist/components/New/Tooltip/TooltipContent.js +11 -9
  73. package/dist/components/New/Tooltip/constants.js +1 -1
  74. package/dist/components/New/TransferQueue/TransferQueue.js +124 -0
  75. package/dist/components/New/TransferQueue/TransferQueueHeader.js +71 -0
  76. package/dist/components/New/TransferQueue/TransferQueueRow.js +119 -0
  77. package/dist/components/New/TransferQueue/constants.js +24 -0
  78. package/dist/components/New/constants/overlay.js +15 -9
  79. package/dist/components/Popup/constants.js +8 -8
  80. package/dist/components/ProgressBar/ProgressBar.js +45 -33
  81. package/dist/components/SchemaRenderer/components/SchemaAdditionalPropertiesEditor.js +46 -31
  82. package/dist/components/SchemaRenderer/components/SchemaKeyValueEditor.js +223 -135
  83. package/dist/components/SchemaRenderer/types.js +19 -8
  84. package/dist/components/SchemaRenderer/utils.js +121 -96
  85. package/dist/components/Skeleton/Skeleton.js +25 -19
  86. package/dist/components/Spinner/Spinner.js +7 -5
  87. package/dist/components/Tooltip/TooltipContent.js +11 -11
  88. package/dist/components-manifest.json +756 -39
  89. package/dist/constants/public-class-names.js +198 -0
  90. package/dist/dial-ui-kit.cjs +2 -2
  91. package/dist/dial-ui-kit.js +335 -310
  92. package/dist/editor-Bc9xzKuR.cjs +1 -0
  93. package/dist/editors.cjs +1 -1
  94. package/dist/file-manager.cjs +1 -1
  95. package/dist/grid.cjs +1 -1
  96. package/dist/index.css +2 -2
  97. package/dist/lazy-Cy9WobJf.cjs +1 -0
  98. package/dist/merge-classes-BEJXjzkx.cjs +1 -0
  99. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +419 -399
  100. package/dist/src/components/New/Breadcrumbs/Breadcrumbs.d.ts +94 -0
  101. package/dist/src/components/New/Breadcrumbs/constants.d.ts +60 -0
  102. package/dist/src/components/New/Calendar/Calendar.d.ts +14 -1
  103. package/dist/src/components/New/Calendar/constants.d.ts +1 -1
  104. package/dist/src/components/New/Dropdown/Dropdown.d.ts +9 -1
  105. package/dist/src/components/New/Dropdown/constants.d.ts +3 -0
  106. package/dist/src/components/New/FileIcon/FileIcon.d.ts +61 -0
  107. package/dist/src/components/New/FileIcon/constants.d.ts +16 -0
  108. package/dist/src/components/New/FileIcon/icons/FileGlyph.d.ts +18 -0
  109. package/dist/src/components/New/FileIcon/icons/FolderGlyph.d.ts +17 -0
  110. package/dist/src/components/New/FileName/FileName.d.ts +79 -0
  111. package/dist/src/components/New/FilterChips/FilterChips.d.ts +69 -0
  112. package/dist/src/components/New/FilterChips/constants.d.ts +13 -0
  113. package/dist/src/components/New/FolderName/FolderName.d.ts +37 -0
  114. package/dist/src/components/New/InteractiveTooltip/constants.d.ts +5 -4
  115. package/dist/src/components/New/Notification/Notification.d.ts +18 -0
  116. package/dist/src/components/New/Popup/constants.d.ts +1 -1
  117. package/dist/src/components/New/Select/constants.d.ts +3 -2
  118. package/dist/src/components/New/SharedEntityIndicator/SharedEntityIndicator.d.ts +35 -0
  119. package/dist/src/components/New/Tabs/Tabs.d.ts +54 -6
  120. package/dist/src/components/New/Tooltip/constants.d.ts +5 -3
  121. package/dist/src/components/New/TransferQueue/TransferQueue.d.ts +139 -0
  122. package/dist/src/components/New/TransferQueue/TransferQueueHeader.d.ts +16 -0
  123. package/dist/src/components/New/TransferQueue/TransferQueueRow.d.ts +10 -0
  124. package/dist/src/components/New/TransferQueue/constants.d.ts +6 -0
  125. package/dist/src/components/New/constants/overlay.d.ts +13 -0
  126. package/dist/src/components/Popup/constants.d.ts +1 -1
  127. package/dist/src/components/SchemaRenderer/types.d.ts +11 -0
  128. package/dist/src/components/SchemaRenderer/utils.d.ts +5 -1
  129. package/dist/src/constants/public-class-names.d.ts +189 -0
  130. package/dist/src/index.d.ts +20 -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/breadcrumbs.js +4 -0
  137. package/dist/types/transfer-queue.js +4 -0
  138. package/dist/use-file-manager-tabs-4s-dbnmu.cjs +3 -0
  139. package/dist/utils/merge-classes.js +12 -5
  140. package/dist/utils/sub-menu-floating.js +98 -54
  141. package/dist/utils/timezone.js +19 -0
  142. package/package.json +2 -2
  143. package/dist/DateCellRenderer-ssp7eaZY.cjs +0 -1
  144. package/dist/IconButton-DWqoaBWf.cjs +0 -1
  145. package/dist/JsonEditor-qv1Z0dLX.cjs +0 -1
  146. package/dist/MarkdownEditorContainer-Bzcnoemw.cjs +0 -1
  147. package/dist/lazy-tfN4sKhq.cjs +0 -1
  148. package/dist/merge-classes-Dipy1Ih1.cjs +0 -1
  149. 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.20",
3
+ "generatedAt": "2026-09-25T19:21:54.761Z",
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>",
@@ -2841,7 +2931,7 @@
2841
2931
  "name": "Tabs",
2842
2932
  "category": "Components_2_0",
2843
2933
  "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.",
2934
+ "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
2935
  "props": [
2846
2936
  {
2847
2937
  "name": "tabs",
@@ -2861,6 +2951,19 @@
2861
2951
  "required": true,
2862
2952
  "description": "Fired with the tab's `id` when the user selects a tab."
2863
2953
  },
2954
+ {
2955
+ "name": "orientation",
2956
+ "type": "TabOrientation",
2957
+ "required": false,
2958
+ "defaultValue": "TabOrientation.Horizontal",
2959
+ "description": "Layout direction of the tab list."
2960
+ },
2961
+ {
2962
+ "name": "sectionLabel",
2963
+ "type": "string",
2964
+ "required": false,
2965
+ "description": "Heading rendered above the tabs, which also names the tab list."
2966
+ },
2864
2967
  {
2865
2968
  "name": "ariaLabel",
2866
2969
  "type": "string",
@@ -2871,20 +2974,92 @@
2871
2974
  "name": "className",
2872
2975
  "type": "string",
2873
2976
  "required": false,
2874
- "description": "Additional CSS classes for the tab list container."
2977
+ "description": "Additional CSS classes for the root element."
2978
+ },
2979
+ {
2980
+ "name": "tabListClassName",
2981
+ "type": "string",
2982
+ "required": false,
2983
+ "description": "Additional CSS classes for the `role=\"tablist\"`."
2875
2984
  },
2876
2985
  {
2877
2986
  "name": "tabClassName",
2878
2987
  "type": "string",
2879
2988
  "required": false,
2880
2989
  "description": "Additional CSS classes applied to every tab."
2990
+ },
2991
+ {
2992
+ "name": "sectionLabelClassName",
2993
+ "type": "string",
2994
+ "required": false,
2995
+ "description": "Additional CSS classes for the `sectionLabel` heading."
2881
2996
  }
2882
2997
  ],
2883
2998
  "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/>"
2999
+ "<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/>",
3000
+ "<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
3001
  ],
2886
3002
  "sourceFile": "components/New/Tabs/Tabs.tsx"
2887
3003
  },
3004
+ {
3005
+ "name": "FilterChips",
3006
+ "category": "Components_2_0",
3007
+ "generation": "2.0",
3008
+ "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.",
3009
+ "props": [
3010
+ {
3011
+ "name": "items",
3012
+ "type": "FilterChipItem<T>[]",
3013
+ "required": true,
3014
+ "description": "Chips to render, in order; each needs a unique `value` and a `label`"
3015
+ },
3016
+ {
3017
+ "name": "value",
3018
+ "type": "T",
3019
+ "required": true,
3020
+ "description": "The `value` of the selected chip"
3021
+ },
3022
+ {
3023
+ "name": "onChange",
3024
+ "type": "(value: T) => void",
3025
+ "required": true,
3026
+ "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"
3027
+ },
3028
+ {
3029
+ "name": "stretch",
3030
+ "type": "boolean",
3031
+ "required": false,
3032
+ "defaultValue": "false",
3033
+ "description": "Grows the chips to share the row width equally instead of hugging their labels"
3034
+ },
3035
+ {
3036
+ "name": "className",
3037
+ "type": "string",
3038
+ "required": false,
3039
+ "description": "Additional classes for the row, e.g. its padding or `flex-wrap`"
3040
+ },
3041
+ {
3042
+ "name": "chipClassName",
3043
+ "type": "string",
3044
+ "required": false,
3045
+ "description": "Additional classes for every chip. A panel too narrow for the chips' default padding can tighten it here"
3046
+ },
3047
+ {
3048
+ "name": "'aria-label'",
3049
+ "type": "string",
3050
+ "required": false
3051
+ },
3052
+ {
3053
+ "name": "'aria-labelledby'",
3054
+ "type": "string",
3055
+ "required": false
3056
+ }
3057
+ ],
3058
+ "examples": [
3059
+ "<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/>"
3060
+ ],
3061
+ "sourceFile": "components/New/FilterChips/FilterChips.tsx"
3062
+ },
2888
3063
  {
2889
3064
  "name": "FileDropzone",
2890
3065
  "category": "Components_2_0",
@@ -2916,66 +3091,318 @@
2916
3091
  "description": "Fired with the accepted files."
2917
3092
  },
2918
3093
  {
2919
- "name": "onReject",
2920
- "type": "(files: File[]) => void",
3094
+ "name": "onReject",
3095
+ "type": "(files: File[]) => void",
3096
+ "required": false,
3097
+ "description": "Fired with dropped files that `accept` excluded."
3098
+ },
3099
+ {
3100
+ "name": "accept",
3101
+ "type": "string",
3102
+ "required": false,
3103
+ "description": "Comma-separated `accept` tokens."
3104
+ },
3105
+ {
3106
+ "name": "multiple",
3107
+ "type": "boolean",
3108
+ "required": false,
3109
+ "defaultValue": "false",
3110
+ "description": "Whether more than one file can be selected."
3111
+ },
3112
+ {
3113
+ "name": "disabled",
3114
+ "type": "boolean",
3115
+ "required": false,
3116
+ "defaultValue": "false",
3117
+ "description": "Disables picking and dropping."
3118
+ },
3119
+ {
3120
+ "name": "errorText",
3121
+ "type": "string",
3122
+ "required": false,
3123
+ "description": "Error message rendered below the area."
3124
+ },
3125
+ {
3126
+ "name": "icon",
3127
+ "type": "ReactNode",
3128
+ "required": false,
3129
+ "description": "Icon rendered above the copy."
3130
+ },
3131
+ {
3132
+ "name": "id",
3133
+ "type": "string",
3134
+ "required": false,
3135
+ "description": "`id` of the underlying file input."
3136
+ },
3137
+ {
3138
+ "name": "ariaLabel",
3139
+ "type": "string",
3140
+ "required": false,
3141
+ "description": "Accessible name; needed when `label` carries no text."
3142
+ },
3143
+ {
3144
+ "name": "className",
3145
+ "type": "string",
3146
+ "required": false,
3147
+ "description": "Additional CSS classes for the drop area."
3148
+ }
3149
+ ],
3150
+ "examples": [
3151
+ "<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/>"
3152
+ ],
3153
+ "sourceFile": "components/New/FileDropzone/FileDropzone.tsx"
3154
+ },
3155
+ {
3156
+ "name": "FileIcon",
3157
+ "category": "Components_2_0",
3158
+ "generation": "2.0",
3159
+ "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.",
3160
+ "props": [
3161
+ {
3162
+ "name": "type",
3163
+ "type": "DialItemType",
3164
+ "required": true,
3165
+ "description": "Whether the item is a file or a folder"
3166
+ },
3167
+ {
3168
+ "name": "name",
3169
+ "type": "string",
3170
+ "required": true,
3171
+ "description": "Item name; a file's extension is read from it"
3172
+ },
3173
+ {
3174
+ "name": "fileExtension",
3175
+ "type": "string",
3176
+ "required": false,
3177
+ "description": "Extension overriding the one in `name`"
3178
+ },
3179
+ {
3180
+ "name": "shared",
3181
+ "type": "boolean",
3182
+ "required": false,
3183
+ "defaultValue": "false",
3184
+ "description": "Draws the shared badge"
3185
+ },
3186
+ {
3187
+ "name": "loading",
3188
+ "type": "boolean",
3189
+ "required": false,
3190
+ "defaultValue": "false",
3191
+ "description": "Replaces the glyph with a spinner"
3192
+ },
3193
+ {
3194
+ "name": "size",
3195
+ "type": "number",
3196
+ "required": false,
3197
+ "defaultValue": "DIAL_ICON_SIZE.MD",
3198
+ "description": "Glyph size in px"
3199
+ },
3200
+ {
3201
+ "name": "className",
3202
+ "type": "string",
3203
+ "required": false,
3204
+ "description": "Additional CSS classes for the root element"
3205
+ },
3206
+ {
3207
+ "name": "decorative",
3208
+ "type": "boolean",
3209
+ "required": false,
3210
+ "defaultValue": "false",
3211
+ "description": "Hides the icon from assistive technology"
3212
+ },
3213
+ {
3214
+ "name": "label",
3215
+ "type": "string",
3216
+ "required": false,
3217
+ "description": "Accessible name, overriding the generated one"
3218
+ },
3219
+ {
3220
+ "name": "loadingLabel",
3221
+ "type": "string",
3222
+ "required": false,
3223
+ "defaultValue": "'Loading'",
3224
+ "description": "Accessible name of the spinner"
3225
+ },
3226
+ {
3227
+ "name": "sharedIndicatorClassName",
3228
+ "type": "string",
3229
+ "required": false,
3230
+ "description": "Additional CSS classes for the shared badge"
3231
+ },
3232
+ {
3233
+ "name": "sharedIndicatorTooltip",
3234
+ "type": "ReactNode",
3235
+ "required": false,
3236
+ "description": "Tooltip shown over the shared badge"
3237
+ }
3238
+ ],
3239
+ "examples": [
3240
+ "<FileIcon name=\"report.pdf\" type={DialItemType.File} shared />\n<FileIcon name=\"Projects\" type={DialItemType.Folder} loading />"
3241
+ ],
3242
+ "sourceFile": "components/New/FileIcon/FileIcon.tsx"
3243
+ },
3244
+ {
3245
+ "name": "FileName",
3246
+ "category": "Components_2_0",
3247
+ "generation": "2.0",
3248
+ "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.",
3249
+ "props": [
3250
+ {
3251
+ "name": "name",
3252
+ "type": "string",
3253
+ "required": true,
3254
+ "description": "Full item name, with or without an extension"
3255
+ },
3256
+ {
3257
+ "name": "type",
3258
+ "type": "DialItemType",
3259
+ "required": false,
3260
+ "defaultValue": "DialItemType.File",
3261
+ "description": "Whether the item is a file or a folder"
3262
+ },
3263
+ {
3264
+ "name": "fileExtension",
3265
+ "type": "string",
3266
+ "required": false,
3267
+ "description": "Extension overriding the one in `name`"
3268
+ },
3269
+ {
3270
+ "name": "shared",
3271
+ "type": "boolean",
3272
+ "required": false,
3273
+ "defaultValue": "false",
3274
+ "description": "Draws the shared badge on the icon"
3275
+ },
3276
+ {
3277
+ "name": "loading",
3278
+ "type": "boolean",
3279
+ "required": false,
3280
+ "defaultValue": "false",
3281
+ "description": "Replaces the icon with a spinner"
3282
+ },
3283
+ {
3284
+ "name": "loadingLabel",
3285
+ "type": "string",
3286
+ "required": false,
3287
+ "description": "Accessible name of the spinner"
3288
+ },
3289
+ {
3290
+ "name": "iconSize",
3291
+ "type": "number",
3292
+ "required": false,
3293
+ "description": "Icon size in px"
3294
+ },
3295
+ {
3296
+ "name": "details",
3297
+ "type": "ReactNode",
3298
+ "required": false,
3299
+ "description": "Metadata under the name"
3300
+ },
3301
+ {
3302
+ "name": "isInvalidName",
3303
+ "type": "boolean",
3304
+ "required": false,
3305
+ "defaultValue": "false",
3306
+ "description": "Mutes the name, marking it as invalid"
3307
+ },
3308
+ {
3309
+ "name": "className",
3310
+ "type": "string",
3311
+ "required": false,
3312
+ "description": "Additional CSS classes for the root element"
3313
+ },
3314
+ {
3315
+ "name": "nameClassName",
3316
+ "type": "string",
3317
+ "required": false,
3318
+ "description": "Additional CSS classes for the name text"
3319
+ },
3320
+ {
3321
+ "name": "sharedIndicatorClassName",
3322
+ "type": "string",
2921
3323
  "required": false,
2922
- "description": "Fired with dropped files that `accept` excluded."
3324
+ "description": "Additional CSS classes for the shared badge"
2923
3325
  },
2924
3326
  {
2925
- "name": "accept",
2926
- "type": "string",
3327
+ "name": "sharedIndicatorTooltip",
3328
+ "type": "ReactNode",
2927
3329
  "required": false,
2928
- "description": "Comma-separated `accept` tokens."
3330
+ "description": "Tooltip shown over the shared badge"
2929
3331
  },
2930
3332
  {
2931
- "name": "multiple",
2932
- "type": "boolean",
3333
+ "name": "sharedLabel",
3334
+ "type": "string",
2933
3335
  "required": false,
2934
- "defaultValue": "false",
2935
- "description": "Whether more than one file can be selected."
3336
+ "defaultValue": "'Shared'",
3337
+ "description": "Screen-reader text announcing the shared state"
2936
3338
  },
2937
3339
  {
2938
- "name": "disabled",
3340
+ "name": "hideTooltip",
2939
3341
  "type": "boolean",
2940
3342
  "required": false,
2941
3343
  "defaultValue": "false",
2942
- "description": "Disables picking and dropping."
3344
+ "description": "Suppresses the full-name tooltip"
2943
3345
  },
2944
3346
  {
2945
- "name": "errorText",
2946
- "type": "string",
3347
+ "name": "tooltipContent",
3348
+ "type": "ReactNode",
2947
3349
  "required": false,
2948
- "description": "Error message rendered below the area."
2949
- },
3350
+ "description": "Shown instead of the full name while truncated"
3351
+ }
3352
+ ],
3353
+ "examples": [
3354
+ "<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/>"
3355
+ ],
3356
+ "sourceFile": "components/New/FileName/FileName.tsx"
3357
+ },
3358
+ {
3359
+ "name": "FolderName",
3360
+ "category": "Components_2_0",
3361
+ "generation": "2.0",
3362
+ "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`.",
3363
+ "props": [],
3364
+ "examples": [
3365
+ "<FolderName name=\"Organization\" shared />\n<FolderName name=\"Uploads\" loading />"
3366
+ ],
3367
+ "sourceFile": "components/New/FolderName/FolderName.tsx"
3368
+ },
3369
+ {
3370
+ "name": "SharedEntityIndicator",
3371
+ "category": "Components_2_0",
3372
+ "generation": "2.0",
3373
+ "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.",
3374
+ "props": [
2950
3375
  {
2951
- "name": "icon",
2952
- "type": "ReactNode",
3376
+ "name": "label",
3377
+ "type": "string",
2953
3378
  "required": false,
2954
- "description": "Icon rendered above the copy."
3379
+ "defaultValue": "'Shared'",
3380
+ "description": "Accessible name of the badge"
2955
3381
  },
2956
3382
  {
2957
- "name": "id",
2958
- "type": "string",
3383
+ "name": "tooltip",
3384
+ "type": "ReactNode",
2959
3385
  "required": false,
2960
- "description": "`id` of the underlying file input."
3386
+ "description": "Tooltip shown while the badge is hovered"
2961
3387
  },
2962
3388
  {
2963
- "name": "ariaLabel",
2964
- "type": "string",
3389
+ "name": "size",
3390
+ "type": "number",
2965
3391
  "required": false,
2966
- "description": "Accessible name; needed when `label` carries no text."
3392
+ "defaultValue": "12",
3393
+ "description": "Arrow size in px"
2967
3394
  },
2968
3395
  {
2969
3396
  "name": "className",
2970
3397
  "type": "string",
2971
3398
  "required": false,
2972
- "description": "Additional CSS classes for the drop area."
3399
+ "description": "Additional CSS classes for the badge"
2973
3400
  }
2974
3401
  ],
2975
3402
  "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/>"
3403
+ "<SharedEntityIndicator />\n<SharedEntityIndicator tooltip=\"Shared with 3 people\" className=\"absolute -bottom-0.5 -left-0.5\" />"
2977
3404
  ],
2978
- "sourceFile": "components/New/FileDropzone/FileDropzone.tsx"
3405
+ "sourceFile": "components/New/SharedEntityIndicator/SharedEntityIndicator.tsx"
2979
3406
  },
2980
3407
  {
2981
3408
  "name": "Tag",
@@ -3792,6 +4219,67 @@
3792
4219
  ],
3793
4220
  "sourceFile": "components/New/NoDataContent/NoDataContent.tsx"
3794
4221
  },
4222
+ {
4223
+ "name": "TransferQueue",
4224
+ "category": "Components_2_0",
4225
+ "generation": "2.0",
4226
+ "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.",
4227
+ "props": [
4228
+ {
4229
+ "name": "title",
4230
+ "type": "string",
4231
+ "required": true,
4232
+ "description": "Heading, rendered verbatim"
4233
+ },
4234
+ {
4235
+ "name": "items",
4236
+ "type": "TransferQueueItem[]",
4237
+ "required": true,
4238
+ "description": "Items to show, in display order"
4239
+ },
4240
+ {
4241
+ "name": "onClose",
4242
+ "type": "() => void",
4243
+ "required": true,
4244
+ "description": "Called when the queue should close"
4245
+ },
4246
+ {
4247
+ "name": "onCancelItem",
4248
+ "type": "(id: string) => void",
4249
+ "required": false,
4250
+ "description": "Called with an item's id when the user cancels it"
4251
+ },
4252
+ {
4253
+ "name": "labels",
4254
+ "type": "Partial<TransferQueueLabels>",
4255
+ "required": false,
4256
+ "description": "Overrides for the English default strings"
4257
+ },
4258
+ {
4259
+ "name": "autoCloseDelay",
4260
+ "type": "number",
4261
+ "required": false,
4262
+ "defaultValue": "TRANSFER_QUEUE_AUTO_CLOSE_DELAY_MS",
4263
+ "description": "Delay before an all-succeeded queue closes itself; `0` disables"
4264
+ },
4265
+ {
4266
+ "name": "className",
4267
+ "type": "string",
4268
+ "required": false,
4269
+ "description": "Additional CSS classes for the root panel"
4270
+ },
4271
+ {
4272
+ "name": "bodyClassName",
4273
+ "type": "string",
4274
+ "required": false,
4275
+ "description": "Additional CSS classes for the list of rows"
4276
+ }
4277
+ ],
4278
+ "examples": [
4279
+ "<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/>"
4280
+ ],
4281
+ "sourceFile": "components/New/TransferQueue/TransferQueue.tsx"
4282
+ },
3795
4283
  {
3796
4284
  "name": "Grid",
3797
4285
  "category": "Components_2_0",
@@ -5480,7 +5968,8 @@
5480
5968
  "examples": [
5481
5969
  "<DialFileIcon extension=\".pdf\" />\n<DialFileIcon extension=\"tsx\" size={28} stroke={1.25} />\n<DialFileIcon extension=\"unknown\" decorative /> // decorative, hidden from AT"
5482
5970
  ],
5483
- "sourceFile": "components/FileIcon/FileIcon.tsx"
5971
+ "sourceFile": "components/FileIcon/FileIcon.tsx",
5972
+ "supersededBy": "FileIcon"
5484
5973
  },
5485
5974
  {
5486
5975
  "name": "DialFormItem",
@@ -5598,7 +6087,8 @@
5598
6087
  "examples": [
5599
6088
  "<DialSharedEntityIndicator />\n<DialSharedEntityIndicator size={12} label=\"Opens in new window\" />"
5600
6089
  ],
5601
- "sourceFile": "components/SharedEntityIndicator/SharedEntityIndicator.tsx"
6090
+ "sourceFile": "components/SharedEntityIndicator/SharedEntityIndicator.tsx",
6091
+ "supersededBy": "SharedEntityIndicator"
5602
6092
  },
5603
6093
  {
5604
6094
  "name": "DialFileName",
@@ -5678,7 +6168,8 @@
5678
6168
  "examples": [
5679
6169
  "// 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
6170
  ],
5681
- "sourceFile": "components/FileName/FileName.tsx"
6171
+ "sourceFile": "components/FileName/FileName.tsx",
6172
+ "supersededBy": "FileName"
5682
6173
  },
5683
6174
  {
5684
6175
  "name": "DialFolderName",
@@ -5755,7 +6246,8 @@
5755
6246
  "examples": [
5756
6247
  "<DialFolderName name=\"Organization\" />"
5757
6248
  ],
5758
- "sourceFile": "components/FolderName/FolderName.tsx"
6249
+ "sourceFile": "components/FolderName/FolderName.tsx",
6250
+ "supersededBy": "FolderName"
5759
6251
  },
5760
6252
  {
5761
6253
  "name": "DialResizableContainer",
@@ -10375,6 +10867,47 @@
10375
10867
  "sourceFile": "components/New/Calendar/Calendar.tsx",
10376
10868
  "typeBody": "Date | string | null"
10377
10869
  },
10870
+ {
10871
+ "name": "BreadcrumbsSize",
10872
+ "kind": "enum",
10873
+ "members": [
10874
+ {
10875
+ "name": "Small",
10876
+ "value": "'small'",
10877
+ "comment": "14px `dial-small-text`, with a `dial-small-semi-text` current page."
10878
+ },
10879
+ {
10880
+ "name": "Heading",
10881
+ "value": "'heading'",
10882
+ "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."
10883
+ }
10884
+ ],
10885
+ "sourceFile": "types/breadcrumbs.ts"
10886
+ },
10887
+ {
10888
+ "name": "BreadcrumbsItem",
10889
+ "kind": "interface",
10890
+ "members": [
10891
+ {
10892
+ "name": "label",
10893
+ "value": "string"
10894
+ },
10895
+ {
10896
+ "name": "href?",
10897
+ "value": "string"
10898
+ },
10899
+ {
10900
+ "name": "onClick?",
10901
+ "value": "(event: MouseEvent<HTMLElement>) => void"
10902
+ },
10903
+ {
10904
+ "name": "icon?",
10905
+ "value": "ReactNode"
10906
+ }
10907
+ ],
10908
+ "sourceFile": "components/New/Breadcrumbs/Breadcrumbs.tsx",
10909
+ "description": "One step of the trail rendered by ."
10910
+ },
10378
10911
  {
10379
10912
  "name": "TextareaResize",
10380
10913
  "kind": "enum",
@@ -10472,6 +11005,10 @@
10472
11005
  "name": "count?",
10473
11006
  "value": "number"
10474
11007
  },
11008
+ {
11009
+ "name": "icon?",
11010
+ "value": "ReactNode"
11011
+ },
10475
11012
  {
10476
11013
  "name": "disabled?",
10477
11014
  "value": "boolean"
@@ -10480,6 +11017,25 @@
10480
11017
  "sourceFile": "components/New/Tabs/Tabs.tsx",
10481
11018
  "description": "A single tab entry rendered by ."
10482
11019
  },
11020
+ {
11021
+ "name": "FilterChipItem",
11022
+ "kind": "interface",
11023
+ "members": [
11024
+ {
11025
+ "name": "value",
11026
+ "value": "T"
11027
+ },
11028
+ {
11029
+ "name": "label",
11030
+ "value": "string"
11031
+ },
11032
+ {
11033
+ "name": "icon?",
11034
+ "value": "ReactNode"
11035
+ }
11036
+ ],
11037
+ "sourceFile": "components/New/FilterChips/FilterChips.tsx"
11038
+ },
10483
11039
  {
10484
11040
  "name": "TagAppearance",
10485
11041
  "kind": "enum",
@@ -10544,6 +11100,140 @@
10544
11100
  }
10545
11101
  ],
10546
11102
  "sourceFile": "types/tooltip.ts"
11103
+ },
11104
+ {
11105
+ "name": "TransferQueueItem",
11106
+ "kind": "interface",
11107
+ "members": [
11108
+ {
11109
+ "name": "id",
11110
+ "value": "string"
11111
+ },
11112
+ {
11113
+ "name": "name",
11114
+ "value": "string"
11115
+ },
11116
+ {
11117
+ "name": "status",
11118
+ "value": "TransferQueueItemStatus"
11119
+ },
11120
+ {
11121
+ "name": "percent?",
11122
+ "value": "number"
11123
+ },
11124
+ {
11125
+ "name": "message?",
11126
+ "value": "string"
11127
+ }
11128
+ ],
11129
+ "sourceFile": "components/New/TransferQueue/TransferQueue.tsx",
11130
+ "description": "One file (or other named unit of work) tracked by a `TransferQueue`."
11131
+ },
11132
+ {
11133
+ "name": "TransferQueueLabels",
11134
+ "kind": "interface",
11135
+ "members": [
11136
+ {
11137
+ "name": "cancelItemAriaLabel",
11138
+ "value": "(name: string) => string"
11139
+ },
11140
+ {
11141
+ "name": "itemProgressAriaLabel",
11142
+ "value": "(name: string) => string"
11143
+ },
11144
+ {
11145
+ "name": "successLabel",
11146
+ "value": "string"
11147
+ },
11148
+ {
11149
+ "name": "canceledLabel",
11150
+ "value": "string"
11151
+ },
11152
+ {
11153
+ "name": "failedMessage",
11154
+ "value": "string"
11155
+ },
11156
+ {
11157
+ "name": "warningMessage",
11158
+ "value": "string"
11159
+ },
11160
+ {
11161
+ "name": "queueProgressAriaLabel",
11162
+ "value": "string"
11163
+ },
11164
+ {
11165
+ "name": "queueProgressValueText",
11166
+ "value": "(completed: number, total: number) => string"
11167
+ },
11168
+ {
11169
+ "name": "collapseAriaLabel",
11170
+ "value": "string"
11171
+ },
11172
+ {
11173
+ "name": "expandAriaLabel",
11174
+ "value": "string"
11175
+ },
11176
+ {
11177
+ "name": "closeAriaLabel",
11178
+ "value": "string"
11179
+ },
11180
+ {
11181
+ "name": "closeConfirmHeader",
11182
+ "value": "string"
11183
+ },
11184
+ {
11185
+ "name": "closeConfirmDescriptionInProgress",
11186
+ "value": "string"
11187
+ },
11188
+ {
11189
+ "name": "closeConfirmDescriptionFailed",
11190
+ "value": "string"
11191
+ },
11192
+ {
11193
+ "name": "closeConfirmDescriptionMixed",
11194
+ "value": "string"
11195
+ },
11196
+ {
11197
+ "name": "closeConfirmLabel",
11198
+ "value": "string"
11199
+ },
11200
+ {
11201
+ "name": "closeCancelLabel",
11202
+ "value": "string"
11203
+ }
11204
+ ],
11205
+ "sourceFile": "components/New/TransferQueue/TransferQueue.tsx",
11206
+ "description": "Every user-visible string of `TransferQueue`."
11207
+ },
11208
+ {
11209
+ "name": "TransferQueueItemStatus",
11210
+ "kind": "enum",
11211
+ "members": [
11212
+ {
11213
+ "name": "InProgress",
11214
+ "value": "'inProgress'",
11215
+ "comment": "Queued or running; the row shows a spinner and, when cancelable, a cancel control."
11216
+ },
11217
+ {
11218
+ "name": "Success",
11219
+ "value": "'success'"
11220
+ },
11221
+ {
11222
+ "name": "Warning",
11223
+ "value": "'warning'",
11224
+ "comment": "Delivered, but not everything the user asked for made it through."
11225
+ },
11226
+ {
11227
+ "name": "Failed",
11228
+ "value": "'failed'"
11229
+ },
11230
+ {
11231
+ "name": "Canceled",
11232
+ "value": "'canceled'"
11233
+ }
11234
+ ],
11235
+ "sourceFile": "types/transfer-queue.ts",
11236
+ "description": "Lifecycle status of one item in a `TransferQueue`."
10547
11237
  }
10548
11238
  ],
10549
11239
  "hooks": [
@@ -10614,6 +11304,18 @@
10614
11304
  "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
11305
  "signature": "(file: File, accept?: string) => boolean"
10616
11306
  },
11307
+ {
11308
+ "name": "DEFAULT_TRANSFER_QUEUE_LABELS",
11309
+ "sourceFile": "components/New/TransferQueue/constants.ts",
11310
+ "description": "English defaults for every `TransferQueue` string; a host passes translations through `labels`.",
11311
+ "signature": "DEFAULT_TRANSFER_QUEUE_LABELS: TransferQueueLabels"
11312
+ },
11313
+ {
11314
+ "name": "TRANSFER_QUEUE_AUTO_CLOSE_DELAY_MS",
11315
+ "sourceFile": "components/New/TransferQueue/constants.ts",
11316
+ "description": "Delay before a queue whose items have all succeeded closes itself.",
11317
+ "signature": "TRANSFER_QUEUE_AUTO_CLOSE_DELAY_MS = 8000"
11318
+ },
10617
11319
  {
10618
11320
  "name": "GRID_SELECTION_COLUMN_ID",
10619
11321
  "sourceFile": "components/New/Grid/Grid.tsx",
@@ -10686,6 +11388,16 @@
10686
11388
  "sourceFile": "utils/flat-to-hierarchy-convertor.ts",
10687
11389
  "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
11390
  "signature": "function wrapInRootFolder(flatItems: FlatFileItem[], rootName = 'Prompts', rootPath = 'prompts/public/', rootFolderId = 'root'): DialFile[]"
11391
+ },
11392
+ {
11393
+ "name": "getTimezoneLabel",
11394
+ "sourceFile": "utils/timezone.ts",
11395
+ "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.",
11396
+ "signature": "({\n locale,\n timeZone,\n date = new Date(),\n}: TimezoneLabelOptions = {}) => string"
11397
+ },
11398
+ {
11399
+ "name": "TimezoneLabelOptions",
11400
+ "sourceFile": "utils/timezone.ts"
10689
11401
  }
10690
11402
  ],
10691
11403
  "constants": [
@@ -10738,6 +11450,11 @@
10738
11450
  "name": "NOT_ALLOWED_SPACES_REGEXP",
10739
11451
  "sourceFile": "constants/validation.ts",
10740
11452
  "signature": "NOT_ALLOWED_SPACES_REGEXP = new RegExp(NOT_ALLOWED_SPACES)"
11453
+ },
11454
+ {
11455
+ "name": "DIAL_KIT_CLASS",
11456
+ "sourceFile": "constants/public-class-names.ts",
11457
+ "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
11458
  }
10742
11459
  ]
10743
11460
  }