@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,126 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Screen, View, Text } from '../index';
|
|
3
|
+
import Accordion from '../Accordion';
|
|
4
|
+
import type { AccordionItem } from '../Accordion/types';
|
|
5
|
+
|
|
6
|
+
export const AccordionExamples: React.FC = () => {
|
|
7
|
+
const basicItems: AccordionItem[] = [
|
|
8
|
+
{
|
|
9
|
+
id: 'item1',
|
|
10
|
+
title: 'What is React?',
|
|
11
|
+
content: 'React is a JavaScript library for building user interfaces. It lets you compose complex UIs from small and isolated pieces of code called components.',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: 'item2',
|
|
15
|
+
title: 'What is TypeScript?',
|
|
16
|
+
content: 'TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: 'item3',
|
|
20
|
+
title: 'What is Unistyles?',
|
|
21
|
+
content: 'Unistyles is a cross-platform styling library that works with both React and React Native, providing a unified API for styling components.',
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
const richContentItems: AccordionItem[] = [
|
|
26
|
+
{
|
|
27
|
+
id: 'rich1',
|
|
28
|
+
title: 'Rich Content Example',
|
|
29
|
+
content: (
|
|
30
|
+
<View spacing="sm">
|
|
31
|
+
<Text weight="semibold">Features:</Text>
|
|
32
|
+
<Text>• Cross-platform support</Text>
|
|
33
|
+
<Text>• Type-safe styling</Text>
|
|
34
|
+
<Text>• Theme variants</Text>
|
|
35
|
+
</View>
|
|
36
|
+
),
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: 'rich2',
|
|
40
|
+
title: 'Another Section',
|
|
41
|
+
content: (
|
|
42
|
+
<View>
|
|
43
|
+
<Text>This section contains rich content with multiple paragraphs.</Text>
|
|
44
|
+
<Text style={{ marginTop: 8 }}>You can include any React components here.</Text>
|
|
45
|
+
</View>
|
|
46
|
+
),
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
const disabledItems: AccordionItem[] = [
|
|
51
|
+
{ id: 'enabled1', title: 'Enabled Item', content: 'This item is enabled.' },
|
|
52
|
+
{ id: 'disabled', title: 'Disabled Item', content: 'This item is disabled.', disabled: true },
|
|
53
|
+
{ id: 'enabled2', title: 'Another Enabled Item', content: 'This item is also enabled.' },
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
return (
|
|
57
|
+
<Screen background="primary" padding="lg">
|
|
58
|
+
<View spacing="lg">
|
|
59
|
+
<Text size="xl" weight="bold">Accordion Examples</Text>
|
|
60
|
+
|
|
61
|
+
<View spacing="md">
|
|
62
|
+
<Text size="lg" weight="semibold">Basic Accordion</Text>
|
|
63
|
+
<Accordion items={basicItems} />
|
|
64
|
+
</View>
|
|
65
|
+
|
|
66
|
+
<View spacing="md">
|
|
67
|
+
<Text size="lg" weight="semibold">Allow Multiple Expanded</Text>
|
|
68
|
+
<Accordion items={basicItems} allowMultiple />
|
|
69
|
+
</View>
|
|
70
|
+
|
|
71
|
+
<View spacing="md">
|
|
72
|
+
<Text size="lg" weight="semibold">Default Expanded</Text>
|
|
73
|
+
<Accordion items={basicItems} defaultExpanded={['item1', 'item2']} allowMultiple />
|
|
74
|
+
</View>
|
|
75
|
+
|
|
76
|
+
<View spacing="md">
|
|
77
|
+
<Text size="lg" weight="semibold">Variants</Text>
|
|
78
|
+
<View spacing="sm">
|
|
79
|
+
<View spacing="xs">
|
|
80
|
+
<Text size="sm" weight="medium">Default</Text>
|
|
81
|
+
<Accordion items={basicItems} type="standard" />
|
|
82
|
+
</View>
|
|
83
|
+
<View spacing="xs">
|
|
84
|
+
<Text size="sm" weight="medium">Separated</Text>
|
|
85
|
+
<Accordion items={basicItems} type="separated" />
|
|
86
|
+
</View>
|
|
87
|
+
<View spacing="xs">
|
|
88
|
+
<Text size="sm" weight="medium">Bordered</Text>
|
|
89
|
+
<Accordion items={basicItems} type="bordered" />
|
|
90
|
+
</View>
|
|
91
|
+
</View>
|
|
92
|
+
</View>
|
|
93
|
+
|
|
94
|
+
<View spacing="md">
|
|
95
|
+
<Text size="lg" weight="semibold">Sizes</Text>
|
|
96
|
+
<View spacing="sm">
|
|
97
|
+
<View spacing="xs">
|
|
98
|
+
<Text size="sm" weight="medium">Small</Text>
|
|
99
|
+
<Accordion items={basicItems} size="sm" type="separated" />
|
|
100
|
+
</View>
|
|
101
|
+
<View spacing="xs">
|
|
102
|
+
<Text size="sm" weight="medium">Medium (default)</Text>
|
|
103
|
+
<Accordion items={basicItems} size="md" type="separated" />
|
|
104
|
+
</View>
|
|
105
|
+
<View spacing="xs">
|
|
106
|
+
<Text size="sm" weight="medium">Large</Text>
|
|
107
|
+
<Accordion items={basicItems} size="lg" type="separated" />
|
|
108
|
+
</View>
|
|
109
|
+
</View>
|
|
110
|
+
</View>
|
|
111
|
+
|
|
112
|
+
<View spacing="md">
|
|
113
|
+
<Text size="lg" weight="semibold">Rich Content</Text>
|
|
114
|
+
<Accordion items={richContentItems} type="bordered" />
|
|
115
|
+
</View>
|
|
116
|
+
|
|
117
|
+
<View spacing="md">
|
|
118
|
+
<Text size="lg" weight="semibold">Disabled Items</Text>
|
|
119
|
+
<Accordion items={disabledItems} type="separated" />
|
|
120
|
+
</View>
|
|
121
|
+
</View>
|
|
122
|
+
</Screen>
|
|
123
|
+
);
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
export default AccordionExamples;
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Alert, Screen, View, Text, Divider, Button } from '../index';
|
|
3
|
+
export const AlertExamples = () => {
|
|
4
|
+
const [successVisible, setSuccessVisible] = useState(true);
|
|
5
|
+
const [errorVisible, setErrorVisible] = useState(true);
|
|
6
|
+
|
|
7
|
+
return (
|
|
8
|
+
<Screen background="primary" safeArea>
|
|
9
|
+
<View spacing="lg" style={{ maxWidth: 800, width: '100%', paddingHorizontal: 16, marginHorizontal: 'auto' }}>
|
|
10
|
+
<Text size="xl" weight="bold">Alert Examples</Text>
|
|
11
|
+
|
|
12
|
+
<View spacing="md">
|
|
13
|
+
<Text size="lg" weight="semibold">Intent Variants</Text>
|
|
14
|
+
|
|
15
|
+
<View spacing="sm">
|
|
16
|
+
<Alert
|
|
17
|
+
intent="primary"
|
|
18
|
+
title="Primary"
|
|
19
|
+
message="This is a primary alert for main actions and information."
|
|
20
|
+
/>
|
|
21
|
+
|
|
22
|
+
<Alert
|
|
23
|
+
intent="success"
|
|
24
|
+
title="Success"
|
|
25
|
+
message="Your changes have been saved successfully."
|
|
26
|
+
/>
|
|
27
|
+
|
|
28
|
+
<Alert
|
|
29
|
+
intent="error"
|
|
30
|
+
title="Error"
|
|
31
|
+
message="There was an error processing your request."
|
|
32
|
+
/>
|
|
33
|
+
|
|
34
|
+
<Alert
|
|
35
|
+
intent="warning"
|
|
36
|
+
title="Warning"
|
|
37
|
+
message="Your session will expire in 5 minutes."
|
|
38
|
+
/>
|
|
39
|
+
|
|
40
|
+
<Alert
|
|
41
|
+
intent="info"
|
|
42
|
+
title="Information"
|
|
43
|
+
message="A new version of the app is available."
|
|
44
|
+
/>
|
|
45
|
+
|
|
46
|
+
<Alert
|
|
47
|
+
intent="neutral"
|
|
48
|
+
title="Note"
|
|
49
|
+
message="This is a general informational message."
|
|
50
|
+
/>
|
|
51
|
+
</View>
|
|
52
|
+
</View>
|
|
53
|
+
|
|
54
|
+
<View spacing="md">
|
|
55
|
+
<Text size="lg" weight="semibold">Style Variants</Text>
|
|
56
|
+
|
|
57
|
+
<View spacing="sm">
|
|
58
|
+
<Text size="md" weight="semibold">Filled</Text>
|
|
59
|
+
<Alert
|
|
60
|
+
type="filled"
|
|
61
|
+
intent="primary"
|
|
62
|
+
title="Filled Alert"
|
|
63
|
+
message="This is a filled alert with solid background."
|
|
64
|
+
/>
|
|
65
|
+
</View>
|
|
66
|
+
|
|
67
|
+
<View spacing="sm">
|
|
68
|
+
<Text size="md" weight="semibold">Outlined</Text>
|
|
69
|
+
<Alert
|
|
70
|
+
type="outlined"
|
|
71
|
+
intent="primary"
|
|
72
|
+
title="Outlined Alert"
|
|
73
|
+
message="This is an outlined alert with border."
|
|
74
|
+
/>
|
|
75
|
+
</View>
|
|
76
|
+
|
|
77
|
+
<View spacing="sm">
|
|
78
|
+
<Text size="md" weight="semibold">Soft (Default)</Text>
|
|
79
|
+
<Alert
|
|
80
|
+
type="soft"
|
|
81
|
+
intent="primary"
|
|
82
|
+
title="Soft Alert"
|
|
83
|
+
message="This is a soft alert with subtle background."
|
|
84
|
+
/>
|
|
85
|
+
</View>
|
|
86
|
+
</View>
|
|
87
|
+
|
|
88
|
+
<View spacing="md">
|
|
89
|
+
<Text size="lg" weight="semibold">Without Icons</Text>
|
|
90
|
+
|
|
91
|
+
<Alert
|
|
92
|
+
intent="success"
|
|
93
|
+
title="No Icon"
|
|
94
|
+
message="This alert does not display an icon."
|
|
95
|
+
showIcon={false}
|
|
96
|
+
/>
|
|
97
|
+
</View>
|
|
98
|
+
|
|
99
|
+
<View spacing="md">
|
|
100
|
+
<Text size="lg" weight="semibold">Custom Icons</Text>
|
|
101
|
+
|
|
102
|
+
<View spacing="sm">
|
|
103
|
+
<Alert
|
|
104
|
+
intent="info"
|
|
105
|
+
title="Custom Icon"
|
|
106
|
+
message="This alert uses a custom icon."
|
|
107
|
+
icon="🚀"
|
|
108
|
+
/>
|
|
109
|
+
|
|
110
|
+
<Alert
|
|
111
|
+
intent="warning"
|
|
112
|
+
title="Custom Component Icon"
|
|
113
|
+
message="You can also use custom React components as icons."
|
|
114
|
+
icon={<Text style={{ fontSize: 20 }}>⭐</Text>}
|
|
115
|
+
/>
|
|
116
|
+
</View>
|
|
117
|
+
</View>
|
|
118
|
+
|
|
119
|
+
<View spacing="md">
|
|
120
|
+
<Text size="lg" weight="semibold">Dismissible Alerts</Text>
|
|
121
|
+
|
|
122
|
+
<View spacing="sm">
|
|
123
|
+
{successVisible && (
|
|
124
|
+
<Alert
|
|
125
|
+
intent="success"
|
|
126
|
+
title="Dismissible Success"
|
|
127
|
+
message="Click the X button to dismiss this alert."
|
|
128
|
+
dismissible
|
|
129
|
+
onDismiss={() => setSuccessVisible(false)}
|
|
130
|
+
/>
|
|
131
|
+
)}
|
|
132
|
+
|
|
133
|
+
{!successVisible && (
|
|
134
|
+
<Button onPress={() => setSuccessVisible(true)}>
|
|
135
|
+
Show Success Alert
|
|
136
|
+
</Button>
|
|
137
|
+
)}
|
|
138
|
+
|
|
139
|
+
{errorVisible && (
|
|
140
|
+
<Alert
|
|
141
|
+
type="outlined"
|
|
142
|
+
intent="error"
|
|
143
|
+
title="Dismissible Error"
|
|
144
|
+
message="This outlined alert can also be dismissed."
|
|
145
|
+
dismissible
|
|
146
|
+
onDismiss={() => setErrorVisible(false)}
|
|
147
|
+
/>
|
|
148
|
+
)}
|
|
149
|
+
|
|
150
|
+
{!errorVisible && (
|
|
151
|
+
<Button onPress={() => setErrorVisible(true)}>
|
|
152
|
+
Show Error Alert
|
|
153
|
+
</Button>
|
|
154
|
+
)}
|
|
155
|
+
</View>
|
|
156
|
+
</View>
|
|
157
|
+
|
|
158
|
+
<View spacing="md">
|
|
159
|
+
<Text size="lg" weight="semibold">With Actions</Text>
|
|
160
|
+
|
|
161
|
+
<View spacing="sm">
|
|
162
|
+
<Alert
|
|
163
|
+
intent="warning"
|
|
164
|
+
title="Unsaved Changes"
|
|
165
|
+
message="You have unsaved changes. Do you want to save them?"
|
|
166
|
+
actions={
|
|
167
|
+
<View style={{ flexDirection: 'row', gap: 8 }}>
|
|
168
|
+
<Button type="contained" intent="primary" size="sm">
|
|
169
|
+
Save
|
|
170
|
+
</Button>
|
|
171
|
+
<Button type="outlined" intent="neutral" size="sm">
|
|
172
|
+
Discard
|
|
173
|
+
</Button>
|
|
174
|
+
</View>
|
|
175
|
+
}
|
|
176
|
+
/>
|
|
177
|
+
|
|
178
|
+
<Alert
|
|
179
|
+
type="outlined"
|
|
180
|
+
intent="info"
|
|
181
|
+
title="New Feature Available"
|
|
182
|
+
message="Check out our new collaboration features."
|
|
183
|
+
actions={
|
|
184
|
+
<Button type="text" intent="primary" size="sm">
|
|
185
|
+
Learn More
|
|
186
|
+
</Button>
|
|
187
|
+
}
|
|
188
|
+
/>
|
|
189
|
+
</View>
|
|
190
|
+
</View>
|
|
191
|
+
|
|
192
|
+
<View spacing="md">
|
|
193
|
+
<Text size="lg" weight="semibold">With Children</Text>
|
|
194
|
+
|
|
195
|
+
<Alert
|
|
196
|
+
intent="info"
|
|
197
|
+
title="Custom Content"
|
|
198
|
+
>
|
|
199
|
+
<View spacing="sm">
|
|
200
|
+
<Text size="sm">You can use children to add custom content:</Text>
|
|
201
|
+
<View style={{ paddingLeft: 16 }}>
|
|
202
|
+
<Text size="sm">• Custom formatted text</Text>
|
|
203
|
+
<Text size="sm">• Lists and structured content</Text>
|
|
204
|
+
<Text size="sm">• Any React components</Text>
|
|
205
|
+
</View>
|
|
206
|
+
</View>
|
|
207
|
+
</Alert>
|
|
208
|
+
</View>
|
|
209
|
+
|
|
210
|
+
<View spacing="md">
|
|
211
|
+
<Text size="lg" weight="semibold">Complex Example</Text>
|
|
212
|
+
|
|
213
|
+
<Alert
|
|
214
|
+
type="filled"
|
|
215
|
+
intent="success"
|
|
216
|
+
title="Payment Successful"
|
|
217
|
+
message="Your order has been confirmed and will be shipped soon."
|
|
218
|
+
dismissible
|
|
219
|
+
onDismiss={() => console.log('Dismissed')}
|
|
220
|
+
actions={
|
|
221
|
+
<View style={{ flexDirection: 'row', gap: 8 }}>
|
|
222
|
+
<Button type="outlined" size="sm" onPress={() => console.log('View order')}>
|
|
223
|
+
View Order
|
|
224
|
+
</Button>
|
|
225
|
+
<Button type="outlined" size="sm" onPress={() => console.log('Track')}>
|
|
226
|
+
Track Shipment
|
|
227
|
+
</Button>
|
|
228
|
+
</View>
|
|
229
|
+
}
|
|
230
|
+
/>
|
|
231
|
+
</View>
|
|
232
|
+
|
|
233
|
+
<View spacing="md">
|
|
234
|
+
<Text size="lg" weight="semibold">All Intent Colors (Soft Variant)</Text>
|
|
235
|
+
|
|
236
|
+
<View spacing="sm">
|
|
237
|
+
{(['primary', 'success', 'error', 'warning', 'info', 'neutral'] as const).map((intent) => (
|
|
238
|
+
<Alert
|
|
239
|
+
key={intent}
|
|
240
|
+
type="soft"
|
|
241
|
+
intent={intent}
|
|
242
|
+
message={`${intent.charAt(0).toUpperCase() + intent.slice(1)} alert message`}
|
|
243
|
+
/>
|
|
244
|
+
))}
|
|
245
|
+
</View>
|
|
246
|
+
</View>
|
|
247
|
+
|
|
248
|
+
<View spacing="md">
|
|
249
|
+
<Text size="lg" weight="semibold">All Intent Colors (Outlined Variant)</Text>
|
|
250
|
+
|
|
251
|
+
<View spacing="sm">
|
|
252
|
+
{(['primary', 'success', 'error', 'warning', 'info', 'neutral'] as const).map((intent) => (
|
|
253
|
+
<Alert
|
|
254
|
+
key={intent}
|
|
255
|
+
type="outlined"
|
|
256
|
+
intent={intent}
|
|
257
|
+
message={`${intent.charAt(0).toUpperCase() + intent.slice(1)} alert message`}
|
|
258
|
+
/>
|
|
259
|
+
))}
|
|
260
|
+
</View>
|
|
261
|
+
</View>
|
|
262
|
+
|
|
263
|
+
<View spacing="md">
|
|
264
|
+
<Text size="lg" weight="semibold">All Intent Colors (Filled Variant)</Text>
|
|
265
|
+
|
|
266
|
+
<View spacing="sm">
|
|
267
|
+
{(['primary', 'success', 'error', 'warning', 'info', 'neutral'] as const).map((intent) => (
|
|
268
|
+
<Alert
|
|
269
|
+
key={intent}
|
|
270
|
+
type="filled"
|
|
271
|
+
intent={intent}
|
|
272
|
+
message={`${intent.charAt(0).toUpperCase() + intent.slice(1)} alert message`}
|
|
273
|
+
/>
|
|
274
|
+
))}
|
|
275
|
+
</View>
|
|
276
|
+
</View>
|
|
277
|
+
</View>
|
|
278
|
+
</Screen>
|
|
279
|
+
);
|
|
280
|
+
};
|
|
@@ -5,33 +5,33 @@ export const AvatarExamples = () => {
|
|
|
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
|
Avatar Examples
|
|
10
10
|
</Text>
|
|
11
11
|
|
|
12
12
|
{/* Avatar Sizes */}
|
|
13
13
|
<View spacing="md">
|
|
14
|
-
<Text size="
|
|
14
|
+
<Text size="md" weight="semibold">Sizes</Text>
|
|
15
15
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
16
|
-
<Avatar size="
|
|
17
|
-
<Avatar size="
|
|
18
|
-
<Avatar size="
|
|
19
|
-
<Avatar size="
|
|
16
|
+
<Avatar size="sm" fallback="S" />
|
|
17
|
+
<Avatar size="md" fallback="M" />
|
|
18
|
+
<Avatar size="lg" fallback="L" />
|
|
19
|
+
<Avatar size="xl" fallback="XL" />
|
|
20
20
|
</View>
|
|
21
21
|
</View>
|
|
22
22
|
|
|
23
23
|
{/* Avatar Shapes */}
|
|
24
24
|
<View spacing="md">
|
|
25
|
-
<Text size="
|
|
25
|
+
<Text size="md" weight="semibold">Shapes</Text>
|
|
26
26
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
27
|
-
<Avatar shape="circle" fallback="C" size="
|
|
28
|
-
<Avatar shape="square" fallback="S" size="
|
|
27
|
+
<Avatar shape="circle" fallback="C" size="lg" />
|
|
28
|
+
<Avatar shape="square" fallback="S" size="lg" />
|
|
29
29
|
</View>
|
|
30
30
|
</View>
|
|
31
31
|
|
|
32
32
|
{/* Avatar with Fallbacks */}
|
|
33
33
|
<View spacing="md">
|
|
34
|
-
<Text size="
|
|
34
|
+
<Text size="md" weight="semibold">Fallback Text</Text>
|
|
35
35
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
36
36
|
<Avatar fallback="JD" alt="John Doe" />
|
|
37
37
|
<Avatar fallback="AB" alt="Alice Brown" />
|
|
@@ -42,7 +42,7 @@ export const AvatarExamples = () => {
|
|
|
42
42
|
|
|
43
43
|
{/* Avatar with Images */}
|
|
44
44
|
<View spacing="md">
|
|
45
|
-
<Text size="
|
|
45
|
+
<Text size="md" weight="semibold">With Images</Text>
|
|
46
46
|
<View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
47
47
|
<Avatar
|
|
48
48
|
src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150&h=150&fit=crop&crop=face"
|
|
@@ -64,30 +64,30 @@ export const AvatarExamples = () => {
|
|
|
64
64
|
|
|
65
65
|
{/* Avatar Group */}
|
|
66
66
|
<View spacing="md">
|
|
67
|
-
<Text size="
|
|
67
|
+
<Text size="md" weight="semibold">Avatar Group</Text>
|
|
68
68
|
<View style={{ flexDirection: 'row', gap: -8, alignItems: 'center' }}>
|
|
69
|
-
<Avatar fallback="JD" size="
|
|
70
|
-
<Avatar fallback="AB" size="
|
|
71
|
-
<Avatar fallback="MJ" size="
|
|
72
|
-
<Avatar fallback="+3" size="
|
|
69
|
+
<Avatar fallback="JD" size="md" />
|
|
70
|
+
<Avatar fallback="AB" size="md" />
|
|
71
|
+
<Avatar fallback="MJ" size="md" />
|
|
72
|
+
<Avatar fallback="+3" size="md" />
|
|
73
73
|
</View>
|
|
74
74
|
</View>
|
|
75
75
|
|
|
76
76
|
{/* Different Size Combinations */}
|
|
77
77
|
<View spacing="md">
|
|
78
|
-
<Text size="
|
|
78
|
+
<Text size="md" weight="semibold">Size Combinations</Text>
|
|
79
79
|
<View spacing="sm">
|
|
80
80
|
<View style={{ flexDirection: 'row', gap: 8, alignItems: 'center' }}>
|
|
81
|
-
<Avatar size="
|
|
82
|
-
<Text size="
|
|
81
|
+
<Avatar size="sm" fallback="S" />
|
|
82
|
+
<Text size="sm">Small avatar with text</Text>
|
|
83
83
|
</View>
|
|
84
84
|
<View style={{ flexDirection: 'row', gap: 8, alignItems: 'center' }}>
|
|
85
|
-
<Avatar size="
|
|
86
|
-
<Text size="
|
|
85
|
+
<Avatar size="md" fallback="M" />
|
|
86
|
+
<Text size="md">Medium avatar with text</Text>
|
|
87
87
|
</View>
|
|
88
88
|
<View style={{ flexDirection: 'row', gap: 8, alignItems: 'center' }}>
|
|
89
|
-
<Avatar size="
|
|
90
|
-
<Text size="
|
|
89
|
+
<Avatar size="lg" fallback="L" />
|
|
90
|
+
<Text size="lg">Large avatar with text</Text>
|
|
91
91
|
</View>
|
|
92
92
|
</View>
|
|
93
93
|
</View>
|