@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keboola/design",
3
- "version": "15.0.0",
3
+ "version": "16.0.0",
4
4
  "description": "Keboola UI platform design system — shadcn-aligned React primitives, Keboola-branded blocks, and the form bindings built on TanStack Form.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -121,53 +121,53 @@
121
121
  "devDependencies": {
122
122
  "@arethetypeswrong/cli": "^0.18.2",
123
123
  "@google/design.md": "0.2.0",
124
- "@keboola/agent-vocabulary": "^0.1.1",
125
- "@keboola/eslint-plugin-design": "^0.5.0",
124
+ "@keboola/agent-vocabulary": "^0.2.0",
125
+ "@keboola/eslint-plugin-design": "^0.6.0",
126
126
  "@keboola/oxlint-config": "^10.2.0",
127
127
  "@keboola/tsconfig": "^0.2.1",
128
128
  "@keboola/vitest-config": "^1.0.0",
129
- "@playwright/test": "1.63.0",
129
+ "@playwright/test": "1.64.1",
130
130
  "@size-limit/esbuild": "12.1.0",
131
131
  "@size-limit/file": "12.1.0",
132
- "@storybook/addon-a11y": "10.6.1",
133
- "@storybook/addon-docs": "^10.6.1",
134
- "@storybook/addon-links": "^10.6.1",
135
- "@storybook/addon-vitest": "10.6.1",
136
- "@storybook/react-vite": "^10.6.1",
132
+ "@storybook/addon-a11y": "10.6.3",
133
+ "@storybook/addon-docs": "^10.6.3",
134
+ "@storybook/addon-links": "^10.6.3",
135
+ "@storybook/addon-vitest": "10.6.3",
136
+ "@storybook/react-vite": "^10.6.3",
137
137
  "@tailwindcss/cli": "^4.3.3",
138
- "@tailwindcss/typography": "^0.5.19",
138
+ "@tailwindcss/typography": "^0.5.20",
139
139
  "@tailwindcss/vite": "^4.3.3",
140
140
  "@tanstack/react-table": "^8.21.3",
141
- "@testing-library/dom": "^10.4.1",
141
+ "@testing-library/dom": "^10.4.2",
142
142
  "@testing-library/react": "^16.3.3",
143
- "@testing-library/user-event": "^14.6.7",
143
+ "@testing-library/user-event": "^14.6.8",
144
144
  "@types/d3-color": "^3.1.3",
145
145
  "@types/react": "^19.3.0",
146
146
  "@types/react-dom": "^19.3.0",
147
147
  "@typescript/native": "npm:typescript@^7.0.2",
148
- "@vitejs/plugin-react": "^6.1.1",
149
- "@vitest/browser": "5.0.1",
150
- "@vitest/browser-playwright": "5.0.1",
151
- "@vitest/coverage-istanbul": "5.0.1",
152
- "@vitest/coverage-v8": "^5.0.1",
148
+ "@vitejs/plugin-react": "^6.1.2",
149
+ "@vitest/browser": "5.0.5",
150
+ "@vitest/browser-playwright": "5.0.5",
151
+ "@vitest/coverage-istanbul": "5.0.5",
152
+ "@vitest/coverage-v8": "^5.0.5",
153
153
  "d3-color": "^3.1.0",
154
- "eslint-plugin-storybook": "^10.3.5",
154
+ "eslint-plugin-storybook": "^10.6.3",
155
155
  "oxfmt": "^0.66.0",
156
- "oxlint": "^1.81.0",
157
- "playwright": "1.63.0",
158
- "react": "^19.3.0",
156
+ "oxlint": "^1.89.0",
157
+ "playwright": "1.64.1",
158
+ "react": "^19.3.1",
159
159
  "react-docgen-typescript": "^2.4.0",
160
- "react-dom": "^19.3.0",
160
+ "react-dom": "^19.3.1",
161
161
  "size-limit": "12.1.0",
162
- "storybook": "^10.6.1",
162
+ "storybook": "^10.6.3",
163
163
  "tailwindcss": "^4.3.3",
164
164
  "tailwindcss-scoped-preflight": "^4.0.6",
165
165
  "tsdown": "^0.22.14",
166
166
  "tsx": "^4.19.4",
167
167
  "tw-animate-css": "^1.4.0",
168
168
  "typescript": "npm:@typescript/typescript6@^6.0.2",
169
- "vite": "^8.3.0",
170
- "vitest": "^5.0.1"
169
+ "vite": "^8.3.5",
170
+ "vitest": "^5.0.5"
171
171
  },
172
172
  "peerDependencies": {
173
173
  "@testing-library/react": "^16.3.2",
@@ -194,8 +194,8 @@
194
194
  "@codemirror/state": "^6.7.1",
195
195
  "@codemirror/view": "^6.43.9",
196
196
  "@iconify-json/lucide": "^1.2.118",
197
- "@keboola/brand-registry": "^3.0.0",
198
- "@keboola/codemirror-lang-sql": "^0.7.3",
197
+ "@keboola/brand-registry": "^3.1.0",
198
+ "@keboola/codemirror-lang-sql": "^0.7.4",
199
199
  "@keboola/tailwind-config": "^1.2.0",
200
200
  "@lexical/code": "^0.42.0",
201
201
  "@lexical/link": "^0.42.0",
@@ -204,7 +204,7 @@
204
204
  "@lexical/react": "^0.42.0",
205
205
  "@lexical/rich-text": "^0.42.0",
206
206
  "@lexical/utils": "^0.42.0",
207
- "@lezer/highlight": "^1.2.3",
207
+ "@lezer/highlight": "^1.2.5",
208
208
  "@radix-ui/react-alert-dialog": "^1.1.17",
209
209
  "@radix-ui/react-avatar": "^1.2.0",
210
210
  "@radix-ui/react-checkbox": "^1.3.5",
@@ -227,12 +227,12 @@
227
227
  "@radix-ui/react-toggle": "^1.1.12",
228
228
  "@radix-ui/react-toggle-group": "^1.1.13",
229
229
  "@radix-ui/react-tooltip": "^1.2.10",
230
- "@rjsf/core": "^6.4.1",
231
- "@rjsf/utils": "^6.4.1",
232
- "@rjsf/validator-ajv8": "^6.5.2",
230
+ "@rjsf/core": "^6.11.0",
231
+ "@rjsf/utils": "^6.11.0",
232
+ "@rjsf/validator-ajv8": "^6.11.0",
233
233
  "@tanstack/form-core": "^1.29.1",
234
234
  "@tanstack/react-form": "^1.29.1",
235
- "@tanstack/react-virtual": "^3.14.5",
235
+ "@tanstack/react-virtual": "^3.14.22",
236
236
  "@testing-library/jest-dom": "^7.0.1",
237
237
  "@uiw/codemirror-theme-github": "^4.25.11",
238
238
  "@uiw/react-codemirror": "^4.25.11",
@@ -241,24 +241,24 @@
241
241
  "clsx": "^2.1.1",
242
242
  "cmdk": "^1.1.1",
243
243
  "diff": "^9.0.0",
244
- "dompurify": "^3.4.16",
244
+ "dompurify": "^3.4.17",
245
245
  "flint-chart": "0.5.1",
246
246
  "input-otp": "^1.4.2",
247
247
  "lexical": "^0.42.0",
248
248
  "lucide-react": "^1.17.0",
249
- "node-diff3": "^3.2.0",
250
- "pele": "^1.6.0",
251
- "react-day-picker": "^10.0.1",
249
+ "node-diff3": "^3.2.1",
250
+ "pele": "^1.10.0",
251
+ "react-day-picker": "^10.0.2",
252
252
  "react-dropzone": "^14.2.3",
253
253
  "react-markdown": "^10.1.0",
254
- "react-resizable-panels": "^4.12.1",
254
+ "react-resizable-panels": "^4.15.0",
255
255
  "react-textarea-autosize": "^8.5.9",
256
256
  "recharts": "^3.0.0",
257
257
  "remark-gfm": "^4.0.1",
258
- "sonner": "^2.0.7",
259
- "tailwind-merge": "^3.6.0",
258
+ "sonner": "^2.0.8",
259
+ "tailwind-merge": "^3.7.0",
260
260
  "vega": "^6.4.0",
261
- "vega-lite": "^6.4.3"
261
+ "vega-lite": "^6.5.0"
262
262
  },
263
263
  "scripts": {
264
264
  "dev": "storybook dev -p \"${PORT:-6006}\"",
package/src/styles.css CHANGED
@@ -19,12 +19,78 @@
19
19
  * mentions belongs in it. */
20
20
  @source not '**/*.test.{ts,tsx}';
21
21
 
22
- /* The remaining v3 token surface plus typography and scroll-fade stay in JS, loaded
23
- * via v4's `@config` bridge — this keeps `colors.ts` and the ThemeProvider/brand
24
- * runtime-swap model unchanged (channel triples consumed as `rgb(var(--*) / <alpha>)`).
25
- * Anything an app authors belongs in `theme.css` instead: this bridge is design-only. */
22
+ /* Prose typography — the one setting v4 can't express in CSS, loaded via the `@config` bridge.
23
+ * - Design-only: apps get `prose` from the compiled CSS, not from this bridge. */
26
24
  @config '../tailwind.config.js';
27
25
 
26
+ /* Scales only design's own build resolves through the brand's runtime vars.
27
+ * - An app's build resolves `rounded-md`, `shadow-sm`, `font-mono`, `font-semibold` to stock v4 values.
28
+ * - `inline`, so each utility carries its value; `initial` keeps only these four font weights.
29
+ * - A token new to apps belongs in `theme.css`. */
30
+ @theme inline {
31
+ --font-mono:
32
+ var(--font-mono, SFMono-Regular), Menlo, Monaco, Consolas, Liberation Mono, Courier New,
33
+ monospace;
34
+
35
+ --font-weight-*: initial;
36
+ --font-weight-normal: var(--font-weight-normal, 400);
37
+ --font-weight-medium: var(--font-weight-medium, 500);
38
+ --font-weight-semibold: var(--font-weight-semibold, 600);
39
+ --font-weight-bold: var(--font-weight-bold, 700);
40
+
41
+ /* `--type-*` from `typography.typeScale` via ThemeProvider. */
42
+ --text-display: var(--type-display-size, 1.875rem);
43
+ --text-display--line-height: var(--type-display-leading, 1.2);
44
+ --text-display--font-weight: var(--type-display-weight, 600);
45
+ --text-display--letter-spacing: var(--type-display-tracking, -0.02em);
46
+ --text-heading: var(--type-heading-size, 1.25rem);
47
+ --text-heading--line-height: var(--type-heading-leading, 1.4);
48
+ --text-heading--font-weight: var(--type-heading-weight, 600);
49
+ --text-heading--letter-spacing: var(--type-heading-tracking, -0.01em);
50
+ --text-body: var(--type-body-size, 0.875rem);
51
+ --text-body--line-height: var(--type-body-leading, 1.5);
52
+ --text-body--font-weight: var(--type-body-weight, 400);
53
+ --text-body--letter-spacing: var(--type-body-tracking, normal);
54
+
55
+ /* `theme.shadows` and `theme.radii` via ThemeProvider; the light block below sets each default. */
56
+ --shadow-sm: var(--shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));
57
+ --shadow-md: var(--shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1));
58
+ --shadow-lg: var(--shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1));
59
+ --radius-sm: var(--radius-sm, 0.125rem);
60
+ --radius-md: var(--radius-md, 0.375rem);
61
+ --radius-lg: var(--radius-lg, 0.5rem);
62
+
63
+ --animate-dot-pulse-1: dot-pulse 1.5s infinite;
64
+ --animate-dot-pulse-2: dot-pulse 1.5s infinite 0.2s;
65
+ --animate-dot-pulse-3: dot-pulse 1.5s infinite 0.4s;
66
+ --animate-toast-progress: toast-progress 5s linear forwards;
67
+
68
+ @keyframes shimmer {
69
+ 100% {
70
+ translate: 100% 0;
71
+ }
72
+ }
73
+ @keyframes dot-pulse {
74
+ 0%,
75
+ 100% {
76
+ transform: scale(0.1);
77
+ opacity: 0.1;
78
+ }
79
+ 40% {
80
+ transform: scale(1);
81
+ opacity: 1;
82
+ }
83
+ }
84
+ @keyframes toast-progress {
85
+ 0% {
86
+ width: 100%;
87
+ }
88
+ 100% {
89
+ width: 0%;
90
+ }
91
+ }
92
+ }
93
+
28
94
  /* Scoped, opt-in preflight — the v4 replacement for v3's
29
95
  * `corePlugins.preflight:false` + `isolateInsideOfContainer`. The reset applies
30
96
  * only inside `.tailwindcss-preflight` (and descendants), so host apps with
package/src/theme.css CHANGED
@@ -51,6 +51,10 @@
51
51
  * cannot cycle — same reasoning as `--font-sans` above. */
52
52
  --shadow-raised: var(--shadow-raised, 0 2px 6px 0 rgb(100 135 153 / 0.13));
53
53
 
54
+ /* The shared overlay layer — `z-overlay`. Modal, Sheet, menus, popovers, selects and comboboxes
55
+ * all sit on it, so the one opened last paints on top. */
56
+ --z-index-overlay: 1055;
57
+
54
58
  /* Brand easing — `ease-brand`. The runtime override var (`--motion-easing`) differs from
55
59
  * this @theme token name, so registering it here drops no fallback (unlike bg-brand /
56
60
  * shadow-lift, whose runtime var name collides → they stay @utility below). */
@@ -61,6 +65,7 @@
61
65
  --animate-spinner-dots: spinner-dots 1s ease-in-out infinite;
62
66
  --animate-marching-ants: marching-ants 1s linear infinite;
63
67
  --animate-kai-drift: kai-drift 12s ease-in-out infinite;
68
+ --animate-fade: fadeIn 100ms 100ms ease-in-out;
64
69
 
65
70
  /* Collapsible disclosure — keyframes below. `tw-animate-css` owns `collapsible-down`/`-up`
66
71
  * and every app imports it unlayered, so those two names are unusable here.
@@ -205,6 +210,14 @@
205
210
  }
206
211
  }
207
212
 
213
+ @keyframes fadeIn {
214
+ from {
215
+ opacity: 0;
216
+ }
217
+ to {
218
+ opacity: 1;
219
+ }
220
+ }
208
221
  @keyframes progress-bar {
209
222
  from {
210
223
  width: 0%;
@@ -273,26 +286,21 @@
273
286
  @utility duration-brand {
274
287
  /* v4 has no themeable transition-duration namespace, so keep this as a fallback-chain
275
288
  * utility (like bg-brand / shadow-lift) to preserve the runtime var + v3 fallback. */
289
+ --tw-duration: var(--motion-duration, 200ms);
276
290
  transition-duration: var(--motion-duration, 200ms);
277
291
  }
278
292
  @utility font-display {
279
- font-family:
280
- var(--font-display, var(--font-sans, Inter)),
281
- system-ui,
282
- -apple-system,
283
- 'Segoe UI',
284
- Roboto,
285
- sans-serif;
293
+ font-family: var(--font-display, var(--tw-font-sans));
286
294
  }
287
295
 
288
- /* Interaction-state variant — `not-disabled:hover:…`. Skips BOTH ways a control reports being
289
- * disabled; v4's core `not-*` compound reads the same name as `:not(:disabled)` alone, so this
290
- * deliberately shadows it. That shadowing is why the variant has to live here and not in an
296
+ /* Interaction-state variant — `not-disabled:hover:…`. Skips every way a control reports being
297
+ * disabled (`:disabled`, `data-disabled`, `aria-disabled`); v4's core `not-*` compound reads the
298
+ * same name as `:not(:disabled)` alone, so this deliberately shadows it. That shadowing is why the variant has to live here and not in an
291
299
  * `addVariant` in design's `@config` plugin: an app's own build has no bridge to that plugin, so
292
300
  * it fell through to the core variant and silently dropped the `data-disabled` half — every
293
301
  * `tw:not-disabled:*` class kbc-ui authors that design's compiled CSS did not already carry
294
302
  * still highlighted a `[data-disabled="true"]` control on hover and focus. */
295
- @custom-variant not-disabled (&:not([data-disabled="true"]):not(:disabled));
303
+ @custom-variant not-disabled (&:not([data-disabled="true"]):not([aria-disabled="true"]):not(:disabled));
296
304
 
297
305
  /* Interactive-surface variant — `interactive:hover:…`. Matches:
298
306
  * - an `<a href>`, unless it opts out with `data-interactive="false"`;
@@ -538,3 +546,101 @@
538
546
  --color-blue-800: #064a8f;
539
547
  --color-blue-900: #043566;
540
548
  }
549
+
550
+ /* Kai's sparkle paints — `stroke-aigradient-600`, `fill-aigradient-700`, …
551
+ * - Point at the SVG gradients `ThemeProvider` renders (`AIGradientSvg`).
552
+ * - v4 has no themeable namespace for `url(#…)` paints, so these are utilities. */
553
+ @utility stroke-aigradient-600 {
554
+ stroke: url(#aigradient-600);
555
+ }
556
+ @utility stroke-aigradient-700 {
557
+ stroke: url(#aigradient-700);
558
+ }
559
+ @utility fill-aigradient-600 {
560
+ fill: url(#aigradient-600);
561
+ }
562
+ @utility fill-aigradient-700 {
563
+ fill: url(#aigradient-700);
564
+ }
565
+
566
+ /* Scroll-container edge fade — `scroll-fade` (= `scroll-fade-y`) and `scroll-fade-x`.
567
+ * - A mask driven by scroll-driven animations; each edge holds 1 (solid) until there is overflow past it.
568
+ * - `--tw-scroll-fade-size` sets the depth; `--tw-scroll-fade-size-start` overrides the leading edge.
569
+ * - Browsers without scroll timelines show a static fade on both edges. */
570
+ @property --tw-scroll-fade-start {
571
+ syntax: '<number>';
572
+ inherits: false;
573
+ initial-value: 1;
574
+ }
575
+ @property --tw-scroll-fade-end {
576
+ syntax: '<number>';
577
+ inherits: false;
578
+ initial-value: 1;
579
+ }
580
+ @keyframes tw-scroll-fade-reveal-start {
581
+ from {
582
+ --tw-scroll-fade-start: 1;
583
+ }
584
+ to {
585
+ --tw-scroll-fade-start: 0;
586
+ }
587
+ }
588
+ @keyframes tw-scroll-fade-reveal-end {
589
+ from {
590
+ --tw-scroll-fade-end: 0;
591
+ }
592
+ to {
593
+ --tw-scroll-fade-end: 1;
594
+ }
595
+ }
596
+ @utility scroll-fade-y {
597
+ --tw-scroll-fade-size: 1.5rem;
598
+ --tw-scroll-fade-mask: linear-gradient(
599
+ to bottom,
600
+ rgb(0 0 0 / var(--tw-scroll-fade-start)) 0,
601
+ #000 var(--tw-scroll-fade-size-start, var(--tw-scroll-fade-size)),
602
+ #000 calc(100% - var(--tw-scroll-fade-size)),
603
+ rgb(0 0 0 / var(--tw-scroll-fade-end)) 100%
604
+ );
605
+ -webkit-mask-image: var(--tw-scroll-fade-mask);
606
+ mask-image: var(--tw-scroll-fade-mask);
607
+ animation:
608
+ tw-scroll-fade-reveal-start linear both,
609
+ tw-scroll-fade-reveal-end linear both;
610
+ animation-timeline: scroll(self y), scroll(self y);
611
+ animation-range:
612
+ 0 var(--tw-scroll-fade-size-start, var(--tw-scroll-fade-size)),
613
+ calc(100% - var(--tw-scroll-fade-size)) 100%;
614
+
615
+ @supports not (animation-timeline: scroll()) {
616
+ --tw-scroll-fade-start: 0;
617
+ --tw-scroll-fade-end: 0;
618
+ }
619
+ }
620
+ @utility scroll-fade {
621
+ @apply tw:scroll-fade-y;
622
+ }
623
+ @utility scroll-fade-x {
624
+ --tw-scroll-fade-size: 1.5rem;
625
+ --tw-scroll-fade-mask: linear-gradient(
626
+ to right,
627
+ rgb(0 0 0 / var(--tw-scroll-fade-start)) 0,
628
+ #000 var(--tw-scroll-fade-size-start, var(--tw-scroll-fade-size)),
629
+ #000 calc(100% - var(--tw-scroll-fade-size)),
630
+ rgb(0 0 0 / var(--tw-scroll-fade-end)) 100%
631
+ );
632
+ -webkit-mask-image: var(--tw-scroll-fade-mask);
633
+ mask-image: var(--tw-scroll-fade-mask);
634
+ animation:
635
+ tw-scroll-fade-reveal-start linear both,
636
+ tw-scroll-fade-reveal-end linear both;
637
+ animation-timeline: scroll(self x), scroll(self x);
638
+ animation-range:
639
+ 0 var(--tw-scroll-fade-size-start, var(--tw-scroll-fade-size)),
640
+ calc(100% - var(--tw-scroll-fade-size)) 100%;
641
+
642
+ @supports not (animation-timeline: scroll()) {
643
+ --tw-scroll-fade-start: 0;
644
+ --tw-scroll-fade-end: 0;
645
+ }
646
+ }