@keboola/design 2.0.1 → 3.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 (673) hide show
  1. package/README.md +64 -5
  2. package/dist/icons.cjs +13 -733
  3. package/dist/icons.cjs.map +1 -1
  4. package/dist/icons.d.cts +7 -0
  5. package/dist/icons.d.ts +7 -0
  6. package/dist/icons.js +8 -2
  7. package/dist/icons.js.map +1 -1
  8. package/dist/index.cjs +13605 -12713
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.cts +10462 -0
  11. package/dist/index.d.ts +10462 -0
  12. package/dist/index.js +13437 -12576
  13. package/dist/index.js.map +1 -1
  14. package/dist/markdown-editor.cjs +146 -82
  15. package/dist/markdown-editor.cjs.map +1 -1
  16. package/dist/markdown-editor.d.cts +74 -0
  17. package/dist/markdown-editor.d.ts +74 -0
  18. package/dist/markdown-editor.js +146 -83
  19. package/dist/markdown-editor.js.map +1 -1
  20. package/dist/mermaid.cjs +85 -19
  21. package/dist/mermaid.cjs.map +1 -1
  22. package/dist/mermaid.d.cts +11 -0
  23. package/dist/mermaid.d.ts +11 -0
  24. package/dist/mermaid.js +68 -21
  25. package/dist/mermaid.js.map +1 -1
  26. package/dist/styles.css +1 -1
  27. package/dist/testing.cjs +106 -0
  28. package/dist/testing.cjs.map +1 -0
  29. package/dist/testing.d.cts +19 -0
  30. package/dist/testing.d.ts +19 -0
  31. package/dist/testing.js +104 -0
  32. package/dist/testing.js.map +1 -0
  33. package/package.json +94 -15
  34. package/dist/icon-names.cjs +0 -18
  35. package/dist/icon-names.cjs.map +0 -1
  36. package/dist/icon-names.js +0 -16
  37. package/dist/icon-names.js.map +0 -1
  38. package/src/blocks/AIKit/AnswerSummary.stories.tsx +0 -38
  39. package/src/blocks/AIKit/AnswerSummary.tsx +0 -63
  40. package/src/blocks/AIKit/CollapsibleStepHeader.stories.tsx +0 -53
  41. package/src/blocks/AIKit/CollapsibleStepHeader.tsx +0 -64
  42. package/src/blocks/AIKit/InlineStepDetail.stories.tsx +0 -25
  43. package/src/blocks/AIKit/InlineStepDetail.tsx +0 -13
  44. package/src/blocks/AIKit/InlineStepLabel.stories.tsx +0 -37
  45. package/src/blocks/AIKit/InlineStepLabel.tsx +0 -36
  46. package/src/blocks/AIKit/MessageBubble.stories.tsx +0 -145
  47. package/src/blocks/AIKit/MessageBubble.tsx +0 -68
  48. package/src/blocks/AIKit/PlanApproval.stories.tsx +0 -121
  49. package/src/blocks/AIKit/PlanApproval.test.tsx +0 -241
  50. package/src/blocks/AIKit/PlanApproval.tsx +0 -363
  51. package/src/blocks/AIKit/PlanRewritingIndicator.test.tsx +0 -17
  52. package/src/blocks/AIKit/PlanRewritingIndicator.tsx +0 -20
  53. package/src/blocks/AIKit/PromptInput.stories.tsx +0 -106
  54. package/src/blocks/AIKit/PromptInput.test.tsx +0 -53
  55. package/src/blocks/AIKit/PromptInput.tsx +0 -218
  56. package/src/blocks/AIKit/PromptInputAction.tsx +0 -18
  57. package/src/blocks/AIKit/PromptInputSubmit.tsx +0 -59
  58. package/src/blocks/AIKit/Question.stories.tsx +0 -235
  59. package/src/blocks/AIKit/Question.tsx +0 -350
  60. package/src/blocks/AIKit/QuestionBlock.stories.tsx +0 -99
  61. package/src/blocks/AIKit/QuestionBlock.tsx +0 -83
  62. package/src/blocks/AIKit/SuggestedPrompt.stories.tsx +0 -82
  63. package/src/blocks/AIKit/SuggestedPrompt.tsx +0 -42
  64. package/src/blocks/AIKit/ThinkingIndicator.stories.tsx +0 -21
  65. package/src/blocks/AIKit/ThinkingIndicator.tsx +0 -14
  66. package/src/blocks/AIKit/index.ts +0 -12
  67. package/src/blocks/AutoSaveTextarea/AutoSaveTextarea.stories.tsx +0 -78
  68. package/src/blocks/AutoSaveTextarea/AutoSaveTextarea.tsx +0 -103
  69. package/src/blocks/AutoSaveTextarea/index.ts +0 -1
  70. package/src/blocks/ClipboardButton/ClipboardButton.stories.tsx +0 -28
  71. package/src/blocks/ClipboardButton/ClipboardButton.tsx +0 -43
  72. package/src/blocks/ClipboardButton/ClipboardInline.tsx +0 -40
  73. package/src/blocks/ClipboardButton/index.ts +0 -2
  74. package/src/blocks/ColorInput/ColorInput.stories.tsx +0 -109
  75. package/src/blocks/ColorInput/ColorInput.test.tsx +0 -163
  76. package/src/blocks/ColorInput/ColorInput.tsx +0 -171
  77. package/src/blocks/ColorInput/ColorPicker.tsx +0 -42
  78. package/src/blocks/ColorInput/index.ts +0 -1
  79. package/src/blocks/ColorInput/utils.test.ts +0 -189
  80. package/src/blocks/ColorInput/utils.ts +0 -74
  81. package/src/blocks/EmptyConfigurationActionCard/EmptyConfigurationActionCard.stories.tsx +0 -30
  82. package/src/blocks/EmptyConfigurationActionCard/EmptyConfigurationActionCard.tsx +0 -20
  83. package/src/blocks/EmptyConfigurationActionCard/index.ts +0 -1
  84. package/src/blocks/EmptyState/EmptyState.stories.tsx +0 -93
  85. package/src/blocks/EmptyState/EmptyState.tsx +0 -146
  86. package/src/blocks/EmptyState/index.ts +0 -1
  87. package/src/blocks/ErrorState/ErrorState.stories.tsx +0 -125
  88. package/src/blocks/ErrorState/ErrorState.tsx +0 -162
  89. package/src/blocks/ErrorState/index.ts +0 -1
  90. package/src/blocks/Form/components/FormBody.tsx +0 -27
  91. package/src/blocks/Form/components/SubmitButton.tsx +0 -30
  92. package/src/blocks/Form/connectors/CheckboxField.tsx +0 -34
  93. package/src/blocks/Form/connectors/FieldShell.tsx +0 -46
  94. package/src/blocks/Form/connectors/NumberField.tsx +0 -36
  95. package/src/blocks/Form/connectors/PasswordField.tsx +0 -38
  96. package/src/blocks/Form/connectors/SelectField.tsx +0 -73
  97. package/src/blocks/Form/connectors/SwitchField.tsx +0 -34
  98. package/src/blocks/Form/connectors/TextAreaField.tsx +0 -36
  99. package/src/blocks/Form/connectors/TextField.tsx +0 -36
  100. package/src/blocks/Form/contexts.ts +0 -4
  101. package/src/blocks/Form/formHook.ts +0 -45
  102. package/src/blocks/Form/index.ts +0 -2
  103. package/src/blocks/Form/setServerFieldErrors.test.ts +0 -38
  104. package/src/blocks/Form/setServerFieldErrors.ts +0 -21
  105. package/src/blocks/InputOtp/InputOtp.stories.tsx +0 -214
  106. package/src/blocks/InputOtp/InputOtp.test.tsx +0 -162
  107. package/src/blocks/InputOtp/InputOtp.tsx +0 -62
  108. package/src/blocks/InputOtp/InputOtpGroup.tsx +0 -13
  109. package/src/blocks/InputOtp/InputOtpSeparator.tsx +0 -23
  110. package/src/blocks/InputOtp/InputOtpSlot.styles.ts +0 -52
  111. package/src/blocks/InputOtp/InputOtpSlot.tsx +0 -44
  112. package/src/blocks/InputOtp/context.ts +0 -23
  113. package/src/blocks/InputOtp/index.ts +0 -23
  114. package/src/blocks/MermaidDiagram/MermaidDiagram.stories.tsx +0 -87
  115. package/src/blocks/MermaidDiagram/MermaidDiagram.tsx +0 -266
  116. package/src/blocks/MermaidDiagram/index.ts +0 -1
  117. package/src/blocks/MultiActionButtonGroup/MultiActionButton.stories.tsx +0 -119
  118. package/src/blocks/MultiActionButtonGroup/MultiActionButton.tsx +0 -41
  119. package/src/blocks/MultiActionButtonGroup/MultiActionButtonGroup.tsx +0 -16
  120. package/src/blocks/MultiActionButtonGroup/index.ts +0 -1
  121. package/src/blocks/MultiCombobox/MultiCombobox.stories.tsx +0 -324
  122. package/src/blocks/MultiCombobox/MultiCombobox.tsx +0 -257
  123. package/src/blocks/MultiCombobox/index.ts +0 -1
  124. package/src/blocks/NumberInput/NumberInput.stories.tsx +0 -112
  125. package/src/blocks/NumberInput/NumberInput.test.tsx +0 -148
  126. package/src/blocks/NumberInput/NumberInput.tsx +0 -89
  127. package/src/blocks/NumberInput/index.ts +0 -1
  128. package/src/blocks/PageHeader/AGENTS.md +0 -137
  129. package/src/blocks/PageHeader/PageHeader.stories.tsx +0 -371
  130. package/src/blocks/PageHeader/PageHeader.tsx +0 -22
  131. package/src/blocks/PageHeader/PageHeaderDetail.tsx +0 -84
  132. package/src/blocks/PageHeader/PageHeaderIndex.tsx +0 -75
  133. package/src/blocks/PageHeader/index.ts +0 -1
  134. package/src/blocks/PageHeader/styles.ts +0 -6
  135. package/src/blocks/PageLayout/AGENTS.md +0 -94
  136. package/src/blocks/PageLayout/PageLayout.stories.tsx +0 -146
  137. package/src/blocks/PageLayout/PageLayout.tsx +0 -139
  138. package/src/blocks/PageLayout/index.ts +0 -1
  139. package/src/blocks/PageToolbar/PageToolbar.stories.tsx +0 -353
  140. package/src/blocks/PageToolbar/PageToolbar.tsx +0 -160
  141. package/src/blocks/PageToolbar/PageToolbarToken.tsx +0 -61
  142. package/src/blocks/PageToolbar/index.ts +0 -1
  143. package/src/blocks/PasswordInput/PasswordInput.stories.tsx +0 -114
  144. package/src/blocks/PasswordInput/PasswordInput.test.tsx +0 -219
  145. package/src/blocks/PasswordInput/PasswordInput.tsx +0 -180
  146. package/src/blocks/PasswordInput/index.ts +0 -1
  147. package/src/blocks/SearchInput/SearchInput.stories.tsx +0 -127
  148. package/src/blocks/SearchInput/SearchInput.test.tsx +0 -162
  149. package/src/blocks/SearchInput/SearchInput.tsx +0 -172
  150. package/src/blocks/SearchInput/index.ts +0 -1
  151. package/src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.stories.tsx +0 -73
  152. package/src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.tsx +0 -92
  153. package/src/blocks/SearchInputWithNavigation/index.ts +0 -1
  154. package/src/blocks/SplitButton/SplitButton.stories.tsx +0 -91
  155. package/src/blocks/SplitButton/SplitButton.tsx +0 -81
  156. package/src/blocks/SplitButton/index.ts +0 -1
  157. package/src/blocks/Tagger/TagItem.tsx +0 -32
  158. package/src/blocks/Tagger/TagSelectPopover/TagSelectCreateItem.tsx +0 -44
  159. package/src/blocks/Tagger/TagSelectPopover/TagSelectItem.tsx +0 -31
  160. package/src/blocks/Tagger/TagSelectPopover/TagSelectList.tsx +0 -67
  161. package/src/blocks/Tagger/TagSelectPopover/TagSelectPopover.tsx +0 -34
  162. package/src/blocks/Tagger/TagSelectPopover/TagSelectValue.tsx +0 -47
  163. package/src/blocks/Tagger/TagSelectPopover/index.ts +0 -1
  164. package/src/blocks/Tagger/Tagger.stories.tsx +0 -80
  165. package/src/blocks/Tagger/Tagger.tsx +0 -101
  166. package/src/blocks/Tagger/index.ts +0 -1
  167. package/src/blocks/Tagger/types.ts +0 -11
  168. package/src/blocks/Textarea/Textarea.stories.tsx +0 -47
  169. package/src/blocks/Textarea/Textarea.tsx +0 -50
  170. package/src/blocks/Textarea/index.ts +0 -1
  171. package/src/components/Alert/Alert.stories.tsx +0 -101
  172. package/src/components/Alert/Alert.tsx +0 -121
  173. package/src/components/Alert/AlertAction.tsx +0 -31
  174. package/src/components/Alert/AlertCollapsibleIcon.tsx +0 -25
  175. package/src/components/Alert/AlertDescription.tsx +0 -36
  176. package/src/components/Alert/AlertIcon.tsx +0 -40
  177. package/src/components/Alert/AlertRoot.tsx +0 -64
  178. package/src/components/Alert/AlertTitle.tsx +0 -25
  179. package/src/components/Alert/index.ts +0 -1
  180. package/src/components/Avatar.stories.tsx +0 -22
  181. package/src/components/Avatar.tsx +0 -88
  182. package/src/components/Badge/Badge.stories.tsx +0 -122
  183. package/src/components/Badge/Badge.tsx +0 -71
  184. package/src/components/Badge/BadgeAddon.tsx +0 -63
  185. package/src/components/Badge/BadgeButton.tsx +0 -40
  186. package/src/components/Badge/BadgeLabel.tsx +0 -37
  187. package/src/components/Badge/BadgeRoot.tsx +0 -21
  188. package/src/components/Badge/index.ts +0 -1
  189. package/src/components/Badge/styles.ts +0 -74
  190. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +0 -135
  191. package/src/components/Breadcrumb/Breadcrumb.tsx +0 -23
  192. package/src/components/Breadcrumb/BreadcrumbEllipsis.tsx +0 -43
  193. package/src/components/Breadcrumb/BreadcrumbItem.tsx +0 -9
  194. package/src/components/Breadcrumb/BreadcrumbLink.tsx +0 -48
  195. package/src/components/Breadcrumb/BreadcrumbList.tsx +0 -26
  196. package/src/components/Breadcrumb/BreadcrumbPage.tsx +0 -22
  197. package/src/components/Breadcrumb/BreadcrumbSeparator.tsx +0 -28
  198. package/src/components/Breadcrumb/index.ts +0 -1
  199. package/src/components/Button/Button.stories.tsx +0 -80
  200. package/src/components/Button/Button.tsx +0 -110
  201. package/src/components/Button/ButtonInline.stories.tsx +0 -54
  202. package/src/components/Button/ButtonInline.tsx +0 -77
  203. package/src/components/Button/index.ts +0 -3
  204. package/src/components/Button/styles.ts +0 -313
  205. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +0 -140
  206. package/src/components/ButtonGroup/ButtonGroup.tsx +0 -79
  207. package/src/components/ButtonGroup/index.ts +0 -1
  208. package/src/components/Calendar/Calendar.stories.tsx +0 -101
  209. package/src/components/Calendar/Calendar.tsx +0 -44
  210. package/src/components/Calendar/index.ts +0 -2
  211. package/src/components/Card/Card.stories.tsx +0 -60
  212. package/src/components/Card/Card.tsx +0 -42
  213. package/src/components/Card/CardContent.tsx +0 -5
  214. package/src/components/Card/CardHeader.tsx +0 -5
  215. package/src/components/Card/CardTitle.tsx +0 -13
  216. package/src/components/Card/index.ts +0 -1
  217. package/src/components/Card/styles.ts +0 -32
  218. package/src/components/Checkbox/Checkbox.stories.tsx +0 -210
  219. package/src/components/Checkbox/Checkbox.test.tsx +0 -140
  220. package/src/components/Checkbox/Checkbox.tsx +0 -83
  221. package/src/components/Checkbox/index.ts +0 -1
  222. package/src/components/Checkbox/styles.ts +0 -77
  223. package/src/components/Clipboard/Clipboard.stories.tsx +0 -44
  224. package/src/components/Clipboard/Clipboard.tsx +0 -89
  225. package/src/components/Clipboard/index.ts +0 -1
  226. package/src/components/CodeEditor/ButtonToolbar.tsx +0 -14
  227. package/src/components/CodeEditor/CodeEditor.tsx +0 -155
  228. package/src/components/CodeEditor/SqlEditor.stories.tsx +0 -76
  229. package/src/components/CodeEditor/SqlEditor.tsx +0 -206
  230. package/src/components/CodeEditor/ToggleComponentHelp.tsx +0 -7
  231. package/src/components/CodeEditor/activeQueryHighlight.test.ts +0 -178
  232. package/src/components/CodeEditor/activeQueryHighlight.ts +0 -245
  233. package/src/components/CodeEditor/helpers.ts +0 -100
  234. package/src/components/CodeEditor/highlighting.ts +0 -184
  235. package/src/components/CodeEditor/index.ts +0 -3
  236. package/src/components/CodeEditor/search.ts +0 -186
  237. package/src/components/Collapse.stories.tsx +0 -56
  238. package/src/components/Collapse.tsx +0 -61
  239. package/src/components/Collapsible/Collapsible.stories.tsx +0 -55
  240. package/src/components/Collapsible/Collapsible.tsx +0 -11
  241. package/src/components/Collapsible/CollapsibleContent.tsx +0 -25
  242. package/src/components/Collapsible/index.ts +0 -1
  243. package/src/components/CollapsiblePanel.stories.tsx +0 -25
  244. package/src/components/CollapsiblePanel.tsx +0 -127
  245. package/src/components/Combobox/Combobox.stories.tsx +0 -426
  246. package/src/components/Combobox/Combobox.test.tsx +0 -165
  247. package/src/components/Combobox/Combobox.tsx +0 -345
  248. package/src/components/Combobox/ComboboxChips.tsx +0 -68
  249. package/src/components/Combobox/ComboboxContent.tsx +0 -95
  250. package/src/components/Combobox/ComboboxEmpty.tsx +0 -30
  251. package/src/components/Combobox/ComboboxInput.tsx +0 -10
  252. package/src/components/Combobox/ComboboxInputGroup.tsx +0 -38
  253. package/src/components/Combobox/ComboboxItem.tsx +0 -70
  254. package/src/components/Combobox/ComboboxItemIndicator.tsx +0 -78
  255. package/src/components/Combobox/ComboboxList.tsx +0 -32
  256. package/src/components/Combobox/ComboboxRoot.tsx +0 -5
  257. package/src/components/Combobox/ComboboxSeparator.tsx +0 -20
  258. package/src/components/Combobox/Group/ComboboxCollection.tsx +0 -7
  259. package/src/components/Combobox/Group/ComboboxGroup.tsx +0 -23
  260. package/src/components/Combobox/Group/ComboboxGroupLabel.tsx +0 -38
  261. package/src/components/Combobox/Group/index.ts +0 -3
  262. package/src/components/Combobox/index.ts +0 -1
  263. package/src/components/Combobox/types.ts +0 -22
  264. package/src/components/Combobox/utils.test.ts +0 -95
  265. package/src/components/Combobox/utils.ts +0 -103
  266. package/src/components/Command/Command.stories.tsx +0 -367
  267. package/src/components/Command/Command.tsx +0 -37
  268. package/src/components/Command/CommandContent.tsx +0 -19
  269. package/src/components/Command/CommandEmpty.tsx +0 -6
  270. package/src/components/Command/CommandGroup.tsx +0 -26
  271. package/src/components/Command/CommandInput.tsx +0 -27
  272. package/src/components/Command/CommandItem/CheckIndicator.tsx +0 -86
  273. package/src/components/Command/CommandItem/CommandItem.tsx +0 -94
  274. package/src/components/Command/CommandItem/index.ts +0 -1
  275. package/src/components/Command/CommandList.tsx +0 -32
  276. package/src/components/Command/CommandSeparator.tsx +0 -13
  277. package/src/components/Command/index.ts +0 -6
  278. package/src/components/DatePicker/DatePicker.tsx +0 -37
  279. package/src/components/DatePicker/index.ts +0 -1
  280. package/src/components/DiffView/DiffView.stories.tsx +0 -80
  281. package/src/components/DiffView/DiffView.tsx +0 -131
  282. package/src/components/DiffView/DiffViewMark.tsx +0 -21
  283. package/src/components/DiffView/DiffViewTd.tsx +0 -84
  284. package/src/components/DiffView/DiffViewTh.tsx +0 -23
  285. package/src/components/DiffView/index.ts +0 -11
  286. package/src/components/DiffView/util.test.ts +0 -231
  287. package/src/components/DiffView/util.ts +0 -311
  288. package/src/components/DotsLoader.tsx +0 -22
  289. package/src/components/DropdownMenu/DropdownMenu.stories.tsx +0 -310
  290. package/src/components/DropdownMenu/DropdownMenu.tsx +0 -61
  291. package/src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx +0 -55
  292. package/src/components/DropdownMenu/DropdownMenuContent.tsx +0 -52
  293. package/src/components/DropdownMenu/DropdownMenuContext.tsx +0 -13
  294. package/src/components/DropdownMenu/DropdownMenuItem.tsx +0 -80
  295. package/src/components/DropdownMenu/DropdownMenuItemDescription.tsx +0 -42
  296. package/src/components/DropdownMenu/DropdownMenuItemIndicator.tsx +0 -104
  297. package/src/components/DropdownMenu/DropdownMenuLabel.tsx +0 -21
  298. package/src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioGroup.tsx +0 -31
  299. package/src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioItem.tsx +0 -67
  300. package/src/components/DropdownMenu/DropdownMenuRadioGroup/index.ts +0 -2
  301. package/src/components/DropdownMenu/DropdownMenuSeparator.tsx +0 -35
  302. package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSub.tsx +0 -3
  303. package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubContent.tsx +0 -21
  304. package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubTrigger.tsx +0 -17
  305. package/src/components/DropdownMenu/DropdownMenuSub/index.ts +0 -3
  306. package/src/components/DropdownMenu/DropdownMenuTrigger.tsx +0 -19
  307. package/src/components/DropdownMenu/ItemIcon.tsx +0 -30
  308. package/src/components/DropdownMenu/index.ts +0 -1
  309. package/src/components/DropdownMenu/styles.ts +0 -82
  310. package/src/components/EmptySearchContent.stories.tsx +0 -12
  311. package/src/components/EmptySearchContent.tsx +0 -13
  312. package/src/components/FieldBox/FieldBox.stories.tsx +0 -138
  313. package/src/components/FieldBox/FieldBox.tsx +0 -43
  314. package/src/components/FieldBox/FieldBoxDescription.tsx +0 -18
  315. package/src/components/FieldBox/FieldBoxTitle.tsx +0 -20
  316. package/src/components/FieldBox/index.ts +0 -1
  317. package/src/components/FieldBox/styles.ts +0 -37
  318. package/src/components/FormGroup/FormGroup.stories.tsx +0 -120
  319. package/src/components/FormGroup/FormGroup.tsx +0 -48
  320. package/src/components/FormGroup/FormGroupColorInput.tsx +0 -15
  321. package/src/components/FormGroup/FormGroupHelp.tsx +0 -17
  322. package/src/components/FormGroup/FormGroupNumberInput.tsx +0 -15
  323. package/src/components/FormGroup/FormGroupTextInput.tsx +0 -15
  324. package/src/components/FormGroup/FormGroupTextarea.tsx +0 -12
  325. package/src/components/FormGroup/context.ts +0 -11
  326. package/src/components/FormGroup/index.ts +0 -2
  327. package/src/components/FormGroup/types.ts +0 -5
  328. package/src/components/FullScreenModal/FullScreenModal.tsx +0 -8
  329. package/src/components/FullScreenModal/FullScreenModalBody.tsx +0 -16
  330. package/src/components/FullScreenModal/FullScreenModalHeader.tsx +0 -92
  331. package/src/components/FullScreenModal/FullScreenModalRoot.tsx +0 -79
  332. package/src/components/FullScreenModal/index.ts +0 -3
  333. package/src/components/HelpBlock/HelpBlock.stories.tsx +0 -28
  334. package/src/components/HelpBlock/HelpBlock.tsx +0 -31
  335. package/src/components/HelpBlock/index.ts +0 -1
  336. package/src/components/HoverCard/HoverCard.stories.tsx +0 -77
  337. package/src/components/HoverCard/HoverCard.tsx +0 -13
  338. package/src/components/HoverCard/HoverCardContent.tsx +0 -68
  339. package/src/components/HoverCard/index.ts +0 -1
  340. package/src/components/Icon/Icon.stories.tsx +0 -26
  341. package/src/components/Icon/Icon.tsx +0 -10
  342. package/src/components/Icon/Icons.mdx +0 -28
  343. package/src/components/Icon/constants.ts +0 -1
  344. package/src/components/Icon/index.ts +0 -27
  345. package/src/components/Input/DateInput/DateInput.stories.tsx +0 -58
  346. package/src/components/Input/DateInput/DateInput.tsx +0 -143
  347. package/src/components/Input/DateInput/helpers.test.ts +0 -102
  348. package/src/components/Input/DateInput/helpers.ts +0 -59
  349. package/src/components/Input/DateInput/index.ts +0 -1
  350. package/src/components/Input/DateRangeInput/DateRangeInput.stories.tsx +0 -66
  351. package/src/components/Input/DateRangeInput/DateRangeInput.tsx +0 -139
  352. package/src/components/Input/DateRangeInput/helpers.test.ts +0 -146
  353. package/src/components/Input/DateRangeInput/helpers.ts +0 -36
  354. package/src/components/Input/DateRangeInput/index.ts +0 -1
  355. package/src/components/Input/Input.stories.tsx +0 -93
  356. package/src/components/Input/Input.test.tsx +0 -112
  357. package/src/components/Input/Input.tsx +0 -163
  358. package/src/components/Input/TextInput/TextInput.stories.tsx +0 -68
  359. package/src/components/Input/TextInput/TextInput.test.tsx +0 -52
  360. package/src/components/Input/TextInput/TextInput.tsx +0 -73
  361. package/src/components/Input/TextInput/index.ts +0 -1
  362. package/src/components/Input/TimeInput/TimeInput.stories.tsx +0 -89
  363. package/src/components/Input/TimeInput/TimeInput.tsx +0 -106
  364. package/src/components/Input/TimeInput/index.ts +0 -1
  365. package/src/components/Input/index.ts +0 -4
  366. package/src/components/Input/utils.ts +0 -11
  367. package/src/components/InputGroup/InputGroup.stories.tsx +0 -215
  368. package/src/components/InputGroup/InputGroup.tsx +0 -228
  369. package/src/components/InputGroup/InputGroupAddon.tsx +0 -57
  370. package/src/components/InputGroup/InputGroupButton.tsx +0 -25
  371. package/src/components/InputGroup/InputGroupInput.tsx +0 -34
  372. package/src/components/InputGroup/InputGroupText.tsx +0 -21
  373. package/src/components/InputGroup/InputGroupTextArea.tsx +0 -78
  374. package/src/components/InputGroup/index.ts +0 -1
  375. package/src/components/Kbd/Kbd.stories.tsx +0 -82
  376. package/src/components/Kbd/Kbd.tsx +0 -17
  377. package/src/components/Kbd/KbdGroup.tsx +0 -35
  378. package/src/components/Kbd/KbdSeparator.tsx +0 -9
  379. package/src/components/Kbd/index.ts +0 -3
  380. package/src/components/Kbd/keyboardKeys.ts +0 -40
  381. package/src/components/Kbd/styles.ts +0 -39
  382. package/src/components/Label/Label.stories.tsx +0 -53
  383. package/src/components/Label/Label.tsx +0 -31
  384. package/src/components/Label/index.ts +0 -1
  385. package/src/components/Link.stories.tsx +0 -19
  386. package/src/components/Link.tsx +0 -37
  387. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +0 -182
  388. package/src/components/MarkdownEditor/MarkdownEditor.test.ts +0 -171
  389. package/src/components/MarkdownEditor/MarkdownEditor.tsx +0 -245
  390. package/src/components/MarkdownEditor/context.ts +0 -10
  391. package/src/components/MarkdownEditor/index.ts +0 -1
  392. package/src/components/MarkdownEditor/nodes/ImageNode.tsx +0 -115
  393. package/src/components/MarkdownEditor/nodes/ImageNodeComponent.tsx +0 -18
  394. package/src/components/MarkdownEditor/nodes/MermaidNode.tsx +0 -72
  395. package/src/components/MarkdownEditor/nodes/MermaidNodeComponent.tsx +0 -35
  396. package/src/components/MarkdownEditor/plugins/ImagePastePlugin.tsx +0 -149
  397. package/src/components/MarkdownEditor/plugins/KeyboardPlugin.tsx +0 -81
  398. package/src/components/MarkdownEditor/plugins/MarkdownSyncPlugin.tsx +0 -65
  399. package/src/components/MarkdownEditor/plugins/ToolbarPlugin.tsx +0 -284
  400. package/src/components/MarkdownEditor/plugins/toolbar/AlignmentDropdown.tsx +0 -99
  401. package/src/components/MarkdownEditor/plugins/toolbar/BlockTypeDropdown.tsx +0 -142
  402. package/src/components/MarkdownEditor/plugins/toolbar/LinkPanel.tsx +0 -160
  403. package/src/components/MarkdownEditor/plugins/toolbar/ToolbarButton.tsx +0 -36
  404. package/src/components/MarkdownEditor/plugins/toolbar/ToolbarDivider.tsx +0 -1
  405. package/src/components/MarkdownEditor/theme.ts +0 -39
  406. package/src/components/MarkdownEditor/transformers.ts +0 -189
  407. package/src/components/MarkedText/MarkedText.stories.tsx +0 -46
  408. package/src/components/MarkedText/MarkedText.tsx +0 -36
  409. package/src/components/MarkedText/index.ts +0 -1
  410. package/src/components/MarkedText/utils.test.ts +0 -193
  411. package/src/components/MarkedText/utils.ts +0 -37
  412. package/src/components/MergeEditor/AcceptControls/AcceptButton.tsx +0 -25
  413. package/src/components/MergeEditor/AcceptControls/AcceptControls.tsx +0 -77
  414. package/src/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.tsx +0 -38
  415. package/src/components/MergeEditor/MergeEditor.stories.tsx +0 -226
  416. package/src/components/MergeEditor/MergeEditor.tsx +0 -125
  417. package/src/components/MergeEditor/MergePane.tsx +0 -113
  418. package/src/components/MergeEditor/PaneHeader.tsx +0 -11
  419. package/src/components/MergeEditor/constants.ts +0 -48
  420. package/src/components/MergeEditor/decorations.ts +0 -126
  421. package/src/components/MergeEditor/helpers.test.ts +0 -172
  422. package/src/components/MergeEditor/helpers.ts +0 -118
  423. package/src/components/MergeEditor/index.ts +0 -5
  424. package/src/components/MergeEditor/useMergeDiff.ts +0 -573
  425. package/src/components/MergeEditor/useScrollSync.ts +0 -79
  426. package/src/components/Modal/Modal.stories.tsx +0 -680
  427. package/src/components/Modal/Modal.tsx +0 -49
  428. package/src/components/Modal/ModalBody.tsx +0 -33
  429. package/src/components/Modal/ModalCloseIcon.tsx +0 -31
  430. package/src/components/Modal/ModalContent.tsx +0 -95
  431. package/src/components/Modal/ModalDescription.tsx +0 -20
  432. package/src/components/Modal/ModalFooter.tsx +0 -20
  433. package/src/components/Modal/ModalHeader.tsx +0 -61
  434. package/src/components/Modal/ModalIcon.tsx +0 -109
  435. package/src/components/Modal/ModalOverlay.tsx +0 -42
  436. package/src/components/Modal/ModalTitle.tsx +0 -12
  437. package/src/components/Modal/index.ts +0 -1
  438. package/src/components/Navbar/Navbar.stories.tsx +0 -191
  439. package/src/components/Navbar/Navbar.tsx +0 -80
  440. package/src/components/Navbar/NavbarContent.tsx +0 -20
  441. package/src/components/Navbar/NavbarFooter.tsx +0 -11
  442. package/src/components/Navbar/NavbarHeader.tsx +0 -11
  443. package/src/components/Navbar/NavbarMenu.tsx +0 -30
  444. package/src/components/Navbar/NavbarMenuAvatar.tsx +0 -67
  445. package/src/components/Navbar/NavbarMenuButton.tsx +0 -135
  446. package/src/components/Navbar/NavbarMenuItem.tsx +0 -9
  447. package/src/components/Navbar/NavbarMenuItemAdornment.tsx +0 -65
  448. package/src/components/Navbar/index.ts +0 -1
  449. package/src/components/Pagination/Pagination.stories.tsx +0 -131
  450. package/src/components/Pagination/Pagination.tsx +0 -34
  451. package/src/components/Pagination/PaginationButton.tsx +0 -36
  452. package/src/components/Pagination/PaginationContent.tsx +0 -12
  453. package/src/components/Pagination/PaginationEllipsis.tsx +0 -26
  454. package/src/components/Pagination/PaginationItem.tsx +0 -9
  455. package/src/components/Pagination/PaginationNext.tsx +0 -20
  456. package/src/components/Pagination/PaginationPrevious.tsx +0 -14
  457. package/src/components/Pagination/index.ts +0 -1
  458. package/src/components/PanelWithDetails.stories.tsx +0 -28
  459. package/src/components/PanelWithDetails.tsx +0 -65
  460. package/src/components/Popconfirm/Popconfirm.stories.tsx +0 -373
  461. package/src/components/Popconfirm/Popconfirm.tsx +0 -82
  462. package/src/components/Popconfirm/PopconfirmBody.tsx +0 -5
  463. package/src/components/Popconfirm/PopconfirmCancel.tsx +0 -45
  464. package/src/components/Popconfirm/PopconfirmConfirm.tsx +0 -57
  465. package/src/components/Popconfirm/PopconfirmContent.tsx +0 -33
  466. package/src/components/Popconfirm/PopconfirmFooter.tsx +0 -9
  467. package/src/components/Popconfirm/PopconfirmTrigger.tsx +0 -22
  468. package/src/components/Popconfirm/context.ts +0 -19
  469. package/src/components/Popconfirm/index.ts +0 -1
  470. package/src/components/Popover/Popover.stories.tsx +0 -85
  471. package/src/components/Popover/Popover.tsx +0 -15
  472. package/src/components/Popover/PopoverContent.tsx +0 -103
  473. package/src/components/Popover/index.ts +0 -1
  474. package/src/components/Progress/Progress.stories.tsx +0 -67
  475. package/src/components/Progress/Progress.tsx +0 -45
  476. package/src/components/Progress/index.ts +0 -1
  477. package/src/components/RadioGroup/Radio.tsx +0 -61
  478. package/src/components/RadioGroup/RadioGroup.stories.tsx +0 -300
  479. package/src/components/RadioGroup/RadioGroup.tsx +0 -64
  480. package/src/components/RadioGroup/RadioGroupItem.tsx +0 -60
  481. package/src/components/RadioGroup/RadioGroupItemButton.tsx +0 -79
  482. package/src/components/RadioGroup/RadioGroupSeparator.tsx +0 -12
  483. package/src/components/RadioGroup/context.ts +0 -13
  484. package/src/components/RadioGroup/index.ts +0 -1
  485. package/src/components/Resizable/Resizable.stories.tsx +0 -50
  486. package/src/components/Resizable/ResizableHandle.tsx +0 -50
  487. package/src/components/Resizable/ResizablePanel.tsx +0 -12
  488. package/src/components/Resizable/ResizablePanelGroup.tsx +0 -19
  489. package/src/components/Resizable/index.ts +0 -3
  490. package/src/components/ScrollArea/ScrollArea.stories.tsx +0 -43
  491. package/src/components/ScrollArea/ScrollArea.tsx +0 -50
  492. package/src/components/ScrollArea/ScrollBar.tsx +0 -32
  493. package/src/components/ScrollArea/index.ts +0 -2
  494. package/src/components/Search/ClearButton.tsx +0 -42
  495. package/src/components/Search/Search.stories.tsx +0 -77
  496. package/src/components/Search/Search.test.tsx +0 -224
  497. package/src/components/Search/Search.tsx +0 -139
  498. package/src/components/Search/SearchForm.tsx +0 -37
  499. package/src/components/Search/index.ts +0 -2
  500. package/src/components/Search/styles.ts +0 -88
  501. package/src/components/Search/utils.ts +0 -11
  502. package/src/components/Select/Select.stories.tsx +0 -109
  503. package/src/components/Select/Select.tsx +0 -141
  504. package/src/components/Select/SelectContent.tsx +0 -110
  505. package/src/components/Select/SelectGroup.tsx +0 -10
  506. package/src/components/Select/SelectItem.tsx +0 -72
  507. package/src/components/Select/SelectLabel.tsx +0 -32
  508. package/src/components/Select/SelectRoot.tsx +0 -6
  509. package/src/components/Select/SelectSeparator.tsx +0 -13
  510. package/src/components/Select/SelectTrigger.tsx +0 -161
  511. package/src/components/Select/index.ts +0 -1
  512. package/src/components/Separator/Separator.stories.tsx +0 -60
  513. package/src/components/Separator/Separator.test.tsx +0 -39
  514. package/src/components/Separator/Separator.tsx +0 -115
  515. package/src/components/Separator/index.ts +0 -1
  516. package/src/components/Sheet/Sheet.stories.tsx +0 -63
  517. package/src/components/Sheet/Sheet.tsx +0 -21
  518. package/src/components/Sheet/SheetBody.tsx +0 -12
  519. package/src/components/Sheet/SheetContent.tsx +0 -131
  520. package/src/components/Sheet/SheetFooter.tsx +0 -9
  521. package/src/components/Sheet/SheetHeader.tsx +0 -39
  522. package/src/components/Sheet/SheetOverlay.tsx +0 -11
  523. package/src/components/Sheet/SheetTitle.tsx +0 -12
  524. package/src/components/Sheet/index.ts +0 -1
  525. package/src/components/Sidebar/Sidebar.stories.tsx +0 -849
  526. package/src/components/Sidebar/Sidebar.tsx +0 -225
  527. package/src/components/Sidebar/SidebarContent.tsx +0 -61
  528. package/src/components/Sidebar/SidebarFillTrigger.tsx +0 -25
  529. package/src/components/Sidebar/SidebarFooter.tsx +0 -13
  530. package/src/components/Sidebar/SidebarGroup/SidebarGroup.tsx +0 -23
  531. package/src/components/Sidebar/SidebarGroup/SidebarGroupAction.tsx +0 -53
  532. package/src/components/Sidebar/SidebarGroup/SidebarGroupContent.tsx +0 -20
  533. package/src/components/Sidebar/SidebarGroup/SidebarGroupLabel.tsx +0 -76
  534. package/src/components/Sidebar/SidebarGroup/index.ts +0 -4
  535. package/src/components/Sidebar/SidebarHeader.tsx +0 -20
  536. package/src/components/Sidebar/SidebarInstanceContext.ts +0 -18
  537. package/src/components/Sidebar/SidebarMenu/SidebarMenu.tsx +0 -28
  538. package/src/components/Sidebar/SidebarMenu/SidebarMenuAction.tsx +0 -69
  539. package/src/components/Sidebar/SidebarMenu/SidebarMenuBadge.tsx +0 -56
  540. package/src/components/Sidebar/SidebarMenu/SidebarMenuButton.tsx +0 -110
  541. package/src/components/Sidebar/SidebarMenu/SidebarMenuCard.tsx +0 -108
  542. package/src/components/Sidebar/SidebarMenu/SidebarMenuIcon.tsx +0 -30
  543. package/src/components/Sidebar/SidebarMenu/SidebarMenuItem.tsx +0 -9
  544. package/src/components/Sidebar/SidebarMenu/SidebarMenuSub.tsx +0 -139
  545. package/src/components/Sidebar/SidebarMenu/SidebarMenuSubItem.tsx +0 -106
  546. package/src/components/Sidebar/SidebarMenu/SidebarSearchInput.tsx +0 -88
  547. package/src/components/Sidebar/SidebarMenu/index.ts +0 -10
  548. package/src/components/Sidebar/SidebarProvider/SidebarProvider.tsx +0 -171
  549. package/src/components/Sidebar/SidebarProvider/context.ts +0 -35
  550. package/src/components/Sidebar/SidebarProvider/index.ts +0 -2
  551. package/src/components/Sidebar/SidebarProvider/useHoverTracking.test.ts +0 -199
  552. package/src/components/Sidebar/SidebarProvider/useHoverTracking.ts +0 -72
  553. package/src/components/Sidebar/SidebarProvider/useSidebarState.ts +0 -50
  554. package/src/components/Sidebar/SidebarProvider/useTransitionPresence.test.ts +0 -179
  555. package/src/components/Sidebar/SidebarProvider/useTransitionPresence.ts +0 -53
  556. package/src/components/Sidebar/SidebarResizeHandle.tsx +0 -28
  557. package/src/components/Sidebar/SidebarSeparator.tsx +0 -15
  558. package/src/components/Sidebar/SidebarTrigger.tsx +0 -40
  559. package/src/components/Sidebar/index.ts +0 -3
  560. package/src/components/Sidebar/types.ts +0 -6
  561. package/src/components/Sidebar/useResizeSidebar.ts +0 -112
  562. package/src/components/Sidebar/utils.test.ts +0 -178
  563. package/src/components/Sidebar/utils.ts +0 -70
  564. package/src/components/Skeleton/Skeleton.stories.tsx +0 -106
  565. package/src/components/Skeleton/Skeleton.tsx +0 -77
  566. package/src/components/Skeleton/SkeletonList.stories.tsx +0 -11
  567. package/src/components/Skeleton/SkeletonList.tsx +0 -65
  568. package/src/components/Slider/Slider.stories.tsx +0 -99
  569. package/src/components/Slider/Slider.tsx +0 -85
  570. package/src/components/Slider/SliderThumb.tsx +0 -57
  571. package/src/components/Slider/SliderTrack.tsx +0 -49
  572. package/src/components/Slider/index.ts +0 -1
  573. package/src/components/Slider/useInteracting.test.ts +0 -159
  574. package/src/components/Slider/useInteracting.ts +0 -64
  575. package/src/components/Switch/Switch.stories.tsx +0 -177
  576. package/src/components/Switch/Switch.tsx +0 -58
  577. package/src/components/Switch/index.ts +0 -1
  578. package/src/components/Switch/styles.ts +0 -173
  579. package/src/components/Table/Table.stories.tsx +0 -328
  580. package/src/components/Table/Table.tsx +0 -68
  581. package/src/components/Table/TableBody.tsx +0 -22
  582. package/src/components/Table/TableCell.tsx +0 -7
  583. package/src/components/Table/TableFooter.tsx +0 -15
  584. package/src/components/Table/TableHead.tsx +0 -15
  585. package/src/components/Table/TableHeader.tsx +0 -20
  586. package/src/components/Table/TableRow.tsx +0 -11
  587. package/src/components/Table/index.ts +0 -1
  588. package/src/components/Tabs.stories.tsx +0 -123
  589. package/src/components/Tabs.tsx +0 -134
  590. package/src/components/ThemeProvider/AIGradientSvg.tsx +0 -18
  591. package/src/components/ThemeProvider/ThemeProvider.tsx +0 -25
  592. package/src/components/ThemeProvider/index.ts +0 -1
  593. package/src/components/TimePicker/TimePicker.tsx +0 -95
  594. package/src/components/TimePicker/TimePickerButton.tsx +0 -39
  595. package/src/components/TimePicker/index.ts +0 -1
  596. package/src/components/TimePicker/utils.ts +0 -31
  597. package/src/components/Timeline/Timeline.stories.tsx +0 -246
  598. package/src/components/Timeline/Timeline.tsx +0 -35
  599. package/src/components/Timeline/TimelineConnector.tsx +0 -158
  600. package/src/components/Timeline/TimelineContent.tsx +0 -18
  601. package/src/components/Timeline/TimelineItem.tsx +0 -14
  602. package/src/components/Timeline/index.ts +0 -1
  603. package/src/components/Timeline/useLastLineHeight.ts +0 -36
  604. package/src/components/Toast/Toast.stories.tsx +0 -178
  605. package/src/components/Toast/ToastAction.tsx +0 -40
  606. package/src/components/Toast/ToastDescription.tsx +0 -28
  607. package/src/components/Toast/ToastDismiss.tsx +0 -36
  608. package/src/components/Toast/ToastDuration.tsx +0 -43
  609. package/src/components/Toast/ToastRoot.tsx +0 -135
  610. package/src/components/Toast/ToastTitle.tsx +0 -33
  611. package/src/components/Toast/Toaster.tsx +0 -25
  612. package/src/components/Toast/index.ts +0 -3
  613. package/src/components/Toast/toast.tsx +0 -94
  614. package/src/components/Toast/useNotification.tsx +0 -33
  615. package/src/components/Toggle/Toggle.stories.tsx +0 -67
  616. package/src/components/Toggle/Toggle.tsx +0 -202
  617. package/src/components/Toggle/index.ts +0 -1
  618. package/src/components/ToggleGroup/ToggleGroup.stories.tsx +0 -60
  619. package/src/components/ToggleGroup/ToggleGroup.tsx +0 -99
  620. package/src/components/ToggleGroup/index.ts +0 -1
  621. package/src/components/Tooltip/Tooltip.stories.tsx +0 -82
  622. package/src/components/Tooltip/Tooltip.tsx +0 -110
  623. package/src/components/Tooltip/TooltipContent.tsx +0 -90
  624. package/src/components/Tooltip/TooltipRoot.tsx +0 -12
  625. package/src/components/Tooltip/TooltipTrigger.tsx +0 -42
  626. package/src/components/Tooltip/index.ts +0 -1
  627. package/src/components/Truncated.stories.tsx +0 -72
  628. package/src/components/Truncated.tsx +0 -78
  629. package/src/components/ZoomableSvg/ZoomableSvg.stories.tsx +0 -53
  630. package/src/components/ZoomableSvg/ZoomableSvg.tsx +0 -200
  631. package/src/components/ZoomableSvg/index.ts +0 -1
  632. package/src/constants/keyCodes.ts +0 -5
  633. package/src/docs/Colors.mdx +0 -19
  634. package/src/docs/Spacing.mdx +0 -35
  635. package/src/docs/Typography.mdx +0 -63
  636. package/src/docs/components/Typeset.tsx +0 -35
  637. package/src/hooks/useAutosizeInput.stories.tsx +0 -142
  638. package/src/hooks/useAutosizeInput.test.tsx +0 -77
  639. package/src/hooks/useAutosizeInput.tsx +0 -107
  640. package/src/hooks/useElement.ts +0 -16
  641. package/src/hooks/useScrollbarPosition.ts +0 -68
  642. package/src/icon-names.ts +0 -20
  643. package/src/icons/Keboola.tsx +0 -28
  644. package/src/icons/icons.stories.tsx +0 -174
  645. package/src/icons/index.ts +0 -188
  646. package/src/index.ts +0 -90
  647. package/src/patterns/AlertWithAction.stories.tsx +0 -30
  648. package/src/patterns/CardWithEmptyState.stories.tsx +0 -66
  649. package/src/patterns/ConfirmDialog.stories.tsx +0 -72
  650. package/src/patterns/CreatableMultiCombobox.stories.tsx +0 -33
  651. package/src/patterns/DataCardWithSkeleton.stories.tsx +0 -48
  652. package/src/patterns/DisabledButtonTooltip.stories.tsx +0 -30
  653. package/src/patterns/FilterToolbar.stories.tsx +0 -275
  654. package/src/patterns/InfoTooltip.stories.tsx +0 -56
  655. package/src/patterns/ListDetail.stories.tsx +0 -65
  656. package/src/patterns/ModalForm.stories.tsx +0 -59
  657. package/src/patterns/PageHeaderTabs.stories.tsx +0 -48
  658. package/src/utils/classNames.test.ts +0 -16
  659. package/src/utils/classNames.ts +0 -27
  660. package/src/utils/copyToClipboard.ts +0 -3
  661. package/src/utils/createChangeInputEvent.ts +0 -28
  662. package/src/utils/createPrefixedString.ts +0 -2
  663. package/src/utils/debounce.test.ts +0 -63
  664. package/src/utils/debounce.ts +0 -17
  665. package/src/utils/decorators.tsx +0 -16
  666. package/src/utils/escapeStringRegexp.ts +0 -4
  667. package/src/utils/index.ts +0 -11
  668. package/src/utils/isMac.ts +0 -26
  669. package/src/utils/legacyIcon.tsx +0 -28
  670. package/src/utils/mergeRefs.ts +0 -23
  671. package/src/utils/noop.ts +0 -1
  672. package/src/utils/useSHA256.ts +0 -21
  673. package/src/vite-env.d.ts +0 -1
@@ -1,219 +0,0 @@
1
- import type { ReactElement } from 'react';
2
- import { fireEvent, render, screen } from '@testing-library/react';
3
- import { afterEach, describe, expect, it, vi } from 'vitest';
4
-
5
- import { PasswordInput } from './PasswordInput';
6
-
7
- const renderInput = (ui: ReactElement) => render(ui);
8
-
9
- const getInput = () => screen.getByPlaceholderText('Password') as HTMLInputElement;
10
- const queryClearButton = () => screen.queryByLabelText('Clear password');
11
- const queryShowButton = () => screen.queryByLabelText('Show password');
12
- const queryHideButton = () => screen.queryByLabelText('Hide password');
13
- const queryCapsLockIcon = () => screen.queryByTitle('Caps Lock is on');
14
-
15
- describe('<PasswordInput />', () => {
16
- describe('controlled state', () => {
17
- it('renders empty when value is null', () => {
18
- renderInput(<PasswordInput placeholder="Password" value={null} />);
19
- expect(getInput().value).toBe('');
20
- });
21
-
22
- it('renders empty when value is undefined and no defaultValue', () => {
23
- renderInput(<PasswordInput placeholder="Password" />);
24
- expect(getInput().value).toBe('');
25
- });
26
-
27
- it('renders the controlled value', () => {
28
- renderInput(<PasswordInput placeholder="Password" value="hunter2" onValueChange={vi.fn()} />);
29
- expect(getInput().value).toBe('hunter2');
30
- });
31
-
32
- it('emits raw onValueChange on every keystroke', () => {
33
- const onValueChange = vi.fn();
34
- renderInput(<PasswordInput placeholder="Password" value="" onValueChange={onValueChange} />);
35
- fireEvent.change(getInput(), { target: { value: 'abc' } });
36
- expect(onValueChange).toHaveBeenCalledWith('abc');
37
- });
38
-
39
- it('emits the value verbatim via onValueBlur (no trimming)', () => {
40
- const onValueBlur = vi.fn();
41
- renderInput(
42
- <PasswordInput placeholder="Password" value=" spaces " onValueBlur={onValueBlur} />,
43
- );
44
- fireEvent.blur(getInput());
45
- expect(onValueBlur).toHaveBeenCalledWith(' spaces ');
46
- });
47
- });
48
-
49
- describe('uncontrolled state', () => {
50
- it('seeds the input from defaultValue', () => {
51
- renderInput(<PasswordInput placeholder="Password" defaultValue="seed" />);
52
- expect(getInput().value).toBe('seed');
53
- });
54
-
55
- it('treats null defaultValue as empty', () => {
56
- renderInput(<PasswordInput placeholder="Password" defaultValue={null} />);
57
- expect(getInput().value).toBe('');
58
- });
59
-
60
- it('keeps raw text in the DOM while typing', () => {
61
- const onValueChange = vi.fn();
62
- renderInput(<PasswordInput placeholder="Password" onValueChange={onValueChange} />);
63
- const input = getInput();
64
- fireEvent.change(input, { target: { value: 'p4ss' } });
65
- expect(input.value).toBe('p4ss');
66
- expect(onValueChange).toHaveBeenLastCalledWith('p4ss');
67
- });
68
- });
69
-
70
- describe('clear button', () => {
71
- it('is hidden when allowClear is false', () => {
72
- renderInput(<PasswordInput placeholder="Password" defaultValue="abc" />);
73
- expect(queryClearButton()).toBeNull();
74
- });
75
-
76
- it('is hidden when there is no value', () => {
77
- renderInput(<PasswordInput placeholder="Password" allowClear />);
78
- expect(queryClearButton()).toBeNull();
79
- });
80
-
81
- it('is hidden when disabled', () => {
82
- renderInput(<PasswordInput placeholder="Password" allowClear disabled defaultValue="abc" />);
83
- expect(queryClearButton()).toBeNull();
84
- });
85
-
86
- it('is hidden when readOnly', () => {
87
- renderInput(<PasswordInput placeholder="Password" allowClear readOnly defaultValue="abc" />);
88
- expect(queryClearButton()).toBeNull();
89
- });
90
-
91
- it('clears the DOM input in uncontrolled mode and emits onValueChange("")', () => {
92
- const onValueChange = vi.fn();
93
- renderInput(
94
- <PasswordInput
95
- placeholder="Password"
96
- allowClear
97
- defaultValue="abc"
98
- onValueChange={onValueChange}
99
- />,
100
- );
101
- fireEvent.click(queryClearButton()!);
102
- expect(getInput().value).toBe('');
103
- expect(onValueChange).toHaveBeenCalledWith('');
104
- });
105
-
106
- it('emits onValueChange("") in controlled mode', () => {
107
- const onValueChange = vi.fn();
108
- renderInput(
109
- <PasswordInput
110
- placeholder="Password"
111
- allowClear
112
- value="abc"
113
- onValueChange={onValueChange}
114
- />,
115
- );
116
- fireEvent.click(queryClearButton()!);
117
- expect(onValueChange).toHaveBeenCalledWith('');
118
- });
119
-
120
- it('synthesizes an onChange event when clearing', () => {
121
- const onChange = vi.fn();
122
- renderInput(
123
- <PasswordInput placeholder="Password" allowClear defaultValue="abc" onChange={onChange} />,
124
- );
125
- fireEvent.click(queryClearButton()!);
126
- expect(onChange).toHaveBeenCalled();
127
- expect(onChange.mock.lastCall?.[0].target.value).toBe('');
128
- });
129
- });
130
-
131
- describe('password visibility toggle', () => {
132
- it('does not render the toggle when allowPasswordToggle is false', () => {
133
- renderInput(<PasswordInput placeholder="Password" />);
134
- expect(queryShowButton()).toBeNull();
135
- expect(queryHideButton()).toBeNull();
136
- });
137
-
138
- it('starts hidden by default and toggles to visible', () => {
139
- renderInput(<PasswordInput placeholder="Password" allowPasswordToggle />);
140
- const input = getInput();
141
- expect(input.type).toBe('password');
142
- fireEvent.click(queryShowButton()!);
143
- expect(input.type).toBe('text');
144
- fireEvent.click(queryHideButton()!);
145
- expect(input.type).toBe('password');
146
- });
147
-
148
- it('honors defaultPasswordVisibility', () => {
149
- renderInput(
150
- <PasswordInput placeholder="Password" allowPasswordToggle defaultPasswordVisibility />,
151
- );
152
- expect(getInput().type).toBe('text');
153
- expect(queryHideButton()).not.toBeNull();
154
- });
155
- });
156
-
157
- describe('Caps Lock indicator', () => {
158
- // jsdom's getModifierState always returns false; mock it on both KeyboardEvent
159
- // and MouseEvent (separate prototype methods). Call again to flip state.
160
- const mockCapsLock = (on: boolean) => {
161
- const impl = (key: string) => key === 'CapsLock' && on;
162
- vi.spyOn(KeyboardEvent.prototype, 'getModifierState').mockImplementation(impl);
163
- vi.spyOn(MouseEvent.prototype, 'getModifierState').mockImplementation(impl);
164
- };
165
-
166
- afterEach(() => {
167
- vi.restoreAllMocks();
168
- });
169
-
170
- it('is not rendered by default', () => {
171
- renderInput(<PasswordInput placeholder="Password" />);
172
- expect(queryCapsLockIcon()).toBeNull();
173
- });
174
-
175
- it('does not appear when Caps Lock is off and a key is pressed', () => {
176
- mockCapsLock(false);
177
- renderInput(<PasswordInput placeholder="Password" />);
178
- fireEvent.keyDown(getInput(), { key: 'a' });
179
- expect(queryCapsLockIcon()).toBeNull();
180
- });
181
-
182
- it('appears when Caps Lock is on and a key is pressed', () => {
183
- mockCapsLock(true);
184
- renderInput(<PasswordInput placeholder="Password" />);
185
- fireEvent.keyDown(getInput(), { key: 'A' });
186
- expect(queryCapsLockIcon()).not.toBeNull();
187
- });
188
-
189
- it('disappears immediately when Caps Lock is toggled off via keyUp', () => {
190
- mockCapsLock(true);
191
- renderInput(<PasswordInput placeholder="Password" />);
192
- const input = getInput();
193
- fireEvent.keyDown(input, { key: 'A' });
194
- expect(queryCapsLockIcon()).not.toBeNull();
195
-
196
- // User presses Caps Lock to turn it off — getModifierState now returns false on keyUp.
197
- mockCapsLock(false);
198
- fireEvent.keyUp(input, { key: 'CapsLock' });
199
- expect(queryCapsLockIcon()).toBeNull();
200
- });
201
-
202
- it('appears on mouseDown when clicking into the field with Caps Lock on', () => {
203
- mockCapsLock(true);
204
- renderInput(<PasswordInput placeholder="Password" />);
205
- fireEvent.mouseDown(getInput());
206
- expect(queryCapsLockIcon()).not.toBeNull();
207
- });
208
-
209
- it('disappears on blur', () => {
210
- mockCapsLock(true);
211
- renderInput(<PasswordInput placeholder="Password" />);
212
- const input = getInput();
213
- fireEvent.keyDown(input, { key: 'A' });
214
- expect(queryCapsLockIcon()).not.toBeNull();
215
- fireEvent.blur(input);
216
- expect(queryCapsLockIcon()).toBeNull();
217
- });
218
- });
219
- });
@@ -1,180 +0,0 @@
1
- import { useRef, useState } from 'react';
2
- import type {
3
- ChangeEventHandler,
4
- ComponentProps,
5
- ElementRef,
6
- FocusEventHandler,
7
- KeyboardEventHandler,
8
- MouseEventHandler,
9
- Ref,
10
- } from 'react';
11
-
12
- import { InputGroup } from '../../components/InputGroup';
13
- import { ArrowBigUpDash, Eye, EyeOff, X } from '../../icons';
14
- import { createChangeInputEvent, mergeRefs } from '../../utils';
15
-
16
- type InputGroupProps = Pick<
17
- ComponentProps<typeof InputGroup>,
18
- 'variant' | 'focusVariant' | 'state' | 'sizing'
19
- >;
20
-
21
- type InputGroupInputProps = Omit<
22
- ComponentProps<typeof InputGroup.Input>,
23
- 'value' | 'defaultValue' | 'type' | 'autoComplete'
24
- >;
25
-
26
- type Props = InputGroupProps &
27
- InputGroupInputProps & {
28
- value?: string | null;
29
- defaultValue?: string | null;
30
- onValueChange?: (value: string) => void;
31
- onValueBlur?: (value: string) => void;
32
- allowClear?: boolean;
33
- allowPasswordToggle?: boolean;
34
- autoComplete?: 'new-password' | 'current-password' | 'off';
35
- defaultPasswordVisibility?: boolean;
36
- };
37
-
38
- export const PasswordInput = ({
39
- ref,
40
-
41
- // group props
42
- state,
43
- variant,
44
- focusVariant,
45
- sizing,
46
- className,
47
-
48
- // own props
49
- value: valueProp,
50
- defaultValue,
51
- onValueChange,
52
- onValueBlur,
53
- onChange,
54
- onBlur,
55
- onKeyDown,
56
- onKeyUp,
57
- onMouseDown,
58
- allowClear = false,
59
- allowPasswordToggle = false,
60
- autoComplete = 'new-password',
61
- defaultPasswordVisibility = false,
62
-
63
- // input props
64
- disabled,
65
- readOnly,
66
- ...restInputProps
67
- }: Props & { ref?: Ref<ElementRef<'input'>> }) => {
68
- const inputRef = useRef<ElementRef<'input'>>(null);
69
-
70
- const [internalValue, setInternalValue] = useState(defaultValue ?? '');
71
- const isControlled = valueProp !== undefined;
72
- const value = isControlled ? (valueProp ?? '') : internalValue;
73
- const setValue = (next: string) => {
74
- if (!isControlled) setInternalValue(next);
75
- onValueChange?.(next);
76
- };
77
-
78
- const [capsLock, setCapsLock] = useState(false);
79
- const [isPasswordVisible, setIsPasswordVisible] = useState(defaultPasswordVisibility);
80
-
81
- const canClear = allowClear && !!value && !disabled && !readOnly;
82
-
83
- const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {
84
- setValue(event.target.value);
85
- onChange?.(event);
86
- };
87
-
88
- const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {
89
- if (capsLock) setCapsLock(false);
90
- onValueBlur?.(event.target.value);
91
- onBlur?.(event);
92
- };
93
-
94
- // Both keyDown and keyUp are needed: pressing the Caps Lock key itself
95
- // reports the *old* state on keyDown and the *new* state on keyUp, so
96
- // toggling Caps Lock off mid-typing is only caught on keyUp.
97
- const handleKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {
98
- const isOn = event.getModifierState('CapsLock');
99
- if (isOn !== capsLock) setCapsLock(isOn);
100
- onKeyDown?.(event);
101
- };
102
-
103
- const handleKeyUp: KeyboardEventHandler<HTMLInputElement> = (event) => {
104
- const isOn = event.getModifierState('CapsLock');
105
- if (isOn !== capsLock) setCapsLock(isOn);
106
- onKeyUp?.(event);
107
- };
108
-
109
- // Catches the case where the user clicks into the field with Caps Lock
110
- // already on. Tab-focus / autofocus have no API to query modifier state.
111
- const handleMouseDown: MouseEventHandler<HTMLInputElement> = (event) => {
112
- const isOn = event.getModifierState('CapsLock');
113
- if (isOn !== capsLock) setCapsLock(isOn);
114
- onMouseDown?.(event);
115
- };
116
-
117
- const handleClear: MouseEventHandler<HTMLButtonElement> = () => {
118
- if (!inputRef.current) return;
119
- inputRef.current.value = '';
120
- setValue('');
121
- onChange?.(createChangeInputEvent(inputRef.current));
122
- };
123
-
124
- const handleTogglePasswordVisibility = () => {
125
- setIsPasswordVisible((prev) => !prev);
126
- };
127
-
128
- return (
129
- <InputGroup
130
- state={state}
131
- variant={variant}
132
- sizing={sizing}
133
- focusVariant={focusVariant}
134
- className={className}
135
- >
136
- <InputGroup.Input
137
- {...restInputProps}
138
- ref={mergeRefs(ref ?? null, inputRef)}
139
- type={isPasswordVisible ? 'text' : 'password'}
140
- autoComplete={autoComplete}
141
- value={value}
142
- onChange={handleChange}
143
- onBlur={handleBlur}
144
- onKeyDown={handleKeyDown}
145
- onKeyUp={handleKeyUp}
146
- onMouseDown={handleMouseDown}
147
- disabled={disabled}
148
- readOnly={readOnly}
149
- />
150
-
151
- {(capsLock || canClear || allowPasswordToggle) && (
152
- <InputGroup.Addon align="inline-end">
153
- {capsLock && (
154
- <ArrowBigUpDash className="tw-size-4 tw-text-primary">
155
- <title>Caps Lock is on</title>
156
- </ArrowBigUpDash>
157
- )}
158
- {canClear && (
159
- <InputGroup.Button
160
- aria-label="Clear password"
161
- onMouseDown={(event) => event.preventDefault()}
162
- onClick={handleClear}
163
- >
164
- <X className="tw-size-4" />
165
- </InputGroup.Button>
166
- )}
167
- {allowPasswordToggle && (
168
- <InputGroup.Button
169
- aria-label={isPasswordVisible ? 'Hide password' : 'Show password'}
170
- onMouseDown={(event) => event.preventDefault()}
171
- onClick={handleTogglePasswordVisibility}
172
- >
173
- {isPasswordVisible ? <EyeOff className="tw-size-4" /> : <Eye className="tw-size-4" />}
174
- </InputGroup.Button>
175
- )}
176
- </InputGroup.Addon>
177
- )}
178
- </InputGroup>
179
- );
180
- };
@@ -1 +0,0 @@
1
- export * from './PasswordInput';
@@ -1,127 +0,0 @@
1
- import { useState } from 'react';
2
- import type { ComponentProps } from 'react';
3
- import type { Meta, StoryObj } from '@storybook/react-vite';
4
- import { action } from 'storybook/actions';
5
-
6
- import { SearchInput } from './SearchInput';
7
-
8
- type Story = StoryObj<typeof SearchInput>;
9
- type SearchInputProps = ComponentProps<typeof SearchInput>;
10
- type State = NonNullable<SearchInputProps['state']>;
11
- type Variant = NonNullable<SearchInputProps['variant']>;
12
- type Sizing = NonNullable<SearchInputProps['sizing']>;
13
- type FocusVariant = NonNullable<SearchInputProps['focusVariant']>;
14
-
15
- const states: State[] = ['default', 'error', 'warning'];
16
- const variants: Variant[] = ['primary', 'secondary', 'argo'];
17
- const sizings: Sizing[] = ['small', 'default', 'medium'];
18
- const focusVariants: FocusVariant[] = ['default', 'on', 'off'];
19
-
20
- /**
21
- * A debounced search input built on `InputGroup`.
22
- *
23
- * ### Key features
24
- *
25
- * **Debounced `onValueChange`** — by default the callback fires 300 ms after
26
- * the user stops typing, preventing excessive re-renders or network requests
27
- * on every keystroke. Tune via `debounceDelay` or disable entirely with
28
- * `disableDebounce`.
29
- *
30
- * **Search icon prefix** — a magnifying-glass icon is always rendered as the
31
- * inline-start prefix. It is part of the component and cannot be removed;
32
- * that is by design — if you need a generic text input without the icon, use
33
- * `TextInput` instead.
34
- *
35
- * **Optional clear button** — pass `allowClear` to show an ✕ button whenever
36
- * the field has a value. Clicking it fires `onValueChange('')` immediately
37
- * (not debounced) and calls the optional `onClear` callback.
38
- *
39
- * ### Controlled vs uncontrolled
40
- *
41
- * Works in both modes. In controlled mode the internal display value updates
42
- * on every keystroke while the debounced `onValueChange` fires after the
43
- * delay, so the input never feels laggy even when the parent re-renders only
44
- * after the debounced call.
45
- */
46
- export default {
47
- component: SearchInput,
48
- args: {
49
- placeholder: 'Search',
50
- variant: 'primary',
51
- state: 'default',
52
- sizing: 'default',
53
- focusVariant: 'default',
54
- allowClear: false,
55
- disableDebounce: false,
56
- debounceDelay: 300,
57
- readOnly: false,
58
- disabled: false,
59
- onValueChange: action('onValueChange'),
60
- onValueBlur: action('onValueBlur'),
61
- onClear: action('onClear'),
62
- },
63
- argTypes: {
64
- state: {
65
- description: 'Validation state passed to the InputGroup wrapper.',
66
- type: { name: 'enum', value: states },
67
- },
68
- variant: {
69
- description: 'Visual variant of the InputGroup wrapper.',
70
- type: { name: 'enum', value: variants },
71
- },
72
- sizing: {
73
- description: 'Size of the InputGroup wrapper.',
74
- type: { name: 'enum', value: sizings },
75
- },
76
- focusVariant: {
77
- description: 'Focus ring style.',
78
- type: { name: 'enum', value: focusVariants },
79
- },
80
- allowClear: {
81
- description: 'Show a clear button when the field has a value.',
82
- },
83
- disableDebounce: {
84
- description: 'Fire `onValueChange` on every keystroke instead of debouncing.',
85
- },
86
- debounceDelay: {
87
- description: 'Debounce delay in milliseconds (ignored when `disableDebounce` is true).',
88
- },
89
- },
90
- } satisfies Meta<typeof SearchInput>;
91
-
92
- export const Basic: Story = {};
93
-
94
- export const WithClear: Story = {
95
- args: {
96
- defaultValue: 'hello world',
97
- allowClear: true,
98
- },
99
- };
100
-
101
- export const Argo: Story = {
102
- args: {
103
- variant: 'argo',
104
- sizing: 'medium',
105
- placeholder: 'Search workspaces',
106
- allowClear: true,
107
- },
108
- };
109
-
110
- const ControlledDemo = (props: SearchInputProps) => {
111
- const [value, setValue] = useState('');
112
- return (
113
- <SearchInput
114
- {...props}
115
- value={value}
116
- onValueChange={(next) => {
117
- action('onValueChange')(next);
118
- setValue(next);
119
- }}
120
- />
121
- );
122
- };
123
-
124
- export const Controlled: Story = {
125
- render: ControlledDemo,
126
- args: { allowClear: true },
127
- };
@@ -1,162 +0,0 @@
1
- import type { ComponentProps } from 'react';
2
- import { act, render, screen } from '@testing-library/react';
3
- import { userEvent } from 'storybook/test';
4
- import { vi } from 'vitest';
5
-
6
- import { SearchInput } from './SearchInput';
7
-
8
- type Props = ComponentProps<typeof SearchInput>;
9
-
10
- const onValueChange = vi.fn();
11
- const onBlur = vi.fn();
12
- const onClear = vi.fn();
13
-
14
- const getInput = () => screen.getByRole<HTMLInputElement>('textbox');
15
- const getClearButton = () =>
16
- screen.queryByRole<HTMLButtonElement>('button', { name: 'Clear search' });
17
-
18
- const Wrapped = (props: Partial<Props>) => (
19
- <SearchInput onValueChange={onValueChange} onValueBlur={onBlur} {...props} />
20
- );
21
-
22
- describe('<SearchInput />', () => {
23
- beforeEach(() => {
24
- onValueChange.mockClear();
25
- onBlur.mockClear();
26
- onClear.mockClear();
27
- });
28
-
29
- it('renders with null value as empty string', () => {
30
- render(<Wrapped value={null} />);
31
- expect(getInput().value).toBe('');
32
- });
33
-
34
- it('renders with null defaultValue as empty string', () => {
35
- render(<Wrapped defaultValue={null} />);
36
- expect(getInput().value).toBe('');
37
- });
38
-
39
- it('works in uncontrolled mode', async () => {
40
- render(<Wrapped disableDebounce defaultValue="hello" />);
41
- const el = getInput();
42
- expect(el.value).toBe('hello');
43
-
44
- await act(async () => {
45
- await userEvent.type(el, ' world');
46
- });
47
-
48
- expect(onValueChange).toHaveBeenCalledTimes(6);
49
- expect(onValueChange).toHaveBeenLastCalledWith('hello world');
50
- expect(el.value).toBe('hello world');
51
- });
52
-
53
- it('works in controlled mode without debounce', async () => {
54
- const { rerender } = render(<Wrapped disableDebounce value="hello" />);
55
- const el = getInput();
56
- expect(el.value).toBe('hello');
57
-
58
- rerender(<Wrapped disableDebounce value="new value" />);
59
- expect(el.value).toBe('new value');
60
-
61
- await act(async () => {
62
- await userEvent.type(el, ' test');
63
- });
64
-
65
- expect(onValueChange).toHaveBeenLastCalledWith('new value test');
66
- expect(el.value).toBe('new value test');
67
-
68
- rerender(<Wrapped disableDebounce value="reset" />);
69
- expect(el.value).toBe('reset');
70
- });
71
-
72
- describe('allowClear', () => {
73
- it('does not render clear button when allowClear is false', () => {
74
- render(<Wrapped defaultValue="hello" allowClear={false} />);
75
- expect(getClearButton()).toBeNull();
76
- });
77
-
78
- it('renders clear button when allowClear is true and input has value', () => {
79
- render(<Wrapped defaultValue="hello" allowClear />);
80
- expect(getClearButton()).not.toBeNull();
81
- });
82
-
83
- it('does not render clear button when disabled', () => {
84
- render(<Wrapped defaultValue="hello" allowClear disabled />);
85
- expect(getClearButton()).toBeNull();
86
- });
87
-
88
- it('does not render clear button when readOnly', () => {
89
- render(<Wrapped defaultValue="hello" allowClear readOnly />);
90
- expect(getClearButton()).toBeNull();
91
- });
92
-
93
- it('clears value and calls onValueChange and onClear', async () => {
94
- render(<Wrapped defaultValue="hello" allowClear onClear={onClear} />);
95
- const clearBtn = getClearButton()!;
96
-
97
- await act(async () => {
98
- await userEvent.click(clearBtn);
99
- });
100
-
101
- expect(getInput().value).toBe('');
102
- expect(onValueChange).toHaveBeenCalledWith('');
103
- expect(onClear).toHaveBeenCalledTimes(1);
104
- expect(getClearButton()).toBeNull();
105
- });
106
- });
107
-
108
- describe('debounce', () => {
109
- beforeEach(() => {
110
- vi.useFakeTimers();
111
- onValueChange.mockClear();
112
- });
113
-
114
- afterEach(() => {
115
- vi.useRealTimers();
116
- vi.clearAllTimers();
117
- vi.resetAllMocks();
118
- });
119
-
120
- it('debounces onValueChange by 300 ms', async () => {
121
- const user = userEvent.setup({ advanceTimers: vi.advanceTimersByTime, delay: 10 });
122
- render(<Wrapped debounceDelay={300} />);
123
- const el = getInput();
124
-
125
- await act(async () => {
126
- await user.type(el, 'test');
127
- });
128
-
129
- expect(onValueChange).not.toHaveBeenCalled();
130
-
131
- vi.advanceTimersByTime(300);
132
- expect(onValueChange).toHaveBeenCalledTimes(1);
133
- expect(onValueChange).toHaveBeenCalledWith('test');
134
- });
135
-
136
- it('cancels pending debounce when clear is clicked', async () => {
137
- const user = userEvent.setup({ advanceTimers: vi.advanceTimersByTime, delay: 10 });
138
- render(<Wrapped debounceDelay={300} defaultValue="hello" allowClear />);
139
- const el = getInput();
140
-
141
- // type — debounce starts
142
- await act(async () => {
143
- await user.type(el, ' world');
144
- });
145
-
146
- expect(onValueChange).not.toHaveBeenCalled();
147
-
148
- // clear before debounce fires
149
- await act(async () => {
150
- await user.click(getClearButton()!);
151
- });
152
-
153
- // clear fires onValueChange('') immediately
154
- expect(onValueChange).toHaveBeenCalledTimes(1);
155
- expect(onValueChange).toHaveBeenCalledWith('');
156
-
157
- // advancing timer must NOT fire the stale debounced call
158
- vi.advanceTimersByTime(300);
159
- expect(onValueChange).toHaveBeenCalledTimes(1);
160
- });
161
- });
162
- });