@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
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Screen, View, Text, Chip, Divider } from '@idealyst/components';
|
|
3
|
+
|
|
4
|
+
export const ChipExamples = () => {
|
|
5
|
+
const [selectedChips, setSelectedChips] = useState<Set<string>>(new Set());
|
|
6
|
+
const [tags, setTags] = useState(['React', 'TypeScript', 'JavaScript', 'Node.js']);
|
|
7
|
+
|
|
8
|
+
const toggleChip = (id: string) => {
|
|
9
|
+
const newSelected = new Set(selectedChips);
|
|
10
|
+
if (newSelected.has(id)) {
|
|
11
|
+
newSelected.delete(id);
|
|
12
|
+
} else {
|
|
13
|
+
newSelected.add(id);
|
|
14
|
+
}
|
|
15
|
+
setSelectedChips(newSelected);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const removeTag = (tag: string) => {
|
|
19
|
+
setTags(tags.filter(t => t !== tag));
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<Screen background="primary" safeArea>
|
|
24
|
+
<View spacing="lg" style={{ maxWidth: 800, width: '100%', paddingHorizontal: 16, marginHorizontal: 'auto' }}>
|
|
25
|
+
<Text size="xl" weight="bold">Chip Examples</Text>
|
|
26
|
+
|
|
27
|
+
<Divider spacing="md" />
|
|
28
|
+
<Text size="lg" weight="semibold">Basic Chips</Text>
|
|
29
|
+
|
|
30
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
|
|
31
|
+
<Chip label="Default" />
|
|
32
|
+
<Chip label="Primary" intent="primary" />
|
|
33
|
+
<Chip label="Success" intent="success" />
|
|
34
|
+
<Chip label="Error" intent="error" />
|
|
35
|
+
<Chip label="Warning" intent="warning" />
|
|
36
|
+
<Chip label="Neutral" intent="neutral" />
|
|
37
|
+
</View>
|
|
38
|
+
|
|
39
|
+
<Divider spacing="md" />
|
|
40
|
+
<Text size="lg" weight="semibold">Variants</Text>
|
|
41
|
+
|
|
42
|
+
<Text size="md" weight="semibold">Filled (Default)</Text>
|
|
43
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
|
|
44
|
+
<Chip label="Filled Primary" type="filled" intent="primary" />
|
|
45
|
+
<Chip label="Filled Success" type="filled" intent="success" />
|
|
46
|
+
<Chip label="Filled Error" type="filled" intent="error" />
|
|
47
|
+
</View>
|
|
48
|
+
|
|
49
|
+
<Text size="md" weight="semibold">Outlined</Text>
|
|
50
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
|
|
51
|
+
<Chip label="Outlined Primary" type="outlined" intent="primary" />
|
|
52
|
+
<Chip label="Outlined Success" type="outlined" intent="success" />
|
|
53
|
+
<Chip label="Outlined Error" type="outlined" intent="error" />
|
|
54
|
+
</View>
|
|
55
|
+
|
|
56
|
+
<Text size="md" weight="semibold">Soft</Text>
|
|
57
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
|
|
58
|
+
<Chip label="Soft Primary" type="soft" intent="primary" />
|
|
59
|
+
<Chip label="Soft Success" type="soft" intent="success" />
|
|
60
|
+
<Chip label="Soft Error" type="soft" intent="error" />
|
|
61
|
+
</View>
|
|
62
|
+
|
|
63
|
+
<Divider spacing="md" />
|
|
64
|
+
<Text size="lg" weight="semibold">Sizes</Text>
|
|
65
|
+
|
|
66
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8, alignItems: 'center' }}>
|
|
67
|
+
<Chip label="Small" size="sm" />
|
|
68
|
+
<Chip label="Medium" size="md" />
|
|
69
|
+
<Chip label="Large" size="lg" />
|
|
70
|
+
</View>
|
|
71
|
+
|
|
72
|
+
<Divider spacing="md" />
|
|
73
|
+
<Text size="lg" weight="semibold">With Icons</Text>
|
|
74
|
+
|
|
75
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
|
|
76
|
+
<Chip label="Star" icon="star" />
|
|
77
|
+
<Chip label="Heart" icon="heart" intent="error" />
|
|
78
|
+
<Chip label="Check" icon="check" intent="success" />
|
|
79
|
+
<Chip label="Info" icon="information" type="outlined" />
|
|
80
|
+
</View>
|
|
81
|
+
|
|
82
|
+
<Divider spacing="md" />
|
|
83
|
+
<Text size="lg" weight="semibold">Deletable Chips</Text>
|
|
84
|
+
|
|
85
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
|
|
86
|
+
{tags.map(tag => (
|
|
87
|
+
<Chip
|
|
88
|
+
key={tag}
|
|
89
|
+
label={tag}
|
|
90
|
+
deletable
|
|
91
|
+
onDelete={() => removeTag(tag)}
|
|
92
|
+
intent="primary"
|
|
93
|
+
type="outlined"
|
|
94
|
+
/>
|
|
95
|
+
))}
|
|
96
|
+
</View>
|
|
97
|
+
<Text size="sm" color="secondary">Click the X to remove tags</Text>
|
|
98
|
+
|
|
99
|
+
<Divider spacing="md" />
|
|
100
|
+
<Text size="lg" weight="semibold">Selectable Chips</Text>
|
|
101
|
+
|
|
102
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
|
|
103
|
+
{['Option 1', 'Option 2', 'Option 3', 'Option 4'].map(option => (
|
|
104
|
+
<Chip
|
|
105
|
+
key={option}
|
|
106
|
+
label={option}
|
|
107
|
+
selectable
|
|
108
|
+
selected={selectedChips.has(option)}
|
|
109
|
+
onPress={() => toggleChip(option)}
|
|
110
|
+
intent="primary"
|
|
111
|
+
type="outlined"
|
|
112
|
+
/>
|
|
113
|
+
))}
|
|
114
|
+
</View>
|
|
115
|
+
<Text size="sm" color="secondary">
|
|
116
|
+
Selected: {Array.from(selectedChips).join(', ') || 'None'}
|
|
117
|
+
</Text>
|
|
118
|
+
|
|
119
|
+
<Divider spacing="md" />
|
|
120
|
+
<Text size="lg" weight="semibold">Clickable Chips</Text>
|
|
121
|
+
|
|
122
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
|
|
123
|
+
<Chip
|
|
124
|
+
label="Click me!"
|
|
125
|
+
onPress={() => alert('Chip clicked!')}
|
|
126
|
+
intent="primary"
|
|
127
|
+
/>
|
|
128
|
+
<Chip
|
|
129
|
+
label="Another action"
|
|
130
|
+
onPress={() => console.log('Clicked')}
|
|
131
|
+
type="outlined"
|
|
132
|
+
intent="success"
|
|
133
|
+
/>
|
|
134
|
+
</View>
|
|
135
|
+
|
|
136
|
+
<Divider spacing="md" />
|
|
137
|
+
<Text size="lg" weight="semibold">Disabled State</Text>
|
|
138
|
+
|
|
139
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
|
|
140
|
+
<Chip label="Disabled" disabled />
|
|
141
|
+
<Chip label="Disabled Outlined" type="outlined" disabled />
|
|
142
|
+
<Chip label="Disabled Deletable" deletable onDelete={() => {}} disabled />
|
|
143
|
+
<Chip label="Disabled Selectable" selectable onPress={() => {}} disabled />
|
|
144
|
+
</View>
|
|
145
|
+
|
|
146
|
+
<Divider spacing="md" />
|
|
147
|
+
<Text size="lg" weight="semibold">Filter Example</Text>
|
|
148
|
+
|
|
149
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
|
|
150
|
+
<Chip
|
|
151
|
+
label="All"
|
|
152
|
+
selectable
|
|
153
|
+
selected={selectedChips.has('filter-all')}
|
|
154
|
+
onPress={() => toggleChip('filter-all')}
|
|
155
|
+
type="soft"
|
|
156
|
+
intent="neutral"
|
|
157
|
+
/>
|
|
158
|
+
<Chip
|
|
159
|
+
label="Active"
|
|
160
|
+
selectable
|
|
161
|
+
selected={selectedChips.has('filter-active')}
|
|
162
|
+
onPress={() => toggleChip('filter-active')}
|
|
163
|
+
type="soft"
|
|
164
|
+
intent="success"
|
|
165
|
+
/>
|
|
166
|
+
<Chip
|
|
167
|
+
label="Completed"
|
|
168
|
+
selectable
|
|
169
|
+
selected={selectedChips.has('filter-completed')}
|
|
170
|
+
onPress={() => toggleChip('filter-completed')}
|
|
171
|
+
type="soft"
|
|
172
|
+
intent="primary"
|
|
173
|
+
/>
|
|
174
|
+
<Chip
|
|
175
|
+
label="Archived"
|
|
176
|
+
selectable
|
|
177
|
+
selected={selectedChips.has('filter-archived')}
|
|
178
|
+
onPress={() => toggleChip('filter-archived')}
|
|
179
|
+
type="soft"
|
|
180
|
+
intent="neutral"
|
|
181
|
+
/>
|
|
182
|
+
</View>
|
|
183
|
+
|
|
184
|
+
<Divider spacing="md" />
|
|
185
|
+
<Text size="lg" weight="semibold">Category Tags</Text>
|
|
186
|
+
|
|
187
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
|
|
188
|
+
<Chip label="Design" type="soft" intent="primary" size="sm" />
|
|
189
|
+
<Chip label="Development" type="soft" intent="success" size="sm" />
|
|
190
|
+
<Chip label="Marketing" type="soft" intent="warning" size="sm" />
|
|
191
|
+
<Chip label="Sales" type="soft" intent="error" size="sm" />
|
|
192
|
+
<Chip label="Support" type="soft" intent="neutral" size="sm" />
|
|
193
|
+
</View>
|
|
194
|
+
</View>
|
|
195
|
+
</Screen>
|
|
196
|
+
);
|
|
197
|
+
};
|
|
@@ -10,13 +10,13 @@ export const DialogExamples = () => {
|
|
|
10
10
|
return (
|
|
11
11
|
<Screen background="primary" padding="lg">
|
|
12
12
|
<View spacing="none">
|
|
13
|
-
<Text size="
|
|
13
|
+
<Text size="lg" weight="bold" align="center">
|
|
14
14
|
Dialog Examples
|
|
15
15
|
</Text>
|
|
16
16
|
|
|
17
17
|
{/* Basic Dialog */}
|
|
18
18
|
<View spacing="md">
|
|
19
|
-
<Text size="
|
|
19
|
+
<Text size="md" weight="semibold">Basic Dialog</Text>
|
|
20
20
|
<Button onPress={() => setBasicOpen(true)}>
|
|
21
21
|
Open Basic Dialog
|
|
22
22
|
</Button>
|
|
@@ -28,7 +28,7 @@ export const DialogExamples = () => {
|
|
|
28
28
|
<Text>This is a basic dialog with a title and some content.</Text>
|
|
29
29
|
<View spacing="md" style={{ marginTop: 16 }}>
|
|
30
30
|
<Button
|
|
31
|
-
|
|
31
|
+
type="contained"
|
|
32
32
|
intent="primary"
|
|
33
33
|
onPress={() => setBasicOpen(false)}
|
|
34
34
|
>
|
|
@@ -40,7 +40,7 @@ export const DialogExamples = () => {
|
|
|
40
40
|
|
|
41
41
|
{/* Dialog Variants */}
|
|
42
42
|
<View spacing="md">
|
|
43
|
-
<Text size="
|
|
43
|
+
<Text size="md" weight="semibold">Dialog Variants</Text>
|
|
44
44
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap' }}>
|
|
45
45
|
<Button onPress={() => setAlertOpen(true)}>
|
|
46
46
|
Alert Dialog
|
|
@@ -55,12 +55,12 @@ export const DialogExamples = () => {
|
|
|
55
55
|
open={alertOpen}
|
|
56
56
|
onOpenChange={setAlertOpen}
|
|
57
57
|
title="Important Alert"
|
|
58
|
-
|
|
58
|
+
type="alert"
|
|
59
59
|
>
|
|
60
60
|
<Text>This is an alert dialog. It has a top border to indicate importance.</Text>
|
|
61
61
|
<View spacing="md" style={{ marginTop: 16 }}>
|
|
62
62
|
<Button
|
|
63
|
-
|
|
63
|
+
type="contained"
|
|
64
64
|
intent="primary"
|
|
65
65
|
onPress={() => setAlertOpen(false)}
|
|
66
66
|
>
|
|
@@ -74,20 +74,20 @@ export const DialogExamples = () => {
|
|
|
74
74
|
open={confirmationOpen}
|
|
75
75
|
onOpenChange={setConfirmationOpen}
|
|
76
76
|
title="Confirm Action"
|
|
77
|
-
|
|
77
|
+
type="confirmation"
|
|
78
78
|
closeOnBackdropClick={false}
|
|
79
79
|
>
|
|
80
80
|
<Text>Are you sure you want to delete this item? This action cannot be undone.</Text>
|
|
81
81
|
<View style={{ flexDirection: 'row', gap: 12, marginTop: 16 }}>
|
|
82
82
|
<Button
|
|
83
|
-
|
|
83
|
+
type="outlined"
|
|
84
84
|
intent="neutral"
|
|
85
85
|
onPress={() => setConfirmationOpen(false)}
|
|
86
86
|
>
|
|
87
87
|
Cancel
|
|
88
88
|
</Button>
|
|
89
89
|
<Button
|
|
90
|
-
|
|
90
|
+
type="contained"
|
|
91
91
|
intent="error"
|
|
92
92
|
onPress={() => setConfirmationOpen(false)}
|
|
93
93
|
>
|
|
@@ -99,31 +99,31 @@ export const DialogExamples = () => {
|
|
|
99
99
|
|
|
100
100
|
{/* Dialog Sizes */}
|
|
101
101
|
<View spacing="md">
|
|
102
|
-
<Text size="
|
|
102
|
+
<Text size="md" weight="semibold">Dialog Sizes</Text>
|
|
103
103
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap' }}>
|
|
104
|
-
{['
|
|
105
|
-
<Button
|
|
104
|
+
{['sm', 'md', 'lg'].map((size) => (
|
|
105
|
+
<Button
|
|
106
106
|
key={size}
|
|
107
107
|
onPress={() => setSizesOpen(size)}
|
|
108
108
|
>
|
|
109
|
-
{size
|
|
109
|
+
{size === 'sm' ? 'Small' : size === 'md' ? 'Medium' : 'Large'} Dialog
|
|
110
110
|
</Button>
|
|
111
111
|
))}
|
|
112
112
|
</View>
|
|
113
|
-
|
|
113
|
+
|
|
114
114
|
{sizesOpen && (
|
|
115
115
|
<Dialog
|
|
116
116
|
open={!!sizesOpen}
|
|
117
117
|
onOpenChange={() => setSizesOpen(null)}
|
|
118
|
-
title={`${sizesOpen
|
|
119
|
-
size={sizesOpen as '
|
|
118
|
+
title={`${sizesOpen === 'sm' ? 'Small' : sizesOpen === 'md' ? 'Medium' : 'Large'} Dialog`}
|
|
119
|
+
size={sizesOpen as 'sm' | 'md' | 'lg'}
|
|
120
120
|
>
|
|
121
121
|
<Text>
|
|
122
122
|
This is a {sizesOpen} dialog. The width and maximum width are adjusted based on the size prop.
|
|
123
123
|
</Text>
|
|
124
124
|
<View spacing="md" style={{ marginTop: 16 }}>
|
|
125
125
|
<Button
|
|
126
|
-
|
|
126
|
+
type="contained"
|
|
127
127
|
intent="primary"
|
|
128
128
|
onPress={() => setSizesOpen(null)}
|
|
129
129
|
>
|
|
@@ -137,17 +137,17 @@ export const DialogExamples = () => {
|
|
|
137
137
|
|
|
138
138
|
{/* Dialog Options */}
|
|
139
139
|
<View spacing="md">
|
|
140
|
-
<Text size="
|
|
141
|
-
<Text size="
|
|
140
|
+
<Text size="md" weight="semibold">Dialog Options</Text>
|
|
141
|
+
<Text size="sm" color="secondary">
|
|
142
142
|
• Close on backdrop click: Enabled by default, disabled for confirmation dialog above
|
|
143
143
|
</Text>
|
|
144
|
-
<Text size="
|
|
144
|
+
<Text size="sm" color="secondary">
|
|
145
145
|
• Close on escape key: Enabled by default (web only)
|
|
146
146
|
</Text>
|
|
147
|
-
<Text size="
|
|
147
|
+
<Text size="sm" color="secondary">
|
|
148
148
|
• Hardware back button: Handled automatically (native only)
|
|
149
149
|
</Text>
|
|
150
|
-
<Text size="
|
|
150
|
+
<Text size="sm" color="secondary">
|
|
151
151
|
• Focus management: Automatic focus trapping and restoration (web only)
|
|
152
152
|
</Text>
|
|
153
153
|
</View>
|
|
@@ -5,27 +5,27 @@ export const DividerExamples = () => {
|
|
|
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
|
Divider Examples
|
|
10
10
|
</Text>
|
|
11
11
|
|
|
12
12
|
{/* Horizontal Dividers */}
|
|
13
13
|
<View spacing="md">
|
|
14
|
-
<Text size="
|
|
14
|
+
<Text size="md" weight="semibold">Horizontal Dividers</Text>
|
|
15
15
|
<View style={{ gap: 10 }}>
|
|
16
|
-
<Card
|
|
16
|
+
<Card type="outlined" padding="md">
|
|
17
17
|
<Text>Content above</Text>
|
|
18
18
|
<Divider orientation="horizontal" />
|
|
19
19
|
<Text>Content below</Text>
|
|
20
20
|
</Card>
|
|
21
|
-
<Card
|
|
21
|
+
<Card type="outlined" padding="md">
|
|
22
22
|
<Text>Content above</Text>
|
|
23
|
-
<Divider orientation="horizontal"
|
|
23
|
+
<Divider orientation="horizontal" type="dashed" />
|
|
24
24
|
<Text>Content below</Text>
|
|
25
25
|
</Card>
|
|
26
|
-
<Card
|
|
26
|
+
<Card type="outlined" padding="md">
|
|
27
27
|
<Text>Content above</Text>
|
|
28
|
-
<Divider orientation="horizontal"
|
|
28
|
+
<Divider orientation="horizontal" type="dotted" />
|
|
29
29
|
<Text>Content below</Text>
|
|
30
30
|
</Card>
|
|
31
31
|
</View>
|
|
@@ -33,21 +33,21 @@ export const DividerExamples = () => {
|
|
|
33
33
|
|
|
34
34
|
{/* Divider Variants */}
|
|
35
35
|
<View spacing="md">
|
|
36
|
-
<Text size="
|
|
36
|
+
<Text size="md" weight="semibold">Variants</Text>
|
|
37
37
|
<View style={{ gap: 10 }}>
|
|
38
|
-
<Card
|
|
38
|
+
<Card type="outlined" padding="md">
|
|
39
39
|
<Text>Solid divider</Text>
|
|
40
|
-
<Divider
|
|
40
|
+
<Divider type="solid" />
|
|
41
41
|
<Text>Content below</Text>
|
|
42
42
|
</Card>
|
|
43
|
-
<Card
|
|
43
|
+
<Card type="outlined" padding="md">
|
|
44
44
|
<Text>Dashed divider</Text>
|
|
45
|
-
<Divider
|
|
45
|
+
<Divider type="dashed" />
|
|
46
46
|
<Text>Content below</Text>
|
|
47
47
|
</Card>
|
|
48
|
-
<Card
|
|
48
|
+
<Card type="outlined" padding="md">
|
|
49
49
|
<Text>Dotted divider</Text>
|
|
50
|
-
<Divider
|
|
50
|
+
<Divider type="dotted" />
|
|
51
51
|
<Text>Content below</Text>
|
|
52
52
|
</Card>
|
|
53
53
|
</View>
|
|
@@ -55,19 +55,19 @@ export const DividerExamples = () => {
|
|
|
55
55
|
|
|
56
56
|
{/* Divider Thickness */}
|
|
57
57
|
<View spacing="md">
|
|
58
|
-
<Text size="
|
|
58
|
+
<Text size="md" weight="semibold">Thickness</Text>
|
|
59
59
|
<View style={{ gap: 10 }}>
|
|
60
|
-
<Card
|
|
60
|
+
<Card type="outlined" padding="md">
|
|
61
61
|
<Text>Thin divider</Text>
|
|
62
62
|
<Divider thickness="thin" />
|
|
63
63
|
<Text>Content below</Text>
|
|
64
64
|
</Card>
|
|
65
|
-
<Card
|
|
65
|
+
<Card type="outlined" padding="md">
|
|
66
66
|
<Text>Medium divider</Text>
|
|
67
|
-
<Divider thickness="
|
|
67
|
+
<Divider thickness="md" />
|
|
68
68
|
<Text>Content below</Text>
|
|
69
69
|
</Card>
|
|
70
|
-
<Card
|
|
70
|
+
<Card type="outlined" padding="md">
|
|
71
71
|
<Text>Thick divider</Text>
|
|
72
72
|
<Divider thickness="thick" />
|
|
73
73
|
<Text>Content below</Text>
|
|
@@ -77,45 +77,45 @@ export const DividerExamples = () => {
|
|
|
77
77
|
|
|
78
78
|
{/* Divider Intents */}
|
|
79
79
|
<View spacing="md">
|
|
80
|
-
<Text size="
|
|
80
|
+
<Text size="md" weight="semibold">Intents</Text>
|
|
81
81
|
<View style={{ gap: 10 }}>
|
|
82
|
-
<Card
|
|
82
|
+
<Card type="outlined" padding="md">
|
|
83
83
|
<Text>Primary divider</Text>
|
|
84
84
|
<Divider intent="primary" />
|
|
85
85
|
<Text>Content below</Text>
|
|
86
86
|
</Card>
|
|
87
87
|
|
|
88
|
-
<Card
|
|
88
|
+
<Card type="outlined" padding="md">
|
|
89
89
|
<Text>Neutral divider</Text>
|
|
90
90
|
<Divider intent="neutral" />
|
|
91
91
|
<Text>Content below</Text>
|
|
92
92
|
</Card>
|
|
93
93
|
|
|
94
|
-
<Card
|
|
94
|
+
<Card type="outlined" padding="md">
|
|
95
95
|
<Text>Neutral divider</Text>
|
|
96
96
|
<Divider intent="neutral" />
|
|
97
97
|
<Text>Content below</Text>
|
|
98
98
|
</Card>
|
|
99
99
|
|
|
100
|
-
<Card
|
|
100
|
+
<Card type="outlined" padding="md">
|
|
101
101
|
<Text>Success divider</Text>
|
|
102
102
|
<Divider intent="success" />
|
|
103
103
|
<Text>Content below</Text>
|
|
104
104
|
</Card>
|
|
105
105
|
|
|
106
|
-
<Card
|
|
106
|
+
<Card type="outlined" padding="md">
|
|
107
107
|
<Text>Error divider</Text>
|
|
108
108
|
<Divider intent="error" />
|
|
109
109
|
<Text>Content below</Text>
|
|
110
110
|
</Card>
|
|
111
111
|
|
|
112
|
-
<Card
|
|
112
|
+
<Card type="outlined" padding="md">
|
|
113
113
|
<Text>Warning divider</Text>
|
|
114
114
|
<Divider intent="warning" />
|
|
115
115
|
<Text>Content below</Text>
|
|
116
116
|
</Card>
|
|
117
117
|
|
|
118
|
-
<Card
|
|
118
|
+
<Card type="outlined" padding="md">
|
|
119
119
|
<Text>Info divider</Text>
|
|
120
120
|
<Divider intent="info" />
|
|
121
121
|
<Text>Content below</Text>
|
|
@@ -125,29 +125,29 @@ export const DividerExamples = () => {
|
|
|
125
125
|
|
|
126
126
|
{/* Divider Spacing */}
|
|
127
127
|
<View spacing="md">
|
|
128
|
-
<Text size="
|
|
128
|
+
<Text size="md" weight="semibold">Spacing</Text>
|
|
129
129
|
<View style={{ gap: 10 }}>
|
|
130
|
-
<Card
|
|
130
|
+
<Card type="outlined" padding="md">
|
|
131
131
|
<Text>No spacing</Text>
|
|
132
132
|
<Divider spacing="none" />
|
|
133
133
|
<Text>Content immediately after</Text>
|
|
134
134
|
</Card>
|
|
135
135
|
|
|
136
|
-
<Card
|
|
136
|
+
<Card type="outlined" padding="md">
|
|
137
137
|
<Text>Small spacing</Text>
|
|
138
|
-
<Divider spacing="
|
|
138
|
+
<Divider spacing="sm" />
|
|
139
139
|
<Text>Content with small spacing</Text>
|
|
140
140
|
</Card>
|
|
141
141
|
|
|
142
|
-
<Card
|
|
142
|
+
<Card type="outlined" padding="md">
|
|
143
143
|
<Text>Medium spacing</Text>
|
|
144
|
-
<Divider spacing="
|
|
144
|
+
<Divider spacing="md" />
|
|
145
145
|
<Text>Content with medium spacing</Text>
|
|
146
146
|
</Card>
|
|
147
147
|
|
|
148
|
-
<Card
|
|
148
|
+
<Card type="outlined" padding="md">
|
|
149
149
|
<Text>Large spacing</Text>
|
|
150
|
-
<Divider spacing="
|
|
150
|
+
<Divider spacing="lg" />
|
|
151
151
|
<Text>Content with large spacing</Text>
|
|
152
152
|
</Card>
|
|
153
153
|
</View>
|
|
@@ -155,20 +155,20 @@ export const DividerExamples = () => {
|
|
|
155
155
|
|
|
156
156
|
{/* Divider with Content */}
|
|
157
157
|
<View spacing="md">
|
|
158
|
-
<Text size="
|
|
158
|
+
<Text size="md" weight="semibold">With Content</Text>
|
|
159
159
|
<View style={{ gap: 10 }}>
|
|
160
|
-
<Card
|
|
160
|
+
<Card type="outlined" padding="md">
|
|
161
161
|
<Text>Content above</Text>
|
|
162
|
-
<Divider spacing="
|
|
163
|
-
<Text size="
|
|
162
|
+
<Divider spacing="md">
|
|
163
|
+
<Text size="sm" color="secondary">OR</Text>
|
|
164
164
|
</Divider>
|
|
165
165
|
<Text>Content below</Text>
|
|
166
166
|
</Card>
|
|
167
167
|
|
|
168
|
-
<Card
|
|
168
|
+
<Card type="outlined" padding="md">
|
|
169
169
|
<Text>Content above</Text>
|
|
170
|
-
<Divider spacing="
|
|
171
|
-
<Text size="
|
|
170
|
+
<Divider spacing="md" intent="primary">
|
|
171
|
+
<Text size="sm" color="primary" weight="semibold">SECTION</Text>
|
|
172
172
|
</Divider>
|
|
173
173
|
<Text>Content below</Text>
|
|
174
174
|
</Card>
|
|
@@ -177,13 +177,13 @@ export const DividerExamples = () => {
|
|
|
177
177
|
|
|
178
178
|
{/* Vertical Dividers */}
|
|
179
179
|
<View spacing="md">
|
|
180
|
-
<Text size="
|
|
181
|
-
<Card
|
|
180
|
+
<Text size="md" weight="semibold">Vertical Dividers</Text>
|
|
181
|
+
<Card type="outlined" padding="md">
|
|
182
182
|
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
|
|
183
183
|
<Text>Left</Text>
|
|
184
184
|
<Divider orientation="vertical" />
|
|
185
185
|
<Text>Center</Text>
|
|
186
|
-
<Divider orientation="vertical"
|
|
186
|
+
<Divider orientation="vertical" type="dashed" />
|
|
187
187
|
<Text>Right</Text>
|
|
188
188
|
</View>
|
|
189
189
|
</Card>
|
|
@@ -191,21 +191,21 @@ export const DividerExamples = () => {
|
|
|
191
191
|
|
|
192
192
|
{/* Custom Length */}
|
|
193
193
|
<View spacing="md">
|
|
194
|
-
<Text size="
|
|
194
|
+
<Text size="md" weight="semibold">Custom Length</Text>
|
|
195
195
|
<View style={{ gap: 10 }}>
|
|
196
|
-
<Card
|
|
196
|
+
<Card type="outlined" padding="md">
|
|
197
197
|
<Text>Auto length</Text>
|
|
198
198
|
<Divider length="auto" />
|
|
199
199
|
<Text>Content below</Text>
|
|
200
200
|
</Card>
|
|
201
201
|
|
|
202
|
-
<Card
|
|
202
|
+
<Card type="outlined" padding="md">
|
|
203
203
|
<Text>Full length</Text>
|
|
204
204
|
<Divider length="full" />
|
|
205
205
|
<Text>Content below</Text>
|
|
206
206
|
</Card>
|
|
207
207
|
|
|
208
|
-
<Card
|
|
208
|
+
<Card type="outlined" padding="md">
|
|
209
209
|
<Text>50% length</Text>
|
|
210
210
|
<Divider length={50} />
|
|
211
211
|
<Text>Content below</Text>
|