pixelize-native-library 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (921) hide show
  1. package/COMPONENT-GOTCHAS.md +309 -0
  2. package/DESIGN-GUIDE.md +215 -0
  3. package/README.md +44 -0
  4. package/lib/module/core/MODULE.md +23 -16
  5. package/lib/module/core/a11y/MODULE.md +7 -7
  6. package/lib/module/core/a11y/touchTarget.js +6 -0
  7. package/lib/module/core/blur/blur.js +17 -0
  8. package/lib/module/core/blur/index.js +4 -0
  9. package/lib/module/core/device/MODULE.md +5 -8
  10. package/lib/module/core/gradient/AccentGradientFill.js +83 -0
  11. package/lib/module/core/gradient/ShimmerGradientFill.js +79 -0
  12. package/lib/module/core/gradient/darkenHex.js +13 -0
  13. package/lib/module/core/gradient/gradientStops.js +27 -0
  14. package/lib/module/core/gradient/index.js +8 -0
  15. package/lib/module/core/gradient/withAlpha.js +19 -0
  16. package/lib/module/core/haptics/MODULE.md +8 -0
  17. package/lib/module/core/haptics/context.js +7 -0
  18. package/lib/module/core/haptics/haptics.js +17 -0
  19. package/lib/module/core/haptics/index.js +6 -0
  20. package/lib/module/core/haptics/useHaptics.js +73 -0
  21. package/lib/module/core/heading/MODULE.md +1 -1
  22. package/lib/module/core/icon/MODULE.md +22 -23
  23. package/lib/module/core/icon/icons/building-2.js +1 -1
  24. package/lib/module/core/icon/icons/trash.js +1 -1
  25. package/lib/module/core/icon/icons/trending-up.js +10 -0
  26. package/lib/module/core/icon/resolve.js +2 -0
  27. package/lib/module/core/list/VirtualList.js +16 -3
  28. package/lib/module/core/media/expoImage.js +6 -0
  29. package/lib/module/core/motion/MODULE.md +25 -16
  30. package/lib/module/core/motion/animatedComponents.js +8 -0
  31. package/lib/module/core/motion/config.js +4 -1
  32. package/lib/module/core/motion/index.js +4 -1
  33. package/lib/module/core/motion/motionAnimation.js +87 -0
  34. package/lib/module/core/motion/presets.js +81 -81
  35. package/lib/module/core/motion/reanimatedEasing.js +19 -0
  36. package/lib/module/core/motion/useAnimatedValue.js +2 -14
  37. package/lib/module/core/motion/useMotion.js +19 -20
  38. package/lib/module/core/motion/usePressState.js +140 -0
  39. package/lib/module/core/overlay/MODULE.md +17 -0
  40. package/lib/module/core/overlay/ModalPortalContext.js +8 -0
  41. package/lib/module/core/overlay/index.js +5 -0
  42. package/lib/module/core/overlay/renderWebPortal.js +6 -0
  43. package/lib/module/core/overlay/renderWebPortal.web.js +8 -0
  44. package/lib/module/core/screen-scroll/ScreenScrollContext.js +9 -0
  45. package/lib/module/core/screen-scroll/index.js +4 -0
  46. package/lib/module/core/slot/MODULE.md +9 -0
  47. package/lib/module/core/slot/index.js +4 -0
  48. package/lib/module/core/slot/nodeSlot.js +21 -0
  49. package/lib/module/core/style/focusRing.js +37 -0
  50. package/lib/module/core/style/index.js +2 -1
  51. package/lib/module/core/style/radius.js +4 -0
  52. package/lib/module/index.js +24 -4
  53. package/lib/module/modules/accordion/Accordion.js +115 -153
  54. package/lib/module/modules/accordion/Accordion.variants.js +6 -7
  55. package/lib/module/modules/accordion/AccordionProps.js +4 -0
  56. package/lib/module/modules/accordion/MODULE.md +15 -23
  57. package/lib/module/modules/alert-dialog/AlertDialog.js +25 -7
  58. package/lib/module/modules/alert-dialog/AlertDialog.variants.js +4 -0
  59. package/lib/module/modules/alert-dialog/AlertDialogProps.js +4 -0
  60. package/lib/module/modules/alert-dialog/MODULE.md +2 -1
  61. package/lib/module/modules/app-bar/AppBar.js +27 -22
  62. package/lib/module/modules/app-bar/AppBar.variants.js +6 -2
  63. package/lib/module/modules/app-bar/AppBarProps.js +4 -0
  64. package/lib/module/modules/app-bar/MODULE.md +1 -1
  65. package/lib/module/modules/app-switcher/AppSwitcher.js +30 -0
  66. package/lib/module/modules/app-switcher/AppSwitcherProps.js +4 -0
  67. package/lib/module/modules/app-switcher/MODULE.md +14 -0
  68. package/lib/module/modules/app-switcher/index.js +4 -0
  69. package/lib/module/modules/appearance-settings/AppearanceSettings.js +58 -0
  70. package/lib/module/modules/appearance-settings/AppearanceSettingsProps.js +4 -0
  71. package/lib/module/modules/appearance-settings/MODULE.md +9 -0
  72. package/lib/module/modules/appearance-settings/index.js +4 -0
  73. package/lib/module/modules/avatar/Avatar.js +7 -1
  74. package/lib/module/modules/avatar/Avatar.variants.js +3 -1
  75. package/lib/module/modules/avatar/AvatarProps.js +4 -0
  76. package/lib/module/modules/avatar/MODULE.md +3 -3
  77. package/lib/module/modules/avatar-group/AvatarGroup.js +10 -6
  78. package/lib/module/modules/avatar-group/AvatarGroup.variants.js +23 -0
  79. package/lib/module/modules/avatar-group/AvatarGroupProps.js +4 -0
  80. package/lib/module/modules/avatar-group/MODULE.md +17 -0
  81. package/lib/module/modules/backdrop/Backdrop.js +38 -0
  82. package/lib/module/modules/backdrop/BackdropProps.js +4 -0
  83. package/lib/module/modules/backdrop/MODULE.md +11 -0
  84. package/lib/module/modules/backdrop/index.js +4 -0
  85. package/lib/module/modules/badge/Badge.js +11 -5
  86. package/lib/module/modules/badge/Badge.variants.js +2 -1
  87. package/lib/module/modules/badge/BadgeProps.js +4 -0
  88. package/lib/module/modules/badge/MODULE.md +11 -9
  89. package/lib/module/modules/banner/Banner.js +106 -60
  90. package/lib/module/modules/banner/Banner.variants.js +5 -3
  91. package/lib/module/modules/banner/BannerProps.js +4 -0
  92. package/lib/module/modules/banner/MODULE.md +27 -33
  93. package/lib/module/modules/bottom-nav/BottomNav.js +6 -3
  94. package/lib/module/modules/bottom-nav/BottomNav.variants.js +11 -12
  95. package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js +18 -19
  96. package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js +35 -10
  97. package/lib/module/modules/bottom-nav/BottomNavProps.js +4 -0
  98. package/lib/module/modules/bottom-nav/BottomNavTab.js +38 -15
  99. package/lib/module/modules/bottom-nav/MODULE.md +14 -5
  100. package/lib/module/modules/bottom-sheet/BottomSheet.js +49 -13
  101. package/lib/module/modules/bottom-sheet/BottomSheet.variants.js +15 -5
  102. package/lib/module/modules/bottom-sheet/BottomSheetProps.js +4 -0
  103. package/lib/module/modules/bottom-sheet/MODULE.md +24 -3
  104. package/lib/module/modules/breadcrumbs/Breadcrumbs.js +54 -0
  105. package/lib/module/modules/breadcrumbs/Breadcrumbs.variants.js +28 -0
  106. package/lib/module/modules/breadcrumbs/BreadcrumbsProps.js +4 -0
  107. package/lib/module/modules/breadcrumbs/MODULE.md +13 -0
  108. package/lib/module/modules/breadcrumbs/index.js +4 -0
  109. package/lib/module/modules/button/Button.js +89 -101
  110. package/lib/module/modules/button/Button.variants.js +14 -17
  111. package/lib/module/modules/button/ButtonProps.js +4 -0
  112. package/lib/module/modules/button/MODULE.md +11 -10
  113. package/lib/module/modules/button-group/ButtonGroup.js +38 -38
  114. package/lib/module/modules/button-group/ButtonGroup.variants.js +23 -50
  115. package/lib/module/modules/button-group/ButtonGroupProps.js +4 -0
  116. package/lib/module/modules/button-group/MODULE.md +27 -32
  117. package/lib/module/modules/card/Card.js +140 -19
  118. package/lib/module/modules/card/Card.variants.js +1 -0
  119. package/lib/module/modules/card/CardProps.js +4 -0
  120. package/lib/module/modules/card/MODULE.md +17 -12
  121. package/lib/module/modules/charts/BarChart.js +35 -18
  122. package/lib/module/modules/charts/BarChartProps.js +4 -0
  123. package/lib/module/modules/charts/BarList.js +33 -19
  124. package/lib/module/modules/charts/BarListProps.js +4 -0
  125. package/lib/module/modules/charts/ChartLegendProps.js +4 -0
  126. package/lib/module/modules/charts/Charts.variants.js +69 -3
  127. package/lib/module/modules/charts/DonutChart.js +12 -6
  128. package/lib/module/modules/charts/DonutChartProps.js +4 -0
  129. package/lib/module/modules/charts/LineChart.js +8 -5
  130. package/lib/module/modules/charts/LineChartProps.js +4 -0
  131. package/lib/module/modules/charts/MODULE.md +33 -20
  132. package/lib/module/modules/charts/PieChart.js +19 -8
  133. package/lib/module/modules/charts/PieChartProps.js +4 -0
  134. package/lib/module/modules/charts/Sparkline.js +4 -2
  135. package/lib/module/modules/charts/SparklineProps.js +4 -0
  136. package/lib/module/modules/checkbox/Checkbox.js +30 -28
  137. package/lib/module/modules/checkbox/Checkbox.variants.js +4 -2
  138. package/lib/module/modules/checkbox/CheckboxProps.js +4 -0
  139. package/lib/module/modules/checkbox/MODULE.md +17 -6
  140. package/lib/module/modules/chip/Chip.js +116 -54
  141. package/lib/module/modules/chip/Chip.variants.js +18 -5
  142. package/lib/module/modules/chip/ChipGroup.js +16 -5
  143. package/lib/module/modules/chip/ChipGroupProps.js +4 -0
  144. package/lib/module/modules/chip/ChipProps.js +4 -0
  145. package/lib/module/modules/chip/MODULE.md +8 -8
  146. package/lib/module/modules/combobox/Combobox.js +111 -78
  147. package/lib/module/modules/combobox/Combobox.variants.js +24 -10
  148. package/lib/module/modules/combobox/ComboboxProps.js +4 -0
  149. package/lib/module/modules/combobox/MODULE.md +14 -10
  150. package/lib/module/modules/composer/Composer.js +20 -11
  151. package/lib/module/modules/composer/Composer.variants.js +2 -0
  152. package/lib/module/modules/composer/ComposerProps.js +4 -0
  153. package/lib/module/modules/composer/MODULE.md +7 -2
  154. package/lib/module/modules/copy-button/CopyButton.js +35 -9
  155. package/lib/module/modules/copy-button/CopyButton.variants.js +7 -4
  156. package/lib/module/modules/copy-button/CopyButtonProps.js +4 -0
  157. package/lib/module/modules/copy-button/MODULE.md +11 -8
  158. package/lib/module/modules/data-table/DataTable.js +37 -14
  159. package/lib/module/modules/data-table/DataTable.variants.js +5 -4
  160. package/lib/module/modules/data-table/DataTableProps.js +4 -0
  161. package/lib/module/modules/data-table/MODULE.md +6 -10
  162. package/lib/module/modules/date-picker/Calendar.js +78 -29
  163. package/lib/module/modules/date-picker/CalendarProps.js +4 -0
  164. package/lib/module/modules/date-picker/DatePicker.variants.js +26 -10
  165. package/lib/module/modules/date-picker/DatePickerProps.js +4 -0
  166. package/lib/module/modules/date-picker/DateRangePickerProps.js +4 -0
  167. package/lib/module/modules/date-picker/MODULE.md +29 -11
  168. package/lib/module/modules/date-picker/PickerField.js +13 -4
  169. package/lib/module/modules/date-picker/PickerFieldProps.js +4 -0
  170. package/lib/module/modules/date-picker/PickerShell.js +23 -12
  171. package/lib/module/modules/date-picker/PickerShellProps.js +4 -0
  172. package/lib/module/modules/date-picker/TimePicker.js +15 -19
  173. package/lib/module/modules/date-picker/TimePickerProps.js +4 -0
  174. package/lib/module/modules/description-list/DescriptionList.js +90 -0
  175. package/lib/module/modules/description-list/DescriptionList.variants.js +63 -0
  176. package/lib/module/modules/description-list/DescriptionListProps.js +4 -0
  177. package/lib/module/modules/description-list/MODULE.md +15 -0
  178. package/lib/module/modules/description-list/index.js +4 -0
  179. package/lib/module/modules/divider/Divider.variants.js +6 -5
  180. package/lib/module/modules/divider/DividerProps.js +4 -0
  181. package/lib/module/modules/divider/MODULE.md +1 -6
  182. package/lib/module/modules/document-viewer/DocumentViewer.js +35 -0
  183. package/lib/module/modules/document-viewer/DocumentViewerProps.js +4 -0
  184. package/lib/module/modules/document-viewer/MODULE.md +12 -0
  185. package/lib/module/modules/document-viewer/index.js +4 -0
  186. package/lib/module/modules/drawer/Drawer.js +62 -45
  187. package/lib/module/modules/drawer/Drawer.variants.js +4 -4
  188. package/lib/module/modules/drawer/DrawerProps.js +4 -0
  189. package/lib/module/modules/drawer/MODULE.md +14 -21
  190. package/lib/module/modules/empty-state/EmptyState.js +19 -29
  191. package/lib/module/modules/empty-state/EmptyState.variants.js +7 -0
  192. package/lib/module/modules/empty-state/EmptyStateProps.js +4 -0
  193. package/lib/module/modules/empty-state/MODULE.md +5 -9
  194. package/lib/module/modules/fab/Fab.js +47 -69
  195. package/lib/module/modules/fab/Fab.variants.js +25 -5
  196. package/lib/module/modules/fab/FabGroup.js +113 -89
  197. package/lib/module/modules/fab/FabGroupProps.js +4 -0
  198. package/lib/module/modules/fab/FabProps.js +4 -0
  199. package/lib/module/modules/fab/MODULE.md +17 -11
  200. package/lib/module/modules/field-select-modal/FieldSelectModal.js +52 -0
  201. package/lib/module/modules/field-select-modal/FieldSelectModalProps.js +4 -0
  202. package/lib/module/modules/field-select-modal/MODULE.md +13 -0
  203. package/lib/module/modules/field-select-modal/index.js +4 -0
  204. package/lib/module/modules/file-grid/FileGrid.js +31 -16
  205. package/lib/module/modules/file-grid/FileGrid.variants.js +2 -2
  206. package/lib/module/modules/file-grid/FileGridProps.js +4 -0
  207. package/lib/module/modules/file-grid/MODULE.md +29 -4
  208. package/lib/module/modules/file-upload/FileUpload.js +56 -15
  209. package/lib/module/modules/file-upload/FileUpload.variants.js +3 -1
  210. package/lib/module/modules/file-upload/FileUploadProps.js +4 -0
  211. package/lib/module/modules/file-upload/MODULE.md +10 -12
  212. package/lib/module/modules/filter-bar/FilterBar.js +68 -0
  213. package/lib/module/modules/filter-bar/FilterBarProps.js +4 -0
  214. package/lib/module/modules/filter-bar/MODULE.md +16 -0
  215. package/lib/module/modules/filter-bar/index.js +4 -0
  216. package/lib/module/modules/filter-sheet/FilterChip.js +13 -4
  217. package/lib/module/modules/filter-sheet/FilterChipProps.js +4 -0
  218. package/lib/module/modules/filter-sheet/FilterSheet.js +19 -14
  219. package/lib/module/modules/filter-sheet/FilterSheet.variants.js +2 -3
  220. package/lib/module/modules/filter-sheet/FilterSheetBody.js +39 -17
  221. package/lib/module/modules/filter-sheet/FilterSheetProps.js +2 -0
  222. package/lib/module/modules/filter-sheet/MODULE.md +4 -4
  223. package/lib/module/modules/folder-row/FolderRow.js +33 -19
  224. package/lib/module/modules/folder-row/FolderRow.variants.js +4 -2
  225. package/lib/module/modules/folder-row/FolderRowProps.js +4 -0
  226. package/lib/module/modules/folder-row/MODULE.md +6 -4
  227. package/lib/module/modules/form-field/FormField.js +9 -4
  228. package/lib/module/modules/form-field/FormFieldProps.js +4 -0
  229. package/lib/module/modules/form-field/MODULE.md +2 -7
  230. package/lib/module/modules/gantt/Gantt.js +52 -14
  231. package/lib/module/modules/gantt/Gantt.variants.js +47 -3
  232. package/lib/module/modules/gantt/GanttProps.js +4 -0
  233. package/lib/module/modules/gantt/MODULE.md +14 -4
  234. package/lib/module/modules/image-viewer/ImageViewer.js +37 -6
  235. package/lib/module/modules/image-viewer/ImageViewerProps.js +4 -0
  236. package/lib/module/modules/image-viewer/MODULE.md +7 -1
  237. package/lib/module/modules/input/Input.js +75 -27
  238. package/lib/module/modules/input/Input.variants.js +10 -10
  239. package/lib/module/modules/input/InputProps.js +4 -0
  240. package/lib/module/modules/input/MODULE.md +9 -14
  241. package/lib/module/modules/key-value/KeyValue.js +36 -0
  242. package/lib/module/modules/key-value/KeyValueProps.js +4 -0
  243. package/lib/module/modules/key-value/MODULE.md +16 -0
  244. package/lib/module/modules/key-value/index.js +4 -0
  245. package/lib/module/modules/limit-reached-modal/LimitReachedModalProps.js +4 -0
  246. package/lib/module/modules/limit-reached-modal/MODULE.md +1 -6
  247. package/lib/module/modules/list-item/ListItem.js +60 -27
  248. package/lib/module/modules/list-item/ListItem.variants.js +11 -2
  249. package/lib/module/modules/list-item/ListItemProps.js +4 -0
  250. package/lib/module/modules/list-item/MODULE.md +14 -10
  251. package/lib/module/modules/list-screen/ListScreen.js +63 -0
  252. package/lib/module/modules/list-screen/ListScreenProps.js +4 -0
  253. package/lib/module/modules/list-screen/MODULE.md +12 -0
  254. package/lib/module/modules/list-screen/index.js +4 -0
  255. package/lib/module/modules/markdown/MODULE.md +6 -5
  256. package/lib/module/modules/markdown/Markdown.js +57 -22
  257. package/lib/module/modules/markdown/Markdown.variants.js +2 -1
  258. package/lib/module/modules/markdown/MarkdownProps.js +4 -0
  259. package/lib/module/modules/menu/MODULE.md +11 -7
  260. package/lib/module/modules/menu/Menu.js +149 -76
  261. package/lib/module/modules/menu/Menu.variants.js +5 -5
  262. package/lib/module/modules/menu/MenuProps.js +4 -0
  263. package/lib/module/modules/message-bubble/MODULE.md +7 -3
  264. package/lib/module/modules/message-bubble/MessageBubble.js +4 -5
  265. package/lib/module/modules/message-bubble/MessageBubble.variants.js +5 -5
  266. package/lib/module/modules/message-bubble/MessageBubbleProps.js +4 -0
  267. package/lib/module/modules/modal/MODULE.md +63 -89
  268. package/lib/module/modules/modal/Modal.js +168 -47
  269. package/lib/module/modules/modal/Modal.variants.js +2 -2
  270. package/lib/module/modules/modal/ModalPortalContext.js +1 -22
  271. package/lib/module/modules/modal/ModalPortalProvider.js +1 -1
  272. package/lib/module/modules/modal/ModalPortalProviderProps.js +4 -0
  273. package/lib/module/modules/modal/ModalProps.js +4 -0
  274. package/lib/module/modules/modal/renderWebPortal.js +1 -15
  275. package/lib/module/modules/modal/renderWebPortal.web.js +1 -21
  276. package/lib/module/modules/more-items/MODULE.md +3 -0
  277. package/lib/module/modules/more-items/MoreItems.js +16 -7
  278. package/lib/module/modules/more-items/MoreItems.variants.js +6 -2
  279. package/lib/module/modules/more-items/MoreItemsProps.js +4 -0
  280. package/lib/module/modules/multi-select/MODULE.md +5 -6
  281. package/lib/module/modules/multi-select/MultiSelect.js +61 -24
  282. package/lib/module/modules/multi-select/MultiSelect.variants.js +8 -4
  283. package/lib/module/modules/multi-select/MultiSelectProps.js +4 -0
  284. package/lib/module/modules/notification-bell/MODULE.md +8 -0
  285. package/lib/module/modules/notification-bell/NotificationBell.js +43 -0
  286. package/lib/module/modules/notification-bell/NotificationBellProps.js +4 -0
  287. package/lib/module/modules/notification-bell/index.js +4 -0
  288. package/lib/module/modules/number-input/MODULE.md +10 -14
  289. package/lib/module/modules/number-input/NumberInput.js +100 -85
  290. package/lib/module/modules/number-input/NumberInput.variants.js +11 -10
  291. package/lib/module/modules/number-input/NumberInputProps.js +4 -0
  292. package/lib/module/modules/org-switcher/MODULE.md +13 -8
  293. package/lib/module/modules/org-switcher/OrgSwitcher.js +34 -21
  294. package/lib/module/modules/org-switcher/OrgSwitcher.variants.js +8 -4
  295. package/lib/module/modules/org-switcher/OrgSwitcherProps.js +4 -0
  296. package/lib/module/modules/pagination/MODULE.md +4 -7
  297. package/lib/module/modules/pagination/Pagination.js +97 -48
  298. package/lib/module/modules/pagination/Pagination.variants.js +6 -4
  299. package/lib/module/modules/pagination/PaginationControls.js +58 -36
  300. package/lib/module/modules/pagination/PaginationProps.js +4 -0
  301. package/lib/module/modules/person-chip/MODULE.md +11 -0
  302. package/lib/module/modules/person-chip/PersonChip.js +65 -0
  303. package/lib/module/modules/person-chip/PersonChipProps.js +4 -0
  304. package/lib/module/modules/person-chip/index.js +4 -0
  305. package/lib/module/modules/pin-input/MODULE.md +12 -19
  306. package/lib/module/modules/pin-input/PinInput.js +10 -3
  307. package/lib/module/modules/pin-input/PinInput.variants.js +4 -4
  308. package/lib/module/modules/pin-input/PinInputProps.js +4 -0
  309. package/lib/module/modules/plan-badge/MODULE.md +4 -0
  310. package/lib/module/modules/plan-badge/PlanBadge.js +25 -0
  311. package/lib/module/modules/plan-badge/PlanBadgeProps.js +4 -0
  312. package/lib/module/modules/plan-badge/index.js +4 -0
  313. package/lib/module/modules/plan-pill/MODULE.md +4 -0
  314. package/lib/module/modules/plan-pill/PlanPill.js +24 -0
  315. package/lib/module/modules/plan-pill/PlanPillProps.js +4 -0
  316. package/lib/module/modules/plan-pill/index.js +4 -0
  317. package/lib/module/modules/progress-bar/MODULE.md +12 -14
  318. package/lib/module/modules/progress-bar/ProgressBar.js +28 -36
  319. package/lib/module/modules/progress-bar/ProgressBarProps.js +4 -0
  320. package/lib/module/modules/radio-group/MODULE.md +7 -13
  321. package/lib/module/modules/radio-group/RadioGroup.js +125 -65
  322. package/lib/module/modules/radio-group/RadioGroup.variants.js +4 -4
  323. package/lib/module/modules/radio-group/RadioGroupProps.js +4 -0
  324. package/lib/module/modules/reorder/MODULE.md +7 -9
  325. package/lib/module/modules/reorder/Reorder.js +12 -6
  326. package/lib/module/modules/reorder/Reorder.variants.js +7 -6
  327. package/lib/module/modules/reorder/ReorderProps.js +4 -0
  328. package/lib/module/modules/rich-text/MODULE.md +5 -3
  329. package/lib/module/modules/rich-text/RichText.js +42 -22
  330. package/lib/module/modules/rich-text/RichTextProps.js +4 -0
  331. package/lib/module/modules/rich-text-editor/MODULE.md +8 -15
  332. package/lib/module/modules/rich-text-editor/RichTextEditor.js +13 -5
  333. package/lib/module/modules/rich-text-editor/RichTextEditor.variants.js +9 -6
  334. package/lib/module/modules/rich-text-editor/RichTextEditorProps.js +4 -0
  335. package/lib/module/modules/save-bar/MODULE.md +3 -0
  336. package/lib/module/modules/save-bar/SaveBar.js +49 -0
  337. package/lib/module/modules/save-bar/SaveBarProps.js +4 -0
  338. package/lib/module/modules/save-bar/index.js +4 -0
  339. package/lib/module/modules/screen/MODULE.md +14 -5
  340. package/lib/module/modules/screen/Screen.js +109 -33
  341. package/lib/module/modules/screen/Screen.variants.js +18 -0
  342. package/lib/module/modules/screen/ScreenProps.js +4 -0
  343. package/lib/module/modules/search-bar/MODULE.md +9 -8
  344. package/lib/module/modules/search-bar/SearchBar.js +49 -27
  345. package/lib/module/modules/search-bar/SearchBar.variants.js +13 -12
  346. package/lib/module/modules/search-bar/SearchBarProps.js +4 -0
  347. package/lib/module/modules/section/MODULE.md +3 -1
  348. package/lib/module/modules/section/Section.js +14 -16
  349. package/lib/module/modules/section/Section.variants.js +1 -6
  350. package/lib/module/modules/section/SectionProps.js +4 -0
  351. package/lib/module/modules/section-list/MODULE.md +21 -1
  352. package/lib/module/modules/section-list/SectionListProps.js +4 -0
  353. package/lib/module/modules/segmented-control/MODULE.md +30 -26
  354. package/lib/module/modules/segmented-control/SegmentedControl.js +124 -70
  355. package/lib/module/modules/segmented-control/SegmentedControl.variants.js +11 -43
  356. package/lib/module/modules/segmented-control/SegmentedControlProps.js +4 -0
  357. package/lib/module/modules/select/MODULE.md +34 -10
  358. package/lib/module/modules/select/Select.js +74 -34
  359. package/lib/module/modules/select/Select.variants.js +39 -16
  360. package/lib/module/modules/select/SelectProps.js +4 -0
  361. package/lib/module/modules/setting-row/MODULE.md +8 -0
  362. package/lib/module/modules/setting-row/SettingRow.js +50 -0
  363. package/lib/module/modules/setting-row/SettingRowProps.js +4 -0
  364. package/lib/module/modules/setting-row/index.js +4 -0
  365. package/lib/module/modules/settings-section/MODULE.md +7 -0
  366. package/lib/module/modules/settings-section/SettingsSection.js +37 -0
  367. package/lib/module/modules/settings-section/SettingsSectionProps.js +4 -0
  368. package/lib/module/modules/settings-section/index.js +4 -0
  369. package/lib/module/modules/skeleton/MODULE.md +25 -28
  370. package/lib/module/modules/skeleton/Skeleton.js +54 -53
  371. package/lib/module/modules/skeleton/Skeleton.variants.js +11 -74
  372. package/lib/module/modules/skeleton/SkeletonProps.js +4 -0
  373. package/lib/module/modules/slider/MODULE.md +4 -1
  374. package/lib/module/modules/slider/Slider.js +7 -6
  375. package/lib/module/modules/slider/Slider.variants.js +4 -2
  376. package/lib/module/modules/slider/SliderProps.js +4 -0
  377. package/lib/module/modules/spinner/MODULE.md +3 -2
  378. package/lib/module/modules/spinner/SpinnerProps.js +4 -0
  379. package/lib/module/modules/stage-progress/MODULE.md +32 -14
  380. package/lib/module/modules/stage-progress/StageProgress.js +136 -59
  381. package/lib/module/modules/stage-progress/StageProgress.variants.js +57 -20
  382. package/lib/module/modules/stage-progress/StageProgressProps.js +4 -0
  383. package/lib/module/modules/stat-grid/MODULE.md +11 -0
  384. package/lib/module/modules/stat-grid/StatGrid.js +34 -0
  385. package/lib/module/modules/stat-grid/StatGridProps.js +4 -0
  386. package/lib/module/modules/stat-grid/index.js +4 -0
  387. package/lib/module/modules/stat-tile/MODULE.md +14 -1
  388. package/lib/module/modules/stat-tile/StatTile.js +51 -21
  389. package/lib/module/modules/stat-tile/StatTile.variants.js +7 -0
  390. package/lib/module/modules/stat-tile/StatTileProps.js +4 -0
  391. package/lib/module/modules/state-block/MODULE.md +12 -3
  392. package/lib/module/modules/state-block/StateBlock.js +54 -41
  393. package/lib/module/modules/state-block/StateBlock.variants.js +7 -0
  394. package/lib/module/modules/state-block/StateBlockProps.js +4 -0
  395. package/lib/module/modules/stepper/MODULE.md +2 -0
  396. package/lib/module/modules/stepper/Stepper.js +22 -21
  397. package/lib/module/modules/stepper/Stepper.variants.js +2 -0
  398. package/lib/module/modules/stepper/StepperProps.js +4 -0
  399. package/lib/module/modules/surface/MODULE.md +57 -0
  400. package/lib/module/modules/surface/Surface.js +47 -0
  401. package/lib/module/modules/surface/Surface.variants.js +33 -0
  402. package/lib/module/modules/surface/SurfaceProps.js +4 -0
  403. package/lib/module/modules/surface/index.js +4 -0
  404. package/lib/module/modules/swipeable-row/MODULE.md +12 -2
  405. package/lib/module/modules/swipeable-row/SwipeableRow.js +57 -13
  406. package/lib/module/modules/swipeable-row/SwipeableRowProps.js +4 -0
  407. package/lib/module/modules/switch/MODULE.md +7 -2
  408. package/lib/module/modules/switch/Switch.js +49 -9
  409. package/lib/module/modules/switch/Switch.variants.js +2 -3
  410. package/lib/module/modules/switch/SwitchProps.js +4 -0
  411. package/lib/module/modules/tabs/MODULE.md +11 -14
  412. package/lib/module/modules/tabs/Tabs.js +115 -51
  413. package/lib/module/modules/tabs/Tabs.variants.js +6 -6
  414. package/lib/module/modules/tabs/TabsProps.js +4 -0
  415. package/lib/module/modules/text/MODULE.md +25 -14
  416. package/lib/module/modules/text/Text.js +18 -6
  417. package/lib/module/modules/text/Text.variants.js +116 -44
  418. package/lib/module/modules/text/TextProps.js +4 -0
  419. package/lib/module/modules/textarea/MODULE.md +12 -16
  420. package/lib/module/modules/textarea/Textarea.js +15 -12
  421. package/lib/module/modules/textarea/Textarea.variants.js +6 -2
  422. package/lib/module/modules/textarea/TextareaProps.js +4 -0
  423. package/lib/module/modules/timeline/MODULE.md +8 -17
  424. package/lib/module/modules/timeline/Timeline.js +79 -22
  425. package/lib/module/modules/timeline/Timeline.variants.js +2 -0
  426. package/lib/module/modules/timeline/TimelineProps.js +4 -0
  427. package/lib/module/modules/toast/MODULE.md +15 -18
  428. package/lib/module/modules/toast/Toast.js +75 -55
  429. package/lib/module/modules/toast/Toast.variants.js +7 -5
  430. package/lib/module/modules/tooltip/MODULE.md +22 -22
  431. package/lib/module/modules/tooltip/Tooltip.js +77 -16
  432. package/lib/module/modules/tooltip/Tooltip.variants.js +8 -1
  433. package/lib/module/modules/tooltip/TooltipProps.js +4 -0
  434. package/lib/module/modules/typing-indicator/MODULE.md +1 -1
  435. package/lib/module/modules/typing-indicator/TypingIndicator.js +78 -51
  436. package/lib/module/modules/typing-indicator/TypingIndicatorProps.js +4 -0
  437. package/lib/module/modules/upgrade-button/MODULE.md +3 -0
  438. package/lib/module/modules/upgrade-button/UpgradeButton.js +23 -0
  439. package/lib/module/modules/upgrade-button/UpgradeButtonProps.js +4 -0
  440. package/lib/module/modules/upgrade-button/index.js +4 -0
  441. package/lib/module/theme/MODULE.md +5 -1
  442. package/lib/module/theme/platform/MODULE.md +16 -8
  443. package/lib/module/theme/platform/elevation.native.js +1 -51
  444. package/lib/module/theme/platform/floatingSurface.native.js +75 -0
  445. package/lib/module/theme/platform/highlight.native.js +59 -0
  446. package/lib/module/theme/platform/index.js +5 -0
  447. package/lib/module/theme/platform/motion.native.js +31 -11
  448. package/lib/module/theme/platform/stateLayer.native.js +14 -0
  449. package/lib/module/theme/platform/surfaces.native.js +11 -0
  450. package/lib/module/theme/provider/PixelizeProvider.js +18 -5
  451. package/lib/module/theme/tokens/MODULE.md +36 -28
  452. package/lib/module/theme/tokens/THEME-CONTRACT.md +187 -0
  453. package/lib/module/theme/tokens/assertPalette.js +29 -0
  454. package/lib/module/theme/tokens/brands/emerald/palette.light.js +12 -9
  455. package/lib/module/theme/tokens/brands/lavender/palette.light.js +7 -6
  456. package/lib/module/theme/tokens/brands/meadow/palette.light.js +9 -8
  457. package/lib/module/theme/tokens/brands/radiant/palette.light.js +10 -9
  458. package/lib/module/theme/tokens/brands/rosewood/palette.light.js +10 -9
  459. package/lib/module/theme/tokens/brands/skyline/palette.light.js +9 -8
  460. package/lib/module/theme/tokens/brands/slate/palette.light.js +11 -13
  461. package/lib/module/theme/tokens/brands/storefront/palette.light.js +7 -6
  462. package/lib/module/theme/tokens/brands/zinc/palette.dark.js +3 -2
  463. package/lib/module/theme/tokens/brands/zinc/palette.light.js +3 -2
  464. package/lib/module/theme/tokens/builders/accentText.js +10 -1
  465. package/lib/module/theme/tokens/builders/buildBrandScale.js +42 -0
  466. package/lib/module/theme/tokens/builders/buildDarkPalette.js +3 -2
  467. package/lib/module/theme/tokens/builders/finalizePalette.js +34 -0
  468. package/lib/module/theme/tokens/builders/gradientInk.js +23 -0
  469. package/lib/module/theme/tokens/builders/liftToContrast.js +44 -0
  470. package/lib/module/theme/tokens/builders/paletteFromAccent.js +30 -0
  471. package/lib/module/theme/tokens/builders/placeholderInk.js +22 -0
  472. package/lib/module/theme/tokens/builders/semanticText.js +14 -0
  473. package/lib/module/theme/tokens/builders/skeletonShimmer.js +22 -0
  474. package/lib/module/theme/tokens/builders/surfaceRungs.js +44 -0
  475. package/lib/module/theme/tokens/index.js +8 -0
  476. package/lib/module/theme/tokens/primitives/controlSizes.js +16 -0
  477. package/lib/module/theme/tokens/primitives/index.js +1 -0
  478. package/lib/module/theme/tokens/roles/index.js +7 -0
  479. package/lib/typescript/core/a11y/touchTarget.d.ts +4 -0
  480. package/lib/typescript/core/blur/blur.d.ts +14 -0
  481. package/lib/typescript/core/blur/index.d.ts +3 -0
  482. package/lib/typescript/core/gradient/AccentGradientFill.d.ts +7 -0
  483. package/lib/typescript/core/gradient/ShimmerGradientFill.d.ts +8 -0
  484. package/lib/typescript/core/gradient/darkenHex.d.ts +2 -0
  485. package/lib/typescript/core/gradient/gradientStops.d.ts +10 -0
  486. package/lib/typescript/core/gradient/index.d.ts +6 -0
  487. package/lib/typescript/core/gradient/withAlpha.d.ts +2 -0
  488. package/lib/typescript/core/haptics/context.d.ts +3 -0
  489. package/lib/typescript/core/haptics/haptics.d.ts +33 -0
  490. package/lib/typescript/core/haptics/index.d.ts +6 -0
  491. package/lib/typescript/core/haptics/useHaptics.d.ts +12 -0
  492. package/lib/typescript/core/icon/icons/trending-up.d.ts +3 -0
  493. package/lib/typescript/core/icon/names.d.ts +1 -1
  494. package/lib/typescript/core/list/VirtualList.d.ts +6 -1
  495. package/lib/typescript/core/media/expoImage.d.ts +15 -6
  496. package/lib/typescript/core/media/pickers.d.ts +5 -5
  497. package/lib/typescript/core/motion/animatedComponents.d.ts +4 -0
  498. package/lib/typescript/core/motion/config.d.ts +2 -1
  499. package/lib/typescript/core/motion/index.d.ts +5 -1
  500. package/lib/typescript/core/motion/motionAnimation.d.ts +12 -0
  501. package/lib/typescript/core/motion/presets.d.ts +5 -36
  502. package/lib/typescript/core/motion/reanimatedEasing.d.ts +4 -0
  503. package/lib/typescript/core/motion/useAnimatedValue.d.ts +2 -10
  504. package/lib/typescript/core/motion/useMotion.d.ts +4 -13
  505. package/lib/typescript/core/motion/usePressState.d.ts +20 -0
  506. package/lib/typescript/core/overlay/ModalPortalContext.d.ts +2 -0
  507. package/lib/typescript/core/overlay/index.d.ts +3 -0
  508. package/lib/typescript/core/overlay/renderWebPortal.d.ts +3 -0
  509. package/lib/typescript/core/overlay/renderWebPortal.web.d.ts +3 -0
  510. package/lib/typescript/core/screen-scroll/ScreenScrollContext.d.ts +8 -0
  511. package/lib/typescript/core/screen-scroll/index.d.ts +3 -0
  512. package/lib/typescript/core/slot/index.d.ts +2 -0
  513. package/lib/typescript/core/slot/nodeSlot.d.ts +5 -0
  514. package/lib/typescript/core/style/focusRing.d.ts +10 -0
  515. package/lib/typescript/core/style/index.d.ts +2 -1
  516. package/lib/typescript/core/style/radius.d.ts +2 -0
  517. package/lib/typescript/index.d.ts +52 -12
  518. package/lib/typescript/modules/accordion/Accordion.d.ts +2 -37
  519. package/lib/typescript/modules/accordion/Accordion.variants.d.ts +4 -5
  520. package/lib/typescript/modules/accordion/AccordionProps.d.ts +49 -0
  521. package/lib/typescript/modules/accordion/index.d.ts +1 -1
  522. package/lib/typescript/modules/alert-dialog/AlertDialog.d.ts +2 -15
  523. package/lib/typescript/modules/alert-dialog/AlertDialog.variants.d.ts +1 -0
  524. package/lib/typescript/modules/alert-dialog/AlertDialogProps.d.ts +20 -0
  525. package/lib/typescript/modules/alert-dialog/index.d.ts +1 -1
  526. package/lib/typescript/modules/app-bar/AppBar.d.ts +1 -20
  527. package/lib/typescript/modules/app-bar/AppBar.variants.d.ts +4 -0
  528. package/lib/typescript/modules/app-bar/AppBarProps.d.ts +25 -0
  529. package/lib/typescript/modules/app-bar/index.d.ts +1 -1
  530. package/lib/typescript/modules/app-switcher/AppSwitcher.d.ts +3 -0
  531. package/lib/typescript/modules/app-switcher/AppSwitcherProps.d.ts +17 -0
  532. package/lib/typescript/modules/app-switcher/index.d.ts +3 -0
  533. package/lib/typescript/modules/appearance-settings/AppearanceSettings.d.ts +3 -0
  534. package/lib/typescript/modules/appearance-settings/AppearanceSettingsProps.d.ts +15 -0
  535. package/lib/typescript/modules/appearance-settings/index.d.ts +3 -0
  536. package/lib/typescript/modules/avatar/Avatar.d.ts +2 -33
  537. package/lib/typescript/modules/avatar/Avatar.variants.d.ts +3 -1
  538. package/lib/typescript/modules/avatar/AvatarProps.d.ts +23 -0
  539. package/lib/typescript/modules/avatar/index.d.ts +1 -1
  540. package/lib/typescript/modules/avatar-group/AvatarGroup.d.ts +5 -20
  541. package/lib/typescript/modules/avatar-group/AvatarGroup.variants.d.ts +19 -0
  542. package/lib/typescript/modules/avatar-group/AvatarGroupProps.d.ts +27 -0
  543. package/lib/typescript/modules/avatar-group/index.d.ts +1 -1
  544. package/lib/typescript/modules/backdrop/Backdrop.d.ts +3 -0
  545. package/lib/typescript/modules/backdrop/BackdropProps.d.ts +11 -0
  546. package/lib/typescript/modules/backdrop/index.d.ts +3 -0
  547. package/lib/typescript/modules/badge/Badge.d.ts +2 -14
  548. package/lib/typescript/modules/badge/BadgeProps.d.ts +17 -0
  549. package/lib/typescript/modules/badge/index.d.ts +1 -1
  550. package/lib/typescript/modules/banner/Banner.d.ts +1 -20
  551. package/lib/typescript/modules/banner/Banner.variants.d.ts +2 -0
  552. package/lib/typescript/modules/banner/BannerProps.d.ts +29 -0
  553. package/lib/typescript/modules/banner/index.d.ts +2 -1
  554. package/lib/typescript/modules/bottom-nav/BottomNav.d.ts +1 -34
  555. package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts +3 -4
  556. package/lib/typescript/modules/bottom-nav/BottomNavProps.d.ts +29 -0
  557. package/lib/typescript/modules/bottom-nav/index.d.ts +2 -1
  558. package/lib/typescript/modules/bottom-sheet/BottomSheet.d.ts +1 -13
  559. package/lib/typescript/modules/bottom-sheet/BottomSheet.variants.d.ts +3 -1
  560. package/lib/typescript/modules/bottom-sheet/BottomSheetProps.d.ts +17 -0
  561. package/lib/typescript/modules/bottom-sheet/index.d.ts +1 -1
  562. package/lib/typescript/modules/breadcrumbs/Breadcrumbs.d.ts +3 -0
  563. package/lib/typescript/modules/breadcrumbs/Breadcrumbs.variants.d.ts +6 -0
  564. package/lib/typescript/modules/breadcrumbs/BreadcrumbsProps.d.ts +18 -0
  565. package/lib/typescript/modules/breadcrumbs/index.d.ts +3 -0
  566. package/lib/typescript/modules/button/Button.d.ts +1 -60
  567. package/lib/typescript/modules/button/Button.variants.d.ts +11 -15
  568. package/lib/typescript/modules/button/ButtonProps.d.ts +47 -0
  569. package/lib/typescript/modules/button/index.d.ts +1 -1
  570. package/lib/typescript/modules/button-group/ButtonGroup.d.ts +2 -36
  571. package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts +24 -59
  572. package/lib/typescript/modules/button-group/ButtonGroupProps.d.ts +21 -0
  573. package/lib/typescript/modules/button-group/index.d.ts +1 -1
  574. package/lib/typescript/modules/card/Card.d.ts +4 -15
  575. package/lib/typescript/modules/card/CardProps.d.ts +27 -0
  576. package/lib/typescript/modules/card/index.d.ts +1 -1
  577. package/lib/typescript/modules/charts/BarChart.d.ts +1 -24
  578. package/lib/typescript/modules/charts/BarChartProps.d.ts +36 -0
  579. package/lib/typescript/modules/charts/BarList.d.ts +1 -16
  580. package/lib/typescript/modules/charts/BarListProps.d.ts +22 -0
  581. package/lib/typescript/modules/charts/ChartLegend.d.ts +2 -14
  582. package/lib/typescript/modules/charts/ChartLegendProps.d.ts +19 -0
  583. package/lib/typescript/modules/charts/Charts.variants.d.ts +31 -1
  584. package/lib/typescript/modules/charts/DonutChart.d.ts +1 -19
  585. package/lib/typescript/modules/charts/DonutChartProps.d.ts +27 -0
  586. package/lib/typescript/modules/charts/LineChart.d.ts +1 -28
  587. package/lib/typescript/modules/charts/LineChartProps.d.ts +40 -0
  588. package/lib/typescript/modules/charts/PieChart.d.ts +1 -16
  589. package/lib/typescript/modules/charts/PieChartProps.d.ts +24 -0
  590. package/lib/typescript/modules/charts/Sparkline.d.ts +1 -11
  591. package/lib/typescript/modules/charts/SparklineProps.d.ts +17 -0
  592. package/lib/typescript/modules/charts/index.d.ts +6 -6
  593. package/lib/typescript/modules/checkbox/Checkbox.d.ts +1 -33
  594. package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts +2 -1
  595. package/lib/typescript/modules/checkbox/CheckboxProps.d.ts +27 -0
  596. package/lib/typescript/modules/checkbox/index.d.ts +1 -1
  597. package/lib/typescript/modules/chip/Chip.d.ts +1 -28
  598. package/lib/typescript/modules/chip/Chip.variants.d.ts +8 -3
  599. package/lib/typescript/modules/chip/ChipGroup.d.ts +1 -14
  600. package/lib/typescript/modules/chip/ChipGroupProps.d.ts +16 -0
  601. package/lib/typescript/modules/chip/ChipProps.d.ts +27 -0
  602. package/lib/typescript/modules/chip/index.d.ts +3 -3
  603. package/lib/typescript/modules/combobox/Combobox.d.ts +2 -45
  604. package/lib/typescript/modules/combobox/Combobox.variants.d.ts +20 -5
  605. package/lib/typescript/modules/combobox/ComboboxProps.d.ts +40 -0
  606. package/lib/typescript/modules/combobox/index.d.ts +1 -1
  607. package/lib/typescript/modules/composer/Composer.d.ts +1 -18
  608. package/lib/typescript/modules/composer/ComposerProps.d.ts +20 -0
  609. package/lib/typescript/modules/composer/index.d.ts +1 -1
  610. package/lib/typescript/modules/copy-button/CopyButton.d.ts +1 -15
  611. package/lib/typescript/modules/copy-button/CopyButton.variants.d.ts +2 -1
  612. package/lib/typescript/modules/copy-button/CopyButtonProps.d.ts +18 -0
  613. package/lib/typescript/modules/copy-button/index.d.ts +1 -1
  614. package/lib/typescript/modules/data-table/DataTable.d.ts +2 -31
  615. package/lib/typescript/modules/data-table/DataTable.variants.d.ts +3 -2
  616. package/lib/typescript/modules/data-table/DataTableProps.d.ts +43 -0
  617. package/lib/typescript/modules/data-table/index.d.ts +1 -1
  618. package/lib/typescript/modules/date-picker/Calendar.d.ts +1 -23
  619. package/lib/typescript/modules/date-picker/CalendarProps.d.ts +31 -0
  620. package/lib/typescript/modules/date-picker/DatePicker.d.ts +1 -27
  621. package/lib/typescript/modules/date-picker/DatePicker.variants.d.ts +17 -4
  622. package/lib/typescript/modules/date-picker/DatePickerProps.d.ts +33 -0
  623. package/lib/typescript/modules/date-picker/DateRangePicker.d.ts +1 -23
  624. package/lib/typescript/modules/date-picker/DateRangePickerProps.d.ts +27 -0
  625. package/lib/typescript/modules/date-picker/PickerField.d.ts +1 -17
  626. package/lib/typescript/modules/date-picker/PickerFieldProps.d.ts +19 -0
  627. package/lib/typescript/modules/date-picker/PickerShell.d.ts +1 -12
  628. package/lib/typescript/modules/date-picker/PickerShellProps.d.ts +16 -0
  629. package/lib/typescript/modules/date-picker/TimePicker.d.ts +2 -16
  630. package/lib/typescript/modules/date-picker/TimePickerProps.d.ts +14 -0
  631. package/lib/typescript/modules/date-picker/index.d.ts +4 -4
  632. package/lib/typescript/modules/description-list/DescriptionList.d.ts +8 -0
  633. package/lib/typescript/modules/description-list/DescriptionList.variants.d.ts +29 -0
  634. package/lib/typescript/modules/description-list/DescriptionListProps.d.ts +23 -0
  635. package/lib/typescript/modules/description-list/index.d.ts +4 -0
  636. package/lib/typescript/modules/divider/Divider.d.ts +1 -8
  637. package/lib/typescript/modules/divider/Divider.variants.d.ts +4 -4
  638. package/lib/typescript/modules/divider/DividerProps.d.ts +11 -0
  639. package/lib/typescript/modules/divider/index.d.ts +1 -1
  640. package/lib/typescript/modules/document-viewer/DocumentViewer.d.ts +3 -0
  641. package/lib/typescript/modules/document-viewer/DocumentViewerProps.d.ts +13 -0
  642. package/lib/typescript/modules/document-viewer/index.d.ts +3 -0
  643. package/lib/typescript/modules/drawer/Drawer.d.ts +2 -7
  644. package/lib/typescript/modules/drawer/DrawerProps.d.ts +9 -0
  645. package/lib/typescript/modules/drawer/index.d.ts +1 -1
  646. package/lib/typescript/modules/empty-state/EmptyState.d.ts +1 -15
  647. package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts +1 -0
  648. package/lib/typescript/modules/empty-state/EmptyStateProps.d.ts +24 -0
  649. package/lib/typescript/modules/empty-state/index.d.ts +1 -1
  650. package/lib/typescript/modules/fab/Fab.d.ts +1 -51
  651. package/lib/typescript/modules/fab/Fab.variants.d.ts +5 -2
  652. package/lib/typescript/modules/fab/FabGroup.d.ts +1 -34
  653. package/lib/typescript/modules/fab/FabGroupProps.d.ts +34 -0
  654. package/lib/typescript/modules/fab/FabProps.d.ts +50 -0
  655. package/lib/typescript/modules/fab/index.d.ts +2 -2
  656. package/lib/typescript/modules/field-select-modal/FieldSelectModal.d.ts +3 -0
  657. package/lib/typescript/modules/field-select-modal/FieldSelectModalProps.d.ts +20 -0
  658. package/lib/typescript/modules/field-select-modal/index.d.ts +3 -0
  659. package/lib/typescript/modules/file-grid/FileGrid.d.ts +1 -18
  660. package/lib/typescript/modules/file-grid/FileGridProps.d.ts +23 -0
  661. package/lib/typescript/modules/file-grid/index.d.ts +1 -1
  662. package/lib/typescript/modules/file-upload/FileUpload.d.ts +1 -27
  663. package/lib/typescript/modules/file-upload/FileUploadProps.d.ts +27 -0
  664. package/lib/typescript/modules/file-upload/index.d.ts +1 -1
  665. package/lib/typescript/modules/filter-bar/FilterBar.d.ts +3 -0
  666. package/lib/typescript/modules/filter-bar/FilterBarProps.d.ts +17 -0
  667. package/lib/typescript/modules/filter-bar/index.d.ts +3 -0
  668. package/lib/typescript/modules/filter-sheet/FilterChip.d.ts +1 -9
  669. package/lib/typescript/modules/filter-sheet/FilterChipProps.d.ts +11 -0
  670. package/lib/typescript/modules/filter-sheet/FilterSheet.d.ts +1 -32
  671. package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts +2 -1
  672. package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts +1 -1
  673. package/lib/typescript/modules/filter-sheet/FilterSheetProps.d.ts +36 -0
  674. package/lib/typescript/modules/filter-sheet/filterSheet.helpers.d.ts +1 -1
  675. package/lib/typescript/modules/filter-sheet/index.d.ts +2 -2
  676. package/lib/typescript/modules/folder-row/FolderRow.d.ts +1 -19
  677. package/lib/typescript/modules/folder-row/FolderRowProps.d.ts +17 -0
  678. package/lib/typescript/modules/folder-row/index.d.ts +1 -1
  679. package/lib/typescript/modules/form-field/FormField.d.ts +2 -17
  680. package/lib/typescript/modules/form-field/FormFieldProps.d.ts +23 -0
  681. package/lib/typescript/modules/form-field/index.d.ts +1 -1
  682. package/lib/typescript/modules/gantt/Gantt.d.ts +2 -9
  683. package/lib/typescript/modules/gantt/Gantt.variants.d.ts +29 -2
  684. package/lib/typescript/modules/gantt/GanttProps.d.ts +13 -0
  685. package/lib/typescript/modules/gantt/index.d.ts +1 -1
  686. package/lib/typescript/modules/image-viewer/ImageViewer.d.ts +2 -15
  687. package/lib/typescript/modules/image-viewer/ImageViewerProps.d.ts +16 -0
  688. package/lib/typescript/modules/image-viewer/index.d.ts +2 -1
  689. package/lib/typescript/modules/input/Input.d.ts +2 -30
  690. package/lib/typescript/modules/input/Input.variants.d.ts +8 -8
  691. package/lib/typescript/modules/input/InputProps.d.ts +43 -0
  692. package/lib/typescript/modules/input/index.d.ts +1 -1
  693. package/lib/typescript/modules/key-value/KeyValue.d.ts +3 -0
  694. package/lib/typescript/modules/key-value/KeyValueProps.d.ts +11 -0
  695. package/lib/typescript/modules/key-value/index.d.ts +3 -0
  696. package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.d.ts +1 -17
  697. package/lib/typescript/modules/limit-reached-modal/LimitReachedModalProps.d.ts +24 -0
  698. package/lib/typescript/modules/limit-reached-modal/index.d.ts +1 -1
  699. package/lib/typescript/modules/list-item/ListItem.d.ts +3 -17
  700. package/lib/typescript/modules/list-item/ListItem.variants.d.ts +137 -1
  701. package/lib/typescript/modules/list-item/ListItemProps.d.ts +22 -0
  702. package/lib/typescript/modules/list-item/index.d.ts +1 -1
  703. package/lib/typescript/modules/list-screen/ListScreen.d.ts +5 -0
  704. package/lib/typescript/modules/list-screen/ListScreenProps.d.ts +17 -0
  705. package/lib/typescript/modules/list-screen/index.d.ts +3 -0
  706. package/lib/typescript/modules/markdown/Markdown.d.ts +8 -8
  707. package/lib/typescript/modules/markdown/MarkdownProps.d.ts +12 -0
  708. package/lib/typescript/modules/markdown/index.d.ts +1 -1
  709. package/lib/typescript/modules/menu/Menu.d.ts +2 -19
  710. package/lib/typescript/modules/menu/Menu.variants.d.ts +2 -1
  711. package/lib/typescript/modules/menu/MenuProps.d.ts +26 -0
  712. package/lib/typescript/modules/menu/index.d.ts +1 -1
  713. package/lib/typescript/modules/message-bubble/MessageBubble.d.ts +3 -11
  714. package/lib/typescript/modules/message-bubble/MessageBubble.variants.d.ts +1 -2
  715. package/lib/typescript/modules/message-bubble/MessageBubbleProps.d.ts +12 -0
  716. package/lib/typescript/modules/message-bubble/index.d.ts +1 -1
  717. package/lib/typescript/modules/modal/Modal.d.ts +2 -10
  718. package/lib/typescript/modules/modal/ModalPortalContext.d.ts +1 -1
  719. package/lib/typescript/modules/modal/ModalPortalProvider.d.ts +2 -12
  720. package/lib/typescript/modules/modal/ModalPortalProviderProps.d.ts +8 -0
  721. package/lib/typescript/modules/modal/ModalProps.d.ts +22 -0
  722. package/lib/typescript/modules/modal/index.d.ts +2 -2
  723. package/lib/typescript/modules/modal/renderWebPortal.d.ts +1 -14
  724. package/lib/typescript/modules/modal/renderWebPortal.web.d.ts +1 -18
  725. package/lib/typescript/modules/more-items/MoreItems.d.ts +2 -10
  726. package/lib/typescript/modules/more-items/MoreItems.variants.d.ts +3 -1
  727. package/lib/typescript/modules/more-items/MoreItemsProps.d.ts +14 -0
  728. package/lib/typescript/modules/more-items/index.d.ts +1 -1
  729. package/lib/typescript/modules/multi-select/MultiSelect.d.ts +1 -19
  730. package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts +2 -1
  731. package/lib/typescript/modules/multi-select/MultiSelectProps.d.ts +29 -0
  732. package/lib/typescript/modules/multi-select/index.d.ts +1 -1
  733. package/lib/typescript/modules/notification-bell/NotificationBell.d.ts +3 -0
  734. package/lib/typescript/modules/notification-bell/NotificationBellProps.d.ts +10 -0
  735. package/lib/typescript/modules/notification-bell/index.d.ts +3 -0
  736. package/lib/typescript/modules/number-input/NumberInput.d.ts +1 -26
  737. package/lib/typescript/modules/number-input/NumberInput.variants.d.ts +9 -8
  738. package/lib/typescript/modules/number-input/NumberInputProps.d.ts +23 -0
  739. package/lib/typescript/modules/number-input/index.d.ts +1 -1
  740. package/lib/typescript/modules/org-switcher/OrgSwitcher.d.ts +1 -24
  741. package/lib/typescript/modules/org-switcher/OrgSwitcher.variants.d.ts +2 -1
  742. package/lib/typescript/modules/org-switcher/OrgSwitcherProps.d.ts +29 -0
  743. package/lib/typescript/modules/org-switcher/index.d.ts +1 -1
  744. package/lib/typescript/modules/pagination/Pagination.d.ts +1 -26
  745. package/lib/typescript/modules/pagination/Pagination.variants.d.ts +2 -1
  746. package/lib/typescript/modules/pagination/PaginationControls.d.ts +1 -4
  747. package/lib/typescript/modules/pagination/PaginationProps.d.ts +28 -0
  748. package/lib/typescript/modules/pagination/index.d.ts +1 -1
  749. package/lib/typescript/modules/person-chip/PersonChip.d.ts +3 -0
  750. package/lib/typescript/modules/person-chip/PersonChipProps.d.ts +17 -0
  751. package/lib/typescript/modules/person-chip/index.d.ts +3 -0
  752. package/lib/typescript/modules/pin-input/PinInput.d.ts +1 -32
  753. package/lib/typescript/modules/pin-input/PinInput.variants.d.ts +2 -2
  754. package/lib/typescript/modules/pin-input/PinInputProps.d.ts +26 -0
  755. package/lib/typescript/modules/pin-input/index.d.ts +1 -1
  756. package/lib/typescript/modules/plan-badge/PlanBadge.d.ts +3 -0
  757. package/lib/typescript/modules/plan-badge/PlanBadgeProps.d.ts +10 -0
  758. package/lib/typescript/modules/plan-badge/index.d.ts +3 -0
  759. package/lib/typescript/modules/plan-pill/PlanPill.d.ts +3 -0
  760. package/lib/typescript/modules/plan-pill/PlanPillProps.d.ts +10 -0
  761. package/lib/typescript/modules/plan-pill/index.d.ts +3 -0
  762. package/lib/typescript/modules/progress-bar/ProgressBar.d.ts +1 -13
  763. package/lib/typescript/modules/progress-bar/ProgressBarProps.d.ts +16 -0
  764. package/lib/typescript/modules/progress-bar/index.d.ts +1 -1
  765. package/lib/typescript/modules/radio-group/RadioGroup.d.ts +2 -22
  766. package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts +2 -2
  767. package/lib/typescript/modules/radio-group/RadioGroupProps.d.ts +21 -0
  768. package/lib/typescript/modules/radio-group/index.d.ts +1 -1
  769. package/lib/typescript/modules/reorder/Reorder.d.ts +2 -14
  770. package/lib/typescript/modules/reorder/Reorder.variants.d.ts +2 -2
  771. package/lib/typescript/modules/reorder/ReorderProps.d.ts +19 -0
  772. package/lib/typescript/modules/reorder/index.d.ts +1 -1
  773. package/lib/typescript/modules/rich-text/RichText.d.ts +2 -10
  774. package/lib/typescript/modules/rich-text/RichTextProps.d.ts +15 -0
  775. package/lib/typescript/modules/rich-text/index.d.ts +1 -1
  776. package/lib/typescript/modules/rich-text-editor/RichTextEditor.d.ts +1 -45
  777. package/lib/typescript/modules/rich-text-editor/RichTextEditorProps.d.ts +40 -0
  778. package/lib/typescript/modules/rich-text-editor/index.d.ts +1 -1
  779. package/lib/typescript/modules/save-bar/SaveBar.d.ts +3 -0
  780. package/lib/typescript/modules/save-bar/SaveBarProps.d.ts +18 -0
  781. package/lib/typescript/modules/save-bar/index.d.ts +3 -0
  782. package/lib/typescript/modules/screen/Screen.d.ts +2 -31
  783. package/lib/typescript/modules/screen/Screen.variants.d.ts +4 -0
  784. package/lib/typescript/modules/screen/ScreenProps.d.ts +35 -0
  785. package/lib/typescript/modules/screen/index.d.ts +1 -1
  786. package/lib/typescript/modules/search-bar/SearchBar.d.ts +2 -28
  787. package/lib/typescript/modules/search-bar/SearchBar.variants.d.ts +8 -9
  788. package/lib/typescript/modules/search-bar/SearchBarProps.d.ts +30 -0
  789. package/lib/typescript/modules/search-bar/index.d.ts +1 -1
  790. package/lib/typescript/modules/section/Section.d.ts +1 -8
  791. package/lib/typescript/modules/section/Section.variants.d.ts +0 -3
  792. package/lib/typescript/modules/section/SectionProps.d.ts +11 -0
  793. package/lib/typescript/modules/section/index.d.ts +1 -1
  794. package/lib/typescript/modules/section-list/SectionList.d.ts +1 -19
  795. package/lib/typescript/modules/section-list/SectionListProps.d.ts +24 -0
  796. package/lib/typescript/modules/section-list/index.d.ts +1 -1
  797. package/lib/typescript/modules/segmented-control/SegmentedControl.d.ts +2 -41
  798. package/lib/typescript/modules/segmented-control/SegmentedControl.variants.d.ts +5 -44
  799. package/lib/typescript/modules/segmented-control/SegmentedControlProps.d.ts +29 -0
  800. package/lib/typescript/modules/segmented-control/index.d.ts +1 -1
  801. package/lib/typescript/modules/select/Select.d.ts +5 -13
  802. package/lib/typescript/modules/select/Select.variants.d.ts +24 -10
  803. package/lib/typescript/modules/select/SelectProps.d.ts +25 -0
  804. package/lib/typescript/modules/select/index.d.ts +3 -2
  805. package/lib/typescript/modules/setting-row/SettingRow.d.ts +3 -0
  806. package/lib/typescript/modules/setting-row/SettingRowProps.d.ts +14 -0
  807. package/lib/typescript/modules/setting-row/index.d.ts +3 -0
  808. package/lib/typescript/modules/settings-section/SettingsSection.d.ts +3 -0
  809. package/lib/typescript/modules/settings-section/SettingsSectionProps.d.ts +11 -0
  810. package/lib/typescript/modules/settings-section/index.d.ts +3 -0
  811. package/lib/typescript/modules/skeleton/Skeleton.d.ts +3 -28
  812. package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts +8 -66
  813. package/lib/typescript/modules/skeleton/SkeletonProps.d.ts +18 -0
  814. package/lib/typescript/modules/skeleton/index.d.ts +1 -1
  815. package/lib/typescript/modules/slider/Slider.d.ts +1 -24
  816. package/lib/typescript/modules/slider/Slider.variants.d.ts +2 -1
  817. package/lib/typescript/modules/slider/SliderProps.d.ts +27 -0
  818. package/lib/typescript/modules/slider/index.d.ts +1 -1
  819. package/lib/typescript/modules/spinner/Spinner.d.ts +1 -11
  820. package/lib/typescript/modules/spinner/SpinnerProps.d.ts +15 -0
  821. package/lib/typescript/modules/spinner/index.d.ts +1 -1
  822. package/lib/typescript/modules/stage-progress/StageProgress.d.ts +1 -12
  823. package/lib/typescript/modules/stage-progress/StageProgress.variants.d.ts +31 -10
  824. package/lib/typescript/modules/stage-progress/StageProgressProps.d.ts +22 -0
  825. package/lib/typescript/modules/stage-progress/index.d.ts +1 -1
  826. package/lib/typescript/modules/stat-grid/StatGrid.d.ts +3 -0
  827. package/lib/typescript/modules/stat-grid/StatGridProps.d.ts +15 -0
  828. package/lib/typescript/modules/stat-grid/index.d.ts +3 -0
  829. package/lib/typescript/modules/stat-tile/StatTile.d.ts +1 -14
  830. package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts +3 -0
  831. package/lib/typescript/modules/stat-tile/StatTileProps.d.ts +25 -0
  832. package/lib/typescript/modules/stat-tile/index.d.ts +1 -1
  833. package/lib/typescript/modules/state-block/StateBlock.d.ts +1 -28
  834. package/lib/typescript/modules/state-block/StateBlock.variants.d.ts +1 -0
  835. package/lib/typescript/modules/state-block/StateBlockProps.d.ts +36 -0
  836. package/lib/typescript/modules/state-block/index.d.ts +1 -1
  837. package/lib/typescript/modules/stepper/Stepper.d.ts +3 -11
  838. package/lib/typescript/modules/stepper/Stepper.variants.d.ts +2 -0
  839. package/lib/typescript/modules/stepper/StepperProps.d.ts +12 -0
  840. package/lib/typescript/modules/stepper/index.d.ts +2 -1
  841. package/lib/typescript/modules/surface/Surface.d.ts +6 -0
  842. package/lib/typescript/modules/surface/Surface.variants.d.ts +15 -0
  843. package/lib/typescript/modules/surface/SurfaceProps.d.ts +17 -0
  844. package/lib/typescript/modules/surface/index.d.ts +4 -0
  845. package/lib/typescript/modules/swipeable-row/SwipeableRow.d.ts +1 -19
  846. package/lib/typescript/modules/swipeable-row/SwipeableRowProps.d.ts +22 -0
  847. package/lib/typescript/modules/swipeable-row/index.d.ts +1 -1
  848. package/lib/typescript/modules/switch/Switch.d.ts +1 -14
  849. package/lib/typescript/modules/switch/Switch.variants.d.ts +2 -2
  850. package/lib/typescript/modules/switch/SwitchProps.d.ts +20 -0
  851. package/lib/typescript/modules/switch/index.d.ts +1 -1
  852. package/lib/typescript/modules/tabs/Tabs.d.ts +1 -17
  853. package/lib/typescript/modules/tabs/Tabs.variants.d.ts +2 -3
  854. package/lib/typescript/modules/tabs/TabsProps.d.ts +29 -0
  855. package/lib/typescript/modules/tabs/index.d.ts +1 -1
  856. package/lib/typescript/modules/text/Text.d.ts +1 -20
  857. package/lib/typescript/modules/text/Text.variants.d.ts +14 -11
  858. package/lib/typescript/modules/text/TextProps.d.ts +35 -0
  859. package/lib/typescript/modules/text/index.d.ts +1 -1
  860. package/lib/typescript/modules/textarea/Textarea.d.ts +1 -19
  861. package/lib/typescript/modules/textarea/Textarea.variants.d.ts +2 -1
  862. package/lib/typescript/modules/textarea/TextareaProps.d.ts +23 -0
  863. package/lib/typescript/modules/textarea/index.d.ts +1 -1
  864. package/lib/typescript/modules/timeline/Timeline.d.ts +1 -16
  865. package/lib/typescript/modules/timeline/Timeline.variants.d.ts +2 -0
  866. package/lib/typescript/modules/timeline/TimelineProps.d.ts +37 -0
  867. package/lib/typescript/modules/timeline/index.d.ts +1 -1
  868. package/lib/typescript/modules/toast/Toast.variants.d.ts +4 -3
  869. package/lib/typescript/modules/tooltip/Tooltip.d.ts +1 -25
  870. package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts +7 -0
  871. package/lib/typescript/modules/tooltip/TooltipProps.d.ts +27 -0
  872. package/lib/typescript/modules/tooltip/index.d.ts +1 -1
  873. package/lib/typescript/modules/typing-indicator/TypingIndicator.d.ts +5 -14
  874. package/lib/typescript/modules/typing-indicator/TypingIndicatorProps.d.ts +11 -0
  875. package/lib/typescript/modules/typing-indicator/index.d.ts +1 -1
  876. package/lib/typescript/modules/upgrade-button/UpgradeButton.d.ts +3 -0
  877. package/lib/typescript/modules/upgrade-button/UpgradeButtonProps.d.ts +11 -0
  878. package/lib/typescript/modules/upgrade-button/index.d.ts +3 -0
  879. package/lib/typescript/test/motionJest.d.ts +12 -0
  880. package/lib/typescript/theme/index.d.ts +1 -1
  881. package/lib/typescript/theme/platform/elevation.native.d.ts +1 -31
  882. package/lib/typescript/theme/platform/floatingSurface.native.d.ts +10 -0
  883. package/lib/typescript/theme/platform/highlight.native.d.ts +17 -0
  884. package/lib/typescript/theme/platform/index.d.ts +9 -0
  885. package/lib/typescript/theme/platform/motion.native.d.ts +33 -13
  886. package/lib/typescript/theme/platform/stateLayer.native.d.ts +11 -0
  887. package/lib/typescript/theme/platform/surfaces.native.d.ts +8 -0
  888. package/lib/typescript/theme/provider/PixelizeProvider.d.ts +1 -1
  889. package/lib/typescript/theme/provider/types.d.ts +8 -0
  890. package/lib/typescript/theme/tokens/assertPalette.d.ts +10 -0
  891. package/lib/typescript/theme/tokens/brands/emerald/palette.light.d.ts +4 -3
  892. package/lib/typescript/theme/tokens/brands/lavender/palette.light.d.ts +4 -3
  893. package/lib/typescript/theme/tokens/brands/meadow/palette.light.d.ts +4 -3
  894. package/lib/typescript/theme/tokens/brands/radiant/palette.light.d.ts +4 -3
  895. package/lib/typescript/theme/tokens/brands/rosewood/palette.light.d.ts +4 -3
  896. package/lib/typescript/theme/tokens/brands/skyline/palette.light.d.ts +4 -3
  897. package/lib/typescript/theme/tokens/brands/slate/palette.light.d.ts +4 -3
  898. package/lib/typescript/theme/tokens/brands/storefront/palette.light.d.ts +4 -3
  899. package/lib/typescript/theme/tokens/brands/zinc/palette.light.d.ts +4 -3
  900. package/lib/typescript/theme/tokens/builders/accentText.d.ts +3 -0
  901. package/lib/typescript/theme/tokens/builders/buildBrandScale.d.ts +4 -0
  902. package/lib/typescript/theme/tokens/builders/finalizePalette.d.ts +4 -0
  903. package/lib/typescript/theme/tokens/builders/gradientInk.d.ts +9 -0
  904. package/lib/typescript/theme/tokens/builders/liftToContrast.d.ts +9 -0
  905. package/lib/typescript/theme/tokens/builders/paletteFromAccent.d.ts +3 -0
  906. package/lib/typescript/theme/tokens/builders/placeholderInk.d.ts +13 -0
  907. package/lib/typescript/theme/tokens/builders/semanticText.d.ts +4 -0
  908. package/lib/typescript/theme/tokens/builders/skeletonShimmer.d.ts +9 -0
  909. package/lib/typescript/theme/tokens/builders/surfaceRungs.d.ts +12 -0
  910. package/lib/typescript/theme/tokens/index.d.ts +8 -0
  911. package/lib/typescript/theme/tokens/primitives/controlSizes.d.ts +6 -0
  912. package/lib/typescript/theme/tokens/primitives/index.d.ts +2 -0
  913. package/lib/typescript/theme/tokens/roles/index.d.ts +3 -0
  914. package/lib/typescript/theme/tokens/types.d.ts +10 -9
  915. package/package.json +114 -5
  916. package/registry.json +114 -14
  917. package/lib/module/core/style/useThemedStyles.js +0 -8
  918. package/lib/module/test/mocks/flashList.js +0 -5
  919. package/lib/module/test/perfHelpers.js +0 -18
  920. package/lib/typescript/core/style/useThemedStyles.d.ts +0 -5
  921. package/lib/typescript/test/mocks/flashList.d.ts +0 -3
@@ -0,0 +1,309 @@
1
+ # Component Gotchas
2
+
3
+ For anyone — human or AI — consuming `pixelize-native-library` in an app, with no access to this
4
+ source repo. Every entry below **typechecks cleanly, accepts what you pass, and produces the wrong
5
+ (or no) result at runtime with no warning.** TypeScript cannot catch any of these, and a snapshot
6
+ test that mocks the library won't either.
7
+
8
+ This file ships inside the published package
9
+ (`node_modules/pixelize-native-library/COMPONENT-GOTCHAS.md`) so it's available without checking
10
+ out the library's source.
11
+
12
+ ---
13
+
14
+ ## Value ranges & units
15
+
16
+ ### `progress` is 0–100, not a 0–1 fraction
17
+
18
+ `ProgressBar.value`, `Gantt`'s per-lane `progress`, and `FileUpload.progress` are all a **0–100**
19
+ number, clamped internally (`Math.min(100, Math.max(0, value))` in `ProgressBar.variants.ts`;
20
+ `Math.max(0, Math.min(100, lane.progress ?? 0))` in `Gantt.variants.ts`;
21
+ `resolveFileUploadProgressFraction` divides by 100 in `FileUpload.variants.ts`). Passing `0.45`
22
+ compiles fine and renders a sliver of a fill (~0.45%), not the 45% you meant — no error, no clamp
23
+ warning.
24
+
25
+ **Apply:** always pass a 0–100 number to these three props, never a 0–1 fraction.
26
+
27
+ ### `BottomSheet.snapPoints` are fractions 0–1, not percentages, and are silently clamped
28
+
29
+ `resolveBottomSheetSnapOffset` (`BottomSheet.variants.ts:16-21`) clamps every entry to
30
+ `[0.1, 0.95]` before using it. `snapPoints={[50, 90]}` — a natural mistake if you're thinking in
31
+ percent — compiles fine and both values collapse to `0.95`, so the sheet ends up with one
32
+ functional stop instead of two, with no error or warning.
33
+
34
+ **Apply:** pass fractions (`snapPoints={[0.5, 0.9]}`), never whole-number percentages.
35
+
36
+ ---
37
+
38
+ ## Import surface
39
+
40
+ ### Heavy modules are subpath-only — never on the root barrel
41
+
42
+ `bottom-nav`, `charts`, `date-picker`, `data-table`, `filter-sheet`, `gantt`, `image-viewer`,
43
+ `reorder`, `rich-text-editor`, and `rich-text` (`HEAVY_MODULES` in `scripts/gen-index.mjs`) are
44
+ deliberately **absent from the root `pixelize-native-library` barrel** so a lazy
45
+ `import { Button } from "pixelize-native-library"` can never drag a chart engine, a calendar grid,
46
+ or a table virtualizer into your bundle. Each still has its own subpath in `package.json`
47
+ `exports`.
48
+
49
+ ```ts
50
+ // Wrong — not exported from the root, fails to resolve
51
+ import { DataTable } from "pixelize-native-library";
52
+
53
+ // Right — subpath import
54
+ import { DataTable } from "pixelize-native-library/data-table";
55
+ ```
56
+
57
+ **Apply:** if an import from the package root doesn't resolve, check this list before assuming the
58
+ component doesn't exist — it likely just needs its own subpath.
59
+
60
+ ---
61
+
62
+ ## Composing your own layout around library slots
63
+
64
+ ### A library slot silently wraps a bare string; your own `View` won't
65
+
66
+ Slots that accept `ReactNode` (`Card`/`Section`/`Drawer`/`Accordion`/`Tabs` children, `ChipGroup`
67
+ children, a `MultiSelect` option's `leading`, `BarList`'s icon) route through `renderNodeSlot`
68
+ (`src/core/slot/nodeSlot.tsx`), which wraps a bare `string`/`number` in a `<Text>` for you and
69
+ recurses into arrays — anything else (an already-rendered element) passes through untouched. That
70
+ convenience is local to those library slots; RN itself cannot host a bare text node outside
71
+ `<Text>`. If you get used to dropping a raw string into a library slot and then try the same thing
72
+ inside your own plain `<View>` (or your own wrapper that isn't one of the components above), it
73
+ throws "Text strings must be rendered within a `<Text>` component" instead of silently working.
74
+
75
+ **Apply:** the "you can pass a raw string here" convenience only applies to the specific library
76
+ slots that call `renderNodeSlot` internally — wrap plain strings in your own `<Text>` everywhere
77
+ else.
78
+
79
+ ---
80
+
81
+ ## Known gotchas (silent failures)
82
+
83
+ ### `Combobox.filterFn` is silently ignored whenever `onSearchChange` is also passed
84
+
85
+ `filteredOptions` (`Combobox.tsx:387-400`) checks `serverSide` (`= onSearchChange !== undefined`)
86
+ first and returns `options` unfiltered before `filterFn` is ever evaluated — both props are
87
+ independent optionals (`Combobox.tsx:117-127`), so passing both compiles fine and `filterFn` never
88
+ runs.
89
+
90
+ **Apply:** these are mutually exclusive — `onSearchChange` means you own filtering server-side;
91
+ `filterFn` is only for the client-side path.
92
+
93
+ ### `Card`'s `disabled` / `onLongPress` / `accessibilityLabel` / `accessibilityState` are no-ops without `onPress`
94
+
95
+ Without `onPress`, `CardImpl` (`Card.tsx:164-195`) renders `StaticCard`, which is only ever given
96
+ `variant`, `style` and `testID` — the other four props are typed on `CardProps` and accepted, but
97
+ never reach the rendered tree.
98
+
99
+ **Apply:** pass `onPress` (even a no-op) to get the interactive `Card` that actually reads those
100
+ props.
101
+
102
+ ### `showLegend` now defaults to `true` on every chart
103
+
104
+ `BarChart.tsx:118`, `LineChart.tsx:87`, `DonutChart.tsx:45`, `PieChart.tsx:85` all changed their
105
+ default from `false`/unset to `showLegend = true`. Upgrading consumers who never touched this prop
106
+ get a legend that wasn't there before, with no compile-time signal.
107
+
108
+ **Apply:** pass `showLegend={false}` explicitly to keep a chart's pre-upgrade look.
109
+
110
+ ### `Breadcrumbs`' `onPress` on the last item is always ignored
111
+
112
+ `Breadcrumbs.tsx:27,30` only renders a `Pressable` when `item.onPress && !current` — the final
113
+ (current-page) crumb is deliberately never pressable, no matter what `onPress` you attach to it.
114
+
115
+ **Apply:** don't rely on the last breadcrumb being clickable; wire navigation only on the earlier
116
+ items.
117
+
118
+ ### `FileUpload.values` is dropped unless `onValuesChange` is also passed
119
+
120
+ `multiMode` (`FileUpload.tsx:233`) is `values !== undefined && onValuesChange !== undefined` — pass
121
+ `values` alone, expecting a pre-populated multi-file list, and it's silently ignored; the component
122
+ behaves as if neither were passed.
123
+
124
+ **Apply:** always pass `values` and `onValuesChange` together for multi-file mode.
125
+
126
+ ### `Input`'s `secureTextEntry` silently overrides `trailingIcon` / `onTrailingIconPress`
127
+
128
+ `Input.tsx:236-238` resolves the trailing icon/handler as `secureTextEntryProp === true ? "eye" /
129
+ togglePassword : trailingIcon / onTrailingIconPress` — the password-visibility toggle always wins;
130
+ your own trailing icon and its handler never render, with no warning.
131
+
132
+ **Apply:** don't combine `secureTextEntry` with a custom trailing icon — they're mutually exclusive.
133
+
134
+ ### `Menu`'s `disabled` stops the menu opening, but the trigger's own `onPress` still fires
135
+
136
+ `handleTriggerPress` (`Menu.tsx:277-282`) always calls `trigger.props.onPress?.(event)` before
137
+ `openMenu()`, and only `openMenu` (`Menu.tsx:247-251`) checks `disabled`. Any side effect you put on
138
+ your own trigger's `onPress` runs every tap, whether or not the menu is disabled.
139
+
140
+ **Apply:** if your trigger's own `onPress` has a side effect, gate it on the same `disabled` value
141
+ you pass to `Menu`.
142
+
143
+ ### `DocumentViewer` never renders a document
144
+
145
+ `DocumentViewer.tsx:9-26` always shows a short explanatory message plus an "Open in browser" button
146
+ that calls `Linking.openURL(uri)` — there is no in-app PDF/doc rendering path today.
147
+
148
+ **Apply:** treat it as a hand-off to the OS/browser, not an in-app preview.
149
+
150
+ ### `DatePicker.confirmOnSelect`'s doc comment claims a default it doesn't have
151
+
152
+ The JSDoc on `DatePicker.tsx:40` says tap-to-commit is the default for `mode="date"`; the actual
153
+ default (`DatePicker.tsx:78`) is `confirmOnSelect = false`. The sheet stays open after picking a day
154
+ unless you pass the prop explicitly.
155
+
156
+ **Apply:** pass `confirmOnSelect={true}` yourself if you want tap-to-commit — don't rely on the
157
+ doc comment's stated default.
158
+
159
+ ### `FilterBar.activeFilterCount` renders nothing unless `onOpenFilters` is also passed
160
+
161
+ The count badge is nested inside the `{onOpenFilters ? (...) : null}` branch (`FilterBar.tsx:42-49`)
162
+ — pass `activeFilterCount` alone, expecting a bare badge with no Filters button, and nothing
163
+ renders at all.
164
+
165
+ **Apply:** always pass `onOpenFilters` alongside `activeFilterCount`.
166
+
167
+ ### `PersonChip.subtitle` is dropped when `onRemove` is set
168
+
169
+ The `onRemove` branch (`PersonChip.tsx:31-40`) renders only an `Avatar` and a `Chip` carrying
170
+ `name` — `subtitle` is never read on that path, even though it's a normal prop the rest of the
171
+ time.
172
+
173
+ **Apply:** don't rely on `subtitle` showing up once `onRemove` is present; build a custom row if you
174
+ need both.
175
+
176
+ ### `MultiSelectOption` has no `disabled` field
177
+
178
+ `MultiSelect.tsx:63-67` — the option type is `{ label, value, leading? }` only. A non-literal options
179
+ array carrying an extra `disabled` key still typechecks (TypeScript's excess-property check only
180
+ fires on object literals), and every row stays fully selectable regardless.
181
+
182
+ **Apply:** filter disabled items out of `options` yourself before handing them to `MultiSelect`.
183
+
184
+ ### `MoreItems.moreCount` only changes the badge text, not what's listed
185
+
186
+ `resolveMoreItemsCount` (`MoreItems.variants.ts:15-17`) feeds only the "+N" badge number — the
187
+ overflow sheet itself always lists every entry in `items`, regardless of `moreCount`.
188
+
189
+ **Apply:** slice `items` yourself first if you want the sheet's list to actually be shorter.
190
+
191
+ ### `NumberInput.step` applies only to the +/- buttons, never to typed input
192
+
193
+ Typed text is parsed and clamped to `[min, max]` (`NumberInput.tsx:139-142`,
194
+ `clampNumberInputValue` in `NumberInput.variants.ts:188`) but never snapped to `step` — only the
195
+ stepper buttons move in `step` increments.
196
+
197
+ **Apply:** don't rely on `step` for typed-value validation; round/snap it yourself in your
198
+ `onValueChange` handler if alignment matters.
199
+
200
+ ### `OrgSwitcher` renders `null` when there's one org or fewer
201
+
202
+ `OrgSwitcher.tsx:335` — `if (options.length <= 1) return null;`. Mount it with a single-org account
203
+ and it vanishes entirely (no trigger, nothing), which is easy to mistake for a data-fetch bug.
204
+
205
+ **Apply:** this is deliberate — don't wrap `OrgSwitcher` in a label/section that would look broken
206
+ with nothing inside it when there's only one org.
207
+
208
+ ### `PlanBadge` and `PlanPill` take an identical prop shape and mean different copy
209
+
210
+ Both are `{ tier, style, testID }`. `PlanBadge`'s `pro` label is `"Pro"`; `PlanPill`'s is
211
+ `"Pro plan"`. Swapping the import for the other typechecks with zero errors and silently changes
212
+ the copy on screen.
213
+
214
+ **Apply:** double-check which one you meant — the identical prop shape gives you no signal that
215
+ you grabbed the wrong one.
216
+
217
+ ### `Slider.onSlidingComplete` fires on every keyboard keypress, not once per gesture
218
+
219
+ `commitValue` (`Slider.tsx:184-188`) — the function that calls `onSlidingComplete` — is invoked from
220
+ both the accessibility increment/decrement handler (`Slider.tsx:198-200`) and the keyboard handler
221
+ (`Slider.tsx:212`), so keyboard/screen-reader users fire it on every single step, not once at
222
+ gesture end the way a touch drag does.
223
+
224
+ **Apply:** debounce or throttle `onSlidingComplete` if it does anything expensive (an API call,
225
+ persistence) — don't assume "once per interaction."
226
+
227
+ ### `Toast` `tone="danger"` never auto-dismisses unless you pass an explicit numeric `duration`
228
+
229
+ `resolveAutoDismissDelay` (`Toast.variants.ts:77`) returns `null` (no auto-dismiss) for
230
+ `tone === "danger"` whenever `duration` is left `undefined` — every other tone falls back to the
231
+ default duration. An error toast shown with no `duration` prop stays on screen until manually
232
+ dismissed.
233
+
234
+ **Apply:** pass a numeric `duration` explicitly if you want a danger toast to auto-dismiss.
235
+
236
+ ### `StatTile`'s `tone` only tints the icon's background chip, never the glyph itself
237
+
238
+ `resolveStatTileColors` (`StatTile.variants.ts:25-31`) produces `iconFill` for the chip background
239
+ only; the icon element itself is passed through `renderNodeSlot(icon, labelStyle)`
240
+ (`StatTile.tsx:167`), and `renderNodeSlot` only applies a style to a bare string/number — an
241
+ already-rendered icon element passes through with its own color unchanged.
242
+
243
+ **Apply:** color the icon yourself at the call site if it needs to match `tone`; don't expect `tone`
244
+ alone to recolor the glyph.
245
+
246
+ ### `SwipeableRow` — a non-`danger` action `tone` collapses to `"default"` once folded into the overflow menu
247
+
248
+ `SwipeableRow.tsx:197` maps every action into the "more" `Menu` with
249
+ `tone: action.tone === "danger" ? "danger" : "default"` — a `warning` (or any other) tone survives
250
+ on the swipe-revealed action itself but reads as plain `default` once it's inside the overflow
251
+ menu.
252
+
253
+ **Apply:** don't rely on a non-`danger` tone being visually distinct once an action lands in the
254
+ overflow menu.
255
+
256
+ ### `Tooltip` — a plain RN `Text` trigger typechecks but never opens on web
257
+
258
+ `TooltipProps.children` is typed `ReactElement<TooltipTriggerProps>` (all fields optional), so a
259
+ bare `<Text>` satisfies the type and compiles — but on web, `react-native-web`'s `Text` doesn't
260
+ forward the hover/focus handlers `Tooltip` injects (`Tooltip.tsx:85,199-261`), so it silently never
261
+ opens there. (Native platforms are unaffected — only the web target has no hover/focus channel into
262
+ a plain `Text`.)
263
+
264
+ **Apply:** always wrap the trigger in a `Pressable` (or another element that forwards
265
+ `onHoverIn`/`onFocus`/etc.), never a bare `Text`.
266
+
267
+ ---
268
+
269
+ ## Fixed in this release — if you're still on an older published version
270
+
271
+ ### `Modal.isLoading` now actually blocks interaction
272
+
273
+ Before this release, the loading overlay had `pointerEvents: 'none'` (`Modal.tsx:270-277`) — the
274
+ dim scrim and spinner painted, but taps passed straight through to the content underneath.
275
+ `isLoading` is now blocking. If you're on an older version, don't rely on `isLoading` alone to
276
+ prevent a double-submit; also disable the triggering button.
277
+
278
+ ### `Switch`'s `testID` no longer collides when `label` is set
279
+
280
+ Older versions rendered the same `testID` on both the row wrapper and the inner control when
281
+ `label` was set, so `getByTestId(testID)` matched two elements. The row wrapper now gets
282
+ `${testID}-row`; the inner control keeps the plain `testID` (`Switch.tsx:36,77,95`).
283
+
284
+ ### `StageProgress` no longer renders focusable dead controls
285
+
286
+ Older versions rendered a focusable `Pressable` per stage even when `onStagePress` was omitted.
287
+ Stages with no `onStagePress` now render as a plain (non-focusable) accessible `View` regardless of
288
+ `readOnly` (`StageProgress.tsx:220,289`).
289
+
290
+ ---
291
+
292
+ ## Colour
293
+
294
+ ### A role colour's lightness direction flips between light and dark mode
295
+
296
+ `bg.sunken` is **darker** than `bg.surface` in light mode and **lighter** than it in dark mode — see
297
+ [`src/theme/tokens/THEME-CONTRACT.md`](src/theme/tokens/THEME-CONTRACT.md) for the measured numbers
298
+ and the full rule. A component that reasons "sunken means recessed, so it must be darker" gets it
299
+ backwards in dark mode with no error.
300
+
301
+ **Apply:** never infer a surface's relative lightness from its token name — compare the actual
302
+ resolved colours (or just use `useTheme()`/`useThemeColors()`, which already resolve correctly for
303
+ the active mode).
304
+
305
+ ### Never hardcode a hex
306
+
307
+ Read every colour from `useTheme()` / `useThemeColors()` (`pixelize-native-library/theme`). A
308
+ hardcoded hex compiles fine and looks right in whichever mode you tested — and is stuck there,
309
+ wrong in the other mode and on every non-default brand.
@@ -0,0 +1,215 @@
1
+ # Pixelize Mobile Design Guide — how to design a screen with `pixelize-native-library`
2
+
3
+ For any developer or LLM building UI in a consumer React Native app. `COMPONENT-GOTCHAS.md` (next
4
+ to this file) says **which component does what and where it bites**; this file says **how to compose
5
+ them into a screen that looks designed**. Read both before building a screen. Everything here is
6
+ copyable as-is.
7
+
8
+ This is the native sibling of `pixelize-design-library` (web). The roles, the 4dp grid and the
9
+ brand palettes are the same; the components are not — nothing here is a Chakra component and there
10
+ is no `className`, no `sx`, no CSS.
11
+
12
+ ```ts
13
+ import { PixelizeProvider, useTheme, useThemeColors } from "pixelize-native-library/theme";
14
+
15
+ const theme = useTheme(); // theme.colors (roles), space, radii, borderWidths, fontSizes
16
+ const colors = useThemeColors(); // the role map on its own
17
+ ```
18
+
19
+ Wrap the app in `PixelizeProvider` once, at the root. The theme lives on its own subpath — it is
20
+ not on the root barrel.
21
+
22
+ ## 1. The look
23
+
24
+ Calm, dense, professional. A tool people use all day, not a marketing screen.
25
+
26
+ - **Hierarchy comes from type and whitespace, not boxes.** One border per surface. Never nest a
27
+ bordered `Card` inside a bordered `Card`; inside a card, separate with spacing or a `Divider`.
28
+ - **One primary action per screen.** One `<Button variant="solid">`; everything else `outline`,
29
+ `ghost` or `link`. A `Fab` or a `SaveBar` counts as that one.
30
+ - **Left-aligned and scannable.** Titles and forms left-aligned; numbers right-aligned in tables.
31
+ - **Color means something.** Neutral by default; accent for the primary action and selection;
32
+ status color only for status. No decorative gradients, no colored section backgrounds.
33
+ - **Borders, not shadows, for resting surfaces.** Elevation belongs to floating things — `Modal`,
34
+ `BottomSheet`, `Menu`, `Tooltip`, `Fab`.
35
+ - **Touch targets are 44dp.** Anything pressable that is smaller needs `hitSlop`.
36
+
37
+ ## 2. Spacing — `theme.space`, unitless dp, one step = 4dp
38
+
39
+ | Where | Value |
40
+ | --- | --- |
41
+ | Screen padding | `<Screen padded>` — don't hand-roll it |
42
+ | Between screen sections | `theme.space[5]` (20) |
43
+ | Between cards in a list | `theme.space[3]`–`theme.space[4]` |
44
+ | Inside a card | `Card`'s own padding — don't add more |
45
+ | Between form fields | `theme.space[4]` vertical, `theme.space[3]` side by side |
46
+ | Inline clusters (chips, meta, icon + text) | `theme.space[1]`–`theme.space[2]` |
47
+
48
+ Never a raw number in a style (`padding: 13`). The one exception is a hairline, which comes from
49
+ `theme.borderWidths`, never from `space` — a hairline must not scale with the user's font setting.
50
+
51
+ ## 3. Radii — `theme.radii`
52
+
53
+ `none 0 · sm 4 · base 8 · md 12 · lg 16 · xl 24 · full 9999`
54
+
55
+ `base` (8) is the brand radius: chips, buttons, inputs, small controls. `md`/`lg` for cards, sheets
56
+ and modals. `full` for avatars and pills only — never on something that can stretch to fill a row's
57
+ height, or it renders as a giant oval.
58
+
59
+ **Nested corners are concentric:** inner radius = outer radius − the padding between them.
60
+ A `radii.md` (12) track with `space[1]` (4) padding holds a `radii.base` (8) pill. Getting this
61
+ wrong is the most visible sloppiness in a mobile UI.
62
+
63
+ ## 4. Color — pick by role, never by ramp
64
+
65
+ `theme.colors` is a role map. Never read a raw ramp (`primary[500]`) and never write a hex — both
66
+ stay light in dark mode.
67
+
68
+ | Need | Token |
69
+ | --- | --- |
70
+ | Screen background | `colors.bg.canvas` |
71
+ | A card / list surface | `colors.bg.surface` |
72
+ | A floating surface (modal, sheet, menu) | `colors.bg.raised` |
73
+ | A well / inset area | `colors.bg.sunken` |
74
+ | Pressed or hovered row | `colors.bg.hover` |
75
+ | Selected row | `colors.bg.selected` |
76
+ | Body text | `colors.fg.default` |
77
+ | Secondary text, meta, helper | `colors.fg.muted` |
78
+ | Placeholder in an empty field | `colors.fg.placeholder` |
79
+ | Disabled anything | `colors.fg.disabled` / `colors.bg.disabled` |
80
+ | Hairline between rows | `colors.border.default` |
81
+ | A control's own outline | `colors.border.interactive` |
82
+ | Keyboard/AT focus ring | `colors.border.focus` |
83
+ | Primary button fill | `colors.accent.solid`, label `colors.accent.onSolid` |
84
+ | Accent as text or icon | `colors.accent.text` |
85
+ | Faint accent fill (selected chip) | `colors.accent.subtle` |
86
+ | Status | `colors.status.success \| warning \| danger \| info` — each has `solid`, `onSolid`, `text`, `subtle`, `border` |
87
+
88
+ **Never pair a solid fill with a hand-picked label color.** `accent.onSolid` is correct on
89
+ `accent.solid` and on nothing else; `status.danger.onSolid` on `status.danger.solid`. Pairing a fill
90
+ with white "because it looks right" is how a badge ships with 1.5:1 text.
91
+
92
+ Every pairing above is locked by `roleColors.test.ts` across 9 brands × 2 modes. If you need a
93
+ combination the roles don't offer, the role layer is missing something — say so rather than
94
+ inventing a color in a component.
95
+
96
+ ## 5. Type — `Text` and `Heading`, never a raw `fontSize`
97
+
98
+ | Role | Component |
99
+ | --- | --- |
100
+ | Screen title | `<Heading variant="h1">` |
101
+ | Section / card title | `<Heading variant="h2">` or `<Heading variant="h3">` |
102
+ | Body | `<Text variant="body">` (the default) |
103
+ | Dense body, list rows | `<Text variant="body-sm">` |
104
+ | Label above a control | `FormField`'s `label` — don't hand-build it |
105
+ | Meta, helper, timestamps | `<Text variant="caption" color={colors.fg.muted}>` |
106
+ | Big number on a KPI tile | `StatTile` — pass the value, don't compose it |
107
+ | Eyebrow above a section | `<Text variant="overline">` (`Section` already does this) |
108
+
109
+ Variants: `display · title · heading · subheading · body · body-sm · caption · label · label-sm ·
110
+ overline`. Use the variant, not `fontSize`. Never render a bare string inside a `View` — RN throws;
111
+ text always lives in a `Text`.
112
+
113
+ ## 6. Screen anatomy
114
+
115
+ ```tsx
116
+ <Screen appBar={<AppBar title="Deals" />} padded state={state} onRefresh={refetch}>
117
+ <Section label="Pipeline">
118
+ <StatGrid items={stats} columns={2} />
119
+ </Section>
120
+ <Section label="Recent">
121
+ <ListItem … />
122
+ </Section>
123
+ </Screen>
124
+ ```
125
+
126
+ | Need | Component |
127
+ | --- | --- |
128
+ | Every screen's shell — safe area, keyboard avoidance, pull-to-refresh, async states | `Screen` |
129
+ | A long list screen — virtualization + paging + refresh | `ListScreen` |
130
+ | Sectioned list | `SectionList` |
131
+ | Top bar | `AppBar` |
132
+ | Tab bar with an overflow sheet | `BottomNav` (subpath) |
133
+ | A labelled block inside a screen | `Section` (takes `label`, not `title`) |
134
+ | A container with a border and padding | `Card` — or `Surface` when you need to pick the role yourself |
135
+ | Search + filter row above a list | `FilterBar`, with `FilterSheet` (subpath) behind it |
136
+ | A dirty-state action bar | `SaveBar` |
137
+ | Confirm / destructive prompt | `AlertDialog` |
138
+ | Anything else floating | `Modal` (centered) or `BottomSheet` (gesture-driven) |
139
+
140
+ `Screen` handles the safe area and the keyboard. Do not wrap it in another `SafeAreaView`, and do
141
+ not add your own `KeyboardAvoidingView` — you'll get double insets.
142
+
143
+ ## 7. Controls — `sm` for dense screens, `md` everywhere else
144
+
145
+ `Button` takes `variant="solid" | "outline" | "ghost" | "link"`, `size="sm" | "md" | "lg"` and
146
+ `tone="accent" | "neutral" | "danger"`. Destructive actions are `tone="danger"`, never a hand-set
147
+ red.
148
+
149
+ Every field goes inside a `FormField` — it owns the label, the required marker, the description and
150
+ the error text, so no screen re-invents that stack. Controls: `Input`, `Textarea`, `Select`,
151
+ `MultiSelect`, `Combobox`, `Checkbox`, `RadioGroup`, `Switch`, `Slider`, `NumberInput`, `PinInput`,
152
+ `SearchBar`, `SegmentedControl`, and `DatePicker` (subpath).
153
+
154
+ ## 8. Every screen has four states
155
+
156
+ A screen that only handles "loaded" is unfinished. `Screen` and `ListScreen` take the slots:
157
+
158
+ ```tsx
159
+ <Screen
160
+ state={isLoading ? "loading" : error ? "error" : rows.length ? "idle" : "empty"}
161
+ loading={<LoadingState />}
162
+ empty={<EmptyState title="No deals yet" action={{ label: "New deal", onPress: create }} />}
163
+ error={<ErrorState title="Couldn't load deals" action={{ label: "Retry", onPress: refetch }} />}
164
+ />
165
+ ```
166
+
167
+ - **Loading** — `Skeleton` in the shape of the content, not a centered spinner, whenever the layout
168
+ is predictable. `Spinner` only for a short, indeterminate wait.
169
+ - **Empty** — `EmptyState` with a real next action. "No results" after a filter is a different
170
+ message from "nothing here yet"; say which.
171
+ - **Error** — `ErrorState` with a retry. Never a bare error string. Both `EmptyState.action` and
172
+ `ErrorState.action` take `{ label, onPress }` — an object, not a `<Button>` element.
173
+ - **Idle** — the content. `state` is `"idle" | "loading" | "empty" | "error"`; `"idle"` is the
174
+ loaded screen, and it is the default when you pass no `state` at all.
175
+
176
+ ## 9. Imports
177
+
178
+ Most components come from the root barrel:
179
+
180
+ ```ts
181
+ import { Button, Card, Screen, Text } from "pixelize-native-library";
182
+ ```
183
+
184
+ **Ten heavy modules are deliberately absent from it** so a `Button` import can never drag in a
185
+ chart engine, a calendar grid, a table virtualizer or a gesture stack. Import those by subpath:
186
+
187
+ ```ts
188
+ import { BottomNav } from "pixelize-native-library/bottom-nav";
189
+ import { DataTable } from "pixelize-native-library/data-table";
190
+ import { LineChart } from "pixelize-native-library/charts";
191
+ ```
192
+
193
+ The ten: `bottom-nav`, `charts`, `data-table`, `date-picker`, `filter-sheet`, `gantt`,
194
+ `image-viewer`, `reorder`, `rich-text`, `rich-text-editor`. A root import of one of these does not
195
+ warn — it simply fails to resolve. Every other module also has its own subpath if you prefer them
196
+ all explicit, and the theme is always `pixelize-native-library/theme`.
197
+
198
+ ## 10. Never
199
+
200
+ - A hex, an `rgba()`, or a raw ramp value in a screen. Roles only.
201
+ - A raw number for spacing, radius or font size.
202
+ - A bare string inside a `View`.
203
+ - `radii.full` on anything that stretches to a row's height.
204
+ - A solid fill with a hand-picked label color — use the fill's own `onSolid`.
205
+ - Your own `SafeAreaView` or `KeyboardAvoidingView` around a `Screen`.
206
+ - A second bordered container inside a bordered container.
207
+ - A screen with no empty and no error state.
208
+ - Re-implementing a component this library ships. If the owned component can't express what you
209
+ need, that's a library gap worth reporting — not a reason to hand-roll one in the app.
210
+
211
+ ## 11. Where to look next
212
+
213
+ - `COMPONENT-GOTCHAS.md` — the traps that compile fine and are wrong at runtime.
214
+ - Each component's props carry one-line JSDoc; your editor shows it on hover.
215
+ - `registry.json` (shipped) lists every module with a one-line description.
package/README.md CHANGED
@@ -21,8 +21,16 @@ This is **not** tree-shaking. Metro's tree-shaking is experimental, production-o
21
21
  by a flag the *consumer app* sets — a library can't turn it on. Package Exports have been stable
22
22
  in Metro since 0.79 and work in dev and prod, on bare RN and Expo, with zero config in your app.
23
23
 
24
+ ## Gotchas
25
+
26
+ - **Web + Reanimated text** — `Reanimated.Text` typechecks but is `undefined` at runtime on web.
27
+ Module code must use `AnimatedText` from `core/motion` (`createAnimatedComponent(Text)` at module
28
+ scope), never `Reanimated.Text`.
29
+
24
30
  ## Docs
25
31
 
32
+ - Designing a screen: `DESIGN-GUIDE.md` (shipped in the package)
33
+ - Traps that compile fine and are wrong at runtime: `COMPONENT-GOTCHAS.md` (shipped)
26
34
  - Component list and props: `registry.json` (generated)
27
35
  - Contributing / API contract: `CLAUDE.md`
28
36
  - Playground: `example/` (Expo)
@@ -32,3 +40,39 @@ in Metro since 0.79 and work in dev and prod, on bare RN and Expo, with zero con
32
40
  Themes and colours are shared with web by hand-copying one folder: `src/theme/tokens/`.
33
41
  It is byte-identical across both repos and hash-gated in CI (`.tokens.sha256`).
34
42
  Anything platform-specific lives in `src/theme/platform/`, which is never copied.
43
+
44
+ ### Typography
45
+
46
+ Inter is opt-in. Register the faces once at startup, then pass `interLoaded` to
47
+ `PixelizeProvider` (otherwise the library uses the system font and logs a dev warning):
48
+
49
+ ```tsx
50
+ import { useFonts } from "expo-font";
51
+ import {
52
+ Inter_400Regular,
53
+ Inter_500Medium,
54
+ Inter_600SemiBold,
55
+ Inter_700Bold,
56
+ } from "@expo-google-fonts/inter";
57
+ import { PixelizeProvider } from "pixelize-native-library/theme";
58
+
59
+ const [interLoaded] = useFonts({
60
+ "Inter-Regular": Inter_400Regular,
61
+ "Inter-Medium": Inter_500Medium,
62
+ "Inter-SemiBold": Inter_600SemiBold,
63
+ "Inter-Bold": Inter_700Bold,
64
+ });
65
+
66
+ <PixelizeProvider interLoaded={interLoaded}>{/* … */}</PixelizeProvider>;
67
+ ```
68
+
69
+ Override the brand accent (lfour uses `#3a75cf`) with `paletteFromAccent` from
70
+ `pixelize-native-library/tokens`:
71
+
72
+ ```tsx
73
+ import { paletteFromAccent } from "pixelize-native-library/tokens";
74
+
75
+ <PixelizeProvider
76
+ palette={paletteFromAccent("#3a75cf", brand, resolvedMode)}
77
+ >
78
+ ```
@@ -1,16 +1,29 @@
1
- # core
1
+ # core/ — cross-cutting mechanism every module imports
2
2
 
3
- Cross-cutting mechanism every module imports. No feature logic, no components.
3
+ No feature logic, no components.
4
4
 
5
5
  | Folder | Purpose | Docs |
6
6
  |--------|---------|------|
7
- | `style/` | `LayoutStyle` + the variant resolver (below) + `sx()` (spacing/flex shorthand, below) — published as `pixelize-native-library/style` | this file |
8
- | `icon/` | shared lucide icon registry (`IconName`, `Icon`; 56 glyphs) hoisted out of `modules/button/` so every one of the 39 shipped modules reuses one registry instead of re-declaring its own | `icon/MODULE.md` |
9
- | `a11y/` | shared accessibility hooks (`useReducedMotion`)hoisted out of `modules/button/` for the same reason | `a11y/MODULE.md` |
7
+ | `style/` | `LayoutStyle` + the variant resolver (below) + `sx()` (spacing/flex shorthand, below) + `concentric()` and the `focusRing*` helpers — published as `pixelize-native-library/style` | this file |
8
+ | `haptics/` | optional `expo-haptics` seampublished as `pixelize-native-library/haptics` and re-exported from the root barrel | `haptics/MODULE.md` |
9
+ | `media/` | optional `expo-document-picker` / `expo-image-picker` / `expo-image` injectors published as `pixelize-native-library/media` and re-exported from the root barrel | this file |
10
+ | `icon/` | shared lucide icon registry (`IconName`, `Icon`; 74 glyphs) — hoisted out of `modules/button/` so every shipped module reuses one registry instead of re-declaring its own | `icon/MODULE.md` |
11
+ | `a11y/` | shared accessibility hooks — `useReducedMotion`, `useAnnounce` (`announce.ts`/`.web.ts`), `useDismissOnEscape` (`keyboard.ts`/`.web.ts`), label helpers and touch-target maths | `a11y/MODULE.md` |
10
12
  | `device/` | the `low \| mid \| high` device tier every motion and list-window decision reads | `device/MODULE.md` |
11
- | `motion/` | the single global animation gate (`useMotion`, `config.ts`, the preset hooks) | `motion/MODULE.md` |
13
+ | `motion/` | the single global animation gate (`useMotion`, `config.ts`, `usePressState`, presets) | `motion/MODULE.md` |
12
14
  | `list/` | `VirtualList` / `VirtualSectionList` — the one windowed list every list-bearing module renders through (FlashList when the peer is installed, FlatList otherwise) | this file |
13
15
  | `heading/` | `HeadingText`/`HeadingView` (typed `aria-level`) + `HEADING_LEVEL` — the fixed level every `accessibilityRole="header"` site needs so `react-native-web` doesn't render it as `<h1>` | `heading/MODULE.md` |
16
+ | `slot/` | `renderNodeSlot` — wraps string/number `ReactNode` in `Text` before a `View` host (internal; not root-barrel exported) | `slot/MODULE.md` |
17
+ | `blur/` | `setBlurModule`/`hasBlurModule`/`getBlurModule` — the optional blur-view seam, injected by the app | this file |
18
+ | `gradient/` | `AccentGradientFill`, `ShimmerGradientFill`, `accentGradientStops`, `shouldRenderGradient`, `darkenHex`, `withAlpha` | this file |
19
+ | `overlay/` | `ModalPortalContext` + `renderWebPortal` — how an overlay escapes its host on web | `overlay/MODULE.md` |
20
+ | `screen-scroll/` | `ScreenScrollContext` + `useScreenScrollY` — the scroll offset a `Screen`'s chrome reads | this file |
21
+
22
+ ## Known gotchas
23
+
24
+ - **Bare text in `ReactNode` slots** — `ReactNode` allows `string`/`number`; hosting either in a
25
+ `View`/`Pressable`/etc. crashes at runtime on RN and logs *Unexpected text node* on web. tsc and
26
+ ESLint do not catch it. Use `renderNodeSlot` from `core/slot` at every View-like slot.
14
27
 
15
28
  ## Escape-hatch doctrine
16
29
 
@@ -105,7 +118,7 @@ Spreading (`{ ...sx({...}), extra: 1 }`) is unaffected — spread always produce
105
118
 
106
119
  ## `list/` — VirtualList
107
120
 
108
- One windowed list for all 15 list-bearing modules. Device-tier window sizing (`core/device`),
121
+ One windowed list for every list-bearing module. Device-tier window sizing (`core/device`),
109
122
  FlashList when the optional peer resolves, FlatList otherwise. `resolveFlashList()` returns `null`
110
123
  under Jest by design, so **only the FlatList branch is test-coverable** — the FlashList branch is
111
124
  asserted by nothing except its tier→`drawDistance` mapping
@@ -121,9 +134,9 @@ and `getItemLayout` is not passed at all — it has no meaning there. The FlatLi
121
134
  five-prop tuning unchanged. FlashList also never passes `separators`, so `renderItem` goes through a
122
135
  memoized adapter rather than a cast.
123
136
 
124
- `resolveFlashList()` runs **once at module scope**. It used to `require()` inside a try/catch on
125
- every render, constructing and catching a module-resolution error per render per mounted list
126
- whenever the optional peer was absent.
137
+ `resolveFlashList()` runs **once at module scope** never a `require()` inside a try/catch per
138
+ render, which would construct and catch a module-resolution error per render per mounted list
139
+ whenever the optional peer is absent.
127
140
 
128
141
  **The prop surface is a curated allowlist, never `{...rest}`.** `core/list` is internal, so it is a
129
142
  wider surface than a public module's — but the width is deliberate, and each entry is a prop a
@@ -179,9 +192,3 @@ and is now covered by `__tests__/VirtualSectionList.sections.test.tsx`:
179
192
  flattened rows. Given only `itemHeight`, **no** `getItemLayout` is passed — measuring is correct,
180
193
  guessing is not. `modules/section-list` currently passes only `itemHeight` and so measures; it
181
194
  can opt back into exact offsets by passing its header height.
182
-
183
- ## Modernization (v1.0.7)
184
-
185
- - Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
186
- - List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
187
- - `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.