pixelize-native-library 1.0.6

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 (713) hide show
  1. package/README.md +34 -0
  2. package/lib/module/core/MODULE.md +94 -0
  3. package/lib/module/core/a11y/MODULE.md +22 -0
  4. package/lib/module/core/a11y/index.js +26 -0
  5. package/lib/module/core/a11y/index.js.map +1 -0
  6. package/lib/module/core/icon/MODULE.md +35 -0
  7. package/lib/module/core/icon/index.js +92 -0
  8. package/lib/module/core/icon/index.js.map +1 -0
  9. package/lib/module/core/style/index.js +4 -0
  10. package/lib/module/core/style/index.js.map +1 -0
  11. package/lib/module/core/style/layoutStyle.js +4 -0
  12. package/lib/module/core/style/layoutStyle.js.map +1 -0
  13. package/lib/module/core/style/variants.js +115 -0
  14. package/lib/module/core/style/variants.js.map +1 -0
  15. package/lib/module/index.js +13 -0
  16. package/lib/module/index.js.map +1 -0
  17. package/lib/module/modules/accordion/Accordion.js +194 -0
  18. package/lib/module/modules/accordion/Accordion.js.map +1 -0
  19. package/lib/module/modules/accordion/Accordion.variants.js +143 -0
  20. package/lib/module/modules/accordion/Accordion.variants.js.map +1 -0
  21. package/lib/module/modules/accordion/MODULE.md +97 -0
  22. package/lib/module/modules/accordion/index.js +10 -0
  23. package/lib/module/modules/accordion/index.js.map +1 -0
  24. package/lib/module/modules/alert-dialog/AlertDialog.js +62 -0
  25. package/lib/module/modules/alert-dialog/AlertDialog.js.map +1 -0
  26. package/lib/module/modules/alert-dialog/AlertDialog.variants.js +44 -0
  27. package/lib/module/modules/alert-dialog/AlertDialog.variants.js.map +1 -0
  28. package/lib/module/modules/alert-dialog/MODULE.md +81 -0
  29. package/lib/module/modules/alert-dialog/index.js +10 -0
  30. package/lib/module/modules/alert-dialog/index.js.map +1 -0
  31. package/lib/module/modules/avatar/Avatar.js +57 -0
  32. package/lib/module/modules/avatar/Avatar.js.map +1 -0
  33. package/lib/module/modules/avatar/Avatar.variants.js +127 -0
  34. package/lib/module/modules/avatar/Avatar.variants.js.map +1 -0
  35. package/lib/module/modules/avatar/MODULE.md +76 -0
  36. package/lib/module/modules/avatar/index.js +12 -0
  37. package/lib/module/modules/avatar/index.js.map +1 -0
  38. package/lib/module/modules/badge/Badge.js +56 -0
  39. package/lib/module/modules/badge/Badge.js.map +1 -0
  40. package/lib/module/modules/badge/Badge.variants.js +124 -0
  41. package/lib/module/modules/badge/Badge.variants.js.map +1 -0
  42. package/lib/module/modules/badge/MODULE.md +82 -0
  43. package/lib/module/modules/badge/index.js +12 -0
  44. package/lib/module/modules/badge/index.js.map +1 -0
  45. package/lib/module/modules/bottom-nav/BottomNav.js +257 -0
  46. package/lib/module/modules/bottom-nav/BottomNav.js.map +1 -0
  47. package/lib/module/modules/bottom-nav/BottomNav.search.js +153 -0
  48. package/lib/module/modules/bottom-nav/BottomNav.search.js.map +1 -0
  49. package/lib/module/modules/bottom-nav/BottomNav.variants.js +164 -0
  50. package/lib/module/modules/bottom-nav/BottomNav.variants.js.map +1 -0
  51. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js +297 -0
  52. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js.map +1 -0
  53. package/lib/module/modules/bottom-nav/MODULE.md +198 -0
  54. package/lib/module/modules/bottom-nav/index.js +16 -0
  55. package/lib/module/modules/bottom-nav/index.js.map +1 -0
  56. package/lib/module/modules/button/Button.js +173 -0
  57. package/lib/module/modules/button/Button.js.map +1 -0
  58. package/lib/module/modules/button/Button.variants.js +173 -0
  59. package/lib/module/modules/button/Button.variants.js.map +1 -0
  60. package/lib/module/modules/button/MODULE.md +87 -0
  61. package/lib/module/modules/button/index.js +12 -0
  62. package/lib/module/modules/button/index.js.map +1 -0
  63. package/lib/module/modules/button-group/ButtonGroup.js +106 -0
  64. package/lib/module/modules/button-group/ButtonGroup.js.map +1 -0
  65. package/lib/module/modules/button-group/ButtonGroup.variants.js +220 -0
  66. package/lib/module/modules/button-group/ButtonGroup.variants.js.map +1 -0
  67. package/lib/module/modules/button-group/MODULE.md +129 -0
  68. package/lib/module/modules/button-group/index.js +11 -0
  69. package/lib/module/modules/button-group/index.js.map +1 -0
  70. package/lib/module/modules/card/Card.js +39 -0
  71. package/lib/module/modules/card/Card.js.map +1 -0
  72. package/lib/module/modules/card/Card.variants.js +75 -0
  73. package/lib/module/modules/card/Card.variants.js.map +1 -0
  74. package/lib/module/modules/card/MODULE.md +81 -0
  75. package/lib/module/modules/card/index.js +10 -0
  76. package/lib/module/modules/card/index.js.map +1 -0
  77. package/lib/module/modules/checkbox/Checkbox.js +115 -0
  78. package/lib/module/modules/checkbox/Checkbox.js.map +1 -0
  79. package/lib/module/modules/checkbox/Checkbox.variants.js +122 -0
  80. package/lib/module/modules/checkbox/Checkbox.variants.js.map +1 -0
  81. package/lib/module/modules/checkbox/MODULE.md +76 -0
  82. package/lib/module/modules/checkbox/index.js +11 -0
  83. package/lib/module/modules/checkbox/index.js.map +1 -0
  84. package/lib/module/modules/divider/Divider.js +35 -0
  85. package/lib/module/modules/divider/Divider.js.map +1 -0
  86. package/lib/module/modules/divider/Divider.variants.js +51 -0
  87. package/lib/module/modules/divider/Divider.variants.js.map +1 -0
  88. package/lib/module/modules/divider/MODULE.md +61 -0
  89. package/lib/module/modules/divider/index.js +10 -0
  90. package/lib/module/modules/divider/index.js.map +1 -0
  91. package/lib/module/modules/drawer/Drawer.js +171 -0
  92. package/lib/module/modules/drawer/Drawer.js.map +1 -0
  93. package/lib/module/modules/drawer/Drawer.variants.js +118 -0
  94. package/lib/module/modules/drawer/Drawer.variants.js.map +1 -0
  95. package/lib/module/modules/drawer/MODULE.md +161 -0
  96. package/lib/module/modules/drawer/index.js +10 -0
  97. package/lib/module/modules/drawer/index.js.map +1 -0
  98. package/lib/module/modules/empty-state/EmptyState.js +79 -0
  99. package/lib/module/modules/empty-state/EmptyState.js.map +1 -0
  100. package/lib/module/modules/empty-state/EmptyState.variants.js +54 -0
  101. package/lib/module/modules/empty-state/EmptyState.variants.js.map +1 -0
  102. package/lib/module/modules/empty-state/MODULE.md +78 -0
  103. package/lib/module/modules/empty-state/index.js +13 -0
  104. package/lib/module/modules/empty-state/index.js.map +1 -0
  105. package/lib/module/modules/file-upload/FileUpload.js +132 -0
  106. package/lib/module/modules/file-upload/FileUpload.js.map +1 -0
  107. package/lib/module/modules/file-upload/FileUpload.variants.js +179 -0
  108. package/lib/module/modules/file-upload/FileUpload.variants.js.map +1 -0
  109. package/lib/module/modules/file-upload/MODULE.md +130 -0
  110. package/lib/module/modules/file-upload/index.js +10 -0
  111. package/lib/module/modules/file-upload/index.js.map +1 -0
  112. package/lib/module/modules/filter-sheet/FilterChip.js +79 -0
  113. package/lib/module/modules/filter-sheet/FilterChip.js.map +1 -0
  114. package/lib/module/modules/filter-sheet/FilterSheet.js +98 -0
  115. package/lib/module/modules/filter-sheet/FilterSheet.js.map +1 -0
  116. package/lib/module/modules/filter-sheet/FilterSheet.variants.js +156 -0
  117. package/lib/module/modules/filter-sheet/FilterSheet.variants.js.map +1 -0
  118. package/lib/module/modules/filter-sheet/FilterSheetBody.js +175 -0
  119. package/lib/module/modules/filter-sheet/FilterSheetBody.js.map +1 -0
  120. package/lib/module/modules/filter-sheet/MODULE.md +115 -0
  121. package/lib/module/modules/filter-sheet/filterSheet.helpers.js +90 -0
  122. package/lib/module/modules/filter-sheet/filterSheet.helpers.js.map +1 -0
  123. package/lib/module/modules/filter-sheet/index.js +14 -0
  124. package/lib/module/modules/filter-sheet/index.js.map +1 -0
  125. package/lib/module/modules/input/Input.js +132 -0
  126. package/lib/module/modules/input/Input.js.map +1 -0
  127. package/lib/module/modules/input/Input.variants.js +122 -0
  128. package/lib/module/modules/input/Input.variants.js.map +1 -0
  129. package/lib/module/modules/input/MODULE.md +97 -0
  130. package/lib/module/modules/input/index.js +13 -0
  131. package/lib/module/modules/input/index.js.map +1 -0
  132. package/lib/module/modules/menu/MODULE.md +103 -0
  133. package/lib/module/modules/menu/Menu.js +128 -0
  134. package/lib/module/modules/menu/Menu.js.map +1 -0
  135. package/lib/module/modules/menu/Menu.variants.js +75 -0
  136. package/lib/module/modules/menu/Menu.variants.js.map +1 -0
  137. package/lib/module/modules/menu/index.js +12 -0
  138. package/lib/module/modules/menu/index.js.map +1 -0
  139. package/lib/module/modules/modal/MODULE.md +138 -0
  140. package/lib/module/modules/modal/Modal.js +101 -0
  141. package/lib/module/modules/modal/Modal.js.map +1 -0
  142. package/lib/module/modules/modal/Modal.variants.js +92 -0
  143. package/lib/module/modules/modal/Modal.variants.js.map +1 -0
  144. package/lib/module/modules/modal/ModalPortalContext.js +25 -0
  145. package/lib/module/modules/modal/ModalPortalContext.js.map +1 -0
  146. package/lib/module/modules/modal/ModalPortalProvider.js +22 -0
  147. package/lib/module/modules/modal/ModalPortalProvider.js.map +1 -0
  148. package/lib/module/modules/modal/index.js +16 -0
  149. package/lib/module/modules/modal/index.js.map +1 -0
  150. package/lib/module/modules/modal/renderWebPortal.js +18 -0
  151. package/lib/module/modules/modal/renderWebPortal.js.map +1 -0
  152. package/lib/module/modules/modal/renderWebPortal.web.js +24 -0
  153. package/lib/module/modules/modal/renderWebPortal.web.js.map +1 -0
  154. package/lib/module/modules/multi-select/MODULE.md +100 -0
  155. package/lib/module/modules/multi-select/MultiSelect.js +204 -0
  156. package/lib/module/modules/multi-select/MultiSelect.js.map +1 -0
  157. package/lib/module/modules/multi-select/MultiSelect.variants.js +195 -0
  158. package/lib/module/modules/multi-select/MultiSelect.variants.js.map +1 -0
  159. package/lib/module/modules/multi-select/index.js +11 -0
  160. package/lib/module/modules/multi-select/index.js.map +1 -0
  161. package/lib/module/modules/number-input/MODULE.md +108 -0
  162. package/lib/module/modules/number-input/NumberInput.js +253 -0
  163. package/lib/module/modules/number-input/NumberInput.js.map +1 -0
  164. package/lib/module/modules/number-input/NumberInput.variants.js +200 -0
  165. package/lib/module/modules/number-input/NumberInput.variants.js.map +1 -0
  166. package/lib/module/modules/number-input/index.js +12 -0
  167. package/lib/module/modules/number-input/index.js.map +1 -0
  168. package/lib/module/modules/pin-input/MODULE.md +134 -0
  169. package/lib/module/modules/pin-input/PinInput.js +158 -0
  170. package/lib/module/modules/pin-input/PinInput.js.map +1 -0
  171. package/lib/module/modules/pin-input/PinInput.variants.js +183 -0
  172. package/lib/module/modules/pin-input/PinInput.variants.js.map +1 -0
  173. package/lib/module/modules/pin-input/index.js +11 -0
  174. package/lib/module/modules/pin-input/index.js.map +1 -0
  175. package/lib/module/modules/progress-bar/MODULE.md +101 -0
  176. package/lib/module/modules/progress-bar/ProgressBar.js +102 -0
  177. package/lib/module/modules/progress-bar/ProgressBar.js.map +1 -0
  178. package/lib/module/modules/progress-bar/ProgressBar.variants.js +151 -0
  179. package/lib/module/modules/progress-bar/ProgressBar.variants.js.map +1 -0
  180. package/lib/module/modules/progress-bar/index.js +12 -0
  181. package/lib/module/modules/progress-bar/index.js.map +1 -0
  182. package/lib/module/modules/radio-group/MODULE.md +75 -0
  183. package/lib/module/modules/radio-group/RadioGroup.js +87 -0
  184. package/lib/module/modules/radio-group/RadioGroup.js.map +1 -0
  185. package/lib/module/modules/radio-group/RadioGroup.variants.js +163 -0
  186. package/lib/module/modules/radio-group/RadioGroup.variants.js.map +1 -0
  187. package/lib/module/modules/radio-group/index.js +11 -0
  188. package/lib/module/modules/radio-group/index.js.map +1 -0
  189. package/lib/module/modules/reorder/MODULE.md +131 -0
  190. package/lib/module/modules/reorder/Reorder.js +291 -0
  191. package/lib/module/modules/reorder/Reorder.js.map +1 -0
  192. package/lib/module/modules/reorder/Reorder.variants.js +172 -0
  193. package/lib/module/modules/reorder/Reorder.variants.js.map +1 -0
  194. package/lib/module/modules/reorder/index.js +11 -0
  195. package/lib/module/modules/reorder/index.js.map +1 -0
  196. package/lib/module/modules/select/MODULE.md +91 -0
  197. package/lib/module/modules/select/Select.js +178 -0
  198. package/lib/module/modules/select/Select.js.map +1 -0
  199. package/lib/module/modules/select/Select.variants.js +146 -0
  200. package/lib/module/modules/select/Select.variants.js.map +1 -0
  201. package/lib/module/modules/select/index.js +10 -0
  202. package/lib/module/modules/select/index.js.map +1 -0
  203. package/lib/module/modules/skeleton/MODULE.md +87 -0
  204. package/lib/module/modules/skeleton/Skeleton.js +78 -0
  205. package/lib/module/modules/skeleton/Skeleton.js.map +1 -0
  206. package/lib/module/modules/skeleton/Skeleton.variants.js +145 -0
  207. package/lib/module/modules/skeleton/Skeleton.variants.js.map +1 -0
  208. package/lib/module/modules/skeleton/index.js +10 -0
  209. package/lib/module/modules/skeleton/index.js.map +1 -0
  210. package/lib/module/modules/slider/MODULE.md +95 -0
  211. package/lib/module/modules/slider/Slider.js +183 -0
  212. package/lib/module/modules/slider/Slider.js.map +1 -0
  213. package/lib/module/modules/slider/Slider.variants.js +258 -0
  214. package/lib/module/modules/slider/Slider.variants.js.map +1 -0
  215. package/lib/module/modules/slider/index.js +10 -0
  216. package/lib/module/modules/slider/index.js.map +1 -0
  217. package/lib/module/modules/spinner/MODULE.md +97 -0
  218. package/lib/module/modules/spinner/Spinner.js +58 -0
  219. package/lib/module/modules/spinner/Spinner.js.map +1 -0
  220. package/lib/module/modules/spinner/Spinner.variants.js +131 -0
  221. package/lib/module/modules/spinner/Spinner.variants.js.map +1 -0
  222. package/lib/module/modules/spinner/index.js +11 -0
  223. package/lib/module/modules/spinner/index.js.map +1 -0
  224. package/lib/module/modules/stepper/MODULE.md +88 -0
  225. package/lib/module/modules/stepper/Stepper.js +100 -0
  226. package/lib/module/modules/stepper/Stepper.js.map +1 -0
  227. package/lib/module/modules/stepper/Stepper.variants.js +146 -0
  228. package/lib/module/modules/stepper/Stepper.variants.js.map +1 -0
  229. package/lib/module/modules/stepper/index.js +10 -0
  230. package/lib/module/modules/stepper/index.js.map +1 -0
  231. package/lib/module/modules/switch/MODULE.md +65 -0
  232. package/lib/module/modules/switch/Switch.js +53 -0
  233. package/lib/module/modules/switch/Switch.js.map +1 -0
  234. package/lib/module/modules/switch/Switch.variants.js +61 -0
  235. package/lib/module/modules/switch/Switch.variants.js.map +1 -0
  236. package/lib/module/modules/switch/index.js +10 -0
  237. package/lib/module/modules/switch/index.js.map +1 -0
  238. package/lib/module/modules/tabs/MODULE.md +80 -0
  239. package/lib/module/modules/tabs/Tabs.js +127 -0
  240. package/lib/module/modules/tabs/Tabs.js.map +1 -0
  241. package/lib/module/modules/tabs/Tabs.variants.js +135 -0
  242. package/lib/module/modules/tabs/Tabs.variants.js.map +1 -0
  243. package/lib/module/modules/tabs/index.js +12 -0
  244. package/lib/module/modules/tabs/index.js.map +1 -0
  245. package/lib/module/modules/textarea/MODULE.md +91 -0
  246. package/lib/module/modules/textarea/Textarea.js +136 -0
  247. package/lib/module/modules/textarea/Textarea.js.map +1 -0
  248. package/lib/module/modules/textarea/Textarea.variants.js +113 -0
  249. package/lib/module/modules/textarea/Textarea.variants.js.map +1 -0
  250. package/lib/module/modules/textarea/index.js +10 -0
  251. package/lib/module/modules/textarea/index.js.map +1 -0
  252. package/lib/module/modules/timeline/MODULE.md +95 -0
  253. package/lib/module/modules/timeline/Timeline.js +92 -0
  254. package/lib/module/modules/timeline/Timeline.js.map +1 -0
  255. package/lib/module/modules/timeline/Timeline.variants.js +146 -0
  256. package/lib/module/modules/timeline/Timeline.variants.js.map +1 -0
  257. package/lib/module/modules/timeline/index.js +12 -0
  258. package/lib/module/modules/timeline/index.js.map +1 -0
  259. package/lib/module/modules/toast/MODULE.md +104 -0
  260. package/lib/module/modules/toast/Toast.js +178 -0
  261. package/lib/module/modules/toast/Toast.js.map +1 -0
  262. package/lib/module/modules/toast/Toast.variants.js +120 -0
  263. package/lib/module/modules/toast/Toast.variants.js.map +1 -0
  264. package/lib/module/modules/toast/index.js +13 -0
  265. package/lib/module/modules/toast/index.js.map +1 -0
  266. package/lib/module/modules/tooltip/MODULE.md +86 -0
  267. package/lib/module/modules/tooltip/Tooltip.js +115 -0
  268. package/lib/module/modules/tooltip/Tooltip.js.map +1 -0
  269. package/lib/module/modules/tooltip/Tooltip.variants.js +75 -0
  270. package/lib/module/modules/tooltip/Tooltip.variants.js.map +1 -0
  271. package/lib/module/modules/tooltip/index.js +10 -0
  272. package/lib/module/modules/tooltip/index.js.map +1 -0
  273. package/lib/module/package.json +1 -0
  274. package/lib/module/theme/MODULE.md +87 -0
  275. package/lib/module/theme/index.js +15 -0
  276. package/lib/module/theme/index.js.map +1 -0
  277. package/lib/module/theme/platform/MODULE.md +102 -0
  278. package/lib/module/theme/platform/colorScheme.native.js +24 -0
  279. package/lib/module/theme/platform/colorScheme.native.js.map +1 -0
  280. package/lib/module/theme/platform/elevation.native.js +75 -0
  281. package/lib/module/theme/platform/elevation.native.js.map +1 -0
  282. package/lib/module/theme/platform/fonts.native.js +58 -0
  283. package/lib/module/theme/platform/fonts.native.js.map +1 -0
  284. package/lib/module/theme/platform/index.js +14 -0
  285. package/lib/module/theme/platform/index.js.map +1 -0
  286. package/lib/module/theme/platform/units.native.js +18 -0
  287. package/lib/module/theme/platform/units.native.js.map +1 -0
  288. package/lib/module/theme/provider/PixelizeProvider.js +149 -0
  289. package/lib/module/theme/provider/PixelizeProvider.js.map +1 -0
  290. package/lib/module/theme/provider/colorModeStorage.js +63 -0
  291. package/lib/module/theme/provider/colorModeStorage.js.map +1 -0
  292. package/lib/module/theme/provider/index.js +8 -0
  293. package/lib/module/theme/provider/index.js.map +1 -0
  294. package/lib/module/theme/provider/useTheme.js +13 -0
  295. package/lib/module/theme/provider/useTheme.js.map +1 -0
  296. package/lib/module/theme/provider/useThemeColors.js +13 -0
  297. package/lib/module/theme/provider/useThemeColors.js.map +1 -0
  298. package/lib/module/theme/provider/useThemeMode.js +13 -0
  299. package/lib/module/theme/provider/useThemeMode.js.map +1 -0
  300. package/lib/module/theme/tokens/MODULE.md +102 -0
  301. package/lib/module/theme/tokens/brands/emerald/palette.dark.js +9 -0
  302. package/lib/module/theme/tokens/brands/emerald/palette.dark.js.map +1 -0
  303. package/lib/module/theme/tokens/brands/emerald/palette.light.js +125 -0
  304. package/lib/module/theme/tokens/brands/emerald/palette.light.js.map +1 -0
  305. package/lib/module/theme/tokens/brands/index.js +91 -0
  306. package/lib/module/theme/tokens/brands/index.js.map +1 -0
  307. package/lib/module/theme/tokens/brands/lavender/palette.dark.js +9 -0
  308. package/lib/module/theme/tokens/brands/lavender/palette.dark.js.map +1 -0
  309. package/lib/module/theme/tokens/brands/lavender/palette.light.js +376 -0
  310. package/lib/module/theme/tokens/brands/lavender/palette.light.js.map +1 -0
  311. package/lib/module/theme/tokens/brands/meadow/palette.dark.js +9 -0
  312. package/lib/module/theme/tokens/brands/meadow/palette.dark.js.map +1 -0
  313. package/lib/module/theme/tokens/brands/meadow/palette.light.js +126 -0
  314. package/lib/module/theme/tokens/brands/meadow/palette.light.js.map +1 -0
  315. package/lib/module/theme/tokens/brands/radiant/palette.dark.js +9 -0
  316. package/lib/module/theme/tokens/brands/radiant/palette.dark.js.map +1 -0
  317. package/lib/module/theme/tokens/brands/radiant/palette.light.js +125 -0
  318. package/lib/module/theme/tokens/brands/radiant/palette.light.js.map +1 -0
  319. package/lib/module/theme/tokens/brands/rosewood/palette.dark.js +9 -0
  320. package/lib/module/theme/tokens/brands/rosewood/palette.dark.js.map +1 -0
  321. package/lib/module/theme/tokens/brands/rosewood/palette.light.js +125 -0
  322. package/lib/module/theme/tokens/brands/rosewood/palette.light.js.map +1 -0
  323. package/lib/module/theme/tokens/brands/skyline/palette.dark.js +9 -0
  324. package/lib/module/theme/tokens/brands/skyline/palette.dark.js.map +1 -0
  325. package/lib/module/theme/tokens/brands/skyline/palette.light.js +126 -0
  326. package/lib/module/theme/tokens/brands/skyline/palette.light.js.map +1 -0
  327. package/lib/module/theme/tokens/brands/slate/palette.dark.js +11 -0
  328. package/lib/module/theme/tokens/brands/slate/palette.dark.js.map +1 -0
  329. package/lib/module/theme/tokens/brands/slate/palette.light.js +129 -0
  330. package/lib/module/theme/tokens/brands/slate/palette.light.js.map +1 -0
  331. package/lib/module/theme/tokens/brands/storefront/palette.dark.js +7 -0
  332. package/lib/module/theme/tokens/brands/storefront/palette.dark.js.map +1 -0
  333. package/lib/module/theme/tokens/brands/storefront/palette.light.js +127 -0
  334. package/lib/module/theme/tokens/brands/storefront/palette.light.js.map +1 -0
  335. package/lib/module/theme/tokens/brands/zinc/palette.dark.js +222 -0
  336. package/lib/module/theme/tokens/brands/zinc/palette.dark.js.map +1 -0
  337. package/lib/module/theme/tokens/brands/zinc/palette.light.js +393 -0
  338. package/lib/module/theme/tokens/brands/zinc/palette.light.js.map +1 -0
  339. package/lib/module/theme/tokens/builders/accentText.js +66 -0
  340. package/lib/module/theme/tokens/builders/accentText.js.map +1 -0
  341. package/lib/module/theme/tokens/builders/buildBrandTokens.js +38 -0
  342. package/lib/module/theme/tokens/builders/buildBrandTokens.js.map +1 -0
  343. package/lib/module/theme/tokens/builders/buildDarkPalette.js +300 -0
  344. package/lib/module/theme/tokens/builders/buildDarkPalette.js.map +1 -0
  345. package/lib/module/theme/tokens/builders/color.js +187 -0
  346. package/lib/module/theme/tokens/builders/color.js.map +1 -0
  347. package/lib/module/theme/tokens/index.js +27 -0
  348. package/lib/module/theme/tokens/index.js.map +1 -0
  349. package/lib/module/theme/tokens/primitives/borderWidths.js +16 -0
  350. package/lib/module/theme/tokens/primitives/borderWidths.js.map +1 -0
  351. package/lib/module/theme/tokens/primitives/breakpoints.js +18 -0
  352. package/lib/module/theme/tokens/primitives/breakpoints.js.map +1 -0
  353. package/lib/module/theme/tokens/primitives/elevation.js +95 -0
  354. package/lib/module/theme/tokens/primitives/elevation.js.map +1 -0
  355. package/lib/module/theme/tokens/primitives/fontSizes.js +22 -0
  356. package/lib/module/theme/tokens/primitives/fontSizes.js.map +1 -0
  357. package/lib/module/theme/tokens/primitives/fontWeights.js +23 -0
  358. package/lib/module/theme/tokens/primitives/fontWeights.js.map +1 -0
  359. package/lib/module/theme/tokens/primitives/index.js +14 -0
  360. package/lib/module/theme/tokens/primitives/index.js.map +1 -0
  361. package/lib/module/theme/tokens/primitives/letterSpacings.js +18 -0
  362. package/lib/module/theme/tokens/primitives/letterSpacings.js.map +1 -0
  363. package/lib/module/theme/tokens/primitives/lineHeights.js +21 -0
  364. package/lib/module/theme/tokens/primitives/lineHeights.js.map +1 -0
  365. package/lib/module/theme/tokens/primitives/radii.js +21 -0
  366. package/lib/module/theme/tokens/primitives/radii.js.map +1 -0
  367. package/lib/module/theme/tokens/primitives/sizes.js +34 -0
  368. package/lib/module/theme/tokens/primitives/sizes.js.map +1 -0
  369. package/lib/module/theme/tokens/primitives/space.js +30 -0
  370. package/lib/module/theme/tokens/primitives/space.js.map +1 -0
  371. package/lib/module/theme/tokens/primitives/zIndices.js +23 -0
  372. package/lib/module/theme/tokens/primitives/zIndices.js.map +1 -0
  373. package/lib/module/theme/tokens/roles/index.js +126 -0
  374. package/lib/module/theme/tokens/roles/index.js.map +1 -0
  375. package/lib/module/theme/tokens/types.js +2 -0
  376. package/lib/module/theme/tokens/types.js.map +1 -0
  377. package/lib/typescript/core/a11y/index.d.ts +7 -0
  378. package/lib/typescript/core/a11y/index.d.ts.map +1 -0
  379. package/lib/typescript/core/icon/index.d.ts +60 -0
  380. package/lib/typescript/core/icon/index.d.ts.map +1 -0
  381. package/lib/typescript/core/style/index.d.ts +4 -0
  382. package/lib/typescript/core/style/index.d.ts.map +1 -0
  383. package/lib/typescript/core/style/layoutStyle.d.ts +19 -0
  384. package/lib/typescript/core/style/layoutStyle.d.ts.map +1 -0
  385. package/lib/typescript/core/style/variants.d.ts +55 -0
  386. package/lib/typescript/core/style/variants.d.ts.map +1 -0
  387. package/lib/typescript/index.d.ts +11 -0
  388. package/lib/typescript/index.d.ts.map +1 -0
  389. package/lib/typescript/modules/accordion/Accordion.d.ts +57 -0
  390. package/lib/typescript/modules/accordion/Accordion.d.ts.map +1 -0
  391. package/lib/typescript/modules/accordion/Accordion.variants.d.ts +131 -0
  392. package/lib/typescript/modules/accordion/Accordion.variants.d.ts.map +1 -0
  393. package/lib/typescript/modules/accordion/index.d.ts +9 -0
  394. package/lib/typescript/modules/accordion/index.d.ts.map +1 -0
  395. package/lib/typescript/modules/alert-dialog/AlertDialog.d.ts +24 -0
  396. package/lib/typescript/modules/alert-dialog/AlertDialog.d.ts.map +1 -0
  397. package/lib/typescript/modules/alert-dialog/AlertDialog.variants.d.ts +29 -0
  398. package/lib/typescript/modules/alert-dialog/AlertDialog.variants.d.ts.map +1 -0
  399. package/lib/typescript/modules/alert-dialog/index.d.ts +9 -0
  400. package/lib/typescript/modules/alert-dialog/index.d.ts.map +1 -0
  401. package/lib/typescript/modules/avatar/Avatar.d.ts +30 -0
  402. package/lib/typescript/modules/avatar/Avatar.d.ts.map +1 -0
  403. package/lib/typescript/modules/avatar/Avatar.variants.d.ts +123 -0
  404. package/lib/typescript/modules/avatar/Avatar.variants.d.ts.map +1 -0
  405. package/lib/typescript/modules/avatar/index.d.ts +11 -0
  406. package/lib/typescript/modules/avatar/index.d.ts.map +1 -0
  407. package/lib/typescript/modules/badge/Badge.d.ts +19 -0
  408. package/lib/typescript/modules/badge/Badge.d.ts.map +1 -0
  409. package/lib/typescript/modules/badge/Badge.variants.d.ts +102 -0
  410. package/lib/typescript/modules/badge/Badge.variants.d.ts.map +1 -0
  411. package/lib/typescript/modules/badge/index.d.ts +10 -0
  412. package/lib/typescript/modules/badge/index.d.ts.map +1 -0
  413. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts +106 -0
  414. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts.map +1 -0
  415. package/lib/typescript/modules/bottom-nav/BottomNav.search.d.ts +61 -0
  416. package/lib/typescript/modules/bottom-nav/BottomNav.search.d.ts.map +1 -0
  417. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts +122 -0
  418. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts.map +1 -0
  419. package/lib/typescript/modules/bottom-nav/BottomNavOverflowSheet.d.ts +39 -0
  420. package/lib/typescript/modules/bottom-nav/BottomNavOverflowSheet.d.ts.map +1 -0
  421. package/lib/typescript/modules/bottom-nav/index.d.ts +12 -0
  422. package/lib/typescript/modules/bottom-nav/index.d.ts.map +1 -0
  423. package/lib/typescript/modules/button/Button.d.ts +43 -0
  424. package/lib/typescript/modules/button/Button.d.ts.map +1 -0
  425. package/lib/typescript/modules/button/Button.variants.d.ts +156 -0
  426. package/lib/typescript/modules/button/Button.variants.d.ts.map +1 -0
  427. package/lib/typescript/modules/button/index.d.ts +10 -0
  428. package/lib/typescript/modules/button/index.d.ts.map +1 -0
  429. package/lib/typescript/modules/button-group/ButtonGroup.d.ts +37 -0
  430. package/lib/typescript/modules/button-group/ButtonGroup.d.ts.map +1 -0
  431. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts +217 -0
  432. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts.map +1 -0
  433. package/lib/typescript/modules/button-group/index.d.ts +10 -0
  434. package/lib/typescript/modules/button-group/index.d.ts.map +1 -0
  435. package/lib/typescript/modules/card/Card.d.ts +20 -0
  436. package/lib/typescript/modules/card/Card.d.ts.map +1 -0
  437. package/lib/typescript/modules/card/Card.variants.d.ts +51 -0
  438. package/lib/typescript/modules/card/Card.variants.d.ts.map +1 -0
  439. package/lib/typescript/modules/card/index.d.ts +9 -0
  440. package/lib/typescript/modules/card/index.d.ts.map +1 -0
  441. package/lib/typescript/modules/checkbox/Checkbox.d.ts +43 -0
  442. package/lib/typescript/modules/checkbox/Checkbox.d.ts.map +1 -0
  443. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts +120 -0
  444. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts.map +1 -0
  445. package/lib/typescript/modules/checkbox/index.d.ts +10 -0
  446. package/lib/typescript/modules/checkbox/index.d.ts.map +1 -0
  447. package/lib/typescript/modules/divider/Divider.d.ts +18 -0
  448. package/lib/typescript/modules/divider/Divider.d.ts.map +1 -0
  449. package/lib/typescript/modules/divider/Divider.variants.d.ts +42 -0
  450. package/lib/typescript/modules/divider/Divider.variants.d.ts.map +1 -0
  451. package/lib/typescript/modules/divider/index.d.ts +9 -0
  452. package/lib/typescript/modules/divider/index.d.ts.map +1 -0
  453. package/lib/typescript/modules/drawer/Drawer.d.ts +44 -0
  454. package/lib/typescript/modules/drawer/Drawer.d.ts.map +1 -0
  455. package/lib/typescript/modules/drawer/Drawer.variants.d.ts +80 -0
  456. package/lib/typescript/modules/drawer/Drawer.variants.d.ts.map +1 -0
  457. package/lib/typescript/modules/drawer/index.d.ts +8 -0
  458. package/lib/typescript/modules/drawer/index.d.ts.map +1 -0
  459. package/lib/typescript/modules/empty-state/EmptyState.d.ts +29 -0
  460. package/lib/typescript/modules/empty-state/EmptyState.d.ts.map +1 -0
  461. package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts +43 -0
  462. package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts.map +1 -0
  463. package/lib/typescript/modules/empty-state/index.d.ts +10 -0
  464. package/lib/typescript/modules/empty-state/index.d.ts.map +1 -0
  465. package/lib/typescript/modules/file-upload/FileUpload.d.ts +44 -0
  466. package/lib/typescript/modules/file-upload/FileUpload.d.ts.map +1 -0
  467. package/lib/typescript/modules/file-upload/FileUpload.variants.d.ts +114 -0
  468. package/lib/typescript/modules/file-upload/FileUpload.variants.d.ts.map +1 -0
  469. package/lib/typescript/modules/file-upload/index.d.ts +9 -0
  470. package/lib/typescript/modules/file-upload/index.d.ts.map +1 -0
  471. package/lib/typescript/modules/filter-sheet/FilterChip.d.ts +25 -0
  472. package/lib/typescript/modules/filter-sheet/FilterChip.d.ts.map +1 -0
  473. package/lib/typescript/modules/filter-sheet/FilterSheet.d.ts +54 -0
  474. package/lib/typescript/modules/filter-sheet/FilterSheet.d.ts.map +1 -0
  475. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts +98 -0
  476. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts.map +1 -0
  477. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts +28 -0
  478. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts.map +1 -0
  479. package/lib/typescript/modules/filter-sheet/filterSheet.helpers.d.ts +45 -0
  480. package/lib/typescript/modules/filter-sheet/filterSheet.helpers.d.ts.map +1 -0
  481. package/lib/typescript/modules/filter-sheet/index.d.ts +12 -0
  482. package/lib/typescript/modules/filter-sheet/index.d.ts.map +1 -0
  483. package/lib/typescript/modules/input/Input.d.ts +33 -0
  484. package/lib/typescript/modules/input/Input.d.ts.map +1 -0
  485. package/lib/typescript/modules/input/Input.variants.d.ts +116 -0
  486. package/lib/typescript/modules/input/Input.variants.d.ts.map +1 -0
  487. package/lib/typescript/modules/input/index.d.ts +10 -0
  488. package/lib/typescript/modules/input/index.d.ts.map +1 -0
  489. package/lib/typescript/modules/menu/Menu.d.ts +43 -0
  490. package/lib/typescript/modules/menu/Menu.d.ts.map +1 -0
  491. package/lib/typescript/modules/menu/Menu.variants.d.ts +41 -0
  492. package/lib/typescript/modules/menu/Menu.variants.d.ts.map +1 -0
  493. package/lib/typescript/modules/menu/index.d.ts +10 -0
  494. package/lib/typescript/modules/menu/index.d.ts.map +1 -0
  495. package/lib/typescript/modules/modal/Modal.d.ts +32 -0
  496. package/lib/typescript/modules/modal/Modal.d.ts.map +1 -0
  497. package/lib/typescript/modules/modal/Modal.variants.d.ts +72 -0
  498. package/lib/typescript/modules/modal/Modal.variants.d.ts.map +1 -0
  499. package/lib/typescript/modules/modal/ModalPortalContext.d.ts +2 -0
  500. package/lib/typescript/modules/modal/ModalPortalContext.d.ts.map +1 -0
  501. package/lib/typescript/modules/modal/ModalPortalProvider.d.ts +21 -0
  502. package/lib/typescript/modules/modal/ModalPortalProvider.d.ts.map +1 -0
  503. package/lib/typescript/modules/modal/index.d.ts +16 -0
  504. package/lib/typescript/modules/modal/index.d.ts.map +1 -0
  505. package/lib/typescript/modules/modal/renderWebPortal.d.ts +15 -0
  506. package/lib/typescript/modules/modal/renderWebPortal.d.ts.map +1 -0
  507. package/lib/typescript/modules/modal/renderWebPortal.web.d.ts +19 -0
  508. package/lib/typescript/modules/modal/renderWebPortal.web.d.ts.map +1 -0
  509. package/lib/typescript/modules/multi-select/MultiSelect.d.ts +33 -0
  510. package/lib/typescript/modules/multi-select/MultiSelect.d.ts.map +1 -0
  511. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts +149 -0
  512. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts.map +1 -0
  513. package/lib/typescript/modules/multi-select/index.d.ts +10 -0
  514. package/lib/typescript/modules/multi-select/index.d.ts.map +1 -0
  515. package/lib/typescript/modules/number-input/NumberInput.d.ts +34 -0
  516. package/lib/typescript/modules/number-input/NumberInput.d.ts.map +1 -0
  517. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts +170 -0
  518. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts.map +1 -0
  519. package/lib/typescript/modules/number-input/index.d.ts +11 -0
  520. package/lib/typescript/modules/number-input/index.d.ts.map +1 -0
  521. package/lib/typescript/modules/pin-input/PinInput.d.ts +40 -0
  522. package/lib/typescript/modules/pin-input/PinInput.d.ts.map +1 -0
  523. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts +164 -0
  524. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts.map +1 -0
  525. package/lib/typescript/modules/pin-input/index.d.ts +10 -0
  526. package/lib/typescript/modules/pin-input/index.d.ts.map +1 -0
  527. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts +21 -0
  528. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts.map +1 -0
  529. package/lib/typescript/modules/progress-bar/ProgressBar.variants.d.ts +112 -0
  530. package/lib/typescript/modules/progress-bar/ProgressBar.variants.d.ts.map +1 -0
  531. package/lib/typescript/modules/progress-bar/index.d.ts +11 -0
  532. package/lib/typescript/modules/progress-bar/index.d.ts.map +1 -0
  533. package/lib/typescript/modules/radio-group/RadioGroup.d.ts +27 -0
  534. package/lib/typescript/modules/radio-group/RadioGroup.d.ts.map +1 -0
  535. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts +142 -0
  536. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts.map +1 -0
  537. package/lib/typescript/modules/radio-group/index.d.ts +10 -0
  538. package/lib/typescript/modules/radio-group/index.d.ts.map +1 -0
  539. package/lib/typescript/modules/reorder/Reorder.d.ts +43 -0
  540. package/lib/typescript/modules/reorder/Reorder.d.ts.map +1 -0
  541. package/lib/typescript/modules/reorder/Reorder.variants.d.ts +116 -0
  542. package/lib/typescript/modules/reorder/Reorder.variants.d.ts.map +1 -0
  543. package/lib/typescript/modules/reorder/index.d.ts +9 -0
  544. package/lib/typescript/modules/reorder/index.d.ts.map +1 -0
  545. package/lib/typescript/modules/select/Select.d.ts +31 -0
  546. package/lib/typescript/modules/select/Select.d.ts.map +1 -0
  547. package/lib/typescript/modules/select/Select.variants.d.ts +127 -0
  548. package/lib/typescript/modules/select/Select.variants.d.ts.map +1 -0
  549. package/lib/typescript/modules/select/index.d.ts +9 -0
  550. package/lib/typescript/modules/select/index.d.ts.map +1 -0
  551. package/lib/typescript/modules/skeleton/Skeleton.d.ts +27 -0
  552. package/lib/typescript/modules/skeleton/Skeleton.d.ts.map +1 -0
  553. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts +119 -0
  554. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts.map +1 -0
  555. package/lib/typescript/modules/skeleton/index.d.ts +9 -0
  556. package/lib/typescript/modules/skeleton/index.d.ts.map +1 -0
  557. package/lib/typescript/modules/slider/Slider.d.ts +44 -0
  558. package/lib/typescript/modules/slider/Slider.d.ts.map +1 -0
  559. package/lib/typescript/modules/slider/Slider.variants.d.ts +211 -0
  560. package/lib/typescript/modules/slider/Slider.variants.d.ts.map +1 -0
  561. package/lib/typescript/modules/slider/index.d.ts +9 -0
  562. package/lib/typescript/modules/slider/index.d.ts.map +1 -0
  563. package/lib/typescript/modules/spinner/Spinner.d.ts +19 -0
  564. package/lib/typescript/modules/spinner/Spinner.d.ts.map +1 -0
  565. package/lib/typescript/modules/spinner/Spinner.variants.d.ts +113 -0
  566. package/lib/typescript/modules/spinner/Spinner.variants.d.ts.map +1 -0
  567. package/lib/typescript/modules/spinner/index.d.ts +10 -0
  568. package/lib/typescript/modules/spinner/index.d.ts.map +1 -0
  569. package/lib/typescript/modules/stepper/Stepper.d.ts +26 -0
  570. package/lib/typescript/modules/stepper/Stepper.d.ts.map +1 -0
  571. package/lib/typescript/modules/stepper/Stepper.variants.d.ts +107 -0
  572. package/lib/typescript/modules/stepper/Stepper.variants.d.ts.map +1 -0
  573. package/lib/typescript/modules/stepper/index.d.ts +8 -0
  574. package/lib/typescript/modules/stepper/index.d.ts.map +1 -0
  575. package/lib/typescript/modules/switch/Switch.d.ts +22 -0
  576. package/lib/typescript/modules/switch/Switch.d.ts.map +1 -0
  577. package/lib/typescript/modules/switch/Switch.variants.d.ts +60 -0
  578. package/lib/typescript/modules/switch/Switch.variants.d.ts.map +1 -0
  579. package/lib/typescript/modules/switch/index.d.ts +8 -0
  580. package/lib/typescript/modules/switch/index.d.ts.map +1 -0
  581. package/lib/typescript/modules/tabs/Tabs.d.ts +31 -0
  582. package/lib/typescript/modules/tabs/Tabs.d.ts.map +1 -0
  583. package/lib/typescript/modules/tabs/Tabs.variants.d.ts +114 -0
  584. package/lib/typescript/modules/tabs/Tabs.variants.d.ts.map +1 -0
  585. package/lib/typescript/modules/tabs/index.d.ts +10 -0
  586. package/lib/typescript/modules/tabs/index.d.ts.map +1 -0
  587. package/lib/typescript/modules/textarea/Textarea.d.ts +25 -0
  588. package/lib/typescript/modules/textarea/Textarea.d.ts.map +1 -0
  589. package/lib/typescript/modules/textarea/Textarea.variants.d.ts +99 -0
  590. package/lib/typescript/modules/textarea/Textarea.variants.d.ts.map +1 -0
  591. package/lib/typescript/modules/textarea/index.d.ts +9 -0
  592. package/lib/typescript/modules/textarea/index.d.ts.map +1 -0
  593. package/lib/typescript/modules/timeline/Timeline.d.ts +28 -0
  594. package/lib/typescript/modules/timeline/Timeline.d.ts.map +1 -0
  595. package/lib/typescript/modules/timeline/Timeline.variants.d.ts +103 -0
  596. package/lib/typescript/modules/timeline/Timeline.variants.d.ts.map +1 -0
  597. package/lib/typescript/modules/timeline/index.d.ts +9 -0
  598. package/lib/typescript/modules/timeline/index.d.ts.map +1 -0
  599. package/lib/typescript/modules/toast/Toast.d.ts +38 -0
  600. package/lib/typescript/modules/toast/Toast.d.ts.map +1 -0
  601. package/lib/typescript/modules/toast/Toast.variants.d.ts +80 -0
  602. package/lib/typescript/modules/toast/Toast.variants.d.ts.map +1 -0
  603. package/lib/typescript/modules/toast/index.d.ts +12 -0
  604. package/lib/typescript/modules/toast/index.d.ts.map +1 -0
  605. package/lib/typescript/modules/tooltip/Tooltip.d.ts +31 -0
  606. package/lib/typescript/modules/tooltip/Tooltip.d.ts.map +1 -0
  607. package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts +52 -0
  608. package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts.map +1 -0
  609. package/lib/typescript/modules/tooltip/index.d.ts +9 -0
  610. package/lib/typescript/modules/tooltip/index.d.ts.map +1 -0
  611. package/lib/typescript/package.json +1 -0
  612. package/lib/typescript/theme/index.d.ts +11 -0
  613. package/lib/typescript/theme/index.d.ts.map +1 -0
  614. package/lib/typescript/theme/platform/colorScheme.native.d.ts +12 -0
  615. package/lib/typescript/theme/platform/colorScheme.native.d.ts.map +1 -0
  616. package/lib/typescript/theme/platform/elevation.native.d.ts +35 -0
  617. package/lib/typescript/theme/platform/elevation.native.d.ts.map +1 -0
  618. package/lib/typescript/theme/platform/fonts.native.d.ts +41 -0
  619. package/lib/typescript/theme/platform/fonts.native.d.ts.map +1 -0
  620. package/lib/typescript/theme/platform/index.d.ts +15 -0
  621. package/lib/typescript/theme/platform/index.d.ts.map +1 -0
  622. package/lib/typescript/theme/platform/units.native.d.ts +13 -0
  623. package/lib/typescript/theme/platform/units.native.d.ts.map +1 -0
  624. package/lib/typescript/theme/provider/PixelizeProvider.d.ts +81 -0
  625. package/lib/typescript/theme/provider/PixelizeProvider.d.ts.map +1 -0
  626. package/lib/typescript/theme/provider/colorModeStorage.d.ts +43 -0
  627. package/lib/typescript/theme/provider/colorModeStorage.d.ts.map +1 -0
  628. package/lib/typescript/theme/provider/index.d.ts +8 -0
  629. package/lib/typescript/theme/provider/index.d.ts.map +1 -0
  630. package/lib/typescript/theme/provider/useTheme.d.ts +4 -0
  631. package/lib/typescript/theme/provider/useTheme.d.ts.map +1 -0
  632. package/lib/typescript/theme/provider/useThemeColors.d.ts +9 -0
  633. package/lib/typescript/theme/provider/useThemeColors.d.ts.map +1 -0
  634. package/lib/typescript/theme/provider/useThemeMode.d.ts +4 -0
  635. package/lib/typescript/theme/provider/useThemeMode.d.ts.map +1 -0
  636. package/lib/typescript/theme/tokens/brands/emerald/palette.dark.d.ts +3 -0
  637. package/lib/typescript/theme/tokens/brands/emerald/palette.dark.d.ts.map +1 -0
  638. package/lib/typescript/theme/tokens/brands/emerald/palette.light.d.ts +4 -0
  639. package/lib/typescript/theme/tokens/brands/emerald/palette.light.d.ts.map +1 -0
  640. package/lib/typescript/theme/tokens/brands/index.d.ts +30 -0
  641. package/lib/typescript/theme/tokens/brands/index.d.ts.map +1 -0
  642. package/lib/typescript/theme/tokens/brands/lavender/palette.dark.d.ts +3 -0
  643. package/lib/typescript/theme/tokens/brands/lavender/palette.dark.d.ts.map +1 -0
  644. package/lib/typescript/theme/tokens/brands/lavender/palette.light.d.ts +4 -0
  645. package/lib/typescript/theme/tokens/brands/lavender/palette.light.d.ts.map +1 -0
  646. package/lib/typescript/theme/tokens/brands/meadow/palette.dark.d.ts +3 -0
  647. package/lib/typescript/theme/tokens/brands/meadow/palette.dark.d.ts.map +1 -0
  648. package/lib/typescript/theme/tokens/brands/meadow/palette.light.d.ts +4 -0
  649. package/lib/typescript/theme/tokens/brands/meadow/palette.light.d.ts.map +1 -0
  650. package/lib/typescript/theme/tokens/brands/radiant/palette.dark.d.ts +3 -0
  651. package/lib/typescript/theme/tokens/brands/radiant/palette.dark.d.ts.map +1 -0
  652. package/lib/typescript/theme/tokens/brands/radiant/palette.light.d.ts +4 -0
  653. package/lib/typescript/theme/tokens/brands/radiant/palette.light.d.ts.map +1 -0
  654. package/lib/typescript/theme/tokens/brands/rosewood/palette.dark.d.ts +3 -0
  655. package/lib/typescript/theme/tokens/brands/rosewood/palette.dark.d.ts.map +1 -0
  656. package/lib/typescript/theme/tokens/brands/rosewood/palette.light.d.ts +4 -0
  657. package/lib/typescript/theme/tokens/brands/rosewood/palette.light.d.ts.map +1 -0
  658. package/lib/typescript/theme/tokens/brands/skyline/palette.dark.d.ts +3 -0
  659. package/lib/typescript/theme/tokens/brands/skyline/palette.dark.d.ts.map +1 -0
  660. package/lib/typescript/theme/tokens/brands/skyline/palette.light.d.ts +4 -0
  661. package/lib/typescript/theme/tokens/brands/skyline/palette.light.d.ts.map +1 -0
  662. package/lib/typescript/theme/tokens/brands/slate/palette.dark.d.ts +3 -0
  663. package/lib/typescript/theme/tokens/brands/slate/palette.dark.d.ts.map +1 -0
  664. package/lib/typescript/theme/tokens/brands/slate/palette.light.d.ts +4 -0
  665. package/lib/typescript/theme/tokens/brands/slate/palette.light.d.ts.map +1 -0
  666. package/lib/typescript/theme/tokens/brands/storefront/palette.dark.d.ts +3 -0
  667. package/lib/typescript/theme/tokens/brands/storefront/palette.dark.d.ts.map +1 -0
  668. package/lib/typescript/theme/tokens/brands/storefront/palette.light.d.ts +4 -0
  669. package/lib/typescript/theme/tokens/brands/storefront/palette.light.d.ts.map +1 -0
  670. package/lib/typescript/theme/tokens/brands/zinc/palette.dark.d.ts +4 -0
  671. package/lib/typescript/theme/tokens/brands/zinc/palette.dark.d.ts.map +1 -0
  672. package/lib/typescript/theme/tokens/brands/zinc/palette.light.d.ts +4 -0
  673. package/lib/typescript/theme/tokens/brands/zinc/palette.light.d.ts.map +1 -0
  674. package/lib/typescript/theme/tokens/builders/accentText.d.ts +42 -0
  675. package/lib/typescript/theme/tokens/builders/accentText.d.ts.map +1 -0
  676. package/lib/typescript/theme/tokens/builders/buildBrandTokens.d.ts +21 -0
  677. package/lib/typescript/theme/tokens/builders/buildBrandTokens.d.ts.map +1 -0
  678. package/lib/typescript/theme/tokens/builders/buildDarkPalette.d.ts +13 -0
  679. package/lib/typescript/theme/tokens/builders/buildDarkPalette.d.ts.map +1 -0
  680. package/lib/typescript/theme/tokens/builders/color.d.ts +59 -0
  681. package/lib/typescript/theme/tokens/builders/color.d.ts.map +1 -0
  682. package/lib/typescript/theme/tokens/index.d.ts +21 -0
  683. package/lib/typescript/theme/tokens/index.d.ts.map +1 -0
  684. package/lib/typescript/theme/tokens/primitives/borderWidths.d.ts +15 -0
  685. package/lib/typescript/theme/tokens/primitives/borderWidths.d.ts.map +1 -0
  686. package/lib/typescript/theme/tokens/primitives/breakpoints.d.ts +17 -0
  687. package/lib/typescript/theme/tokens/primitives/breakpoints.d.ts.map +1 -0
  688. package/lib/typescript/theme/tokens/primitives/elevation.d.ts +109 -0
  689. package/lib/typescript/theme/tokens/primitives/elevation.d.ts.map +1 -0
  690. package/lib/typescript/theme/tokens/primitives/fontSizes.d.ts +21 -0
  691. package/lib/typescript/theme/tokens/primitives/fontSizes.d.ts.map +1 -0
  692. package/lib/typescript/theme/tokens/primitives/fontWeights.d.ts +21 -0
  693. package/lib/typescript/theme/tokens/primitives/fontWeights.d.ts.map +1 -0
  694. package/lib/typescript/theme/tokens/primitives/index.d.ts +23 -0
  695. package/lib/typescript/theme/tokens/primitives/index.d.ts.map +1 -0
  696. package/lib/typescript/theme/tokens/primitives/letterSpacings.d.ts +17 -0
  697. package/lib/typescript/theme/tokens/primitives/letterSpacings.d.ts.map +1 -0
  698. package/lib/typescript/theme/tokens/primitives/lineHeights.d.ts +20 -0
  699. package/lib/typescript/theme/tokens/primitives/lineHeights.d.ts.map +1 -0
  700. package/lib/typescript/theme/tokens/primitives/radii.d.ts +20 -0
  701. package/lib/typescript/theme/tokens/primitives/radii.d.ts.map +1 -0
  702. package/lib/typescript/theme/tokens/primitives/sizes.d.ts +33 -0
  703. package/lib/typescript/theme/tokens/primitives/sizes.d.ts.map +1 -0
  704. package/lib/typescript/theme/tokens/primitives/space.d.ts +29 -0
  705. package/lib/typescript/theme/tokens/primitives/space.d.ts.map +1 -0
  706. package/lib/typescript/theme/tokens/primitives/zIndices.d.ts +22 -0
  707. package/lib/typescript/theme/tokens/primitives/zIndices.d.ts.map +1 -0
  708. package/lib/typescript/theme/tokens/roles/index.d.ts +68 -0
  709. package/lib/typescript/theme/tokens/roles/index.d.ts.map +1 -0
  710. package/lib/typescript/theme/tokens/types.d.ts +103 -0
  711. package/lib/typescript/theme/tokens/types.d.ts.map +1 -0
  712. package/package.json +259 -0
  713. package/registry.json +175 -0
@@ -0,0 +1,198 @@
1
+ # bottom-nav/ — a fixed bottom tab bar with a searchable, editable overflow sheet
2
+
3
+ `BottomNav` is a fixed bar (core tab slots + a trailing "More" slot) that presents its overflow
4
+ destinations, search, and an opt-in "Edit tabs" flow inside this library's OWN `Drawer` (`../drawer`)
5
+ — consumed exactly as a consuming app would, through its public `index.ts`, never Drawer's internal
6
+ `Drawer.variants.ts`. Every one of Drawer's WCAG escape hooks (backdrop press, Android hardware back,
7
+ iOS VoiceOver escape, the web-portal opt-in) is inherited for free.
8
+
9
+ Ships to four apps (crm-mobile, ecommerce-mobile, tickets-native, future RN apps) — see "API
10
+ stability contract" below, the actual deliverable of this module.
11
+
12
+ ## Files
13
+
14
+ | File | Role |
15
+ |------|------|
16
+ | `BottomNav.tsx` | The component. The fixed bar: per-tab focus tracking, the active-indicator render, press → `onDestinationPress` wiring, composing `Drawer` as the sheet's shell. Data types (`BottomNavDestination`, `BottomNavOverflowSection`, `BottomNavActiveState`, `BottomNavEditConfig`) live here, same precedent as Select's `SelectOption`. |
17
+ | `BottomNavOverflowSheet.tsx` | PRIVATE (not exported) — the sheet's content: search (reuses `../input`'s `Input`), pre-search Recent row, grouped sections, edit mode, no-results state. |
18
+ | `BottomNav.variants.ts` | Pure resolvers (`resolveBottomNavTabColors`, `resolveBottomNavAccessibility`, `resolveEditRowState`, `resolveBottomNavBottomInset`, `resolveOverflowSheetHeight`) + themed structural resolvers (`bottomNavBarStructure`, `bottomNavTabStructure`, `overflowRowStructure`, `overflowSectionHeaderStructure`, `editRowStructure`). No React, no lucide. |
19
+ | `BottomNav.search.ts` | Pure, framework-free (no React, no `react-native` import): `normalizeQuery`, `levenshteinDistance`, `typoBudget`, `fuzzyScore`, `matchDestinations`. Own file — ranking correctness is orthogonal to colour/structure. |
20
+ | `index.ts` | Public surface: `BottomNav`, `BottomNavProps`, `BottomNavActiveState`, `BottomNavDestination`, `BottomNavOverflowSection`, `BottomNavEditConfig`. Re-exports `MenuItem` (from `../menu`) and `IconName`. |
21
+ | `__tests__/BottomNav.test.ts` | Pure: WCAG contrast (8 brands × both modes), touch-target floor, accessibility/edit-row/inset/detent resolvers. |
22
+ | `__tests__/BottomNav.search.test.ts` | Pure: levenshtein/typo-budget arithmetic, `fuzzyScore` tiering, `matchDestinations` ranking/stability/empty-query. |
23
+ | `__tests__/BottomNav.render.test.tsx` | Render: press wiring, sheet open/close, live typo-tolerant search, Recent/grouped/no-results, edit-mode flow, opt-in quick-actions trigger. |
24
+
25
+ ## Props
26
+
27
+ | Prop | Type | Default | Notes |
28
+ |------|------|---------|-------|
29
+ | `coreTabs` | `BottomNavDestination[]` | — | Required. ~4–5 is the practical range for a comfortable touch target (width is screen-dependent — see Known gaps). |
30
+ | `active` | `BottomNavActiveState` | — | Required. `{ kind: "core" \| "more" \| "none" }`. |
31
+ | `onDestinationPress` | `(id: string) => void` | — | Required. Fires for every navigation intent — core tab, Recent row, or sheet row. Also the app's only "log a visit" signal. |
32
+ | `moreLabel` / `moreIcon` | `string` / `IconName` | — | Required, no defaults — always app-supplied copy/icon. |
33
+ | `moreVisible` / `onMoreVisibleChange` | `boolean` / `(visible) => void` | — | Required. Controlled, `Switch`-style symmetric pair (see below). |
34
+ | `overflowSections` | `BottomNavOverflowSection[]` | — | Required. A section's `label` is optional — omit for a flat/ungrouped section. |
35
+ | `recent` | `BottomNavDestination[]` | `[]` | Most-recent-first. Never reordered/truncated/persisted — omit or `[]` hides the row. |
36
+ | `searchPlaceholder` / `searchAccessibilityLabel` | `string` | `"Search"` / = placeholder | |
37
+ | `recentLabel` / `noResultsLabel` | `string` | `"Recent"` / `"No matches"` | |
38
+ | `edit` | `BottomNavEditConfig` | — | Omit → NO edit affordance renders anywhere (atomically opt-in). |
39
+ | `moreQuickActions` | `MenuItem[]` (from `../menu`) | — | Omit → no quick-actions trigger renders at all. |
40
+ | `moreQuickActionsLabel` | `string` | `"More options"` | `accessibilityLabel` for the trigger badge. |
41
+ | `style` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
42
+ | `testID` | `string` | — | Seeds `-tab-${id}[-indicator]`, `-more[-indicator]`, `-more-quick-actions[-menu]`, `-sheet` (+ Drawer's own `-panel`/`-backdrop`), `-sheet-search`, `-sheet-recent-${id}`, `-sheet-result-${id}`, `-sheet-edit-toggle`, `-sheet-edit-slots`, `-sheet-edit-slot-${i}`, `-sheet-reset`, `-sheet-no-results`. |
43
+
44
+ `BottomNavEditConfig`: `editing` / `onEditingChange` (controlled), `onPinChange(slotIndex, destination)`,
45
+ optional `onResetToDefault` (omit → no reset row), optional `editLabel`/`doneLabel`/`resetLabel`
46
+ (default "Edit"/"Done"/"Reset to default").
47
+
48
+ No `variant`/`size`/`tone` in v1 — one fixed shape, same stance Drawer takes for itself.
49
+
50
+ ## Interaction model
51
+
52
+ - **Core tab press**: `onDestinationPress(id)`. **More press**: `onMoreVisibleChange(true)`.
53
+ - **Sheet row press** (Recent or search/grouped result, not editing): `onDestinationPress(id)`, then
54
+ `onMoreVisibleChange(false)` — selection always closes the sheet in v1.
55
+ - **Edit mode** (only when `edit` is supplied): the sheet renders its own "Edit"/"Done" header toggle.
56
+ Entering edit mode (the false→true transition) defaults the internal `selectedSlotIndex` to the
57
+ first core-tab slot (`0`) rather than leaving it unselected, so the very first destination tap
58
+ always pins somewhere instead of a silent no-op with no visible cause. While editing, `coreTabs`
59
+ render as a small chip list at the top (tap a chip → change the target slot, shown by a fading dot +
60
+ bold label, never colour alone; tapping the already-selected chip again deselects back to none).
61
+ Tapping a row below while a slot is selected fires `edit.onPinChange(selectedSlotIndex, destination)`
62
+ and clears the selection; with no slot selected (only reachable by deselecting the default), a row
63
+ press while editing is a no-op. `edit.onResetToDefault`, when provided, renders a "Reset to default"
64
+ row that calls it with no arguments.
65
+ - **Quick actions** (only when `moreQuickActions` supplied): a small icon-only `Button` badge
66
+ (`icon="more-horizontal"`) sits as a corner adornment on the More tab, its own ≥44dp target,
67
+ `accessibilityLabel={moreQuickActionsLabel}` — a required VISIBLE affordance, not a long-press
68
+ secret. It's the `trigger` handed to `Menu`.
69
+ - **Why tap-to-pin, not a Reorder-style drag:** pinning is content-SUBSTITUTION (which destination
70
+ fills a fixed slot), not position-PERMUTATION (Reorder's job). Dragging a bar tab while a scrollable
71
+ sheet is open underneath is a far harder gesture surface, and would inherit Reorder's own WCAG 2.5.7
72
+ non-dragging-alternative obligation. Tap-select-slot → tap-select-destination reuses existing
73
+ Pressable/Button idioms with no drag path to design an alternative for.
74
+
75
+ ## Controlled-state contract
76
+
77
+ Every piece of state was tested against one question: does anything OUTSIDE this component plausibly
78
+ need to read or set it?
79
+
80
+ | State | Owner | Mechanism |
81
+ |---|---|---|
82
+ | Which destination is showing | **App** | `active` — no router of its own, same reasoning as Select's `value`. |
83
+ | Overflow sheet open | **App** | `moreVisible`/`onMoreVisibleChange` — matches Drawer/Modal's controlled `visible`. |
84
+ | Recently-visited | **App** | `recent` in; `onDestinationPress` doubles as the "log a visit" signal out. |
85
+ | Pinned core slots | **App** | `coreTabs` in; `edit.onPinChange(slotIndex, destination)` out — app already owns `coreTabs`, so the payload stays minimal. |
86
+ | "Edit tabs" mode | **App** | `edit.editing`/`onEditingChange` — mirrors `moreVisible` (an external "Customize tabs" entry point, or force-exit on backgrounding). |
87
+ | Search box text | **Library** | internal `useState` in the sheet — resets for free on close. |
88
+ | Pin-target slot mid-edit | **Library** | internal `useState` — app only learns the FINAL pin via `onPinChange`; also cleared the instant `edit.editing` turns false out from under it. |
89
+ | Per-tab keyboard/AT focus | **Library** | internal `useState` in `BottomNav` — same idiom Button/Input/Select use for their own focus rings. |
90
+
91
+ **One deliberate naming divergence from Drawer:** Drawer's `visible`/`onRequestClose` split exists
92
+ because Drawer never initiates its own opening. BottomNav's More tab is an INTERNAL trigger, so both
93
+ open and close flow back through the app's state — a single `onMoreVisibleChange(visible)`, the same
94
+ idiom a controlled `<Switch value={x} onValueChange={setX} />` uses. `edit` follows the same reasoning.
95
+
96
+ **Net result:** the app is the only party that ever persists `recent`/`coreTabs` — this module never
97
+ imports `@react-native-async-storage/async-storage` and never reads a value it wasn't handed as a prop.
98
+
99
+ ## Accessibility contract (WCAG)
100
+
101
+ - **4.1.2** — bar container `accessibilityRole="tablist"`; each core tab and the More slot
102
+ `accessibilityRole="tab"` with `accessibilityState={{ selected, expanded }}` (`expanded` on More
103
+ only, tracking `moreVisible`). Sheet rows are `accessibilityRole="menuitem"`; section headers are
104
+ `accessibilityRole="header"` (same role Modal uses for its title).
105
+ - **2.5.x target size** — `BOTTOM_NAV_HEIGHT` (56dp) asserted ≥ 44dp in a pure unit test, same
106
+ `height ≥ MIN_TOUCH_TARGET` idiom Button/Select/Reorder use. Tab WIDTH is screen-width-dependent
107
+ (`flex: 1` across `coreTabs.length + 1`) — see Known gaps.
108
+ - **1.4.1 (use of colour)** — selection conveyed by MORE than colour: a small filled dot rendered ONLY
109
+ when active (presence/absence, never a re-tint), plus the label's font WEIGHT switching
110
+ semibold/regular. The edit-mode slot chip's pin-target indicator follows the identical principle.
111
+ - **1.4.3 / 1.4.11** — `resolveBottomNavTabColors` measured ≥ 4.5:1 (label) and ≥ 3:1 (icon +
112
+ indicator) against the bar's own `bg.surface`, active AND inactive, across all 8 brands × both
113
+ modes, in `BottomNav.test.ts` — never eyeballed.
114
+ - **2.3.3** — the edit-mode slot indicator's fade collapses to an instant `setValue` under
115
+ `useReducedMotion()`; the sheet's own slide/fade is inherited transitively through Drawer.
116
+ - **2.4.7 / 2.4.11** — a `border.focus` offset ring on keyboard/AT focus per tab, identical pattern to
117
+ Button/Input's own ring.
118
+ - **2.5.7 (Dragging)** — not applicable: no drag interaction anywhere in this module.
119
+ - The overflow sheet inherits Drawer's own accessibility contract wholesale
120
+ (`accessibilityViewIsModal`, `onAccessibilityEscape`, Android hardware back, backdrop
121
+ `accessible={false}`) with zero re-derivation.
122
+
123
+ ## API stability contract
124
+
125
+ `BottomNav` ships to four apps that must never break on a routine update. Every prop is **frozen**, an
126
+ **extension point**, or **out of contract**.
127
+
128
+ **Frozen (v1 required surface):** `coreTabs`, `active`, `onDestinationPress`, `moreLabel`, `moreIcon`,
129
+ `moreVisible`, `onMoreVisibleChange`, `overflowSections` — every consumer must pass these day one;
130
+ their SHAPE (not contents) is frozen. `BottomNavDestination`'s required fields (`id`, `label`, `icon`)
131
+ and `BottomNavOverflowSection`'s (`id`, `destinations`) are likewise frozen.
132
+
133
+ **Documented extension points (purely additive, safe defaults):** `recent`, `searchPlaceholder`,
134
+ `searchAccessibilityLabel`, `recentLabel`, `noResultsLabel`, `edit`, `moreQuickActions`,
135
+ `moreQuickActionsLabel`, `style`, `testID` — every one optional; a caller who never passes them keeps
136
+ working, unchanged, forever. `BottomNavOverflowSection.label` is optional — an unlabelled single
137
+ section is first-class v1, not a workaround. `edit`/`moreQuickActions` are this library's first
138
+ "opt-in feature bundle" props (a config object / typed array, not a flat prop) — worth a second look
139
+ at future build time, not a silent precedent-break.
140
+
141
+ **The rule for landing new capability without a version-bump breaking anyone:**
142
+ 1. New capability = a new OPTIONAL prop (or optional field) whose absence reproduces today's exact
143
+ behaviour — never a new required prop/field. E.g. an unread-count badge lands as
144
+ `BottomNavDestination.badge?: { count: number }`; a compact bar lands as `size?: "regular" |
145
+ "compact"` defaulting `"regular"`.
146
+ 2. Closed unions (`BottomNavActiveState.kind`) may gain NEW MEMBERS, never rename/remove one. A future
147
+ `{ kind: "search" }` is additive at runtime — existing callers never construct it. The one caveat:
148
+ an exhaustive `switch` over `.kind` fails to compile until a case is added — TypeScript correctly
149
+ flagging a real decision, not a runtime break, called out in the changeset's migration note.
150
+ 3. Callbacks may grow new TRAILING parameters without breaking existing handlers — a narrower
151
+ `(id) => {...}` still satisfies a future `onDestinationPress: (id, meta) => void` because it never
152
+ reads the new argument.
153
+ 4. `style` stays `LayoutStyle` — never widened, never a second `style`-shaped prop. No `color` prop is
154
+ ever added; every colour stays role-token-driven through `BottomNav.variants.ts`. `icon`/`moreIcon`
155
+ stay `IconName` — the closed set may grow (as it does here, for `more-horizontal`), but a
156
+ destination's icon is never a `ReactNode`.
157
+ 5. A genuinely new interaction model that can't be expressed as an optional add-on (drag-based
158
+ pinning, true multi-detent sheet physics) is a NEW component or a planned, cross-app-coordinated
159
+ major reshape — never a silent shape change in a routine PR.
160
+ 6. Every additive change ships as a `@changesets/cli` minor (patch for internal-only fixes) per this
161
+ repo's real-semver discipline. A required-prop shape change is a major, called out as such with a
162
+ migration note for each of the four consuming apps.
163
+
164
+ **Explicitly out of contract:** no `variant`/`size`/`tone` yet (single fixed shape, matching Drawer's
165
+ own v1 stance); no `coreTabs.length` enforcement (renders whatever it's given; 4–5 is documentation,
166
+ not a runtime guarantee); core tabs are not independently searchable from the sheet's search box
167
+ (search covers `overflowSections` only — see Known gaps).
168
+
169
+ ## Known gaps
170
+
171
+ - **Fuzzy-search algorithm scope.** The pure from-scratch scorer follows this library's "no new
172
+ dependency" bar (Reorder's own precedent), but its real typo-tolerance quality against a real
173
+ 10–20-item CRM destination list hasn't been validated against a user. A small fuzzy-match library as
174
+ an optional peer dependency is a legitimate fallback if quality falls short, behind the same
175
+ `matchDestinations` signature.
176
+ - **Edit-mode's two-step tap flow** (select a slot, then a destination to pin into it) is one
177
+ reasonable design among a few. A real QA pass (2026-07-17) found the original "nothing selected by
178
+ default" start state made the first destination tap a confusing silent no-op — fixed by defaulting
179
+ to slot 0 on entry (see Interaction model). The PROP CONTRACT (`edit.onPinChange(slotIndex,
180
+ destination)`) is stable regardless of the exact tap sequence.
181
+ - **The sheet's "medium detent" is a fixed-height approximation** (`resolveOverflowSheetHeight`), not
182
+ true native multi-detent physics (no drag-to-expand). A real fix is a `detents` prop on Drawer itself
183
+ — out of scope for this module to solve unilaterally.
184
+ - **Core-tab touch-target WIDTH is screen-width-dependent** and only partially unit-tested (HEIGHT
185
+ floor only). An app that ignores the 4–5-tab guidance needs a manual/QA pass to confirm ≥44dp.
186
+ - **`resolveBottomNavBottomInset`'s iOS home-indicator constant is carried independently**, the same
187
+ static-approximation gap Drawer's and Toast's own MODULE.md each already record separately
188
+ (`react-native-safe-area-context` is an optional peer, not a real dependency, today). Revisit once
189
+ that package becomes a real peer dependency and reconcile all three into one shared helper.
190
+ - **The `more-horizontal` icon addition to `core/icon`'s shared registry** is a small, additive,
191
+ shared-primitive change bundled into this build (needed for the More tab's default icon and the
192
+ quick-actions trigger glyph) — confirm at release time whether it wants its own changeset entry.
193
+ - **No long-press acceleration on the whole More tab** — deliberately deferred; the quick-actions
194
+ trigger is a real ≥44dp affordance, not undiscoverable-only, so nothing is missing for WCAG.
195
+
196
+ ## Performance
197
+
198
+ `BottomNav`, and the internal (non-exported) `BottomNavOverflowSheet`/`EditSlotChip`, are wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`) — the sheet/chip need it too or the callback stabilization below is a no-op. `closeSheet`/`handleSheetPress` and (in the overflow sheet) `handleEditToggle`/`handleSlotPress` are `useCallback`'d; a module-level `EMPTY_RECENT` constant replaces `recent ?? []` (was a fresh array every render); the `Menu` trigger element is `useMemo`'d (was a freshly-created element every render, which would defeat `Menu`'s own memo); `EditSlotChip`'s `onPress` now takes `(index: number) => void` so every chip gets the SAME stable function instead of a per-item closure.
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Public surface of `pixelize-native-library/bottom-nav`. Value exports and type exports are split
5
+ * for `verbatimModuleSyntax`. `BottomNavOverflowSheet`, `BottomNav.variants.ts`, and
6
+ * `BottomNav.search.ts` stay internal — same status as every sibling module's private pieces
7
+ * (e.g. Reorder's `ReorderRow`) — a consumer configures a BottomNav through its props, never by
8
+ * importing its internals.
9
+ */
10
+
11
+ export { BottomNav } from "./BottomNav.js";
12
+
13
+ // Re-exported so a caller can type `moreQuickActions` without a separate import from `../menu`.
14
+
15
+ // Re-exported so a caller can type a destination's `icon` without a separate import from `core/icon`.
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BottomNav"],"sourceRoot":"../../../../src","sources":["modules/bottom-nav/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,SAAS,QAAQ,gBAAa;;AASvC;;AAGA","ignoreList":[]}
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Button — the reference component. The single most-repeated shape in the audited apps (81 raw
5
+ * TouchableOpacity in crm-mobile, 155 in ecommerce-mobile with three different style-key sets for the
6
+ * SAME add-to-cart button, 195 web usages). Every other module copies the patterns here: how variants
7
+ * resolve, how `tone` maps to role colours, how accessibility is wired, and the shape of the tests.
8
+ */
9
+
10
+ import { memo, useRef, useState } from "react";
11
+ import { ActivityIndicator, Animated, Pressable, StyleSheet, Text, View } from "react-native";
12
+ import { useReducedMotion } from "../../core/a11y/index.js";
13
+ import { Icon } from "../../core/icon/index.js";
14
+ import { useTheme } from "../../theme/index.js";
15
+ import { BUTTON_SIZES, buttonStructure, resolveButtonAccessibility, resolveButtonTone } from "./Button.variants.js";
16
+
17
+ /** A button with a visible text label. `accessibilityLabel` defaults to `label`. */
18
+
19
+ /**
20
+ * An icon-only button. It has no visible text, so `accessibilityLabel` is REQUIRED at the type level
21
+ * — the single worst a11y trap on web (its tooltip was the only label on icon-only buttons in 22
22
+ * files, and tooltips do not exist on touch). `label?: never` makes the two shapes mutually exclusive.
23
+ */
24
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
25
+ const PRESS_FADE_MS = 120;
26
+ const ICON_STROKE = 2;
27
+ // State-layer scrims. Direction is chosen by the label's brightness so the fill moves AWAY from the
28
+ // label on press — its contrast can only rise. 8-digit hex carries the alpha (~15%) directly.
29
+ const PRESS_SCRIM_DARK = "#00000026";
30
+ const PRESS_SCRIM_LIGHT = "#ffffff26";
31
+ // The focus ring sits a small gap OUTSIDE the control, on the canvas, because `border.focus` is the
32
+ // role token proven ≥ 3:1 against the canvas (WCAG 2.4.11) — drawn over a solid fill it could fail.
33
+ const FOCUS_RING_WIDTH = 2;
34
+ const FOCUS_RING_GAP = 2;
35
+
36
+ /** Cheap perceived-brightness split; `onFill` is only ever a near-white or near-black role value. */
37
+ function isLight(hex) {
38
+ const n = parseInt(hex.slice(1, 7), 16);
39
+ const r = n >> 16 & 0xff;
40
+ const g = n >> 8 & 0xff;
41
+ const b = n & 0xff;
42
+ return r * 0.299 + g * 0.587 + b * 0.114 > 140;
43
+ }
44
+ function ButtonImpl(props) {
45
+ const {
46
+ variant = "solid",
47
+ size = "md",
48
+ tone = "accent",
49
+ icon,
50
+ iconPosition = "leading",
51
+ loading = false,
52
+ disabled = false,
53
+ fullWidth = false,
54
+ onPress,
55
+ style,
56
+ testID,
57
+ label,
58
+ accessibilityLabel
59
+ } = props;
60
+ const theme = useTheme();
61
+ const reducedMotion = useReducedMotion();
62
+ const overlay = useRef(new Animated.Value(0)).current;
63
+ // Keyboard / external-keyboard / assistive-tech focus (no-op on pure touch, correct everywhere else).
64
+ const [focused, setFocused] = useState(false);
65
+ const spec = BUTTON_SIZES[size];
66
+ const toneColors = resolveButtonTone(theme.colors, tone);
67
+ const iconOnly = label === undefined;
68
+ const foreground = variant === "solid" ? toneColors.onFill : toneColors.text;
69
+ const overlayColor = variant === "solid" ? isLight(toneColors.onFill) ? PRESS_SCRIM_DARK : PRESS_SCRIM_LIGHT : toneColors.subtle;
70
+ const a11y = resolveButtonAccessibility({
71
+ label,
72
+ accessibilityLabel,
73
+ disabled,
74
+ loading,
75
+ onPress
76
+ });
77
+ const setPressed = pressed => {
78
+ Animated.timing(overlay, {
79
+ toValue: pressed ? 1 : 0,
80
+ duration: reducedMotion ? 0 : PRESS_FADE_MS,
81
+ useNativeDriver: true
82
+ }).start();
83
+ };
84
+ const glyph = name => /*#__PURE__*/_jsx(Icon, {
85
+ name: name,
86
+ size: spec.iconSize,
87
+ color: foreground,
88
+ strokeWidth: ICON_STROKE
89
+ });
90
+
91
+ // The spinner is never the sole loading signal — `accessibilityState.busy` announces it, and the
92
+ // label (when present) stays visible. Hidden from AT so it isn't read as a separate element.
93
+ const spinner = /*#__PURE__*/_jsx(ActivityIndicator, {
94
+ size: "small",
95
+ color: foreground,
96
+ accessibilityElementsHidden: true,
97
+ importantForAccessibility: "no-hide-descendants"
98
+ });
99
+ const leading = loading ? spinner : icon && (iconPosition === "leading" || iconOnly) ? glyph(icon) : null;
100
+ const trailing = !loading && icon && iconPosition === "trailing" && !iconOnly ? glyph(icon) : null;
101
+ return /*#__PURE__*/_jsxs(Pressable, {
102
+ testID: testID,
103
+ accessibilityRole: a11y.accessibilityRole,
104
+ accessibilityLabel: a11y.accessibilityLabel,
105
+ accessibilityState: a11y.accessibilityState,
106
+ disabled: a11y.disabled,
107
+ onPress: a11y.onPress,
108
+ onPressIn: () => setPressed(true),
109
+ onPressOut: () => setPressed(false),
110
+ onFocus: () => setFocused(true),
111
+ onBlur: () => setFocused(false),
112
+ hitSlop: spec.hitSlop,
113
+ style: [buttonStructure(theme, {
114
+ variant,
115
+ size
116
+ }), variant === "solid" && {
117
+ backgroundColor: toneColors.fill
118
+ }, variant === "outline" && {
119
+ borderColor: toneColors.border
120
+ }, iconOnly && {
121
+ paddingHorizontal: 0,
122
+ minWidth: spec.height
123
+ }, fullWidth && styles.fullWidth, (disabled || loading) && styles.dimmed, style],
124
+ children: [/*#__PURE__*/_jsx(Animated.View, {
125
+ pointerEvents: "none"
126
+ // Matches the control's own radius: the control isn't `overflow: hidden` (that would clip the
127
+ // focus ring below), so the state layer rounds itself instead of showing square corners.
128
+ ,
129
+ style: [StyleSheet.absoluteFill, {
130
+ backgroundColor: overlayColor,
131
+ opacity: overlay,
132
+ borderRadius: theme.radii.base
133
+ }]
134
+ }), focused && /*#__PURE__*/_jsx(View, {
135
+ pointerEvents: "none",
136
+ testID: "button-focus-ring",
137
+ style: {
138
+ position: "absolute",
139
+ top: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
140
+ left: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
141
+ right: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
142
+ bottom: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
143
+ borderWidth: FOCUS_RING_WIDTH,
144
+ borderColor: theme.colors.border.focus,
145
+ borderRadius: theme.radii.base + FOCUS_RING_GAP + FOCUS_RING_WIDTH
146
+ }
147
+ }), leading, label !== undefined && /*#__PURE__*/_jsx(Text, {
148
+ numberOfLines: 1,
149
+ style: [theme.fontStyleForWeight(theme.fontWeights.semibold), {
150
+ fontSize: spec.fontSize,
151
+ color: foreground
152
+ }, variant === "link" && styles.linkText],
153
+ children: label
154
+ }), trailing]
155
+ });
156
+ }
157
+ const styles = StyleSheet.create({
158
+ fullWidth: {
159
+ alignSelf: "stretch"
160
+ },
161
+ // A disabled control is exempt from the contrast minimum (WCAG 1.4.3), so a uniform dim is correct.
162
+ dimmed: {
163
+ opacity: 0.5
164
+ },
165
+ linkText: {
166
+ textDecorationLine: "underline"
167
+ }
168
+ });
169
+
170
+ // A consumer's screen re-renders far more often than Button's own props change — memo is near-free
171
+ // insurance for a design-system primitive (see CLAUDE.md "Performance — no unnecessary re-renders").
172
+ export const Button = /*#__PURE__*/memo(ButtonImpl);
173
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useRef","useState","ActivityIndicator","Animated","Pressable","StyleSheet","Text","View","useReducedMotion","Icon","useTheme","BUTTON_SIZES","buttonStructure","resolveButtonAccessibility","resolveButtonTone","jsx","_jsx","jsxs","_jsxs","PRESS_FADE_MS","ICON_STROKE","PRESS_SCRIM_DARK","PRESS_SCRIM_LIGHT","FOCUS_RING_WIDTH","FOCUS_RING_GAP","isLight","hex","n","parseInt","slice","r","g","b","ButtonImpl","props","variant","size","tone","icon","iconPosition","loading","disabled","fullWidth","onPress","style","testID","label","accessibilityLabel","theme","reducedMotion","overlay","Value","current","focused","setFocused","spec","toneColors","colors","iconOnly","undefined","foreground","onFill","text","overlayColor","subtle","a11y","setPressed","pressed","timing","toValue","duration","useNativeDriver","start","glyph","name","iconSize","color","strokeWidth","spinner","accessibilityElementsHidden","importantForAccessibility","leading","trailing","accessibilityRole","accessibilityState","onPressIn","onPressOut","onFocus","onBlur","hitSlop","backgroundColor","fill","borderColor","border","paddingHorizontal","minWidth","height","styles","dimmed","children","pointerEvents","absoluteFill","opacity","borderRadius","radii","base","position","top","left","right","bottom","borderWidth","focus","numberOfLines","fontStyleForWeight","fontWeights","semibold","fontSize","linkText","create","alignSelf","textDecorationLine","Button"],"sourceRoot":"../../../../src","sources":["modules/button/Button.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Button's style + behaviour resolution — the three pure functions the component (and its tests)
5
+ * depend on, plus the themed structural variant resolver.
6
+ *
7
+ * The split every one of the 16 sibling components should copy:
8
+ * - STRUCTURE / SIZE (numbers off the theme scale) lives in the `createThemedVariants` resolver
9
+ * below — static per (brand, mode), registered once via `StyleSheet.create`.
10
+ * - COLOUR is tone-driven and resolved by `resolveButtonTone` from the theme's ROLE colours, never
11
+ * a raw ramp and never a hardcoded hex. That is what keeps `tone` a closed union, not a `color`.
12
+ * - ACCESSIBILITY prop derivation is `resolveButtonAccessibility`, kept pure so the "disabled blocks
13
+ * press / loading is busy" contract is unit-testable without rendering React Native.
14
+ *
15
+ * Everything here is free of `lucide` and of any React tree, so the WCAG + behaviour tests import it
16
+ * directly (mocking only `react-native`'s `StyleSheet`, as `core/style` does).
17
+ */
18
+
19
+ import { createThemedVariants } from "../../core/style/index.js";
20
+ /**
21
+ * The one touch-target floor we hold every size to. 44dp is Apple's HIG minimum and WCAG 2.5.5
22
+ * (AAA); it comfortably exceeds 2.5.8's 24×24 (AA). Sizes shorter than this keep their visual
23
+ * height and reach 44 through `hitSlop` — the target grows, the control never does.
24
+ */
25
+ export const MIN_TOUCH_TARGET = 44;
26
+ const slopFor = height => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - height) / 2));
27
+ /**
28
+ * Button-specific dimensions. Height, icon size and slop are the component's own design constants;
29
+ * `fontSize` sits on the theme's `fontSizes` scale (14/16/18). Kept a plain constant — with no theme
30
+ * dependency — so the hit-target test can assert `height + 2·hitSlop ≥ 44` without a provider.
31
+ */
32
+ export const BUTTON_SIZES = {
33
+ sm: {
34
+ height: 32,
35
+ fontSize: 14,
36
+ iconSize: 16,
37
+ hitSlop: slopFor(32)
38
+ },
39
+ md: {
40
+ height: 40,
41
+ fontSize: 16,
42
+ iconSize: 18,
43
+ hitSlop: slopFor(40)
44
+ },
45
+ lg: {
46
+ height: 48,
47
+ fontSize: 18,
48
+ iconSize: 20,
49
+ hitSlop: slopFor(48)
50
+ }
51
+ };
52
+ /**
53
+ * Maps a `tone` onto the theme's role colours. This is the whole reason the public prop is a closed
54
+ * union and not `color?: string`: every colour a button can show is one of these role lookups, so it
55
+ * is guaranteed legible in both modes and can never be an off-palette value an app invented.
56
+ *
57
+ * The outline border is the neutral interactive outline for every tone (guaranteed ≥ 3:1); the tone
58
+ * is carried by the label colour, not by a tinted 1px line that would fail 1.4.11 on most brands.
59
+ */
60
+ export function resolveButtonTone(colors, tone) {
61
+ switch (tone) {
62
+ case "accent":
63
+ return {
64
+ fill: colors.accent.solid,
65
+ onFill: colors.accent.onSolid,
66
+ text: colors.accent.text,
67
+ subtle: colors.accent.subtle,
68
+ border: colors.border.interactive
69
+ };
70
+ case "danger":
71
+ return {
72
+ fill: colors.status.danger.solid,
73
+ onFill: colors.status.danger.onSolid,
74
+ text: colors.status.danger.text,
75
+ subtle: colors.status.danger.subtle,
76
+ border: colors.border.interactive
77
+ };
78
+ case "neutral":
79
+ // Monochrome high-emphasis: a canonical body-text fill with the canvas as its label. Both come
80
+ // from roles, so it inverts light↔dark for free and its label contrast is the fg/canvas promise.
81
+ // Pressed surface is `bg.sunken` (a pale neutral tint), NOT `bg.hover`: measured, `bg.hover`'s
82
+ // saturated mid-tone drops the brand-tinted body text to ~3.9:1 on radiant/rosewood — the pale
83
+ // sunken surface keeps it ≥ 5.6:1 while still reading as a press.
84
+ return {
85
+ fill: colors.fg.default,
86
+ onFill: colors.bg.canvas,
87
+ text: colors.fg.default,
88
+ subtle: colors.bg.sunken,
89
+ border: colors.border.interactive
90
+ };
91
+ }
92
+ }
93
+ /**
94
+ * Derives the accessibility surface once, purely, so the contract is testable without a renderer:
95
+ * - `loading` sets `busy` (1.4.1 — announced, never conveyed by the spinner alone),
96
+ * - disabled OR loading blocks the press (guarded `onPress` AND the `disabled` prop), so a loading
97
+ * button is non-interactive while it works.
98
+ *
99
+ * `accessibilityState.disabled` tracks the same `blocked` flag the `Pressable disabled` prop uses, so
100
+ * what a screen reader hears matches what actually renders: a loading button announces `busy` AND
101
+ * `disabled` (RN's `disabled` prop forces `disabled` into the state regardless). Reporting `busy` here
102
+ * while the rendered control forced `disabled` back to true would be a lie to assistive tech.
103
+ */
104
+ export function resolveButtonAccessibility(input) {
105
+ const isDisabled = input.disabled === true;
106
+ const isLoading = input.loading === true;
107
+ const blocked = isDisabled || isLoading;
108
+ return {
109
+ accessibilityRole: "button",
110
+ accessibilityLabel: input.accessibilityLabel ?? input.label,
111
+ accessibilityState: {
112
+ disabled: blocked,
113
+ busy: isLoading
114
+ },
115
+ disabled: blocked,
116
+ onPress: blocked ? undefined : input.onPress
117
+ };
118
+ }
119
+
120
+ /**
121
+ * Structural styles only — layout, height, padding, radius, border WIDTH. No colours (those are
122
+ * tone-driven and applied inline over this), so this compiles once per theme identity via the
123
+ * `WeakMap`-cached themed resolver and never rebuilds per render.
124
+ *
125
+ * `size` is registered before `variant` so `link` (which zeroes horizontal padding) wins over the
126
+ * size's padding — resolution order is base → groups in declaration order, last write wins.
127
+ */
128
+ export const buttonStructure = createThemedVariants(theme => ({
129
+ base: {
130
+ flexDirection: "row",
131
+ alignItems: "center",
132
+ justifyContent: "center",
133
+ columnGap: theme.space[2],
134
+ borderRadius: theme.radii.base
135
+ },
136
+ variants: {
137
+ size: {
138
+ sm: {
139
+ height: BUTTON_SIZES.sm.height,
140
+ paddingHorizontal: theme.space[3]
141
+ },
142
+ md: {
143
+ height: BUTTON_SIZES.md.height,
144
+ paddingHorizontal: theme.space[4]
145
+ },
146
+ lg: {
147
+ height: BUTTON_SIZES.lg.height,
148
+ paddingHorizontal: theme.space[6]
149
+ }
150
+ },
151
+ variant: {
152
+ solid: {
153
+ borderWidth: 0
154
+ },
155
+ outline: {
156
+ borderWidth: theme.borderWidths.thin
157
+ },
158
+ ghost: {
159
+ borderWidth: 0
160
+ },
161
+ link: {
162
+ borderWidth: 0,
163
+ paddingHorizontal: 0,
164
+ columnGap: theme.space[1]
165
+ }
166
+ }
167
+ },
168
+ defaultVariants: {
169
+ size: "md",
170
+ variant: "solid"
171
+ }
172
+ }));
173
+ //# sourceMappingURL=Button.variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createThemedVariants","MIN_TOUCH_TARGET","slopFor","height","Math","max","ceil","BUTTON_SIZES","sm","fontSize","iconSize","hitSlop","md","lg","resolveButtonTone","colors","tone","fill","accent","solid","onFill","onSolid","text","subtle","border","interactive","status","danger","fg","default","bg","canvas","sunken","resolveButtonAccessibility","input","isDisabled","disabled","isLoading","loading","blocked","accessibilityRole","accessibilityLabel","label","accessibilityState","busy","onPress","undefined","buttonStructure","theme","base","flexDirection","alignItems","justifyContent","columnGap","space","borderRadius","radii","variants","size","paddingHorizontal","variant","borderWidth","outline","borderWidths","thin","ghost","link","defaultVariants"],"sourceRoot":"../../../../src","sources":["modules/button/Button.variants.ts"],"mappings":"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","ignoreList":[]}