@keboola/design 15.1.0 → 16.1.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 (345) hide show
  1. package/AGENTS.md +6 -5
  2. package/CHANGELOG.md +85 -0
  3. package/COMPONENT-API.md +62 -61
  4. package/dist/{AIKit-BR6jfsdI.js → AIKit-Cf5plya2.js} +328 -210
  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-DMsn62JJ.js → AlertModal-De04fFoy.js} +14 -24
  9. package/dist/{AlertModal-DMsn62JJ.js.map → AlertModal-De04fFoy.js.map} +1 -1
  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-CqlOE5A2.js → Badge-CFRhducL.js} +9 -14
  15. package/dist/{Badge-CqlOE5A2.js.map → Badge-CFRhducL.js.map} +1 -1
  16. package/dist/{BrandEditor-D61pzWRq.js → BrandEditor-hiLBX7az.js} +16 -23
  17. package/dist/{BrandEditor-D61pzWRq.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-DbqvDnYl.js → Breadcrumb-uGFEIjFF.js} +17 -28
  21. package/dist/{Breadcrumb-DbqvDnYl.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-BlrH8jAi.js → ColorModeSwitch-CuPYnJ2V.js} +5 -6
  41. package/dist/{ColorModeSwitch-BlrH8jAi.js.map → ColorModeSwitch-CuPYnJ2V.js.map} +1 -1
  42. package/dist/{Combobox-BLqX-Tdh.js → Combobox-DYjvYgl3.js} +37 -66
  43. package/dist/{Combobox-BLqX-Tdh.js.map → Combobox-DYjvYgl3.js.map} +1 -1
  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-duinbI9_.js → DateInput-DJNX7Vdx.js} +8 -10
  49. package/dist/{DateInput-duinbI9_.js.map → DateInput-DJNX7Vdx.js.map} +1 -1
  50. package/dist/{DatePicker-Cg_aG_N4.js → DatePicker-CI59gF3S.js} +4 -5
  51. package/dist/{DatePicker-Cg_aG_N4.js.map → DatePicker-CI59gF3S.js.map} +1 -1
  52. package/dist/{DateRangeInput-BYVHf9zo.js → DateRangeInput-B3g8cyS0.js} +8 -10
  53. package/dist/{DateRangeInput-BYVHf9zo.js.map → DateRangeInput-B3g8cyS0.js.map} +1 -1
  54. package/dist/{DateRangePicker-m47cSV1r.js → DateRangePicker-48yOB2qV.js} +9 -10
  55. package/dist/{DateRangePicker-m47cSV1r.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-Bum99mVf.js → DropdownMenu-Ba9atqDa.js} +20 -36
  59. package/dist/{DropdownMenu-Bum99mVf.js.map → DropdownMenu-Ba9atqDa.js.map} +1 -1
  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-Dqbt_tIs.js → Form-BUNW7nlt.js} +24 -38
  68. package/dist/{Form-Dqbt_tIs.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-Cf9iYyaW.js → HoverCard-OGWKRXJ7.js} +4 -6
  74. package/dist/{HoverCard-Cf9iYyaW.js.map → HoverCard-OGWKRXJ7.js.map} +1 -1
  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-2-EuNu1i.js → MermaidDiagram-E3azndPk.js} +9 -11
  84. package/dist/{MermaidDiagram-2-EuNu1i.js.map → MermaidDiagram-E3azndPk.js.map} +1 -1
  85. package/dist/{Modal-DwuvuiUx.js → Modal-Cf_kPEBW.js} +13 -21
  86. package/dist/{Modal-DwuvuiUx.js.map → Modal-Cf_kPEBW.js.map} +1 -1
  87. package/dist/{ModalTitle-RGWwIMU6.js → ModalTitle-7vgpfc6B.js} +5 -8
  88. package/dist/{ModalTitle-RGWwIMU6.js.map → ModalTitle-7vgpfc6B.js.map} +1 -1
  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-LKP6PiP_.js → PageToolbar-By2HznxO.js} +8 -10
  100. package/dist/{PageToolbar-LKP6PiP_.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-p72DiagN.js → Popconfirm-BJuDOHdv.js} +46 -25
  104. package/dist/Popconfirm-BJuDOHdv.js.map +1 -0
  105. package/dist/{Popover-DnBw5Uay.js → Popover-DhOPlWgF.js} +4 -6
  106. package/dist/{Popover-DnBw5Uay.js.map → Popover-DhOPlWgF.js.map} +1 -1
  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-6hcIpZLO.js → SectionNav-L81iJBo3.js} +11 -14
  116. package/dist/{SectionNav-6hcIpZLO.js.map → SectionNav-L81iJBo3.js.map} +1 -1
  117. package/dist/{Select-C6zKeip5.js → Select-DRdkdzBp.js} +28 -25
  118. package/dist/{Select-C6zKeip5.js.map → Select-DRdkdzBp.js.map} +1 -1
  119. package/dist/{Sheet-DKG20J7W.js → Sheet-DVb4XoJ5.js} +12 -19
  120. package/dist/{Sheet-DKG20J7W.js.map → Sheet-DVb4XoJ5.js.map} +1 -1
  121. package/dist/{Sidebar-BlYqasnX.js → Sidebar-DYvodJWN.js} +43 -75
  122. package/dist/{Sidebar-BlYqasnX.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-lk3NGqeK.js → TimePicker-CCV3SOw5.js} +4 -6
  138. package/dist/{TimePicker-lk3NGqeK.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-CxXKanUR.js → ZoomableSvg-BRPGgaWJ.js} +8 -10
  150. package/dist/{ZoomableSvg-CxXKanUR.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 +418 -1296
  172. package/dist/index.js +75 -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 +1 -2
  292. package/dist/internal/utils/accessibleName.js +1 -2
  293. package/dist/internal/utils/mergeRefs.js +1 -2
  294. package/dist/internal/utils.js +3 -3
  295. package/dist/markdown-editor.d.ts +0 -4
  296. package/dist/markdown-editor.js +30 -49
  297. package/dist/markdown-editor.js.map +1 -1
  298. package/dist/mermaid.d.ts +0 -2
  299. package/dist/mermaid.js +1 -2
  300. package/dist/rjsf.d.ts +0 -8
  301. package/dist/rjsf.js +47 -78
  302. package/dist/rjsf.js.map +1 -1
  303. package/dist/{rolldown-runtime-Bdc48AWt.js → rolldown-runtime-BrwM56v-.js} +2 -3
  304. package/dist/{styles-T8xwr0sR.js → styles-BXXXosW_.js} +2 -3
  305. package/dist/{styles-T8xwr0sR.js.map → styles-BXXXosW_.js.map} +1 -1
  306. package/dist/{styles-DxazJ8Mz.js → styles-nwtCRF7y.js} +2 -3
  307. package/dist/{styles-DxazJ8Mz.js.map → styles-nwtCRF7y.js.map} +1 -1
  308. package/dist/styles.css +1 -1
  309. package/dist/{svgCache-Dhmbe-7i.js → svgCache-BzvN_fgr.js} +2 -3
  310. package/dist/{svgCache-Dhmbe-7i.js.map → svgCache-BzvN_fgr.js.map} +1 -1
  311. package/dist/{svgTransforms-Hnvev3Vs.js → svgTransforms-BBxxO9T6.js} +4 -6
  312. package/dist/{svgTransforms-Hnvev3Vs.js.map → svgTransforms-BBxxO9T6.js.map} +1 -1
  313. package/dist/testing.d.ts +0 -2
  314. package/dist/testing.js +2 -3
  315. package/dist/{themeScopeContext-CEVXbYvZ.js → themeScopeContext-BZGPdyG8.js} +6 -11
  316. package/dist/{themeScopeContext-CEVXbYvZ.js.map → themeScopeContext-BZGPdyG8.js.map} +1 -1
  317. package/dist/{themeTokens-DCeb62ap.js → themeTokens-B60cQtAY.js} +4 -6
  318. package/dist/{themeTokens-DCeb62ap.js.map → themeTokens-B60cQtAY.js.map} +1 -1
  319. package/dist/{toast-Y3cTMBW8.js → toast-Dzj1EFOb.js} +10 -17
  320. package/dist/{toast-Y3cTMBW8.js.map → toast-Dzj1EFOb.js.map} +1 -1
  321. package/dist/{types-BPcAjMG0.d.ts → types-CsZuwfxc.d.ts} +1 -3
  322. package/dist/{useControllableState-CUYXMsfz.js → useControllableState-BCvUOC6G.js} +2 -3
  323. package/dist/{useControllableState-CUYXMsfz.js.map → useControllableState-BCvUOC6G.js.map} +1 -1
  324. package/dist/{useElement-D-RjrGa4.js → useElement-Dcoo9Jlr.js} +2 -3
  325. package/dist/{useElement-D-RjrGa4.js.map → useElement-Dcoo9Jlr.js.map} +1 -1
  326. package/dist/{useMergeDiff-CvowEXJ1.js → useMergeDiff-DFIATaTw.js} +3 -5
  327. package/dist/{useMergeDiff-CvowEXJ1.js.map → useMergeDiff-DFIATaTw.js.map} +1 -1
  328. package/dist/{utils-DwC9u0tM.js → utils-DjFceY3H.js} +18 -34
  329. package/dist/{utils-DwC9u0tM.js.map → utils-DjFceY3H.js.map} +1 -1
  330. package/dist/vega.d.ts +1 -5
  331. package/dist/vega.js +3 -4
  332. package/dist/{vegaTheme-ISwGXvof.js → vegaTheme-BcTNRmVS.js} +3 -4
  333. package/dist/{vegaTheme-ISwGXvof.js.map → vegaTheme-BcTNRmVS.js.map} +1 -1
  334. package/dist/{vegaTokens-DCkvpIVE.js → vegaTokens-DnCcy7JY.js} +3 -4
  335. package/dist/{vegaTokens-DCkvpIVE.js.map → vegaTokens-DnCcy7JY.js.map} +1 -1
  336. package/package.json +40 -40
  337. package/src/styles.css +70 -4
  338. package/src/theme.css +113 -11
  339. package/dist/AIKit-BR6jfsdI.js.map +0 -1
  340. package/dist/Button-BNkyYU8u.js.map +0 -1
  341. package/dist/Calendar-BnKi1kPu.js.map +0 -1
  342. package/dist/Popconfirm-p72DiagN.js.map +0 -1
  343. package/dist/Search-vyZwGKMU.js.map +0 -1
  344. package/dist/SearchInput-DyYXyw3u.js.map +0 -1
  345. package/dist/TextInput-CR0_USaY.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keboola/design",
3
- "version": "15.1.0",
3
+ "version": "16.1.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
@@ -65,6 +65,7 @@
65
65
  --animate-spinner-dots: spinner-dots 1s ease-in-out infinite;
66
66
  --animate-marching-ants: marching-ants 1s linear infinite;
67
67
  --animate-kai-drift: kai-drift 12s ease-in-out infinite;
68
+ --animate-fade: fadeIn 100ms 100ms ease-in-out;
68
69
 
69
70
  /* Collapsible disclosure — keyframes below. `tw-animate-css` owns `collapsible-down`/`-up`
70
71
  * and every app imports it unlayered, so those two names are unusable here.
@@ -209,6 +210,14 @@
209
210
  }
210
211
  }
211
212
 
213
+ @keyframes fadeIn {
214
+ from {
215
+ opacity: 0;
216
+ }
217
+ to {
218
+ opacity: 1;
219
+ }
220
+ }
212
221
  @keyframes progress-bar {
213
222
  from {
214
223
  width: 0%;
@@ -277,26 +286,21 @@
277
286
  @utility duration-brand {
278
287
  /* v4 has no themeable transition-duration namespace, so keep this as a fallback-chain
279
288
  * utility (like bg-brand / shadow-lift) to preserve the runtime var + v3 fallback. */
289
+ --tw-duration: var(--motion-duration, 200ms);
280
290
  transition-duration: var(--motion-duration, 200ms);
281
291
  }
282
292
  @utility font-display {
283
- font-family:
284
- var(--font-display, var(--font-sans, Inter)),
285
- system-ui,
286
- -apple-system,
287
- 'Segoe UI',
288
- Roboto,
289
- sans-serif;
293
+ font-family: var(--font-display, var(--tw-font-sans));
290
294
  }
291
295
 
292
- /* Interaction-state variant — `not-disabled:hover:…`. Skips BOTH ways a control reports being
293
- * disabled; v4's core `not-*` compound reads the same name as `:not(:disabled)` alone, so this
294
- * 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
295
299
  * `addVariant` in design's `@config` plugin: an app's own build has no bridge to that plugin, so
296
300
  * it fell through to the core variant and silently dropped the `data-disabled` half — every
297
301
  * `tw:not-disabled:*` class kbc-ui authors that design's compiled CSS did not already carry
298
302
  * still highlighted a `[data-disabled="true"]` control on hover and focus. */
299
- @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));
300
304
 
301
305
  /* Interactive-surface variant — `interactive:hover:…`. Matches:
302
306
  * - an `<a href>`, unless it opts out with `data-interactive="false"`;
@@ -542,3 +546,101 @@
542
546
  --color-blue-800: #064a8f;
543
547
  --color-blue-900: #043566;
544
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
+ }