@sincpro/mobile-ui 3.0.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/dist/Actions/Actions.Button.d.ts +6 -6
  2. package/dist/Actions/Actions.Button.js +650 -180
  3. package/dist/Actions/Actions.Dock.d.ts +1 -1
  4. package/dist/Actions/Actions.Dock.js +297 -18
  5. package/dist/Actions/Actions.FAB.js +100 -12
  6. package/dist/Actions/Actions.FilterButton.d.ts +17 -0
  7. package/dist/Actions/Actions.FilterButton.js +263 -33
  8. package/dist/Actions/Actions.IconButton.d.ts +1 -0
  9. package/dist/Actions/Actions.IconButton.js +196 -33
  10. package/dist/Actions/index.js +13 -13
  11. package/dist/Dialog/Confirmation.context.js +82 -16
  12. package/dist/Dialog/Dialog.ActionSheet.js +200 -41
  13. package/dist/Dialog/Dialog.Confirmation.js +168 -31
  14. package/dist/Dialog/Dialog.EditValue.js +437 -62
  15. package/dist/Dialog/Dialog.Sheet.d.ts +7 -3
  16. package/dist/Dialog/Dialog.Sheet.js +267 -15
  17. package/dist/Dialog/OverlayHost.d.ts +24 -0
  18. package/dist/Dialog/OverlayHost.js +230 -0
  19. package/dist/Dialog/SheetSurface.d.ts +43 -0
  20. package/dist/Dialog/SheetSurface.js +495 -0
  21. package/dist/Dialog/dialog-actions.d.ts +17 -0
  22. package/dist/Dialog/dialog-actions.js +59 -0
  23. package/dist/Dialog/index.d.ts +4 -1
  24. package/dist/Dialog/index.js +8 -7
  25. package/dist/Dialog/overlay.store.d.ts +24 -0
  26. package/dist/Dialog/overlay.store.js +59 -0
  27. package/dist/Dialog/requestConfirmation.js +20 -10
  28. package/dist/Display/Display.Accordion.js +185 -13
  29. package/dist/Display/Display.AmountSummary.js +206 -15
  30. package/dist/Display/Display.Avatar.js +93 -31
  31. package/dist/Display/Display.AvatarGroup.js +132 -17
  32. package/dist/Display/Display.Badge.d.ts +18 -2
  33. package/dist/Display/Display.Badge.js +117 -49
  34. package/dist/Display/Display.Card.js +163 -26
  35. package/dist/Display/Display.Carousel.js +459 -105
  36. package/dist/Display/Display.Chip.d.ts +4 -1
  37. package/dist/Display/Display.Chip.js +165 -31
  38. package/dist/Display/Display.CircleButton.d.ts +1 -0
  39. package/dist/Display/Display.CircleButton.js +86 -27
  40. package/dist/Display/Display.CopyableText.js +289 -66
  41. package/dist/Display/Display.CountRecords.js +60 -3
  42. package/dist/Display/Display.DataTable.js +123 -13
  43. package/dist/Display/Display.Date.js +243 -33
  44. package/dist/Display/Display.Divider.d.ts +10 -10
  45. package/dist/Display/Display.Divider.js +67 -20
  46. package/dist/Display/Display.ExpoImage.js +97 -8
  47. package/dist/Display/Display.GradientSurface.d.ts +9 -4
  48. package/dist/Display/Display.GradientSurface.js +196 -46
  49. package/dist/Display/Display.Icon.js +129 -15
  50. package/dist/Display/Display.IconBadge.js +95 -25
  51. package/dist/Display/Display.Image.d.ts +7 -1
  52. package/dist/Display/Display.Image.js +344 -39
  53. package/dist/Display/Display.KeyValue.js +90 -5
  54. package/dist/Display/Display.ListGroup.js +181 -9
  55. package/dist/Display/Display.ListItem.js +324 -28
  56. package/dist/Display/Display.Logo.js +84 -29
  57. package/dist/Display/Display.MediaCard.js +125 -4
  58. package/dist/Display/Display.MediaEmbed.d.ts +0 -5
  59. package/dist/Display/Display.MediaEmbed.js +170 -26
  60. package/dist/Display/Display.MenuButton.d.ts +2 -2
  61. package/dist/Display/Display.MenuButton.js +380 -94
  62. package/dist/Display/Display.MenuCard.js +122 -18
  63. package/dist/Display/Display.MenuGrid.js +43 -3
  64. package/dist/Display/Display.Monetary.js +90 -5
  65. package/dist/Display/Display.Pattern.js +306 -47
  66. package/dist/Display/Display.PriceTag.js +117 -14
  67. package/dist/Display/Display.ProductCard.js +154 -4
  68. package/dist/Display/Display.Rating.js +92 -11
  69. package/dist/Display/Display.SearchHistory.js +132 -6
  70. package/dist/Display/Display.SectionHeader.d.ts +5 -1
  71. package/dist/Display/Display.SectionHeader.js +125 -12
  72. package/dist/Display/Display.Stat.js +62 -3
  73. package/dist/Display/Display.StatCard.js +131 -7
  74. package/dist/Display/Display.StatusBadge.d.ts +29 -0
  75. package/dist/Display/Display.StatusBadge.js +68 -0
  76. package/dist/Display/Display.StatusDot.js +93 -18
  77. package/dist/Display/Display.Story.js +285 -35
  78. package/dist/Display/Display.StoryTray.js +354 -34
  79. package/dist/Display/Display.StoryViewer.js +571 -72
  80. package/dist/Display/Display.SwipeableRow.js +148 -20
  81. package/dist/Display/Display.Tag.d.ts +4 -1
  82. package/dist/Display/Display.Tag.js +66 -4
  83. package/dist/Display/Display.Timeline.js +102 -13
  84. package/dist/Display/Display.Tooltip.js +122 -26
  85. package/dist/Display/chevron.d.ts +6 -0
  86. package/dist/Display/chevron.js +32 -0
  87. package/dist/Display/count-badge.d.ts +21 -0
  88. package/dist/Display/count-badge.js +124 -0
  89. package/dist/Display/group-title.d.ts +10 -0
  90. package/dist/Display/group-title.js +53 -0
  91. package/dist/Display/icon-font.d.ts +3 -0
  92. package/dist/Display/icon-font.ios.d.ts +3 -0
  93. package/dist/Display/icon-font.ios.js +4 -0
  94. package/dist/Display/icon-font.js +7 -0
  95. package/dist/Display/icon-glyphs.d.ts +2 -0
  96. package/dist/Display/icon-glyphs.js +87 -0
  97. package/dist/Display/icon-map.d.ts +15 -11
  98. package/dist/Display/icon-map.js +344 -84
  99. package/dist/Display/icon-registry.d.ts +21 -0
  100. package/dist/Display/icon-registry.js +21 -0
  101. package/dist/Display/index.d.ts +6 -1
  102. package/dist/Display/index.js +53 -48
  103. package/dist/Display/pill.d.ts +16 -0
  104. package/dist/Display/pill.js +47 -0
  105. package/dist/Feedback/ErrorBoundary.js +35 -23
  106. package/dist/Feedback/Feedback.Banner.js +202 -24
  107. package/dist/Feedback/Feedback.DomainSplashScreen.js +246 -70
  108. package/dist/Feedback/Feedback.Empty.js +54 -3
  109. package/dist/Feedback/Feedback.EmptyState.js +114 -5
  110. package/dist/Feedback/Feedback.Error.d.ts +1 -1
  111. package/dist/Feedback/Feedback.Error.js +130 -5
  112. package/dist/Feedback/Feedback.Loading.d.ts +1 -1
  113. package/dist/Feedback/Feedback.Loading.js +70 -3
  114. package/dist/Feedback/Feedback.PermissionCard.js +161 -5
  115. package/dist/Feedback/Feedback.Progress.js +199 -41
  116. package/dist/Feedback/Feedback.ProgressCircle.js +184 -12
  117. package/dist/Feedback/Feedback.Skeleton.js +149 -36
  118. package/dist/Feedback/Feedback.Spinner.js +407 -79
  119. package/dist/Feedback/Feedback.Splash.js +240 -33
  120. package/dist/Feedback/Feedback.State.d.ts +17 -0
  121. package/dist/Feedback/Feedback.State.js +104 -0
  122. package/dist/Feedback/Toast.context.js +883 -167
  123. package/dist/Feedback/index.d.ts +3 -0
  124. package/dist/Feedback/index.js +15 -13
  125. package/dist/Form/Form.Checkbox.js +212 -22
  126. package/dist/Form/Form.ControlledCheckbox.d.ts +1 -1
  127. package/dist/Form/Form.ControlledCheckbox.js +46 -4
  128. package/dist/Form/Form.ControlledDropdown.d.ts +1 -1
  129. package/dist/Form/Form.ControlledDropdown.js +62 -4
  130. package/dist/Form/Form.ControlledInput.d.ts +4 -3
  131. package/dist/Form/Form.ControlledInput.js +72 -4
  132. package/dist/Form/Form.ControlledMonetaryInput.d.ts +6 -3
  133. package/dist/Form/Form.ControlledMonetaryInput.js +50 -4
  134. package/dist/Form/Form.ControlledRadioButton.d.ts +2 -2
  135. package/dist/Form/Form.ControlledRadioButton.js +45 -4
  136. package/dist/Form/Form.DatePicker.js +507 -107
  137. package/dist/Form/Form.Dropdown.js +303 -52
  138. package/dist/Form/Form.ErrorSummary.js +236 -44
  139. package/dist/Form/Form.Field.d.ts +24 -0
  140. package/dist/Form/Form.Field.js +55 -0
  141. package/dist/Form/Form.FractionalQuantityInput.js +508 -96
  142. package/dist/Form/Form.Input.d.ts +17 -3
  143. package/dist/Form/Form.Input.js +497 -29
  144. package/dist/Form/Form.KeyboardForm.d.ts +22 -8
  145. package/dist/Form/Form.KeyboardForm.js +83 -8
  146. package/dist/Form/Form.KeyboardToolbarHost.d.ts +14 -0
  147. package/dist/Form/Form.KeyboardToolbarHost.js +223 -0
  148. package/dist/Form/Form.MonetaryInput.js +164 -17
  149. package/dist/Form/Form.PickerField.d.ts +31 -0
  150. package/dist/Form/Form.PickerField.js +539 -0
  151. package/dist/Form/Form.PinInput.js +150 -15
  152. package/dist/Form/Form.QuantitySelector.js +229 -25
  153. package/dist/Form/Form.RadioButton.d.ts +1 -0
  154. package/dist/Form/Form.RadioButton.js +26 -29
  155. package/dist/Form/Form.Select.d.ts +2 -1
  156. package/dist/Form/Form.Select.js +388 -60
  157. package/dist/Form/Form.Slider.js +133 -10
  158. package/dist/Form/Form.Switch.js +99 -4
  159. package/dist/Form/choice-row.d.ts +15 -0
  160. package/dist/Form/choice-row.js +236 -0
  161. package/dist/Form/index.d.ts +11 -6
  162. package/dist/Form/index.js +26 -27
  163. package/dist/Form/input-text.d.ts +7 -0
  164. package/dist/Form/input-text.js +18 -0
  165. package/dist/Navigation/Navigation.AppBar.d.ts +3 -4
  166. package/dist/Navigation/Navigation.AppBar.js +535 -99
  167. package/dist/Navigation/Navigation.BottomNav.js +363 -98
  168. package/dist/Navigation/Navigation.CollapsingHeader.d.ts +28 -13
  169. package/dist/Navigation/Navigation.CollapsingHeader.js +369 -36
  170. package/dist/Navigation/Navigation.FloatingBar.js +71 -11
  171. package/dist/Navigation/Navigation.Menu.js +309 -95
  172. package/dist/Navigation/Navigation.MenuSection.js +80 -11
  173. package/dist/Navigation/Navigation.RowItem.d.ts +4 -2
  174. package/dist/Navigation/Navigation.RowItem.js +93 -8
  175. package/dist/Navigation/Navigation.Search.js +241 -27
  176. package/dist/Navigation/Navigation.SearchBar.d.ts +7 -1
  177. package/dist/Navigation/Navigation.SearchBar.js +218 -29
  178. package/dist/Navigation/Navigation.SearchSuggestions.js +77 -3
  179. package/dist/Navigation/Navigation.SegmentedControl.js +152 -14
  180. package/dist/Navigation/Navigation.Steps.js +105 -11
  181. package/dist/Navigation/Navigation.Tabs.js +449 -41
  182. package/dist/Navigation/index.d.ts +9 -4
  183. package/dist/Navigation/index.js +13 -13
  184. package/dist/Typography/Typography.Heading.js +33 -3
  185. package/dist/Typography/Typography.SelectableText.js +95 -7
  186. package/dist/Typography/Typography.Text.d.ts +4 -2
  187. package/dist/Typography/Typography.Text.js +217 -7
  188. package/dist/Typography/index.js +3 -3
  189. package/dist/branding.js +29 -13
  190. package/dist/icons/AddItemIcon.js +76 -2
  191. package/dist/icons/ArrangeCircle.js +82 -2
  192. package/dist/icons/ArrowDownIcon.js +63 -3
  193. package/dist/icons/ArrowUpIcon.js +63 -3
  194. package/dist/icons/BoxIcon.js +64 -2
  195. package/dist/icons/BoxTimeIcon.js +63 -2
  196. package/dist/icons/CalendarIcon.js +145 -2
  197. package/dist/icons/CardIcon.js +80 -2
  198. package/dist/icons/CashierIcon.js +39 -2
  199. package/dist/icons/CreditIcon.js +76 -3
  200. package/dist/icons/DuoIcon.js +75 -2
  201. package/dist/icons/HomeIcon.js +39 -2
  202. package/dist/icons/HomeIconOutlined.js +53 -2
  203. package/dist/icons/LogoIcon.js +87 -2
  204. package/dist/icons/MoneyReceiveIcon.js +86 -2
  205. package/dist/icons/PinIcon.js +39 -2
  206. package/dist/icons/ProfileIcon.js +47 -2
  207. package/dist/icons/SettingsIcon.js +114 -2
  208. package/dist/icons/SinpeIcon.js +60 -2
  209. package/dist/icons/ToggleOffIcon.js +53 -2
  210. package/dist/icons/WalletMoneyIcon.js +81 -2
  211. package/dist/index.d.ts +1 -0
  212. package/dist/index.js +8 -2
  213. package/dist/layouts/AuthContainer.d.ts +4 -5
  214. package/dist/layouts/AuthContainer.js +231 -7
  215. package/dist/layouts/BottomInset.js +4 -1
  216. package/dist/layouts/Container.d.ts +2 -2
  217. package/dist/layouts/Container.js +45 -3
  218. package/dist/layouts/GradientContainer.js +37 -5
  219. package/dist/layouts/PlainLayout.js +19 -3
  220. package/dist/layouts/ScrollContainer.d.ts +14 -9
  221. package/dist/layouts/ScrollContainer.js +125 -4
  222. package/dist/layouts/edges.d.ts +2 -0
  223. package/dist/layouts/edges.js +1 -0
  224. package/dist/primitives/AspectRatio.js +75 -3
  225. package/dist/primitives/Box.js +45 -3
  226. package/dist/primitives/Pressable.js +95 -5
  227. package/dist/primitives/Row.js +84 -13
  228. package/dist/primitives/Spacer.js +42 -5
  229. package/dist/primitives/Stack.js +66 -7
  230. package/dist/primitives/index.js +1 -1
  231. package/dist/theme/active.d.ts +2 -0
  232. package/dist/theme/active.js +33 -18
  233. package/dist/theme/build.js +118 -87
  234. package/dist/theme/color.js +87 -87
  235. package/dist/theme/components/ThemedActivityIndicator.d.ts +2 -15
  236. package/dist/theme/components/ThemedActivityIndicator.js +35 -3
  237. package/dist/theme/components/index.js +1 -0
  238. package/dist/theme/contrast.js +32 -33
  239. package/dist/theme/css-vars.js +71 -75
  240. package/dist/theme/dark.js +116 -97
  241. package/dist/theme/default.js +116 -97
  242. package/dist/theme/define.js +16 -12
  243. package/dist/theme/index.d.ts +1 -0
  244. package/dist/theme/index.js +7 -6
  245. package/dist/theme/on-dark-surface.d.ts +12 -0
  246. package/dist/theme/on-dark-surface.js +13 -0
  247. package/dist/theme/theme.js +1 -0
  248. package/dist/theme/tw.js +3 -1
  249. package/dist/theme/types.js +0 -18
  250. package/dist/theme/typography.d.ts +1 -1
  251. package/dist/theme/typography.js +337 -303
  252. package/dist/theme/useTheme.d.ts +4 -0
  253. package/dist/theme/useTheme.js +7 -3
  254. package/dist/theme/useThemeVars.d.ts +9 -0
  255. package/dist/theme/useThemeVars.js +23 -0
  256. package/dist/theme/validate.js +175 -166
  257. package/dist/tokens/index.js +1 -1
  258. package/dist/tokens/motion.js +30 -13
  259. package/dist/utils/async.d.ts +14 -0
  260. package/dist/utils/async.js +22 -0
  261. package/dist/utils/criteria.js +66 -85
  262. package/dist/utils/date.d.ts +8 -2
  263. package/dist/utils/date.js +63 -50
  264. package/dist/utils/image.js +8 -8
  265. package/dist/utils/intl.d.ts +1 -0
  266. package/dist/utils/intl.js +13 -0
  267. package/dist/utils/keys.js +3 -5
  268. package/dist/utils/monetary.d.ts +1 -0
  269. package/dist/utils/monetary.js +28 -24
  270. package/dist/utils/progress.js +2 -3
  271. package/dist/utils/quantity.js +25 -26
  272. package/dist/utils/reorder.js +11 -20
  273. package/dist/utils/search.d.ts +4 -0
  274. package/dist/utils/search.js +12 -0
  275. package/dist/utils/serializer.js +38 -38
  276. package/dist/utils/useReducedMotion.js +32 -30
  277. package/dist/views/AppSplashView.js +117 -3
  278. package/dist/views/AuthFormView.d.ts +4 -5
  279. package/dist/views/AuthFormView.js +119 -11
  280. package/dist/views/FormViewV2.context.js +75 -23
  281. package/dist/views/FormViewV2.d.ts +4 -5
  282. package/dist/views/FormViewV2.js +658 -92
  283. package/dist/views/ListViewV2.context.js +91 -47
  284. package/dist/views/ListViewV2.d.ts +84 -43
  285. package/dist/views/ListViewV2.js +1350 -200
  286. package/dist/views/Wizard/Wizard.context.js +248 -84
  287. package/dist/views/Wizard/Wizard.js +260 -67
  288. package/dist/views/types/IListView.js +34 -31
  289. package/dist/widgets/CollectionOptions.js +557 -138
  290. package/dist/widgets/FilterBar.js +159 -7
  291. package/dist/widgets/FilterBuilder.js +375 -102
  292. package/dist/widgets/JSONViewer.js +275 -129
  293. package/dist/widgets/PromoBanner.js +336 -42
  294. package/dist/widgets/PromoModal.d.ts +2 -2
  295. package/dist/widgets/PromoModal.js +389 -62
  296. package/dist/widgets/QueryChoice.js +150 -8
  297. package/dist/widgets/QuickActions.js +120 -31
  298. package/dist/widgets/ReorderableList.js +399 -128
  299. package/dist/widgets/TimeZoneSelectorModal.js +458 -51
  300. package/dist/widgets/index.js +3 -3
  301. package/package.json +6 -1
  302. package/tailwind.preset.js +7 -5
  303. package/dist/Form/Form.InputField.d.ts +0 -10
  304. package/dist/Form/Form.InputField.js +0 -38
  305. package/dist/Form/Form.KeyboardToolbar.d.ts +0 -22
  306. package/dist/Form/Form.KeyboardToolbar.js +0 -66
  307. package/dist/Form/Form.PasswordInput.d.ts +0 -9
  308. package/dist/Form/Form.PasswordInput.js +0 -17
  309. package/dist/Form/Form.TextInput.d.ts +0 -8
  310. package/dist/Form/Form.TextInput.js +0 -8
  311. package/dist/primitives/BaseButton.d.ts +0 -150
  312. package/dist/primitives/BaseButton.js +0 -229
  313. package/dist/utils/useSheetTranslation.d.ts +0 -5
  314. package/dist/utils/useSheetTranslation.js +0 -23
@@ -1,86 +1,346 @@
1
+ // Android and web draw from Material Symbols 400, an outline-only font. SF Symbols use the
2
+ // outline variant too, so an icon looks the same on both platforms. Only glyphs that are
3
+ // solid in Material as well (play, pause) or whose fill is the meaning against an empty pair
4
+ // (rating / rating-empty, bookmark / bookmark-empty) use `.fill`.
1
5
  export const ICON_MAP = {
2
- add: { sf: "plus", md: "add" },
3
- "add-circle": { sf: "plus.circle.fill", md: "add_circle" },
4
- archive: { sf: "archivebox", md: "archive" },
5
- back: { sf: "chevron.left", md: "arrow_back" },
6
- bicycle: { sf: "bicycle", md: "directions_bike" },
7
- book: { sf: "book", md: "book" },
8
- bookmark: { sf: "bookmark.fill", md: "bookmark" },
9
- "bookmark-empty": { sf: "bookmark", md: "bookmark_border" },
10
- calendar: { sf: "calendar", md: "calendar_month" },
11
- camera: { sf: "camera", md: "camera_alt" },
12
- card: { sf: "creditcard", md: "credit_card" },
13
- cart: { sf: "cart", md: "shopping_cart" },
14
- cash: { sf: "banknote", md: "payments" },
15
- check: { sf: "checkmark", md: "check" },
16
- circle: { sf: "circle", md: "radio_button_unchecked" },
17
- close: { sf: "xmark", md: "close" },
18
- collapse: { sf: "chevron.up", md: "expand_less" },
19
- copy: { sf: "doc.on.doc", md: "content_copy" },
20
- "dark-mode": { sf: "moon", md: "dark_mode" },
21
- database: { sf: "externaldrive", md: "database" },
22
- delete: { sf: "trash", md: "delete" },
23
- dismiss: { sf: "xmark.circle.fill", md: "cancel" },
24
- document: { sf: "doc.text", md: "description" },
25
- down: { sf: "arrow.down", md: "arrow_downward" },
26
- download: { sf: "arrow.down.to.line", md: "download" },
27
- "download-cloud": { sf: "icloud.and.arrow.down", md: "cloud_download" },
28
- edit: { sf: "pencil", md: "edit" },
29
- empty: { sf: "tray", md: "inbox" },
30
- error: { sf: "exclamationmark.circle.fill", md: "error" },
31
- expand: { sf: "chevron.down", md: "expand_more" },
32
- filter: { sf: "slider.horizontal.3", md: "tune" },
33
- folder: { sf: "folder", md: "folder" },
34
- grid: { sf: "square.grid.2x2", md: "grid_view" },
35
- help: { sf: "questionmark.circle", md: "help" },
36
- hidden: { sf: "eye.slash", md: "visibility_off" },
37
- home: { sf: "house.fill", md: "home" },
38
- image: { sf: "photo", md: "image" },
39
- inbox: { sf: "tray", md: "inbox" },
40
- info: { sf: "info.circle.fill", md: "info" },
41
- link: { sf: "link", md: "link" },
42
- list: { sf: "list.bullet", md: "list" },
43
- location: { sf: "mappin", md: "location_on" },
44
- "location-disabled": { sf: "location.slash", md: "location_off" },
45
- lock: { sf: "lock", md: "lock" },
46
- logout: { sf: "rectangle.portrait.and.arrow.right", md: "logout" },
47
- mail: { sf: "envelope", md: "mail" },
48
- map: { sf: "map", md: "map" },
49
- menu: { sf: "line.3.horizontal", md: "menu" },
50
- more: { sf: "ellipsis", md: "more_horiz" },
51
- "more-vertical": { sf: "ellipsis", md: "more_vert" },
52
- mute: { sf: "speaker.slash.fill", md: "volume_off" },
53
- next: { sf: "chevron.right", md: "chevron_right" },
54
- notifications: { sf: "bell", md: "notifications" },
55
- package: { sf: "shippingbox", md: "inventory_2" },
56
- pause: { sf: "pause.fill", md: "pause" },
57
- people: { sf: "person.2", md: "group" },
58
- play: { sf: "play.fill", md: "play_arrow" },
59
- printer: { sf: "printer", md: "print" },
60
- profile: { sf: "person", md: "person" },
61
- "profile-circle": { sf: "person.crop.circle", md: "account_circle" },
62
- rating: { sf: "star.fill", md: "star" },
63
- "rating-empty": { sf: "star", md: "star_border" },
64
- receipt: { sf: "receipt", md: "receipt_long" },
65
- remove: { sf: "minus", md: "remove" },
66
- reorder: { sf: "line.3.horizontal", md: "drag_handle" },
67
- save: { sf: "square.and.arrow.down", md: "save" },
68
- search: { sf: "magnifyingglass", md: "search" },
69
- "search-empty": { sf: "doc.text.magnifyingglass", md: "search_off" },
70
- server: { sf: "server.rack", md: "dns" },
71
- settings: { sf: "gearshape", md: "settings" },
72
- share: { sf: "square.and.arrow.up", md: "share" },
73
- stop: { sf: "hand.raised.fill", md: "front_hand" },
74
- success: { sf: "checkmark.circle.fill", md: "check_circle" },
75
- sync: { sf: "arrow.triangle.2.circlepath", md: "sync" },
76
- time: { sf: "clock", md: "schedule" },
77
- unlink: { sf: "link", md: "link_off" },
78
- up: { sf: "arrow.up", md: "arrow_upward" },
79
- upload: { sf: "arrow.up.to.line", md: "upload" },
80
- "upload-cloud": { sf: "icloud.and.arrow.up", md: "cloud_upload" },
81
- visibility: { sf: "eye", md: "visibility" },
82
- volume: { sf: "speaker.wave.2.fill", md: "volume_up" },
83
- wallet: { sf: "wallet.bifold", md: "wallet" },
84
- warning: { sf: "exclamationmark.triangle.fill", md: "warning" },
85
- wifi: { sf: "wifi", md: "wifi" },
6
+ add: {
7
+ sf: "plus",
8
+ md: "add"
9
+ },
10
+ "add-circle": {
11
+ sf: "plus.circle",
12
+ md: "add_circle"
13
+ },
14
+ archive: {
15
+ sf: "archivebox",
16
+ md: "archive"
17
+ },
18
+ back: {
19
+ sf: "chevron.left",
20
+ md: "arrow_back"
21
+ },
22
+ bicycle: {
23
+ sf: "bicycle",
24
+ md: "directions_bike"
25
+ },
26
+ book: {
27
+ sf: "book",
28
+ md: "book"
29
+ },
30
+ bookmark: {
31
+ sf: "bookmark.fill",
32
+ md: "bookmark"
33
+ },
34
+ "bookmark-empty": {
35
+ sf: "bookmark",
36
+ md: "bookmark_border"
37
+ },
38
+ calendar: {
39
+ sf: "calendar",
40
+ md: "calendar_month"
41
+ },
42
+ camera: {
43
+ sf: "camera",
44
+ md: "camera_alt"
45
+ },
46
+ card: {
47
+ sf: "creditcard",
48
+ md: "credit_card"
49
+ },
50
+ cart: {
51
+ sf: "cart",
52
+ md: "shopping_cart"
53
+ },
54
+ cash: {
55
+ sf: "banknote",
56
+ md: "payments"
57
+ },
58
+ check: {
59
+ sf: "checkmark",
60
+ md: "check"
61
+ },
62
+ circle: {
63
+ sf: "circle",
64
+ md: "radio_button_unchecked"
65
+ },
66
+ close: {
67
+ sf: "xmark",
68
+ md: "close"
69
+ },
70
+ collapse: {
71
+ sf: "chevron.up",
72
+ md: "expand_less"
73
+ },
74
+ copy: {
75
+ sf: "doc.on.doc",
76
+ md: "content_copy"
77
+ },
78
+ "dark-mode": {
79
+ sf: "moon",
80
+ md: "dark_mode"
81
+ },
82
+ database: {
83
+ sf: "externaldrive",
84
+ md: "database"
85
+ },
86
+ delete: {
87
+ sf: "trash",
88
+ md: "delete"
89
+ },
90
+ dismiss: {
91
+ sf: "xmark.circle",
92
+ md: "cancel"
93
+ },
94
+ document: {
95
+ sf: "doc.text",
96
+ md: "description"
97
+ },
98
+ down: {
99
+ sf: "arrow.down",
100
+ md: "arrow_downward"
101
+ },
102
+ download: {
103
+ sf: "arrow.down.to.line",
104
+ md: "download"
105
+ },
106
+ "download-cloud": {
107
+ sf: "icloud.and.arrow.down",
108
+ md: "cloud_download"
109
+ },
110
+ edit: {
111
+ sf: "pencil",
112
+ md: "edit"
113
+ },
114
+ empty: {
115
+ sf: "tray",
116
+ md: "inbox"
117
+ },
118
+ error: {
119
+ sf: "exclamationmark.circle",
120
+ md: "error"
121
+ },
122
+ expand: {
123
+ sf: "chevron.down",
124
+ md: "expand_more"
125
+ },
126
+ filter: {
127
+ sf: "slider.horizontal.3",
128
+ md: "tune"
129
+ },
130
+ folder: {
131
+ sf: "folder",
132
+ md: "folder"
133
+ },
134
+ grid: {
135
+ sf: "square.grid.2x2",
136
+ md: "grid_view"
137
+ },
138
+ help: {
139
+ sf: "questionmark.circle",
140
+ md: "help"
141
+ },
142
+ hidden: {
143
+ sf: "eye.slash",
144
+ md: "visibility_off"
145
+ },
146
+ home: {
147
+ sf: "house",
148
+ md: "home"
149
+ },
150
+ image: {
151
+ sf: "photo",
152
+ md: "image"
153
+ },
154
+ inbox: {
155
+ sf: "tray",
156
+ md: "inbox"
157
+ },
158
+ info: {
159
+ sf: "info.circle",
160
+ md: "info"
161
+ },
162
+ link: {
163
+ sf: "link",
164
+ md: "link"
165
+ },
166
+ list: {
167
+ sf: "list.bullet",
168
+ md: "list"
169
+ },
170
+ location: {
171
+ sf: "mappin",
172
+ md: "location_on"
173
+ },
174
+ "location-disabled": {
175
+ sf: "location.slash",
176
+ md: "location_off"
177
+ },
178
+ lock: {
179
+ sf: "lock",
180
+ md: "lock"
181
+ },
182
+ logout: {
183
+ sf: "rectangle.portrait.and.arrow.right",
184
+ md: "logout"
185
+ },
186
+ mail: {
187
+ sf: "envelope",
188
+ md: "mail"
189
+ },
190
+ map: {
191
+ sf: "map",
192
+ md: "map"
193
+ },
194
+ menu: {
195
+ sf: "line.3.horizontal",
196
+ md: "menu"
197
+ },
198
+ more: {
199
+ sf: "ellipsis",
200
+ md: "more_horiz"
201
+ },
202
+ "more-vertical": {
203
+ sf: "ellipsis",
204
+ md: "more_vert"
205
+ },
206
+ mute: {
207
+ sf: "speaker.slash",
208
+ md: "volume_off"
209
+ },
210
+ next: {
211
+ sf: "chevron.right",
212
+ md: "chevron_right"
213
+ },
214
+ notifications: {
215
+ sf: "bell",
216
+ md: "notifications"
217
+ },
218
+ package: {
219
+ sf: "shippingbox",
220
+ md: "inventory_2"
221
+ },
222
+ pause: {
223
+ sf: "pause.fill",
224
+ md: "pause"
225
+ },
226
+ people: {
227
+ sf: "person.2",
228
+ md: "group"
229
+ },
230
+ play: {
231
+ sf: "play.fill",
232
+ md: "play_arrow"
233
+ },
234
+ printer: {
235
+ sf: "printer",
236
+ md: "print"
237
+ },
238
+ profile: {
239
+ sf: "person",
240
+ md: "person"
241
+ },
242
+ "profile-circle": {
243
+ sf: "person.crop.circle",
244
+ md: "account_circle"
245
+ },
246
+ rating: {
247
+ sf: "star.fill",
248
+ md: "star"
249
+ },
250
+ "rating-empty": {
251
+ sf: "star",
252
+ md: "star_border"
253
+ },
254
+ receipt: {
255
+ sf: "receipt",
256
+ md: "receipt_long"
257
+ },
258
+ remove: {
259
+ sf: "minus",
260
+ md: "remove"
261
+ },
262
+ reorder: {
263
+ sf: "line.3.horizontal",
264
+ md: "drag_handle"
265
+ },
266
+ save: {
267
+ sf: "square.and.arrow.down",
268
+ md: "save"
269
+ },
270
+ search: {
271
+ sf: "magnifyingglass",
272
+ md: "search"
273
+ },
274
+ "search-empty": {
275
+ sf: "doc.text.magnifyingglass",
276
+ md: "search_off"
277
+ },
278
+ server: {
279
+ sf: "server.rack",
280
+ md: "dns"
281
+ },
282
+ settings: {
283
+ sf: "gearshape",
284
+ md: "settings"
285
+ },
286
+ share: {
287
+ sf: "square.and.arrow.up",
288
+ md: "share"
289
+ },
290
+ stop: {
291
+ sf: "hand.raised",
292
+ md: "front_hand"
293
+ },
294
+ success: {
295
+ sf: "checkmark.circle",
296
+ md: "check_circle"
297
+ },
298
+ sync: {
299
+ sf: "arrow.triangle.2.circlepath",
300
+ md: "sync"
301
+ },
302
+ time: {
303
+ sf: "clock",
304
+ md: "schedule"
305
+ },
306
+ unlink: {
307
+ sf: "link",
308
+ md: "link_off"
309
+ },
310
+ up: {
311
+ sf: "arrow.up",
312
+ md: "arrow_upward"
313
+ },
314
+ upload: {
315
+ sf: "arrow.up.to.line",
316
+ md: "upload"
317
+ },
318
+ "upload-cloud": {
319
+ sf: "icloud.and.arrow.up",
320
+ md: "cloud_upload"
321
+ },
322
+ visibility: {
323
+ sf: "eye",
324
+ md: "visibility"
325
+ },
326
+ volume: {
327
+ sf: "speaker.wave.2",
328
+ md: "volume_up"
329
+ },
330
+ wallet: {
331
+ sf: "wallet.bifold",
332
+ md: "wallet"
333
+ },
334
+ warning: {
335
+ sf: "exclamationmark.triangle",
336
+ md: "warning"
337
+ },
338
+ wifi: {
339
+ sf: "wifi",
340
+ md: "wifi"
341
+ }
86
342
  };
343
+
344
+ /** Built-in semantic names plus the ones an app registers with `registerIcons`. */
345
+
346
+ export const ICON_NAMES = Object.keys(ICON_MAP);
@@ -0,0 +1,21 @@
1
+ import type { ReactNode } from "react";
2
+ import type { ColorValue } from "react-native";
3
+ /**
4
+ * Apps add their own icons (brand SVGs, product glyphs) by name:
5
+ *
6
+ * declare module "./icon-registry.js" {
7
+ * interface CustomIconRegistry { odoo: true }
8
+ * }
9
+ * registerIcons({ odoo: ({ size, color }) => <OdooLogo color={color} size={size} /> });
10
+ *
11
+ * Then `<Display.Icon name="odoo" />` works like any built-in icon.
12
+ */
13
+ export interface CustomIconRegistry {
14
+ }
15
+ export type CustomIconName = Extract<keyof CustomIconRegistry, string>;
16
+ export type CustomIconRenderer = (props: {
17
+ size: number;
18
+ color: ColorValue;
19
+ }) => ReactNode;
20
+ export declare function registerIcons(icons: Partial<Record<CustomIconName, CustomIconRenderer>>): void;
21
+ export declare function customIconRenderer(name: string): CustomIconRenderer | undefined;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Apps add their own icons (brand SVGs, product glyphs) by name:
3
+ *
4
+ * declare module "./icon-registry.js" {
5
+ * interface CustomIconRegistry { odoo: true }
6
+ * }
7
+ * registerIcons({ odoo: ({ size, color }) => <OdooLogo color={color} size={size} /> });
8
+ *
9
+ * Then `<Display.Icon name="odoo" />` works like any built-in icon.
10
+ */
11
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
12
+
13
+ const renderers = new Map();
14
+ export function registerIcons(icons) {
15
+ for (const [name, renderer] of Object.entries(icons)) {
16
+ if (renderer) renderers.set(name, renderer);
17
+ }
18
+ }
19
+ export function customIconRenderer(name) {
20
+ return renderers.get(name);
21
+ }
@@ -29,6 +29,7 @@ import SearchHistory from "./Display.SearchHistory.js";
29
29
  import SectionHeader from "./Display.SectionHeader.js";
30
30
  import Stat from "./Display.Stat.js";
31
31
  import StatCard from "./Display.StatCard.js";
32
+ import StatusBadge from "./Display.StatusBadge.js";
32
33
  import StatusDot from "./Display.StatusDot.js";
33
34
  import Story from "./Display.Story.js";
34
35
  import StoryTray from "./Display.StoryTray.js";
@@ -38,6 +39,7 @@ import Tag from "./Display.Tag.js";
38
39
  import Timeline from "./Display.Timeline.js";
39
40
  import Tooltip from "./Display.Tooltip.js";
40
41
  export declare const Display: {
42
+ StatusBadge: typeof StatusBadge;
41
43
  AmountSummary: {
42
44
  Root: ({ children, currencySymbol, variant, className, testID, }: import("./Display.AmountSummary.js").AmountSummaryRootProps) => import("react").JSX.Element;
43
45
  Row: ({ label, value, currencySymbol, prefix, className, labelClassName, valueClassName, testID, }: import("./Display.AmountSummary.js").AmountSummaryRowProps) => import("react").JSX.Element;
@@ -112,5 +114,8 @@ export type { ListGroupProps } from "./Display.ListGroup.js";
112
114
  export type { ListItemProps } from "./Display.ListItem.js";
113
115
  export type { MenuCardProps } from "./Display.MenuCard.js";
114
116
  export type { MenuGridItem } from "./Display.MenuGrid.js";
115
- export { ICON_MAP, type IconDefinition, type IconName, } from "./icon-map.js";
117
+ export { defineStatuses, resolveStatus, type StatusBadgeProps, type StatusDefinition, type StatusMap, type StatusTone, } from "./Display.StatusBadge.js";
118
+ export { ICON_FONT_FAMILY, ICON_FONTS } from "./icon-font.js";
119
+ export { type BuiltInIconName, ICON_NAMES, type IconName, } from "./icon-map.js";
120
+ export { type CustomIconRegistry, type CustomIconRenderer, registerIcons, } from "./icon-registry.js";
116
121
  export default Display;
@@ -2,7 +2,7 @@ import Accordion from "./Display.Accordion.js";
2
2
  import AmountSummary from "./Display.AmountSummary.js";
3
3
  import Avatar from "./Display.Avatar.js";
4
4
  import AvatarGroup from "./Display.AvatarGroup.js";
5
- import Badge, { BadgeVariants, } from "./Display.Badge.js";
5
+ import Badge, { BadgeVariants } from "./Display.Badge.js";
6
6
  import Card from "./Display.Card.js";
7
7
  import Carousel from "./Display.Carousel.js";
8
8
  import Chip from "./Display.Chip.js";
@@ -35,6 +35,7 @@ import SearchHistory from "./Display.SearchHistory.js";
35
35
  import SectionHeader from "./Display.SectionHeader.js";
36
36
  import Stat from "./Display.Stat.js";
37
37
  import StatCard from "./Display.StatCard.js";
38
+ import StatusBadge from "./Display.StatusBadge.js";
38
39
  import StatusDot from "./Display.StatusDot.js";
39
40
  import Story from "./Display.Story.js";
40
41
  import StoryTray from "./Display.StoryTray.js";
@@ -44,53 +45,57 @@ import Tag from "./Display.Tag.js";
44
45
  import Timeline from "./Display.Timeline.js";
45
46
  import Tooltip from "./Display.Tooltip.js";
46
47
  export const Display = {
47
- AmountSummary,
48
- Badge,
49
- BadgeVariants,
50
- Accordion,
51
- Avatar,
52
- AvatarGroup,
53
- Card,
54
- Carousel,
55
- Chip,
56
- Tag,
57
- Image: DisplayImage,
58
- ExpoImage,
59
- MediaCard,
60
- MediaEmbed,
61
- Story,
62
- StoryTray,
63
- StoryViewer,
64
- ListItem,
65
- ListGroup,
66
- KeyValue,
67
- DataTable,
68
- Stat,
69
- StatCard,
70
- StatusDot,
71
- PriceTag,
72
- ProductCard,
73
- Timeline,
74
- SearchHistory,
75
- SectionHeader,
76
- Rating,
77
- SwipeableRow,
78
- Tooltip,
79
- IconBadge,
80
- CopyableText,
81
- Date,
82
- Divider,
83
- GradientSurface,
84
- Icon,
85
- CountRecords,
86
- Logo,
87
- CircleButton,
88
- MenuButton,
89
- MenuCard,
90
- MenuGrid,
91
- Monetary,
92
- Pattern,
48
+ StatusBadge,
49
+ AmountSummary,
50
+ Badge,
51
+ BadgeVariants,
52
+ Accordion,
53
+ Avatar,
54
+ AvatarGroup,
55
+ Card,
56
+ Carousel,
57
+ Chip,
58
+ Tag,
59
+ Image: DisplayImage,
60
+ ExpoImage,
61
+ MediaCard,
62
+ MediaEmbed,
63
+ Story,
64
+ StoryTray,
65
+ StoryViewer,
66
+ ListItem,
67
+ ListGroup,
68
+ KeyValue,
69
+ DataTable,
70
+ Stat,
71
+ StatCard,
72
+ StatusDot,
73
+ PriceTag,
74
+ ProductCard,
75
+ Timeline,
76
+ SearchHistory,
77
+ SectionHeader,
78
+ Rating,
79
+ SwipeableRow,
80
+ Tooltip,
81
+ IconBadge,
82
+ CopyableText,
83
+ Date,
84
+ Divider,
85
+ GradientSurface,
86
+ Icon,
87
+ CountRecords,
88
+ Logo,
89
+ CircleButton,
90
+ MenuButton,
91
+ MenuCard,
92
+ MenuGrid,
93
+ Monetary,
94
+ Pattern
93
95
  };
94
96
  export { BadgeVariants };
95
- export { ICON_MAP, } from "./icon-map.js";
97
+ export { defineStatuses, resolveStatus } from "./Display.StatusBadge.js";
98
+ export { ICON_FONT_FAMILY, ICON_FONTS } from "./icon-font.js";
99
+ export { ICON_NAMES } from "./icon-map.js";
100
+ export { registerIcons } from "./icon-registry.js";
96
101
  export default Display;
@@ -0,0 +1,16 @@
1
+ import type { typographyVariants } from "../theme/typography.js";
2
+ import type { ReactNode } from "react";
3
+ export interface PillLabelProps {
4
+ children: ReactNode;
5
+ /** Ink of the pill, e.g. `text-success`. */
6
+ className: string;
7
+ /** Status pills (`Badge`) are semibold; chips and tags are medium. */
8
+ semibold?: boolean;
9
+ /** A typography variant instead of the pill metrics, e.g. `caption` for denser lists. */
10
+ variant?: keyof typeof typographyVariants;
11
+ }
12
+ /**
13
+ * The label every pill of the DS shares (badges, chips, tags): one size, one line,
14
+ * and the configured DS font instead of a className font that the app never loads.
15
+ */
16
+ export declare function PillLabel({ children, className, semibold, variant, }: PillLabelProps): import("react").JSX.Element;