@keboola/design 2.0.0 → 2.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 (654) hide show
  1. package/README.md +57 -1
  2. package/dist/icon-names.d.cts +7 -0
  3. package/dist/icon-names.d.ts +7 -0
  4. package/dist/icons.cjs +12 -0
  5. package/dist/icons.d.cts +6 -0
  6. package/dist/icons.d.ts +6 -0
  7. package/dist/icons.js +1 -1
  8. package/dist/index.cjs +367 -135
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.cts +10184 -0
  11. package/dist/index.d.ts +10184 -0
  12. package/dist/index.js +392 -173
  13. package/dist/index.js.map +1 -1
  14. package/dist/markdown-editor.cjs +69 -49
  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 +69 -49
  19. package/dist/markdown-editor.js.map +1 -1
  20. package/dist/mermaid.cjs +50 -23
  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 +50 -23
  25. package/dist/mermaid.js.map +1 -1
  26. package/dist/styles.css +1 -1
  27. package/package.json +83 -12
  28. package/src/blocks/AIKit/AnswerSummary.stories.tsx +0 -38
  29. package/src/blocks/AIKit/AnswerSummary.tsx +0 -63
  30. package/src/blocks/AIKit/CollapsibleStepHeader.stories.tsx +0 -53
  31. package/src/blocks/AIKit/CollapsibleStepHeader.tsx +0 -64
  32. package/src/blocks/AIKit/InlineStepDetail.stories.tsx +0 -25
  33. package/src/blocks/AIKit/InlineStepDetail.tsx +0 -13
  34. package/src/blocks/AIKit/InlineStepLabel.stories.tsx +0 -37
  35. package/src/blocks/AIKit/InlineStepLabel.tsx +0 -36
  36. package/src/blocks/AIKit/MessageBubble.stories.tsx +0 -145
  37. package/src/blocks/AIKit/MessageBubble.tsx +0 -68
  38. package/src/blocks/AIKit/PlanApproval.stories.tsx +0 -121
  39. package/src/blocks/AIKit/PlanApproval.test.tsx +0 -241
  40. package/src/blocks/AIKit/PlanApproval.tsx +0 -363
  41. package/src/blocks/AIKit/PlanRewritingIndicator.test.tsx +0 -17
  42. package/src/blocks/AIKit/PlanRewritingIndicator.tsx +0 -20
  43. package/src/blocks/AIKit/PromptInput.stories.tsx +0 -106
  44. package/src/blocks/AIKit/PromptInput.test.tsx +0 -53
  45. package/src/blocks/AIKit/PromptInput.tsx +0 -218
  46. package/src/blocks/AIKit/PromptInputAction.tsx +0 -18
  47. package/src/blocks/AIKit/PromptInputSubmit.tsx +0 -59
  48. package/src/blocks/AIKit/Question.stories.tsx +0 -235
  49. package/src/blocks/AIKit/Question.tsx +0 -350
  50. package/src/blocks/AIKit/QuestionBlock.stories.tsx +0 -99
  51. package/src/blocks/AIKit/QuestionBlock.tsx +0 -83
  52. package/src/blocks/AIKit/SuggestedPrompt.stories.tsx +0 -82
  53. package/src/blocks/AIKit/SuggestedPrompt.tsx +0 -42
  54. package/src/blocks/AIKit/ThinkingIndicator.stories.tsx +0 -21
  55. package/src/blocks/AIKit/ThinkingIndicator.tsx +0 -14
  56. package/src/blocks/AIKit/index.ts +0 -12
  57. package/src/blocks/AutoSaveTextarea/AutoSaveTextarea.stories.tsx +0 -78
  58. package/src/blocks/AutoSaveTextarea/AutoSaveTextarea.tsx +0 -103
  59. package/src/blocks/AutoSaveTextarea/index.ts +0 -1
  60. package/src/blocks/ClipboardButton/ClipboardButton.stories.tsx +0 -28
  61. package/src/blocks/ClipboardButton/ClipboardButton.tsx +0 -43
  62. package/src/blocks/ClipboardButton/ClipboardInline.tsx +0 -40
  63. package/src/blocks/ClipboardButton/index.ts +0 -2
  64. package/src/blocks/ColorInput/ColorInput.stories.tsx +0 -109
  65. package/src/blocks/ColorInput/ColorInput.test.tsx +0 -163
  66. package/src/blocks/ColorInput/ColorInput.tsx +0 -171
  67. package/src/blocks/ColorInput/ColorPicker.tsx +0 -42
  68. package/src/blocks/ColorInput/index.ts +0 -1
  69. package/src/blocks/ColorInput/utils.test.ts +0 -189
  70. package/src/blocks/ColorInput/utils.ts +0 -74
  71. package/src/blocks/EmptyConfigurationActionCard/EmptyConfigurationActionCard.stories.tsx +0 -30
  72. package/src/blocks/EmptyConfigurationActionCard/EmptyConfigurationActionCard.tsx +0 -20
  73. package/src/blocks/EmptyConfigurationActionCard/index.ts +0 -1
  74. package/src/blocks/EmptyState/EmptyState.stories.tsx +0 -93
  75. package/src/blocks/EmptyState/EmptyState.tsx +0 -146
  76. package/src/blocks/EmptyState/index.ts +0 -1
  77. package/src/blocks/ErrorState/ErrorState.stories.tsx +0 -125
  78. package/src/blocks/ErrorState/ErrorState.tsx +0 -147
  79. package/src/blocks/ErrorState/index.ts +0 -1
  80. package/src/blocks/Form/components/FormBody.tsx +0 -27
  81. package/src/blocks/Form/components/SubmitButton.tsx +0 -30
  82. package/src/blocks/Form/connectors/CheckboxField.tsx +0 -34
  83. package/src/blocks/Form/connectors/FieldShell.tsx +0 -46
  84. package/src/blocks/Form/connectors/NumberField.tsx +0 -36
  85. package/src/blocks/Form/connectors/PasswordField.tsx +0 -38
  86. package/src/blocks/Form/connectors/SelectField.tsx +0 -73
  87. package/src/blocks/Form/connectors/SwitchField.tsx +0 -34
  88. package/src/blocks/Form/connectors/TextAreaField.tsx +0 -36
  89. package/src/blocks/Form/connectors/TextField.tsx +0 -36
  90. package/src/blocks/Form/contexts.ts +0 -4
  91. package/src/blocks/Form/formHook.ts +0 -45
  92. package/src/blocks/Form/index.ts +0 -2
  93. package/src/blocks/Form/setServerFieldErrors.test.ts +0 -38
  94. package/src/blocks/Form/setServerFieldErrors.ts +0 -21
  95. package/src/blocks/MermaidDiagram/MermaidDiagram.stories.tsx +0 -87
  96. package/src/blocks/MermaidDiagram/MermaidDiagram.tsx +0 -266
  97. package/src/blocks/MermaidDiagram/index.ts +0 -1
  98. package/src/blocks/MultiActionButtonGroup/MultiActionButton.stories.tsx +0 -119
  99. package/src/blocks/MultiActionButtonGroup/MultiActionButton.tsx +0 -41
  100. package/src/blocks/MultiActionButtonGroup/MultiActionButtonGroup.tsx +0 -16
  101. package/src/blocks/MultiActionButtonGroup/index.ts +0 -1
  102. package/src/blocks/MultiCombobox/MultiCombobox.stories.tsx +0 -324
  103. package/src/blocks/MultiCombobox/MultiCombobox.tsx +0 -257
  104. package/src/blocks/MultiCombobox/index.ts +0 -1
  105. package/src/blocks/NumberInput/NumberInput.stories.tsx +0 -112
  106. package/src/blocks/NumberInput/NumberInput.test.tsx +0 -148
  107. package/src/blocks/NumberInput/NumberInput.tsx +0 -89
  108. package/src/blocks/NumberInput/index.ts +0 -1
  109. package/src/blocks/PageHeader/AGENTS.md +0 -137
  110. package/src/blocks/PageHeader/PageHeader.stories.tsx +0 -371
  111. package/src/blocks/PageHeader/PageHeader.tsx +0 -22
  112. package/src/blocks/PageHeader/PageHeaderDetail.tsx +0 -84
  113. package/src/blocks/PageHeader/PageHeaderIndex.tsx +0 -75
  114. package/src/blocks/PageHeader/index.ts +0 -1
  115. package/src/blocks/PageHeader/styles.ts +0 -6
  116. package/src/blocks/PageLayout/AGENTS.md +0 -94
  117. package/src/blocks/PageLayout/PageLayout.stories.tsx +0 -146
  118. package/src/blocks/PageLayout/PageLayout.tsx +0 -139
  119. package/src/blocks/PageLayout/index.ts +0 -1
  120. package/src/blocks/PageToolbar/PageToolbar.stories.tsx +0 -353
  121. package/src/blocks/PageToolbar/PageToolbar.tsx +0 -160
  122. package/src/blocks/PageToolbar/PageToolbarToken.tsx +0 -61
  123. package/src/blocks/PageToolbar/index.ts +0 -1
  124. package/src/blocks/PasswordInput/PasswordInput.stories.tsx +0 -114
  125. package/src/blocks/PasswordInput/PasswordInput.test.tsx +0 -219
  126. package/src/blocks/PasswordInput/PasswordInput.tsx +0 -180
  127. package/src/blocks/PasswordInput/index.ts +0 -1
  128. package/src/blocks/SearchInput/SearchInput.stories.tsx +0 -127
  129. package/src/blocks/SearchInput/SearchInput.test.tsx +0 -162
  130. package/src/blocks/SearchInput/SearchInput.tsx +0 -172
  131. package/src/blocks/SearchInput/index.ts +0 -1
  132. package/src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.stories.tsx +0 -73
  133. package/src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.tsx +0 -92
  134. package/src/blocks/SearchInputWithNavigation/index.ts +0 -1
  135. package/src/blocks/SplitButton/SplitButton.stories.tsx +0 -91
  136. package/src/blocks/SplitButton/SplitButton.tsx +0 -81
  137. package/src/blocks/SplitButton/index.ts +0 -1
  138. package/src/blocks/Tagger/TagItem.tsx +0 -32
  139. package/src/blocks/Tagger/TagSelectPopover/TagSelectCreateItem.tsx +0 -44
  140. package/src/blocks/Tagger/TagSelectPopover/TagSelectItem.tsx +0 -31
  141. package/src/blocks/Tagger/TagSelectPopover/TagSelectList.tsx +0 -67
  142. package/src/blocks/Tagger/TagSelectPopover/TagSelectPopover.tsx +0 -34
  143. package/src/blocks/Tagger/TagSelectPopover/TagSelectValue.tsx +0 -47
  144. package/src/blocks/Tagger/TagSelectPopover/index.ts +0 -1
  145. package/src/blocks/Tagger/Tagger.stories.tsx +0 -80
  146. package/src/blocks/Tagger/Tagger.tsx +0 -101
  147. package/src/blocks/Tagger/index.ts +0 -1
  148. package/src/blocks/Tagger/types.ts +0 -11
  149. package/src/blocks/Textarea/Textarea.stories.tsx +0 -47
  150. package/src/blocks/Textarea/Textarea.tsx +0 -50
  151. package/src/blocks/Textarea/index.ts +0 -1
  152. package/src/components/Alert/Alert.stories.tsx +0 -101
  153. package/src/components/Alert/Alert.tsx +0 -121
  154. package/src/components/Alert/AlertAction.tsx +0 -31
  155. package/src/components/Alert/AlertCollapsibleIcon.tsx +0 -25
  156. package/src/components/Alert/AlertDescription.tsx +0 -36
  157. package/src/components/Alert/AlertIcon.tsx +0 -40
  158. package/src/components/Alert/AlertRoot.tsx +0 -64
  159. package/src/components/Alert/AlertTitle.tsx +0 -25
  160. package/src/components/Alert/index.ts +0 -1
  161. package/src/components/Avatar.stories.tsx +0 -22
  162. package/src/components/Avatar.tsx +0 -88
  163. package/src/components/Badge/Badge.stories.tsx +0 -122
  164. package/src/components/Badge/Badge.tsx +0 -71
  165. package/src/components/Badge/BadgeAddon.tsx +0 -63
  166. package/src/components/Badge/BadgeButton.tsx +0 -40
  167. package/src/components/Badge/BadgeLabel.tsx +0 -37
  168. package/src/components/Badge/BadgeRoot.tsx +0 -21
  169. package/src/components/Badge/index.ts +0 -1
  170. package/src/components/Badge/styles.ts +0 -74
  171. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +0 -135
  172. package/src/components/Breadcrumb/Breadcrumb.tsx +0 -23
  173. package/src/components/Breadcrumb/BreadcrumbEllipsis.tsx +0 -43
  174. package/src/components/Breadcrumb/BreadcrumbItem.tsx +0 -9
  175. package/src/components/Breadcrumb/BreadcrumbLink.tsx +0 -48
  176. package/src/components/Breadcrumb/BreadcrumbList.tsx +0 -26
  177. package/src/components/Breadcrumb/BreadcrumbPage.tsx +0 -22
  178. package/src/components/Breadcrumb/BreadcrumbSeparator.tsx +0 -28
  179. package/src/components/Breadcrumb/index.ts +0 -1
  180. package/src/components/Button/Button.stories.tsx +0 -80
  181. package/src/components/Button/Button.tsx +0 -110
  182. package/src/components/Button/ButtonInline.stories.tsx +0 -54
  183. package/src/components/Button/ButtonInline.tsx +0 -77
  184. package/src/components/Button/index.ts +0 -3
  185. package/src/components/Button/styles.ts +0 -290
  186. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +0 -140
  187. package/src/components/ButtonGroup/ButtonGroup.tsx +0 -79
  188. package/src/components/ButtonGroup/index.ts +0 -1
  189. package/src/components/Calendar/Calendar.stories.tsx +0 -101
  190. package/src/components/Calendar/Calendar.tsx +0 -44
  191. package/src/components/Calendar/index.ts +0 -2
  192. package/src/components/Card/Card.stories.tsx +0 -60
  193. package/src/components/Card/Card.tsx +0 -42
  194. package/src/components/Card/CardContent.tsx +0 -5
  195. package/src/components/Card/CardHeader.tsx +0 -5
  196. package/src/components/Card/CardTitle.tsx +0 -13
  197. package/src/components/Card/index.ts +0 -1
  198. package/src/components/Card/styles.ts +0 -32
  199. package/src/components/Checkbox/Checkbox.stories.tsx +0 -210
  200. package/src/components/Checkbox/Checkbox.test.tsx +0 -140
  201. package/src/components/Checkbox/Checkbox.tsx +0 -83
  202. package/src/components/Checkbox/index.ts +0 -1
  203. package/src/components/Checkbox/styles.ts +0 -77
  204. package/src/components/Clipboard/Clipboard.stories.tsx +0 -44
  205. package/src/components/Clipboard/Clipboard.tsx +0 -89
  206. package/src/components/Clipboard/index.ts +0 -1
  207. package/src/components/CodeEditor/ButtonToolbar.tsx +0 -14
  208. package/src/components/CodeEditor/CodeEditor.tsx +0 -155
  209. package/src/components/CodeEditor/SqlEditor.stories.tsx +0 -76
  210. package/src/components/CodeEditor/SqlEditor.tsx +0 -206
  211. package/src/components/CodeEditor/ToggleComponentHelp.tsx +0 -7
  212. package/src/components/CodeEditor/activeQueryHighlight.test.ts +0 -178
  213. package/src/components/CodeEditor/activeQueryHighlight.ts +0 -245
  214. package/src/components/CodeEditor/helpers.ts +0 -100
  215. package/src/components/CodeEditor/highlighting.ts +0 -184
  216. package/src/components/CodeEditor/index.ts +0 -3
  217. package/src/components/CodeEditor/search.ts +0 -186
  218. package/src/components/Collapse.stories.tsx +0 -56
  219. package/src/components/Collapse.tsx +0 -61
  220. package/src/components/Collapsible/Collapsible.stories.tsx +0 -55
  221. package/src/components/Collapsible/Collapsible.tsx +0 -11
  222. package/src/components/Collapsible/CollapsibleContent.tsx +0 -25
  223. package/src/components/Collapsible/index.ts +0 -1
  224. package/src/components/CollapsiblePanel.stories.tsx +0 -25
  225. package/src/components/CollapsiblePanel.tsx +0 -127
  226. package/src/components/Combobox/Combobox.stories.tsx +0 -426
  227. package/src/components/Combobox/Combobox.test.tsx +0 -165
  228. package/src/components/Combobox/Combobox.tsx +0 -345
  229. package/src/components/Combobox/ComboboxChips.tsx +0 -68
  230. package/src/components/Combobox/ComboboxContent.tsx +0 -95
  231. package/src/components/Combobox/ComboboxEmpty.tsx +0 -30
  232. package/src/components/Combobox/ComboboxInput.tsx +0 -10
  233. package/src/components/Combobox/ComboboxInputGroup.tsx +0 -38
  234. package/src/components/Combobox/ComboboxItem.tsx +0 -70
  235. package/src/components/Combobox/ComboboxItemIndicator.tsx +0 -78
  236. package/src/components/Combobox/ComboboxList.tsx +0 -32
  237. package/src/components/Combobox/ComboboxRoot.tsx +0 -5
  238. package/src/components/Combobox/ComboboxSeparator.tsx +0 -20
  239. package/src/components/Combobox/Group/ComboboxCollection.tsx +0 -7
  240. package/src/components/Combobox/Group/ComboboxGroup.tsx +0 -23
  241. package/src/components/Combobox/Group/ComboboxGroupLabel.tsx +0 -38
  242. package/src/components/Combobox/Group/index.ts +0 -3
  243. package/src/components/Combobox/index.ts +0 -1
  244. package/src/components/Combobox/types.ts +0 -22
  245. package/src/components/Combobox/utils.test.ts +0 -95
  246. package/src/components/Combobox/utils.ts +0 -103
  247. package/src/components/Command/Command.stories.tsx +0 -367
  248. package/src/components/Command/Command.tsx +0 -37
  249. package/src/components/Command/CommandContent.tsx +0 -19
  250. package/src/components/Command/CommandEmpty.tsx +0 -6
  251. package/src/components/Command/CommandGroup.tsx +0 -26
  252. package/src/components/Command/CommandInput.tsx +0 -27
  253. package/src/components/Command/CommandItem/CheckIndicator.tsx +0 -86
  254. package/src/components/Command/CommandItem/CommandItem.tsx +0 -94
  255. package/src/components/Command/CommandItem/index.ts +0 -1
  256. package/src/components/Command/CommandList.tsx +0 -32
  257. package/src/components/Command/CommandSeparator.tsx +0 -13
  258. package/src/components/Command/index.ts +0 -6
  259. package/src/components/DatePicker/DatePicker.tsx +0 -37
  260. package/src/components/DatePicker/index.ts +0 -1
  261. package/src/components/DiffView/DiffView.stories.tsx +0 -80
  262. package/src/components/DiffView/DiffView.tsx +0 -131
  263. package/src/components/DiffView/DiffViewMark.tsx +0 -21
  264. package/src/components/DiffView/DiffViewTd.tsx +0 -84
  265. package/src/components/DiffView/DiffViewTh.tsx +0 -23
  266. package/src/components/DiffView/index.ts +0 -11
  267. package/src/components/DiffView/util.test.ts +0 -231
  268. package/src/components/DiffView/util.ts +0 -311
  269. package/src/components/DotsLoader.tsx +0 -22
  270. package/src/components/DropdownMenu/DropdownMenu.stories.tsx +0 -310
  271. package/src/components/DropdownMenu/DropdownMenu.tsx +0 -61
  272. package/src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx +0 -55
  273. package/src/components/DropdownMenu/DropdownMenuContent.tsx +0 -52
  274. package/src/components/DropdownMenu/DropdownMenuContext.tsx +0 -13
  275. package/src/components/DropdownMenu/DropdownMenuItem.tsx +0 -80
  276. package/src/components/DropdownMenu/DropdownMenuItemDescription.tsx +0 -42
  277. package/src/components/DropdownMenu/DropdownMenuItemIndicator.tsx +0 -104
  278. package/src/components/DropdownMenu/DropdownMenuLabel.tsx +0 -21
  279. package/src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioGroup.tsx +0 -31
  280. package/src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioItem.tsx +0 -67
  281. package/src/components/DropdownMenu/DropdownMenuRadioGroup/index.ts +0 -2
  282. package/src/components/DropdownMenu/DropdownMenuSeparator.tsx +0 -35
  283. package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSub.tsx +0 -3
  284. package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubContent.tsx +0 -21
  285. package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubTrigger.tsx +0 -17
  286. package/src/components/DropdownMenu/DropdownMenuSub/index.ts +0 -3
  287. package/src/components/DropdownMenu/DropdownMenuTrigger.tsx +0 -19
  288. package/src/components/DropdownMenu/ItemIcon.tsx +0 -30
  289. package/src/components/DropdownMenu/index.ts +0 -1
  290. package/src/components/DropdownMenu/styles.ts +0 -82
  291. package/src/components/EmptySearchContent.stories.tsx +0 -12
  292. package/src/components/EmptySearchContent.tsx +0 -13
  293. package/src/components/FieldBox/FieldBox.stories.tsx +0 -138
  294. package/src/components/FieldBox/FieldBox.tsx +0 -43
  295. package/src/components/FieldBox/FieldBoxDescription.tsx +0 -18
  296. package/src/components/FieldBox/FieldBoxTitle.tsx +0 -20
  297. package/src/components/FieldBox/index.ts +0 -1
  298. package/src/components/FieldBox/styles.ts +0 -37
  299. package/src/components/FormGroup/FormGroup.stories.tsx +0 -120
  300. package/src/components/FormGroup/FormGroup.tsx +0 -48
  301. package/src/components/FormGroup/FormGroupColorInput.tsx +0 -15
  302. package/src/components/FormGroup/FormGroupHelp.tsx +0 -17
  303. package/src/components/FormGroup/FormGroupNumberInput.tsx +0 -15
  304. package/src/components/FormGroup/FormGroupTextInput.tsx +0 -15
  305. package/src/components/FormGroup/FormGroupTextarea.tsx +0 -12
  306. package/src/components/FormGroup/context.ts +0 -11
  307. package/src/components/FormGroup/index.ts +0 -2
  308. package/src/components/FormGroup/types.ts +0 -5
  309. package/src/components/FullScreenModal/FullScreenModal.tsx +0 -8
  310. package/src/components/FullScreenModal/FullScreenModalBody.tsx +0 -16
  311. package/src/components/FullScreenModal/FullScreenModalHeader.tsx +0 -92
  312. package/src/components/FullScreenModal/FullScreenModalRoot.tsx +0 -79
  313. package/src/components/FullScreenModal/index.ts +0 -3
  314. package/src/components/HelpBlock/HelpBlock.stories.tsx +0 -28
  315. package/src/components/HelpBlock/HelpBlock.tsx +0 -31
  316. package/src/components/HelpBlock/index.ts +0 -1
  317. package/src/components/HoverCard/HoverCard.stories.tsx +0 -77
  318. package/src/components/HoverCard/HoverCard.tsx +0 -13
  319. package/src/components/HoverCard/HoverCardContent.tsx +0 -68
  320. package/src/components/HoverCard/index.ts +0 -1
  321. package/src/components/Icon/Icon.stories.tsx +0 -26
  322. package/src/components/Icon/Icon.tsx +0 -10
  323. package/src/components/Icon/Icons.mdx +0 -28
  324. package/src/components/Icon/constants.ts +0 -1
  325. package/src/components/Icon/index.ts +0 -27
  326. package/src/components/Input/DateInput/DateInput.stories.tsx +0 -58
  327. package/src/components/Input/DateInput/DateInput.tsx +0 -143
  328. package/src/components/Input/DateInput/helpers.test.ts +0 -102
  329. package/src/components/Input/DateInput/helpers.ts +0 -59
  330. package/src/components/Input/DateInput/index.ts +0 -1
  331. package/src/components/Input/DateRangeInput/DateRangeInput.stories.tsx +0 -66
  332. package/src/components/Input/DateRangeInput/DateRangeInput.tsx +0 -139
  333. package/src/components/Input/DateRangeInput/helpers.test.ts +0 -146
  334. package/src/components/Input/DateRangeInput/helpers.ts +0 -36
  335. package/src/components/Input/DateRangeInput/index.ts +0 -1
  336. package/src/components/Input/Input.stories.tsx +0 -93
  337. package/src/components/Input/Input.test.tsx +0 -112
  338. package/src/components/Input/Input.tsx +0 -163
  339. package/src/components/Input/TextInput/TextInput.stories.tsx +0 -68
  340. package/src/components/Input/TextInput/TextInput.test.tsx +0 -52
  341. package/src/components/Input/TextInput/TextInput.tsx +0 -73
  342. package/src/components/Input/TextInput/index.ts +0 -1
  343. package/src/components/Input/TimeInput/TimeInput.stories.tsx +0 -89
  344. package/src/components/Input/TimeInput/TimeInput.tsx +0 -106
  345. package/src/components/Input/TimeInput/index.ts +0 -1
  346. package/src/components/Input/index.ts +0 -4
  347. package/src/components/Input/utils.ts +0 -11
  348. package/src/components/InputGroup/InputGroup.stories.tsx +0 -215
  349. package/src/components/InputGroup/InputGroup.tsx +0 -228
  350. package/src/components/InputGroup/InputGroupAddon.tsx +0 -57
  351. package/src/components/InputGroup/InputGroupButton.tsx +0 -25
  352. package/src/components/InputGroup/InputGroupInput.tsx +0 -34
  353. package/src/components/InputGroup/InputGroupText.tsx +0 -21
  354. package/src/components/InputGroup/InputGroupTextArea.tsx +0 -78
  355. package/src/components/InputGroup/index.ts +0 -1
  356. package/src/components/Kbd/Kbd.stories.tsx +0 -82
  357. package/src/components/Kbd/Kbd.tsx +0 -17
  358. package/src/components/Kbd/KbdGroup.tsx +0 -35
  359. package/src/components/Kbd/KbdSeparator.tsx +0 -9
  360. package/src/components/Kbd/index.ts +0 -3
  361. package/src/components/Kbd/keyboardKeys.ts +0 -40
  362. package/src/components/Kbd/styles.ts +0 -39
  363. package/src/components/Label/Label.stories.tsx +0 -53
  364. package/src/components/Label/Label.tsx +0 -31
  365. package/src/components/Label/index.ts +0 -1
  366. package/src/components/Link.stories.tsx +0 -19
  367. package/src/components/Link.tsx +0 -37
  368. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +0 -182
  369. package/src/components/MarkdownEditor/MarkdownEditor.test.ts +0 -171
  370. package/src/components/MarkdownEditor/MarkdownEditor.tsx +0 -245
  371. package/src/components/MarkdownEditor/context.ts +0 -10
  372. package/src/components/MarkdownEditor/index.ts +0 -1
  373. package/src/components/MarkdownEditor/nodes/ImageNode.tsx +0 -115
  374. package/src/components/MarkdownEditor/nodes/ImageNodeComponent.tsx +0 -18
  375. package/src/components/MarkdownEditor/nodes/MermaidNode.tsx +0 -72
  376. package/src/components/MarkdownEditor/nodes/MermaidNodeComponent.tsx +0 -35
  377. package/src/components/MarkdownEditor/plugins/ImagePastePlugin.tsx +0 -149
  378. package/src/components/MarkdownEditor/plugins/KeyboardPlugin.tsx +0 -81
  379. package/src/components/MarkdownEditor/plugins/MarkdownSyncPlugin.tsx +0 -65
  380. package/src/components/MarkdownEditor/plugins/ToolbarPlugin.tsx +0 -284
  381. package/src/components/MarkdownEditor/plugins/toolbar/AlignmentDropdown.tsx +0 -99
  382. package/src/components/MarkdownEditor/plugins/toolbar/BlockTypeDropdown.tsx +0 -142
  383. package/src/components/MarkdownEditor/plugins/toolbar/LinkPanel.tsx +0 -160
  384. package/src/components/MarkdownEditor/plugins/toolbar/ToolbarButton.tsx +0 -36
  385. package/src/components/MarkdownEditor/plugins/toolbar/ToolbarDivider.tsx +0 -1
  386. package/src/components/MarkdownEditor/theme.ts +0 -39
  387. package/src/components/MarkdownEditor/transformers.ts +0 -189
  388. package/src/components/MarkedText/MarkedText.stories.tsx +0 -46
  389. package/src/components/MarkedText/MarkedText.tsx +0 -36
  390. package/src/components/MarkedText/index.ts +0 -1
  391. package/src/components/MarkedText/utils.test.ts +0 -193
  392. package/src/components/MarkedText/utils.ts +0 -37
  393. package/src/components/MergeEditor/AcceptControls/AcceptButton.tsx +0 -25
  394. package/src/components/MergeEditor/AcceptControls/AcceptControls.tsx +0 -77
  395. package/src/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.tsx +0 -38
  396. package/src/components/MergeEditor/MergeEditor.stories.tsx +0 -226
  397. package/src/components/MergeEditor/MergeEditor.tsx +0 -125
  398. package/src/components/MergeEditor/MergePane.tsx +0 -113
  399. package/src/components/MergeEditor/PaneHeader.tsx +0 -11
  400. package/src/components/MergeEditor/constants.ts +0 -48
  401. package/src/components/MergeEditor/decorations.ts +0 -126
  402. package/src/components/MergeEditor/helpers.test.ts +0 -172
  403. package/src/components/MergeEditor/helpers.ts +0 -118
  404. package/src/components/MergeEditor/index.ts +0 -5
  405. package/src/components/MergeEditor/useMergeDiff.ts +0 -573
  406. package/src/components/MergeEditor/useScrollSync.ts +0 -79
  407. package/src/components/Modal/Modal.stories.tsx +0 -680
  408. package/src/components/Modal/Modal.tsx +0 -49
  409. package/src/components/Modal/ModalBody.tsx +0 -33
  410. package/src/components/Modal/ModalCloseIcon.tsx +0 -31
  411. package/src/components/Modal/ModalContent.tsx +0 -95
  412. package/src/components/Modal/ModalDescription.tsx +0 -20
  413. package/src/components/Modal/ModalFooter.tsx +0 -20
  414. package/src/components/Modal/ModalHeader.tsx +0 -61
  415. package/src/components/Modal/ModalIcon.tsx +0 -109
  416. package/src/components/Modal/ModalOverlay.tsx +0 -42
  417. package/src/components/Modal/ModalTitle.tsx +0 -12
  418. package/src/components/Modal/index.ts +0 -1
  419. package/src/components/Navbar/Navbar.stories.tsx +0 -191
  420. package/src/components/Navbar/Navbar.tsx +0 -80
  421. package/src/components/Navbar/NavbarContent.tsx +0 -20
  422. package/src/components/Navbar/NavbarFooter.tsx +0 -11
  423. package/src/components/Navbar/NavbarHeader.tsx +0 -11
  424. package/src/components/Navbar/NavbarMenu.tsx +0 -30
  425. package/src/components/Navbar/NavbarMenuAvatar.tsx +0 -67
  426. package/src/components/Navbar/NavbarMenuButton.tsx +0 -135
  427. package/src/components/Navbar/NavbarMenuItem.tsx +0 -9
  428. package/src/components/Navbar/NavbarMenuItemAdornment.tsx +0 -65
  429. package/src/components/Navbar/index.ts +0 -1
  430. package/src/components/Pagination/Pagination.stories.tsx +0 -131
  431. package/src/components/Pagination/Pagination.tsx +0 -34
  432. package/src/components/Pagination/PaginationButton.tsx +0 -36
  433. package/src/components/Pagination/PaginationContent.tsx +0 -12
  434. package/src/components/Pagination/PaginationEllipsis.tsx +0 -26
  435. package/src/components/Pagination/PaginationItem.tsx +0 -9
  436. package/src/components/Pagination/PaginationNext.tsx +0 -20
  437. package/src/components/Pagination/PaginationPrevious.tsx +0 -14
  438. package/src/components/Pagination/index.ts +0 -1
  439. package/src/components/PanelWithDetails.stories.tsx +0 -28
  440. package/src/components/PanelWithDetails.tsx +0 -65
  441. package/src/components/Popconfirm/Popconfirm.stories.tsx +0 -373
  442. package/src/components/Popconfirm/Popconfirm.tsx +0 -82
  443. package/src/components/Popconfirm/PopconfirmBody.tsx +0 -5
  444. package/src/components/Popconfirm/PopconfirmCancel.tsx +0 -45
  445. package/src/components/Popconfirm/PopconfirmConfirm.tsx +0 -57
  446. package/src/components/Popconfirm/PopconfirmContent.tsx +0 -33
  447. package/src/components/Popconfirm/PopconfirmFooter.tsx +0 -9
  448. package/src/components/Popconfirm/PopconfirmTrigger.tsx +0 -22
  449. package/src/components/Popconfirm/context.ts +0 -19
  450. package/src/components/Popconfirm/index.ts +0 -1
  451. package/src/components/Popover/Popover.stories.tsx +0 -85
  452. package/src/components/Popover/Popover.tsx +0 -15
  453. package/src/components/Popover/PopoverContent.tsx +0 -103
  454. package/src/components/Popover/index.ts +0 -1
  455. package/src/components/Progress/Progress.stories.tsx +0 -67
  456. package/src/components/Progress/Progress.tsx +0 -45
  457. package/src/components/Progress/index.ts +0 -1
  458. package/src/components/RadioGroup/Radio.tsx +0 -61
  459. package/src/components/RadioGroup/RadioGroup.stories.tsx +0 -300
  460. package/src/components/RadioGroup/RadioGroup.tsx +0 -64
  461. package/src/components/RadioGroup/RadioGroupItem.tsx +0 -60
  462. package/src/components/RadioGroup/RadioGroupItemButton.tsx +0 -79
  463. package/src/components/RadioGroup/RadioGroupSeparator.tsx +0 -12
  464. package/src/components/RadioGroup/context.ts +0 -13
  465. package/src/components/RadioGroup/index.ts +0 -1
  466. package/src/components/Resizable/Resizable.stories.tsx +0 -50
  467. package/src/components/Resizable/ResizableHandle.tsx +0 -50
  468. package/src/components/Resizable/ResizablePanel.tsx +0 -12
  469. package/src/components/Resizable/ResizablePanelGroup.tsx +0 -19
  470. package/src/components/Resizable/index.ts +0 -3
  471. package/src/components/ScrollArea/ScrollArea.stories.tsx +0 -43
  472. package/src/components/ScrollArea/ScrollArea.tsx +0 -50
  473. package/src/components/ScrollArea/ScrollBar.tsx +0 -32
  474. package/src/components/ScrollArea/index.ts +0 -2
  475. package/src/components/Search/ClearButton.tsx +0 -42
  476. package/src/components/Search/Search.stories.tsx +0 -77
  477. package/src/components/Search/Search.test.tsx +0 -224
  478. package/src/components/Search/Search.tsx +0 -139
  479. package/src/components/Search/SearchForm.tsx +0 -37
  480. package/src/components/Search/index.ts +0 -2
  481. package/src/components/Search/styles.ts +0 -88
  482. package/src/components/Search/utils.ts +0 -11
  483. package/src/components/Select/Select.stories.tsx +0 -109
  484. package/src/components/Select/Select.tsx +0 -141
  485. package/src/components/Select/SelectContent.tsx +0 -110
  486. package/src/components/Select/SelectGroup.tsx +0 -10
  487. package/src/components/Select/SelectItem.tsx +0 -72
  488. package/src/components/Select/SelectLabel.tsx +0 -32
  489. package/src/components/Select/SelectRoot.tsx +0 -6
  490. package/src/components/Select/SelectSeparator.tsx +0 -13
  491. package/src/components/Select/SelectTrigger.tsx +0 -161
  492. package/src/components/Select/index.ts +0 -1
  493. package/src/components/Separator/Separator.stories.tsx +0 -60
  494. package/src/components/Separator/Separator.test.tsx +0 -39
  495. package/src/components/Separator/Separator.tsx +0 -115
  496. package/src/components/Separator/index.ts +0 -1
  497. package/src/components/Sheet/Sheet.stories.tsx +0 -63
  498. package/src/components/Sheet/Sheet.tsx +0 -21
  499. package/src/components/Sheet/SheetBody.tsx +0 -12
  500. package/src/components/Sheet/SheetContent.tsx +0 -131
  501. package/src/components/Sheet/SheetFooter.tsx +0 -9
  502. package/src/components/Sheet/SheetHeader.tsx +0 -39
  503. package/src/components/Sheet/SheetOverlay.tsx +0 -11
  504. package/src/components/Sheet/SheetTitle.tsx +0 -12
  505. package/src/components/Sheet/index.ts +0 -1
  506. package/src/components/Sidebar/Sidebar.stories.tsx +0 -849
  507. package/src/components/Sidebar/Sidebar.tsx +0 -225
  508. package/src/components/Sidebar/SidebarContent.tsx +0 -61
  509. package/src/components/Sidebar/SidebarFillTrigger.tsx +0 -25
  510. package/src/components/Sidebar/SidebarFooter.tsx +0 -13
  511. package/src/components/Sidebar/SidebarGroup/SidebarGroup.tsx +0 -23
  512. package/src/components/Sidebar/SidebarGroup/SidebarGroupAction.tsx +0 -53
  513. package/src/components/Sidebar/SidebarGroup/SidebarGroupContent.tsx +0 -20
  514. package/src/components/Sidebar/SidebarGroup/SidebarGroupLabel.tsx +0 -76
  515. package/src/components/Sidebar/SidebarGroup/index.ts +0 -4
  516. package/src/components/Sidebar/SidebarHeader.tsx +0 -20
  517. package/src/components/Sidebar/SidebarInstanceContext.ts +0 -18
  518. package/src/components/Sidebar/SidebarMenu/SidebarMenu.tsx +0 -28
  519. package/src/components/Sidebar/SidebarMenu/SidebarMenuAction.tsx +0 -69
  520. package/src/components/Sidebar/SidebarMenu/SidebarMenuBadge.tsx +0 -56
  521. package/src/components/Sidebar/SidebarMenu/SidebarMenuButton.tsx +0 -110
  522. package/src/components/Sidebar/SidebarMenu/SidebarMenuCard.tsx +0 -108
  523. package/src/components/Sidebar/SidebarMenu/SidebarMenuIcon.tsx +0 -30
  524. package/src/components/Sidebar/SidebarMenu/SidebarMenuItem.tsx +0 -9
  525. package/src/components/Sidebar/SidebarMenu/SidebarMenuSub.tsx +0 -139
  526. package/src/components/Sidebar/SidebarMenu/SidebarMenuSubItem.tsx +0 -106
  527. package/src/components/Sidebar/SidebarMenu/SidebarSearchInput.tsx +0 -88
  528. package/src/components/Sidebar/SidebarMenu/index.ts +0 -10
  529. package/src/components/Sidebar/SidebarProvider/SidebarProvider.tsx +0 -171
  530. package/src/components/Sidebar/SidebarProvider/context.ts +0 -35
  531. package/src/components/Sidebar/SidebarProvider/index.ts +0 -2
  532. package/src/components/Sidebar/SidebarProvider/useHoverTracking.test.ts +0 -199
  533. package/src/components/Sidebar/SidebarProvider/useHoverTracking.ts +0 -72
  534. package/src/components/Sidebar/SidebarProvider/useSidebarState.ts +0 -50
  535. package/src/components/Sidebar/SidebarProvider/useTransitionPresence.test.ts +0 -179
  536. package/src/components/Sidebar/SidebarProvider/useTransitionPresence.ts +0 -53
  537. package/src/components/Sidebar/SidebarResizeHandle.tsx +0 -28
  538. package/src/components/Sidebar/SidebarSeparator.tsx +0 -15
  539. package/src/components/Sidebar/SidebarTrigger.tsx +0 -40
  540. package/src/components/Sidebar/index.ts +0 -3
  541. package/src/components/Sidebar/types.ts +0 -6
  542. package/src/components/Sidebar/useResizeSidebar.ts +0 -112
  543. package/src/components/Sidebar/utils.test.ts +0 -178
  544. package/src/components/Sidebar/utils.ts +0 -70
  545. package/src/components/Skeleton/Skeleton.stories.tsx +0 -106
  546. package/src/components/Skeleton/Skeleton.tsx +0 -77
  547. package/src/components/Skeleton/SkeletonList.stories.tsx +0 -11
  548. package/src/components/Skeleton/SkeletonList.tsx +0 -65
  549. package/src/components/Slider/Slider.stories.tsx +0 -99
  550. package/src/components/Slider/Slider.tsx +0 -85
  551. package/src/components/Slider/SliderThumb.tsx +0 -57
  552. package/src/components/Slider/SliderTrack.tsx +0 -49
  553. package/src/components/Slider/index.ts +0 -1
  554. package/src/components/Slider/useInteracting.test.ts +0 -159
  555. package/src/components/Slider/useInteracting.ts +0 -64
  556. package/src/components/Switch/Switch.stories.tsx +0 -177
  557. package/src/components/Switch/Switch.tsx +0 -58
  558. package/src/components/Switch/index.ts +0 -1
  559. package/src/components/Switch/styles.ts +0 -173
  560. package/src/components/Table/Table.stories.tsx +0 -328
  561. package/src/components/Table/Table.tsx +0 -68
  562. package/src/components/Table/TableBody.tsx +0 -22
  563. package/src/components/Table/TableCell.tsx +0 -7
  564. package/src/components/Table/TableFooter.tsx +0 -15
  565. package/src/components/Table/TableHead.tsx +0 -15
  566. package/src/components/Table/TableHeader.tsx +0 -20
  567. package/src/components/Table/TableRow.tsx +0 -11
  568. package/src/components/Table/index.ts +0 -1
  569. package/src/components/Tabs.stories.tsx +0 -123
  570. package/src/components/Tabs.tsx +0 -134
  571. package/src/components/ThemeProvider/AIGradientSvg.tsx +0 -18
  572. package/src/components/ThemeProvider/ThemeProvider.tsx +0 -25
  573. package/src/components/ThemeProvider/index.ts +0 -1
  574. package/src/components/TimePicker/TimePicker.tsx +0 -95
  575. package/src/components/TimePicker/TimePickerButton.tsx +0 -39
  576. package/src/components/TimePicker/index.ts +0 -1
  577. package/src/components/TimePicker/utils.ts +0 -31
  578. package/src/components/Timeline/Timeline.stories.tsx +0 -246
  579. package/src/components/Timeline/Timeline.tsx +0 -35
  580. package/src/components/Timeline/TimelineConnector.tsx +0 -154
  581. package/src/components/Timeline/TimelineContent.tsx +0 -18
  582. package/src/components/Timeline/TimelineItem.tsx +0 -14
  583. package/src/components/Timeline/index.ts +0 -1
  584. package/src/components/Timeline/useLastLineHeight.ts +0 -36
  585. package/src/components/Toast/Toast.stories.tsx +0 -178
  586. package/src/components/Toast/ToastAction.tsx +0 -40
  587. package/src/components/Toast/ToastDescription.tsx +0 -28
  588. package/src/components/Toast/ToastDismiss.tsx +0 -36
  589. package/src/components/Toast/ToastDuration.tsx +0 -43
  590. package/src/components/Toast/ToastRoot.tsx +0 -135
  591. package/src/components/Toast/ToastTitle.tsx +0 -33
  592. package/src/components/Toast/Toaster.tsx +0 -25
  593. package/src/components/Toast/index.ts +0 -3
  594. package/src/components/Toast/toast.tsx +0 -94
  595. package/src/components/Toast/useNotification.tsx +0 -33
  596. package/src/components/Toggle/Toggle.stories.tsx +0 -67
  597. package/src/components/Toggle/Toggle.tsx +0 -202
  598. package/src/components/Toggle/index.ts +0 -1
  599. package/src/components/ToggleGroup/ToggleGroup.stories.tsx +0 -60
  600. package/src/components/ToggleGroup/ToggleGroup.tsx +0 -99
  601. package/src/components/ToggleGroup/index.ts +0 -1
  602. package/src/components/Tooltip/Tooltip.stories.tsx +0 -82
  603. package/src/components/Tooltip/Tooltip.tsx +0 -110
  604. package/src/components/Tooltip/TooltipContent.tsx +0 -90
  605. package/src/components/Tooltip/TooltipRoot.tsx +0 -12
  606. package/src/components/Tooltip/TooltipTrigger.tsx +0 -42
  607. package/src/components/Tooltip/index.ts +0 -1
  608. package/src/components/Truncated.stories.tsx +0 -72
  609. package/src/components/Truncated.tsx +0 -78
  610. package/src/components/ZoomableSvg/ZoomableSvg.stories.tsx +0 -53
  611. package/src/components/ZoomableSvg/ZoomableSvg.tsx +0 -200
  612. package/src/components/ZoomableSvg/index.ts +0 -1
  613. package/src/constants/keyCodes.ts +0 -5
  614. package/src/docs/Colors.mdx +0 -19
  615. package/src/docs/Spacing.mdx +0 -35
  616. package/src/docs/Typography.mdx +0 -63
  617. package/src/docs/components/Typeset.tsx +0 -35
  618. package/src/hooks/useAutosizeInput.stories.tsx +0 -142
  619. package/src/hooks/useAutosizeInput.test.tsx +0 -77
  620. package/src/hooks/useAutosizeInput.tsx +0 -107
  621. package/src/hooks/useElement.ts +0 -16
  622. package/src/hooks/useScrollbarPosition.ts +0 -68
  623. package/src/icon-names.ts +0 -20
  624. package/src/icons/Keboola.tsx +0 -28
  625. package/src/icons/icons.stories.tsx +0 -174
  626. package/src/icons/index.ts +0 -186
  627. package/src/index.ts +0 -89
  628. package/src/patterns/AlertWithAction.stories.tsx +0 -30
  629. package/src/patterns/CardWithEmptyState.stories.tsx +0 -66
  630. package/src/patterns/ConfirmDialog.stories.tsx +0 -72
  631. package/src/patterns/CreatableMultiCombobox.stories.tsx +0 -33
  632. package/src/patterns/DataCardWithSkeleton.stories.tsx +0 -48
  633. package/src/patterns/DisabledButtonTooltip.stories.tsx +0 -30
  634. package/src/patterns/FilterToolbar.stories.tsx +0 -275
  635. package/src/patterns/InfoTooltip.stories.tsx +0 -56
  636. package/src/patterns/ListDetail.stories.tsx +0 -65
  637. package/src/patterns/ModalForm.stories.tsx +0 -59
  638. package/src/patterns/PageHeaderTabs.stories.tsx +0 -48
  639. package/src/utils/classNames.test.ts +0 -16
  640. package/src/utils/classNames.ts +0 -27
  641. package/src/utils/copyToClipboard.ts +0 -3
  642. package/src/utils/createChangeInputEvent.ts +0 -28
  643. package/src/utils/createPrefixedString.ts +0 -2
  644. package/src/utils/debounce.test.ts +0 -63
  645. package/src/utils/debounce.ts +0 -17
  646. package/src/utils/decorators.tsx +0 -16
  647. package/src/utils/escapeStringRegexp.ts +0 -4
  648. package/src/utils/index.ts +0 -11
  649. package/src/utils/isMac.ts +0 -26
  650. package/src/utils/legacyIcon.tsx +0 -28
  651. package/src/utils/mergeRefs.ts +0 -23
  652. package/src/utils/noop.ts +0 -1
  653. package/src/utils/useSHA256.ts +0 -21
  654. package/src/vite-env.d.ts +0 -1
@@ -1,142 +0,0 @@
1
- import { useRef } from 'react';
2
- import { $createCodeNode } from '@lexical/code';
3
- import { INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND } from '@lexical/list';
4
- import { $createHeadingNode, $createQuoteNode } from '@lexical/rich-text';
5
- import { $getNearestBlockElementAncestorOrThrow } from '@lexical/utils';
6
- import {
7
- $createParagraphNode,
8
- $getSelection,
9
- $isRangeSelection,
10
- $setSelection,
11
- type BaseSelection,
12
- type LexicalEditor,
13
- } from 'lexical';
14
-
15
- import {
16
- ChevronDown,
17
- Heading1,
18
- Heading2,
19
- Heading3,
20
- List as ListIcon,
21
- ListOrdered,
22
- type LucideIcon,
23
- Quote,
24
- SquareCode,
25
- Type,
26
- } from '../../../../icons';
27
- import { cn } from '../../../../utils';
28
- import { DropdownMenu } from '../../../DropdownMenu';
29
- import { Tooltip } from '../../../Tooltip';
30
-
31
- const BLOCK_TYPE_META = {
32
- paragraph: { label: 'Normal', icon: Type satisfies LucideIcon, selectable: true },
33
- h1: { label: 'Heading 1', icon: Heading1 satisfies LucideIcon, selectable: true },
34
- h2: { label: 'Heading 2', icon: Heading2 satisfies LucideIcon, selectable: true },
35
- h3: { label: 'Heading 3', icon: Heading3 satisfies LucideIcon, selectable: true },
36
- bullet: { label: 'Bullet List', icon: ListIcon satisfies LucideIcon, selectable: false },
37
- number: { label: 'Numbered List', icon: ListOrdered satisfies LucideIcon, selectable: false },
38
- quote: { label: 'Quote', icon: Quote satisfies LucideIcon, selectable: false },
39
- code: { label: 'Code Block', icon: SquareCode satisfies LucideIcon, selectable: false },
40
- } as const;
41
-
42
- type BlockType = keyof typeof BLOCK_TYPE_META;
43
-
44
- const BLOCK_TYPE_OPTIONS = (
45
- Object.entries(BLOCK_TYPE_META) as [BlockType, (typeof BLOCK_TYPE_META)[BlockType]][]
46
- )
47
- .filter(([, meta]) => meta.selectable)
48
- .map(([value, { label, icon }]) => ({ value, label, icon }));
49
-
50
- const isBlockType = (value: string): value is BlockType =>
51
- Object.prototype.hasOwnProperty.call(BLOCK_TYPE_META, value);
52
-
53
- export const BlockTypeDropdown = ({
54
- editor,
55
- blockType,
56
- }: {
57
- editor: LexicalEditor;
58
- blockType: string;
59
- }) => {
60
- const savedSelectionRef = useRef<BaseSelection | null>(null);
61
- const currentMeta = isBlockType(blockType) ? BLOCK_TYPE_META[blockType] : null;
62
- const CurrentBlockIcon = currentMeta?.icon ?? Type;
63
-
64
- const handleOpenChange = (open: boolean) => {
65
- if (open) {
66
- editor.getEditorState().read(() => {
67
- const selection = $getSelection();
68
- savedSelectionRef.current = selection ? selection.clone() : null;
69
- });
70
- }
71
- };
72
-
73
- const handleSelect = (type: BlockType) => {
74
- editor.update(() => {
75
- if (savedSelectionRef.current) {
76
- $setSelection(savedSelectionRef.current);
77
- }
78
-
79
- const selection = $getSelection();
80
- if (!$isRangeSelection(selection)) return;
81
-
82
- if (type === 'bullet') {
83
- editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);
84
- return;
85
- }
86
- if (type === 'number') {
87
- editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);
88
- return;
89
- }
90
-
91
- const anchorNode = selection.anchor.getNode();
92
- const element = $getNearestBlockElementAncestorOrThrow(anchorNode);
93
-
94
- const newNode =
95
- type === 'h1' || type === 'h2' || type === 'h3'
96
- ? $createHeadingNode(type)
97
- : type === 'quote'
98
- ? $createQuoteNode()
99
- : type === 'code'
100
- ? $createCodeNode()
101
- : $createParagraphNode();
102
-
103
- element.getChildren().forEach((child) => newNode.append(child));
104
- element.replace(newNode);
105
- });
106
- };
107
-
108
- return (
109
- <DropdownMenu onOpenChange={handleOpenChange}>
110
- <Tooltip tooltip="Change block type" placement="top" triggerAsChild>
111
- <DropdownMenu.Trigger asChild>
112
- <button
113
- type="button"
114
- className={cn(
115
- 'tw-flex tw-h-7 tw-cursor-pointer tw-items-center tw-gap-1.5 tw-rounded tw-border-0 tw-bg-transparent tw-px-1.5 tw-text-xs tw-text-neutral-600',
116
- 'hover:tw-bg-neutral-100',
117
- )}
118
- >
119
- <CurrentBlockIcon className="tw-size-4" />
120
- {currentMeta?.label ?? 'Normal'}
121
- <ChevronDown className="tw-size-3" />
122
- </button>
123
- </DropdownMenu.Trigger>
124
- </Tooltip>
125
- <DropdownMenu.Content align="start" className="tw-min-w-40">
126
- {BLOCK_TYPE_OPTIONS.map(({ value, label, icon: IconComp }) => (
127
- <DropdownMenu.Item
128
- key={value}
129
- onSelect={() => handleSelect(value)}
130
- className={cn(
131
- 'tw-flex tw-items-center tw-gap-2',
132
- blockType === value && 'tw-bg-secondary-50 tw-text-secondary-500',
133
- )}
134
- >
135
- <IconComp className="tw-size-4" />
136
- {label}
137
- </DropdownMenu.Item>
138
- ))}
139
- </DropdownMenu.Content>
140
- </DropdownMenu>
141
- );
142
- };
@@ -1,160 +0,0 @@
1
- import { useRef, useState } from 'react';
2
- import type { KeyboardEvent as ReactKeyboardEvent } from 'react';
3
- import { $createLinkNode, TOGGLE_LINK_COMMAND } from '@lexical/link';
4
- import {
5
- $createTextNode,
6
- $getSelection,
7
- $isRangeSelection,
8
- $setSelection,
9
- type BaseSelection,
10
- type LexicalEditor,
11
- } from 'lexical';
12
-
13
- import { Link as LinkIcon } from '../../../../icons';
14
- import { Button } from '../../../Button';
15
- import { ButtonGroup } from '../../../ButtonGroup';
16
- import { FormGroup } from '../../../FormGroup';
17
- import { TextInput } from '../../../Input';
18
- import { Label } from '../../../Label';
19
-
20
- import { ToolbarButton } from './ToolbarButton';
21
-
22
- const insertLink = (
23
- editor: LexicalEditor,
24
- url: string,
25
- label: string,
26
- savedSelection: BaseSelection | null,
27
- ) => {
28
- editor.update(() => {
29
- $setSelection(savedSelection);
30
- const selection = $getSelection();
31
-
32
- if ($isRangeSelection(selection)) {
33
- const selectedText = selection.getTextContent();
34
- if (selectedText && label === selectedText) {
35
- editor.dispatchCommand(TOGGLE_LINK_COMMAND, url);
36
- return;
37
- }
38
- }
39
-
40
- const linkNode = $createLinkNode(url);
41
- const textNode = $createTextNode(label || url);
42
- linkNode.append(textNode);
43
-
44
- if ($isRangeSelection(selection)) {
45
- selection.insertNodes([linkNode]);
46
- }
47
- });
48
- };
49
-
50
- export const LinkPanel = ({ editor, isLink }: { editor: LexicalEditor; isLink: boolean }) => {
51
- const [open, setOpen] = useState(false);
52
- const [url, setUrl] = useState('');
53
- const [label, setLabel] = useState('');
54
- const savedSelectionRef = useRef<BaseSelection | null>(null);
55
- const panelRef = useRef<HTMLDivElement>(null);
56
-
57
- const handleOpen = () => {
58
- editor.getEditorState().read(() => {
59
- const selection = $getSelection();
60
- savedSelectionRef.current = selection ? selection.clone() : null;
61
-
62
- if ($isRangeSelection(selection)) {
63
- const text = selection.getTextContent();
64
- if (text) setLabel(text);
65
- }
66
- });
67
- setOpen(true);
68
- };
69
-
70
- const handleClose = () => {
71
- setOpen(false);
72
- setUrl('');
73
- setLabel('');
74
- savedSelectionRef.current = null;
75
- editor.focus();
76
- };
77
-
78
- const handleSubmit = () => {
79
- const trimmedUrl = url.trim();
80
- if (!trimmedUrl) return;
81
-
82
- insertLink(editor, trimmedUrl, label.trim(), savedSelectionRef.current);
83
- handleClose();
84
- };
85
-
86
- const handleKeyDown = (e: ReactKeyboardEvent) => {
87
- if (e.key === 'Enter') {
88
- e.preventDefault();
89
- handleSubmit();
90
- }
91
- if (e.key === 'Escape') {
92
- e.preventDefault();
93
- handleClose();
94
- }
95
- };
96
-
97
- if (isLink) {
98
- return (
99
- <ToolbarButton
100
- active
101
- onClick={() => editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)}
102
- tooltip="Remove Link"
103
- >
104
- <LinkIcon className="tw-size-4" />
105
- </ToolbarButton>
106
- );
107
- }
108
-
109
- return (
110
- <div className="tw-relative">
111
- <ToolbarButton active={open} onClick={handleOpen} tooltip="Insert Link">
112
- <LinkIcon className="tw-size-4" />
113
- </ToolbarButton>
114
- {open && (
115
- <div
116
- ref={panelRef}
117
- className="tw-absolute tw-left-0 tw-top-full tw-z-50 tw-mt-1 tw-w-80 tw-rounded-md tw-border tw-border-neutral-200 tw-bg-white tw-p-3 tw-shadow-lg"
118
- >
119
- <div className="tw-flex tw-flex-col tw-gap-2">
120
- <FormGroup>
121
- <Label htmlFor="link-label" className="tw-mb-1 tw-text-xs">
122
- Label
123
- </Label>
124
- <TextInput
125
- id="link-label"
126
- autoFocus
127
- placeholder="Link text"
128
- value={label}
129
- onValueChange={setLabel}
130
- onKeyDown={handleKeyDown}
131
- variant="secondary"
132
- />
133
- </FormGroup>
134
- <FormGroup>
135
- <Label htmlFor="link-url" className="tw-mb-1 tw-text-xs">
136
- URL
137
- </Label>
138
- <TextInput
139
- id="link-url"
140
- placeholder="https://…"
141
- value={url}
142
- onValueChange={setUrl}
143
- onKeyDown={handleKeyDown}
144
- variant="secondary"
145
- />
146
- </FormGroup>
147
- <ButtonGroup>
148
- <Button size="small" variant="outline" onClick={handleClose}>
149
- Cancel
150
- </Button>
151
- <Button size="small" onClick={handleSubmit} disabled={!url.trim()}>
152
- Add link
153
- </Button>
154
- </ButtonGroup>
155
- </div>
156
- </div>
157
- )}
158
- </div>
159
- );
160
- };
@@ -1,36 +0,0 @@
1
- import type { ReactNode } from 'react';
2
-
3
- import { cn } from '../../../../utils';
4
- import { Tooltip } from '../../../Tooltip';
5
-
6
- export const ToolbarButton = ({
7
- active,
8
- disabled,
9
- onClick,
10
- tooltip,
11
- children,
12
- className: extraClassName,
13
- }: {
14
- active?: boolean;
15
- disabled?: boolean;
16
- onClick: () => void;
17
- tooltip: ReactNode;
18
- children: ReactNode;
19
- className?: string;
20
- }) => (
21
- <Tooltip tooltip={tooltip} placement="top" triggerAsChild>
22
- <button
23
- type="button"
24
- disabled={disabled}
25
- onClick={onClick}
26
- className={cn(
27
- 'tw-flex tw-h-7 tw-min-w-7 tw-cursor-pointer tw-items-center tw-justify-center tw-rounded tw-border-0 tw-bg-transparent tw-px-1 tw-text-xs tw-text-neutral-600',
28
- 'hover:tw-bg-neutral-100 disabled:tw-cursor-not-allowed disabled:tw-opacity-30',
29
- active && 'tw-bg-secondary-100 tw-text-secondary-500',
30
- extraClassName,
31
- )}
32
- >
33
- {children}
34
- </button>
35
- </Tooltip>
36
- );
@@ -1 +0,0 @@
1
- export const ToolbarDivider = () => <div className="tw-mx-0.5 tw-h-5 tw-w-px tw-bg-neutral-200" />;
@@ -1,39 +0,0 @@
1
- import type { EditorThemeClasses } from 'lexical';
2
-
3
- /**
4
- * Lexical editor theme — maps node types to CSS classes.
5
- * The editor container uses `tw-prose` so semantic elements (headings, lists, blockquotes, etc.)
6
- * are styled by Tailwind Typography. We only need explicit classes for text formatting
7
- * (bold, italic, etc.) because Lexical renders those as `<span>` elements.
8
- */
9
- export const editorTheme: EditorThemeClasses = {
10
- link: 'tw-cursor-pointer !tw-text-secondary-500 tw-underline',
11
- text: {
12
- bold: 'tw-font-bold',
13
- italic: 'tw-italic',
14
- strikethrough: 'tw-line-through',
15
- underline: 'tw-underline',
16
- code: 'tw-rounded tw-bg-neutral-100 tw-px-1 tw-py-0.5 tw-font-mono tw-text-[0.85em]',
17
- },
18
- list: {
19
- ol: '!tw-list-decimal',
20
- ul: '!tw-list-disc',
21
- checklist: '!tw-list-none !tw-pl-0',
22
- listitemChecked: [
23
- 'tw-relative !tw-pl-6 tw-list-none tw-outline-none tw-line-through tw-text-neutral-400',
24
- 'before:tw-content-[""] before:tw-absolute before:tw-left-0 before:tw-top-[3px]',
25
- 'before:tw-size-4 before:tw-rounded before:tw-border before:tw-border-solid',
26
- 'before:tw-bg-secondary-500 before:tw-border-secondary-500 before:tw-cursor-pointer',
27
- 'after:tw-content-[""] after:tw-absolute after:tw-left-[5.5px] after:tw-top-[5.5px]',
28
- 'after:tw-w-1 after:tw-h-2 after:tw-border-white after:tw-border-solid',
29
- 'after:tw-border-r-[1.5px] after:tw-border-b-[1.5px] after:tw-border-t-0 after:tw-border-l-0',
30
- 'after:tw-rotate-45',
31
- ].join(' '),
32
- listitemUnchecked: [
33
- 'tw-relative !tw-pl-6 tw-list-none tw-outline-none',
34
- 'before:tw-content-[""] before:tw-absolute before:tw-left-0 before:tw-top-[3px]',
35
- 'before:tw-size-4 before:tw-rounded before:tw-border before:tw-border-solid',
36
- 'before:tw-border-neutral-200 before:tw-bg-white before:tw-cursor-pointer',
37
- ].join(' '),
38
- },
39
- };
@@ -1,189 +0,0 @@
1
- import type {
2
- ElementTransformer,
3
- MultilineElementTransformer,
4
- TextMatchTransformer,
5
- Transformer,
6
- } from '@lexical/markdown';
7
- import { CHECK_LIST, TRANSFORMERS } from '@lexical/markdown';
8
- import {
9
- $createHorizontalRuleNode,
10
- $isHorizontalRuleNode,
11
- HorizontalRuleNode,
12
- } from '@lexical/react/LexicalHorizontalRuleNode';
13
-
14
- import { $createImageNode, $isImageNode, ImageNode } from './nodes/ImageNode';
15
- import { $createMermaidNode, $isMermaidNode, MermaidNode } from './nodes/MermaidNode';
16
-
17
- /** Markdown image: `![alt](src)` */
18
- const IMAGE: TextMatchTransformer = {
19
- dependencies: [ImageNode],
20
- export: (node) => {
21
- if (!$isImageNode(node)) return null;
22
- return `![${node.getAlt()}](${node.getSrc()})`;
23
- },
24
- importRegExp: /!\[([^\]]*)\]\(([^)]+)\)/,
25
- regExp: /!\[([^\]]*)\]\(([^)]+)\)$/,
26
- replace: (textNode, match) => {
27
- const [, alt = '', src = ''] = match;
28
- const imageNode = $createImageNode(src, alt);
29
- textNode.replace(imageNode);
30
- },
31
- trigger: ')',
32
- type: 'text-match',
33
- };
34
-
35
- /** Horizontal rule: `---`, `***`, or `___` */
36
- const HORIZONTAL_RULE: ElementTransformer = {
37
- dependencies: [HorizontalRuleNode],
38
- export: (node) => {
39
- return $isHorizontalRuleNode(node) ? '---' : null;
40
- },
41
- regExp: /^(---|\*\*\*|___)$/,
42
- replace: (parentNode) => {
43
- const node = $createHorizontalRuleNode();
44
- parentNode.replace(node);
45
- },
46
- type: 'element',
47
- };
48
-
49
- /** Fenced mermaid block: ` ```mermaid ... ``` ` → MermaidNode (rendered as diagram) */
50
- const MERMAID: MultilineElementTransformer = {
51
- dependencies: [MermaidNode],
52
- export: (node) => {
53
- if (!$isMermaidNode(node)) return null;
54
- return '```mermaid\n' + node.getCode() + '\n```';
55
- },
56
- regExpStart: /^[ \t]*(`{3,})mermaid(?:\s.*)?$/,
57
- regExpEnd: {
58
- optional: true,
59
- regExp: /^[ \t]*`{3,}$/,
60
- },
61
- replace: (rootNode, _children, _startMatch, _endMatch, linesInBetween) => {
62
- if (!linesInBetween) return;
63
- const code = linesInBetween.join('\n').trim();
64
- if (code) {
65
- rootNode.append($createMermaidNode(code));
66
- }
67
- },
68
- handleImportAfterStartMatch: ({
69
- lines,
70
- rootNode,
71
- startLineIndex,
72
- startMatch,
73
- }): [boolean, number] => {
74
- const fence = startMatch[1];
75
- if (!fence) return [false, startLineIndex];
76
- const fenceLength = fence.trim().length;
77
- const endRegex = new RegExp(`^[ \\t]*\`{${fenceLength},}$`);
78
-
79
- for (let i = startLineIndex + 1; i < lines.length; i++) {
80
- if (endRegex.test(lines[i] ?? '')) {
81
- const code = lines
82
- .slice(startLineIndex + 1, i)
83
- .join('\n')
84
- .trim();
85
- if (code) {
86
- rootNode.append($createMermaidNode(code));
87
- }
88
- return [true, i];
89
- }
90
- }
91
-
92
- // No closing fence — consume remaining lines
93
- const code = lines
94
- .slice(startLineIndex + 1)
95
- .join('\n')
96
- .trim();
97
- if (code) {
98
- rootNode.append($createMermaidNode(code));
99
- }
100
- return [true, lines.length - 1];
101
- },
102
- type: 'multiline-element',
103
- };
104
-
105
- /**
106
- * Custom transformers = our additions + built-in Lexical transformers.
107
- * MERMAID is placed before TRANSFORMERS so it intercepts ` ```mermaid ``` ` before the generic CODE transformer.
108
- * IMAGE is placed before built-in LINK to prevent `![alt](url)` from being parsed as `!` + link.
109
- */
110
- export const CUSTOM_TRANSFORMERS: Transformer[] = [
111
- IMAGE,
112
- HORIZONTAL_RULE,
113
- CHECK_LIST,
114
- MERMAID,
115
- ...TRANSFORMERS,
116
- ];
117
-
118
- /**
119
- * Inline-only subset for `singleLine` mode: keeps text-format (bold/italic/code/strike)
120
- * and text-match (links) transformers; drops every element / multiline-element transformer
121
- * (headings, lists, HR, code blocks, mermaid). Used for inline-editable titles where the
122
- * caller doesn't want block-level markdown syntax to "promote" a line.
123
- */
124
- export const SINGLE_LINE_TRANSFORMERS: Transformer[] = CUSTOM_TRANSFORMERS.filter(
125
- (t) => t.type === 'text-format' || t.type === 'text-match',
126
- );
127
-
128
- // --- Table pre/post-processing ---
129
- // GFM tables can't round-trip through Lexical's markdown (no built-in table transformer).
130
- // We wrap them in fenced code blocks on import and unwrap on export to preserve them exactly.
131
-
132
- const TABLE_FENCE_LANG = '__kbc_table__';
133
-
134
- const isTableLine = (line: string): boolean => {
135
- const trimmed = line.trim();
136
- return trimmed.startsWith('|') && trimmed.endsWith('|');
137
- };
138
-
139
- const CODE_FENCE_REGEX = /^[ \t]*`{3,}/;
140
-
141
- /** Wrap GFM tables in code fences so they survive Lexical's markdown round-trip. */
142
- export const preprocessMarkdown = (markdown: string): string => {
143
- const lines = markdown.split('\n');
144
- const result: string[] = [];
145
- let tableLines: string[] = [];
146
- let insideCodeFence = false;
147
-
148
- const flushTable = () => {
149
- if (tableLines.length >= 2) {
150
- result.push(`\`\`\`${TABLE_FENCE_LANG}`);
151
- result.push(...tableLines);
152
- result.push('```');
153
- } else {
154
- // Single pipe line isn't a table — keep as-is
155
- result.push(...tableLines);
156
- }
157
- tableLines = [];
158
- };
159
-
160
- for (const line of lines) {
161
- if (CODE_FENCE_REGEX.test(line)) {
162
- if (tableLines.length > 0) flushTable();
163
- insideCodeFence = !insideCodeFence;
164
- result.push(line);
165
- continue;
166
- }
167
-
168
- if (insideCodeFence) {
169
- result.push(line);
170
- continue;
171
- }
172
-
173
- if (isTableLine(line)) {
174
- tableLines.push(line);
175
- } else {
176
- if (tableLines.length > 0) flushTable();
177
- result.push(line);
178
- }
179
- }
180
- if (tableLines.length > 0) flushTable();
181
-
182
- return result.join('\n');
183
- };
184
-
185
- /** Unwrap code-fenced tables back to raw GFM table markdown. */
186
- export const postprocessMarkdown = (markdown: string): string => {
187
- const regex = new RegExp(`\`\`\`${TABLE_FENCE_LANG}\\n([\\s\\S]*?)\\n\`\`\``, 'g');
188
- return markdown.replace(regex, '$1');
189
- };
@@ -1,46 +0,0 @@
1
- import { useState } from 'react';
2
- import type { ComponentProps } from 'react';
3
- import type { Meta, StoryObj } from '@storybook/react-vite';
4
-
5
- import { TextInput } from '../Input';
6
-
7
- import { MarkedText } from './MarkedText';
8
-
9
- export default {
10
- component: MarkedText,
11
- args: {
12
- source: 'This is a text with marked words.',
13
- mark: 'marked',
14
- },
15
- } satisfies Meta<typeof MarkedText>;
16
-
17
- type Story = StoryObj<typeof MarkedText>;
18
-
19
- export const Default: Story = {};
20
-
21
- const MarkedTextDemo = (props: ComponentProps<typeof MarkedText>) => {
22
- const [search, setSearch] = useState('');
23
- return (
24
- <div className="tw-flex tw-flex-col tw-gap-4">
25
- <TextInput
26
- value={search}
27
- placeholder="Search..."
28
- onValueChange={setSearch}
29
- variant="secondary"
30
- />
31
- <MarkedText {...props} mark={search} />
32
- </div>
33
- );
34
- };
35
-
36
- export const WithInput: Story = {
37
- args: {
38
- source:
39
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam euismod, nisi vel consectetur interdum, nisl nunc egestas nunc, vitae tincidunt nisl nunc euismod nunc. Sed euismod, nisi vel consectetur interdum, nisl nunc egestas nunc, vitae tincidunt nisl nunc euismod nunc.\n' +
40
- 'Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Proin eget tortor risus. Vivamus suscipit tortor eget felis porttitor volutpat. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi.\n' +
41
- 'Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Pellentesque in ipsum id orci porta dapibus. Cras ultricies ligula sed magna dictum porta. Nulla quis lorem ut libero malesuada feugiat. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a.\n' +
42
- 'Sed porttitor lectus nibh. Nulla porttitor accumsan tincidunt. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat.\n' +
43
- 'Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec rutrum congue leo eget malesuada. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Nulla porttitor accumsan tincidunt. Vivamus suscipit tortor eget felis porttitor volutpat.',
44
- },
45
- render: MarkedTextDemo,
46
- };
@@ -1,36 +0,0 @@
1
- import { useMemo } from 'react';
2
- import type { ComponentProps, ElementRef, Ref } from 'react';
3
-
4
- import { createMarkedParts } from './utils';
5
-
6
- type Props = {
7
- source: string;
8
- className?: string;
9
- mark?: string;
10
- isCaseSensitive?: boolean;
11
- } & ComponentProps<'span'>;
12
-
13
- export const MarkedText = ({
14
- ref,
15
- source,
16
- mark,
17
- isCaseSensitive = false,
18
- ...spanProps
19
- }: Props & { ref?: Ref<ElementRef<'span'>> }) => {
20
- const parts = useMemo(
21
- () =>
22
- createMarkedParts({
23
- mark,
24
- source,
25
- isCaseSensitive,
26
- }),
27
- [isCaseSensitive, mark, source],
28
- );
29
-
30
- return (
31
- <span {...spanProps} ref={ref}>
32
- {/* oxlint-disable-next-line react/no-array-index-key */}
33
- {parts.map(({ isMark, part }, index) => (isMark ? <mark key={index}>{part}</mark> : part))}
34
- </span>
35
- );
36
- };
@@ -1 +0,0 @@
1
- export { MarkedText } from './MarkedText';