pixelize-native-library 1.0.7 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1072) hide show
  1. package/lib/module/core/MODULE.md +129 -36
  2. package/lib/module/core/a11y/MODULE.md +127 -4
  3. package/lib/module/core/a11y/announce.js +30 -0
  4. package/lib/module/core/a11y/announce.web.js +134 -0
  5. package/lib/module/core/a11y/index.js +81 -15
  6. package/lib/module/core/a11y/keyboard.js +42 -0
  7. package/lib/module/core/a11y/keyboard.web.js +229 -0
  8. package/lib/module/core/a11y/labels.js +24 -0
  9. package/lib/module/core/device/MODULE.md +47 -0
  10. package/lib/module/core/device/index.js +91 -0
  11. package/lib/module/core/heading/MODULE.md +38 -0
  12. package/lib/module/core/heading/index.js +45 -0
  13. package/lib/module/core/icon/Icon.js +37 -0
  14. package/lib/module/core/icon/MODULE.md +42 -8
  15. package/lib/module/core/icon/icons/arrow-down.js +10 -0
  16. package/lib/module/core/icon/icons/arrow-left.js +10 -0
  17. package/lib/module/core/icon/icons/arrow-right.js +10 -0
  18. package/lib/module/core/icon/icons/arrow-up.js +10 -0
  19. package/lib/module/core/icon/icons/at-sign.js +10 -0
  20. package/lib/module/core/icon/icons/bell.js +10 -0
  21. package/lib/module/core/icon/icons/bold.js +10 -0
  22. package/lib/module/core/icon/icons/building-2.js +10 -0
  23. package/lib/module/core/icon/icons/calendar.js +10 -0
  24. package/lib/module/core/icon/icons/chart-column.js +10 -0
  25. package/lib/module/core/icon/icons/check.js +10 -0
  26. package/lib/module/core/icon/icons/chevron-down.js +10 -0
  27. package/lib/module/core/icon/icons/chevron-left.js +10 -0
  28. package/lib/module/core/icon/icons/chevron-right.js +10 -0
  29. package/lib/module/core/icon/icons/chevron-up.js +10 -0
  30. package/lib/module/core/icon/icons/chevrons-left.js +10 -0
  31. package/lib/module/core/icon/icons/chevrons-right.js +10 -0
  32. package/lib/module/core/icon/icons/chevrons-up-down.js +10 -0
  33. package/lib/module/core/icon/icons/circle-alert.js +10 -0
  34. package/lib/module/core/icon/icons/circle-check.js +10 -0
  35. package/lib/module/core/icon/icons/clock.js +10 -0
  36. package/lib/module/core/icon/icons/code.js +10 -0
  37. package/lib/module/core/icon/icons/download.js +10 -0
  38. package/lib/module/core/icon/icons/external-link.js +10 -0
  39. package/lib/module/core/icon/icons/eye.js +10 -0
  40. package/lib/module/core/icon/icons/file-text.js +10 -0
  41. package/lib/module/core/icon/icons/filter.js +10 -0
  42. package/lib/module/core/icon/icons/flag.js +10 -0
  43. package/lib/module/core/icon/icons/folder.js +10 -0
  44. package/lib/module/core/icon/icons/heading-1.js +10 -0
  45. package/lib/module/core/icon/icons/heading-2.js +10 -0
  46. package/lib/module/core/icon/icons/heading-3.js +10 -0
  47. package/lib/module/core/icon/icons/image.js +10 -0
  48. package/lib/module/core/icon/icons/inbox.js +10 -0
  49. package/lib/module/core/icon/icons/info.js +10 -0
  50. package/lib/module/core/icon/icons/italic.js +10 -0
  51. package/lib/module/core/icon/icons/kanban.js +10 -0
  52. package/lib/module/core/icon/icons/layers.js +10 -0
  53. package/lib/module/core/icon/icons/layout-dashboard.js +10 -0
  54. package/lib/module/core/icon/icons/layout-template.js +10 -0
  55. package/lib/module/core/icon/icons/life-buoy.js +10 -0
  56. package/lib/module/core/icon/icons/link.js +10 -0
  57. package/lib/module/core/icon/icons/list-checks.js +10 -0
  58. package/lib/module/core/icon/icons/list-ordered.js +10 -0
  59. package/lib/module/core/icon/icons/list-todo.js +10 -0
  60. package/lib/module/core/icon/icons/list.js +10 -0
  61. package/lib/module/core/icon/icons/log-out.js +10 -0
  62. package/lib/module/core/icon/icons/map.js +10 -0
  63. package/lib/module/core/icon/icons/message-square.js +10 -0
  64. package/lib/module/core/icon/icons/milestone.js +10 -0
  65. package/lib/module/core/icon/icons/minus.js +10 -0
  66. package/lib/module/core/icon/icons/more-horizontal.js +10 -0
  67. package/lib/module/core/icon/icons/paperclip.js +10 -0
  68. package/lib/module/core/icon/icons/pencil.js +10 -0
  69. package/lib/module/core/icon/icons/plus.js +10 -0
  70. package/lib/module/core/icon/icons/quote.js +10 -0
  71. package/lib/module/core/icon/icons/refresh-cw.js +10 -0
  72. package/lib/module/core/icon/icons/save.js +10 -0
  73. package/lib/module/core/icon/icons/search.js +10 -0
  74. package/lib/module/core/icon/icons/send.js +10 -0
  75. package/lib/module/core/icon/icons/settings.js +10 -0
  76. package/lib/module/core/icon/icons/share.js +10 -0
  77. package/lib/module/core/icon/icons/square-code.js +10 -0
  78. package/lib/module/core/icon/icons/star.js +10 -0
  79. package/lib/module/core/icon/icons/strikethrough.js +10 -0
  80. package/lib/module/core/icon/icons/tag.js +10 -0
  81. package/lib/module/core/icon/icons/trash.js +10 -0
  82. package/lib/module/core/icon/icons/triangle-alert.js +10 -0
  83. package/lib/module/core/icon/icons/underline.js +10 -0
  84. package/lib/module/core/icon/icons/upload.js +10 -0
  85. package/lib/module/core/icon/icons/user.js +10 -0
  86. package/lib/module/core/icon/icons/users.js +10 -0
  87. package/lib/module/core/icon/icons/x.js +10 -0
  88. package/lib/module/core/icon/index.js +4 -153
  89. package/lib/module/core/icon/names.js +2 -0
  90. package/lib/module/core/icon/resolve.js +158 -0
  91. package/lib/module/core/icon/types.js +4 -0
  92. package/lib/module/core/list/VirtualList.js +226 -0
  93. package/lib/module/core/list/index.js +4 -0
  94. package/lib/module/core/media/MediaImage.js +51 -0
  95. package/lib/module/core/media/expoImage.js +20 -0
  96. package/lib/module/core/media/index.js +6 -0
  97. package/lib/module/core/media/pickers.js +23 -0
  98. package/lib/module/core/motion/MODULE.md +101 -0
  99. package/lib/module/core/motion/config.js +112 -0
  100. package/lib/module/core/motion/index.js +7 -0
  101. package/lib/module/core/motion/presets.js +192 -0
  102. package/lib/module/core/motion/useAnimatedValue.js +19 -0
  103. package/lib/module/core/motion/useMotion.js +46 -0
  104. package/lib/module/core/style/index.js +2 -0
  105. package/lib/module/core/style/sx.js +76 -0
  106. package/lib/module/core/style/useThemedStyles.js +8 -0
  107. package/lib/module/index.js +70 -2
  108. package/lib/module/modules/accordion/Accordion.js +256 -87
  109. package/lib/module/modules/accordion/Accordion.variants.js +2 -4
  110. package/lib/module/modules/accordion/MODULE.md +35 -11
  111. package/lib/module/modules/alert-dialog/AlertDialog.js +1 -1
  112. package/lib/module/modules/alert-dialog/MODULE.md +11 -2
  113. package/lib/module/modules/app-bar/AppBar.js +179 -0
  114. package/lib/module/modules/app-bar/AppBar.variants.js +72 -0
  115. package/lib/module/modules/app-bar/MODULE.md +68 -0
  116. package/lib/module/modules/app-bar/index.js +10 -0
  117. package/lib/module/modules/avatar/Avatar.js +38 -18
  118. package/lib/module/modules/avatar/Avatar.variants.js +44 -3
  119. package/lib/module/modules/avatar/MODULE.md +37 -15
  120. package/lib/module/modules/avatar-group/AvatarGroup.js +77 -0
  121. package/lib/module/modules/avatar-group/AvatarGroup.variants.js +109 -0
  122. package/lib/module/modules/avatar-group/MODULE.md +28 -0
  123. package/lib/module/modules/avatar-group/index.js +10 -0
  124. package/lib/module/modules/badge/Badge.js +3 -2
  125. package/lib/module/modules/badge/Badge.variants.js +12 -2
  126. package/lib/module/modules/badge/MODULE.md +6 -0
  127. package/lib/module/modules/banner/Banner.js +135 -0
  128. package/lib/module/modules/banner/Banner.variants.js +118 -0
  129. package/lib/module/modules/banner/MODULE.md +113 -0
  130. package/lib/module/modules/banner/index.js +4 -0
  131. package/lib/module/modules/bottom-nav/BottomNav.js +37 -126
  132. package/lib/module/modules/bottom-nav/BottomNav.variants.js +28 -9
  133. package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js +56 -8
  134. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js +133 -114
  135. package/lib/module/modules/bottom-nav/BottomNavTab.js +138 -0
  136. package/lib/module/modules/bottom-nav/MODULE.md +21 -6
  137. package/lib/module/modules/bottom-sheet/BottomSheet.js +189 -0
  138. package/lib/module/modules/bottom-sheet/BottomSheet.variants.js +49 -0
  139. package/lib/module/modules/bottom-sheet/MODULE.md +53 -0
  140. package/lib/module/modules/bottom-sheet/index.js +4 -0
  141. package/lib/module/modules/button/Button.js +98 -47
  142. package/lib/module/modules/button/Button.variants.js +12 -7
  143. package/lib/module/modules/button/MODULE.md +25 -3
  144. package/lib/module/modules/button-group/ButtonGroup.js +163 -55
  145. package/lib/module/modules/button-group/ButtonGroup.variants.js +30 -4
  146. package/lib/module/modules/button-group/MODULE.md +33 -7
  147. package/lib/module/modules/card/Card.js +10 -7
  148. package/lib/module/modules/card/MODULE.md +6 -0
  149. package/lib/module/modules/charts/BarChart.js +242 -0
  150. package/lib/module/modules/charts/BarList.js +98 -48
  151. package/lib/module/modules/charts/ChartLegend.js +154 -0
  152. package/lib/module/modules/charts/Charts.variants.js +524 -1
  153. package/lib/module/modules/charts/DonutChart.js +100 -65
  154. package/lib/module/modules/charts/LineChart.js +179 -0
  155. package/lib/module/modules/charts/MODULE.md +148 -22
  156. package/lib/module/modules/charts/PieChart.js +140 -0
  157. package/lib/module/modules/charts/Sparkline.js +5 -4
  158. package/lib/module/modules/charts/index.js +3 -0
  159. package/lib/module/modules/checkbox/Checkbox.js +114 -44
  160. package/lib/module/modules/checkbox/Checkbox.variants.js +13 -8
  161. package/lib/module/modules/checkbox/MODULE.md +35 -8
  162. package/lib/module/modules/chip/Chip.js +155 -0
  163. package/lib/module/modules/chip/Chip.variants.js +278 -0
  164. package/lib/module/modules/chip/ChipGroup.js +48 -0
  165. package/lib/module/modules/chip/MODULE.md +156 -0
  166. package/lib/module/modules/chip/index.js +13 -0
  167. package/lib/module/modules/combobox/Combobox.js +587 -0
  168. package/lib/module/modules/combobox/Combobox.variants.js +280 -0
  169. package/lib/module/modules/combobox/MODULE.md +183 -0
  170. package/lib/module/modules/combobox/comboboxKeys.js +19 -0
  171. package/lib/module/modules/combobox/comboboxKeys.web.js +76 -0
  172. package/lib/module/modules/combobox/index.js +13 -0
  173. package/lib/module/modules/composer/Composer.js +156 -0
  174. package/lib/module/modules/composer/Composer.variants.js +42 -0
  175. package/lib/module/modules/composer/MODULE.md +70 -0
  176. package/lib/module/modules/composer/index.js +4 -0
  177. package/lib/module/modules/copy-button/CopyButton.js +156 -0
  178. package/lib/module/modules/copy-button/CopyButton.variants.js +86 -0
  179. package/lib/module/modules/copy-button/MODULE.md +73 -0
  180. package/lib/module/modules/copy-button/index.js +4 -0
  181. package/lib/module/modules/data-table/DataTable.js +513 -0
  182. package/lib/module/modules/data-table/DataTable.variants.js +188 -0
  183. package/lib/module/modules/data-table/MODULE.md +145 -0
  184. package/lib/module/modules/data-table/index.js +10 -0
  185. package/lib/module/modules/date-picker/Calendar.js +368 -0
  186. package/lib/module/modules/date-picker/Calendar.keys.js +23 -0
  187. package/lib/module/modules/date-picker/Calendar.keys.web.js +83 -0
  188. package/lib/module/modules/date-picker/DatePicker.js +162 -0
  189. package/lib/module/modules/date-picker/DatePicker.variants.js +686 -0
  190. package/lib/module/modules/date-picker/DateRangePicker.js +87 -0
  191. package/lib/module/modules/date-picker/MODULE.md +169 -0
  192. package/lib/module/modules/date-picker/PickerField.js +142 -0
  193. package/lib/module/modules/date-picker/PickerShell.js +132 -0
  194. package/lib/module/modules/date-picker/TimePicker.js +184 -0
  195. package/lib/module/modules/date-picker/index.js +14 -0
  196. package/lib/module/modules/divider/Divider.js +8 -7
  197. package/lib/module/modules/divider/MODULE.md +6 -0
  198. package/lib/module/modules/drawer/Drawer.js +140 -58
  199. package/lib/module/modules/drawer/Drawer.variants.js +3 -16
  200. package/lib/module/modules/drawer/MODULE.md +90 -118
  201. package/lib/module/modules/empty-state/EmptyState.js +32 -18
  202. package/lib/module/modules/empty-state/EmptyState.variants.js +9 -0
  203. package/lib/module/modules/empty-state/MODULE.md +25 -7
  204. package/lib/module/modules/fab/Fab.js +212 -0
  205. package/lib/module/modules/fab/Fab.variants.js +346 -0
  206. package/lib/module/modules/fab/FabGroup.js +334 -0
  207. package/lib/module/modules/fab/MODULE.md +181 -0
  208. package/lib/module/modules/fab/index.js +13 -0
  209. package/lib/module/modules/file-grid/FileGrid.js +149 -0
  210. package/lib/module/modules/file-grid/FileGrid.variants.js +51 -0
  211. package/lib/module/modules/file-grid/MODULE.md +12 -0
  212. package/lib/module/modules/file-grid/index.js +4 -0
  213. package/lib/module/modules/file-upload/FileUpload.js +124 -34
  214. package/lib/module/modules/file-upload/FileUpload.variants.js +50 -7
  215. package/lib/module/modules/file-upload/MODULE.md +22 -4
  216. package/lib/module/modules/filter-sheet/FilterChip.js +25 -19
  217. package/lib/module/modules/filter-sheet/FilterSheet.js +17 -11
  218. package/lib/module/modules/filter-sheet/FilterSheet.variants.js +24 -5
  219. package/lib/module/modules/filter-sheet/FilterSheetBody.js +168 -82
  220. package/lib/module/modules/filter-sheet/MODULE.md +22 -1
  221. package/lib/module/modules/folder-row/FolderRow.js +132 -0
  222. package/lib/module/modules/folder-row/FolderRow.variants.js +49 -0
  223. package/lib/module/modules/folder-row/MODULE.md +71 -0
  224. package/lib/module/modules/folder-row/index.js +4 -0
  225. package/lib/module/modules/form-field/FormField.js +104 -0
  226. package/lib/module/modules/form-field/FormField.variants.js +88 -0
  227. package/lib/module/modules/form-field/MODULE.md +103 -0
  228. package/lib/module/modules/form-field/index.js +4 -0
  229. package/lib/module/modules/gantt/Gantt.js +218 -0
  230. package/lib/module/modules/gantt/Gantt.variants.js +141 -0
  231. package/lib/module/modules/gantt/MODULE.md +71 -0
  232. package/lib/module/modules/gantt/index.js +5 -0
  233. package/lib/module/modules/image-viewer/ImageViewer.js +235 -0
  234. package/lib/module/modules/image-viewer/ImageViewer.variants.js +6 -0
  235. package/lib/module/modules/image-viewer/MODULE.md +57 -0
  236. package/lib/module/modules/image-viewer/index.js +4 -0
  237. package/lib/module/modules/input/Input.js +106 -48
  238. package/lib/module/modules/input/Input.variants.js +18 -4
  239. package/lib/module/modules/input/MODULE.md +36 -6
  240. package/lib/module/modules/limit-reached-modal/LimitReachedModal.js +90 -0
  241. package/lib/module/modules/limit-reached-modal/LimitReachedModal.variants.js +108 -0
  242. package/lib/module/modules/limit-reached-modal/MODULE.md +94 -0
  243. package/lib/module/modules/limit-reached-modal/index.js +11 -0
  244. package/lib/module/modules/list-item/ListItem.js +45 -28
  245. package/lib/module/modules/list-item/MODULE.md +6 -0
  246. package/lib/module/modules/markdown/MODULE.md +32 -5
  247. package/lib/module/modules/markdown/Markdown.js +54 -20
  248. package/lib/module/modules/markdown/Markdown.variants.js +6 -1
  249. package/lib/module/modules/markdown/parseMarkdown.js +3 -3
  250. package/lib/module/modules/menu/MODULE.md +45 -14
  251. package/lib/module/modules/menu/Menu.js +174 -65
  252. package/lib/module/modules/menu/Menu.variants.js +10 -0
  253. package/lib/module/modules/message-bubble/MODULE.md +38 -0
  254. package/lib/module/modules/message-bubble/MessageBubble.js +55 -0
  255. package/lib/module/modules/message-bubble/MessageBubble.variants.js +57 -0
  256. package/lib/module/modules/message-bubble/index.js +4 -0
  257. package/lib/module/modules/modal/MODULE.md +29 -3
  258. package/lib/module/modules/modal/Modal.js +72 -22
  259. package/lib/module/modules/more-items/MODULE.md +72 -0
  260. package/lib/module/modules/more-items/MoreItems.js +162 -0
  261. package/lib/module/modules/more-items/MoreItems.variants.js +80 -0
  262. package/lib/module/modules/more-items/index.js +4 -0
  263. package/lib/module/modules/multi-select/MODULE.md +84 -18
  264. package/lib/module/modules/multi-select/MultiSelect.js +217 -105
  265. package/lib/module/modules/multi-select/MultiSelect.variants.js +28 -5
  266. package/lib/module/modules/number-input/MODULE.md +39 -5
  267. package/lib/module/modules/number-input/NumberInput.js +41 -11
  268. package/lib/module/modules/number-input/NumberInput.variants.js +39 -5
  269. package/lib/module/modules/org-switcher/MODULE.md +121 -0
  270. package/lib/module/modules/org-switcher/OrgSwitcher.js +284 -0
  271. package/lib/module/modules/org-switcher/OrgSwitcher.variants.js +186 -0
  272. package/lib/module/modules/org-switcher/index.js +9 -0
  273. package/lib/module/modules/pagination/MODULE.md +163 -0
  274. package/lib/module/modules/pagination/Pagination.js +197 -0
  275. package/lib/module/modules/pagination/Pagination.variants.js +307 -0
  276. package/lib/module/modules/pagination/PaginationControls.js +193 -0
  277. package/lib/module/modules/pagination/index.js +15 -0
  278. package/lib/module/modules/pin-input/MODULE.md +29 -14
  279. package/lib/module/modules/pin-input/PinInput.js +111 -80
  280. package/lib/module/modules/pin-input/PinInput.variants.js +13 -5
  281. package/lib/module/modules/progress-bar/MODULE.md +17 -7
  282. package/lib/module/modules/progress-bar/ProgressBar.js +97 -56
  283. package/lib/module/modules/progress-bar/ProgressBar.variants.js +16 -18
  284. package/lib/module/modules/radio-group/MODULE.md +40 -14
  285. package/lib/module/modules/radio-group/RadioGroup.js +71 -7
  286. package/lib/module/modules/radio-group/RadioGroup.variants.js +46 -10
  287. package/lib/module/modules/reorder/MODULE.md +104 -97
  288. package/lib/module/modules/reorder/Reorder.js +233 -197
  289. package/lib/module/modules/reorder/Reorder.variants.js +35 -13
  290. package/lib/module/modules/rich-text/MODULE.md +52 -0
  291. package/lib/module/modules/rich-text/RichText.js +362 -0
  292. package/lib/module/modules/rich-text/RichText.variants.js +17 -0
  293. package/lib/module/modules/rich-text/index.js +5 -0
  294. package/lib/module/modules/rich-text/parseRichText.js +133 -0
  295. package/lib/module/modules/rich-text-editor/MODULE.md +225 -0
  296. package/lib/module/modules/rich-text-editor/RichTextEditor.js +413 -0
  297. package/lib/module/modules/rich-text-editor/RichTextEditor.variants.js +316 -0
  298. package/lib/module/modules/rich-text-editor/index.js +10 -0
  299. package/lib/module/modules/screen/MODULE.md +57 -0
  300. package/lib/module/modules/screen/Screen.js +106 -0
  301. package/lib/module/modules/screen/Screen.variants.js +43 -0
  302. package/lib/module/modules/screen/index.js +10 -0
  303. package/lib/module/modules/search-bar/MODULE.md +114 -0
  304. package/lib/module/modules/search-bar/SearchBar.js +256 -0
  305. package/lib/module/modules/search-bar/SearchBar.variants.js +205 -0
  306. package/lib/module/modules/search-bar/index.js +12 -0
  307. package/lib/module/modules/section/MODULE.md +39 -0
  308. package/lib/module/modules/section/Section.js +42 -0
  309. package/lib/module/modules/section/Section.variants.js +29 -0
  310. package/lib/module/modules/section/index.js +10 -0
  311. package/lib/module/modules/section-list/MODULE.md +18 -0
  312. package/lib/module/modules/section-list/SectionList.js +64 -0
  313. package/lib/module/modules/section-list/SectionList.variants.js +11 -0
  314. package/lib/module/modules/section-list/index.js +4 -0
  315. package/lib/module/modules/segmented-control/MODULE.md +124 -0
  316. package/lib/module/modules/segmented-control/SegmentedControl.js +158 -0
  317. package/lib/module/modules/segmented-control/SegmentedControl.variants.js +167 -0
  318. package/lib/module/modules/segmented-control/index.js +13 -0
  319. package/lib/module/modules/select/MODULE.md +81 -14
  320. package/lib/module/modules/select/Select.js +196 -94
  321. package/lib/module/modules/select/Select.variants.js +28 -5
  322. package/lib/module/modules/skeleton/MODULE.md +27 -7
  323. package/lib/module/modules/skeleton/Skeleton.js +52 -38
  324. package/lib/module/modules/skeleton/Skeleton.variants.js +9 -8
  325. package/lib/module/modules/slider/MODULE.md +31 -5
  326. package/lib/module/modules/slider/Slider.js +67 -10
  327. package/lib/module/modules/slider/Slider.variants.js +60 -13
  328. package/lib/module/modules/spinner/MODULE.md +16 -6
  329. package/lib/module/modules/spinner/Spinner.js +20 -16
  330. package/lib/module/modules/spinner/Spinner.variants.js +5 -3
  331. package/lib/module/modules/stage-progress/MODULE.md +64 -0
  332. package/lib/module/modules/stage-progress/StageProgress.js +174 -0
  333. package/lib/module/modules/stage-progress/StageProgress.variants.js +164 -0
  334. package/lib/module/modules/stage-progress/index.js +4 -0
  335. package/lib/module/modules/stat-tile/MODULE.md +9 -2
  336. package/lib/module/modules/stat-tile/StatTile.js +70 -33
  337. package/lib/module/modules/stat-tile/StatTile.variants.js +6 -4
  338. package/lib/module/modules/state-block/MODULE.md +52 -0
  339. package/lib/module/modules/state-block/StateBlock.js +131 -0
  340. package/lib/module/modules/state-block/StateBlock.variants.js +55 -0
  341. package/lib/module/modules/state-block/index.js +10 -0
  342. package/lib/module/modules/stepper/MODULE.md +33 -6
  343. package/lib/module/modules/stepper/Stepper.js +108 -39
  344. package/lib/module/modules/stepper/Stepper.variants.js +6 -6
  345. package/lib/module/modules/swipeable-row/MODULE.md +120 -0
  346. package/lib/module/modules/swipeable-row/SwipeableRow.js +244 -0
  347. package/lib/module/modules/swipeable-row/SwipeableRow.variants.js +80 -0
  348. package/lib/module/modules/swipeable-row/index.js +4 -0
  349. package/lib/module/modules/switch/MODULE.md +14 -0
  350. package/lib/module/modules/switch/Switch.js +1 -1
  351. package/lib/module/modules/switch/Switch.variants.js +8 -0
  352. package/lib/module/modules/tabs/MODULE.md +47 -13
  353. package/lib/module/modules/tabs/Tabs.js +121 -72
  354. package/lib/module/modules/tabs/Tabs.variants.js +30 -8
  355. package/lib/module/modules/text/MODULE.md +51 -0
  356. package/lib/module/modules/text/Text.js +47 -0
  357. package/lib/module/modules/text/Text.variants.js +98 -0
  358. package/lib/module/modules/text/index.js +4 -0
  359. package/lib/module/modules/textarea/MODULE.md +29 -13
  360. package/lib/module/modules/textarea/Textarea.js +90 -45
  361. package/lib/module/modules/textarea/Textarea.variants.js +14 -9
  362. package/lib/module/modules/timeline/MODULE.md +39 -7
  363. package/lib/module/modules/timeline/Timeline.js +151 -77
  364. package/lib/module/modules/timeline/Timeline.variants.js +13 -0
  365. package/lib/module/modules/toast/MODULE.md +66 -7
  366. package/lib/module/modules/toast/Toast.js +93 -27
  367. package/lib/module/modules/toast/Toast.variants.js +37 -1
  368. package/lib/module/modules/toast/toastScreenReader.js +69 -0
  369. package/lib/module/modules/tooltip/MODULE.md +78 -28
  370. package/lib/module/modules/tooltip/Tooltip.js +93 -43
  371. package/lib/module/modules/tooltip/Tooltip.variants.js +3 -4
  372. package/lib/module/modules/typing-indicator/MODULE.md +48 -0
  373. package/lib/module/modules/typing-indicator/TypingIndicator.js +98 -0
  374. package/lib/module/modules/typing-indicator/TypingIndicator.variants.js +55 -0
  375. package/lib/module/modules/typing-indicator/index.js +4 -0
  376. package/lib/module/modules/unread-badge/MODULE.md +20 -0
  377. package/lib/module/modules/unread-badge/UnreadBadge.js +45 -0
  378. package/lib/module/modules/unread-badge/UnreadBadge.variants.js +66 -0
  379. package/lib/module/modules/unread-badge/index.js +4 -0
  380. package/lib/module/test/mocks/flashList.js +5 -0
  381. package/lib/module/test/perfHelpers.js +18 -0
  382. package/lib/module/theme/MODULE.md +6 -0
  383. package/lib/module/theme/hooks.js +11 -0
  384. package/lib/module/theme/index.js +3 -6
  385. package/lib/module/theme/platform/MODULE.md +6 -0
  386. package/lib/module/theme/platform/motion.native.js +15 -0
  387. package/lib/module/theme/provider/PixelizeProvider.js +9 -47
  388. package/lib/module/theme/provider/ThemeContext.js +6 -0
  389. package/lib/module/theme/provider/colorModeStorage.js +2 -2
  390. package/lib/module/theme/provider/index.js +1 -0
  391. package/lib/module/theme/provider/loadPalette.js +75 -0
  392. package/lib/module/theme/provider/types.js +4 -0
  393. package/lib/module/theme/provider/useTheme.js +1 -2
  394. package/lib/module/theme/provider/useThemeMode.js +1 -1
  395. package/lib/module/theme/tokens/roles/index.js +9 -3
  396. package/lib/typescript/core/a11y/announce.d.ts +20 -0
  397. package/lib/typescript/core/a11y/announce.web.d.ts +27 -0
  398. package/lib/typescript/core/a11y/index.d.ts +21 -2
  399. package/lib/typescript/core/a11y/keyboard.d.ts +45 -0
  400. package/lib/typescript/core/a11y/keyboard.web.d.ts +69 -0
  401. package/lib/typescript/core/a11y/labels.d.ts +19 -0
  402. package/lib/typescript/core/device/index.d.ts +16 -0
  403. package/lib/typescript/core/heading/index.d.ts +45 -0
  404. package/lib/typescript/core/icon/Icon.d.ts +18 -0
  405. package/lib/typescript/core/icon/icons/arrow-down.d.ts +3 -0
  406. package/lib/typescript/core/icon/icons/arrow-left.d.ts +3 -0
  407. package/lib/typescript/core/icon/icons/arrow-right.d.ts +3 -0
  408. package/lib/typescript/core/icon/icons/arrow-up.d.ts +3 -0
  409. package/lib/typescript/core/icon/icons/at-sign.d.ts +3 -0
  410. package/lib/typescript/core/icon/icons/bell.d.ts +3 -0
  411. package/lib/typescript/core/icon/icons/bold.d.ts +3 -0
  412. package/lib/typescript/core/icon/icons/building-2.d.ts +3 -0
  413. package/lib/typescript/core/icon/icons/calendar.d.ts +3 -0
  414. package/lib/typescript/core/icon/icons/chart-column.d.ts +3 -0
  415. package/lib/typescript/core/icon/icons/check.d.ts +3 -0
  416. package/lib/typescript/core/icon/icons/chevron-down.d.ts +3 -0
  417. package/lib/typescript/core/icon/icons/chevron-left.d.ts +3 -0
  418. package/lib/typescript/core/icon/icons/chevron-right.d.ts +3 -0
  419. package/lib/typescript/core/icon/icons/chevron-up.d.ts +3 -0
  420. package/lib/typescript/core/icon/icons/chevrons-left.d.ts +3 -0
  421. package/lib/typescript/core/icon/icons/chevrons-right.d.ts +3 -0
  422. package/lib/typescript/core/icon/icons/chevrons-up-down.d.ts +3 -0
  423. package/lib/typescript/core/icon/icons/circle-alert.d.ts +3 -0
  424. package/lib/typescript/core/icon/icons/circle-check.d.ts +3 -0
  425. package/lib/typescript/core/icon/icons/clock.d.ts +3 -0
  426. package/lib/typescript/core/icon/icons/code.d.ts +3 -0
  427. package/lib/typescript/core/icon/icons/download.d.ts +3 -0
  428. package/lib/typescript/core/icon/icons/external-link.d.ts +3 -0
  429. package/lib/typescript/core/icon/icons/eye.d.ts +3 -0
  430. package/lib/typescript/core/icon/icons/file-text.d.ts +3 -0
  431. package/lib/typescript/core/icon/icons/filter.d.ts +3 -0
  432. package/lib/typescript/core/icon/icons/flag.d.ts +3 -0
  433. package/lib/typescript/core/icon/icons/folder.d.ts +3 -0
  434. package/lib/typescript/core/icon/icons/heading-1.d.ts +3 -0
  435. package/lib/typescript/core/icon/icons/heading-2.d.ts +3 -0
  436. package/lib/typescript/core/icon/icons/heading-3.d.ts +3 -0
  437. package/lib/typescript/core/icon/icons/image.d.ts +3 -0
  438. package/lib/typescript/core/icon/icons/inbox.d.ts +3 -0
  439. package/lib/typescript/core/icon/icons/info.d.ts +3 -0
  440. package/lib/typescript/core/icon/icons/italic.d.ts +3 -0
  441. package/lib/typescript/core/icon/icons/kanban.d.ts +3 -0
  442. package/lib/typescript/core/icon/icons/layers.d.ts +3 -0
  443. package/lib/typescript/core/icon/icons/layout-dashboard.d.ts +3 -0
  444. package/lib/typescript/core/icon/icons/layout-template.d.ts +3 -0
  445. package/lib/typescript/core/icon/icons/life-buoy.d.ts +3 -0
  446. package/lib/typescript/core/icon/icons/link.d.ts +3 -0
  447. package/lib/typescript/core/icon/icons/list-checks.d.ts +3 -0
  448. package/lib/typescript/core/icon/icons/list-ordered.d.ts +3 -0
  449. package/lib/typescript/core/icon/icons/list-todo.d.ts +3 -0
  450. package/lib/typescript/core/icon/icons/list.d.ts +3 -0
  451. package/lib/typescript/core/icon/icons/log-out.d.ts +3 -0
  452. package/lib/typescript/core/icon/icons/map.d.ts +3 -0
  453. package/lib/typescript/core/icon/icons/message-square.d.ts +3 -0
  454. package/lib/typescript/core/icon/icons/milestone.d.ts +3 -0
  455. package/lib/typescript/core/icon/icons/minus.d.ts +3 -0
  456. package/lib/typescript/core/icon/icons/more-horizontal.d.ts +3 -0
  457. package/lib/typescript/core/icon/icons/paperclip.d.ts +3 -0
  458. package/lib/typescript/core/icon/icons/pencil.d.ts +3 -0
  459. package/lib/typescript/core/icon/icons/plus.d.ts +3 -0
  460. package/lib/typescript/core/icon/icons/quote.d.ts +3 -0
  461. package/lib/typescript/core/icon/icons/refresh-cw.d.ts +3 -0
  462. package/lib/typescript/core/icon/icons/save.d.ts +3 -0
  463. package/lib/typescript/core/icon/icons/search.d.ts +3 -0
  464. package/lib/typescript/core/icon/icons/send.d.ts +3 -0
  465. package/lib/typescript/core/icon/icons/settings.d.ts +3 -0
  466. package/lib/typescript/core/icon/icons/share.d.ts +3 -0
  467. package/lib/typescript/core/icon/icons/square-code.d.ts +3 -0
  468. package/lib/typescript/core/icon/icons/star.d.ts +3 -0
  469. package/lib/typescript/core/icon/icons/strikethrough.d.ts +3 -0
  470. package/lib/typescript/core/icon/icons/tag.d.ts +3 -0
  471. package/lib/typescript/core/icon/icons/trash.d.ts +3 -0
  472. package/lib/typescript/core/icon/icons/triangle-alert.d.ts +3 -0
  473. package/lib/typescript/core/icon/icons/underline.d.ts +3 -0
  474. package/lib/typescript/core/icon/icons/upload.d.ts +3 -0
  475. package/lib/typescript/core/icon/icons/user.d.ts +3 -0
  476. package/lib/typescript/core/icon/icons/users.d.ts +3 -0
  477. package/lib/typescript/core/icon/icons/x.d.ts +3 -0
  478. package/lib/typescript/core/icon/index.d.ts +6 -94
  479. package/lib/typescript/core/icon/names.d.ts +2 -0
  480. package/lib/typescript/core/icon/resolve.d.ts +4 -0
  481. package/lib/typescript/core/icon/types.d.ts +13 -0
  482. package/lib/typescript/core/list/VirtualList.d.ts +55 -0
  483. package/lib/typescript/core/list/index.d.ts +3 -0
  484. package/lib/typescript/core/media/MediaImage.d.ts +28 -0
  485. package/lib/typescript/core/media/expoImage.d.ts +14 -0
  486. package/lib/typescript/core/media/index.d.ts +7 -0
  487. package/lib/typescript/core/media/pickers.d.ts +27 -0
  488. package/lib/typescript/core/motion/config.d.ts +56 -0
  489. package/lib/typescript/core/motion/index.d.ts +8 -0
  490. package/lib/typescript/core/motion/presets.d.ts +49 -0
  491. package/lib/typescript/core/motion/useAnimatedValue.d.ts +11 -0
  492. package/lib/typescript/core/motion/useMotion.d.ts +34 -0
  493. package/lib/typescript/core/style/index.d.ts +3 -0
  494. package/lib/typescript/core/style/sx.d.ts +86 -0
  495. package/lib/typescript/core/style/useThemedStyles.d.ts +5 -0
  496. package/lib/typescript/index.d.ts +134 -2
  497. package/lib/typescript/modules/accordion/Accordion.d.ts +12 -23
  498. package/lib/typescript/modules/accordion/Accordion.variants.d.ts +5 -5
  499. package/lib/typescript/modules/alert-dialog/AlertDialog.variants.d.ts +1 -1
  500. package/lib/typescript/modules/app-bar/AppBar.d.ts +37 -0
  501. package/lib/typescript/modules/app-bar/AppBar.variants.d.ts +35 -0
  502. package/lib/typescript/modules/app-bar/index.d.ts +9 -0
  503. package/lib/typescript/modules/avatar/Avatar.d.ts +23 -3
  504. package/lib/typescript/modules/avatar/Avatar.variants.d.ts +32 -1
  505. package/lib/typescript/modules/avatar/index.d.ts +1 -1
  506. package/lib/typescript/modules/avatar-group/AvatarGroup.d.ts +28 -0
  507. package/lib/typescript/modules/avatar-group/AvatarGroup.variants.d.ts +75 -0
  508. package/lib/typescript/modules/avatar-group/index.d.ts +9 -0
  509. package/lib/typescript/modules/badge/Badge.d.ts +3 -1
  510. package/lib/typescript/modules/badge/Badge.variants.d.ts +8 -4
  511. package/lib/typescript/modules/banner/Banner.d.ts +35 -0
  512. package/lib/typescript/modules/banner/Banner.variants.d.ts +49 -0
  513. package/lib/typescript/modules/banner/index.d.ts +5 -0
  514. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts +9 -8
  515. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts +22 -9
  516. package/lib/typescript/modules/bottom-nav/BottomNavTab.d.ts +34 -0
  517. package/lib/typescript/modules/bottom-sheet/BottomSheet.d.ts +29 -0
  518. package/lib/typescript/modules/bottom-sheet/BottomSheet.variants.d.ts +13 -0
  519. package/lib/typescript/modules/bottom-sheet/index.d.ts +3 -0
  520. package/lib/typescript/modules/button/Button.d.ts +21 -0
  521. package/lib/typescript/modules/button/Button.variants.d.ts +22 -9
  522. package/lib/typescript/modules/button-group/ButtonGroup.d.ts +4 -2
  523. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts +18 -5
  524. package/lib/typescript/modules/card/Card.variants.d.ts +2 -2
  525. package/lib/typescript/modules/charts/BarChart.d.ts +26 -0
  526. package/lib/typescript/modules/charts/ChartLegend.d.ts +16 -0
  527. package/lib/typescript/modules/charts/Charts.variants.d.ts +201 -2
  528. package/lib/typescript/modules/charts/DonutChart.d.ts +3 -0
  529. package/lib/typescript/modules/charts/LineChart.d.ts +30 -0
  530. package/lib/typescript/modules/charts/PieChart.d.ts +18 -0
  531. package/lib/typescript/modules/charts/index.d.ts +6 -0
  532. package/lib/typescript/modules/checkbox/Checkbox.d.ts +4 -1
  533. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts +14 -9
  534. package/lib/typescript/modules/chip/Chip.d.ts +38 -0
  535. package/lib/typescript/modules/chip/Chip.variants.d.ts +198 -0
  536. package/lib/typescript/modules/chip/ChipGroup.d.ts +22 -0
  537. package/lib/typescript/modules/chip/index.d.ts +12 -0
  538. package/lib/typescript/modules/combobox/Combobox.d.ts +81 -0
  539. package/lib/typescript/modules/combobox/Combobox.variants.d.ts +212 -0
  540. package/lib/typescript/modules/combobox/comboboxKeys.d.ts +25 -0
  541. package/lib/typescript/modules/combobox/comboboxKeys.web.d.ts +23 -0
  542. package/lib/typescript/modules/combobox/index.d.ts +11 -0
  543. package/lib/typescript/modules/composer/Composer.d.ts +28 -0
  544. package/lib/typescript/modules/composer/Composer.variants.d.ts +7 -0
  545. package/lib/typescript/modules/composer/index.d.ts +3 -0
  546. package/lib/typescript/modules/copy-button/CopyButton.d.ts +21 -0
  547. package/lib/typescript/modules/copy-button/CopyButton.variants.d.ts +42 -0
  548. package/lib/typescript/modules/copy-button/index.d.ts +4 -0
  549. package/lib/typescript/modules/data-table/DataTable.d.ts +44 -0
  550. package/lib/typescript/modules/data-table/DataTable.variants.d.ts +118 -0
  551. package/lib/typescript/modules/data-table/index.d.ts +9 -0
  552. package/lib/typescript/modules/date-picker/Calendar.d.ts +42 -0
  553. package/lib/typescript/modules/date-picker/Calendar.keys.d.ts +19 -0
  554. package/lib/typescript/modules/date-picker/Calendar.keys.web.d.ts +35 -0
  555. package/lib/typescript/modules/date-picker/DatePicker.d.ts +40 -0
  556. package/lib/typescript/modules/date-picker/DatePicker.variants.d.ts +322 -0
  557. package/lib/typescript/modules/date-picker/DateRangePicker.d.ts +32 -0
  558. package/lib/typescript/modules/date-picker/PickerField.d.ts +26 -0
  559. package/lib/typescript/modules/date-picker/PickerShell.d.ts +29 -0
  560. package/lib/typescript/modules/date-picker/TimePicker.d.ts +20 -0
  561. package/lib/typescript/modules/date-picker/index.d.ts +16 -0
  562. package/lib/typescript/modules/divider/Divider.variants.d.ts +2 -2
  563. package/lib/typescript/modules/drawer/Drawer.d.ts +2 -1
  564. package/lib/typescript/modules/drawer/Drawer.variants.d.ts +4 -13
  565. package/lib/typescript/modules/empty-state/EmptyState.d.ts +7 -4
  566. package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts +7 -1
  567. package/lib/typescript/modules/fab/Fab.d.ts +74 -0
  568. package/lib/typescript/modules/fab/Fab.variants.d.ts +229 -0
  569. package/lib/typescript/modules/fab/FabGroup.d.ts +66 -0
  570. package/lib/typescript/modules/fab/index.d.ts +12 -0
  571. package/lib/typescript/modules/file-grid/FileGrid.d.ts +26 -0
  572. package/lib/typescript/modules/file-grid/FileGrid.variants.d.ts +26 -0
  573. package/lib/typescript/modules/file-grid/index.d.ts +4 -0
  574. package/lib/typescript/modules/file-upload/FileUpload.d.ts +3 -0
  575. package/lib/typescript/modules/file-upload/FileUpload.variants.d.ts +22 -5
  576. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts +30 -5
  577. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts +13 -8
  578. package/lib/typescript/modules/folder-row/FolderRow.d.ts +24 -0
  579. package/lib/typescript/modules/folder-row/FolderRow.variants.d.ts +29 -0
  580. package/lib/typescript/modules/folder-row/index.d.ts +3 -0
  581. package/lib/typescript/modules/form-field/FormField.d.ts +29 -0
  582. package/lib/typescript/modules/form-field/FormField.variants.d.ts +93 -0
  583. package/lib/typescript/modules/form-field/index.d.ts +4 -0
  584. package/lib/typescript/modules/gantt/Gantt.d.ts +19 -0
  585. package/lib/typescript/modules/gantt/Gantt.variants.d.ts +82 -0
  586. package/lib/typescript/modules/gantt/index.d.ts +5 -0
  587. package/lib/typescript/modules/image-viewer/ImageViewer.d.ts +27 -0
  588. package/lib/typescript/modules/image-viewer/ImageViewer.variants.d.ts +3 -0
  589. package/lib/typescript/modules/image-viewer/index.d.ts +3 -0
  590. package/lib/typescript/modules/input/Input.d.ts +9 -1
  591. package/lib/typescript/modules/input/Input.variants.d.ts +26 -6
  592. package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.d.ts +34 -0
  593. package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.variants.d.ts +46 -0
  594. package/lib/typescript/modules/limit-reached-modal/index.d.ts +10 -0
  595. package/lib/typescript/modules/list-item/ListItem.d.ts +6 -0
  596. package/lib/typescript/modules/list-item/ListItem.variants.d.ts +1 -1
  597. package/lib/typescript/modules/markdown/Markdown.d.ts +6 -0
  598. package/lib/typescript/modules/markdown/Markdown.variants.d.ts +8 -2
  599. package/lib/typescript/modules/markdown/parseMarkdown.d.ts +3 -2
  600. package/lib/typescript/modules/menu/Menu.d.ts +8 -18
  601. package/lib/typescript/modules/menu/Menu.variants.d.ts +8 -1
  602. package/lib/typescript/modules/message-bubble/MessageBubble.d.ts +25 -0
  603. package/lib/typescript/modules/message-bubble/MessageBubble.variants.d.ts +31 -0
  604. package/lib/typescript/modules/message-bubble/index.d.ts +4 -0
  605. package/lib/typescript/modules/modal/Modal.d.ts +12 -0
  606. package/lib/typescript/modules/modal/Modal.variants.d.ts +1 -1
  607. package/lib/typescript/modules/more-items/MoreItems.d.ts +15 -0
  608. package/lib/typescript/modules/more-items/MoreItems.variants.d.ts +30 -0
  609. package/lib/typescript/modules/more-items/index.d.ts +4 -0
  610. package/lib/typescript/modules/multi-select/MultiSelect.d.ts +1 -16
  611. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts +24 -5
  612. package/lib/typescript/modules/number-input/NumberInput.d.ts +6 -0
  613. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts +57 -7
  614. package/lib/typescript/modules/org-switcher/OrgSwitcher.d.ts +44 -0
  615. package/lib/typescript/modules/org-switcher/OrgSwitcher.variants.d.ts +139 -0
  616. package/lib/typescript/modules/org-switcher/index.d.ts +8 -0
  617. package/lib/typescript/modules/pagination/Pagination.d.ts +45 -0
  618. package/lib/typescript/modules/pagination/Pagination.variants.d.ts +240 -0
  619. package/lib/typescript/modules/pagination/PaginationControls.d.ts +50 -0
  620. package/lib/typescript/modules/pagination/index.d.ts +14 -0
  621. package/lib/typescript/modules/pin-input/PinInput.d.ts +6 -0
  622. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts +22 -5
  623. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts +8 -4
  624. package/lib/typescript/modules/progress-bar/ProgressBar.variants.d.ts +13 -15
  625. package/lib/typescript/modules/radio-group/RadioGroup.d.ts +6 -0
  626. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts +32 -11
  627. package/lib/typescript/modules/reorder/Reorder.d.ts +28 -23
  628. package/lib/typescript/modules/reorder/Reorder.variants.d.ts +25 -9
  629. package/lib/typescript/modules/rich-text/RichText.d.ts +15 -0
  630. package/lib/typescript/modules/rich-text/RichText.variants.d.ts +15 -0
  631. package/lib/typescript/modules/rich-text/index.d.ts +5 -0
  632. package/lib/typescript/modules/rich-text/parseRichText.d.ts +30 -0
  633. package/lib/typescript/modules/rich-text-editor/RichTextEditor.d.ts +62 -0
  634. package/lib/typescript/modules/rich-text-editor/RichTextEditor.variants.d.ts +139 -0
  635. package/lib/typescript/modules/rich-text-editor/index.d.ts +9 -0
  636. package/lib/typescript/modules/screen/Screen.d.ts +36 -0
  637. package/lib/typescript/modules/screen/Screen.variants.d.ts +21 -0
  638. package/lib/typescript/modules/screen/index.d.ts +9 -0
  639. package/lib/typescript/modules/search-bar/SearchBar.d.ts +47 -0
  640. package/lib/typescript/modules/search-bar/SearchBar.variants.d.ts +179 -0
  641. package/lib/typescript/modules/search-bar/index.d.ts +11 -0
  642. package/lib/typescript/modules/section/Section.d.ts +17 -0
  643. package/lib/typescript/modules/section/Section.variants.d.ts +12 -0
  644. package/lib/typescript/modules/section/index.d.ts +8 -0
  645. package/lib/typescript/modules/section-list/SectionList.d.ts +26 -0
  646. package/lib/typescript/modules/section-list/SectionList.variants.d.ts +3 -0
  647. package/lib/typescript/modules/section-list/index.d.ts +3 -0
  648. package/lib/typescript/modules/segmented-control/SegmentedControl.d.ts +45 -0
  649. package/lib/typescript/modules/segmented-control/SegmentedControl.variants.d.ts +143 -0
  650. package/lib/typescript/modules/segmented-control/index.d.ts +11 -0
  651. package/lib/typescript/modules/select/Select.d.ts +1 -14
  652. package/lib/typescript/modules/select/Select.variants.d.ts +24 -5
  653. package/lib/typescript/modules/skeleton/Skeleton.d.ts +5 -0
  654. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts +10 -9
  655. package/lib/typescript/modules/slider/Slider.variants.d.ts +35 -14
  656. package/lib/typescript/modules/spinner/Spinner.variants.d.ts +6 -4
  657. package/lib/typescript/modules/stage-progress/StageProgress.d.ts +18 -0
  658. package/lib/typescript/modules/stage-progress/StageProgress.variants.d.ts +98 -0
  659. package/lib/typescript/modules/stage-progress/index.d.ts +4 -0
  660. package/lib/typescript/modules/stat-tile/StatTile.d.ts +4 -0
  661. package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts +7 -5
  662. package/lib/typescript/modules/state-block/StateBlock.d.ts +51 -0
  663. package/lib/typescript/modules/state-block/StateBlock.variants.d.ts +30 -0
  664. package/lib/typescript/modules/state-block/index.d.ts +10 -0
  665. package/lib/typescript/modules/stepper/Stepper.d.ts +4 -0
  666. package/lib/typescript/modules/stepper/Stepper.variants.d.ts +7 -7
  667. package/lib/typescript/modules/swipeable-row/SwipeableRow.d.ts +35 -0
  668. package/lib/typescript/modules/swipeable-row/SwipeableRow.variants.d.ts +27 -0
  669. package/lib/typescript/modules/swipeable-row/index.d.ts +4 -0
  670. package/lib/typescript/modules/switch/Switch.variants.d.ts +9 -1
  671. package/lib/typescript/modules/tabs/Tabs.d.ts +8 -6
  672. package/lib/typescript/modules/tabs/Tabs.variants.d.ts +20 -7
  673. package/lib/typescript/modules/text/Text.d.ts +23 -0
  674. package/lib/typescript/modules/text/Text.variants.d.ts +18 -0
  675. package/lib/typescript/modules/text/index.d.ts +4 -0
  676. package/lib/typescript/modules/textarea/Textarea.d.ts +5 -0
  677. package/lib/typescript/modules/textarea/Textarea.variants.d.ts +15 -8
  678. package/lib/typescript/modules/timeline/Timeline.d.ts +9 -13
  679. package/lib/typescript/modules/timeline/Timeline.variants.d.ts +17 -1
  680. package/lib/typescript/modules/toast/Toast.d.ts +13 -3
  681. package/lib/typescript/modules/toast/Toast.variants.d.ts +31 -3
  682. package/lib/typescript/modules/toast/index.d.ts +1 -1
  683. package/lib/typescript/modules/toast/toastScreenReader.d.ts +22 -0
  684. package/lib/typescript/modules/tooltip/Tooltip.d.ts +34 -11
  685. package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts +4 -5
  686. package/lib/typescript/modules/typing-indicator/TypingIndicator.d.ts +28 -0
  687. package/lib/typescript/modules/typing-indicator/TypingIndicator.variants.d.ts +32 -0
  688. package/lib/typescript/modules/typing-indicator/index.d.ts +4 -0
  689. package/lib/typescript/modules/unread-badge/UnreadBadge.d.ts +15 -0
  690. package/lib/typescript/modules/unread-badge/UnreadBadge.variants.d.ts +56 -0
  691. package/lib/typescript/modules/unread-badge/index.d.ts +4 -0
  692. package/lib/typescript/test/mocks/flashList.d.ts +3 -0
  693. package/lib/typescript/test/perfHelpers.d.ts +9 -0
  694. package/lib/typescript/theme/hooks.d.ts +11 -0
  695. package/lib/typescript/theme/index.d.ts +3 -2
  696. package/lib/typescript/theme/platform/motion.native.d.ts +15 -0
  697. package/lib/typescript/theme/provider/PixelizeProvider.d.ts +3 -80
  698. package/lib/typescript/theme/provider/ThemeContext.d.ts +4 -0
  699. package/lib/typescript/theme/provider/index.d.ts +2 -1
  700. package/lib/typescript/theme/provider/loadPalette.d.ts +9 -0
  701. package/lib/typescript/theme/provider/types.d.ts +41 -0
  702. package/lib/typescript/theme/provider/useTheme.d.ts +1 -2
  703. package/lib/typescript/theme/provider/useThemeMode.d.ts +1 -1
  704. package/lib/typescript/theme/tokens/roles/index.d.ts +7 -0
  705. package/package.json +193 -19
  706. package/registry.json +172 -2
  707. package/lib/module/core/a11y/index.js.map +0 -1
  708. package/lib/module/core/icon/index.js.map +0 -1
  709. package/lib/module/core/style/index.js.map +0 -1
  710. package/lib/module/core/style/layoutStyle.js.map +0 -1
  711. package/lib/module/core/style/variants.js.map +0 -1
  712. package/lib/module/index.js.map +0 -1
  713. package/lib/module/modules/accordion/Accordion.js.map +0 -1
  714. package/lib/module/modules/accordion/Accordion.variants.js.map +0 -1
  715. package/lib/module/modules/accordion/index.js.map +0 -1
  716. package/lib/module/modules/alert-dialog/AlertDialog.js.map +0 -1
  717. package/lib/module/modules/alert-dialog/AlertDialog.variants.js.map +0 -1
  718. package/lib/module/modules/alert-dialog/index.js.map +0 -1
  719. package/lib/module/modules/avatar/Avatar.js.map +0 -1
  720. package/lib/module/modules/avatar/Avatar.variants.js.map +0 -1
  721. package/lib/module/modules/avatar/index.js.map +0 -1
  722. package/lib/module/modules/badge/Badge.js.map +0 -1
  723. package/lib/module/modules/badge/Badge.variants.js.map +0 -1
  724. package/lib/module/modules/badge/index.js.map +0 -1
  725. package/lib/module/modules/bottom-nav/BottomNav.js.map +0 -1
  726. package/lib/module/modules/bottom-nav/BottomNav.search.js.map +0 -1
  727. package/lib/module/modules/bottom-nav/BottomNav.variants.js.map +0 -1
  728. package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js.map +0 -1
  729. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js.map +0 -1
  730. package/lib/module/modules/bottom-nav/index.js.map +0 -1
  731. package/lib/module/modules/button/Button.js.map +0 -1
  732. package/lib/module/modules/button/Button.variants.js.map +0 -1
  733. package/lib/module/modules/button/index.js.map +0 -1
  734. package/lib/module/modules/button-group/ButtonGroup.js.map +0 -1
  735. package/lib/module/modules/button-group/ButtonGroup.variants.js.map +0 -1
  736. package/lib/module/modules/button-group/index.js.map +0 -1
  737. package/lib/module/modules/card/Card.js.map +0 -1
  738. package/lib/module/modules/card/Card.variants.js.map +0 -1
  739. package/lib/module/modules/card/index.js.map +0 -1
  740. package/lib/module/modules/charts/BarList.js.map +0 -1
  741. package/lib/module/modules/charts/Charts.variants.js.map +0 -1
  742. package/lib/module/modules/charts/DonutChart.js.map +0 -1
  743. package/lib/module/modules/charts/Sparkline.js.map +0 -1
  744. package/lib/module/modules/charts/index.js.map +0 -1
  745. package/lib/module/modules/checkbox/Checkbox.js.map +0 -1
  746. package/lib/module/modules/checkbox/Checkbox.variants.js.map +0 -1
  747. package/lib/module/modules/checkbox/index.js.map +0 -1
  748. package/lib/module/modules/divider/Divider.js.map +0 -1
  749. package/lib/module/modules/divider/Divider.variants.js.map +0 -1
  750. package/lib/module/modules/divider/index.js.map +0 -1
  751. package/lib/module/modules/drawer/Drawer.js.map +0 -1
  752. package/lib/module/modules/drawer/Drawer.variants.js.map +0 -1
  753. package/lib/module/modules/drawer/index.js.map +0 -1
  754. package/lib/module/modules/empty-state/EmptyState.js.map +0 -1
  755. package/lib/module/modules/empty-state/EmptyState.variants.js.map +0 -1
  756. package/lib/module/modules/empty-state/index.js.map +0 -1
  757. package/lib/module/modules/file-upload/FileUpload.js.map +0 -1
  758. package/lib/module/modules/file-upload/FileUpload.variants.js.map +0 -1
  759. package/lib/module/modules/file-upload/index.js.map +0 -1
  760. package/lib/module/modules/filter-sheet/FilterChip.js.map +0 -1
  761. package/lib/module/modules/filter-sheet/FilterSheet.js.map +0 -1
  762. package/lib/module/modules/filter-sheet/FilterSheet.variants.js.map +0 -1
  763. package/lib/module/modules/filter-sheet/FilterSheetBody.js.map +0 -1
  764. package/lib/module/modules/filter-sheet/filterSheet.helpers.js.map +0 -1
  765. package/lib/module/modules/filter-sheet/index.js.map +0 -1
  766. package/lib/module/modules/input/Input.js.map +0 -1
  767. package/lib/module/modules/input/Input.variants.js.map +0 -1
  768. package/lib/module/modules/input/index.js.map +0 -1
  769. package/lib/module/modules/list-item/ListItem.js.map +0 -1
  770. package/lib/module/modules/list-item/ListItem.variants.js.map +0 -1
  771. package/lib/module/modules/list-item/index.js.map +0 -1
  772. package/lib/module/modules/markdown/Markdown.js.map +0 -1
  773. package/lib/module/modules/markdown/Markdown.variants.js.map +0 -1
  774. package/lib/module/modules/markdown/index.js.map +0 -1
  775. package/lib/module/modules/markdown/parseMarkdown.js.map +0 -1
  776. package/lib/module/modules/menu/Menu.js.map +0 -1
  777. package/lib/module/modules/menu/Menu.variants.js.map +0 -1
  778. package/lib/module/modules/menu/index.js.map +0 -1
  779. package/lib/module/modules/modal/Modal.js.map +0 -1
  780. package/lib/module/modules/modal/Modal.variants.js.map +0 -1
  781. package/lib/module/modules/modal/ModalPortalContext.js.map +0 -1
  782. package/lib/module/modules/modal/ModalPortalProvider.js.map +0 -1
  783. package/lib/module/modules/modal/index.js.map +0 -1
  784. package/lib/module/modules/modal/renderWebPortal.js.map +0 -1
  785. package/lib/module/modules/modal/renderWebPortal.web.js.map +0 -1
  786. package/lib/module/modules/multi-select/MultiSelect.js.map +0 -1
  787. package/lib/module/modules/multi-select/MultiSelect.variants.js.map +0 -1
  788. package/lib/module/modules/multi-select/index.js.map +0 -1
  789. package/lib/module/modules/number-input/NumberInput.js.map +0 -1
  790. package/lib/module/modules/number-input/NumberInput.variants.js.map +0 -1
  791. package/lib/module/modules/number-input/index.js.map +0 -1
  792. package/lib/module/modules/pin-input/PinInput.js.map +0 -1
  793. package/lib/module/modules/pin-input/PinInput.variants.js.map +0 -1
  794. package/lib/module/modules/pin-input/index.js.map +0 -1
  795. package/lib/module/modules/progress-bar/ProgressBar.js.map +0 -1
  796. package/lib/module/modules/progress-bar/ProgressBar.variants.js.map +0 -1
  797. package/lib/module/modules/progress-bar/index.js.map +0 -1
  798. package/lib/module/modules/radio-group/RadioGroup.js.map +0 -1
  799. package/lib/module/modules/radio-group/RadioGroup.variants.js.map +0 -1
  800. package/lib/module/modules/radio-group/index.js.map +0 -1
  801. package/lib/module/modules/reorder/Reorder.js.map +0 -1
  802. package/lib/module/modules/reorder/Reorder.variants.js.map +0 -1
  803. package/lib/module/modules/reorder/index.js.map +0 -1
  804. package/lib/module/modules/select/Select.js.map +0 -1
  805. package/lib/module/modules/select/Select.variants.js.map +0 -1
  806. package/lib/module/modules/select/index.js.map +0 -1
  807. package/lib/module/modules/skeleton/Skeleton.js.map +0 -1
  808. package/lib/module/modules/skeleton/Skeleton.variants.js.map +0 -1
  809. package/lib/module/modules/skeleton/index.js.map +0 -1
  810. package/lib/module/modules/slider/Slider.js.map +0 -1
  811. package/lib/module/modules/slider/Slider.variants.js.map +0 -1
  812. package/lib/module/modules/slider/index.js.map +0 -1
  813. package/lib/module/modules/spinner/Spinner.js.map +0 -1
  814. package/lib/module/modules/spinner/Spinner.variants.js.map +0 -1
  815. package/lib/module/modules/spinner/index.js.map +0 -1
  816. package/lib/module/modules/stat-tile/StatTile.js.map +0 -1
  817. package/lib/module/modules/stat-tile/StatTile.variants.js.map +0 -1
  818. package/lib/module/modules/stat-tile/index.js.map +0 -1
  819. package/lib/module/modules/stepper/Stepper.js.map +0 -1
  820. package/lib/module/modules/stepper/Stepper.variants.js.map +0 -1
  821. package/lib/module/modules/stepper/index.js.map +0 -1
  822. package/lib/module/modules/switch/Switch.js.map +0 -1
  823. package/lib/module/modules/switch/Switch.variants.js.map +0 -1
  824. package/lib/module/modules/switch/index.js.map +0 -1
  825. package/lib/module/modules/tabs/Tabs.js.map +0 -1
  826. package/lib/module/modules/tabs/Tabs.variants.js.map +0 -1
  827. package/lib/module/modules/tabs/index.js.map +0 -1
  828. package/lib/module/modules/textarea/Textarea.js.map +0 -1
  829. package/lib/module/modules/textarea/Textarea.variants.js.map +0 -1
  830. package/lib/module/modules/textarea/index.js.map +0 -1
  831. package/lib/module/modules/timeline/Timeline.js.map +0 -1
  832. package/lib/module/modules/timeline/Timeline.variants.js.map +0 -1
  833. package/lib/module/modules/timeline/index.js.map +0 -1
  834. package/lib/module/modules/toast/Toast.js.map +0 -1
  835. package/lib/module/modules/toast/Toast.variants.js.map +0 -1
  836. package/lib/module/modules/toast/index.js.map +0 -1
  837. package/lib/module/modules/tooltip/Tooltip.js.map +0 -1
  838. package/lib/module/modules/tooltip/Tooltip.variants.js.map +0 -1
  839. package/lib/module/modules/tooltip/index.js.map +0 -1
  840. package/lib/module/theme/index.js.map +0 -1
  841. package/lib/module/theme/platform/colorScheme.native.js.map +0 -1
  842. package/lib/module/theme/platform/elevation.native.js.map +0 -1
  843. package/lib/module/theme/platform/fonts.native.js.map +0 -1
  844. package/lib/module/theme/platform/index.js.map +0 -1
  845. package/lib/module/theme/platform/units.native.js.map +0 -1
  846. package/lib/module/theme/provider/PixelizeProvider.js.map +0 -1
  847. package/lib/module/theme/provider/colorModeStorage.js.map +0 -1
  848. package/lib/module/theme/provider/index.js.map +0 -1
  849. package/lib/module/theme/provider/useTheme.js.map +0 -1
  850. package/lib/module/theme/provider/useThemeColors.js.map +0 -1
  851. package/lib/module/theme/provider/useThemeMode.js.map +0 -1
  852. package/lib/module/theme/tokens/brands/emerald/palette.dark.js.map +0 -1
  853. package/lib/module/theme/tokens/brands/emerald/palette.light.js.map +0 -1
  854. package/lib/module/theme/tokens/brands/index.js.map +0 -1
  855. package/lib/module/theme/tokens/brands/lavender/palette.dark.js.map +0 -1
  856. package/lib/module/theme/tokens/brands/lavender/palette.light.js.map +0 -1
  857. package/lib/module/theme/tokens/brands/meadow/palette.dark.js.map +0 -1
  858. package/lib/module/theme/tokens/brands/meadow/palette.light.js.map +0 -1
  859. package/lib/module/theme/tokens/brands/radiant/palette.dark.js.map +0 -1
  860. package/lib/module/theme/tokens/brands/radiant/palette.light.js.map +0 -1
  861. package/lib/module/theme/tokens/brands/rosewood/palette.dark.js.map +0 -1
  862. package/lib/module/theme/tokens/brands/rosewood/palette.light.js.map +0 -1
  863. package/lib/module/theme/tokens/brands/skyline/palette.dark.js.map +0 -1
  864. package/lib/module/theme/tokens/brands/skyline/palette.light.js.map +0 -1
  865. package/lib/module/theme/tokens/brands/slate/palette.dark.js.map +0 -1
  866. package/lib/module/theme/tokens/brands/slate/palette.light.js.map +0 -1
  867. package/lib/module/theme/tokens/brands/storefront/palette.dark.js.map +0 -1
  868. package/lib/module/theme/tokens/brands/storefront/palette.light.js.map +0 -1
  869. package/lib/module/theme/tokens/brands/zinc/palette.dark.js.map +0 -1
  870. package/lib/module/theme/tokens/brands/zinc/palette.light.js.map +0 -1
  871. package/lib/module/theme/tokens/builders/accentText.js.map +0 -1
  872. package/lib/module/theme/tokens/builders/buildBrandTokens.js.map +0 -1
  873. package/lib/module/theme/tokens/builders/buildDarkPalette.js.map +0 -1
  874. package/lib/module/theme/tokens/builders/color.js.map +0 -1
  875. package/lib/module/theme/tokens/index.js.map +0 -1
  876. package/lib/module/theme/tokens/primitives/borderWidths.js.map +0 -1
  877. package/lib/module/theme/tokens/primitives/breakpoints.js.map +0 -1
  878. package/lib/module/theme/tokens/primitives/elevation.js.map +0 -1
  879. package/lib/module/theme/tokens/primitives/fontSizes.js.map +0 -1
  880. package/lib/module/theme/tokens/primitives/fontWeights.js.map +0 -1
  881. package/lib/module/theme/tokens/primitives/index.js.map +0 -1
  882. package/lib/module/theme/tokens/primitives/letterSpacings.js.map +0 -1
  883. package/lib/module/theme/tokens/primitives/lineHeights.js.map +0 -1
  884. package/lib/module/theme/tokens/primitives/radii.js.map +0 -1
  885. package/lib/module/theme/tokens/primitives/sizes.js.map +0 -1
  886. package/lib/module/theme/tokens/primitives/space.js.map +0 -1
  887. package/lib/module/theme/tokens/primitives/zIndices.js.map +0 -1
  888. package/lib/module/theme/tokens/roles/index.js.map +0 -1
  889. package/lib/module/theme/tokens/types.js.map +0 -1
  890. package/lib/typescript/core/a11y/index.d.ts.map +0 -1
  891. package/lib/typescript/core/icon/index.d.ts.map +0 -1
  892. package/lib/typescript/core/style/index.d.ts.map +0 -1
  893. package/lib/typescript/core/style/layoutStyle.d.ts.map +0 -1
  894. package/lib/typescript/core/style/variants.d.ts.map +0 -1
  895. package/lib/typescript/index.d.ts.map +0 -1
  896. package/lib/typescript/modules/accordion/Accordion.d.ts.map +0 -1
  897. package/lib/typescript/modules/accordion/Accordion.variants.d.ts.map +0 -1
  898. package/lib/typescript/modules/accordion/index.d.ts.map +0 -1
  899. package/lib/typescript/modules/alert-dialog/AlertDialog.d.ts.map +0 -1
  900. package/lib/typescript/modules/alert-dialog/AlertDialog.variants.d.ts.map +0 -1
  901. package/lib/typescript/modules/alert-dialog/index.d.ts.map +0 -1
  902. package/lib/typescript/modules/avatar/Avatar.d.ts.map +0 -1
  903. package/lib/typescript/modules/avatar/Avatar.variants.d.ts.map +0 -1
  904. package/lib/typescript/modules/avatar/index.d.ts.map +0 -1
  905. package/lib/typescript/modules/badge/Badge.d.ts.map +0 -1
  906. package/lib/typescript/modules/badge/Badge.variants.d.ts.map +0 -1
  907. package/lib/typescript/modules/badge/index.d.ts.map +0 -1
  908. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts.map +0 -1
  909. package/lib/typescript/modules/bottom-nav/BottomNav.search.d.ts.map +0 -1
  910. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts.map +0 -1
  911. package/lib/typescript/modules/bottom-nav/BottomNavIconWithBadge.d.ts.map +0 -1
  912. package/lib/typescript/modules/bottom-nav/BottomNavOverflowSheet.d.ts.map +0 -1
  913. package/lib/typescript/modules/bottom-nav/index.d.ts.map +0 -1
  914. package/lib/typescript/modules/button/Button.d.ts.map +0 -1
  915. package/lib/typescript/modules/button/Button.variants.d.ts.map +0 -1
  916. package/lib/typescript/modules/button/index.d.ts.map +0 -1
  917. package/lib/typescript/modules/button-group/ButtonGroup.d.ts.map +0 -1
  918. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts.map +0 -1
  919. package/lib/typescript/modules/button-group/index.d.ts.map +0 -1
  920. package/lib/typescript/modules/card/Card.d.ts.map +0 -1
  921. package/lib/typescript/modules/card/Card.variants.d.ts.map +0 -1
  922. package/lib/typescript/modules/card/index.d.ts.map +0 -1
  923. package/lib/typescript/modules/charts/BarList.d.ts.map +0 -1
  924. package/lib/typescript/modules/charts/Charts.variants.d.ts.map +0 -1
  925. package/lib/typescript/modules/charts/DonutChart.d.ts.map +0 -1
  926. package/lib/typescript/modules/charts/Sparkline.d.ts.map +0 -1
  927. package/lib/typescript/modules/charts/index.d.ts.map +0 -1
  928. package/lib/typescript/modules/checkbox/Checkbox.d.ts.map +0 -1
  929. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts.map +0 -1
  930. package/lib/typescript/modules/checkbox/index.d.ts.map +0 -1
  931. package/lib/typescript/modules/divider/Divider.d.ts.map +0 -1
  932. package/lib/typescript/modules/divider/Divider.variants.d.ts.map +0 -1
  933. package/lib/typescript/modules/divider/index.d.ts.map +0 -1
  934. package/lib/typescript/modules/drawer/Drawer.d.ts.map +0 -1
  935. package/lib/typescript/modules/drawer/Drawer.variants.d.ts.map +0 -1
  936. package/lib/typescript/modules/drawer/index.d.ts.map +0 -1
  937. package/lib/typescript/modules/empty-state/EmptyState.d.ts.map +0 -1
  938. package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts.map +0 -1
  939. package/lib/typescript/modules/empty-state/index.d.ts.map +0 -1
  940. package/lib/typescript/modules/file-upload/FileUpload.d.ts.map +0 -1
  941. package/lib/typescript/modules/file-upload/FileUpload.variants.d.ts.map +0 -1
  942. package/lib/typescript/modules/file-upload/index.d.ts.map +0 -1
  943. package/lib/typescript/modules/filter-sheet/FilterChip.d.ts.map +0 -1
  944. package/lib/typescript/modules/filter-sheet/FilterSheet.d.ts.map +0 -1
  945. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts.map +0 -1
  946. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts.map +0 -1
  947. package/lib/typescript/modules/filter-sheet/filterSheet.helpers.d.ts.map +0 -1
  948. package/lib/typescript/modules/filter-sheet/index.d.ts.map +0 -1
  949. package/lib/typescript/modules/input/Input.d.ts.map +0 -1
  950. package/lib/typescript/modules/input/Input.variants.d.ts.map +0 -1
  951. package/lib/typescript/modules/input/index.d.ts.map +0 -1
  952. package/lib/typescript/modules/list-item/ListItem.d.ts.map +0 -1
  953. package/lib/typescript/modules/list-item/ListItem.variants.d.ts.map +0 -1
  954. package/lib/typescript/modules/list-item/index.d.ts.map +0 -1
  955. package/lib/typescript/modules/markdown/Markdown.d.ts.map +0 -1
  956. package/lib/typescript/modules/markdown/Markdown.variants.d.ts.map +0 -1
  957. package/lib/typescript/modules/markdown/index.d.ts.map +0 -1
  958. package/lib/typescript/modules/markdown/parseMarkdown.d.ts.map +0 -1
  959. package/lib/typescript/modules/menu/Menu.d.ts.map +0 -1
  960. package/lib/typescript/modules/menu/Menu.variants.d.ts.map +0 -1
  961. package/lib/typescript/modules/menu/index.d.ts.map +0 -1
  962. package/lib/typescript/modules/modal/Modal.d.ts.map +0 -1
  963. package/lib/typescript/modules/modal/Modal.variants.d.ts.map +0 -1
  964. package/lib/typescript/modules/modal/ModalPortalContext.d.ts.map +0 -1
  965. package/lib/typescript/modules/modal/ModalPortalProvider.d.ts.map +0 -1
  966. package/lib/typescript/modules/modal/index.d.ts.map +0 -1
  967. package/lib/typescript/modules/modal/renderWebPortal.d.ts.map +0 -1
  968. package/lib/typescript/modules/modal/renderWebPortal.web.d.ts.map +0 -1
  969. package/lib/typescript/modules/multi-select/MultiSelect.d.ts.map +0 -1
  970. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts.map +0 -1
  971. package/lib/typescript/modules/multi-select/index.d.ts.map +0 -1
  972. package/lib/typescript/modules/number-input/NumberInput.d.ts.map +0 -1
  973. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts.map +0 -1
  974. package/lib/typescript/modules/number-input/index.d.ts.map +0 -1
  975. package/lib/typescript/modules/pin-input/PinInput.d.ts.map +0 -1
  976. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts.map +0 -1
  977. package/lib/typescript/modules/pin-input/index.d.ts.map +0 -1
  978. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts.map +0 -1
  979. package/lib/typescript/modules/progress-bar/ProgressBar.variants.d.ts.map +0 -1
  980. package/lib/typescript/modules/progress-bar/index.d.ts.map +0 -1
  981. package/lib/typescript/modules/radio-group/RadioGroup.d.ts.map +0 -1
  982. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts.map +0 -1
  983. package/lib/typescript/modules/radio-group/index.d.ts.map +0 -1
  984. package/lib/typescript/modules/reorder/Reorder.d.ts.map +0 -1
  985. package/lib/typescript/modules/reorder/Reorder.variants.d.ts.map +0 -1
  986. package/lib/typescript/modules/reorder/index.d.ts.map +0 -1
  987. package/lib/typescript/modules/select/Select.d.ts.map +0 -1
  988. package/lib/typescript/modules/select/Select.variants.d.ts.map +0 -1
  989. package/lib/typescript/modules/select/index.d.ts.map +0 -1
  990. package/lib/typescript/modules/skeleton/Skeleton.d.ts.map +0 -1
  991. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts.map +0 -1
  992. package/lib/typescript/modules/skeleton/index.d.ts.map +0 -1
  993. package/lib/typescript/modules/slider/Slider.d.ts.map +0 -1
  994. package/lib/typescript/modules/slider/Slider.variants.d.ts.map +0 -1
  995. package/lib/typescript/modules/slider/index.d.ts.map +0 -1
  996. package/lib/typescript/modules/spinner/Spinner.d.ts.map +0 -1
  997. package/lib/typescript/modules/spinner/Spinner.variants.d.ts.map +0 -1
  998. package/lib/typescript/modules/spinner/index.d.ts.map +0 -1
  999. package/lib/typescript/modules/stat-tile/StatTile.d.ts.map +0 -1
  1000. package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts.map +0 -1
  1001. package/lib/typescript/modules/stat-tile/index.d.ts.map +0 -1
  1002. package/lib/typescript/modules/stepper/Stepper.d.ts.map +0 -1
  1003. package/lib/typescript/modules/stepper/Stepper.variants.d.ts.map +0 -1
  1004. package/lib/typescript/modules/stepper/index.d.ts.map +0 -1
  1005. package/lib/typescript/modules/switch/Switch.d.ts.map +0 -1
  1006. package/lib/typescript/modules/switch/Switch.variants.d.ts.map +0 -1
  1007. package/lib/typescript/modules/switch/index.d.ts.map +0 -1
  1008. package/lib/typescript/modules/tabs/Tabs.d.ts.map +0 -1
  1009. package/lib/typescript/modules/tabs/Tabs.variants.d.ts.map +0 -1
  1010. package/lib/typescript/modules/tabs/index.d.ts.map +0 -1
  1011. package/lib/typescript/modules/textarea/Textarea.d.ts.map +0 -1
  1012. package/lib/typescript/modules/textarea/Textarea.variants.d.ts.map +0 -1
  1013. package/lib/typescript/modules/textarea/index.d.ts.map +0 -1
  1014. package/lib/typescript/modules/timeline/Timeline.d.ts.map +0 -1
  1015. package/lib/typescript/modules/timeline/Timeline.variants.d.ts.map +0 -1
  1016. package/lib/typescript/modules/timeline/index.d.ts.map +0 -1
  1017. package/lib/typescript/modules/toast/Toast.d.ts.map +0 -1
  1018. package/lib/typescript/modules/toast/Toast.variants.d.ts.map +0 -1
  1019. package/lib/typescript/modules/toast/index.d.ts.map +0 -1
  1020. package/lib/typescript/modules/tooltip/Tooltip.d.ts.map +0 -1
  1021. package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts.map +0 -1
  1022. package/lib/typescript/modules/tooltip/index.d.ts.map +0 -1
  1023. package/lib/typescript/theme/index.d.ts.map +0 -1
  1024. package/lib/typescript/theme/platform/colorScheme.native.d.ts.map +0 -1
  1025. package/lib/typescript/theme/platform/elevation.native.d.ts.map +0 -1
  1026. package/lib/typescript/theme/platform/fonts.native.d.ts.map +0 -1
  1027. package/lib/typescript/theme/platform/index.d.ts.map +0 -1
  1028. package/lib/typescript/theme/platform/units.native.d.ts.map +0 -1
  1029. package/lib/typescript/theme/provider/PixelizeProvider.d.ts.map +0 -1
  1030. package/lib/typescript/theme/provider/colorModeStorage.d.ts.map +0 -1
  1031. package/lib/typescript/theme/provider/index.d.ts.map +0 -1
  1032. package/lib/typescript/theme/provider/useTheme.d.ts.map +0 -1
  1033. package/lib/typescript/theme/provider/useThemeColors.d.ts.map +0 -1
  1034. package/lib/typescript/theme/provider/useThemeMode.d.ts.map +0 -1
  1035. package/lib/typescript/theme/tokens/brands/emerald/palette.dark.d.ts.map +0 -1
  1036. package/lib/typescript/theme/tokens/brands/emerald/palette.light.d.ts.map +0 -1
  1037. package/lib/typescript/theme/tokens/brands/index.d.ts.map +0 -1
  1038. package/lib/typescript/theme/tokens/brands/lavender/palette.dark.d.ts.map +0 -1
  1039. package/lib/typescript/theme/tokens/brands/lavender/palette.light.d.ts.map +0 -1
  1040. package/lib/typescript/theme/tokens/brands/meadow/palette.dark.d.ts.map +0 -1
  1041. package/lib/typescript/theme/tokens/brands/meadow/palette.light.d.ts.map +0 -1
  1042. package/lib/typescript/theme/tokens/brands/radiant/palette.dark.d.ts.map +0 -1
  1043. package/lib/typescript/theme/tokens/brands/radiant/palette.light.d.ts.map +0 -1
  1044. package/lib/typescript/theme/tokens/brands/rosewood/palette.dark.d.ts.map +0 -1
  1045. package/lib/typescript/theme/tokens/brands/rosewood/palette.light.d.ts.map +0 -1
  1046. package/lib/typescript/theme/tokens/brands/skyline/palette.dark.d.ts.map +0 -1
  1047. package/lib/typescript/theme/tokens/brands/skyline/palette.light.d.ts.map +0 -1
  1048. package/lib/typescript/theme/tokens/brands/slate/palette.dark.d.ts.map +0 -1
  1049. package/lib/typescript/theme/tokens/brands/slate/palette.light.d.ts.map +0 -1
  1050. package/lib/typescript/theme/tokens/brands/storefront/palette.dark.d.ts.map +0 -1
  1051. package/lib/typescript/theme/tokens/brands/storefront/palette.light.d.ts.map +0 -1
  1052. package/lib/typescript/theme/tokens/brands/zinc/palette.dark.d.ts.map +0 -1
  1053. package/lib/typescript/theme/tokens/brands/zinc/palette.light.d.ts.map +0 -1
  1054. package/lib/typescript/theme/tokens/builders/accentText.d.ts.map +0 -1
  1055. package/lib/typescript/theme/tokens/builders/buildBrandTokens.d.ts.map +0 -1
  1056. package/lib/typescript/theme/tokens/builders/buildDarkPalette.d.ts.map +0 -1
  1057. package/lib/typescript/theme/tokens/builders/color.d.ts.map +0 -1
  1058. package/lib/typescript/theme/tokens/index.d.ts.map +0 -1
  1059. package/lib/typescript/theme/tokens/primitives/borderWidths.d.ts.map +0 -1
  1060. package/lib/typescript/theme/tokens/primitives/breakpoints.d.ts.map +0 -1
  1061. package/lib/typescript/theme/tokens/primitives/elevation.d.ts.map +0 -1
  1062. package/lib/typescript/theme/tokens/primitives/fontSizes.d.ts.map +0 -1
  1063. package/lib/typescript/theme/tokens/primitives/fontWeights.d.ts.map +0 -1
  1064. package/lib/typescript/theme/tokens/primitives/index.d.ts.map +0 -1
  1065. package/lib/typescript/theme/tokens/primitives/letterSpacings.d.ts.map +0 -1
  1066. package/lib/typescript/theme/tokens/primitives/lineHeights.d.ts.map +0 -1
  1067. package/lib/typescript/theme/tokens/primitives/radii.d.ts.map +0 -1
  1068. package/lib/typescript/theme/tokens/primitives/sizes.d.ts.map +0 -1
  1069. package/lib/typescript/theme/tokens/primitives/space.d.ts.map +0 -1
  1070. package/lib/typescript/theme/tokens/primitives/zIndices.d.ts.map +0 -1
  1071. package/lib/typescript/theme/tokens/roles/index.d.ts.map +0 -1
  1072. package/lib/typescript/theme/tokens/types.d.ts.map +0 -1
@@ -0,0 +1,225 @@
1
+ # rich-text-editor/ — a themed native rich-text editor (bold/lists/quote/code/link/image/@mention)
2
+
3
+ `RichTextEditor` wraps Software Mansion's `react-native-enriched-html` (`EnrichedTextInput`, a native
4
+ Fabric editor) with this library's own toolbar, a link-insert dialog, and an `@`-mention dropdown —
5
+ one shared module instead of each consumer app hand-rolling its own editor.
6
+
7
+ ## Why this exists
8
+
9
+ tickets-mobile shipped two separate, independently hand-rolled editors, both far below web's TipTap
10
+ editor: `RichDescriptionEditor` (a markdown-ish plain `TextInput`, no real rich text) and
11
+ `RichTextComposer` (an even thinner raw-HTML-ish `TextInput`, no headings/quote/code-block/
12
+ strikethrough/mentions). Both exist only because no native rich-text editor was available; this
13
+ module is what a future migration replaces them with — that migration is **not** part of this change.
14
+
15
+ ## Uncontrolled, by the native library's own design
16
+
17
+ `EnrichedTextInput`'s content is only readable via an async `getHTML()` ref call — the library's own
18
+ docs warn that its `onChangeHtml` event is too expensive to drive on every keystroke. So this module
19
+ follows the same contract: `defaultValue` (initial HTML, never re-applied on prop change) + a `ref`
20
+ exposing `getHTML()` (`Promise<string>`), `focus()`, `blur()`, `setValue(html)`. Callers read the
21
+ final HTML by awaiting `ref.getHTML()` at their own save/submit point — never from continuous state.
22
+ `onChangeText` is a **cheap, plain-text** signal on every keystroke (dirty-tracking, enabling a Save
23
+ button) — it is not the HTML and must not be used for persistence.
24
+
25
+ ## Files
26
+
27
+ | File | Role |
28
+ |------|------|
29
+ | `RichTextEditor.tsx` | The component: toolbar (`Button`), the native editor, the link dialog (`Modal` + `Input`), the mention dropdown. |
30
+ | `RichTextEditor.variants.ts` | Pure resolvers — toolbar item catalogue, `onChangeState` → active-action mapping, mention filtering, colour + `HtmlStyle` token mapping — plus the themed structural resolvers. No React, no native import (types-only from `react-native-enriched-html`). |
31
+ | `index.ts` | Public surface: `RichTextEditor`, `RichTextEditorHandle`, `RichTextEditorProps`, `MentionUser`, `RichTextEditorImage`, `RichTextEditorToolbarAction`, `RICH_TEXT_EDITOR_TOOLBAR_ITEMS`. |
32
+ | `__tests__/RichTextEditor.test.ts` | Pure: WCAG contrast for the field/mention pill/code/code-block/blockquote/link/list-marker colours (all brands × modes), the toolbar item catalogue, `onChangeState` mapping, mention filtering. |
33
+ | `__tests__/RichTextEditor.render.test.tsx` | Render, with `react-native-enriched-html` mocked at the module level (jest cannot render a native Fabric component): toolbar presence, ref forwarding, a toolbar press invoking the matching native command, toggle highlighting, the link dialog, the image flow (`focus` then `setImage`, cancel/zero-size/rejection paths), and the mention dropdown's open/filter/select/close plus its `keyboardShouldPersistTaps="always"`. |
34
+
35
+ ## Props
36
+
37
+ | Prop | Type | Default | Notes |
38
+ |------|------|---------|-------|
39
+ | `defaultValue` | `string` | — | Initial HTML/text. Uncontrolled — never re-applied after mount. |
40
+ | `placeholder` | `string` | — | |
41
+ | `label` | `string` | — | Rendered above the toolbar. Also becomes the editor field's accessible name (see "Accessibility" below). |
42
+ | `accessibilityLabel` | `string` | — | Overrides the `label`→accessible-name fallback. |
43
+ | `minHeight` | `number` | `140` | Editor field minimum height, dp. |
44
+ | `mentionUsers` | `MentionUser[]` | `[]` | `{ id: string \| number; label: string; profileUrl? }`. Empty/omitted disables `@` mentions entirely — no indicator wired, no mention toolbar button rendered. |
45
+ | `onRequestImage` | `() => Promise<RichTextEditorImage \| null>` | — | Supplies `{ uri, width, height }` to insert at the caret. Omitted/undefined hides the image toolbar button entirely, same contract as `mentionUsers`. Resolve `null` for a cancel or a failure the consumer already reported. |
46
+ | `onChangeText` | `(text: string) => void` | — | Cheap plain-text signal, every keystroke. NOT the HTML. |
47
+ | `onFocus` / `onBlur` | `() => void` | — | |
48
+ | `editable` | `boolean` | `true` | |
49
+ | `scrollEnabled` | `boolean` | `false` | Native-editor internal scrolling. **Deliberately inverts the native default (`true`)** — see "Gestures" below. Turn on only alongside a bounded height. |
50
+ | `containerStyle` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
51
+ | `useHtmlNormalizer` | `boolean` | `false` | Passthrough to the native `useHtmlNormalizer` — normalizes foreign HTML (Word/Docs/legacy markup) into the canonical subset before applying it. Matches the native default (off); a consumer whose HTML source may be non-canonical (e.g. tickets-mobile's ticket descriptions) opts in. |
52
+ | `testID` | `string` | — | Toolbar buttons get `${testID}-<action>`. |
53
+
54
+ Ref (`RichTextEditorHandle`): `getHTML(): Promise<string>`, `focus()`, `blur()`, `setValue(html)`.
55
+
56
+ ## The card owns the boundary (not the native view)
57
+
58
+ Toolbar + field sit inside one bordered card `View` — `border.interactive` (≥ 3:1) at rest, shifting
59
+ to `border.focus` when focused. That shift is near-imperceptible (~1.25:1 between the two); the focus
60
+ signal is carried by the same 2px/2px focus ring `Input`/`Textarea` draw
61
+ (`testID="rich-text-editor-focus-ring"`; the card itself is `${testID}-card`). The toolbar keeps only
62
+ a `borderBottomWidth` divider (`border.default`) and its `bg.raised` strip; the native
63
+ `EnrichedTextInput` is handed no border, radius or fill at all and stays transparent over the card.
64
+
65
+ This is not a stylistic choice: on **Android** `EnrichedTextInput` is driven by a `SimpleViewManager`,
66
+ and `BaseViewManager` declares **no `border*` `@ReactProp`** — a border in the native view's own
67
+ `style` is silently dropped (the package's own types annotate every `border*Color`/`border*Radius`
68
+ key `@platform ios web`). Before this, the field painted no boundary at all on Android. No
69
+ `overflow: "hidden"` on the card: it would clip both the 200dp mention dropdown and the focus ring.
70
+
71
+ ## Gestures — `scrollEnabled` defaults to `false`
72
+
73
+ Android's `EnrichedTextInputView.canScrollVertically/Horizontally` return the `scrollEnabled` prop
74
+ **verbatim**, without asking whether there is anything to scroll. While it is `true`, the
75
+ `ACTION_MOVE` guard that would call `requestDisallowInterceptTouchEvent(false)` can never pass, so
76
+ the editor keeps the gesture it grabbed on `ACTION_DOWN`: a drag that starts inside the field —
77
+ most visibly on an inline image, a one-character `ImageSpan` with a full-size hit box — focuses the
78
+ editor, opens the keyboard and drags out a selection (the Cut/Copy/Paste action bar) instead of
79
+ scrolling the page. The field sets `minHeight` and no `maxHeight`, so it already grows to fit its
80
+ content and internal scrolling buys nothing; turning it off costs nothing and releases the drag.
81
+
82
+ ## Toolbar (16 actions, `RICH_TEXT_EDITOR_TOOLBAR_ITEMS`)
83
+
84
+ Bold, italic, underline, strikethrough, inline code, H1–H3, quote, code block, bullet list, numbered
85
+ list, checklist, link, image, mention — each an icon-only `Button` (`variant="outline"`,
86
+ `tone="neutral"`). Toggle highlighting (`variant="solid"` when active) is driven by the native
87
+ `onChangeState` event, the one signal that tracks "is the cursor inside bold/a heading/…" — there is no
88
+ other way to know. Checklist always inserts unchecked (`toggleCheckboxList(false)`); the mention button
89
+ calls the ref's `startMention("@")` rather than toggling a style. The mention button is omitted when
90
+ `mentionUsers` is empty and the image button when `onRequestImage` is absent, per the "disables
91
+ gracefully" contract above.
92
+
93
+ ## Image insert
94
+
95
+ The consumer owns picking, uploading and any failure message; this module owns the button, its busy
96
+ state, and the native call. `onRequestImage` resolves `{ uri, width, height }`, or `null` for a cancel
97
+ or an already-reported failure; a rejection is caught (dev `console.warn`, same gate `FileUpload` uses)
98
+ so the toolbar recovers with nothing inserted. While the promise is pending the button renders
99
+ `loading`, which `Button` already turns into a spinner + `accessibilityState.busy` + a blocked press,
100
+ so a double-tap mid-upload needs no extra state here.
101
+
102
+ `width`/`height` are **required and must be > 0**: the native editor reads an `<img>`'s dimensions once
103
+ at parse time and never re-measures, so a missing/zero dimension renders an invisible 0×0 image. The
104
+ editor is focused before `setImage` — native `addImage` silently no-ops on a null selection. Those
105
+ dimensions are persisted (`getHTML()` emits `<img src width height>`), so a mobile-inserted image
106
+ carries an explicit width web's CSS-sized `.ProseMirror img` rule will not override until the content is
107
+ re-saved from web. Nothing is themable here — the native `HtmlStyle` has no `img` key, so this action
108
+ adds no colour and needs no contrast proof.
109
+
110
+ ## Link insert dialog
111
+
112
+ Copies `RichDescriptionEditor`'s `Modal` + `Input` pattern. The last `onChangeSelection` event (native,
113
+ fires on every selection change) is captured in a ref — not state, to avoid a re-render per caret move
114
+ — and read when the dialog confirms, calling `ref.setLink(start, end, selectedText || url, url)`.
115
+
116
+ ## Mention dropdown
117
+
118
+ `mentionIndicators=["@"]`. `onStartMention` opens the dropdown (query `""`, so it starts populated —
119
+ matches web's `onStart` behaviour); `onChangeMention` re-filters by `.text` (case-insensitive
120
+ substring, capped at 8 — same cap web's `mentionSuggestion.ts` uses); `onEndMention` closes it. It is a
121
+ plain absolutely-positioned `View`, anchored to "below the toolbar" (the wrapper around the editor
122
+ field is the `relative` anchor) — not a measured popover; this is React Native, not the DOM, so there
123
+ is no anchor-element geometry to reproduce.
124
+
125
+ Inside it the candidates go through `VirtualList` (`core/list`), not a `ScrollView` + `.map()`, with
126
+ `itemHeight={MENTION_ROW_HEIGHT}` — the rows are a fixed 40dp (`richTextEditorMentionRowStructure`'s
127
+ `minHeight`), so `getItemLayout` is exact and the list never measures. Rows are a memo'd `MentionRow`
128
+ taking **primitives** (`id`, `label`), and `onSelect(id, label)` is one shared `useCallback` with `[]`
129
+ deps rather than a closure minted per row.
130
+
131
+ **`keyboardShouldPersistTaps="always"` — `"handled"` is not enough here.** The dropdown only exists
132
+ while the mention session is live, and the session dies with the keyboard. Under RN's default
133
+ (`"never"`) the first tap on a row is spent dismissing the keyboard instead of selecting (WCAG
134
+ 2.1.1). `"handled"` fixes the row tap but still dismisses on a tap the rows don't claim — between
135
+ rows, or on the dropdown's own padding — which ends the mention session mid-selection and the
136
+ dropdown disappears under the user's finger. `combobox/` uses `"handled"` for the opposite reason:
137
+ its list fills a bottom sheet the user may legitimately want to dismiss by tapping past a row. The
138
+ toolbar `ScrollView` in this same component already uses `"always"` for the same reason the
139
+ dropdown now does.
140
+
141
+ ## Accessibility
142
+
143
+ - **Editor field accessible name.** The native `EnrichedTextInput` gets `accessibilityLabel` from
144
+ `accessibilityLabel ?? label` (`resolveRichTextEditorAccessibility`) — before this fix it had no
145
+ path to a name at all. On native the now-redundant visible `label` `Text` is hidden from
146
+ assistive tech (`aria-hidden`) so the name isn't announced twice. **On web it stays exposed**:
147
+ `react-native-enriched-html`'s web build renders a TipTap `EditorContent` and forwards no
148
+ accessibility prop to the underlying `contenteditable` (only `enterkeyhint`), so the field itself
149
+ never carries the name there — hiding the label too would leave a web screen-reader user with
150
+ nothing. Follow-up: an upstream `aria-label` passthrough on `EnrichedTextInput`'s web build would
151
+ close this gap.
152
+ - **Toolbar toggle (pressed) state.** The 14 style-toggle buttons (all but the `image`/`mention`
153
+ triggers, see `RichTextEditorToolbarItem.toggle`) pass `Button`'s `selected` prop, driven by the
154
+ same `activeActions` state that already drove the `variant="solid"` highlight — before this fix
155
+ the toggle was colour-only (WCAG 1.4.1) and announced nothing (4.1.2). `Button` itself resolves
156
+ `selected` into `aria-pressed` (web) / `accessibilityState.selected` (native), per
157
+ `docs/PLATFORM-A11Y-PROPS.md`'s "genuinely diverge" case — RN has no `pressed` accessibility
158
+ state at all. `image`/`mention` never receive `selected`: they open a picker, not toggle a style.
159
+ - **Flat-only `aria-*`**, per `docs/PLATFORM-A11Y-PROPS.md` — no `accessibilityState={{…}}` /
160
+ `accessibilityValue={{…}}` object literal anywhere in this module; `react-native-web` discards
161
+ the object form silently.
162
+
163
+ ## Colour (measured in `__tests__/RichTextEditor.test.ts`, every brand × mode)
164
+
165
+ Every colour handed to the native `htmlStyle`/native props is a role lookup, never a hex:
166
+
167
+ | Element | Fill | Ink |
168
+ |---|---|---|
169
+ | Inline code / mention pill | `accent.subtle` | `accent.text` (the pair already proven ≥ 4.5:1 for every brand × mode — see `org-switcher/MODULE.md`) |
170
+ | Code block | `bg.sunken` | `fg.default` (the same pair `Avatar`'s neutral fill uses) |
171
+ | Blockquote bar / text | `border.interactive` (≥ 3:1) | `fg.muted` (≥ 4.5:1) |
172
+ | Link | — | `accent.text` |
173
+ | Card (toolbar + field) | `bg.surface` | `fg.default`, placeholder `fg.muted` |
174
+ | Card border | `border.interactive` at rest, `border.focus` focused — both ≥ 3:1 on the fill **and** the canvas, but only ~1.25:1 apart, so the ring carries focus | — |
175
+ | Toolbar strip / divider | `bg.raised` / `border.default` (decorative — the card border is the 1.4.11 boundary) | — |
176
+
177
+ `style` passed to the native editor respects `EnrichedInputStyle` — a RESTRICTED subset of `TextStyle`
178
+ (no `flexDirection`/`alignItems`/etc.) — so `richTextEditorFieldStructure` only emits padding/
179
+ `fontSize` (plus `minHeight`/`color` from the component), never a flex-layout key.
180
+
181
+ ## Known gaps
182
+
183
+ - **EAS Android dev-client build confirmed successful (build `22b8321f`, APK built) but NOT yet
184
+ verified on a physical device by the user.** Everything reported here is typecheck/build/unit-test
185
+ level — jest cannot render a native Fabric component, so nothing here claims the editor "works" on
186
+ device.
187
+ - `onChangeState.image.isBlocking` (the caret is somewhere an `<img>` can't go, e.g. inside a code
188
+ block) is not honoured — the pick/upload still runs and native `addImage` then silently no-ops.
189
+ Disabling the button on that flag is the follow-up.
190
+ - No paste/drop image handling: the native `onPasteImages` event is unwired, so a pasted image is
191
+ dropped. Web has full paste support — the natural second half of image parity.
192
+ - `scrollEnabled: false` fixes the *drag* case, not the *tap* case: a touch on an inline image that
193
+ never leaves touch slop still registers as a tap on the `ImageSpan`, and Android selects an image
194
+ span on tap → action bar. `setTextIsSelectable(true)` is hardcoded in the package's
195
+ `onAttachedToWindow` and `startActionMode` only appends to the platform menu, so there is no prop
196
+ to suppress it — an upstream `selectionEnabled`-style prop is the real fix.
197
+ - No anchor-measured mention dropdown position (see "Mention dropdown" above) — same deferral
198
+ `Menu`/`Tooltip` already document for their own unmeasured overlays.
199
+ - tickets-mobile's `RichDescriptionEditor.tsx` (ticket descriptions) and `CommentThread.tsx`'s
200
+ comment composer/inline-edit (replacing the deleted `RichTextComposer.tsx`) both now wrap this
201
+ module — see `tickets/mobile/src/modules/ticket-detail/MODULE.md` for the consumer-side detail.
202
+
203
+ ## Performance
204
+
205
+ Wrapped in `React.memo`. This component re-renders on every keystroke (`onChangeState` refreshes
206
+ `activeActions`), so everything handed to a child is stabilized:
207
+
208
+ - `colors`, `htmlStyle` and the native `fieldStyle` object are `useMemo`'d. `fieldStyle` in
209
+ particular is passed straight to the native `EnrichedTextInput`; a fresh object per keystroke
210
+ crossed the bridge as a prop change.
211
+ - Every style array/object the JSX used to build inline (root, label, card, toolbar, mention
212
+ dropdown, focus ring, link-dialog body and actions) is `useMemo`'d.
213
+ - `renderItem`/`keyExtractor` for the mention list are `useCallback`'d — the module ESLint config
214
+ rejects inline arrows on those two props.
215
+ - `actionHandlers` maps each toolbar action to one stable `() => void`, so each toolbar `Button`
216
+ keeps its `onPress` identity; `closeLinkDialog`/`openLinkDialog` replaced the inline
217
+ `() => setLinkOpen(…)` arrows for the same reason.
218
+
219
+ No motion of its own — the editor's own visual state changes (toggle highlighting, focus ring) are
220
+ instant, and the mention dropdown is a list, where per-row animation is forbidden.
221
+
222
+ ## Modernization (v1.0.7)
223
+
224
+ - Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
225
+ - List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
@@ -0,0 +1,413 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * RichTextEditor — a themed wrapper around `react-native-enriched-html`'s native Fabric editor
5
+ * (`EnrichedTextInput`), with its own toolbar (`Button`), a link-insert dialog (`Modal` + `Input`,
6
+ * copied from the app's `RichDescriptionEditor` pattern), and an `@`-mention dropdown.
7
+ *
8
+ * UNCONTROLLED, by the native library's own design: the editor's HTML is only readable via the
9
+ * async `getHTML()` ref call (the library's own docs warn `onChangeHtml` is too expensive to drive
10
+ * live sync). So this component takes `defaultValue` (initial HTML, never re-applied on change) and
11
+ * exposes a `ref` with `getHTML()`/`focus()`/`blur()`/`setValue()` — the caller reads the final HTML
12
+ * at its own save/submit point, not from continuous state. `onChangeText` is a cheap plain-text
13
+ * signal (every keystroke) for dirty-tracking / enabling a Save button — it is NOT the HTML.
14
+ *
15
+ * Toolbar toggle highlighting is driven by the native `onChangeState` event (bold/italic/… active
16
+ * state as the cursor moves) — see `RichTextEditor.variants.ts` → `resolveRichTextEditorActiveActions`.
17
+ */
18
+
19
+ import { forwardRef, memo, useCallback, useImperativeHandle, useMemo, useRef, useState } from "react";
20
+ import { Platform, Pressable, ScrollView, StyleSheet, Text, View } from "react-native";
21
+ import { EnrichedTextInput } from "react-native-enriched-html";
22
+ import { VirtualList } from "../../core/list/index.js";
23
+ import { useTheme } from "../../theme/hooks.js";
24
+ import { Button } from "../button/index.js";
25
+ import { Input } from "../input/index.js";
26
+ import { Modal } from "../modal/index.js";
27
+ import { filterMentionCandidates, resolveRichTextEditorAccessibility, resolveRichTextEditorActiveActions, resolveRichTextEditorColors, resolveRichTextEditorHtmlStyle, RICH_TEXT_EDITOR_TOOLBAR_ITEMS, richTextEditorCardStructure, richTextEditorFieldStructure, richTextEditorLayout, richTextEditorMentionDropdownStructure, richTextEditorMentionRowStructure, richTextEditorToolbarStructure } from "./RichTextEditor.variants.js";
28
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
29
+ const MENTION_ROW_HEIGHT = 40;
30
+ const IS_WEB = Platform.OS === "web";
31
+ const MENTION_INDICATOR = "@";
32
+ const MENTION_INDICATORS = [MENTION_INDICATOR];
33
+ const EMPTY_MENTION_INDICATORS = [];
34
+ const MentionRow = /*#__PURE__*/memo(function MentionRow({
35
+ id,
36
+ label,
37
+ theme,
38
+ colors,
39
+ onSelect
40
+ }) {
41
+ const handlePress = useCallback(() => onSelect(id, label), [onSelect, id, label]);
42
+ const restingStyle = useMemo(() => [richTextEditorMentionRowStructure(theme), {
43
+ backgroundColor: colors.mentionRowBackground
44
+ }], [theme, colors.mentionRowBackground]);
45
+ const pressedStyle = useMemo(() => [richTextEditorMentionRowStructure(theme), {
46
+ backgroundColor: colors.mentionRowPressed
47
+ }], [theme, colors.mentionRowPressed]);
48
+ const rowStyle = useCallback(({
49
+ pressed
50
+ }) => pressed ? pressedStyle : restingStyle, [pressedStyle, restingStyle]);
51
+ const labelStyle = useMemo(() => ({
52
+ fontSize: theme.fontSizes.sm,
53
+ color: colors.mentionRowText
54
+ }), [theme.fontSizes.sm, colors.mentionRowText]);
55
+ return /*#__PURE__*/_jsx(Pressable, {
56
+ accessibilityRole: "menuitem",
57
+ onPress: handlePress,
58
+ style: rowStyle,
59
+ children: /*#__PURE__*/_jsx(Text, {
60
+ style: labelStyle,
61
+ children: label
62
+ })
63
+ });
64
+ });
65
+
66
+ // Identical to `Input`/`Textarea`: the ring sits OUTSIDE the field, on the canvas, where
67
+ // `border.focus` is the token proven ≥ 3:1.
68
+ const FOCUS_RING_WIDTH = 2;
69
+ const FOCUS_RING_GAP = 2;
70
+ function RichTextEditorImpl({
71
+ defaultValue,
72
+ placeholder,
73
+ label,
74
+ accessibilityLabel,
75
+ minHeight = 140,
76
+ mentionUsers = [],
77
+ onRequestImage,
78
+ onChangeText,
79
+ onFocus,
80
+ onBlur,
81
+ editable = true,
82
+ scrollEnabled = false,
83
+ containerStyle,
84
+ useHtmlNormalizer = false,
85
+ testID
86
+ }, ref) {
87
+ const theme = useTheme();
88
+ const nativeRef = useRef(null);
89
+ const selectionRef = useRef({
90
+ start: 0,
91
+ end: 0,
92
+ text: ""
93
+ });
94
+ const [activeActions, setActiveActions] = useState({});
95
+ const [linkOpen, setLinkOpen] = useState(false);
96
+ const [linkUrl, setLinkUrl] = useState("");
97
+ const [imageBusy, setImageBusy] = useState(false);
98
+ const [focused, setFocused] = useState(false);
99
+ // `null` = closed; "" = just opened (no filter typed yet) — matches web's onStart/onUpdate split.
100
+ const [mentionQuery, setMentionQuery] = useState(null);
101
+ const a11y = useMemo(() => resolveRichTextEditorAccessibility({
102
+ label,
103
+ accessibilityLabel,
104
+ web: IS_WEB
105
+ }), [label, accessibilityLabel]);
106
+ const colors = useMemo(() => resolveRichTextEditorColors(theme.colors), [theme.colors]);
107
+ const htmlStyle = useMemo(() => resolveRichTextEditorHtmlStyle(theme), [theme]);
108
+ const mentionEnabled = mentionUsers.length > 0;
109
+
110
+ // `EnrichedInputStyle` (unlike a normal View's `style`) takes ONE plain object, not an array — so
111
+ // the structural + colour pieces are flattened into a single object here rather than passed as the
112
+ // `[structure, { ... }]` array every other module in this library uses for its root style.
113
+ const fieldStyle = useMemo(() => ({
114
+ ...StyleSheet.flatten(richTextEditorFieldStructure(theme)),
115
+ minHeight,
116
+ color: colors.text
117
+ }), [theme, minHeight, colors.text]);
118
+ useImperativeHandle(ref, () => ({
119
+ getHTML: () => nativeRef.current?.getHTML() ?? Promise.resolve(""),
120
+ focus: () => nativeRef.current?.focus(),
121
+ blur: () => nativeRef.current?.blur(),
122
+ setValue: html => nativeRef.current?.setValue(html)
123
+ }), []);
124
+ const handleChangeText = useCallback(e => onChangeText?.(e.nativeEvent.value), [onChangeText]);
125
+ const handleChangeSelection = useCallback(e => {
126
+ selectionRef.current = e.nativeEvent;
127
+ }, []);
128
+ const handleChangeState = useCallback(e => {
129
+ setActiveActions(resolveRichTextEditorActiveActions(e.nativeEvent));
130
+ }, []);
131
+ const handleFocus = useCallback(() => {
132
+ setFocused(true);
133
+ onFocus?.();
134
+ }, [onFocus]);
135
+ const handleBlur = useCallback(() => {
136
+ setFocused(false);
137
+ onBlur?.();
138
+ }, [onBlur]);
139
+ const handleStartMention = useCallback(() => setMentionQuery(""), []);
140
+ const handleChangeMention = useCallback(e => setMentionQuery(e.text), []);
141
+ const handleEndMention = useCallback(() => setMentionQuery(null), []);
142
+ const mentionCandidates = useMemo(() => mentionQuery === null ? [] : filterMentionCandidates(mentionUsers, mentionQuery), [mentionQuery, mentionUsers]);
143
+ const selectMention = useCallback((id, label) => {
144
+ nativeRef.current?.setMention(MENTION_INDICATOR, label, {
145
+ id: String(id)
146
+ });
147
+ setMentionQuery(null);
148
+ }, []);
149
+ const openLinkDialog = useCallback(() => {
150
+ setLinkUrl("");
151
+ setLinkOpen(true);
152
+ }, []);
153
+ const closeLinkDialog = useCallback(() => setLinkOpen(false), []);
154
+ const confirmLink = useCallback(() => {
155
+ const {
156
+ start,
157
+ end,
158
+ text
159
+ } = selectionRef.current;
160
+ const url = linkUrl.trim();
161
+ nativeRef.current?.setLink(start, end, text || url, url);
162
+ setLinkOpen(false);
163
+ }, [linkUrl]);
164
+ const insertImage = useCallback(async () => {
165
+ if (!onRequestImage) return;
166
+ setImageBusy(true);
167
+ try {
168
+ const picked = await onRequestImage();
169
+ if (!picked || picked.width <= 0 || picked.height <= 0) return;
170
+ // Native `addImage` silently no-ops on a null selection, which is what an unfocused editor has.
171
+ nativeRef.current?.focus();
172
+ nativeRef.current?.setImage(picked.uri, picked.width, picked.height);
173
+ } catch (error) {
174
+ // Gated exactly as `FileUpload`/`PixelizeProvider` gate theirs — skipped only when `__DEV__`
175
+ // is DEFINITELY false, and never swallowed silently.
176
+ const isDefinitelyProd = typeof __DEV__ !== "undefined" && !__DEV__;
177
+ if (!isDefinitelyProd) {
178
+ console.warn("[pixelize-native-library] <RichTextEditor> onRequestImage rejected — nothing was inserted.", error);
179
+ }
180
+ } finally {
181
+ setImageBusy(false);
182
+ }
183
+ }, [onRequestImage]);
184
+
185
+ // Stable per (action → () => void), independent of theme/render — a fresh inline closure per
186
+ // toolbar Button would defeat its `React.memo` (CLAUDE.md "Performance", same discipline
187
+ // Menu/Select/MultiSelect follow for their option lists).
188
+ const runAction = useCallback(action => {
189
+ if (action === "link") {
190
+ openLinkDialog();
191
+ return;
192
+ }
193
+ if (action === "image") {
194
+ void insertImage();
195
+ return;
196
+ }
197
+ const editor = nativeRef.current;
198
+ if (!editor) return;
199
+ switch (action) {
200
+ case "bold":
201
+ editor.toggleBold();
202
+ break;
203
+ case "italic":
204
+ editor.toggleItalic();
205
+ break;
206
+ case "underline":
207
+ editor.toggleUnderline();
208
+ break;
209
+ case "strikethrough":
210
+ editor.toggleStrikeThrough();
211
+ break;
212
+ case "inlineCode":
213
+ editor.toggleInlineCode();
214
+ break;
215
+ case "h1":
216
+ editor.toggleH1();
217
+ break;
218
+ case "h2":
219
+ editor.toggleH2();
220
+ break;
221
+ case "h3":
222
+ editor.toggleH3();
223
+ break;
224
+ case "blockQuote":
225
+ editor.toggleBlockQuote();
226
+ break;
227
+ case "codeBlock":
228
+ editor.toggleCodeBlock();
229
+ break;
230
+ case "unorderedList":
231
+ editor.toggleUnorderedList();
232
+ break;
233
+ case "orderedList":
234
+ editor.toggleOrderedList();
235
+ break;
236
+ case "checkboxList":
237
+ editor.toggleCheckboxList(false);
238
+ break;
239
+ case "mention":
240
+ editor.startMention(MENTION_INDICATOR);
241
+ break;
242
+ }
243
+ }, [insertImage, openLinkDialog]);
244
+ const actionHandlers = useMemo(() => {
245
+ const handlers = {};
246
+ for (const item of RICH_TEXT_EDITOR_TOOLBAR_ITEMS) {
247
+ handlers[item.action] = () => runAction(item.action);
248
+ }
249
+ return handlers;
250
+ }, [runAction]);
251
+ const mentionKeyExtractor = useCallback(user => String(user.id), []);
252
+ const renderMentionItem = useCallback(({
253
+ item: user
254
+ }) => /*#__PURE__*/_jsx(MentionRow, {
255
+ id: user.id,
256
+ label: user.label,
257
+ theme: theme,
258
+ colors: colors,
259
+ onSelect: selectMention
260
+ }), [theme, colors, selectMention]);
261
+ const toolbarItems = useMemo(() => RICH_TEXT_EDITOR_TOOLBAR_ITEMS.filter(item => (item.action !== "mention" || mentionEnabled) && (item.action !== "image" || onRequestImage !== undefined)), [mentionEnabled, onRequestImage]);
262
+ const rootStyle = useMemo(() => [richTextEditorLayout(theme), containerStyle], [theme, containerStyle]);
263
+ const labelStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.medium), {
264
+ fontSize: theme.fontSizes.sm,
265
+ color: theme.colors.fg.default
266
+ }], [theme]);
267
+ const cardStyle = useMemo(() => [richTextEditorCardStructure(theme), {
268
+ backgroundColor: colors.cardBackground,
269
+ borderColor: focused ? colors.cardBorderFocus : colors.cardBorder
270
+ }], [theme, colors, focused]);
271
+ const toolbarStyle = useMemo(() => [richTextEditorToolbarStructure(theme), {
272
+ borderColor: colors.toolbarDivider,
273
+ backgroundColor: colors.toolbarBackground
274
+ }], [theme, colors.toolbarDivider, colors.toolbarBackground]);
275
+ const dropdownStyle = useMemo(() => [richTextEditorMentionDropdownStructure(theme), {
276
+ backgroundColor: colors.mentionDropdownBackground,
277
+ borderColor: colors.mentionDropdownBorder
278
+ }], [theme, colors.mentionDropdownBackground, colors.mentionDropdownBorder]);
279
+ const focusRingStyle = useMemo(() => ({
280
+ position: "absolute",
281
+ top: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
282
+ left: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
283
+ right: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
284
+ bottom: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
285
+ borderWidth: FOCUS_RING_WIDTH,
286
+ borderColor: theme.colors.border.focus,
287
+ borderRadius: theme.radii.base + FOCUS_RING_GAP + FOCUS_RING_WIDTH
288
+ }), [theme]);
289
+ const linkBodyStyle = useMemo(() => ({
290
+ rowGap: theme.space[4]
291
+ }), [theme.space]);
292
+ const linkActionsStyle = useMemo(() => ({
293
+ flexDirection: "row",
294
+ justifyContent: "flex-end",
295
+ columnGap: theme.space[2]
296
+ }), [theme.space]);
297
+ return /*#__PURE__*/_jsxs(View, {
298
+ style: rootStyle,
299
+ children: [label !== undefined && /*#__PURE__*/_jsx(Text, {
300
+ "aria-hidden": a11y["aria-hidden"],
301
+ style: labelStyle,
302
+ children: label
303
+ }), /*#__PURE__*/_jsxs(View, {
304
+ testID: testID ? `${testID}-card` : undefined,
305
+ style: cardStyle,
306
+ children: [/*#__PURE__*/_jsx(View, {
307
+ style: toolbarStyle,
308
+ children: /*#__PURE__*/_jsx(ScrollView, {
309
+ horizontal: true,
310
+ showsHorizontalScrollIndicator: false,
311
+ keyboardShouldPersistTaps: "always",
312
+ children: toolbarItems.map(item => {
313
+ const active = activeActions[item.action] === true;
314
+ return /*#__PURE__*/_jsx(Button, {
315
+ icon: item.icon,
316
+ accessibilityLabel: item.label,
317
+ variant: active ? "solid" : "outline"
318
+ // Without this the toggle state is carried by `variant`'s colour alone (WCAG 1.4.1).
319
+ ,
320
+ selected: item.toggle ? active : undefined,
321
+ tone: "neutral",
322
+ size: "sm",
323
+ loading: item.action === "image" && imageBusy,
324
+ onPress: actionHandlers[item.action],
325
+ testID: testID ? `${testID}-${item.action}` : undefined
326
+ }, item.action);
327
+ })
328
+ })
329
+ }), /*#__PURE__*/_jsxs(View, {
330
+ style: styles.fieldWrap,
331
+ children: [/*#__PURE__*/_jsx(EnrichedTextInput, {
332
+ ref: nativeRef,
333
+ testID: testID,
334
+ accessibilityLabel: a11y.accessibilityLabel,
335
+ editable: editable,
336
+ defaultValue: defaultValue,
337
+ placeholder: placeholder,
338
+ placeholderTextColor: colors.placeholder,
339
+ cursorColor: colors.cursor,
340
+ selectionColor: colors.selection,
341
+ mentionIndicators: mentionEnabled ? MENTION_INDICATORS : EMPTY_MENTION_INDICATORS,
342
+ htmlStyle: htmlStyle,
343
+ style: fieldStyle,
344
+ scrollEnabled: scrollEnabled,
345
+ useHtmlNormalizer: useHtmlNormalizer,
346
+ onFocus: handleFocus,
347
+ onBlur: handleBlur,
348
+ onChangeText: handleChangeText,
349
+ onChangeSelection: handleChangeSelection,
350
+ onChangeState: handleChangeState,
351
+ onStartMention: handleStartMention,
352
+ onChangeMention: handleChangeMention,
353
+ onEndMention: handleEndMention
354
+ }), mentionQuery !== null && mentionCandidates.length > 0 && /*#__PURE__*/_jsx(View, {
355
+ style: dropdownStyle,
356
+ children: /*#__PURE__*/_jsx(VirtualList, {
357
+ data: mentionCandidates,
358
+ keyExtractor: mentionKeyExtractor,
359
+ renderItem: renderMentionItem,
360
+ itemHeight: MENTION_ROW_HEIGHT
361
+ // The dropdown only exists while the mention session (and so the keyboard) is up,
362
+ // so no tap anywhere on it may dismiss the keyboard — `"handled"` still would, for
363
+ // taps landing between rows, which ends the session mid-selection.
364
+ ,
365
+ keyboardShouldPersistTaps: "always"
366
+ })
367
+ })]
368
+ }), focused && /*#__PURE__*/_jsx(View, {
369
+ pointerEvents: "none",
370
+ testID: "rich-text-editor-focus-ring",
371
+ style: focusRingStyle
372
+ })]
373
+ }), /*#__PURE__*/_jsx(Modal, {
374
+ visible: linkOpen,
375
+ onRequestClose: closeLinkDialog,
376
+ title: "Insert link",
377
+ size: "sm",
378
+ children: /*#__PURE__*/_jsxs(View, {
379
+ style: linkBodyStyle,
380
+ children: [/*#__PURE__*/_jsx(Input, {
381
+ value: linkUrl,
382
+ onChangeText: setLinkUrl,
383
+ label: "URL",
384
+ placeholder: "https://example.com",
385
+ leadingIcon: "link"
386
+ }), /*#__PURE__*/_jsxs(View, {
387
+ style: linkActionsStyle,
388
+ children: [/*#__PURE__*/_jsx(Button, {
389
+ label: "Cancel",
390
+ variant: "ghost",
391
+ tone: "neutral",
392
+ onPress: closeLinkDialog
393
+ }), /*#__PURE__*/_jsx(Button, {
394
+ label: "Insert",
395
+ variant: "solid",
396
+ tone: "accent",
397
+ onPress: confirmLink
398
+ })]
399
+ })]
400
+ })
401
+ })]
402
+ });
403
+ }
404
+ const styles = StyleSheet.create({
405
+ fieldWrap: {
406
+ position: "relative"
407
+ }
408
+ });
409
+
410
+ // A consumer's screen re-renders far more often than this component's own props change — memo is
411
+ // near-free insurance for a design-system primitive (CLAUDE.md "Performance").
412
+ export const RichTextEditor = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(RichTextEditorImpl));
413
+ //# sourceMappingURL=RichTextEditor.js.map