pixelize-native-library 1.0.6 → 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 (1052) 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 -86
  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 +38 -117
  132. package/lib/module/modules/bottom-nav/BottomNav.variants.js +93 -9
  133. package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js +123 -0
  134. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js +146 -120
  135. package/lib/module/modules/bottom-nav/BottomNavTab.js +138 -0
  136. package/lib/module/modules/bottom-nav/MODULE.md +45 -15
  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 +129 -0
  151. package/lib/module/modules/charts/ChartLegend.js +154 -0
  152. package/lib/module/modules/charts/Charts.variants.js +582 -0
  153. package/lib/module/modules/charts/DonutChart.js +133 -0
  154. package/lib/module/modules/charts/LineChart.js +179 -0
  155. package/lib/module/modules/charts/MODULE.md +178 -0
  156. package/lib/module/modules/charts/PieChart.js +140 -0
  157. package/lib/module/modules/charts/Sparkline.js +80 -0
  158. package/lib/module/modules/charts/index.js +15 -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 +92 -0
  245. package/lib/module/modules/list-item/ListItem.variants.js +53 -0
  246. package/lib/module/modules/list-item/MODULE.md +53 -0
  247. package/lib/module/modules/list-item/index.js +10 -0
  248. package/lib/module/modules/markdown/MODULE.md +71 -0
  249. package/lib/module/modules/markdown/Markdown.js +183 -0
  250. package/lib/module/modules/markdown/Markdown.variants.js +73 -0
  251. package/lib/module/modules/markdown/index.js +11 -0
  252. package/lib/module/modules/markdown/parseMarkdown.js +153 -0
  253. package/lib/module/modules/menu/MODULE.md +45 -14
  254. package/lib/module/modules/menu/Menu.js +174 -65
  255. package/lib/module/modules/menu/Menu.variants.js +10 -0
  256. package/lib/module/modules/message-bubble/MODULE.md +38 -0
  257. package/lib/module/modules/message-bubble/MessageBubble.js +55 -0
  258. package/lib/module/modules/message-bubble/MessageBubble.variants.js +57 -0
  259. package/lib/module/modules/message-bubble/index.js +4 -0
  260. package/lib/module/modules/modal/MODULE.md +29 -3
  261. package/lib/module/modules/modal/Modal.js +72 -22
  262. package/lib/module/modules/more-items/MODULE.md +72 -0
  263. package/lib/module/modules/more-items/MoreItems.js +162 -0
  264. package/lib/module/modules/more-items/MoreItems.variants.js +80 -0
  265. package/lib/module/modules/more-items/index.js +4 -0
  266. package/lib/module/modules/multi-select/MODULE.md +85 -19
  267. package/lib/module/modules/multi-select/MultiSelect.js +217 -105
  268. package/lib/module/modules/multi-select/MultiSelect.variants.js +28 -5
  269. package/lib/module/modules/number-input/MODULE.md +39 -5
  270. package/lib/module/modules/number-input/NumberInput.js +41 -11
  271. package/lib/module/modules/number-input/NumberInput.variants.js +39 -5
  272. package/lib/module/modules/org-switcher/MODULE.md +121 -0
  273. package/lib/module/modules/org-switcher/OrgSwitcher.js +284 -0
  274. package/lib/module/modules/org-switcher/OrgSwitcher.variants.js +186 -0
  275. package/lib/module/modules/org-switcher/index.js +9 -0
  276. package/lib/module/modules/pagination/MODULE.md +163 -0
  277. package/lib/module/modules/pagination/Pagination.js +197 -0
  278. package/lib/module/modules/pagination/Pagination.variants.js +307 -0
  279. package/lib/module/modules/pagination/PaginationControls.js +193 -0
  280. package/lib/module/modules/pagination/index.js +15 -0
  281. package/lib/module/modules/pin-input/MODULE.md +29 -14
  282. package/lib/module/modules/pin-input/PinInput.js +111 -80
  283. package/lib/module/modules/pin-input/PinInput.variants.js +13 -5
  284. package/lib/module/modules/progress-bar/MODULE.md +17 -7
  285. package/lib/module/modules/progress-bar/ProgressBar.js +97 -56
  286. package/lib/module/modules/progress-bar/ProgressBar.variants.js +16 -18
  287. package/lib/module/modules/radio-group/MODULE.md +40 -14
  288. package/lib/module/modules/radio-group/RadioGroup.js +71 -7
  289. package/lib/module/modules/radio-group/RadioGroup.variants.js +46 -10
  290. package/lib/module/modules/reorder/MODULE.md +104 -97
  291. package/lib/module/modules/reorder/Reorder.js +233 -197
  292. package/lib/module/modules/reorder/Reorder.variants.js +35 -13
  293. package/lib/module/modules/rich-text/MODULE.md +52 -0
  294. package/lib/module/modules/rich-text/RichText.js +362 -0
  295. package/lib/module/modules/rich-text/RichText.variants.js +17 -0
  296. package/lib/module/modules/rich-text/index.js +5 -0
  297. package/lib/module/modules/rich-text/parseRichText.js +133 -0
  298. package/lib/module/modules/rich-text-editor/MODULE.md +225 -0
  299. package/lib/module/modules/rich-text-editor/RichTextEditor.js +413 -0
  300. package/lib/module/modules/rich-text-editor/RichTextEditor.variants.js +316 -0
  301. package/lib/module/modules/rich-text-editor/index.js +10 -0
  302. package/lib/module/modules/screen/MODULE.md +57 -0
  303. package/lib/module/modules/screen/Screen.js +106 -0
  304. package/lib/module/modules/screen/Screen.variants.js +43 -0
  305. package/lib/module/modules/screen/index.js +10 -0
  306. package/lib/module/modules/search-bar/MODULE.md +114 -0
  307. package/lib/module/modules/search-bar/SearchBar.js +256 -0
  308. package/lib/module/modules/search-bar/SearchBar.variants.js +205 -0
  309. package/lib/module/modules/search-bar/index.js +12 -0
  310. package/lib/module/modules/section/MODULE.md +39 -0
  311. package/lib/module/modules/section/Section.js +42 -0
  312. package/lib/module/modules/section/Section.variants.js +29 -0
  313. package/lib/module/modules/section/index.js +10 -0
  314. package/lib/module/modules/section-list/MODULE.md +18 -0
  315. package/lib/module/modules/section-list/SectionList.js +64 -0
  316. package/lib/module/modules/section-list/SectionList.variants.js +11 -0
  317. package/lib/module/modules/section-list/index.js +4 -0
  318. package/lib/module/modules/segmented-control/MODULE.md +124 -0
  319. package/lib/module/modules/segmented-control/SegmentedControl.js +158 -0
  320. package/lib/module/modules/segmented-control/SegmentedControl.variants.js +167 -0
  321. package/lib/module/modules/segmented-control/index.js +13 -0
  322. package/lib/module/modules/select/MODULE.md +82 -15
  323. package/lib/module/modules/select/Select.js +201 -96
  324. package/lib/module/modules/select/Select.variants.js +39 -5
  325. package/lib/module/modules/skeleton/MODULE.md +27 -7
  326. package/lib/module/modules/skeleton/Skeleton.js +52 -38
  327. package/lib/module/modules/skeleton/Skeleton.variants.js +9 -8
  328. package/lib/module/modules/slider/MODULE.md +31 -5
  329. package/lib/module/modules/slider/Slider.js +67 -10
  330. package/lib/module/modules/slider/Slider.variants.js +60 -13
  331. package/lib/module/modules/spinner/MODULE.md +16 -6
  332. package/lib/module/modules/spinner/Spinner.js +20 -16
  333. package/lib/module/modules/spinner/Spinner.variants.js +5 -3
  334. package/lib/module/modules/stage-progress/MODULE.md +64 -0
  335. package/lib/module/modules/stage-progress/StageProgress.js +174 -0
  336. package/lib/module/modules/stage-progress/StageProgress.variants.js +164 -0
  337. package/lib/module/modules/stage-progress/index.js +4 -0
  338. package/lib/module/modules/stat-tile/MODULE.md +51 -0
  339. package/lib/module/modules/stat-tile/StatTile.js +124 -0
  340. package/lib/module/modules/stat-tile/StatTile.variants.js +57 -0
  341. package/lib/module/modules/stat-tile/index.js +10 -0
  342. package/lib/module/modules/state-block/MODULE.md +52 -0
  343. package/lib/module/modules/state-block/StateBlock.js +131 -0
  344. package/lib/module/modules/state-block/StateBlock.variants.js +55 -0
  345. package/lib/module/modules/state-block/index.js +10 -0
  346. package/lib/module/modules/stepper/MODULE.md +33 -6
  347. package/lib/module/modules/stepper/Stepper.js +108 -39
  348. package/lib/module/modules/stepper/Stepper.variants.js +6 -6
  349. package/lib/module/modules/swipeable-row/MODULE.md +120 -0
  350. package/lib/module/modules/swipeable-row/SwipeableRow.js +244 -0
  351. package/lib/module/modules/swipeable-row/SwipeableRow.variants.js +80 -0
  352. package/lib/module/modules/swipeable-row/index.js +4 -0
  353. package/lib/module/modules/switch/MODULE.md +14 -0
  354. package/lib/module/modules/switch/Switch.js +1 -1
  355. package/lib/module/modules/switch/Switch.variants.js +8 -0
  356. package/lib/module/modules/tabs/MODULE.md +47 -13
  357. package/lib/module/modules/tabs/Tabs.js +121 -72
  358. package/lib/module/modules/tabs/Tabs.variants.js +30 -8
  359. package/lib/module/modules/text/MODULE.md +51 -0
  360. package/lib/module/modules/text/Text.js +47 -0
  361. package/lib/module/modules/text/Text.variants.js +98 -0
  362. package/lib/module/modules/text/index.js +4 -0
  363. package/lib/module/modules/textarea/MODULE.md +29 -13
  364. package/lib/module/modules/textarea/Textarea.js +90 -45
  365. package/lib/module/modules/textarea/Textarea.variants.js +14 -9
  366. package/lib/module/modules/timeline/MODULE.md +49 -8
  367. package/lib/module/modules/timeline/Timeline.js +151 -74
  368. package/lib/module/modules/timeline/Timeline.variants.js +13 -0
  369. package/lib/module/modules/toast/MODULE.md +66 -7
  370. package/lib/module/modules/toast/Toast.js +93 -27
  371. package/lib/module/modules/toast/Toast.variants.js +37 -1
  372. package/lib/module/modules/toast/toastScreenReader.js +69 -0
  373. package/lib/module/modules/tooltip/MODULE.md +78 -28
  374. package/lib/module/modules/tooltip/Tooltip.js +93 -43
  375. package/lib/module/modules/tooltip/Tooltip.variants.js +3 -4
  376. package/lib/module/modules/typing-indicator/MODULE.md +48 -0
  377. package/lib/module/modules/typing-indicator/TypingIndicator.js +98 -0
  378. package/lib/module/modules/typing-indicator/TypingIndicator.variants.js +55 -0
  379. package/lib/module/modules/typing-indicator/index.js +4 -0
  380. package/lib/module/modules/unread-badge/MODULE.md +20 -0
  381. package/lib/module/modules/unread-badge/UnreadBadge.js +45 -0
  382. package/lib/module/modules/unread-badge/UnreadBadge.variants.js +66 -0
  383. package/lib/module/modules/unread-badge/index.js +4 -0
  384. package/lib/module/test/mocks/flashList.js +5 -0
  385. package/lib/module/test/perfHelpers.js +18 -0
  386. package/lib/module/theme/MODULE.md +6 -0
  387. package/lib/module/theme/hooks.js +11 -0
  388. package/lib/module/theme/index.js +3 -6
  389. package/lib/module/theme/platform/MODULE.md +6 -0
  390. package/lib/module/theme/platform/motion.native.js +15 -0
  391. package/lib/module/theme/provider/PixelizeProvider.js +9 -47
  392. package/lib/module/theme/provider/ThemeContext.js +6 -0
  393. package/lib/module/theme/provider/colorModeStorage.js +2 -2
  394. package/lib/module/theme/provider/index.js +1 -0
  395. package/lib/module/theme/provider/loadPalette.js +75 -0
  396. package/lib/module/theme/provider/types.js +4 -0
  397. package/lib/module/theme/provider/useTheme.js +1 -2
  398. package/lib/module/theme/provider/useThemeMode.js +1 -1
  399. package/lib/module/theme/tokens/builders/accentText.js +9 -0
  400. package/lib/module/theme/tokens/roles/index.js +9 -3
  401. package/lib/typescript/core/a11y/announce.d.ts +20 -0
  402. package/lib/typescript/core/a11y/announce.web.d.ts +27 -0
  403. package/lib/typescript/core/a11y/index.d.ts +21 -2
  404. package/lib/typescript/core/a11y/keyboard.d.ts +45 -0
  405. package/lib/typescript/core/a11y/keyboard.web.d.ts +69 -0
  406. package/lib/typescript/core/a11y/labels.d.ts +19 -0
  407. package/lib/typescript/core/device/index.d.ts +16 -0
  408. package/lib/typescript/core/heading/index.d.ts +45 -0
  409. package/lib/typescript/core/icon/Icon.d.ts +18 -0
  410. package/lib/typescript/core/icon/icons/arrow-down.d.ts +3 -0
  411. package/lib/typescript/core/icon/icons/arrow-left.d.ts +3 -0
  412. package/lib/typescript/core/icon/icons/arrow-right.d.ts +3 -0
  413. package/lib/typescript/core/icon/icons/arrow-up.d.ts +3 -0
  414. package/lib/typescript/core/icon/icons/at-sign.d.ts +3 -0
  415. package/lib/typescript/core/icon/icons/bell.d.ts +3 -0
  416. package/lib/typescript/core/icon/icons/bold.d.ts +3 -0
  417. package/lib/typescript/core/icon/icons/building-2.d.ts +3 -0
  418. package/lib/typescript/core/icon/icons/calendar.d.ts +3 -0
  419. package/lib/typescript/core/icon/icons/chart-column.d.ts +3 -0
  420. package/lib/typescript/core/icon/icons/check.d.ts +3 -0
  421. package/lib/typescript/core/icon/icons/chevron-down.d.ts +3 -0
  422. package/lib/typescript/core/icon/icons/chevron-left.d.ts +3 -0
  423. package/lib/typescript/core/icon/icons/chevron-right.d.ts +3 -0
  424. package/lib/typescript/core/icon/icons/chevron-up.d.ts +3 -0
  425. package/lib/typescript/core/icon/icons/chevrons-left.d.ts +3 -0
  426. package/lib/typescript/core/icon/icons/chevrons-right.d.ts +3 -0
  427. package/lib/typescript/core/icon/icons/chevrons-up-down.d.ts +3 -0
  428. package/lib/typescript/core/icon/icons/circle-alert.d.ts +3 -0
  429. package/lib/typescript/core/icon/icons/circle-check.d.ts +3 -0
  430. package/lib/typescript/core/icon/icons/clock.d.ts +3 -0
  431. package/lib/typescript/core/icon/icons/code.d.ts +3 -0
  432. package/lib/typescript/core/icon/icons/download.d.ts +3 -0
  433. package/lib/typescript/core/icon/icons/external-link.d.ts +3 -0
  434. package/lib/typescript/core/icon/icons/eye.d.ts +3 -0
  435. package/lib/typescript/core/icon/icons/file-text.d.ts +3 -0
  436. package/lib/typescript/core/icon/icons/filter.d.ts +3 -0
  437. package/lib/typescript/core/icon/icons/flag.d.ts +3 -0
  438. package/lib/typescript/core/icon/icons/folder.d.ts +3 -0
  439. package/lib/typescript/core/icon/icons/heading-1.d.ts +3 -0
  440. package/lib/typescript/core/icon/icons/heading-2.d.ts +3 -0
  441. package/lib/typescript/core/icon/icons/heading-3.d.ts +3 -0
  442. package/lib/typescript/core/icon/icons/image.d.ts +3 -0
  443. package/lib/typescript/core/icon/icons/inbox.d.ts +3 -0
  444. package/lib/typescript/core/icon/icons/info.d.ts +3 -0
  445. package/lib/typescript/core/icon/icons/italic.d.ts +3 -0
  446. package/lib/typescript/core/icon/icons/kanban.d.ts +3 -0
  447. package/lib/typescript/core/icon/icons/layers.d.ts +3 -0
  448. package/lib/typescript/core/icon/icons/layout-dashboard.d.ts +3 -0
  449. package/lib/typescript/core/icon/icons/layout-template.d.ts +3 -0
  450. package/lib/typescript/core/icon/icons/life-buoy.d.ts +3 -0
  451. package/lib/typescript/core/icon/icons/link.d.ts +3 -0
  452. package/lib/typescript/core/icon/icons/list-checks.d.ts +3 -0
  453. package/lib/typescript/core/icon/icons/list-ordered.d.ts +3 -0
  454. package/lib/typescript/core/icon/icons/list-todo.d.ts +3 -0
  455. package/lib/typescript/core/icon/icons/list.d.ts +3 -0
  456. package/lib/typescript/core/icon/icons/log-out.d.ts +3 -0
  457. package/lib/typescript/core/icon/icons/map.d.ts +3 -0
  458. package/lib/typescript/core/icon/icons/message-square.d.ts +3 -0
  459. package/lib/typescript/core/icon/icons/milestone.d.ts +3 -0
  460. package/lib/typescript/core/icon/icons/minus.d.ts +3 -0
  461. package/lib/typescript/core/icon/icons/more-horizontal.d.ts +3 -0
  462. package/lib/typescript/core/icon/icons/paperclip.d.ts +3 -0
  463. package/lib/typescript/core/icon/icons/pencil.d.ts +3 -0
  464. package/lib/typescript/core/icon/icons/plus.d.ts +3 -0
  465. package/lib/typescript/core/icon/icons/quote.d.ts +3 -0
  466. package/lib/typescript/core/icon/icons/refresh-cw.d.ts +3 -0
  467. package/lib/typescript/core/icon/icons/save.d.ts +3 -0
  468. package/lib/typescript/core/icon/icons/search.d.ts +3 -0
  469. package/lib/typescript/core/icon/icons/send.d.ts +3 -0
  470. package/lib/typescript/core/icon/icons/settings.d.ts +3 -0
  471. package/lib/typescript/core/icon/icons/share.d.ts +3 -0
  472. package/lib/typescript/core/icon/icons/square-code.d.ts +3 -0
  473. package/lib/typescript/core/icon/icons/star.d.ts +3 -0
  474. package/lib/typescript/core/icon/icons/strikethrough.d.ts +3 -0
  475. package/lib/typescript/core/icon/icons/tag.d.ts +3 -0
  476. package/lib/typescript/core/icon/icons/trash.d.ts +3 -0
  477. package/lib/typescript/core/icon/icons/triangle-alert.d.ts +3 -0
  478. package/lib/typescript/core/icon/icons/underline.d.ts +3 -0
  479. package/lib/typescript/core/icon/icons/upload.d.ts +3 -0
  480. package/lib/typescript/core/icon/icons/user.d.ts +3 -0
  481. package/lib/typescript/core/icon/icons/users.d.ts +3 -0
  482. package/lib/typescript/core/icon/icons/x.d.ts +3 -0
  483. package/lib/typescript/core/icon/index.d.ts +6 -57
  484. package/lib/typescript/core/icon/names.d.ts +2 -0
  485. package/lib/typescript/core/icon/resolve.d.ts +4 -0
  486. package/lib/typescript/core/icon/types.d.ts +13 -0
  487. package/lib/typescript/core/list/VirtualList.d.ts +55 -0
  488. package/lib/typescript/core/list/index.d.ts +3 -0
  489. package/lib/typescript/core/media/MediaImage.d.ts +28 -0
  490. package/lib/typescript/core/media/expoImage.d.ts +14 -0
  491. package/lib/typescript/core/media/index.d.ts +7 -0
  492. package/lib/typescript/core/media/pickers.d.ts +27 -0
  493. package/lib/typescript/core/motion/config.d.ts +56 -0
  494. package/lib/typescript/core/motion/index.d.ts +8 -0
  495. package/lib/typescript/core/motion/presets.d.ts +49 -0
  496. package/lib/typescript/core/motion/useAnimatedValue.d.ts +11 -0
  497. package/lib/typescript/core/motion/useMotion.d.ts +34 -0
  498. package/lib/typescript/core/style/index.d.ts +3 -0
  499. package/lib/typescript/core/style/sx.d.ts +86 -0
  500. package/lib/typescript/core/style/useThemedStyles.d.ts +5 -0
  501. package/lib/typescript/index.d.ts +134 -2
  502. package/lib/typescript/modules/accordion/Accordion.d.ts +12 -23
  503. package/lib/typescript/modules/accordion/Accordion.variants.d.ts +5 -5
  504. package/lib/typescript/modules/alert-dialog/AlertDialog.variants.d.ts +1 -1
  505. package/lib/typescript/modules/app-bar/AppBar.d.ts +37 -0
  506. package/lib/typescript/modules/app-bar/AppBar.variants.d.ts +35 -0
  507. package/lib/typescript/modules/app-bar/index.d.ts +9 -0
  508. package/lib/typescript/modules/avatar/Avatar.d.ts +23 -3
  509. package/lib/typescript/modules/avatar/Avatar.variants.d.ts +32 -1
  510. package/lib/typescript/modules/avatar/index.d.ts +1 -1
  511. package/lib/typescript/modules/avatar-group/AvatarGroup.d.ts +28 -0
  512. package/lib/typescript/modules/avatar-group/AvatarGroup.variants.d.ts +75 -0
  513. package/lib/typescript/modules/avatar-group/index.d.ts +9 -0
  514. package/lib/typescript/modules/badge/Badge.d.ts +3 -1
  515. package/lib/typescript/modules/badge/Badge.variants.d.ts +8 -4
  516. package/lib/typescript/modules/banner/Banner.d.ts +35 -0
  517. package/lib/typescript/modules/banner/Banner.variants.d.ts +49 -0
  518. package/lib/typescript/modules/banner/index.d.ts +5 -0
  519. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts +14 -9
  520. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts +72 -9
  521. package/lib/typescript/modules/bottom-nav/BottomNavIconWithBadge.d.ts +25 -0
  522. package/lib/typescript/modules/bottom-nav/BottomNavTab.d.ts +34 -0
  523. package/lib/typescript/modules/bottom-sheet/BottomSheet.d.ts +29 -0
  524. package/lib/typescript/modules/bottom-sheet/BottomSheet.variants.d.ts +13 -0
  525. package/lib/typescript/modules/bottom-sheet/index.d.ts +3 -0
  526. package/lib/typescript/modules/button/Button.d.ts +21 -0
  527. package/lib/typescript/modules/button/Button.variants.d.ts +22 -9
  528. package/lib/typescript/modules/button-group/ButtonGroup.d.ts +4 -2
  529. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts +18 -5
  530. package/lib/typescript/modules/card/Card.variants.d.ts +2 -2
  531. package/lib/typescript/modules/charts/BarChart.d.ts +26 -0
  532. package/lib/typescript/modules/charts/BarList.d.ts +18 -0
  533. package/lib/typescript/modules/charts/ChartLegend.d.ts +16 -0
  534. package/lib/typescript/modules/charts/Charts.variants.d.ts +225 -0
  535. package/lib/typescript/modules/charts/DonutChart.d.ts +21 -0
  536. package/lib/typescript/modules/charts/LineChart.d.ts +30 -0
  537. package/lib/typescript/modules/charts/PieChart.d.ts +18 -0
  538. package/lib/typescript/modules/charts/Sparkline.d.ts +13 -0
  539. package/lib/typescript/modules/charts/index.d.ts +19 -0
  540. package/lib/typescript/modules/checkbox/Checkbox.d.ts +4 -1
  541. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts +14 -9
  542. package/lib/typescript/modules/chip/Chip.d.ts +38 -0
  543. package/lib/typescript/modules/chip/Chip.variants.d.ts +198 -0
  544. package/lib/typescript/modules/chip/ChipGroup.d.ts +22 -0
  545. package/lib/typescript/modules/chip/index.d.ts +12 -0
  546. package/lib/typescript/modules/combobox/Combobox.d.ts +81 -0
  547. package/lib/typescript/modules/combobox/Combobox.variants.d.ts +212 -0
  548. package/lib/typescript/modules/combobox/comboboxKeys.d.ts +25 -0
  549. package/lib/typescript/modules/combobox/comboboxKeys.web.d.ts +23 -0
  550. package/lib/typescript/modules/combobox/index.d.ts +11 -0
  551. package/lib/typescript/modules/composer/Composer.d.ts +28 -0
  552. package/lib/typescript/modules/composer/Composer.variants.d.ts +7 -0
  553. package/lib/typescript/modules/composer/index.d.ts +3 -0
  554. package/lib/typescript/modules/copy-button/CopyButton.d.ts +21 -0
  555. package/lib/typescript/modules/copy-button/CopyButton.variants.d.ts +42 -0
  556. package/lib/typescript/modules/copy-button/index.d.ts +4 -0
  557. package/lib/typescript/modules/data-table/DataTable.d.ts +44 -0
  558. package/lib/typescript/modules/data-table/DataTable.variants.d.ts +118 -0
  559. package/lib/typescript/modules/data-table/index.d.ts +9 -0
  560. package/lib/typescript/modules/date-picker/Calendar.d.ts +42 -0
  561. package/lib/typescript/modules/date-picker/Calendar.keys.d.ts +19 -0
  562. package/lib/typescript/modules/date-picker/Calendar.keys.web.d.ts +35 -0
  563. package/lib/typescript/modules/date-picker/DatePicker.d.ts +40 -0
  564. package/lib/typescript/modules/date-picker/DatePicker.variants.d.ts +322 -0
  565. package/lib/typescript/modules/date-picker/DateRangePicker.d.ts +32 -0
  566. package/lib/typescript/modules/date-picker/PickerField.d.ts +26 -0
  567. package/lib/typescript/modules/date-picker/PickerShell.d.ts +29 -0
  568. package/lib/typescript/modules/date-picker/TimePicker.d.ts +20 -0
  569. package/lib/typescript/modules/date-picker/index.d.ts +16 -0
  570. package/lib/typescript/modules/divider/Divider.variants.d.ts +2 -2
  571. package/lib/typescript/modules/drawer/Drawer.d.ts +2 -1
  572. package/lib/typescript/modules/drawer/Drawer.variants.d.ts +4 -13
  573. package/lib/typescript/modules/empty-state/EmptyState.d.ts +7 -4
  574. package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts +7 -1
  575. package/lib/typescript/modules/fab/Fab.d.ts +74 -0
  576. package/lib/typescript/modules/fab/Fab.variants.d.ts +229 -0
  577. package/lib/typescript/modules/fab/FabGroup.d.ts +66 -0
  578. package/lib/typescript/modules/fab/index.d.ts +12 -0
  579. package/lib/typescript/modules/file-grid/FileGrid.d.ts +26 -0
  580. package/lib/typescript/modules/file-grid/FileGrid.variants.d.ts +26 -0
  581. package/lib/typescript/modules/file-grid/index.d.ts +4 -0
  582. package/lib/typescript/modules/file-upload/FileUpload.d.ts +3 -0
  583. package/lib/typescript/modules/file-upload/FileUpload.variants.d.ts +22 -5
  584. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts +30 -5
  585. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts +13 -8
  586. package/lib/typescript/modules/folder-row/FolderRow.d.ts +24 -0
  587. package/lib/typescript/modules/folder-row/FolderRow.variants.d.ts +29 -0
  588. package/lib/typescript/modules/folder-row/index.d.ts +3 -0
  589. package/lib/typescript/modules/form-field/FormField.d.ts +29 -0
  590. package/lib/typescript/modules/form-field/FormField.variants.d.ts +93 -0
  591. package/lib/typescript/modules/form-field/index.d.ts +4 -0
  592. package/lib/typescript/modules/gantt/Gantt.d.ts +19 -0
  593. package/lib/typescript/modules/gantt/Gantt.variants.d.ts +82 -0
  594. package/lib/typescript/modules/gantt/index.d.ts +5 -0
  595. package/lib/typescript/modules/image-viewer/ImageViewer.d.ts +27 -0
  596. package/lib/typescript/modules/image-viewer/ImageViewer.variants.d.ts +3 -0
  597. package/lib/typescript/modules/image-viewer/index.d.ts +3 -0
  598. package/lib/typescript/modules/input/Input.d.ts +9 -1
  599. package/lib/typescript/modules/input/Input.variants.d.ts +26 -6
  600. package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.d.ts +34 -0
  601. package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.variants.d.ts +46 -0
  602. package/lib/typescript/modules/limit-reached-modal/index.d.ts +10 -0
  603. package/lib/typescript/modules/list-item/ListItem.d.ts +21 -0
  604. package/lib/typescript/modules/list-item/ListItem.variants.d.ts +29 -0
  605. package/lib/typescript/modules/list-item/index.d.ts +8 -0
  606. package/lib/typescript/modules/markdown/Markdown.d.ts +16 -0
  607. package/lib/typescript/modules/markdown/Markdown.variants.d.ts +33 -0
  608. package/lib/typescript/modules/markdown/index.d.ts +10 -0
  609. package/lib/typescript/modules/markdown/parseMarkdown.d.ts +44 -0
  610. package/lib/typescript/modules/menu/Menu.d.ts +8 -18
  611. package/lib/typescript/modules/menu/Menu.variants.d.ts +8 -1
  612. package/lib/typescript/modules/message-bubble/MessageBubble.d.ts +25 -0
  613. package/lib/typescript/modules/message-bubble/MessageBubble.variants.d.ts +31 -0
  614. package/lib/typescript/modules/message-bubble/index.d.ts +4 -0
  615. package/lib/typescript/modules/modal/Modal.d.ts +12 -0
  616. package/lib/typescript/modules/modal/Modal.variants.d.ts +1 -1
  617. package/lib/typescript/modules/more-items/MoreItems.d.ts +15 -0
  618. package/lib/typescript/modules/more-items/MoreItems.variants.d.ts +30 -0
  619. package/lib/typescript/modules/more-items/index.d.ts +4 -0
  620. package/lib/typescript/modules/multi-select/MultiSelect.d.ts +3 -12
  621. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts +24 -5
  622. package/lib/typescript/modules/number-input/NumberInput.d.ts +6 -0
  623. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts +57 -7
  624. package/lib/typescript/modules/org-switcher/OrgSwitcher.d.ts +44 -0
  625. package/lib/typescript/modules/org-switcher/OrgSwitcher.variants.d.ts +139 -0
  626. package/lib/typescript/modules/org-switcher/index.d.ts +8 -0
  627. package/lib/typescript/modules/pagination/Pagination.d.ts +45 -0
  628. package/lib/typescript/modules/pagination/Pagination.variants.d.ts +240 -0
  629. package/lib/typescript/modules/pagination/PaginationControls.d.ts +50 -0
  630. package/lib/typescript/modules/pagination/index.d.ts +14 -0
  631. package/lib/typescript/modules/pin-input/PinInput.d.ts +6 -0
  632. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts +22 -5
  633. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts +8 -4
  634. package/lib/typescript/modules/progress-bar/ProgressBar.variants.d.ts +13 -15
  635. package/lib/typescript/modules/radio-group/RadioGroup.d.ts +6 -0
  636. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts +32 -11
  637. package/lib/typescript/modules/reorder/Reorder.d.ts +28 -23
  638. package/lib/typescript/modules/reorder/Reorder.variants.d.ts +25 -9
  639. package/lib/typescript/modules/rich-text/RichText.d.ts +15 -0
  640. package/lib/typescript/modules/rich-text/RichText.variants.d.ts +15 -0
  641. package/lib/typescript/modules/rich-text/index.d.ts +5 -0
  642. package/lib/typescript/modules/rich-text/parseRichText.d.ts +30 -0
  643. package/lib/typescript/modules/rich-text-editor/RichTextEditor.d.ts +62 -0
  644. package/lib/typescript/modules/rich-text-editor/RichTextEditor.variants.d.ts +139 -0
  645. package/lib/typescript/modules/rich-text-editor/index.d.ts +9 -0
  646. package/lib/typescript/modules/screen/Screen.d.ts +36 -0
  647. package/lib/typescript/modules/screen/Screen.variants.d.ts +21 -0
  648. package/lib/typescript/modules/screen/index.d.ts +9 -0
  649. package/lib/typescript/modules/search-bar/SearchBar.d.ts +47 -0
  650. package/lib/typescript/modules/search-bar/SearchBar.variants.d.ts +179 -0
  651. package/lib/typescript/modules/search-bar/index.d.ts +11 -0
  652. package/lib/typescript/modules/section/Section.d.ts +17 -0
  653. package/lib/typescript/modules/section/Section.variants.d.ts +12 -0
  654. package/lib/typescript/modules/section/index.d.ts +8 -0
  655. package/lib/typescript/modules/section-list/SectionList.d.ts +26 -0
  656. package/lib/typescript/modules/section-list/SectionList.variants.d.ts +3 -0
  657. package/lib/typescript/modules/section-list/index.d.ts +3 -0
  658. package/lib/typescript/modules/segmented-control/SegmentedControl.d.ts +45 -0
  659. package/lib/typescript/modules/segmented-control/SegmentedControl.variants.d.ts +143 -0
  660. package/lib/typescript/modules/segmented-control/index.d.ts +11 -0
  661. package/lib/typescript/modules/select/Select.d.ts +3 -10
  662. package/lib/typescript/modules/select/Select.variants.d.ts +27 -5
  663. package/lib/typescript/modules/skeleton/Skeleton.d.ts +5 -0
  664. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts +10 -9
  665. package/lib/typescript/modules/slider/Slider.variants.d.ts +35 -14
  666. package/lib/typescript/modules/spinner/Spinner.variants.d.ts +6 -4
  667. package/lib/typescript/modules/stage-progress/StageProgress.d.ts +18 -0
  668. package/lib/typescript/modules/stage-progress/StageProgress.variants.d.ts +98 -0
  669. package/lib/typescript/modules/stage-progress/index.d.ts +4 -0
  670. package/lib/typescript/modules/stat-tile/StatTile.d.ts +20 -0
  671. package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts +36 -0
  672. package/lib/typescript/modules/stat-tile/index.d.ts +9 -0
  673. package/lib/typescript/modules/state-block/StateBlock.d.ts +51 -0
  674. package/lib/typescript/modules/state-block/StateBlock.variants.d.ts +30 -0
  675. package/lib/typescript/modules/state-block/index.d.ts +10 -0
  676. package/lib/typescript/modules/stepper/Stepper.d.ts +4 -0
  677. package/lib/typescript/modules/stepper/Stepper.variants.d.ts +7 -7
  678. package/lib/typescript/modules/swipeable-row/SwipeableRow.d.ts +35 -0
  679. package/lib/typescript/modules/swipeable-row/SwipeableRow.variants.d.ts +27 -0
  680. package/lib/typescript/modules/swipeable-row/index.d.ts +4 -0
  681. package/lib/typescript/modules/switch/Switch.variants.d.ts +9 -1
  682. package/lib/typescript/modules/tabs/Tabs.d.ts +8 -6
  683. package/lib/typescript/modules/tabs/Tabs.variants.d.ts +20 -7
  684. package/lib/typescript/modules/text/Text.d.ts +23 -0
  685. package/lib/typescript/modules/text/Text.variants.d.ts +18 -0
  686. package/lib/typescript/modules/text/index.d.ts +4 -0
  687. package/lib/typescript/modules/textarea/Textarea.d.ts +5 -0
  688. package/lib/typescript/modules/textarea/Textarea.variants.d.ts +15 -8
  689. package/lib/typescript/modules/timeline/Timeline.d.ts +11 -11
  690. package/lib/typescript/modules/timeline/Timeline.variants.d.ts +17 -1
  691. package/lib/typescript/modules/toast/Toast.d.ts +13 -3
  692. package/lib/typescript/modules/toast/Toast.variants.d.ts +31 -3
  693. package/lib/typescript/modules/toast/index.d.ts +1 -1
  694. package/lib/typescript/modules/toast/toastScreenReader.d.ts +22 -0
  695. package/lib/typescript/modules/tooltip/Tooltip.d.ts +34 -11
  696. package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts +4 -5
  697. package/lib/typescript/modules/typing-indicator/TypingIndicator.d.ts +28 -0
  698. package/lib/typescript/modules/typing-indicator/TypingIndicator.variants.d.ts +32 -0
  699. package/lib/typescript/modules/typing-indicator/index.d.ts +4 -0
  700. package/lib/typescript/modules/unread-badge/UnreadBadge.d.ts +15 -0
  701. package/lib/typescript/modules/unread-badge/UnreadBadge.variants.d.ts +56 -0
  702. package/lib/typescript/modules/unread-badge/index.d.ts +4 -0
  703. package/lib/typescript/test/mocks/flashList.d.ts +3 -0
  704. package/lib/typescript/test/perfHelpers.d.ts +9 -0
  705. package/lib/typescript/theme/hooks.d.ts +11 -0
  706. package/lib/typescript/theme/index.d.ts +3 -2
  707. package/lib/typescript/theme/platform/motion.native.d.ts +15 -0
  708. package/lib/typescript/theme/provider/PixelizeProvider.d.ts +3 -80
  709. package/lib/typescript/theme/provider/ThemeContext.d.ts +4 -0
  710. package/lib/typescript/theme/provider/index.d.ts +2 -1
  711. package/lib/typescript/theme/provider/loadPalette.d.ts +9 -0
  712. package/lib/typescript/theme/provider/types.d.ts +41 -0
  713. package/lib/typescript/theme/provider/useTheme.d.ts +1 -2
  714. package/lib/typescript/theme/provider/useThemeMode.d.ts +1 -1
  715. package/lib/typescript/theme/tokens/builders/accentText.d.ts +6 -0
  716. package/lib/typescript/theme/tokens/roles/index.d.ts +7 -0
  717. package/package.json +209 -14
  718. package/registry.json +191 -1
  719. package/lib/module/core/a11y/index.js.map +0 -1
  720. package/lib/module/core/icon/index.js.map +0 -1
  721. package/lib/module/core/style/index.js.map +0 -1
  722. package/lib/module/core/style/layoutStyle.js.map +0 -1
  723. package/lib/module/core/style/variants.js.map +0 -1
  724. package/lib/module/index.js.map +0 -1
  725. package/lib/module/modules/accordion/Accordion.js.map +0 -1
  726. package/lib/module/modules/accordion/Accordion.variants.js.map +0 -1
  727. package/lib/module/modules/accordion/index.js.map +0 -1
  728. package/lib/module/modules/alert-dialog/AlertDialog.js.map +0 -1
  729. package/lib/module/modules/alert-dialog/AlertDialog.variants.js.map +0 -1
  730. package/lib/module/modules/alert-dialog/index.js.map +0 -1
  731. package/lib/module/modules/avatar/Avatar.js.map +0 -1
  732. package/lib/module/modules/avatar/Avatar.variants.js.map +0 -1
  733. package/lib/module/modules/avatar/index.js.map +0 -1
  734. package/lib/module/modules/badge/Badge.js.map +0 -1
  735. package/lib/module/modules/badge/Badge.variants.js.map +0 -1
  736. package/lib/module/modules/badge/index.js.map +0 -1
  737. package/lib/module/modules/bottom-nav/BottomNav.js.map +0 -1
  738. package/lib/module/modules/bottom-nav/BottomNav.search.js.map +0 -1
  739. package/lib/module/modules/bottom-nav/BottomNav.variants.js.map +0 -1
  740. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js.map +0 -1
  741. package/lib/module/modules/bottom-nav/index.js.map +0 -1
  742. package/lib/module/modules/button/Button.js.map +0 -1
  743. package/lib/module/modules/button/Button.variants.js.map +0 -1
  744. package/lib/module/modules/button/index.js.map +0 -1
  745. package/lib/module/modules/button-group/ButtonGroup.js.map +0 -1
  746. package/lib/module/modules/button-group/ButtonGroup.variants.js.map +0 -1
  747. package/lib/module/modules/button-group/index.js.map +0 -1
  748. package/lib/module/modules/card/Card.js.map +0 -1
  749. package/lib/module/modules/card/Card.variants.js.map +0 -1
  750. package/lib/module/modules/card/index.js.map +0 -1
  751. package/lib/module/modules/checkbox/Checkbox.js.map +0 -1
  752. package/lib/module/modules/checkbox/Checkbox.variants.js.map +0 -1
  753. package/lib/module/modules/checkbox/index.js.map +0 -1
  754. package/lib/module/modules/divider/Divider.js.map +0 -1
  755. package/lib/module/modules/divider/Divider.variants.js.map +0 -1
  756. package/lib/module/modules/divider/index.js.map +0 -1
  757. package/lib/module/modules/drawer/Drawer.js.map +0 -1
  758. package/lib/module/modules/drawer/Drawer.variants.js.map +0 -1
  759. package/lib/module/modules/drawer/index.js.map +0 -1
  760. package/lib/module/modules/empty-state/EmptyState.js.map +0 -1
  761. package/lib/module/modules/empty-state/EmptyState.variants.js.map +0 -1
  762. package/lib/module/modules/empty-state/index.js.map +0 -1
  763. package/lib/module/modules/file-upload/FileUpload.js.map +0 -1
  764. package/lib/module/modules/file-upload/FileUpload.variants.js.map +0 -1
  765. package/lib/module/modules/file-upload/index.js.map +0 -1
  766. package/lib/module/modules/filter-sheet/FilterChip.js.map +0 -1
  767. package/lib/module/modules/filter-sheet/FilterSheet.js.map +0 -1
  768. package/lib/module/modules/filter-sheet/FilterSheet.variants.js.map +0 -1
  769. package/lib/module/modules/filter-sheet/FilterSheetBody.js.map +0 -1
  770. package/lib/module/modules/filter-sheet/filterSheet.helpers.js.map +0 -1
  771. package/lib/module/modules/filter-sheet/index.js.map +0 -1
  772. package/lib/module/modules/input/Input.js.map +0 -1
  773. package/lib/module/modules/input/Input.variants.js.map +0 -1
  774. package/lib/module/modules/input/index.js.map +0 -1
  775. package/lib/module/modules/menu/Menu.js.map +0 -1
  776. package/lib/module/modules/menu/Menu.variants.js.map +0 -1
  777. package/lib/module/modules/menu/index.js.map +0 -1
  778. package/lib/module/modules/modal/Modal.js.map +0 -1
  779. package/lib/module/modules/modal/Modal.variants.js.map +0 -1
  780. package/lib/module/modules/modal/ModalPortalContext.js.map +0 -1
  781. package/lib/module/modules/modal/ModalPortalProvider.js.map +0 -1
  782. package/lib/module/modules/modal/index.js.map +0 -1
  783. package/lib/module/modules/modal/renderWebPortal.js.map +0 -1
  784. package/lib/module/modules/modal/renderWebPortal.web.js.map +0 -1
  785. package/lib/module/modules/multi-select/MultiSelect.js.map +0 -1
  786. package/lib/module/modules/multi-select/MultiSelect.variants.js.map +0 -1
  787. package/lib/module/modules/multi-select/index.js.map +0 -1
  788. package/lib/module/modules/number-input/NumberInput.js.map +0 -1
  789. package/lib/module/modules/number-input/NumberInput.variants.js.map +0 -1
  790. package/lib/module/modules/number-input/index.js.map +0 -1
  791. package/lib/module/modules/pin-input/PinInput.js.map +0 -1
  792. package/lib/module/modules/pin-input/PinInput.variants.js.map +0 -1
  793. package/lib/module/modules/pin-input/index.js.map +0 -1
  794. package/lib/module/modules/progress-bar/ProgressBar.js.map +0 -1
  795. package/lib/module/modules/progress-bar/ProgressBar.variants.js.map +0 -1
  796. package/lib/module/modules/progress-bar/index.js.map +0 -1
  797. package/lib/module/modules/radio-group/RadioGroup.js.map +0 -1
  798. package/lib/module/modules/radio-group/RadioGroup.variants.js.map +0 -1
  799. package/lib/module/modules/radio-group/index.js.map +0 -1
  800. package/lib/module/modules/reorder/Reorder.js.map +0 -1
  801. package/lib/module/modules/reorder/Reorder.variants.js.map +0 -1
  802. package/lib/module/modules/reorder/index.js.map +0 -1
  803. package/lib/module/modules/select/Select.js.map +0 -1
  804. package/lib/module/modules/select/Select.variants.js.map +0 -1
  805. package/lib/module/modules/select/index.js.map +0 -1
  806. package/lib/module/modules/skeleton/Skeleton.js.map +0 -1
  807. package/lib/module/modules/skeleton/Skeleton.variants.js.map +0 -1
  808. package/lib/module/modules/skeleton/index.js.map +0 -1
  809. package/lib/module/modules/slider/Slider.js.map +0 -1
  810. package/lib/module/modules/slider/Slider.variants.js.map +0 -1
  811. package/lib/module/modules/slider/index.js.map +0 -1
  812. package/lib/module/modules/spinner/Spinner.js.map +0 -1
  813. package/lib/module/modules/spinner/Spinner.variants.js.map +0 -1
  814. package/lib/module/modules/spinner/index.js.map +0 -1
  815. package/lib/module/modules/stepper/Stepper.js.map +0 -1
  816. package/lib/module/modules/stepper/Stepper.variants.js.map +0 -1
  817. package/lib/module/modules/stepper/index.js.map +0 -1
  818. package/lib/module/modules/switch/Switch.js.map +0 -1
  819. package/lib/module/modules/switch/Switch.variants.js.map +0 -1
  820. package/lib/module/modules/switch/index.js.map +0 -1
  821. package/lib/module/modules/tabs/Tabs.js.map +0 -1
  822. package/lib/module/modules/tabs/Tabs.variants.js.map +0 -1
  823. package/lib/module/modules/tabs/index.js.map +0 -1
  824. package/lib/module/modules/textarea/Textarea.js.map +0 -1
  825. package/lib/module/modules/textarea/Textarea.variants.js.map +0 -1
  826. package/lib/module/modules/textarea/index.js.map +0 -1
  827. package/lib/module/modules/timeline/Timeline.js.map +0 -1
  828. package/lib/module/modules/timeline/Timeline.variants.js.map +0 -1
  829. package/lib/module/modules/timeline/index.js.map +0 -1
  830. package/lib/module/modules/toast/Toast.js.map +0 -1
  831. package/lib/module/modules/toast/Toast.variants.js.map +0 -1
  832. package/lib/module/modules/toast/index.js.map +0 -1
  833. package/lib/module/modules/tooltip/Tooltip.js.map +0 -1
  834. package/lib/module/modules/tooltip/Tooltip.variants.js.map +0 -1
  835. package/lib/module/modules/tooltip/index.js.map +0 -1
  836. package/lib/module/theme/index.js.map +0 -1
  837. package/lib/module/theme/platform/colorScheme.native.js.map +0 -1
  838. package/lib/module/theme/platform/elevation.native.js.map +0 -1
  839. package/lib/module/theme/platform/fonts.native.js.map +0 -1
  840. package/lib/module/theme/platform/index.js.map +0 -1
  841. package/lib/module/theme/platform/units.native.js.map +0 -1
  842. package/lib/module/theme/provider/PixelizeProvider.js.map +0 -1
  843. package/lib/module/theme/provider/colorModeStorage.js.map +0 -1
  844. package/lib/module/theme/provider/index.js.map +0 -1
  845. package/lib/module/theme/provider/useTheme.js.map +0 -1
  846. package/lib/module/theme/provider/useThemeColors.js.map +0 -1
  847. package/lib/module/theme/provider/useThemeMode.js.map +0 -1
  848. package/lib/module/theme/tokens/brands/emerald/palette.dark.js.map +0 -1
  849. package/lib/module/theme/tokens/brands/emerald/palette.light.js.map +0 -1
  850. package/lib/module/theme/tokens/brands/index.js.map +0 -1
  851. package/lib/module/theme/tokens/brands/lavender/palette.dark.js.map +0 -1
  852. package/lib/module/theme/tokens/brands/lavender/palette.light.js.map +0 -1
  853. package/lib/module/theme/tokens/brands/meadow/palette.dark.js.map +0 -1
  854. package/lib/module/theme/tokens/brands/meadow/palette.light.js.map +0 -1
  855. package/lib/module/theme/tokens/brands/radiant/palette.dark.js.map +0 -1
  856. package/lib/module/theme/tokens/brands/radiant/palette.light.js.map +0 -1
  857. package/lib/module/theme/tokens/brands/rosewood/palette.dark.js.map +0 -1
  858. package/lib/module/theme/tokens/brands/rosewood/palette.light.js.map +0 -1
  859. package/lib/module/theme/tokens/brands/skyline/palette.dark.js.map +0 -1
  860. package/lib/module/theme/tokens/brands/skyline/palette.light.js.map +0 -1
  861. package/lib/module/theme/tokens/brands/slate/palette.dark.js.map +0 -1
  862. package/lib/module/theme/tokens/brands/slate/palette.light.js.map +0 -1
  863. package/lib/module/theme/tokens/brands/storefront/palette.dark.js.map +0 -1
  864. package/lib/module/theme/tokens/brands/storefront/palette.light.js.map +0 -1
  865. package/lib/module/theme/tokens/brands/zinc/palette.dark.js.map +0 -1
  866. package/lib/module/theme/tokens/brands/zinc/palette.light.js.map +0 -1
  867. package/lib/module/theme/tokens/builders/accentText.js.map +0 -1
  868. package/lib/module/theme/tokens/builders/buildBrandTokens.js.map +0 -1
  869. package/lib/module/theme/tokens/builders/buildDarkPalette.js.map +0 -1
  870. package/lib/module/theme/tokens/builders/color.js.map +0 -1
  871. package/lib/module/theme/tokens/index.js.map +0 -1
  872. package/lib/module/theme/tokens/primitives/borderWidths.js.map +0 -1
  873. package/lib/module/theme/tokens/primitives/breakpoints.js.map +0 -1
  874. package/lib/module/theme/tokens/primitives/elevation.js.map +0 -1
  875. package/lib/module/theme/tokens/primitives/fontSizes.js.map +0 -1
  876. package/lib/module/theme/tokens/primitives/fontWeights.js.map +0 -1
  877. package/lib/module/theme/tokens/primitives/index.js.map +0 -1
  878. package/lib/module/theme/tokens/primitives/letterSpacings.js.map +0 -1
  879. package/lib/module/theme/tokens/primitives/lineHeights.js.map +0 -1
  880. package/lib/module/theme/tokens/primitives/radii.js.map +0 -1
  881. package/lib/module/theme/tokens/primitives/sizes.js.map +0 -1
  882. package/lib/module/theme/tokens/primitives/space.js.map +0 -1
  883. package/lib/module/theme/tokens/primitives/zIndices.js.map +0 -1
  884. package/lib/module/theme/tokens/roles/index.js.map +0 -1
  885. package/lib/module/theme/tokens/types.js.map +0 -1
  886. package/lib/typescript/core/a11y/index.d.ts.map +0 -1
  887. package/lib/typescript/core/icon/index.d.ts.map +0 -1
  888. package/lib/typescript/core/style/index.d.ts.map +0 -1
  889. package/lib/typescript/core/style/layoutStyle.d.ts.map +0 -1
  890. package/lib/typescript/core/style/variants.d.ts.map +0 -1
  891. package/lib/typescript/index.d.ts.map +0 -1
  892. package/lib/typescript/modules/accordion/Accordion.d.ts.map +0 -1
  893. package/lib/typescript/modules/accordion/Accordion.variants.d.ts.map +0 -1
  894. package/lib/typescript/modules/accordion/index.d.ts.map +0 -1
  895. package/lib/typescript/modules/alert-dialog/AlertDialog.d.ts.map +0 -1
  896. package/lib/typescript/modules/alert-dialog/AlertDialog.variants.d.ts.map +0 -1
  897. package/lib/typescript/modules/alert-dialog/index.d.ts.map +0 -1
  898. package/lib/typescript/modules/avatar/Avatar.d.ts.map +0 -1
  899. package/lib/typescript/modules/avatar/Avatar.variants.d.ts.map +0 -1
  900. package/lib/typescript/modules/avatar/index.d.ts.map +0 -1
  901. package/lib/typescript/modules/badge/Badge.d.ts.map +0 -1
  902. package/lib/typescript/modules/badge/Badge.variants.d.ts.map +0 -1
  903. package/lib/typescript/modules/badge/index.d.ts.map +0 -1
  904. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts.map +0 -1
  905. package/lib/typescript/modules/bottom-nav/BottomNav.search.d.ts.map +0 -1
  906. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts.map +0 -1
  907. package/lib/typescript/modules/bottom-nav/BottomNavOverflowSheet.d.ts.map +0 -1
  908. package/lib/typescript/modules/bottom-nav/index.d.ts.map +0 -1
  909. package/lib/typescript/modules/button/Button.d.ts.map +0 -1
  910. package/lib/typescript/modules/button/Button.variants.d.ts.map +0 -1
  911. package/lib/typescript/modules/button/index.d.ts.map +0 -1
  912. package/lib/typescript/modules/button-group/ButtonGroup.d.ts.map +0 -1
  913. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts.map +0 -1
  914. package/lib/typescript/modules/button-group/index.d.ts.map +0 -1
  915. package/lib/typescript/modules/card/Card.d.ts.map +0 -1
  916. package/lib/typescript/modules/card/Card.variants.d.ts.map +0 -1
  917. package/lib/typescript/modules/card/index.d.ts.map +0 -1
  918. package/lib/typescript/modules/checkbox/Checkbox.d.ts.map +0 -1
  919. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts.map +0 -1
  920. package/lib/typescript/modules/checkbox/index.d.ts.map +0 -1
  921. package/lib/typescript/modules/divider/Divider.d.ts.map +0 -1
  922. package/lib/typescript/modules/divider/Divider.variants.d.ts.map +0 -1
  923. package/lib/typescript/modules/divider/index.d.ts.map +0 -1
  924. package/lib/typescript/modules/drawer/Drawer.d.ts.map +0 -1
  925. package/lib/typescript/modules/drawer/Drawer.variants.d.ts.map +0 -1
  926. package/lib/typescript/modules/drawer/index.d.ts.map +0 -1
  927. package/lib/typescript/modules/empty-state/EmptyState.d.ts.map +0 -1
  928. package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts.map +0 -1
  929. package/lib/typescript/modules/empty-state/index.d.ts.map +0 -1
  930. package/lib/typescript/modules/file-upload/FileUpload.d.ts.map +0 -1
  931. package/lib/typescript/modules/file-upload/FileUpload.variants.d.ts.map +0 -1
  932. package/lib/typescript/modules/file-upload/index.d.ts.map +0 -1
  933. package/lib/typescript/modules/filter-sheet/FilterChip.d.ts.map +0 -1
  934. package/lib/typescript/modules/filter-sheet/FilterSheet.d.ts.map +0 -1
  935. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts.map +0 -1
  936. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts.map +0 -1
  937. package/lib/typescript/modules/filter-sheet/filterSheet.helpers.d.ts.map +0 -1
  938. package/lib/typescript/modules/filter-sheet/index.d.ts.map +0 -1
  939. package/lib/typescript/modules/input/Input.d.ts.map +0 -1
  940. package/lib/typescript/modules/input/Input.variants.d.ts.map +0 -1
  941. package/lib/typescript/modules/input/index.d.ts.map +0 -1
  942. package/lib/typescript/modules/menu/Menu.d.ts.map +0 -1
  943. package/lib/typescript/modules/menu/Menu.variants.d.ts.map +0 -1
  944. package/lib/typescript/modules/menu/index.d.ts.map +0 -1
  945. package/lib/typescript/modules/modal/Modal.d.ts.map +0 -1
  946. package/lib/typescript/modules/modal/Modal.variants.d.ts.map +0 -1
  947. package/lib/typescript/modules/modal/ModalPortalContext.d.ts.map +0 -1
  948. package/lib/typescript/modules/modal/ModalPortalProvider.d.ts.map +0 -1
  949. package/lib/typescript/modules/modal/index.d.ts.map +0 -1
  950. package/lib/typescript/modules/modal/renderWebPortal.d.ts.map +0 -1
  951. package/lib/typescript/modules/modal/renderWebPortal.web.d.ts.map +0 -1
  952. package/lib/typescript/modules/multi-select/MultiSelect.d.ts.map +0 -1
  953. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts.map +0 -1
  954. package/lib/typescript/modules/multi-select/index.d.ts.map +0 -1
  955. package/lib/typescript/modules/number-input/NumberInput.d.ts.map +0 -1
  956. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts.map +0 -1
  957. package/lib/typescript/modules/number-input/index.d.ts.map +0 -1
  958. package/lib/typescript/modules/pin-input/PinInput.d.ts.map +0 -1
  959. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts.map +0 -1
  960. package/lib/typescript/modules/pin-input/index.d.ts.map +0 -1
  961. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts.map +0 -1
  962. package/lib/typescript/modules/progress-bar/ProgressBar.variants.d.ts.map +0 -1
  963. package/lib/typescript/modules/progress-bar/index.d.ts.map +0 -1
  964. package/lib/typescript/modules/radio-group/RadioGroup.d.ts.map +0 -1
  965. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts.map +0 -1
  966. package/lib/typescript/modules/radio-group/index.d.ts.map +0 -1
  967. package/lib/typescript/modules/reorder/Reorder.d.ts.map +0 -1
  968. package/lib/typescript/modules/reorder/Reorder.variants.d.ts.map +0 -1
  969. package/lib/typescript/modules/reorder/index.d.ts.map +0 -1
  970. package/lib/typescript/modules/select/Select.d.ts.map +0 -1
  971. package/lib/typescript/modules/select/Select.variants.d.ts.map +0 -1
  972. package/lib/typescript/modules/select/index.d.ts.map +0 -1
  973. package/lib/typescript/modules/skeleton/Skeleton.d.ts.map +0 -1
  974. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts.map +0 -1
  975. package/lib/typescript/modules/skeleton/index.d.ts.map +0 -1
  976. package/lib/typescript/modules/slider/Slider.d.ts.map +0 -1
  977. package/lib/typescript/modules/slider/Slider.variants.d.ts.map +0 -1
  978. package/lib/typescript/modules/slider/index.d.ts.map +0 -1
  979. package/lib/typescript/modules/spinner/Spinner.d.ts.map +0 -1
  980. package/lib/typescript/modules/spinner/Spinner.variants.d.ts.map +0 -1
  981. package/lib/typescript/modules/spinner/index.d.ts.map +0 -1
  982. package/lib/typescript/modules/stepper/Stepper.d.ts.map +0 -1
  983. package/lib/typescript/modules/stepper/Stepper.variants.d.ts.map +0 -1
  984. package/lib/typescript/modules/stepper/index.d.ts.map +0 -1
  985. package/lib/typescript/modules/switch/Switch.d.ts.map +0 -1
  986. package/lib/typescript/modules/switch/Switch.variants.d.ts.map +0 -1
  987. package/lib/typescript/modules/switch/index.d.ts.map +0 -1
  988. package/lib/typescript/modules/tabs/Tabs.d.ts.map +0 -1
  989. package/lib/typescript/modules/tabs/Tabs.variants.d.ts.map +0 -1
  990. package/lib/typescript/modules/tabs/index.d.ts.map +0 -1
  991. package/lib/typescript/modules/textarea/Textarea.d.ts.map +0 -1
  992. package/lib/typescript/modules/textarea/Textarea.variants.d.ts.map +0 -1
  993. package/lib/typescript/modules/textarea/index.d.ts.map +0 -1
  994. package/lib/typescript/modules/timeline/Timeline.d.ts.map +0 -1
  995. package/lib/typescript/modules/timeline/Timeline.variants.d.ts.map +0 -1
  996. package/lib/typescript/modules/timeline/index.d.ts.map +0 -1
  997. package/lib/typescript/modules/toast/Toast.d.ts.map +0 -1
  998. package/lib/typescript/modules/toast/Toast.variants.d.ts.map +0 -1
  999. package/lib/typescript/modules/toast/index.d.ts.map +0 -1
  1000. package/lib/typescript/modules/tooltip/Tooltip.d.ts.map +0 -1
  1001. package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts.map +0 -1
  1002. package/lib/typescript/modules/tooltip/index.d.ts.map +0 -1
  1003. package/lib/typescript/theme/index.d.ts.map +0 -1
  1004. package/lib/typescript/theme/platform/colorScheme.native.d.ts.map +0 -1
  1005. package/lib/typescript/theme/platform/elevation.native.d.ts.map +0 -1
  1006. package/lib/typescript/theme/platform/fonts.native.d.ts.map +0 -1
  1007. package/lib/typescript/theme/platform/index.d.ts.map +0 -1
  1008. package/lib/typescript/theme/platform/units.native.d.ts.map +0 -1
  1009. package/lib/typescript/theme/provider/PixelizeProvider.d.ts.map +0 -1
  1010. package/lib/typescript/theme/provider/colorModeStorage.d.ts.map +0 -1
  1011. package/lib/typescript/theme/provider/index.d.ts.map +0 -1
  1012. package/lib/typescript/theme/provider/useTheme.d.ts.map +0 -1
  1013. package/lib/typescript/theme/provider/useThemeColors.d.ts.map +0 -1
  1014. package/lib/typescript/theme/provider/useThemeMode.d.ts.map +0 -1
  1015. package/lib/typescript/theme/tokens/brands/emerald/palette.dark.d.ts.map +0 -1
  1016. package/lib/typescript/theme/tokens/brands/emerald/palette.light.d.ts.map +0 -1
  1017. package/lib/typescript/theme/tokens/brands/index.d.ts.map +0 -1
  1018. package/lib/typescript/theme/tokens/brands/lavender/palette.dark.d.ts.map +0 -1
  1019. package/lib/typescript/theme/tokens/brands/lavender/palette.light.d.ts.map +0 -1
  1020. package/lib/typescript/theme/tokens/brands/meadow/palette.dark.d.ts.map +0 -1
  1021. package/lib/typescript/theme/tokens/brands/meadow/palette.light.d.ts.map +0 -1
  1022. package/lib/typescript/theme/tokens/brands/radiant/palette.dark.d.ts.map +0 -1
  1023. package/lib/typescript/theme/tokens/brands/radiant/palette.light.d.ts.map +0 -1
  1024. package/lib/typescript/theme/tokens/brands/rosewood/palette.dark.d.ts.map +0 -1
  1025. package/lib/typescript/theme/tokens/brands/rosewood/palette.light.d.ts.map +0 -1
  1026. package/lib/typescript/theme/tokens/brands/skyline/palette.dark.d.ts.map +0 -1
  1027. package/lib/typescript/theme/tokens/brands/skyline/palette.light.d.ts.map +0 -1
  1028. package/lib/typescript/theme/tokens/brands/slate/palette.dark.d.ts.map +0 -1
  1029. package/lib/typescript/theme/tokens/brands/slate/palette.light.d.ts.map +0 -1
  1030. package/lib/typescript/theme/tokens/brands/storefront/palette.dark.d.ts.map +0 -1
  1031. package/lib/typescript/theme/tokens/brands/storefront/palette.light.d.ts.map +0 -1
  1032. package/lib/typescript/theme/tokens/brands/zinc/palette.dark.d.ts.map +0 -1
  1033. package/lib/typescript/theme/tokens/brands/zinc/palette.light.d.ts.map +0 -1
  1034. package/lib/typescript/theme/tokens/builders/accentText.d.ts.map +0 -1
  1035. package/lib/typescript/theme/tokens/builders/buildBrandTokens.d.ts.map +0 -1
  1036. package/lib/typescript/theme/tokens/builders/buildDarkPalette.d.ts.map +0 -1
  1037. package/lib/typescript/theme/tokens/builders/color.d.ts.map +0 -1
  1038. package/lib/typescript/theme/tokens/index.d.ts.map +0 -1
  1039. package/lib/typescript/theme/tokens/primitives/borderWidths.d.ts.map +0 -1
  1040. package/lib/typescript/theme/tokens/primitives/breakpoints.d.ts.map +0 -1
  1041. package/lib/typescript/theme/tokens/primitives/elevation.d.ts.map +0 -1
  1042. package/lib/typescript/theme/tokens/primitives/fontSizes.d.ts.map +0 -1
  1043. package/lib/typescript/theme/tokens/primitives/fontWeights.d.ts.map +0 -1
  1044. package/lib/typescript/theme/tokens/primitives/index.d.ts.map +0 -1
  1045. package/lib/typescript/theme/tokens/primitives/letterSpacings.d.ts.map +0 -1
  1046. package/lib/typescript/theme/tokens/primitives/lineHeights.d.ts.map +0 -1
  1047. package/lib/typescript/theme/tokens/primitives/radii.d.ts.map +0 -1
  1048. package/lib/typescript/theme/tokens/primitives/sizes.d.ts.map +0 -1
  1049. package/lib/typescript/theme/tokens/primitives/space.d.ts.map +0 -1
  1050. package/lib/typescript/theme/tokens/primitives/zIndices.d.ts.map +0 -1
  1051. package/lib/typescript/theme/tokens/roles/index.d.ts.map +0 -1
  1052. package/lib/typescript/theme/tokens/types.d.ts.map +0 -1
@@ -18,17 +18,19 @@ context + a stateless helper with no React-tree footprint of its own, not a depe
18
18
 
19
19
  | File | Role |
20
20
  |------|------|
21
- | `MultiSelect.tsx` | The component. Trigger + `Modal` composition, open/close state, immediate per-row toggling, focus handling. |
21
+ | `MultiSelect.tsx` | The component. Trigger + `Modal` composition, open/close state, immediate per-row toggling, focus handling. Option list is `core/list`'s `VirtualList` (device-tier windowing over FlashList-or-FlatList), built only while `open`. |
22
22
  | `MultiSelect.variants.ts` | Pure resolvers (`MULTI_SELECT_SIZES`, `resolveMultiSelectTriggerColors`, `resolveMultiSelectRowColors`, `resolveMultiSelectAccessibility`) + the themed structural resolvers (`multiSelectTriggerStructure`, `multiSelectOverlayStructure`, `multiSelectSheetStructure`, `multiSelectHeaderStructure`, `multiSelectCloseButtonStructure`, `multiSelectRowStructure`, `multiSelectRowIndicatorStructure`). No React, no lucide. |
23
23
  | `index.ts` | Public surface: `MultiSelect`, `MultiSelectProps`, `MultiSelectOption`, `MultiSelectSize`. |
24
24
  | `__tests__/MultiSelect.test.ts` | Pure: WCAG contrast (all brands × modes) + touch target + a11y contract. |
25
- | `__tests__/MultiSelect.render.test.tsx` | Render: trigger summary text, open/close, disabled gating, immediate toggling, per-row `checked` state, backdrop + close-button dismissal, and the web-portal opt-in branch (mocking `renderWebPortal`). |
25
+ | `__tests__/MultiSelect.render.test.tsx` | Render: trigger summary text, open/close, disabled gating, immediate toggling, per-row `checked` state, backdrop + close-button dismissal, the row's resolved 44dp `minHeight`, and the web-portal opt-in branch (mocking `renderWebPortal`). |
26
+ | `__tests__/MultiSelect.keyboard.test.tsx` | Web keyboard: roving tabindex, arrows/Home/End, Space toggling, Escape — plus that the identity-stable `toggleValue` still reads the latest `values`. |
27
+ | `__tests__/MultiSelect.motion.test.tsx` | Reduce-motion (WCAG 2.3.3): indicator check and press feedback snap to their final values, and `Animated.timing` is never called. |
26
28
 
27
29
  ## Props
28
30
 
29
31
  | Prop | Type | Default | Notes |
30
32
  |------|------|---------|-------|
31
- | `options` | `{ label: string; value: string }[]` | — | Required. |
33
+ | `options` | `{ label: string; value: string; leading?: ReactNode }[]` | — | Required. `leading` is an optional fixed-size adornment (e.g. an avatar) rendered between the checkbox indicator and the row label — the ReactNode content-slot precedent set by `ListItem`'s `leading`. Rows only; the trigger keeps its text-only summary. |
32
34
  | `values` | `string[]` | — | Required. The currently selected `value`s. |
33
35
  | `onValuesChange` | `(values: string[]) => void` | — | Required. Fired immediately on row press with the next array — no separate Apply/Cancel. |
34
36
  | `placeholder` | `string` | — | Shown when `values` is empty. |
@@ -36,7 +38,7 @@ context + a stateless helper with no React-tree footprint of its own, not a depe
36
38
  | `disabled` | `boolean` | `false` | Blocks opening the sheet; dimmed like Select's disabled state. |
37
39
  | `size` | `sm \| md \| lg` | `md` | 32 / 40 / 48 dp; short sizes reach 44 via `hitSlop`. |
38
40
  | `containerStyle` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
39
- | `testID` | `string` | — | Also seeds `${testID}-backdrop`, `${testID}-close`, and `${testID}-option-${value}`. |
41
+ | `testID` | `string` | — | Also seeds `${testID}-backdrop`, `${testID}-close`, and `${testID}-option-${value}` (+ `-content` / `-check` on that row's animated nodes). |
40
42
 
41
43
  No `icon` prop — the chevron/check/close glyphs are fixed to the component's own semantics, not
42
44
  caller-configurable.
@@ -53,22 +55,25 @@ caller-configurable.
53
55
  - **2.5.x target size** — the trigger reaches ≥ 44dp via `hitSlop` at every size; option rows have a
54
56
  44dp `minHeight` directly (list items, not slop-expandable); the header close button reaches 44dp
55
57
  via `hitSlop`.
56
- - **4.1.2** — the trigger is `accessibilityRole="button"` with `accessibilityState.expanded`
57
- tracking whether the sheet is showing.
58
+ - **4.1.2** — the trigger is `accessibilityRole="button"` with flat `aria-expanded` tracking whether
59
+ the sheet is showing (never `accessibilityState={{…}}` — react-native-web discards the object
60
+ form, see `docs/PLATFORM-A11Y-PROPS.md`).
58
61
  - **1.4.3** — trigger value/placeholder text, the field label, and option-row labels are measured
59
62
  ≥ 4.5:1 against their own fill (`bg.canvas` for the label, `bg.surface` for the trigger and every
60
63
  row — row fill is constant across selection, see below).
61
64
  - **1.4.11** — the trigger boundary (`border.interactive`, `border.focus` while focused/open), the
62
65
  row indicator's unchecked outline, and its checked fill are each measured ≥ 3:1 against the sheet
63
66
  fill.
64
- - Each option row is `accessibilityRole="checkbox"` with `accessibilityState={{ checked }}`, toggled
65
- immediately on press — the indicator box (outline when unchecked, `accent.solid` fill + "check"
66
- glyph when checked) is the sighted echo of the same state, never the only signal.
67
+ - Each option row is `accessibilityRole="checkbox"` with flat `aria-checked`, toggled immediately on
68
+ press — the indicator box (outline when unchecked, `accent.solid` fill + "check" glyph when
69
+ checked) is the sighted echo of the same state, never the only signal.
67
70
  - The header close button is `accessibilityRole="button"` with a fixed `accessibilityLabel="Close"`
68
71
  (icon-only, hardcoded — not a caller-configurable slot); its icon shares the row label's colour
69
72
  pairing, already measured ≥ 3:1 (in practice ≥ 4.5:1) on the sheet fill.
70
- - **2.3.3** — the sheet's `animationType` is `"none"` instead of `"fade"` when `useReducedMotion()`
71
- is true.
73
+ - **2.3.3** — RN's `Modal animationType` is always `"none"`; the reveal is `core/motion`'s
74
+ `useReveal`, which snaps to the final state (no tween) under reduce-motion. Row press feedback
75
+ and the indicator's check fade go through the same `motion.enabled` gate. Covered by
76
+ `__tests__/MultiSelect.motion.test.tsx`.
72
77
  - Disabled is exempt from the contrast minimum (WCAG 1.4.3) — like Select, it's signalled by a
73
78
  uniform `opacity: 0.5` dim rather than a separate, still-must-pass colour pair.
74
79
 
@@ -82,19 +87,80 @@ caller-configurable.
82
87
  `accent.solid` / `accent.onSolid`) — duplicated locally, not imported: modules never import
83
88
  across `src/modules/*`.
84
89
  4. **Closed-ish surface** — `size` is a closed union; `options`/`values`/`onValuesChange` are the
85
- data contract a multi-select inherently needs, not a colour escape hatch.
86
- 5. `style` exception MultiSelect exposes `containerStyle` (the documented exception for a
87
- component wrapping a native primitive's outer box), not a second `style` prop.
90
+ data contract a multi-select inherently needs, not a colour escape hatch. `containerStyle` is the
91
+ one `style` exception (a component wrapping a native primitive's outer box), not a second `style` prop.
92
+
93
+ ## Keyboard (web)
94
+
95
+ Wired to `core/a11y/keyboard` (all no-ops on native). The option list is **one tab stop**: exactly one
96
+ row carries `tabIndex={0}` (`focusItemProps`) and the arrows / Home / End / typeahead move it
97
+ (`useRovingKeys` on the sheet, capture phase). Opening lands it on the **first **selected** option, not the
98
+ first (WCAG 2.4.3). Each row focuses itself when it becomes active — the tabindex alone only names
99
+ the tab stop, and `useFocusTrap` needs the focused node to still be tabbable or Tab escapes the
100
+ sheet. `useFocusTrap` also restores focus to the trigger on close; `useDismissOnEscape` closes on
101
+ Escape.
102
+
103
+ **`useRovingKeys` gets no `onActivate`.** RNW already presses a row on Enter, and Space is
104
+ supplied per row by `useSpaceActivation` (RNW's `isValidKeyPress` needs a `button` tag/role, which
105
+ `checkbox` deliberately is not) — passing `onActivate` too would toggle twice, i.e. not at all.
106
+
107
+ The list container is `MULTI_SELECT_LISTBOX_ROLE`: RN 0.86's role unions have no `listbox`, so the
108
+ widening is one audited cast in `MultiSelect.variants.ts` rather than a cast at the call site.
88
109
 
89
110
  ## Known gaps
90
111
 
91
- - No search/filter — matches the spec this module was built against. A future `Combobox` would be a
92
- separate module, not a prop added here (closed-prop-contract).
93
- - No per-option `disabled` — every row is togglable whenever the sheet is open; not requested by
94
- this module's spec.
112
+ - No search/filter, no per-option `disabled` — matches the spec this module was built against; a
113
+ future `Combobox` would be a separate module, not props added here (closed-prop-contract).
95
114
  - The trigger's focus ring is a border-colour swap (`border.focus`), same convention `Select`
96
115
  documents as provisional pending a dedicated `Input` focus-ring reconciliation.
116
+ - The trigger summarises selection as text ("N selected"), not chips/tokens — so there is no
117
+ add/remove chip motion. A chip surface would be a new API, not a prop added here.
97
118
 
98
119
  ## Performance
99
120
 
100
- Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). Its one library child, `Icon`, only ever receives primitives; the `options.map()` list renders host `Pressable`/`View`/`Text` — nothing to memoize.
121
+ Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). The option
122
+ list is a `VirtualList`, not a full `.map()` in a `ScrollView` — a large roster only mounts rows near the
123
+ viewport — and the sheet is built only while `open`. Rows get `bg.sunken` press feedback
124
+ (`pressedRow`, same non-`bg.hover` reasoning as `RadioGroup`/`Accordion`), measured in `MultiSelect.test.ts`.
125
+
126
+ ### Re-render contract (what keeps `MultiSelectOptionRow`'s `memo` alive)
127
+
128
+ - **Membership is O(1)** — `values` becomes a `useMemo`'d `Set`, so `renderItem` no longer runs
129
+ `values.includes(...)` per row (O(n·m) across the list).
130
+ - `resolveMultiSelect*Colors` / `resolveMultiSelectAccessibility` and the `multiSelect*Structure(theme)`
131
+ resolvers are `useMemo`'d on their real inputs. `rowColors` is a row prop — unmemoized it
132
+ re-rendered every visible row on any parent render, making the row memo dead.
133
+ - The single-selection `options.find(...)` is `useMemo`'d; `renderItem`/`keyExtractor`/`toggleValue`
134
+ and the focus/blur handlers are `useCallback`'d.
135
+ - **`toggleValue` reads `values` through a ref, so its identity never changes.** As a dependency it
136
+ was re-created on every toggle (`values` necessarily changes), which defeated `React.memo` on
137
+ *every* mounted row rather than just the one whose `checked` flipped. Virtualization caps that at
138
+ ~10-20 wasted row renders per tap, each re-running four `useMemo`s — small, but free to remove.
139
+ `renderItem`'s own dependency on `selectedValues` is correct and stays.
140
+ - **`MultiSelectOption.leading` is rendered into a fixed slot** (`multiSelectRowLeadingStructure`).
141
+ An unconstrained consumer node could make a row taller than 44dp and falsify the list's
142
+ `getItemLayout` offsets; the slot keeps the uniform fast path true by construction.
143
+ - Style arrays feeding hot nodes (root container, trigger, sheet, header, label/value text) are
144
+ `useMemo`'d; the backdrop is a static `StyleSheet` entry. Inside the row, the row and indicator
145
+ structures are memoized so the `Pressable` style callback doesn't rebuild them per press-state flip.
146
+
147
+ ## Motion
148
+
149
+ Via `core/motion` only — `opacity`/`transform`, native driver, all reduce-motion aware.
150
+
151
+ - **Row press** — `usePressMotion()`; the row's content `Animated.View` (which carries
152
+ `multiSelectRowStructure`, including the 44dp `minHeight`) scales/dips, while the `Pressable` keeps
153
+ the `pressedRow` background. `scale` is a transform, so the row's hit area is unaffected.
154
+ - **Indicator check glyph** — fades on toggle, but a row that mounts already-checked (scrolled into
155
+ view) snaps: a `skipFirst` ref suppresses the first effect run, so nothing animates during
156
+ scrolling. The indicator's own border/fill colours still flip instantly (colour is never animated).
157
+ - **Sheet reveal** — `useReveal(open)` on the inner sheet panel, the no-state variant: the subtree is
158
+ gated on `open` — the same flag `<Modal visible>` uses — so there is no second source of truth to
159
+ disagree with it, and no extra render per open/close. See `select/MODULE.md`'s Motion section for
160
+ why `useEnterExit`'s `mounted` gate was dropped; `Select`/`Combobox` use the identical gate.
161
+ - No chip/token UI on the trigger, so there is nothing to animate there (see Known gaps).
162
+
163
+ ## Modernization (v1.0.7)
164
+
165
+ - Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
166
+ - List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
@@ -1,32 +1,123 @@
1
1
  "use strict";
2
2
 
3
3
  /**
4
- * MultiSelect — a trigger styled like Select/Input that opens a checkbox-style option list in React
5
- * Native's OWN `Modal`. Imported directly from `"react-native"` here on purpose, and built as a
6
- * standalone sibling of `Select` rather than on top of it: selection semantics differ enough
7
- * (multiple values, a running "N selected" summary, checkbox-row indicators instead of a single
8
- * check mark) that importing Select would force awkward prop overloading — and this module must not
9
- * depend on any sibling module, including the library's own Modal (built in parallel elsewhere).
10
- *
11
- * The one deliberate exception is the web portal mechanism: `ModalPortalContext`/`renderWebPortal`
12
- * are a plain context + a stateless helper with no React-tree footprint of their own (not the
13
- * `Modal` component), so MultiSelect reads the same ones `Modal.tsx`/`Select.tsx` read to stay
14
- * consistent once a consumer opts in via `ModalPortalProvider` — see `../modal/ModalPortalContext.ts`.
4
+ * MultiSelect — a trigger styled like Select/Input that opens a checkbox-style option list.
15
5
  */
16
6
 
17
- import { memo, useContext, useState } from "react";
18
- import { Modal, Platform, Pressable, ScrollView, StyleSheet, Text, View } from "react-native";
19
- import { useReducedMotion } from "../../core/a11y/index.js";
7
+ import { memo, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
8
+ import { Animated, Modal, Platform, Pressable, StyleSheet, Text, View } from "react-native";
9
+ import { focusItemProps, useDismissOnEscape, useFocusTrap, useRovingKeys, useSpaceActivation } from "../../core/a11y/keyboard";
20
10
  import { Icon } from "../../core/icon/index.js";
21
- import { useTheme } from "../../theme/index.js";
11
+ import { VirtualList } from "../../core/list/index.js";
12
+ import { useMotion, usePressMotion, useReveal } from "../../core/motion/index.js";
13
+ import { useTheme } from "../../theme/hooks.js";
22
14
  import { ModalPortalContext } from "../modal/ModalPortalContext.js";
23
15
  import { renderWebPortal } from "../modal/renderWebPortal";
24
- import { MULTI_SELECT_CLOSE_BUTTON_HIT_SLOP, MULTI_SELECT_CLOSE_ICON_SIZE, MULTI_SELECT_ROW_ICON_SIZE, MULTI_SELECT_SIZES, multiSelectCloseButtonStructure, multiSelectHeaderStructure, multiSelectOverlayStructure, multiSelectRowIndicatorStructure, multiSelectRowStructure, multiSelectSheetStructure, multiSelectTriggerStructure, resolveMultiSelectAccessibility, resolveMultiSelectRowColors, resolveMultiSelectTriggerColors } from "./MultiSelect.variants.js";
16
+ import { MULTI_SELECT_CLOSE_BUTTON_HIT_SLOP, MULTI_SELECT_CLOSE_ICON_SIZE, MULTI_SELECT_LISTBOX_ROLE, MULTI_SELECT_ROW_ICON_SIZE, MULTI_SELECT_ROW_MIN_HEIGHT, MULTI_SELECT_SIZES, multiSelectCloseButtonStructure, multiSelectHeaderStructure, multiSelectOverlayStructure, multiSelectRowIndicatorStructure, multiSelectRowLeadingStructure, multiSelectRowStructure, multiSelectSheetStructure, multiSelectTriggerStructure, resolveMultiSelectAccessibility, resolveMultiSelectRowColors, resolveMultiSelectTriggerColors } from "./MultiSelect.variants.js";
25
17
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
26
18
  const ICON_STROKE = 2;
27
- // Decorative dismiss scrim behind the sheet — a design constant, not a role token: it is neither
28
- // text nor an interactive boundary, so WCAG's contrast minimums don't apply to it.
29
19
  const BACKDROP_SCRIM = "#00000099";
20
+ const MultiSelectOptionRow = /*#__PURE__*/memo(function MultiSelectOptionRow({
21
+ option,
22
+ checked,
23
+ tabIndex,
24
+ theme,
25
+ rowColors,
26
+ onToggle,
27
+ testID
28
+ }) {
29
+ const motion = useMotion();
30
+ const press = usePressMotion();
31
+ const handlePress = useCallback(() => onToggle(option.value), [onToggle, option.value]);
32
+ const rowRef = useRef(null);
33
+ const active = tabIndex === 0;
34
+
35
+ // The tabindex alone only names the tab stop — focus has to follow the arrows too, or the focus
36
+ // trap's Tab handler sees a focused row that is no longer tabbable and lets Tab leave the sheet.
37
+ useEffect(() => {
38
+ if (!active || Platform.OS !== "web") return;
39
+ rowRef.current?.focus();
40
+ }, [active]);
41
+
42
+ // `checkbox` is not `button`, so RNW never presses on Space — see `core/a11y/keyboard.web.ts`.
43
+ useSpaceActivation(rowRef, handlePress);
44
+ const checkOpacity = useRef(new Animated.Value(checked ? 1 : 0)).current;
45
+ const skipFirst = useRef(true);
46
+ const running = useRef(null);
47
+ useEffect(() => {
48
+ running.current?.stop();
49
+ // A row scrolled into view already-checked must snap, never fade.
50
+ if (skipFirst.current) {
51
+ skipFirst.current = false;
52
+ checkOpacity.setValue(checked ? 1 : 0);
53
+ return;
54
+ }
55
+ if (!motion.enabled) {
56
+ checkOpacity.setValue(checked ? 1 : 0);
57
+ return;
58
+ }
59
+ running.current = motion.timing(checkOpacity, checked ? 1 : 0, {
60
+ duration: "fast"
61
+ });
62
+ running.current.start();
63
+ return () => running.current?.stop();
64
+ }, [checked, motion, checkOpacity]);
65
+ useEffect(() => () => running.current?.stop(), []);
66
+ const rowStructure = useMemo(() => multiSelectRowStructure(theme), [theme]);
67
+ const indicatorStructure = useMemo(() => multiSelectRowIndicatorStructure(theme), [theme]);
68
+ const leadingStructure = useMemo(() => multiSelectRowLeadingStructure(theme), [theme]);
69
+ const rowStyle = useCallback(({
70
+ pressed
71
+ }) => ({
72
+ backgroundColor: pressed ? rowColors.pressedRow : rowColors.background
73
+ }), [rowColors]);
74
+ const indicatorStyle = useMemo(() => [indicatorStructure, {
75
+ borderColor: checked ? rowColors.indicatorFill : rowColors.indicatorBorder,
76
+ backgroundColor: checked ? rowColors.indicatorFill : "transparent"
77
+ }], [indicatorStructure, checked, rowColors]);
78
+ const labelStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
79
+ flex: 1,
80
+ fontSize: theme.fontSizes.md,
81
+ color: rowColors.text
82
+ }], [theme, rowColors]);
83
+ return /*#__PURE__*/_jsx(Pressable, {
84
+ ref: rowRef,
85
+ testID: testID ? `${testID}-option-${option.value}` : undefined,
86
+ accessibilityRole: "checkbox",
87
+ "aria-checked": checked,
88
+ tabIndex: tabIndex,
89
+ onPress: handlePress,
90
+ onPressIn: press.onPressIn,
91
+ onPressOut: press.onPressOut,
92
+ style: rowStyle,
93
+ children: /*#__PURE__*/_jsxs(Animated.View, {
94
+ testID: testID ? `${testID}-option-${option.value}-content` : undefined,
95
+ style: [rowStructure, press.style],
96
+ children: [/*#__PURE__*/_jsx(View, {
97
+ style: indicatorStyle,
98
+ children: checked && /*#__PURE__*/_jsx(Animated.View, {
99
+ testID: testID ? `${testID}-option-${option.value}-check` : undefined,
100
+ style: {
101
+ opacity: checkOpacity
102
+ },
103
+ children: /*#__PURE__*/_jsx(Icon, {
104
+ name: "check",
105
+ size: MULTI_SELECT_ROW_ICON_SIZE,
106
+ color: rowColors.indicatorIcon,
107
+ strokeWidth: ICON_STROKE
108
+ })
109
+ })
110
+ }), option.leading !== undefined && /*#__PURE__*/_jsx(View, {
111
+ style: leadingStructure,
112
+ children: option.leading
113
+ }), /*#__PURE__*/_jsx(Text, {
114
+ numberOfLines: 1,
115
+ style: labelStyle,
116
+ children: option.label
117
+ })]
118
+ })
119
+ });
120
+ });
30
121
  export const MultiSelect = /*#__PURE__*/memo(function MultiSelect({
31
122
  options,
32
123
  values,
@@ -39,55 +130,119 @@ export const MultiSelect = /*#__PURE__*/memo(function MultiSelect({
39
130
  testID
40
131
  }) {
41
132
  const theme = useTheme();
42
- const reducedMotion = useReducedMotion();
43
133
  const portalContainer = useContext(ModalPortalContext);
44
134
  const [open, setOpen] = useState(false);
45
135
  const [focused, setFocused] = useState(false);
136
+ const [activeIndex, setActiveIndex] = useState(0);
137
+ const sheetRef = useRef(null);
138
+ const reveal = useReveal(open);
46
139
  const spec = MULTI_SELECT_SIZES[size];
47
140
  const selectedCount = values.length;
48
141
  const isPlaceholder = selectedCount === 0;
49
- const singleLabel = selectedCount === 1 ? options.find(option => option.value === values[0])?.label : undefined;
142
+ const selectedValues = useMemo(() => new Set(values), [values]);
143
+ const singleLabel = useMemo(() => selectedCount === 1 ? options.find(option => option.value === values[0])?.label : undefined, [selectedCount, options, values]);
50
144
  const displayText = isPlaceholder ? placeholder ?? "" : singleLabel ?? `${selectedCount} selected`;
51
- const triggerColors = resolveMultiSelectTriggerColors(theme.colors, focused || open);
52
- const rowColors = resolveMultiSelectRowColors(theme.colors);
53
- const a11y = resolveMultiSelectAccessibility({
145
+ const triggerColors = useMemo(() => resolveMultiSelectTriggerColors(theme.colors, focused || open), [theme.colors, focused, open]);
146
+ const rowColors = useMemo(() => resolveMultiSelectRowColors(theme.colors), [theme.colors]);
147
+ const a11y = useMemo(() => resolveMultiSelectAccessibility({
54
148
  disabled,
55
149
  open
56
- });
150
+ }), [disabled, open]);
57
151
  const accessibleName = label !== undefined ? displayText ? `${label}, ${displayText}` : label : undefined;
58
- const openMenu = () => {
152
+ const firstSelectedIndex = useMemo(() => options.findIndex(option => selectedValues.has(option.value)), [options, selectedValues]);
153
+ const openMenu = useCallback(() => {
59
154
  if (disabled) return;
155
+ // Opening lands the keyboard on the first SELECTED option, not the first one (WCAG 2.4.3).
156
+ setActiveIndex(firstSelectedIndex === -1 ? 0 : firstSelectedIndex);
60
157
  setOpen(true);
61
- };
62
- const closeMenu = () => setOpen(false);
63
- const toggleValue = value => {
64
- const next = values.includes(value) ? values.filter(v => v !== value) : [...values, value];
65
- onValuesChange(next);
66
- };
67
- const sheet = /*#__PURE__*/_jsxs(_Fragment, {
158
+ }, [disabled, firstSelectedIndex]);
159
+ const closeMenu = useCallback(() => setOpen(false), []);
160
+ const handleFocus = useCallback(() => setFocused(true), []);
161
+ const handleBlur = useCallback(() => setFocused(false), []);
162
+
163
+ // `values` necessarily changes on every toggle, so reading it through a ref is what keeps
164
+ // `toggleValue` identity-stable as a dependency it re-created the callback per toggle and
165
+ // defeated `React.memo` on every mounted row, not just the one whose `checked` flipped.
166
+ const valuesRef = useRef(values);
167
+ valuesRef.current = values;
168
+ const onValuesChangeRef = useRef(onValuesChange);
169
+ onValuesChangeRef.current = onValuesChange;
170
+ const toggleValue = useCallback(value => {
171
+ const current = valuesRef.current;
172
+ const next = current.includes(value) ? current.filter(v => v !== value) : [...current, value];
173
+ onValuesChangeRef.current(next);
174
+ }, []);
175
+ const typeaheadLabels = useMemo(() => options.map(option => option.label), [options]);
176
+
177
+ // Keyboard (web only — every hook below is a no-op on native, see `core/a11y/keyboard.ts`).
178
+ // No `onActivate`: RNW already presses a row on Enter, and each row's own `useSpaceActivation`
179
+ // owns Space — passing it here would toggle twice, i.e. not at all.
180
+ useDismissOnEscape(open, closeMenu);
181
+ useFocusTrap(sheetRef, open);
182
+ useRovingKeys(sheetRef, open, {
183
+ count: options.length,
184
+ activeIndex,
185
+ onActiveIndexChange: setActiveIndex,
186
+ typeaheadLabels
187
+ });
188
+ const keyExtractor = useCallback(option => option.value, []);
189
+ const renderItem = useCallback(({
190
+ item: option,
191
+ index
192
+ }) => /*#__PURE__*/_jsx(MultiSelectOptionRow, {
193
+ option: option,
194
+ checked: selectedValues.has(option.value),
195
+ tabIndex: focusItemProps(index, activeIndex).tabIndex,
196
+ theme: theme,
197
+ rowColors: rowColors,
198
+ onToggle: toggleValue,
199
+ testID: testID
200
+ }), [selectedValues, activeIndex, theme, rowColors, toggleValue, testID]);
201
+ const rootStyle = useMemo(() => [styles.container, containerStyle], [containerStyle]);
202
+ const triggerStyle = useMemo(() => [multiSelectTriggerStructure(theme, {
203
+ size
204
+ }), {
205
+ backgroundColor: triggerColors.background,
206
+ borderColor: triggerColors.border
207
+ }, disabled && styles.dimmed], [theme, size, triggerColors, disabled]);
208
+ const overlayStructure = useMemo(() => multiSelectOverlayStructure(theme), [theme]);
209
+ const headerStructure = useMemo(() => multiSelectHeaderStructure(theme), [theme]);
210
+ const closeButtonStructure = useMemo(() => multiSelectCloseButtonStructure(theme), [theme]);
211
+ const sheetStyle = useMemo(() => [multiSelectSheetStructure(theme), {
212
+ backgroundColor: theme.colors.bg.surface
213
+ }], [theme]);
214
+ const fieldLabelStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.medium), {
215
+ fontSize: theme.fontSizes.sm,
216
+ color: theme.colors.fg.muted,
217
+ marginBottom: theme.space[1]
218
+ }], [theme]);
219
+ const valueTextStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
220
+ flexShrink: 1,
221
+ fontSize: spec.fontSize,
222
+ color: isPlaceholder ? triggerColors.placeholder : triggerColors.text
223
+ }], [theme, spec, isPlaceholder, triggerColors]);
224
+ const sheet = open ? /*#__PURE__*/_jsxs(_Fragment, {
68
225
  children: [/*#__PURE__*/_jsx(Pressable, {
69
226
  testID: testID ? `${testID}-backdrop` : undefined,
70
227
  accessible: false,
71
- style: [StyleSheet.absoluteFill, {
72
- backgroundColor: BACKDROP_SCRIM
73
- }],
228
+ tabIndex: -1,
229
+ style: styles.backdrop,
74
230
  onPress: closeMenu
75
231
  }), /*#__PURE__*/_jsx(View, {
76
- style: multiSelectOverlayStructure(theme),
232
+ style: overlayStructure,
77
233
  pointerEvents: "box-none",
78
- children: /*#__PURE__*/_jsxs(View, {
79
- style: [multiSelectSheetStructure(theme), {
80
- backgroundColor: theme.colors.bg.surface
81
- }],
234
+ children: /*#__PURE__*/_jsxs(Animated.View, {
235
+ ref: sheetRef,
236
+ style: [sheetStyle, reveal.style],
82
237
  children: [/*#__PURE__*/_jsx(View, {
83
- style: multiSelectHeaderStructure(theme),
238
+ style: headerStructure,
84
239
  children: /*#__PURE__*/_jsx(Pressable, {
85
240
  testID: testID ? `${testID}-close` : undefined,
86
241
  accessibilityRole: "button",
87
242
  accessibilityLabel: "Close",
88
243
  onPress: closeMenu,
89
244
  hitSlop: MULTI_SELECT_CLOSE_BUTTON_HIT_SLOP,
90
- style: multiSelectCloseButtonStructure(theme),
245
+ style: closeButtonStructure,
91
246
  children: /*#__PURE__*/_jsx(Icon, {
92
247
  name: "x",
93
248
  size: MULTI_SELECT_CLOSE_ICON_SIZE,
@@ -95,50 +250,16 @@ export const MultiSelect = /*#__PURE__*/memo(function MultiSelect({
95
250
  strokeWidth: ICON_STROKE
96
251
  })
97
252
  })
98
- }), /*#__PURE__*/_jsx(ScrollView, {
99
- bounces: false,
100
- children: options.map(option => {
101
- const checked = values.includes(option.value);
102
- return /*#__PURE__*/_jsxs(Pressable, {
103
- testID: testID ? `${testID}-option-${option.value}` : undefined,
104
- accessibilityRole: "checkbox",
105
- accessibilityState: {
106
- checked
107
- },
108
- onPress: () => toggleValue(option.value),
109
- style: [multiSelectRowStructure(theme), {
110
- backgroundColor: rowColors.background
111
- }],
112
- children: [/*#__PURE__*/_jsx(View, {
113
- style: [multiSelectRowIndicatorStructure(theme), {
114
- borderColor: checked ? rowColors.indicatorFill : rowColors.indicatorBorder,
115
- backgroundColor: checked ? rowColors.indicatorFill : "transparent"
116
- }],
117
- children: checked && /*#__PURE__*/_jsx(Icon, {
118
- name: "check",
119
- size: MULTI_SELECT_ROW_ICON_SIZE,
120
- color: rowColors.indicatorIcon,
121
- strokeWidth: ICON_STROKE
122
- })
123
- }), /*#__PURE__*/_jsx(Text, {
124
- numberOfLines: 1,
125
- style: [theme.fontStyleForWeight(theme.fontWeights.regular), {
126
- flex: 1,
127
- fontSize: theme.fontSizes.md,
128
- color: rowColors.text
129
- }],
130
- children: option.label
131
- })]
132
- }, option.value);
133
- })
253
+ }), /*#__PURE__*/_jsx(VirtualList, {
254
+ data: options,
255
+ keyExtractor: keyExtractor,
256
+ renderItem: renderItem,
257
+ itemHeight: MULTI_SELECT_ROW_MIN_HEIGHT,
258
+ accessibilityRole: MULTI_SELECT_LISTBOX_ROLE
134
259
  })]
135
260
  })
136
261
  })]
137
- });
138
-
139
- // Web portal opt-in — see Modal.tsx's/Select.tsx's identical branch + ModalPortalContext.ts.
140
- // Every other case (native, or web with no ModalPortalProvider) renders through RN's own
141
- // <Modal> below, unchanged.
262
+ }) : null;
142
263
  const menu = Platform.OS === "web" && portalContainer != null ? open ? renderWebPortal(/*#__PURE__*/_jsx(View, {
143
264
  style: StyleSheet.absoluteFill,
144
265
  pointerEvents: "box-none",
@@ -146,42 +267,30 @@ export const MultiSelect = /*#__PURE__*/memo(function MultiSelect({
146
267
  }), portalContainer) : null : /*#__PURE__*/_jsx(Modal, {
147
268
  visible: open,
148
269
  transparent: true,
149
- animationType: reducedMotion ? "none" : "fade",
270
+ animationType: "none",
150
271
  onRequestClose: closeMenu,
151
272
  children: sheet
152
273
  });
153
274
  return /*#__PURE__*/_jsxs(View, {
154
- style: [styles.container, containerStyle],
275
+ style: rootStyle,
155
276
  children: [label !== undefined && /*#__PURE__*/_jsx(Text, {
156
- style: [theme.fontStyleForWeight(theme.fontWeights.medium), {
157
- fontSize: theme.fontSizes.sm,
158
- color: theme.colors.fg.muted,
159
- marginBottom: theme.space[1]
160
- }],
277
+ style: fieldLabelStyle,
161
278
  children: label
162
279
  }), /*#__PURE__*/_jsxs(Pressable, {
163
280
  testID: testID,
164
281
  accessibilityRole: a11y.accessibilityRole,
165
282
  accessibilityLabel: accessibleName,
166
- accessibilityState: a11y.accessibilityState,
283
+ "aria-disabled": a11y["aria-disabled"],
284
+ "aria-expanded": a11y["aria-expanded"],
167
285
  disabled: a11y.disabled,
168
286
  onPress: openMenu,
169
- onFocus: () => setFocused(true),
170
- onBlur: () => setFocused(false),
287
+ onFocus: handleFocus,
288
+ onBlur: handleBlur,
171
289
  hitSlop: spec.hitSlop,
172
- style: [multiSelectTriggerStructure(theme, {
173
- size
174
- }), {
175
- backgroundColor: triggerColors.background,
176
- borderColor: triggerColors.border
177
- }, disabled && styles.dimmed],
290
+ style: triggerStyle,
178
291
  children: [/*#__PURE__*/_jsx(Text, {
179
292
  numberOfLines: 1,
180
- style: [theme.fontStyleForWeight(theme.fontWeights.regular), {
181
- flexShrink: 1,
182
- fontSize: spec.fontSize,
183
- color: isPlaceholder ? triggerColors.placeholder : triggerColors.text
184
- }],
293
+ style: valueTextStyle,
185
294
  children: displayText
186
295
  }), /*#__PURE__*/_jsx(Icon, {
187
296
  name: "chevron-down",
@@ -196,9 +305,12 @@ const styles = StyleSheet.create({
196
305
  container: {
197
306
  alignSelf: "stretch"
198
307
  },
199
- // A disabled control is exempt from the contrast minimum (WCAG 1.4.3), so a uniform dim is correct.
200
308
  dimmed: {
201
309
  opacity: 0.5
310
+ },
311
+ backdrop: {
312
+ ...StyleSheet.absoluteFill,
313
+ backgroundColor: BACKDROP_SCRIM
202
314
  }
203
315
  });
204
316
  //# sourceMappingURL=MultiSelect.js.map
@@ -46,6 +46,14 @@ export const MULTI_SELECT_SIZES = {
46
46
  /** Minimum height for an option row — a list item is still an interactive target (WCAG 2.5.8). */
47
47
  export const MULTI_SELECT_ROW_MIN_HEIGHT = 44;
48
48
 
49
+ /**
50
+ * The option list's container role. RN 0.86's role unions have no `listbox` — both `Role` and
51
+ * `AccessibilityRole` jump `list` → `listitem` → `log` — so the widening lives on this ONE audited
52
+ * line instead of a cast at the call site. It is a type gap, not a runtime one: `react-native-web`
53
+ * emits the string as the DOM `role` verbatim, and native maps roles it doesn't know to nothing.
54
+ */
55
+ export const MULTI_SELECT_LISTBOX_ROLE = "listbox";
56
+
49
57
  /** Row checkbox-style indicator box side, in dp. Fixed — independent of the trigger's own `size`,
50
58
  * same reasoning as `Select`'s row "check" glyph. */
51
59
  export const MULTI_SELECT_ROW_INDICATOR_SIZE = 20;
@@ -78,7 +86,8 @@ export function resolveMultiSelectRowColors(colors) {
78
86
  text: colors.fg.default,
79
87
  indicatorBorder: colors.border.interactive,
80
88
  indicatorFill: colors.accent.solid,
81
- indicatorIcon: colors.accent.onSolid
89
+ indicatorIcon: colors.accent.onSolid,
90
+ pressedRow: colors.bg.sunken
82
91
  };
83
92
  }
84
93
  /**
@@ -90,10 +99,8 @@ export function resolveMultiSelectAccessibility(input) {
90
99
  const disabled = input.disabled === true;
91
100
  return {
92
101
  accessibilityRole: "button",
93
- accessibilityState: {
94
- disabled,
95
- expanded: input.open
96
- },
102
+ "aria-disabled": disabled,
103
+ "aria-expanded": input.open,
97
104
  disabled
98
105
  };
99
106
  }
@@ -180,6 +187,22 @@ export const multiSelectRowStructure = createThemedVariants(theme => ({
180
187
  }
181
188
  }));
182
189
 
190
+ /**
191
+ * `MultiSelectOption.leading` is an arbitrary consumer node, so an unconstrained one could make a
192
+ * row taller than `MULTI_SELECT_ROW_MIN_HEIGHT` and silently falsify the list's `getItemLayout`
193
+ * offsets. This slot bounds it to the row's own indicator box instead, which is what keeps the
194
+ * uniform-height fast path true by construction (`core/MODULE.md`: `itemHeight` is uniform-only).
195
+ */
196
+ export const multiSelectRowLeadingStructure = createThemedVariants(() => ({
197
+ base: {
198
+ width: MULTI_SELECT_ROW_INDICATOR_SIZE,
199
+ height: MULTI_SELECT_ROW_INDICATOR_SIZE,
200
+ alignItems: "center",
201
+ justifyContent: "center",
202
+ overflow: "hidden"
203
+ }
204
+ }));
205
+
183
206
  /** Structural indicator-box styles only — size, radius, border WIDTH. No colours: border/fill
184
207
  * colour is checked-state-driven and applied inline over this, same split as `checkboxBoxStructure`. */
185
208
  export const multiSelectRowIndicatorStructure = createThemedVariants(theme => ({