@mihcm/ui 0.14.1 → 0.15.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 (300) hide show
  1. package/dist/CheckboxGrid.native.d.ts.map +1 -1
  2. package/dist/CheckboxGrid.native.js +2 -1
  3. package/dist/CheckboxGrid.native.js.map +1 -1
  4. package/dist/Combobox.native.d.ts.map +1 -1
  5. package/dist/Combobox.native.js +2 -1
  6. package/dist/Combobox.native.js.map +1 -1
  7. package/dist/DataTable/column-filter.d.ts +8 -0
  8. package/dist/DataTable/column-filter.d.ts.map +1 -0
  9. package/dist/DataTable/column-filter.js +67 -0
  10. package/dist/DataTable/column-filter.js.map +1 -0
  11. package/dist/DataTable/column-header.d.ts +16 -0
  12. package/dist/DataTable/column-header.d.ts.map +1 -0
  13. package/dist/DataTable/column-header.js +11 -0
  14. package/dist/DataTable/column-header.js.map +1 -0
  15. package/dist/DataTable/column-visibility.d.ts +7 -0
  16. package/dist/DataTable/column-visibility.d.ts.map +1 -0
  17. package/dist/DataTable/column-visibility.js +35 -0
  18. package/dist/DataTable/column-visibility.js.map +1 -0
  19. package/dist/DataTable/index.d.ts +5 -0
  20. package/dist/DataTable/index.d.ts.map +1 -0
  21. package/dist/DataTable/index.js +5 -0
  22. package/dist/DataTable/index.js.map +1 -0
  23. package/dist/DataTable/pinning.d.ts +13 -0
  24. package/dist/DataTable/pinning.d.ts.map +1 -0
  25. package/dist/DataTable/pinning.js +29 -0
  26. package/dist/DataTable/pinning.js.map +1 -0
  27. package/dist/DataTable.d.ts +3 -7
  28. package/dist/DataTable.d.ts.map +1 -1
  29. package/dist/DataTable.js +7 -126
  30. package/dist/DataTable.js.map +1 -1
  31. package/dist/Dialog.native.d.ts +3 -1
  32. package/dist/Dialog.native.d.ts.map +1 -1
  33. package/dist/Dialog.native.js +2 -2
  34. package/dist/Dialog.native.js.map +1 -1
  35. package/dist/Form/building-blocks.d.ts +26 -0
  36. package/dist/Form/building-blocks.d.ts.map +1 -0
  37. package/dist/Form/building-blocks.js +29 -0
  38. package/dist/Form/building-blocks.js.map +1 -0
  39. package/dist/Form/fields-choice.d.ts +72 -0
  40. package/dist/Form/fields-choice.d.ts.map +1 -0
  41. package/dist/Form/fields-choice.js +69 -0
  42. package/dist/Form/fields-choice.js.map +1 -0
  43. package/dist/Form/fields-complex.d.ts +28 -0
  44. package/dist/Form/fields-complex.d.ts.map +1 -0
  45. package/dist/Form/fields-complex.js +38 -0
  46. package/dist/Form/fields-complex.js.map +1 -0
  47. package/dist/Form/fields-date.d.ts +46 -0
  48. package/dist/Form/fields-date.d.ts.map +1 -0
  49. package/dist/Form/fields-date.js +41 -0
  50. package/dist/Form/fields-date.js.map +1 -0
  51. package/dist/Form/fields-text.d.ts +47 -0
  52. package/dist/Form/fields-text.d.ts.map +1 -0
  53. package/dist/Form/fields-text.js +46 -0
  54. package/dist/Form/fields-text.js.map +1 -0
  55. package/dist/Form/fields-toggle.d.ts +24 -0
  56. package/dist/Form/fields-toggle.d.ts.map +1 -0
  57. package/dist/Form/fields-toggle.js +32 -0
  58. package/dist/Form/fields-toggle.js.map +1 -0
  59. package/dist/Form/helpers.d.ts +66 -0
  60. package/dist/Form/helpers.d.ts.map +1 -0
  61. package/dist/Form/helpers.js +44 -0
  62. package/dist/Form/helpers.js.map +1 -0
  63. package/dist/Form/types.d.ts +25 -0
  64. package/dist/Form/types.d.ts.map +1 -0
  65. package/dist/Form/types.js +8 -0
  66. package/dist/Form/types.js.map +1 -0
  67. package/dist/Form.d.ts +24 -298
  68. package/dist/Form.d.ts.map +1 -1
  69. package/dist/Form.js +30 -246
  70. package/dist/Form.js.map +1 -1
  71. package/dist/IconSidebar.d.ts +6 -46
  72. package/dist/IconSidebar.d.ts.map +1 -1
  73. package/dist/IconSidebar.js +6 -116
  74. package/dist/IconSidebar.js.map +1 -1
  75. package/dist/MainSidebar/back-button.d.ts +14 -0
  76. package/dist/MainSidebar/back-button.d.ts.map +1 -0
  77. package/dist/MainSidebar/back-button.js +14 -0
  78. package/dist/MainSidebar/back-button.js.map +1 -0
  79. package/dist/MainSidebar/breadcrumb.d.ts +10 -0
  80. package/dist/MainSidebar/breadcrumb.d.ts.map +1 -0
  81. package/dist/MainSidebar/breadcrumb.js +24 -0
  82. package/dist/MainSidebar/breadcrumb.js.map +1 -0
  83. package/dist/MainSidebar/columns.d.ts +3 -0
  84. package/dist/MainSidebar/columns.d.ts.map +1 -0
  85. package/dist/MainSidebar/columns.js +198 -0
  86. package/dist/MainSidebar/columns.js.map +1 -0
  87. package/dist/MainSidebar/command.d.ts +3 -0
  88. package/dist/MainSidebar/command.d.ts.map +1 -0
  89. package/dist/MainSidebar/command.js +193 -0
  90. package/dist/MainSidebar/command.js.map +1 -0
  91. package/dist/MainSidebar/drilldown.d.ts +3 -0
  92. package/dist/MainSidebar/drilldown.d.ts.map +1 -0
  93. package/dist/MainSidebar/drilldown.js +154 -0
  94. package/dist/MainSidebar/drilldown.js.map +1 -0
  95. package/dist/MainSidebar/expanded.d.ts +7 -0
  96. package/dist/MainSidebar/expanded.d.ts.map +1 -0
  97. package/dist/MainSidebar/expanded.js +102 -0
  98. package/dist/MainSidebar/expanded.js.map +1 -0
  99. package/dist/MainSidebar/floating.d.ts +3 -0
  100. package/dist/MainSidebar/floating.d.ts.map +1 -0
  101. package/dist/MainSidebar/floating.js +116 -0
  102. package/dist/MainSidebar/floating.js.map +1 -0
  103. package/dist/MainSidebar/helpers.d.ts +50 -0
  104. package/dist/MainSidebar/helpers.d.ts.map +1 -0
  105. package/dist/MainSidebar/helpers.js +148 -0
  106. package/dist/MainSidebar/helpers.js.map +1 -0
  107. package/dist/MainSidebar/hover.d.ts +3 -0
  108. package/dist/MainSidebar/hover.d.ts.map +1 -0
  109. package/dist/MainSidebar/hover.js +177 -0
  110. package/dist/MainSidebar/hover.js.map +1 -0
  111. package/dist/MainSidebar/index.d.ts +6 -0
  112. package/dist/MainSidebar/index.d.ts.map +1 -0
  113. package/dist/MainSidebar/index.js +108 -0
  114. package/dist/MainSidebar/index.js.map +1 -0
  115. package/dist/MainSidebar/mobile.d.ts +29 -0
  116. package/dist/MainSidebar/mobile.d.ts.map +1 -0
  117. package/dist/MainSidebar/mobile.js +38 -0
  118. package/dist/MainSidebar/mobile.js.map +1 -0
  119. package/dist/MainSidebar/motion.d.ts +23 -0
  120. package/dist/MainSidebar/motion.d.ts.map +1 -0
  121. package/dist/MainSidebar/motion.js +40 -0
  122. package/dist/MainSidebar/motion.js.map +1 -0
  123. package/dist/MainSidebar/rail.d.ts +24 -0
  124. package/dist/MainSidebar/rail.d.ts.map +1 -0
  125. package/dist/MainSidebar/rail.js +29 -0
  126. package/dist/MainSidebar/rail.js.map +1 -0
  127. package/dist/MainSidebar/search.d.ts +19 -0
  128. package/dist/MainSidebar/search.d.ts.map +1 -0
  129. package/dist/MainSidebar/search.js +33 -0
  130. package/dist/MainSidebar/search.js.map +1 -0
  131. package/dist/MainSidebar/types.d.ts +161 -0
  132. package/dist/MainSidebar/types.d.ts.map +1 -0
  133. package/dist/MainSidebar/types.js +2 -0
  134. package/dist/MainSidebar/types.js.map +1 -0
  135. package/dist/MainSidebar.d.ts +6 -1
  136. package/dist/MainSidebar.d.ts.map +1 -1
  137. package/dist/MainSidebar.js +6 -1
  138. package/dist/MainSidebar.js.map +1 -1
  139. package/dist/NavigationMenu.js +1 -1
  140. package/dist/NavigationMenu.js.map +1 -1
  141. package/dist/RichTextEditor/theme.d.ts +44 -0
  142. package/dist/RichTextEditor/theme.d.ts.map +1 -0
  143. package/dist/RichTextEditor/theme.js +41 -0
  144. package/dist/RichTextEditor/theme.js.map +1 -0
  145. package/dist/RichTextEditor/toolbar-icons.d.ts +21 -0
  146. package/dist/RichTextEditor/toolbar-icons.d.ts.map +1 -0
  147. package/dist/RichTextEditor/toolbar-icons.js +21 -0
  148. package/dist/RichTextEditor/toolbar-icons.js.map +1 -0
  149. package/dist/RichTextEditor/toolbar.d.ts +5 -0
  150. package/dist/RichTextEditor/toolbar.d.ts.map +1 -0
  151. package/dist/RichTextEditor/toolbar.js +116 -0
  152. package/dist/RichTextEditor/toolbar.js.map +1 -0
  153. package/dist/RichTextEditor.d.ts +16 -9
  154. package/dist/RichTextEditor.d.ts.map +1 -1
  155. package/dist/RichTextEditor.js +18 -164
  156. package/dist/RichTextEditor.js.map +1 -1
  157. package/dist/Select/content.d.ts +9 -0
  158. package/dist/Select/content.d.ts.map +1 -0
  159. package/dist/Select/content.js +80 -0
  160. package/dist/Select/content.js.map +1 -0
  161. package/dist/Select/context.d.ts +27 -0
  162. package/dist/Select/context.d.ts.map +1 -0
  163. package/dist/Select/context.js +35 -0
  164. package/dist/Select/context.js.map +1 -0
  165. package/dist/Select/item.d.ts +13 -0
  166. package/dist/Select/item.d.ts.map +1 -0
  167. package/dist/Select/item.js +39 -0
  168. package/dist/Select/item.js.map +1 -0
  169. package/dist/Select/parts.d.ts +14 -0
  170. package/dist/Select/parts.d.ts.map +1 -0
  171. package/dist/Select/parts.js +17 -0
  172. package/dist/Select/parts.js.map +1 -0
  173. package/dist/Select/react-select.d.ts +25 -0
  174. package/dist/Select/react-select.d.ts.map +1 -0
  175. package/dist/Select/react-select.js +66 -0
  176. package/dist/Select/react-select.js.map +1 -0
  177. package/dist/Select/root.d.ts +15 -0
  178. package/dist/Select/root.d.ts.map +1 -0
  179. package/dist/Select/root.js +41 -0
  180. package/dist/Select/root.js.map +1 -0
  181. package/dist/Select/trigger.d.ts +15 -0
  182. package/dist/Select/trigger.d.ts.map +1 -0
  183. package/dist/Select/trigger.js +61 -0
  184. package/dist/Select/trigger.js.map +1 -0
  185. package/dist/Select.d.ts +14 -62
  186. package/dist/Select.d.ts.map +1 -1
  187. package/dist/Select.js +14 -293
  188. package/dist/Select.js.map +1 -1
  189. package/dist/Sidebar/context.d.ts +28 -0
  190. package/dist/Sidebar/context.d.ts.map +1 -0
  191. package/dist/Sidebar/context.js +37 -0
  192. package/dist/Sidebar/context.js.map +1 -0
  193. package/dist/Sidebar/group.d.ts +13 -0
  194. package/dist/Sidebar/group.d.ts.map +1 -0
  195. package/dist/Sidebar/group.js +20 -0
  196. package/dist/Sidebar/group.js.map +1 -0
  197. package/dist/Sidebar/icons.d.ts +7 -0
  198. package/dist/Sidebar/icons.d.ts.map +1 -0
  199. package/dist/Sidebar/icons.js +12 -0
  200. package/dist/Sidebar/icons.js.map +1 -0
  201. package/dist/Sidebar/layout.d.ts +9 -0
  202. package/dist/Sidebar/layout.d.ts.map +1 -0
  203. package/dist/Sidebar/layout.js +21 -0
  204. package/dist/Sidebar/layout.js.map +1 -0
  205. package/dist/Sidebar/menu.d.ts +29 -0
  206. package/dist/Sidebar/menu.d.ts.map +1 -0
  207. package/dist/Sidebar/menu.js +55 -0
  208. package/dist/Sidebar/menu.js.map +1 -0
  209. package/dist/Sidebar/provider.d.ts +33 -0
  210. package/dist/Sidebar/provider.d.ts.map +1 -0
  211. package/dist/Sidebar/provider.js +110 -0
  212. package/dist/Sidebar/provider.js.map +1 -0
  213. package/dist/Sidebar/sidebar.d.ts +17 -0
  214. package/dist/Sidebar/sidebar.d.ts.map +1 -0
  215. package/dist/Sidebar/sidebar.js +51 -0
  216. package/dist/Sidebar/sidebar.js.map +1 -0
  217. package/dist/Sidebar/submenu.d.ts +13 -0
  218. package/dist/Sidebar/submenu.d.ts.map +1 -0
  219. package/dist/Sidebar/submenu.js +17 -0
  220. package/dist/Sidebar/submenu.js.map +1 -0
  221. package/dist/Sidebar/trigger.d.ts +9 -0
  222. package/dist/Sidebar/trigger.d.ts.map +1 -0
  223. package/dist/Sidebar/trigger.js +33 -0
  224. package/dist/Sidebar/trigger.js.map +1 -0
  225. package/dist/Sidebar.d.ts +14 -104
  226. package/dist/Sidebar.d.ts.map +1 -1
  227. package/dist/Sidebar.js +14 -300
  228. package/dist/Sidebar.js.map +1 -1
  229. package/dist/StatCard.d.ts +67 -9
  230. package/dist/StatCard.d.ts.map +1 -1
  231. package/dist/StatCard.js +111 -9
  232. package/dist/StatCard.js.map +1 -1
  233. package/dist/TransferList.native.d.ts.map +1 -1
  234. package/dist/TransferList.native.js +2 -1
  235. package/dist/TransferList.native.js.map +1 -1
  236. package/package.json +2 -2
  237. package/src/CheckboxGrid.native.tsx +2 -1
  238. package/src/Combobox.native.tsx +2 -1
  239. package/src/DataTable/column-filter.tsx +134 -0
  240. package/src/DataTable/column-header.tsx +67 -0
  241. package/src/DataTable/column-visibility.tsx +87 -0
  242. package/src/DataTable/index.ts +4 -0
  243. package/src/DataTable/pinning.ts +40 -0
  244. package/src/DataTable.tsx +14 -297
  245. package/src/Dialog.native.tsx +4 -2
  246. package/src/Form/building-blocks.tsx +97 -0
  247. package/src/Form/fields-choice.tsx +312 -0
  248. package/src/Form/fields-complex.tsx +195 -0
  249. package/src/Form/fields-date.tsx +195 -0
  250. package/src/Form/fields-text.tsx +218 -0
  251. package/src/Form/fields-toggle.tsx +123 -0
  252. package/src/Form/helpers.tsx +189 -0
  253. package/src/Form/types.ts +26 -0
  254. package/src/Form.tsx +91 -1308
  255. package/src/IconSidebar.tsx +20 -442
  256. package/src/MainSidebar/back-button.tsx +58 -0
  257. package/src/MainSidebar/breadcrumb.tsx +53 -0
  258. package/src/MainSidebar/columns.tsx +350 -0
  259. package/src/MainSidebar/command.tsx +404 -0
  260. package/src/MainSidebar/drilldown.tsx +373 -0
  261. package/src/MainSidebar/expanded.tsx +414 -0
  262. package/src/MainSidebar/floating.tsx +268 -0
  263. package/src/MainSidebar/helpers.ts +164 -0
  264. package/src/MainSidebar/hover.tsx +334 -0
  265. package/src/MainSidebar/index.tsx +191 -0
  266. package/src/MainSidebar/mobile.tsx +117 -0
  267. package/src/MainSidebar/motion.ts +64 -0
  268. package/src/MainSidebar/rail.tsx +137 -0
  269. package/src/MainSidebar/search.tsx +99 -0
  270. package/src/MainSidebar/types.ts +208 -0
  271. package/src/MainSidebar.tsx +15 -4
  272. package/src/NavigationMenu.tsx +1 -1
  273. package/src/RichTextEditor/theme.ts +43 -0
  274. package/src/RichTextEditor/toolbar-icons.tsx +40 -0
  275. package/src/RichTextEditor/toolbar.tsx +271 -0
  276. package/src/RichTextEditor.tsx +23 -371
  277. package/src/Select/content.tsx +111 -0
  278. package/src/Select/context.tsx +66 -0
  279. package/src/Select/item.tsx +97 -0
  280. package/src/Select/parts.tsx +43 -0
  281. package/src/Select/react-select.tsx +216 -0
  282. package/src/Select/root.tsx +75 -0
  283. package/src/Select/trigger.tsx +122 -0
  284. package/src/Select.tsx +34 -692
  285. package/src/Sidebar/context.tsx +72 -0
  286. package/src/Sidebar/group.tsx +69 -0
  287. package/src/Sidebar/icons.tsx +42 -0
  288. package/src/Sidebar/layout.tsx +64 -0
  289. package/src/Sidebar/menu.tsx +171 -0
  290. package/src/Sidebar/provider.tsx +224 -0
  291. package/src/Sidebar/sidebar.tsx +178 -0
  292. package/src/Sidebar/submenu.tsx +58 -0
  293. package/src/Sidebar/trigger.tsx +104 -0
  294. package/src/Sidebar.tsx +44 -927
  295. package/src/StatCard.tsx +365 -20
  296. package/src/TransferList.native.tsx +2 -1
  297. package/dist/TiptapEditor.d.ts +0 -24
  298. package/dist/TiptapEditor.d.ts.map +0 -1
  299. package/dist/TiptapEditor.js +0 -84
  300. package/dist/TiptapEditor.js.map +0 -1
@@ -0,0 +1,116 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Toolbar plugin for the RichTextEditor — registers selection-driven format
5
+ * state and dispatches Lexical commands when toolbar buttons are pressed.
6
+ *
7
+ * Visible button set is gated by the editor's `variant` prop.
8
+ */
9
+ import { useCallback, useEffect, useState } from 'react';
10
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
11
+ import { $isRangeSelection, $getSelection, $createParagraphNode, FORMAT_TEXT_COMMAND, FORMAT_ELEMENT_COMMAND, INDENT_CONTENT_COMMAND, OUTDENT_CONTENT_COMMAND, UNDO_COMMAND, REDO_COMMAND, } from 'lexical';
12
+ import { $createHeadingNode, $createQuoteNode } from '@lexical/rich-text';
13
+ import { INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND, INSERT_CHECK_LIST_COMMAND } from '@lexical/list';
14
+ import { $isLinkNode, TOGGLE_LINK_COMMAND } from '@lexical/link';
15
+ import { $setBlocksType } from '@lexical/selection';
16
+ import { INSERT_HORIZONTAL_RULE_COMMAND } from '@lexical/react/LexicalHorizontalRuleNode.js';
17
+ import { $createTableNodeWithDimensions } from '@lexical/table';
18
+ import { TbBtn, TbIcon, TbMultiIcon, TbSep } from './toolbar-icons.js';
19
+ export function ToolbarPlugin({ variant }) {
20
+ const [editor] = useLexicalComposerContext();
21
+ const [isBold, setIsBold] = useState(false);
22
+ const [isItalic, setIsItalic] = useState(false);
23
+ const [isUnderline, setIsUnderline] = useState(false);
24
+ const [isStrikethrough, setIsStrikethrough] = useState(false);
25
+ const [isCode, setIsCode] = useState(false);
26
+ const [isSuperscript, setIsSuperscript] = useState(false);
27
+ const [isSubscript, setIsSubscript] = useState(false);
28
+ const [isLink, setIsLink] = useState(false);
29
+ const updateToolbar = useCallback(() => {
30
+ const selection = $getSelection();
31
+ if ($isRangeSelection(selection)) {
32
+ setIsBold(selection.hasFormat('bold'));
33
+ setIsItalic(selection.hasFormat('italic'));
34
+ setIsUnderline(selection.hasFormat('underline'));
35
+ setIsStrikethrough(selection.hasFormat('strikethrough'));
36
+ setIsCode(selection.hasFormat('code'));
37
+ setIsSuperscript(selection.hasFormat('superscript'));
38
+ setIsSubscript(selection.hasFormat('subscript'));
39
+ const node = selection.anchor.getNode();
40
+ const parent = node.getParent();
41
+ setIsLink($isLinkNode(parent) || $isLinkNode(node));
42
+ }
43
+ }, []);
44
+ useEffect(() => {
45
+ return editor.registerUpdateListener(({ editorState }) => {
46
+ editorState.read(() => updateToolbar());
47
+ });
48
+ }, [editor, updateToolbar]);
49
+ const formatHeading = (tag) => {
50
+ editor.update(() => {
51
+ const selection = $getSelection();
52
+ if ($isRangeSelection(selection))
53
+ $setBlocksType(selection, () => $createHeadingNode(tag));
54
+ });
55
+ };
56
+ const formatParagraph = () => {
57
+ editor.update(() => {
58
+ const selection = $getSelection();
59
+ if ($isRangeSelection(selection))
60
+ $setBlocksType(selection, () => $createParagraphNode());
61
+ });
62
+ };
63
+ const formatBlockQuote = () => {
64
+ editor.update(() => {
65
+ const selection = $getSelection();
66
+ if ($isRangeSelection(selection))
67
+ $setBlocksType(selection, () => $createQuoteNode());
68
+ });
69
+ };
70
+ const insertLink = () => {
71
+ if (isLink) {
72
+ editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);
73
+ }
74
+ else {
75
+ const url = prompt('Enter URL:');
76
+ if (url)
77
+ editor.dispatchCommand(TOGGLE_LINK_COMMAND, url);
78
+ }
79
+ };
80
+ const insertTable = () => {
81
+ editor.update(() => {
82
+ const table = $createTableNodeWithDimensions(3, 3, false);
83
+ const selection = $getSelection();
84
+ if ($isRangeSelection(selection)) {
85
+ const anchor = selection.anchor.getNode();
86
+ const parent = anchor.getTopLevelElementOrThrow();
87
+ parent.insertAfter(table);
88
+ }
89
+ });
90
+ };
91
+ const clearFormatting = () => {
92
+ editor.update(() => {
93
+ const selection = $getSelection();
94
+ if ($isRangeSelection(selection)) {
95
+ for (const format of ['bold', 'italic', 'underline', 'strikethrough', 'code', 'superscript', 'subscript']) {
96
+ if (selection.hasFormat(format)) {
97
+ editor.dispatchCommand(FORMAT_TEXT_COMMAND, format);
98
+ }
99
+ }
100
+ }
101
+ });
102
+ };
103
+ const showHistory = variant === 'semi' || variant === 'full';
104
+ const showHeadings = variant === 'semi' || variant === 'full';
105
+ const showUnderlineStrike = variant !== 'minimal';
106
+ const showLists = variant !== 'minimal';
107
+ const showCode = variant === 'semi' || variant === 'full';
108
+ const showLink = variant === 'semi' || variant === 'full';
109
+ const showIndent = variant === 'semi' || variant === 'full';
110
+ const showAlignment = variant === 'full';
111
+ const showSuperSub = variant === 'full';
112
+ const showCheckList = variant === 'full';
113
+ const showExtras = variant === 'full';
114
+ return (_jsxs("div", { className: "flex items-center gap-0.5 px-2 py-1.5 border-b border-border bg-muted/50 rounded-t-lg flex-wrap", children: [showHistory && (_jsxs(_Fragment, { children: [_jsx(TbBtn, { title: "Undo (Ctrl+Z)", onClick: () => editor.dispatchCommand(UNDO_COMMAND, undefined), children: _jsx(TbIcon, { d: "M3 7v6h6M3 13a9 9 0 1 0 3-7.7" }) }), _jsx(TbBtn, { title: "Redo (Ctrl+Shift+Z)", onClick: () => editor.dispatchCommand(REDO_COMMAND, undefined), children: _jsx(TbIcon, { d: "M21 7v6h-6M21 13a9 9 0 1 1-3-7.7" }) }), _jsx(TbSep, {})] })), showHeadings && (_jsxs(_Fragment, { children: [_jsx(TbBtn, { title: "Heading 1", onClick: () => formatHeading('h1'), children: _jsx("span", { className: "text-xs font-bold leading-none", children: "H1" }) }), _jsx(TbBtn, { title: "Heading 2", onClick: () => formatHeading('h2'), children: _jsx("span", { className: "text-xs font-bold leading-none", children: "H2" }) }), _jsx(TbBtn, { title: "Heading 3", onClick: () => formatHeading('h3'), children: _jsx("span", { className: "text-xs font-bold leading-none", children: "H3" }) }), _jsx(TbBtn, { title: "Paragraph", onClick: formatParagraph, children: _jsx("span", { className: "text-xs font-medium leading-none", children: "\u00B6" }) }), _jsx(TbSep, {})] })), _jsx(TbBtn, { title: "Bold (Ctrl+B)", active: isBold, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'bold'), children: _jsx("span", { className: "text-xs font-bold", children: "B" }) }), _jsx(TbBtn, { title: "Italic (Ctrl+I)", active: isItalic, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'italic'), children: _jsx("span", { className: "text-xs italic", children: "I" }) }), showUnderlineStrike && (_jsxs(_Fragment, { children: [_jsx(TbBtn, { title: "Underline (Ctrl+U)", active: isUnderline, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'underline'), children: _jsx("span", { className: "text-xs underline", children: "U" }) }), _jsx(TbBtn, { title: "Strikethrough", active: isStrikethrough, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'strikethrough'), children: _jsx("span", { className: "text-xs line-through", children: "S" }) })] })), showCode && (_jsx(TbBtn, { title: "Inline code", active: isCode, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'code'), children: _jsx(TbMultiIcon, { paths: ['M16 18l6-6-6-6', 'M8 6l-6 6 6 6'] }) })), showSuperSub && (_jsxs(_Fragment, { children: [_jsx(TbBtn, { title: "Superscript", active: isSuperscript, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'superscript'), children: _jsxs("span", { className: "text-xs leading-none", children: ["X", _jsx("sup", { children: "2" })] }) }), _jsx(TbBtn, { title: "Subscript", active: isSubscript, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'subscript'), children: _jsxs("span", { className: "text-xs leading-none", children: ["X", _jsx("sub", { children: "2" })] }) })] })), (showLists || showLink) && _jsx(TbSep, {}), showLists && (_jsxs(_Fragment, { children: [_jsx(TbBtn, { title: "Bullet list", onClick: () => editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined), children: _jsx(TbIcon, { d: "M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01" }) }), _jsx(TbBtn, { title: "Numbered list", onClick: () => editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined), children: _jsx(TbIcon, { d: "M10 6h11M10 12h11M10 18h11M3 5l2 1V4M3 11h2l-1 2h2M3 17l2 1-2 1" }) })] })), showCheckList && (_jsx(TbBtn, { title: "Check list", onClick: () => editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined), children: _jsx(TbMultiIcon, { paths: ['M9 11l3 3L22 4', 'M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11'] }) })), showLink && (_jsx(TbBtn, { title: "Insert link", active: isLink, onClick: insertLink, children: _jsx(TbMultiIcon, { paths: ['M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71', 'M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'] }) })), showIndent && (_jsxs(_Fragment, { children: [_jsx(TbSep, {}), _jsx(TbBtn, { title: "Indent", onClick: () => editor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined), children: _jsx(TbMultiIcon, { paths: ['M3 8l4 4-4 4', 'M11 6h10', 'M11 12h10', 'M11 18h10'] }) }), _jsx(TbBtn, { title: "Outdent", onClick: () => editor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined), children: _jsx(TbMultiIcon, { paths: ['M7 8l-4 4 4 4', 'M11 6h10', 'M11 12h10', 'M11 18h10'] }) })] })), showAlignment && (_jsxs(_Fragment, { children: [_jsx(TbSep, {}), _jsx(TbBtn, { title: "Align left", onClick: () => editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'left'), children: _jsx(TbIcon, { d: "M17 10H3M21 6H3M21 14H3M17 18H3" }) }), _jsx(TbBtn, { title: "Align center", onClick: () => editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'center'), children: _jsx(TbIcon, { d: "M18 10H6M21 6H3M21 14H3M18 18H6" }) }), _jsx(TbBtn, { title: "Align right", onClick: () => editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'right'), children: _jsx(TbIcon, { d: "M21 10H7M21 6H3M21 14H3M21 18H7" }) }), _jsx(TbBtn, { title: "Justify", onClick: () => editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'justify'), children: _jsx(TbIcon, { d: "M3 6h18M3 12h18M3 18h18" }) })] })), showExtras && (_jsxs(_Fragment, { children: [_jsx(TbSep, {}), _jsx(TbBtn, { title: "Insert table (3\u00D73)", onClick: insertTable, children: _jsx(TbMultiIcon, { paths: ['M3 3h18v18H3V3z', 'M3 9h18', 'M3 15h18', 'M9 3v18', 'M15 3v18'] }) }), _jsx(TbBtn, { title: "Block quote", onClick: formatBlockQuote, children: _jsx(TbMultiIcon, { paths: ['M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V20c0 1 0 1 1 1', 'M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3c0 1 0 1 1 1'] }) }), _jsx(TbBtn, { title: "Horizontal rule", onClick: () => editor.dispatchCommand(INSERT_HORIZONTAL_RULE_COMMAND, undefined), children: _jsx(TbIcon, { d: "M3 12h18" }) }), _jsx(TbBtn, { title: "Clear formatting", onClick: clearFormatting, children: _jsx(TbMultiIcon, { paths: ['M4 7h7l-2 9h7', 'M16 4l4 4-4 4', 'M7 20l5-5'] }) })] }))] }));
115
+ }
116
+ //# sourceMappingURL=toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../../src/RichTextEditor/toolbar.tsx"],"names":[],"mappings":"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"}
@@ -4,25 +4,32 @@
4
4
  * A Lexical-powered rich text editor styled to match the MiHCM design system.
5
5
  * Four variants control which toolbar features are shown:
6
6
  *
7
- * minimal — Bold, Italic only
8
- * default — Bold, Italic, Underline, Strikethrough + Bullet/Numbered lists
9
- * semi — default + Headings (H1–H3) + Undo/Redo + Code + Link + Indent/Outdent + Markdown shortcuts + Tab indentation
10
- * full — semi + Text alignment (L/C/R/Justify) + Superscript/Subscript + Check list + Table + Horizontal rule + Block quote + Clear formatting
7
+ * minimal — Bold, Italic only
8
+ * default — Bold, Italic, Underline, Strikethrough + Bullet/Numbered lists
9
+ * semi — default + Headings (H1–H3) + Undo/Redo + Code + Link +
10
+ * Indent/Outdent + Markdown shortcuts + Tab indentation
11
+ * full — semi + Text alignment (L/C/R/Justify) + Superscript/Subscript +
12
+ * Check list + Table + Horizontal rule + Block quote +
13
+ * Clear formatting
11
14
  *
12
- * Web only native apps should use a platform-specific editor.
15
+ * Implementation is split across `./RichTextEditor/*` per CLAUDE.md §6
16
+ * theme/variant config, toolbar icons, and toolbar plugin live separately.
13
17
  *
14
18
  * Wiki: docs/components/RichTextEditor.md
15
19
  */
16
20
  import { type HTMLAttributes } from 'react';
17
- import { type EditorState, type LexicalEditor } from 'lexical';
18
- export type RichTextEditorVariant = 'minimal' | 'default' | 'semi' | 'full';
21
+ import type { EditorState, LexicalEditor } from 'lexical';
22
+ import { type RichTextEditorVariant } from './RichTextEditor/theme.js';
23
+ export type { RichTextEditorVariant };
19
24
  export interface RichTextEditorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
20
25
  /**
21
26
  * Controls which toolbar features are shown.
22
27
  * - `minimal` — Bold, Italic
23
28
  * - `default` — Bold, Italic, Underline, Strikethrough, Lists
24
- * - `semi` — default + Headings, Undo/Redo, Code, Link, Indent/Outdent, Markdown shortcuts, Tab indentation
25
- * - `full` — semi + Alignment (L/C/R/Justify), Super/Subscript, Check list, Table, Block quote, HR, Clear formatting
29
+ * - `semi` — default + Headings, Undo/Redo, Code, Link, Indent/Outdent,
30
+ * Markdown shortcuts, Tab indentation
31
+ * - `full` — semi + Alignment (L/C/R/Justify), Super/Subscript, Check list,
32
+ * Table, Block quote, HR, Clear formatting
26
33
  */
27
34
  variant?: RichTextEditorVariant;
28
35
  /** Placeholder text for the editor. */
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextEditor.d.ts","sourceRoot":"","sources":["../src/RichTextEditor.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAKL,KAAK,cAAc,EAEpB,MAAM,OAAO,CAAC;AAgBf,OAAO,EAUL,KAAK,WAAW,EAChB,KAAK,aAAa,EAGnB,MAAM,SAAS,CAAC;AAcjB,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAqV5E,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IACrE,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,gHAmF1B,CAAC"}
1
+ {"version":3,"file":"RichTextEditor.d.ts","sourceRoot":"","sources":["../src/RichTextEditor.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAexD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAsB,MAAM,SAAS,CAAC;AAU9E,OAAO,EAAe,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGpF,YAAY,EAAE,qBAAqB,EAAE,CAAC;AAUtC,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IACrE,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,gHAmF1B,CAAC"}
@@ -1,21 +1,25 @@
1
1
  'use client';
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  /**
4
4
  * RichTextEditor (web only — React DOM).
5
5
  *
6
6
  * A Lexical-powered rich text editor styled to match the MiHCM design system.
7
7
  * Four variants control which toolbar features are shown:
8
8
  *
9
- * minimal — Bold, Italic only
10
- * default — Bold, Italic, Underline, Strikethrough + Bullet/Numbered lists
11
- * semi — default + Headings (H1–H3) + Undo/Redo + Code + Link + Indent/Outdent + Markdown shortcuts + Tab indentation
12
- * full — semi + Text alignment (L/C/R/Justify) + Superscript/Subscript + Check list + Table + Horizontal rule + Block quote + Clear formatting
9
+ * minimal — Bold, Italic only
10
+ * default — Bold, Italic, Underline, Strikethrough + Bullet/Numbered lists
11
+ * semi — default + Headings (H1–H3) + Undo/Redo + Code + Link +
12
+ * Indent/Outdent + Markdown shortcuts + Tab indentation
13
+ * full — semi + Text alignment (L/C/R/Justify) + Superscript/Subscript +
14
+ * Check list + Table + Horizontal rule + Block quote +
15
+ * Clear formatting
13
16
  *
14
- * Web only native apps should use a platform-specific editor.
17
+ * Implementation is split across `./RichTextEditor/*` per CLAUDE.md §6
18
+ * theme/variant config, toolbar icons, and toolbar plugin live separately.
15
19
  *
16
20
  * Wiki: docs/components/RichTextEditor.md
17
21
  */
18
- import { forwardRef, useCallback, useEffect, useState, } from 'react';
22
+ import { forwardRef } from 'react';
19
23
  import { cn } from './internal/cn.js';
20
24
  import { LexicalComposer } from '@lexical/react/LexicalComposer.js';
21
25
  import { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin.js';
@@ -28,167 +32,17 @@ import { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin.js';
28
32
  import { MarkdownShortcutPlugin } from '@lexical/react/LexicalMarkdownShortcutPlugin.js';
29
33
  import { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin.js';
30
34
  import { TablePlugin } from '@lexical/react/LexicalTablePlugin.js';
31
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
32
35
  import { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary.js';
33
- import { $isRangeSelection, $getSelection, $createParagraphNode, FORMAT_TEXT_COMMAND, FORMAT_ELEMENT_COMMAND, INDENT_CONTENT_COMMAND, OUTDENT_CONTENT_COMMAND, UNDO_COMMAND, REDO_COMMAND, } from 'lexical';
34
- import { HeadingNode, $createHeadingNode, QuoteNode, $createQuoteNode } from '@lexical/rich-text';
35
- import { ListItemNode, ListNode, INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND } from '@lexical/list';
36
- import { INSERT_CHECK_LIST_COMMAND } from '@lexical/list';
37
- import { LinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from '@lexical/link';
36
+ import { HeadingNode, QuoteNode } from '@lexical/rich-text';
37
+ import { ListItemNode, ListNode } from '@lexical/list';
38
+ import { LinkNode } from '@lexical/link';
38
39
  import { CodeNode } from '@lexical/code';
39
- import { $setBlocksType } from '@lexical/selection';
40
- import { HorizontalRuleNode, INSERT_HORIZONTAL_RULE_COMMAND } from '@lexical/react/LexicalHorizontalRuleNode.js';
40
+ import { HorizontalRuleNode } from '@lexical/react/LexicalHorizontalRuleNode.js';
41
41
  import { HorizontalRulePlugin } from '@lexical/react/LexicalHorizontalRulePlugin.js';
42
- import { TableNode, TableCellNode, TableRowNode, $createTableNodeWithDimensions } from '@lexical/table';
42
+ import { TableNode, TableCellNode, TableRowNode } from '@lexical/table';
43
43
  import { TRANSFORMERS, ELEMENT_TRANSFORMERS, TEXT_FORMAT_TRANSFORMERS, TEXT_MATCH_TRANSFORMERS } from '@lexical/markdown';
44
- /* ── Theme (maps Lexical class names to Tailwind) ─────────────────── */
45
- const editorTheme = {
46
- paragraph: 'mb-2 last:mb-0',
47
- heading: {
48
- h1: 'text-2xl font-bold mb-3 text-foreground',
49
- h2: 'text-xl font-semibold mb-2 text-foreground',
50
- h3: 'text-lg font-medium mb-2 text-foreground',
51
- },
52
- text: {
53
- bold: 'font-bold',
54
- italic: 'italic',
55
- underline: 'underline',
56
- strikethrough: 'line-through',
57
- underlineStrikethrough: 'underline line-through',
58
- code: 'font-mono text-sm bg-muted px-1.5 py-0.5 rounded',
59
- subscript: 'align-sub',
60
- superscript: 'align-super',
61
- },
62
- list: {
63
- ul: 'list-disc ml-6 mb-2',
64
- ol: 'list-decimal ml-6 mb-2',
65
- listitem: 'mb-0.5',
66
- listitemChecked: 'line-through opacity-60 relative ml-2 list-none outline-none',
67
- listitemUnchecked: 'relative ml-2 list-none outline-none',
68
- nested: { listitem: 'list-none' },
69
- checklist: 'list-none ml-0',
70
- },
71
- link: 'text-primary underline cursor-pointer hover:text-primary/80',
72
- quote: 'border-l-4 border-primary-200 dark:border-primary-800 pl-4 italic text-muted-foreground mb-2',
73
- code: 'font-mono text-sm bg-muted p-3 rounded-md mb-2 block overflow-x-auto',
74
- horizontalRule: 'my-4 border-t border-border',
75
- table: 'border-collapse border border-border w-full mb-2',
76
- tableCell: 'border border-border px-2 py-1.5 text-sm min-w-[75px]',
77
- tableCellHeader: 'border border-border px-2 py-1.5 text-sm font-semibold bg-muted/50',
78
- };
79
- /* ── Toolbar primitives ───────────────────────────────────────────── */
80
- function TbIcon({ d, className }) {
81
- return (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: cn('size-3.5', className), children: _jsx("path", { d: d }) }));
82
- }
83
- function TbMultiIcon({ paths, className }) {
84
- return (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: cn('size-3.5', className), children: paths.map((d, i) => _jsx("path", { d: d }, i)) }));
85
- }
86
- function TbBtn({ active, onClick, title, children }) {
87
- return (_jsx("button", { type: "button", onClick: onClick, title: title, "aria-label": title, "aria-pressed": active, className: cn('flex items-center justify-center size-7 rounded transition-colors duration-150 cursor-pointer', 'hover:bg-muted focus:outline-none focus-visible:ring-2 focus-visible:ring-ring', active && 'border border-primary bg-primary text-primary-foreground shadow-mi-card'), children: children }));
88
- }
89
- function TbSep() {
90
- return _jsx("span", { className: "w-px h-4 bg-border mx-0.5", "aria-hidden": true });
91
- }
92
- /* ── Toolbar plugin ───────────────────────────────────────────────── */
93
- function ToolbarPlugin({ variant }) {
94
- const [editor] = useLexicalComposerContext();
95
- const [isBold, setIsBold] = useState(false);
96
- const [isItalic, setIsItalic] = useState(false);
97
- const [isUnderline, setIsUnderline] = useState(false);
98
- const [isStrikethrough, setIsStrikethrough] = useState(false);
99
- const [isCode, setIsCode] = useState(false);
100
- const [isSuperscript, setIsSuperscript] = useState(false);
101
- const [isSubscript, setIsSubscript] = useState(false);
102
- const [isLink, setIsLink] = useState(false);
103
- const updateToolbar = useCallback(() => {
104
- const selection = $getSelection();
105
- if ($isRangeSelection(selection)) {
106
- setIsBold(selection.hasFormat('bold'));
107
- setIsItalic(selection.hasFormat('italic'));
108
- setIsUnderline(selection.hasFormat('underline'));
109
- setIsStrikethrough(selection.hasFormat('strikethrough'));
110
- setIsCode(selection.hasFormat('code'));
111
- setIsSuperscript(selection.hasFormat('superscript'));
112
- setIsSubscript(selection.hasFormat('subscript'));
113
- const node = selection.anchor.getNode();
114
- const parent = node.getParent();
115
- setIsLink($isLinkNode(parent) || $isLinkNode(node));
116
- }
117
- }, []);
118
- useEffect(() => {
119
- return editor.registerUpdateListener(({ editorState }) => {
120
- editorState.read(() => updateToolbar());
121
- });
122
- }, [editor, updateToolbar]);
123
- const formatHeading = (tag) => {
124
- editor.update(() => {
125
- const selection = $getSelection();
126
- if ($isRangeSelection(selection))
127
- $setBlocksType(selection, () => $createHeadingNode(tag));
128
- });
129
- };
130
- const formatParagraph = () => {
131
- editor.update(() => {
132
- const selection = $getSelection();
133
- if ($isRangeSelection(selection))
134
- $setBlocksType(selection, () => $createParagraphNode());
135
- });
136
- };
137
- const formatBlockQuote = () => {
138
- editor.update(() => {
139
- const selection = $getSelection();
140
- if ($isRangeSelection(selection))
141
- $setBlocksType(selection, () => $createQuoteNode());
142
- });
143
- };
144
- const insertLink = () => {
145
- if (isLink) {
146
- editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);
147
- }
148
- else {
149
- const url = prompt('Enter URL:');
150
- if (url)
151
- editor.dispatchCommand(TOGGLE_LINK_COMMAND, url);
152
- }
153
- };
154
- const insertTable = () => {
155
- editor.update(() => {
156
- const table = $createTableNodeWithDimensions(3, 3, false);
157
- const selection = $getSelection();
158
- if ($isRangeSelection(selection)) {
159
- const anchor = selection.anchor.getNode();
160
- const parent = anchor.getTopLevelElementOrThrow();
161
- parent.insertAfter(table);
162
- }
163
- });
164
- };
165
- const clearFormatting = () => {
166
- editor.update(() => {
167
- const selection = $getSelection();
168
- if ($isRangeSelection(selection)) {
169
- for (const format of ['bold', 'italic', 'underline', 'strikethrough', 'code', 'superscript', 'subscript']) {
170
- if (selection.hasFormat(format)) {
171
- editor.dispatchCommand(FORMAT_TEXT_COMMAND, format);
172
- }
173
- }
174
- }
175
- });
176
- };
177
- const showHistory = variant === 'semi' || variant === 'full';
178
- const showHeadings = variant === 'semi' || variant === 'full';
179
- const showUnderlineStrike = variant !== 'minimal';
180
- const showLists = variant !== 'minimal';
181
- const showCode = variant === 'semi' || variant === 'full';
182
- const showLink = variant === 'semi' || variant === 'full';
183
- const showIndent = variant === 'semi' || variant === 'full';
184
- const showAlignment = variant === 'full';
185
- const showSuperSub = variant === 'full';
186
- const showCheckList = variant === 'full';
187
- const showTable = variant === 'full';
188
- const showExtras = variant === 'full';
189
- return (_jsxs("div", { className: "flex items-center gap-0.5 px-2 py-1.5 border-b border-border bg-muted/50 rounded-t-lg flex-wrap", children: [showHistory && (_jsxs(_Fragment, { children: [_jsx(TbBtn, { title: "Undo (Ctrl+Z)", onClick: () => editor.dispatchCommand(UNDO_COMMAND, undefined), children: _jsx(TbIcon, { d: "M3 7v6h6M3 13a9 9 0 1 0 3-7.7" }) }), _jsx(TbBtn, { title: "Redo (Ctrl+Shift+Z)", onClick: () => editor.dispatchCommand(REDO_COMMAND, undefined), children: _jsx(TbIcon, { d: "M21 7v6h-6M21 13a9 9 0 1 1-3-7.7" }) }), _jsx(TbSep, {})] })), showHeadings && (_jsxs(_Fragment, { children: [_jsx(TbBtn, { title: "Heading 1", onClick: () => formatHeading('h1'), children: _jsx("span", { className: "text-xs font-bold leading-none", children: "H1" }) }), _jsx(TbBtn, { title: "Heading 2", onClick: () => formatHeading('h2'), children: _jsx("span", { className: "text-xs font-bold leading-none", children: "H2" }) }), _jsx(TbBtn, { title: "Heading 3", onClick: () => formatHeading('h3'), children: _jsx("span", { className: "text-xs font-bold leading-none", children: "H3" }) }), _jsx(TbBtn, { title: "Paragraph", onClick: formatParagraph, children: _jsx("span", { className: "text-xs font-medium leading-none", children: "\u00B6" }) }), _jsx(TbSep, {})] })), _jsx(TbBtn, { title: "Bold (Ctrl+B)", active: isBold, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'bold'), children: _jsx("span", { className: "text-xs font-bold", children: "B" }) }), _jsx(TbBtn, { title: "Italic (Ctrl+I)", active: isItalic, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'italic'), children: _jsx("span", { className: "text-xs italic", children: "I" }) }), showUnderlineStrike && (_jsxs(_Fragment, { children: [_jsx(TbBtn, { title: "Underline (Ctrl+U)", active: isUnderline, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'underline'), children: _jsx("span", { className: "text-xs underline", children: "U" }) }), _jsx(TbBtn, { title: "Strikethrough", active: isStrikethrough, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'strikethrough'), children: _jsx("span", { className: "text-xs line-through", children: "S" }) })] })), showCode && (_jsx(TbBtn, { title: "Inline code", active: isCode, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'code'), children: _jsx(TbMultiIcon, { paths: ['M16 18l6-6-6-6', 'M8 6l-6 6 6 6'] }) })), showSuperSub && (_jsxs(_Fragment, { children: [_jsx(TbBtn, { title: "Superscript", active: isSuperscript, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'superscript'), children: _jsxs("span", { className: "text-xs leading-none", children: ["X", _jsx("sup", { children: "2" })] }) }), _jsx(TbBtn, { title: "Subscript", active: isSubscript, onClick: () => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'subscript'), children: _jsxs("span", { className: "text-xs leading-none", children: ["X", _jsx("sub", { children: "2" })] }) })] })), (showLists || showLink) && _jsx(TbSep, {}), showLists && (_jsxs(_Fragment, { children: [_jsx(TbBtn, { title: "Bullet list", onClick: () => editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined), children: _jsx(TbIcon, { d: "M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01" }) }), _jsx(TbBtn, { title: "Numbered list", onClick: () => editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined), children: _jsx(TbIcon, { d: "M10 6h11M10 12h11M10 18h11M3 5l2 1V4M3 11h2l-1 2h2M3 17l2 1-2 1" }) })] })), showCheckList && (_jsx(TbBtn, { title: "Check list", onClick: () => editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined), children: _jsx(TbMultiIcon, { paths: ['M9 11l3 3L22 4', 'M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11'] }) })), showLink && (_jsx(TbBtn, { title: "Insert link", active: isLink, onClick: insertLink, children: _jsx(TbMultiIcon, { paths: ['M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71', 'M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'] }) })), showIndent && (_jsxs(_Fragment, { children: [_jsx(TbSep, {}), _jsx(TbBtn, { title: "Indent", onClick: () => editor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined), children: _jsx(TbMultiIcon, { paths: ['M3 8l4 4-4 4', 'M11 6h10', 'M11 12h10', 'M11 18h10'] }) }), _jsx(TbBtn, { title: "Outdent", onClick: () => editor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined), children: _jsx(TbMultiIcon, { paths: ['M7 8l-4 4 4 4', 'M11 6h10', 'M11 12h10', 'M11 18h10'] }) })] })), showAlignment && (_jsxs(_Fragment, { children: [_jsx(TbSep, {}), _jsx(TbBtn, { title: "Align left", onClick: () => editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'left'), children: _jsx(TbIcon, { d: "M17 10H3M21 6H3M21 14H3M17 18H3" }) }), _jsx(TbBtn, { title: "Align center", onClick: () => editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'center'), children: _jsx(TbIcon, { d: "M18 10H6M21 6H3M21 14H3M18 18H6" }) }), _jsx(TbBtn, { title: "Align right", onClick: () => editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'right'), children: _jsx(TbIcon, { d: "M21 10H7M21 6H3M21 14H3M21 18H7" }) }), _jsx(TbBtn, { title: "Justify", onClick: () => editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'justify'), children: _jsx(TbIcon, { d: "M3 6h18M3 12h18M3 18h18" }) })] })), showExtras && (_jsxs(_Fragment, { children: [_jsx(TbSep, {}), _jsx(TbBtn, { title: "Insert table (3\u00D73)", onClick: insertTable, children: _jsx(TbMultiIcon, { paths: ['M3 3h18v18H3V3z', 'M3 9h18', 'M3 15h18', 'M9 3v18', 'M15 3v18'] }) }), _jsx(TbBtn, { title: "Block quote", onClick: formatBlockQuote, children: _jsx(TbMultiIcon, { paths: ['M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V20c0 1 0 1 1 1', 'M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3c0 1 0 1 1 1'] }) }), _jsx(TbBtn, { title: "Horizontal rule", onClick: () => editor.dispatchCommand(INSERT_HORIZONTAL_RULE_COMMAND, undefined), children: _jsx(TbIcon, { d: "M3 12h18" }) }), _jsx(TbBtn, { title: "Clear formatting", onClick: clearFormatting, children: _jsx(TbMultiIcon, { paths: ['M4 7h7l-2 9h7', 'M16 4l4 4-4 4', 'M7 20l5-5'] }) })] }))] }));
190
- }
191
- /* ── Placeholder ──────────────────────────────────────────────────── */
44
+ import { editorTheme } from './RichTextEditor/theme.js';
45
+ import { ToolbarPlugin } from './RichTextEditor/toolbar.js';
192
46
  function Placeholder({ text }) {
193
47
  return (_jsx("div", { className: "absolute top-0 left-0 pointer-events-none text-muted-foreground text-sm px-4 pt-3", children: text }));
194
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextEditor.js","sourceRoot":"","sources":["../src/RichTextEditor.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,UAAU,EACV,WAAW,EACX,SAAS,EACT,QAAQ,GAGT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACZ,YAAY,GAKb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAuB,MAAM,oBAAoB,CAAC;AACvH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AACnH,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AACjH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AACxG,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAM1H,yEAAyE;AAEzE,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,gBAAgB;IAC3B,OAAO,EAAE;QACP,EAAE,EAAE,yCAAyC;QAC7C,EAAE,EAAE,4CAA4C;QAChD,EAAE,EAAE,0CAA0C;KAC/C;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,WAAW;QACtB,aAAa,EAAE,cAAc;QAC7B,sBAAsB,EAAE,wBAAwB;QAChD,IAAI,EAAE,kDAAkD;QACxD,SAAS,EAAE,WAAW;QACtB,WAAW,EAAE,aAAa;KAC3B;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,qBAAqB;QACzB,EAAE,EAAE,wBAAwB;QAC5B,QAAQ,EAAE,QAAQ;QAClB,eAAe,EAAE,8DAA8D;QAC/E,iBAAiB,EAAE,sCAAsC;QACzD,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE;QACjC,SAAS,EAAE,gBAAgB;KAC5B;IACD,IAAI,EAAE,6DAA6D;IACnE,KAAK,EAAE,8FAA8F;IACrG,IAAI,EAAE,sEAAsE;IAC5E,cAAc,EAAE,6BAA6B;IAC7C,KAAK,EAAE,kDAAkD;IACzD,SAAS,EAAE,uDAAuD;IAClE,eAAe,EAAE,oEAAoE;CACtF,CAAC;AAEF,yEAAyE;AAEzE,SAAS,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,EAAqC;IACjE,OAAO,CACL,cAAK,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,YAC1J,eAAM,CAAC,EAAE,CAAC,GAAI,GACV,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAA2C;IAChF,OAAO,CACL,cAAK,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,YACzJ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,eAAc,CAAC,EAAE,CAAC,IAAP,CAAC,CAAU,CAAC,GACxC,CACP,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAiF;IAChI,OAAO,CACL,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,gBAAc,KAAK,kBAAgB,MAAM,EAAE,SAAS,EAAE,EAAE,CAC1G,+FAA+F,EAC/F,gFAAgF,EAChF,MAAM,IAAI,yEAAyE,CACpF,YACE,QAAQ,GACF,CACV,CAAC;AACJ,CAAC;AAED,SAAS,KAAK;IACZ,OAAO,eAAM,SAAS,EAAC,2BAA2B,wBAAe,CAAC;AACpE,CAAC;AAED,yEAAyE;AAEzE,SAAS,aAAa,CAAC,EAAE,OAAO,EAAsC;IACpE,MAAM,CAAC,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAC;IAC7C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACvC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3C,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YACjD,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;YACzD,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACvC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;YACrD,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;YACvD,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5B,MAAM,aAAa,GAAG,CAAC,GAAmB,EAAE,EAAE;QAC5C,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,IAAI,iBAAiB,CAAC,SAAS,CAAC;gBAAE,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,IAAI,iBAAiB,CAAC,SAAS,CAAC;gBAAE,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,IAAI,iBAAiB,CAAC,SAAS,CAAC;gBAAE,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,GAAG;gBAAE,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,KAAK,GAAG,8BAA8B,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,yBAAyB,EAAE,CAAC;gBAClD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,KAAK,MAAM,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAU,EAAE,CAAC;oBACnH,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;wBAChC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;oBACtD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC;IAC7D,MAAM,YAAY,GAAG,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC;IAC9D,MAAM,mBAAmB,GAAG,OAAO,KAAK,SAAS,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC;IAC1D,MAAM,QAAQ,GAAG,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC;IAC1D,MAAM,UAAU,GAAG,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC;IAC5D,MAAM,aAAa,GAAG,OAAO,KAAK,MAAM,CAAC;IACzC,MAAM,YAAY,GAAG,OAAO,KAAK,MAAM,CAAC;IACxC,MAAM,aAAa,GAAG,OAAO,KAAK,MAAM,CAAC;IACzC,MAAM,SAAS,GAAG,OAAO,KAAK,MAAM,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,KAAK,MAAM,CAAC;IAEtC,OAAO,CACL,eAAK,SAAS,EAAC,iGAAiG,aAE7G,WAAW,IAAI,CACd,8BACE,KAAC,KAAK,IAAC,KAAK,EAAC,eAAe,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,YACzF,KAAC,MAAM,IAAC,CAAC,EAAC,+BAA+B,GAAG,GACtC,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,qBAAqB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,YAC/F,KAAC,MAAM,IAAC,CAAC,EAAC,kCAAkC,GAAG,GACzC,EACR,KAAC,KAAK,KAAG,IACR,CACJ,EAGA,YAAY,IAAI,CACf,8BACE,KAAC,KAAK,IAAC,KAAK,EAAC,WAAW,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,YACzD,eAAM,SAAS,EAAC,gCAAgC,mBAAU,GACpD,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,WAAW,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,YACzD,eAAM,SAAS,EAAC,gCAAgC,mBAAU,GACpD,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,WAAW,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,YACzD,eAAM,SAAS,EAAC,gCAAgC,mBAAU,GACpD,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,WAAW,EAAC,OAAO,EAAE,eAAe,YAC/C,eAAM,SAAS,EAAC,kCAAkC,uBAAS,GACrD,EACR,KAAC,KAAK,KAAG,IACR,CACJ,EAGD,KAAC,KAAK,IAAC,KAAK,EAAC,eAAe,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,YAC7G,eAAM,SAAS,EAAC,mBAAmB,kBAAS,GACtC,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,iBAAiB,EAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,QAAQ,CAAC,YACnH,eAAM,SAAS,EAAC,gBAAgB,kBAAS,GACnC,EACP,mBAAmB,IAAI,CACtB,8BACE,KAAC,KAAK,IAAC,KAAK,EAAC,oBAAoB,EAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,WAAW,CAAC,YAC5H,eAAM,SAAS,EAAC,mBAAmB,kBAAS,GACtC,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,eAAe,EAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,eAAe,CAAC,YAC/H,eAAM,SAAS,EAAC,sBAAsB,kBAAS,GACzC,IACP,CACJ,EAGA,QAAQ,IAAI,CACX,KAAC,KAAK,IAAC,KAAK,EAAC,aAAa,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,YAC3G,KAAC,WAAW,IAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAAI,GACrD,CACT,EAGA,YAAY,IAAI,CACf,8BACE,KAAC,KAAK,IAAC,KAAK,EAAC,aAAa,EAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,aAAa,CAAC,YACzH,gBAAM,SAAS,EAAC,sBAAsB,kBAAE,8BAAY,IAAO,GACrD,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,WAAW,EAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,WAAW,CAAC,YACnH,gBAAM,SAAS,EAAC,sBAAsB,kBAAE,8BAAY,IAAO,GACrD,IACP,CACJ,EAEA,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAC,KAAK,KAAG,EAGpC,SAAS,IAAI,CACZ,8BACE,KAAC,KAAK,IAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,6BAA6B,EAAE,SAAS,CAAC,YACxG,KAAC,MAAM,IAAC,CAAC,EAAC,mDAAmD,GAAG,GAC1D,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,eAAe,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,2BAA2B,EAAE,SAAS,CAAC,YACxG,KAAC,MAAM,IAAC,CAAC,EAAC,iEAAiE,GAAG,GACxE,IACP,CACJ,EAGA,aAAa,IAAI,CAChB,KAAC,KAAK,IAAC,KAAK,EAAC,YAAY,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,yBAAyB,EAAE,SAAS,CAAC,YACnG,KAAC,WAAW,IAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,2DAA2D,CAAC,GAAI,GACjG,CACT,EAGA,QAAQ,IAAI,CACX,KAAC,KAAK,IAAC,KAAK,EAAC,aAAa,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,YAC5D,KAAC,WAAW,IAAC,KAAK,EAAE,CAAC,6DAA6D,EAAE,8DAA8D,CAAC,GAAI,GACjJ,CACT,EAGA,UAAU,IAAI,CACb,8BACE,KAAC,KAAK,KAAG,EACT,KAAC,KAAK,IAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,sBAAsB,EAAE,SAAS,CAAC,YAC5F,KAAC,WAAW,IAAC,KAAK,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,GAAI,GACxE,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,SAAS,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,uBAAuB,EAAE,SAAS,CAAC,YAC9F,KAAC,WAAW,IAAC,KAAK,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,GAAI,GACzE,IACP,CACJ,EAGA,aAAa,IAAI,CAChB,8BACE,KAAC,KAAK,KAAG,EACT,KAAC,KAAK,IAAC,KAAK,EAAC,YAAY,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,sBAAsB,EAAE,MAAM,CAAC,YAC7F,KAAC,MAAM,IAAC,CAAC,EAAC,iCAAiC,GAAG,GACxC,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,cAAc,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,sBAAsB,EAAE,QAAQ,CAAC,YACjG,KAAC,MAAM,IAAC,CAAC,EAAC,iCAAiC,GAAG,GACxC,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,sBAAsB,EAAE,OAAO,CAAC,YAC/F,KAAC,MAAM,IAAC,CAAC,EAAC,iCAAiC,GAAG,GACxC,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,SAAS,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,sBAAsB,EAAE,SAAS,CAAC,YAC7F,KAAC,MAAM,IAAC,CAAC,EAAC,yBAAyB,GAAG,GAChC,IACP,CACJ,EAGA,UAAU,IAAI,CACb,8BACE,KAAC,KAAK,KAAG,EACT,KAAC,KAAK,IAAC,KAAK,EAAC,yBAAoB,EAAC,OAAO,EAAE,WAAW,YACpD,KAAC,WAAW,IAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,GAAI,GACnF,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAE,gBAAgB,YAClD,KAAC,WAAW,IAAC,KAAK,EAAE,CAAC,+IAA+I,EAAE,6HAA6H,CAAC,GAAI,GAClS,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,iBAAiB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,8BAA8B,EAAE,SAAS,CAAC,YAC7G,KAAC,MAAM,IAAC,CAAC,EAAC,UAAU,GAAG,GACjB,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,kBAAkB,EAAC,OAAO,EAAE,eAAe,YACtD,KAAC,WAAW,IAAC,KAAK,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,WAAW,CAAC,GAAI,GACjE,IACP,CACJ,IACG,CACP,CAAC;AACJ,CAAC;AAED,yEAAyE;AAEzE,SAAS,WAAW,CAAC,EAAE,IAAI,EAAoB;IAC7C,OAAO,CACL,cAAK,SAAS,EAAC,mFAAmF,YAC/F,IAAI,GACD,CACP,CAAC;AACJ,CAAC;AAwBD,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,SAAS,cAAc,CACrB,EACE,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,WAAW,GAAG,iBAAiB,EAC/B,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,OAAO,EACnB,GAAG,KAAK,EACT,EACD,GAAG;IAEH,MAAM,KAAK,GAAyB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC7D,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,aAAa,GAAG;QACpB,SAAS,EAAE,qBAAqB;QAChC,KAAK,EAAE,WAAW;QAClB,KAAK;QACL,QAAQ,EAAE,CAAC,QAAQ;QACnB,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC;IAEF,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,yDAAyD,EACzD,4EAA4E,EAC5E,mBAAmB,EACnB,QAAQ,IAAI,YAAY,EACxB,SAAS,CACV,KACG,KAAK,YAET,MAAC,eAAe,IAAC,aAAa,EAAE,aAAa,aAC1C,CAAC,QAAQ,IAAI,KAAC,aAAa,IAAC,OAAO,EAAE,OAAO,GAAI,EACjD,cAAK,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,YAC5C,KAAC,cAAc,IACb,eAAe,EACb,KAAC,eAAe,IACd,SAAS,EAAC,2DAA2D,EACrE,KAAK,EAAE,EAAE,SAAS,EAAE,GACpB,EAEJ,WAAW,EAAE,KAAC,WAAW,IAAC,IAAI,EAAE,WAAW,GAAI,EAC/C,aAAa,EAAE,oBAAoB,GACnC,GACE,EACN,KAAC,aAAa,KAAG,EACjB,KAAC,UAAU,KAAG,EACb,OAAO,KAAK,MAAM,IAAI,KAAC,eAAe,KAAG,EACzC,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC,IAAI,KAAC,UAAU,KAAG,EAC5D,OAAO,KAAK,MAAM,IAAI,KAAC,sBAAsB,IAAC,YAAY,EAAE,YAAY,GAAI,EAC5E,OAAO,KAAK,MAAM,IAAI,CACrB,KAAC,sBAAsB,IACrB,YAAY,EAAE;wBACZ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CACxD,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAY,CAAC,CAC1F,CAAC;wBACF,GAAG,wBAAwB;wBAC3B,GAAG,uBAAuB;qBAC3B,GACD,CACH,EACA,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC,IAAI,KAAC,oBAAoB,KAAG,EACtE,OAAO,KAAK,MAAM,IAAI,KAAC,oBAAoB,KAAG,EAC9C,OAAO,KAAK,MAAM,IAAI,KAAC,WAAW,KAAG,EACrC,QAAQ,IAAI,CACX,KAAC,cAAc,IAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,GAAI,CACrF,IACe,GACd,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"RichTextEditor.js","sourceRoot":"","sources":["../src/RichTextEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * SelectContent — floating listbox panel with outside-click dismissal,
3
+ * arrow-key navigation, and focus management.
4
+ */
5
+ import { type HTMLAttributes } from 'react';
6
+ export interface SelectContentProps extends HTMLAttributes<HTMLDivElement> {
7
+ }
8
+ export declare const SelectContent: import("react").ForwardRefExoticComponent<SelectContentProps & import("react").RefAttributes<HTMLDivElement>>;
9
+ //# sourceMappingURL=content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/Select/content.tsx"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EAKL,KAAK,cAAc,EAEpB,MAAM,OAAO,CAAC;AAIf,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,cAAc,CAAC;CAAG;AAE7E,eAAO,MAAM,aAAa,+GA2FzB,CAAC"}
@@ -0,0 +1,80 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * SelectContent — floating listbox panel with outside-click dismissal,
5
+ * arrow-key navigation, and focus management.
6
+ */
7
+ import { forwardRef, useCallback, useEffect, useRef, } from 'react';
8
+ import { cn } from '../internal/cn.js';
9
+ import { useSelectContext } from './context.js';
10
+ export const SelectContent = forwardRef(function SelectContent({ className, children, ...props }, ref) {
11
+ const ctx = useSelectContext();
12
+ const contentRef = useRef(null);
13
+ const focusedIndexRef = useRef(-1);
14
+ useEffect(() => {
15
+ if (!ctx.open)
16
+ return;
17
+ function handleClickOutside(e) {
18
+ const target = e.target;
19
+ if (contentRef.current &&
20
+ !contentRef.current.contains(target) &&
21
+ ctx.triggerRef.current &&
22
+ !ctx.triggerRef.current.contains(target)) {
23
+ ctx.setOpen(false);
24
+ }
25
+ }
26
+ document.addEventListener('mousedown', handleClickOutside);
27
+ return () => document.removeEventListener('mousedown', handleClickOutside);
28
+ }, [ctx]);
29
+ useEffect(() => {
30
+ if (!ctx.open)
31
+ return;
32
+ function handleKeyDown(e) {
33
+ const options = contentRef.current?.querySelectorAll('[role="option"]');
34
+ if (!options?.length)
35
+ return;
36
+ if (e.key === 'Escape') {
37
+ e.preventDefault();
38
+ ctx.setOpen(false);
39
+ ctx.triggerRef.current?.focus();
40
+ return;
41
+ }
42
+ if (e.key === 'ArrowDown') {
43
+ e.preventDefault();
44
+ focusedIndexRef.current = Math.min(focusedIndexRef.current + 1, options.length - 1);
45
+ options[focusedIndexRef.current]?.focus();
46
+ }
47
+ else if (e.key === 'ArrowUp') {
48
+ e.preventDefault();
49
+ focusedIndexRef.current = Math.max(focusedIndexRef.current - 1, 0);
50
+ options[focusedIndexRef.current]?.focus();
51
+ }
52
+ }
53
+ document.addEventListener('keydown', handleKeyDown);
54
+ return () => document.removeEventListener('keydown', handleKeyDown);
55
+ }, [ctx]);
56
+ useEffect(() => {
57
+ if (!ctx.open || !contentRef.current)
58
+ return;
59
+ focusedIndexRef.current = -1;
60
+ const selected = contentRef.current.querySelector('[aria-selected="true"]');
61
+ if (selected) {
62
+ selected.focus();
63
+ }
64
+ else {
65
+ const first = contentRef.current.querySelector('[role="option"]');
66
+ first?.focus();
67
+ }
68
+ }, [ctx.open]);
69
+ const setRef = useCallback((el) => {
70
+ contentRef.current = el;
71
+ if (typeof ref === 'function')
72
+ ref(el);
73
+ else if (ref)
74
+ ref.current = el;
75
+ }, [ref]);
76
+ if (!ctx.open)
77
+ return null;
78
+ return (_jsx("div", { ref: setRef, id: ctx.triggerRef.current?.id ? `${ctx.triggerRef.current.id}-listbox` : undefined, role: "listbox", "aria-labelledby": ctx.triggerRef.current?.id || undefined, className: cn('absolute left-0 top-full z-50 mt-1 w-full min-w-[8rem] overflow-hidden rounded-lg', 'border border-border bg-card text-card-foreground shadow-mi-input', 'animate-dropdown-in', className), ...props, children: _jsx("div", { className: "max-h-60 overflow-y-auto p-1", children: children }) }));
79
+ });
80
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/Select/content.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;GAGG;AACH,OAAO,EACL,UAAU,EACV,WAAW,EACX,SAAS,EACT,MAAM,GAGP,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIhD,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CACrC,SAAS,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG;IAC3D,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,OAAO;QACtB,SAAS,kBAAkB,CAAC,CAAa;YACvC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAc,CAAC;YAChC,IACE,UAAU,CAAC,OAAO;gBAClB,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACpC,GAAG,CAAC,UAAU,CAAC,OAAO;gBACtB,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EACxC,CAAC;gBACD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC3D,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC7E,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,OAAO;QACtB,SAAS,aAAa,CAAC,CAAgB;YACrC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAc,iBAAiB,CAAC,CAAC;YACrF,IAAI,CAAC,OAAO,EAAE,MAAM;gBAAE,OAAO;YAE7B,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACvB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnB,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;gBAC1B,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACpF,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;YAC5C,CAAC;iBAAM,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC/B,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,OAAO;QAC7C,eAAe,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAc,wBAAwB,CAAC,CAAC;QACzF,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAc,iBAAiB,CAAC,CAAC;YAC/E,KAAK,EAAE,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAEf,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,EAAyB,EAAE,EAAE;QAC5B,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,KAAK,UAAU;YAAE,GAAG,CAAC,EAAE,CAAC,CAAC;aAClC,IAAI,GAAG;YAAG,GAA+C,CAAC,OAAO,GAAG,EAAE,CAAC;IAC9E,CAAC,EACD,CAAC,GAAG,CAAC,CACN,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAE3B,OAAO,CACL,cACE,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,EACnF,IAAI,EAAC,SAAS,qBACG,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,SAAS,EACxD,SAAS,EAAE,EAAE,CACX,mFAAmF,EACnF,mEAAmE,EACnE,qBAAqB,EACrB,SAAS,CACV,KACG,KAAK,YAET,cAAK,SAAS,EAAC,8BAA8B,YAAE,QAAQ,GAAO,GAC1D,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Internal context for the composable Select.
3
+ */
4
+ import { type ReactNode, type RefObject } from 'react';
5
+ export interface SelectContextValue {
6
+ value: string | undefined;
7
+ onValueChange: (value: string) => void;
8
+ open: boolean;
9
+ setOpen: (open: boolean) => void;
10
+ disabled: boolean;
11
+ triggerRef: RefObject<HTMLButtonElement | null>;
12
+ setTriggerRef: (el: HTMLButtonElement | null) => void;
13
+ /** Label text of the currently selected item (set by SelectItem). */
14
+ selectedLabel: {
15
+ value: string;
16
+ label: string;
17
+ } | undefined;
18
+ setSelectedLabel: (selected: {
19
+ value: string;
20
+ label: string;
21
+ } | undefined) => void;
22
+ getLabelForValue: (value: string | undefined) => string | undefined;
23
+ }
24
+ export declare const SelectContext: import("react").Context<SelectContextValue | null>;
25
+ export declare function useSelectContext(): SelectContextValue;
26
+ export declare function findSelectItemLabel(children: ReactNode, value: string | undefined): string | undefined;
27
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/Select/context.tsx"],"names":[],"mappings":"AAEA;;GAEG;AACH,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAChD,aAAa,EAAE,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,qEAAqE;IACrE,aAAa,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC5D,gBAAgB,EAAE,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,KAAK,IAAI,CAAC;IACnF,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;CACrE;AAED,eAAO,MAAM,aAAa,oDAAiD,CAAC;AAE5E,wBAAgB,gBAAgB,uBAI/B;AASD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAsBtG"}