@idealyst/components 1.0.83 → 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 +20 -2
- 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 +140 -63
- package/src/Select/Select.styles.tsx +312 -302
- package/src/Select/Select.web.tsx +156 -316
- package/src/Select/index.ts +5 -2
- package/src/Select/index.web.ts +5 -2
- package/src/Select/types.ts +13 -7
- 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 +67 -67
- 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 +17 -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 +71 -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/Select/README.md +0 -166
- package/src/Text/README.md +0 -94
- package/src/View/README.md +0 -107
- package/src/examples/AllExamples.tsx +0 -88
- 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
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Screen, View, Text, Skeleton, SkeletonGroup, Divider, Card } from '../index';
|
|
3
|
+
|
|
4
|
+
export const SkeletonExamples = () => {
|
|
5
|
+
return (
|
|
6
|
+
<Screen background="primary" safeArea>
|
|
7
|
+
<View spacing="lg" style={{ maxWidth: 800, width: '100%', paddingHorizontal: 16, marginHorizontal: 'auto' }}>
|
|
8
|
+
<Text size="xl" weight="bold">Skeleton Examples</Text>
|
|
9
|
+
|
|
10
|
+
<Divider spacing="md" />
|
|
11
|
+
<Text size="lg" weight="semibold">Basic Shapes</Text>
|
|
12
|
+
|
|
13
|
+
<Text size="md" weight="semibold">Rectangle (Default)</Text>
|
|
14
|
+
<Skeleton width="100%" height={40} shape="rectangle" />
|
|
15
|
+
|
|
16
|
+
<Text size="md" weight="semibold">Rounded</Text>
|
|
17
|
+
<Skeleton width="100%" height={40} shape="rounded" />
|
|
18
|
+
|
|
19
|
+
<Text size="md" weight="semibold">Circle</Text>
|
|
20
|
+
<Skeleton width={64} height={64} shape="circle" />
|
|
21
|
+
|
|
22
|
+
<Divider spacing="md" />
|
|
23
|
+
<Text size="lg" weight="semibold">Custom Border Radius</Text>
|
|
24
|
+
|
|
25
|
+
<Skeleton width="100%" height={40} shape="rounded" borderRadius={4} />
|
|
26
|
+
<Skeleton width="100%" height={40} shape="rounded" borderRadius={16} />
|
|
27
|
+
<Skeleton width="100%" height={40} shape="rounded" borderRadius={24} />
|
|
28
|
+
|
|
29
|
+
<Divider spacing="md" />
|
|
30
|
+
<Text size="lg" weight="semibold">Animation Types</Text>
|
|
31
|
+
|
|
32
|
+
<Text size="md" weight="semibold">Pulse (Default)</Text>
|
|
33
|
+
<Skeleton width="100%" height={40} animation="pulse" />
|
|
34
|
+
|
|
35
|
+
<Text size="md" weight="semibold">Wave</Text>
|
|
36
|
+
<Skeleton width="100%" height={40} animation="wave" />
|
|
37
|
+
|
|
38
|
+
<Text size="md" weight="semibold">None</Text>
|
|
39
|
+
<Skeleton width="100%" height={40} animation="none" />
|
|
40
|
+
|
|
41
|
+
<Divider spacing="md" />
|
|
42
|
+
<Text size="lg" weight="semibold">Skeleton Groups</Text>
|
|
43
|
+
|
|
44
|
+
<Text size="md" weight="semibold">Default Group (3 items)</Text>
|
|
45
|
+
<SkeletonGroup />
|
|
46
|
+
|
|
47
|
+
<Text size="md" weight="semibold">Custom Count (5 items)</Text>
|
|
48
|
+
<SkeletonGroup count={5} />
|
|
49
|
+
|
|
50
|
+
<Text size="md" weight="semibold">Custom Spacing</Text>
|
|
51
|
+
<SkeletonGroup count={3} spacing={20} />
|
|
52
|
+
|
|
53
|
+
<Text size="md" weight="semibold">Custom Skeleton Props</Text>
|
|
54
|
+
<SkeletonGroup
|
|
55
|
+
count={4}
|
|
56
|
+
spacing={16}
|
|
57
|
+
skeletonProps={{
|
|
58
|
+
height: 60,
|
|
59
|
+
shape: 'rounded',
|
|
60
|
+
animation: 'wave',
|
|
61
|
+
}}
|
|
62
|
+
/>
|
|
63
|
+
|
|
64
|
+
<Divider spacing="md" />
|
|
65
|
+
<Text size="lg" weight="semibold">Profile Card Loading</Text>
|
|
66
|
+
|
|
67
|
+
<Card type="outlined">
|
|
68
|
+
<View spacing="md">
|
|
69
|
+
<View style={{ flexDirection: 'row', gap: 12, alignItems: 'center' }}>
|
|
70
|
+
<Skeleton width={64} height={64} shape="circle" />
|
|
71
|
+
<View style={{ flex: 1, gap: 8 }}>
|
|
72
|
+
<Skeleton width="60%" height={24} shape="rounded" />
|
|
73
|
+
<Skeleton width="40%" height={16} shape="rounded" />
|
|
74
|
+
</View>
|
|
75
|
+
</View>
|
|
76
|
+
<SkeletonGroup count={3} skeletonProps={{ height: 16, shape: 'rounded' }} />
|
|
77
|
+
</View>
|
|
78
|
+
</Card>
|
|
79
|
+
|
|
80
|
+
<Divider spacing="md" />
|
|
81
|
+
<Text size="lg" weight="semibold">Article Card Loading</Text>
|
|
82
|
+
|
|
83
|
+
<Card type="outlined">
|
|
84
|
+
<View spacing="md">
|
|
85
|
+
<Skeleton width="100%" height={200} shape="rounded" />
|
|
86
|
+
<Skeleton width="80%" height={28} shape="rounded" />
|
|
87
|
+
<SkeletonGroup
|
|
88
|
+
count={3}
|
|
89
|
+
spacing={8}
|
|
90
|
+
skeletonProps={{ height: 16, shape: 'rounded' }}
|
|
91
|
+
/>
|
|
92
|
+
<View style={{ flexDirection: 'row', gap: 12, marginTop: 8 }}>
|
|
93
|
+
<Skeleton width={32} height={32} shape="circle" />
|
|
94
|
+
<Skeleton width={120} height={16} shape="rounded" />
|
|
95
|
+
</View>
|
|
96
|
+
</View>
|
|
97
|
+
</Card>
|
|
98
|
+
|
|
99
|
+
<Divider spacing="md" />
|
|
100
|
+
<Text size="lg" weight="semibold">List Item Loading</Text>
|
|
101
|
+
|
|
102
|
+
<Card type="outlined">
|
|
103
|
+
<View spacing="md">
|
|
104
|
+
{[1, 2, 3].map((item) => (
|
|
105
|
+
<View key={item} style={{ flexDirection: 'row', gap: 12, alignItems: 'center' }}>
|
|
106
|
+
<Skeleton width={48} height={48} shape="rounded" />
|
|
107
|
+
<View style={{ flex: 1, gap: 8 }}>
|
|
108
|
+
<Skeleton width="70%" height={18} shape="rounded" />
|
|
109
|
+
<Skeleton width="50%" height={14} shape="rounded" />
|
|
110
|
+
</View>
|
|
111
|
+
</View>
|
|
112
|
+
))}
|
|
113
|
+
</View>
|
|
114
|
+
</Card>
|
|
115
|
+
|
|
116
|
+
<Divider spacing="md" />
|
|
117
|
+
<Text size="lg" weight="semibold">Table Loading</Text>
|
|
118
|
+
|
|
119
|
+
<Card type="outlined">
|
|
120
|
+
<View spacing="sm">
|
|
121
|
+
{/* Header */}
|
|
122
|
+
<View style={{ flexDirection: 'row', gap: 12 }}>
|
|
123
|
+
<Skeleton width={40} height={20} shape="rounded" />
|
|
124
|
+
<Skeleton width="25%" height={20} shape="rounded" />
|
|
125
|
+
<Skeleton width="25%" height={20} shape="rounded" />
|
|
126
|
+
<Skeleton width="25%" height={20} shape="rounded" />
|
|
127
|
+
</View>
|
|
128
|
+
<Divider spacing="sm" />
|
|
129
|
+
{/* Rows */}
|
|
130
|
+
{[1, 2, 3, 4, 5].map((row) => (
|
|
131
|
+
<View key={row} style={{ flexDirection: 'row', gap: 12, alignItems: 'center' }}>
|
|
132
|
+
<Skeleton width={40} height={16} shape="rounded" />
|
|
133
|
+
<Skeleton width="25%" height={16} shape="rounded" />
|
|
134
|
+
<Skeleton width="25%" height={16} shape="rounded" />
|
|
135
|
+
<Skeleton width="25%" height={16} shape="rounded" />
|
|
136
|
+
</View>
|
|
137
|
+
))}
|
|
138
|
+
</View>
|
|
139
|
+
</Card>
|
|
140
|
+
|
|
141
|
+
<Divider spacing="md" />
|
|
142
|
+
<Text size="lg" weight="semibold">Dashboard Card Loading</Text>
|
|
143
|
+
|
|
144
|
+
<View style={{ flexDirection: 'row', gap: 16, flexWrap: 'wrap' }}>
|
|
145
|
+
{[1, 2, 3, 4].map((card) => (
|
|
146
|
+
<Card key={card} type="outlined" style={{ flex: 1, minWidth: 180 }}>
|
|
147
|
+
<View spacing="sm">
|
|
148
|
+
<Skeleton width="60%" height={16} shape="rounded" />
|
|
149
|
+
<Skeleton width="80%" height={32} shape="rounded" />
|
|
150
|
+
<Skeleton width="40%" height={12} shape="rounded" />
|
|
151
|
+
</View>
|
|
152
|
+
</Card>
|
|
153
|
+
))}
|
|
154
|
+
</View>
|
|
155
|
+
|
|
156
|
+
<Divider spacing="md" />
|
|
157
|
+
<Text size="lg" weight="semibold">Comment Thread Loading</Text>
|
|
158
|
+
|
|
159
|
+
<Card type="outlined">
|
|
160
|
+
<View spacing="md">
|
|
161
|
+
{[1, 2, 3].map((comment) => (
|
|
162
|
+
<View key={comment} style={{ paddingLeft: comment > 1 ? 32 : 0 }}>
|
|
163
|
+
<View style={{ flexDirection: 'row', gap: 12 }}>
|
|
164
|
+
<Skeleton width={40} height={40} shape="circle" />
|
|
165
|
+
<View style={{ flex: 1, gap: 8 }}>
|
|
166
|
+
<Skeleton width="30%" height={16} shape="rounded" />
|
|
167
|
+
<SkeletonGroup
|
|
168
|
+
count={2}
|
|
169
|
+
spacing={6}
|
|
170
|
+
skeletonProps={{ height: 14, shape: 'rounded' }}
|
|
171
|
+
/>
|
|
172
|
+
</View>
|
|
173
|
+
</View>
|
|
174
|
+
</View>
|
|
175
|
+
))}
|
|
176
|
+
</View>
|
|
177
|
+
</Card>
|
|
178
|
+
|
|
179
|
+
<Divider spacing="md" />
|
|
180
|
+
<Text size="lg" weight="semibold">Mixed Shapes and Sizes</Text>
|
|
181
|
+
|
|
182
|
+
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap' }}>
|
|
183
|
+
<Skeleton width={80} height={80} shape="circle" />
|
|
184
|
+
<Skeleton width={80} height={80} shape="rounded" borderRadius={16} />
|
|
185
|
+
<Skeleton width={80} height={80} shape="rectangle" />
|
|
186
|
+
</View>
|
|
187
|
+
|
|
188
|
+
<View style={{ flexDirection: 'row', gap: 12, alignItems: 'center' }}>
|
|
189
|
+
<Skeleton width={24} height={24} shape="circle" />
|
|
190
|
+
<Skeleton width={32} height={32} shape="circle" />
|
|
191
|
+
<Skeleton width={48} height={48} shape="circle" />
|
|
192
|
+
<Skeleton width={64} height={64} shape="circle" />
|
|
193
|
+
</View>
|
|
194
|
+
|
|
195
|
+
<Divider spacing="md" />
|
|
196
|
+
<Text size="lg" weight="semibold">Custom Widths</Text>
|
|
197
|
+
|
|
198
|
+
<Skeleton width={100} height={20} shape="rounded" />
|
|
199
|
+
<Skeleton width="25%" height={20} shape="rounded" />
|
|
200
|
+
<Skeleton width="50%" height={20} shape="rounded" />
|
|
201
|
+
<Skeleton width="75%" height={20} shape="rounded" />
|
|
202
|
+
<Skeleton width="100%" height={20} shape="rounded" />
|
|
203
|
+
</View>
|
|
204
|
+
</Screen>
|
|
205
|
+
);
|
|
206
|
+
};
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Screen, View, Text } from '@idealyst/components';
|
|
3
|
+
import Slider from '../Slider';
|
|
4
|
+
|
|
5
|
+
export const SliderExamples: React.FC = () => {
|
|
6
|
+
const [basicValue, setBasicValue] = useState(50);
|
|
7
|
+
const [volumeValue, setVolumeValue] = useState(75);
|
|
8
|
+
const [temperatureValue, setTemperatureValue] = useState(20);
|
|
9
|
+
|
|
10
|
+
return (
|
|
11
|
+
<Screen background="primary" padding="lg">
|
|
12
|
+
<View spacing="lg">
|
|
13
|
+
<Text size="xl" weight="bold">Slider Examples</Text>
|
|
14
|
+
|
|
15
|
+
<View spacing="md">
|
|
16
|
+
<Text size="lg" weight="semibold">Basic Slider</Text>
|
|
17
|
+
<Slider
|
|
18
|
+
value={basicValue}
|
|
19
|
+
onValueChange={setBasicValue}
|
|
20
|
+
showValue
|
|
21
|
+
/>
|
|
22
|
+
<Text size="sm" color="secondary">Value: {basicValue}</Text>
|
|
23
|
+
</View>
|
|
24
|
+
|
|
25
|
+
<View spacing="md">
|
|
26
|
+
<Text size="lg" weight="semibold">Sizes</Text>
|
|
27
|
+
<View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
|
|
28
|
+
<View spacing="xs">
|
|
29
|
+
<Text size="sm">Small</Text>
|
|
30
|
+
<Slider defaultValue={30} size="sm" />
|
|
31
|
+
</View>
|
|
32
|
+
<View spacing="xs">
|
|
33
|
+
<Text size="sm">Medium (default)</Text>
|
|
34
|
+
<Slider defaultValue={50} size="md" />
|
|
35
|
+
</View>
|
|
36
|
+
<View spacing="xs">
|
|
37
|
+
<Text size="sm">Large</Text>
|
|
38
|
+
<Slider defaultValue={70} size="lg" />
|
|
39
|
+
</View>
|
|
40
|
+
</View>
|
|
41
|
+
</View>
|
|
42
|
+
|
|
43
|
+
<View spacing="md">
|
|
44
|
+
<Text size="lg" weight="semibold">Intent Colors</Text>
|
|
45
|
+
<View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
|
|
46
|
+
<View spacing="xs">
|
|
47
|
+
<Text size="sm">Primary</Text>
|
|
48
|
+
<Slider defaultValue={60} intent="primary" />
|
|
49
|
+
</View>
|
|
50
|
+
<View spacing="xs">
|
|
51
|
+
<Text size="sm">Success</Text>
|
|
52
|
+
<Slider defaultValue={60} intent="success" />
|
|
53
|
+
</View>
|
|
54
|
+
<View spacing="xs">
|
|
55
|
+
<Text size="sm">Error</Text>
|
|
56
|
+
<Slider defaultValue={60} intent="error" />
|
|
57
|
+
</View>
|
|
58
|
+
<View spacing="xs">
|
|
59
|
+
<Text size="sm">Warning</Text>
|
|
60
|
+
<Slider defaultValue={60} intent="warning" />
|
|
61
|
+
</View>
|
|
62
|
+
<View spacing="xs">
|
|
63
|
+
<Text size="sm">Neutral</Text>
|
|
64
|
+
<Slider defaultValue={60} intent="neutral" />
|
|
65
|
+
</View>
|
|
66
|
+
</View>
|
|
67
|
+
</View>
|
|
68
|
+
|
|
69
|
+
<View spacing="md">
|
|
70
|
+
<Text size="lg" weight="semibold">With Min/Max Labels</Text>
|
|
71
|
+
<Slider
|
|
72
|
+
defaultValue={50}
|
|
73
|
+
showMinMax
|
|
74
|
+
/>
|
|
75
|
+
</View>
|
|
76
|
+
|
|
77
|
+
<View spacing="md">
|
|
78
|
+
<Text size="lg" weight="semibold">Custom Range & Step</Text>
|
|
79
|
+
<View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
|
|
80
|
+
<View spacing="xs">
|
|
81
|
+
<Text size="sm">Range: 0-10, Step: 1</Text>
|
|
82
|
+
<Slider
|
|
83
|
+
min={0}
|
|
84
|
+
max={10}
|
|
85
|
+
step={1}
|
|
86
|
+
defaultValue={5}
|
|
87
|
+
showValue
|
|
88
|
+
showMinMax
|
|
89
|
+
/>
|
|
90
|
+
</View>
|
|
91
|
+
<View spacing="xs">
|
|
92
|
+
<Text size="sm">Range: -50 to 50, Step: 5</Text>
|
|
93
|
+
<Slider
|
|
94
|
+
min={-50}
|
|
95
|
+
max={50}
|
|
96
|
+
step={5}
|
|
97
|
+
defaultValue={0}
|
|
98
|
+
showValue
|
|
99
|
+
showMinMax
|
|
100
|
+
/>
|
|
101
|
+
</View>
|
|
102
|
+
</View>
|
|
103
|
+
</View>
|
|
104
|
+
|
|
105
|
+
<View spacing="md">
|
|
106
|
+
<Text size="lg" weight="semibold">With Marks</Text>
|
|
107
|
+
<Slider
|
|
108
|
+
min={0}
|
|
109
|
+
max={100}
|
|
110
|
+
defaultValue={50}
|
|
111
|
+
marks={[
|
|
112
|
+
{ value: 0, label: '0%' },
|
|
113
|
+
{ value: 25, label: '25%' },
|
|
114
|
+
{ value: 50, label: '50%' },
|
|
115
|
+
{ value: 75, label: '75%' },
|
|
116
|
+
{ value: 100, label: '100%' },
|
|
117
|
+
]}
|
|
118
|
+
/>
|
|
119
|
+
</View>
|
|
120
|
+
|
|
121
|
+
<View spacing="md">
|
|
122
|
+
<Text size="lg" weight="semibold">Volume Control</Text>
|
|
123
|
+
<Slider
|
|
124
|
+
value={volumeValue}
|
|
125
|
+
onValueChange={setVolumeValue}
|
|
126
|
+
min={0}
|
|
127
|
+
max={100}
|
|
128
|
+
showValue
|
|
129
|
+
intent="primary"
|
|
130
|
+
marks={[
|
|
131
|
+
{ value: 0, label: 'Mute' },
|
|
132
|
+
{ value: 50 },
|
|
133
|
+
{ value: 100, label: 'Max' },
|
|
134
|
+
]}
|
|
135
|
+
/>
|
|
136
|
+
</View>
|
|
137
|
+
|
|
138
|
+
<View spacing="md">
|
|
139
|
+
<Text size="lg" weight="semibold">With Icons</Text>
|
|
140
|
+
<View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
|
|
141
|
+
<View spacing="xs">
|
|
142
|
+
<Text size="sm">Volume with icon</Text>
|
|
143
|
+
<Slider
|
|
144
|
+
defaultValue={60}
|
|
145
|
+
icon="volume-high"
|
|
146
|
+
intent="primary"
|
|
147
|
+
showMinMax
|
|
148
|
+
/>
|
|
149
|
+
</View>
|
|
150
|
+
<View spacing="xs">
|
|
151
|
+
<Text size="sm">Brightness with icon</Text>
|
|
152
|
+
<Slider
|
|
153
|
+
defaultValue={75}
|
|
154
|
+
icon="brightness-6"
|
|
155
|
+
intent="warning"
|
|
156
|
+
showMinMax
|
|
157
|
+
/>
|
|
158
|
+
</View>
|
|
159
|
+
<View spacing="xs">
|
|
160
|
+
<Text size="sm">Temperature with icon</Text>
|
|
161
|
+
<Slider
|
|
162
|
+
defaultValue={22}
|
|
163
|
+
min={10}
|
|
164
|
+
max={30}
|
|
165
|
+
icon="thermometer"
|
|
166
|
+
intent="error"
|
|
167
|
+
showMinMax
|
|
168
|
+
/>
|
|
169
|
+
</View>
|
|
170
|
+
</View>
|
|
171
|
+
</View>
|
|
172
|
+
|
|
173
|
+
<View spacing="md">
|
|
174
|
+
<Text size="lg" weight="semibold">Temperature Control</Text>
|
|
175
|
+
<Slider
|
|
176
|
+
value={temperatureValue}
|
|
177
|
+
onValueChange={setTemperatureValue}
|
|
178
|
+
min={10}
|
|
179
|
+
max={30}
|
|
180
|
+
step={0.5}
|
|
181
|
+
showValue
|
|
182
|
+
showMinMax
|
|
183
|
+
intent="warning"
|
|
184
|
+
/>
|
|
185
|
+
<Text size="sm" color="secondary">Temperature: {temperatureValue}°C</Text>
|
|
186
|
+
</View>
|
|
187
|
+
|
|
188
|
+
<View spacing="md">
|
|
189
|
+
<Text size="lg" weight="semibold">Disabled</Text>
|
|
190
|
+
<Slider
|
|
191
|
+
defaultValue={60}
|
|
192
|
+
disabled
|
|
193
|
+
/>
|
|
194
|
+
</View>
|
|
195
|
+
</View>
|
|
196
|
+
</Screen>
|
|
197
|
+
);
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
export default SliderExamples;
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Screen, View, Text } from '@idealyst/components';
|
|
3
|
+
import Switch from '../Switch';
|
|
4
|
+
|
|
5
|
+
export const SwitchExamples: React.FC = () => {
|
|
6
|
+
const [basicChecked, setBasicChecked] = useState(false);
|
|
7
|
+
const [labelledChecked, setLabelledChecked] = useState(false);
|
|
8
|
+
const [intentChecked, setIntentChecked] = useState({
|
|
9
|
+
primary: false,
|
|
10
|
+
success: false,
|
|
11
|
+
error: false,
|
|
12
|
+
warning: false,
|
|
13
|
+
neutral: false,
|
|
14
|
+
});
|
|
15
|
+
const [iconChecked, setIconChecked] = useState({
|
|
16
|
+
basic: false,
|
|
17
|
+
notifications: true,
|
|
18
|
+
visibility: false,
|
|
19
|
+
volume: true,
|
|
20
|
+
wifi: false,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<Screen background="primary" padding="lg">
|
|
25
|
+
<View spacing="lg">
|
|
26
|
+
<Text size="xl" weight="bold">Switch Examples</Text>
|
|
27
|
+
|
|
28
|
+
<View spacing="md">
|
|
29
|
+
<Text size="lg" weight="semibold">Basic Switch</Text>
|
|
30
|
+
<Switch
|
|
31
|
+
checked={basicChecked}
|
|
32
|
+
onCheckedChange={setBasicChecked}
|
|
33
|
+
/>
|
|
34
|
+
</View>
|
|
35
|
+
|
|
36
|
+
<View spacing="md">
|
|
37
|
+
<Text size="lg" weight="semibold">With Label</Text>
|
|
38
|
+
<Switch
|
|
39
|
+
checked={labelledChecked}
|
|
40
|
+
onCheckedChange={setLabelledChecked}
|
|
41
|
+
label="Enable notifications"
|
|
42
|
+
/>
|
|
43
|
+
</View>
|
|
44
|
+
|
|
45
|
+
<View spacing="md">
|
|
46
|
+
<Text size="lg" weight="semibold">Label Position</Text>
|
|
47
|
+
<Switch
|
|
48
|
+
checked={labelledChecked}
|
|
49
|
+
onCheckedChange={setLabelledChecked}
|
|
50
|
+
label="Left label"
|
|
51
|
+
labelPosition="left"
|
|
52
|
+
/>
|
|
53
|
+
</View>
|
|
54
|
+
|
|
55
|
+
<View spacing="md">
|
|
56
|
+
<Text size="lg" weight="semibold">Sizes</Text>
|
|
57
|
+
<View spacing="sm">
|
|
58
|
+
<Switch
|
|
59
|
+
checked={basicChecked}
|
|
60
|
+
onCheckedChange={setBasicChecked}
|
|
61
|
+
size="sm"
|
|
62
|
+
label="Small"
|
|
63
|
+
/>
|
|
64
|
+
<Switch
|
|
65
|
+
checked={basicChecked}
|
|
66
|
+
onCheckedChange={setBasicChecked}
|
|
67
|
+
size="md"
|
|
68
|
+
label="Medium (default)"
|
|
69
|
+
/>
|
|
70
|
+
<Switch
|
|
71
|
+
checked={basicChecked}
|
|
72
|
+
onCheckedChange={setBasicChecked}
|
|
73
|
+
size="lg"
|
|
74
|
+
label="Large"
|
|
75
|
+
/>
|
|
76
|
+
</View>
|
|
77
|
+
</View>
|
|
78
|
+
|
|
79
|
+
<View spacing="md">
|
|
80
|
+
<Text size="lg" weight="semibold">Intent Colors</Text>
|
|
81
|
+
<View spacing="sm">
|
|
82
|
+
<Switch
|
|
83
|
+
checked={intentChecked.primary}
|
|
84
|
+
onCheckedChange={(checked) => setIntentChecked(prev => ({ ...prev, primary: checked }))}
|
|
85
|
+
intent="primary"
|
|
86
|
+
label="Primary"
|
|
87
|
+
/>
|
|
88
|
+
<Switch
|
|
89
|
+
checked={intentChecked.success}
|
|
90
|
+
onCheckedChange={(checked) => setIntentChecked(prev => ({ ...prev, success: checked }))}
|
|
91
|
+
intent="success"
|
|
92
|
+
label="Success"
|
|
93
|
+
/>
|
|
94
|
+
<Switch
|
|
95
|
+
checked={intentChecked.error}
|
|
96
|
+
onCheckedChange={(checked) => setIntentChecked(prev => ({ ...prev, error: checked }))}
|
|
97
|
+
intent="error"
|
|
98
|
+
label="Error"
|
|
99
|
+
/>
|
|
100
|
+
<Switch
|
|
101
|
+
checked={intentChecked.warning}
|
|
102
|
+
onCheckedChange={(checked) => setIntentChecked(prev => ({ ...prev, warning: checked }))}
|
|
103
|
+
intent="warning"
|
|
104
|
+
label="Warning"
|
|
105
|
+
/>
|
|
106
|
+
<Switch
|
|
107
|
+
checked={intentChecked.neutral}
|
|
108
|
+
onCheckedChange={(checked) => setIntentChecked(prev => ({ ...prev, neutral: checked }))}
|
|
109
|
+
intent="neutral"
|
|
110
|
+
label="Neutral"
|
|
111
|
+
/>
|
|
112
|
+
</View>
|
|
113
|
+
</View>
|
|
114
|
+
|
|
115
|
+
<View spacing="md">
|
|
116
|
+
<Text size="lg" weight="semibold">With Icons</Text>
|
|
117
|
+
<View spacing="sm">
|
|
118
|
+
<Switch
|
|
119
|
+
checked={iconChecked.basic}
|
|
120
|
+
onCheckedChange={(checked) => setIconChecked(prev => ({ ...prev, basic: checked }))}
|
|
121
|
+
enabledIcon="check"
|
|
122
|
+
disabledIcon="close"
|
|
123
|
+
label="On/Off"
|
|
124
|
+
/>
|
|
125
|
+
<Switch
|
|
126
|
+
checked={iconChecked.notifications}
|
|
127
|
+
onCheckedChange={(checked) => setIconChecked(prev => ({ ...prev, notifications: checked }))}
|
|
128
|
+
enabledIcon="bell"
|
|
129
|
+
disabledIcon="bell-off"
|
|
130
|
+
intent="success"
|
|
131
|
+
label="Notifications"
|
|
132
|
+
/>
|
|
133
|
+
<Switch
|
|
134
|
+
checked={iconChecked.visibility}
|
|
135
|
+
onCheckedChange={(checked) => setIconChecked(prev => ({ ...prev, visibility: checked }))}
|
|
136
|
+
enabledIcon="eye"
|
|
137
|
+
disabledIcon="eye-off"
|
|
138
|
+
intent="primary"
|
|
139
|
+
label="Visibility"
|
|
140
|
+
/>
|
|
141
|
+
<Switch
|
|
142
|
+
checked={iconChecked.volume}
|
|
143
|
+
onCheckedChange={(checked) => setIconChecked(prev => ({ ...prev, volume: checked }))}
|
|
144
|
+
enabledIcon="volume-high"
|
|
145
|
+
disabledIcon="volume-off"
|
|
146
|
+
intent="warning"
|
|
147
|
+
label="Sound"
|
|
148
|
+
size="lg"
|
|
149
|
+
/>
|
|
150
|
+
<Switch
|
|
151
|
+
checked={iconChecked.wifi}
|
|
152
|
+
onCheckedChange={(checked) => setIconChecked(prev => ({ ...prev, wifi: checked }))}
|
|
153
|
+
enabledIcon="wifi"
|
|
154
|
+
disabledIcon="wifi-off"
|
|
155
|
+
intent="error"
|
|
156
|
+
label="WiFi Connection"
|
|
157
|
+
size="sm"
|
|
158
|
+
/>
|
|
159
|
+
</View>
|
|
160
|
+
</View>
|
|
161
|
+
|
|
162
|
+
<View spacing="md">
|
|
163
|
+
<Text size="lg" weight="semibold">Disabled States</Text>
|
|
164
|
+
<View spacing="sm">
|
|
165
|
+
<Switch
|
|
166
|
+
checked={false}
|
|
167
|
+
disabled
|
|
168
|
+
label="Disabled unchecked"
|
|
169
|
+
/>
|
|
170
|
+
<Switch
|
|
171
|
+
checked={true}
|
|
172
|
+
disabled
|
|
173
|
+
label="Disabled checked"
|
|
174
|
+
/>
|
|
175
|
+
</View>
|
|
176
|
+
</View>
|
|
177
|
+
</View>
|
|
178
|
+
</Screen>
|
|
179
|
+
);
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
export default SwitchExamples;
|