pixelize-native-library 1.0.7 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1160) hide show
  1. package/lib/module/core/MODULE.md +130 -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/gradient/AccentGradientFill.js +80 -0
  12. package/lib/module/core/gradient/darkenHex.js +13 -0
  13. package/lib/module/core/gradient/gradientStops.js +27 -0
  14. package/lib/module/core/gradient/index.js +7 -0
  15. package/lib/module/core/gradient/withAlpha.js +19 -0
  16. package/lib/module/core/haptics/MODULE.md +4 -0
  17. package/lib/module/core/haptics/context.js +7 -0
  18. package/lib/module/core/haptics/haptics.js +17 -0
  19. package/lib/module/core/haptics/index.js +6 -0
  20. package/lib/module/core/haptics/useHaptics.js +73 -0
  21. package/lib/module/core/heading/MODULE.md +38 -0
  22. package/lib/module/core/heading/index.js +45 -0
  23. package/lib/module/core/icon/Icon.js +37 -0
  24. package/lib/module/core/icon/MODULE.md +53 -12
  25. package/lib/module/core/icon/icons/arrow-down.js +10 -0
  26. package/lib/module/core/icon/icons/arrow-left.js +10 -0
  27. package/lib/module/core/icon/icons/arrow-right.js +10 -0
  28. package/lib/module/core/icon/icons/arrow-up.js +10 -0
  29. package/lib/module/core/icon/icons/at-sign.js +10 -0
  30. package/lib/module/core/icon/icons/bell.js +10 -0
  31. package/lib/module/core/icon/icons/bold.js +10 -0
  32. package/lib/module/core/icon/icons/building-2.js +10 -0
  33. package/lib/module/core/icon/icons/calendar.js +10 -0
  34. package/lib/module/core/icon/icons/chart-column.js +10 -0
  35. package/lib/module/core/icon/icons/check.js +10 -0
  36. package/lib/module/core/icon/icons/chevron-down.js +10 -0
  37. package/lib/module/core/icon/icons/chevron-left.js +10 -0
  38. package/lib/module/core/icon/icons/chevron-right.js +10 -0
  39. package/lib/module/core/icon/icons/chevron-up.js +10 -0
  40. package/lib/module/core/icon/icons/chevrons-left.js +10 -0
  41. package/lib/module/core/icon/icons/chevrons-right.js +10 -0
  42. package/lib/module/core/icon/icons/chevrons-up-down.js +10 -0
  43. package/lib/module/core/icon/icons/circle-alert.js +10 -0
  44. package/lib/module/core/icon/icons/circle-check.js +10 -0
  45. package/lib/module/core/icon/icons/clock.js +10 -0
  46. package/lib/module/core/icon/icons/code.js +10 -0
  47. package/lib/module/core/icon/icons/download.js +10 -0
  48. package/lib/module/core/icon/icons/external-link.js +10 -0
  49. package/lib/module/core/icon/icons/eye.js +10 -0
  50. package/lib/module/core/icon/icons/file-text.js +10 -0
  51. package/lib/module/core/icon/icons/filter.js +10 -0
  52. package/lib/module/core/icon/icons/flag.js +10 -0
  53. package/lib/module/core/icon/icons/folder.js +10 -0
  54. package/lib/module/core/icon/icons/heading-1.js +10 -0
  55. package/lib/module/core/icon/icons/heading-2.js +10 -0
  56. package/lib/module/core/icon/icons/heading-3.js +10 -0
  57. package/lib/module/core/icon/icons/image.js +10 -0
  58. package/lib/module/core/icon/icons/inbox.js +10 -0
  59. package/lib/module/core/icon/icons/info.js +10 -0
  60. package/lib/module/core/icon/icons/italic.js +10 -0
  61. package/lib/module/core/icon/icons/kanban.js +10 -0
  62. package/lib/module/core/icon/icons/layers.js +10 -0
  63. package/lib/module/core/icon/icons/layout-dashboard.js +10 -0
  64. package/lib/module/core/icon/icons/layout-template.js +10 -0
  65. package/lib/module/core/icon/icons/life-buoy.js +10 -0
  66. package/lib/module/core/icon/icons/link.js +10 -0
  67. package/lib/module/core/icon/icons/list-checks.js +10 -0
  68. package/lib/module/core/icon/icons/list-ordered.js +10 -0
  69. package/lib/module/core/icon/icons/list-todo.js +10 -0
  70. package/lib/module/core/icon/icons/list.js +10 -0
  71. package/lib/module/core/icon/icons/log-out.js +10 -0
  72. package/lib/module/core/icon/icons/map.js +10 -0
  73. package/lib/module/core/icon/icons/message-square.js +10 -0
  74. package/lib/module/core/icon/icons/milestone.js +10 -0
  75. package/lib/module/core/icon/icons/minus.js +10 -0
  76. package/lib/module/core/icon/icons/more-horizontal.js +10 -0
  77. package/lib/module/core/icon/icons/paperclip.js +10 -0
  78. package/lib/module/core/icon/icons/pencil.js +10 -0
  79. package/lib/module/core/icon/icons/plus.js +10 -0
  80. package/lib/module/core/icon/icons/quote.js +10 -0
  81. package/lib/module/core/icon/icons/refresh-cw.js +10 -0
  82. package/lib/module/core/icon/icons/save.js +10 -0
  83. package/lib/module/core/icon/icons/search.js +10 -0
  84. package/lib/module/core/icon/icons/send.js +10 -0
  85. package/lib/module/core/icon/icons/settings.js +10 -0
  86. package/lib/module/core/icon/icons/share.js +10 -0
  87. package/lib/module/core/icon/icons/square-code.js +10 -0
  88. package/lib/module/core/icon/icons/star.js +10 -0
  89. package/lib/module/core/icon/icons/strikethrough.js +10 -0
  90. package/lib/module/core/icon/icons/tag.js +10 -0
  91. package/lib/module/core/icon/icons/trash.js +10 -0
  92. package/lib/module/core/icon/icons/trending-up.js +10 -0
  93. package/lib/module/core/icon/icons/triangle-alert.js +10 -0
  94. package/lib/module/core/icon/icons/underline.js +10 -0
  95. package/lib/module/core/icon/icons/upload.js +10 -0
  96. package/lib/module/core/icon/icons/user.js +10 -0
  97. package/lib/module/core/icon/icons/users.js +10 -0
  98. package/lib/module/core/icon/icons/x.js +10 -0
  99. package/lib/module/core/icon/index.js +4 -153
  100. package/lib/module/core/icon/names.js +2 -0
  101. package/lib/module/core/icon/resolve.js +160 -0
  102. package/lib/module/core/icon/types.js +4 -0
  103. package/lib/module/core/list/VirtualList.js +226 -0
  104. package/lib/module/core/list/index.js +4 -0
  105. package/lib/module/core/media/MediaImage.js +51 -0
  106. package/lib/module/core/media/expoImage.js +26 -0
  107. package/lib/module/core/media/index.js +6 -0
  108. package/lib/module/core/media/pickers.js +23 -0
  109. package/lib/module/core/motion/MODULE.md +101 -0
  110. package/lib/module/core/motion/config.js +115 -0
  111. package/lib/module/core/motion/index.js +8 -0
  112. package/lib/module/core/motion/presets.js +192 -0
  113. package/lib/module/core/motion/useAnimatedValue.js +19 -0
  114. package/lib/module/core/motion/useMotion.js +46 -0
  115. package/lib/module/core/motion/usePressState.js +145 -0
  116. package/lib/module/core/style/index.js +3 -0
  117. package/lib/module/core/style/radius.js +4 -0
  118. package/lib/module/core/style/sx.js +76 -0
  119. package/lib/module/core/style/useThemedStyles.js +8 -0
  120. package/lib/module/index.js +71 -2
  121. package/lib/module/modules/accordion/Accordion.js +286 -97
  122. package/lib/module/modules/accordion/Accordion.variants.js +6 -7
  123. package/lib/module/modules/accordion/MODULE.md +36 -11
  124. package/lib/module/modules/alert-dialog/AlertDialog.js +7 -6
  125. package/lib/module/modules/alert-dialog/AlertDialog.variants.js +4 -0
  126. package/lib/module/modules/alert-dialog/MODULE.md +11 -2
  127. package/lib/module/modules/app-bar/AppBar.js +181 -0
  128. package/lib/module/modules/app-bar/AppBar.variants.js +71 -0
  129. package/lib/module/modules/app-bar/MODULE.md +68 -0
  130. package/lib/module/modules/app-bar/index.js +10 -0
  131. package/lib/module/modules/avatar/Avatar.js +45 -19
  132. package/lib/module/modules/avatar/Avatar.variants.js +44 -3
  133. package/lib/module/modules/avatar/MODULE.md +37 -15
  134. package/lib/module/modules/avatar-group/AvatarGroup.js +81 -0
  135. package/lib/module/modules/avatar-group/AvatarGroup.variants.js +132 -0
  136. package/lib/module/modules/avatar-group/MODULE.md +44 -0
  137. package/lib/module/modules/avatar-group/index.js +10 -0
  138. package/lib/module/modules/badge/Badge.js +14 -7
  139. package/lib/module/modules/badge/Badge.variants.js +14 -3
  140. package/lib/module/modules/badge/MODULE.md +11 -5
  141. package/lib/module/modules/banner/Banner.js +181 -0
  142. package/lib/module/modules/banner/Banner.variants.js +118 -0
  143. package/lib/module/modules/banner/MODULE.md +118 -0
  144. package/lib/module/modules/banner/index.js +4 -0
  145. package/lib/module/modules/bottom-nav/BottomNav.js +43 -129
  146. package/lib/module/modules/bottom-nav/BottomNav.variants.js +36 -18
  147. package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js +56 -8
  148. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js +160 -117
  149. package/lib/module/modules/bottom-nav/BottomNavTab.js +162 -0
  150. package/lib/module/modules/bottom-nav/MODULE.md +30 -6
  151. package/lib/module/modules/bottom-sheet/BottomSheet.js +202 -0
  152. package/lib/module/modules/bottom-sheet/BottomSheet.variants.js +59 -0
  153. package/lib/module/modules/bottom-sheet/MODULE.md +64 -0
  154. package/lib/module/modules/bottom-sheet/index.js +4 -0
  155. package/lib/module/modules/button/Button.js +128 -91
  156. package/lib/module/modules/button/Button.variants.js +20 -14
  157. package/lib/module/modules/button/MODULE.md +31 -3
  158. package/lib/module/modules/button-group/ButtonGroup.js +176 -69
  159. package/lib/module/modules/button-group/ButtonGroup.variants.js +51 -50
  160. package/lib/module/modules/button-group/MODULE.md +58 -37
  161. package/lib/module/modules/card/Card.js +122 -21
  162. package/lib/module/modules/card/Card.variants.js +1 -0
  163. package/lib/module/modules/card/MODULE.md +19 -10
  164. package/lib/module/modules/charts/BarChart.js +257 -0
  165. package/lib/module/modules/charts/BarList.js +112 -49
  166. package/lib/module/modules/charts/ChartLegend.js +154 -0
  167. package/lib/module/modules/charts/Charts.variants.js +589 -2
  168. package/lib/module/modules/charts/DonutChart.js +105 -65
  169. package/lib/module/modules/charts/LineChart.js +181 -0
  170. package/lib/module/modules/charts/MODULE.md +161 -22
  171. package/lib/module/modules/charts/PieChart.js +149 -0
  172. package/lib/module/modules/charts/Sparkline.js +7 -4
  173. package/lib/module/modules/charts/index.js +3 -0
  174. package/lib/module/modules/checkbox/Checkbox.js +122 -44
  175. package/lib/module/modules/checkbox/Checkbox.variants.js +13 -8
  176. package/lib/module/modules/checkbox/MODULE.md +40 -8
  177. package/lib/module/modules/chip/Chip.js +200 -0
  178. package/lib/module/modules/chip/Chip.variants.js +290 -0
  179. package/lib/module/modules/chip/ChipGroup.js +48 -0
  180. package/lib/module/modules/chip/MODULE.md +158 -0
  181. package/lib/module/modules/chip/index.js +13 -0
  182. package/lib/module/modules/combobox/Combobox.js +623 -0
  183. package/lib/module/modules/combobox/Combobox.variants.js +295 -0
  184. package/lib/module/modules/combobox/MODULE.md +193 -0
  185. package/lib/module/modules/combobox/comboboxKeys.js +19 -0
  186. package/lib/module/modules/combobox/comboboxKeys.web.js +76 -0
  187. package/lib/module/modules/combobox/index.js +13 -0
  188. package/lib/module/modules/composer/Composer.js +163 -0
  189. package/lib/module/modules/composer/Composer.variants.js +44 -0
  190. package/lib/module/modules/composer/MODULE.md +75 -0
  191. package/lib/module/modules/composer/index.js +4 -0
  192. package/lib/module/modules/copy-button/CopyButton.js +174 -0
  193. package/lib/module/modules/copy-button/CopyButton.variants.js +88 -0
  194. package/lib/module/modules/copy-button/MODULE.md +78 -0
  195. package/lib/module/modules/copy-button/index.js +4 -0
  196. package/lib/module/modules/data-table/DataTable.js +532 -0
  197. package/lib/module/modules/data-table/DataTable.variants.js +189 -0
  198. package/lib/module/modules/data-table/MODULE.md +146 -0
  199. package/lib/module/modules/data-table/index.js +10 -0
  200. package/lib/module/modules/date-picker/Calendar.js +414 -0
  201. package/lib/module/modules/date-picker/Calendar.keys.js +23 -0
  202. package/lib/module/modules/date-picker/Calendar.keys.web.js +83 -0
  203. package/lib/module/modules/date-picker/DatePicker.js +162 -0
  204. package/lib/module/modules/date-picker/DatePicker.variants.js +701 -0
  205. package/lib/module/modules/date-picker/DateRangePicker.js +87 -0
  206. package/lib/module/modules/date-picker/MODULE.md +190 -0
  207. package/lib/module/modules/date-picker/PickerField.js +151 -0
  208. package/lib/module/modules/date-picker/PickerShell.js +134 -0
  209. package/lib/module/modules/date-picker/TimePicker.js +179 -0
  210. package/lib/module/modules/date-picker/index.js +14 -0
  211. package/lib/module/modules/divider/Divider.js +8 -7
  212. package/lib/module/modules/divider/Divider.variants.js +6 -5
  213. package/lib/module/modules/divider/MODULE.md +8 -0
  214. package/lib/module/modules/drawer/Drawer.js +156 -62
  215. package/lib/module/modules/drawer/Drawer.variants.js +7 -20
  216. package/lib/module/modules/drawer/MODULE.md +93 -118
  217. package/lib/module/modules/empty-state/EmptyState.js +34 -31
  218. package/lib/module/modules/empty-state/EmptyState.variants.js +16 -0
  219. package/lib/module/modules/empty-state/MODULE.md +26 -7
  220. package/lib/module/modules/fab/Fab.js +192 -0
  221. package/lib/module/modules/fab/Fab.variants.js +360 -0
  222. package/lib/module/modules/fab/FabGroup.js +361 -0
  223. package/lib/module/modules/fab/MODULE.md +194 -0
  224. package/lib/module/modules/fab/index.js +13 -0
  225. package/lib/module/modules/file-grid/FileGrid.js +163 -0
  226. package/lib/module/modules/file-grid/FileGrid.variants.js +51 -0
  227. package/lib/module/modules/file-grid/MODULE.md +14 -0
  228. package/lib/module/modules/file-grid/index.js +4 -0
  229. package/lib/module/modules/file-upload/FileUpload.js +124 -34
  230. package/lib/module/modules/file-upload/FileUpload.variants.js +53 -8
  231. package/lib/module/modules/file-upload/MODULE.md +24 -4
  232. package/lib/module/modules/filter-sheet/FilterChip.js +32 -18
  233. package/lib/module/modules/filter-sheet/FilterSheet.js +17 -11
  234. package/lib/module/modules/filter-sheet/FilterSheet.variants.js +24 -5
  235. package/lib/module/modules/filter-sheet/FilterSheetBody.js +180 -82
  236. package/lib/module/modules/filter-sheet/MODULE.md +31 -1
  237. package/lib/module/modules/folder-row/FolderRow.js +144 -0
  238. package/lib/module/modules/folder-row/FolderRow.variants.js +51 -0
  239. package/lib/module/modules/folder-row/MODULE.md +72 -0
  240. package/lib/module/modules/folder-row/index.js +4 -0
  241. package/lib/module/modules/form-field/FormField.js +104 -0
  242. package/lib/module/modules/form-field/FormField.variants.js +88 -0
  243. package/lib/module/modules/form-field/MODULE.md +103 -0
  244. package/lib/module/modules/form-field/index.js +4 -0
  245. package/lib/module/modules/gantt/Gantt.js +239 -0
  246. package/lib/module/modules/gantt/Gantt.variants.js +177 -0
  247. package/lib/module/modules/gantt/MODULE.md +81 -0
  248. package/lib/module/modules/gantt/index.js +5 -0
  249. package/lib/module/modules/image-viewer/ImageViewer.js +265 -0
  250. package/lib/module/modules/image-viewer/ImageViewer.variants.js +6 -0
  251. package/lib/module/modules/image-viewer/MODULE.md +63 -0
  252. package/lib/module/modules/image-viewer/index.js +4 -0
  253. package/lib/module/modules/input/Input.js +119 -48
  254. package/lib/module/modules/input/Input.variants.js +26 -11
  255. package/lib/module/modules/input/MODULE.md +38 -6
  256. package/lib/module/modules/limit-reached-modal/LimitReachedModal.js +90 -0
  257. package/lib/module/modules/limit-reached-modal/LimitReachedModal.variants.js +108 -0
  258. package/lib/module/modules/limit-reached-modal/MODULE.md +94 -0
  259. package/lib/module/modules/limit-reached-modal/index.js +11 -0
  260. package/lib/module/modules/list-item/ListItem.js +70 -31
  261. package/lib/module/modules/list-item/ListItem.variants.js +11 -2
  262. package/lib/module/modules/list-item/MODULE.md +8 -3
  263. package/lib/module/modules/markdown/MODULE.md +39 -5
  264. package/lib/module/modules/markdown/Markdown.js +107 -38
  265. package/lib/module/modules/markdown/Markdown.variants.js +8 -2
  266. package/lib/module/modules/markdown/parseMarkdown.js +3 -3
  267. package/lib/module/modules/menu/MODULE.md +56 -14
  268. package/lib/module/modules/menu/Menu.js +236 -68
  269. package/lib/module/modules/menu/Menu.variants.js +13 -3
  270. package/lib/module/modules/message-bubble/MODULE.md +41 -0
  271. package/lib/module/modules/message-bubble/MessageBubble.js +54 -0
  272. package/lib/module/modules/message-bubble/MessageBubble.variants.js +57 -0
  273. package/lib/module/modules/message-bubble/index.js +4 -0
  274. package/lib/module/modules/modal/MODULE.md +40 -3
  275. package/lib/module/modules/modal/Modal.js +135 -33
  276. package/lib/module/modules/modal/Modal.variants.js +2 -2
  277. package/lib/module/modules/more-items/MODULE.md +77 -0
  278. package/lib/module/modules/more-items/MoreItems.js +168 -0
  279. package/lib/module/modules/more-items/MoreItems.variants.js +83 -0
  280. package/lib/module/modules/more-items/index.js +4 -0
  281. package/lib/module/modules/multi-select/MODULE.md +89 -18
  282. package/lib/module/modules/multi-select/MultiSelect.js +239 -105
  283. package/lib/module/modules/multi-select/MultiSelect.variants.js +32 -7
  284. package/lib/module/modules/number-input/MODULE.md +41 -6
  285. package/lib/module/modules/number-input/NumberInput.js +124 -81
  286. package/lib/module/modules/number-input/NumberInput.variants.js +48 -11
  287. package/lib/module/modules/org-switcher/MODULE.md +133 -0
  288. package/lib/module/modules/org-switcher/OrgSwitcher.js +295 -0
  289. package/lib/module/modules/org-switcher/OrgSwitcher.variants.js +188 -0
  290. package/lib/module/modules/org-switcher/index.js +9 -0
  291. package/lib/module/modules/pagination/MODULE.md +163 -0
  292. package/lib/module/modules/pagination/Pagination.js +236 -0
  293. package/lib/module/modules/pagination/Pagination.variants.js +309 -0
  294. package/lib/module/modules/pagination/PaginationControls.js +213 -0
  295. package/lib/module/modules/pagination/index.js +15 -0
  296. package/lib/module/modules/pin-input/MODULE.md +34 -15
  297. package/lib/module/modules/pin-input/PinInput.js +119 -81
  298. package/lib/module/modules/pin-input/PinInput.variants.js +15 -6
  299. package/lib/module/modules/progress-bar/MODULE.md +17 -7
  300. package/lib/module/modules/progress-bar/ProgressBar.js +97 -56
  301. package/lib/module/modules/progress-bar/ProgressBar.variants.js +16 -18
  302. package/lib/module/modules/radio-group/MODULE.md +42 -16
  303. package/lib/module/modules/radio-group/RadioGroup.js +172 -49
  304. package/lib/module/modules/radio-group/RadioGroup.variants.js +48 -11
  305. package/lib/module/modules/reorder/MODULE.md +106 -97
  306. package/lib/module/modules/reorder/Reorder.js +234 -197
  307. package/lib/module/modules/reorder/Reorder.variants.js +39 -15
  308. package/lib/module/modules/rich-text/MODULE.md +54 -0
  309. package/lib/module/modules/rich-text/RichText.js +382 -0
  310. package/lib/module/modules/rich-text/RichText.variants.js +17 -0
  311. package/lib/module/modules/rich-text/index.js +5 -0
  312. package/lib/module/modules/rich-text/parseRichText.js +133 -0
  313. package/lib/module/modules/rich-text-editor/MODULE.md +228 -0
  314. package/lib/module/modules/rich-text-editor/RichTextEditor.js +420 -0
  315. package/lib/module/modules/rich-text-editor/RichTextEditor.variants.js +319 -0
  316. package/lib/module/modules/rich-text-editor/index.js +10 -0
  317. package/lib/module/modules/screen/MODULE.md +64 -0
  318. package/lib/module/modules/screen/Screen.js +139 -0
  319. package/lib/module/modules/screen/Screen.variants.js +61 -0
  320. package/lib/module/modules/screen/index.js +10 -0
  321. package/lib/module/modules/search-bar/MODULE.md +115 -0
  322. package/lib/module/modules/search-bar/SearchBar.js +276 -0
  323. package/lib/module/modules/search-bar/SearchBar.variants.js +208 -0
  324. package/lib/module/modules/search-bar/index.js +12 -0
  325. package/lib/module/modules/section/MODULE.md +41 -0
  326. package/lib/module/modules/section/Section.js +35 -0
  327. package/lib/module/modules/section/Section.variants.js +24 -0
  328. package/lib/module/modules/section/index.js +10 -0
  329. package/lib/module/modules/section-list/MODULE.md +18 -0
  330. package/lib/module/modules/section-list/SectionList.js +64 -0
  331. package/lib/module/modules/section-list/SectionList.variants.js +11 -0
  332. package/lib/module/modules/section-list/index.js +4 -0
  333. package/lib/module/modules/segmented-control/MODULE.md +126 -0
  334. package/lib/module/modules/segmented-control/SegmentedControl.js +222 -0
  335. package/lib/module/modules/segmented-control/SegmentedControl.variants.js +168 -0
  336. package/lib/module/modules/segmented-control/index.js +13 -0
  337. package/lib/module/modules/select/MODULE.md +103 -15
  338. package/lib/module/modules/select/Select.js +223 -94
  339. package/lib/module/modules/select/Select.variants.js +64 -17
  340. package/lib/module/modules/skeleton/MODULE.md +37 -21
  341. package/lib/module/modules/skeleton/Skeleton.js +55 -46
  342. package/lib/module/modules/skeleton/Skeleton.variants.js +19 -76
  343. package/lib/module/modules/slider/MODULE.md +33 -5
  344. package/lib/module/modules/slider/Slider.js +68 -10
  345. package/lib/module/modules/slider/Slider.variants.js +60 -13
  346. package/lib/module/modules/spinner/MODULE.md +16 -6
  347. package/lib/module/modules/spinner/Spinner.js +20 -16
  348. package/lib/module/modules/spinner/Spinner.variants.js +5 -3
  349. package/lib/module/modules/stage-progress/MODULE.md +68 -0
  350. package/lib/module/modules/stage-progress/StageProgress.js +221 -0
  351. package/lib/module/modules/stage-progress/StageProgress.variants.js +169 -0
  352. package/lib/module/modules/stage-progress/index.js +4 -0
  353. package/lib/module/modules/stat-tile/MODULE.md +11 -2
  354. package/lib/module/modules/stat-tile/StatTile.js +76 -34
  355. package/lib/module/modules/stat-tile/StatTile.variants.js +8 -4
  356. package/lib/module/modules/state-block/MODULE.md +55 -0
  357. package/lib/module/modules/state-block/StateBlock.js +136 -0
  358. package/lib/module/modules/state-block/StateBlock.variants.js +62 -0
  359. package/lib/module/modules/state-block/index.js +10 -0
  360. package/lib/module/modules/stepper/MODULE.md +33 -6
  361. package/lib/module/modules/stepper/Stepper.js +108 -39
  362. package/lib/module/modules/stepper/Stepper.variants.js +6 -6
  363. package/lib/module/modules/surface/MODULE.md +59 -0
  364. package/lib/module/modules/surface/Surface.js +42 -0
  365. package/lib/module/modules/surface/Surface.variants.js +33 -0
  366. package/lib/module/modules/surface/index.js +4 -0
  367. package/lib/module/modules/swipeable-row/MODULE.md +129 -0
  368. package/lib/module/modules/swipeable-row/SwipeableRow.js +265 -0
  369. package/lib/module/modules/swipeable-row/SwipeableRow.variants.js +80 -0
  370. package/lib/module/modules/swipeable-row/index.js +4 -0
  371. package/lib/module/modules/switch/MODULE.md +16 -0
  372. package/lib/module/modules/switch/Switch.js +9 -3
  373. package/lib/module/modules/switch/Switch.variants.js +8 -0
  374. package/lib/module/modules/tabs/MODULE.md +48 -13
  375. package/lib/module/modules/tabs/Tabs.js +141 -73
  376. package/lib/module/modules/tabs/Tabs.variants.js +33 -9
  377. package/lib/module/modules/text/MODULE.md +54 -0
  378. package/lib/module/modules/text/Text.js +59 -0
  379. package/lib/module/modules/text/Text.variants.js +162 -0
  380. package/lib/module/modules/text/index.js +4 -0
  381. package/lib/module/modules/textarea/MODULE.md +31 -13
  382. package/lib/module/modules/textarea/Textarea.js +92 -46
  383. package/lib/module/modules/textarea/Textarea.variants.js +16 -10
  384. package/lib/module/modules/timeline/MODULE.md +39 -7
  385. package/lib/module/modules/timeline/Timeline.js +151 -77
  386. package/lib/module/modules/timeline/Timeline.variants.js +13 -0
  387. package/lib/module/modules/toast/MODULE.md +74 -11
  388. package/lib/module/modules/toast/Toast.js +118 -34
  389. package/lib/module/modules/toast/Toast.variants.js +42 -1
  390. package/lib/module/modules/toast/toastScreenReader.js +69 -0
  391. package/lib/module/modules/tooltip/MODULE.md +82 -28
  392. package/lib/module/modules/tooltip/Tooltip.js +126 -44
  393. package/lib/module/modules/tooltip/Tooltip.variants.js +11 -5
  394. package/lib/module/modules/typing-indicator/MODULE.md +48 -0
  395. package/lib/module/modules/typing-indicator/TypingIndicator.js +98 -0
  396. package/lib/module/modules/typing-indicator/TypingIndicator.variants.js +55 -0
  397. package/lib/module/modules/typing-indicator/index.js +4 -0
  398. package/lib/module/modules/unread-badge/MODULE.md +20 -0
  399. package/lib/module/modules/unread-badge/UnreadBadge.js +45 -0
  400. package/lib/module/modules/unread-badge/UnreadBadge.variants.js +66 -0
  401. package/lib/module/modules/unread-badge/index.js +4 -0
  402. package/lib/module/test/mocks/flashList.js +5 -0
  403. package/lib/module/test/perfHelpers.js +18 -0
  404. package/lib/module/theme/MODULE.md +9 -1
  405. package/lib/module/theme/hooks.js +11 -0
  406. package/lib/module/theme/index.js +3 -6
  407. package/lib/module/theme/platform/MODULE.md +20 -2
  408. package/lib/module/theme/platform/elevation.native.js +0 -44
  409. package/lib/module/theme/platform/floatingSurface.native.js +75 -0
  410. package/lib/module/theme/platform/highlight.native.js +59 -0
  411. package/lib/module/theme/platform/index.js +5 -0
  412. package/lib/module/theme/platform/motion.native.js +35 -0
  413. package/lib/module/theme/platform/stateLayer.native.js +14 -0
  414. package/lib/module/theme/platform/surfaces.native.js +11 -0
  415. package/lib/module/theme/provider/PixelizeProvider.js +18 -49
  416. package/lib/module/theme/provider/ThemeContext.js +6 -0
  417. package/lib/module/theme/provider/colorModeStorage.js +2 -2
  418. package/lib/module/theme/provider/index.js +1 -0
  419. package/lib/module/theme/provider/loadPalette.js +75 -0
  420. package/lib/module/theme/provider/types.js +4 -0
  421. package/lib/module/theme/provider/useTheme.js +1 -2
  422. package/lib/module/theme/provider/useThemeMode.js +1 -1
  423. package/lib/module/theme/tokens/MODULE.md +32 -28
  424. package/lib/module/theme/tokens/THEME-CONTRACT.md +137 -0
  425. package/lib/module/theme/tokens/assertPalette.js +29 -0
  426. package/lib/module/theme/tokens/brands/emerald/palette.light.js +7 -6
  427. package/lib/module/theme/tokens/brands/lavender/palette.light.js +3 -2
  428. package/lib/module/theme/tokens/brands/meadow/palette.light.js +7 -6
  429. package/lib/module/theme/tokens/brands/radiant/palette.light.js +7 -6
  430. package/lib/module/theme/tokens/brands/rosewood/palette.light.js +7 -6
  431. package/lib/module/theme/tokens/brands/skyline/palette.light.js +7 -6
  432. package/lib/module/theme/tokens/brands/slate/palette.light.js +8 -10
  433. package/lib/module/theme/tokens/brands/storefront/palette.light.js +7 -6
  434. package/lib/module/theme/tokens/brands/zinc/palette.dark.js +3 -2
  435. package/lib/module/theme/tokens/brands/zinc/palette.light.js +3 -2
  436. package/lib/module/theme/tokens/builders/buildDarkPalette.js +3 -2
  437. package/lib/module/theme/tokens/builders/finalizePalette.js +34 -0
  438. package/lib/module/theme/tokens/builders/liftToContrast.js +44 -0
  439. package/lib/module/theme/tokens/builders/placeholderInk.js +22 -0
  440. package/lib/module/theme/tokens/builders/semanticText.js +14 -0
  441. package/lib/module/theme/tokens/builders/surfaceRungs.js +44 -0
  442. package/lib/module/theme/tokens/index.js +5 -0
  443. package/lib/module/theme/tokens/roles/index.js +14 -3
  444. package/lib/typescript/core/a11y/announce.d.ts +20 -0
  445. package/lib/typescript/core/a11y/announce.web.d.ts +27 -0
  446. package/lib/typescript/core/a11y/index.d.ts +21 -2
  447. package/lib/typescript/core/a11y/keyboard.d.ts +45 -0
  448. package/lib/typescript/core/a11y/keyboard.web.d.ts +69 -0
  449. package/lib/typescript/core/a11y/labels.d.ts +19 -0
  450. package/lib/typescript/core/device/index.d.ts +16 -0
  451. package/lib/typescript/core/gradient/AccentGradientFill.d.ts +7 -0
  452. package/lib/typescript/core/gradient/darkenHex.d.ts +2 -0
  453. package/lib/typescript/core/gradient/gradientStops.d.ts +10 -0
  454. package/lib/typescript/core/gradient/index.d.ts +5 -0
  455. package/lib/typescript/core/gradient/withAlpha.d.ts +2 -0
  456. package/lib/typescript/core/haptics/context.d.ts +3 -0
  457. package/lib/typescript/core/haptics/haptics.d.ts +33 -0
  458. package/lib/typescript/core/haptics/index.d.ts +6 -0
  459. package/lib/typescript/core/haptics/useHaptics.d.ts +12 -0
  460. package/lib/typescript/core/heading/index.d.ts +45 -0
  461. package/lib/typescript/core/icon/Icon.d.ts +18 -0
  462. package/lib/typescript/core/icon/icons/arrow-down.d.ts +3 -0
  463. package/lib/typescript/core/icon/icons/arrow-left.d.ts +3 -0
  464. package/lib/typescript/core/icon/icons/arrow-right.d.ts +3 -0
  465. package/lib/typescript/core/icon/icons/arrow-up.d.ts +3 -0
  466. package/lib/typescript/core/icon/icons/at-sign.d.ts +3 -0
  467. package/lib/typescript/core/icon/icons/bell.d.ts +3 -0
  468. package/lib/typescript/core/icon/icons/bold.d.ts +3 -0
  469. package/lib/typescript/core/icon/icons/building-2.d.ts +3 -0
  470. package/lib/typescript/core/icon/icons/calendar.d.ts +3 -0
  471. package/lib/typescript/core/icon/icons/chart-column.d.ts +3 -0
  472. package/lib/typescript/core/icon/icons/check.d.ts +3 -0
  473. package/lib/typescript/core/icon/icons/chevron-down.d.ts +3 -0
  474. package/lib/typescript/core/icon/icons/chevron-left.d.ts +3 -0
  475. package/lib/typescript/core/icon/icons/chevron-right.d.ts +3 -0
  476. package/lib/typescript/core/icon/icons/chevron-up.d.ts +3 -0
  477. package/lib/typescript/core/icon/icons/chevrons-left.d.ts +3 -0
  478. package/lib/typescript/core/icon/icons/chevrons-right.d.ts +3 -0
  479. package/lib/typescript/core/icon/icons/chevrons-up-down.d.ts +3 -0
  480. package/lib/typescript/core/icon/icons/circle-alert.d.ts +3 -0
  481. package/lib/typescript/core/icon/icons/circle-check.d.ts +3 -0
  482. package/lib/typescript/core/icon/icons/clock.d.ts +3 -0
  483. package/lib/typescript/core/icon/icons/code.d.ts +3 -0
  484. package/lib/typescript/core/icon/icons/download.d.ts +3 -0
  485. package/lib/typescript/core/icon/icons/external-link.d.ts +3 -0
  486. package/lib/typescript/core/icon/icons/eye.d.ts +3 -0
  487. package/lib/typescript/core/icon/icons/file-text.d.ts +3 -0
  488. package/lib/typescript/core/icon/icons/filter.d.ts +3 -0
  489. package/lib/typescript/core/icon/icons/flag.d.ts +3 -0
  490. package/lib/typescript/core/icon/icons/folder.d.ts +3 -0
  491. package/lib/typescript/core/icon/icons/heading-1.d.ts +3 -0
  492. package/lib/typescript/core/icon/icons/heading-2.d.ts +3 -0
  493. package/lib/typescript/core/icon/icons/heading-3.d.ts +3 -0
  494. package/lib/typescript/core/icon/icons/image.d.ts +3 -0
  495. package/lib/typescript/core/icon/icons/inbox.d.ts +3 -0
  496. package/lib/typescript/core/icon/icons/info.d.ts +3 -0
  497. package/lib/typescript/core/icon/icons/italic.d.ts +3 -0
  498. package/lib/typescript/core/icon/icons/kanban.d.ts +3 -0
  499. package/lib/typescript/core/icon/icons/layers.d.ts +3 -0
  500. package/lib/typescript/core/icon/icons/layout-dashboard.d.ts +3 -0
  501. package/lib/typescript/core/icon/icons/layout-template.d.ts +3 -0
  502. package/lib/typescript/core/icon/icons/life-buoy.d.ts +3 -0
  503. package/lib/typescript/core/icon/icons/link.d.ts +3 -0
  504. package/lib/typescript/core/icon/icons/list-checks.d.ts +3 -0
  505. package/lib/typescript/core/icon/icons/list-ordered.d.ts +3 -0
  506. package/lib/typescript/core/icon/icons/list-todo.d.ts +3 -0
  507. package/lib/typescript/core/icon/icons/list.d.ts +3 -0
  508. package/lib/typescript/core/icon/icons/log-out.d.ts +3 -0
  509. package/lib/typescript/core/icon/icons/map.d.ts +3 -0
  510. package/lib/typescript/core/icon/icons/message-square.d.ts +3 -0
  511. package/lib/typescript/core/icon/icons/milestone.d.ts +3 -0
  512. package/lib/typescript/core/icon/icons/minus.d.ts +3 -0
  513. package/lib/typescript/core/icon/icons/more-horizontal.d.ts +3 -0
  514. package/lib/typescript/core/icon/icons/paperclip.d.ts +3 -0
  515. package/lib/typescript/core/icon/icons/pencil.d.ts +3 -0
  516. package/lib/typescript/core/icon/icons/plus.d.ts +3 -0
  517. package/lib/typescript/core/icon/icons/quote.d.ts +3 -0
  518. package/lib/typescript/core/icon/icons/refresh-cw.d.ts +3 -0
  519. package/lib/typescript/core/icon/icons/save.d.ts +3 -0
  520. package/lib/typescript/core/icon/icons/search.d.ts +3 -0
  521. package/lib/typescript/core/icon/icons/send.d.ts +3 -0
  522. package/lib/typescript/core/icon/icons/settings.d.ts +3 -0
  523. package/lib/typescript/core/icon/icons/share.d.ts +3 -0
  524. package/lib/typescript/core/icon/icons/square-code.d.ts +3 -0
  525. package/lib/typescript/core/icon/icons/star.d.ts +3 -0
  526. package/lib/typescript/core/icon/icons/strikethrough.d.ts +3 -0
  527. package/lib/typescript/core/icon/icons/tag.d.ts +3 -0
  528. package/lib/typescript/core/icon/icons/trash.d.ts +3 -0
  529. package/lib/typescript/core/icon/icons/trending-up.d.ts +3 -0
  530. package/lib/typescript/core/icon/icons/triangle-alert.d.ts +3 -0
  531. package/lib/typescript/core/icon/icons/underline.d.ts +3 -0
  532. package/lib/typescript/core/icon/icons/upload.d.ts +3 -0
  533. package/lib/typescript/core/icon/icons/user.d.ts +3 -0
  534. package/lib/typescript/core/icon/icons/users.d.ts +3 -0
  535. package/lib/typescript/core/icon/icons/x.d.ts +3 -0
  536. package/lib/typescript/core/icon/index.d.ts +6 -94
  537. package/lib/typescript/core/icon/names.d.ts +2 -0
  538. package/lib/typescript/core/icon/resolve.d.ts +4 -0
  539. package/lib/typescript/core/icon/types.d.ts +13 -0
  540. package/lib/typescript/core/list/VirtualList.d.ts +55 -0
  541. package/lib/typescript/core/list/index.d.ts +3 -0
  542. package/lib/typescript/core/media/MediaImage.d.ts +28 -0
  543. package/lib/typescript/core/media/expoImage.d.ts +23 -0
  544. package/lib/typescript/core/media/index.d.ts +7 -0
  545. package/lib/typescript/core/media/pickers.d.ts +27 -0
  546. package/lib/typescript/core/motion/config.d.ts +57 -0
  547. package/lib/typescript/core/motion/index.d.ts +10 -0
  548. package/lib/typescript/core/motion/presets.d.ts +49 -0
  549. package/lib/typescript/core/motion/useAnimatedValue.d.ts +11 -0
  550. package/lib/typescript/core/motion/useMotion.d.ts +34 -0
  551. package/lib/typescript/core/motion/usePressState.d.ts +21 -0
  552. package/lib/typescript/core/style/index.d.ts +4 -0
  553. package/lib/typescript/core/style/radius.d.ts +2 -0
  554. package/lib/typescript/core/style/sx.d.ts +86 -0
  555. package/lib/typescript/core/style/useThemedStyles.d.ts +5 -0
  556. package/lib/typescript/index.d.ts +136 -2
  557. package/lib/typescript/modules/accordion/Accordion.d.ts +12 -23
  558. package/lib/typescript/modules/accordion/Accordion.variants.d.ts +7 -7
  559. package/lib/typescript/modules/alert-dialog/AlertDialog.variants.d.ts +2 -1
  560. package/lib/typescript/modules/app-bar/AppBar.d.ts +37 -0
  561. package/lib/typescript/modules/app-bar/AppBar.variants.d.ts +35 -0
  562. package/lib/typescript/modules/app-bar/index.d.ts +9 -0
  563. package/lib/typescript/modules/avatar/Avatar.d.ts +23 -3
  564. package/lib/typescript/modules/avatar/Avatar.variants.d.ts +32 -1
  565. package/lib/typescript/modules/avatar/index.d.ts +1 -1
  566. package/lib/typescript/modules/avatar-group/AvatarGroup.d.ts +30 -0
  567. package/lib/typescript/modules/avatar-group/AvatarGroup.variants.d.ts +94 -0
  568. package/lib/typescript/modules/avatar-group/index.d.ts +9 -0
  569. package/lib/typescript/modules/badge/Badge.d.ts +3 -1
  570. package/lib/typescript/modules/badge/Badge.variants.d.ts +8 -4
  571. package/lib/typescript/modules/banner/Banner.d.ts +37 -0
  572. package/lib/typescript/modules/banner/Banner.variants.d.ts +49 -0
  573. package/lib/typescript/modules/banner/index.d.ts +5 -0
  574. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts +9 -8
  575. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts +23 -12
  576. package/lib/typescript/modules/bottom-nav/BottomNavTab.d.ts +34 -0
  577. package/lib/typescript/modules/bottom-sheet/BottomSheet.d.ts +29 -0
  578. package/lib/typescript/modules/bottom-sheet/BottomSheet.variants.d.ts +15 -0
  579. package/lib/typescript/modules/bottom-sheet/index.d.ts +3 -0
  580. package/lib/typescript/modules/button/Button.d.ts +9 -13
  581. package/lib/typescript/modules/button/Button.variants.d.ts +28 -15
  582. package/lib/typescript/modules/button-group/ButtonGroup.d.ts +0 -17
  583. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts +40 -61
  584. package/lib/typescript/modules/card/Card.d.ts +7 -5
  585. package/lib/typescript/modules/card/Card.variants.d.ts +2 -2
  586. package/lib/typescript/modules/charts/BarChart.d.ts +26 -0
  587. package/lib/typescript/modules/charts/ChartLegend.d.ts +16 -0
  588. package/lib/typescript/modules/charts/Charts.variants.d.ts +229 -2
  589. package/lib/typescript/modules/charts/DonutChart.d.ts +3 -0
  590. package/lib/typescript/modules/charts/LineChart.d.ts +30 -0
  591. package/lib/typescript/modules/charts/PieChart.d.ts +18 -0
  592. package/lib/typescript/modules/charts/index.d.ts +6 -0
  593. package/lib/typescript/modules/checkbox/Checkbox.d.ts +4 -1
  594. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts +14 -9
  595. package/lib/typescript/modules/chip/Chip.d.ts +40 -0
  596. package/lib/typescript/modules/chip/Chip.variants.d.ts +202 -0
  597. package/lib/typescript/modules/chip/ChipGroup.d.ts +22 -0
  598. package/lib/typescript/modules/chip/index.d.ts +12 -0
  599. package/lib/typescript/modules/combobox/Combobox.d.ts +81 -0
  600. package/lib/typescript/modules/combobox/Combobox.variants.d.ts +225 -0
  601. package/lib/typescript/modules/combobox/comboboxKeys.d.ts +25 -0
  602. package/lib/typescript/modules/combobox/comboboxKeys.web.d.ts +23 -0
  603. package/lib/typescript/modules/combobox/index.d.ts +11 -0
  604. package/lib/typescript/modules/composer/Composer.d.ts +28 -0
  605. package/lib/typescript/modules/composer/Composer.variants.d.ts +7 -0
  606. package/lib/typescript/modules/composer/index.d.ts +3 -0
  607. package/lib/typescript/modules/copy-button/CopyButton.d.ts +21 -0
  608. package/lib/typescript/modules/copy-button/CopyButton.variants.d.ts +42 -0
  609. package/lib/typescript/modules/copy-button/index.d.ts +4 -0
  610. package/lib/typescript/modules/data-table/DataTable.d.ts +44 -0
  611. package/lib/typescript/modules/data-table/DataTable.variants.d.ts +118 -0
  612. package/lib/typescript/modules/data-table/index.d.ts +9 -0
  613. package/lib/typescript/modules/date-picker/Calendar.d.ts +42 -0
  614. package/lib/typescript/modules/date-picker/Calendar.keys.d.ts +19 -0
  615. package/lib/typescript/modules/date-picker/Calendar.keys.web.d.ts +35 -0
  616. package/lib/typescript/modules/date-picker/DatePicker.d.ts +40 -0
  617. package/lib/typescript/modules/date-picker/DatePicker.variants.d.ts +334 -0
  618. package/lib/typescript/modules/date-picker/DateRangePicker.d.ts +32 -0
  619. package/lib/typescript/modules/date-picker/PickerField.d.ts +26 -0
  620. package/lib/typescript/modules/date-picker/PickerShell.d.ts +29 -0
  621. package/lib/typescript/modules/date-picker/TimePicker.d.ts +14 -0
  622. package/lib/typescript/modules/date-picker/index.d.ts +16 -0
  623. package/lib/typescript/modules/divider/Divider.variants.d.ts +6 -6
  624. package/lib/typescript/modules/drawer/Drawer.d.ts +2 -1
  625. package/lib/typescript/modules/drawer/Drawer.variants.d.ts +4 -13
  626. package/lib/typescript/modules/empty-state/EmptyState.d.ts +9 -4
  627. package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts +8 -1
  628. package/lib/typescript/modules/fab/Fab.d.ts +74 -0
  629. package/lib/typescript/modules/fab/Fab.variants.d.ts +231 -0
  630. package/lib/typescript/modules/fab/FabGroup.d.ts +66 -0
  631. package/lib/typescript/modules/fab/index.d.ts +12 -0
  632. package/lib/typescript/modules/file-grid/FileGrid.d.ts +26 -0
  633. package/lib/typescript/modules/file-grid/FileGrid.variants.d.ts +26 -0
  634. package/lib/typescript/modules/file-grid/index.d.ts +4 -0
  635. package/lib/typescript/modules/file-upload/FileUpload.d.ts +3 -0
  636. package/lib/typescript/modules/file-upload/FileUpload.variants.d.ts +22 -5
  637. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts +30 -5
  638. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts +13 -8
  639. package/lib/typescript/modules/folder-row/FolderRow.d.ts +16 -0
  640. package/lib/typescript/modules/folder-row/FolderRow.variants.d.ts +29 -0
  641. package/lib/typescript/modules/folder-row/index.d.ts +3 -0
  642. package/lib/typescript/modules/form-field/FormField.d.ts +29 -0
  643. package/lib/typescript/modules/form-field/FormField.variants.d.ts +93 -0
  644. package/lib/typescript/modules/form-field/index.d.ts +4 -0
  645. package/lib/typescript/modules/gantt/Gantt.d.ts +19 -0
  646. package/lib/typescript/modules/gantt/Gantt.variants.d.ts +103 -0
  647. package/lib/typescript/modules/gantt/index.d.ts +5 -0
  648. package/lib/typescript/modules/image-viewer/ImageViewer.d.ts +27 -0
  649. package/lib/typescript/modules/image-viewer/ImageViewer.variants.d.ts +3 -0
  650. package/lib/typescript/modules/image-viewer/index.d.ts +3 -0
  651. package/lib/typescript/modules/input/Input.d.ts +9 -1
  652. package/lib/typescript/modules/input/Input.variants.d.ts +32 -12
  653. package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.d.ts +34 -0
  654. package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.variants.d.ts +46 -0
  655. package/lib/typescript/modules/limit-reached-modal/index.d.ts +10 -0
  656. package/lib/typescript/modules/list-item/ListItem.d.ts +3 -1
  657. package/lib/typescript/modules/list-item/ListItem.variants.d.ts +138 -2
  658. package/lib/typescript/modules/markdown/Markdown.d.ts +13 -0
  659. package/lib/typescript/modules/markdown/Markdown.variants.d.ts +8 -2
  660. package/lib/typescript/modules/markdown/parseMarkdown.d.ts +3 -2
  661. package/lib/typescript/modules/menu/Menu.d.ts +8 -18
  662. package/lib/typescript/modules/menu/Menu.variants.d.ts +8 -1
  663. package/lib/typescript/modules/message-bubble/MessageBubble.d.ts +25 -0
  664. package/lib/typescript/modules/message-bubble/MessageBubble.variants.d.ts +30 -0
  665. package/lib/typescript/modules/message-bubble/index.d.ts +4 -0
  666. package/lib/typescript/modules/modal/Modal.d.ts +12 -0
  667. package/lib/typescript/modules/modal/Modal.variants.d.ts +1 -1
  668. package/lib/typescript/modules/more-items/MoreItems.d.ts +15 -0
  669. package/lib/typescript/modules/more-items/MoreItems.variants.d.ts +30 -0
  670. package/lib/typescript/modules/more-items/index.d.ts +4 -0
  671. package/lib/typescript/modules/multi-select/MultiSelect.d.ts +1 -16
  672. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts +24 -5
  673. package/lib/typescript/modules/number-input/NumberInput.d.ts +6 -0
  674. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts +64 -12
  675. package/lib/typescript/modules/org-switcher/OrgSwitcher.d.ts +44 -0
  676. package/lib/typescript/modules/org-switcher/OrgSwitcher.variants.d.ts +139 -0
  677. package/lib/typescript/modules/org-switcher/index.d.ts +8 -0
  678. package/lib/typescript/modules/pagination/Pagination.d.ts +45 -0
  679. package/lib/typescript/modules/pagination/Pagination.variants.d.ts +240 -0
  680. package/lib/typescript/modules/pagination/PaginationControls.d.ts +47 -0
  681. package/lib/typescript/modules/pagination/index.d.ts +14 -0
  682. package/lib/typescript/modules/pin-input/PinInput.d.ts +6 -0
  683. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts +22 -5
  684. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts +8 -4
  685. package/lib/typescript/modules/progress-bar/ProgressBar.variants.d.ts +13 -15
  686. package/lib/typescript/modules/radio-group/RadioGroup.d.ts +6 -0
  687. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts +32 -11
  688. package/lib/typescript/modules/reorder/Reorder.d.ts +28 -23
  689. package/lib/typescript/modules/reorder/Reorder.variants.d.ts +25 -9
  690. package/lib/typescript/modules/rich-text/RichText.d.ts +15 -0
  691. package/lib/typescript/modules/rich-text/RichText.variants.d.ts +15 -0
  692. package/lib/typescript/modules/rich-text/index.d.ts +5 -0
  693. package/lib/typescript/modules/rich-text/parseRichText.d.ts +30 -0
  694. package/lib/typescript/modules/rich-text-editor/RichTextEditor.d.ts +62 -0
  695. package/lib/typescript/modules/rich-text-editor/RichTextEditor.variants.d.ts +139 -0
  696. package/lib/typescript/modules/rich-text-editor/index.d.ts +9 -0
  697. package/lib/typescript/modules/screen/Screen.d.ts +30 -0
  698. package/lib/typescript/modules/screen/Screen.variants.d.ts +25 -0
  699. package/lib/typescript/modules/screen/index.d.ts +9 -0
  700. package/lib/typescript/modules/search-bar/SearchBar.d.ts +47 -0
  701. package/lib/typescript/modules/search-bar/SearchBar.variants.d.ts +179 -0
  702. package/lib/typescript/modules/search-bar/index.d.ts +11 -0
  703. package/lib/typescript/modules/section/Section.d.ts +17 -0
  704. package/lib/typescript/modules/section/Section.variants.d.ts +9 -0
  705. package/lib/typescript/modules/section/index.d.ts +8 -0
  706. package/lib/typescript/modules/section-list/SectionList.d.ts +26 -0
  707. package/lib/typescript/modules/section-list/SectionList.variants.d.ts +3 -0
  708. package/lib/typescript/modules/section-list/index.d.ts +3 -0
  709. package/lib/typescript/modules/segmented-control/SegmentedControl.d.ts +45 -0
  710. package/lib/typescript/modules/segmented-control/SegmentedControl.variants.d.ts +143 -0
  711. package/lib/typescript/modules/segmented-control/index.d.ts +11 -0
  712. package/lib/typescript/modules/select/Select.d.ts +5 -15
  713. package/lib/typescript/modules/select/Select.variants.d.ts +45 -12
  714. package/lib/typescript/modules/select/index.d.ts +1 -1
  715. package/lib/typescript/modules/skeleton/Skeleton.d.ts +3 -13
  716. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts +14 -69
  717. package/lib/typescript/modules/slider/Slider.variants.d.ts +35 -14
  718. package/lib/typescript/modules/spinner/Spinner.variants.d.ts +6 -4
  719. package/lib/typescript/modules/stage-progress/StageProgress.d.ts +18 -0
  720. package/lib/typescript/modules/stage-progress/StageProgress.variants.d.ts +107 -0
  721. package/lib/typescript/modules/stage-progress/index.d.ts +4 -0
  722. package/lib/typescript/modules/stat-tile/StatTile.d.ts +4 -0
  723. package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts +7 -5
  724. package/lib/typescript/modules/state-block/StateBlock.d.ts +55 -0
  725. package/lib/typescript/modules/state-block/StateBlock.variants.d.ts +31 -0
  726. package/lib/typescript/modules/state-block/index.d.ts +10 -0
  727. package/lib/typescript/modules/stepper/Stepper.d.ts +4 -0
  728. package/lib/typescript/modules/stepper/Stepper.variants.d.ts +7 -7
  729. package/lib/typescript/modules/surface/Surface.d.ts +19 -0
  730. package/lib/typescript/modules/surface/Surface.variants.d.ts +15 -0
  731. package/lib/typescript/modules/surface/index.d.ts +4 -0
  732. package/lib/typescript/modules/swipeable-row/SwipeableRow.d.ts +35 -0
  733. package/lib/typescript/modules/swipeable-row/SwipeableRow.variants.d.ts +27 -0
  734. package/lib/typescript/modules/swipeable-row/index.d.ts +4 -0
  735. package/lib/typescript/modules/switch/Switch.variants.d.ts +9 -1
  736. package/lib/typescript/modules/tabs/Tabs.d.ts +8 -6
  737. package/lib/typescript/modules/tabs/Tabs.variants.d.ts +20 -7
  738. package/lib/typescript/modules/text/Text.d.ts +27 -0
  739. package/lib/typescript/modules/text/Text.variants.d.ts +21 -0
  740. package/lib/typescript/modules/text/index.d.ts +4 -0
  741. package/lib/typescript/modules/textarea/Textarea.d.ts +5 -0
  742. package/lib/typescript/modules/textarea/Textarea.variants.d.ts +15 -8
  743. package/lib/typescript/modules/timeline/Timeline.d.ts +9 -13
  744. package/lib/typescript/modules/timeline/Timeline.variants.d.ts +17 -1
  745. package/lib/typescript/modules/toast/Toast.d.ts +13 -3
  746. package/lib/typescript/modules/toast/Toast.variants.d.ts +33 -3
  747. package/lib/typescript/modules/toast/index.d.ts +1 -1
  748. package/lib/typescript/modules/toast/toastScreenReader.d.ts +22 -0
  749. package/lib/typescript/modules/tooltip/Tooltip.d.ts +34 -11
  750. package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts +11 -5
  751. package/lib/typescript/modules/typing-indicator/TypingIndicator.d.ts +28 -0
  752. package/lib/typescript/modules/typing-indicator/TypingIndicator.variants.d.ts +32 -0
  753. package/lib/typescript/modules/typing-indicator/index.d.ts +4 -0
  754. package/lib/typescript/modules/unread-badge/UnreadBadge.d.ts +15 -0
  755. package/lib/typescript/modules/unread-badge/UnreadBadge.variants.d.ts +56 -0
  756. package/lib/typescript/modules/unread-badge/index.d.ts +4 -0
  757. package/lib/typescript/test/mocks/flashList.d.ts +3 -0
  758. package/lib/typescript/test/perfHelpers.d.ts +9 -0
  759. package/lib/typescript/theme/hooks.d.ts +11 -0
  760. package/lib/typescript/theme/index.d.ts +4 -3
  761. package/lib/typescript/theme/platform/elevation.native.d.ts +0 -30
  762. package/lib/typescript/theme/platform/floatingSurface.native.d.ts +10 -0
  763. package/lib/typescript/theme/platform/highlight.native.d.ts +17 -0
  764. package/lib/typescript/theme/platform/index.d.ts +9 -0
  765. package/lib/typescript/theme/platform/motion.native.d.ts +35 -0
  766. package/lib/typescript/theme/platform/stateLayer.native.d.ts +11 -0
  767. package/lib/typescript/theme/platform/surfaces.native.d.ts +8 -0
  768. package/lib/typescript/theme/provider/PixelizeProvider.d.ts +3 -80
  769. package/lib/typescript/theme/provider/ThemeContext.d.ts +4 -0
  770. package/lib/typescript/theme/provider/index.d.ts +2 -1
  771. package/lib/typescript/theme/provider/loadPalette.d.ts +9 -0
  772. package/lib/typescript/theme/provider/types.d.ts +49 -0
  773. package/lib/typescript/theme/provider/useTheme.d.ts +1 -2
  774. package/lib/typescript/theme/provider/useThemeMode.d.ts +1 -1
  775. package/lib/typescript/theme/tokens/assertPalette.d.ts +10 -0
  776. package/lib/typescript/theme/tokens/brands/emerald/palette.light.d.ts +4 -3
  777. package/lib/typescript/theme/tokens/brands/lavender/palette.light.d.ts +4 -3
  778. package/lib/typescript/theme/tokens/brands/meadow/palette.light.d.ts +4 -3
  779. package/lib/typescript/theme/tokens/brands/radiant/palette.light.d.ts +4 -3
  780. package/lib/typescript/theme/tokens/brands/rosewood/palette.light.d.ts +4 -3
  781. package/lib/typescript/theme/tokens/brands/skyline/palette.light.d.ts +4 -3
  782. package/lib/typescript/theme/tokens/brands/slate/palette.light.d.ts +4 -3
  783. package/lib/typescript/theme/tokens/brands/storefront/palette.light.d.ts +4 -3
  784. package/lib/typescript/theme/tokens/brands/zinc/palette.light.d.ts +4 -3
  785. package/lib/typescript/theme/tokens/builders/finalizePalette.d.ts +4 -0
  786. package/lib/typescript/theme/tokens/builders/liftToContrast.d.ts +9 -0
  787. package/lib/typescript/theme/tokens/builders/placeholderInk.d.ts +13 -0
  788. package/lib/typescript/theme/tokens/builders/semanticText.d.ts +4 -0
  789. package/lib/typescript/theme/tokens/builders/surfaceRungs.d.ts +12 -0
  790. package/lib/typescript/theme/tokens/index.d.ts +5 -0
  791. package/lib/typescript/theme/tokens/roles/index.d.ts +8 -0
  792. package/lib/typescript/theme/tokens/types.d.ts +8 -7
  793. package/package.json +201 -19
  794. package/registry.json +177 -2
  795. package/lib/module/core/a11y/index.js.map +0 -1
  796. package/lib/module/core/icon/index.js.map +0 -1
  797. package/lib/module/core/style/index.js.map +0 -1
  798. package/lib/module/core/style/layoutStyle.js.map +0 -1
  799. package/lib/module/core/style/variants.js.map +0 -1
  800. package/lib/module/index.js.map +0 -1
  801. package/lib/module/modules/accordion/Accordion.js.map +0 -1
  802. package/lib/module/modules/accordion/Accordion.variants.js.map +0 -1
  803. package/lib/module/modules/accordion/index.js.map +0 -1
  804. package/lib/module/modules/alert-dialog/AlertDialog.js.map +0 -1
  805. package/lib/module/modules/alert-dialog/AlertDialog.variants.js.map +0 -1
  806. package/lib/module/modules/alert-dialog/index.js.map +0 -1
  807. package/lib/module/modules/avatar/Avatar.js.map +0 -1
  808. package/lib/module/modules/avatar/Avatar.variants.js.map +0 -1
  809. package/lib/module/modules/avatar/index.js.map +0 -1
  810. package/lib/module/modules/badge/Badge.js.map +0 -1
  811. package/lib/module/modules/badge/Badge.variants.js.map +0 -1
  812. package/lib/module/modules/badge/index.js.map +0 -1
  813. package/lib/module/modules/bottom-nav/BottomNav.js.map +0 -1
  814. package/lib/module/modules/bottom-nav/BottomNav.search.js.map +0 -1
  815. package/lib/module/modules/bottom-nav/BottomNav.variants.js.map +0 -1
  816. package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js.map +0 -1
  817. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js.map +0 -1
  818. package/lib/module/modules/bottom-nav/index.js.map +0 -1
  819. package/lib/module/modules/button/Button.js.map +0 -1
  820. package/lib/module/modules/button/Button.variants.js.map +0 -1
  821. package/lib/module/modules/button/index.js.map +0 -1
  822. package/lib/module/modules/button-group/ButtonGroup.js.map +0 -1
  823. package/lib/module/modules/button-group/ButtonGroup.variants.js.map +0 -1
  824. package/lib/module/modules/button-group/index.js.map +0 -1
  825. package/lib/module/modules/card/Card.js.map +0 -1
  826. package/lib/module/modules/card/Card.variants.js.map +0 -1
  827. package/lib/module/modules/card/index.js.map +0 -1
  828. package/lib/module/modules/charts/BarList.js.map +0 -1
  829. package/lib/module/modules/charts/Charts.variants.js.map +0 -1
  830. package/lib/module/modules/charts/DonutChart.js.map +0 -1
  831. package/lib/module/modules/charts/Sparkline.js.map +0 -1
  832. package/lib/module/modules/charts/index.js.map +0 -1
  833. package/lib/module/modules/checkbox/Checkbox.js.map +0 -1
  834. package/lib/module/modules/checkbox/Checkbox.variants.js.map +0 -1
  835. package/lib/module/modules/checkbox/index.js.map +0 -1
  836. package/lib/module/modules/divider/Divider.js.map +0 -1
  837. package/lib/module/modules/divider/Divider.variants.js.map +0 -1
  838. package/lib/module/modules/divider/index.js.map +0 -1
  839. package/lib/module/modules/drawer/Drawer.js.map +0 -1
  840. package/lib/module/modules/drawer/Drawer.variants.js.map +0 -1
  841. package/lib/module/modules/drawer/index.js.map +0 -1
  842. package/lib/module/modules/empty-state/EmptyState.js.map +0 -1
  843. package/lib/module/modules/empty-state/EmptyState.variants.js.map +0 -1
  844. package/lib/module/modules/empty-state/index.js.map +0 -1
  845. package/lib/module/modules/file-upload/FileUpload.js.map +0 -1
  846. package/lib/module/modules/file-upload/FileUpload.variants.js.map +0 -1
  847. package/lib/module/modules/file-upload/index.js.map +0 -1
  848. package/lib/module/modules/filter-sheet/FilterChip.js.map +0 -1
  849. package/lib/module/modules/filter-sheet/FilterSheet.js.map +0 -1
  850. package/lib/module/modules/filter-sheet/FilterSheet.variants.js.map +0 -1
  851. package/lib/module/modules/filter-sheet/FilterSheetBody.js.map +0 -1
  852. package/lib/module/modules/filter-sheet/filterSheet.helpers.js.map +0 -1
  853. package/lib/module/modules/filter-sheet/index.js.map +0 -1
  854. package/lib/module/modules/input/Input.js.map +0 -1
  855. package/lib/module/modules/input/Input.variants.js.map +0 -1
  856. package/lib/module/modules/input/index.js.map +0 -1
  857. package/lib/module/modules/list-item/ListItem.js.map +0 -1
  858. package/lib/module/modules/list-item/ListItem.variants.js.map +0 -1
  859. package/lib/module/modules/list-item/index.js.map +0 -1
  860. package/lib/module/modules/markdown/Markdown.js.map +0 -1
  861. package/lib/module/modules/markdown/Markdown.variants.js.map +0 -1
  862. package/lib/module/modules/markdown/index.js.map +0 -1
  863. package/lib/module/modules/markdown/parseMarkdown.js.map +0 -1
  864. package/lib/module/modules/menu/Menu.js.map +0 -1
  865. package/lib/module/modules/menu/Menu.variants.js.map +0 -1
  866. package/lib/module/modules/menu/index.js.map +0 -1
  867. package/lib/module/modules/modal/Modal.js.map +0 -1
  868. package/lib/module/modules/modal/Modal.variants.js.map +0 -1
  869. package/lib/module/modules/modal/ModalPortalContext.js.map +0 -1
  870. package/lib/module/modules/modal/ModalPortalProvider.js.map +0 -1
  871. package/lib/module/modules/modal/index.js.map +0 -1
  872. package/lib/module/modules/modal/renderWebPortal.js.map +0 -1
  873. package/lib/module/modules/modal/renderWebPortal.web.js.map +0 -1
  874. package/lib/module/modules/multi-select/MultiSelect.js.map +0 -1
  875. package/lib/module/modules/multi-select/MultiSelect.variants.js.map +0 -1
  876. package/lib/module/modules/multi-select/index.js.map +0 -1
  877. package/lib/module/modules/number-input/NumberInput.js.map +0 -1
  878. package/lib/module/modules/number-input/NumberInput.variants.js.map +0 -1
  879. package/lib/module/modules/number-input/index.js.map +0 -1
  880. package/lib/module/modules/pin-input/PinInput.js.map +0 -1
  881. package/lib/module/modules/pin-input/PinInput.variants.js.map +0 -1
  882. package/lib/module/modules/pin-input/index.js.map +0 -1
  883. package/lib/module/modules/progress-bar/ProgressBar.js.map +0 -1
  884. package/lib/module/modules/progress-bar/ProgressBar.variants.js.map +0 -1
  885. package/lib/module/modules/progress-bar/index.js.map +0 -1
  886. package/lib/module/modules/radio-group/RadioGroup.js.map +0 -1
  887. package/lib/module/modules/radio-group/RadioGroup.variants.js.map +0 -1
  888. package/lib/module/modules/radio-group/index.js.map +0 -1
  889. package/lib/module/modules/reorder/Reorder.js.map +0 -1
  890. package/lib/module/modules/reorder/Reorder.variants.js.map +0 -1
  891. package/lib/module/modules/reorder/index.js.map +0 -1
  892. package/lib/module/modules/select/Select.js.map +0 -1
  893. package/lib/module/modules/select/Select.variants.js.map +0 -1
  894. package/lib/module/modules/select/index.js.map +0 -1
  895. package/lib/module/modules/skeleton/Skeleton.js.map +0 -1
  896. package/lib/module/modules/skeleton/Skeleton.variants.js.map +0 -1
  897. package/lib/module/modules/skeleton/index.js.map +0 -1
  898. package/lib/module/modules/slider/Slider.js.map +0 -1
  899. package/lib/module/modules/slider/Slider.variants.js.map +0 -1
  900. package/lib/module/modules/slider/index.js.map +0 -1
  901. package/lib/module/modules/spinner/Spinner.js.map +0 -1
  902. package/lib/module/modules/spinner/Spinner.variants.js.map +0 -1
  903. package/lib/module/modules/spinner/index.js.map +0 -1
  904. package/lib/module/modules/stat-tile/StatTile.js.map +0 -1
  905. package/lib/module/modules/stat-tile/StatTile.variants.js.map +0 -1
  906. package/lib/module/modules/stat-tile/index.js.map +0 -1
  907. package/lib/module/modules/stepper/Stepper.js.map +0 -1
  908. package/lib/module/modules/stepper/Stepper.variants.js.map +0 -1
  909. package/lib/module/modules/stepper/index.js.map +0 -1
  910. package/lib/module/modules/switch/Switch.js.map +0 -1
  911. package/lib/module/modules/switch/Switch.variants.js.map +0 -1
  912. package/lib/module/modules/switch/index.js.map +0 -1
  913. package/lib/module/modules/tabs/Tabs.js.map +0 -1
  914. package/lib/module/modules/tabs/Tabs.variants.js.map +0 -1
  915. package/lib/module/modules/tabs/index.js.map +0 -1
  916. package/lib/module/modules/textarea/Textarea.js.map +0 -1
  917. package/lib/module/modules/textarea/Textarea.variants.js.map +0 -1
  918. package/lib/module/modules/textarea/index.js.map +0 -1
  919. package/lib/module/modules/timeline/Timeline.js.map +0 -1
  920. package/lib/module/modules/timeline/Timeline.variants.js.map +0 -1
  921. package/lib/module/modules/timeline/index.js.map +0 -1
  922. package/lib/module/modules/toast/Toast.js.map +0 -1
  923. package/lib/module/modules/toast/Toast.variants.js.map +0 -1
  924. package/lib/module/modules/toast/index.js.map +0 -1
  925. package/lib/module/modules/tooltip/Tooltip.js.map +0 -1
  926. package/lib/module/modules/tooltip/Tooltip.variants.js.map +0 -1
  927. package/lib/module/modules/tooltip/index.js.map +0 -1
  928. package/lib/module/theme/index.js.map +0 -1
  929. package/lib/module/theme/platform/colorScheme.native.js.map +0 -1
  930. package/lib/module/theme/platform/elevation.native.js.map +0 -1
  931. package/lib/module/theme/platform/fonts.native.js.map +0 -1
  932. package/lib/module/theme/platform/index.js.map +0 -1
  933. package/lib/module/theme/platform/units.native.js.map +0 -1
  934. package/lib/module/theme/provider/PixelizeProvider.js.map +0 -1
  935. package/lib/module/theme/provider/colorModeStorage.js.map +0 -1
  936. package/lib/module/theme/provider/index.js.map +0 -1
  937. package/lib/module/theme/provider/useTheme.js.map +0 -1
  938. package/lib/module/theme/provider/useThemeColors.js.map +0 -1
  939. package/lib/module/theme/provider/useThemeMode.js.map +0 -1
  940. package/lib/module/theme/tokens/brands/emerald/palette.dark.js.map +0 -1
  941. package/lib/module/theme/tokens/brands/emerald/palette.light.js.map +0 -1
  942. package/lib/module/theme/tokens/brands/index.js.map +0 -1
  943. package/lib/module/theme/tokens/brands/lavender/palette.dark.js.map +0 -1
  944. package/lib/module/theme/tokens/brands/lavender/palette.light.js.map +0 -1
  945. package/lib/module/theme/tokens/brands/meadow/palette.dark.js.map +0 -1
  946. package/lib/module/theme/tokens/brands/meadow/palette.light.js.map +0 -1
  947. package/lib/module/theme/tokens/brands/radiant/palette.dark.js.map +0 -1
  948. package/lib/module/theme/tokens/brands/radiant/palette.light.js.map +0 -1
  949. package/lib/module/theme/tokens/brands/rosewood/palette.dark.js.map +0 -1
  950. package/lib/module/theme/tokens/brands/rosewood/palette.light.js.map +0 -1
  951. package/lib/module/theme/tokens/brands/skyline/palette.dark.js.map +0 -1
  952. package/lib/module/theme/tokens/brands/skyline/palette.light.js.map +0 -1
  953. package/lib/module/theme/tokens/brands/slate/palette.dark.js.map +0 -1
  954. package/lib/module/theme/tokens/brands/slate/palette.light.js.map +0 -1
  955. package/lib/module/theme/tokens/brands/storefront/palette.dark.js.map +0 -1
  956. package/lib/module/theme/tokens/brands/storefront/palette.light.js.map +0 -1
  957. package/lib/module/theme/tokens/brands/zinc/palette.dark.js.map +0 -1
  958. package/lib/module/theme/tokens/brands/zinc/palette.light.js.map +0 -1
  959. package/lib/module/theme/tokens/builders/accentText.js.map +0 -1
  960. package/lib/module/theme/tokens/builders/buildBrandTokens.js.map +0 -1
  961. package/lib/module/theme/tokens/builders/buildDarkPalette.js.map +0 -1
  962. package/lib/module/theme/tokens/builders/color.js.map +0 -1
  963. package/lib/module/theme/tokens/index.js.map +0 -1
  964. package/lib/module/theme/tokens/primitives/borderWidths.js.map +0 -1
  965. package/lib/module/theme/tokens/primitives/breakpoints.js.map +0 -1
  966. package/lib/module/theme/tokens/primitives/elevation.js.map +0 -1
  967. package/lib/module/theme/tokens/primitives/fontSizes.js.map +0 -1
  968. package/lib/module/theme/tokens/primitives/fontWeights.js.map +0 -1
  969. package/lib/module/theme/tokens/primitives/index.js.map +0 -1
  970. package/lib/module/theme/tokens/primitives/letterSpacings.js.map +0 -1
  971. package/lib/module/theme/tokens/primitives/lineHeights.js.map +0 -1
  972. package/lib/module/theme/tokens/primitives/radii.js.map +0 -1
  973. package/lib/module/theme/tokens/primitives/sizes.js.map +0 -1
  974. package/lib/module/theme/tokens/primitives/space.js.map +0 -1
  975. package/lib/module/theme/tokens/primitives/zIndices.js.map +0 -1
  976. package/lib/module/theme/tokens/roles/index.js.map +0 -1
  977. package/lib/module/theme/tokens/types.js.map +0 -1
  978. package/lib/typescript/core/a11y/index.d.ts.map +0 -1
  979. package/lib/typescript/core/icon/index.d.ts.map +0 -1
  980. package/lib/typescript/core/style/index.d.ts.map +0 -1
  981. package/lib/typescript/core/style/layoutStyle.d.ts.map +0 -1
  982. package/lib/typescript/core/style/variants.d.ts.map +0 -1
  983. package/lib/typescript/index.d.ts.map +0 -1
  984. package/lib/typescript/modules/accordion/Accordion.d.ts.map +0 -1
  985. package/lib/typescript/modules/accordion/Accordion.variants.d.ts.map +0 -1
  986. package/lib/typescript/modules/accordion/index.d.ts.map +0 -1
  987. package/lib/typescript/modules/alert-dialog/AlertDialog.d.ts.map +0 -1
  988. package/lib/typescript/modules/alert-dialog/AlertDialog.variants.d.ts.map +0 -1
  989. package/lib/typescript/modules/alert-dialog/index.d.ts.map +0 -1
  990. package/lib/typescript/modules/avatar/Avatar.d.ts.map +0 -1
  991. package/lib/typescript/modules/avatar/Avatar.variants.d.ts.map +0 -1
  992. package/lib/typescript/modules/avatar/index.d.ts.map +0 -1
  993. package/lib/typescript/modules/badge/Badge.d.ts.map +0 -1
  994. package/lib/typescript/modules/badge/Badge.variants.d.ts.map +0 -1
  995. package/lib/typescript/modules/badge/index.d.ts.map +0 -1
  996. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts.map +0 -1
  997. package/lib/typescript/modules/bottom-nav/BottomNav.search.d.ts.map +0 -1
  998. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts.map +0 -1
  999. package/lib/typescript/modules/bottom-nav/BottomNavIconWithBadge.d.ts.map +0 -1
  1000. package/lib/typescript/modules/bottom-nav/BottomNavOverflowSheet.d.ts.map +0 -1
  1001. package/lib/typescript/modules/bottom-nav/index.d.ts.map +0 -1
  1002. package/lib/typescript/modules/button/Button.d.ts.map +0 -1
  1003. package/lib/typescript/modules/button/Button.variants.d.ts.map +0 -1
  1004. package/lib/typescript/modules/button/index.d.ts.map +0 -1
  1005. package/lib/typescript/modules/button-group/ButtonGroup.d.ts.map +0 -1
  1006. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts.map +0 -1
  1007. package/lib/typescript/modules/button-group/index.d.ts.map +0 -1
  1008. package/lib/typescript/modules/card/Card.d.ts.map +0 -1
  1009. package/lib/typescript/modules/card/Card.variants.d.ts.map +0 -1
  1010. package/lib/typescript/modules/card/index.d.ts.map +0 -1
  1011. package/lib/typescript/modules/charts/BarList.d.ts.map +0 -1
  1012. package/lib/typescript/modules/charts/Charts.variants.d.ts.map +0 -1
  1013. package/lib/typescript/modules/charts/DonutChart.d.ts.map +0 -1
  1014. package/lib/typescript/modules/charts/Sparkline.d.ts.map +0 -1
  1015. package/lib/typescript/modules/charts/index.d.ts.map +0 -1
  1016. package/lib/typescript/modules/checkbox/Checkbox.d.ts.map +0 -1
  1017. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts.map +0 -1
  1018. package/lib/typescript/modules/checkbox/index.d.ts.map +0 -1
  1019. package/lib/typescript/modules/divider/Divider.d.ts.map +0 -1
  1020. package/lib/typescript/modules/divider/Divider.variants.d.ts.map +0 -1
  1021. package/lib/typescript/modules/divider/index.d.ts.map +0 -1
  1022. package/lib/typescript/modules/drawer/Drawer.d.ts.map +0 -1
  1023. package/lib/typescript/modules/drawer/Drawer.variants.d.ts.map +0 -1
  1024. package/lib/typescript/modules/drawer/index.d.ts.map +0 -1
  1025. package/lib/typescript/modules/empty-state/EmptyState.d.ts.map +0 -1
  1026. package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts.map +0 -1
  1027. package/lib/typescript/modules/empty-state/index.d.ts.map +0 -1
  1028. package/lib/typescript/modules/file-upload/FileUpload.d.ts.map +0 -1
  1029. package/lib/typescript/modules/file-upload/FileUpload.variants.d.ts.map +0 -1
  1030. package/lib/typescript/modules/file-upload/index.d.ts.map +0 -1
  1031. package/lib/typescript/modules/filter-sheet/FilterChip.d.ts.map +0 -1
  1032. package/lib/typescript/modules/filter-sheet/FilterSheet.d.ts.map +0 -1
  1033. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts.map +0 -1
  1034. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts.map +0 -1
  1035. package/lib/typescript/modules/filter-sheet/filterSheet.helpers.d.ts.map +0 -1
  1036. package/lib/typescript/modules/filter-sheet/index.d.ts.map +0 -1
  1037. package/lib/typescript/modules/input/Input.d.ts.map +0 -1
  1038. package/lib/typescript/modules/input/Input.variants.d.ts.map +0 -1
  1039. package/lib/typescript/modules/input/index.d.ts.map +0 -1
  1040. package/lib/typescript/modules/list-item/ListItem.d.ts.map +0 -1
  1041. package/lib/typescript/modules/list-item/ListItem.variants.d.ts.map +0 -1
  1042. package/lib/typescript/modules/list-item/index.d.ts.map +0 -1
  1043. package/lib/typescript/modules/markdown/Markdown.d.ts.map +0 -1
  1044. package/lib/typescript/modules/markdown/Markdown.variants.d.ts.map +0 -1
  1045. package/lib/typescript/modules/markdown/index.d.ts.map +0 -1
  1046. package/lib/typescript/modules/markdown/parseMarkdown.d.ts.map +0 -1
  1047. package/lib/typescript/modules/menu/Menu.d.ts.map +0 -1
  1048. package/lib/typescript/modules/menu/Menu.variants.d.ts.map +0 -1
  1049. package/lib/typescript/modules/menu/index.d.ts.map +0 -1
  1050. package/lib/typescript/modules/modal/Modal.d.ts.map +0 -1
  1051. package/lib/typescript/modules/modal/Modal.variants.d.ts.map +0 -1
  1052. package/lib/typescript/modules/modal/ModalPortalContext.d.ts.map +0 -1
  1053. package/lib/typescript/modules/modal/ModalPortalProvider.d.ts.map +0 -1
  1054. package/lib/typescript/modules/modal/index.d.ts.map +0 -1
  1055. package/lib/typescript/modules/modal/renderWebPortal.d.ts.map +0 -1
  1056. package/lib/typescript/modules/modal/renderWebPortal.web.d.ts.map +0 -1
  1057. package/lib/typescript/modules/multi-select/MultiSelect.d.ts.map +0 -1
  1058. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts.map +0 -1
  1059. package/lib/typescript/modules/multi-select/index.d.ts.map +0 -1
  1060. package/lib/typescript/modules/number-input/NumberInput.d.ts.map +0 -1
  1061. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts.map +0 -1
  1062. package/lib/typescript/modules/number-input/index.d.ts.map +0 -1
  1063. package/lib/typescript/modules/pin-input/PinInput.d.ts.map +0 -1
  1064. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts.map +0 -1
  1065. package/lib/typescript/modules/pin-input/index.d.ts.map +0 -1
  1066. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts.map +0 -1
  1067. package/lib/typescript/modules/progress-bar/ProgressBar.variants.d.ts.map +0 -1
  1068. package/lib/typescript/modules/progress-bar/index.d.ts.map +0 -1
  1069. package/lib/typescript/modules/radio-group/RadioGroup.d.ts.map +0 -1
  1070. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts.map +0 -1
  1071. package/lib/typescript/modules/radio-group/index.d.ts.map +0 -1
  1072. package/lib/typescript/modules/reorder/Reorder.d.ts.map +0 -1
  1073. package/lib/typescript/modules/reorder/Reorder.variants.d.ts.map +0 -1
  1074. package/lib/typescript/modules/reorder/index.d.ts.map +0 -1
  1075. package/lib/typescript/modules/select/Select.d.ts.map +0 -1
  1076. package/lib/typescript/modules/select/Select.variants.d.ts.map +0 -1
  1077. package/lib/typescript/modules/select/index.d.ts.map +0 -1
  1078. package/lib/typescript/modules/skeleton/Skeleton.d.ts.map +0 -1
  1079. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts.map +0 -1
  1080. package/lib/typescript/modules/skeleton/index.d.ts.map +0 -1
  1081. package/lib/typescript/modules/slider/Slider.d.ts.map +0 -1
  1082. package/lib/typescript/modules/slider/Slider.variants.d.ts.map +0 -1
  1083. package/lib/typescript/modules/slider/index.d.ts.map +0 -1
  1084. package/lib/typescript/modules/spinner/Spinner.d.ts.map +0 -1
  1085. package/lib/typescript/modules/spinner/Spinner.variants.d.ts.map +0 -1
  1086. package/lib/typescript/modules/spinner/index.d.ts.map +0 -1
  1087. package/lib/typescript/modules/stat-tile/StatTile.d.ts.map +0 -1
  1088. package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts.map +0 -1
  1089. package/lib/typescript/modules/stat-tile/index.d.ts.map +0 -1
  1090. package/lib/typescript/modules/stepper/Stepper.d.ts.map +0 -1
  1091. package/lib/typescript/modules/stepper/Stepper.variants.d.ts.map +0 -1
  1092. package/lib/typescript/modules/stepper/index.d.ts.map +0 -1
  1093. package/lib/typescript/modules/switch/Switch.d.ts.map +0 -1
  1094. package/lib/typescript/modules/switch/Switch.variants.d.ts.map +0 -1
  1095. package/lib/typescript/modules/switch/index.d.ts.map +0 -1
  1096. package/lib/typescript/modules/tabs/Tabs.d.ts.map +0 -1
  1097. package/lib/typescript/modules/tabs/Tabs.variants.d.ts.map +0 -1
  1098. package/lib/typescript/modules/tabs/index.d.ts.map +0 -1
  1099. package/lib/typescript/modules/textarea/Textarea.d.ts.map +0 -1
  1100. package/lib/typescript/modules/textarea/Textarea.variants.d.ts.map +0 -1
  1101. package/lib/typescript/modules/textarea/index.d.ts.map +0 -1
  1102. package/lib/typescript/modules/timeline/Timeline.d.ts.map +0 -1
  1103. package/lib/typescript/modules/timeline/Timeline.variants.d.ts.map +0 -1
  1104. package/lib/typescript/modules/timeline/index.d.ts.map +0 -1
  1105. package/lib/typescript/modules/toast/Toast.d.ts.map +0 -1
  1106. package/lib/typescript/modules/toast/Toast.variants.d.ts.map +0 -1
  1107. package/lib/typescript/modules/toast/index.d.ts.map +0 -1
  1108. package/lib/typescript/modules/tooltip/Tooltip.d.ts.map +0 -1
  1109. package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts.map +0 -1
  1110. package/lib/typescript/modules/tooltip/index.d.ts.map +0 -1
  1111. package/lib/typescript/theme/index.d.ts.map +0 -1
  1112. package/lib/typescript/theme/platform/colorScheme.native.d.ts.map +0 -1
  1113. package/lib/typescript/theme/platform/elevation.native.d.ts.map +0 -1
  1114. package/lib/typescript/theme/platform/fonts.native.d.ts.map +0 -1
  1115. package/lib/typescript/theme/platform/index.d.ts.map +0 -1
  1116. package/lib/typescript/theme/platform/units.native.d.ts.map +0 -1
  1117. package/lib/typescript/theme/provider/PixelizeProvider.d.ts.map +0 -1
  1118. package/lib/typescript/theme/provider/colorModeStorage.d.ts.map +0 -1
  1119. package/lib/typescript/theme/provider/index.d.ts.map +0 -1
  1120. package/lib/typescript/theme/provider/useTheme.d.ts.map +0 -1
  1121. package/lib/typescript/theme/provider/useThemeColors.d.ts.map +0 -1
  1122. package/lib/typescript/theme/provider/useThemeMode.d.ts.map +0 -1
  1123. package/lib/typescript/theme/tokens/brands/emerald/palette.dark.d.ts.map +0 -1
  1124. package/lib/typescript/theme/tokens/brands/emerald/palette.light.d.ts.map +0 -1
  1125. package/lib/typescript/theme/tokens/brands/index.d.ts.map +0 -1
  1126. package/lib/typescript/theme/tokens/brands/lavender/palette.dark.d.ts.map +0 -1
  1127. package/lib/typescript/theme/tokens/brands/lavender/palette.light.d.ts.map +0 -1
  1128. package/lib/typescript/theme/tokens/brands/meadow/palette.dark.d.ts.map +0 -1
  1129. package/lib/typescript/theme/tokens/brands/meadow/palette.light.d.ts.map +0 -1
  1130. package/lib/typescript/theme/tokens/brands/radiant/palette.dark.d.ts.map +0 -1
  1131. package/lib/typescript/theme/tokens/brands/radiant/palette.light.d.ts.map +0 -1
  1132. package/lib/typescript/theme/tokens/brands/rosewood/palette.dark.d.ts.map +0 -1
  1133. package/lib/typescript/theme/tokens/brands/rosewood/palette.light.d.ts.map +0 -1
  1134. package/lib/typescript/theme/tokens/brands/skyline/palette.dark.d.ts.map +0 -1
  1135. package/lib/typescript/theme/tokens/brands/skyline/palette.light.d.ts.map +0 -1
  1136. package/lib/typescript/theme/tokens/brands/slate/palette.dark.d.ts.map +0 -1
  1137. package/lib/typescript/theme/tokens/brands/slate/palette.light.d.ts.map +0 -1
  1138. package/lib/typescript/theme/tokens/brands/storefront/palette.dark.d.ts.map +0 -1
  1139. package/lib/typescript/theme/tokens/brands/storefront/palette.light.d.ts.map +0 -1
  1140. package/lib/typescript/theme/tokens/brands/zinc/palette.dark.d.ts.map +0 -1
  1141. package/lib/typescript/theme/tokens/brands/zinc/palette.light.d.ts.map +0 -1
  1142. package/lib/typescript/theme/tokens/builders/accentText.d.ts.map +0 -1
  1143. package/lib/typescript/theme/tokens/builders/buildBrandTokens.d.ts.map +0 -1
  1144. package/lib/typescript/theme/tokens/builders/buildDarkPalette.d.ts.map +0 -1
  1145. package/lib/typescript/theme/tokens/builders/color.d.ts.map +0 -1
  1146. package/lib/typescript/theme/tokens/index.d.ts.map +0 -1
  1147. package/lib/typescript/theme/tokens/primitives/borderWidths.d.ts.map +0 -1
  1148. package/lib/typescript/theme/tokens/primitives/breakpoints.d.ts.map +0 -1
  1149. package/lib/typescript/theme/tokens/primitives/elevation.d.ts.map +0 -1
  1150. package/lib/typescript/theme/tokens/primitives/fontSizes.d.ts.map +0 -1
  1151. package/lib/typescript/theme/tokens/primitives/fontWeights.d.ts.map +0 -1
  1152. package/lib/typescript/theme/tokens/primitives/index.d.ts.map +0 -1
  1153. package/lib/typescript/theme/tokens/primitives/letterSpacings.d.ts.map +0 -1
  1154. package/lib/typescript/theme/tokens/primitives/lineHeights.d.ts.map +0 -1
  1155. package/lib/typescript/theme/tokens/primitives/radii.d.ts.map +0 -1
  1156. package/lib/typescript/theme/tokens/primitives/sizes.d.ts.map +0 -1
  1157. package/lib/typescript/theme/tokens/primitives/space.d.ts.map +0 -1
  1158. package/lib/typescript/theme/tokens/primitives/zIndices.d.ts.map +0 -1
  1159. package/lib/typescript/theme/tokens/roles/index.d.ts.map +0 -1
  1160. package/lib/typescript/theme/tokens/types.d.ts.map +0 -1
@@ -27,8 +27,48 @@ export const CLOSE_BUTTON_SIZE = 24;
27
27
  export const CLOSE_ICON_SIZE = 16;
28
28
  export const CLOSE_HIT_SLOP = slopFor(CLOSE_BUTTON_SIZE);
29
29
 
30
- /** `duration?: number` on `ToastOptions` defaults to this when omitted. */
30
+ /** `duration` on `ToastOptions` defaults to this when omitted — except for `danger` (see below). */
31
31
  export const DEFAULT_TOAST_DURATION = 3000;
32
+ export const TOAST_IOS_HOME_INDICATOR_INSET = 20;
33
+ export function resolveToastBottomInset(basePadding, platformOS) {
34
+ return platformOS === "ios" ? basePadding + TOAST_IOS_HOME_INDICATOR_INSET : basePadding;
35
+ }
36
+
37
+ /**
38
+ * How long a toast stays up. `"persistent"` = until the user dismisses it (or a later `show()`
39
+ * replaces it) — spelled out rather than encoded as a number, because a bare `0` at a call site
40
+ * reads as "no delay", not "forever".
41
+ */
42
+
43
+ /** `setTimeout`'s delay is a 32-bit signed int; a larger value wraps and fires almost immediately. */
44
+ export const MAX_TIMEOUT_MS = 2_147_483_647;
45
+
46
+ /**
47
+ * WCAG 2.2.1 (Timing Adjustable) — resolves a requested duration into a real `setTimeout` delay, or
48
+ * `null` for "never auto-dismiss". `Toast.tsx` branches on `null` BEFORE arming the timer; nothing
49
+ * else in the module decides how long a toast lives.
50
+ *
51
+ * Three rules, in order:
52
+ *
53
+ * 1. **`"persistent"`, and every unusable number, mean forever.** `0`, negatives and `NaN` used to
54
+ * slip past a `?? DEFAULT_TOAST_DURATION` fallback (only `null`/`undefined` are nullish) and
55
+ * became `setTimeout(hide, 0)`; `Infinity` overflowed the 32-bit delay above and fired in ~1ms.
56
+ * Both looked like a persistent mode and were an instant-dismiss mode. Failing towards "stays
57
+ * up" is the safe direction: the card always has a close button.
58
+ * 2. **A running screen reader suppresses auto-dismiss entirely.** 3s is not enough to finish
59
+ * speaking a message, and there is no way to replay a toast that has gone.
60
+ * 3. **`danger` with no explicit duration is persistent.** An error the user never finished reading
61
+ * is the exact failure 2.2.1 exists to prevent, and this catalogue has no toast history to
62
+ * recover it from. An explicit `duration` is still honoured — that is a deliberate caller
63
+ * decision, not the default falling on an error message.
64
+ */
65
+ export function resolveAutoDismissDelay(duration, tone, screenReaderEnabled) {
66
+ if (duration === "persistent") return null;
67
+ if (screenReaderEnabled) return null;
68
+ if (duration === undefined) return tone === "danger" ? null : DEFAULT_TOAST_DURATION;
69
+ if (!Number.isFinite(duration) || duration <= 0 || duration > MAX_TIMEOUT_MS) return null;
70
+ return duration;
71
+ }
32
72
  /**
33
73
  * Maps `tone` onto the theme's role colours. The whole reason the prop is a closed union and not
34
74
  * `color?: string`: every colour a Toast can show is one of these role lookups, so it can never be
@@ -72,6 +112,7 @@ export const toastCardStructure = createThemedVariants(theme => ({
72
112
  alignItems: "center",
73
113
  columnGap: theme.space[3],
74
114
  borderRadius: theme.radii.md,
115
+ borderCurve: "continuous",
75
116
  paddingVertical: theme.space[3],
76
117
  paddingRight: theme.space[3],
77
118
  overflow: "hidden"
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Tracks whether a screen reader is running, so `ToastProvider` can stop auto-dismissing a message
5
+ * the reader has not finished speaking (WCAG 2.2.1 — see `resolveAutoDismissDelay`).
6
+ *
7
+ * Shaped exactly like `core/a11y`'s `useReducedMotion`: ONE module-level store read through
8
+ * `useSyncExternalStore`, so the async probe and the native `screenReaderChanged` listener are
9
+ * opened by the first subscriber and closed when the last one leaves, however many providers mount.
10
+ * It lives here rather than in `core/a11y` only because that folder is owned by another change in
11
+ * flight — it is a `core/a11y` concern and should move there (`MODULE.md` → Known gaps).
12
+ *
13
+ * **It seeds `false`, unlike `useReducedMotion`'s pessimistic `true`.** The two hooks are read at
14
+ * different moments: a reduce-motion gate runs in the same commit as the mount that opens the probe,
15
+ * so it must assume the worst, whereas this is read by `show()` — a user-initiated event, long after
16
+ * `ToastProvider` mounted at the app root and the probe answered. Seeding `true` would instead make
17
+ * every toast in the first frames of an app run persistent for a sighted user, which is the more
18
+ * visible failure and the less likely one to be true.
19
+ */
20
+
21
+ import { useSyncExternalStore } from "react";
22
+ import { AccessibilityInfo } from "react-native";
23
+ let lastKnownScreenReader = false;
24
+ let nativeSubscription = null;
25
+ /** Bumped by the test reset so a probe still in flight from a previous suite cannot land late. */
26
+ let generation = 0;
27
+ const listeners = new Set();
28
+ function publish(value) {
29
+ if (lastKnownScreenReader === value) return;
30
+ lastKnownScreenReader = value;
31
+ for (const listener of listeners) listener();
32
+ }
33
+ function openNativeSubscription() {
34
+ const opened = generation;
35
+ const apply = value => {
36
+ if (opened === generation) publish(value);
37
+ };
38
+ void AccessibilityInfo.isScreenReaderEnabled().then(apply);
39
+ nativeSubscription = AccessibilityInfo.addEventListener("screenReaderChanged", apply);
40
+ }
41
+ function subscribe(onStoreChange) {
42
+ listeners.add(onStoreChange);
43
+ if (listeners.size === 1) openNativeSubscription();
44
+ return () => {
45
+ listeners.delete(onStoreChange);
46
+ if (listeners.size === 0) {
47
+ nativeSubscription?.remove();
48
+ nativeSubscription = null;
49
+ }
50
+ };
51
+ }
52
+ function getSnapshot() {
53
+ return lastKnownScreenReader;
54
+ }
55
+
56
+ /** Test-only: drops the process cache and re-probes, so a suite can drive both answers. */
57
+ export function resetScreenReaderCache() {
58
+ generation += 1;
59
+ lastKnownScreenReader = false;
60
+ nativeSubscription?.remove();
61
+ nativeSubscription = null;
62
+ if (listeners.size > 0) openNativeSubscription();
63
+ }
64
+
65
+ /** Live OS screen-reader state (VoiceOver / TalkBack), one probe and one listener per process. */
66
+ export function useScreenReaderEnabled() {
67
+ return useSyncExternalStore(subscribe, getSnapshot);
68
+ }
69
+ //# sourceMappingURL=toastScreenReader.js.map
@@ -1,25 +1,28 @@
1
- # tooltip/ — a long-press tip that also reaches screen readers without the gesture
1
+ # tooltip/ — a hover/focus/long-press tip that also reaches screen readers without the gesture
2
2
 
3
3
  `Tooltip` wraps a single trigger element (via `React.cloneElement`, never `{...rest}`) and reveals
4
- a short themed bubble on long-press. It has no visual node of its own for an app to place — the
5
- trigger keeps its own layout — so, unlike the other modules, it exposes no `style` prop.
4
+ a short themed bubble on hover (pointer), focus (keyboard) or long-press (touch). It has no visual
5
+ node of its own for an app to place — the trigger keeps its own layout — so, unlike the other
6
+ modules, it exposes no `style` prop.
6
7
 
7
8
  ## Files
8
9
 
9
10
  | File | Role |
10
11
  |------|------|
11
- | `Tooltip.tsx` | The component. `cloneElement` composition, show/hide timing, fade-in, a11y hint wiring. |
12
+ | `Tooltip.tsx` | The component. `cloneElement` composition, hover/focus/press wiring, show/hide timing, fade-in, a11y hint wiring. |
12
13
  | `Tooltip.variants.ts` | Pure resolvers (`mergeAccessibilityHint`, `TOOLTIP_TIMING`) + the themed structural resolver `tooltipBubbleStructure`. No React, no lucide. |
13
14
  | `index.ts` | Public surface: `Tooltip`, `TooltipProps`, `TooltipTriggerProps`, `TooltipPlacement`. |
14
15
  | `__tests__/Tooltip.test.ts` | Pure: WCAG contrast (all brands × modes) + the hint-merge contract + timing sanity. |
15
- | `__tests__/Tooltip.render.test.tsx` | Render: reveal/hide, auto-hide fallback, hint merge, placement. |
16
+ | `__tests__/Tooltip.render.test.tsx` | Render: hover/focus/long-press reveal + hide, handler chaining, auto-hide fallback, hint merge, placement. |
17
+ | `__tests__/Tooltip.trigger.render.test.tsx` | Render, with `Button`/`Fab` as the trigger — a raw `Pressable` accepts every injected prop by construction, so only this file can catch a library trigger dropping them. |
18
+ | `__tests__/Tooltip.escape.dom.test.tsx` | The WEB surface, under `jest.web.config.js` (jsdom + real react-native-web): Escape dismissal without moving focus, and the `aria-describedby`→bubble-`id` link. Neither exists in the default Jest project, which resolves the native no-ops. |
16
19
 
17
20
  ## Props
18
21
 
19
22
  | Prop | Type | Default | Notes |
20
23
  |------|------|---------|-------|
21
24
  | `label` | `string` | — | The tip's text. Also what gets merged into the trigger's `accessibilityHint`. |
22
- | `children` | `ReactElement<TooltipTriggerProps>` | — | A single element accepting `onLongPress`/`onPressOut`/`accessibilityHint` (e.g. a `Pressable`). |
25
+ | `children` | `ReactElement<TooltipTriggerProps>` | — | A single element accepting `onLongPress`/`onPressOut`/`onHoverIn`/`onHoverOut`/`onFocus`/`onBlur`/`accessibilityHint`/`aria-describedby` `Button`, `Fab`, or a raw `Pressable`. A `Text` is **not** enough: react-native-web's `Text` handles only `onPress`, so every injected handler is dropped and the tip never opens on web. |
23
26
  | `placement` | `top \| bottom` | `bottom` | Which side of the trigger the bubble opens toward. |
24
27
  | `testID` | `string` | — | On the host `View`; also seeds `${testID}-bubble` on the visible bubble. |
25
28
 
@@ -28,16 +31,32 @@ reads `bg.raised` / `fg.default`, so there is nothing appearance-wise for a call
28
31
 
29
32
  ## Accessibility contract (WCAG)
30
33
 
31
- - **1.3.1 / no gesture-only content**the whole point of this module: `accessibilityHint` on
32
- the trigger is set to `mergeAccessibilityHint(existingHint, label)`, so a screen-reader user gets
33
- the tip's content read out with the trigger itself, with no long-press required. The existing
34
- hint (if the trigger already had one) is preserved, never overwritten.
34
+ - **1.4.13 Content on Hover or Focus 3 of 3.** *Persistent* (no auto-dismiss on the hover/focus
35
+ path only long-press arms `autoHideMs`). *Dismissible* (Escape hides the tip via
36
+ `useDismissOnEscape` from `core/a11y/keyboard`, without moving focus; web-only by construction
37
+ the native file is a no-op, and native has no hover/keyboard-focus tip to dismiss). *Hoverable* ✅
38
+ — the bubble accepts pointer events and carries its own `onPointerEnter`/`onPointerLeave` (the
39
+ same primitive `Toast`'s card uses for a non-`Pressable` hover target); a hover-out on the trigger
40
+ doesn't hide immediately, it arms `TOOLTIP_TIMING.hoverOutGraceMs` (200ms) so the pointer has time
41
+ to cross the `theme.space[1]` gap onto the bubble, which cancels the pending hide on entry and
42
+ re-arms its own grace window on exit.
43
+ - **1.3.1 / no gesture-only content** — the whole point of this module. On **native** the trigger's
44
+ `accessibilityHint` is set to `mergeAccessibilityHint(existingHint, label)`, so a screen-reader
45
+ user gets the tip's content with the trigger itself and no long-press. The existing hint is
46
+ preserved, never overwritten. On **web** that prop reaches nothing (react-native-web has no
47
+ `accessibilityHint` at all), so the bubble carries an `id` (from `useId`) and the trigger points
48
+ `aria-describedby` at it for exactly as long as the bubble is mounted.
35
49
  - **1.4.3** — the bubble text (`fg.default` on `bg.raised`) is measured ≥ 4.5:1 for every brand ×
36
50
  mode. No non-text/interactive boundary to measure — the bubble has no border.
37
- - **The bubble is hidden from the accessibility tree** (`accessibilityElementsHidden` +
38
- `importantForAccessibility="no-hide-descendants"`) once visible its content already reached
39
- assistive tech via the merged hint above, so exposing it too would double-announce the same
40
- text (the same pattern as Button hiding its spinner from AT).
51
+ - **The bubble is hidden from the accessibility tree** with `aria-hidden` — the one spelling that
52
+ works natively (RN maps it to `accessibilityElementsHidden` +
53
+ `importantForAccessibility="no-hide-descendants"`) and on web, where those two are discarded and
54
+ left the bubble exposed while the hint reached nothing. Being `aria-hidden` does not silence the
55
+ description: an `aria-describedby` target is read through the reference even when hidden, so the
56
+ text is announced with the trigger instead of a second time as its own node.
57
+ - **2.2.1 Timing Adjustable — not engaged on the hover/focus path.** `show(false)` never arms a
58
+ timer, so a pointer/keyboard tip has no time limit at all. The 2.5s `autoHideMs` is armed only by
59
+ `onLongPress` — see "Known gaps".
41
60
  - **2.3.3** — the fade-in is skipped (`duration: 0`) when `useReducedMotion()` is true; the bubble
42
61
  still appears immediately, so reduced motion never means "no tip."
43
62
  - **Touch target** — Tooltip renders no interactive control of its own; the trigger child owns its
@@ -55,11 +74,18 @@ reads `bg.raised` / `fg.default`, so there is nothing appearance-wise for a call
55
74
 
56
75
  ## Design decisions specific to this module
57
76
 
58
- - **`onLongPress`/`onPressOut` chain, `accessibilityHint` merges.** The two gesture callbacks call
59
- the child's own handler first (if any) before doing their job, so Tooltip never silently breaks
60
- a trigger that already used them. `accessibilityHint` is different: it is a single string, not a
61
- callback, so "never clobber" means composing the two strings via `mergeAccessibilityHint`, not
62
- chaining.
77
+ - **Six chained callbacks, one merged string.** `onLongPress`/`onPressOut`/`onHoverIn`/`onHoverOut`/
78
+ `onFocus`/`onBlur` each call the child's own handler first (if any) before doing their job, so
79
+ Tooltip never silently breaks a trigger that already used them. `accessibilityHint` is different:
80
+ it is a single string, not a callback, so "never clobber" means composing the two strings via
81
+ `mergeAccessibilityHint`, not chaining.
82
+ - **Hover/focus are injected on every platform, not behind `Platform.OS === "web"`.** `Pressable`
83
+ accepts all four props everywhere and only react-native-web (and desktop RN) emits them, so a
84
+ platform branch would add a code path without adding behaviour.
85
+ - **Only the long-press path arms `autoHideMs`.** A pointer/keyboard tip is closed by the matching
86
+ hover-out/blur; auto-dismissing it under a resting pointer would fail WCAG 1.4.13's *persistent*.
87
+ - **Press-out does not hide a hovered tip.** A click on a hovered trigger fires `onPressOut` too;
88
+ hiding there would kill the tip with the pointer still on the trigger and nothing to bring it back.
63
89
  - **No measurement library (v1).** The bubble anchors to the trigger's **left edge** with a fixed
64
90
  `theme.space[1]` gap above/below (`left: 0`, `top`/`bottom: 100%`), rather than centering under
65
91
  the trigger's actual measured width. This is the sanctioned v1 simplification; it can read
@@ -67,20 +93,48 @@ reads `bg.raised` / `fg.default`, so there is nothing appearance-wise for a call
67
93
  place to fix that, not a prop added here.
68
94
  - **`sizes["3xs"]`** (the smallest step of the shared `sizes` primitive, 224dp) caps the bubble's
69
95
  width instead of a newly-invented magic number.
70
- - **Auto-hide fallback** (`TOOLTIP_TIMING.autoHideMs`, 2.5s) — guards against the tip staying open
71
- forever if `onPressOut` never fires (a cancelled gesture, or assistive tech invoking
96
+ - **Auto-hide fallback** (`TOOLTIP_TIMING.autoHideMs`, 2.5s) — guards against a long-press tip
97
+ staying open forever if `onPressOut` never fires (a cancelled gesture, or assistive tech invoking
72
98
  `onLongPress` directly without a matching press-out).
99
+ - **The bubble's own hover pair uses `onPointerEnter`/`onPointerLeave`, not `Pressable`.** Same
100
+ reason as `Toast`'s card: turning the bubble into a touch responder would buy nothing and could
101
+ compete for gestures with whatever it's overlapping. A single `hideTimer` ref is shared between
102
+ the hover-out grace delay and the long-press `autoHideMs` fallback — safe because `show`/`hide`
103
+ always clear whichever one is pending before arming the other, so the two paths never collide.
73
104
 
74
105
  ## Known gaps
75
106
 
76
- - **Requires a trigger that forwards `onLongPress`/`onPressOut`/`accessibilityHint`.** A library
77
- component with a closed prop contract that doesn't expose those props (e.g. this library's own
78
- `Button` today) won't actually receive the gesture or the hint merge `cloneElement` sets the
79
- props on the element, but a component that destructures its own explicit prop list and ignores
80
- unknown ones will simply drop them. Works today with a raw RN `Pressable`/`TouchableOpacity`, or
81
- any future library component that adds these to its explicit prop list.
107
+ - **Requires a trigger that declares the injected props.** `cloneElement` sets them on the element,
108
+ but the repo's `{...rest}` ban means a component only receives what its own prop list names so
109
+ a trigger that doesn't declare them drops the gesture, the hover/focus reveal and the hint merge
110
+ with no error. `Button` and `Fab` declare all seven (each chaining Tooltip's handler after its own
111
+ press/focus ring); a raw RN `Pressable`/`TouchableOpacity` accepts them by construction. **Every
112
+ other module still drops them** `Chip`, `CopyButton`, `ListItem`, `Switch`, `Checkbox`, `Select`
113
+ and the rest are not usable as triggers yet. **A plain `Text` is a trap on web** (react-native-web's
114
+ `Text` handles only `onPress`) — this is the bug the example app hit.
115
+ - **`Menu` and `Tooltip` cannot nest either way.** `Menu` clones only `onPress` onto its trigger, and
116
+ `TooltipProps` has no `onPress`, so a Tooltip-wrapped Menu trigger never opens the menu.
117
+ - **2.2.1 on the long-press path** — `TOOLTIP_TIMING.autoHideMs` (2.5s) is a content-set time limit
118
+ with no turn-off/adjust/extend, and no WCAG exception covers it. It exists as a stuck-tip guard for
119
+ when `onPressOut` never fires (cancelled gesture, or AT invoking `onLongPress` directly), and in
120
+ normal use press-out dismisses the tip first — but that does not discharge the SC. Making it
121
+ adjustable means a new public prop, so it is recorded here rather than changed unilaterally.
122
+ - **Escape is shared with any enclosing overlay.** `useDismissOnEscape` listens on `document` in the
123
+ capture phase, so one Escape pressed over a tip inside a Drawer/Menu dismisses both. Fixing that
124
+ needs an opt-out in `core/a11y/keyboard`, not in this module.
125
+ - **A keyboard Enter/Space on a focused trigger dismisses the tip** (press-out hides when not
126
+ hovered), and only blur-and-refocus brings it back. Judged user-initiated dismissal rather than a
127
+ *persistent* violation — the tip is not disappearing on its own.
82
128
  - No collision/viewport-edge detection — a bubble near a screen edge is not repositioned inward.
83
129
 
84
130
  ## Performance
85
131
 
86
- Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). `clearHideTimer`/`hide`/`show` are `useCallback`'d, and the `onLongPress`/`onPressOut` handlers `cloneElement` injects into the consumer-supplied `children` trigger are extracted to `handleLongPress`/`handlePressOut` (`useCallback`) instead of inline lambdas — same idiom `Menu.tsx` uses for its own trigger, since a fresh closure there would defeat a memoized trigger (e.g. this library's own `Button`).
132
+ Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). `clearHideTimer`/`hide`/`show`/`scheduleHide` and the bubble's own `handleBubbleHoverIn`/`handleBubbleHoverOut` are all `useCallback`'d, and all six handlers `cloneElement` injects into the consumer-supplied `children` trigger are extracted to `handleLongPress`/`handlePressOut`/`handleHoverIn`/`handleHoverOut`/`handleFocus`/`handleBlur` (`useCallback`) instead of inline lambdas — same idiom `Menu.tsx` uses for its own trigger, since a fresh closure there would defeat a memoized trigger (e.g. this library's own `Button`).
133
+
134
+ ## Modernization (v1.0.7)
135
+
136
+ - Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
137
+ - List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
138
+ - `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
139
+
140
+ Button trigger focus ring is native `outline*` on the pressable (no sibling focus view).
@@ -1,22 +1,40 @@
1
1
  "use strict";
2
2
 
3
3
  /**
4
- * Tooltip — wraps a single trigger element and reveals a short themed tip on long-press, without
5
- * requiring the trigger to know anything about it. No `style` prop: unlike the other modules,
6
- * Tooltip renders no sized node of its own for an app to place — the trigger child keeps whatever
7
- * layout it already has, and the wrapping host below exists only to anchor the bubble.
4
+ * Tooltip — wraps a single trigger element and reveals a short themed tip on hover (pointer),
5
+ * focus (keyboard) or long-press (touch), without requiring the trigger to know anything about it.
6
+ * No `style` prop: unlike the other modules, Tooltip renders no sized node of its own for an app to
7
+ * place — the trigger child keeps whatever layout it already has, and the wrapping host below
8
+ * exists only to anchor the bubble.
8
9
  *
9
- * Composition is `React.cloneElement` on the single child, never `{...rest}`: `onLongPress` and
10
- * `onPressOut` are injected (chaining any handler the child already defined, so Tooltip never
11
- * silently breaks a trigger that already used them), and `accessibilityHint` is MERGED via
12
- * `mergeAccessibilityHint` — the one prop that must never be clobbered, since it is how a
13
- * screen-reader user gets the tip's content without performing the gesture at all.
10
+ * Composition is `React.cloneElement` on the single child, never `{...rest}`: `onLongPress`,
11
+ * `onPressOut`, `onHoverIn`, `onHoverOut`, `onFocus` and `onBlur` are injected (each chaining any
12
+ * handler the child already defined, so Tooltip never silently breaks a trigger that already used
13
+ * them), and `accessibilityHint` is MERGED via `mergeAccessibilityHint` — the one prop that must
14
+ * never be clobbered, since it is how a screen-reader user gets the tip's content without
15
+ * performing the gesture at all.
16
+ *
17
+ * That hint reaches NOTHING on web — react-native-web has no `accessibilityHint` at all — so the
18
+ * bubble additionally carries an `id` and the trigger points `aria-describedby` at it while the tip
19
+ * is mounted. The bubble stays `aria-hidden` in both worlds: an `aria-describedby` target is read
20
+ * through the reference even when hidden, so this describes the trigger once instead of twice.
21
+ *
22
+ * The hover/focus pair is injected on every platform rather than behind a `Platform.OS === "web"`
23
+ * branch: `Pressable` accepts all four props everywhere, and only react-native-web actually emits
24
+ * them, so a branch would buy nothing but a cast.
25
+ *
26
+ * The bubble's reveal is the shared `useEnterExit` preset (`core/motion`): fade + a short settle,
27
+ * kept mounted by a timer rather than an animation callback, so an interrupted fade-out can never
28
+ * strand the bubble in the tree.
14
29
  */
15
30
 
16
- import { cloneElement, memo, useCallback, useEffect, useRef, useState } from "react";
31
+ import { cloneElement, memo, useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
17
32
  import { Animated, StyleSheet, Text, View } from "react-native";
18
- import { useReducedMotion } from "../../core/a11y/index.js";
19
- import { useTheme } from "../../theme/index.js";
33
+ import { useDismissOnEscape } from "../../core/a11y/keyboard";
34
+ import { useEnterExit, useMotion } from "../../core/motion/index.js";
35
+ import { elevation, floatingBackground, floatingSurfaceStyle, highlight } from "../../theme/platform/index.js";
36
+ import { elevation as elevationTokens } from "../../theme/tokens/primitives/index.js";
37
+ import { useTheme } from "../../theme/hooks.js";
20
38
  import { mergeAccessibilityHint, TOOLTIP_TIMING, tooltipBubbleStructure } from "./Tooltip.variants.js";
21
39
 
22
40
  /** The subset of props Tooltip reads from / injects into its trigger child. */
@@ -28,10 +46,16 @@ export const Tooltip = /*#__PURE__*/memo(function Tooltip({
28
46
  testID
29
47
  }) {
30
48
  const theme = useTheme();
31
- const reducedMotion = useReducedMotion();
49
+ const motion = useMotion();
32
50
  const [visible, setVisible] = useState(false);
33
- const opacity = useRef(new Animated.Value(0)).current;
34
51
  const hideTimer = useRef(null);
52
+ const hovered = useRef(false);
53
+ const bubbleId = useId();
54
+
55
+ // A bubble above the trigger should settle upward, one below it downward — `useEnterExit` enters
56
+ // from `-offset`, so the sign flips with placement.
57
+ const offsetY = placement === "top" ? -motion.transform.offsetY : motion.transform.offsetY;
58
+ const bubble = useEnterExit(visible, offsetY);
35
59
  const clearHideTimer = useCallback(() => {
36
60
  if (hideTimer.current !== null) {
37
61
  clearTimeout(hideTimer.current);
@@ -42,63 +66,121 @@ export const Tooltip = /*#__PURE__*/memo(function Tooltip({
42
66
  clearHideTimer();
43
67
  setVisible(false);
44
68
  }, [clearHideTimer]);
45
- const show = useCallback(() => {
69
+
70
+ // WCAG 1.4.13 hoverable: a hover-out doesn't hide immediately — it gives the pointer
71
+ // `hoverOutGraceMs` to cross the gap onto the bubble itself. Reuses `hideTimer`/`hide`: this and
72
+ // the long-press `autoHideMs` fallback below never overlap, since `show`/`hide` always clear
73
+ // whichever one is pending before arming the other.
74
+ const scheduleHide = useCallback(() => {
75
+ clearHideTimer();
76
+ hideTimer.current = setTimeout(hide, TOOLTIP_TIMING.hoverOutGraceMs);
77
+ }, [clearHideTimer, hide]);
78
+
79
+ // `autoHide` is the gesture path only: a pointer or keyboard tip must stay up as long as the
80
+ // trigger is hovered/focused (WCAG 1.4.13), and hover-out/blur are reliable enough not to need
81
+ // the fallback.
82
+ const show = useCallback(autoHide => {
46
83
  clearHideTimer();
47
84
  setVisible(true);
48
- opacity.setValue(reducedMotion ? 1 : 0);
49
- Animated.timing(opacity, {
50
- toValue: 1,
51
- duration: reducedMotion ? 0 : TOOLTIP_TIMING.fadeInMs,
52
- useNativeDriver: true
53
- }).start();
54
85
  // Fallback dismiss: guarantees the tip can't get stuck open if `onPressOut` never fires (e.g.
55
86
  // the gesture is cancelled by a scroll, or assistive tech triggers `onLongPress` directly).
56
- hideTimer.current = setTimeout(hide, TOOLTIP_TIMING.autoHideMs);
57
- }, [clearHideTimer, hide, opacity, reducedMotion]);
87
+ if (autoHide) hideTimer.current = setTimeout(hide, TOOLTIP_TIMING.autoHideMs);
88
+ }, [clearHideTimer, hide]);
58
89
  useEffect(() => clearHideTimer, [clearHideTimer]);
59
90
 
91
+ // WCAG 1.4.13 dismissible: Escape hides the tip without moving focus, so a keyboard user can
92
+ // uncover what the bubble overlaps. Web-only by construction — the native file is a no-op.
93
+ useDismissOnEscape(visible, hide);
94
+
60
95
  // Passed to `children` — a consumer-supplied CHILD component (typically this library's own
61
96
  // Pressable/Button) — via cloneElement, so it is memoized like any other child-bound callback
62
97
  // (same idiom `Menu.tsx` uses for its own trigger).
63
98
  const handleLongPress = useCallback(event => {
64
99
  children.props.onLongPress?.(event);
65
- show();
100
+ show(true);
66
101
  }, [children, show]);
67
102
  const handlePressOut = useCallback(event => {
68
103
  children.props.onPressOut?.(event);
104
+ // A click on a hovered trigger fires press-out too; hiding there would kill the tip while the
105
+ // pointer is still on the trigger, and nothing would bring it back without leaving first.
106
+ if (!hovered.current) hide();
107
+ }, [children, hide]);
108
+ const handleHoverIn = useCallback(event => {
109
+ children.props.onHoverIn?.(event);
110
+ hovered.current = true;
111
+ show(false);
112
+ }, [children, show]);
113
+ const handleHoverOut = useCallback(event => {
114
+ children.props.onHoverOut?.(event);
115
+ hovered.current = false;
116
+ // Not an immediate hide: the pointer may be about to land on the bubble (WCAG 1.4.13
117
+ // hoverable) — `handleBubbleHoverIn` cancels this if it does.
118
+ scheduleHide();
119
+ }, [children, scheduleHide]);
120
+
121
+ // The bubble's own hover pair, mirroring the trigger's — same `onPointerEnter`/`onPointerLeave`
122
+ // primitive Toast's card uses for a non-Pressable hover target (see Toast.tsx), since turning the
123
+ // bubble into a `Pressable` would make it a touch responder for no reason.
124
+ const handleBubbleHoverIn = useCallback(() => {
125
+ clearHideTimer();
126
+ }, [clearHideTimer]);
127
+ const handleBubbleHoverOut = useCallback(() => {
128
+ // The pointer left the bubble; if it isn't back on the trigger either, the grace period starts
129
+ // again rather than hiding outright, since a fast re-entry (bubble -> trigger) is still valid.
130
+ if (!hovered.current) scheduleHide();
131
+ }, [scheduleHide]);
132
+ const handleFocus = useCallback(event => {
133
+ children.props.onFocus?.(event);
134
+ show(false);
135
+ }, [children, show]);
136
+ const handleBlur = useCallback(event => {
137
+ children.props.onBlur?.(event);
69
138
  hide();
70
139
  }, [children, hide]);
71
140
  const trigger = /*#__PURE__*/cloneElement(children, {
72
141
  onLongPress: handleLongPress,
73
142
  onPressOut: handlePressOut,
74
- accessibilityHint: mergeAccessibilityHint(children.props.accessibilityHint, label)
143
+ onHoverIn: handleHoverIn,
144
+ onHoverOut: handleHoverOut,
145
+ onFocus: handleFocus,
146
+ onBlur: handleBlur,
147
+ accessibilityHint: mergeAccessibilityHint(children.props.accessibilityHint, label),
148
+ "aria-describedby": bubble.mounted ? bubbleId : undefined
75
149
  });
150
+ const bubbleStyle = useMemo(() => {
151
+ highlight("subtle", theme.mode);
152
+ elevation(elevationTokens.md);
153
+ void theme.elevatedSurfaces;
154
+ return [tooltipBubbleStructure(theme, {
155
+ placement
156
+ }), {
157
+ backgroundColor: floatingBackground(theme, "md"),
158
+ zIndex: theme.zIndices.tooltip,
159
+ ...floatingSurfaceStyle(theme, "md")
160
+ }, bubble.style];
161
+ }, [theme, placement, bubble.style]);
162
+ const labelStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
163
+ fontSize: theme.fontSizes.sm,
164
+ color: theme.colors.fg.default
165
+ }], [theme]);
76
166
  return /*#__PURE__*/_jsxs(View, {
77
167
  style: styles.host,
78
168
  testID: testID,
79
- children: [trigger, visible &&
169
+ children: [trigger, bubble.mounted &&
80
170
  /*#__PURE__*/
81
- // Hidden from the accessibility tree on purpose: the tip's content already reached
82
- // screen-reader users via the merged `accessibilityHint` above, so surfacing this bubble
83
- // too would announce the same text twice (the same "hide the sighted-only echo" pattern
84
- // as Button's spinner).
171
+ // Hidden from the accessibility tree on purpose: the tip's content already reaches
172
+ // screen-reader users through the trigger — the merged `accessibilityHint` on native, the
173
+ // `aria-describedby` reference to this `id` on web so exposing the bubble in reading
174
+ // order too would announce the same text twice.
85
175
  _jsx(Animated.View, {
86
176
  testID: testID ? `${testID}-bubble` : undefined,
87
- pointerEvents: "none",
88
- accessibilityElementsHidden: true,
89
- importantForAccessibility: "no-hide-descendants",
90
- style: [tooltipBubbleStructure(theme, {
91
- placement
92
- }), {
93
- backgroundColor: theme.colors.bg.raised,
94
- opacity,
95
- zIndex: theme.zIndices.tooltip
96
- }],
177
+ id: bubbleId,
178
+ onPointerEnter: handleBubbleHoverIn,
179
+ onPointerLeave: handleBubbleHoverOut,
180
+ "aria-hidden": true,
181
+ style: bubbleStyle,
97
182
  children: /*#__PURE__*/_jsx(Text, {
98
- style: [theme.fontStyleForWeight(theme.fontWeights.regular), {
99
- fontSize: theme.fontSizes.sm,
100
- color: theme.colors.fg.default
101
- }],
183
+ style: labelStyle,
102
184
  children: label
103
185
  })
104
186
  })]
@@ -17,14 +17,20 @@
17
17
  import { sizes } from "../../theme/tokens/index.js";
18
18
  import { createThemedVariants } from "../../core/style/index.js";
19
19
  /**
20
- * Design constants, not theme tokens this module's own timing, not a scale other components
21
- * share.
20
+ * A dwell time, not a transition: how long a tip may stay up on its own. The fade itself has no
21
+ * constant here — duration, easing and the reduced-motion contract all come from the global motion
22
+ * system (`core/motion`).
22
23
  */
23
24
  export const TOOLTIP_TIMING = {
24
- /** Fade-in duration; skipped (duration 0) when the OS reduce-motion setting is on (WCAG 2.3.3). */
25
- fadeInMs: 150,
26
25
  /** Fallback auto-dismiss so a tip can't stay stuck open if `onPressOut` never fires. */
27
- autoHideMs: 2500
26
+ autoHideMs: 2500,
27
+ /**
28
+ * Grace period before a hover-out actually hides the bubble, so a pointer crossing the
29
+ * `theme.space[1]` gap to the bubble itself doesn't lose the tip mid-transit (WCAG 1.4.13
30
+ * hoverable). The CSS/UI convention for this exact case; entering the bubble before it elapses
31
+ * cancels the hide.
32
+ */
33
+ hoverOutGraceMs: 200
28
34
  };
29
35
 
30
36
  /**
@@ -0,0 +1,48 @@
1
+ # typing-indicator/
2
+
3
+ Three-dot typing animation for chat threads. Static dots under reduced motion.
4
+
5
+ ## Motion contract
6
+
7
+ - Each dot pulses `opacity` only, on the native driver, staggered by a third of the cycle. Duration
8
+ comes from the global motion config (`useMotion().duration("deliberate")` for a full up-down
9
+ cycle) — nothing here defines its own timing.
10
+ - **The loop wraps a BARE timing, never a sequence.** `Animated.loop` only hands the loop to the
11
+ native driver (`_startNativeLoop`) when what it wraps reports `_isUsingNativeDriver()`, and
12
+ `Animated.sequence` returns `false` for that unconditionally — so a looped sequence restarts every
13
+ leg from the JS thread, forever (~7-8 wakeups/second on the thread that also handles incoming
14
+ messages). Each dot therefore loops one timing driving a 0→1 value, interpolated to
15
+ min→max→min opacity, and the stagger is that timing's own `delay` (one JS timeout at start-up),
16
+ never `Animated.delay` — which is itself a `useNativeDriver: false` timing.
17
+ - **Gated on `motion.decorative`, not just `motion.enabled`.** Three pulsing dots are decoration;
18
+ the `accessibilityLabel="Typing"` is the real signal, the same argument `Spinner` makes for its
19
+ frozen glyph. Low/mid tiers and reduce motion get three static dots at full opacity.
20
+ - The loop is stopped on effect cleanup **and** on unmount; a re-run always stops the previous loops
21
+ first, so a tier or reduce-motion change can never leave an orphaned loop running.
22
+
23
+ `__tests__/TypingIndicator.motion.test.tsx` pins the native-loop handoff itself (`_startNativeLoop`
24
+ called with `-1`), not just the rendered opacity.
25
+
26
+ ## Accessibility contract (WCAG)
27
+
28
+ - **1.3.1 / 4.1.3** — a user not focused on the thread has no other way to learn typing started, so
29
+ mount speaks "Typing" once via `useAnnounce`. This is deliberately NOT a repeating or `polling`
30
+ announcement: the consumer mounts/unmounts this component as typing starts/stops, the effect that
31
+ calls `useAnnounce` fires once per mounted instance (not per pulse frame — the dots animate
32
+ entirely inside `Animated.Value`, which never re-renders React), and `useAnnounce` itself dedupes
33
+ an unchanged message. A chat that announced "Typing" every few seconds would be intolerable; this
34
+ announces once per typing burst, which is not that.
35
+ - Stopping is silent by design, matching every other state swap in the library (`EmptyState`/
36
+ `ErrorState` don't announce their own removal either) — the ONLY prior state a departing
37
+ `TypingIndicator` could be compared against is "was typing", which is not itself information a
38
+ user needs spoken.
39
+
40
+ ## Props
41
+
42
+ | Prop | Type | Default |
43
+ |------|------|---------|
44
+ | `size` | `sm \| md` | `md` |
45
+ | `style` | `LayoutStyle` | — |
46
+ | `testID` | `string` | — |
47
+
48
+ Each dot also carries `${testID}-dot-${index}` when `testID` is given.