@idealyst/components 1.0.99 → 1.1.1
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/package.json +4 -4
- package/src/Accordion/Accordion.native.tsx +15 -0
- package/src/Accordion/Accordion.styles.tsx +17 -0
- package/src/Accordion/Accordion.web.tsx +15 -0
- package/src/Accordion/types.ts +2 -1
- package/src/Button/Button.native.tsx +55 -2
- package/src/Button/Button.styles.tsx +22 -0
- package/src/Button/Button.web.tsx +6 -2
- package/src/Button/types.ts +15 -0
- package/src/Card/Card.native.tsx +18 -5
- package/src/Card/Card.styles.tsx +123 -131
- package/src/Card/Card.web.tsx +17 -4
- package/src/Card/types.ts +3 -8
- package/src/Checkbox/Checkbox.native.tsx +7 -0
- package/src/Checkbox/Checkbox.styles.tsx +11 -0
- package/src/Checkbox/Checkbox.web.tsx +7 -0
- package/src/Checkbox/types.ts +2 -1
- package/src/Input/Input.native.tsx +7 -0
- package/src/Input/Input.styles.tsx +9 -0
- package/src/Input/Input.web.tsx +7 -0
- package/src/Input/types.ts +2 -1
- package/src/List/List.native.tsx +15 -0
- package/src/List/List.styles.tsx +17 -0
- package/src/List/List.web.tsx +15 -0
- package/src/List/types.ts +2 -1
- package/src/Pressable/Pressable.native.tsx +13 -1
- package/src/Pressable/Pressable.styles.tsx +24 -0
- package/src/Pressable/Pressable.web.tsx +24 -6
- package/src/Pressable/types.ts +3 -2
- package/src/RadioButton/RadioButton.native.tsx +7 -0
- package/src/RadioButton/RadioButton.styles.tsx +9 -0
- package/src/RadioButton/RadioButton.web.tsx +7 -0
- package/src/RadioButton/types.ts +2 -1
- package/src/Screen/Screen.native.tsx +25 -12
- package/src/Screen/Screen.styles.tsx +28 -16
- package/src/Screen/Screen.web.tsx +16 -3
- package/src/Screen/types.ts +4 -8
- package/src/Select/Select.native.tsx +7 -0
- package/src/Select/Select.styles.tsx +11 -0
- package/src/Select/Select.web.tsx +7 -0
- package/src/Select/types.ts +2 -1
- package/src/Slider/Slider.native.tsx +7 -0
- package/src/Slider/Slider.styles.tsx +11 -0
- package/src/Slider/Slider.web.tsx +7 -0
- package/src/Slider/types.ts +2 -1
- package/src/Switch/Switch.native.tsx +7 -0
- package/src/Switch/Switch.styles.tsx +11 -0
- package/src/Switch/Switch.web.tsx +7 -0
- package/src/Switch/types.ts +2 -1
- package/src/TabBar/TabBar.native.tsx +19 -1
- package/src/TabBar/TabBar.styles.tsx +17 -0
- package/src/TabBar/TabBar.web.tsx +20 -1
- package/src/TabBar/types.ts +2 -1
- package/src/Table/Table.native.tsx +15 -0
- package/src/Table/Table.styles.tsx +27 -0
- package/src/Table/Table.web.tsx +15 -0
- package/src/Table/types.ts +2 -1
- package/src/Text/Text.native.tsx +14 -3
- package/src/Text/Text.styles.tsx +36 -12
- package/src/Text/Text.web.tsx +15 -4
- package/src/Text/types.ts +15 -4
- package/src/TextArea/TextArea.native.tsx +7 -0
- package/src/TextArea/TextArea.styles.tsx +11 -0
- package/src/TextArea/TextArea.web.tsx +7 -0
- package/src/TextArea/types.ts +2 -1
- package/src/View/View.native.tsx +35 -12
- package/src/View/View.styles.tsx +78 -75
- package/src/View/View.web.tsx +18 -9
- package/src/View/types.ts +8 -23
- package/src/examples/AccordionExamples.tsx +32 -32
- package/src/examples/AlertExamples.tsx +42 -42
- package/src/examples/AvatarExamples.tsx +18 -18
- package/src/examples/BadgeExamples.tsx +30 -30
- package/src/examples/BreadcrumbExamples.tsx +64 -64
- package/src/examples/ButtonExamples.tsx +128 -16
- package/src/examples/CardExamples.tsx +28 -28
- package/src/examples/CheckboxExamples.tsx +25 -25
- package/src/examples/ChipExamples.tsx +17 -17
- package/src/examples/DialogExamples.tsx +17 -17
- package/src/examples/DividerExamples.tsx +21 -21
- package/src/examples/IconExamples.tsx +113 -113
- package/src/examples/ImageExamples.tsx +34 -34
- package/src/examples/InputExamples.tsx +20 -20
- package/src/examples/LinkExamples.tsx +23 -23
- package/src/examples/ListExamples.tsx +42 -42
- package/src/examples/MenuExamples.tsx +15 -15
- package/src/examples/PopoverExamples.tsx +23 -23
- package/src/examples/ProgressExamples.tsx +41 -41
- package/src/examples/RadioButtonExamples.tsx +21 -21
- package/src/examples/SVGImageExamples.tsx +25 -25
- package/src/examples/ScreenExamples.tsx +41 -41
- package/src/examples/SelectExamples.tsx +59 -59
- package/src/examples/SkeletonExamples.tsx +30 -30
- package/src/examples/SliderExamples.tsx +54 -54
- package/src/examples/SwitchExamples.tsx +20 -20
- package/src/examples/TabBarExamples.tsx +26 -26
- package/src/examples/TableExamples.tsx +36 -36
- package/src/examples/TextAreaExamples.tsx +25 -25
- package/src/examples/TextExamples.tsx +61 -66
- package/src/examples/ThemeExtensionExamples.tsx +12 -12
- package/src/examples/TooltipExamples.tsx +21 -21
- package/src/examples/VideoExamples.tsx +28 -28
- package/src/examples/ViewExamples.tsx +59 -59
- package/src/index.ts +4 -0
- package/src/utils/buildViewStyleVariants.ts +148 -0
- package/src/utils/viewStyleProps.ts +63 -0
|
@@ -4,51 +4,51 @@ import { Screen, View, Text } from '../index';
|
|
|
4
4
|
export const ScreenExamples = () => {
|
|
5
5
|
return (
|
|
6
6
|
<Screen background="primary" padding="lg">
|
|
7
|
-
<View
|
|
8
|
-
<Text
|
|
7
|
+
<View gap="lg">
|
|
8
|
+
<Text typography="h4" align="center">
|
|
9
9
|
Screen Examples
|
|
10
10
|
</Text>
|
|
11
11
|
|
|
12
12
|
{/* Background Examples */}
|
|
13
|
-
<View
|
|
14
|
-
<Text
|
|
15
|
-
<Text
|
|
13
|
+
<View gap="md">
|
|
14
|
+
<Text typography="subtitle1">Background Variants</Text>
|
|
15
|
+
<Text typography="caption" color="secondary">
|
|
16
16
|
Each Screen should have a different background color
|
|
17
17
|
</Text>
|
|
18
18
|
|
|
19
19
|
<View style={{ flexDirection: 'row', gap: 8, flexWrap: 'wrap' }}>
|
|
20
20
|
<View style={{ height: 100, width: 120, borderWidth: 1, borderColor: '#ccc' }}>
|
|
21
21
|
<Screen background="primary" padding="sm">
|
|
22
|
-
<View
|
|
23
|
-
<Text
|
|
24
|
-
<Text
|
|
22
|
+
<View gap="sm" style={{ alignItems: 'center', justifyContent: 'center', flex: 1 }}>
|
|
23
|
+
<Text typography="subtitle2">Primary</Text>
|
|
24
|
+
<Text typography="caption" color="secondary">Surface</Text>
|
|
25
25
|
</View>
|
|
26
26
|
</Screen>
|
|
27
27
|
</View>
|
|
28
28
|
|
|
29
29
|
<View style={{ height: 100, width: 120, borderWidth: 1, borderColor: '#ccc' }}>
|
|
30
30
|
<Screen background="secondary" padding="sm">
|
|
31
|
-
<View
|
|
32
|
-
<Text
|
|
33
|
-
<Text
|
|
31
|
+
<View gap="sm" style={{ alignItems: 'center', justifyContent: 'center', flex: 1 }}>
|
|
32
|
+
<Text typography="subtitle2">Secondary</Text>
|
|
33
|
+
<Text typography="caption" color="secondary">Surface</Text>
|
|
34
34
|
</View>
|
|
35
35
|
</Screen>
|
|
36
36
|
</View>
|
|
37
37
|
|
|
38
38
|
<View style={{ height: 100, width: 120, borderWidth: 1, borderColor: '#ccc' }}>
|
|
39
39
|
<Screen background="tertiary" padding="sm">
|
|
40
|
-
<View
|
|
41
|
-
<Text
|
|
42
|
-
<Text
|
|
40
|
+
<View gap="sm" style={{ alignItems: 'center', justifyContent: 'center', flex: 1 }}>
|
|
41
|
+
<Text typography="subtitle2">Tertiary</Text>
|
|
42
|
+
<Text typography="caption" color="secondary">Surface</Text>
|
|
43
43
|
</View>
|
|
44
44
|
</Screen>
|
|
45
45
|
</View>
|
|
46
46
|
|
|
47
47
|
<View style={{ height: 100, width: 120, borderWidth: 1, borderColor: '#ccc' }}>
|
|
48
48
|
<Screen background="inverse" padding="sm">
|
|
49
|
-
<View
|
|
50
|
-
<Text
|
|
51
|
-
<Text
|
|
49
|
+
<View gap="sm" style={{ alignItems: 'center', justifyContent: 'center', flex: 1 }}>
|
|
50
|
+
<Text typography="subtitle2" color="primary">Inverse</Text>
|
|
51
|
+
<Text typography="caption" color="secondary">Surface</Text>
|
|
52
52
|
</View>
|
|
53
53
|
</Screen>
|
|
54
54
|
</View>
|
|
@@ -56,18 +56,18 @@ export const ScreenExamples = () => {
|
|
|
56
56
|
</View>
|
|
57
57
|
|
|
58
58
|
{/* Padding Examples */}
|
|
59
|
-
<View
|
|
60
|
-
<Text
|
|
61
|
-
<Text
|
|
59
|
+
<View gap="md">
|
|
60
|
+
<Text typography="subtitle1">Padding Variants</Text>
|
|
61
|
+
<Text typography="caption" color="secondary">
|
|
62
62
|
Different padding options for Screen content
|
|
63
63
|
</Text>
|
|
64
64
|
|
|
65
65
|
<View style={{ flexDirection: 'row', gap: 8, flexWrap: 'wrap' }}>
|
|
66
66
|
<View style={{ height: 100, width: 120, borderWidth: 1, borderColor: '#ccc' }}>
|
|
67
|
-
<Screen background="secondary"
|
|
67
|
+
<Screen background="secondary">
|
|
68
68
|
<View style={{ alignItems: 'center', justifyContent: 'center', flex: 1, backgroundColor: 'rgba(255,0,0,0.1)' }}>
|
|
69
|
-
<Text
|
|
70
|
-
<Text
|
|
69
|
+
<Text typography="subtitle2">None</Text>
|
|
70
|
+
<Text typography="caption" color="secondary">No padding</Text>
|
|
71
71
|
</View>
|
|
72
72
|
</Screen>
|
|
73
73
|
</View>
|
|
@@ -75,8 +75,8 @@ export const ScreenExamples = () => {
|
|
|
75
75
|
<View style={{ height: 100, width: 120, borderWidth: 1, borderColor: '#ccc' }}>
|
|
76
76
|
<Screen background="secondary" padding="sm">
|
|
77
77
|
<View style={{ alignItems: 'center', justifyContent: 'center', flex: 1, backgroundColor: 'rgba(255,0,0,0.1)' }}>
|
|
78
|
-
<Text
|
|
79
|
-
<Text
|
|
78
|
+
<Text typography="subtitle2">Small</Text>
|
|
79
|
+
<Text typography="caption" color="secondary">8px</Text>
|
|
80
80
|
</View>
|
|
81
81
|
</Screen>
|
|
82
82
|
</View>
|
|
@@ -84,8 +84,8 @@ export const ScreenExamples = () => {
|
|
|
84
84
|
<View style={{ height: 100, width: 120, borderWidth: 1, borderColor: '#ccc' }}>
|
|
85
85
|
<Screen background="secondary" padding="md">
|
|
86
86
|
<View style={{ alignItems: 'center', justifyContent: 'center', flex: 1, backgroundColor: 'rgba(255,0,0,0.1)' }}>
|
|
87
|
-
<Text
|
|
88
|
-
<Text
|
|
87
|
+
<Text typography="subtitle2">Medium</Text>
|
|
88
|
+
<Text typography="caption" color="secondary">16px</Text>
|
|
89
89
|
</View>
|
|
90
90
|
</Screen>
|
|
91
91
|
</View>
|
|
@@ -93,8 +93,8 @@ export const ScreenExamples = () => {
|
|
|
93
93
|
<View style={{ height: 100, width: 120, borderWidth: 1, borderColor: '#ccc' }}>
|
|
94
94
|
<Screen background="secondary" padding="lg">
|
|
95
95
|
<View style={{ alignItems: 'center', justifyContent: 'center', flex: 1, backgroundColor: 'rgba(255,0,0,0.1)' }}>
|
|
96
|
-
<Text
|
|
97
|
-
<Text
|
|
96
|
+
<Text typography="subtitle2">Large</Text>
|
|
97
|
+
<Text typography="caption" color="secondary">24px</Text>
|
|
98
98
|
</View>
|
|
99
99
|
</Screen>
|
|
100
100
|
</View>
|
|
@@ -102,9 +102,9 @@ export const ScreenExamples = () => {
|
|
|
102
102
|
</View>
|
|
103
103
|
|
|
104
104
|
{/* Safe Area Examples */}
|
|
105
|
-
<View
|
|
106
|
-
<Text
|
|
107
|
-
<Text
|
|
105
|
+
<View gap="md">
|
|
106
|
+
<Text typography="subtitle1">Safe Area</Text>
|
|
107
|
+
<Text typography="caption" color="secondary">
|
|
108
108
|
Safe area padding for mobile devices
|
|
109
109
|
</Text>
|
|
110
110
|
|
|
@@ -112,8 +112,8 @@ export const ScreenExamples = () => {
|
|
|
112
112
|
<View style={{ height: 100, width: 120, borderWidth: 1, borderColor: '#ccc' }}>
|
|
113
113
|
<Screen background="tertiary" padding="sm" safeArea={false}>
|
|
114
114
|
<View style={{ alignItems: 'center', justifyContent: 'center', flex: 1, backgroundColor: 'rgba(0,255,0,0.1)' }}>
|
|
115
|
-
<Text
|
|
116
|
-
<Text
|
|
115
|
+
<Text typography="subtitle2">No Safe Area</Text>
|
|
116
|
+
<Text typography="caption" color="secondary">Standard</Text>
|
|
117
117
|
</View>
|
|
118
118
|
</Screen>
|
|
119
119
|
</View>
|
|
@@ -121,8 +121,8 @@ export const ScreenExamples = () => {
|
|
|
121
121
|
<View style={{ height: 100, width: 120, borderWidth: 1, borderColor: '#ccc' }}>
|
|
122
122
|
<Screen background="tertiary" padding="sm" safeArea={true}>
|
|
123
123
|
<View style={{ alignItems: 'center', justifyContent: 'center', flex: 1, backgroundColor: 'rgba(0,255,0,0.1)' }}>
|
|
124
|
-
<Text
|
|
125
|
-
<Text
|
|
124
|
+
<Text typography="subtitle2">Safe Area</Text>
|
|
125
|
+
<Text typography="caption" color="secondary">Mobile</Text>
|
|
126
126
|
</View>
|
|
127
127
|
</Screen>
|
|
128
128
|
</View>
|
|
@@ -130,18 +130,18 @@ export const ScreenExamples = () => {
|
|
|
130
130
|
</View>
|
|
131
131
|
|
|
132
132
|
{/* Usage Examples */}
|
|
133
|
-
<View
|
|
134
|
-
<Text
|
|
133
|
+
<View gap="md">
|
|
134
|
+
<Text typography="subtitle1">Common Usage</Text>
|
|
135
135
|
<View style={{ height: 120, borderWidth: 1, borderColor: '#ccc' }}>
|
|
136
136
|
<Screen background="primary" padding="lg">
|
|
137
137
|
<View style={{ alignItems: 'center', justifyContent: 'center', flex: 1 }}>
|
|
138
|
-
<Text
|
|
138
|
+
<Text typography="h4" align="center">
|
|
139
139
|
App Screen Layout
|
|
140
140
|
</Text>
|
|
141
|
-
<Text
|
|
141
|
+
<Text typography="body1" color="secondary" align="center">
|
|
142
142
|
Primary background with large padding
|
|
143
143
|
</Text>
|
|
144
|
-
<Text
|
|
144
|
+
<Text typography="caption" color="secondary" align="center">
|
|
145
145
|
Perfect for main app screens
|
|
146
146
|
</Text>
|
|
147
147
|
</View>
|
|
@@ -115,9 +115,9 @@ export const SelectExamples = () => {
|
|
|
115
115
|
|
|
116
116
|
return (
|
|
117
117
|
<Screen background="primary" padding="lg">
|
|
118
|
-
<View
|
|
118
|
+
<View gap="lg">
|
|
119
119
|
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
120
|
-
<Text
|
|
120
|
+
<Text typography="h4">
|
|
121
121
|
Select Component Examples
|
|
122
122
|
</Text>
|
|
123
123
|
<Button
|
|
@@ -132,15 +132,15 @@ export const SelectExamples = () => {
|
|
|
132
132
|
|
|
133
133
|
{/* Basic Usage */}
|
|
134
134
|
<Card type="outlined" padding="md">
|
|
135
|
-
<View
|
|
136
|
-
<Text
|
|
135
|
+
<View gap="md">
|
|
136
|
+
<Text typography="subtitle1">Basic Usage</Text>
|
|
137
137
|
<Select
|
|
138
138
|
options={fruitOptions}
|
|
139
139
|
value={basicSelect}
|
|
140
140
|
onValueChange={setBasicSelect}
|
|
141
141
|
placeholder="Choose a fruit"
|
|
142
142
|
/>
|
|
143
|
-
<Text
|
|
143
|
+
<Text typography="caption" color="secondary">
|
|
144
144
|
Selected: {basicSelect || 'None'}
|
|
145
145
|
</Text>
|
|
146
146
|
</View>
|
|
@@ -148,8 +148,8 @@ export const SelectExamples = () => {
|
|
|
148
148
|
|
|
149
149
|
{/* With Icons */}
|
|
150
150
|
<Card type="outlined" padding="md">
|
|
151
|
-
<View
|
|
152
|
-
<Text
|
|
151
|
+
<View gap="md">
|
|
152
|
+
<Text typography="subtitle1">With Icons</Text>
|
|
153
153
|
<Select
|
|
154
154
|
options={countryOptions}
|
|
155
155
|
value={countrySelect}
|
|
@@ -157,7 +157,7 @@ export const SelectExamples = () => {
|
|
|
157
157
|
placeholder="Select a country"
|
|
158
158
|
label="Country"
|
|
159
159
|
/>
|
|
160
|
-
<Text
|
|
160
|
+
<Text typography="caption" color="secondary">
|
|
161
161
|
Selected: {countrySelect || 'None'}
|
|
162
162
|
</Text>
|
|
163
163
|
</View>
|
|
@@ -165,8 +165,8 @@ export const SelectExamples = () => {
|
|
|
165
165
|
|
|
166
166
|
{/* Custom Icons */}
|
|
167
167
|
<Card type="outlined" padding="md">
|
|
168
|
-
<View
|
|
169
|
-
<Text
|
|
168
|
+
<View gap="md">
|
|
169
|
+
<Text typography="subtitle1">Custom Icon Components</Text>
|
|
170
170
|
<Select
|
|
171
171
|
options={priorityOptions}
|
|
172
172
|
value={prioritySelect}
|
|
@@ -174,7 +174,7 @@ export const SelectExamples = () => {
|
|
|
174
174
|
placeholder="Select priority"
|
|
175
175
|
label="Task Priority"
|
|
176
176
|
/>
|
|
177
|
-
<Text
|
|
177
|
+
<Text typography="caption" color="secondary">
|
|
178
178
|
Selected: {prioritySelect || 'None'}
|
|
179
179
|
</Text>
|
|
180
180
|
</View>
|
|
@@ -182,8 +182,8 @@ export const SelectExamples = () => {
|
|
|
182
182
|
|
|
183
183
|
{/* Disabled Options */}
|
|
184
184
|
<Card type="outlined" padding="md">
|
|
185
|
-
<View
|
|
186
|
-
<Text
|
|
185
|
+
<View gap="md">
|
|
186
|
+
<Text typography="subtitle1">Disabled Options</Text>
|
|
187
187
|
<Select
|
|
188
188
|
options={statusOptions}
|
|
189
189
|
value={statusSelect}
|
|
@@ -192,7 +192,7 @@ export const SelectExamples = () => {
|
|
|
192
192
|
label="Document Status"
|
|
193
193
|
helperText="Some options are disabled"
|
|
194
194
|
/>
|
|
195
|
-
<Text
|
|
195
|
+
<Text typography="caption" color="secondary">
|
|
196
196
|
Selected: {statusSelect || 'None'}
|
|
197
197
|
</Text>
|
|
198
198
|
</View>
|
|
@@ -200,8 +200,8 @@ export const SelectExamples = () => {
|
|
|
200
200
|
|
|
201
201
|
{/* Searchable */}
|
|
202
202
|
<Card type="outlined" padding="md">
|
|
203
|
-
<View
|
|
204
|
-
<Text
|
|
203
|
+
<View gap="md">
|
|
204
|
+
<Text typography="subtitle1">Searchable Select</Text>
|
|
205
205
|
<Select
|
|
206
206
|
options={fruitOptions}
|
|
207
207
|
value={searchableSelect}
|
|
@@ -211,7 +211,7 @@ export const SelectExamples = () => {
|
|
|
211
211
|
searchable
|
|
212
212
|
helperText="Type to filter options"
|
|
213
213
|
/>
|
|
214
|
-
<Text
|
|
214
|
+
<Text typography="caption" color="secondary">
|
|
215
215
|
Selected: {searchableSelect || 'None'}
|
|
216
216
|
</Text>
|
|
217
217
|
</View>
|
|
@@ -219,11 +219,11 @@ export const SelectExamples = () => {
|
|
|
219
219
|
|
|
220
220
|
{/* Sizes */}
|
|
221
221
|
<Card type="outlined" padding="md">
|
|
222
|
-
<View
|
|
223
|
-
<Text
|
|
224
|
-
<View
|
|
225
|
-
<View>
|
|
226
|
-
<Text
|
|
222
|
+
<View gap="md">
|
|
223
|
+
<Text typography="subtitle1">Sizes</Text>
|
|
224
|
+
<View gap="sm">
|
|
225
|
+
<View gap="xl">
|
|
226
|
+
<Text typography="body2">Small</Text>
|
|
227
227
|
<Select
|
|
228
228
|
options={fruitOptions.slice(0, 3)}
|
|
229
229
|
value={sizeSmall}
|
|
@@ -232,8 +232,8 @@ export const SelectExamples = () => {
|
|
|
232
232
|
size="sm"
|
|
233
233
|
/>
|
|
234
234
|
</View>
|
|
235
|
-
<View>
|
|
236
|
-
<Text
|
|
235
|
+
<View gap="xl">
|
|
236
|
+
<Text typography="body2">Medium (Default)</Text>
|
|
237
237
|
<Select
|
|
238
238
|
options={fruitOptions.slice(0, 3)}
|
|
239
239
|
value={sizeMedium}
|
|
@@ -242,8 +242,8 @@ export const SelectExamples = () => {
|
|
|
242
242
|
size="md"
|
|
243
243
|
/>
|
|
244
244
|
</View>
|
|
245
|
-
<View>
|
|
246
|
-
<Text
|
|
245
|
+
<View gap="xl">
|
|
246
|
+
<Text typography="body2">Large</Text>
|
|
247
247
|
<Select
|
|
248
248
|
options={fruitOptions.slice(0, 3)}
|
|
249
249
|
value={sizeLarge}
|
|
@@ -258,11 +258,11 @@ export const SelectExamples = () => {
|
|
|
258
258
|
|
|
259
259
|
{/* Variants */}
|
|
260
260
|
<Card type="outlined" padding="md">
|
|
261
|
-
<View
|
|
262
|
-
<Text
|
|
263
|
-
<View
|
|
264
|
-
<View>
|
|
265
|
-
<Text
|
|
261
|
+
<View gap="md">
|
|
262
|
+
<Text typography="subtitle1">Variants</Text>
|
|
263
|
+
<View gap="sm">
|
|
264
|
+
<View gap="xl">
|
|
265
|
+
<Text typography="body2">Outlined (Default)</Text>
|
|
266
266
|
<Select
|
|
267
267
|
options={fruitOptions.slice(0, 4)}
|
|
268
268
|
value={outlinedSelect}
|
|
@@ -271,8 +271,8 @@ export const SelectExamples = () => {
|
|
|
271
271
|
type="outlined"
|
|
272
272
|
/>
|
|
273
273
|
</View>
|
|
274
|
-
<View>
|
|
275
|
-
<Text
|
|
274
|
+
<View gap="xl">
|
|
275
|
+
<Text typography="body2">Filled</Text>
|
|
276
276
|
<Select
|
|
277
277
|
options={fruitOptions.slice(0, 4)}
|
|
278
278
|
value={filledSelect}
|
|
@@ -287,11 +287,11 @@ export const SelectExamples = () => {
|
|
|
287
287
|
|
|
288
288
|
{/* Intents */}
|
|
289
289
|
<Card type="outlined" padding="md">
|
|
290
|
-
<View
|
|
291
|
-
<Text
|
|
292
|
-
<View
|
|
293
|
-
<View>
|
|
294
|
-
<Text
|
|
290
|
+
<View gap="md">
|
|
291
|
+
<Text typography="subtitle1">Intent Colors</Text>
|
|
292
|
+
<View gap="sm">
|
|
293
|
+
<View gap="xl">
|
|
294
|
+
<Text typography="body2">Primary</Text>
|
|
295
295
|
<Select
|
|
296
296
|
options={fruitOptions.slice(0, 3)}
|
|
297
297
|
value={primarySelect}
|
|
@@ -301,8 +301,8 @@ export const SelectExamples = () => {
|
|
|
301
301
|
type="outlined"
|
|
302
302
|
/>
|
|
303
303
|
</View>
|
|
304
|
-
<View>
|
|
305
|
-
<Text
|
|
304
|
+
<View gap="xl">
|
|
305
|
+
<Text typography="body2">Success</Text>
|
|
306
306
|
<Select
|
|
307
307
|
options={fruitOptions.slice(0, 3)}
|
|
308
308
|
value={successSelect}
|
|
@@ -312,8 +312,8 @@ export const SelectExamples = () => {
|
|
|
312
312
|
type="outlined"
|
|
313
313
|
/>
|
|
314
314
|
</View>
|
|
315
|
-
<View>
|
|
316
|
-
<Text
|
|
315
|
+
<View gap="xl">
|
|
316
|
+
<Text typography="body2">Warning</Text>
|
|
317
317
|
<Select
|
|
318
318
|
options={fruitOptions.slice(0, 3)}
|
|
319
319
|
value={warningSelect}
|
|
@@ -323,8 +323,8 @@ export const SelectExamples = () => {
|
|
|
323
323
|
type="outlined"
|
|
324
324
|
/>
|
|
325
325
|
</View>
|
|
326
|
-
<View>
|
|
327
|
-
<Text
|
|
326
|
+
<View gap="xl">
|
|
327
|
+
<Text typography="body2">Error</Text>
|
|
328
328
|
<Select
|
|
329
329
|
options={fruitOptions.slice(0, 3)}
|
|
330
330
|
value={errorSelect}
|
|
@@ -340,8 +340,8 @@ export const SelectExamples = () => {
|
|
|
340
340
|
|
|
341
341
|
{/* Form Example */}
|
|
342
342
|
<Card type="outlined" padding="md">
|
|
343
|
-
<View
|
|
344
|
-
<Text
|
|
343
|
+
<View gap="md">
|
|
344
|
+
<Text typography="subtitle1">Form Integration</Text>
|
|
345
345
|
<Select
|
|
346
346
|
options={countryOptions}
|
|
347
347
|
value={formSelect}
|
|
@@ -370,8 +370,8 @@ export const SelectExamples = () => {
|
|
|
370
370
|
|
|
371
371
|
{/* Disabled State */}
|
|
372
372
|
<Card type="outlined" padding="md">
|
|
373
|
-
<View
|
|
374
|
-
<Text
|
|
373
|
+
<View gap="md">
|
|
374
|
+
<Text typography="subtitle1">Disabled State</Text>
|
|
375
375
|
<Select
|
|
376
376
|
options={fruitOptions}
|
|
377
377
|
value="apple"
|
|
@@ -386,9 +386,9 @@ export const SelectExamples = () => {
|
|
|
386
386
|
|
|
387
387
|
{/* Platform-specific Features */}
|
|
388
388
|
<Card type="outlined" padding="md">
|
|
389
|
-
<View
|
|
390
|
-
<Text
|
|
391
|
-
<Text
|
|
389
|
+
<View gap="md">
|
|
390
|
+
<Text typography="subtitle1">Platform Features</Text>
|
|
391
|
+
<Text typography="caption" color="secondary">
|
|
392
392
|
On iOS: Try the ActionSheet presentation mode for native feel
|
|
393
393
|
</Text>
|
|
394
394
|
<Select
|
|
@@ -407,14 +407,14 @@ export const SelectExamples = () => {
|
|
|
407
407
|
|
|
408
408
|
{/* Summary */}
|
|
409
409
|
<Card type="filled" padding="md">
|
|
410
|
-
<View
|
|
411
|
-
<Text
|
|
412
|
-
<Text
|
|
413
|
-
<Text
|
|
414
|
-
<Text
|
|
415
|
-
<Text
|
|
416
|
-
<Text
|
|
417
|
-
<Text
|
|
410
|
+
<View gap="sm">
|
|
411
|
+
<Text typography="subtitle1">Current Selections Summary</Text>
|
|
412
|
+
<Text typography="body2">Basic: {basicSelect || 'None'}</Text>
|
|
413
|
+
<Text typography="body2">Country: {countrySelect || 'None'}</Text>
|
|
414
|
+
<Text typography="body2">Priority: {prioritySelect || 'None'}</Text>
|
|
415
|
+
<Text typography="body2">Status: {statusSelect || 'None'}</Text>
|
|
416
|
+
<Text typography="body2">Searchable: {searchableSelect || 'None'}</Text>
|
|
417
|
+
<Text typography="body2">Form: {formSelect || 'None'}</Text>
|
|
418
418
|
</View>
|
|
419
419
|
</Card>
|
|
420
420
|
</View>
|
|
@@ -4,53 +4,53 @@ import { Screen, View, Text, Skeleton, SkeletonGroup, Divider, Card } from '../i
|
|
|
4
4
|
export const SkeletonExamples = () => {
|
|
5
5
|
return (
|
|
6
6
|
<Screen background="primary" safeArea>
|
|
7
|
-
<View
|
|
8
|
-
<Text
|
|
7
|
+
<View gap="lg" style={{ maxWidth: 800, width: '100%', paddingHorizontal: 16, marginHorizontal: 'auto' }}>
|
|
8
|
+
<Text typography="h3">Skeleton Examples</Text>
|
|
9
9
|
|
|
10
10
|
<Divider spacing="md" />
|
|
11
|
-
<Text
|
|
11
|
+
<Text typography="h5">Basic Shapes</Text>
|
|
12
12
|
|
|
13
|
-
<Text
|
|
13
|
+
<Text typography="subtitle1">Rectangle (Default)</Text>
|
|
14
14
|
<Skeleton width="100%" height={40} shape="rectangle" />
|
|
15
15
|
|
|
16
|
-
<Text
|
|
16
|
+
<Text typography="subtitle1">Rounded</Text>
|
|
17
17
|
<Skeleton width="100%" height={40} shape="rounded" />
|
|
18
18
|
|
|
19
|
-
<Text
|
|
19
|
+
<Text typography="subtitle1">Circle</Text>
|
|
20
20
|
<Skeleton width={64} height={64} shape="circle" />
|
|
21
21
|
|
|
22
22
|
<Divider spacing="md" />
|
|
23
|
-
<Text
|
|
23
|
+
<Text typography="h5">Custom Border Radius</Text>
|
|
24
24
|
|
|
25
25
|
<Skeleton width="100%" height={40} shape="rounded" borderRadius={4} />
|
|
26
26
|
<Skeleton width="100%" height={40} shape="rounded" borderRadius={16} />
|
|
27
27
|
<Skeleton width="100%" height={40} shape="rounded" borderRadius={24} />
|
|
28
28
|
|
|
29
29
|
<Divider spacing="md" />
|
|
30
|
-
<Text
|
|
30
|
+
<Text typography="h5">Animation Types</Text>
|
|
31
31
|
|
|
32
|
-
<Text
|
|
32
|
+
<Text typography="subtitle1">Pulse (Default)</Text>
|
|
33
33
|
<Skeleton width="100%" height={40} animation="pulse" />
|
|
34
34
|
|
|
35
|
-
<Text
|
|
35
|
+
<Text typography="subtitle1">Wave</Text>
|
|
36
36
|
<Skeleton width="100%" height={40} animation="wave" />
|
|
37
37
|
|
|
38
|
-
<Text
|
|
38
|
+
<Text typography="subtitle1">None</Text>
|
|
39
39
|
<Skeleton width="100%" height={40} animation="none" />
|
|
40
40
|
|
|
41
41
|
<Divider spacing="md" />
|
|
42
|
-
<Text
|
|
42
|
+
<Text typography="h5">Skeleton Groups</Text>
|
|
43
43
|
|
|
44
|
-
<Text
|
|
44
|
+
<Text typography="subtitle1">Default Group (3 items)</Text>
|
|
45
45
|
<SkeletonGroup />
|
|
46
46
|
|
|
47
|
-
<Text
|
|
47
|
+
<Text typography="subtitle1">Custom Count (5 items)</Text>
|
|
48
48
|
<SkeletonGroup count={5} />
|
|
49
49
|
|
|
50
|
-
<Text
|
|
50
|
+
<Text typography="subtitle1">Custom Spacing</Text>
|
|
51
51
|
<SkeletonGroup count={3} spacing={20} />
|
|
52
52
|
|
|
53
|
-
<Text
|
|
53
|
+
<Text typography="subtitle1">Custom Skeleton Props</Text>
|
|
54
54
|
<SkeletonGroup
|
|
55
55
|
count={4}
|
|
56
56
|
spacing={16}
|
|
@@ -62,10 +62,10 @@ export const SkeletonExamples = () => {
|
|
|
62
62
|
/>
|
|
63
63
|
|
|
64
64
|
<Divider spacing="md" />
|
|
65
|
-
<Text
|
|
65
|
+
<Text typography="h5">Profile Card Loading</Text>
|
|
66
66
|
|
|
67
67
|
<Card type="outlined">
|
|
68
|
-
<View
|
|
68
|
+
<View gap="md">
|
|
69
69
|
<View style={{ flexDirection: 'row', gap: 12, alignItems: 'center' }}>
|
|
70
70
|
<Skeleton width={64} height={64} shape="circle" />
|
|
71
71
|
<View style={{ flex: 1, gap: 8 }}>
|
|
@@ -78,10 +78,10 @@ export const SkeletonExamples = () => {
|
|
|
78
78
|
</Card>
|
|
79
79
|
|
|
80
80
|
<Divider spacing="md" />
|
|
81
|
-
<Text
|
|
81
|
+
<Text typography="h5">Article Card Loading</Text>
|
|
82
82
|
|
|
83
83
|
<Card type="outlined">
|
|
84
|
-
<View
|
|
84
|
+
<View gap="md">
|
|
85
85
|
<Skeleton width="100%" height={200} shape="rounded" />
|
|
86
86
|
<Skeleton width="80%" height={28} shape="rounded" />
|
|
87
87
|
<SkeletonGroup
|
|
@@ -97,10 +97,10 @@ export const SkeletonExamples = () => {
|
|
|
97
97
|
</Card>
|
|
98
98
|
|
|
99
99
|
<Divider spacing="md" />
|
|
100
|
-
<Text
|
|
100
|
+
<Text typography="h5">List Item Loading</Text>
|
|
101
101
|
|
|
102
102
|
<Card type="outlined">
|
|
103
|
-
<View
|
|
103
|
+
<View gap="md">
|
|
104
104
|
{[1, 2, 3].map((item) => (
|
|
105
105
|
<View key={item} style={{ flexDirection: 'row', gap: 12, alignItems: 'center' }}>
|
|
106
106
|
<Skeleton width={48} height={48} shape="rounded" />
|
|
@@ -114,10 +114,10 @@ export const SkeletonExamples = () => {
|
|
|
114
114
|
</Card>
|
|
115
115
|
|
|
116
116
|
<Divider spacing="md" />
|
|
117
|
-
<Text
|
|
117
|
+
<Text typography="h5">Table Loading</Text>
|
|
118
118
|
|
|
119
119
|
<Card type="outlined">
|
|
120
|
-
<View
|
|
120
|
+
<View gap="sm">
|
|
121
121
|
{/* Header */}
|
|
122
122
|
<View style={{ flexDirection: 'row', gap: 12 }}>
|
|
123
123
|
<Skeleton width={40} height={20} shape="rounded" />
|
|
@@ -139,12 +139,12 @@ export const SkeletonExamples = () => {
|
|
|
139
139
|
</Card>
|
|
140
140
|
|
|
141
141
|
<Divider spacing="md" />
|
|
142
|
-
<Text
|
|
142
|
+
<Text typography="h5">Dashboard Card Loading</Text>
|
|
143
143
|
|
|
144
144
|
<View style={{ flexDirection: 'row', gap: 16, flexWrap: 'wrap' }}>
|
|
145
145
|
{[1, 2, 3, 4].map((card) => (
|
|
146
146
|
<Card key={card} type="outlined" style={{ flex: 1, minWidth: 180 }}>
|
|
147
|
-
<View
|
|
147
|
+
<View gap="sm">
|
|
148
148
|
<Skeleton width="60%" height={16} shape="rounded" />
|
|
149
149
|
<Skeleton width="80%" height={32} shape="rounded" />
|
|
150
150
|
<Skeleton width="40%" height={12} shape="rounded" />
|
|
@@ -154,10 +154,10 @@ export const SkeletonExamples = () => {
|
|
|
154
154
|
</View>
|
|
155
155
|
|
|
156
156
|
<Divider spacing="md" />
|
|
157
|
-
<Text
|
|
157
|
+
<Text typography="h5">Comment Thread Loading</Text>
|
|
158
158
|
|
|
159
159
|
<Card type="outlined">
|
|
160
|
-
<View
|
|
160
|
+
<View gap="md">
|
|
161
161
|
{[1, 2, 3].map((comment) => (
|
|
162
162
|
<View key={comment} style={{ paddingLeft: comment > 1 ? 32 : 0 }}>
|
|
163
163
|
<View style={{ flexDirection: 'row', gap: 12 }}>
|
|
@@ -177,7 +177,7 @@ export const SkeletonExamples = () => {
|
|
|
177
177
|
</Card>
|
|
178
178
|
|
|
179
179
|
<Divider spacing="md" />
|
|
180
|
-
<Text
|
|
180
|
+
<Text typography="h5">Mixed Shapes and Sizes</Text>
|
|
181
181
|
|
|
182
182
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap' }}>
|
|
183
183
|
<Skeleton width={80} height={80} shape="circle" />
|
|
@@ -193,7 +193,7 @@ export const SkeletonExamples = () => {
|
|
|
193
193
|
</View>
|
|
194
194
|
|
|
195
195
|
<Divider spacing="md" />
|
|
196
|
-
<Text
|
|
196
|
+
<Text typography="h5">Custom Widths</Text>
|
|
197
197
|
|
|
198
198
|
<Skeleton width={100} height={20} shape="rounded" />
|
|
199
199
|
<Skeleton width="25%" height={20} shape="rounded" />
|