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,80 @@
1
+ # tabs/ — a single-select strip with a sliding active indicator
2
+
3
+ `Tabs` renders ONLY the tab strip — content switching is the consumer's job. There is no
4
+ `TabPanel` and it never renders children per tab, mirroring how real design systems split `Tabs`
5
+ from panel content and keeping this component simple and composable.
6
+
7
+ ## Files
8
+
9
+ | File | Role |
10
+ |------|------|
11
+ | `Tabs.tsx` | The component. Strip + per-tab composition, press wiring, a11y wiring, the indicator's layout measurement + animation. |
12
+ | `Tabs.variants.ts` | Pure resolvers (`TABS_SIZES`, `resolveTabsColors`, `resolveTabAccessibility`) + the themed structural resolvers (`tabsStripStructure`, `tabItemStructure`, `tabsIndicatorStructure`). No React, no lucide. |
13
+ | `index.ts` | Public surface: `Tabs`, `TabsProps`, `TabItem`, `TabsSize`, `IconName` (re-exported from `core/icon`). |
14
+ | `__tests__/Tabs.test.ts` | Pure: WCAG contrast (all brands × modes) + touch target + a11y contract. |
15
+ | `__tests__/Tabs.render.test.tsx` | Render: strip/tab roles, selection state, press wiring, indicator animation respects reduced motion. |
16
+
17
+ ## Props
18
+
19
+ | Prop | Type | Default | Notes |
20
+ |------|------|---------|-------|
21
+ | `items` | `{ label: string; value: string; icon?: IconName }[]` | — | Rendered in order. `label` is always required — there is no icon-only tab, so there is no a11y trap to type-enforce against here. |
22
+ | `value` | `string` | — | The active item's `value`. |
23
+ | `onValueChange` | `(value: string) => void` | — | Fires with the pressed tab's `value`. |
24
+ | `size` | `sm \| md \| lg` | `md` | 36 / 44 / 52 dp visual height; `sm` reaches 44 via `hitSlop`. |
25
+ | `style` | `LayoutStyle` | — | Layout-only, outermost (the container `View`), applied exactly once, last. |
26
+ | `testID` | `string` | — | Container's testID; each tab gets `` `${testID}-${item.value}` ``, and the indicator gets `` `${testID}-indicator` ``, when set. |
27
+
28
+ No per-item `disabled` and no `tone` — every active label + indicator is the same accent role,
29
+ every inactive label is the same neutral `fg.muted`. Same reasoning as `RadioGroup`: a single-
30
+ purpose control has no closed union of appearances to resolve.
31
+
32
+ ## Accessibility contract (WCAG)
33
+
34
+ - **4.1.2** — `accessibilityRole="tablist"` on the container, `"tab"` per item with
35
+ `accessibilityState={ selected }`. Both are real, recognised RN `AccessibilityRole` values — no
36
+ fallback needed on this RN version (same precedent as `RadioGroup`'s `"radiogroup"`).
37
+ - **2.5.x target size** — every size reaches ≥ 44 dp: `sm`'s 36 dp tab grows via `hitSlop`; `md`/
38
+ `lg` are already ≥ 44 dp.
39
+ - **1.4.3** — the active label is `accent.text`, the inactive label is `fg.muted`, both measured
40
+ ≥ 4.5:1 against the canvas for every brand × mode. The pressed-tab background (`pressedTab`) is
41
+ `bg.raised`, not `bg.hover`: `activeLabel` stays on-screen while a selected tab is pressed, and
42
+ `bg.hover` drops that pairing below 4.5:1 on 8 of 16 brand/mode combos (measured); `bg.sunken`
43
+ (the fix used for this in `Button`/`RadioGroup`) still isn't enough here — it measures 4.40:1 on
44
+ slate light — so `bg.raised` is used instead, measured ≥ 4.5:1 (4.63:1 worst case) on every
45
+ brand × mode.
46
+ - **1.4.11** — the indicator bar (`accent.solid`) is a non-text UI marker, measured ≥ 3:1 against
47
+ the canvas for every brand × mode.
48
+ - **2.3.3** — the indicator's movement is two `Animated.Value`s (`x`, `width`) driven off each
49
+ tab's own `onLayout` measurement. Under reduced motion they're set with `setValue` (an instant
50
+ snap) instead of `Animated.timing` (which would still tween through intermediate frames even at
51
+ `duration: 0` for a position **and** size change together) — verified in the render tests by
52
+ spying on `Animated.timing` and asserting it isn't called when reduced motion is on.
53
+
54
+ ## Patterns (copied from Button / RadioGroup)
55
+
56
+ 1. **Structure vs colour split.** Strip gap, tab height/padding/gap, and the indicator's
57
+ thickness/radius are `createThemedVariants` (registered once per `(theme, size)`); colour is
58
+ resolved by `resolveTabsColors` from role tokens and applied inline over the structural style.
59
+ 2. **Pure, testable resolvers** in `Tabs.variants.ts` (no React) so the WCAG + behaviour contract
60
+ is unit-tested against the real palettes — never eyeballed.
61
+ 3. **No `{...rest}`, `style` once on the outermost node.** `icon` is a NAME (`IconName`), never a
62
+ `ReactNode`.
63
+ 4. **Layout keyed by `value`, not index** — each tab's measured `{x, width}` is stored in state
64
+ keyed by its `value`, so reordering `items` (or a label-driven width change) can never apply a
65
+ stale measurement to the wrong tab.
66
+
67
+ ## Known gaps
68
+
69
+ - The indicator starts at `x: 0, width: 0` until the active tab's first `onLayout` fires (native
70
+ layout is asynchronous), so there's a single frame before its true position is known. No visible
71
+ flash in practice — RN fires `onLayout` before the first paint completes — but it's worth noting
72
+ since it isn't unit-tested (RNTL's test renderer never calls `onLayout` on its own; the render
73
+ tests fire it manually to simulate a measured tab).
74
+ - No horizontal scrolling for an `items` list too wide for the viewport (e.g. wrapped in a
75
+ `ScrollView` by the consumer) — v1 assumes the strip fits, same scope decision `RadioGroup` made
76
+ for its own vertical list.
77
+
78
+ ## Performance
79
+
80
+ Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). The `items.map()` renders host `Pressable`/`Text`, and the one library child, `Icon`, only receives primitive props — nothing to memoize. The pre-existing `handleTabLayout` was already correctly `useCallback`'d.
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Tabs — renders ONLY the tab strip. Content switching is the consumer's job: this mirrors how
5
+ * real design systems split the strip from panel content, and keeps the component simple and
6
+ * composable (no `TabPanel`, no rendering children per tab).
7
+ *
8
+ * The active-tab indicator is two `Animated.Value`s (`x`, `width`) driven off each tab's own
9
+ * `onLayout` measurement, keyed by `value` so reordering `items` doesn't scramble which
10
+ * measurement belongs to which tab. Reduced motion (WCAG 2.3.3) snaps both values with `setValue`
11
+ * instead of animating — same `duration: reducedMotion ? 0 : …` idiom `Button`'s press fade and
12
+ * `Toast`'s slide use, just applied to `setValue` vs `Animated.timing` instead of a duration of 0
13
+ * (a 0-width/0-position change would still tween through intermediate frames otherwise).
14
+ */
15
+
16
+ import { memo, useCallback, useEffect, useRef, useState } from "react";
17
+ import { Animated, Pressable, Text, View } from "react-native";
18
+ import { useReducedMotion } from "../../core/a11y/index.js";
19
+ import { Icon } from "../../core/icon/index.js";
20
+ import { useTheme } from "../../theme/index.js";
21
+ import { resolveTabAccessibility, resolveTabsColors, tabItemStructure, tabsIndicatorStructure, tabsStripStructure, TABS_SIZES } from "./Tabs.variants.js";
22
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
23
+ const ICON_STROKE = 2;
24
+ const INDICATOR_MOVE_MS = 200;
25
+ export const Tabs = /*#__PURE__*/memo(function Tabs({
26
+ items,
27
+ value,
28
+ onValueChange,
29
+ size = "md",
30
+ style,
31
+ testID
32
+ }) {
33
+ const theme = useTheme();
34
+ const reducedMotion = useReducedMotion();
35
+ const colors = resolveTabsColors(theme.colors);
36
+ const spec = TABS_SIZES[size];
37
+ const [layouts, setLayouts] = useState({});
38
+ const indicatorX = useRef(new Animated.Value(0)).current;
39
+ const indicatorWidth = useRef(new Animated.Value(0)).current;
40
+ const activeLayout = layouts[value];
41
+ const handleTabLayout = useCallback((itemValue, event) => {
42
+ const {
43
+ x,
44
+ width
45
+ } = event.nativeEvent.layout;
46
+ setLayouts(prev => {
47
+ const existing = prev[itemValue];
48
+ if (existing !== undefined && existing.x === x && existing.width === width) return prev;
49
+ return {
50
+ ...prev,
51
+ [itemValue]: {
52
+ x,
53
+ width
54
+ }
55
+ };
56
+ });
57
+ }, []);
58
+ useEffect(() => {
59
+ if (activeLayout === undefined) return;
60
+ if (reducedMotion) {
61
+ indicatorX.setValue(activeLayout.x);
62
+ indicatorWidth.setValue(activeLayout.width);
63
+ return;
64
+ }
65
+ Animated.parallel([Animated.timing(indicatorX, {
66
+ toValue: activeLayout.x,
67
+ duration: INDICATOR_MOVE_MS,
68
+ useNativeDriver: false
69
+ }), Animated.timing(indicatorWidth, {
70
+ toValue: activeLayout.width,
71
+ duration: INDICATOR_MOVE_MS,
72
+ useNativeDriver: false
73
+ })]).start();
74
+ }, [activeLayout, reducedMotion, indicatorX, indicatorWidth]);
75
+ return /*#__PURE__*/_jsxs(View, {
76
+ testID: testID,
77
+ accessibilityRole: "tablist",
78
+ style: [tabsStripStructure(theme), style],
79
+ children: [/*#__PURE__*/_jsx(Animated.View, {
80
+ pointerEvents: "none",
81
+ testID: testID ? `${testID}-indicator` : undefined,
82
+ style: [tabsIndicatorStructure(theme), {
83
+ backgroundColor: colors.indicator,
84
+ transform: [{
85
+ translateX: indicatorX
86
+ }],
87
+ width: indicatorWidth
88
+ }]
89
+ }), items.map(item => {
90
+ const selected = item.value === value;
91
+ const a11y = resolveTabAccessibility({
92
+ selected
93
+ });
94
+ const labelColor = selected ? colors.activeLabel : colors.inactiveLabel;
95
+ return /*#__PURE__*/_jsxs(Pressable, {
96
+ testID: testID ? `${testID}-${item.value}` : undefined,
97
+ accessibilityRole: a11y.accessibilityRole,
98
+ accessibilityState: a11y.accessibilityState,
99
+ accessibilityLabel: item.label,
100
+ onPress: () => onValueChange(item.value),
101
+ onLayout: event => handleTabLayout(item.value, event),
102
+ hitSlop: spec.hitSlop,
103
+ style: ({
104
+ pressed
105
+ }) => [tabItemStructure(theme, {
106
+ size
107
+ }), pressed && {
108
+ backgroundColor: colors.pressedTab
109
+ }],
110
+ children: [item.icon !== undefined && /*#__PURE__*/_jsx(Icon, {
111
+ name: item.icon,
112
+ size: spec.iconSize,
113
+ color: labelColor,
114
+ strokeWidth: ICON_STROKE
115
+ }), /*#__PURE__*/_jsx(Text, {
116
+ numberOfLines: 1,
117
+ style: [theme.fontStyleForWeight(theme.fontWeights.medium), {
118
+ fontSize: spec.fontSize,
119
+ color: labelColor
120
+ }],
121
+ children: item.label
122
+ })]
123
+ }, item.value);
124
+ })]
125
+ });
126
+ });
127
+ //# sourceMappingURL=Tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","useEffect","useRef","useState","Animated","Pressable","Text","View","useReducedMotion","Icon","useTheme","resolveTabAccessibility","resolveTabsColors","tabItemStructure","tabsIndicatorStructure","tabsStripStructure","TABS_SIZES","jsx","_jsx","jsxs","_jsxs","ICON_STROKE","INDICATOR_MOVE_MS","Tabs","items","value","onValueChange","size","style","testID","theme","reducedMotion","colors","spec","layouts","setLayouts","indicatorX","Value","current","indicatorWidth","activeLayout","handleTabLayout","itemValue","event","x","width","nativeEvent","layout","prev","existing","undefined","setValue","parallel","timing","toValue","duration","useNativeDriver","start","accessibilityRole","children","pointerEvents","backgroundColor","indicator","transform","translateX","map","item","selected","a11y","labelColor","activeLabel","inactiveLabel","accessibilityState","accessibilityLabel","label","onPress","onLayout","hitSlop","pressed","pressedTab","icon","name","iconSize","color","strokeWidth","numberOfLines","fontStyleForWeight","fontWeights","medium","fontSize"],"sourceRoot":"../../../../src","sources":["modules/tabs/Tabs.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Tabs' style + behaviour resolution — pure, React/lucide-free, same split as Button:
5
+ * - STRUCTURE (strip gap, item height/padding/gap, indicator thickness/radius) lives in the
6
+ * `createThemedVariants` resolvers below, registered once per (theme, size) — never rebuilt
7
+ * per render.
8
+ * - COLOUR is resolved from the theme's ROLE colours (`resolveTabsColors`), never a raw hex: the
9
+ * active label + indicator are always the accent role, the inactive label is always `fg.muted`.
10
+ * - `resolveTabAccessibility` derives the per-tab a11y surface purely, so the "selected" contract
11
+ * is unit-testable without rendering React Native.
12
+ */
13
+
14
+ import { createThemedVariants } from "../../core/style/index.js";
15
+ /** Same floor as Button/RadioGroup — 44dp (WCAG 2.5.5 / HIG). Duplicated, not imported: modules
16
+ * stay isolated. */
17
+ export const MIN_TOUCH_TARGET = 44;
18
+ const slopFor = height => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - height) / 2));
19
+ /**
20
+ * Tabs-specific dimensions. Kept a plain constant — no theme dependency — so the hit-target test
21
+ * can assert `height + 2·hitSlop ≥ 44` without a provider, same as `BUTTON_SIZES`.
22
+ */
23
+ export const TABS_SIZES = {
24
+ sm: {
25
+ height: 36,
26
+ fontSize: 14,
27
+ iconSize: 16,
28
+ hitSlop: slopFor(36)
29
+ },
30
+ md: {
31
+ height: 44,
32
+ fontSize: 16,
33
+ iconSize: 18,
34
+ hitSlop: slopFor(44)
35
+ },
36
+ lg: {
37
+ height: 52,
38
+ fontSize: 18,
39
+ iconSize: 20,
40
+ hitSlop: slopFor(52)
41
+ }
42
+ };
43
+ /**
44
+ * Maps the strip's fixed visual roles onto ROLE colours — never a hardcoded hex, so it's
45
+ * guaranteed legible in both modes and can never be an off-palette value an app invented. There is
46
+ * no per-tab `tone`: every active label + indicator is the accent role, every inactive label is
47
+ * the same neutral `fg.muted`, so — like `RadioGroup` — this is pure indirection, not a union to
48
+ * resolve.
49
+ */
50
+ export function resolveTabsColors(colors) {
51
+ return {
52
+ activeLabel: colors.accent.text,
53
+ inactiveLabel: colors.fg.muted,
54
+ indicator: colors.accent.solid,
55
+ // NOT `bg.hover`: measured, its saturated mid-tone drops `activeLabel` (the active tab stays
56
+ // accent-tinted while pressed) below 4.5:1 on 8 of 16 brand/mode combos — same class of bug
57
+ // Button's "neutral" tone documents fixing. `bg.sunken` (the fix used there) still isn't enough
58
+ // here: it measures 4.40:1 on slate light, just under AA_TEXT. `bg.raised` clears 4.5:1 on every
59
+ // brand × mode (4.63:1 worst case, slate light) — see the WCAG test in Tabs.test.ts.
60
+ pressedTab: colors.bg.raised
61
+ };
62
+ }
63
+ /**
64
+ * Derives one tab's accessibility surface purely, mirroring `resolveRadioRowAccessibility`: every
65
+ * item always carries a visible `label`, so — unlike `Button` — there is no icon-only shape here
66
+ * and nothing to gate a press on.
67
+ */
68
+ export function resolveTabAccessibility(input) {
69
+ return {
70
+ accessibilityRole: "tab",
71
+ accessibilityState: {
72
+ selected: input.selected
73
+ }
74
+ };
75
+ }
76
+
77
+ /** The strip container — a row with a small gap between tabs. */
78
+ export const tabsStripStructure = createThemedVariants(theme => ({
79
+ base: {
80
+ flexDirection: "row",
81
+ position: "relative",
82
+ columnGap: theme.space[1]
83
+ }
84
+ }));
85
+
86
+ /**
87
+ * One tab's layout — height, inset padding, and the gap to its optional icon. Colour (label tint,
88
+ * pressed fill) is resolved and applied inline over this.
89
+ */
90
+ export const tabItemStructure = createThemedVariants(theme => ({
91
+ base: {
92
+ flexDirection: "row",
93
+ alignItems: "center",
94
+ justifyContent: "center",
95
+ borderRadius: theme.radii.base
96
+ },
97
+ variants: {
98
+ size: {
99
+ sm: {
100
+ height: TABS_SIZES.sm.height,
101
+ columnGap: theme.space[1],
102
+ paddingHorizontal: theme.space[3]
103
+ },
104
+ md: {
105
+ height: TABS_SIZES.md.height,
106
+ columnGap: theme.space[2],
107
+ paddingHorizontal: theme.space[4]
108
+ },
109
+ lg: {
110
+ height: TABS_SIZES.lg.height,
111
+ columnGap: theme.space[2],
112
+ paddingHorizontal: theme.space[5]
113
+ }
114
+ }
115
+ },
116
+ defaultVariants: {
117
+ size: "md"
118
+ }
119
+ }));
120
+
121
+ /**
122
+ * The active-tab indicator bar. Thickness is the theme's `border.thick` (2dp); the pill radius is
123
+ * `radii.full`. Position (`left`/`width`, via `transform`/`width`) is driven by `Animated.Value`s
124
+ * in `Tabs.tsx`, not by this static resolver.
125
+ */
126
+ export const tabsIndicatorStructure = createThemedVariants(theme => ({
127
+ base: {
128
+ position: "absolute",
129
+ left: 0,
130
+ bottom: 0,
131
+ height: theme.borderWidths.thick,
132
+ borderRadius: theme.radii.full
133
+ }
134
+ }));
135
+ //# sourceMappingURL=Tabs.variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createThemedVariants","MIN_TOUCH_TARGET","slopFor","height","Math","max","ceil","TABS_SIZES","sm","fontSize","iconSize","hitSlop","md","lg","resolveTabsColors","colors","activeLabel","accent","text","inactiveLabel","fg","muted","indicator","solid","pressedTab","bg","raised","resolveTabAccessibility","input","accessibilityRole","accessibilityState","selected","tabsStripStructure","theme","base","flexDirection","position","columnGap","space","tabItemStructure","alignItems","justifyContent","borderRadius","radii","variants","size","paddingHorizontal","defaultVariants","tabsIndicatorStructure","left","bottom","borderWidths","thick","full"],"sourceRoot":"../../../../src","sources":["modules/tabs/Tabs.variants.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Public surface of `pixelize-native-library/tabs`. Value exports and type exports are split for
5
+ * `verbatimModuleSyntax`. The visual/behaviour resolvers (`resolveTabsColors`, `TABS_SIZES`, …)
6
+ * stay internal — a consumer configures Tabs through its props, never by importing its internals.
7
+ */
8
+
9
+ export { Tabs } from "./Tabs.js";
10
+
11
+ // Re-exported so a caller can type an item's `icon` without a separate import from `core/icon`.
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Tabs"],"sourceRoot":"../../../../src","sources":["modules/tabs/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,QAAQ,WAAQ;;AAK7B","ignoreList":[]}
@@ -0,0 +1,91 @@
1
+ # textarea/ — multiline text entry
2
+
3
+ `Textarea` is `Input`'s multiline sibling (Input is built in parallel; this module has no dependency
4
+ on it). Same closed-prop shape as every other module: `size` / `status` are closed unions, colour is
5
+ resolved from `RoleColors`, and `containerStyle` is the one documented `LayoutStyle` exception for a
6
+ component wrapping a native `TextInput` (CLAUDE.md).
7
+
8
+ ## Files
9
+
10
+ | File | Role |
11
+ |------|------|
12
+ | `Textarea.tsx` | The component. Label / field / helper-or-error composition, a11y wiring, focus ring, disabled. |
13
+ | `Textarea.variants.ts` | Pure resolvers (`TEXTAREA_SIZES`, `resolveTextareaStatus`, `resolveTextareaAccessibility`) + the themed structural resolvers `textareaFieldStructure` / `textareaLayout`. No React. |
14
+ | `index.ts` | Public surface: `Textarea`, `TextareaProps`, `TextareaSize`, `TextareaStatus`. |
15
+ | `__tests__/Textarea.test.ts` | Pure: WCAG contrast (all brands × modes) + touch target + a11y contract. |
16
+ | `__tests__/Textarea.render.test.tsx` | Render: value/placeholder, `onChangeText` wiring, disabled blocking, status, helper/error message, focus ring. |
17
+
18
+ ## Props
19
+
20
+ | Prop | Type | Default | Notes |
21
+ |------|------|---------|-------|
22
+ | `value` | `string` | — | Controlled — no internal copy of the text. |
23
+ | `onChangeText` | `(text: string) => void` | — | |
24
+ | `placeholder` | `string` | — | Rendered in `fg.muted` (not the dimmer `fg.subtle` — see WCAG below). |
25
+ | `size` | `sm \| md \| lg` | `md` | Fixed internal `minHeight` (72 / 96 / 128dp) — not a numeric prop. |
26
+ | `status` | `default \| error` | `default` | Closed union — drives the field boundary + message colour. |
27
+ | `disabled` | `boolean` | `false` | `editable={false}` + dimmed; blocks `changeText`. |
28
+ | `label` | `string` | — | Rendered above the field; also the field's `accessibilityLabel`. |
29
+ | `helperText` | `string` | — | Shown when `status` is `default`, or as the `error` fallback (see below). |
30
+ | `errorText` | `string` | — | Shown instead of `helperText` when `status` is `error` and it's provided. |
31
+ | `maxLength` | `number` | — | Passed straight to `TextInput`. |
32
+ | `containerStyle` | `LayoutStyle` | — | The documented exception — outer box, applied exactly once, last. |
33
+ | `testID` | `string` | — | Set on the `TextInput`. |
34
+
35
+ No `icon` prop: multiline fields don't carry a leading/trailing icon in this catalogue (per spec).
36
+
37
+ ## Accessibility contract (WCAG)
38
+
39
+ - **2.5.x target size** — every `size`'s `minHeight` (72/96/128dp) already clears 44dp on its own; a
40
+ multiline field IS its own touch target, so no `hitSlop` is needed (unlike Button's compact sizes).
41
+ - **1.4.3** — value text and label share `fg.default` (≥ 4.5:1 on the canvas, every brand/mode).
42
+ Placeholder deliberately uses `fg.muted`, not `fg.subtle` — `fg.subtle` measures as low as ~3.2:1
43
+ against the canvas on some brands, which fails AA for real, visible placeholder text.
44
+ - **1.4.11** — the field boundary is `border.interactive` (`default`) or `status.danger.solid`
45
+ (`error`), both measured ≥ 3:1 against the canvas on every brand/mode. **Not** `status.danger.border`
46
+ (the pale `ramp[200]` chip outline) — measured as low as ~1.7:1, nowhere near 3:1. This mirrors why
47
+ Button's outline never tints by tone either.
48
+ - **2.4.7 / 2.4.11** — a visible focus ring (`border.focus`) appears on focus, offset a small gap
49
+ OUTSIDE the field on the canvas — identical construction to Button's, and for the same reason: drawn
50
+ over the field's own (status-dependent) boundary colour, its ≥ 3:1 isn't guaranteed for every status.
51
+ - **Web** — RNW renders `TextInput` as a real `<textarea>`, so `styles.webOutlineReset` (`outlineWidth:
52
+ 0`, applied only when `Platform.OS === "web"`) suppresses the browser's own default focus outline,
53
+ which would otherwise double up visibly with the themed ring above. Native is untouched, since
54
+ `outlineWidth` also drives TV remote-control focus there.
55
+ - **No motion in this component.** The focus ring is a plain conditional render, exactly like Button's
56
+ own ring (which is also not animated) — `useReducedMotion` gates only real animation (Button's press
57
+ fade), and there is none here, so WCAG 2.3.3 is not applicable.
58
+ - No `accessibilityRole` override: RN's `TextInput` already exposes the native text-field
59
+ role/behaviour on both platforms, and RN's `AccessibilityRole` union has no closer ARIA-style
60
+ `textbox` value to assign.
61
+ - `accessibilityState={{ disabled }}` tracks the same flag `editable` uses.
62
+ - The label `Text` and the helper/error `Text` are both hidden from assistive tech
63
+ (`accessibilityElementsHidden` + `importantForAccessibility="no-hide-descendants"`) — their content
64
+ is carried by the `TextInput`'s own `accessibilityLabel` / `accessibilityHint` (RN's platform
65
+ equivalent of `aria-describedby`), so a screen-reader user gets ONE announcement at the field, not a
66
+ separate stop for the label/message plus a repeat on focus.
67
+
68
+ ## Why `status` is a union, not a `color`
69
+
70
+ Same reasoning as Button's `tone`: every colour a field boundary or message can show is a role lookup
71
+ (`resolveTextareaStatus`), guaranteed legible in both modes on every brand, never an app-supplied hex.
72
+
73
+ ## Patterns the other modules can copy
74
+
75
+ 1. **The visible helper/error `Text` and the `accessibilityHint` are the SAME computed string**
76
+ (`resolveTextareaAccessibility().accessibilityHint`) — never two separate strings that could drift.
77
+ 2. **When `status` is `error`, the message slot always renders in the danger colour** — `errorText` if
78
+ given, else `helperText` as a fallback — because the field itself is invalid; a bare `helperText` in
79
+ error state still reads as "something's wrong", not as an unrelated hint styled inconsistently.
80
+ 3. **Structure vs colour split**, pure testable resolvers, closed unions, `containerStyle` (not
81
+ `style`) as the one documented `LayoutStyle` exception, no `{...rest}` — all copied from Button.
82
+
83
+ ## Known gaps
84
+
85
+ - No `Input` module exists yet to diff this against (built in parallel) — the "same contract as
86
+ Input" note in the spec is honoured by prop-name convention (`value`/`onChangeText`/`status`/
87
+ `disabled`/`label`/`helperText`/`errorText`/`maxLength`/`containerStyle`), not by a shared import.
88
+
89
+ ## Performance
90
+
91
+ Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). Renders only host elements (`View`/`Text`/`TextInput`) — nothing to memoize.
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Textarea — the multiline sibling of `Input` (Input itself is being built in parallel; this module
5
+ * does not depend on it). Same closed-prop shape the rest of the catalogue follows: `size` / `status`
6
+ * are closed unions, colour is resolved from `RoleColors`, and `containerStyle` is the one documented
7
+ * `LayoutStyle` exception for a component wrapping a native `TextInput` (CLAUDE.md).
8
+ */
9
+
10
+ import { memo, useState } from "react";
11
+ import { Platform, StyleSheet, Text, TextInput, View } from "react-native";
12
+ import { useTheme } from "../../theme/index.js";
13
+ import { resolveTextareaAccessibility, resolveTextareaStatus, textareaFieldStructure, textareaLayout, TEXTAREA_SIZES } from "./Textarea.variants.js";
14
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
+ // Matches Button's own focus ring exactly: a small gap OUTSIDE the field, on the canvas, because
16
+ // `border.focus` is the role token proven ≥ 3:1 against the canvas (drawn over the field's own
17
+ // boundary colour its ≥ 3:1 isn't guaranteed for every `status`).
18
+ const FOCUS_RING_WIDTH = 2;
19
+ const FOCUS_RING_GAP = 2;
20
+ export const Textarea = /*#__PURE__*/memo(function Textarea(props) {
21
+ const {
22
+ value,
23
+ onChangeText,
24
+ placeholder,
25
+ size = "md",
26
+ status = "default",
27
+ disabled = false,
28
+ label,
29
+ helperText,
30
+ errorText,
31
+ maxLength,
32
+ containerStyle,
33
+ testID
34
+ } = props;
35
+ const theme = useTheme();
36
+ const [focused, setFocused] = useState(false);
37
+ const spec = TEXTAREA_SIZES[size];
38
+ const statusColors = resolveTextareaStatus(theme.colors, status);
39
+ const a11y = resolveTextareaAccessibility({
40
+ label,
41
+ helperText,
42
+ errorText,
43
+ status,
44
+ disabled
45
+ });
46
+ const message = a11y.accessibilityHint;
47
+ return /*#__PURE__*/_jsxs(View, {
48
+ style: [textareaLayout(theme), containerStyle],
49
+ children: [label !== undefined &&
50
+ /*#__PURE__*/
51
+ // Hidden from AT: its text is carried by the TextInput's own `accessibilityLabel` below, so a
52
+ // screen-reader user gets ONE announcement at the field, not a separate stop for this Text
53
+ // plus a repeat when focus lands on the input — the same "no double announcement" idiom
54
+ // Button uses for its spinner.
55
+ _jsx(Text, {
56
+ accessibilityElementsHidden: true,
57
+ importantForAccessibility: "no-hide-descendants",
58
+ style: [theme.fontStyleForWeight(theme.fontWeights.medium), {
59
+ fontSize: theme.fontSizes.sm,
60
+ color: theme.colors.fg.default
61
+ }],
62
+ children: label
63
+ }), /*#__PURE__*/_jsxs(View, {
64
+ style: [textareaFieldStructure(theme, {
65
+ size
66
+ }), {
67
+ borderColor: statusColors.border
68
+ }, disabled && styles.dimmed],
69
+ children: [/*#__PURE__*/_jsx(TextInput, {
70
+ testID: testID,
71
+ value: value,
72
+ onChangeText: onChangeText,
73
+ placeholder: placeholder,
74
+ placeholderTextColor: theme.colors.fg.muted,
75
+ editable: !disabled,
76
+ multiline: true,
77
+ maxLength: maxLength,
78
+ textAlignVertical: "top",
79
+ accessibilityLabel: a11y.accessibilityLabel,
80
+ accessibilityHint: a11y.accessibilityHint,
81
+ accessibilityState: a11y.accessibilityState,
82
+ onFocus: () => setFocused(true),
83
+ onBlur: () => setFocused(false),
84
+ style: [theme.fontStyleForWeight(theme.fontWeights.regular), {
85
+ fontSize: spec.fontSize,
86
+ color: theme.colors.fg.default,
87
+ minHeight: spec.minHeight
88
+ }, styles.input, Platform.OS === "web" && styles.webOutlineReset]
89
+ }), focused && /*#__PURE__*/_jsx(View, {
90
+ pointerEvents: "none",
91
+ testID: "textarea-focus-ring",
92
+ style: {
93
+ position: "absolute",
94
+ top: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
95
+ left: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
96
+ right: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
97
+ bottom: -(FOCUS_RING_GAP + FOCUS_RING_WIDTH),
98
+ borderWidth: FOCUS_RING_WIDTH,
99
+ borderColor: theme.colors.border.focus,
100
+ borderRadius: theme.radii.base + FOCUS_RING_GAP + FOCUS_RING_WIDTH
101
+ }
102
+ })]
103
+ }), message !== undefined &&
104
+ /*#__PURE__*/
105
+ // Hidden from AT for the same reason as the label — its content is already the TextInput's
106
+ // `accessibilityHint` (RN has no `aria-describedby`; `accessibilityHint` is the platform
107
+ // equivalent), so this Text is the sighted-user copy of the same one string.
108
+ _jsx(Text, {
109
+ accessibilityElementsHidden: true,
110
+ importantForAccessibility: "no-hide-descendants",
111
+ style: [theme.fontStyleForWeight(theme.fontWeights.regular), {
112
+ fontSize: theme.fontSizes.xs,
113
+ color: statusColors.message
114
+ }],
115
+ children: message
116
+ })]
117
+ });
118
+ });
119
+ const styles = StyleSheet.create({
120
+ // Zeroes the TextInput's own default padding — the field box (`textareaFieldStructure`) owns
121
+ // padding, so the two never disagree on where the text sits.
122
+ input: {
123
+ padding: 0
124
+ },
125
+ // A disabled control is exempt from the contrast minimum (WCAG 1.4.3), so a uniform dim is correct.
126
+ dimmed: {
127
+ opacity: 0.5
128
+ },
129
+ // RNW renders `TextInput` as a real `<textarea>`, which paints the browser's own default focus
130
+ // outline on top of the themed ring above it — a visible double border. Web-only: `outlineWidth`
131
+ // also drives native TV remote-control focus, so zeroing it globally would break that.
132
+ webOutlineReset: {
133
+ outlineWidth: 0
134
+ }
135
+ });
136
+ //# sourceMappingURL=Textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useState","Platform","StyleSheet","Text","TextInput","View","useTheme","resolveTextareaAccessibility","resolveTextareaStatus","textareaFieldStructure","textareaLayout","TEXTAREA_SIZES","jsx","_jsx","jsxs","_jsxs","FOCUS_RING_WIDTH","FOCUS_RING_GAP","Textarea","props","value","onChangeText","placeholder","size","status","disabled","label","helperText","errorText","maxLength","containerStyle","testID","theme","focused","setFocused","spec","statusColors","colors","a11y","message","accessibilityHint","style","children","undefined","accessibilityElementsHidden","importantForAccessibility","fontStyleForWeight","fontWeights","medium","fontSize","fontSizes","sm","color","fg","default","borderColor","border","styles","dimmed","placeholderTextColor","muted","editable","multiline","textAlignVertical","accessibilityLabel","accessibilityState","onFocus","onBlur","regular","minHeight","input","OS","webOutlineReset","pointerEvents","position","top","left","right","bottom","borderWidth","focus","borderRadius","radii","base","xs","create","padding","opacity","outlineWidth"],"sourceRoot":"../../../../src","sources":["modules/textarea/Textarea.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,EAAEC,QAAQ,QAAQ,OAAO;AACtC,SAASC,QAAQ,EAAEC,UAAU,EAAEC,IAAI,EAAEC,SAAS,EAAEC,IAAI,QAAQ,cAAc;AAG1E,SAASC,QAAQ,QAAQ,sBAAa;AAEtC,SACEC,4BAA4B,EAC5BC,qBAAqB,EACrBC,sBAAsB,EACtBC,cAAc,EACdC,cAAc,QACT,wBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAmB7B;AACA;AACA;AACA,MAAMC,gBAAgB,GAAG,CAAC;AAC1B,MAAMC,cAAc,GAAG,CAAC;AAExB,OAAO,MAAMC,QAAQ,gBAAGnB,IAAI,CAAC,SAASmB,QAAQA,CAACC,KAAoB,EAAE;EACnE,MAAM;IACJC,KAAK;IACLC,YAAY;IACZC,WAAW;IACXC,IAAI,GAAG,IAAI;IACXC,MAAM,GAAG,SAAS;IAClBC,QAAQ,GAAG,KAAK;IAChBC,KAAK;IACLC,UAAU;IACVC,SAAS;IACTC,SAAS;IACTC,cAAc;IACdC;EACF,CAAC,GAAGZ,KAAK;EAET,MAAMa,KAAK,GAAG1B,QAAQ,CAAC,CAAC;EACxB,MAAM,CAAC2B,OAAO,EAAEC,UAAU,CAAC,GAAGlC,QAAQ,CAAC,KAAK,CAAC;EAE7C,MAAMmC,IAAI,GAAGxB,cAAc,CAACY,IAAI,CAAC;EACjC,MAAMa,YAAY,GAAG5B,qBAAqB,CAACwB,KAAK,CAACK,MAAM,EAAEb,MAAM,CAAC;EAChE,MAAMc,IAAI,GAAG/B,4BAA4B,CAAC;IAAEmB,KAAK;IAAEC,UAAU;IAAEC,SAAS;IAAEJ,MAAM;IAAEC;EAAS,CAAC,CAAC;EAC7F,MAAMc,OAAO,GAAGD,IAAI,CAACE,iBAAiB;EAEtC,oBACEzB,KAAA,CAACV,IAAI;IAACoC,KAAK,EAAE,CAAC/B,cAAc,CAACsB,KAAK,CAAC,EAAEF,cAAc,CAAE;IAAAY,QAAA,GAClDhB,KAAK,KAAKiB,SAAS;IAAA;IAClB;IACA;IACA;IACA;IACA9B,IAAA,CAACV,IAAI;MACHyC,2BAA2B;MAC3BC,yBAAyB,EAAC,qBAAqB;MAC/CJ,KAAK,EAAE,CACLT,KAAK,CAACc,kBAAkB,CAACd,KAAK,CAACe,WAAW,CAACC,MAAM,CAAC,EAClD;QAAEC,QAAQ,EAAEjB,KAAK,CAACkB,SAAS,CAACC,EAAE;QAAEC,KAAK,EAAEpB,KAAK,CAACK,MAAM,CAACgB,EAAE,CAACC;MAAQ,CAAC,CAChE;MAAAZ,QAAA,EAEDhB;IAAK,CACF,CACP,eACDX,KAAA,CAACV,IAAI;MACHoC,KAAK,EAAE,CACLhC,sBAAsB,CAACuB,KAAK,EAAE;QAAET;MAAK,CAAC,CAAC,EACvC;QAAEgC,WAAW,EAAEnB,YAAY,CAACoB;MAAO,CAAC,EACpC/B,QAAQ,IAAIgC,MAAM,CAACC,MAAM,CACzB;MAAAhB,QAAA,gBAEF7B,IAAA,CAACT,SAAS;QACR2B,MAAM,EAAEA,MAAO;QACfX,KAAK,EAAEA,KAAM;QACbC,YAAY,EAAEA,YAAa;QAC3BC,WAAW,EAAEA,WAAY;QACzBqC,oBAAoB,EAAE3B,KAAK,CAACK,MAAM,CAACgB,EAAE,CAACO,KAAM;QAC5CC,QAAQ,EAAE,CAACpC,QAAS;QACpBqC,SAAS;QACTjC,SAAS,EAAEA,SAAU;QACrBkC,iBAAiB,EAAC,KAAK;QACvBC,kBAAkB,EAAE1B,IAAI,CAAC0B,kBAAmB;QAC5CxB,iBAAiB,EAAEF,IAAI,CAACE,iBAAkB;QAC1CyB,kBAAkB,EAAE3B,IAAI,CAAC2B,kBAAmB;QAC5CC,OAAO,EAAEA,CAAA,KAAMhC,UAAU,CAAC,IAAI,CAAE;QAChCiC,MAAM,EAAEA,CAAA,KAAMjC,UAAU,CAAC,KAAK,CAAE;QAChCO,KAAK,EAAE,CACLT,KAAK,CAACc,kBAAkB,CAACd,KAAK,CAACe,WAAW,CAACqB,OAAO,CAAC,EACnD;UAAEnB,QAAQ,EAAEd,IAAI,CAACc,QAAQ;UAAEG,KAAK,EAAEpB,KAAK,CAACK,MAAM,CAACgB,EAAE,CAACC,OAAO;UAAEe,SAAS,EAAElC,IAAI,CAACkC;QAAU,CAAC,EACtFZ,MAAM,CAACa,KAAK,EACZrE,QAAQ,CAACsE,EAAE,KAAK,KAAK,IAAId,MAAM,CAACe,eAAe;MAC/C,CACH,CAAC,EACDvC,OAAO,iBACNpB,IAAA,CAACR,IAAI;QACHoE,aAAa,EAAC,MAAM;QACpB1C,MAAM,EAAC,qBAAqB;QAC5BU,KAAK,EAAE;UACLiC,QAAQ,EAAE,UAAU;UACpBC,GAAG,EAAE,EAAE1D,cAAc,GAAGD,gBAAgB,CAAC;UACzC4D,IAAI,EAAE,EAAE3D,cAAc,GAAGD,gBAAgB,CAAC;UAC1C6D,KAAK,EAAE,EAAE5D,cAAc,GAAGD,gBAAgB,CAAC;UAC3C8D,MAAM,EAAE,EAAE7D,cAAc,GAAGD,gBAAgB,CAAC;UAC5C+D,WAAW,EAAE/D,gBAAgB;UAC7BuC,WAAW,EAAEvB,KAAK,CAACK,MAAM,CAACmB,MAAM,CAACwB,KAAK;UACtCC,YAAY,EAAEjD,KAAK,CAACkD,KAAK,CAACC,IAAI,GAAGlE,cAAc,GAAGD;QACpD;MAAE,CACH,CACF;IAAA,CACG,CAAC,EACNuB,OAAO,KAAKI,SAAS;IAAA;IACpB;IACA;IACA;IACA9B,IAAA,CAACV,IAAI;MACHyC,2BAA2B;MAC3BC,yBAAyB,EAAC,qBAAqB;MAC/CJ,KAAK,EAAE,CACLT,KAAK,CAACc,kBAAkB,CAACd,KAAK,CAACe,WAAW,CAACqB,OAAO,CAAC,EACnD;QAAEnB,QAAQ,EAAEjB,KAAK,CAACkB,SAAS,CAACkC,EAAE;QAAEhC,KAAK,EAAEhB,YAAY,CAACG;MAAQ,CAAC,CAC7D;MAAAG,QAAA,EAEDH;IAAO,CACJ,CACP;EAAA,CACG,CAAC;AAEX,CAAC,CAAC;AAEF,MAAMkB,MAAM,GAAGvD,UAAU,CAACmF,MAAM,CAAC;EAC/B;EACA;EACAf,KAAK,EAAE;IAAEgB,OAAO,EAAE;EAAE,CAAC;EACrB;EACA5B,MAAM,EAAE;IAAE6B,OAAO,EAAE;EAAI,CAAC;EACxB;EACA;EACA;EACAf,eAAe,EAAE;IAAEgB,YAAY,EAAE;EAAE;AACrC,CAAC,CAAC","ignoreList":[]}