@idealyst/components 1.0.82 → 1.0.84
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/CLAUDE.md +199 -232
- package/README.md +5 -5
- package/package.json +25 -7
- package/plugin/README.md +272 -0
- package/plugin/test-cases.jsx +112 -0
- package/plugin/web-legacy.js +320 -0
- package/plugin/web.js +422 -124
- package/src/Accordion/Accordion.native.tsx +182 -0
- package/src/Accordion/Accordion.styles.tsx +260 -0
- package/src/Accordion/Accordion.web.tsx +147 -0
- package/src/Accordion/index.native.tsx +3 -0
- package/src/Accordion/index.ts +3 -0
- package/src/Accordion/index.web.tsx +3 -0
- package/src/Accordion/types.ts +23 -0
- package/src/ActivityIndicator/ActivityIndicator.native.tsx +17 -12
- package/src/ActivityIndicator/ActivityIndicator.styles.tsx +83 -109
- package/src/ActivityIndicator/ActivityIndicator.web.tsx +23 -17
- package/src/ActivityIndicator/index.ts +5 -2
- package/src/ActivityIndicator/index.web.ts +5 -2
- package/src/ActivityIndicator/types.ts +15 -10
- package/src/Alert/Alert.native.tsx +113 -0
- package/src/Alert/Alert.styles.tsx +304 -0
- package/src/Alert/Alert.web.tsx +123 -0
- package/src/Alert/index.native.ts +5 -0
- package/src/Alert/index.ts +5 -0
- package/src/Alert/index.web.ts +5 -0
- package/src/Alert/types.ts +21 -0
- package/src/Avatar/Avatar.native.tsx +8 -6
- package/src/Avatar/Avatar.styles.tsx +64 -58
- package/src/Avatar/Avatar.web.tsx +13 -8
- package/src/Avatar/index.ts +5 -2
- package/src/Avatar/index.web.ts +5 -2
- package/src/Avatar/types.ts +19 -13
- package/src/Badge/Badge.native.tsx +59 -14
- package/src/Badge/Badge.styles.tsx +125 -139
- package/src/Badge/Badge.web.tsx +72 -16
- package/src/Badge/index.ts +5 -2
- package/src/Badge/index.web.ts +5 -2
- package/src/Badge/types.ts +23 -11
- package/src/Breadcrumb/Breadcrumb.native.tsx +225 -0
- package/src/Breadcrumb/Breadcrumb.styles.tsx +234 -0
- package/src/Breadcrumb/Breadcrumb.web.tsx +268 -0
- package/src/Breadcrumb/index.native.ts +5 -0
- package/src/Breadcrumb/index.ts +5 -0
- package/src/Breadcrumb/index.web.ts +5 -0
- package/src/Breadcrumb/types.ts +56 -0
- package/src/Button/Button.native.tsx +75 -24
- package/src/Button/Button.styles.tsx +248 -205
- package/src/Button/Button.web.tsx +82 -25
- package/src/Button/index.ts +5 -5
- package/src/Button/index.web.ts +5 -3
- package/src/Button/types.ts +32 -15
- package/src/Card/Card.native.tsx +14 -11
- package/src/Card/Card.styles.tsx +146 -220
- package/src/Card/Card.web.tsx +20 -21
- package/src/Card/index.ts +5 -5
- package/src/Card/index.web.ts +5 -3
- package/src/Card/types.ts +24 -17
- package/src/Checkbox/Checkbox.native.tsx +24 -34
- package/src/Checkbox/Checkbox.styles.tsx +223 -275
- package/src/Checkbox/Checkbox.web.tsx +30 -37
- package/src/Checkbox/index.ts +5 -5
- package/src/Checkbox/index.web.ts +5 -3
- package/src/Checkbox/types.ts +26 -20
- package/src/Chip/Chip.native.tsx +126 -0
- package/src/Chip/Chip.styles.tsx +138 -0
- package/src/Chip/Chip.web.tsx +154 -0
- package/src/Chip/index.native.ts +5 -0
- package/src/Chip/index.ts +5 -0
- package/src/Chip/index.web.ts +5 -0
- package/src/Chip/types.ts +51 -0
- package/src/Dialog/Dialog.native.tsx +65 -12
- package/src/Dialog/Dialog.styles.tsx +154 -136
- package/src/Dialog/Dialog.web.tsx +16 -11
- package/src/Dialog/index.ts +5 -2
- package/src/Dialog/index.web.ts +5 -2
- package/src/Dialog/types.ts +22 -16
- package/src/Divider/Divider.native.tsx +19 -14
- package/src/Divider/Divider.styles.tsx +273 -595
- package/src/Divider/Divider.web.tsx +19 -12
- package/src/Divider/index.ts +5 -5
- package/src/Divider/index.web.ts +5 -3
- package/src/Divider/types.ts +28 -19
- package/src/Icon/Icon.native.tsx +17 -24
- package/src/Icon/Icon.styles.tsx +64 -48
- package/src/Icon/Icon.web.tsx +14 -11
- package/src/Icon/IconSvg/IconSvg.native.tsx +42 -0
- package/src/Icon/IconSvg/IconSvg.web.tsx +40 -0
- package/src/Icon/IconSvg/index.native.ts +1 -0
- package/src/Icon/IconSvg/index.ts +1 -0
- package/src/Icon/icon-resolver.native.ts +27 -0
- package/src/Icon/icon-resolver.ts +70 -0
- package/src/Icon/index.ts +5 -5
- package/src/Icon/index.web.ts +5 -3
- package/src/Icon/types.ts +17 -11
- package/src/Image/Image.native.tsx +86 -0
- package/src/Image/Image.styles.tsx +57 -0
- package/src/Image/Image.web.tsx +92 -0
- package/src/Image/index.native.ts +5 -0
- package/src/Image/index.ts +5 -0
- package/src/Image/types.ts +21 -0
- package/src/Input/Input.native.tsx +103 -26
- package/src/Input/Input.styles.tsx +240 -177
- package/src/Input/Input.web.tsx +141 -38
- package/src/Input/index.ts +5 -5
- package/src/Input/index.web.ts +5 -3
- package/src/Input/types.ts +43 -20
- package/src/List/List.native.tsx +56 -0
- package/src/List/List.styles.tsx +257 -0
- package/src/List/List.web.tsx +43 -0
- package/src/List/ListContext.tsx +16 -0
- package/src/List/ListItem.native.tsx +111 -0
- package/src/List/ListItem.web.tsx +110 -0
- package/src/List/ListSection.native.tsx +31 -0
- package/src/List/ListSection.web.tsx +33 -0
- package/src/List/index.native.tsx +5 -0
- package/src/List/index.ts +5 -0
- package/src/List/index.web.tsx +5 -0
- package/src/List/types.ts +42 -0
- package/src/Menu/Menu.native.tsx +150 -0
- package/src/Menu/Menu.styles.tsx +185 -0
- package/src/Menu/Menu.web.tsx +99 -0
- package/src/Menu/MenuItem.native.tsx +66 -0
- package/src/Menu/MenuItem.styles.tsx +119 -0
- package/src/Menu/MenuItem.web.tsx +67 -0
- package/src/Menu/index.native.ts +3 -0
- package/src/Menu/index.ts +3 -0
- package/src/Menu/index.web.ts +3 -0
- package/src/Menu/types.ts +30 -0
- package/src/Popover/Popover.native.tsx +102 -32
- package/src/Popover/Popover.styles.tsx +100 -67
- package/src/Popover/Popover.web.tsx +36 -260
- package/src/Popover/index.ts +5 -2
- package/src/Popover/index.web.ts +5 -2
- package/src/Popover/types.ts +14 -13
- package/src/Pressable/Pressable.native.tsx +7 -6
- package/src/Pressable/Pressable.web.tsx +8 -6
- package/src/Pressable/index.ts +5 -2
- package/src/Pressable/index.web.ts +5 -2
- package/src/Pressable/types.ts +11 -10
- package/src/Progress/Progress.native.tsx +179 -0
- package/src/Progress/Progress.styles.tsx +164 -0
- package/src/Progress/Progress.web.tsx +144 -0
- package/src/Progress/index.native.ts +1 -0
- package/src/Progress/index.ts +5 -0
- package/src/Progress/index.web.ts +5 -0
- package/src/Progress/types.ts +21 -0
- package/src/RadioButton/RadioButton.native.tsx +88 -0
- package/src/RadioButton/RadioButton.styles.tsx +163 -0
- package/src/RadioButton/RadioButton.web.tsx +85 -0
- package/src/RadioButton/RadioGroup.native.tsx +43 -0
- package/src/RadioButton/RadioGroup.web.tsx +49 -0
- package/src/RadioButton/index.native.ts +2 -0
- package/src/RadioButton/index.ts +2 -0
- package/src/RadioButton/index.web.ts +2 -0
- package/src/RadioButton/types.ts +29 -0
- package/src/SVGImage/SVGImage.native.tsx +9 -7
- package/src/SVGImage/SVGImage.styles.tsx +63 -55
- package/src/SVGImage/SVGImage.web.tsx +16 -13
- package/src/SVGImage/index.ts +5 -5
- package/src/SVGImage/index.web.ts +5 -2
- package/src/SVGImage/types.ts +7 -3
- package/src/Screen/Screen.native.tsx +43 -17
- package/src/Screen/Screen.styles.tsx +58 -54
- package/src/Screen/Screen.web.tsx +11 -5
- package/src/Screen/index.ts +5 -2
- package/src/Screen/index.web.ts +5 -2
- package/src/Screen/types.ts +23 -9
- package/src/Select/Select.native.tsx +347 -0
- package/src/Select/Select.styles.tsx +335 -0
- package/src/Select/Select.web.tsx +276 -0
- package/src/Select/index.native.ts +2 -0
- package/src/Select/index.ts +5 -0
- package/src/Select/index.web.ts +5 -0
- package/src/Select/types.ts +124 -0
- package/src/Skeleton/Skeleton.native.tsx +139 -0
- package/src/Skeleton/Skeleton.styles.tsx +59 -0
- package/src/Skeleton/Skeleton.web.tsx +112 -0
- package/src/Skeleton/index.native.ts +4 -0
- package/src/Skeleton/index.ts +5 -0
- package/src/Skeleton/index.web.ts +5 -0
- package/src/Skeleton/types.ts +75 -0
- package/src/Slider/Slider.native.tsx +248 -0
- package/src/Slider/Slider.styles.tsx +241 -0
- package/src/Slider/Slider.web.tsx +226 -0
- package/src/Slider/index.native.ts +3 -0
- package/src/Slider/index.ts +5 -0
- package/src/Slider/index.web.ts +5 -0
- package/src/Slider/types.ts +31 -0
- package/src/Switch/Switch.native.tsx +131 -0
- package/src/Switch/Switch.styles.tsx +169 -0
- package/src/Switch/Switch.web.tsx +121 -0
- package/src/Switch/index.native.ts +3 -0
- package/src/Switch/index.ts +5 -0
- package/src/Switch/index.web.ts +5 -0
- package/src/Switch/types.ts +21 -0
- package/src/TabBar/TabBar.native.tsx +142 -0
- package/src/TabBar/TabBar.styles.tsx +399 -0
- package/src/TabBar/TabBar.web.tsx +205 -0
- package/src/TabBar/index.native.tsx +3 -0
- package/src/TabBar/index.ts +3 -0
- package/src/TabBar/index.web.tsx +3 -0
- package/src/TabBar/types.ts +26 -0
- package/src/Table/Table.native.tsx +122 -0
- package/src/Table/Table.styles.tsx +283 -0
- package/src/Table/Table.web.tsx +112 -0
- package/src/Table/index.native.tsx +3 -0
- package/src/Table/index.ts +3 -0
- package/src/Table/index.web.tsx +3 -0
- package/src/Table/types.ts +28 -0
- package/src/Text/Text.native.tsx +12 -11
- package/src/Text/Text.styles.tsx +76 -64
- package/src/Text/Text.web.tsx +14 -9
- package/src/Text/index.ts +5 -5
- package/src/Text/index.web.ts +5 -3
- package/src/Text/types.ts +20 -13
- package/src/TextArea/TextArea.native.tsx +134 -0
- package/src/TextArea/TextArea.styles.tsx +175 -0
- package/src/TextArea/TextArea.web.tsx +156 -0
- package/src/TextArea/index.native.ts +3 -0
- package/src/TextArea/index.ts +3 -0
- package/src/TextArea/index.web.ts +3 -0
- package/src/TextArea/types.ts +30 -0
- package/src/Tooltip/Tooltip.native.tsx +165 -0
- package/src/Tooltip/Tooltip.styles.tsx +73 -0
- package/src/Tooltip/Tooltip.web.tsx +87 -0
- package/src/Tooltip/index.native.ts +3 -0
- package/src/Tooltip/index.ts +3 -0
- package/src/Tooltip/types.ts +18 -0
- package/src/Video/Video.native.tsx +105 -0
- package/src/Video/Video.styles.tsx +39 -0
- package/src/Video/Video.web.tsx +115 -0
- package/src/Video/index.native.ts +5 -0
- package/src/Video/index.ts +5 -0
- package/src/Video/types.ts +29 -0
- package/src/View/View.native.tsx +9 -14
- package/src/View/View.styles.tsx +101 -93
- package/src/View/View.web.tsx +16 -17
- package/src/View/index.ts +5 -5
- package/src/View/index.web.ts +5 -3
- package/src/View/types.ts +29 -21
- package/src/examples/AccordionExamples.tsx +126 -0
- package/src/examples/AlertExamples.tsx +280 -0
- package/src/examples/AvatarExamples.tsx +23 -23
- package/src/examples/BadgeExamples.tsx +109 -41
- package/src/examples/BreadcrumbExamples.tsx +312 -0
- package/src/examples/ButtonExamples.tsx +160 -33
- package/src/examples/CardExamples.tsx +40 -40
- package/src/examples/CheckboxExamples.tsx +12 -12
- package/src/examples/ChipExamples.tsx +197 -0
- package/src/examples/DialogExamples.tsx +22 -22
- package/src/examples/DividerExamples.tsx +49 -49
- package/src/examples/IconExamples.tsx +270 -54
- package/src/examples/ImageExamples.tsx +174 -0
- package/src/examples/InputExamples.tsx +75 -17
- package/src/examples/ListExamples.tsx +288 -0
- package/src/examples/MenuExamples.tsx +144 -0
- package/src/examples/PopoverExamples.tsx +69 -73
- package/src/examples/ProgressExamples.tsx +137 -0
- package/src/examples/RadioButtonExamples.tsx +161 -0
- package/src/examples/SVGImageExamples.tsx +19 -17
- package/src/examples/ScreenExamples.tsx +31 -31
- package/src/examples/SelectExamples.tsx +423 -0
- package/src/examples/SkeletonExamples.tsx +206 -0
- package/src/examples/SliderExamples.tsx +200 -0
- package/src/examples/SwitchExamples.tsx +182 -0
- package/src/examples/TabBarExamples.tsx +143 -0
- package/src/examples/TableExamples.tsx +280 -0
- package/src/examples/TextAreaExamples.tsx +173 -0
- package/src/examples/TextExamples.tsx +28 -32
- package/src/examples/ThemeExtensionExamples.tsx +10 -10
- package/src/examples/TooltipExamples.tsx +126 -0
- package/src/examples/VideoExamples.tsx +144 -0
- package/src/examples/ViewExamples.tsx +64 -56
- package/src/examples/index.ts +18 -3
- package/src/hooks/useMergeRefs.ts +16 -0
- package/src/hooks/useSmartPosition.native.ts +169 -0
- package/src/index.native.ts +80 -9
- package/src/index.ts +75 -1
- package/src/internal/BoundedModalContent.native.tsx +58 -0
- package/src/internal/PositionedPortal.tsx +254 -0
- package/src/internal/SafeAreaDebugOverlay.native.tsx +173 -0
- package/src/unistyles.d.ts +6 -0
- package/src/utils/buildSizeVariants.ts +16 -0
- package/src/utils/deepMerge.ts +43 -0
- package/src/utils/positionUtils.native.ts +280 -0
- package/src/utils/styleHelpers.ts +48 -0
- package/LLM-ACCESS-GUIDE.md +0 -143
- package/src/ActivityIndicator/README.md +0 -132
- package/src/Avatar/README.md +0 -139
- package/src/Badge/README.md +0 -170
- package/src/Button/Button.types.ts +0 -12
- package/src/Button/README.md +0 -262
- package/src/Card/README.md +0 -258
- package/src/Checkbox/README.md +0 -102
- package/src/Dialog/README.md +0 -210
- package/src/Divider/README.md +0 -108
- package/src/Icon/README.md +0 -81
- package/src/Input/README.md +0 -100
- package/src/SVGImage/README.md +0 -209
- package/src/Screen/README.md +0 -86
- package/src/Text/README.md +0 -94
- package/src/View/README.md +0 -107
- package/src/examples/AllExamples.tsx +0 -84
- package/src/examples/README.md +0 -136
- package/src/examples/ValidationExamples.tsx +0 -95
- package/src/examples/extendedTheme.ts +0 -329
- package/src/theme/breakpoints.ts +0 -8
- package/src/theme/colorResolver.ts +0 -218
- package/src/theme/colors.ts +0 -315
- package/src/theme/defaultThemes.ts +0 -326
- package/src/theme/index.ts +0 -188
- package/src/theme/themeBuilder.ts +0 -602
- package/src/theme/unistyles.d.ts +0 -6
- package/src/theme/variantHelpers.ts +0 -584
- package/src/theme/variants.ts +0 -56
|
@@ -5,35 +5,35 @@ export const BadgeExamples = () => {
|
|
|
5
5
|
return (
|
|
6
6
|
<Screen background="primary" padding="lg">
|
|
7
7
|
<View spacing="none">
|
|
8
|
-
<Text size="
|
|
8
|
+
<Text size="lg" weight="bold" align="center">
|
|
9
9
|
Badge Examples
|
|
10
10
|
</Text>
|
|
11
11
|
|
|
12
12
|
{/* Badge Variants */}
|
|
13
13
|
<View spacing="md">
|
|
14
|
-
<Text size="
|
|
14
|
+
<Text size="md" weight="semibold">Variants</Text>
|
|
15
15
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
16
|
-
<Badge
|
|
16
|
+
<Badge type="filled" color="blue">
|
|
17
17
|
Filled
|
|
18
18
|
</Badge>
|
|
19
|
-
<Badge
|
|
19
|
+
<Badge type="outlined" color="blue">
|
|
20
20
|
Outlined
|
|
21
21
|
</Badge>
|
|
22
|
-
<Badge
|
|
22
|
+
<Badge type="dot" color="blue" />
|
|
23
23
|
</View>
|
|
24
24
|
</View>
|
|
25
25
|
|
|
26
26
|
{/* Badge Sizes */}
|
|
27
27
|
<View spacing="md">
|
|
28
|
-
<Text size="
|
|
28
|
+
<Text size="md" weight="semibold">Sizes</Text>
|
|
29
29
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
30
|
-
<Badge size="
|
|
30
|
+
<Badge size="sm" color="blue">
|
|
31
31
|
Small
|
|
32
32
|
</Badge>
|
|
33
|
-
<Badge size="
|
|
33
|
+
<Badge size="md" color="blue">
|
|
34
34
|
Medium
|
|
35
35
|
</Badge>
|
|
36
|
-
<Badge size="
|
|
36
|
+
<Badge size="lg" color="blue">
|
|
37
37
|
Large
|
|
38
38
|
</Badge>
|
|
39
39
|
</View>
|
|
@@ -41,7 +41,7 @@ export const BadgeExamples = () => {
|
|
|
41
41
|
|
|
42
42
|
{/* Badge Colors */}
|
|
43
43
|
<View spacing="md">
|
|
44
|
-
<Text size="
|
|
44
|
+
<Text size="md" weight="semibold">Colors</Text>
|
|
45
45
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
46
46
|
<Badge color="blue">
|
|
47
47
|
Blue
|
|
@@ -66,7 +66,7 @@ export const BadgeExamples = () => {
|
|
|
66
66
|
|
|
67
67
|
{/* Badge Color Shades */}
|
|
68
68
|
<View spacing="md">
|
|
69
|
-
<Text size="
|
|
69
|
+
<Text size="md" weight="semibold">Color Shades</Text>
|
|
70
70
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
71
71
|
<Badge color="blue.200">
|
|
72
72
|
Blue 200
|
|
@@ -93,30 +93,30 @@ export const BadgeExamples = () => {
|
|
|
93
93
|
|
|
94
94
|
{/* Dot Badges */}
|
|
95
95
|
<View spacing="md">
|
|
96
|
-
<Text size="
|
|
96
|
+
<Text size="md" weight="semibold">Dot Badges</Text>
|
|
97
97
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
98
|
-
<Badge
|
|
99
|
-
<Badge
|
|
100
|
-
<Badge
|
|
101
|
-
<Badge
|
|
102
|
-
<Badge
|
|
98
|
+
<Badge type="dot" color="blue" size="sm" />
|
|
99
|
+
<Badge type="dot" color="green" size="md" />
|
|
100
|
+
<Badge type="dot" color="red" size="lg" />
|
|
101
|
+
<Badge type="dot" color="orange" size="md" />
|
|
102
|
+
<Badge type="dot" color="gray" size="md" />
|
|
103
103
|
</View>
|
|
104
104
|
</View>
|
|
105
105
|
|
|
106
106
|
{/* Number Badges */}
|
|
107
107
|
<View spacing="md">
|
|
108
|
-
<Text size="
|
|
108
|
+
<Text size="md" weight="semibold">Number Badges</Text>
|
|
109
109
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
110
|
-
<Badge color="red" size="
|
|
110
|
+
<Badge color="red" size="sm">
|
|
111
111
|
1
|
|
112
112
|
</Badge>
|
|
113
|
-
<Badge color="red" size="
|
|
113
|
+
<Badge color="red" size="md">
|
|
114
114
|
5
|
|
115
115
|
</Badge>
|
|
116
|
-
<Badge color="red" size="
|
|
116
|
+
<Badge color="red" size="lg">
|
|
117
117
|
99+
|
|
118
118
|
</Badge>
|
|
119
|
-
<Badge color="blue" size="
|
|
119
|
+
<Badge color="blue" size="md">
|
|
120
120
|
42
|
|
121
121
|
</Badge>
|
|
122
122
|
</View>
|
|
@@ -124,21 +124,21 @@ export const BadgeExamples = () => {
|
|
|
124
124
|
|
|
125
125
|
{/* Status Badges */}
|
|
126
126
|
<View spacing="md">
|
|
127
|
-
<Text size="
|
|
127
|
+
<Text size="md" weight="semibold">Status Badges</Text>
|
|
128
128
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
129
|
-
<Badge color="green"
|
|
129
|
+
<Badge color="green" type="filled">
|
|
130
130
|
ACTIVE
|
|
131
131
|
</Badge>
|
|
132
|
-
<Badge color="orange"
|
|
132
|
+
<Badge color="orange" type="filled">
|
|
133
133
|
PENDING
|
|
134
134
|
</Badge>
|
|
135
|
-
<Badge color="red"
|
|
135
|
+
<Badge color="red" type="filled">
|
|
136
136
|
INACTIVE
|
|
137
137
|
</Badge>
|
|
138
|
-
<Badge color="gray"
|
|
138
|
+
<Badge color="gray" type="outlined">
|
|
139
139
|
DRAFT
|
|
140
140
|
</Badge>
|
|
141
|
-
<Badge color="blue"
|
|
141
|
+
<Badge color="blue" type="outlined">
|
|
142
142
|
REVIEW
|
|
143
143
|
</Badge>
|
|
144
144
|
</View>
|
|
@@ -146,54 +146,122 @@ export const BadgeExamples = () => {
|
|
|
146
146
|
|
|
147
147
|
{/* Combined with Other Components */}
|
|
148
148
|
<View spacing="md">
|
|
149
|
-
<Text size="
|
|
149
|
+
<Text size="md" weight="semibold">With Other Components</Text>
|
|
150
150
|
<View spacing="sm">
|
|
151
151
|
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
|
|
152
152
|
<Text>Notifications</Text>
|
|
153
|
-
<Badge color="red" size="
|
|
153
|
+
<Badge color="red" size="sm">3</Badge>
|
|
154
154
|
</View>
|
|
155
155
|
|
|
156
156
|
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
|
|
157
157
|
<Text>Messages</Text>
|
|
158
|
-
<Badge color="blue" size="
|
|
158
|
+
<Badge color="blue" size="sm">12</Badge>
|
|
159
159
|
</View>
|
|
160
160
|
|
|
161
161
|
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
|
|
162
162
|
<Text>Status</Text>
|
|
163
|
-
<Badge color="green"
|
|
164
|
-
<Text size="
|
|
163
|
+
<Badge color="green" type="dot" />
|
|
164
|
+
<Text size="sm" color="secondary">Online</Text>
|
|
165
165
|
</View>
|
|
166
166
|
|
|
167
167
|
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
|
|
168
|
-
<Button size="
|
|
168
|
+
<Button size="sm" type="outlined">
|
|
169
169
|
Inbox
|
|
170
170
|
</Button>
|
|
171
|
-
<Badge color="red" size="
|
|
171
|
+
<Badge color="red" size="sm">99+</Badge>
|
|
172
172
|
</View>
|
|
173
173
|
</View>
|
|
174
174
|
</View>
|
|
175
175
|
|
|
176
176
|
{/* Category Badges */}
|
|
177
177
|
<View spacing="md">
|
|
178
|
-
<Text size="
|
|
178
|
+
<Text size="md" weight="semibold">Category Badges</Text>
|
|
179
179
|
<View style={{ flexDirection: 'row', gap: 8, flexWrap: 'wrap' }}>
|
|
180
|
-
<Badge color="blue"
|
|
180
|
+
<Badge color="blue" type="outlined">
|
|
181
181
|
React
|
|
182
182
|
</Badge>
|
|
183
|
-
<Badge color="green"
|
|
183
|
+
<Badge color="green" type="outlined">
|
|
184
184
|
TypeScript
|
|
185
185
|
</Badge>
|
|
186
|
-
<Badge color="yellow"
|
|
186
|
+
<Badge color="yellow" type="outlined">
|
|
187
187
|
JavaScript
|
|
188
188
|
</Badge>
|
|
189
|
-
<Badge color="orange"
|
|
189
|
+
<Badge color="orange" type="outlined">
|
|
190
190
|
CSS
|
|
191
191
|
</Badge>
|
|
192
|
-
<Badge color="gray"
|
|
192
|
+
<Badge color="gray" type="outlined">
|
|
193
193
|
HTML
|
|
194
194
|
</Badge>
|
|
195
195
|
</View>
|
|
196
196
|
</View>
|
|
197
|
+
|
|
198
|
+
{/* Badges with Icons */}
|
|
199
|
+
<View spacing="md">
|
|
200
|
+
<Text size="md" weight="semibold">Badges with Icons</Text>
|
|
201
|
+
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
202
|
+
<Badge color="blue" icon="information">
|
|
203
|
+
Info
|
|
204
|
+
</Badge>
|
|
205
|
+
<Badge color="green" icon="check-circle">
|
|
206
|
+
Success
|
|
207
|
+
</Badge>
|
|
208
|
+
<Badge color="red" icon="alert-circle">
|
|
209
|
+
Error
|
|
210
|
+
</Badge>
|
|
211
|
+
<Badge color="orange" icon="alert">
|
|
212
|
+
Warning
|
|
213
|
+
</Badge>
|
|
214
|
+
</View>
|
|
215
|
+
</View>
|
|
216
|
+
|
|
217
|
+
{/* Icon-only Badges */}
|
|
218
|
+
<View spacing="md">
|
|
219
|
+
<Text size="md" weight="semibold">Icon-only Badges</Text>
|
|
220
|
+
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
221
|
+
<Badge color="blue" icon="star" size="sm" />
|
|
222
|
+
<Badge color="green" icon="heart" size="md" />
|
|
223
|
+
<Badge color="red" icon="fire" size="lg" />
|
|
224
|
+
<Badge color="purple" icon="lightning-bolt" type="outlined" />
|
|
225
|
+
</View>
|
|
226
|
+
</View>
|
|
227
|
+
|
|
228
|
+
{/* Status Badges with Icons */}
|
|
229
|
+
<View spacing="md">
|
|
230
|
+
<Text size="md" weight="semibold">Status with Icons</Text>
|
|
231
|
+
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
232
|
+
<Badge color="green" icon="check">
|
|
233
|
+
VERIFIED
|
|
234
|
+
</Badge>
|
|
235
|
+
<Badge color="blue" icon="clock">
|
|
236
|
+
PENDING
|
|
237
|
+
</Badge>
|
|
238
|
+
<Badge color="red" icon="close">
|
|
239
|
+
REJECTED
|
|
240
|
+
</Badge>
|
|
241
|
+
<Badge color="gray" icon="email">
|
|
242
|
+
SENT
|
|
243
|
+
</Badge>
|
|
244
|
+
</View>
|
|
245
|
+
</View>
|
|
246
|
+
|
|
247
|
+
{/* Outlined Badges with Icons */}
|
|
248
|
+
<View spacing="md">
|
|
249
|
+
<Text size="md" weight="semibold">Outlined with Icons</Text>
|
|
250
|
+
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
251
|
+
<Badge color="blue" type="outlined" icon="download">
|
|
252
|
+
Download
|
|
253
|
+
</Badge>
|
|
254
|
+
<Badge color="green" type="outlined" icon="upload">
|
|
255
|
+
Upload
|
|
256
|
+
</Badge>
|
|
257
|
+
<Badge color="red" type="outlined" icon="delete">
|
|
258
|
+
Delete
|
|
259
|
+
</Badge>
|
|
260
|
+
<Badge color="purple" type="outlined" icon="share">
|
|
261
|
+
Share
|
|
262
|
+
</Badge>
|
|
263
|
+
</View>
|
|
264
|
+
</View>
|
|
197
265
|
</View>
|
|
198
266
|
</Screen>
|
|
199
267
|
);
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Screen, View , Text, Breadcrumb, Divider, Icon, BreadcrumbItem } from '../index';
|
|
3
|
+
|
|
4
|
+
export const BreadcrumbExamples = () => {
|
|
5
|
+
const basicItems: BreadcrumbItem[] = [
|
|
6
|
+
{ label: 'Home', onPress: () => console.log('Home') },
|
|
7
|
+
{ label: 'Products', onPress: () => console.log('Products') },
|
|
8
|
+
{ label: 'Category', onPress: () => console.log('Category') },
|
|
9
|
+
{ label: 'Item' },
|
|
10
|
+
];
|
|
11
|
+
|
|
12
|
+
const withIconsItems: BreadcrumbItem[] = [
|
|
13
|
+
{
|
|
14
|
+
label: 'Home',
|
|
15
|
+
icon: <Icon name="home" size="sm" />,
|
|
16
|
+
onPress: () => console.log('Home'),
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
label: 'Documents',
|
|
20
|
+
icon: <Icon name="folder" size="sm" />,
|
|
21
|
+
onPress: () => console.log('Documents'),
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
label: 'Projects',
|
|
25
|
+
icon: <Icon name="folder-open" size="sm" />,
|
|
26
|
+
onPress: () => console.log('Projects'),
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
label: 'Current File',
|
|
30
|
+
icon: <Icon name="file-document" size="sm" />,
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const withIconNamesItems: BreadcrumbItem[] = [
|
|
35
|
+
{
|
|
36
|
+
label: 'Home',
|
|
37
|
+
icon: 'home',
|
|
38
|
+
onPress: () => console.log('Home'),
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
label: 'Documents',
|
|
42
|
+
icon: 'folder',
|
|
43
|
+
onPress: () => console.log('Documents'),
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
label: 'Projects',
|
|
47
|
+
icon: 'folder-open',
|
|
48
|
+
onPress: () => console.log('Projects'),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
label: 'Current File',
|
|
52
|
+
icon: 'file-document',
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
const longPathItems: BreadcrumbItem[] = [
|
|
57
|
+
{ label: 'Home', onPress: () => console.log('Home') },
|
|
58
|
+
{ label: 'Level 1', onPress: () => console.log('Level 1') },
|
|
59
|
+
{ label: 'Level 2', onPress: () => console.log('Level 2') },
|
|
60
|
+
{ label: 'Level 3', onPress: () => console.log('Level 3') },
|
|
61
|
+
{ label: 'Level 4', onPress: () => console.log('Level 4') },
|
|
62
|
+
{ label: 'Level 5', onPress: () => console.log('Level 5') },
|
|
63
|
+
{ label: 'Current Page' },
|
|
64
|
+
];
|
|
65
|
+
|
|
66
|
+
return (
|
|
67
|
+
<Screen background="primary" safeArea padding="lg">
|
|
68
|
+
<View spacing="xl" style={{ maxWidth: 800, width: '100%', marginHorizontal: 'auto' }}>
|
|
69
|
+
<Text size="xl" weight="bold">Breadcrumb Examples</Text>
|
|
70
|
+
|
|
71
|
+
<View spacing="md">
|
|
72
|
+
<Text size="lg" weight="semibold">Basic Breadcrumb</Text>
|
|
73
|
+
<Breadcrumb items={basicItems} />
|
|
74
|
+
</View>
|
|
75
|
+
|
|
76
|
+
<View spacing="md">
|
|
77
|
+
<Text size="lg" weight="semibold">With Icons (Components)</Text>
|
|
78
|
+
<Breadcrumb items={withIconsItems} />
|
|
79
|
+
<Text size="sm" color="secondary">Using Icon components</Text>
|
|
80
|
+
</View>
|
|
81
|
+
|
|
82
|
+
<View spacing="md">
|
|
83
|
+
<Text size="lg" weight="semibold">With Icons (Icon Names)</Text>
|
|
84
|
+
<Breadcrumb items={withIconNamesItems} />
|
|
85
|
+
<Text size="sm" color="secondary">Using icon name strings (recommended)</Text>
|
|
86
|
+
</View>
|
|
87
|
+
|
|
88
|
+
<View spacing="md">
|
|
89
|
+
<Text size="lg" weight="semibold">Custom Separator</Text>
|
|
90
|
+
<View spacing="sm">
|
|
91
|
+
<Breadcrumb items={basicItems} separator=">" />
|
|
92
|
+
<Breadcrumb items={basicItems} separator="•" />
|
|
93
|
+
<Breadcrumb items={basicItems} separator={<Icon name="chevron-right" size="sm" />} />
|
|
94
|
+
</View>
|
|
95
|
+
</View>
|
|
96
|
+
|
|
97
|
+
<View spacing="md">
|
|
98
|
+
<Text size="lg" weight="semibold">Sizes</Text>
|
|
99
|
+
<View spacing="sm">
|
|
100
|
+
<View spacing="xs">
|
|
101
|
+
<Text size="md" weight="semibold">Small</Text>
|
|
102
|
+
<Breadcrumb items={basicItems} size="sm" />
|
|
103
|
+
</View>
|
|
104
|
+
<View spacing="xs">
|
|
105
|
+
<Text size="md" weight="semibold">Medium (Default)</Text>
|
|
106
|
+
<Breadcrumb items={basicItems} size="md" />
|
|
107
|
+
</View>
|
|
108
|
+
<View spacing="xs">
|
|
109
|
+
<Text size="md" weight="semibold">Large</Text>
|
|
110
|
+
<Breadcrumb items={basicItems} size="lg" />
|
|
111
|
+
</View>
|
|
112
|
+
</View>
|
|
113
|
+
</View>
|
|
114
|
+
|
|
115
|
+
<View spacing="md">
|
|
116
|
+
<Text size="lg" weight="semibold">Intent Colors</Text>
|
|
117
|
+
<View spacing="sm">
|
|
118
|
+
<View spacing="xs">
|
|
119
|
+
<Text size="md" weight="semibold">Primary (Default)</Text>
|
|
120
|
+
<Breadcrumb items={basicItems} intent="primary" />
|
|
121
|
+
</View>
|
|
122
|
+
<View spacing="xs">
|
|
123
|
+
<Text size="md" weight="semibold">Neutral</Text>
|
|
124
|
+
<Breadcrumb items={basicItems} intent="neutral" />
|
|
125
|
+
</View>
|
|
126
|
+
</View>
|
|
127
|
+
</View>
|
|
128
|
+
|
|
129
|
+
<View spacing="md">
|
|
130
|
+
<Text size="lg" weight="semibold">Truncation</Text>
|
|
131
|
+
<View spacing="sm">
|
|
132
|
+
<View spacing="xs">
|
|
133
|
+
<Text size="sm" color="secondary">Full path (7 items):</Text>
|
|
134
|
+
<Breadcrumb items={longPathItems} />
|
|
135
|
+
</View>
|
|
136
|
+
<View spacing="xs">
|
|
137
|
+
<Text size="sm" color="secondary">Truncated to 4 items (shows first + last 3):</Text>
|
|
138
|
+
<Breadcrumb items={longPathItems} maxItems={4} />
|
|
139
|
+
</View>
|
|
140
|
+
<View spacing="xs">
|
|
141
|
+
<Text size="sm" color="secondary">Truncated to 3 items (shows first + last 2):</Text>
|
|
142
|
+
<Breadcrumb items={longPathItems} maxItems={3} />
|
|
143
|
+
</View>
|
|
144
|
+
</View>
|
|
145
|
+
</View>
|
|
146
|
+
|
|
147
|
+
<View spacing="md">
|
|
148
|
+
<Text size="lg" weight="semibold">With Disabled Items</Text>
|
|
149
|
+
<Breadcrumb
|
|
150
|
+
items={[
|
|
151
|
+
{ label: 'Home', onPress: () => console.log('Home') },
|
|
152
|
+
{ label: 'Disabled Level', onPress: () => console.log('Disabled'), disabled: true },
|
|
153
|
+
{ label: 'Active Level', onPress: () => console.log('Active') },
|
|
154
|
+
{ label: 'Current Page' },
|
|
155
|
+
]}
|
|
156
|
+
/>
|
|
157
|
+
</View>
|
|
158
|
+
|
|
159
|
+
<View spacing="md">
|
|
160
|
+
<Text size="lg" weight="semibold">Non-clickable Items</Text>
|
|
161
|
+
<Breadcrumb
|
|
162
|
+
items={[
|
|
163
|
+
{ label: 'Home' },
|
|
164
|
+
{ label: 'Products' },
|
|
165
|
+
{ label: 'Category' },
|
|
166
|
+
{ label: 'Item' },
|
|
167
|
+
]}
|
|
168
|
+
/>
|
|
169
|
+
<Text size="sm" color="secondary">None of these items are clickable</Text>
|
|
170
|
+
</View>
|
|
171
|
+
|
|
172
|
+
<View spacing="md">
|
|
173
|
+
<Text size="lg" weight="semibold">Mixed Clickable & Non-clickable</Text>
|
|
174
|
+
<Breadcrumb
|
|
175
|
+
items={[
|
|
176
|
+
{ label: 'Home', onPress: () => console.log('Home') },
|
|
177
|
+
{ label: 'Static Section' },
|
|
178
|
+
{ label: 'Products', onPress: () => console.log('Products') },
|
|
179
|
+
{ label: 'Current Product' },
|
|
180
|
+
]}
|
|
181
|
+
/>
|
|
182
|
+
</View>
|
|
183
|
+
|
|
184
|
+
<View spacing="md">
|
|
185
|
+
<Text size="lg" weight="semibold">File System Example</Text>
|
|
186
|
+
<Breadcrumb
|
|
187
|
+
items={[
|
|
188
|
+
{
|
|
189
|
+
label: 'Root',
|
|
190
|
+
icon: <Icon name="harddisk" size="sm" />,
|
|
191
|
+
onPress: () => console.log('Root'),
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
label: 'Users',
|
|
195
|
+
icon: <Icon name="account-group" size="sm" />,
|
|
196
|
+
onPress: () => console.log('Users'),
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
label: 'Documents',
|
|
200
|
+
icon: <Icon name="folder" size="sm" />,
|
|
201
|
+
onPress: () => console.log('Documents'),
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
label: 'project-files',
|
|
205
|
+
icon: <Icon name="folder-open" size="sm" />,
|
|
206
|
+
onPress: () => console.log('project-files'),
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
label: 'index.tsx',
|
|
210
|
+
icon: <Icon name="file-document" size="sm" />,
|
|
211
|
+
},
|
|
212
|
+
]}
|
|
213
|
+
separator="/"
|
|
214
|
+
/>
|
|
215
|
+
</View>
|
|
216
|
+
|
|
217
|
+
<View spacing="md">
|
|
218
|
+
<Text size="lg" weight="semibold">E-commerce Example</Text>
|
|
219
|
+
<Breadcrumb
|
|
220
|
+
items={[
|
|
221
|
+
{ label: 'Shop', onPress: () => console.log('Shop') },
|
|
222
|
+
{ label: 'Electronics', onPress: () => console.log('Electronics') },
|
|
223
|
+
{ label: 'Computers', onPress: () => console.log('Computers') },
|
|
224
|
+
{ label: 'Laptops', onPress: () => console.log('Laptops') },
|
|
225
|
+
{ label: 'Gaming Laptops' },
|
|
226
|
+
]}
|
|
227
|
+
size="sm"
|
|
228
|
+
/>
|
|
229
|
+
</View>
|
|
230
|
+
|
|
231
|
+
<View spacing="md">
|
|
232
|
+
<Text size="lg" weight="semibold">Responsive Breadcrumbs</Text>
|
|
233
|
+
<Text size="sm" color="secondary">
|
|
234
|
+
Automatically collapses middle items into a dropdown menu on narrow screens
|
|
235
|
+
</Text>
|
|
236
|
+
<View spacing="sm">
|
|
237
|
+
<View spacing="xs">
|
|
238
|
+
<Text size="md" weight="semibold">Default (minVisibleItems: 3)</Text>
|
|
239
|
+
<Text size="sm" color="secondary">Shows first item + dropdown + last item</Text>
|
|
240
|
+
<Breadcrumb
|
|
241
|
+
items={longPathItems}
|
|
242
|
+
responsive
|
|
243
|
+
/>
|
|
244
|
+
</View>
|
|
245
|
+
<View spacing="xs">
|
|
246
|
+
<Text size="md" weight="semibold">More Visible Items (minVisibleItems: 4)</Text>
|
|
247
|
+
<Text size="sm" color="secondary">Shows first item + dropdown + last 2 items</Text>
|
|
248
|
+
<Breadcrumb
|
|
249
|
+
items={longPathItems}
|
|
250
|
+
responsive
|
|
251
|
+
minVisibleItems={4}
|
|
252
|
+
/>
|
|
253
|
+
</View>
|
|
254
|
+
<View spacing="xs">
|
|
255
|
+
<Text size="md" weight="semibold">Fewer Items (minVisibleItems: 2)</Text>
|
|
256
|
+
<Text size="sm" color="secondary">Shows first item + dropdown (all items collapsed)</Text>
|
|
257
|
+
<Breadcrumb
|
|
258
|
+
items={longPathItems}
|
|
259
|
+
responsive
|
|
260
|
+
minVisibleItems={2}
|
|
261
|
+
/>
|
|
262
|
+
</View>
|
|
263
|
+
</View>
|
|
264
|
+
</View>
|
|
265
|
+
|
|
266
|
+
<View spacing="md">
|
|
267
|
+
<Text size="lg" weight="semibold">Responsive with Icons</Text>
|
|
268
|
+
<Breadcrumb
|
|
269
|
+
items={[
|
|
270
|
+
{
|
|
271
|
+
label: 'Root',
|
|
272
|
+
icon: 'harddisk',
|
|
273
|
+
onPress: () => console.log('Root'),
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
label: 'Users',
|
|
277
|
+
icon: 'account-group',
|
|
278
|
+
onPress: () => console.log('Users'),
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
label: 'Documents',
|
|
282
|
+
icon: 'folder',
|
|
283
|
+
onPress: () => console.log('Documents'),
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
label: 'Projects',
|
|
287
|
+
icon: 'folder',
|
|
288
|
+
onPress: () => console.log('Projects'),
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
label: 'Work',
|
|
292
|
+
icon: 'folder',
|
|
293
|
+
onPress: () => console.log('Work'),
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
label: 'project-files',
|
|
297
|
+
icon: 'folder-open',
|
|
298
|
+
onPress: () => console.log('project-files'),
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
label: 'index.tsx',
|
|
302
|
+
icon: 'file-document',
|
|
303
|
+
},
|
|
304
|
+
]}
|
|
305
|
+
responsive
|
|
306
|
+
separator="/"
|
|
307
|
+
/>
|
|
308
|
+
</View>
|
|
309
|
+
</View>
|
|
310
|
+
</Screen>
|
|
311
|
+
);
|
|
312
|
+
};
|