@olddevs/ui 0.0.0-stage → 4.0.1

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 (1553) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE +100 -0
  4. package/README.md +145 -2
  5. package/README.ru.md +146 -0
  6. package/dist/color.d.ts +22 -0
  7. package/dist/color.d.ts.map +1 -0
  8. package/dist/color.js +2 -0
  9. package/dist/color.js.map +1 -0
  10. package/dist/components/actions/Alert.d.ts +46 -0
  11. package/dist/components/actions/Alert.d.ts.map +1 -0
  12. package/dist/components/actions/Alert.js +20 -0
  13. package/dist/components/actions/Alert.js.map +1 -0
  14. package/dist/components/actions/Banner.d.ts +58 -0
  15. package/dist/components/actions/Banner.d.ts.map +1 -0
  16. package/dist/components/actions/Banner.js +20 -0
  17. package/dist/components/actions/Banner.js.map +1 -0
  18. package/dist/components/actions/Button.d.ts +79 -0
  19. package/dist/components/actions/Button.d.ts.map +1 -0
  20. package/dist/components/actions/Button.js +29 -0
  21. package/dist/components/actions/Button.js.map +1 -0
  22. package/dist/components/actions/ButtonGroup.d.ts +32 -0
  23. package/dist/components/actions/ButtonGroup.d.ts.map +1 -0
  24. package/dist/components/actions/ButtonGroup.js +10 -0
  25. package/dist/components/actions/ButtonGroup.js.map +1 -0
  26. package/dist/components/actions/Chip.d.ts +36 -0
  27. package/dist/components/actions/Chip.d.ts.map +1 -0
  28. package/dist/components/actions/Chip.js +16 -0
  29. package/dist/components/actions/Chip.js.map +1 -0
  30. package/dist/components/actions/CopyButton.d.ts +32 -0
  31. package/dist/components/actions/CopyButton.d.ts.map +1 -0
  32. package/dist/components/actions/CopyButton.js +41 -0
  33. package/dist/components/actions/CopyButton.js.map +1 -0
  34. package/dist/components/actions/Progress.d.ts +36 -0
  35. package/dist/components/actions/Progress.d.ts.map +1 -0
  36. package/dist/components/actions/Progress.js +14 -0
  37. package/dist/components/actions/Progress.js.map +1 -0
  38. package/dist/components/actions/Segmented.d.ts +64 -0
  39. package/dist/components/actions/Segmented.d.ts.map +1 -0
  40. package/dist/components/actions/Segmented.js +14 -0
  41. package/dist/components/actions/Segmented.js.map +1 -0
  42. package/dist/components/actions/Spinner.d.ts +46 -0
  43. package/dist/components/actions/Spinner.d.ts.map +1 -0
  44. package/dist/components/actions/Spinner.js +17 -0
  45. package/dist/components/actions/Spinner.js.map +1 -0
  46. package/dist/components/actions/SplitButton.d.ts +92 -0
  47. package/dist/components/actions/SplitButton.d.ts.map +1 -0
  48. package/dist/components/actions/SplitButton.js +21 -0
  49. package/dist/components/actions/SplitButton.js.map +1 -0
  50. package/dist/components/actions/StatusBadge.d.ts +26 -0
  51. package/dist/components/actions/StatusBadge.d.ts.map +1 -0
  52. package/dist/components/actions/StatusBadge.js +14 -0
  53. package/dist/components/actions/StatusBadge.js.map +1 -0
  54. package/dist/components/actions/Toaster.d.ts +83 -0
  55. package/dist/components/actions/Toaster.d.ts.map +1 -0
  56. package/dist/components/actions/Toaster.js +38 -0
  57. package/dist/components/actions/Toaster.js.map +1 -0
  58. package/dist/components/actions/Toggle.d.ts +75 -0
  59. package/dist/components/actions/Toggle.d.ts.map +1 -0
  60. package/dist/components/actions/Toggle.js +39 -0
  61. package/dist/components/actions/Toggle.js.map +1 -0
  62. package/dist/components/actions/ToggleGroup.d.ts +63 -0
  63. package/dist/components/actions/ToggleGroup.d.ts.map +1 -0
  64. package/dist/components/actions/ToggleGroup.js +30 -0
  65. package/dist/components/actions/ToggleGroup.js.map +1 -0
  66. package/dist/components/actions/Toolbar.d.ts +52 -0
  67. package/dist/components/actions/Toolbar.d.ts.map +1 -0
  68. package/dist/components/actions/Toolbar.js +98 -0
  69. package/dist/components/actions/Toolbar.js.map +1 -0
  70. package/dist/components/actions/Truncate.d.ts +31 -0
  71. package/dist/components/actions/Truncate.d.ts.map +1 -0
  72. package/dist/components/actions/Truncate.js +32 -0
  73. package/dist/components/actions/Truncate.js.map +1 -0
  74. package/dist/components/app-shell/AppShell.d.ts +106 -0
  75. package/dist/components/app-shell/AppShell.d.ts.map +1 -0
  76. package/dist/components/app-shell/AppShell.js +29 -0
  77. package/dist/components/app-shell/AppShell.js.map +1 -0
  78. package/dist/components/app-shell/MobileTabBar.d.ts +130 -0
  79. package/dist/components/app-shell/MobileTabBar.d.ts.map +1 -0
  80. package/dist/components/app-shell/MobileTabBar.js +50 -0
  81. package/dist/components/app-shell/MobileTabBar.js.map +1 -0
  82. package/dist/components/app-shell/NavItem.d.ts +72 -0
  83. package/dist/components/app-shell/NavItem.d.ts.map +1 -0
  84. package/dist/components/app-shell/NavItem.js +22 -0
  85. package/dist/components/app-shell/NavItem.js.map +1 -0
  86. package/dist/components/app-shell/SideNav.d.ts +65 -0
  87. package/dist/components/app-shell/SideNav.d.ts.map +1 -0
  88. package/dist/components/app-shell/SideNav.js +31 -0
  89. package/dist/components/app-shell/SideNav.js.map +1 -0
  90. package/dist/components/app-shell/SplitPanel.d.ts +121 -0
  91. package/dist/components/app-shell/SplitPanel.d.ts.map +1 -0
  92. package/dist/components/app-shell/SplitPanel.js +88 -0
  93. package/dist/components/app-shell/SplitPanel.js.map +1 -0
  94. package/dist/components/app-shell/TopBar.d.ts +43 -0
  95. package/dist/components/app-shell/TopBar.d.ts.map +1 -0
  96. package/dist/components/app-shell/TopBar.js +24 -0
  97. package/dist/components/app-shell/TopBar.js.map +1 -0
  98. package/dist/components/content/AspectRatio.d.ts +25 -0
  99. package/dist/components/content/AspectRatio.d.ts.map +1 -0
  100. package/dist/components/content/AspectRatio.js +7 -0
  101. package/dist/components/content/AspectRatio.js.map +1 -0
  102. package/dist/components/content/Avatar.d.ts +22 -0
  103. package/dist/components/content/Avatar.d.ts.map +1 -0
  104. package/dist/components/content/Avatar.js +23 -0
  105. package/dist/components/content/Avatar.js.map +1 -0
  106. package/dist/components/content/AvatarGroup.d.ts +42 -0
  107. package/dist/components/content/AvatarGroup.d.ts.map +1 -0
  108. package/dist/components/content/AvatarGroup.js +11 -0
  109. package/dist/components/content/AvatarGroup.js.map +1 -0
  110. package/dist/components/content/Badge.d.ts +41 -0
  111. package/dist/components/content/Badge.d.ts.map +1 -0
  112. package/dist/components/content/Badge.js +13 -0
  113. package/dist/components/content/Badge.js.map +1 -0
  114. package/dist/components/content/Card.d.ts +59 -0
  115. package/dist/components/content/Card.d.ts.map +1 -0
  116. package/dist/components/content/Card.js +20 -0
  117. package/dist/components/content/Card.js.map +1 -0
  118. package/dist/components/content/Carousel.d.ts +79 -0
  119. package/dist/components/content/Carousel.d.ts.map +1 -0
  120. package/dist/components/content/Carousel.js +172 -0
  121. package/dist/components/content/Carousel.js.map +1 -0
  122. package/dist/components/content/CodeView.d.ts +76 -0
  123. package/dist/components/content/CodeView.d.ts.map +1 -0
  124. package/dist/components/content/CodeView.js +12 -0
  125. package/dist/components/content/CodeView.js.map +1 -0
  126. package/dist/components/content/DescriptionList.d.ts +31 -0
  127. package/dist/components/content/DescriptionList.d.ts.map +1 -0
  128. package/dist/components/content/DescriptionList.js +10 -0
  129. package/dist/components/content/DescriptionList.js.map +1 -0
  130. package/dist/components/content/EditableList.d.ts +162 -0
  131. package/dist/components/content/EditableList.d.ts.map +1 -0
  132. package/dist/components/content/EditableList.js +241 -0
  133. package/dist/components/content/EditableList.js.map +1 -0
  134. package/dist/components/content/EmptyState.d.ts +31 -0
  135. package/dist/components/content/EmptyState.d.ts.map +1 -0
  136. package/dist/components/content/EmptyState.js +9 -0
  137. package/dist/components/content/EmptyState.js.map +1 -0
  138. package/dist/components/content/ErrorState.d.ts +52 -0
  139. package/dist/components/content/ErrorState.d.ts.map +1 -0
  140. package/dist/components/content/ErrorState.js +16 -0
  141. package/dist/components/content/ErrorState.js.map +1 -0
  142. package/dist/components/content/Grid.d.ts +57 -0
  143. package/dist/components/content/Grid.d.ts.map +1 -0
  144. package/dist/components/content/Grid.js +85 -0
  145. package/dist/components/content/Grid.js.map +1 -0
  146. package/dist/components/content/Heading.d.ts +43 -0
  147. package/dist/components/content/Heading.d.ts.map +1 -0
  148. package/dist/components/content/Heading.js +21 -0
  149. package/dist/components/content/Heading.js.map +1 -0
  150. package/dist/components/content/Image.d.ts +94 -0
  151. package/dist/components/content/Image.d.ts.map +1 -0
  152. package/dist/components/content/Image.js +41 -0
  153. package/dist/components/content/Image.js.map +1 -0
  154. package/dist/components/content/Kbd.d.ts +31 -0
  155. package/dist/components/content/Kbd.d.ts.map +1 -0
  156. package/dist/components/content/Kbd.js +13 -0
  157. package/dist/components/content/Kbd.js.map +1 -0
  158. package/dist/components/content/Keyboard.d.ts +32 -0
  159. package/dist/components/content/Keyboard.d.ts.map +1 -0
  160. package/dist/components/content/Keyboard.js +381 -0
  161. package/dist/components/content/Keyboard.js.map +1 -0
  162. package/dist/components/content/Link.d.ts +46 -0
  163. package/dist/components/content/Link.d.ts.map +1 -0
  164. package/dist/components/content/Link.js +38 -0
  165. package/dist/components/content/Link.js.map +1 -0
  166. package/dist/components/content/MediaCard.d.ts +56 -0
  167. package/dist/components/content/MediaCard.d.ts.map +1 -0
  168. package/dist/components/content/MediaCard.js +15 -0
  169. package/dist/components/content/MediaCard.js.map +1 -0
  170. package/dist/components/content/NotificationCenter.d.ts +68 -0
  171. package/dist/components/content/NotificationCenter.d.ts.map +1 -0
  172. package/dist/components/content/NotificationCenter.js +14 -0
  173. package/dist/components/content/NotificationCenter.js.map +1 -0
  174. package/dist/components/content/NotificationList.d.ts +111 -0
  175. package/dist/components/content/NotificationList.d.ts.map +1 -0
  176. package/dist/components/content/NotificationList.js +48 -0
  177. package/dist/components/content/NotificationList.js.map +1 -0
  178. package/dist/components/content/ScrollArea.d.ts +30 -0
  179. package/dist/components/content/ScrollArea.d.ts.map +1 -0
  180. package/dist/components/content/ScrollArea.js +7 -0
  181. package/dist/components/content/ScrollArea.js.map +1 -0
  182. package/dist/components/content/Separator.d.ts +19 -0
  183. package/dist/components/content/Separator.d.ts.map +1 -0
  184. package/dist/components/content/Separator.js +14 -0
  185. package/dist/components/content/Separator.js.map +1 -0
  186. package/dist/components/content/Skeleton.d.ts +24 -0
  187. package/dist/components/content/Skeleton.d.ts.map +1 -0
  188. package/dist/components/content/Skeleton.js +8 -0
  189. package/dist/components/content/Skeleton.js.map +1 -0
  190. package/dist/components/content/SortableList.d.ts +98 -0
  191. package/dist/components/content/SortableList.d.ts.map +1 -0
  192. package/dist/components/content/SortableList.js +46 -0
  193. package/dist/components/content/SortableList.js.map +1 -0
  194. package/dist/components/content/Stat.d.ts +46 -0
  195. package/dist/components/content/Stat.d.ts.map +1 -0
  196. package/dist/components/content/Stat.js +12 -0
  197. package/dist/components/content/Stat.js.map +1 -0
  198. package/dist/components/content/Table.d.ts +110 -0
  199. package/dist/components/content/Table.d.ts.map +1 -0
  200. package/dist/components/content/Table.js +66 -0
  201. package/dist/components/content/Table.js.map +1 -0
  202. package/dist/components/content/TagGroup.d.ts +120 -0
  203. package/dist/components/content/TagGroup.d.ts.map +1 -0
  204. package/dist/components/content/TagGroup.js +20 -0
  205. package/dist/components/content/TagGroup.js.map +1 -0
  206. package/dist/components/content/Text.d.ts +55 -0
  207. package/dist/components/content/Text.d.ts.map +1 -0
  208. package/dist/components/content/Text.js +27 -0
  209. package/dist/components/content/Text.js.map +1 -0
  210. package/dist/components/content/Timeline.d.ts +50 -0
  211. package/dist/components/content/Timeline.d.ts.map +1 -0
  212. package/dist/components/content/Timeline.js +15 -0
  213. package/dist/components/content/Timeline.js.map +1 -0
  214. package/dist/components/content/VirtualGrid.d.ts +171 -0
  215. package/dist/components/content/VirtualGrid.d.ts.map +1 -0
  216. package/dist/components/content/VirtualGrid.js +267 -0
  217. package/dist/components/content/VirtualGrid.js.map +1 -0
  218. package/dist/components/content/VisuallyHidden.d.ts +24 -0
  219. package/dist/components/content/VisuallyHidden.d.ts.map +1 -0
  220. package/dist/components/content/VisuallyHidden.js +3 -0
  221. package/dist/components/content/VisuallyHidden.js.map +1 -0
  222. package/dist/components/content/keyboardEditing.d.ts +15 -0
  223. package/dist/components/content/keyboardEditing.d.ts.map +1 -0
  224. package/dist/components/content/keyboardEditing.js +28 -0
  225. package/dist/components/content/keyboardEditing.js.map +1 -0
  226. package/dist/components/content/useDragToSelect.d.ts +41 -0
  227. package/dist/components/content/useDragToSelect.d.ts.map +1 -0
  228. package/dist/components/content/useDragToSelect.js +190 -0
  229. package/dist/components/content/useDragToSelect.js.map +1 -0
  230. package/dist/components/date-time/Calendar.d.ts +67 -0
  231. package/dist/components/date-time/Calendar.d.ts.map +1 -0
  232. package/dist/components/date-time/Calendar.js +28 -0
  233. package/dist/components/date-time/Calendar.js.map +1 -0
  234. package/dist/components/date-time/DatePicker.d.ts +57 -0
  235. package/dist/components/date-time/DatePicker.d.ts.map +1 -0
  236. package/dist/components/date-time/DatePicker.js +37 -0
  237. package/dist/components/date-time/DatePicker.js.map +1 -0
  238. package/dist/components/date-time/DateRangePicker.d.ts +91 -0
  239. package/dist/components/date-time/DateRangePicker.d.ts.map +1 -0
  240. package/dist/components/date-time/DateRangePicker.js +72 -0
  241. package/dist/components/date-time/DateRangePicker.js.map +1 -0
  242. package/dist/components/date-time/DateTimePicker.d.ts +55 -0
  243. package/dist/components/date-time/DateTimePicker.d.ts.map +1 -0
  244. package/dist/components/date-time/DateTimePicker.js +9 -0
  245. package/dist/components/date-time/DateTimePicker.js.map +1 -0
  246. package/dist/components/date-time/RangeCalendar.d.ts +50 -0
  247. package/dist/components/date-time/RangeCalendar.d.ts.map +1 -0
  248. package/dist/components/date-time/RangeCalendar.js +17 -0
  249. package/dist/components/date-time/RangeCalendar.js.map +1 -0
  250. package/dist/components/date-time/TimePicker.d.ts +47 -0
  251. package/dist/components/date-time/TimePicker.d.ts.map +1 -0
  252. package/dist/components/date-time/TimePicker.js +148 -0
  253. package/dist/components/date-time/TimePicker.js.map +1 -0
  254. package/dist/components/inputs/Checkbox.d.ts +140 -0
  255. package/dist/components/inputs/Checkbox.d.ts.map +1 -0
  256. package/dist/components/inputs/Checkbox.js +29 -0
  257. package/dist/components/inputs/Checkbox.js.map +1 -0
  258. package/dist/components/inputs/CheckboxCard.d.ts +17 -0
  259. package/dist/components/inputs/CheckboxCard.d.ts.map +1 -0
  260. package/dist/components/inputs/CheckboxCard.js +25 -0
  261. package/dist/components/inputs/CheckboxCard.js.map +1 -0
  262. package/dist/components/inputs/CheckboxGroup.d.ts +68 -0
  263. package/dist/components/inputs/CheckboxGroup.d.ts.map +1 -0
  264. package/dist/components/inputs/CheckboxGroup.js +14 -0
  265. package/dist/components/inputs/CheckboxGroup.js.map +1 -0
  266. package/dist/components/inputs/ChoiceCardBody.d.ts +16 -0
  267. package/dist/components/inputs/ChoiceCardBody.d.ts.map +1 -0
  268. package/dist/components/inputs/ChoiceCardBody.js +10 -0
  269. package/dist/components/inputs/ChoiceCardBody.js.map +1 -0
  270. package/dist/components/inputs/ColorPicker.d.ts +71 -0
  271. package/dist/components/inputs/ColorPicker.d.ts.map +1 -0
  272. package/dist/components/inputs/ColorPicker.js +30 -0
  273. package/dist/components/inputs/ColorPicker.js.map +1 -0
  274. package/dist/components/inputs/Combobox.d.ts +41 -0
  275. package/dist/components/inputs/Combobox.d.ts.map +1 -0
  276. package/dist/components/inputs/Combobox.js +16 -0
  277. package/dist/components/inputs/Combobox.js.map +1 -0
  278. package/dist/components/inputs/FileDropzone.d.ts +51 -0
  279. package/dist/components/inputs/FileDropzone.d.ts.map +1 -0
  280. package/dist/components/inputs/FileDropzone.js +75 -0
  281. package/dist/components/inputs/FileDropzone.js.map +1 -0
  282. package/dist/components/inputs/Form.d.ts +50 -0
  283. package/dist/components/inputs/Form.d.ts.map +1 -0
  284. package/dist/components/inputs/Form.js +14 -0
  285. package/dist/components/inputs/Form.js.map +1 -0
  286. package/dist/components/inputs/FormField.d.ts +89 -0
  287. package/dist/components/inputs/FormField.d.ts.map +1 -0
  288. package/dist/components/inputs/FormField.js +24 -0
  289. package/dist/components/inputs/FormField.js.map +1 -0
  290. package/dist/components/inputs/FormLayout.d.ts +47 -0
  291. package/dist/components/inputs/FormLayout.d.ts.map +1 -0
  292. package/dist/components/inputs/FormLayout.js +12 -0
  293. package/dist/components/inputs/FormLayout.js.map +1 -0
  294. package/dist/components/inputs/InlineEdit.d.ts +50 -0
  295. package/dist/components/inputs/InlineEdit.d.ts.map +1 -0
  296. package/dist/components/inputs/InlineEdit.js +70 -0
  297. package/dist/components/inputs/InlineEdit.js.map +1 -0
  298. package/dist/components/inputs/MaskedInput.d.ts +66 -0
  299. package/dist/components/inputs/MaskedInput.d.ts.map +1 -0
  300. package/dist/components/inputs/MaskedInput.js +73 -0
  301. package/dist/components/inputs/MaskedInput.js.map +1 -0
  302. package/dist/components/inputs/NumberInput.d.ts +53 -0
  303. package/dist/components/inputs/NumberInput.d.ts.map +1 -0
  304. package/dist/components/inputs/NumberInput.js +17 -0
  305. package/dist/components/inputs/NumberInput.js.map +1 -0
  306. package/dist/components/inputs/PasswordInput.d.ts +49 -0
  307. package/dist/components/inputs/PasswordInput.d.ts.map +1 -0
  308. package/dist/components/inputs/PasswordInput.js +49 -0
  309. package/dist/components/inputs/PasswordInput.js.map +1 -0
  310. package/dist/components/inputs/PhoneInput.d.ts +35 -0
  311. package/dist/components/inputs/PhoneInput.d.ts.map +1 -0
  312. package/dist/components/inputs/PhoneInput.js +9 -0
  313. package/dist/components/inputs/PhoneInput.js.map +1 -0
  314. package/dist/components/inputs/PinInput.d.ts +50 -0
  315. package/dist/components/inputs/PinInput.d.ts.map +1 -0
  316. package/dist/components/inputs/PinInput.js +67 -0
  317. package/dist/components/inputs/PinInput.js.map +1 -0
  318. package/dist/components/inputs/RadioGroup.d.ts +86 -0
  319. package/dist/components/inputs/RadioGroup.d.ts.map +1 -0
  320. package/dist/components/inputs/RadioGroup.js +51 -0
  321. package/dist/components/inputs/RadioGroup.js.map +1 -0
  322. package/dist/components/inputs/Rating.d.ts +69 -0
  323. package/dist/components/inputs/Rating.d.ts.map +1 -0
  324. package/dist/components/inputs/Rating.js +51 -0
  325. package/dist/components/inputs/Rating.js.map +1 -0
  326. package/dist/components/inputs/SearchControl.d.ts +85 -0
  327. package/dist/components/inputs/SearchControl.d.ts.map +1 -0
  328. package/dist/components/inputs/SearchControl.js +62 -0
  329. package/dist/components/inputs/SearchControl.js.map +1 -0
  330. package/dist/components/inputs/Select.d.ts +205 -0
  331. package/dist/components/inputs/Select.d.ts.map +1 -0
  332. package/dist/components/inputs/Select.js +136 -0
  333. package/dist/components/inputs/Select.js.map +1 -0
  334. package/dist/components/inputs/Slider.d.ts +59 -0
  335. package/dist/components/inputs/Slider.d.ts.map +1 -0
  336. package/dist/components/inputs/Slider.js +153 -0
  337. package/dist/components/inputs/Slider.js.map +1 -0
  338. package/dist/components/inputs/SwatchGroup.d.ts +101 -0
  339. package/dist/components/inputs/SwatchGroup.d.ts.map +1 -0
  340. package/dist/components/inputs/SwatchGroup.js +57 -0
  341. package/dist/components/inputs/SwatchGroup.js.map +1 -0
  342. package/dist/components/inputs/TagInput.d.ts +45 -0
  343. package/dist/components/inputs/TagInput.d.ts.map +1 -0
  344. package/dist/components/inputs/TagInput.js +56 -0
  345. package/dist/components/inputs/TagInput.js.map +1 -0
  346. package/dist/components/inputs/TextControl.d.ts +101 -0
  347. package/dist/components/inputs/TextControl.d.ts.map +1 -0
  348. package/dist/components/inputs/TextControl.js +31 -0
  349. package/dist/components/inputs/TextControl.js.map +1 -0
  350. package/dist/components/inputs/Transfer.d.ts +84 -0
  351. package/dist/components/inputs/Transfer.d.ts.map +1 -0
  352. package/dist/components/inputs/Transfer.js +112 -0
  353. package/dist/components/inputs/Transfer.js.map +1 -0
  354. package/dist/components/inputs/TreeSelect.d.ts +73 -0
  355. package/dist/components/inputs/TreeSelect.d.ts.map +1 -0
  356. package/dist/components/inputs/TreeSelect.js +60 -0
  357. package/dist/components/inputs/TreeSelect.js.map +1 -0
  358. package/dist/components/inputs/UploadQueue.d.ts +84 -0
  359. package/dist/components/inputs/UploadQueue.d.ts.map +1 -0
  360. package/dist/components/inputs/UploadQueue.js +30 -0
  361. package/dist/components/inputs/UploadQueue.js.map +1 -0
  362. package/dist/components/navigation/Accordion.d.ts +44 -0
  363. package/dist/components/navigation/Accordion.d.ts.map +1 -0
  364. package/dist/components/navigation/Accordion.js +12 -0
  365. package/dist/components/navigation/Accordion.js.map +1 -0
  366. package/dist/components/navigation/Breadcrumbs.d.ts +35 -0
  367. package/dist/components/navigation/Breadcrumbs.d.ts.map +1 -0
  368. package/dist/components/navigation/Breadcrumbs.js +17 -0
  369. package/dist/components/navigation/Breadcrumbs.js.map +1 -0
  370. package/dist/components/navigation/ContextualSaveBar.d.ts +90 -0
  371. package/dist/components/navigation/ContextualSaveBar.d.ts.map +1 -0
  372. package/dist/components/navigation/ContextualSaveBar.js +20 -0
  373. package/dist/components/navigation/ContextualSaveBar.js.map +1 -0
  374. package/dist/components/navigation/PageHeader.d.ts +17 -0
  375. package/dist/components/navigation/PageHeader.d.ts.map +1 -0
  376. package/dist/components/navigation/PageHeader.js +8 -0
  377. package/dist/components/navigation/PageHeader.js.map +1 -0
  378. package/dist/components/navigation/Pagination.d.ts +44 -0
  379. package/dist/components/navigation/Pagination.d.ts.map +1 -0
  380. package/dist/components/navigation/Pagination.js +57 -0
  381. package/dist/components/navigation/Pagination.js.map +1 -0
  382. package/dist/components/navigation/SectionHeader.d.ts +32 -0
  383. package/dist/components/navigation/SectionHeader.d.ts.map +1 -0
  384. package/dist/components/navigation/SectionHeader.js +13 -0
  385. package/dist/components/navigation/SectionHeader.js.map +1 -0
  386. package/dist/components/navigation/SelectionBar.d.ts +65 -0
  387. package/dist/components/navigation/SelectionBar.d.ts.map +1 -0
  388. package/dist/components/navigation/SelectionBar.js +24 -0
  389. package/dist/components/navigation/SelectionBar.js.map +1 -0
  390. package/dist/components/navigation/Stepper.d.ts +45 -0
  391. package/dist/components/navigation/Stepper.d.ts.map +1 -0
  392. package/dist/components/navigation/Stepper.js +16 -0
  393. package/dist/components/navigation/Stepper.js.map +1 -0
  394. package/dist/components/navigation/Tabs.d.ts +45 -0
  395. package/dist/components/navigation/Tabs.d.ts.map +1 -0
  396. package/dist/components/navigation/Tabs.js +51 -0
  397. package/dist/components/navigation/Tabs.js.map +1 -0
  398. package/dist/components/navigation/TreeView.d.ts +101 -0
  399. package/dist/components/navigation/TreeView.d.ts.map +1 -0
  400. package/dist/components/navigation/TreeView.js +27 -0
  401. package/dist/components/navigation/TreeView.js.map +1 -0
  402. package/dist/components/overlays/CommandPalette.d.ts +115 -0
  403. package/dist/components/overlays/CommandPalette.d.ts.map +1 -0
  404. package/dist/components/overlays/CommandPalette.js +43 -0
  405. package/dist/components/overlays/CommandPalette.js.map +1 -0
  406. package/dist/components/overlays/ConfirmDialog.d.ts +67 -0
  407. package/dist/components/overlays/ConfirmDialog.d.ts.map +1 -0
  408. package/dist/components/overlays/ConfirmDialog.js +47 -0
  409. package/dist/components/overlays/ConfirmDialog.js.map +1 -0
  410. package/dist/components/overlays/ContextMenu.d.ts +122 -0
  411. package/dist/components/overlays/ContextMenu.d.ts.map +1 -0
  412. package/dist/components/overlays/ContextMenu.js +39 -0
  413. package/dist/components/overlays/ContextMenu.js.map +1 -0
  414. package/dist/components/overlays/Dialog.d.ts +113 -0
  415. package/dist/components/overlays/Dialog.d.ts.map +1 -0
  416. package/dist/components/overlays/Dialog.js +43 -0
  417. package/dist/components/overlays/Dialog.js.map +1 -0
  418. package/dist/components/overlays/Drawer.d.ts +53 -0
  419. package/dist/components/overlays/Drawer.d.ts.map +1 -0
  420. package/dist/components/overlays/Drawer.js +32 -0
  421. package/dist/components/overlays/Drawer.js.map +1 -0
  422. package/dist/components/overlays/HelpTooltip.d.ts +41 -0
  423. package/dist/components/overlays/HelpTooltip.d.ts.map +1 -0
  424. package/dist/components/overlays/HelpTooltip.js +10 -0
  425. package/dist/components/overlays/HelpTooltip.js.map +1 -0
  426. package/dist/components/overlays/HoverCard.d.ts +62 -0
  427. package/dist/components/overlays/HoverCard.d.ts.map +1 -0
  428. package/dist/components/overlays/HoverCard.js +175 -0
  429. package/dist/components/overlays/HoverCard.js.map +1 -0
  430. package/dist/components/overlays/Menu.d.ts +113 -0
  431. package/dist/components/overlays/Menu.d.ts.map +1 -0
  432. package/dist/components/overlays/Menu.js +26 -0
  433. package/dist/components/overlays/Menu.js.map +1 -0
  434. package/dist/components/overlays/ModalHeader.d.ts +77 -0
  435. package/dist/components/overlays/ModalHeader.d.ts.map +1 -0
  436. package/dist/components/overlays/ModalHeader.js +11 -0
  437. package/dist/components/overlays/ModalHeader.js.map +1 -0
  438. package/dist/components/overlays/ModalOverlay.d.ts +45 -0
  439. package/dist/components/overlays/ModalOverlay.d.ts.map +1 -0
  440. package/dist/components/overlays/ModalOverlay.js +29 -0
  441. package/dist/components/overlays/ModalOverlay.js.map +1 -0
  442. package/dist/components/overlays/Popover.d.ts +56 -0
  443. package/dist/components/overlays/Popover.d.ts.map +1 -0
  444. package/dist/components/overlays/Popover.js +16 -0
  445. package/dist/components/overlays/Popover.js.map +1 -0
  446. package/dist/components/overlays/ShortcutsHelp.d.ts +70 -0
  447. package/dist/components/overlays/ShortcutsHelp.d.ts.map +1 -0
  448. package/dist/components/overlays/ShortcutsHelp.js +20 -0
  449. package/dist/components/overlays/ShortcutsHelp.js.map +1 -0
  450. package/dist/components/overlays/Tooltip.d.ts +35 -0
  451. package/dist/components/overlays/Tooltip.d.ts.map +1 -0
  452. package/dist/components/overlays/Tooltip.js +18 -0
  453. package/dist/components/overlays/Tooltip.js.map +1 -0
  454. package/dist/components/table/DataTable.d.ts +60 -0
  455. package/dist/components/table/DataTable.d.ts.map +1 -0
  456. package/dist/components/table/DataTable.js +20 -0
  457. package/dist/components/table/DataTable.js.map +1 -0
  458. package/dist/components/table/FilterBar.d.ts +35 -0
  459. package/dist/components/table/FilterBar.d.ts.map +1 -0
  460. package/dist/components/table/FilterBar.js +17 -0
  461. package/dist/components/table/FilterBar.js.map +1 -0
  462. package/dist/components/table/FilterBarAdd.d.ts +57 -0
  463. package/dist/components/table/FilterBarAdd.d.ts.map +1 -0
  464. package/dist/components/table/FilterBarAdd.js +83 -0
  465. package/dist/components/table/FilterBarAdd.js.map +1 -0
  466. package/dist/components/table/SavedViews.d.ts +83 -0
  467. package/dist/components/table/SavedViews.d.ts.map +1 -0
  468. package/dist/components/table/SavedViews.js +12 -0
  469. package/dist/components/table/SavedViews.js.map +1 -0
  470. package/dist/components/table/TablePreferences.d.ts +45 -0
  471. package/dist/components/table/TablePreferences.d.ts.map +1 -0
  472. package/dist/components/table/TablePreferences.js +41 -0
  473. package/dist/components/table/TablePreferences.js.map +1 -0
  474. package/dist/components/table/TableToolbar.d.ts +38 -0
  475. package/dist/components/table/TableToolbar.d.ts.map +1 -0
  476. package/dist/components/table/TableToolbar.js +11 -0
  477. package/dist/components/table/TableToolbar.js.map +1 -0
  478. package/dist/editor/RichTextEditor.d.ts +274 -0
  479. package/dist/editor/RichTextEditor.d.ts.map +1 -0
  480. package/dist/editor/RichTextEditor.js +671 -0
  481. package/dist/editor/RichTextEditor.js.map +1 -0
  482. package/dist/editor/RichTextView.d.ts +70 -0
  483. package/dist/editor/RichTextView.d.ts.map +1 -0
  484. package/dist/editor/RichTextView.js +24 -0
  485. package/dist/editor/RichTextView.js.map +1 -0
  486. package/dist/editor/core/atomText.d.ts +21 -0
  487. package/dist/editor/core/atomText.d.ts.map +1 -0
  488. package/dist/editor/core/atomText.js +77 -0
  489. package/dist/editor/core/atomText.js.map +1 -0
  490. package/dist/editor/core/blockCommands.d.ts +94 -0
  491. package/dist/editor/core/blockCommands.d.ts.map +1 -0
  492. package/dist/editor/core/blockCommands.js +188 -0
  493. package/dist/editor/core/blockCommands.js.map +1 -0
  494. package/dist/editor/core/blockTypes.d.ts +89 -0
  495. package/dist/editor/core/blockTypes.d.ts.map +1 -0
  496. package/dist/editor/core/blockTypes.js +121 -0
  497. package/dist/editor/core/blockTypes.js.map +1 -0
  498. package/dist/editor/core/containers.d.ts +43 -0
  499. package/dist/editor/core/containers.d.ts.map +1 -0
  500. package/dist/editor/core/containers.js +52 -0
  501. package/dist/editor/core/containers.js.map +1 -0
  502. package/dist/editor/core/customMarkdown.d.ts +8 -0
  503. package/dist/editor/core/customMarkdown.d.ts.map +1 -0
  504. package/dist/editor/core/customMarkdown.js +34 -0
  505. package/dist/editor/core/customMarkdown.js.map +1 -0
  506. package/dist/editor/core/customTool.d.ts +407 -0
  507. package/dist/editor/core/customTool.d.ts.map +1 -0
  508. package/dist/editor/core/customTool.js +31 -0
  509. package/dist/editor/core/customTool.js.map +1 -0
  510. package/dist/editor/core/customToolEngine.d.ts +31 -0
  511. package/dist/editor/core/customToolEngine.d.ts.map +1 -0
  512. package/dist/editor/core/customToolEngine.js +324 -0
  513. package/dist/editor/core/customToolEngine.js.map +1 -0
  514. package/dist/editor/core/document.d.ts +17 -0
  515. package/dist/editor/core/document.d.ts.map +1 -0
  516. package/dist/editor/core/document.js +11 -0
  517. package/dist/editor/core/document.js.map +1 -0
  518. package/dist/editor/core/emptiness.d.ts +18 -0
  519. package/dist/editor/core/emptiness.d.ts.map +1 -0
  520. package/dist/editor/core/emptiness.js +14 -0
  521. package/dist/editor/core/emptiness.js.map +1 -0
  522. package/dist/editor/core/extensions.d.ts +78 -0
  523. package/dist/editor/core/extensions.d.ts.map +1 -0
  524. package/dist/editor/core/extensions.js +134 -0
  525. package/dist/editor/core/extensions.js.map +1 -0
  526. package/dist/editor/core/fieldNotice.d.ts +48 -0
  527. package/dist/editor/core/fieldNotice.d.ts.map +1 -0
  528. package/dist/editor/core/fieldNotice.js +18 -0
  529. package/dist/editor/core/fieldNotice.js.map +1 -0
  530. package/dist/editor/core/handle.d.ts +110 -0
  531. package/dist/editor/core/handle.d.ts.map +1 -0
  532. package/dist/editor/core/handle.js +149 -0
  533. package/dist/editor/core/handle.js.map +1 -0
  534. package/dist/editor/core/insertItems.d.ts +147 -0
  535. package/dist/editor/core/insertItems.d.ts.map +1 -0
  536. package/dist/editor/core/insertItems.js +215 -0
  537. package/dist/editor/core/insertItems.js.map +1 -0
  538. package/dist/editor/core/jsonDocument.d.ts +42 -0
  539. package/dist/editor/core/jsonDocument.d.ts.map +1 -0
  540. package/dist/editor/core/jsonDocument.js +44 -0
  541. package/dist/editor/core/jsonDocument.js.map +1 -0
  542. package/dist/editor/core/markdown.d.ts +47 -0
  543. package/dist/editor/core/markdown.d.ts.map +1 -0
  544. package/dist/editor/core/markdown.js +169 -0
  545. package/dist/editor/core/markdown.js.map +1 -0
  546. package/dist/editor/core/maxLength.d.ts +43 -0
  547. package/dist/editor/core/maxLength.d.ts.map +1 -0
  548. package/dist/editor/core/maxLength.js +45 -0
  549. package/dist/editor/core/maxLength.js.map +1 -0
  550. package/dist/editor/core/pasteTrim.d.ts +8 -0
  551. package/dist/editor/core/pasteTrim.d.ts.map +1 -0
  552. package/dist/editor/core/pasteTrim.js +61 -0
  553. package/dist/editor/core/pasteTrim.js.map +1 -0
  554. package/dist/editor/core/schema.d.ts +479 -0
  555. package/dist/editor/core/schema.d.ts.map +1 -0
  556. package/dist/editor/core/schema.js +371 -0
  557. package/dist/editor/core/schema.js.map +1 -0
  558. package/dist/editor/core/schemaConform.d.ts +30 -0
  559. package/dist/editor/core/schemaConform.d.ts.map +1 -0
  560. package/dist/editor/core/schemaConform.js +72 -0
  561. package/dist/editor/core/schemaConform.js.map +1 -0
  562. package/dist/editor/core/shortcuts.d.ts +110 -0
  563. package/dist/editor/core/shortcuts.d.ts.map +1 -0
  564. package/dist/editor/core/shortcuts.js +299 -0
  565. package/dist/editor/core/shortcuts.js.map +1 -0
  566. package/dist/editor/core/skeleton.d.ts +11 -0
  567. package/dist/editor/core/skeleton.d.ts.map +1 -0
  568. package/dist/editor/core/skeleton.js +48 -0
  569. package/dist/editor/core/skeleton.js.map +1 -0
  570. package/dist/editor/core/slashCommand.d.ts +46 -0
  571. package/dist/editor/core/slashCommand.d.ts.map +1 -0
  572. package/dist/editor/core/slashCommand.js +67 -0
  573. package/dist/editor/core/slashCommand.js.map +1 -0
  574. package/dist/editor/core/sourceFormat.d.ts +30 -0
  575. package/dist/editor/core/sourceFormat.d.ts.map +1 -0
  576. package/dist/editor/core/sourceFormat.js +136 -0
  577. package/dist/editor/core/sourceFormat.js.map +1 -0
  578. package/dist/editor/core/toolButtons.d.ts +58 -0
  579. package/dist/editor/core/toolButtons.d.ts.map +1 -0
  580. package/dist/editor/core/toolButtons.js +64 -0
  581. package/dist/editor/core/toolButtons.js.map +1 -0
  582. package/dist/editor/core/toolDescriptor.d.ts +304 -0
  583. package/dist/editor/core/toolDescriptor.d.ts.map +1 -0
  584. package/dist/editor/core/toolDescriptor.js +29 -0
  585. package/dist/editor/core/toolDescriptor.js.map +1 -0
  586. package/dist/editor/core/toolEntryShortcuts.d.ts +20 -0
  587. package/dist/editor/core/toolEntryShortcuts.d.ts.map +1 -0
  588. package/dist/editor/core/toolEntryShortcuts.js +46 -0
  589. package/dist/editor/core/toolEntryShortcuts.js.map +1 -0
  590. package/dist/editor/core/toolLoader.d.ts +14 -0
  591. package/dist/editor/core/toolLoader.d.ts.map +1 -0
  592. package/dist/editor/core/toolLoader.js +20 -0
  593. package/dist/editor/core/toolLoader.js.map +1 -0
  594. package/dist/editor/core/tools.d.ts +90 -0
  595. package/dist/editor/core/tools.d.ts.map +1 -0
  596. package/dist/editor/core/tools.js +56 -0
  597. package/dist/editor/core/tools.js.map +1 -0
  598. package/dist/editor/core/viewIsland.d.ts +17 -0
  599. package/dist/editor/core/viewIsland.d.ts.map +1 -0
  600. package/dist/editor/core/viewIsland.js +4 -0
  601. package/dist/editor/core/viewIsland.js.map +1 -0
  602. package/dist/editor/features/builtins.d.ts +25 -0
  603. package/dist/editor/features/builtins.d.ts.map +1 -0
  604. package/dist/editor/features/builtins.js +88 -0
  605. package/dist/editor/features/builtins.js.map +1 -0
  606. package/dist/editor/features/code/CodeBlockView.d.ts +38 -0
  607. package/dist/editor/features/code/CodeBlockView.d.ts.map +1 -0
  608. package/dist/editor/features/code/CodeBlockView.js +98 -0
  609. package/dist/editor/features/code/CodeBlockView.js.map +1 -0
  610. package/dist/editor/features/code/CodeCopyButton.d.ts +20 -0
  611. package/dist/editor/features/code/CodeCopyButton.d.ts.map +1 -0
  612. package/dist/editor/features/code/CodeCopyButton.js +29 -0
  613. package/dist/editor/features/code/CodeCopyButton.js.map +1 -0
  614. package/dist/editor/features/code/CodeCopyIsland.d.ts +37 -0
  615. package/dist/editor/features/code/CodeCopyIsland.d.ts.map +1 -0
  616. package/dist/editor/features/code/CodeCopyIsland.js +21 -0
  617. package/dist/editor/features/code/CodeCopyIsland.js.map +1 -0
  618. package/dist/editor/features/code/codeBlock.d.ts +25 -0
  619. package/dist/editor/features/code/codeBlock.d.ts.map +1 -0
  620. package/dist/editor/features/code/codeBlock.js +116 -0
  621. package/dist/editor/features/code/codeBlock.js.map +1 -0
  622. package/dist/editor/features/code/codeBlockTool.d.ts +24 -0
  623. package/dist/editor/features/code/codeBlockTool.d.ts.map +1 -0
  624. package/dist/editor/features/code/codeBlockTool.js +66 -0
  625. package/dist/editor/features/code/codeBlockTool.js.map +1 -0
  626. package/dist/editor/features/code/codeHeader.d.ts +41 -0
  627. package/dist/editor/features/code/codeHeader.d.ts.map +1 -0
  628. package/dist/editor/features/code/codeHeader.js +25 -0
  629. package/dist/editor/features/code/codeHeader.js.map +1 -0
  630. package/dist/editor/features/code/codeLanguages.d.ts +76 -0
  631. package/dist/editor/features/code/codeLanguages.d.ts.map +1 -0
  632. package/dist/editor/features/code/codeLanguages.js +24 -0
  633. package/dist/editor/features/code/codeLanguages.js.map +1 -0
  634. package/dist/editor/features/code/highlight.d.ts +20 -0
  635. package/dist/editor/features/code/highlight.d.ts.map +1 -0
  636. package/dist/editor/features/code/highlight.js +51 -0
  637. package/dist/editor/features/code/highlight.js.map +1 -0
  638. package/dist/editor/features/code/highlightNodes.d.ts +31 -0
  639. package/dist/editor/features/code/highlightNodes.d.ts.map +1 -0
  640. package/dist/editor/features/code/highlightNodes.js +25 -0
  641. package/dist/editor/features/code/highlightNodes.js.map +1 -0
  642. package/dist/editor/features/code/lowlight.d.ts +20 -0
  643. package/dist/editor/features/code/lowlight.d.ts.map +1 -0
  644. package/dist/editor/features/code/lowlight.js +26 -0
  645. package/dist/editor/features/code/lowlight.js.map +1 -0
  646. package/dist/editor/features/color/CustomColorPopover.d.ts +40 -0
  647. package/dist/editor/features/color/CustomColorPopover.d.ts.map +1 -0
  648. package/dist/editor/features/color/CustomColorPopover.js +70 -0
  649. package/dist/editor/features/color/CustomColorPopover.js.map +1 -0
  650. package/dist/editor/features/color/contrast.d.ts +26 -0
  651. package/dist/editor/features/color/contrast.d.ts.map +1 -0
  652. package/dist/editor/features/color/contrast.js +27 -0
  653. package/dist/editor/features/color/contrast.js.map +1 -0
  654. package/dist/editor/features/color/customColor.d.ts +65 -0
  655. package/dist/editor/features/color/customColor.d.ts.map +1 -0
  656. package/dist/editor/features/color/customColor.js +29 -0
  657. package/dist/editor/features/color/customColor.js.map +1 -0
  658. package/dist/editor/features/color/styleExtensions.d.ts +28 -0
  659. package/dist/editor/features/color/styleExtensions.d.ts.map +1 -0
  660. package/dist/editor/features/color/styleExtensions.js +172 -0
  661. package/dist/editor/features/color/styleExtensions.js.map +1 -0
  662. package/dist/editor/features/emoji/EmojiGrid.d.ts +34 -0
  663. package/dist/editor/features/emoji/EmojiGrid.d.ts.map +1 -0
  664. package/dist/editor/features/emoji/EmojiGrid.js +71 -0
  665. package/dist/editor/features/emoji/EmojiGrid.js.map +1 -0
  666. package/dist/editor/features/emoji/emoji.d.ts +47 -0
  667. package/dist/editor/features/emoji/emoji.d.ts.map +1 -0
  668. package/dist/editor/features/emoji/emoji.js +108 -0
  669. package/dist/editor/features/emoji/emoji.js.map +1 -0
  670. package/dist/editor/features/emoji/emojiTool.d.ts +32 -0
  671. package/dist/editor/features/emoji/emojiTool.d.ts.map +1 -0
  672. package/dist/editor/features/emoji/emojiTool.js +34 -0
  673. package/dist/editor/features/emoji/emojiTool.js.map +1 -0
  674. package/dist/editor/features/image/ImagePopover.d.ts +29 -0
  675. package/dist/editor/features/image/ImagePopover.d.ts.map +1 -0
  676. package/dist/editor/features/image/ImagePopover.js +89 -0
  677. package/dist/editor/features/image/ImagePopover.js.map +1 -0
  678. package/dist/editor/features/image/ImageToolbar.d.ts +25 -0
  679. package/dist/editor/features/image/ImageToolbar.d.ts.map +1 -0
  680. package/dist/editor/features/image/ImageToolbar.js +49 -0
  681. package/dist/editor/features/image/ImageToolbar.js.map +1 -0
  682. package/dist/editor/features/image/image.d.ts +115 -0
  683. package/dist/editor/features/image/image.d.ts.map +1 -0
  684. package/dist/editor/features/image/image.js +539 -0
  685. package/dist/editor/features/image/image.js.map +1 -0
  686. package/dist/editor/features/image/imageNotice.d.ts +6 -0
  687. package/dist/editor/features/image/imageNotice.d.ts.map +1 -0
  688. package/dist/editor/features/image/imageNotice.js +16 -0
  689. package/dist/editor/features/image/imageNotice.js.map +1 -0
  690. package/dist/editor/features/layout/columnLayouts.d.ts +36 -0
  691. package/dist/editor/features/layout/columnLayouts.d.ts.map +1 -0
  692. package/dist/editor/features/layout/columnLayouts.js +33 -0
  693. package/dist/editor/features/layout/columnLayouts.js.map +1 -0
  694. package/dist/editor/features/layout/layout.d.ts +81 -0
  695. package/dist/editor/features/layout/layout.d.ts.map +1 -0
  696. package/dist/editor/features/layout/layout.js +318 -0
  697. package/dist/editor/features/layout/layout.js.map +1 -0
  698. package/dist/editor/features/link/LinkPopover.d.ts +21 -0
  699. package/dist/editor/features/link/LinkPopover.d.ts.map +1 -0
  700. package/dist/editor/features/link/LinkPopover.js +54 -0
  701. package/dist/editor/features/link/LinkPopover.js.map +1 -0
  702. package/dist/editor/features/link/link.d.ts +41 -0
  703. package/dist/editor/features/link/link.d.ts.map +1 -0
  704. package/dist/editor/features/link/link.js +66 -0
  705. package/dist/editor/features/link/link.js.map +1 -0
  706. package/dist/editor/features/link/linkTool.d.ts +13 -0
  707. package/dist/editor/features/link/linkTool.d.ts.map +1 -0
  708. package/dist/editor/features/link/linkTool.js +25 -0
  709. package/dist/editor/features/link/linkTool.js.map +1 -0
  710. package/dist/editor/features/search/SearchPanel.d.ts +31 -0
  711. package/dist/editor/features/search/SearchPanel.d.ts.map +1 -0
  712. package/dist/editor/features/search/SearchPanel.js +101 -0
  713. package/dist/editor/features/search/SearchPanel.js.map +1 -0
  714. package/dist/editor/features/search/revealMatch.d.ts +25 -0
  715. package/dist/editor/features/search/revealMatch.d.ts.map +1 -0
  716. package/dist/editor/features/search/revealMatch.js +41 -0
  717. package/dist/editor/features/search/revealMatch.js.map +1 -0
  718. package/dist/editor/features/search/searchMatch.d.ts +53 -0
  719. package/dist/editor/features/search/searchMatch.d.ts.map +1 -0
  720. package/dist/editor/features/search/searchMatch.js +67 -0
  721. package/dist/editor/features/search/searchMatch.js.map +1 -0
  722. package/dist/editor/features/search/searchPlugin.d.ts +48 -0
  723. package/dist/editor/features/search/searchPlugin.d.ts.map +1 -0
  724. package/dist/editor/features/search/searchPlugin.js +151 -0
  725. package/dist/editor/features/search/searchPlugin.js.map +1 -0
  726. package/dist/editor/features/search/searchTool.d.ts +13 -0
  727. package/dist/editor/features/search/searchTool.d.ts.map +1 -0
  728. package/dist/editor/features/search/searchTool.js +18 -0
  729. package/dist/editor/features/search/searchTool.js.map +1 -0
  730. package/dist/editor/features/table/TableInsertDialog.d.ts +29 -0
  731. package/dist/editor/features/table/TableInsertDialog.d.ts.map +1 -0
  732. package/dist/editor/features/table/TableInsertDialog.js +37 -0
  733. package/dist/editor/features/table/TableInsertDialog.js.map +1 -0
  734. package/dist/editor/features/table/TableMenuButton.d.ts +40 -0
  735. package/dist/editor/features/table/TableMenuButton.d.ts.map +1 -0
  736. package/dist/editor/features/table/TableMenuButton.js +97 -0
  737. package/dist/editor/features/table/TableMenuButton.js.map +1 -0
  738. package/dist/editor/features/table/TableSizeGrid.d.ts +60 -0
  739. package/dist/editor/features/table/TableSizeGrid.d.ts.map +1 -0
  740. package/dist/editor/features/table/TableSizeGrid.js +88 -0
  741. package/dist/editor/features/table/TableSizeGrid.js.map +1 -0
  742. package/dist/editor/features/table/tableActions.d.ts +110 -0
  743. package/dist/editor/features/table/tableActions.d.ts.map +1 -0
  744. package/dist/editor/features/table/tableActions.js +254 -0
  745. package/dist/editor/features/table/tableActions.js.map +1 -0
  746. package/dist/editor/features/table/tableCells.d.ts +41 -0
  747. package/dist/editor/features/table/tableCells.d.ts.map +1 -0
  748. package/dist/editor/features/table/tableCells.js +38 -0
  749. package/dist/editor/features/table/tableCells.js.map +1 -0
  750. package/dist/editor/features/table/tableChunk.d.ts +4 -0
  751. package/dist/editor/features/table/tableChunk.d.ts.map +1 -0
  752. package/dist/editor/features/table/tableChunk.js +5 -0
  753. package/dist/editor/features/table/tableChunk.js.map +1 -0
  754. package/dist/editor/features/table/tableTool.d.ts +22 -0
  755. package/dist/editor/features/table/tableTool.d.ts.map +1 -0
  756. package/dist/editor/features/table/tableTool.js +42 -0
  757. package/dist/editor/features/table/tableTool.js.map +1 -0
  758. package/dist/editor/features/table/tables.d.ts +79 -0
  759. package/dist/editor/features/table/tables.d.ts.map +1 -0
  760. package/dist/editor/features/table/tables.js +118 -0
  761. package/dist/editor/features/table/tables.js.map +1 -0
  762. package/dist/editor/features/wrapper/wrapper.d.ts +73 -0
  763. package/dist/editor/features/wrapper/wrapper.d.ts.map +1 -0
  764. package/dist/editor/features/wrapper/wrapper.js +198 -0
  765. package/dist/editor/features/wrapper/wrapper.js.map +1 -0
  766. package/dist/editor/features/wrapper/wrapperTones.d.ts +39 -0
  767. package/dist/editor/features/wrapper/wrapperTones.d.ts.map +1 -0
  768. package/dist/editor/features/wrapper/wrapperTones.js +19 -0
  769. package/dist/editor/features/wrapper/wrapperTones.js.map +1 -0
  770. package/dist/editor/highlight-entry.d.ts +24 -0
  771. package/dist/editor/highlight-entry.d.ts.map +1 -0
  772. package/dist/editor/highlight-entry.js +3 -0
  773. package/dist/editor/highlight-entry.js.map +1 -0
  774. package/dist/editor/hooks/useChangeThrottle.d.ts +24 -0
  775. package/dist/editor/hooks/useChangeThrottle.d.ts.map +1 -0
  776. package/dist/editor/hooks/useChangeThrottle.js +35 -0
  777. package/dist/editor/hooks/useChangeThrottle.js.map +1 -0
  778. package/dist/editor/hooks/useCoarsePointer.d.ts +17 -0
  779. package/dist/editor/hooks/useCoarsePointer.d.ts.map +1 -0
  780. package/dist/editor/hooks/useCoarsePointer.js +19 -0
  781. package/dist/editor/hooks/useCoarsePointer.js.map +1 -0
  782. package/dist/editor/hooks/useFieldsetDisabled.d.ts +22 -0
  783. package/dist/editor/hooks/useFieldsetDisabled.d.ts.map +1 -0
  784. package/dist/editor/hooks/useFieldsetDisabled.js +29 -0
  785. package/dist/editor/hooks/useFieldsetDisabled.js.map +1 -0
  786. package/dist/editor/hooks/useRichTextEditorState.d.ts +25 -0
  787. package/dist/editor/hooks/useRichTextEditorState.d.ts.map +1 -0
  788. package/dist/editor/hooks/useRichTextEditorState.js +17 -0
  789. package/dist/editor/hooks/useRichTextEditorState.js.map +1 -0
  790. package/dist/editor/hooks/useSubmenuPlacement.d.ts +19 -0
  791. package/dist/editor/hooks/useSubmenuPlacement.d.ts.map +1 -0
  792. package/dist/editor/hooks/useSubmenuPlacement.js +20 -0
  793. package/dist/editor/hooks/useSubmenuPlacement.js.map +1 -0
  794. package/dist/editor/index.d.ts +32 -0
  795. package/dist/editor/index.d.ts.map +1 -0
  796. package/dist/editor/index.js +7 -0
  797. package/dist/editor/index.js.map +1 -0
  798. package/dist/editor/schema-entry.d.ts +29 -0
  799. package/dist/editor/schema-entry.d.ts.map +1 -0
  800. package/dist/editor/schema-entry.js +3 -0
  801. package/dist/editor/schema-entry.js.map +1 -0
  802. package/dist/editor/styles/codeTheme.d.ts +49 -0
  803. package/dist/editor/styles/codeTheme.d.ts.map +1 -0
  804. package/dist/editor/styles/codeTheme.js +11 -0
  805. package/dist/editor/styles/codeTheme.js.map +1 -0
  806. package/dist/editor/styles/glass.d.ts +40 -0
  807. package/dist/editor/styles/glass.d.ts.map +1 -0
  808. package/dist/editor/styles/glass.js +15 -0
  809. package/dist/editor/styles/glass.js.map +1 -0
  810. package/dist/editor/styles/palette.d.ts +181 -0
  811. package/dist/editor/styles/palette.d.ts.map +1 -0
  812. package/dist/editor/styles/palette.js +57 -0
  813. package/dist/editor/styles/palette.js.map +1 -0
  814. package/dist/editor/styles/prose.d.ts +56 -0
  815. package/dist/editor/styles/prose.d.ts.map +1 -0
  816. package/dist/editor/styles/prose.js +154 -0
  817. package/dist/editor/styles/prose.js.map +1 -0
  818. package/dist/editor/styles/surface.d.ts +22 -0
  819. package/dist/editor/styles/surface.d.ts.map +1 -0
  820. package/dist/editor/styles/surface.js +4 -0
  821. package/dist/editor/styles/surface.js.map +1 -0
  822. package/dist/editor/styles/tokens.d.ts +136 -0
  823. package/dist/editor/styles/tokens.d.ts.map +1 -0
  824. package/dist/editor/styles/tokens.js +38 -0
  825. package/dist/editor/styles/tokens.js.map +1 -0
  826. package/dist/editor/ui/BlockHandle.d.ts +40 -0
  827. package/dist/editor/ui/BlockHandle.d.ts.map +1 -0
  828. package/dist/editor/ui/BlockHandle.js +394 -0
  829. package/dist/editor/ui/BlockHandle.js.map +1 -0
  830. package/dist/editor/ui/BlockIsland.d.ts +3 -0
  831. package/dist/editor/ui/BlockIsland.d.ts.map +1 -0
  832. package/dist/editor/ui/BlockIsland.js +8 -0
  833. package/dist/editor/ui/BlockIsland.js.map +1 -0
  834. package/dist/editor/ui/BlockIslandSlots.d.ts +31 -0
  835. package/dist/editor/ui/BlockIslandSlots.d.ts.map +1 -0
  836. package/dist/editor/ui/BlockIslandSlots.js +61 -0
  837. package/dist/editor/ui/BlockIslandSlots.js.map +1 -0
  838. package/dist/editor/ui/ColorMenus.d.ts +18 -0
  839. package/dist/editor/ui/ColorMenus.d.ts.map +1 -0
  840. package/dist/editor/ui/ColorMenus.js +281 -0
  841. package/dist/editor/ui/ColorMenus.js.map +1 -0
  842. package/dist/editor/ui/EditorToolbar.d.ts +71 -0
  843. package/dist/editor/ui/EditorToolbar.d.ts.map +1 -0
  844. package/dist/editor/ui/EditorToolbar.js +197 -0
  845. package/dist/editor/ui/EditorToolbar.js.map +1 -0
  846. package/dist/editor/ui/FieldResizer.d.ts +22 -0
  847. package/dist/editor/ui/FieldResizer.d.ts.map +1 -0
  848. package/dist/editor/ui/FieldResizer.js +75 -0
  849. package/dist/editor/ui/FieldResizer.js.map +1 -0
  850. package/dist/editor/ui/FieldStatus.d.ts +32 -0
  851. package/dist/editor/ui/FieldStatus.d.ts.map +1 -0
  852. package/dist/editor/ui/FieldStatus.js +15 -0
  853. package/dist/editor/ui/FieldStatus.js.map +1 -0
  854. package/dist/editor/ui/FloatingToolbar.d.ts +32 -0
  855. package/dist/editor/ui/FloatingToolbar.d.ts.map +1 -0
  856. package/dist/editor/ui/FloatingToolbar.js +17 -0
  857. package/dist/editor/ui/FloatingToolbar.js.map +1 -0
  858. package/dist/editor/ui/FormatMenus.d.ts +210 -0
  859. package/dist/editor/ui/FormatMenus.d.ts.map +1 -0
  860. package/dist/editor/ui/FormatMenus.js +296 -0
  861. package/dist/editor/ui/FormatMenus.js.map +1 -0
  862. package/dist/editor/ui/InsertMenuButton.d.ts +25 -0
  863. package/dist/editor/ui/InsertMenuButton.d.ts.map +1 -0
  864. package/dist/editor/ui/InsertMenuButton.js +28 -0
  865. package/dist/editor/ui/InsertMenuButton.js.map +1 -0
  866. package/dist/editor/ui/SelectionBubble.d.ts +46 -0
  867. package/dist/editor/ui/SelectionBubble.d.ts.map +1 -0
  868. package/dist/editor/ui/SelectionBubble.js +90 -0
  869. package/dist/editor/ui/SelectionBubble.js.map +1 -0
  870. package/dist/editor/ui/ShortcutsButton.d.ts +29 -0
  871. package/dist/editor/ui/ShortcutsButton.d.ts.map +1 -0
  872. package/dist/editor/ui/ShortcutsButton.js +34 -0
  873. package/dist/editor/ui/ShortcutsButton.js.map +1 -0
  874. package/dist/editor/ui/SlashMenu.d.ts +42 -0
  875. package/dist/editor/ui/SlashMenu.d.ts.map +1 -0
  876. package/dist/editor/ui/SlashMenu.js +114 -0
  877. package/dist/editor/ui/SlashMenu.js.map +1 -0
  878. package/dist/editor/ui/SuggestionList.d.ts +60 -0
  879. package/dist/editor/ui/SuggestionList.d.ts.map +1 -0
  880. package/dist/editor/ui/SuggestionList.js +61 -0
  881. package/dist/editor/ui/SuggestionList.js.map +1 -0
  882. package/dist/editor/ui/TextCard.d.ts +20 -0
  883. package/dist/editor/ui/TextCard.d.ts.map +1 -0
  884. package/dist/editor/ui/TextCard.js +192 -0
  885. package/dist/editor/ui/TextCard.js.map +1 -0
  886. package/dist/editor/ui/ToolButtonView.d.ts +58 -0
  887. package/dist/editor/ui/ToolButtonView.d.ts.map +1 -0
  888. package/dist/editor/ui/ToolButtonView.js +86 -0
  889. package/dist/editor/ui/ToolButtonView.js.map +1 -0
  890. package/dist/editor/ui/TriggerMenu.d.ts +25 -0
  891. package/dist/editor/ui/TriggerMenu.d.ts.map +1 -0
  892. package/dist/editor/ui/TriggerMenu.js +180 -0
  893. package/dist/editor/ui/TriggerMenu.js.map +1 -0
  894. package/dist/editor/ui/focusWithin.d.ts +22 -0
  895. package/dist/editor/ui/focusWithin.d.ts.map +1 -0
  896. package/dist/editor/ui/focusWithin.js +5 -0
  897. package/dist/editor/ui/focusWithin.js.map +1 -0
  898. package/dist/editor/ui/lockableMenu.d.ts +28 -0
  899. package/dist/editor/ui/lockableMenu.d.ts.map +1 -0
  900. package/dist/editor/ui/lockableMenu.js +17 -0
  901. package/dist/editor/ui/lockableMenu.js.map +1 -0
  902. package/dist/editor/ui/rowMarks.d.ts +21 -0
  903. package/dist/editor/ui/rowMarks.d.ts.map +1 -0
  904. package/dist/editor/ui/rowMarks.js +35 -0
  905. package/dist/editor/ui/rowMarks.js.map +1 -0
  906. package/dist/editor/ui/selectionMenu.d.ts +61 -0
  907. package/dist/editor/ui/selectionMenu.d.ts.map +1 -0
  908. package/dist/editor/ui/selectionMenu.js +32 -0
  909. package/dist/editor/ui/selectionMenu.js.map +1 -0
  910. package/dist/hooks/useFieldDescription.d.ts +45 -0
  911. package/dist/hooks/useFieldDescription.d.ts.map +1 -0
  912. package/dist/hooks/useFieldDescription.js +23 -0
  913. package/dist/hooks/useFieldDescription.js.map +1 -0
  914. package/dist/hooks/useMediaQuery.d.ts +25 -0
  915. package/dist/hooks/useMediaQuery.d.ts.map +1 -0
  916. package/dist/hooks/useMediaQuery.js +14 -0
  917. package/dist/hooks/useMediaQuery.js.map +1 -0
  918. package/dist/hooks/useOpenerFocus.d.ts +10 -0
  919. package/dist/hooks/useOpenerFocus.d.ts.map +1 -0
  920. package/dist/hooks/useOpenerFocus.js +35 -0
  921. package/dist/hooks/useOpenerFocus.js.map +1 -0
  922. package/dist/hooks/useOverlayLayer.d.ts +23 -0
  923. package/dist/hooks/useOverlayLayer.d.ts.map +1 -0
  924. package/dist/hooks/useOverlayLayer.js +19 -0
  925. package/dist/hooks/useOverlayLayer.js.map +1 -0
  926. package/dist/hooks/useScrollLock.d.ts +3 -0
  927. package/dist/hooks/useScrollLock.d.ts.map +1 -0
  928. package/dist/hooks/useScrollLock.js +52 -0
  929. package/dist/hooks/useScrollLock.js.map +1 -0
  930. package/dist/hooks/useStickyOffset.d.ts +53 -0
  931. package/dist/hooks/useStickyOffset.d.ts.map +1 -0
  932. package/dist/hooks/useStickyOffset.js +91 -0
  933. package/dist/hooks/useStickyOffset.js.map +1 -0
  934. package/dist/hooks/useTableState.d.ts +35 -0
  935. package/dist/hooks/useTableState.d.ts.map +1 -0
  936. package/dist/hooks/useTableState.js +23 -0
  937. package/dist/hooks/useTableState.js.map +1 -0
  938. package/dist/i18n/UiProvider.d.ts +53 -0
  939. package/dist/i18n/UiProvider.d.ts.map +1 -0
  940. package/dist/i18n/UiProvider.js +63 -0
  941. package/dist/i18n/UiProvider.js.map +1 -0
  942. package/dist/i18n/context.d.ts +26 -0
  943. package/dist/i18n/context.d.ts.map +1 -0
  944. package/dist/i18n/context.js +4 -0
  945. package/dist/i18n/context.js.map +1 -0
  946. package/dist/i18n/defaults.d.ts +19 -0
  947. package/dist/i18n/defaults.d.ts.map +1 -0
  948. package/dist/i18n/defaults.js +574 -0
  949. package/dist/i18n/defaults.js.map +1 -0
  950. package/dist/i18n/messages.d.ts +1178 -0
  951. package/dist/i18n/messages.d.ts.map +1 -0
  952. package/dist/i18n/messages.js +2 -0
  953. package/dist/i18n/messages.js.map +1 -0
  954. package/dist/i18n/useMessages.d.ts +26 -0
  955. package/dist/i18n/useMessages.d.ts.map +1 -0
  956. package/dist/i18n/useMessages.js +22 -0
  957. package/dist/i18n/useMessages.js.map +1 -0
  958. package/dist/icons.d.ts +437 -0
  959. package/dist/icons.d.ts.map +1 -0
  960. package/dist/icons.js +2 -0
  961. package/dist/icons.js.map +1 -0
  962. package/dist/index.d.ts +250 -0
  963. package/dist/index.d.ts.map +1 -0
  964. package/dist/index.js +128 -0
  965. package/dist/index.js.map +1 -0
  966. package/dist/lib/accessible-name.d.ts +34 -0
  967. package/dist/lib/accessible-name.d.ts.map +1 -0
  968. package/dist/lib/accessible-name.js +2 -0
  969. package/dist/lib/accessible-name.js.map +1 -0
  970. package/dist/lib/bottom-bar-slot.d.ts +24 -0
  971. package/dist/lib/bottom-bar-slot.d.ts.map +1 -0
  972. package/dist/lib/bottom-bar-slot.js +4 -0
  973. package/dist/lib/bottom-bar-slot.js.map +1 -0
  974. package/dist/lib/button.d.ts +36 -0
  975. package/dist/lib/button.d.ts.map +1 -0
  976. package/dist/lib/button.js +35 -0
  977. package/dist/lib/button.js.map +1 -0
  978. package/dist/lib/choice-card.d.ts +64 -0
  979. package/dist/lib/choice-card.d.ts.map +1 -0
  980. package/dist/lib/choice-card.js +15 -0
  981. package/dist/lib/choice-card.js.map +1 -0
  982. package/dist/lib/clamp.d.ts +17 -0
  983. package/dist/lib/clamp.d.ts.map +1 -0
  984. package/dist/lib/clamp.js +4 -0
  985. package/dist/lib/clamp.js.map +1 -0
  986. package/dist/lib/cn.d.ts +12 -0
  987. package/dist/lib/cn.d.ts.map +1 -0
  988. package/dist/lib/cn.js +14 -0
  989. package/dist/lib/cn.js.map +1 -0
  990. package/dist/lib/date.d.ts +61 -0
  991. package/dist/lib/date.d.ts.map +1 -0
  992. package/dist/lib/date.js +30 -0
  993. package/dist/lib/date.js.map +1 -0
  994. package/dist/lib/dev-warn.d.ts +26 -0
  995. package/dist/lib/dev-warn.d.ts.map +1 -0
  996. package/dist/lib/dev-warn.js +28 -0
  997. package/dist/lib/dev-warn.js.map +1 -0
  998. package/dist/lib/empty.d.ts +35 -0
  999. package/dist/lib/empty.d.ts.map +1 -0
  1000. package/dist/lib/empty.js +11 -0
  1001. package/dist/lib/empty.js.map +1 -0
  1002. package/dist/lib/field.d.ts +105 -0
  1003. package/dist/lib/field.d.ts.map +1 -0
  1004. package/dist/lib/field.js +18 -0
  1005. package/dist/lib/field.js.map +1 -0
  1006. package/dist/lib/filter-range.d.ts +24 -0
  1007. package/dist/lib/filter-range.d.ts.map +1 -0
  1008. package/dist/lib/filter-range.js +27 -0
  1009. package/dist/lib/filter-range.js.map +1 -0
  1010. package/dist/lib/interaction-modality.d.ts +40 -0
  1011. package/dist/lib/interaction-modality.d.ts.map +1 -0
  1012. package/dist/lib/interaction-modality.js +60 -0
  1013. package/dist/lib/interaction-modality.js.map +1 -0
  1014. package/dist/lib/mask.d.ts +94 -0
  1015. package/dist/lib/mask.d.ts.map +1 -0
  1016. package/dist/lib/mask.js +114 -0
  1017. package/dist/lib/mask.js.map +1 -0
  1018. package/dist/lib/menu.d.ts +85 -0
  1019. package/dist/lib/menu.d.ts.map +1 -0
  1020. package/dist/lib/menu.js +33 -0
  1021. package/dist/lib/menu.js.map +1 -0
  1022. package/dist/lib/overlay-layer.d.ts +101 -0
  1023. package/dist/lib/overlay-layer.d.ts.map +1 -0
  1024. package/dist/lib/overlay-layer.js +40 -0
  1025. package/dist/lib/overlay-layer.js.map +1 -0
  1026. package/dist/lib/period.d.ts +82 -0
  1027. package/dist/lib/period.d.ts.map +1 -0
  1028. package/dist/lib/period.js +58 -0
  1029. package/dist/lib/period.js.map +1 -0
  1030. package/dist/lib/progress-status.d.ts +38 -0
  1031. package/dist/lib/progress-status.d.ts.map +1 -0
  1032. package/dist/lib/progress-status.js +7 -0
  1033. package/dist/lib/progress-status.js.map +1 -0
  1034. package/dist/lib/published-height.d.ts +16 -0
  1035. package/dist/lib/published-height.d.ts.map +1 -0
  1036. package/dist/lib/published-height.js +72 -0
  1037. package/dist/lib/published-height.js.map +1 -0
  1038. package/dist/lib/reorder.d.ts +44 -0
  1039. package/dist/lib/reorder.d.ts.map +1 -0
  1040. package/dist/lib/reorder.js +22 -0
  1041. package/dist/lib/reorder.js.map +1 -0
  1042. package/dist/lib/responsive.d.ts +51 -0
  1043. package/dist/lib/responsive.d.ts.map +1 -0
  1044. package/dist/lib/responsive.js +12 -0
  1045. package/dist/lib/responsive.js.map +1 -0
  1046. package/dist/lib/state.d.ts +25 -0
  1047. package/dist/lib/state.d.ts.map +1 -0
  1048. package/dist/lib/state.js +21 -0
  1049. package/dist/lib/state.js.map +1 -0
  1050. package/dist/lib/table-state.d.ts +105 -0
  1051. package/dist/lib/table-state.d.ts.map +1 -0
  1052. package/dist/lib/table-state.js +121 -0
  1053. package/dist/lib/table-state.js.map +1 -0
  1054. package/dist/lib/tag.d.ts +25 -0
  1055. package/dist/lib/tag.d.ts.map +1 -0
  1056. package/dist/lib/tag.js +6 -0
  1057. package/dist/lib/tag.js.map +1 -0
  1058. package/dist/lib/themes.d.ts +54 -0
  1059. package/dist/lib/themes.d.ts.map +1 -0
  1060. package/dist/lib/themes.js +40 -0
  1061. package/dist/lib/themes.js.map +1 -0
  1062. package/dist/lib/time.d.ts +35 -0
  1063. package/dist/lib/time.d.ts.map +1 -0
  1064. package/dist/lib/time.js +68 -0
  1065. package/dist/lib/time.js.map +1 -0
  1066. package/dist/lib/toolbar-axis.d.ts +17 -0
  1067. package/dist/lib/toolbar-axis.d.ts.map +1 -0
  1068. package/dist/lib/toolbar-axis.js +10 -0
  1069. package/dist/lib/toolbar-axis.js.map +1 -0
  1070. package/dist/lib/touch.d.ts +16 -0
  1071. package/dist/lib/touch.d.ts.map +1 -0
  1072. package/dist/lib/touch.js +2 -0
  1073. package/dist/lib/touch.js.map +1 -0
  1074. package/dist/lib/variants.d.ts +204 -0
  1075. package/dist/lib/variants.d.ts.map +1 -0
  1076. package/dist/lib/variants.js +127 -0
  1077. package/dist/lib/variants.js.map +1 -0
  1078. package/dist/locales/en.d.ts +11 -0
  1079. package/dist/locales/en.d.ts.map +1 -0
  1080. package/dist/locales/en.js +3 -0
  1081. package/dist/locales/en.js.map +1 -0
  1082. package/dist/locales/ru.d.ts +5 -0
  1083. package/dist/locales/ru.d.ts.map +1 -0
  1084. package/dist/locales/ru.js +591 -0
  1085. package/dist/locales/ru.js.map +1 -0
  1086. package/docs/accessibility.en.md +79 -0
  1087. package/docs/accessibility.md +73 -0
  1088. package/docs/api/editor-extension.en.md +309 -0
  1089. package/docs/api/editor-extension.md +308 -0
  1090. package/docs/api/messages.md +750 -0
  1091. package/docs/api/migration-notes.en.md +885 -0
  1092. package/docs/api/migration-notes.md +890 -0
  1093. package/docs/api/utilities.md +252 -0
  1094. package/docs/component-selection.en.md +48 -0
  1095. package/docs/component-selection.md +44 -0
  1096. package/docs/components/actions/button.en.md +59 -0
  1097. package/docs/components/actions/button.md +58 -0
  1098. package/docs/components/actions/chip.en.md +47 -0
  1099. package/docs/components/actions/chip.md +46 -0
  1100. package/docs/components/actions/copy-and-truncate.en.md +98 -0
  1101. package/docs/components/actions/copy-and-truncate.md +96 -0
  1102. package/docs/components/actions/feedback.en.md +69 -0
  1103. package/docs/components/actions/feedback.md +68 -0
  1104. package/docs/components/actions/split-button.en.md +76 -0
  1105. package/docs/components/actions/split-button.md +75 -0
  1106. package/docs/components/actions/toggles.en.md +139 -0
  1107. package/docs/components/actions/toggles.md +136 -0
  1108. package/docs/components/actions/toolbar.en.md +197 -0
  1109. package/docs/components/actions/toolbar.md +192 -0
  1110. package/docs/components/app-shell/app-shell.en.md +172 -0
  1111. package/docs/components/app-shell/app-shell.md +172 -0
  1112. package/docs/components/app-shell/mobile-tab-bar.en.md +207 -0
  1113. package/docs/components/app-shell/mobile-tab-bar.md +210 -0
  1114. package/docs/components/app-shell/side-nav.en.md +153 -0
  1115. package/docs/components/app-shell/side-nav.md +152 -0
  1116. package/docs/components/app-shell/split-panel.en.md +148 -0
  1117. package/docs/components/app-shell/split-panel.md +147 -0
  1118. package/docs/components/app-shell/top-bar.en.md +103 -0
  1119. package/docs/components/app-shell/top-bar.md +100 -0
  1120. package/docs/components/content/avatar.en.md +123 -0
  1121. package/docs/components/content/avatar.md +119 -0
  1122. package/docs/components/content/card.en.md +123 -0
  1123. package/docs/components/content/card.md +122 -0
  1124. package/docs/components/content/carousel.en.md +236 -0
  1125. package/docs/components/content/carousel.md +227 -0
  1126. package/docs/components/content/code-view.en.md +177 -0
  1127. package/docs/components/content/code-view.md +172 -0
  1128. package/docs/components/content/data-display.en.md +205 -0
  1129. package/docs/components/content/data-display.md +212 -0
  1130. package/docs/components/content/editable-list.en.md +437 -0
  1131. package/docs/components/content/editable-list.md +418 -0
  1132. package/docs/components/content/empty-and-loading.en.md +149 -0
  1133. package/docs/components/content/empty-and-loading.md +149 -0
  1134. package/docs/components/content/grid.en.md +148 -0
  1135. package/docs/components/content/grid.md +142 -0
  1136. package/docs/components/content/image.en.md +115 -0
  1137. package/docs/components/content/image.md +114 -0
  1138. package/docs/components/content/keyboard.en.md +129 -0
  1139. package/docs/components/content/keyboard.md +129 -0
  1140. package/docs/components/content/layout-primitives.en.md +105 -0
  1141. package/docs/components/content/layout-primitives.md +104 -0
  1142. package/docs/components/content/media-card.en.md +137 -0
  1143. package/docs/components/content/media-card.md +132 -0
  1144. package/docs/components/content/notifications.en.md +216 -0
  1145. package/docs/components/content/notifications.md +207 -0
  1146. package/docs/components/content/rich-text-view.en.md +325 -0
  1147. package/docs/components/content/rich-text-view.md +324 -0
  1148. package/docs/components/content/sortable-list.en.md +212 -0
  1149. package/docs/components/content/sortable-list.md +206 -0
  1150. package/docs/components/content/tag-group.en.md +158 -0
  1151. package/docs/components/content/tag-group.md +151 -0
  1152. package/docs/components/content/timeline.en.md +77 -0
  1153. package/docs/components/content/timeline.md +76 -0
  1154. package/docs/components/content/typography.en.md +152 -0
  1155. package/docs/components/content/typography.md +146 -0
  1156. package/docs/components/content/virtual-grid.en.md +305 -0
  1157. package/docs/components/content/virtual-grid.md +315 -0
  1158. package/docs/components/date-time/calendar.en.md +47 -0
  1159. package/docs/components/date-time/calendar.md +46 -0
  1160. package/docs/components/date-time/date-picker.en.md +52 -0
  1161. package/docs/components/date-time/date-picker.md +50 -0
  1162. package/docs/components/date-time/date-range-picker.en.md +58 -0
  1163. package/docs/components/date-time/date-range-picker.md +57 -0
  1164. package/docs/components/date-time/date-time-picker.en.md +44 -0
  1165. package/docs/components/date-time/date-time-picker.md +43 -0
  1166. package/docs/components/date-time/range-calendar.en.md +47 -0
  1167. package/docs/components/date-time/range-calendar.md +46 -0
  1168. package/docs/components/date-time/time-picker.en.md +47 -0
  1169. package/docs/components/date-time/time-picker.md +51 -0
  1170. package/docs/components/index.en.md +155 -0
  1171. package/docs/components/index.md +150 -0
  1172. package/docs/components/inputs/choice-controls.en.md +118 -0
  1173. package/docs/components/inputs/choice-controls.md +112 -0
  1174. package/docs/components/inputs/color-picker.en.md +126 -0
  1175. package/docs/components/inputs/color-picker.md +122 -0
  1176. package/docs/components/inputs/combobox.en.md +62 -0
  1177. package/docs/components/inputs/combobox.md +58 -0
  1178. package/docs/components/inputs/file-dropzone.en.md +51 -0
  1179. package/docs/components/inputs/file-dropzone.md +50 -0
  1180. package/docs/components/inputs/form-layout.en.md +99 -0
  1181. package/docs/components/inputs/form-layout.md +97 -0
  1182. package/docs/components/inputs/form.en.md +87 -0
  1183. package/docs/components/inputs/form.md +86 -0
  1184. package/docs/components/inputs/inline-edit.en.md +93 -0
  1185. package/docs/components/inputs/inline-edit.md +94 -0
  1186. package/docs/components/inputs/masked-input.en.md +149 -0
  1187. package/docs/components/inputs/masked-input.md +147 -0
  1188. package/docs/components/inputs/number-input.en.md +81 -0
  1189. package/docs/components/inputs/number-input.md +80 -0
  1190. package/docs/components/inputs/password-input.en.md +101 -0
  1191. package/docs/components/inputs/password-input.md +97 -0
  1192. package/docs/components/inputs/phone-input.en.md +78 -0
  1193. package/docs/components/inputs/phone-input.md +76 -0
  1194. package/docs/components/inputs/pin-input.en.md +109 -0
  1195. package/docs/components/inputs/pin-input.md +108 -0
  1196. package/docs/components/inputs/rating.en.md +100 -0
  1197. package/docs/components/inputs/rating.md +99 -0
  1198. package/docs/components/inputs/rich-text-editor.en.md +1539 -0
  1199. package/docs/components/inputs/rich-text-editor.md +1538 -0
  1200. package/docs/components/inputs/search-control.en.md +60 -0
  1201. package/docs/components/inputs/search-control.md +58 -0
  1202. package/docs/components/inputs/select.en.md +68 -0
  1203. package/docs/components/inputs/select.md +65 -0
  1204. package/docs/components/inputs/slider.en.md +60 -0
  1205. package/docs/components/inputs/slider.md +59 -0
  1206. package/docs/components/inputs/swatch-group.en.md +181 -0
  1207. package/docs/components/inputs/swatch-group.md +177 -0
  1208. package/docs/components/inputs/tag-input.en.md +50 -0
  1209. package/docs/components/inputs/tag-input.md +48 -0
  1210. package/docs/components/inputs/text-control.en.md +76 -0
  1211. package/docs/components/inputs/text-control.md +74 -0
  1212. package/docs/components/inputs/transfer.en.md +118 -0
  1213. package/docs/components/inputs/transfer.md +114 -0
  1214. package/docs/components/inputs/tree-select.en.md +91 -0
  1215. package/docs/components/inputs/tree-select.md +89 -0
  1216. package/docs/components/inputs/upload-queue.en.md +160 -0
  1217. package/docs/components/inputs/upload-queue.md +158 -0
  1218. package/docs/components/navigation/accordion.en.md +76 -0
  1219. package/docs/components/navigation/accordion.md +75 -0
  1220. package/docs/components/navigation/breadcrumbs.en.md +73 -0
  1221. package/docs/components/navigation/breadcrumbs.md +72 -0
  1222. package/docs/components/navigation/contextual-save-bar.en.md +104 -0
  1223. package/docs/components/navigation/contextual-save-bar.md +103 -0
  1224. package/docs/components/navigation/page-header.en.md +71 -0
  1225. package/docs/components/navigation/page-header.md +70 -0
  1226. package/docs/components/navigation/pagination.en.md +69 -0
  1227. package/docs/components/navigation/pagination.md +69 -0
  1228. package/docs/components/navigation/section-header.en.md +67 -0
  1229. package/docs/components/navigation/section-header.md +66 -0
  1230. package/docs/components/navigation/selection-bar.en.md +83 -0
  1231. package/docs/components/navigation/selection-bar.md +83 -0
  1232. package/docs/components/navigation/stepper.en.md +78 -0
  1233. package/docs/components/navigation/stepper.md +77 -0
  1234. package/docs/components/navigation/tabs.en.md +71 -0
  1235. package/docs/components/navigation/tabs.md +70 -0
  1236. package/docs/components/navigation/tree-view.en.md +173 -0
  1237. package/docs/components/navigation/tree-view.md +172 -0
  1238. package/docs/components/overlays/command-palette.en.md +153 -0
  1239. package/docs/components/overlays/command-palette.md +147 -0
  1240. package/docs/components/overlays/confirm-dialog.en.md +134 -0
  1241. package/docs/components/overlays/confirm-dialog.md +127 -0
  1242. package/docs/components/overlays/context-menu.en.md +115 -0
  1243. package/docs/components/overlays/context-menu.md +113 -0
  1244. package/docs/components/overlays/dialog.en.md +120 -0
  1245. package/docs/components/overlays/dialog.md +117 -0
  1246. package/docs/components/overlays/drawer.en.md +87 -0
  1247. package/docs/components/overlays/drawer.md +88 -0
  1248. package/docs/components/overlays/hover-card.en.md +179 -0
  1249. package/docs/components/overlays/hover-card.md +175 -0
  1250. package/docs/components/overlays/menu.en.md +103 -0
  1251. package/docs/components/overlays/menu.md +100 -0
  1252. package/docs/components/overlays/popover.en.md +78 -0
  1253. package/docs/components/overlays/popover.md +77 -0
  1254. package/docs/components/overlays/shortcuts-help.en.md +190 -0
  1255. package/docs/components/overlays/shortcuts-help.md +186 -0
  1256. package/docs/components/overlays/tooltip.en.md +78 -0
  1257. package/docs/components/overlays/tooltip.md +77 -0
  1258. package/docs/components/table/data-table.en.md +137 -0
  1259. package/docs/components/table/data-table.md +133 -0
  1260. package/docs/components/table/filter-bar.en.md +161 -0
  1261. package/docs/components/table/filter-bar.md +155 -0
  1262. package/docs/components/table/saved-views.en.md +117 -0
  1263. package/docs/components/table/saved-views.md +115 -0
  1264. package/docs/components/table/toolbar.en.md +100 -0
  1265. package/docs/components/table/toolbar.md +97 -0
  1266. package/docs/conventions.md +358 -0
  1267. package/docs/getting-started.en.md +382 -0
  1268. package/docs/getting-started.md +381 -0
  1269. package/docs/glossary.en.md +179 -0
  1270. package/docs/glossary.md +174 -0
  1271. package/docs/i18n.en.md +147 -0
  1272. package/docs/i18n.md +143 -0
  1273. package/docs/icons.en.md +252 -0
  1274. package/docs/icons.md +251 -0
  1275. package/docs/index.md +62 -0
  1276. package/docs/palette.en.md +400 -0
  1277. package/docs/palette.md +396 -0
  1278. package/docs/theming.en.md +522 -0
  1279. package/docs/theming.md +518 -0
  1280. package/llms.txt +144 -0
  1281. package/package.json +173 -4
  1282. package/src/color.ts +21 -0
  1283. package/src/components/actions/Alert.tsx +121 -0
  1284. package/src/components/actions/Banner.tsx +120 -0
  1285. package/src/components/actions/Button.tsx +241 -0
  1286. package/src/components/actions/ButtonGroup.tsx +65 -0
  1287. package/src/components/actions/Chip.tsx +113 -0
  1288. package/src/components/actions/CopyButton.tsx +112 -0
  1289. package/src/components/actions/Progress.tsx +103 -0
  1290. package/src/components/actions/Segmented.tsx +162 -0
  1291. package/src/components/actions/Spinner.tsx +80 -0
  1292. package/src/components/actions/SplitButton.tsx +164 -0
  1293. package/src/components/actions/StatusBadge.tsx +61 -0
  1294. package/src/components/actions/Toaster.tsx +148 -0
  1295. package/src/components/actions/Toggle.tsx +224 -0
  1296. package/src/components/actions/ToggleGroup.tsx +147 -0
  1297. package/src/components/actions/Toolbar.tsx +223 -0
  1298. package/src/components/actions/Truncate.tsx +96 -0
  1299. package/src/components/app-shell/AppShell.tsx +268 -0
  1300. package/src/components/app-shell/MobileTabBar.tsx +305 -0
  1301. package/src/components/app-shell/NavItem.tsx +149 -0
  1302. package/src/components/app-shell/SideNav.tsx +217 -0
  1303. package/src/components/app-shell/SplitPanel.tsx +381 -0
  1304. package/src/components/app-shell/TopBar.tsx +115 -0
  1305. package/src/components/content/AspectRatio.tsx +45 -0
  1306. package/src/components/content/Avatar.tsx +132 -0
  1307. package/src/components/content/AvatarGroup.tsx +92 -0
  1308. package/src/components/content/Badge.tsx +78 -0
  1309. package/src/components/content/Card.tsx +117 -0
  1310. package/src/components/content/Carousel.tsx +427 -0
  1311. package/src/components/content/CodeView.tsx +178 -0
  1312. package/src/components/content/DescriptionList.tsx +64 -0
  1313. package/src/components/content/EditableList.tsx +879 -0
  1314. package/src/components/content/EmptyState.tsx +65 -0
  1315. package/src/components/content/ErrorState.tsx +100 -0
  1316. package/src/components/content/Grid.tsx +208 -0
  1317. package/src/components/content/Heading.tsx +81 -0
  1318. package/src/components/content/Image.tsx +235 -0
  1319. package/src/components/content/Kbd.tsx +67 -0
  1320. package/src/components/content/Keyboard.tsx +634 -0
  1321. package/src/components/content/Link.tsx +199 -0
  1322. package/src/components/content/MediaCard.tsx +167 -0
  1323. package/src/components/content/NotificationCenter.tsx +168 -0
  1324. package/src/components/content/NotificationList.tsx +329 -0
  1325. package/src/components/content/ScrollArea.tsx +69 -0
  1326. package/src/components/content/Separator.tsx +62 -0
  1327. package/src/components/content/Skeleton.tsx +40 -0
  1328. package/src/components/content/SortableList.tsx +249 -0
  1329. package/src/components/content/Stat.tsx +75 -0
  1330. package/src/components/content/Table.tsx +500 -0
  1331. package/src/components/content/TagGroup.tsx +222 -0
  1332. package/src/components/content/Text.tsx +127 -0
  1333. package/src/components/content/Timeline.tsx +126 -0
  1334. package/src/components/content/VirtualGrid.tsx +726 -0
  1335. package/src/components/content/VisuallyHidden.tsx +25 -0
  1336. package/src/components/content/keyboardEditing.ts +51 -0
  1337. package/src/components/content/useDragToSelect.ts +255 -0
  1338. package/src/components/date-time/Calendar.tsx +181 -0
  1339. package/src/components/date-time/DatePicker.tsx +143 -0
  1340. package/src/components/date-time/DateRangePicker.tsx +349 -0
  1341. package/src/components/date-time/DateTimePicker.tsx +92 -0
  1342. package/src/components/date-time/RangeCalendar.tsx +156 -0
  1343. package/src/components/date-time/TimePicker.tsx +377 -0
  1344. package/src/components/inputs/Checkbox.tsx +284 -0
  1345. package/src/components/inputs/CheckboxCard.tsx +132 -0
  1346. package/src/components/inputs/CheckboxGroup.tsx +140 -0
  1347. package/src/components/inputs/ChoiceCardBody.tsx +53 -0
  1348. package/src/components/inputs/ColorPicker.tsx +221 -0
  1349. package/src/components/inputs/Combobox.tsx +156 -0
  1350. package/src/components/inputs/FileDropzone.tsx +253 -0
  1351. package/src/components/inputs/Form.tsx +77 -0
  1352. package/src/components/inputs/FormField.tsx +235 -0
  1353. package/src/components/inputs/FormLayout.tsx +80 -0
  1354. package/src/components/inputs/InlineEdit.tsx +205 -0
  1355. package/src/components/inputs/MaskedInput.tsx +288 -0
  1356. package/src/components/inputs/NumberInput.tsx +138 -0
  1357. package/src/components/inputs/PasswordInput.tsx +166 -0
  1358. package/src/components/inputs/PhoneInput.tsx +55 -0
  1359. package/src/components/inputs/PinInput.tsx +197 -0
  1360. package/src/components/inputs/RadioGroup.tsx +322 -0
  1361. package/src/components/inputs/Rating.tsx +224 -0
  1362. package/src/components/inputs/SearchControl.tsx +278 -0
  1363. package/src/components/inputs/Select.tsx +741 -0
  1364. package/src/components/inputs/Slider.tsx +436 -0
  1365. package/src/components/inputs/SwatchGroup.tsx +342 -0
  1366. package/src/components/inputs/TagInput.tsx +221 -0
  1367. package/src/components/inputs/TextControl.tsx +335 -0
  1368. package/src/components/inputs/Transfer.tsx +368 -0
  1369. package/src/components/inputs/TreeSelect.tsx +275 -0
  1370. package/src/components/inputs/UploadQueue.tsx +240 -0
  1371. package/src/components/navigation/Accordion.tsx +118 -0
  1372. package/src/components/navigation/Breadcrumbs.tsx +112 -0
  1373. package/src/components/navigation/ContextualSaveBar.tsx +174 -0
  1374. package/src/components/navigation/PageHeader.tsx +41 -0
  1375. package/src/components/navigation/Pagination.tsx +184 -0
  1376. package/src/components/navigation/SectionHeader.tsx +54 -0
  1377. package/src/components/navigation/SelectionBar.tsx +151 -0
  1378. package/src/components/navigation/Stepper.tsx +153 -0
  1379. package/src/components/navigation/Tabs.tsx +130 -0
  1380. package/src/components/navigation/TreeView.tsx +246 -0
  1381. package/src/components/overlays/CommandPalette.tsx +343 -0
  1382. package/src/components/overlays/ConfirmDialog.tsx +272 -0
  1383. package/src/components/overlays/ContextMenu.tsx +284 -0
  1384. package/src/components/overlays/Dialog.tsx +283 -0
  1385. package/src/components/overlays/Drawer.tsx +193 -0
  1386. package/src/components/overlays/HelpTooltip.tsx +96 -0
  1387. package/src/components/overlays/HoverCard.tsx +404 -0
  1388. package/src/components/overlays/Menu.tsx +243 -0
  1389. package/src/components/overlays/ModalHeader.tsx +125 -0
  1390. package/src/components/overlays/ModalOverlay.tsx +108 -0
  1391. package/src/components/overlays/Popover.tsx +120 -0
  1392. package/src/components/overlays/ShortcutsHelp.tsx +147 -0
  1393. package/src/components/overlays/Tooltip.tsx +89 -0
  1394. package/src/components/table/DataTable.tsx +164 -0
  1395. package/src/components/table/FilterBar.tsx +114 -0
  1396. package/src/components/table/FilterBarAdd.tsx +268 -0
  1397. package/src/components/table/SavedViews.tsx +122 -0
  1398. package/src/components/table/TablePreferences.tsx +173 -0
  1399. package/src/components/table/TableToolbar.tsx +74 -0
  1400. package/src/editor/RichTextEditor.tsx +1747 -0
  1401. package/src/editor/RichTextView.tsx +119 -0
  1402. package/src/editor/core/atomText.ts +140 -0
  1403. package/src/editor/core/blockCommands.ts +329 -0
  1404. package/src/editor/core/blockTypes.ts +252 -0
  1405. package/src/editor/core/containers.ts +100 -0
  1406. package/src/editor/core/customMarkdown.ts +74 -0
  1407. package/src/editor/core/customTool.ts +472 -0
  1408. package/src/editor/core/customToolEngine.ts +442 -0
  1409. package/src/editor/core/document.ts +27 -0
  1410. package/src/editor/core/emptiness.ts +31 -0
  1411. package/src/editor/core/extensions.ts +295 -0
  1412. package/src/editor/core/fieldNotice.ts +75 -0
  1413. package/src/editor/core/handle.ts +311 -0
  1414. package/src/editor/core/insertItems.ts +434 -0
  1415. package/src/editor/core/jsonDocument.ts +99 -0
  1416. package/src/editor/core/markdown.ts +313 -0
  1417. package/src/editor/core/maxLength.ts +99 -0
  1418. package/src/editor/core/pasteTrim.ts +85 -0
  1419. package/src/editor/core/schema.ts +986 -0
  1420. package/src/editor/core/schemaConform.ts +122 -0
  1421. package/src/editor/core/shortcuts.ts +435 -0
  1422. package/src/editor/core/skeleton.ts +108 -0
  1423. package/src/editor/core/slashCommand.ts +143 -0
  1424. package/src/editor/core/sourceFormat.ts +194 -0
  1425. package/src/editor/core/toolButtons.ts +133 -0
  1426. package/src/editor/core/toolDescriptor.ts +359 -0
  1427. package/src/editor/core/toolEntryShortcuts.ts +66 -0
  1428. package/src/editor/core/toolLoader.ts +50 -0
  1429. package/src/editor/core/tools.ts +150 -0
  1430. package/src/editor/core/viewIsland.ts +35 -0
  1431. package/src/editor/features/builtins.ts +145 -0
  1432. package/src/editor/features/code/CodeBlockView.tsx +240 -0
  1433. package/src/editor/features/code/CodeCopyButton.tsx +76 -0
  1434. package/src/editor/features/code/CodeCopyIsland.tsx +71 -0
  1435. package/src/editor/features/code/codeBlock.ts +188 -0
  1436. package/src/editor/features/code/codeBlockTool.ts +107 -0
  1437. package/src/editor/features/code/codeHeader.ts +97 -0
  1438. package/src/editor/features/code/codeLanguages.ts +62 -0
  1439. package/src/editor/features/code/highlight.ts +109 -0
  1440. package/src/editor/features/code/highlightNodes.ts +65 -0
  1441. package/src/editor/features/code/lowlight.ts +45 -0
  1442. package/src/editor/features/color/CustomColorPopover.tsx +180 -0
  1443. package/src/editor/features/color/contrast.ts +52 -0
  1444. package/src/editor/features/color/customColor.ts +91 -0
  1445. package/src/editor/features/color/styleExtensions.ts +316 -0
  1446. package/src/editor/features/emoji/EmojiGrid.tsx +160 -0
  1447. package/src/editor/features/emoji/emoji.ts +156 -0
  1448. package/src/editor/features/emoji/emojiTool.tsx +67 -0
  1449. package/src/editor/features/image/ImagePopover.tsx +254 -0
  1450. package/src/editor/features/image/ImageToolbar.tsx +147 -0
  1451. package/src/editor/features/image/image.ts +821 -0
  1452. package/src/editor/features/image/imageNotice.ts +27 -0
  1453. package/src/editor/features/layout/columnLayouts.ts +71 -0
  1454. package/src/editor/features/layout/layout.ts +537 -0
  1455. package/src/editor/features/link/LinkPopover.tsx +114 -0
  1456. package/src/editor/features/link/link.ts +112 -0
  1457. package/src/editor/features/link/linkTool.tsx +36 -0
  1458. package/src/editor/features/search/SearchPanel.tsx +264 -0
  1459. package/src/editor/features/search/revealMatch.ts +69 -0
  1460. package/src/editor/features/search/searchMatch.ts +129 -0
  1461. package/src/editor/features/search/searchPlugin.ts +254 -0
  1462. package/src/editor/features/search/searchTool.ts +30 -0
  1463. package/src/editor/features/table/TableInsertDialog.tsx +129 -0
  1464. package/src/editor/features/table/TableMenuButton.tsx +503 -0
  1465. package/src/editor/features/table/TableSizeGrid.tsx +265 -0
  1466. package/src/editor/features/table/tableActions.ts +380 -0
  1467. package/src/editor/features/table/tableCells.ts +63 -0
  1468. package/src/editor/features/table/tableChunk.ts +11 -0
  1469. package/src/editor/features/table/tableTool.ts +74 -0
  1470. package/src/editor/features/table/tables.ts +220 -0
  1471. package/src/editor/features/wrapper/wrapper.ts +350 -0
  1472. package/src/editor/features/wrapper/wrapperTones.ts +51 -0
  1473. package/src/editor/highlight-entry.ts +23 -0
  1474. package/src/editor/highlight-grammars.d.ts +12 -0
  1475. package/src/editor/hooks/useChangeThrottle.ts +62 -0
  1476. package/src/editor/hooks/useCoarsePointer.ts +36 -0
  1477. package/src/editor/hooks/useFieldsetDisabled.ts +53 -0
  1478. package/src/editor/hooks/useRichTextEditorState.ts +51 -0
  1479. package/src/editor/hooks/useSubmenuPlacement.ts +40 -0
  1480. package/src/editor/index.ts +59 -0
  1481. package/src/editor/schema-entry.ts +40 -0
  1482. package/src/editor/styles/codeTheme.ts +66 -0
  1483. package/src/editor/styles/glass.ts +66 -0
  1484. package/src/editor/styles/palette.ts +191 -0
  1485. package/src/editor/styles/prose.ts +429 -0
  1486. package/src/editor/styles/surface.ts +24 -0
  1487. package/src/editor/styles/tokens.ts +173 -0
  1488. package/src/editor/ui/BlockHandle.tsx +601 -0
  1489. package/src/editor/ui/BlockIsland.tsx +23 -0
  1490. package/src/editor/ui/BlockIslandSlots.tsx +114 -0
  1491. package/src/editor/ui/ColorMenus.tsx +613 -0
  1492. package/src/editor/ui/EditorToolbar.tsx +630 -0
  1493. package/src/editor/ui/FieldResizer.tsx +155 -0
  1494. package/src/editor/ui/FieldStatus.tsx +85 -0
  1495. package/src/editor/ui/FloatingToolbar.tsx +77 -0
  1496. package/src/editor/ui/FormatMenus.tsx +706 -0
  1497. package/src/editor/ui/InsertMenuButton.tsx +104 -0
  1498. package/src/editor/ui/SelectionBubble.tsx +317 -0
  1499. package/src/editor/ui/ShortcutsButton.tsx +128 -0
  1500. package/src/editor/ui/SlashMenu.tsx +199 -0
  1501. package/src/editor/ui/SuggestionList.tsx +217 -0
  1502. package/src/editor/ui/TextCard.tsx +312 -0
  1503. package/src/editor/ui/ToolButtonView.tsx +242 -0
  1504. package/src/editor/ui/TriggerMenu.tsx +255 -0
  1505. package/src/editor/ui/focusWithin.ts +26 -0
  1506. package/src/editor/ui/lockableMenu.ts +37 -0
  1507. package/src/editor/ui/rowMarks.ts +66 -0
  1508. package/src/editor/ui/selectionMenu.ts +97 -0
  1509. package/src/hooks/useFieldDescription.ts +126 -0
  1510. package/src/hooks/useMediaQuery.ts +46 -0
  1511. package/src/hooks/useOpenerFocus.ts +118 -0
  1512. package/src/hooks/useOverlayLayer.ts +42 -0
  1513. package/src/hooks/useScrollLock.ts +92 -0
  1514. package/src/hooks/useStickyOffset.ts +228 -0
  1515. package/src/hooks/useTableState.ts +76 -0
  1516. package/src/i18n/UiProvider.tsx +152 -0
  1517. package/src/i18n/context.ts +30 -0
  1518. package/src/i18n/defaults.ts +657 -0
  1519. package/src/i18n/messages.ts +1183 -0
  1520. package/src/i18n/useMessages.ts +47 -0
  1521. package/src/icons.ts +566 -0
  1522. package/src/index.ts +502 -0
  1523. package/src/lib/accessible-name.ts +35 -0
  1524. package/src/lib/bottom-bar-slot.ts +27 -0
  1525. package/src/lib/button.ts +158 -0
  1526. package/src/lib/choice-card.ts +79 -0
  1527. package/src/lib/clamp.ts +18 -0
  1528. package/src/lib/cn.ts +48 -0
  1529. package/src/lib/date.ts +87 -0
  1530. package/src/lib/dev-warn.ts +82 -0
  1531. package/src/lib/empty.ts +43 -0
  1532. package/src/lib/field.ts +125 -0
  1533. package/src/lib/filter-range.ts +48 -0
  1534. package/src/lib/interaction-modality.ts +134 -0
  1535. package/src/lib/mask.ts +226 -0
  1536. package/src/lib/menu.ts +196 -0
  1537. package/src/lib/overlay-layer.ts +163 -0
  1538. package/src/lib/period.ts +167 -0
  1539. package/src/lib/progress-status.ts +44 -0
  1540. package/src/lib/published-height.ts +147 -0
  1541. package/src/lib/reorder.ts +65 -0
  1542. package/src/lib/responsive.ts +71 -0
  1543. package/src/lib/state.ts +39 -0
  1544. package/src/lib/table-state.ts +264 -0
  1545. package/src/lib/tag.ts +31 -0
  1546. package/src/lib/themes.ts +144 -0
  1547. package/src/lib/time.ts +107 -0
  1548. package/src/lib/toolbar-axis.tsx +31 -0
  1549. package/src/lib/touch.ts +15 -0
  1550. package/src/lib/variants.ts +342 -0
  1551. package/src/locales/en.ts +10 -0
  1552. package/src/locales/ru.ts +695 -0
  1553. package/styles.css +1650 -0
@@ -0,0 +1,207 @@
1
+ ---
2
+ component: Notifications
3
+ exports: [NotificationItem, NotificationList, NotificationGroup, NotificationCenter]
4
+ category: content
5
+ status: stable
6
+ source: src/components/content/NotificationList.tsx
7
+ story: src/components/content/NotificationList.stories.tsx
8
+ ---
9
+
10
+ # NotificationItem, NotificationList и NotificationCenter
11
+
12
+ ## Кратко для AI
13
+
14
+ Список событий: что произошло, когда и прочитано ли. Типов событий кит не знает
15
+ — иконка, тон и текст приходят пропами. Группы («Сегодня», «Раньше») приходят
16
+ уже собранными.
17
+
18
+ ## Когда использовать
19
+
20
+ - Лента уведомлений в поповере, ящике (`Drawer`) или на отдельной странице.
21
+ - Нужно отличать прочитанное от непрочитанного и отмечать прочтение.
22
+
23
+ ## Когда не использовать
24
+
25
+ - Для временного сообщения о событии — это `toast`: он всплывает и уходит.
26
+ - Для постоянного состояния страницы — это `Alert`, приложения — `Banner`.
27
+ - Для шагов одного процесса — это `Timeline`: там порядок задаёт процесс, а не
28
+ время, и у шага нет действий.
29
+
30
+ ## Минимальный пример
31
+
32
+ ```tsx
33
+ import { NotificationList, NotificationItem } from "@olddevs/ui";
34
+
35
+ <NotificationList
36
+ groups={[
37
+ {
38
+ id: "today",
39
+ label: "Сегодня",
40
+ children: <NotificationItem title="Публикация не прошла" unread time="5 минут назад" />,
41
+ },
42
+ ]}
43
+ empty={<EmptyState title="Пока тихо" />}
44
+ />;
45
+ ```
46
+
47
+ ## Пропы
48
+
49
+ `NotificationItem`: `title`, `description`, `time`, `icon`, `media`, `tone`,
50
+ `unread` и **одно из** `actions` / `onAction`.
51
+
52
+ `NotificationList`: `groups` **или** `children`, `empty`, `aria-label`.
53
+
54
+ `NotificationCenter`: `title`, `level`, `titleId`, `unreadCount`,
55
+ `filters`, `actions`, `selectedCount`, `onClearSelection`, `selectionActions`,
56
+ `footer`, `children`.
57
+
58
+ ## Превью и иконка — два независимых слота
59
+
60
+ `icon` говорит, **что** случилось (тип события, тон), `media` — **с чем**
61
+ (превью объекта, о котором событие). Строка показывает оба: иконка слева, превью
62
+ следом, затем текст. Размер превью задаёт сам элемент (`Image` на 36px,
63
+ `Avatar`); слот только не даёт ему сжаться. Если заголовок
64
+ уже называет объект, превью декоративно и получает `alt=""`.
65
+
66
+ ```tsx
67
+ <NotificationItem
68
+ title="Модерация завершена"
69
+ icon={<InfoIcon size={16} />}
70
+ media={<Image src={item.previewUrl} alt="" className="size-9 rounded-md" />}
71
+ />
72
+ ```
73
+
74
+ ## Вся строка — одна кнопка (`onAction`)
75
+
76
+ `onAction` превращает строку в **одну кнопку на всю площадь**: щелчок, Enter и
77
+ Space вызывают обработчик. Строка по-прежнему `<li>` списка, кнопка лежит внутри
78
+ неё; подложка непрочитанного остаётся на `li`, а наведение и кольцо фокуса —
79
+ на кнопке; кольцо рисуется внутрь строки, потому что снаружи его срезала бы
80
+ прокрутка центра.
81
+
82
+ - **Имя кнопки — заголовок** и слово «Не прочитано» (`aria-labelledby` на оба
83
+ узла), а не весь текст: полным содержимым имя вышло бы на полстраницы.
84
+ **Время и подробности — описание** кнопки (`aria-describedby`), поэтому не
85
+ теряются.
86
+ - Внутри кнопки нет вложенных интерактивных элементов, а блоки строки — `span`:
87
+ в `button` допустим только фразовый контент.
88
+ - **Отступы и раскладка строки лежат на кнопке**, а `className` приходит на
89
+ `<li>`: подложка и граница через него меняются, `px-*`, `py-*` и `gap-*` — нет.
90
+ Без `onAction` они лежат на самом `li`.
91
+ - **В имя и описание попадают только заголовок, слово «Не прочитано», время и
92
+ подробности.** `alt` превью и текст иконки в них не входят: важное об объекте
93
+ («фото Анны К.») пишите в заголовок, а превью оставляйте декоративным.
94
+ - **`onAction` — это кнопка, а не ссылка.** Если щелчок ведёт на адрес и нужны
95
+ открытие в новой вкладке и клик средней кнопкой мыши, строку оборачивает ссылка снаружи
96
+ либо переход идёт через `actions` со ссылкой; кнопка с `router.push` этих
97
+ свойств лишена.
98
+ - Наведение у непрочитанной строки затемняет подложку акцента, у прочитанной —
99
+ заливает нейтральным цветом.
100
+ - Строка без `onAction` кнопки не содержит — разметка прежняя, без лишних `id`.
101
+
102
+ ```tsx
103
+ <NotificationItem title="Публикация не прошла" unread onAction={() => markRead(id)} />
104
+ ```
105
+
106
+ **С `actions` не сочетается**, и это сказано типом: кнопки внутри кнопки —
107
+ недопустимая разметка. Если нужны и щелчок по строке, и отдельные действия,
108
+ выберите одно: действие на всю строку или кнопки справа.
109
+
110
+ Потребитель на JS мог передать оба пропа: типы его не остановят. Кит при этом не
111
+ роняет страницу: **побеждает `actions`, `onAction` игнорируется.** Из двух
112
+ потерь выбрана меньшая: `actions` может быть единственным путём к действию
113
+ («удалить», «открыть»), а щелчок по всей строке — удобство. Сбой виден сразу:
114
+ строка не отзывается на щелчок. В режиме разработки об этом ещё и пишет консоль:
115
+ один раз на загрузку модуля `console.warn` с английским текстом: что передано, что
116
+ победило и как исправить. В продакшн-сборке кит молчит. Правила таких
117
+ предупреждений — [conventions.md](../../conventions.md#предупреждения-в-режиме-разработки).
118
+
119
+ ## Заголовок центра: уровень и `id`
120
+
121
+ По умолчанию заголовок `NotificationCenter` — обычный текст (`span`): в структуру
122
+ заголовков страницы он не входит. `level` (`2`, `3` или `4`; имя то же, что у
123
+ `SectionHeader`) делает его
124
+ настоящим `<h2>`–`<h4>`: уровень зависит от того, куда центр встал, и знает это
125
+ потребитель. `titleId` ставит `id` на элемент заголовка, чтобы на него ссылался
126
+ `aria-labelledby` поповера или ящика:
127
+
128
+ ```tsx
129
+ <PopoverContent aria-labelledby="bell-title">
130
+ <NotificationCenter level={2} titleId="bell-title" unreadCount={12}>
131
+ …
132
+ </NotificationCenter>
133
+ </PopoverContent>
134
+ ```
135
+
136
+ `titleId` работает и без `level` (`id` встанет на `span`): имя
137
+ контейнера придёт от заголовка, а структуру страницы центр не тронет. Без обоих
138
+ пропов разметка и поведение прежние.
139
+
140
+ ## У центра нет контейнера
141
+
142
+ `NotificationCenter` — не поповер, не ящик и не страница: он их **содержимое**.
143
+ Потребитель ставит его внутрь существующих `Popover` или `Drawer` либо прямо на
144
+ страницу, и центр не открывает и не закрывает себя — состояние контейнера живёт
145
+ снаружи.
146
+
147
+ Иначе пришлось бы выбрать один контейнер за все приложения сразу, а в админке
148
+ лента чаще страница, в клиентском приложении чаще поповер.
149
+
150
+ Массовые действия — существующий `SelectionBar`, а не своя полоса: он уже несёт
151
+ счётчик, снятие выделения, два слота действий и правило «при нуле полосы нет
152
+ вовсе». Липкость у него здесь выключена: в поповере прилипать не к чему.
153
+
154
+ **Счётчик непрочитанных приходит пропом**, а не считается по строкам: список
155
+ бывает страницей коллекции, и «3» вместо «300» — неправда.
156
+ На экране `Badge` обрезает большое число до «99+», но имя для скринридера остаётся
157
+ точным.
158
+
159
+ ## Непрочитанное слышно, а не только видно
160
+
161
+ Точка и подложка — сигнал для глаз. Рядом с заголовком непрочитанного события
162
+ встаёт слово из каталога сообщений: без него человек, который цвета не видит, не
163
+ отличит новое событие от старого вовсе. Сама точка `aria-hidden` — иначе
164
+ скринридер объявил бы безымянный узел рядом со словом.
165
+
166
+ ## Группы приходят готовыми
167
+
168
+ Что такое «вчера», знает локаль и часовой пояс потребителя: у приложения с
169
+ ночными сменами граница суток своя, и считать её в ките значило бы навязать
170
+ чужой календарь.
171
+
172
+ Группа объявляется **группой с подписью** (`role="group"`), а не заголовком.
173
+ Уровень заголовка (`h2`, `h3`) зависит от того, куда встал список (в поповер, в
174
+ ящик или на страницу), и кит этого не знает. Группа сообщает структуру, не
175
+ занимая уровня.
176
+
177
+ ## Строка ничего не решает сама
178
+
179
+ Она не навигирует и не отмечает себя прочитанной: и переход, и отметка — действия
180
+ приложения. Приложение передаёт их в `actions` или `onAction` (вся строка — кнопка) либо
181
+ оборачивает строку снаружи.
182
+
183
+ Время приходит **уже отформатированным**: «5 минут назад» и «вчера в 14:03» собирает
184
+ приложение через `Intl.RelativeTimeFormat` с часовым поясом потребителя.
185
+
186
+ ## Антипаттерны
187
+
188
+ - Заводить `type: "publication_failed"` вместо `icon` и `tone`: доменные типы
189
+ событий в кит не переезжают.
190
+ - Отмечать непрочитанное только цветом.
191
+ - Считать группировку внутри компонента.
192
+ - Считать счётчик непрочитанных по видимым строкам.
193
+ - Заворачивать центр в свой поповер внутри кита: контейнер выбирает потребитель.
194
+ - Передавать `onAction` вместе с `actions`: типы запрещают, а на JS победит `actions`
195
+ (и в разработке консоль предупредит).
196
+ - Класть в `media` или `title` строки-кнопки интерактивные элементы: они окажутся
197
+ внутри кнопки.
198
+ - Давать поповеру `aria-label` рядом с настоящим заголовком вместо `titleId`: имя
199
+ разойдётся с видимым заголовком при правке.
200
+
201
+ ## Связанные исходники и проверка
202
+
203
+ - Исходник: `src/components/content/NotificationList.tsx`
204
+ - Тесты: `tests/notification-list.test.tsx`
205
+ - Витрина: `src/components/content/NotificationList.stories.tsx`, `src/components/content/NotificationCenter.stories.tsx`
206
+ - Тесты центра: `tests/notification-center.test.tsx`
207
+ - Решение: ADR-0027
@@ -0,0 +1,325 @@
1
+ ---
2
+ component: RichTextView
3
+ exports:
4
+ [
5
+ RichTextView,
6
+ RichTextViewProps,
7
+ sanitizeRichText,
8
+ RichTextPurifier,
9
+ RichTextAttributeHookEvent,
10
+ richTextSanitizeConfig,
11
+ RichTextSanitizeConfig,
12
+ richTextSchema,
13
+ RichTextSchema,
14
+ RichTextCustomBlockRules,
15
+ RichTextCustomMarkRules,
16
+ highlightCodeBlocks,
17
+ ]
18
+ category: content
19
+ status: stable
20
+ source: src/editor/RichTextView.tsx
21
+ story: src/editor/RichTextView.stories.tsx
22
+ sourceHash: 167024d9709e
23
+ ---
24
+
25
+ # RichTextView
26
+
27
+ ## Summary for AI
28
+
29
+ `RichTextView` shows the saved HTML of `RichTextEditor` with the same typography as inside the Editor. **There is no engine**: neither Tiptap nor lowlight is in the module graph, so the component renders in a server component and does not contain `"use client"` itself. The graph has two client parts, both Islands: the "Copy" button on code blocks and (only with the `tools` prop and a custom Block in the Document) the Island of a custom Block (section "Custom Block's Island"). **It does not sanitize HTML**: `html` must arrive from the server already sanitized against the Schema allowlist — `sanitizeRichText(html, DOMPurify)` from `@olddevs/ui/editor/schema` (section "Sanitization on the consumer's server"). It lives in the `@olddevs/ui/editor` entry point, not in the barrel. **It does not highlight code blocks itself**: the server highlights the HTML with `highlightCodeBlocks(html)` from `@olddevs/ui/editor/highlight` after sanitizing, and `RichTextView` colors the finished tokens with the GitHub Light/Dark theme. Every code block has a header with the language on the left and a "Copy" button on the right (section "The "Copy" button and the header").
30
+
31
+ ```tsx
32
+ import { RichTextView } from "@olddevs/ui/editor";
33
+ ```
34
+
35
+ ## When to use
36
+
37
+ - The page shows a Document saved by `RichTextEditor`: an article, a description, a policy.
38
+ - You need the component in a server component, or where pulling in Tiptap just to read is not acceptable.
39
+
40
+ ## When not to use
41
+
42
+ - The HTML came from a user and the server has not sanitized it — sanitize first (section "Sanitization on the consumer's server"), then show. The component puts everything it receives into the page.
43
+ - For editing, use `RichTextEditor`. Its `readOnly` keeps the engine alive for text that does not change; for a page that only displays the Document, use `RichTextView`.
44
+ - Arbitrary HTML outside the Schema (`style` other than the author's color, `thead`, `caption`, images without `figure`): the typography is built for the Schema's tags, and anything else looks like the browser default.
45
+ - For short single-line text, use `Text`.
46
+
47
+ ## Minimal example
48
+
49
+ In Next.js, the `@olddevs/ui/editor` entry point must be listed in `optimizePackageImports` on its own line ([getting-started.md](../../getting-started.md#пакет-в-серверных-компонентах)): otherwise the whole Editor with its engine ships to the browser along with the View — 435 kB of `First Load JS` instead of 137 kB.
50
+
51
+ ```tsx
52
+ // Server component: no directive needed.
53
+ import { RichTextView } from "@olddevs/ui/editor";
54
+
55
+ export default async function ArticlePage({ id }: { id: string }) {
56
+ const article = await loadArticle(id); // article.html was sanitized on save
57
+ return <RichTextView html={article.html} className="max-w-prose" />;
58
+ }
59
+ ```
60
+
61
+ ## Public API
62
+
63
+ - `html` — the saved Document, an HTML string. **Not sanitized**: it goes into the markup through `dangerouslySetInnerHTML` as is. An empty string renders an empty container.
64
+ - `className` — added **after** the typography classes and can override them.
65
+ - `surface` — `"theme"` (default) or `"paper"`: Paper, a light area in any theme, see "Surface". The type is `RichTextSurface`.
66
+ - `tools` — the Document's own Tools, the same array as for `RichTextEditor` and `sanitizeRichText`. The View reads only the Islands of custom Blocks from it (`blocks[name].island`, type `CustomIslandProps`); without `tools` the View stays as before (section "Custom Block's Island").
67
+ - Everything else is regular `div` props: `id`, `aria-*`, `data-*`, `ref`. `children` and `dangerouslySetInnerHTML` are not accepted.
68
+ - `highlightCodeBlocks(html)` — server-side highlighting of code blocks, the `@olddevs/ui/editor/highlight` entry point (section "Code block highlighting"). `RichTextView` has no prop for this, on purpose.
69
+ - `sanitizeRichText(html, purify, tools?)` — sanitizes HTML against the Schema with a DOMPurify instance supplied by the consumer; installs the Schema hooks for the duration of the call. The instance type is the structural `RichTextPurifier` (the hook event is `RichTextAttributeHookEvent`). The third argument is the same `tools` array as the Editor's: with it, custom Blocks and Marks are allowed through under their own rules (section "Custom Tools: the third argument"); without it, sanitizing works as before. This is the safe default path (section "Sanitization on the consumer's server").
70
+ - `richTextSchema(tools?)` — the Schema as data for a set of `tools`: the `RICH_TEXT_SCHEMA` fields plus `customBlocks` and `customMarks` — the rules of custom Blocks and Marks (`RichTextCustomBlockRules`, `RichTextCustomMarkRules`). The type is `RichTextSchema`. The `RICH_TEXT_SCHEMA` constant itself is still the kit's Schema.
71
+ - `richTextSanitizeConfig()` — a restrictive sanitizing config for DOMPurify without hooks: safe on its own, but it loses part of the Editor's markup. The type is `RichTextSanitizeConfig`.
72
+ - `sanitizeRichText`, `richTextSchema` and `richTextSanitizeConfig` are data and functions only, with no dependencies; they are safe in a server module. The lightweight entry point is `@olddevs/ui/editor/schema`; they are also available from `@olddevs/ui/editor`.
73
+
74
+ The typography comes from the same `src/editor/styles/prose.ts` module that attaches classes to the Editor's content, so text looks the same in the Editor and on the page. The classes sit on the container and find tags by name, so the Document's HTML has no classes or `style`. Colors come from the kit's tokens, and the `dark`, `light` and `dim` themes switch on their own. A separate Tailwind `@source` is not needed: the line from [getting-started.md](../../getting-started.md) covers the classes.
75
+
76
+ ## Paper: `surface`
77
+
78
+ `surface="paper"` is Paper, a light area in any app theme, like [`RichTextEditor`](../inputs/rich-text-editor.md#лист-surface): text, links, palettes, markers, tables, captions and code blocks (GitHub Light) look as in the light theme, and Paper is set off from the page by the app theme's border and shadow. By default (`"theme"`) the Document follows the app theme and does not set a background.
79
+
80
+ ```tsx
81
+ <RichTextView html={cleanHtml} surface="paper" />
82
+ ```
83
+
84
+ **When to use Paper:** a print or PDF preview, displaying an email or a document that will leave the app in its light look. A Document that is only read inside the app stays on `"theme"`. Everything around Paper — page headings, buttons, menus — stays in the app theme: Paper covers only the `RichTextView` container.
85
+
86
+ The component stays a server component: Paper is classes and attributes on the container (`data-theme="light"`, `data-surface="paper"`), with no `style` and no client code. The same Document on the Paper looks identical in the Editor and here — a test checks this.
87
+
88
+ ## Schema and security
89
+
90
+ The Schema is the only source of the Editor's allowed markup: the Editor drops everything that is not in it, both on load and on paste. `RichTextView` does **not check** the Schema: it shows HTML without parsing it.
91
+
92
+ The allowlist of tags and attributes (the table mirrors `src/editor/core/schema.ts` and is checked by a test; the list grows with the set of Blocks and Marks):
93
+
94
+ <!-- allow-list -->
95
+
96
+ | What | Allowed |
97
+ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
98
+ | Blocks | `p`, `h1`, `h2`, `h3`, `h4`, `ul`, `ol`, `li`, `blockquote`, `hr`, `pre`, `table`, `tbody`, `tr`, `th`, `td`; `label`, `input`, `span` — only inside a checklist item; `div` — there too, plus the Layout and its columns (a Layout only at the top level, a column only directly inside it) and the Wrapper (at the top level and directly in a column, not in another Wrapper); `figure` — an image, with `img` and an optional `figcaption` inside (they do not exist outside `figure`) |
99
+ | Marks | `strong`, `em`, `u`, `s`, `code`, `sup`, `sub`, `mark` (only with a color), `br`, `a` |
100
+ | Attributes | `ol[start]` — only when numbering does not start at 1; `ul[data-type]`, `li[data-type]`, `li[data-checked]` — checklist; `input[type]`, `input[checked]` — its checkbox; `code[class]` — the code block language, only "language-python", "language-typescript", "language-javascript", "language-go", "language-html", "language-json", "language-yaml" or "language-markdown" (no language, no class); `span[data-color]`, `mark[data-color]` — text color and marker, only names from that tag's palette: text colors on `span`, markers on `mark`; `span[style]`, `mark[style]` — the author's custom color, only "color:#rrggbb" and "background-color:#rrggbb", and not together with "data-color"; `p[data-align]`, `h1[data-align]`, `h2[data-align]`, `h3[data-align]`, `h4[data-align]` — Block alignment, center or right; `th[colspan]`, `td[colspan]` — horizontal merge, an integer from 2 to 20; `th[rowspan]`, `td[rowspan]` — vertical, from 2 to 50; `th[data-align]`, `td[data-align]` — column alignment, center or right, on each of its cells; `a[href]` — only "http", "https" or "mailto"; `a[rel]` — always "noopener noreferrer"; `img[src]` — only absolute "http" or "https", no "data:" or "blob:"; `img[alt]` — always, empty for an image without a description; `img[data-width]` — 50, 75 or 100; `div[data-block]` — the Layout ("layout"), its column ("column") and the Wrapper ("wrapper"); `div[data-layout]` — the Layout variant, column shares in percent: "100", "50-50", "33-33-33", "25-25-25-25", "60-40" or "40-60"; `div[data-tone]` — the Wrapper tone, only on it: "neutral", "accent", "success", "warning" or "danger" (no tone, no attribute) |
101
+
102
+ Tiptap writes a checklist item like this: `<li data-type="taskItem" data-checked="true"><label><input type="checkbox" checked><span></span></label><div><p>…</p></div></li>`. `sanitizeRichText` lets `input`, `label`, `span` and `div` through only inside such an item, and `input` only with `type="checkbox"`.
103
+
104
+ The Editor writes a table like this: `<table><tbody><tr><th><p>…</p></th></tr><tr><td colspan="2" data-align="center"><p>…</p></td></tr></tbody></table>`. The header row is the first row made of `th`, and a cell has only three attributes: `colspan` and `rowspan` (merging, an integer from 2 to `RICH_TEXT_SCHEMA.tableSpans`: 20 horizontally and 50 vertically; 1 is not written) and `data-align` (column alignment, `center` or `right`, on every cell of the column). A row fully covered by a merge from above stays an empty `<tr></tr>`. `thead`, `tfoot`, `colgroup` and `caption` are not in the Schema, and **by default DOMPurify removes the contents of `thead` and `colgroup` along with the tags**: the header of a third-party table written in `thead` disappears. The Editor does not write `thead`, so for its HTML this is no loss. `tbody`, `tr`, `th` and `td` outside a table are dropped by the HTML parser before sanitizing (the text stays), `style` and `colwidth` are not allowed through, and `colspan` and `rowspan` are let through only by the `sanitizeRichText` hook: on `th` and `td`, and only as digits within the Schema's limits; the bare config does not know them at all. Without such a check, `colspan="10000"` in third-party HTML would expand into 10,000 empty cells for everyone who opens the Document.
105
+
106
+ There are no other classes, `style` (except the custom color, see below), `aria-*` or `data-*` (except eight Schema names: `data-type` and `data-checked` of the checklist, `data-color` for color, `data-align` for alignment, `data-width` for image width, `data-block` and `data-layout` of the Layout, and `data-tone` of the Wrapper) in the output HTML. An `h1` appears in a Document only if the Editor has the `heading1` Tool (on by default in `full`); a screen that puts an H1 above the Editor turns this Tool off.
107
+
108
+ **An image** is written by the Editor like this: `<figure><img src="https://…" alt="…" data-width="50"><figcaption>…</figcaption></figure>`. `figcaption` is present only when the caption is not empty, `data-width` only on an image with a set width (`50`, `75` or `100` percent of the Document width, `RICH_TEXT_SCHEMA.imageWidths`; without it, the image keeps its own size, no wider than the Document), and `alt` is always present and empty for an image without a description. The URL must be an absolute `http` or `https` URL (`RICH_TEXT_SCHEMA.imageProtocols`): the Editor never writes `data:` (base64) or `blob:`, and an image never has `style`, `width`, `height` or `class` — neither on `img` nor on `figure`. The Editor does not output a bare `<img>` outside `figure`; `sanitizeRichText` removes it.
109
+
110
+ **Color and alignment are names, not CSS values.** `data-color` accepts only the names of the Editor's palette, and there are two palettes, one per tag. On `span` (text color): `accent`, `success`, `warning`, `danger`, `lime`, `muted` (`RICH_TEXT_SCHEMA.textColors`); on `mark` (marker): `gray`, `brown`, `orange`, `yellow`, `green`, `blue`, `purple`, `pink`, `red` (`RICH_TEXT_SCHEMA.markerColors`). The Editor menu offers the bright `yellow`, `green` and `pink`; the other six stay readable and are still rendered with their previous values. A name from another tag's palette is not allowed on a tag. Documents saved before the marker palette contain six old names on `mark`; they are converted (`RICH_TEXT_SCHEMA.legacyMarkerColors`, the table is in the [Editor documentation](../inputs/rich-text-editor.md#цвет-маркер-и-выравнивание)): `sanitizeRichText` does this with a hook, and `RichTextView` itself renders an old name in the color it is converted to. `data-align` is `center` or `right` (the Editor does not write `left` and reads it as the absence of the attribute; `RICH_TEXT_SCHEMA.alignments`). The theme supplies the concrete colors, so the same saved text stays legible in `dark`, `light` and `dim`: `RichTextView` and the Editor style `data-color` with the same classes (`prose.ts`). DOMPurify does not check attribute values — the `sanitizeRichText` hooks do.
111
+
112
+ **The order of Marks on a marker.** The Editor writes the marker as the outermost Mark after the text color (`<span data-color><mark><sup>…`), so the highlight does not shift on superscripts and does not break on a link. `RichTextView` does not rebuild the HTML: a Document saved earlier as `<sup><mark>…</mark></sup>` is shown in the old order, and the part of the marker on the superscript rises with it. The order is corrected when the Document is opened and saved in the Editor.
113
+
114
+ **A custom color is the only exception to "there is no `style`".** Besides the palette colors, the author can pick any color in `ColorPicker` ("Custom color…" in the Editor's color menu). Such a color has no name, and HTML stores its value in `style`, so it is written into the Document strictly like this: `<span style="color:#ff0000">` for text and `<mark style="background-color:#ffee00">` for a marker. The rule is narrow and is recorded in the Schema (`RICH_TEXT_SCHEMA.customColor.styles`, regular expressions as strings): lowercase letters, exactly six digits, no spaces and no `;`, one declaration per tag, and never together with `data-color` on the same element. The Editor drops any other `style` (`#f00`, `rgb(…)`, `red`, a second declaration next to it, `style` on another tag) on load and paste, and `sanitizeRichText` strips it the same way: the hook checks the tag and the value against the same expressions. The bare `richTextSanitizeConfig()` has no `style` at all: DOMPurify's `ALLOWED_ATTR` is shared by all tags, and without a hook it would let any CSS through.
115
+
116
+ **The author's color does not change with the theme.** Palette colors are tokens, and one saved text stays legible in `dark`, `light` and `dim`. `#ff0000` is a value: it is the same in every theme, and a color-and-background pair may lose contrast where the author never saw it. The Editor warns about this on selection (4.5:1 contrast with the current theme's background; for a marker, the body text on it is checked), but it does not forbid it and does not recompute the color when the theme changes. If a Document is shown in several themes, use the palette.
117
+
118
+ The Editor writes a link like this: `<a href="https://…" rel="noopener noreferrer">…</a>`. The URL must be absolute and use the `http`, `https` or `mailto` scheme: the Editor does not accept relative URLs or other schemes (`javascript:`, `data:`, `ftp:`) from `value` or from paste. It does not write `target`: whether to open links in a new tab is decided by the page that displays the Document, not by the Document.
119
+
120
+ ### Sanitization on the consumer's server
121
+
122
+ Client-side sanitizing does not protect against XSS: a request that bypasses the interface can carry anything. Sanitize HTML **on the server on save** (and ideally on output too, if the database holds old records). DOMPurify is not among the kit's dependencies — you install it yourself, and the kit provides the Schema's policy through the `sanitizeRichText` helper:
123
+
124
+ ```bash
125
+ npm install dompurify jsdom # or isomorphic-dompurify
126
+ ```
127
+
128
+ ```ts
129
+ import { JSDOM } from "jsdom";
130
+ import createDOMPurify from "dompurify";
131
+ import { sanitizeRichText } from "@olddevs/ui/editor/schema";
132
+
133
+ const DOMPurify = createDOMPurify(new JSDOM("").window);
134
+
135
+ export function sanitizeDocument(html: string): string {
136
+ return sanitizeRichText(html, DOMPurify);
137
+ }
138
+ ```
139
+
140
+ `sanitizeRichText(html, purify)` takes a DOMPurify instance as an argument — the kit does not import it, the instance type is structural (`RichTextPurifier`), and `dompurify` with jsdom or `isomorphic-dompurify` fit without casts. For the duration of one call, the helper installs the Schema hooks on the instance and removes them when the call returns: you use one instance for everything (comments, emails), so the Editor's rules do not fire when other code sanitizes with that instance, and your hooks stay in place. The Editor's markup comes through **byte for byte**; the hooks strip everything else: the text from a stripped tag stays, as in the Editor. What they check:
141
+
142
+ - `label`, `input`, `span` and `div` — only the markup of a checklist item; `input` — only `type="checkbox"`; `ul[data-type]`, `li[data-type]`, `li[data-checked]` — only the checklist values;
143
+ - `ol[start]` — only on `ol`;
144
+ - `code[class]` — only the canonical `language-<name>` from `RICH_TEXT_SCHEMA.codeLanguages`: an alias (`language-py`), an unknown language, a second class and a class on another tag are stripped, and so are `hljs-*` tokens;
145
+ - `span[data-color]` and `mark[data-color]` — only names from that tag's palette; old marker names are converted (`legacyMarkerColors`); a `mark` without a color is stripped;
146
+ - `style` — only `color:#rrggbb` on `span` and `background-color:#rrggbb` on `mark` (`RICH_TEXT_SCHEMA.customColor.styles`), and never together with `data-color`;
147
+ - `data-align` — `center` or `right` on `p`, `h1`–`h4`, `th`, `td`;
148
+ - `colspan` and `rowspan` — only on `th` and `td`, an integer no greater than `RICH_TEXT_SCHEMA.tableSpans`;
149
+ - a link — `href` only `http`, `https` or `mailto`, `rel` always `noopener noreferrer`, an unexpected `target` is stripped, a link without a valid URL becomes text;
150
+ - an image — `img` with an absolute `http`/`https` directly inside `figure` (no `data:` or `blob:`), `data-width` is a preset, `alt` is always present; an `img` outside `figure` is removed, and a `figcaption` outside `figure` loses its tag.
151
+
152
+ Checked with the real DOMPurify 3.4.16 on jsdom in `tests/editor-sanitize.test.tsx`: a Document with every Block and Mark of the Editor comes through unchanged, while forged input is stripped — Tailwind classes (`class="fixed inset-0"`), `style` on `p`, a `data:` image, a `javascript:` link, a name from another palette, a `label` outside an item, `colspan="10000"` and others.
153
+
154
+ #### Custom Tools: the third argument
155
+
156
+ If the Editor works with custom Tools ([RichTextEditor, "Custom Tool"](../inputs/rich-text-editor.md#свой-инструмент)), the server passes **the same `tools` array** to `sanitizeRichText`. The description of a custom Tool is data, and the module with it is imported on the server: sanitizing reads only the Schema rules (`blocks`, `marks`) and does not touch the Engine part. To keep Tiptap out of the server graph too, keep the description in a module with no extension imports — the Engine part is then supplied by a Loader ([RichTextEditor, "Engine part Loader"](../inputs/rich-text-editor.md#загрузчик-части-для-движка)) or built next to the Editor.
157
+
158
+ ```ts
159
+ import { sanitizeRichText } from "@olddevs/ui/editor/schema";
160
+ import { EDITOR_TOOLS } from "./editor-tools"; // the same array as in the Editor's `tools`
161
+
162
+ export function sanitizeDocument(html: string): string {
163
+ return sanitizeRichText(html, DOMPurify, EDITOR_TOOLS);
164
+ }
165
+ ```
166
+
167
+ - **A custom Block** comes through as `div[data-block="<name>"]`, an inline Atom as `span[data-block="<name>"]`, a custom Mark as `span[data-mark="<name>"]`. A Block of the wrong kind (an Atom in a `div`, a block-level Block in a `span`) and an unknown name lose their tag; the text stays.
168
+ - **Custom attributes** `data-<name>` — only on their own element and only with a value that follows the rule: from a list, matching a pattern, or a URL that follows the link policy (absolute `http`, `https`, `mailto`). A value with markup (`<`) is never allowed through. An invalid value is stripped together with the attribute, and the element itself stays — the Editor does the same.
169
+ - **Anything extra on a custom Block's element** — `class`, `style`, `data-color`, handlers, an attribute of another Block — are stripped.
170
+ - **The `top` slot** — only the Document's top level: a nested Block (in a quote, a Wrapper, another Block) loses its tag, like a Layout.
171
+ - **Names of the kit's Tools do not narrow the allowlist.** `["bold", acmeCard]` sanitizes the same as `[...RICH_TEXT_PRESETS.full, acmeCard]`: screens with different sets write one Document, and the server must not strip a table that a `full` screen wrote. The server ignores rules with a name that lacks a Consumer prefix: the Editor rejects such a set with a field error, and on the server it must not create a way around the kit's rules.
172
+ - **Without the third argument** sanitizing is the same as before custom Tools: custom Blocks are stripped like any other third-party HTML.
173
+
174
+ `richTextSchema(tools)` returns the same rules as data — for your own sanitizer or a check on the database side: `customBlocks` (kind, slot, attributes — with defaults filled in) and `customMarks`. There are no Block traits (`container`, `turnInto`, `plainAtom`) in it: that is the Editor's behavior, not what arrives in HTML. Checked in `tests/editor-sanitize-tools.test.tsx`: an Editor Document with custom Blocks, Atom and Mark comes through sanitizing byte for byte, and forged input is stripped the same way the Editor strips it.
175
+
176
+ **`richTextSanitizeConfig()` is restrictive by default.** This is a config for anyone who passes it to DOMPurify directly, without hooks. DOMPurify's shared `ALLOWED_ATTR` (one list for all tags, and it does not check values) includes only what is harmless on any tag and with any value: `data-type`, `data-checked`, `data-color`, `data-align`, `data-width`, `data-block`, `data-layout`, `data-tone`, `start`, `alt`, `rel` and `href`. `style`, `class`, `src`, `colspan`, `rowspan`, `type`, `checked` and the `input` and `img` tags are allowed only by `sanitizeRichText`, after checking the tag and the value: without a check they would let through any CSS and class, a base64 image and 10,000 empty cells. The bare config is therefore safe, but it loses part of the Editor's markup — the author's color, the code block language, cell merging, checkboxes and images. `ALLOW_DATA_ATTR` and `ALLOW_ARIA_ATTR` are off: by default DOMPurify lets any `data-*` and `aria-*` through. Every call returns new arrays.
177
+
178
+ The config checks the link URL itself: `ALLOWED_URI_REGEXP` lets only `http:`, `https:` and `mailto:` through — the same policy as the Editor. DOMPurify checks every allowed attribute against this expression except the "URI-safe" ones, and a strict expression would strip `start="3"` or `data-color="danger"`; so the config declares all attributes except URLs safe (`ADD_URI_SAFE_ATTR`). An image URL cannot be restricted by the expression: DOMPurify lets `data:` in the `src` of an `<img>` through, bypassing `ALLOWED_URI_REGEXP` — so `src` is allowed only by the hook.
179
+
180
+ The sanitizing helpers and the Schema come from the separate lightweight entry point `@olddevs/ui/editor/schema`: it holds the Schema as data (`RICH_TEXT_SCHEMA`, `richTextSchema`), `sanitizeRichText`, `richTextSanitizeConfig()`, their types and the Text card helper `markRange` for describing a custom Tool. It has no React and no Tiptap, so a server without the Editor does not need to install the engine. `@olddevs/ui/editor` still exports the same names, but on a server without a bundler this entry point would load the whole Editor with its engine.
181
+
182
+ ## Code block highlighting
183
+
184
+ In a Document, a code block carries only the language — `<pre><code class="language-python">…</code></pre>`; there are no highlight tokens in it (ADR-0051). A server helper highlights the saved HTML:
185
+
186
+ ```tsx
187
+ // Server component.
188
+ import { RichTextView } from "@olddevs/ui/editor";
189
+ import { highlightCodeBlocks } from "@olddevs/ui/editor/highlight";
190
+
191
+ export default async function ArticlePage({ id }: { id: string }) {
192
+ const article = await loadArticle(id); // article.html was sanitized on save
193
+ return <RichTextView html={highlightCodeBlocks(article.html)} />;
194
+ }
195
+ ```
196
+
197
+ - **What it does.** In every `<pre><code class="language-…">` in a language the Editor supports (`RICH_TEXT_SCHEMA.codeLanguages`, aliases too), the text is replaced with `<span class="hljs-…">` tokens, parsed by lowlight with the same grammar as in the Editor, and the Block's class is written with the Schema's canonical name: `language-py` and `language-PY` come out as `language-python`, `language-js` as `language-javascript`. The rest of the HTML does not change by a single byte. A Block with no language, with an unknown language, and a Block that already has markup inside stay as they were — so a repeated call changes nothing.
198
+ - **Escaping.** The helper does not parse HTML; it finds Blocks with an expression: inside a Block the Schema allows only text. Entities in the text are decoded (`&lt;`, `&amp;`, `&quot;`, `&#39;`, `&nbsp;`, numeric ones), and the text is escaped again after highlighting: `<script>` in code stays the text `&lt;script&gt;`. A Block with another named entity (`&copy;`) is not highlighted — better without color than with different text. The output has only `span` with `class="hljs-…"`, with no `style`.
199
+ - **The order is sanitize, then highlight.** The helper is built for the Schema's markup that the sanitizer returns, and there are no `hljs-*` tokens in the Schema — `sanitizeRichText` strips them. Highlight after sanitizing: when serving the page, or right after sanitizing on save. If highlighted HTML sits in the database, repeated sanitizing on output returns the Block to bare text, and `highlightCodeBlocks` highlights it again; the Editor, given such HTML in `value`, drops the tokens itself.
200
+ - **Theme.** Token colors are GitHub Light in the `light` theme and GitHub Dark in `dark` and `dim`, as in the Editor: the `.hljs-*` rules are classes on the `RichTextView` container (`src/editor/styles/codeTheme.ts`), and the colors are variables in `styles.css` on elements with `data-theme`. A code block takes the theme of the nearest ancestor with `data-theme`, so `RichTextView` inside a nested `data-theme="light"` within a dark app shows GitHub Light. Neither `style` nor separate CSS is needed.
201
+ - **Cost.** The `@olddevs/ui/editor/highlight` entry point consists of the helper, lowlight, the highlight.js core and eight grammars, and weighs 22.6 kB gzip; Tiptap is not in its graph, and Node loads it without a bundler. Of the kit's peer dependencies, only `react` is in the graph: the entry point's second helper, `highlightCodeNodes` for [`CodeView`](code-view.md#подсветка-кита) (ADR-0052) needs it. `RichTextView` does not import it and stays at 12.0 kB gzip (with the "Copy" Island), which is why highlighting is not a component prop: a flag would not remove the highlighter from the graph, yet every render would pay for it. For the entry point, install only `lowlight` and `highlight.js` (Editor engine packages, not in the kit's manifest).
202
+
203
+ ## The "Copy" button and the header
204
+
205
+ **Every** `pre > code` Block has a header above the code: the language name on the left and a "Copy" button on the right — the kit's `CopyButton` with the tooltip "Copy code" → "Copied". The button is always there, and there is no prop to turn it off (the owner's decision): the header is part of the Block's look, and in the Editor it is the same ([RichTextEditor](../inputs/rich-text-editor.md#блок-кода)). Both parts are visible without hover, on desktop and on touch screens; the code starts below the header, and the button does not cover it.
206
+
207
+ **How it works and why the component stays a server component.** `RichTextView` gets no handlers and no state — it is still just a string turned into markup:
208
+
209
+ 1. Next to `dangerouslySetInnerHTML`, it wraps every `<pre><code>` Block in a header **string to string** (`withCodeHeaders`, `src/editor/features/code/codeHeader.ts`): the header consists of the language label (taken from the Editor's language list by the normalized name; the class from the Document does not reach the markup: `language-py` yields "Python", `language-rust` yields an empty label) and an empty Mount point for the button. This is the component's own markup, built **after** sanitizing, so there is nothing for the sanitizer to allow.
210
+ 2. If the Document has at least one code block, the component renders the `CodeCopyIsland` Island next to the container (`src/editor/features/code/CodeCopyIsland.tsx`, with its own `"use client"`). A Document without code has no Island at all: no markup, no effect. After mounting, the Island finds the Mount points of **its own** View and inserts a `CodeCopyButton` into each through a portal. On the server and during hydration, the Island renders only an empty inert anchor `<template>` that marks the Island's place. There are no portals yet, so the server markup and the first client pass match, and a page without JS reads the same: the language label and the code are in place, the button is not.
211
+ 3. The Island is linked to the Mount points by its place in the tree. The container cannot be passed as a ref: a server component has none. So the Island takes the sibling to the left of its anchor `<template>`, that is, the container of its own View, and looks for Mount points only in it, not through the global `document`: a View in a shadow root or an `iframe` gets its buttons the same way, and the search does not walk the whole page. A Mount point is additionally matched against the View's `useId` identifier (the View has two hooks, `useId` and `useMemo`, and both are allowed in server components). A short HTML fingerprint tells the Island that the Document changed, and then it looks for Mount points again. Two Views on a page do not mix up their buttons.
212
+
213
+ The client boundary runs along the Island's file, not `RichTextView`: `tests/rich-text-view.test.tsx` requires two such files in the graph, `CodeCopyIsland.tsx` and `ui/BlockIsland.tsx` (and what they pull in — the kit's button and tooltip, `react-dom`, icons and the message catalog), and still forbids `@tiptap/*`, `lowlight` and `highlight.js`; `tests/rsc-gate.test.ts` checks that `RichTextView.tsx` itself has no directive. The Island works in a Next.js server component without a wrapper.
214
+
215
+ **What gets copied.** The `textContent` of the `code` element — the source code as a string. For a Block without highlighting and for HTML after `highlightCodeBlocks` it is the same text: `span` tokens add no text. This is the rule of ADR-0039: text is copied, not the DOM — otherwise the highlight token boundaries would end up in the clipboard. If the clipboard refuses, the button shows it ("Could not copy").
216
+
217
+ **A Block without a language has no label.** There is no label because the "Plain text" string comes from the message catalog, and a server component does not have one; an English label for a consumer whose UI is in Russian would be a mistake. The header of such a Block is a single button on the right; in the Editor, in `readOnly` and `disabled` modes, it is the same.
218
+
219
+ **Keyboard.** The button is in the regular Tab order: it is the only keyboard path here. The tooltip shows on focus and hover, and `Enter` and `Space` copy.
220
+
221
+ **Cost.** The Island pulls in the kit's button and tooltip, `react-dom` for the portal, and `react-aria-components` for `useLocale` in the message catalog; `@radix-ui/react-tooltip` and `lucide-react` are the kit's required peer dependencies, so no new ones need installing. The `editorView` measurement (`RichTextView` from `@olddevs/ui/editor`, the engine included in the measurement) grew from 1.7 to 8.4 kB gzip on the first measurement: this is the cost of the Island, not of the typography. Since then the View and the shared message catalog have grown, and the measurement is now 12.0 kB against a 12.3 kB budget (ADR-0030). The measurement is static (the entry point's module graph), so the fact that a Document without code blocks does not render the Island does not change the numbers: the Island's file stays in the graph. The savings are on the client: no anchor `<template>` in the markup, no effect, no container walk. The same is true for Next.js: a page's client graph is built from imports, not from what is rendered.
222
+
223
+ ## Tables
224
+
225
+ The Editor writes `table > tbody > tr > th|td`; a cell has only merging (`colspan`, `rowspan`) and column alignment (`data-align`), see the section "Tables" of the [RichTextEditor](../inputs/rich-text-editor.md#таблицы) page. The styling (borders, cell padding, the header row's backing, cell text alignment by `data-align`) comes from `prose.ts` on the container, so in the Editor and in `RichTextView` a table looks the same. A merged cell is an ordinary cell of a browser table with `colspan`/`rowspan`, with no style of its own.
226
+
227
+ **On a narrow screen, scrolling happens on the `<table>` itself.** `display: block; max-width: 100%; overflow-x: auto`: a table wider than the block scrolls inside itself and does not stretch the page, the minimum column width is 6 rem (`min-w-24`), so a five-column table on a 375 px screen scrolls instead of squeezing into narrow columns. There is no container around the table, on purpose: `RichTextView` puts the saved HTML in as is, and the Schema knows neither a `div` around the table nor `tabindex`.
228
+
229
+ The cost of this choice:
230
+
231
+ - **Table semantics.** On a `table` with `display: block`, some screen readers lose rows and columns. This was fixed long ago in Chrome and Firefox; in Safari with VoiceOver it depends on the version; check with a manual run on your versions. The alternative — `table-layout: fixed` without scrolling — keeps the semantics, but makes all columns equal and narrow and breaks long words, which is worse on a phone.
232
+ - **Focus on a scrollable region.** The axe rule `scrollable-region-focusable` requires that a scrollable block be reachable from the keyboard. In the Editor every cell has a caret, but `RichTextView` has no focusable content: the rule fires on a table that is wider than the screen. This can be fixed only with a container that has `tabindex="0"`, and such a container cannot be put into the saved HTML. If such tables occur on your screen, wrap `RichTextView` in your own container with `overflow-x: auto` and `tabindex="0"`, or keep tables narrow.
233
+
234
+ ## Layout
235
+
236
+ The Editor's Layout (`div[data-block="layout"]` with the variant in `data-layout` and columns `div[data-block="column"]`, section "Layout" of the [RichTextEditor](../inputs/rich-text-editor.md#раскладка) page) is laid out on the same grid as in the Editor, by `prose.ts` classes on the container, with no `style` in the markup. Columns have no borders: the dashed outline is a cue for the author in the Editor, and the reader needs no boundary. Columns sit side by side when the Document itself is wide (two from 30 rem, three from 40 rem, four from 48 rem), and in a single column in reading order, left to right, when it is narrower. The threshold is a container query on the Document's width: the `RichTextView` root with a Layout becomes a container (`container-type: inline-size`), so in a shrinking context (a flex row item with no width) give it a width. On Paper it is the same grid.
237
+
238
+ `sanitizeRichText` keeps a Layout where the Editor writes it: only at the top level, with a variant from `RICH_TEXT_SCHEMA.layouts`, and columns only directly inside it; otherwise the wrappers are stripped and the Blocks stay one after another.
239
+
240
+ ## Wrapper
241
+
242
+ The Editor's Wrapper (`div[data-block="wrapper"]` with Blocks inside, section "Wrapper" of the [RichTextEditor](../inputs/rich-text-editor.md#обёртка) page) without a tone is invisible when displayed: there is no border, the spacing between its Blocks is the same as between the Document's Blocks, and the text reads as if there were no Wrapper. The dashed outline is a cue for the author in the Editor. The Wrapper has no ARIA role.
243
+
244
+ **A Wrapper with a tone** (`data-tone`: `accent`, `success`, `neutral`, `warning` or `danger`) is visible to the reader too — **in the same look as in the Editor**: a soft tone backing and a 3 px stripe on the left, the text is ordinary Document text, with inner padding like `Alert`. The colors are the `--rte-tone-*` roles of the `prose.ts` classes, with no `style` in the markup; on the Paper they are the light theme's values. The tone adds no ARIA role or `aria-*`: the meaning of the note is carried by a word in its text ("Warning: …"), not by color. `RichTextView` does not style a tone outside these five names — `sanitizeRichText` strips it on the server. The palette, contrast and Markdown are in the section ["Wrapper", "Tone"](../inputs/rich-text-editor.md#тон).
245
+
246
+ `sanitizeRichText` keeps a Wrapper where the Editor writes it: at the top level and directly in a Layout column, not in another Wrapper, list, quote or table; otherwise the Wrapper is stripped and the Blocks stay one after another. A Layout inside a Wrapper is unwrapped into its Blocks.
247
+
248
+ ## Custom Block
249
+
250
+ `RichTextView` shows a custom Block (`div[data-block="acme_card"]`, section "Custom Tool" of the [RichTextEditor](../inputs/rich-text-editor.md#свой-инструмент) page) as sanitized HTML and gives it **the same vertical rhythm as a paragraph, and nothing more**: the spacing to the next Block is the same as for a paragraph in the same place (in a Document, a quote, a cell, a column). Blocks inside a custom container Block get the Document's rhythm, as in a Wrapper; inline content (text, Atoms, Marks) gets no spacing. On Paper it is the same.
251
+
252
+ The look comes from the consumer's CSS, which targets the `data-block` selector and uses the kit's tokens; there are no style fields in the Tool description. Write styles using theme variables — then the Block is the same in the Editor, in `RichTextView` and on the Paper, which switches the tokens itself:
253
+
254
+ ```css
255
+ [data-block="acme_card"] {
256
+ border: 1px solid var(--line);
257
+ border-radius: var(--r-sm);
258
+ padding: 0.75rem;
259
+ }
260
+ ```
261
+
262
+ A node view from the Engine part (a React view) is not used in `RichTextView`: there is no engine here. An inline Atom is shown as whatever is in the HTML: an empty `span` with no text is not visible; a Block can be brought to life in the View with an Island (the next section). The rhythm is checked by `tests/rich-text-paper-css.test.tsx` on the real cascade.
263
+
264
+ ## Custom Block's Island
265
+
266
+ A custom Block can be brought to life in `RichTextView` with a client component (a button, a player, a collapsible block); the Tool description puts it into the Block's `island` field. Not every Block needs an Island: without it the Block stays sanitized HTML (["Custom Block"](#свой-блок)).
267
+
268
+ ```tsx
269
+ // acme-player.tsx — a module with the directive: the server gets only a reference to the component
270
+ "use client";
271
+ import type { CustomIslandProps } from "@olddevs/ui/editor";
272
+
273
+ export function AcmePlayer({ attributes, text }: CustomIslandProps) {
274
+ return <audio controls src={attributes.acme_src} aria-label={text} />;
275
+ }
276
+ ```
277
+
278
+ ```tsx
279
+ // acme-tool.ts — the Tool description, shared by the Editor, sanitizing and the View
280
+ import { AcmePlayer } from "./acme-player";
281
+
282
+ export const acmePlayer: CustomTool = {
283
+ name: "acme_player",
284
+ engine: [AcmePlayerNode],
285
+ blocks: {
286
+ acme_player: { kind: "block", attributes: { acme_src: { kind: "url" } }, island: AcmePlayer },
287
+ },
288
+ };
289
+
290
+ // the page is a server component
291
+ <RichTextView html={safeHtml} tools={[acmePlayer]} />;
292
+ ```
293
+
294
+ **What the component receives** (`CustomIslandProps`): `block` — the Block's name, `attributes` — the attributes declared in the Block's `attributes` that are present in the HTML, by names without `data-` (`acme_src`; the component does not see an undeclared attribute), `text` — the Block's `textContent` from the server HTML. The values are strings from the Document's sanitized HTML: `sanitizeRichText(html, DOMPurify, tools)` checks a value's kind on the server, and without it the Island gets whatever is in `html`.
295
+
296
+ **How it works and why `RichTextView` stays a server component.** It works the same way as for "Copy" (the section above): the component itself has no state, and the client piece is a separate file with its own directive.
297
+
298
+ 1. The whole Tool description (Engine part, functions) cannot cross the RSC boundary, so `RichTextView` picks only the Islands from `tools`, and only those of Blocks whose `data-block="<name>"` is in the Document (`islandsFor`, `src/editor/core/viewIsland.ts`), and passes references to client components and attribute names to the Island. If there is no `tools`, no `island` on the Block, or no such Block in the Document, there is no Island at all: no anchor `<template>` in the markup, no effect, no loading of the consumer's Island code (the server serializes a reference to a client component only when the Block is there). `island` must be a component from a module with `"use client"`: a server component or a function with a dynamic import is not passed to a client Island.
299
+ 2. The Block's server HTML is always in the page. Before hydration, before the Island loads and without JS, the reader sees it — that is, the Block's content as it was saved.
300
+ 3. After mounting, the Island (`src/editor/ui/BlockIsland.tsx` and the implementation in `BlockIslandSlots.tsx`, with its own `"use client"`) finds the Blocks of **its own** View the same way "Copy" finds its Mount points: going left from its anchor `<template>`, not through the global `document` — a View in a shadow root or an `iframe` works. In every occurrence of the Block, the content is replaced by the Island; when `tools` changes (the Island is gone) or the Block goes away, the content comes back. If a Block with an Island sits inside another Block with an Island, the outer one comes to life: the component gets its whole text, and the inner one stays as its content.
301
+ 4. The Island's state is not reset by a parent re-render: the Island looks for Blocks again only when the Document changed, not `tools` (an inline array literal in the parent does not remount the Island). For this, `RichTextView` keeps the `dangerouslySetInnerHTML` object stable (`useMemo` on the Document): a new object on every re-render would make React rewrite the markup together with the inserted Islands and "Copy" buttons.
302
+
303
+ **The Island is a separate component**, not the Engine part's React view; the Editor does not read the `island` field.
304
+
305
+ **Cost.** The Island implementation (`BlockIslandSlots.tsx`) is loaded lazily (`React.lazy`) and is not part of the View's first load: while the chunk is in flight, the Block's server HTML is visible. The static `editorView` measurement includes only the shell and the choice of Islands — about 0.2 kB gzip; Tiptap is still not in the View's graph, which `tests/rich-text-view.test.tsx` checks.
306
+
307
+ ## Accessibility
308
+
309
+ The component adds no roles: it is a regular `div` with semantic HTML inside — headings, lists, a quote. The Document's headings start with H2 if the Editor worked without `heading1`: the page keeps the H1 itself. A Document with `heading1` contains its own `h1`, and then the page does not put in a second one. An H1 in `RichTextView` is styled with the same typography as in the Editor. If the Document is a separate area of the page, give the container a name through `aria-label` and `role="region"`.
310
+
311
+ ## Anti-patterns
312
+
313
+ - Putting a string into `html` that has not passed server-side sanitizing.
314
+ - Sanitizing only in the browser before sending: the server does not see it.
315
+ - Using `RichTextEditor readOnly` for a page that only displays the Document: a 295–339 kB gzip engine just to display text ([size table](../../getting-started.md#размер-импорта)).
316
+ - Adding `"use client"` to a file where `RichTextView` is the only component: it is not needed and pulls its neighbors into the client graph (the Island with the "Copy" button is a separate file with its own directive, and `RichTextView` already has it).
317
+ - Passing a server component or a function with a dynamic import to `island`: only a reference to a client component from a module with `"use client"` crosses the RSC boundary.
318
+ - Building your own copy button on top of `RichTextView` or reading text from the Block's DOM: the header and the button are already there, and what gets copied is the code's `textContent`, not the markup.
319
+
320
+ ## Links
321
+
322
+ - Source: `src/editor/RichTextView.tsx`; header and button — `src/editor/features/code/codeHeader.ts` (header markup), `src/editor/features/code/CodeCopyIsland.tsx` (client Island), `src/editor/features/code/CodeCopyButton.tsx`; the Island of a custom Block — `src/editor/core/viewIsland.ts` (choosing Islands by the Document), `src/editor/ui/BlockIsland.tsx` and `src/editor/ui/BlockIslandSlots.tsx` (client Island); Paper (`surface="paper"`) — `src/editor/styles/surface.ts` and `src/editor/styles/tokens.ts`; typography — `src/editor/styles/prose.ts`, highlight theme — `src/editor/styles/codeTheme.ts`; server highlighting — `src/editor/features/code/highlight.ts`, entry point — `src/editor/highlight-entry.ts`; the Schema as data, `sanitizeRichText` and the sanitizing config — `src/editor/core/schema.ts`, lightweight entry point — `src/editor/schema-entry.ts`.
323
+ - Tests: `tests/rich-text-view.test.tsx` (it also holds the module graph and the table-to-Schema check), `tests/rich-text-view-code-copy.test.tsx` (header, Island, copying), `tests/rich-text-view-island.test.tsx` (the Island of a custom Block), `tests/rich-text-paper.test.tsx` and `tests/rich-text-paper-css.test.tsx` (Paper, `surface="paper"`), `tests/editor-highlight-entry.test.ts` (highlight helper, escaping, entry point graph), `tests/editor-sanitize.test.tsx` (sanitizing with the real DOMPurify: the Editor's markup unchanged, forged input, the bare config), `tests/editor-sanitize-tools.test.tsx` (sanitizing and `richTextSchema` with custom Tools), `tests/rsc-gate.test.ts`.
324
+ - Storybook: `Content/RichTextView`.
325
+ - The Editor — [RichTextEditor](../inputs/rich-text-editor.md); custom Tools, the Island and the semver boundary — [Editor extension API](../../api/editor-extension.md); decisions — ADR-0050, highlighting — ADR-0051, extension — ADR-0058.