@cdx-ui/components 0.0.1-alpha.9 → 0.0.1-beta.2
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 +53 -2
- package/lib/commonjs/components/AlertDialog/index.js +117 -0
- package/lib/commonjs/components/AlertDialog/index.js.map +1 -0
- package/lib/commonjs/components/Avatar/index.js +156 -0
- package/lib/commonjs/components/Avatar/index.js.map +1 -0
- package/lib/commonjs/components/Avatar/styles.js +80 -0
- package/lib/commonjs/components/Avatar/styles.js.map +1 -0
- package/lib/commonjs/components/BottomSheet/index.js +248 -0
- package/lib/commonjs/components/BottomSheet/index.js.map +1 -0
- package/lib/commonjs/components/BottomSheet/styles.js +61 -0
- package/lib/commonjs/components/BottomSheet/styles.js.map +1 -0
- package/lib/commonjs/components/Box/Box.js +1 -0
- package/lib/commonjs/components/Box/Box.js.map +1 -1
- package/lib/commonjs/components/Button/index.js +20 -9
- package/lib/commonjs/components/Button/index.js.map +1 -1
- package/lib/commonjs/components/Button/styles.js +182 -163
- package/lib/commonjs/components/Button/styles.js.map +1 -1
- package/lib/commonjs/components/Card/index.js +104 -0
- package/lib/commonjs/components/Card/index.js.map +1 -0
- package/lib/commonjs/components/Card/styles.js +28 -0
- package/lib/commonjs/components/Card/styles.js.map +1 -0
- package/lib/commonjs/components/Checkbox/index.js +18 -11
- package/lib/commonjs/components/Checkbox/index.js.map +1 -1
- package/lib/commonjs/components/Checkbox/styles.js +17 -16
- package/lib/commonjs/components/Checkbox/styles.js.map +1 -1
- package/lib/commonjs/components/Chip/index.js +103 -0
- package/lib/commonjs/components/Chip/index.js.map +1 -0
- package/lib/commonjs/components/Chip/styles.js +52 -0
- package/lib/commonjs/components/Chip/styles.js.map +1 -0
- package/lib/commonjs/components/Dialog/index.js +275 -0
- package/lib/commonjs/components/Dialog/index.js.map +1 -0
- package/lib/commonjs/components/Dialog/styles.js +63 -0
- package/lib/commonjs/components/Dialog/styles.js.map +1 -0
- package/lib/commonjs/components/Field/FieldLabel.js +33 -0
- package/lib/commonjs/components/Field/FieldLabel.js.map +1 -0
- package/lib/commonjs/components/Field/FieldLabel.web.js +22 -0
- package/lib/commonjs/components/Field/FieldLabel.web.js.map +1 -0
- package/lib/commonjs/components/Field/index.js +158 -0
- package/lib/commonjs/components/Field/index.js.map +1 -0
- package/lib/commonjs/components/Field/styles.js +16 -0
- package/lib/commonjs/components/Field/styles.js.map +1 -0
- package/lib/commonjs/components/Form/FormRoot.js +25 -0
- package/lib/commonjs/components/Form/FormRoot.js.map +1 -0
- package/lib/commonjs/components/Form/FormRoot.web.js +17 -0
- package/lib/commonjs/components/Form/FormRoot.web.js.map +1 -0
- package/lib/commonjs/components/Form/index.js +48 -0
- package/lib/commonjs/components/Form/index.js.map +1 -0
- package/lib/commonjs/components/Form/styles.js +9 -0
- package/lib/commonjs/components/Form/styles.js.map +1 -0
- package/lib/commonjs/components/Heading/index.js +35 -0
- package/lib/commonjs/components/Heading/index.js.map +1 -0
- package/lib/commonjs/components/Heading/styles.js +23 -0
- package/lib/commonjs/components/Heading/styles.js.map +1 -0
- package/lib/commonjs/components/Icon/index.js +61 -0
- package/lib/commonjs/components/Icon/index.js.map +1 -0
- package/lib/commonjs/components/IconButton/index.js +75 -0
- package/lib/commonjs/components/IconButton/index.js.map +1 -0
- package/lib/commonjs/components/IconButton/styles.js +44 -0
- package/lib/commonjs/components/IconButton/styles.js.map +1 -0
- package/lib/commonjs/components/Image/Image.js +69 -0
- package/lib/commonjs/components/Image/Image.js.map +1 -0
- package/lib/commonjs/components/Image/index.js +13 -0
- package/lib/commonjs/components/Image/index.js.map +1 -0
- package/lib/commonjs/components/Input/BaseInput.android.js +20 -0
- package/lib/commonjs/components/Input/BaseInput.android.js.map +1 -0
- package/lib/commonjs/components/Input/index.js +10 -16
- package/lib/commonjs/components/Input/index.js.map +1 -1
- package/lib/commonjs/components/Input/styles.js +17 -30
- package/lib/commonjs/components/Input/styles.js.map +1 -1
- package/lib/commonjs/components/Link/index.js +94 -0
- package/lib/commonjs/components/Link/index.js.map +1 -0
- package/lib/commonjs/components/Link/styles.js +14 -0
- package/lib/commonjs/components/Link/styles.js.map +1 -0
- package/lib/commonjs/components/OtpInput/index.js +83 -0
- package/lib/commonjs/components/OtpInput/index.js.map +1 -0
- package/lib/commonjs/components/OtpInput/styles.js +48 -0
- package/lib/commonjs/components/OtpInput/styles.js.map +1 -0
- package/lib/commonjs/components/ProgressBar/index.js +45 -0
- package/lib/commonjs/components/ProgressBar/index.js.map +1 -0
- package/lib/commonjs/components/ProgressBar/styles.js +10 -0
- package/lib/commonjs/components/ProgressBar/styles.js.map +1 -0
- package/lib/commonjs/components/ProgressSegmented/index.js +62 -0
- package/lib/commonjs/components/ProgressSegmented/index.js.map +1 -0
- package/lib/commonjs/components/ProgressSegmented/styles.js +21 -0
- package/lib/commonjs/components/ProgressSegmented/styles.js.map +1 -0
- package/lib/commonjs/components/Select/SelectTriggerHost.js +10 -0
- package/lib/commonjs/components/Select/SelectTriggerHost.js.map +1 -0
- package/lib/commonjs/components/Select/SelectTriggerHost.web.js +98 -0
- package/lib/commonjs/components/Select/SelectTriggerHost.web.js.map +1 -0
- package/lib/commonjs/components/Select/index.js +13 -13
- package/lib/commonjs/components/Select/index.js.map +1 -1
- package/lib/commonjs/components/Select/styles.js +29 -53
- package/lib/commonjs/components/Select/styles.js.map +1 -1
- package/lib/commonjs/components/Stack/HStack.js +8 -21
- package/lib/commonjs/components/Stack/HStack.js.map +1 -1
- package/lib/commonjs/components/Stack/VStack.js +8 -21
- package/lib/commonjs/components/Stack/VStack.js.map +1 -1
- package/lib/commonjs/components/Stack/styles.js +44 -0
- package/lib/commonjs/components/Stack/styles.js.map +1 -0
- package/lib/commonjs/components/Text/index.js +18 -9
- package/lib/commonjs/components/Text/index.js.map +1 -1
- package/lib/commonjs/components/Text/styles.js +23 -0
- package/lib/commonjs/components/Text/styles.js.map +1 -0
- package/lib/commonjs/components/VirtualizedList/index.js +19 -0
- package/lib/commonjs/components/VirtualizedList/index.js.map +1 -0
- package/lib/commonjs/components/index.js +204 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/index.js +40 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/styles/index.js +17 -0
- package/lib/commonjs/styles/index.js.map +1 -0
- package/lib/commonjs/styles/primitives.js +123 -0
- package/lib/commonjs/styles/primitives.js.map +1 -0
- package/lib/module/components/AlertDialog/index.js +112 -0
- package/lib/module/components/AlertDialog/index.js.map +1 -0
- package/lib/module/components/Avatar/index.js +152 -0
- package/lib/module/components/Avatar/index.js.map +1 -0
- package/lib/module/components/Avatar/styles.js +77 -0
- package/lib/module/components/Avatar/styles.js.map +1 -0
- package/lib/module/components/BottomSheet/index.js +242 -0
- package/lib/module/components/BottomSheet/index.js.map +1 -0
- package/lib/module/components/BottomSheet/styles.js +58 -0
- package/lib/module/components/BottomSheet/styles.js.map +1 -0
- package/lib/module/components/Box/Box.js +1 -0
- package/lib/module/components/Box/Box.js.map +1 -1
- package/lib/module/components/Button/index.js +21 -10
- package/lib/module/components/Button/index.js.map +1 -1
- package/lib/module/components/Button/styles.js +181 -162
- package/lib/module/components/Button/styles.js.map +1 -1
- package/lib/module/components/Card/index.js +100 -0
- package/lib/module/components/Card/index.js.map +1 -0
- package/lib/module/components/Card/styles.js +25 -0
- package/lib/module/components/Card/styles.js.map +1 -0
- package/lib/module/components/Checkbox/index.js +19 -12
- package/lib/module/components/Checkbox/index.js.map +1 -1
- package/lib/module/components/Checkbox/styles.js +17 -16
- package/lib/module/components/Checkbox/styles.js.map +1 -1
- package/lib/module/components/Chip/index.js +99 -0
- package/lib/module/components/Chip/index.js.map +1 -0
- package/lib/module/components/Chip/styles.js +48 -0
- package/lib/module/components/Chip/styles.js.map +1 -0
- package/lib/module/components/Dialog/index.js +267 -0
- package/lib/module/components/Dialog/index.js.map +1 -0
- package/lib/module/components/Dialog/styles.js +60 -0
- package/lib/module/components/Dialog/styles.js.map +1 -0
- package/lib/module/components/Field/FieldLabel.js +29 -0
- package/lib/module/components/Field/FieldLabel.js.map +1 -0
- package/lib/module/components/Field/FieldLabel.web.js +17 -0
- package/lib/module/components/Field/FieldLabel.web.js.map +1 -0
- package/lib/module/components/Field/index.js +155 -0
- package/lib/module/components/Field/index.js.map +1 -0
- package/lib/module/components/Field/styles.js +12 -0
- package/lib/module/components/Field/styles.js.map +1 -0
- package/lib/module/components/Form/FormRoot.js +21 -0
- package/lib/module/components/Form/FormRoot.js.map +1 -0
- package/lib/module/components/Form/FormRoot.web.js +12 -0
- package/lib/module/components/Form/FormRoot.web.js.map +1 -0
- package/lib/module/components/Form/index.js +44 -0
- package/lib/module/components/Form/index.js.map +1 -0
- package/lib/module/components/Form/styles.js +5 -0
- package/lib/module/components/Form/styles.js.map +1 -0
- package/lib/module/components/Heading/index.js +31 -0
- package/lib/module/components/Heading/index.js.map +1 -0
- package/lib/module/components/Heading/styles.js +19 -0
- package/lib/module/components/Heading/styles.js.map +1 -0
- package/lib/module/components/Icon/index.js +57 -0
- package/lib/module/components/Icon/index.js.map +1 -0
- package/lib/module/components/IconButton/index.js +71 -0
- package/lib/module/components/IconButton/index.js.map +1 -0
- package/lib/module/components/IconButton/styles.js +40 -0
- package/lib/module/components/IconButton/styles.js.map +1 -0
- package/lib/module/components/Image/Image.js +67 -0
- package/lib/module/components/Image/Image.js.map +1 -0
- package/lib/module/components/Image/index.js +4 -0
- package/lib/module/components/Image/index.js.map +1 -0
- package/lib/module/components/Input/BaseInput.android.js +16 -0
- package/lib/module/components/Input/BaseInput.android.js.map +1 -0
- package/lib/module/components/Input/index.js +10 -16
- package/lib/module/components/Input/index.js.map +1 -1
- package/lib/module/components/Input/styles.js +17 -30
- package/lib/module/components/Input/styles.js.map +1 -1
- package/lib/module/components/Link/index.js +85 -0
- package/lib/module/components/Link/index.js.map +1 -0
- package/lib/module/components/Link/styles.js +11 -0
- package/lib/module/components/Link/styles.js.map +1 -0
- package/lib/module/components/OtpInput/index.js +79 -0
- package/lib/module/components/OtpInput/index.js.map +1 -0
- package/lib/module/components/OtpInput/styles.js +44 -0
- package/lib/module/components/OtpInput/styles.js.map +1 -0
- package/lib/module/components/ProgressBar/index.js +41 -0
- package/lib/module/components/ProgressBar/index.js.map +1 -0
- package/lib/module/components/ProgressBar/styles.js +6 -0
- package/lib/module/components/ProgressBar/styles.js.map +1 -0
- package/lib/module/components/ProgressSegmented/index.js +58 -0
- package/lib/module/components/ProgressSegmented/index.js.map +1 -0
- package/lib/module/components/ProgressSegmented/styles.js +17 -0
- package/lib/module/components/ProgressSegmented/styles.js.map +1 -0
- package/lib/module/components/Select/SelectTriggerHost.js +7 -0
- package/lib/module/components/Select/SelectTriggerHost.js.map +1 -0
- package/lib/module/components/Select/SelectTriggerHost.web.js +93 -0
- package/lib/module/components/Select/SelectTriggerHost.web.js.map +1 -0
- package/lib/module/components/Select/index.js +14 -14
- package/lib/module/components/Select/index.js.map +1 -1
- package/lib/module/components/Select/styles.js +29 -53
- package/lib/module/components/Select/styles.js.map +1 -1
- package/lib/module/components/Stack/HStack.js +8 -21
- package/lib/module/components/Stack/HStack.js.map +1 -1
- package/lib/module/components/Stack/VStack.js +8 -21
- package/lib/module/components/Stack/VStack.js.map +1 -1
- package/lib/module/components/Stack/styles.js +40 -0
- package/lib/module/components/Stack/styles.js.map +1 -0
- package/lib/module/components/Text/index.js +19 -1
- package/lib/module/components/Text/index.js.map +1 -1
- package/lib/module/components/Text/styles.js +19 -0
- package/lib/module/components/Text/styles.js.map +1 -0
- package/lib/module/components/VirtualizedList/index.js +15 -0
- package/lib/module/components/VirtualizedList/index.js.map +1 -0
- package/lib/module/components/index.js +17 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/index.js +3 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/styles/index.js +4 -0
- package/lib/module/styles/index.js.map +1 -0
- package/lib/module/styles/primitives.js +119 -0
- package/lib/module/styles/primitives.js.map +1 -0
- package/lib/typescript/components/AlertDialog/index.d.ts +30 -0
- package/lib/typescript/components/AlertDialog/index.d.ts.map +1 -0
- package/lib/typescript/components/Avatar/index.d.ts +40 -0
- package/lib/typescript/components/Avatar/index.d.ts.map +1 -0
- package/lib/typescript/components/Avatar/styles.d.ts +16 -0
- package/lib/typescript/components/Avatar/styles.d.ts.map +1 -0
- package/lib/typescript/components/BottomSheet/index.d.ts +61 -0
- package/lib/typescript/components/BottomSheet/index.d.ts.map +1 -0
- package/lib/typescript/components/BottomSheet/styles.d.ts +16 -0
- package/lib/typescript/components/BottomSheet/styles.d.ts.map +1 -0
- package/lib/typescript/components/Box/Box.d.ts +1 -0
- package/lib/typescript/components/Box/Box.d.ts.map +1 -1
- package/lib/typescript/components/Button/index.d.ts +6 -3
- package/lib/typescript/components/Button/index.d.ts.map +1 -1
- package/lib/typescript/components/Button/styles.d.ts +11 -8
- package/lib/typescript/components/Button/styles.d.ts.map +1 -1
- package/lib/typescript/components/Card/index.d.ts +30 -0
- package/lib/typescript/components/Card/index.d.ts.map +1 -0
- package/lib/typescript/components/Card/styles.d.ts +6 -0
- package/lib/typescript/components/Card/styles.d.ts.map +1 -0
- package/lib/typescript/components/Checkbox/index.d.ts +7 -5
- package/lib/typescript/components/Checkbox/index.d.ts.map +1 -1
- package/lib/typescript/components/Checkbox/styles.d.ts +4 -4
- package/lib/typescript/components/Checkbox/styles.d.ts.map +1 -1
- package/lib/typescript/components/Chip/index.d.ts +27 -0
- package/lib/typescript/components/Chip/index.d.ts.map +1 -0
- package/lib/typescript/components/Chip/styles.d.ts +12 -0
- package/lib/typescript/components/Chip/styles.d.ts.map +1 -0
- package/lib/typescript/components/Dialog/index.d.ts +61 -0
- package/lib/typescript/components/Dialog/index.d.ts.map +1 -0
- package/lib/typescript/components/Dialog/styles.d.ts +14 -0
- package/lib/typescript/components/Dialog/styles.d.ts.map +1 -0
- package/lib/typescript/components/Field/FieldLabel.d.ts +18 -0
- package/lib/typescript/components/Field/FieldLabel.d.ts.map +1 -0
- package/lib/typescript/components/Field/FieldLabel.web.d.ts +16 -0
- package/lib/typescript/components/Field/FieldLabel.web.d.ts.map +1 -0
- package/lib/typescript/components/Field/index.d.ts +26 -0
- package/lib/typescript/components/Field/index.d.ts.map +1 -0
- package/lib/typescript/components/Field/styles.d.ts +16 -0
- package/lib/typescript/components/Field/styles.d.ts.map +1 -0
- package/lib/typescript/components/Form/FormRoot.d.ts +14 -0
- package/lib/typescript/components/Form/FormRoot.d.ts.map +1 -0
- package/lib/typescript/components/Form/FormRoot.web.d.ts +10 -0
- package/lib/typescript/components/Form/FormRoot.web.d.ts.map +1 -0
- package/lib/typescript/components/Form/index.d.ts +7 -0
- package/lib/typescript/components/Form/index.d.ts.map +1 -0
- package/lib/typescript/components/Form/styles.d.ts +2 -0
- package/lib/typescript/components/Form/styles.d.ts.map +1 -0
- package/lib/typescript/components/Heading/index.d.ts +10 -0
- package/lib/typescript/components/Heading/index.d.ts.map +1 -0
- package/lib/typescript/components/Heading/styles.d.ts +6 -0
- package/lib/typescript/components/Heading/styles.d.ts.map +1 -0
- package/lib/typescript/components/Icon/index.d.ts +27 -0
- package/lib/typescript/components/Icon/index.d.ts.map +1 -0
- package/lib/typescript/components/IconButton/index.d.ts +15 -0
- package/lib/typescript/components/IconButton/index.d.ts.map +1 -0
- package/lib/typescript/components/IconButton/styles.d.ts +11 -0
- package/lib/typescript/components/IconButton/styles.d.ts.map +1 -0
- package/lib/typescript/components/Image/Image.d.ts +47 -0
- package/lib/typescript/components/Image/Image.d.ts.map +1 -0
- package/lib/typescript/components/Image/index.d.ts +2 -0
- package/lib/typescript/components/Image/index.d.ts.map +1 -0
- package/lib/typescript/components/Input/BaseInput.android.d.ts +3 -0
- package/lib/typescript/components/Input/BaseInput.android.d.ts.map +1 -0
- package/lib/typescript/components/Input/index.d.ts +7 -5
- package/lib/typescript/components/Input/index.d.ts.map +1 -1
- package/lib/typescript/components/Input/styles.d.ts +5 -7
- package/lib/typescript/components/Input/styles.d.ts.map +1 -1
- package/lib/typescript/components/Link/index.d.ts +26 -0
- package/lib/typescript/components/Link/index.d.ts.map +1 -0
- package/lib/typescript/components/Link/styles.d.ts +6 -0
- package/lib/typescript/components/Link/styles.d.ts.map +1 -0
- package/lib/typescript/components/OtpInput/index.d.ts +11 -0
- package/lib/typescript/components/OtpInput/index.d.ts.map +1 -0
- package/lib/typescript/components/OtpInput/styles.d.ts +14 -0
- package/lib/typescript/components/OtpInput/styles.d.ts.map +1 -0
- package/lib/typescript/components/ProgressBar/index.d.ts +17 -0
- package/lib/typescript/components/ProgressBar/index.d.ts.map +1 -0
- package/lib/typescript/components/ProgressBar/styles.d.ts +5 -0
- package/lib/typescript/components/ProgressBar/styles.d.ts.map +1 -0
- package/lib/typescript/components/ProgressSegmented/index.d.ts +15 -0
- package/lib/typescript/components/ProgressSegmented/index.d.ts.map +1 -0
- package/lib/typescript/components/ProgressSegmented/styles.d.ts +8 -0
- package/lib/typescript/components/ProgressSegmented/styles.d.ts.map +1 -0
- package/lib/typescript/components/Select/SelectTriggerHost.d.ts +3 -0
- package/lib/typescript/components/Select/SelectTriggerHost.d.ts.map +1 -0
- package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts +13 -0
- package/lib/typescript/components/Select/SelectTriggerHost.web.d.ts.map +1 -0
- package/lib/typescript/components/Select/index.d.ts +7 -4
- package/lib/typescript/components/Select/index.d.ts.map +1 -1
- package/lib/typescript/components/Select/styles.d.ts +6 -8
- package/lib/typescript/components/Select/styles.d.ts.map +1 -1
- package/lib/typescript/components/Stack/HStack.d.ts +1 -12
- package/lib/typescript/components/Stack/HStack.d.ts.map +1 -1
- package/lib/typescript/components/Stack/VStack.d.ts +1 -12
- package/lib/typescript/components/Stack/VStack.d.ts.map +1 -1
- package/lib/typescript/components/Stack/styles.d.ts +23 -0
- package/lib/typescript/components/Stack/styles.d.ts.map +1 -0
- package/lib/typescript/components/Switch/index.d.ts +0 -1
- package/lib/typescript/components/Switch/index.d.ts.map +1 -1
- package/lib/typescript/components/Text/index.d.ts +9 -1
- package/lib/typescript/components/Text/index.d.ts.map +1 -1
- package/lib/typescript/components/Text/styles.d.ts +6 -0
- package/lib/typescript/components/Text/styles.d.ts.map +1 -0
- package/lib/typescript/components/VirtualizedList/index.d.ts +8 -0
- package/lib/typescript/components/VirtualizedList/index.d.ts.map +1 -0
- package/lib/typescript/components/index.d.ts +17 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +3 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/styles/index.d.ts +2 -0
- package/lib/typescript/styles/index.d.ts.map +1 -0
- package/lib/typescript/styles/primitives.d.ts +85 -0
- package/lib/typescript/styles/primitives.d.ts.map +1 -0
- package/package.json +15 -6
- package/src/components/AlertDialog/index.tsx +124 -0
- package/src/components/Avatar/index.tsx +172 -0
- package/src/components/Avatar/styles.ts +83 -0
- package/src/components/BottomSheet/index.tsx +316 -0
- package/src/components/BottomSheet/styles.ts +79 -0
- package/src/components/Box/Box.tsx +1 -0
- package/src/components/Button/index.tsx +14 -9
- package/src/components/Button/styles.ts +159 -209
- package/src/components/Card/index.tsx +115 -0
- package/src/components/Card/styles.ts +41 -0
- package/src/components/Checkbox/index.tsx +15 -23
- package/src/components/Checkbox/styles.ts +33 -24
- package/src/components/Chip/index.tsx +91 -0
- package/src/components/Chip/styles.ts +52 -0
- package/src/components/Dialog/index.tsx +304 -0
- package/src/components/Dialog/styles.ts +88 -0
- package/src/components/Field/FieldLabel.tsx +33 -0
- package/src/components/Field/FieldLabel.web.tsx +25 -0
- package/src/components/Field/index.tsx +171 -0
- package/src/components/Field/styles.ts +32 -0
- package/src/components/Form/FormRoot.tsx +20 -0
- package/src/components/Form/FormRoot.web.tsx +12 -0
- package/src/components/Form/index.tsx +38 -0
- package/src/components/Form/styles.ts +3 -0
- package/src/components/Heading/index.tsx +36 -0
- package/src/components/Heading/styles.tsx +25 -0
- package/src/components/Icon/index.tsx +54 -0
- package/src/components/IconButton/index.tsx +92 -0
- package/src/components/IconButton/styles.ts +59 -0
- package/src/components/Image/Image.tsx +77 -0
- package/src/components/Image/index.ts +1 -0
- package/src/components/Input/BaseInput.android.tsx +13 -0
- package/src/components/Input/index.tsx +9 -22
- package/src/components/Input/styles.ts +36 -40
- package/src/components/Link/index.tsx +83 -0
- package/src/components/Link/styles.ts +21 -0
- package/src/components/OtpInput/index.tsx +79 -0
- package/src/components/OtpInput/styles.ts +45 -0
- package/src/components/ProgressBar/index.tsx +53 -0
- package/src/components/ProgressBar/styles.ts +9 -0
- package/src/components/ProgressSegmented/index.tsx +81 -0
- package/src/components/ProgressSegmented/styles.ts +20 -0
- package/src/components/Select/SelectTriggerHost.tsx +4 -0
- package/src/components/Select/SelectTriggerHost.web.tsx +136 -0
- package/src/components/Select/index.tsx +14 -14
- package/src/components/Select/styles.ts +68 -75
- package/src/components/Stack/HStack.tsx +8 -19
- package/src/components/Stack/VStack.tsx +8 -23
- package/src/components/Stack/styles.ts +42 -0
- package/src/components/Switch/index.tsx +0 -2
- package/src/components/Text/index.tsx +16 -0
- package/src/components/Text/styles.tsx +25 -0
- package/src/components/VirtualizedList/index.tsx +19 -0
- package/src/components/index.ts +17 -0
- package/src/index.ts +3 -0
- package/src/styles/index.ts +1 -0
- package/src/styles/primitives.ts +107 -0
- package/lib/commonjs/components/Text/Text.js +0 -30
- package/lib/commonjs/components/Text/Text.js.map +0 -1
- package/lib/module/components/Text/Text.js +0 -26
- package/lib/module/components/Text/Text.js.map +0 -1
- package/lib/typescript/components/Text/Text.d.ts +0 -11
- package/lib/typescript/components/Text/Text.d.ts.map +0 -1
- package/src/components/Text/Text.tsx +0 -58
- package/src/components/Text/index.ts +0 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Platform } from 'react-native';
|
|
2
|
+
import { cva, type VariantProps } from 'class-variance-authority';
|
|
3
|
+
import { DISABLED_CURSOR, TRANSITION_COLORS } from '../../styles/primitives';
|
|
4
|
+
|
|
5
|
+
export const iconButtonRootVariants = cva(
|
|
6
|
+
[
|
|
7
|
+
'flex items-center justify-center',
|
|
8
|
+
'rounded-[var(--border-radius-round)]',
|
|
9
|
+
'web:outline-none web:focus:outline-none web:focus-visible:outline-none',
|
|
10
|
+
TRANSITION_COLORS,
|
|
11
|
+
'data-[disabled=true]:opacity-[--opacity-disabled]',
|
|
12
|
+
DISABLED_CURSOR,
|
|
13
|
+
'web:data-[focus-visible=true]:ring-2 web:data-[focus-visible=true]:ring-[--color-stroke-ring] web:data-[focus-visible=true]:ring-offset-2',
|
|
14
|
+
],
|
|
15
|
+
{
|
|
16
|
+
variants: {
|
|
17
|
+
variant: {
|
|
18
|
+
solid: [
|
|
19
|
+
'bg-surface-primary border border-stroke-secondary',
|
|
20
|
+
Platform.select({
|
|
21
|
+
default: 'data-[active=true]:bg-surface-primary-active',
|
|
22
|
+
web: 'data-[hover=true]:bg-surface-primary-hover data-[active=true]:data-[hover=true]:bg-surface-secondary-active',
|
|
23
|
+
}),
|
|
24
|
+
],
|
|
25
|
+
ghost: [
|
|
26
|
+
'bg-transparent',
|
|
27
|
+
Platform.select({
|
|
28
|
+
default: 'data-[active=true]:bg-surface-primary-active',
|
|
29
|
+
web: 'data-[hover=true]:bg-surface-primary-hover data-[active=true]:data-[hover=true]:bg-surface-secondary-active',
|
|
30
|
+
}),
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
size: {
|
|
34
|
+
default: 'h-11 w-11 min-w-11 shrink-0 p-2.5',
|
|
35
|
+
small: 'h-8 w-8 min-w-8 shrink-0 p-1.5',
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
defaultVariants: {
|
|
39
|
+
variant: 'solid',
|
|
40
|
+
size: 'default',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
export const iconButtonGlyphVariants = cva([], {
|
|
46
|
+
variants: {
|
|
47
|
+
size: {
|
|
48
|
+
default: 'size-6',
|
|
49
|
+
small: 'size-5',
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
defaultVariants: {
|
|
53
|
+
size: 'default',
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
export const iconButtonIconColorVariants = cva(['text-content-primary']);
|
|
58
|
+
|
|
59
|
+
export type IconButtonVariantProps = VariantProps<typeof iconButtonRootVariants>;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin wrapper around React Native's `Image`.
|
|
3
|
+
*
|
|
4
|
+
* Design-system layout (sizes, radii, loading/error UI) is intentionally
|
|
5
|
+
* NOT baked in here — use purpose-built components like `Avatar` instead.
|
|
6
|
+
*
|
|
7
|
+
* What this wrapper adds over a raw RN `Image`:
|
|
8
|
+
* - Accepts a plain URI **string** as `source` (auto-normalized to `{ uri }`).
|
|
9
|
+
* - Extends the prop surface with **web-only** HTML attributes (`sizes`,
|
|
10
|
+
* `loading`, `decoding`, etc.) for better `react-native-web` support.
|
|
11
|
+
* Props already covered by RN 0.81+ (`alt`, `srcSet`, `crossOrigin`,
|
|
12
|
+
* `referrerPolicy`) are inherited from the native typings.
|
|
13
|
+
* - All other props and `ref` are forwarded to the underlying `Image`.
|
|
14
|
+
*
|
|
15
|
+
* Inspired by Expo's html-elements Image primitive:
|
|
16
|
+
* @see https://github.com/expo/expo/blob/main/packages/html-elements/src/primitives/Image.tsx
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { forwardRef, type ComponentPropsWithoutRef, type ComponentRef } from 'react';
|
|
20
|
+
import { Image as RNImage, type ImageSourcePropType } from 'react-native';
|
|
21
|
+
|
|
22
|
+
/** Coerces a plain URI string into the `{ uri }` shape RN expects. */
|
|
23
|
+
function normalizeSource(source: string | ImageSourcePropType): ImageSourcePropType {
|
|
24
|
+
if (typeof source === 'string') {
|
|
25
|
+
return { uri: source };
|
|
26
|
+
}
|
|
27
|
+
return source;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Web-oriented props not yet covered by react-native's Image typings.
|
|
32
|
+
// Props already present in RN 0.81+ (alt, srcSet, crossOrigin,
|
|
33
|
+
// referrerPolicy) are inherited from the native Image props.
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* HTML-ish attributes not in RN’s core typings. Forwarded to `Image` with `...props`;
|
|
38
|
+
* **react-native-web** maps supported ones to the DOM `<img>`. On iOS/Android they are
|
|
39
|
+
* typically ignored (no visual effect).
|
|
40
|
+
*/
|
|
41
|
+
export interface WebImageProps {
|
|
42
|
+
/** DOM `sizes` for responsive selection with `srcSet` — web only. */
|
|
43
|
+
sizes?: string;
|
|
44
|
+
/** DOM lazy-loading hint — web only. */
|
|
45
|
+
loading?: 'lazy' | 'eager';
|
|
46
|
+
/** DOM decode hint — web only. */
|
|
47
|
+
decoding?: 'async' | 'auto' | 'sync';
|
|
48
|
+
/** DOM drag behavior — web only. */
|
|
49
|
+
draggable?: boolean;
|
|
50
|
+
/** DOM focus order — web only. */
|
|
51
|
+
tabIndex?: number;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
// ImageProps = native Image props (minus `source`) + WebImageProps + our overrides.
|
|
56
|
+
// `source` is re-declared to also accept a plain string.
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
|
|
59
|
+
export type ImageProps = WebImageProps &
|
|
60
|
+
Omit<ComponentPropsWithoutRef<typeof RNImage>, 'source'> & {
|
|
61
|
+
/** URI string (normalized to `{ uri }`) or standard `ImageSourcePropType`. */
|
|
62
|
+
source: string | ImageSourcePropType;
|
|
63
|
+
className?: string;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
// Component
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
|
|
70
|
+
export const Image = forwardRef<ComponentRef<typeof RNImage>, ImageProps>(function Image(
|
|
71
|
+
{ source, ...props },
|
|
72
|
+
ref,
|
|
73
|
+
) {
|
|
74
|
+
return <RNImage source={normalizeSource(source)} {...props} ref={ref} />;
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
Image.displayName = 'Image';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Image, type ImageProps, type WebImageProps } from './Image';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TextInput, type TextInputProps } from 'react-native';
|
|
3
|
+
|
|
4
|
+
const androidDefaults = {
|
|
5
|
+
includeFontPadding: false,
|
|
6
|
+
textAlignVertical: 'center' as const,
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export const BaseInput = forwardRef<TextInput, TextInputProps>((props, ref) => (
|
|
10
|
+
<TextInput ref={ref} {...props} style={[androidDefaults, props.style]} />
|
|
11
|
+
));
|
|
12
|
+
|
|
13
|
+
BaseInput.displayName = 'BaseInput';
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
type IInputSlotProps,
|
|
8
8
|
} from '@cdx-ui/primitives';
|
|
9
9
|
import { cn, useStyleContext, withStyleContext } from '@cdx-ui/utils';
|
|
10
|
+
import { Icon, IconProps } from '../Icon';
|
|
10
11
|
import { BaseInput } from './BaseInput';
|
|
11
12
|
import {
|
|
12
13
|
type InputVariantProps,
|
|
@@ -25,7 +26,6 @@ const useInputStyleContext = () => useStyleContext(SCOPE) as InputVariantProps;
|
|
|
25
26
|
|
|
26
27
|
const InputPrimitive = createInput({
|
|
27
28
|
Root,
|
|
28
|
-
Icon: View,
|
|
29
29
|
Slot: View,
|
|
30
30
|
Field: BaseInput,
|
|
31
31
|
});
|
|
@@ -40,7 +40,7 @@ export interface InputProps extends ViewProps, IInputFieldProps, InputVariantPro
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
const InputRoot = forwardRef<View, InputProps>(
|
|
43
|
-
({ variant = 'outline', size = '
|
|
43
|
+
({ variant = 'outline', size = 'default', className, children, style, ...props }, ref) => {
|
|
44
44
|
const computedClassName = cn(inputRootVariants({ variant, size }), className);
|
|
45
45
|
|
|
46
46
|
return (
|
|
@@ -103,9 +103,7 @@ export interface InputSlotProps extends ViewProps, IInputSlotProps {
|
|
|
103
103
|
|
|
104
104
|
const InputSlot = forwardRef<View, InputSlotProps>(
|
|
105
105
|
({ className, children, style, ...props }, ref) => {
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
const computedClassName = cn(inputSlotVariants({ size }), className);
|
|
106
|
+
const computedClassName = cn(inputSlotVariants(), className);
|
|
109
107
|
|
|
110
108
|
return (
|
|
111
109
|
<InputPrimitive.Slot ref={ref} className={computedClassName} style={style} {...props}>
|
|
@@ -121,24 +119,15 @@ InputSlot.displayName = 'Input.Slot';
|
|
|
121
119
|
// INPUT ICON
|
|
122
120
|
// =============================================================================
|
|
123
121
|
|
|
124
|
-
export interface InputIconProps extends
|
|
125
|
-
className?: string;
|
|
126
|
-
children?: ReactNode;
|
|
127
|
-
}
|
|
122
|
+
export interface InputIconProps extends Omit<IconProps, 'children'> {}
|
|
128
123
|
|
|
129
|
-
const InputIcon =
|
|
130
|
-
|
|
131
|
-
const { size } = useInputStyleContext();
|
|
124
|
+
const InputIcon = ({ className, style, as, ...props }: InputIconProps) => {
|
|
125
|
+
const { size } = useInputStyleContext();
|
|
132
126
|
|
|
133
|
-
|
|
127
|
+
const computedClassName = cn(inputIconVariants({ size }), className);
|
|
134
128
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
{children}
|
|
138
|
-
</InputPrimitive.Icon>
|
|
139
|
-
);
|
|
140
|
-
},
|
|
141
|
-
);
|
|
129
|
+
return <Icon as={as} className={computedClassName} style={style} {...props} />;
|
|
130
|
+
};
|
|
142
131
|
|
|
143
132
|
InputIcon.displayName = 'Input.Icon';
|
|
144
133
|
|
|
@@ -157,5 +146,3 @@ export const Input = Object.assign(InputRoot, {
|
|
|
157
146
|
Slot: InputSlot,
|
|
158
147
|
Icon: InputIcon,
|
|
159
148
|
}) as InputCompoundComponent;
|
|
160
|
-
|
|
161
|
-
export type { InputVariantProps };
|
|
@@ -1,83 +1,79 @@
|
|
|
1
1
|
import { cva, type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { DISABLED_CURSOR, TRANSITION_COLORS } from '../../styles/primitives';
|
|
2
3
|
|
|
3
4
|
export const inputRootVariants = cva(
|
|
4
5
|
[
|
|
5
|
-
'w-full flex-row items-
|
|
6
|
-
'
|
|
7
|
-
'
|
|
8
|
-
'
|
|
9
|
-
|
|
6
|
+
'w-full flex-row items-stretch overflow-hidden',
|
|
7
|
+
'bg-surface-primary',
|
|
8
|
+
'border-solid border-[length:var(--border-width-default)] border-stroke-primary',
|
|
9
|
+
'rounded-[var(--border-radius-default)]',
|
|
10
|
+
TRANSITION_COLORS,
|
|
11
|
+
'data-[disabled=true]:bg-surface-secondary',
|
|
12
|
+
'data-[disabled=true]:opacity-[--opacity-disabled]',
|
|
13
|
+
DISABLED_CURSOR,
|
|
14
|
+
'data-[readonly=true]:cursor-default',
|
|
15
|
+
'data-[readonly=true]:bg-surface-secondary',
|
|
16
|
+
'web:data-[hover=true]:data-[focus=false]:data-[invalid=false]:border-stroke-hover',
|
|
17
|
+
'data-[focus=true]:border-[length:var(--border-width-focused)]',
|
|
18
|
+
'data-[focus=true]:border-stroke-action',
|
|
19
|
+
'data-[invalid=true]:border-stroke-danger',
|
|
10
20
|
],
|
|
11
21
|
{
|
|
12
22
|
variants: {
|
|
13
23
|
variant: {
|
|
14
|
-
outline: [
|
|
15
|
-
'rounded-md px-3',
|
|
16
|
-
'web:focus-within:border-interactive-focus web:focus-within:ring-3 web:focus-within:ring-blue-300/50',
|
|
17
|
-
'web:data-[invalid=true]:focus-within:border-red-500 web:data-[invalid=true]:focus-within:ring-red-300/50',
|
|
18
|
-
],
|
|
19
|
-
underlined:
|
|
20
|
-
'rounded-none border-t-0 border-l-0 border-r-0 border-b-neutral-border data-[focus=true]:border-b-interactive-focus shadow-none',
|
|
24
|
+
outline: [],
|
|
21
25
|
},
|
|
22
26
|
size: {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
// TODO: Find a cleaner approach to preventing layout shift when focus border is applied.
|
|
28
|
+
default: ['h-10 px-4 py-2 gap-2', 'data-[focus=true]:px-[15px] data-[focus=true]:py-[7px]'],
|
|
29
|
+
small: [
|
|
30
|
+
'h-8 px-3 py-1.5 gap-1.5',
|
|
31
|
+
'data-[focus=true]:px-[11px] data-[focus=true]:py-[5px]',
|
|
32
|
+
],
|
|
26
33
|
},
|
|
27
34
|
},
|
|
28
35
|
defaultVariants: {
|
|
29
36
|
variant: 'outline',
|
|
30
|
-
size: '
|
|
37
|
+
size: 'default',
|
|
31
38
|
},
|
|
32
39
|
},
|
|
33
40
|
);
|
|
34
41
|
|
|
35
42
|
export const inputFieldVariants = cva(
|
|
36
43
|
[
|
|
37
|
-
'flex-1 bg-transparent
|
|
38
|
-
'
|
|
44
|
+
'flex-1 justify-center bg-transparent p-0',
|
|
45
|
+
'font-body text-content-primary',
|
|
46
|
+
'placeholder:text-content-tertiary',
|
|
39
47
|
'web:outline-none',
|
|
48
|
+
'tracking-normal',
|
|
40
49
|
],
|
|
41
50
|
{
|
|
42
51
|
variants: {
|
|
43
52
|
size: {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
lg: 'text-lg leading-none',
|
|
53
|
+
default: 'text-[0.875rem]',
|
|
54
|
+
small: 'text-[0.75rem]',
|
|
47
55
|
},
|
|
48
56
|
},
|
|
49
57
|
defaultVariants: {
|
|
50
|
-
size: '
|
|
58
|
+
size: 'default',
|
|
51
59
|
},
|
|
52
60
|
},
|
|
53
61
|
);
|
|
54
62
|
|
|
55
|
-
export const inputSlotVariants = cva(['items-center justify-center']
|
|
56
|
-
variants: {
|
|
57
|
-
size: {
|
|
58
|
-
sm: 'h-4 w-4',
|
|
59
|
-
md: 'h-5 w-5',
|
|
60
|
-
lg: 'h-6 w-6',
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
defaultVariants: {
|
|
64
|
-
size: 'sm',
|
|
65
|
-
},
|
|
66
|
-
});
|
|
63
|
+
export const inputSlotVariants = cva(['items-center justify-center self-center']);
|
|
67
64
|
|
|
68
|
-
export const inputIconVariants = cva(['text-
|
|
65
|
+
export const inputIconVariants = cva(['text-content-tertiary'], {
|
|
69
66
|
variants: {
|
|
70
67
|
size: {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
lg: 'h-5 w-5',
|
|
68
|
+
default: 'size-5',
|
|
69
|
+
small: 'size-4',
|
|
74
70
|
},
|
|
75
71
|
},
|
|
76
72
|
defaultVariants: {
|
|
77
|
-
size: '
|
|
73
|
+
size: 'default',
|
|
78
74
|
},
|
|
79
75
|
});
|
|
80
76
|
|
|
81
|
-
export const inputFieldPlaceholderVariants = cva(['accent-
|
|
77
|
+
export const inputFieldPlaceholderVariants = cva(['accent-content-tertiary']);
|
|
82
78
|
|
|
83
79
|
export type InputVariantProps = VariantProps<typeof inputRootVariants>;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { Pressable, Text as RNText, type TextProps, type View } from 'react-native';
|
|
3
|
+
import { createLink, type ILinkProps } from '@cdx-ui/primitives';
|
|
4
|
+
import { cn } from '@cdx-ui/utils';
|
|
5
|
+
import { Icon, type IconProps } from '../Icon';
|
|
6
|
+
import { linkRootVariants, linkLabelVariants, linkIconVariants } from './styles';
|
|
7
|
+
|
|
8
|
+
export { LinkProvider, type LinkConfig, type LinkAction } from '@cdx-ui/primitives';
|
|
9
|
+
|
|
10
|
+
const LinkPrimitive = createLink({
|
|
11
|
+
Root: Pressable,
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// STYLED ROOT COMPONENT
|
|
16
|
+
// =============================================================================
|
|
17
|
+
|
|
18
|
+
export interface LinkProps extends ILinkProps {
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const LinkRoot = forwardRef<View, LinkProps>(({ className, children, style, ...props }, ref) => {
|
|
23
|
+
const rootClassName = cn(linkRootVariants(), className);
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<LinkPrimitive ref={ref} className={rootClassName} style={style} {...props}>
|
|
27
|
+
{children}
|
|
28
|
+
</LinkPrimitive>
|
|
29
|
+
);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
LinkRoot.displayName = 'Link';
|
|
33
|
+
|
|
34
|
+
// =============================================================================
|
|
35
|
+
// STYLED LABEL COMPONENT
|
|
36
|
+
// =============================================================================
|
|
37
|
+
|
|
38
|
+
export interface LinkLabelProps extends TextProps {
|
|
39
|
+
className?: string;
|
|
40
|
+
children?: ReactNode;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const LinkLabel = forwardRef<RNText, LinkLabelProps>(
|
|
44
|
+
({ className, children, style, ...props }, ref) => {
|
|
45
|
+
const computedClassName = cn(linkLabelVariants(), className);
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<RNText ref={ref} className={computedClassName} style={style} {...props}>
|
|
49
|
+
{children}
|
|
50
|
+
</RNText>
|
|
51
|
+
);
|
|
52
|
+
},
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
LinkLabel.displayName = 'Link.Label';
|
|
56
|
+
|
|
57
|
+
// =============================================================================
|
|
58
|
+
// STYLED ICON COMPONENT
|
|
59
|
+
// =============================================================================
|
|
60
|
+
|
|
61
|
+
export interface LinkIconProps extends Omit<IconProps, 'children'> {}
|
|
62
|
+
|
|
63
|
+
const LinkIcon = ({ className, style, as, ...props }: LinkIconProps) => {
|
|
64
|
+
const computedClassName = cn(linkIconVariants(), className);
|
|
65
|
+
|
|
66
|
+
return <Icon as={as} className={computedClassName} style={style} {...props} />;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
LinkIcon.displayName = 'Link.Icon';
|
|
70
|
+
|
|
71
|
+
// =============================================================================
|
|
72
|
+
// COMPOUND COMPONENT EXPORT
|
|
73
|
+
// =============================================================================
|
|
74
|
+
|
|
75
|
+
type LinkCompoundComponent = typeof LinkRoot & {
|
|
76
|
+
Label: typeof LinkLabel;
|
|
77
|
+
Icon: typeof LinkIcon;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export const Link = Object.assign(LinkRoot, {
|
|
81
|
+
Label: LinkLabel,
|
|
82
|
+
Icon: LinkIcon,
|
|
83
|
+
}) as LinkCompoundComponent;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { cva, type VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { TRANSITION_COLORS } from '../../styles/primitives';
|
|
3
|
+
|
|
4
|
+
// TODO: Handle visited state
|
|
5
|
+
|
|
6
|
+
export const linkRootVariants = cva([
|
|
7
|
+
'flex-row items-center gap-1',
|
|
8
|
+
'web:outline-none web:focus:outline-none web:focus-visible:outline-none',
|
|
9
|
+
TRANSITION_COLORS,
|
|
10
|
+
'web:data-[focus-visible=true]:ring-2 web:data-[focus-visible=true]:ring-stroke-focus web:data-[focus-visible=true]:ring-offset-2',
|
|
11
|
+
]);
|
|
12
|
+
|
|
13
|
+
export const linkLabelVariants = cva([
|
|
14
|
+
'text-content-link',
|
|
15
|
+
'body-md',
|
|
16
|
+
'underline underline-offset-4',
|
|
17
|
+
]);
|
|
18
|
+
|
|
19
|
+
export const linkIconVariants = cva(['text-content-link', 'size-4']);
|
|
20
|
+
|
|
21
|
+
export type LinkVariantProps = VariantProps<typeof linkLabelVariants>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { ComponentProps, ComponentRef, ForwardedRef } from 'react';
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
import type { View } from 'react-native';
|
|
4
|
+
import { createOtpInput, type IOtpInputRootProps } from '@cdx-ui/primitives';
|
|
5
|
+
import { cn, useStyleContext, withStyleContext } from '@cdx-ui/utils';
|
|
6
|
+
import { HStack } from '../Stack/HStack';
|
|
7
|
+
import { Input, type InputProps } from '../Input';
|
|
8
|
+
import type { InputVariantProps } from '../Input/styles';
|
|
9
|
+
import {
|
|
10
|
+
otpCellVariants,
|
|
11
|
+
otpFieldVariants,
|
|
12
|
+
otpRootVariants,
|
|
13
|
+
type OtpInputVariantProps,
|
|
14
|
+
} from './styles';
|
|
15
|
+
|
|
16
|
+
const SCOPE = 'OTP_INPUT';
|
|
17
|
+
|
|
18
|
+
const OtpRoot = withStyleContext(HStack, SCOPE);
|
|
19
|
+
|
|
20
|
+
const useOtpInputStyleContext = () => useStyleContext(SCOPE) as InputVariantProps;
|
|
21
|
+
|
|
22
|
+
const OtpStyledCell = forwardRef<View, InputProps>(
|
|
23
|
+
({ className, children, ...props }, ref: ForwardedRef<View>) => {
|
|
24
|
+
const { size, variant } = useOtpInputStyleContext();
|
|
25
|
+
return (
|
|
26
|
+
<Input
|
|
27
|
+
ref={ref}
|
|
28
|
+
variant={variant}
|
|
29
|
+
size={size}
|
|
30
|
+
className={cn(otpCellVariants({ size }), className)}
|
|
31
|
+
{...props}
|
|
32
|
+
>
|
|
33
|
+
{children}
|
|
34
|
+
</Input>
|
|
35
|
+
);
|
|
36
|
+
},
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
OtpStyledCell.displayName = 'OtpInput.Cell';
|
|
40
|
+
|
|
41
|
+
const OtpStyledField = forwardRef<
|
|
42
|
+
ComponentRef<typeof Input.Field>,
|
|
43
|
+
ComponentProps<typeof Input.Field>
|
|
44
|
+
>(({ className, ...props }, ref) => {
|
|
45
|
+
const { size } = useOtpInputStyleContext();
|
|
46
|
+
return <Input.Field ref={ref} className={cn(otpFieldVariants({ size }), className)} {...props} />;
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
OtpStyledField.displayName = 'OtpInput.Field';
|
|
50
|
+
|
|
51
|
+
const OtpPrimitive = createOtpInput({
|
|
52
|
+
Root: OtpRoot,
|
|
53
|
+
Cell: OtpStyledCell,
|
|
54
|
+
Field: OtpStyledField,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
export interface OtpInputProps extends Omit<IOtpInputRootProps, 'size'>, OtpInputVariantProps {
|
|
58
|
+
variant?: NonNullable<InputProps['variant']>;
|
|
59
|
+
size?: NonNullable<InputProps['size']>;
|
|
60
|
+
className?: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export const OtpInput = forwardRef<View, OtpInputProps>(
|
|
64
|
+
({ variant = 'outline', size = 'default', fullWidth = true, className, style, ...rest }, ref) => {
|
|
65
|
+
const rootClassName = cn(otpRootVariants({ size, fullWidth }), className);
|
|
66
|
+
|
|
67
|
+
return (
|
|
68
|
+
<OtpPrimitive
|
|
69
|
+
ref={ref}
|
|
70
|
+
className={rootClassName}
|
|
71
|
+
style={style}
|
|
72
|
+
context={{ variant, size }}
|
|
73
|
+
{...rest}
|
|
74
|
+
/>
|
|
75
|
+
);
|
|
76
|
+
},
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
OtpInput.displayName = 'OtpInput';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { cva, type VariantProps } from 'class-variance-authority';
|
|
2
|
+
|
|
3
|
+
export const otpRootVariants = cva('flex-row items-stretch gap-2.5', {
|
|
4
|
+
variants: {
|
|
5
|
+
size: {
|
|
6
|
+
default: '',
|
|
7
|
+
small: '',
|
|
8
|
+
},
|
|
9
|
+
fullWidth: {
|
|
10
|
+
true: 'w-full self-stretch justify-center',
|
|
11
|
+
false: 'self-start',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
defaultVariants: {
|
|
15
|
+
size: 'default',
|
|
16
|
+
fullWidth: true,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
/** Narrow cell chrome: overrides Input root `w-full` / wide horizontal padding for one digit. */
|
|
21
|
+
export const otpCellVariants = cva('shrink-0 justify-center', {
|
|
22
|
+
variants: {
|
|
23
|
+
size: {
|
|
24
|
+
default: 'w-12 min-w-12 max-w-12 px-1',
|
|
25
|
+
small: 'w-10 min-w-10 max-w-10 px-0.5',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
defaultVariants: {
|
|
29
|
+
size: 'default',
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export const otpFieldVariants = cva('min-w-0 w-full text-center tabular-nums', {
|
|
34
|
+
variants: {
|
|
35
|
+
size: {
|
|
36
|
+
default: 'text-xl leading-6',
|
|
37
|
+
small: 'text-base leading-5',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
defaultVariants: {
|
|
41
|
+
size: 'default',
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
export type OtpInputVariantProps = VariantProps<typeof otpRootVariants>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { View, type ViewProps } from 'react-native';
|
|
3
|
+
import { createProgress, type IProgressProps } from '@cdx-ui/primitives';
|
|
4
|
+
import { cn } from '@cdx-ui/utils';
|
|
5
|
+
import {
|
|
6
|
+
progressBarIndicatorVariants,
|
|
7
|
+
progressBarTrackVariants,
|
|
8
|
+
type ProgressBarTrackVariantProps,
|
|
9
|
+
} from './styles';
|
|
10
|
+
|
|
11
|
+
const ProgressPrimitive = createProgress({
|
|
12
|
+
Root: View,
|
|
13
|
+
Indicator: View,
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
export interface ProgressBarProps extends IProgressProps, ProgressBarTrackVariantProps {
|
|
17
|
+
readonly className?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ProgressBarIndicatorProps extends ViewProps {
|
|
21
|
+
readonly className?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const ProgressBarRoot = forwardRef<View, ProgressBarProps>(
|
|
25
|
+
({ className, style, ...props }, ref) => {
|
|
26
|
+
const trackClass = cn(progressBarTrackVariants(), className);
|
|
27
|
+
|
|
28
|
+
return <ProgressPrimitive ref={ref} className={trackClass} style={style} {...props} />;
|
|
29
|
+
},
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
ProgressBarRoot.displayName = 'ProgressBar';
|
|
33
|
+
|
|
34
|
+
const ProgressBarIndicator = forwardRef<View, ProgressBarIndicatorProps>(
|
|
35
|
+
({ className, style, ...props }, ref) => (
|
|
36
|
+
<ProgressPrimitive.Indicator
|
|
37
|
+
ref={ref}
|
|
38
|
+
className={cn(progressBarIndicatorVariants(), className)}
|
|
39
|
+
style={style}
|
|
40
|
+
{...props}
|
|
41
|
+
/>
|
|
42
|
+
),
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
ProgressBarIndicator.displayName = 'ProgressBar.Indicator';
|
|
46
|
+
|
|
47
|
+
type ProgressBarCompoundComponent = typeof ProgressBarRoot & {
|
|
48
|
+
Indicator: typeof ProgressBarIndicator;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export const ProgressBar = Object.assign(ProgressBarRoot, {
|
|
52
|
+
Indicator: ProgressBarIndicator,
|
|
53
|
+
}) as ProgressBarCompoundComponent;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { cva, type VariantProps } from 'class-variance-authority';
|
|
2
|
+
|
|
3
|
+
export const progressBarTrackVariants = cva([
|
|
4
|
+
'w-full flex-row overflow-hidden rounded-full bg-surface-action-tint h-1',
|
|
5
|
+
]);
|
|
6
|
+
|
|
7
|
+
export const progressBarIndicatorVariants = cva(['rounded-full bg-surface-action-strong']);
|
|
8
|
+
|
|
9
|
+
export type ProgressBarTrackVariantProps = VariantProps<typeof progressBarTrackVariants>;
|