@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,144 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Screen, View, Text, Button, Menu, MenuItem } from '@idealyst/components';
|
|
3
|
+
|
|
4
|
+
export const MenuExamples: React.FC = () => {
|
|
5
|
+
const [basicMenuOpen, setBasicMenuOpen] = useState(false);
|
|
6
|
+
const [placementMenuOpen, setPlacementMenuOpen] = useState(false);
|
|
7
|
+
const [iconNameMenuOpen, setIconNameMenuOpen] = useState(false);
|
|
8
|
+
const [intentMenuOpen, setIntentMenuOpen] = useState(false);
|
|
9
|
+
const [separatorMenuOpen, setSeparatorMenuOpen] = useState(false);
|
|
10
|
+
const [disabledMenuOpen, setDisabledMenuOpen] = useState(false);
|
|
11
|
+
|
|
12
|
+
const [selectedAction, setSelectedAction] = useState<string>('');
|
|
13
|
+
|
|
14
|
+
const basicItems: MenuItem[] = [
|
|
15
|
+
{ id: 'action1', label: 'Action 1', onClick: () => setSelectedAction('Action 1') },
|
|
16
|
+
{ id: 'action2', label: 'Action 2', onClick: () => setSelectedAction('Action 2') },
|
|
17
|
+
{ id: 'action3', label: 'Action 3', onClick: () => setSelectedAction('Action 3') },
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
const iconNameItems: MenuItem[] = [
|
|
21
|
+
{ id: 'edit', label: 'Edit', icon: 'pencil', onClick: () => setSelectedAction('Edit') },
|
|
22
|
+
{ id: 'copy', label: 'Copy', icon: 'content-copy', onClick: () => setSelectedAction('Copy') },
|
|
23
|
+
{ id: 'share', label: 'Share', icon: 'share-variant', onClick: () => setSelectedAction('Share'), intent: 'primary' },
|
|
24
|
+
{ id: 'delete', label: 'Delete', icon: 'delete', onClick: () => setSelectedAction('Delete'), intent: 'error' },
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const intentItems: MenuItem[] = [
|
|
28
|
+
{ id: 'save', label: 'Save', intent: 'success', onClick: () => setSelectedAction('Save') },
|
|
29
|
+
{ id: 'cancel', label: 'Cancel', intent: 'neutral', onClick: () => setSelectedAction('Cancel') },
|
|
30
|
+
{ id: 'delete', label: 'Delete', intent: 'error', onClick: () => setSelectedAction('Delete') },
|
|
31
|
+
{ id: 'warn', label: 'Warning Action', intent: 'warning', onClick: () => setSelectedAction('Warning') },
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const separatorItems: MenuItem[] = [
|
|
35
|
+
{ id: 'new', label: 'New', onClick: () => setSelectedAction('New') },
|
|
36
|
+
{ id: 'open', label: 'Open', onClick: () => setSelectedAction('Open') },
|
|
37
|
+
{ id: 'sep1', label: '', separator: true },
|
|
38
|
+
{ id: 'save', label: 'Save', onClick: () => setSelectedAction('Save') },
|
|
39
|
+
{ id: 'saveas', label: 'Save As...', onClick: () => setSelectedAction('Save As') },
|
|
40
|
+
{ id: 'sep2', label: '', separator: true },
|
|
41
|
+
{ id: 'close', label: 'Close', onClick: () => setSelectedAction('Close') },
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
const disabledItems: MenuItem[] = [
|
|
45
|
+
{ id: 'enabled1', label: 'Enabled Action', onClick: () => setSelectedAction('Enabled') },
|
|
46
|
+
{ id: 'disabled', label: 'Disabled Action', disabled: true },
|
|
47
|
+
{ id: 'enabled2', label: 'Another Action', onClick: () => setSelectedAction('Another') },
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
return (
|
|
51
|
+
<Screen background="primary" padding="lg">
|
|
52
|
+
<View spacing="lg">
|
|
53
|
+
<Text size="xl" weight="bold">Menu Examples</Text>
|
|
54
|
+
|
|
55
|
+
{selectedAction && (
|
|
56
|
+
<View spacing="sm" style={{ padding: 12, backgroundColor: '#f0f0f0', borderRadius: 8 }}>
|
|
57
|
+
<Text>Last selected action: <Text weight="bold">{selectedAction}</Text></Text>
|
|
58
|
+
</View>
|
|
59
|
+
)}
|
|
60
|
+
|
|
61
|
+
<View spacing="md">
|
|
62
|
+
<Text size="lg" weight="semibold">Basic Menu</Text>
|
|
63
|
+
<Menu
|
|
64
|
+
items={basicItems}
|
|
65
|
+
open={basicMenuOpen}
|
|
66
|
+
onOpenChange={setBasicMenuOpen}
|
|
67
|
+
>
|
|
68
|
+
<Button type="outlined">
|
|
69
|
+
Open Menu
|
|
70
|
+
</Button>
|
|
71
|
+
</Menu>
|
|
72
|
+
</View>
|
|
73
|
+
|
|
74
|
+
<View spacing="md">
|
|
75
|
+
<Text size="lg" weight="semibold">Placement Options</Text>
|
|
76
|
+
<Menu
|
|
77
|
+
items={basicItems}
|
|
78
|
+
open={placementMenuOpen}
|
|
79
|
+
onOpenChange={setPlacementMenuOpen}
|
|
80
|
+
placement="bottom-start"
|
|
81
|
+
>
|
|
82
|
+
<Button type="outlined">
|
|
83
|
+
Bottom Start (default)
|
|
84
|
+
</Button>
|
|
85
|
+
</Menu>
|
|
86
|
+
</View>
|
|
87
|
+
|
|
88
|
+
<View spacing="md">
|
|
89
|
+
<Text size="lg" weight="semibold">With Icons</Text>
|
|
90
|
+
<Menu
|
|
91
|
+
items={iconNameItems}
|
|
92
|
+
open={iconNameMenuOpen}
|
|
93
|
+
onOpenChange={setIconNameMenuOpen}
|
|
94
|
+
>
|
|
95
|
+
<Button type="outlined">
|
|
96
|
+
Menu with Icons
|
|
97
|
+
</Button>
|
|
98
|
+
</Menu>
|
|
99
|
+
</View>
|
|
100
|
+
|
|
101
|
+
<View spacing="md">
|
|
102
|
+
<Text size="lg" weight="semibold">Intent Colors</Text>
|
|
103
|
+
<Menu
|
|
104
|
+
items={intentItems}
|
|
105
|
+
open={intentMenuOpen}
|
|
106
|
+
onOpenChange={setIntentMenuOpen}
|
|
107
|
+
>
|
|
108
|
+
<Button type="outlined">
|
|
109
|
+
Intent Menu
|
|
110
|
+
</Button>
|
|
111
|
+
</Menu>
|
|
112
|
+
</View>
|
|
113
|
+
|
|
114
|
+
<View spacing="md">
|
|
115
|
+
<Text size="lg" weight="semibold">With Separators</Text>
|
|
116
|
+
<Menu
|
|
117
|
+
items={separatorItems}
|
|
118
|
+
open={separatorMenuOpen}
|
|
119
|
+
onOpenChange={setSeparatorMenuOpen}
|
|
120
|
+
>
|
|
121
|
+
<Button type="outlined">
|
|
122
|
+
File Menu
|
|
123
|
+
</Button>
|
|
124
|
+
</Menu>
|
|
125
|
+
</View>
|
|
126
|
+
|
|
127
|
+
<View spacing="md">
|
|
128
|
+
<Text size="lg" weight="semibold">Disabled Items</Text>
|
|
129
|
+
<Menu
|
|
130
|
+
items={disabledItems}
|
|
131
|
+
open={disabledMenuOpen}
|
|
132
|
+
onOpenChange={setDisabledMenuOpen}
|
|
133
|
+
>
|
|
134
|
+
<Button type="outlined">
|
|
135
|
+
Menu with Disabled
|
|
136
|
+
</Button>
|
|
137
|
+
</Menu>
|
|
138
|
+
</View>
|
|
139
|
+
</View>
|
|
140
|
+
</Screen>
|
|
141
|
+
);
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
export default MenuExamples;
|
|
@@ -6,32 +6,34 @@ export const PopoverExamples = () => {
|
|
|
6
6
|
const [placementOpen, setPlacementOpen] = useState<string | null>(null);
|
|
7
7
|
const [arrowOpen, setArrowOpen] = useState(false);
|
|
8
8
|
|
|
9
|
-
const basicButtonRef = useRef<
|
|
10
|
-
const placementButtonRefs = useRef<{ [key: string]:
|
|
11
|
-
const arrowButtonRef = useRef<
|
|
9
|
+
const basicButtonRef = useRef<any>(null);
|
|
10
|
+
const placementButtonRefs = useRef<{ [key: string]: any }>({});
|
|
11
|
+
const arrowButtonRef = useRef<any>(null);
|
|
12
12
|
|
|
13
13
|
const placements = [
|
|
14
|
-
'top', '
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
'
|
|
14
|
+
{ id: 'top', label: 'Top' },
|
|
15
|
+
{ id: 'top-start', label: 'Top Start' },
|
|
16
|
+
{ id: 'top-end', label: 'Top End' },
|
|
17
|
+
{ id: 'bottom', label: 'Bottom' },
|
|
18
|
+
{ id: 'bottom-start', label: 'Bottom Start' },
|
|
19
|
+
{ id: 'bottom-end', label: 'Bottom End' },
|
|
18
20
|
];
|
|
19
21
|
|
|
20
22
|
return (
|
|
21
23
|
<Screen background="primary" padding="lg">
|
|
22
|
-
<View spacing="
|
|
23
|
-
<Text size="
|
|
24
|
+
<View spacing="lg">
|
|
25
|
+
<Text size="lg" weight="bold" align="center">
|
|
24
26
|
Popover Examples
|
|
25
27
|
</Text>
|
|
26
|
-
|
|
28
|
+
|
|
27
29
|
{/* Basic Popover */}
|
|
28
30
|
<View spacing="md">
|
|
29
|
-
<Text size="
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
<Text size="md" weight="semibold">Basic Popover</Text>
|
|
32
|
+
<Button
|
|
33
|
+
ref={basicButtonRef}
|
|
34
|
+
onPress={() => setBasicOpen(true)}>
|
|
32
35
|
Open Basic Popover
|
|
33
36
|
</Button>
|
|
34
|
-
</div>
|
|
35
37
|
<Popover
|
|
36
38
|
open={basicOpen}
|
|
37
39
|
onOpenChange={setBasicOpen}
|
|
@@ -40,8 +42,8 @@ export const PopoverExamples = () => {
|
|
|
40
42
|
>
|
|
41
43
|
<View spacing="sm">
|
|
42
44
|
<Text weight="bold">Basic Popover</Text>
|
|
43
|
-
<Text size="
|
|
44
|
-
<Button size="
|
|
45
|
+
<Text size="sm">This is a basic popover with some content.</Text>
|
|
46
|
+
<Button size="sm" onPress={() => setBasicOpen(false)}>
|
|
45
47
|
Close
|
|
46
48
|
</Button>
|
|
47
49
|
</View>
|
|
@@ -50,62 +52,56 @@ export const PopoverExamples = () => {
|
|
|
50
52
|
|
|
51
53
|
{/* Placement Examples */}
|
|
52
54
|
<View spacing="md">
|
|
53
|
-
<Text size="
|
|
54
|
-
<View style={{
|
|
55
|
-
display: 'grid',
|
|
56
|
-
gridTemplateColumns: 'repeat(3, 1fr)',
|
|
57
|
-
gap: 8,
|
|
58
|
-
maxWidth: 400
|
|
59
|
-
}}>
|
|
55
|
+
<Text size="md" weight="semibold">Placement Options</Text>
|
|
56
|
+
<View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: 8 }}>
|
|
60
57
|
{placements.map((placement) => (
|
|
61
|
-
<
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
>
|
|
66
|
-
<Button
|
|
67
|
-
size="small"
|
|
68
|
-
variant="outlined"
|
|
69
|
-
onPress={() => setPlacementOpen(placement)}
|
|
58
|
+
<View key={placement.id}>
|
|
59
|
+
<View
|
|
60
|
+
ref={(ref) => (placementButtonRefs.current[placement.id] = ref) as any}
|
|
61
|
+
style={{ display: 'inline-block' }}
|
|
70
62
|
>
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
63
|
+
<Button
|
|
64
|
+
size="sm"
|
|
65
|
+
type="outlined"
|
|
66
|
+
onPress={() => setPlacementOpen(placement.id)}
|
|
67
|
+
>
|
|
68
|
+
{placement.label}
|
|
69
|
+
</Button>
|
|
70
|
+
</View>
|
|
71
|
+
{placementOpen === placement.id && (
|
|
72
|
+
<Popover
|
|
73
|
+
open={true}
|
|
74
|
+
onOpenChange={() => setPlacementOpen(null)}
|
|
75
|
+
anchor={{ current: placementButtonRefs.current[placement.id] }}
|
|
76
|
+
placement={placement.id as any}
|
|
77
|
+
>
|
|
78
|
+
<View spacing="sm">
|
|
79
|
+
<Text weight="bold">{placement.label} placement</Text>
|
|
80
|
+
<Text size="sm">
|
|
81
|
+
Positioned {placement.id} relative to the button
|
|
82
|
+
</Text>
|
|
83
|
+
<Button size="sm" onPress={() => setPlacementOpen(null)}>
|
|
84
|
+
Close
|
|
85
|
+
</Button>
|
|
86
|
+
</View>
|
|
87
|
+
</Popover>
|
|
88
|
+
)}
|
|
89
|
+
</View>
|
|
74
90
|
))}
|
|
75
91
|
</View>
|
|
76
|
-
|
|
77
|
-
{placementOpen && (
|
|
78
|
-
<Popover
|
|
79
|
-
open={!!placementOpen}
|
|
80
|
-
onOpenChange={() => setPlacementOpen(null)}
|
|
81
|
-
anchor={{ current: placementButtonRefs.current[placementOpen] }}
|
|
82
|
-
placement={placementOpen as any}
|
|
83
|
-
>
|
|
84
|
-
<View spacing="sm">
|
|
85
|
-
<Text weight="bold">{placementOpen} placement</Text>
|
|
86
|
-
<Text size="small">
|
|
87
|
-
Positioned {placementOpen} relative to the button
|
|
88
|
-
</Text>
|
|
89
|
-
<Button size="small" onPress={() => setPlacementOpen(null)}>
|
|
90
|
-
Close
|
|
91
|
-
</Button>
|
|
92
|
-
</View>
|
|
93
|
-
</Popover>
|
|
94
|
-
)}
|
|
95
92
|
</View>
|
|
96
93
|
|
|
97
94
|
{/* Arrow Example */}
|
|
98
95
|
<View spacing="md">
|
|
99
|
-
<Text size="
|
|
100
|
-
<
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
</div>
|
|
96
|
+
<Text size="md" weight="semibold">With Arrow</Text>
|
|
97
|
+
<Button
|
|
98
|
+
ref={arrowButtonRef}
|
|
99
|
+
type="contained"
|
|
100
|
+
intent="success"
|
|
101
|
+
onPress={() => setArrowOpen(true)}
|
|
102
|
+
>
|
|
103
|
+
Popover with Arrow
|
|
104
|
+
</Button>
|
|
109
105
|
<Popover
|
|
110
106
|
open={arrowOpen}
|
|
111
107
|
onOpenChange={setArrowOpen}
|
|
@@ -115,10 +111,10 @@ export const PopoverExamples = () => {
|
|
|
115
111
|
>
|
|
116
112
|
<View spacing="sm">
|
|
117
113
|
<Text weight="bold">Arrow Popover</Text>
|
|
118
|
-
<Text size="
|
|
114
|
+
<Text size="sm">
|
|
119
115
|
This popover includes an arrow pointing to the anchor element.
|
|
120
116
|
</Text>
|
|
121
|
-
<Button size="
|
|
117
|
+
<Button size="sm" onPress={() => setArrowOpen(false)}>
|
|
122
118
|
Close
|
|
123
119
|
</Button>
|
|
124
120
|
</View>
|
|
@@ -127,24 +123,24 @@ export const PopoverExamples = () => {
|
|
|
127
123
|
|
|
128
124
|
{/* Features Description */}
|
|
129
125
|
<View spacing="md">
|
|
130
|
-
<Text size="
|
|
126
|
+
<Text size="md" weight="semibold">Features</Text>
|
|
131
127
|
<View spacing="sm">
|
|
132
|
-
<Text size="
|
|
128
|
+
<Text size="sm" color="secondary">
|
|
133
129
|
• Automatically positions within viewport bounds
|
|
134
130
|
</Text>
|
|
135
|
-
<Text size="
|
|
131
|
+
<Text size="sm" color="secondary">
|
|
136
132
|
• 12 placement options (top, bottom, left, right with start/end variants)
|
|
137
133
|
</Text>
|
|
138
|
-
<Text size="
|
|
134
|
+
<Text size="sm" color="secondary">
|
|
139
135
|
• Optional arrow pointing to anchor element
|
|
140
136
|
</Text>
|
|
141
|
-
<Text size="
|
|
137
|
+
<Text size="sm" color="secondary">
|
|
142
138
|
• Click outside or escape key to close
|
|
143
139
|
</Text>
|
|
144
|
-
<Text size="
|
|
140
|
+
<Text size="sm" color="secondary">
|
|
145
141
|
• Smooth animations and transitions
|
|
146
142
|
</Text>
|
|
147
|
-
<Text size="
|
|
143
|
+
<Text size="sm" color="secondary">
|
|
148
144
|
• Follows anchor element on scroll/resize (web)
|
|
149
145
|
</Text>
|
|
150
146
|
</View>
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
import { Screen, View, Text, Button } from '@idealyst/components';
|
|
3
|
+
import Progress from '../Progress';
|
|
4
|
+
|
|
5
|
+
export const ProgressExamples: React.FC = () => {
|
|
6
|
+
const [dynamicValue, setDynamicValue] = useState(0);
|
|
7
|
+
const [interactiveValue, setInteractiveValue] = useState(50);
|
|
8
|
+
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
const interval = setInterval(() => {
|
|
11
|
+
setDynamicValue((prev) => (prev >= 100 ? 0 : prev + 10));
|
|
12
|
+
}, 1000);
|
|
13
|
+
return () => clearInterval(interval);
|
|
14
|
+
}, []);
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<Screen background="primary" padding="lg">
|
|
18
|
+
<View spacing="lg">
|
|
19
|
+
<Text size="xl" weight="bold">Progress Examples</Text>
|
|
20
|
+
|
|
21
|
+
<View spacing="md">
|
|
22
|
+
<Text size="lg" weight="semibold">Linear Progress</Text>
|
|
23
|
+
<View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
|
|
24
|
+
<Progress value={25} />
|
|
25
|
+
<Progress value={50} />
|
|
26
|
+
<Progress value={75} />
|
|
27
|
+
<Progress value={100} />
|
|
28
|
+
</View>
|
|
29
|
+
</View>
|
|
30
|
+
|
|
31
|
+
<View spacing="md">
|
|
32
|
+
<Text size="lg" weight="semibold">Sizes</Text>
|
|
33
|
+
<View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
|
|
34
|
+
<Progress value={60} size="sm" />
|
|
35
|
+
<Progress value={60} size="md" />
|
|
36
|
+
<Progress value={60} size="lg" />
|
|
37
|
+
</View>
|
|
38
|
+
</View>
|
|
39
|
+
|
|
40
|
+
<View spacing="md">
|
|
41
|
+
<Text size="lg" weight="semibold">Intent Colors</Text>
|
|
42
|
+
<View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
|
|
43
|
+
<Progress value={70} intent="primary" />
|
|
44
|
+
<Progress value={70} intent="success" />
|
|
45
|
+
<Progress value={70} intent="warning" />
|
|
46
|
+
<Progress value={70} intent="error" />
|
|
47
|
+
<Progress value={70} intent="neutral" />
|
|
48
|
+
</View>
|
|
49
|
+
</View>
|
|
50
|
+
|
|
51
|
+
<View spacing="md">
|
|
52
|
+
<Text size="lg" weight="semibold">With Labels</Text>
|
|
53
|
+
<View spacing="sm">
|
|
54
|
+
<Progress value={30} showLabel />
|
|
55
|
+
<Progress value={60} showLabel label="Loading..." />
|
|
56
|
+
<Progress value={90} showLabel label="Almost done!" />
|
|
57
|
+
</View>
|
|
58
|
+
</View>
|
|
59
|
+
|
|
60
|
+
<View spacing="md">
|
|
61
|
+
<Text size="lg" weight="semibold">Indeterminate</Text>
|
|
62
|
+
<View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
|
|
63
|
+
<Progress indeterminate />
|
|
64
|
+
<Progress indeterminate intent="success" />
|
|
65
|
+
<Progress indeterminate size="lg" intent="warning" />
|
|
66
|
+
</View>
|
|
67
|
+
</View>
|
|
68
|
+
|
|
69
|
+
<View spacing="md">
|
|
70
|
+
<Text size="lg" weight="semibold">Circular Progress</Text>
|
|
71
|
+
<View spacing="sm" style={{ flexDirection: 'row', gap: 16 }}>
|
|
72
|
+
<Progress variant="circular" value={25} size="sm" />
|
|
73
|
+
<Progress variant="circular" value={50} size="md" />
|
|
74
|
+
<Progress variant="circular" value={75} size="lg" />
|
|
75
|
+
</View>
|
|
76
|
+
</View>
|
|
77
|
+
|
|
78
|
+
<View spacing="md">
|
|
79
|
+
<Text size="lg" weight="semibold">Circular with Labels</Text>
|
|
80
|
+
<View spacing="sm" style={{ flexDirection: 'row', gap: 16 }}>
|
|
81
|
+
<Progress variant="circular" value={30} showLabel size="md" />
|
|
82
|
+
<Progress variant="circular" value={60} showLabel size="lg" intent="success" />
|
|
83
|
+
</View>
|
|
84
|
+
</View>
|
|
85
|
+
|
|
86
|
+
<View spacing="md">
|
|
87
|
+
<Text size="lg" weight="semibold">Circular Indeterminate</Text>
|
|
88
|
+
<View spacing="sm" style={{ flexDirection: 'row', gap: 16 }}>
|
|
89
|
+
<Progress variant="circular" indeterminate size="sm" />
|
|
90
|
+
<Progress variant="circular" indeterminate size="md" intent="primary" />
|
|
91
|
+
<Progress variant="circular" indeterminate size="lg" intent="warning" />
|
|
92
|
+
</View>
|
|
93
|
+
</View>
|
|
94
|
+
|
|
95
|
+
<View spacing="md">
|
|
96
|
+
<Text size="lg" weight="semibold">Rounded vs Straight</Text>
|
|
97
|
+
<View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
|
|
98
|
+
<View spacing="xs">
|
|
99
|
+
<Text size="sm">Rounded (default)</Text>
|
|
100
|
+
<Progress value={70} rounded={true} />
|
|
101
|
+
</View>
|
|
102
|
+
<View spacing="xs">
|
|
103
|
+
<Text size="sm">Straight edges</Text>
|
|
104
|
+
<Progress value={70} rounded={false} />
|
|
105
|
+
</View>
|
|
106
|
+
</View>
|
|
107
|
+
</View>
|
|
108
|
+
|
|
109
|
+
<View spacing="md">
|
|
110
|
+
<Text size="lg" weight="semibold">Dynamic Progress</Text>
|
|
111
|
+
<Progress value={dynamicValue} showLabel />
|
|
112
|
+
<Text size="sm" color="secondary">Automatically updating every second</Text>
|
|
113
|
+
</View>
|
|
114
|
+
|
|
115
|
+
<View spacing="md">
|
|
116
|
+
<Text size="lg" weight="semibold">Interactive Circular Progress</Text>
|
|
117
|
+
<View spacing="sm">
|
|
118
|
+
<View style={{ flexDirection: 'row', gap: 16, alignItems: 'center' }}>
|
|
119
|
+
<Progress variant="circular" value={interactiveValue} showLabel size="lg" />
|
|
120
|
+
<View spacing="sm">
|
|
121
|
+
<Button size="sm" onPress={() => setInteractiveValue(Math.max(0, interactiveValue - 10))}>
|
|
122
|
+
-10
|
|
123
|
+
</Button>
|
|
124
|
+
<Button size="sm" onPress={() => setInteractiveValue(Math.min(100, interactiveValue + 10))}>
|
|
125
|
+
+10
|
|
126
|
+
</Button>
|
|
127
|
+
</View>
|
|
128
|
+
</View>
|
|
129
|
+
<Text size="sm" color="secondary">Click buttons to change value</Text>
|
|
130
|
+
</View>
|
|
131
|
+
</View>
|
|
132
|
+
</View>
|
|
133
|
+
</Screen>
|
|
134
|
+
);
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
export default ProgressExamples;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Screen, View, Text } from '@idealyst/components';
|
|
3
|
+
import { RadioButton, RadioGroup } from '../RadioButton';
|
|
4
|
+
|
|
5
|
+
export const RadioButtonExamples: React.FC = () => {
|
|
6
|
+
const [selectedValue, setSelectedValue] = useState('option1');
|
|
7
|
+
const [selectedColor, setSelectedColor] = useState('blue');
|
|
8
|
+
const [selectedSize, setSelectedSize] = useState('md');
|
|
9
|
+
const [selectedIntent, setSelectedIntent] = useState('primary');
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<Screen background="primary" padding="lg">
|
|
13
|
+
<View spacing="lg">
|
|
14
|
+
<Text size="xl" weight="bold">RadioButton Examples</Text>
|
|
15
|
+
|
|
16
|
+
<View spacing="md">
|
|
17
|
+
<Text size="lg" weight="semibold">Basic RadioGroup</Text>
|
|
18
|
+
<RadioGroup value={selectedValue} onValueChange={setSelectedValue}>
|
|
19
|
+
<RadioButton value="option1" label="Option 1" />
|
|
20
|
+
<RadioButton value="option2" label="Option 2" />
|
|
21
|
+
<RadioButton value="option3" label="Option 3" />
|
|
22
|
+
</RadioGroup>
|
|
23
|
+
<Text size="sm" color="secondary">Selected: {selectedValue}</Text>
|
|
24
|
+
</View>
|
|
25
|
+
|
|
26
|
+
<View spacing="md">
|
|
27
|
+
<Text size="lg" weight="semibold">Horizontal RadioGroup</Text>
|
|
28
|
+
<RadioGroup
|
|
29
|
+
value={selectedColor}
|
|
30
|
+
onValueChange={setSelectedColor}
|
|
31
|
+
orientation="horizontal"
|
|
32
|
+
>
|
|
33
|
+
<RadioButton value="red" label="Red" />
|
|
34
|
+
<RadioButton value="green" label="Green" />
|
|
35
|
+
<RadioButton value="blue" label="Blue" />
|
|
36
|
+
</RadioGroup>
|
|
37
|
+
<Text size="sm" color="secondary">Selected: {selectedColor}</Text>
|
|
38
|
+
</View>
|
|
39
|
+
|
|
40
|
+
<View spacing="md">
|
|
41
|
+
<Text size="lg" weight="semibold">With Disabled Options</Text>
|
|
42
|
+
<RadioGroup value={selectedSize} onValueChange={setSelectedSize}>
|
|
43
|
+
<RadioButton value="sm" label="Small" />
|
|
44
|
+
<RadioButton value="md" label="Medium" />
|
|
45
|
+
<RadioButton value="lg" label="Large" disabled />
|
|
46
|
+
<RadioButton value="xl" label="Extra Large" />
|
|
47
|
+
</RadioGroup>
|
|
48
|
+
</View>
|
|
49
|
+
|
|
50
|
+
<View spacing="md">
|
|
51
|
+
<Text size="lg" weight="semibold">Disabled Group</Text>
|
|
52
|
+
<RadioGroup value="option1" disabled>
|
|
53
|
+
<RadioButton value="option1" label="Option A" />
|
|
54
|
+
<RadioButton value="option2" label="Option B" />
|
|
55
|
+
<RadioButton value="option3" label="Option C" />
|
|
56
|
+
</RadioGroup>
|
|
57
|
+
</View>
|
|
58
|
+
|
|
59
|
+
<View spacing="md">
|
|
60
|
+
<Text size="lg" weight="semibold">Sizes</Text>
|
|
61
|
+
<View spacing="sm">
|
|
62
|
+
<RadioButton
|
|
63
|
+
value="sm"
|
|
64
|
+
label="Small"
|
|
65
|
+
size="sm"
|
|
66
|
+
checked={selectedSize === 'sm'}
|
|
67
|
+
onPress={() => setSelectedSize('sm')}
|
|
68
|
+
/>
|
|
69
|
+
<RadioButton
|
|
70
|
+
value="md"
|
|
71
|
+
label="Medium"
|
|
72
|
+
size="md"
|
|
73
|
+
checked={selectedSize === 'md'}
|
|
74
|
+
onPress={() => setSelectedSize('md')}
|
|
75
|
+
/>
|
|
76
|
+
<RadioButton
|
|
77
|
+
value="lg"
|
|
78
|
+
label="Large"
|
|
79
|
+
size="lg"
|
|
80
|
+
checked={selectedSize === 'lg'}
|
|
81
|
+
onPress={() => setSelectedSize('lg')}
|
|
82
|
+
/>
|
|
83
|
+
</View>
|
|
84
|
+
</View>
|
|
85
|
+
|
|
86
|
+
<View spacing="md">
|
|
87
|
+
<Text size="lg" weight="semibold">Intents</Text>
|
|
88
|
+
<View spacing="sm">
|
|
89
|
+
<RadioButton
|
|
90
|
+
value="primary"
|
|
91
|
+
label="Primary"
|
|
92
|
+
intent="primary"
|
|
93
|
+
checked={selectedIntent === 'primary'}
|
|
94
|
+
onPress={() => setSelectedIntent('primary')}
|
|
95
|
+
/>
|
|
96
|
+
<RadioButton
|
|
97
|
+
value="success"
|
|
98
|
+
label="Success"
|
|
99
|
+
intent="success"
|
|
100
|
+
checked={selectedIntent === 'success'}
|
|
101
|
+
onPress={() => setSelectedIntent('success')}
|
|
102
|
+
/>
|
|
103
|
+
<RadioButton
|
|
104
|
+
value="error"
|
|
105
|
+
label="Error"
|
|
106
|
+
intent="error"
|
|
107
|
+
checked={selectedIntent === 'error'}
|
|
108
|
+
onPress={() => setSelectedIntent('error')}
|
|
109
|
+
/>
|
|
110
|
+
<RadioButton
|
|
111
|
+
value="warning"
|
|
112
|
+
label="Warning"
|
|
113
|
+
intent="warning"
|
|
114
|
+
checked={selectedIntent === 'warning'}
|
|
115
|
+
onPress={() => setSelectedIntent('warning')}
|
|
116
|
+
/>
|
|
117
|
+
<RadioButton
|
|
118
|
+
value="neutral"
|
|
119
|
+
label="Neutral"
|
|
120
|
+
intent="neutral"
|
|
121
|
+
checked={selectedIntent === 'neutral'}
|
|
122
|
+
onPress={() => setSelectedIntent('neutral')}
|
|
123
|
+
/>
|
|
124
|
+
</View>
|
|
125
|
+
</View>
|
|
126
|
+
|
|
127
|
+
<View spacing="md">
|
|
128
|
+
<Text size="lg" weight="semibold">Standalone RadioButtons</Text>
|
|
129
|
+
<View spacing="sm">
|
|
130
|
+
<RadioButton
|
|
131
|
+
value="standalone1"
|
|
132
|
+
label="Unchecked"
|
|
133
|
+
checked={false}
|
|
134
|
+
onPress={() => console.log('Pressed')}
|
|
135
|
+
/>
|
|
136
|
+
<RadioButton
|
|
137
|
+
value="standalone2"
|
|
138
|
+
label="Checked"
|
|
139
|
+
checked={true}
|
|
140
|
+
onPress={() => console.log('Pressed')}
|
|
141
|
+
/>
|
|
142
|
+
<RadioButton
|
|
143
|
+
value="standalone3"
|
|
144
|
+
label="Disabled Unchecked"
|
|
145
|
+
checked={false}
|
|
146
|
+
disabled
|
|
147
|
+
/>
|
|
148
|
+
<RadioButton
|
|
149
|
+
value="standalone4"
|
|
150
|
+
label="Disabled Checked"
|
|
151
|
+
checked={true}
|
|
152
|
+
disabled
|
|
153
|
+
/>
|
|
154
|
+
</View>
|
|
155
|
+
</View>
|
|
156
|
+
</View>
|
|
157
|
+
</Screen>
|
|
158
|
+
);
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
export default RadioButtonExamples;
|