@keboola/design 15.0.0 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/AGENTS.md +6 -5
  2. package/CHANGELOG.md +94 -0
  3. package/COMPONENT-API.md +62 -61
  4. package/dist/{AIKit-CaAW4GLx.js → AIKit-Cf5plya2.js} +381 -224
  5. package/dist/AIKit-Cf5plya2.js.map +1 -0
  6. package/dist/{Alert-Chz6KZ7e.js → Alert-DziS8n1H.js} +12 -19
  7. package/dist/{Alert-Chz6KZ7e.js.map → Alert-DziS8n1H.js.map} +1 -1
  8. package/dist/{AlertModal-D4AtpvLS.js → AlertModal-De04fFoy.js} +16 -26
  9. package/dist/AlertModal-De04fFoy.js.map +1 -0
  10. package/dist/{AppShell-C8V1KRr_.js → AppShell-BUa3U7-e.js} +6 -9
  11. package/dist/{AppShell-C8V1KRr_.js.map → AppShell-BUa3U7-e.js.map} +1 -1
  12. package/dist/{AutoSaveTextarea-BbMhC5Aq.js → AutoSaveTextarea-CXHOQSun.js} +4 -5
  13. package/dist/{AutoSaveTextarea-BbMhC5Aq.js.map → AutoSaveTextarea-CXHOQSun.js.map} +1 -1
  14. package/dist/{Badge-5GHIsgRS.js → Badge-CFRhducL.js} +18 -23
  15. package/dist/Badge-CFRhducL.js.map +1 -0
  16. package/dist/{BrandEditor-CTGtQUFZ.js → BrandEditor-hiLBX7az.js} +16 -23
  17. package/dist/{BrandEditor-CTGtQUFZ.js.map → BrandEditor-hiLBX7az.js.map} +1 -1
  18. package/dist/{BrandLogo-DkESE19K.js → BrandLogo-Dn7hhp2c.js} +4 -5
  19. package/dist/{BrandLogo-DkESE19K.js.map → BrandLogo-Dn7hhp2c.js.map} +1 -1
  20. package/dist/{Breadcrumb-B2YSNON4.js → Breadcrumb-uGFEIjFF.js} +17 -28
  21. package/dist/{Breadcrumb-B2YSNON4.js.map → Breadcrumb-uGFEIjFF.js.map} +1 -1
  22. package/dist/{Button-BNkyYU8u.js → Button-DbvGzEDb.js} +24 -20
  23. package/dist/Button-DbvGzEDb.js.map +1 -0
  24. package/dist/{Calendar-BnKi1kPu.js → Calendar-lJBTETbk.js} +752 -905
  25. package/dist/Calendar-lJBTETbk.js.map +1 -0
  26. package/dist/{Card-DxjGiqH8.js → Card-VIPfOVW5.js} +8 -14
  27. package/dist/{Card-DxjGiqH8.js.map → Card-VIPfOVW5.js.map} +1 -1
  28. package/dist/{Checkbox-CHDDJyAA.js → Checkbox-B2jLlyaO.js} +6 -8
  29. package/dist/{Checkbox-CHDDJyAA.js.map → Checkbox-B2jLlyaO.js.map} +1 -1
  30. package/dist/{Clipboard-DlwVZS1P.js → Clipboard-fAkDdpEu.js} +4 -5
  31. package/dist/{Clipboard-DlwVZS1P.js.map → Clipboard-fAkDdpEu.js.map} +1 -1
  32. package/dist/{ClipboardButton-B1Hr_n_Z.js → ClipboardButton-71Ugbl8c.js} +6 -8
  33. package/dist/{ClipboardButton-B1Hr_n_Z.js.map → ClipboardButton-71Ugbl8c.js.map} +1 -1
  34. package/dist/{CodeEditor-DVSPdfdo.js → CodeEditor-D_b-ZCng.js} +19 -31
  35. package/dist/{CodeEditor-DVSPdfdo.js.map → CodeEditor-D_b-ZCng.js.map} +1 -1
  36. package/dist/{Collapsible-DD4xTL75.js → Collapsible-zsXk4Vpp.js} +5 -8
  37. package/dist/{Collapsible-DD4xTL75.js.map → Collapsible-zsXk4Vpp.js.map} +1 -1
  38. package/dist/{ColorInput-B_eZIu39.js → ColorInput-Cjr1jkvy.js} +9 -12
  39. package/dist/{ColorInput-B_eZIu39.js.map → ColorInput-Cjr1jkvy.js.map} +1 -1
  40. package/dist/{ColorModeSwitch-B6UEzG0H.js → ColorModeSwitch-CuPYnJ2V.js} +5 -6
  41. package/dist/{ColorModeSwitch-B6UEzG0H.js.map → ColorModeSwitch-CuPYnJ2V.js.map} +1 -1
  42. package/dist/{Combobox-CaKqgstG.js → Combobox-DYjvYgl3.js} +38 -67
  43. package/dist/Combobox-DYjvYgl3.js.map +1 -0
  44. package/dist/{Command-DhXmqFLT.js → Command-BcTb6GsR.js} +14 -24
  45. package/dist/{Command-DhXmqFLT.js.map → Command-BcTb6GsR.js.map} +1 -1
  46. package/dist/{CopyField-D0Pg4Z0R.js → CopyField-CnwAvQz9.js} +16 -28
  47. package/dist/{CopyField-D0Pg4Z0R.js.map → CopyField-CnwAvQz9.js.map} +1 -1
  48. package/dist/{DateInput-BgbMDJkm.js → DateInput-DJNX7Vdx.js} +8 -10
  49. package/dist/{DateInput-BgbMDJkm.js.map → DateInput-DJNX7Vdx.js.map} +1 -1
  50. package/dist/{DatePicker-BXpDRo-R.js → DatePicker-CI59gF3S.js} +4 -5
  51. package/dist/{DatePicker-BXpDRo-R.js.map → DatePicker-CI59gF3S.js.map} +1 -1
  52. package/dist/{DateRangeInput-BW0-_jV0.js → DateRangeInput-B3g8cyS0.js} +8 -10
  53. package/dist/{DateRangeInput-BW0-_jV0.js.map → DateRangeInput-B3g8cyS0.js.map} +1 -1
  54. package/dist/{DateRangePicker-C4-DoWac.js → DateRangePicker-48yOB2qV.js} +9 -10
  55. package/dist/{DateRangePicker-C4-DoWac.js.map → DateRangePicker-48yOB2qV.js.map} +1 -1
  56. package/dist/{DiffView-Dy4z-n-1.js → DiffView-DITZdVbh.js} +7 -12
  57. package/dist/{DiffView-Dy4z-n-1.js.map → DiffView-DITZdVbh.js.map} +1 -1
  58. package/dist/{DropdownMenu-CcVbZ_5u.js → DropdownMenu-Ba9atqDa.js} +21 -37
  59. package/dist/DropdownMenu-Ba9atqDa.js.map +1 -0
  60. package/dist/{FieldBox-BrxLkY9C.js → FieldBox-DdSdJ3ZN.js} +6 -10
  61. package/dist/{FieldBox-BrxLkY9C.js.map → FieldBox-DdSdJ3ZN.js.map} +1 -1
  62. package/dist/{FieldItem-BHUqgSO1.js → FieldItem-D7eCMfMB.js} +6 -8
  63. package/dist/{FieldItem-BHUqgSO1.js.map → FieldItem-D7eCMfMB.js.map} +1 -1
  64. package/dist/{FieldItem-CPN1xjN5.d.ts → FieldItem-fqm3CNR8.d.ts} +7 -6
  65. package/dist/{FileUpload-BYFONpEl.js → FileUpload-DskvxhAr.js} +25 -45
  66. package/dist/{FileUpload-BYFONpEl.js.map → FileUpload-DskvxhAr.js.map} +1 -1
  67. package/dist/{Form-CAofWyMI.js → Form-BUNW7nlt.js} +24 -38
  68. package/dist/{Form-CAofWyMI.js.map → Form-BUNW7nlt.js.map} +1 -1
  69. package/dist/{FormGroup-V5kIgQRN.js → FormGroup-QJB21LKp.js} +12 -20
  70. package/dist/{FormGroup-V5kIgQRN.js.map → FormGroup-QJB21LKp.js.map} +1 -1
  71. package/dist/{FullScreenModal-DAvvlGOz.js → FullScreenModal-RzY5XxiG.js} +8 -12
  72. package/dist/{FullScreenModal-DAvvlGOz.js.map → FullScreenModal-RzY5XxiG.js.map} +1 -1
  73. package/dist/HoverCard-OGWKRXJ7.js +24 -0
  74. package/dist/HoverCard-OGWKRXJ7.js.map +1 -0
  75. package/dist/{InlineEdit-D4P0SvCB.js → InlineEdit-CXL0ZslO.js} +7 -8
  76. package/dist/{InlineEdit-D4P0SvCB.js.map → InlineEdit-CXL0ZslO.js.map} +1 -1
  77. package/dist/{InputGroup-CZv_7QlM.js → InputGroup-BWeanEo7.js} +9 -15
  78. package/dist/{InputGroup-CZv_7QlM.js.map → InputGroup-BWeanEo7.js.map} +1 -1
  79. package/dist/{Kbd-CflKthfu.js → Kbd-BprYCICe.js} +8 -13
  80. package/dist/{Kbd-CflKthfu.js.map → Kbd-BprYCICe.js.map} +1 -1
  81. package/dist/{MarkedText-DlmlJO0u.js → MarkedText-BrganZ_V.js} +4 -6
  82. package/dist/{MarkedText-DlmlJO0u.js.map → MarkedText-BrganZ_V.js.map} +1 -1
  83. package/dist/{MermaidDiagram-Te-5gOCU.js → MermaidDiagram-E3azndPk.js} +9 -11
  84. package/dist/{MermaidDiagram-Te-5gOCU.js.map → MermaidDiagram-E3azndPk.js.map} +1 -1
  85. package/dist/{Modal-CbUz-5YH.js → Modal-Cf_kPEBW.js} +14 -22
  86. package/dist/Modal-Cf_kPEBW.js.map +1 -0
  87. package/dist/{ModalTitle-cy0Ht9VY.js → ModalTitle-7vgpfc6B.js} +6 -9
  88. package/dist/ModalTitle-7vgpfc6B.js.map +1 -0
  89. package/dist/{MultiActionButtonGroup-Dzig87s1.js → MultiActionButtonGroup-8WQwL4UQ.js} +6 -8
  90. package/dist/{MultiActionButtonGroup-Dzig87s1.js.map → MultiActionButtonGroup-8WQwL4UQ.js.map} +1 -1
  91. package/dist/{Navbar-DHUS7XiU.js → Navbar-CRjxVboE.js} +13 -22
  92. package/dist/{Navbar-DHUS7XiU.js.map → Navbar-CRjxVboE.js.map} +1 -1
  93. package/dist/{OtpInput-CY8yCaJk.js → OtpInput-C5plPzGU.js} +7 -11
  94. package/dist/{OtpInput-CY8yCaJk.js.map → OtpInput-C5plPzGU.js.map} +1 -1
  95. package/dist/{PageHeader-CL1A6jFM.js → PageHeader-DosMyar2.js} +6 -10
  96. package/dist/{PageHeader-CL1A6jFM.js.map → PageHeader-DosMyar2.js.map} +1 -1
  97. package/dist/{PageLayout-C9aXTpqV.js → PageLayout-LcvJccOW.js} +5 -8
  98. package/dist/{PageLayout-C9aXTpqV.js.map → PageLayout-LcvJccOW.js.map} +1 -1
  99. package/dist/{PageToolbar-DJ5tdYla.js → PageToolbar-By2HznxO.js} +8 -10
  100. package/dist/{PageToolbar-DJ5tdYla.js.map → PageToolbar-By2HznxO.js.map} +1 -1
  101. package/dist/{Pagination-D27x5KmH.js → Pagination-DrXTrvfD.js} +11 -18
  102. package/dist/{Pagination-D27x5KmH.js.map → Pagination-DrXTrvfD.js.map} +1 -1
  103. package/dist/{Popconfirm-DwLCYNaF.js → Popconfirm-BJuDOHdv.js} +46 -25
  104. package/dist/Popconfirm-BJuDOHdv.js.map +1 -0
  105. package/dist/{Popover-DtUDwUVO.js → Popover-DhOPlWgF.js} +5 -7
  106. package/dist/Popover-DhOPlWgF.js.map +1 -0
  107. package/dist/{RadioGroup-B0TwHjBb.js → RadioGroup-B9oC8P15.js} +12 -18
  108. package/dist/{RadioGroup-B0TwHjBb.js.map → RadioGroup-B9oC8P15.js.map} +1 -1
  109. package/dist/{Resizable-D8zs0kcq.js → Resizable-Co-L3qg7.js} +4 -6
  110. package/dist/{Resizable-D8zs0kcq.js.map → Resizable-Co-L3qg7.js.map} +1 -1
  111. package/dist/{Search-vyZwGKMU.js → Search-OgaNjqQM.js} +26 -21
  112. package/dist/Search-OgaNjqQM.js.map +1 -0
  113. package/dist/{SearchInput-DyYXyw3u.js → SearchInput-eLS-uvOn.js} +18 -29
  114. package/dist/SearchInput-eLS-uvOn.js.map +1 -0
  115. package/dist/{SectionNav-tLK3iF6c.js → SectionNav-L81iJBo3.js} +11 -14
  116. package/dist/{SectionNav-tLK3iF6c.js.map → SectionNav-L81iJBo3.js.map} +1 -1
  117. package/dist/{Select-B22hB_-w.js → Select-DRdkdzBp.js} +29 -26
  118. package/dist/Select-DRdkdzBp.js.map +1 -0
  119. package/dist/{Sheet-0TWKTqid.js → Sheet-DVb4XoJ5.js} +13 -20
  120. package/dist/Sheet-DVb4XoJ5.js.map +1 -0
  121. package/dist/{Sidebar-C5hdANBU.js → Sidebar-DYvodJWN.js} +43 -75
  122. package/dist/{Sidebar-C5hdANBU.js.map → Sidebar-DYvodJWN.js.map} +1 -1
  123. package/dist/{Slider-DrcsM8_G.js → Slider-B9IskDxf.js} +8 -12
  124. package/dist/{Slider-DrcsM8_G.js.map → Slider-B9IskDxf.js.map} +1 -1
  125. package/dist/{Stepper-CQrUPVFL.js → Stepper-D7VspVEt.js} +11 -19
  126. package/dist/{Stepper-CQrUPVFL.js.map → Stepper-D7VspVEt.js.map} +1 -1
  127. package/dist/{Switch-DccpSpzC.js → Switch-DONWW7ju.js} +4 -6
  128. package/dist/{Switch-DccpSpzC.js.map → Switch-DONWW7ju.js.map} +1 -1
  129. package/dist/{Table-CilEvpMq.js → Table-BwgBm3hJ.js} +12 -21
  130. package/dist/{Table-CilEvpMq.js.map → Table-BwgBm3hJ.js.map} +1 -1
  131. package/dist/{Tabs-Ck4uWf8U.js → Tabs-DmJB4l_N.js} +9 -14
  132. package/dist/{Tabs-Ck4uWf8U.js.map → Tabs-DmJB4l_N.js.map} +1 -1
  133. package/dist/{TextInput-CR0_USaY.js → TextInput--1CfZybC.js} +8 -10
  134. package/dist/TextInput--1CfZybC.js.map +1 -0
  135. package/dist/{ThemeProvider-BTK7AL-T.js → ThemeProvider-BCHllN7d.js} +8 -13
  136. package/dist/{ThemeProvider-BTK7AL-T.js.map → ThemeProvider-BCHllN7d.js.map} +1 -1
  137. package/dist/{TimePicker-CoRpiEM3.js → TimePicker-CCV3SOw5.js} +4 -6
  138. package/dist/{TimePicker-CoRpiEM3.js.map → TimePicker-CCV3SOw5.js.map} +1 -1
  139. package/dist/{Timeline-DUXgByUE.js → Timeline-EMOpTLAT.js} +8 -13
  140. package/dist/{Timeline-DUXgByUE.js.map → Timeline-EMOpTLAT.js.map} +1 -1
  141. package/dist/{Toast-937n7n8i.js → Toast-BOTINeTX.js} +4 -6
  142. package/dist/{Toast-937n7n8i.js.map → Toast-BOTINeTX.js.map} +1 -1
  143. package/dist/{ToggleAllTooltip-DEjbWFoj.js → ToggleAllTooltip-BFmA6TXf.js} +4 -6
  144. package/dist/{ToggleAllTooltip-DEjbWFoj.js.map → ToggleAllTooltip-BFmA6TXf.js.map} +1 -1
  145. package/dist/{ToggleGroup-BOz1yyz6.js → ToggleGroup-DsDS7k70.js} +3 -4
  146. package/dist/{ToggleGroup-BOz1yyz6.js.map → ToggleGroup-DsDS7k70.js.map} +1 -1
  147. package/dist/{Workbench-CxgNCs3I.js → Workbench-4s0xP6XU.js} +18 -32
  148. package/dist/{Workbench-CxgNCs3I.js.map → Workbench-4s0xP6XU.js.map} +1 -1
  149. package/dist/{ZoomableSvg-DnFXo2L4.js → ZoomableSvg-BRPGgaWJ.js} +9 -11
  150. package/dist/{ZoomableSvg-DnFXo2L4.js.map → ZoomableSvg-BRPGgaWJ.js.map} +1 -1
  151. package/dist/charts.d.ts +0 -16
  152. package/dist/charts.js +10 -19
  153. package/dist/charts.js.map +1 -1
  154. package/dist/{classNames-DcGnTh2N.js → classNames-DkX30VJU.js} +2 -3
  155. package/dist/{classNames-DcGnTh2N.js.map → classNames-DkX30VJU.js.map} +1 -1
  156. package/dist/editors.d.ts +2 -16
  157. package/dist/editors.js +16 -26
  158. package/dist/editors.js.map +1 -1
  159. package/dist/{findLiteralMatches-DgGLzyG0.js → findLiteralMatches-BaLZTPtx.js} +2 -3
  160. package/dist/{findLiteralMatches-DgGLzyG0.js.map → findLiteralMatches-BaLZTPtx.js.map} +1 -1
  161. package/dist/flint.d.ts +0 -2
  162. package/dist/flint.js +10 -14
  163. package/dist/flint.js.map +1 -1
  164. package/dist/{highlightCode-D354tCXO.js → highlightCode-2spZP7ZA.js} +2 -3
  165. package/dist/{highlightCode-D354tCXO.js.map → highlightCode-2spZP7ZA.js.map} +1 -1
  166. package/dist/{icons-ZIeZXXS7.js → icons-DDR9dFSr.js} +21 -40
  167. package/dist/{icons-ZIeZXXS7.js.map → icons-DDR9dFSr.js.map} +1 -1
  168. package/dist/icons.d.ts +1 -1
  169. package/dist/icons.js +1 -2
  170. package/dist/{index-D-itZ3VP.d.ts → index-BljYaTWL.d.ts} +1 -39
  171. package/dist/index.d.ts +452 -1296
  172. package/dist/index.js +76 -74
  173. package/dist/internal/blocks/AIKit.js +1 -2
  174. package/dist/internal/blocks/AppShell.js +1 -2
  175. package/dist/internal/blocks/AuthLayout.js +3 -4
  176. package/dist/internal/blocks/AutoSaveTextarea.js +1 -2
  177. package/dist/internal/blocks/BrandEditor.js +1 -2
  178. package/dist/internal/blocks/ChartPanel.js +3 -4
  179. package/dist/internal/blocks/ChipEditor.js +6 -7
  180. package/dist/internal/blocks/ClipboardButton.js +1 -2
  181. package/dist/internal/blocks/ColorInput.js +1 -2
  182. package/dist/internal/blocks/ColorModeSwitch.js +1 -2
  183. package/dist/internal/blocks/Command.js +1 -2
  184. package/dist/internal/blocks/CopyField.js +1 -2
  185. package/dist/internal/blocks/DashboardHero.js +2 -3
  186. package/dist/internal/blocks/DateInput.js +1 -2
  187. package/dist/internal/blocks/DateRangeInput.js +1 -2
  188. package/dist/internal/blocks/DiagramShared/DiagramSkeleton.js +1 -2
  189. package/dist/internal/blocks/EmptyConfigurationActionCard.js +2 -3
  190. package/dist/internal/blocks/EmptyState.js +1 -2
  191. package/dist/internal/blocks/ErrorState.js +1 -2
  192. package/dist/internal/blocks/ExportMenu.js +5 -6
  193. package/dist/internal/blocks/FacebookButton.js +3 -4
  194. package/dist/internal/blocks/Form/connectors/ComboboxField.js +3 -4
  195. package/dist/internal/blocks/Form/connectors/MultiComboboxField.js +2 -3
  196. package/dist/internal/blocks/Form.js +3 -2
  197. package/dist/internal/blocks/FormGroup.js +1 -2
  198. package/dist/internal/blocks/GoogleButton.js +3 -4
  199. package/dist/internal/blocks/InlineEdit.js +1 -2
  200. package/dist/internal/blocks/MicrosoftButton.js +3 -4
  201. package/dist/internal/blocks/MultiActionButtonGroup.js +1 -2
  202. package/dist/internal/blocks/MultiCombobox.js +7 -8
  203. package/dist/internal/blocks/NumberInput.js +2 -3
  204. package/dist/internal/blocks/OtpInput.js +1 -2
  205. package/dist/internal/blocks/PageHeader.js +1 -2
  206. package/dist/internal/blocks/PageLayout.js +1 -2
  207. package/dist/internal/blocks/PageToolbar.js +1 -2
  208. package/dist/internal/blocks/PasswordInput.js +5 -6
  209. package/dist/internal/blocks/SearchInput.js +1 -2
  210. package/dist/internal/blocks/SearchInputWithNavigation.js +6 -7
  211. package/dist/internal/blocks/SectionNav.js +1 -2
  212. package/dist/internal/blocks/SplitButton.js +4 -5
  213. package/dist/internal/blocks/StatCard.js +4 -6
  214. package/dist/internal/blocks/StatCard.js.map +1 -1
  215. package/dist/internal/blocks/TextInput.js +1 -2
  216. package/dist/internal/blocks/Textarea.js +3 -4
  217. package/dist/internal/blocks/TimeInput.js +6 -7
  218. package/dist/internal/components/Alert.js +1 -2
  219. package/dist/internal/components/AlertModal.js +1 -2
  220. package/dist/internal/components/Avatar.js +3 -4
  221. package/dist/internal/components/Badge.js +1 -2
  222. package/dist/internal/components/BrandLogo.js +1 -2
  223. package/dist/internal/components/Breadcrumb.js +1 -2
  224. package/dist/internal/components/Button.js +1 -2
  225. package/dist/internal/components/ButtonGroup.js +2 -3
  226. package/dist/internal/components/Calendar.js +1 -2
  227. package/dist/internal/components/Card.js +1 -2
  228. package/dist/internal/components/Checkbox.js +1 -2
  229. package/dist/internal/components/Clipboard.js +1 -2
  230. package/dist/internal/components/Collapsible.js +1 -2
  231. package/dist/internal/components/CollapsiblePanel.js +5 -6
  232. package/dist/internal/components/Combobox.js +1 -2
  233. package/dist/internal/components/DatePicker.js +1 -2
  234. package/dist/internal/components/DateRangePicker.js +1 -2
  235. package/dist/internal/components/DiffView.js +1 -2
  236. package/dist/internal/components/DotsLoader.js +2 -3
  237. package/dist/internal/components/DropdownMenu.js +1 -2
  238. package/dist/internal/components/EmptySearchContent.js +1 -2
  239. package/dist/internal/components/FileUpload.js +1 -2
  240. package/dist/internal/components/FullScreenModal.js +1 -2
  241. package/dist/internal/components/HelpBlock.js +1 -2
  242. package/dist/internal/components/HoverCard.js +1 -2
  243. package/dist/internal/components/InputGroup.js +1 -2
  244. package/dist/internal/components/Kbd.js +1 -2
  245. package/dist/internal/components/Label.js +2 -3
  246. package/dist/internal/components/Link.js +2 -3
  247. package/dist/internal/components/MarkedText.js +1 -2
  248. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +3 -4
  249. package/dist/internal/components/MergeEditor/PaneHeader.js +1 -2
  250. package/dist/internal/components/MergeEditor/constants.js +1 -2
  251. package/dist/internal/components/MergeEditor/useMergeDiff.js +1 -2
  252. package/dist/internal/components/Modal.js +1 -2
  253. package/dist/internal/components/Navbar.js +1 -2
  254. package/dist/internal/components/Pagination.js +1 -2
  255. package/dist/internal/components/PanelWithDetails.js +4 -5
  256. package/dist/internal/components/Popconfirm.js +1 -2
  257. package/dist/internal/components/Popover.js +1 -2
  258. package/dist/internal/components/Progress.js +2 -3
  259. package/dist/internal/components/RadioGroup.js +1 -2
  260. package/dist/internal/components/Resizable.js +1 -2
  261. package/dist/internal/components/ScrollArea.js +3 -5
  262. package/dist/internal/components/ScrollArea.js.map +1 -1
  263. package/dist/internal/components/Search.js +1 -2
  264. package/dist/internal/components/Select.js +1 -2
  265. package/dist/internal/components/Separator.js +2 -3
  266. package/dist/internal/components/Sheet.js +1 -2
  267. package/dist/internal/components/Sidebar.js +1 -2
  268. package/dist/internal/components/Skeleton/Skeleton.js +2 -3
  269. package/dist/internal/components/Skeleton/SkeletonList.js +2 -3
  270. package/dist/internal/components/Slider.js +1 -2
  271. package/dist/internal/components/SpotlightBackdrop.js +3 -5
  272. package/dist/internal/components/SpotlightBackdrop.js.map +1 -1
  273. package/dist/internal/components/Stepper.js +1 -2
  274. package/dist/internal/components/Switch.js +1 -2
  275. package/dist/internal/components/Table.js +1 -2
  276. package/dist/internal/components/Tabs.js +1 -2
  277. package/dist/internal/components/ThemeProvider.js +2 -2
  278. package/dist/internal/components/TimePicker.js +1 -2
  279. package/dist/internal/components/Timeline.js +1 -2
  280. package/dist/internal/components/Toast.js +2 -2
  281. package/dist/internal/components/Toggle.js +2 -3
  282. package/dist/internal/components/ToggleGroup.js +1 -2
  283. package/dist/internal/components/Tooltip.js +1 -2
  284. package/dist/internal/components/Truncated.js +3 -4
  285. package/dist/internal/components/Workbench.js +1 -2
  286. package/dist/internal/components/ZoomableSvg.js +1 -2
  287. package/dist/internal/hooks/useAltDigitHotkey.js +1 -2
  288. package/dist/internal/hooks/useAutosizeInput.js +1 -2
  289. package/dist/internal/hooks/useScrollbarPosition.js +2 -3
  290. package/dist/internal/hooks/useStableCallback.js +1 -2
  291. package/dist/internal/hooks/useTimeout.js +18 -0
  292. package/dist/internal/hooks/useTimeout.js.map +1 -0
  293. package/dist/internal/utils/accessibleName.js +1 -2
  294. package/dist/internal/utils/mergeRefs.js +1 -2
  295. package/dist/internal/utils.js +3 -3
  296. package/dist/markdown-editor.d.ts +0 -4
  297. package/dist/markdown-editor.js +30 -49
  298. package/dist/markdown-editor.js.map +1 -1
  299. package/dist/mermaid.d.ts +0 -2
  300. package/dist/mermaid.js +1 -2
  301. package/dist/rjsf.d.ts +0 -8
  302. package/dist/rjsf.js +47 -78
  303. package/dist/rjsf.js.map +1 -1
  304. package/dist/{rolldown-runtime-Bdc48AWt.js → rolldown-runtime-BrwM56v-.js} +2 -3
  305. package/dist/{styles-T8xwr0sR.js → styles-BXXXosW_.js} +2 -3
  306. package/dist/{styles-T8xwr0sR.js.map → styles-BXXXosW_.js.map} +1 -1
  307. package/dist/{styles-DxazJ8Mz.js → styles-nwtCRF7y.js} +2 -3
  308. package/dist/{styles-DxazJ8Mz.js.map → styles-nwtCRF7y.js.map} +1 -1
  309. package/dist/styles.css +1 -1
  310. package/dist/{svgCache-Dhmbe-7i.js → svgCache-BzvN_fgr.js} +2 -3
  311. package/dist/{svgCache-Dhmbe-7i.js.map → svgCache-BzvN_fgr.js.map} +1 -1
  312. package/dist/{svgTransforms-Hnvev3Vs.js → svgTransforms-BBxxO9T6.js} +4 -6
  313. package/dist/{svgTransforms-Hnvev3Vs.js.map → svgTransforms-BBxxO9T6.js.map} +1 -1
  314. package/dist/testing.d.ts +0 -2
  315. package/dist/testing.js +2 -3
  316. package/dist/{themeScopeContext-CEVXbYvZ.js → themeScopeContext-BZGPdyG8.js} +6 -11
  317. package/dist/{themeScopeContext-CEVXbYvZ.js.map → themeScopeContext-BZGPdyG8.js.map} +1 -1
  318. package/dist/{themeTokens-DCeb62ap.js → themeTokens-B60cQtAY.js} +4 -6
  319. package/dist/{themeTokens-DCeb62ap.js.map → themeTokens-B60cQtAY.js.map} +1 -1
  320. package/dist/{toast-Y3cTMBW8.js → toast-Dzj1EFOb.js} +10 -17
  321. package/dist/{toast-Y3cTMBW8.js.map → toast-Dzj1EFOb.js.map} +1 -1
  322. package/dist/{types-BPcAjMG0.d.ts → types-CsZuwfxc.d.ts} +1 -3
  323. package/dist/{useControllableState-CUYXMsfz.js → useControllableState-BCvUOC6G.js} +2 -3
  324. package/dist/{useControllableState-CUYXMsfz.js.map → useControllableState-BCvUOC6G.js.map} +1 -1
  325. package/dist/{useElement-D-RjrGa4.js → useElement-Dcoo9Jlr.js} +2 -3
  326. package/dist/{useElement-D-RjrGa4.js.map → useElement-Dcoo9Jlr.js.map} +1 -1
  327. package/dist/{useMergeDiff-CvowEXJ1.js → useMergeDiff-DFIATaTw.js} +3 -5
  328. package/dist/{useMergeDiff-CvowEXJ1.js.map → useMergeDiff-DFIATaTw.js.map} +1 -1
  329. package/dist/{utils-DwC9u0tM.js → utils-DjFceY3H.js} +18 -34
  330. package/dist/utils-DjFceY3H.js.map +1 -0
  331. package/dist/vega.d.ts +1 -5
  332. package/dist/vega.js +3 -4
  333. package/dist/{vegaTheme-ISwGXvof.js → vegaTheme-BcTNRmVS.js} +3 -4
  334. package/dist/{vegaTheme-ISwGXvof.js.map → vegaTheme-BcTNRmVS.js.map} +1 -1
  335. package/dist/{vegaTokens-DCkvpIVE.js → vegaTokens-DnCcy7JY.js} +3 -4
  336. package/dist/{vegaTokens-DCkvpIVE.js.map → vegaTokens-DnCcy7JY.js.map} +1 -1
  337. package/package.json +40 -40
  338. package/src/styles.css +70 -4
  339. package/src/theme.css +117 -11
  340. package/dist/AIKit-CaAW4GLx.js.map +0 -1
  341. package/dist/AlertModal-D4AtpvLS.js.map +0 -1
  342. package/dist/Badge-5GHIsgRS.js.map +0 -1
  343. package/dist/Button-BNkyYU8u.js.map +0 -1
  344. package/dist/Calendar-BnKi1kPu.js.map +0 -1
  345. package/dist/Combobox-CaKqgstG.js.map +0 -1
  346. package/dist/DropdownMenu-CcVbZ_5u.js.map +0 -1
  347. package/dist/HoverCard-Cv5rmvJq.js +0 -26
  348. package/dist/HoverCard-Cv5rmvJq.js.map +0 -1
  349. package/dist/Modal-CbUz-5YH.js.map +0 -1
  350. package/dist/ModalTitle-cy0Ht9VY.js.map +0 -1
  351. package/dist/Popconfirm-DwLCYNaF.js.map +0 -1
  352. package/dist/Popover-DtUDwUVO.js.map +0 -1
  353. package/dist/Search-vyZwGKMU.js.map +0 -1
  354. package/dist/SearchInput-DyYXyw3u.js.map +0 -1
  355. package/dist/Select-B22hB_-w.js.map +0 -1
  356. package/dist/Sheet-0TWKTqid.js.map +0 -1
  357. package/dist/TextInput-CR0_USaY.js.map +0 -1
  358. package/dist/utils-DwC9u0tM.js.map +0 -1
package/AGENTS.md CHANGED
@@ -10,9 +10,10 @@ Working **on** the package (commands, layer boundary, token surface, the FA→Lu
10
10
 
11
11
  - **ESM only.** The package ships no CommonJS build — no `*.cjs` and no `require` condition in the `exports` map. Consume it from an ESM-capable bundler (Vite, webpack, Rollup, esbuild) or `import` it from Node. A `require()` resolves to the ESM entry, so it works only where the runtime can require ESM (Node ≥ 22.12) and throws `ERR_REQUIRE_ESM` on older ones.
12
12
  - **Always** import from the package root: `import { Button } from '@keboola/design'`.
13
- - App entry points **must** import styles. Two paths, pick by build setup:
14
- - `import '@keboola/design/styles'` — Tailwind-extending consumers. Your PostCSS+Tailwind processes `@tailwind` directives plus design's `dist/` in your content scan. Avoids duplicate preflights/utilities. **Default for any Keboola app.**
15
- - `import '@keboola/design/styles/compiled'` — drop-in pre-compiled CSS (~176 KB minified). No Tailwind setup required. Use only when you genuinely cannot run Tailwind.
13
+ - App entry points **must** import styles:
14
+ - `@import '@keboola/design/styles/compiled'` — design's pre-compiled CSS: component chrome, runtime `--*` tokens, scoped preflight. **Every Keboola app uses this**, after `@keboola/design/theme` and before its own `tailwindcss/utilities.css`, so app utilities win same-specificity ties — copy the entry from `apps/boilerplate/src/index.css`.
15
+ - `@import '@keboola/design/theme'` — the portable `@theme` tokens, custom utilities and variants, so an app's own Tailwind build can generate `tw:bg-primary`, `tw:scroll-fade-y`, … A token an app authors belongs here, not in design's `styles.css`.
16
+ - `@keboola/design/styles` — design's Tailwind source entry; no app in this repo imports it.
16
17
  - Icons: `import { ChevronDown } from '@keboola/design/icons'`.
17
18
  - Code editors: `import { CodeEditor, SqlEditor, MergeEditor } from '@keboola/design/editors'`. These pull the full CodeMirror bundle (~1.3 MB), so they ship from a dedicated subpath — keeping the root barrel CodeMirror-free for apps that don't edit code.
18
19
 
@@ -32,8 +33,8 @@ The root barrel (`@keboola/design`) is **not** the whole package. These live onl
32
33
  | `@keboola/design/markdown-editor` | `MarkdownEditor` | Markdown editing — **not** in the root barrel |
33
34
  | `@keboola/design/rjsf` | `RjsfSchemaEditor`, `useRootFormData` | JSON-Schema-driven config forms (RJSF) — pulls `@rjsf/*` + ajv |
34
35
  | `@keboola/design/testing` | `renderWithTheme` | Unit tests that need a component wrapped in `ThemeProvider` |
35
- | `@keboola/design/styles` | Tailwind-extending stylesheet | App entry, Tailwind consumers (**default**) |
36
- | `@keboola/design/styles/compiled` | Pre-compiled CSS (~176 KB) | App entry, when you cannot run Tailwind |
36
+ | `@keboola/design/styles/compiled` | Pre-compiled CSS | App entry (**default**) |
37
+ | `@keboola/design/theme` | Portable `@theme` tokens, utilities, variants | App entry, before `styles/compiled` |
37
38
 
38
39
  ### design ≠ shadcn — API deltas
39
40
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,99 @@
1
1
  # @keboola/design
2
2
 
3
+ ## 16.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - Drops exports no consumer imports.
8
+ - `@keboola/design`: `UsageStatsRing` and `DIAGRAM_LANGUAGES` are internal; `UsageStats` still renders the ring.
9
+ - `@keboola/agent-vocabulary`: no `MermaidDiagramIconName` type; `MERMAID_DIAGRAM_ICON_NAMES` stays.
10
+
11
+ ### Minor Changes
12
+
13
+ - `Badge`'s default `gray` now clears WCAG-AA (6.73:1), so every badge and `Combobox`/`MultiCombobox` chip without an explicit `color` is legible.
14
+ - **Visible change:** `gray` fills `neutral-500` instead of `neutral-400`, a darker grey in every app.
15
+ - `gray-darker` fills `neutral-600` (9.02:1) so it stays a step darker than `gray`.
16
+ - The solid contrast stories assert `gray`, `gray-darker` and the default `Badge`, in both schemes.
17
+
18
+ - `Button` takes `disabledReason`: it disables the button and shows the reason in a tooltip on hover and focus.
19
+ - The button stays focusable (`aria-disabled`, not `disabled`), so a keyboard user reaches the reason too.
20
+ - Clicks and form submits are blocked.
21
+ - The `not-disabled` variant also skips `aria-disabled="true"`, so a focusable unavailable control no longer lights up on hover.
22
+ - The `disabled-button-tooltip` recipe is replaced by this prop.
23
+
24
+ - `FieldItem`, `FieldItemProps` and `useFieldContext` are exported, so an app can write a form connector for a control the package does not ship
25
+ - Wrap the control in `FieldItem` and bind it with `useFieldContext`, inside `form.AppField`.
26
+ - For a control that is not a labelable element (`div[role]`, CodeMirror), pass `labelling="aria-labelledby"`.
27
+
28
+ - Popconfirm splits its footer evenly between Cancel and Confirm, sets its body text at 14/20, is at least 288 px wide, wraps its text at 384 px and widens past that only to fit its buttons, and adds `Popconfirm.Title`, `Popconfirm.Description` and `layout="centered"` on `Popconfirm.Content`
29
+
30
+ - `TextInput` and `field.TextField` accept `type="url"`
31
+ - The input renders as `<input type="url">`: URL keyboard on mobile, native URL check on submit.
32
+
33
+ - `Markdown` and `Markdown.Root` take `headingScale="compact"`: answer-sized headings. The default scale is unchanged.
34
+
35
+ - `PromptInput` and `PromptInputSubmit` take `sendIcon="arrow-up"` for an upward-arrow send button; the paper plane stays the default.
36
+
37
+ - `AnswerActions` takes `groupDivider` (a rule between Copy and the votes and the trailing controls) and `timestamp` (the time as a clock's tooltip, not inline). Both are off by default.
38
+
39
+ - `ChatNotice` takes `bordered={false}` for a notice on a tinted surface; the border stays by default.
40
+
41
+ - `Markdown` and `Markdown.Block` take `renderCitation`: a `[n]` in running text is drawn as whatever it returns for `n`. Code and links are skipped; without it `[n]` stays text.
42
+
43
+ ### Patch Changes
44
+
45
+ - `@keboola/design/theme` gives an app's own Tailwind build every custom utility it authors.
46
+ - `tw:animate-fade`, `tw:scroll-fade`, `tw:scroll-fade-x`, `tw:scroll-fade-y` and `tw:stroke-/fill-aigradient-600/700` generate from the theme.
47
+ - `tw:duration-brand` sets `--tw-duration`, so it holds alongside `tw:transition`.
48
+ - `tw:font-display` falls back through the full sans stack.
49
+ - The compiled stylesheet is otherwise unchanged; design's token scales live in CSS, and its Tailwind config carries prose typography only.
50
+
51
+ - `RjsfSchemaEditor` propagates a field reverted to the value the form opened with.
52
+ - The form-data-after-defaults baseline is ignored only until the first value reaches `onChange`.
53
+ - After that, any edit that differs from `value` reaches `onChange`, including a return to the opened state.
54
+
55
+ - `Select` can hold an item whose value is `''`, such as an "All" filter option
56
+ - Selected, that item shows its label in the trigger instead of the placeholder.
57
+ - Picking it calls `onValueChange('')`.
58
+ - With no such item, `''` still shows the placeholder.
59
+ - Not for a natively submitted `<form>` with `name`: the hidden `<select>` sends an internal value for that item, and `required` passes.
60
+
61
+ - Runtime dependencies require their latest patch and minor releases.
62
+ - `@keboola/design`: `@rjsf/*` 6.11, `pele` 1.10, `react-resizable-panels` 4.15, `tailwind-merge` 3.7, `vega-lite` 6.5, `@tanstack/react-virtual` 3.14.22, plus patch releases of `dompurify`, `sonner`, `react-day-picker`, `node-diff3` and `@lezer/highlight`.
63
+ - `@keboola/api-client`: `qs` 6.16.1.
64
+ - `@keboola/codemirror-lang-sql`: `@lezer/highlight` 1.2.5.
65
+
66
+ - `SearchInput` and `Search` call the latest handler when a debounced change fires. `Search` now debounces like `SearchInput`: clearing or unmounting drops a pending change, and a controlled `value` no longer overwrites text typed while a change is pending.
67
+
68
+ - Updated dependencies:
69
+ - @keboola/brand-registry@3.1.0
70
+ - @keboola/codemirror-lang-sql@0.7.4
71
+
72
+ ## 15.1.0
73
+
74
+ ### Minor Changes
75
+
76
+ - `Badge` `color` gains status values — `success`, `warning`, `info`, `destructive`, `neutral`, each with a pastel `-subtle` twin — read from the brand's status tokens, so a status badge re-skins with the brand and follows dark mode. Keep the hue colours for categorical labels. New pastel tokens `bg-<status>-subtle` / `text-<status>-subtle-foreground` back the `-subtle` values; set `--<status>-subtle` / `--<status>-subtle-foreground` to override them. `color="red-inverse"` adds the missing pastel error hue, with a dark-mode pair.
77
+
78
+ - `useTimeout(callback, delayMs)` runs a callback once after a delay and clears the timer on unmount; a new callback identity does not restart it (UT-5890)
79
+
80
+ - AIKit: `AttachmentChip` takes `lead` and `label`, `ContextChip` takes `number` and an optional `excerpt` and `onRemove`, `JumpToLatest` takes `tooltip`.
81
+
82
+ - `PromptInput` takes `shellClassName` for the element around its frame and `onFocusChange`; that element carries `data-focused` while focus is inside.
83
+
84
+ - `AnswerActions` takes `extraActions` (`{ id, label, icon, onSelect, disabled? }[]`), drawn in the style of copy and thumbs; `actions` stays for a raw node.
85
+
86
+ - `PromptInput` takes `mentionInsert`: the text a picked `@` mention leaves at the caret, in the same update that removes the token.
87
+
88
+ ### Patch Changes
89
+
90
+ - Dark mode sits quieter: solid `Badge` colours drop to a deeper rung and `Modal` gets a hairline edge.
91
+ - `Badge` `green`, `green-darker`, `blue`, `red`, `orange`, `amber`, `teal`, `purple` and `cyan` keep their light fill and take a deeper fill in dark (`green-darker` one rung deeper than `green`), white text where it clears 4.5:1.
92
+ - `Modal.Content` draws a hairline ring in dark, so its edge no longer depends on the scrim.
93
+ - `InlineStepLabel` meta text reads `muted-foreground` at full strength, which clears 4.5:1 in dark and reads clearer in light.
94
+
95
+ - `Modal`, `AlertModal`, `Sheet`, `HoverCard` and the `ZoomableSvg` fullscreen overlay share one layer with `DropdownMenu`, `Popover`, `Select` and `Combobox`: the `z-overlay` utility, backed by the `--z-index-overlay` theme token (`1055`). The one opened last paints on top, so a modal opened from a menu item covers that menu, and anything opened inside a modal sits above it. `Tooltip` (`z-[1060]`) stays above the layer.
96
+
3
97
  ## 15.0.0
4
98
 
5
99
  ### Major Changes
package/COMPONENT-API.md CHANGED
@@ -14,13 +14,14 @@ Source: `src/components/Button/Button.tsx`
14
14
 
15
15
  > Icons are composed as children, not an `icon` prop. Plus all native `<button>` attributes.
16
16
 
17
- | Prop | Type | Required | Default | Description |
18
- | ----------- | --------------------------------------------------------------------------------------------------------------------- | -------- | --------- | --------------------------------------------------------------------------------------------------------------------------- |
19
- | `asChild` | `boolean` | no | `false` | Render as a Radix `Slot` so the parent JSX (e.g. a `react-router` `<Link>`) becomes the button element. |
20
- | `block` | `boolean \| null` | no | `false` | |
21
- | `isLoading` | `boolean` | no | `false` | Shows a spinner in place of the leading icon, or before the label when there is none. The caller still controls `disabled`. |
22
- | `size` | `"small" \| "medium" \| "large" \| "icon-lg" \| "icon" \| "icon-sm" \| "icon-xs" \| "icon-2xs" \| "icon-3xs" \| null` | no | `medium` | |
23
- | `variant` | `"primary" \| "secondary" \| "kai" \| "danger" \| "outline" \| "invisible" \| "inline" \| null` | no | `primary` | |
17
+ | Prop | Type | Required | Default | Description |
18
+ | ---------------- | --------------------------------------------------------------------------------------------------------------------- | -------- | --------- | --------------------------------------------------------------------------------------------------------------------------- |
19
+ | `asChild` | `boolean` | no | `false` | Render as a Radix `Slot` so the parent JSX (e.g. a `react-router` `<Link>`) becomes the button element. |
20
+ | `block` | `boolean \| null` | no | `false` | |
21
+ | `disabledReason` | `ReactNode` | no | — | Disables the button and shows this on hover and focus; the button stays focusable. |
22
+ | `isLoading` | `boolean` | no | `false` | Shows a spinner in place of the leading icon, or before the label when there is none. The caller still controls `disabled`. |
23
+ | `size` | `"small" \| "medium" \| "large" \| "icon-lg" \| "icon" \| "icon-sm" \| "icon-xs" \| "icon-2xs" \| "icon-3xs" \| null` | no | `medium` | |
24
+ | `variant` | `"primary" \| "secondary" \| "kai" \| "danger" \| "outline" \| "invisible" \| "inline" \| null` | no | `primary` | |
24
25
 
25
26
  ### `ButtonInline`
26
27
 
@@ -89,22 +90,22 @@ Source: `src/blocks/TextInput/TextInput.tsx`
89
90
 
90
91
  > Bare input. Plus all native `<input>` attributes.
91
92
 
92
- | Prop | Type | Required | Default | Description |
93
- | -------------------- | --------------------------------------------------------------- | -------- | --------- | ------------------------------------------------------------------------------------------------ |
94
- | `allowClear` | `boolean` | no | `false` | |
95
- | `defaultValue` | `string \| null` | no | — | |
96
- | `focusVariant` | `"off" \| "on" \| "default" \| null` | no | `default` | |
97
- | `leftSuffix` | `ReactNode` | no | `null` | |
98
- | `onClear` | `(() => void)` | no | — | |
99
- | `onValueBlur` | `((value: string) => void)` | no | — | Receives the string value; `onBlur` gets the raw event. |
100
- | `onValueChange` | `((value: string) => void)` | no | — | Receives the string value; `onChange` gets the raw event. |
101
- | `prefix` | `ReactNode` | no | `null` | |
102
- | `rightSuffix` | `ReactNode` | no | `null` | `rightSuffixVariant="addon"` truncates it; the ellipsis needs inline content (text or `<span>`). |
103
- | `rightSuffixVariant` | `"default" \| "addon"` | no | `default` | |
104
- | `state` | `"warning" \| "error" \| "default" \| null` | no | `default` | |
105
- | `testId` | `string` | no | — | |
106
- | `type` | `"text" \| "email" \| "date" \| "password" \| "datetime-local"` | no | `text` | |
107
- | `value` | `string \| null` | no | — | |
93
+ | Prop | Type | Required | Default | Description |
94
+ | -------------------- | ------------------------------------------------------------------------ | -------- | --------- | ------------------------------------------------------------------------------------------------ |
95
+ | `allowClear` | `boolean` | no | `false` | |
96
+ | `defaultValue` | `string \| null` | no | — | |
97
+ | `focusVariant` | `"off" \| "on" \| "default" \| null` | no | `default` | |
98
+ | `leftSuffix` | `ReactNode` | no | `null` | |
99
+ | `onClear` | `(() => void)` | no | — | |
100
+ | `onValueBlur` | `((value: string) => void)` | no | — | Receives the string value; `onBlur` gets the raw event. |
101
+ | `onValueChange` | `((value: string) => void)` | no | — | Receives the string value; `onChange` gets the raw event. |
102
+ | `prefix` | `ReactNode` | no | `null` | |
103
+ | `rightSuffix` | `ReactNode` | no | `null` | `rightSuffixVariant="addon"` truncates it; the ellipsis needs inline content (text or `<span>`). |
104
+ | `rightSuffixVariant` | `"default" \| "addon"` | no | `default` | |
105
+ | `state` | `"warning" \| "error" \| "default" \| null` | no | `default` | |
106
+ | `testId` | `string` | no | — | |
107
+ | `type` | `"text" \| "url" \| "email" \| "date" \| "password" \| "datetime-local"` | no | `text` | |
108
+ | `value` | `string \| null` | no | — | |
108
109
 
109
110
  ### `PasswordInput`
110
111
 
@@ -158,21 +159,21 @@ Source: `src/blocks/FormGroup/FormGroupTextInput.tsx`
158
159
 
159
160
  > NO `error` prop — error styling comes from the parent `FormGroup state="error"` via context. `state` is omitted from the surface for the same reason. Plus native `<input>` attributes.
160
161
 
161
- | Prop | Type | Required | Default | Description |
162
- | -------------------- | --------------------------------------------------------------- | -------- | ------- | ------------------------------------------------------------------------------------------------ |
163
- | `allowClear` | `boolean` | no | — | |
164
- | `defaultValue` | `string \| null` | no | — | |
165
- | `focusVariant` | `"off" \| "on" \| "default" \| null` | no | — | |
166
- | `leftSuffix` | `ReactNode` | no | — | |
167
- | `onClear` | `(() => void)` | no | — | |
168
- | `onValueBlur` | `((value: string) => void)` | no | — | Receives the string value; `onBlur` gets the raw event. |
169
- | `onValueChange` | `((value: string) => void)` | no | — | Receives the string value; `onChange` gets the raw event. |
170
- | `prefix` | `ReactNode` | no | — | |
171
- | `rightSuffix` | `ReactNode` | no | — | `rightSuffixVariant="addon"` truncates it; the ellipsis needs inline content (text or `<span>`). |
172
- | `rightSuffixVariant` | `"default" \| "addon"` | no | — | |
173
- | `testId` | `string` | no | — | |
174
- | `type` | `"text" \| "email" \| "date" \| "password" \| "datetime-local"` | no | — | |
175
- | `value` | `string \| null` | no | — | |
162
+ | Prop | Type | Required | Default | Description |
163
+ | -------------------- | ------------------------------------------------------------------------ | -------- | ------- | ------------------------------------------------------------------------------------------------ |
164
+ | `allowClear` | `boolean` | no | — | |
165
+ | `defaultValue` | `string \| null` | no | — | |
166
+ | `focusVariant` | `"off" \| "on" \| "default" \| null` | no | — | |
167
+ | `leftSuffix` | `ReactNode` | no | — | |
168
+ | `onClear` | `(() => void)` | no | — | |
169
+ | `onValueBlur` | `((value: string) => void)` | no | — | Receives the string value; `onBlur` gets the raw event. |
170
+ | `onValueChange` | `((value: string) => void)` | no | — | Receives the string value; `onChange` gets the raw event. |
171
+ | `prefix` | `ReactNode` | no | — | |
172
+ | `rightSuffix` | `ReactNode` | no | — | `rightSuffixVariant="addon"` truncates it; the ellipsis needs inline content (text or `<span>`). |
173
+ | `rightSuffixVariant` | `"default" \| "addon"` | no | — | |
174
+ | `testId` | `string` | no | — | |
175
+ | `type` | `"text" \| "url" \| "email" \| "date" \| "password" \| "datetime-local"` | no | — | |
176
+ | `value` | `string \| null` | no | — | |
176
177
 
177
178
  ### `FormGroup.Help`
178
179
 
@@ -198,28 +199,28 @@ Source: `src/blocks/Form/connectors/TextField.tsx`
198
199
 
199
200
  > Value/onChange/onBlur/id/name are wired from the field — do not pass them. Forwards remaining `FormGroup.TextInput` props.
200
201
 
201
- | Prop | Type | Required | Default | Description |
202
- | -------------------- | --------------------------------------------------------------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
203
- | `action` | `ReactNode` | no | — | Trailing node on the label row (e.g. a `Link`); not part of the accessible name. |
204
- | `allowClear` | `boolean` | no | — | |
205
- | `aria-describedby` | `string` | no | — | Identifies the element (or elements) that describes the object. @see aria-labelledby |
206
- | `className` | `string` | no | — | |
207
- | `defaultValue` | `string \| null` | no | — | |
208
- | `focusVariant` | `"off" \| "on" \| "default" \| null` | no | — | |
209
- | `help` | `ReactNode` | no | — | |
210
- | `label` | `ReactNode` | no | — | |
211
- | `leftSuffix` | `ReactNode` | no | — | |
212
- | `onClear` | `(() => void)` | no | — | |
213
- | `onValueBlur` | `((value: string) => void)` | no | — | Receives the string value; `onBlur` gets the raw event. |
214
- | `onValueChange` | `((value: string) => void)` | no | — | Receives the string value; `onChange` gets the raw event. |
215
- | `prefix` | `ReactNode` | no | — | |
216
- | `required` | `boolean` | no | — | |
217
- | `requiredMark` | `RequiredMark` | no | — | Gated by `required`: `'required'` shows `*` only if required, `'optional'` shows `(optional)` only if not, `'hidden'` neither. Defaults to `'required'`. |
218
- | `rightSuffix` | `ReactNode` | no | — | `rightSuffixVariant="addon"` truncates it; the ellipsis needs inline content (text or `<span>`). |
219
- | `rightSuffixVariant` | `"default" \| "addon"` | no | — | |
220
- | `testId` | `string` | no | — | |
221
- | `tooltip` | `ReactNode` | no | — | |
222
- | `type` | `"text" \| "email" \| "date" \| "password" \| "datetime-local"` | no | — | |
202
+ | Prop | Type | Required | Default | Description |
203
+ | -------------------- | ------------------------------------------------------------------------ | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
204
+ | `action` | `ReactNode` | no | — | Trailing node on the label row (e.g. a `Link`); not part of the accessible name. |
205
+ | `allowClear` | `boolean` | no | — | |
206
+ | `aria-describedby` | `string` | no | — | Identifies the element (or elements) that describes the object. @see aria-labelledby |
207
+ | `className` | `string` | no | — | |
208
+ | `defaultValue` | `string \| null` | no | — | |
209
+ | `focusVariant` | `"off" \| "on" \| "default" \| null` | no | — | |
210
+ | `help` | `ReactNode` | no | — | |
211
+ | `label` | `ReactNode` | no | — | |
212
+ | `leftSuffix` | `ReactNode` | no | — | |
213
+ | `onClear` | `(() => void)` | no | — | |
214
+ | `onValueBlur` | `((value: string) => void)` | no | — | Receives the string value; `onBlur` gets the raw event. |
215
+ | `onValueChange` | `((value: string) => void)` | no | — | Receives the string value; `onChange` gets the raw event. |
216
+ | `prefix` | `ReactNode` | no | — | |
217
+ | `required` | `boolean` | no | — | |
218
+ | `requiredMark` | `RequiredMark` | no | — | Gated by `required`: `'required'` shows `*` only if required, `'optional'` shows `(optional)` only if not, `'hidden'` neither. Defaults to `'required'`. |
219
+ | `rightSuffix` | `ReactNode` | no | — | `rightSuffixVariant="addon"` truncates it; the ellipsis needs inline content (text or `<span>`). |
220
+ | `rightSuffixVariant` | `"default" \| "addon"` | no | — | |
221
+ | `testId` | `string` | no | — | |
222
+ | `tooltip` | `ReactNode` | no | — | |
223
+ | `type` | `"text" \| "url" \| "email" \| "date" \| "password" \| "datetime-local"` | no | — | |
223
224
 
224
225
  ### `field.PasswordField`
225
226
 
@@ -748,7 +749,7 @@ Source: `src/blocks/EmptyState/EmptyState.tsx`
748
749
 
749
750
  Source: `src/components/Popconfirm/Popconfirm.tsx`
750
751
 
751
- > Lightweight inline confirmation anchored to its trigger. Compound: `Popconfirm.Trigger`, `Popconfirm.Content`, `Popconfirm.Body`, `Popconfirm.Footer`, `Popconfirm.Confirm`, `Popconfirm.Cancel`.
752
+ > Lightweight inline confirmation anchored to its trigger. Compound: `Popconfirm.Trigger`, `Popconfirm.Content` (`layout="centered"` centres the body), `Popconfirm.Body`, `Popconfirm.Title`, `Popconfirm.Description`, `Popconfirm.Footer`, `Popconfirm.Confirm`, `Popconfirm.Cancel`.
752
753
 
753
754
  | Prop | Type | Required | Default | Description |
754
755
  | --------------- | ------------------------------------------------------------------------------- | -------- | -------------- | ----------- |