@cdx-ui/components 0.0.1-beta.6 → 0.0.1-beta.61
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.
- package/README.md +36 -18
- package/lib/commonjs/components/AlertDialog/index.js +5 -4
- package/lib/commonjs/components/AlertDialog/index.js.map +1 -1
- package/lib/commonjs/components/Avatar/index.js +1 -1
- package/lib/commonjs/components/Avatar/styles.js +36 -29
- package/lib/commonjs/components/Avatar/styles.js.map +1 -1
- package/lib/commonjs/components/Button/index.js +16 -1
- package/lib/commonjs/components/Button/index.js.map +1 -1
- package/lib/commonjs/components/Button/styles.js +85 -26
- package/lib/commonjs/components/Button/styles.js.map +1 -1
- package/lib/commonjs/components/CLAUDE.md +90 -0
- package/lib/commonjs/components/Card/index.js +22 -4
- package/lib/commonjs/components/Card/index.js.map +1 -1
- package/lib/commonjs/components/Card/styles.js +27 -4
- package/lib/commonjs/components/Card/styles.js.map +1 -1
- package/lib/commonjs/components/Checkbox/index.js +5 -29
- package/lib/commonjs/components/Checkbox/index.js.map +1 -1
- package/lib/commonjs/components/Checkbox/styles.js +41 -47
- package/lib/commonjs/components/Checkbox/styles.js.map +1 -1
- package/lib/commonjs/components/Chip/index.js +78 -9
- package/lib/commonjs/components/Chip/index.js.map +1 -1
- package/lib/commonjs/components/Chip/styles.js +207 -21
- package/lib/commonjs/components/Chip/styles.js.map +1 -1
- package/lib/commonjs/components/Dialog/index.js +71 -16
- package/lib/commonjs/components/Dialog/index.js.map +1 -1
- package/lib/commonjs/components/Dialog/styles.js +60 -14
- package/lib/commonjs/components/Dialog/styles.js.map +1 -1
- package/lib/commonjs/components/Field/index.js +8 -2
- package/lib/commonjs/components/Field/index.js.map +1 -1
- package/lib/commonjs/components/Field/styles.js +4 -4
- package/lib/commonjs/components/Field/styles.js.map +1 -1
- package/lib/commonjs/components/Heading/styles.js +1 -1
- package/lib/commonjs/components/Heading/styles.js.map +1 -1
- package/lib/commonjs/components/Icon/index.js +3 -4
- package/lib/commonjs/components/Icon/index.js.map +1 -1
- package/lib/commonjs/components/IconButton/index.js +6 -1
- package/lib/commonjs/components/IconButton/index.js.map +1 -1
- package/lib/commonjs/components/IconButton/styles.js +135 -10
- package/lib/commonjs/components/IconButton/styles.js.map +1 -1
- package/lib/commonjs/components/Input/styles.js +7 -6
- package/lib/commonjs/components/Input/styles.js.map +1 -1
- package/lib/commonjs/components/Link/index.js +22 -3
- package/lib/commonjs/components/Link/index.js.map +1 -1
- package/lib/commonjs/components/Link/styles.js +56 -6
- package/lib/commonjs/components/Link/styles.js.map +1 -1
- package/lib/commonjs/components/ListItem/index.js +3 -25
- package/lib/commonjs/components/ListItem/index.js.map +1 -1
- package/lib/commonjs/components/ListItem/styles.js +29 -57
- package/lib/commonjs/components/ListItem/styles.js.map +1 -1
- package/lib/commonjs/components/ProgressSegmented/index.js +24 -10
- package/lib/commonjs/components/ProgressSegmented/index.js.map +1 -1
- package/lib/commonjs/components/Radio/index.js +167 -0
- package/lib/commonjs/components/Radio/index.js.map +1 -0
- package/lib/commonjs/components/Radio/styles.js +31 -0
- package/lib/commonjs/components/Radio/styles.js.map +1 -0
- package/lib/commonjs/components/ScopedTheme/index.js +24 -0
- package/lib/commonjs/components/ScopedTheme/index.js.map +1 -0
- package/lib/commonjs/components/Select/SelectTriggerHost.web.js +4 -0
- package/lib/commonjs/components/Select/SelectTriggerHost.web.js.map +1 -1
- package/lib/commonjs/components/Select/index.js +9 -3
- package/lib/commonjs/components/Select/index.js.map +1 -1
- package/lib/commonjs/components/Select/styles.js +17 -20
- package/lib/commonjs/components/Select/styles.js.map +1 -1
- package/lib/commonjs/components/Text/styles.js +2 -2
- package/lib/commonjs/components/Text/styles.js.map +1 -1
- package/lib/commonjs/components/Tile/index.js +251 -0
- package/lib/commonjs/components/Tile/index.js.map +1 -0
- package/lib/commonjs/components/Tile/styles.js +52 -0
- package/lib/commonjs/components/Tile/styles.js.map +1 -0
- package/lib/commonjs/components/index.js +36 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/figma/AlertDialog.Description.figma.js +20 -0
- package/lib/commonjs/figma/AlertDialog.Description.figma.js.map +1 -0
- package/lib/commonjs/figma/AlertDialog.Footer.figma.js +41 -0
- package/lib/commonjs/figma/AlertDialog.Footer.figma.js.map +1 -0
- package/lib/commonjs/figma/AlertDialog.Header.figma.js +28 -0
- package/lib/commonjs/figma/AlertDialog.Header.figma.js.map +1 -0
- package/lib/commonjs/figma/AlertDialog.Text.figma.js +20 -0
- package/lib/commonjs/figma/AlertDialog.Text.figma.js.map +1 -0
- package/lib/commonjs/figma/AlertDialog.Title.figma.js +27 -0
- package/lib/commonjs/figma/AlertDialog.Title.figma.js.map +1 -0
- package/lib/commonjs/figma/AlertDialog.figma.js +43 -0
- package/lib/commonjs/figma/AlertDialog.figma.js.map +1 -0
- package/lib/commonjs/figma/Avatar.figma.js +57 -0
- package/lib/commonjs/figma/Avatar.figma.js.map +1 -0
- package/lib/commonjs/figma/Button.figma.js +28 -15
- package/lib/commonjs/figma/Button.figma.js.map +1 -1
- package/lib/commonjs/figma/CLAUDE.md +30 -0
- package/lib/commonjs/figma/Card.Header.figma.js +28 -0
- package/lib/commonjs/figma/Card.Header.figma.js.map +1 -0
- package/lib/commonjs/figma/Card.figma.js +42 -0
- package/lib/commonjs/figma/Card.figma.js.map +1 -0
- package/lib/commonjs/figma/Checkbox.figma.js +55 -0
- package/lib/commonjs/figma/Checkbox.figma.js.map +1 -0
- package/lib/commonjs/figma/Chip.figma.js +68 -0
- package/lib/commonjs/figma/Chip.figma.js.map +1 -0
- package/lib/commonjs/figma/Dialog.Description.figma.js +20 -0
- package/lib/commonjs/figma/Dialog.Description.figma.js.map +1 -0
- package/lib/commonjs/figma/Dialog.Footer.figma.js +30 -0
- package/lib/commonjs/figma/Dialog.Footer.figma.js.map +1 -0
- package/lib/commonjs/figma/Dialog.Header.figma.js +29 -0
- package/lib/commonjs/figma/Dialog.Header.figma.js.map +1 -0
- package/lib/commonjs/figma/Dialog.Text.figma.js +20 -0
- package/lib/commonjs/figma/Dialog.Text.figma.js.map +1 -0
- package/lib/commonjs/figma/Dialog.Title.figma.js +27 -0
- package/lib/commonjs/figma/Dialog.Title.figma.js.map +1 -0
- package/lib/commonjs/figma/Dialog.figma.js +51 -0
- package/lib/commonjs/figma/Dialog.figma.js.map +1 -0
- package/lib/commonjs/figma/Field.Input.figma.js +57 -0
- package/lib/commonjs/figma/Field.Input.figma.js.map +1 -0
- package/lib/commonjs/figma/Field.Select.figma.js +57 -0
- package/lib/commonjs/figma/Field.Select.figma.js.map +1 -0
- package/lib/commonjs/figma/Heading.figma.js +30 -0
- package/lib/commonjs/figma/Heading.figma.js.map +1 -0
- package/lib/commonjs/figma/Icon.figma.js +20 -0
- package/lib/commonjs/figma/Icon.figma.js.map +1 -0
- package/lib/commonjs/figma/IconButton.figma.js +47 -0
- package/lib/commonjs/figma/IconButton.figma.js.map +1 -0
- package/lib/commonjs/figma/Input.figma.js +52 -0
- package/lib/commonjs/figma/Input.figma.js.map +1 -0
- package/lib/commonjs/figma/Link.figma.js +30 -0
- package/lib/commonjs/figma/Link.figma.js.map +1 -0
- package/lib/commonjs/figma/ListItem.Description.figma.js +23 -0
- package/lib/commonjs/figma/ListItem.Description.figma.js.map +1 -0
- package/lib/commonjs/figma/ListItem.LeadingSlot.figma.js +24 -0
- package/lib/commonjs/figma/ListItem.LeadingSlot.figma.js.map +1 -0
- package/lib/commonjs/figma/ListItem.Meta.figma.js +23 -0
- package/lib/commonjs/figma/ListItem.Meta.figma.js.map +1 -0
- package/lib/commonjs/figma/ListItem.SectionHeader.figma.js +24 -0
- package/lib/commonjs/figma/ListItem.SectionHeader.figma.js.map +1 -0
- package/lib/commonjs/figma/ListItem.Title.figma.js +23 -0
- package/lib/commonjs/figma/ListItem.Title.figma.js.map +1 -0
- package/lib/commonjs/figma/ListItem.TrailingSlot.figma.js +24 -0
- package/lib/commonjs/figma/ListItem.TrailingSlot.figma.js.map +1 -0
- package/lib/commonjs/figma/ListItem.figma.js +50 -0
- package/lib/commonjs/figma/ListItem.figma.js.map +1 -0
- package/lib/commonjs/figma/ProgressSegmented.figma.js +39 -0
- package/lib/commonjs/figma/ProgressSegmented.figma.js.map +1 -0
- package/lib/commonjs/figma/Radio.figma.js +40 -0
- package/lib/commonjs/figma/Radio.figma.js.map +1 -0
- package/lib/commonjs/figma/Select.figma.js +53 -0
- package/lib/commonjs/figma/Select.figma.js.map +1 -0
- package/lib/commonjs/figma/Text.figma.js +32 -0
- package/lib/commonjs/figma/Text.figma.js.map +1 -0
- package/lib/commonjs/figma/icons.figma.batch.js +27 -0
- package/lib/commonjs/figma/icons.figma.batch.js.map +1 -0
- package/lib/commonjs/figma/icons.figma.batch.json +17705 -0
- package/lib/commonjs/hooks/index.js +19 -0
- package/lib/commonjs/hooks/index.js.map +1 -0
- package/lib/commonjs/hooks/useForgeBottomTabScreenOptions.js +246 -0
- package/lib/commonjs/hooks/useForgeBottomTabScreenOptions.js.map +1 -0
- package/lib/commonjs/index.js +24 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/metro/withCdxMetroConfig.js +7 -18
- package/lib/commonjs/metro/withCdxMetroConfig.js.map +1 -1
- package/lib/commonjs/metro/withForgeMetroConfig.js +24 -0
- package/lib/commonjs/metro/withForgeMetroConfig.js.map +1 -0
- package/lib/commonjs/navigation/forgeTabIcon.js +43 -0
- package/lib/commonjs/navigation/forgeTabIcon.js.map +1 -0
- package/lib/commonjs/navigation/forgeTabIcon.native.js +35 -0
- package/lib/commonjs/navigation/forgeTabIcon.native.js.map +1 -0
- package/lib/commonjs/navigation/index.js +13 -0
- package/lib/commonjs/navigation/index.js.map +1 -0
- package/lib/commonjs/navigation/types.js +38 -0
- package/lib/commonjs/navigation/types.js.map +1 -0
- package/lib/commonjs/styles/primitives.js +43 -6
- package/lib/commonjs/styles/primitives.js.map +1 -1
- package/lib/module/components/AlertDialog/index.js +5 -4
- package/lib/module/components/AlertDialog/index.js.map +1 -1
- package/lib/module/components/Avatar/index.js +1 -1
- package/lib/module/components/Avatar/styles.js +36 -29
- package/lib/module/components/Avatar/styles.js.map +1 -1
- package/lib/module/components/Button/index.js +17 -2
- package/lib/module/components/Button/index.js.map +1 -1
- package/lib/module/components/Button/styles.js +85 -26
- package/lib/module/components/Button/styles.js.map +1 -1
- package/lib/module/components/CLAUDE.md +90 -0
- package/lib/module/components/Card/index.js +23 -4
- package/lib/module/components/Card/index.js.map +1 -1
- package/lib/module/components/Card/styles.js +27 -4
- package/lib/module/components/Card/styles.js.map +1 -1
- package/lib/module/components/Checkbox/index.js +6 -30
- package/lib/module/components/Checkbox/index.js.map +1 -1
- package/lib/module/components/Checkbox/styles.js +43 -48
- package/lib/module/components/Checkbox/styles.js.map +1 -1
- package/lib/module/components/Chip/index.js +82 -13
- package/lib/module/components/Chip/index.js.map +1 -1
- package/lib/module/components/Chip/styles.js +206 -20
- package/lib/module/components/Chip/styles.js.map +1 -1
- package/lib/module/components/Dialog/index.js +74 -19
- package/lib/module/components/Dialog/index.js.map +1 -1
- package/lib/module/components/Dialog/styles.js +60 -14
- package/lib/module/components/Dialog/styles.js.map +1 -1
- package/lib/module/components/Field/index.js +9 -3
- package/lib/module/components/Field/index.js.map +1 -1
- package/lib/module/components/Field/styles.js +4 -4
- package/lib/module/components/Field/styles.js.map +1 -1
- package/lib/module/components/Heading/styles.js +1 -1
- package/lib/module/components/Heading/styles.js.map +1 -1
- package/lib/module/components/Icon/index.js +3 -4
- package/lib/module/components/Icon/index.js.map +1 -1
- package/lib/module/components/IconButton/index.js +6 -1
- package/lib/module/components/IconButton/index.js.map +1 -1
- package/lib/module/components/IconButton/styles.js +135 -10
- package/lib/module/components/IconButton/styles.js.map +1 -1
- package/lib/module/components/Input/styles.js +7 -6
- package/lib/module/components/Input/styles.js.map +1 -1
- package/lib/module/components/Link/index.js +25 -6
- package/lib/module/components/Link/index.js.map +1 -1
- package/lib/module/components/Link/styles.js +55 -6
- package/lib/module/components/Link/styles.js.map +1 -1
- package/lib/module/components/ListItem/index.js +3 -25
- package/lib/module/components/ListItem/index.js.map +1 -1
- package/lib/module/components/ListItem/styles.js +30 -58
- package/lib/module/components/ListItem/styles.js.map +1 -1
- package/lib/module/components/ProgressSegmented/index.js +25 -11
- package/lib/module/components/ProgressSegmented/index.js.map +1 -1
- package/lib/module/components/Radio/index.js +164 -0
- package/lib/module/components/Radio/index.js.map +1 -0
- package/lib/module/components/Radio/styles.js +27 -0
- package/lib/module/components/Radio/styles.js.map +1 -0
- package/lib/module/components/ScopedTheme/index.js +19 -0
- package/lib/module/components/ScopedTheme/index.js.map +1 -0
- package/lib/module/components/Select/SelectTriggerHost.web.js +4 -0
- package/lib/module/components/Select/SelectTriggerHost.web.js.map +1 -1
- package/lib/module/components/Select/index.js +10 -4
- package/lib/module/components/Select/index.js.map +1 -1
- package/lib/module/components/Select/styles.js +18 -21
- package/lib/module/components/Select/styles.js.map +1 -1
- package/lib/module/components/Text/styles.js +2 -2
- package/lib/module/components/Text/styles.js.map +1 -1
- package/lib/module/components/Tile/index.js +243 -0
- package/lib/module/components/Tile/index.js.map +1 -0
- package/lib/module/components/Tile/styles.js +48 -0
- package/lib/module/components/Tile/styles.js.map +1 -0
- package/lib/module/components/index.js +3 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/figma/AlertDialog.Description.figma.js +14 -0
- package/lib/module/figma/AlertDialog.Description.figma.js.map +1 -0
- package/lib/module/figma/AlertDialog.Footer.figma.js +35 -0
- package/lib/module/figma/AlertDialog.Footer.figma.js.map +1 -0
- package/lib/module/figma/AlertDialog.Header.figma.js +22 -0
- package/lib/module/figma/AlertDialog.Header.figma.js.map +1 -0
- package/lib/module/figma/AlertDialog.Text.figma.js +14 -0
- package/lib/module/figma/AlertDialog.Text.figma.js.map +1 -0
- package/lib/module/figma/AlertDialog.Title.figma.js +21 -0
- package/lib/module/figma/AlertDialog.Title.figma.js.map +1 -0
- package/lib/module/figma/AlertDialog.figma.js +37 -0
- package/lib/module/figma/AlertDialog.figma.js.map +1 -0
- package/lib/module/figma/Avatar.figma.js +51 -0
- package/lib/module/figma/Avatar.figma.js.map +1 -0
- package/lib/module/figma/Button.figma.js +28 -15
- package/lib/module/figma/Button.figma.js.map +1 -1
- package/lib/module/figma/CLAUDE.md +30 -0
- package/lib/module/figma/Card.Header.figma.js +22 -0
- package/lib/module/figma/Card.Header.figma.js.map +1 -0
- package/lib/module/figma/Card.figma.js +36 -0
- package/lib/module/figma/Card.figma.js.map +1 -0
- package/lib/module/figma/Checkbox.figma.js +49 -0
- package/lib/module/figma/Checkbox.figma.js.map +1 -0
- package/lib/module/figma/Chip.figma.js +62 -0
- package/lib/module/figma/Chip.figma.js.map +1 -0
- package/lib/module/figma/Dialog.Description.figma.js +14 -0
- package/lib/module/figma/Dialog.Description.figma.js.map +1 -0
- package/lib/module/figma/Dialog.Footer.figma.js +24 -0
- package/lib/module/figma/Dialog.Footer.figma.js.map +1 -0
- package/lib/module/figma/Dialog.Header.figma.js +23 -0
- package/lib/module/figma/Dialog.Header.figma.js.map +1 -0
- package/lib/module/figma/Dialog.Text.figma.js +14 -0
- package/lib/module/figma/Dialog.Text.figma.js.map +1 -0
- package/lib/module/figma/Dialog.Title.figma.js +21 -0
- package/lib/module/figma/Dialog.Title.figma.js.map +1 -0
- package/lib/module/figma/Dialog.figma.js +45 -0
- package/lib/module/figma/Dialog.figma.js.map +1 -0
- package/lib/module/figma/Field.Input.figma.js +51 -0
- package/lib/module/figma/Field.Input.figma.js.map +1 -0
- package/lib/module/figma/Field.Select.figma.js +51 -0
- package/lib/module/figma/Field.Select.figma.js.map +1 -0
- package/lib/module/figma/Heading.figma.js +24 -0
- package/lib/module/figma/Heading.figma.js.map +1 -0
- package/lib/module/figma/Icon.figma.js +14 -0
- package/lib/module/figma/Icon.figma.js.map +1 -0
- package/lib/module/figma/IconButton.figma.js +41 -0
- package/lib/module/figma/IconButton.figma.js.map +1 -0
- package/lib/module/figma/Input.figma.js +46 -0
- package/lib/module/figma/Input.figma.js.map +1 -0
- package/lib/module/figma/Link.figma.js +24 -0
- package/lib/module/figma/Link.figma.js.map +1 -0
- package/lib/module/figma/ListItem.Description.figma.js +17 -0
- package/lib/module/figma/ListItem.Description.figma.js.map +1 -0
- package/lib/module/figma/ListItem.LeadingSlot.figma.js +18 -0
- package/lib/module/figma/ListItem.LeadingSlot.figma.js.map +1 -0
- package/lib/module/figma/ListItem.Meta.figma.js +17 -0
- package/lib/module/figma/ListItem.Meta.figma.js.map +1 -0
- package/lib/module/figma/ListItem.SectionHeader.figma.js +18 -0
- package/lib/module/figma/ListItem.SectionHeader.figma.js.map +1 -0
- package/lib/module/figma/ListItem.Title.figma.js +17 -0
- package/lib/module/figma/ListItem.Title.figma.js.map +1 -0
- package/lib/module/figma/ListItem.TrailingSlot.figma.js +18 -0
- package/lib/module/figma/ListItem.TrailingSlot.figma.js.map +1 -0
- package/lib/module/figma/ListItem.figma.js +44 -0
- package/lib/module/figma/ListItem.figma.js.map +1 -0
- package/lib/module/figma/ProgressSegmented.figma.js +33 -0
- package/lib/module/figma/ProgressSegmented.figma.js.map +1 -0
- package/lib/module/figma/Radio.figma.js +34 -0
- package/lib/module/figma/Radio.figma.js.map +1 -0
- package/lib/module/figma/Select.figma.js +47 -0
- package/lib/module/figma/Select.figma.js.map +1 -0
- package/lib/module/figma/Text.figma.js +26 -0
- package/lib/module/figma/Text.figma.js.map +1 -0
- package/lib/module/figma/icons.figma.batch.js +22 -0
- package/lib/module/figma/icons.figma.batch.js.map +1 -0
- package/lib/module/figma/icons.figma.batch.json +17705 -0
- package/lib/module/hooks/index.js +4 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/useForgeBottomTabScreenOptions.js +242 -0
- package/lib/module/hooks/useForgeBottomTabScreenOptions.js.map +1 -0
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/metro/withCdxMetroConfig.js +3 -17
- package/lib/module/metro/withCdxMetroConfig.js.map +1 -1
- package/lib/module/metro/withForgeMetroConfig.js +20 -0
- package/lib/module/metro/withForgeMetroConfig.js.map +1 -0
- package/lib/module/navigation/forgeTabIcon.js +39 -0
- package/lib/module/navigation/forgeTabIcon.js.map +1 -0
- package/lib/module/navigation/forgeTabIcon.native.js +31 -0
- package/lib/module/navigation/forgeTabIcon.native.js.map +1 -0
- package/lib/module/navigation/index.js +4 -0
- package/lib/module/navigation/index.js.map +1 -0
- package/lib/module/navigation/types.js +36 -0
- package/lib/module/navigation/types.js.map +1 -0
- package/lib/module/styles/primitives.js +43 -6
- package/lib/module/styles/primitives.js.map +1 -1
- package/lib/typescript/components/AlertDialog/index.d.ts +3 -2
- package/lib/typescript/components/AlertDialog/index.d.ts.map +1 -1
- package/lib/typescript/components/Avatar/styles.d.ts +4 -4
- package/lib/typescript/components/Avatar/styles.d.ts.map +1 -1
- package/lib/typescript/components/Button/index.d.ts +13 -1
- package/lib/typescript/components/Button/index.d.ts.map +1 -1
- package/lib/typescript/components/Button/styles.d.ts +5 -3
- package/lib/typescript/components/Button/styles.d.ts.map +1 -1
- package/lib/typescript/components/Card/index.d.ts +4 -3
- package/lib/typescript/components/Card/index.d.ts.map +1 -1
- package/lib/typescript/components/Card/styles.d.ts +13 -3
- package/lib/typescript/components/Card/styles.d.ts.map +1 -1
- package/lib/typescript/components/Checkbox/index.d.ts +1 -2
- package/lib/typescript/components/Checkbox/index.d.ts.map +1 -1
- package/lib/typescript/components/Checkbox/styles.d.ts +4 -14
- package/lib/typescript/components/Checkbox/styles.d.ts.map +1 -1
- package/lib/typescript/components/Chip/index.d.ts +19 -6
- package/lib/typescript/components/Chip/index.d.ts.map +1 -1
- package/lib/typescript/components/Chip/styles.d.ts +13 -4
- package/lib/typescript/components/Chip/styles.d.ts.map +1 -1
- package/lib/typescript/components/Dialog/index.d.ts +16 -10
- package/lib/typescript/components/Dialog/index.d.ts.map +1 -1
- package/lib/typescript/components/Dialog/styles.d.ts +16 -5
- package/lib/typescript/components/Dialog/styles.d.ts.map +1 -1
- package/lib/typescript/components/Field/FieldLabel.web.d.ts +2 -2
- package/lib/typescript/components/Field/FieldLabel.web.d.ts.map +1 -1
- package/lib/typescript/components/Field/index.d.ts.map +1 -1
- package/lib/typescript/components/Field/styles.d.ts.map +1 -1
- package/lib/typescript/components/Heading/styles.d.ts +1 -1
- package/lib/typescript/components/Icon/index.d.ts +5 -5
- package/lib/typescript/components/Icon/index.d.ts.map +1 -1
- package/lib/typescript/components/IconButton/index.d.ts +3 -3
- package/lib/typescript/components/IconButton/index.d.ts.map +1 -1
- package/lib/typescript/components/IconButton/styles.d.ts +6 -2
- package/lib/typescript/components/IconButton/styles.d.ts.map +1 -1
- package/lib/typescript/components/Input/styles.d.ts.map +1 -1
- package/lib/typescript/components/Link/index.d.ts +2 -2
- package/lib/typescript/components/Link/index.d.ts.map +1 -1
- package/lib/typescript/components/Link/styles.d.ts +9 -2
- package/lib/typescript/components/Link/styles.d.ts.map +1 -1
- package/lib/typescript/components/ListItem/index.d.ts.map +1 -1
- package/lib/typescript/components/ListItem/styles.d.ts +3 -10
- package/lib/typescript/components/ListItem/styles.d.ts.map +1 -1
- package/lib/typescript/components/ProgressSegmented/index.d.ts +14 -3
- package/lib/typescript/components/ProgressSegmented/index.d.ts.map +1 -1
- package/lib/typescript/components/Radio/index.d.ts +40 -0
- package/lib/typescript/components/Radio/index.d.ts.map +1 -0
- package/lib/typescript/components/Radio/styles.d.ts +8 -0
- package/lib/typescript/components/Radio/styles.d.ts.map +1 -0
- package/lib/typescript/components/ScopedTheme/index.d.ts +16 -0
- package/lib/typescript/components/ScopedTheme/index.d.ts.map +1 -0
- package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts +3 -0
- package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts.map +1 -1
- package/lib/typescript/components/Select/index.d.ts +1 -1
- package/lib/typescript/components/Select/index.d.ts.map +1 -1
- package/lib/typescript/components/Select/styles.d.ts.map +1 -1
- package/lib/typescript/components/Stack/styles.d.ts +2 -2
- package/lib/typescript/components/Text/styles.d.ts +1 -1
- package/lib/typescript/components/Tile/index.d.ts +70 -0
- package/lib/typescript/components/Tile/index.d.ts.map +1 -0
- package/lib/typescript/components/Tile/styles.d.ts +18 -0
- package/lib/typescript/components/Tile/styles.d.ts.map +1 -0
- package/lib/typescript/components/index.d.ts +3 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/figma/AlertDialog.Description.figma.d.ts +8 -0
- package/lib/typescript/figma/AlertDialog.Description.figma.d.ts.map +1 -0
- package/lib/typescript/figma/AlertDialog.Footer.figma.d.ts +8 -0
- package/lib/typescript/figma/AlertDialog.Footer.figma.d.ts.map +1 -0
- package/lib/typescript/figma/AlertDialog.Header.figma.d.ts +8 -0
- package/lib/typescript/figma/AlertDialog.Header.figma.d.ts.map +1 -0
- package/lib/typescript/figma/AlertDialog.Text.figma.d.ts +8 -0
- package/lib/typescript/figma/AlertDialog.Text.figma.d.ts.map +1 -0
- package/lib/typescript/figma/AlertDialog.Title.figma.d.ts +8 -0
- package/lib/typescript/figma/AlertDialog.Title.figma.d.ts.map +1 -0
- package/lib/typescript/figma/AlertDialog.figma.d.ts +8 -0
- package/lib/typescript/figma/AlertDialog.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Avatar.figma.d.ts +11 -0
- package/lib/typescript/figma/Avatar.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Button.figma.d.ts.map +1 -1
- package/lib/typescript/figma/Card.Header.figma.d.ts +8 -0
- package/lib/typescript/figma/Card.Header.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Card.figma.d.ts +8 -0
- package/lib/typescript/figma/Card.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Checkbox.figma.d.ts +8 -0
- package/lib/typescript/figma/Checkbox.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Chip.figma.d.ts +8 -0
- package/lib/typescript/figma/Chip.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Dialog.Description.figma.d.ts +8 -0
- package/lib/typescript/figma/Dialog.Description.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Dialog.Footer.figma.d.ts +8 -0
- package/lib/typescript/figma/Dialog.Footer.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Dialog.Header.figma.d.ts +8 -0
- package/lib/typescript/figma/Dialog.Header.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Dialog.Text.figma.d.ts +8 -0
- package/lib/typescript/figma/Dialog.Text.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Dialog.Title.figma.d.ts +8 -0
- package/lib/typescript/figma/Dialog.Title.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Dialog.figma.d.ts +8 -0
- package/lib/typescript/figma/Dialog.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Field.Input.figma.d.ts +8 -0
- package/lib/typescript/figma/Field.Input.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Field.Select.figma.d.ts +8 -0
- package/lib/typescript/figma/Field.Select.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Heading.figma.d.ts +8 -0
- package/lib/typescript/figma/Heading.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Icon.figma.d.ts +8 -0
- package/lib/typescript/figma/Icon.figma.d.ts.map +1 -0
- package/lib/typescript/figma/IconButton.figma.d.ts +8 -0
- package/lib/typescript/figma/IconButton.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Input.figma.d.ts +8 -0
- package/lib/typescript/figma/Input.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Link.figma.d.ts +8 -0
- package/lib/typescript/figma/Link.figma.d.ts.map +1 -0
- package/lib/typescript/figma/ListItem.Description.figma.d.ts +11 -0
- package/lib/typescript/figma/ListItem.Description.figma.d.ts.map +1 -0
- package/lib/typescript/figma/ListItem.LeadingSlot.figma.d.ts +8 -0
- package/lib/typescript/figma/ListItem.LeadingSlot.figma.d.ts.map +1 -0
- package/lib/typescript/figma/ListItem.Meta.figma.d.ts +11 -0
- package/lib/typescript/figma/ListItem.Meta.figma.d.ts.map +1 -0
- package/lib/typescript/figma/ListItem.SectionHeader.figma.d.ts +8 -0
- package/lib/typescript/figma/ListItem.SectionHeader.figma.d.ts.map +1 -0
- package/lib/typescript/figma/ListItem.Title.figma.d.ts +11 -0
- package/lib/typescript/figma/ListItem.Title.figma.d.ts.map +1 -0
- package/lib/typescript/figma/ListItem.TrailingSlot.figma.d.ts +8 -0
- package/lib/typescript/figma/ListItem.TrailingSlot.figma.d.ts.map +1 -0
- package/lib/typescript/figma/ListItem.figma.d.ts +8 -0
- package/lib/typescript/figma/ListItem.figma.d.ts.map +1 -0
- package/lib/typescript/figma/ProgressSegmented.figma.d.ts +8 -0
- package/lib/typescript/figma/ProgressSegmented.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Radio.figma.d.ts +8 -0
- package/lib/typescript/figma/Radio.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Select.figma.d.ts +8 -0
- package/lib/typescript/figma/Select.figma.d.ts.map +1 -0
- package/lib/typescript/figma/Text.figma.d.ts +11 -0
- package/lib/typescript/figma/Text.figma.d.ts.map +1 -0
- package/lib/typescript/figma/icons.figma.batch.d.ts +14 -0
- package/lib/typescript/figma/icons.figma.batch.d.ts.map +1 -0
- package/lib/typescript/hooks/index.d.ts +2 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -0
- package/lib/typescript/hooks/useForgeBottomTabScreenOptions.d.ts +137 -0
- package/lib/typescript/hooks/useForgeBottomTabScreenOptions.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/metro/withCdxMetroConfig.d.ts +4 -18
- package/lib/typescript/metro/withCdxMetroConfig.d.ts.map +1 -1
- package/lib/typescript/metro/withForgeMetroConfig.d.ts +19 -0
- package/lib/typescript/metro/withForgeMetroConfig.d.ts.map +1 -0
- package/lib/typescript/navigation/forgeTabIcon.d.ts +27 -0
- package/lib/typescript/navigation/forgeTabIcon.d.ts.map +1 -0
- package/lib/typescript/navigation/forgeTabIcon.native.d.ts +15 -0
- package/lib/typescript/navigation/forgeTabIcon.native.d.ts.map +1 -0
- package/lib/typescript/navigation/index.d.ts +4 -0
- package/lib/typescript/navigation/index.d.ts.map +1 -0
- package/lib/typescript/navigation/types.d.ts +37 -0
- package/lib/typescript/navigation/types.d.ts.map +1 -0
- package/lib/typescript/styles/primitives.d.ts +38 -0
- package/lib/typescript/styles/primitives.d.ts.map +1 -1
- package/package.json +10 -8
- package/src/components/AlertDialog/index.tsx +8 -6
- package/src/components/Avatar/index.tsx +1 -1
- package/src/components/Avatar/styles.ts +49 -34
- package/src/components/Button/index.tsx +39 -5
- package/src/components/Button/styles.ts +56 -27
- package/src/components/CLAUDE.md +90 -0
- package/src/components/Card/index.tsx +41 -16
- package/src/components/Card/styles.ts +42 -15
- package/src/components/Checkbox/index.tsx +8 -19
- package/src/components/Checkbox/styles.ts +84 -86
- package/src/components/Chip/index.tsx +104 -27
- package/src/components/Chip/styles.ts +232 -18
- package/src/components/Dialog/index.tsx +95 -29
- package/src/components/Dialog/styles.ts +72 -30
- package/src/components/Field/FieldLabel.web.tsx +1 -1
- package/src/components/Field/index.tsx +10 -3
- package/src/components/Field/styles.ts +5 -4
- package/src/components/Heading/styles.ts +1 -1
- package/src/components/Icon/index.tsx +6 -7
- package/src/components/IconButton/index.tsx +7 -6
- package/src/components/IconButton/styles.ts +136 -10
- package/src/components/Input/styles.ts +15 -9
- package/src/components/Link/index.tsx +22 -9
- package/src/components/Link/styles.ts +49 -9
- package/src/components/ListItem/index.tsx +8 -23
- package/src/components/ListItem/styles.ts +50 -81
- package/src/components/ProgressSegmented/index.tsx +50 -14
- package/src/components/Radio/index.tsx +192 -0
- package/src/components/Radio/styles.ts +59 -0
- package/src/components/ScopedTheme/index.tsx +17 -0
- package/src/components/Select/SelectTriggerHost.web.tsx +8 -1
- package/src/components/Select/index.tsx +9 -4
- package/src/components/Select/styles.ts +49 -51
- package/src/components/Text/styles.ts +2 -2
- package/src/components/Tile/index.tsx +296 -0
- package/src/components/Tile/styles.ts +82 -0
- package/src/components/index.ts +3 -0
- package/src/hooks/index.ts +5 -0
- package/src/hooks/useForgeBottomTabScreenOptions.ts +245 -0
- package/src/index.ts +2 -0
- package/src/metro/withCdxMetroConfig.ts +4 -29
- package/src/metro/withForgeMetroConfig.ts +29 -0
- package/src/navigation/forgeTabIcon.native.ts +36 -0
- package/src/navigation/forgeTabIcon.ts +33 -0
- package/src/navigation/index.ts +3 -0
- package/src/navigation/types.ts +54 -0
- package/src/styles/primitives.ts +43 -6
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "mergeForgeBottomTabScreenOptions", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _useForgeBottomTabScreenOptions.mergeForgeBottomTabScreenOptions;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "useForgeBottomTabScreenOptions", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _useForgeBottomTabScreenOptions.useForgeBottomTabScreenOptions;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
var _useForgeBottomTabScreenOptions = require("./useForgeBottomTabScreenOptions");
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_useForgeBottomTabScreenOptions","require"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,+BAAA,GAAAC,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.mergeForgeBottomTabScreenOptions = mergeForgeBottomTabScreenOptions;
|
|
7
|
+
exports.useForgeBottomTabScreenOptions = useForgeBottomTabScreenOptions;
|
|
8
|
+
var _uniwind = require("uniwind");
|
|
9
|
+
/**
|
|
10
|
+
* useForgeBottomTabScreenOptions
|
|
11
|
+
*
|
|
12
|
+
* Returns a `screenOptions` object for **React Navigation bottom tab navigators**
|
|
13
|
+
* (`@react-navigation/bottom-tabs` v7+), populated with CDX UI design-system
|
|
14
|
+
* token values.
|
|
15
|
+
*
|
|
16
|
+
* CDX UI does not import `@react-navigation` — the consumer passes the returned
|
|
17
|
+
* object to their own navigator. This keeps the dependency out of
|
|
18
|
+
* `@cdx-ui/components` and works with any React Navigation tab variant:
|
|
19
|
+
* `createNativeBottomTabNavigator` (iOS/Android) or `createBottomTabNavigator`
|
|
20
|
+
* (web/JS).
|
|
21
|
+
*
|
|
22
|
+
* **Not compatible with:**
|
|
23
|
+
* - Expo Router `<NativeTabs>` — uses different prop names
|
|
24
|
+
* - React Router or DOM tab components — these are not React Navigation
|
|
25
|
+
*
|
|
26
|
+
* ## Basic usage
|
|
27
|
+
*
|
|
28
|
+
* ```tsx
|
|
29
|
+
* import { useForgeBottomTabScreenOptions } from '@cdx-ui/components';
|
|
30
|
+
* import { createNativeBottomTabNavigator } from '@react-navigation/bottom-tabs/unstable';
|
|
31
|
+
*
|
|
32
|
+
* const Tab = createNativeBottomTabNavigator<AppTabs>();
|
|
33
|
+
*
|
|
34
|
+
* function AppTabs() {
|
|
35
|
+
* const screenOptions = useForgeBottomTabScreenOptions();
|
|
36
|
+
* return (
|
|
37
|
+
* <Tab.Navigator screenOptions={screenOptions}>
|
|
38
|
+
* <Tab.Screen name="Home" component={HomeScreen} />
|
|
39
|
+
* </Tab.Navigator>
|
|
40
|
+
* );
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* ## Overriding individual tokens
|
|
45
|
+
*
|
|
46
|
+
* Spread the returned object and override only the keys you need.
|
|
47
|
+
* Nested style objects (`tabBarLabelStyle`, `tabBarStyle`, `tabBarBadgeStyle`)
|
|
48
|
+
* must be spread individually to preserve unrelated DS defaults:
|
|
49
|
+
*
|
|
50
|
+
* ```tsx
|
|
51
|
+
* const dsOptions = useForgeBottomTabScreenOptions();
|
|
52
|
+
* const screenOptions = {
|
|
53
|
+
* ...dsOptions,
|
|
54
|
+
* tabBarActiveTintColor: '#custom',
|
|
55
|
+
* tabBarLabelStyle: { ...dsOptions.tabBarLabelStyle, fontFamily: 'MyFont' },
|
|
56
|
+
* };
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* ## Token variable names
|
|
60
|
+
*
|
|
61
|
+
* | screenOption | CSS variable |
|
|
62
|
+
* | ---------------------------------- | ---------------------------------- |
|
|
63
|
+
* | tabBarActiveTintColor | --color-content-action |
|
|
64
|
+
* | tabBarInactiveTintColor | --color-content-secondary |
|
|
65
|
+
* | tabBarStyle.backgroundColor | --color-surface-primary |
|
|
66
|
+
* | tabBarLabelStyle.fontFamily | --font-body |
|
|
67
|
+
* | tabBarLabelStyle.fontSize | --text-xs (via `text-xs` class) |
|
|
68
|
+
* | tabBarLabelStyle.fontWeight | --font-weight-medium |
|
|
69
|
+
* | tabBarBadgeStyle.backgroundColor | --color-surface-danger-strong |
|
|
70
|
+
*
|
|
71
|
+
* ## Platform notes
|
|
72
|
+
*
|
|
73
|
+
* - `tabBarInactiveTintColor` has no effect on iOS — inactive items always use
|
|
74
|
+
* system grey.
|
|
75
|
+
* - `tabBarStyle.backgroundColor` is ignored on iOS 26+ (liquid glass takes
|
|
76
|
+
* over). It is honoured on iOS ≤18 and all Android versions.
|
|
77
|
+
* - The hook resolves CSS variables via Uniwind's `useCSSVariable`. If the
|
|
78
|
+
* Uniwind runtime is not set up (e.g. in a plain Jest test without a CSS
|
|
79
|
+
* context), each variable resolves to `undefined` and the hardcoded fallback
|
|
80
|
+
* is used instead — fallbacks intentionally match the CDX UI light-theme
|
|
81
|
+
* values.
|
|
82
|
+
* - `tabBarLabelStyle.fontSize` is resolved via Uniwind's
|
|
83
|
+
* `useResolveClassNames('text-xs')` rather than reading the rem-valued
|
|
84
|
+
* `--text-xs` variable directly. React Navigation v7 requires a numeric
|
|
85
|
+
* `fontSize`, and letting Uniwind resolve the class means the rem→px
|
|
86
|
+
* conversion uses the consumer's configured rem base (default 16px,
|
|
87
|
+
* overridable via the `polyfills.rem` Metro option) instead of a constant
|
|
88
|
+
* hardcoded here.
|
|
89
|
+
*/
|
|
90
|
+
|
|
91
|
+
// ── Types ────────────────────────────────────────────────────────────────────
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* The `screenOptions` shape returned by `useForgeBottomTabScreenOptions`.
|
|
95
|
+
*
|
|
96
|
+
* These are concrete types (not the broad `StyleProp<…>` React Navigation
|
|
97
|
+
* uses internally) so consumers get precise IDE completion. The compile-time
|
|
98
|
+
* drift guard below ensures this type stays assignable to
|
|
99
|
+
* `BottomTabNavigationOptions` — the TypeScript compiler will error if CDX UI
|
|
100
|
+
* adds a key or value that React Navigation no longer accepts.
|
|
101
|
+
*
|
|
102
|
+
* Pass directly as `screenOptions` on a `createNativeBottomTabNavigator` or
|
|
103
|
+
* `createBottomTabNavigator` navigator, or spread and override individual keys.
|
|
104
|
+
*/
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Compile-time drift guard.
|
|
108
|
+
*
|
|
109
|
+
* `ForgeReactNavigationBottomTabScreenOptions` must be assignable to
|
|
110
|
+
* `BottomTabNavigationOptions`. TypeScript checks this assignment at build
|
|
111
|
+
* time — if React Navigation removes or incompatibly narrows one of our keys,
|
|
112
|
+
* this line becomes a type error before it reaches consumers.
|
|
113
|
+
*
|
|
114
|
+
* The `null as unknown as ...` cast keeps the runtime value `null` so tree-
|
|
115
|
+
* shakers eliminate the variable from the final bundle entirely.
|
|
116
|
+
*/
|
|
117
|
+
|
|
118
|
+
const _rnDriftGuard =
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
120
|
+
null;
|
|
121
|
+
|
|
122
|
+
// ── Fallbacks ────────────────────────────────────────────────────────────────
|
|
123
|
+
//
|
|
124
|
+
// Resolved light-theme values for each token. Used when useCSSVariable returns
|
|
125
|
+
// undefined (no Uniwind CSS context in scope, e.g. Jest).
|
|
126
|
+
|
|
127
|
+
const FALLBACKS = {
|
|
128
|
+
activeTintColor: '#346099',
|
|
129
|
+
// --color-brand-700 (--color-content-action)
|
|
130
|
+
inactiveTintColor: '#4a4c4f',
|
|
131
|
+
// --color-base-800 (--color-content-secondary)
|
|
132
|
+
fontFamily: 'Inter',
|
|
133
|
+
// --font-sans (--font-body)
|
|
134
|
+
fontSize: 12,
|
|
135
|
+
// px (--text-xs)
|
|
136
|
+
fontWeight: '500',
|
|
137
|
+
// (--font-weight-medium)
|
|
138
|
+
backgroundColor: '#ffffff',
|
|
139
|
+
// --color-white (--color-surface-primary)
|
|
140
|
+
badgeBackgroundColor: '#c10007' // --color-red-700 (--color-surface-danger-strong)
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Coerces a Uniwind-resolved `fontSize` to a finite pixel number, falling
|
|
145
|
+
* back when the style could not be resolved (e.g. no Uniwind runtime in Jest).
|
|
146
|
+
*
|
|
147
|
+
* `useResolveClassNames('text-xs')` performs the rem→px conversion using
|
|
148
|
+
* Uniwind's configured rem base, so the value is already numeric on native.
|
|
149
|
+
* React Native Web may surface string values; unit-less and `px` strings are
|
|
150
|
+
* accepted, but anything else (`rem`, `em`, `%`) falls back rather than
|
|
151
|
+
* guessing a rem base here.
|
|
152
|
+
*/
|
|
153
|
+
function toPx(value, fallbackPx) {
|
|
154
|
+
if (typeof value === 'number') {
|
|
155
|
+
return Number.isFinite(value) ? value : fallbackPx;
|
|
156
|
+
}
|
|
157
|
+
if (typeof value !== 'string') return fallbackPx;
|
|
158
|
+
const trimmed = value.trim();
|
|
159
|
+
if (!/^-?\d*\.?\d+(px)?$/.test(trimmed)) return fallbackPx;
|
|
160
|
+
return parseFloat(trimmed);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Coerces a Uniwind `useCSSVariable` fontWeight value to a string.
|
|
165
|
+
*
|
|
166
|
+
* `--font-weight-*` variables are emitted as unit-less numbers (e.g. `500`),
|
|
167
|
+
* and `useCSSVariable` may return them as numbers. React Native's `TextStyle`
|
|
168
|
+
* accepts numeric fontWeight, but react-native-screens' native bottom tabs
|
|
169
|
+
* declare the corresponding host prop (`tabBarItemTitleFontWeight`) as a
|
|
170
|
+
* String — passing a number crashes Android Fabric with
|
|
171
|
+
* "java.lang.Double cannot be cast to java.lang.String".
|
|
172
|
+
*/
|
|
173
|
+
function toFontWeight(value, fallback) {
|
|
174
|
+
if (value === undefined) return fallback;
|
|
175
|
+
return String(value);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// ── Hook ─────────────────────────────────────────────────────────────────────
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Returns a `screenOptions` object for **React Navigation bottom tab
|
|
182
|
+
* navigators** (`@react-navigation/bottom-tabs` v7+), populated with CDX UI
|
|
183
|
+
* design-system token values.
|
|
184
|
+
*
|
|
185
|
+
* Must be called inside a React component or custom hook (React hook rules
|
|
186
|
+
* apply).
|
|
187
|
+
*/
|
|
188
|
+
/**
|
|
189
|
+
* Deep-merges consumer overrides into a base `ForgeReactNavigationBottomTabScreenOptions`
|
|
190
|
+
* object. Nested style objects (`tabBarLabelStyle`, `tabBarStyle`,
|
|
191
|
+
* `tabBarBadgeStyle`) are merged property-by-property so consumers can override
|
|
192
|
+
* individual style properties without losing unrelated DS defaults.
|
|
193
|
+
*
|
|
194
|
+
* Use with `useForgeBottomTabScreenOptions` to apply targeted overrides:
|
|
195
|
+
*
|
|
196
|
+
* ```tsx
|
|
197
|
+
* const dsOptions = useForgeBottomTabScreenOptions();
|
|
198
|
+
* const screenOptions = mergeForgeBottomTabScreenOptions(dsOptions, {
|
|
199
|
+
* tabBarActiveTintColor: '#custom',
|
|
200
|
+
* tabBarLabelStyle: { fontFamily: 'MyFont' }, // fontSize + fontWeight preserved
|
|
201
|
+
* });
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
function mergeForgeBottomTabScreenOptions(base, overrides) {
|
|
205
|
+
return {
|
|
206
|
+
...base,
|
|
207
|
+
...overrides,
|
|
208
|
+
tabBarLabelStyle: {
|
|
209
|
+
...base.tabBarLabelStyle,
|
|
210
|
+
...overrides.tabBarLabelStyle
|
|
211
|
+
},
|
|
212
|
+
tabBarStyle: {
|
|
213
|
+
...base.tabBarStyle,
|
|
214
|
+
...overrides.tabBarStyle
|
|
215
|
+
},
|
|
216
|
+
tabBarBadgeStyle: {
|
|
217
|
+
...base.tabBarBadgeStyle,
|
|
218
|
+
...overrides.tabBarBadgeStyle
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
function useForgeBottomTabScreenOptions() {
|
|
223
|
+
const activeTintColor = (0, _uniwind.useCSSVariable)('--color-content-action');
|
|
224
|
+
const inactiveTintColor = (0, _uniwind.useCSSVariable)('--color-content-secondary');
|
|
225
|
+
const fontFamily = (0, _uniwind.useCSSVariable)('--font-body');
|
|
226
|
+
const labelTextStyle = (0, _uniwind.useResolveClassNames)('text-xs');
|
|
227
|
+
const fontWeight = (0, _uniwind.useCSSVariable)('--font-weight-medium');
|
|
228
|
+
const backgroundColor = (0, _uniwind.useCSSVariable)('--color-surface-primary');
|
|
229
|
+
const badgeBackgroundColor = (0, _uniwind.useCSSVariable)('--color-surface-danger-strong');
|
|
230
|
+
return {
|
|
231
|
+
tabBarActiveTintColor: String(activeTintColor ?? FALLBACKS.activeTintColor),
|
|
232
|
+
tabBarInactiveTintColor: String(inactiveTintColor ?? FALLBACKS.inactiveTintColor),
|
|
233
|
+
tabBarStyle: {
|
|
234
|
+
backgroundColor: String(backgroundColor ?? FALLBACKS.backgroundColor)
|
|
235
|
+
},
|
|
236
|
+
tabBarLabelStyle: {
|
|
237
|
+
fontFamily: String(fontFamily ?? FALLBACKS.fontFamily),
|
|
238
|
+
fontSize: toPx(labelTextStyle?.fontSize, FALLBACKS.fontSize),
|
|
239
|
+
fontWeight: toFontWeight(fontWeight, FALLBACKS.fontWeight)
|
|
240
|
+
},
|
|
241
|
+
tabBarBadgeStyle: {
|
|
242
|
+
backgroundColor: String(badgeBackgroundColor ?? FALLBACKS.badgeBackgroundColor)
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=useForgeBottomTabScreenOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_uniwind","require","_rnDriftGuard","FALLBACKS","activeTintColor","inactiveTintColor","fontFamily","fontSize","fontWeight","backgroundColor","badgeBackgroundColor","toPx","value","fallbackPx","Number","isFinite","trimmed","trim","test","parseFloat","toFontWeight","fallback","undefined","String","mergeForgeBottomTabScreenOptions","base","overrides","tabBarLabelStyle","tabBarStyle","tabBarBadgeStyle","useForgeBottomTabScreenOptions","useCSSVariable","labelTextStyle","useResolveClassNames","tabBarActiveTintColor","tabBarInactiveTintColor"],"sourceRoot":"../../../src","sources":["hooks/useForgeBottomTabScreenOptions.ts"],"mappings":";;;;;;;AAkFA,IAAAA,QAAA,GAAAC,OAAA;AAlFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,aAAyC;AAC7C;AACA,IAAyD;;AAE3D;AACA;AACA;AACA;;AAEA,MAAMC,SAAS,GAAG;EAChBC,eAAe,EAAE,SAAS;EAAE;EAC5BC,iBAAiB,EAAE,SAAS;EAAE;EAC9BC,UAAU,EAAE,OAAO;EAAE;EACrBC,QAAQ,EAAE,EAAE;EAAE;EACdC,UAAU,EAAE,KAAgC;EAAE;EAC9CC,eAAe,EAAE,SAAS;EAAE;EAC5BC,oBAAoB,EAAE,SAAS,CAAE;AACnC,CAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,IAAIA,CAACC,KAAkC,EAAEC,UAAkB,EAAU;EAC5E,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAOE,MAAM,CAACC,QAAQ,CAACH,KAAK,CAAC,GAAGA,KAAK,GAAGC,UAAU;EACpD;EACA,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE,OAAOC,UAAU;EAChD,MAAMG,OAAO,GAAGJ,KAAK,CAACK,IAAI,CAAC,CAAC;EAC5B,IAAI,CAAC,oBAAoB,CAACC,IAAI,CAACF,OAAO,CAAC,EAAE,OAAOH,UAAU;EAC1D,OAAOM,UAAU,CAACH,OAAO,CAAC;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASI,YAAYA,CACnBR,KAAkC,EAClCS,QAAiC,EACR;EACzB,IAAIT,KAAK,KAAKU,SAAS,EAAE,OAAOD,QAAQ;EACxC,OAAOE,MAAM,CAACX,KAAK,CAAC;AACtB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASY,gCAAgCA,CAC9CC,IAAgD,EAChDC,SAA8D,EAClB;EAC5C,OAAO;IACL,GAAGD,IAAI;IACP,GAAGC,SAAS;IACZC,gBAAgB,EAAE;MAAE,GAAGF,IAAI,CAACE,gBAAgB;MAAE,GAAGD,SAAS,CAACC;IAAiB,CAAC;IAC7EC,WAAW,EAAE;MAAE,GAAGH,IAAI,CAACG,WAAW;MAAE,GAAGF,SAAS,CAACE;IAAY,CAAC;IAC9DC,gBAAgB,EAAE;MAAE,GAAGJ,IAAI,CAACI,gBAAgB;MAAE,GAAGH,SAAS,CAACG;IAAiB;EAC9E,CAAC;AACH;AAEO,SAASC,8BAA8BA,CAAA,EAA+C;EAC3F,MAAM1B,eAAe,GAAG,IAAA2B,uBAAc,EAAC,wBAAwB,CAAC;EAChE,MAAM1B,iBAAiB,GAAG,IAAA0B,uBAAc,EAAC,2BAA2B,CAAC;EACrE,MAAMzB,UAAU,GAAG,IAAAyB,uBAAc,EAAC,aAAa,CAAC;EAChD,MAAMC,cAAc,GAAG,IAAAC,6BAAoB,EAAC,SAAS,CAAC;EACtD,MAAMzB,UAAU,GAAG,IAAAuB,uBAAc,EAAC,sBAAsB,CAAC;EACzD,MAAMtB,eAAe,GAAG,IAAAsB,uBAAc,EAAC,yBAAyB,CAAC;EACjE,MAAMrB,oBAAoB,GAAG,IAAAqB,uBAAc,EAAC,+BAA+B,CAAC;EAE5E,OAAO;IACLG,qBAAqB,EAAEX,MAAM,CAACnB,eAAe,IAAID,SAAS,CAACC,eAAe,CAAC;IAC3E+B,uBAAuB,EAAEZ,MAAM,CAAClB,iBAAiB,IAAIF,SAAS,CAACE,iBAAiB,CAAC;IACjFuB,WAAW,EAAE;MACXnB,eAAe,EAAEc,MAAM,CAACd,eAAe,IAAIN,SAAS,CAACM,eAAe;IACtE,CAAC;IACDkB,gBAAgB,EAAE;MAChBrB,UAAU,EAAEiB,MAAM,CAACjB,UAAU,IAAIH,SAAS,CAACG,UAAU,CAAC;MACtDC,QAAQ,EAAEI,IAAI,CAACqB,cAAc,EAAEzB,QAAQ,EAAEJ,SAAS,CAACI,QAAQ,CAAC;MAC5DC,UAAU,EAAEY,YAAY,CAACZ,UAAU,EAAEL,SAAS,CAACK,UAAU;IAC3D,CAAC;IACDqB,gBAAgB,EAAE;MAChBpB,eAAe,EAAEc,MAAM,CAACb,oBAAoB,IAAIP,SAAS,CAACO,oBAAoB;IAChF;EACF,CAAC;AACH","ignoreList":[]}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -52,6 +52,30 @@ Object.keys(_components).forEach(function (key) {
|
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
54
|
});
|
|
55
|
+
var _hooks = require("./hooks");
|
|
56
|
+
Object.keys(_hooks).forEach(function (key) {
|
|
57
|
+
if (key === "default" || key === "__esModule") return;
|
|
58
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
59
|
+
if (key in exports && exports[key] === _hooks[key]) return;
|
|
60
|
+
Object.defineProperty(exports, key, {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
get: function () {
|
|
63
|
+
return _hooks[key];
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
var _navigation = require("./navigation");
|
|
68
|
+
Object.keys(_navigation).forEach(function (key) {
|
|
69
|
+
if (key === "default" || key === "__esModule") return;
|
|
70
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
71
|
+
if (key in exports && exports[key] === _navigation[key]) return;
|
|
72
|
+
Object.defineProperty(exports, key, {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return _navigation[key];
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
55
79
|
var _reactNative = require("react-native");
|
|
56
80
|
var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
|
|
57
81
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_components","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_reactNative","_reactNativeSafeAreaContext"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,WAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,WAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,WAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,
|
|
1
|
+
{"version":3,"names":["_components","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_hooks","_navigation","_reactNative","_reactNativeSafeAreaContext"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,WAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,WAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,WAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,MAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,MAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,MAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,WAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,WAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,WAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,WAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,YAAA,GAAAf,OAAA;AACA,IAAAgB,2BAAA,GAAAhB,OAAA","ignoreList":[]}
|
|
@@ -3,22 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
* of this function change — consuming Metro configs stay the same.
|
|
14
|
-
*
|
|
15
|
-
* Must be the **outermost** Metro config wrapper (after any other wrappers
|
|
16
|
-
* like `withStorybook`).
|
|
17
|
-
*/
|
|
18
|
-
function withCdxMetroConfig(config, options) {
|
|
19
|
-
return (0, _metro.withUniwindConfig)(config, {
|
|
20
|
-
cssEntryFile: options.cssEntryFile,
|
|
21
|
-
dtsFile: options.generatedTypesFile
|
|
22
|
-
});
|
|
23
|
-
}
|
|
6
|
+
Object.defineProperty(exports, "withCdxMetroConfig", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _withForgeMetroConfig.withForgeMetroConfig;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _withForgeMetroConfig = require("./withForgeMetroConfig");
|
|
24
13
|
//# sourceMappingURL=withCdxMetroConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_withForgeMetroConfig","require"],"sourceRoot":"../../../src","sources":["metro/withCdxMetroConfig.ts"],"mappings":";;;;;;;;;;;AACA,IAAAA,qBAAA,GAAAC,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.withForgeMetroConfig = withForgeMetroConfig;
|
|
7
|
+
var _metro = require("uniwind/metro");
|
|
8
|
+
/**
|
|
9
|
+
* Wraps a Metro config with Forge UI's styling-layer configuration.
|
|
10
|
+
*
|
|
11
|
+
* Today this delegates to Uniwind. If the styling layer is swapped (see
|
|
12
|
+
* `docs/research/uniwind-to-nativewind-contingency.md`), only the internals
|
|
13
|
+
* of this function change — consuming Metro configs stay the same.
|
|
14
|
+
*
|
|
15
|
+
* Must be the **outermost** Metro config wrapper (after any other wrappers
|
|
16
|
+
* like `withStorybook`).
|
|
17
|
+
*/
|
|
18
|
+
function withForgeMetroConfig(config, options) {
|
|
19
|
+
return (0, _metro.withUniwindConfig)(config, {
|
|
20
|
+
cssEntryFile: options.cssEntryFile,
|
|
21
|
+
dtsFile: options.generatedTypesFile
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=withForgeMetroConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_metro","require","withForgeMetroConfig","config","options","withUniwindConfig","cssEntryFile","dtsFile","generatedTypesFile"],"sourceRoot":"../../../src","sources":["metro/withForgeMetroConfig.ts"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,oBAAoBA,CAClCC,MAAS,EACTC,OAAgC,EAC7B;EACH,OAAO,IAAAC,wBAAiB,EAACF,MAAM,EAAE;IAC/BG,YAAY,EAAEF,OAAO,CAACE,YAAY;IAClCC,OAAO,EAAEH,OAAO,CAACI;EACnB,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.forgeTabIcon = forgeTabIcon;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
/**
|
|
9
|
+
* forgeTabIcon — web/JS-navigator implementation.
|
|
10
|
+
*
|
|
11
|
+
* Maps a {@link ForgeTabIcon} descriptor to a React Navigation `tabBarIcon`
|
|
12
|
+
* value that renders the same Forge UI icon on every platform:
|
|
13
|
+
*
|
|
14
|
+
* - **Web** (`createBottomTabNavigator`): renders the SVG icon component with
|
|
15
|
+
* `filled={focused}` and the navigator-supplied `color`/`size` — pair with
|
|
16
|
+
* `useForgeBottomTabScreenOptions` so tints come from design tokens.
|
|
17
|
+
* - **iOS/Android** (`createNativeBottomTabNavigator`): the `.native` module
|
|
18
|
+
* of this file returns a tinted template-image descriptor instead.
|
|
19
|
+
*
|
|
20
|
+
* ```tsx
|
|
21
|
+
* import { useForgeBottomTabScreenOptions, forgeTabIcon } from '@cdx-ui/components';
|
|
22
|
+
* import { HomeTabIcon } from '@cdx-ui/icons/tab-icons';
|
|
23
|
+
*
|
|
24
|
+
* <Tab.Screen
|
|
25
|
+
* name="Home"
|
|
26
|
+
* component={HomeScreen}
|
|
27
|
+
* options={{ title: 'Home', tabBarIcon: forgeTabIcon(HomeTabIcon) }}
|
|
28
|
+
* />
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
function forgeTabIcon(icon) {
|
|
32
|
+
const render = ({
|
|
33
|
+
focused,
|
|
34
|
+
color,
|
|
35
|
+
size
|
|
36
|
+
}) => /*#__PURE__*/(0, _react.createElement)(icon.Component, {
|
|
37
|
+
filled: focused,
|
|
38
|
+
color,
|
|
39
|
+
size
|
|
40
|
+
});
|
|
41
|
+
return render;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=forgeTabIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","forgeTabIcon","icon","render","focused","color","size","createElement","Component","filled"],"sourceRoot":"../../../src","sources":["navigation/forgeTabIcon.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,YAAYA,CAACC,IAAkB,EAAmB;EAChE,MAAMC,MAAM,GAAGA,CAAC;IAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAwD,CAAC,kBACzF,IAAAC,oBAAa,EAACL,IAAI,CAACM,SAAS,EAAE;IAAEC,MAAM,EAAEL,OAAO;IAAEC,KAAK;IAAEC;EAAK,CAAC,CAAC;EAEjE,OAAOH,MAAM;AACf","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.forgeTabIcon = forgeTabIcon;
|
|
7
|
+
/**
|
|
8
|
+
* forgeTabIcon — iOS/Android implementation (see `forgeTabIcon.ts` for the
|
|
9
|
+
* full contract and usage example).
|
|
10
|
+
*
|
|
11
|
+
* Returns a `tabBarIcon` function for `createNativeBottomTabNavigator` that
|
|
12
|
+
* resolves the descriptor's pre-rasterized template PNGs: outlined at rest,
|
|
13
|
+
* filled when focused (iOS only — Android tabs use one static icon and
|
|
14
|
+
* express selection via tint). `tinted: true` makes the native tab bar apply
|
|
15
|
+
* `tabBarActiveTintColor` / `tabBarInactiveTintColor` at runtime, so theming
|
|
16
|
+
* and dark mode flow through `useForgeBottomTabScreenOptions` unchanged.
|
|
17
|
+
*/
|
|
18
|
+
function forgeTabIcon(icon) {
|
|
19
|
+
const {
|
|
20
|
+
native
|
|
21
|
+
} = icon;
|
|
22
|
+
if (!native) {
|
|
23
|
+
const name = icon.Component.displayName ?? 'icon';
|
|
24
|
+
throw new Error(`forgeTabIcon: "${name}" has no native tab assets. Use a generated ` + `descriptor from '@cdx-ui/icons/tab-icons' (curated in the icon ` + `package's tab-icons.config.json), or pass a descriptor with your ` + `own template PNGs: { native: { outlined: require(...), filled: ` + `require(...) } } at a 24dp base size with @2x/@3x variants.`);
|
|
25
|
+
}
|
|
26
|
+
const resolve = ({
|
|
27
|
+
focused
|
|
28
|
+
}) => ({
|
|
29
|
+
type: 'image',
|
|
30
|
+
source: focused ? native.filled : native.outlined,
|
|
31
|
+
tinted: true
|
|
32
|
+
});
|
|
33
|
+
return resolve;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=forgeTabIcon.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forgeTabIcon","icon","native","name","Component","displayName","Error","resolve","focused","type","source","filled","outlined","tinted"],"sourceRoot":"../../../src","sources":["navigation/forgeTabIcon.native.ts"],"mappings":";;;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,YAAYA,CAACC,IAAkB,EAAmB;EAChE,MAAM;IAAEC;EAAO,CAAC,GAAGD,IAAI;EAEvB,IAAI,CAACC,MAAM,EAAE;IACX,MAAMC,IAAI,GAAGF,IAAI,CAACG,SAAS,CAACC,WAAW,IAAI,MAAM;IACjD,MAAM,IAAIC,KAAK,CACb,kBAAkBH,IAAI,8CAA8C,GAClE,iEAAiE,GACjE,mEAAmE,GACnE,iEAAiE,GACjE,6DACJ,CAAC;EACH;EAEA,MAAMI,OAAO,GAAGA,CAAC;IAAEC;EAA8B,CAAC,MAAgC;IAChFC,IAAI,EAAE,OAAO;IACbC,MAAM,EAAEF,OAAO,GAAGN,MAAM,CAACS,MAAM,GAAGT,MAAM,CAACU,QAAQ;IACjDC,MAAM,EAAE;EACV,CAAC,CAAC;EAEF,OAAON,OAAO;AAChB","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "forgeTabIcon", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _forgeTabIcon.forgeTabIcon;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _forgeTabIcon = require("./forgeTabIcon");
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_forgeTabIcon","require"],"sourceRoot":"../../../src","sources":["navigation/index.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
/**
|
|
7
|
+
* Structural mirror of the `image` arm of `NativeBottomTabIcon` from
|
|
8
|
+
* `@react-navigation/bottom-tabs/unstable`. Declared locally so
|
|
9
|
+
* `@cdx-ui/components` carries no runtime React Navigation dependency —
|
|
10
|
+
* the drift guards below fail the build if the upstream shape changes.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The value `forgeTabIcon()` returns — callable as `tabBarIcon` on **both**
|
|
15
|
+
* React Navigation bottom tab navigators. The intersection carries both call
|
|
16
|
+
* signatures; the platform-split implementation guarantees the matching one
|
|
17
|
+
* at runtime:
|
|
18
|
+
*
|
|
19
|
+
* - `createBottomTabNavigator` (web/JS) invokes it with
|
|
20
|
+
* `{ focused, color, size }` and renders the returned element.
|
|
21
|
+
* - `createNativeBottomTabNavigator` (iOS/Android) invokes it with
|
|
22
|
+
* `{ focused }` and receives a native icon descriptor.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Compile-time drift guards (see `useForgeBottomTabScreenOptions` for the
|
|
27
|
+
* pattern): `ForgeTabBarIcon` must stay assignable to the `tabBarIcon`
|
|
28
|
+
* option of both navigators. The `null as any` casts keep the runtime
|
|
29
|
+
* values `null` so tree-shakers eliminate them entirely.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
const _rnDriftGuardWeb =
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
|
+
null;
|
|
35
|
+
const _rnDriftGuardNative =
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
+
null;
|
|
38
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_rnDriftGuardWeb","_rnDriftGuardNative"],"sourceRoot":"../../../src","sources":["navigation/types.ts"],"mappings":";;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,gBAA0D;AAC9D;AACA,IAA8B;AAEhC,MAAMC,mBAAmE;AACvE;AACA,IAA8B","ignoreList":[]}
|
|
@@ -5,40 +5,69 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.TRANSITION_COLORS = exports.SIZE_SCALE = exports.SHADOW_SM = exports.SHADOW_MD = exports.SEMANTIC_COLORS = exports.RADIUS_SM = exports.RADIUS_MD = exports.RADIUS_FULL = exports.FOCUS_RING = exports.DISABLED_OPACITY = exports.DISABLED_CURSOR = exports.COLOR_TEXT_SECONDARY = exports.COLOR_TEXT_PRIMARY = exports.COLOR_TEXT_PLACEHOLDER = exports.COLOR_TEXT_MUTED = exports.COLOR_TEXT_INVERSE = exports.COLOR_TEXT_INVALID = exports.COLOR_BRAND_HOVER = exports.COLOR_BRAND_DEFAULT = exports.COLOR_BRAND_ACTIVE = exports.COLOR_BORDER_STRONG = exports.COLOR_BORDER_INVALID = exports.COLOR_BORDER_FOCUS = exports.COLOR_BORDER_DEFAULT = exports.COLOR_BG_SUBTLE = exports.COLOR_BG_PRIMARY = exports.COLOR_BG_MUTED = exports.COLOR_BG_INVERSE = exports.COLOR_ACCENT_DEFAULT = exports.COLOR_ACCENT_BORDER = void 0;
|
|
7
7
|
// packages/components/src/styles/primitives.ts
|
|
8
|
-
// Semantic constants for
|
|
8
|
+
// Semantic constants for Forge UI component styling.
|
|
9
9
|
|
|
10
10
|
// ─── Colors ──────────────────────────────────────────────
|
|
11
11
|
// Surface & background
|
|
12
|
+
/** @deprecated Use `bg-surface-primary` (--color-surface-primary) instead. */
|
|
12
13
|
const COLOR_BG_PRIMARY = exports.COLOR_BG_PRIMARY = 'bg-white';
|
|
14
|
+
/** @deprecated Use `bg-surface-secondary` (--color-surface-secondary) instead. */
|
|
13
15
|
const COLOR_BG_SUBTLE = exports.COLOR_BG_SUBTLE = 'bg-slate-50';
|
|
16
|
+
/** @deprecated Use `bg-surface-neutral-subtle` (--color-surface-neutral-subtle) instead. */
|
|
14
17
|
const COLOR_BG_MUTED = exports.COLOR_BG_MUTED = 'bg-slate-100';
|
|
18
|
+
/** @deprecated Use `bg-base-950` (--color-base-950) instead. */
|
|
15
19
|
const COLOR_BG_INVERSE = exports.COLOR_BG_INVERSE = 'bg-slate-900';
|
|
16
20
|
|
|
17
21
|
// Border
|
|
22
|
+
/** @deprecated Use `border-stroke-secondary` (--color-stroke-secondary) instead. */
|
|
18
23
|
const COLOR_BORDER_DEFAULT = exports.COLOR_BORDER_DEFAULT = 'border-slate-200';
|
|
24
|
+
/** @deprecated Use `border-stroke-hover` (--color-stroke-hover) instead. */
|
|
19
25
|
const COLOR_BORDER_STRONG = exports.COLOR_BORDER_STRONG = 'border-slate-300';
|
|
26
|
+
/** @deprecated Use `border-stroke-focus` (--color-stroke-focus) instead. */
|
|
20
27
|
const COLOR_BORDER_FOCUS = exports.COLOR_BORDER_FOCUS = 'border-slate-900';
|
|
28
|
+
/** @deprecated Use `border-stroke-danger` (--color-stroke-danger) instead. */
|
|
21
29
|
const COLOR_BORDER_INVALID = exports.COLOR_BORDER_INVALID = 'border-red-500';
|
|
22
30
|
|
|
23
31
|
// Text
|
|
32
|
+
/** @deprecated Use `text-content-primary` (--color-content-primary) instead. */
|
|
24
33
|
const COLOR_TEXT_PRIMARY = exports.COLOR_TEXT_PRIMARY = 'text-slate-900';
|
|
34
|
+
/** @deprecated Use `text-content-secondary` (--color-content-secondary) instead. */
|
|
25
35
|
const COLOR_TEXT_SECONDARY = exports.COLOR_TEXT_SECONDARY = 'text-slate-500';
|
|
36
|
+
/** @deprecated Use `text-content-tertiary` (--color-content-tertiary) instead. */
|
|
26
37
|
const COLOR_TEXT_MUTED = exports.COLOR_TEXT_MUTED = 'text-slate-400';
|
|
38
|
+
/** @deprecated Use the appropriate `text-content-*-on-strong` token for the surface color, e.g. `text-content-action-on-strong` (--color-content-action-on-strong). */
|
|
27
39
|
const COLOR_TEXT_INVERSE = exports.COLOR_TEXT_INVERSE = 'text-white';
|
|
40
|
+
/** @deprecated Use `text-content-tertiary` (--color-content-tertiary) instead. */
|
|
28
41
|
const COLOR_TEXT_PLACEHOLDER = exports.COLOR_TEXT_PLACEHOLDER = 'text-slate-400';
|
|
42
|
+
/** @deprecated Use `text-content-danger` (--color-content-danger) instead. */
|
|
29
43
|
const COLOR_TEXT_INVALID = exports.COLOR_TEXT_INVALID = 'text-red-600';
|
|
30
44
|
|
|
31
45
|
// Brand / Action
|
|
46
|
+
/** @deprecated Use `bg-surface-action-strong` (--color-surface-action-strong) instead. */
|
|
32
47
|
const COLOR_BRAND_DEFAULT = exports.COLOR_BRAND_DEFAULT = 'bg-slate-900';
|
|
48
|
+
/** @deprecated Use `bg-surface-action-strong-hover` (--color-surface-action-strong-hover) instead. */
|
|
33
49
|
const COLOR_BRAND_HOVER = exports.COLOR_BRAND_HOVER = 'bg-slate-800';
|
|
50
|
+
/** @deprecated Use `bg-surface-action-strong-active` (--color-surface-action-strong-active) instead. */
|
|
34
51
|
const COLOR_BRAND_ACTIVE = exports.COLOR_BRAND_ACTIVE = 'bg-slate-700';
|
|
35
52
|
|
|
36
53
|
// Accent (for checked states, active indicators)
|
|
54
|
+
/** @deprecated Use `bg-surface-action-strong` (--color-surface-action-strong) instead. */
|
|
37
55
|
const COLOR_ACCENT_DEFAULT = exports.COLOR_ACCENT_DEFAULT = 'bg-slate-900';
|
|
56
|
+
/** @deprecated Use `border-stroke-action` (--color-stroke-action) instead. */
|
|
38
57
|
const COLOR_ACCENT_BORDER = exports.COLOR_ACCENT_BORDER = 'border-slate-900';
|
|
39
58
|
|
|
40
|
-
|
|
41
|
-
|
|
59
|
+
/**
|
|
60
|
+
* @deprecated Use semantic token classes directly instead. Map each color key to its
|
|
61
|
+
* corresponding `--color-surface-*`, `--color-stroke-*`, and `--color-content-*` tokens:
|
|
62
|
+
* - `bg` → `bg-surface-{color}-strong` (--color-surface-{color}-strong)
|
|
63
|
+
* - `bgHover` → `bg-surface-{color}-strong-hover` (--color-surface-{color}-strong-hover)
|
|
64
|
+
* - `bgActive` → `bg-surface-{color}-strong-active` (--color-surface-{color}-strong-active)
|
|
65
|
+
* - `border` → `border-stroke-{color}` (--color-stroke-{color})
|
|
66
|
+
* - `text` → `text-content-{color}` (--color-content-{color})
|
|
67
|
+
* - `ring` → `ring-[--color-stroke-focus]` (--color-stroke-focus)
|
|
68
|
+
*
|
|
69
|
+
* See Button/styles.ts for a complete migration example.
|
|
70
|
+
*/
|
|
42
71
|
const SEMANTIC_COLORS = exports.SEMANTIC_COLORS = {
|
|
43
72
|
action: {
|
|
44
73
|
bg: 'bg-slate-900',
|
|
@@ -83,21 +112,29 @@ const SEMANTIC_COLORS = exports.SEMANTIC_COLORS = {
|
|
|
83
112
|
};
|
|
84
113
|
|
|
85
114
|
// ─── Focus ───────────────────────────────────────────────
|
|
115
|
+
/** @deprecated Use `ring-2 ring-[--color-stroke-focus] ring-offset-2` (--color-stroke-focus) instead. */
|
|
86
116
|
const FOCUS_RING = exports.FOCUS_RING = 'ring-2 ring-slate-400/50 ring-offset-2';
|
|
87
117
|
|
|
88
118
|
// ─── Radius ──────────────────────────────────────────────
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
|
|
119
|
+
/** @deprecated Use `rounded-[var(--border-radius-button)]` for buttons/inputs or `rounded-[var(--border-radius-default)]` for containers. */
|
|
120
|
+
const RADIUS_SM = exports.RADIUS_SM = 'rounded-lg';
|
|
121
|
+
/** @deprecated Use `rounded-[var(--border-radius-default)]` for cards/containers. */
|
|
122
|
+
const RADIUS_MD = exports.RADIUS_MD = 'rounded-xl';
|
|
123
|
+
/** @deprecated Use `rounded-[var(--border-radius-round)]` for circular elements (icon buttons, radio, pills). */
|
|
124
|
+
const RADIUS_FULL = exports.RADIUS_FULL = 'rounded-full';
|
|
92
125
|
|
|
93
126
|
// ─── Shadows ─────────────────────────────────────────────
|
|
127
|
+
|
|
128
|
+
/** @deprecated Use `shadow-sm` directly instead */
|
|
94
129
|
const SHADOW_SM = exports.SHADOW_SM = 'shadow-sm';
|
|
130
|
+
/** @deprecated Use `shadow-md` directly instead */
|
|
95
131
|
const SHADOW_MD = exports.SHADOW_MD = 'shadow-md';
|
|
96
132
|
|
|
97
133
|
// ─── Sizing ──────────────────────────────────────────────
|
|
98
134
|
// Unified size scale for interactive/form components (Button, Input, Select, Checkbox).
|
|
99
135
|
// Only two sizes: 'default' (regular) and 'small' (compact).
|
|
100
136
|
// NOTE: Text and Heading use a separate typography scale (xs/sm/md/lg/xl) — not this.
|
|
137
|
+
/** @deprecated */
|
|
101
138
|
const SIZE_SCALE = exports.SIZE_SCALE = {
|
|
102
139
|
default: {
|
|
103
140
|
height: 'h-10',
|