@idealyst/components 1.0.83 → 1.0.85
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
package/src/Card/README.md
DELETED
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
# Card Component
|
|
2
|
-
|
|
3
|
-
A flexible container component for displaying content in a visually grouped format with various styling options.
|
|
4
|
-
|
|
5
|
-
## Features
|
|
6
|
-
|
|
7
|
-
- ✅ Cross-platform (React & React Native)
|
|
8
|
-
- ✅ Multiple variants (default, outlined, elevated, filled)
|
|
9
|
-
- ✅ Configurable padding and border radius
|
|
10
|
-
- ✅ Intent-based color schemes
|
|
11
|
-
- ✅ Clickable/interactive support
|
|
12
|
-
- ✅ Disabled state handling
|
|
13
|
-
- ✅ Accessible with proper ARIA attributes
|
|
14
|
-
- ✅ TypeScript support
|
|
15
|
-
|
|
16
|
-
## Basic Usage
|
|
17
|
-
|
|
18
|
-
```tsx
|
|
19
|
-
import { Card, Text } from '@idealyst/components';
|
|
20
|
-
|
|
21
|
-
// Basic card
|
|
22
|
-
<Card>
|
|
23
|
-
<Text size="large" weight="bold">Card Title</Text>
|
|
24
|
-
<Text>Card content goes here</Text>
|
|
25
|
-
</Card>
|
|
26
|
-
|
|
27
|
-
// Clickable card
|
|
28
|
-
<Card
|
|
29
|
-
clickable
|
|
30
|
-
onPress={() => console.log('Card pressed!')}
|
|
31
|
-
>
|
|
32
|
-
<Text>Click me!</Text>
|
|
33
|
-
</Card>
|
|
34
|
-
|
|
35
|
-
// Elevated card with custom styling
|
|
36
|
-
<Card
|
|
37
|
-
variant="elevated"
|
|
38
|
-
padding="large"
|
|
39
|
-
radius="large"
|
|
40
|
-
>
|
|
41
|
-
<Text>Elevated card content</Text>
|
|
42
|
-
</Card>
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Props
|
|
46
|
-
|
|
47
|
-
| Prop | Type | Default | Description |
|
|
48
|
-
|------|------|---------|-------------|
|
|
49
|
-
| `children` | `ReactNode` | - | Content to display inside the card |
|
|
50
|
-
| `variant` | `'default' \| 'outlined' \| 'elevated' \| 'filled'` | `'default'` | Visual style variant |
|
|
51
|
-
| `padding` | `'none' \| 'small' \| 'medium' \| 'large'` | `'medium'` | Internal padding size |
|
|
52
|
-
| `radius` | `'none' \| 'small' \| 'medium' \| 'large'` | `'medium'` | Border radius size |
|
|
53
|
-
| `intent` | `IntentVariant` | `'neutral'` | Color scheme/intent |
|
|
54
|
-
| `clickable` | `boolean` | `false` | Whether the card is interactive |
|
|
55
|
-
| `onPress` | `() => void` | - | Function called when card is pressed (requires clickable) |
|
|
56
|
-
| `disabled` | `boolean` | `false` | Whether the card is disabled |
|
|
57
|
-
| `style` | `ViewStyle` | - | Additional custom styles |
|
|
58
|
-
| `testID` | `string` | - | Test identifier for testing |
|
|
59
|
-
| `accessibilityLabel` | `string` | - | Accessibility label for screen readers |
|
|
60
|
-
|
|
61
|
-
## Variants
|
|
62
|
-
|
|
63
|
-
### Default Card
|
|
64
|
-
Basic card with subtle background.
|
|
65
|
-
|
|
66
|
-
```tsx
|
|
67
|
-
<Card variant="default">
|
|
68
|
-
<Text>Default card content</Text>
|
|
69
|
-
</Card>
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### Outlined Card
|
|
73
|
-
Card with border and transparent background.
|
|
74
|
-
|
|
75
|
-
```tsx
|
|
76
|
-
<Card variant="outlined">
|
|
77
|
-
<Text>Outlined card content</Text>
|
|
78
|
-
</Card>
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Elevated Card
|
|
82
|
-
Card with shadow/elevation for depth.
|
|
83
|
-
|
|
84
|
-
```tsx
|
|
85
|
-
<Card variant="elevated">
|
|
86
|
-
<Text>Elevated card content</Text>
|
|
87
|
-
</Card>
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### Filled Card
|
|
91
|
-
Card with solid background color.
|
|
92
|
-
|
|
93
|
-
```tsx
|
|
94
|
-
<Card variant="filled" intent="primary">
|
|
95
|
-
<Text>Filled card content</Text>
|
|
96
|
-
</Card>
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Padding Options
|
|
100
|
-
|
|
101
|
-
| Padding | Value | Use Case |
|
|
102
|
-
|---------|-------|----------|
|
|
103
|
-
| `none` | 0px | Custom content padding |
|
|
104
|
-
| `small` | 8px | Compact cards |
|
|
105
|
-
| `medium` | 16px | Standard cards |
|
|
106
|
-
| `large` | 24px | Spacious cards |
|
|
107
|
-
|
|
108
|
-
```tsx
|
|
109
|
-
<Card padding="none">No padding</Card>
|
|
110
|
-
<Card padding="small">Small padding</Card>
|
|
111
|
-
<Card padding="medium">Medium padding</Card>
|
|
112
|
-
<Card padding="large">Large padding</Card>
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## Border Radius Options
|
|
116
|
-
|
|
117
|
-
| Radius | Value | Use Case |
|
|
118
|
-
|--------|-------|----------|
|
|
119
|
-
| `none` | 0px | Sharp corners |
|
|
120
|
-
| `small` | 4px | Subtle rounding |
|
|
121
|
-
| `medium` | 8px | Standard rounding |
|
|
122
|
-
| `large` | 16px | Prominent rounding |
|
|
123
|
-
|
|
124
|
-
```tsx
|
|
125
|
-
<Card radius="none">Sharp corners</Card>
|
|
126
|
-
<Card radius="small">Subtle corners</Card>
|
|
127
|
-
<Card radius="medium">Standard corners</Card>
|
|
128
|
-
<Card radius="large">Rounded corners</Card>
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
## Intent Colors
|
|
132
|
-
|
|
133
|
-
```tsx
|
|
134
|
-
<Card intent="primary">Primary themed card</Card>
|
|
135
|
-
<Card intent="neutral">Neutral themed card</Card>
|
|
136
|
-
<Card intent="success">Success themed card</Card>
|
|
137
|
-
<Card intent="error">Error themed card</Card>
|
|
138
|
-
<Card intent="warning">Warning themed card</Card>
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## Interactive Cards
|
|
142
|
-
|
|
143
|
-
### Clickable Cards
|
|
144
|
-
```tsx
|
|
145
|
-
<Card
|
|
146
|
-
clickable
|
|
147
|
-
onPress={() => navigation.navigate('Details')}
|
|
148
|
-
accessibilityLabel="Navigate to details"
|
|
149
|
-
>
|
|
150
|
-
<Text size="large" weight="bold">Product Title</Text>
|
|
151
|
-
<Text>Tap to view details</Text>
|
|
152
|
-
</Card>
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### Disabled Cards
|
|
156
|
-
```tsx
|
|
157
|
-
<Card
|
|
158
|
-
clickable
|
|
159
|
-
disabled
|
|
160
|
-
onPress={() => {}}
|
|
161
|
-
>
|
|
162
|
-
<Text>This card is disabled</Text>
|
|
163
|
-
</Card>
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
## Common Use Cases
|
|
167
|
-
|
|
168
|
-
### Content Cards
|
|
169
|
-
```tsx
|
|
170
|
-
<Card variant="outlined" padding="large">
|
|
171
|
-
<Text size="large" weight="bold">Article Title</Text>
|
|
172
|
-
<Text size="small" color="secondary">Published 2 hours ago</Text>
|
|
173
|
-
<Text style={{ marginTop: 8 }}>
|
|
174
|
-
Article content preview...
|
|
175
|
-
</Text>
|
|
176
|
-
</Card>
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
### Action Cards
|
|
180
|
-
```tsx
|
|
181
|
-
<Card
|
|
182
|
-
variant="elevated"
|
|
183
|
-
clickable
|
|
184
|
-
onPress={handleAction}
|
|
185
|
-
style={{ alignItems: 'center' }}
|
|
186
|
-
>
|
|
187
|
-
<Icon name="plus" size={32} />
|
|
188
|
-
<Text weight="medium">Add New Item</Text>
|
|
189
|
-
</Card>
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### Status Cards
|
|
193
|
-
```tsx
|
|
194
|
-
<Card variant="filled" intent="success" padding="small">
|
|
195
|
-
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
|
|
196
|
-
<Icon name="check" color="white" />
|
|
197
|
-
<Text color="white" weight="medium">Task Completed</Text>
|
|
198
|
-
</View>
|
|
199
|
-
</Card>
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
### Grid Layout
|
|
203
|
-
```tsx
|
|
204
|
-
<View style={{ flexDirection: 'row', gap: 16, flexWrap: 'wrap' }}>
|
|
205
|
-
<Card
|
|
206
|
-
variant="outlined"
|
|
207
|
-
style={{ flex: 1, minWidth: 200 }}
|
|
208
|
-
clickable
|
|
209
|
-
onPress={() => {}}
|
|
210
|
-
>
|
|
211
|
-
<Text weight="bold">Card 1</Text>
|
|
212
|
-
<Text>Content 1</Text>
|
|
213
|
-
</Card>
|
|
214
|
-
<Card
|
|
215
|
-
variant="outlined"
|
|
216
|
-
style={{ flex: 1, minWidth: 200 }}
|
|
217
|
-
clickable
|
|
218
|
-
onPress={() => {}}
|
|
219
|
-
>
|
|
220
|
-
<Text weight="bold">Card 2</Text>
|
|
221
|
-
<Text>Content 2</Text>
|
|
222
|
-
</Card>
|
|
223
|
-
</View>
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
## Accessibility
|
|
227
|
-
|
|
228
|
-
- Automatically uses appropriate HTML elements (`div` vs `button`)
|
|
229
|
-
- Proper ARIA roles and labels
|
|
230
|
-
- Keyboard navigation support for clickable cards
|
|
231
|
-
- Focus management and visual indicators
|
|
232
|
-
- Screen reader compatibility
|
|
233
|
-
|
|
234
|
-
## Styling
|
|
235
|
-
|
|
236
|
-
```tsx
|
|
237
|
-
// Custom card styling
|
|
238
|
-
<Card
|
|
239
|
-
variant="outlined"
|
|
240
|
-
style={{
|
|
241
|
-
borderColor: '#007AFF',
|
|
242
|
-
borderWidth: 2,
|
|
243
|
-
backgroundColor: '#F0F9FF',
|
|
244
|
-
}}
|
|
245
|
-
>
|
|
246
|
-
<Text>Custom styled card</Text>
|
|
247
|
-
</Card>
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
## Best Practices
|
|
251
|
-
|
|
252
|
-
1. **Use consistent variants** - Stick to one variant family in a section
|
|
253
|
-
2. **Mind content hierarchy** - Use padding and spacing to create visual hierarchy
|
|
254
|
-
3. **Consider interaction** - Make clickable cards visually distinct
|
|
255
|
-
4. **Accessibility first** - Always provide proper labels for interactive cards
|
|
256
|
-
5. **Performance** - Avoid complex nested structures in large lists
|
|
257
|
-
6. **Responsive design** - Test cards across different screen sizes
|
|
258
|
-
7. **Intent consistency** - Use intent colors meaningfully, not decoratively
|
package/src/Checkbox/README.md
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
# Checkbox Component
|
|
2
|
-
|
|
3
|
-
A customizable checkbox component with label support and theme integration.
|
|
4
|
-
|
|
5
|
-
## Features
|
|
6
|
-
|
|
7
|
-
- ✅ Cross-platform (React & React Native)
|
|
8
|
-
- ✅ Multiple sizes (small, medium, large)
|
|
9
|
-
- ✅ Intent-based color schemes
|
|
10
|
-
- ✅ Label support with custom positioning
|
|
11
|
-
- ✅ Disabled state handling
|
|
12
|
-
- ✅ Accessible with proper ARIA attributes
|
|
13
|
-
- ✅ TypeScript support
|
|
14
|
-
|
|
15
|
-
## Basic Usage
|
|
16
|
-
|
|
17
|
-
```tsx
|
|
18
|
-
import { Checkbox } from '@idealyst/components';
|
|
19
|
-
|
|
20
|
-
// Basic checkbox
|
|
21
|
-
<Checkbox
|
|
22
|
-
checked={isChecked}
|
|
23
|
-
onPress={() => setIsChecked(!isChecked)}
|
|
24
|
-
/>
|
|
25
|
-
|
|
26
|
-
// Checkbox with label
|
|
27
|
-
<Checkbox
|
|
28
|
-
checked={isAgreed}
|
|
29
|
-
onPress={() => setIsAgreed(!isAgreed)}
|
|
30
|
-
label="I agree to the terms and conditions"
|
|
31
|
-
/>
|
|
32
|
-
|
|
33
|
-
// Colored checkbox
|
|
34
|
-
<Checkbox
|
|
35
|
-
checked={isSelected}
|
|
36
|
-
onPress={() => setIsSelected(!isSelected)}
|
|
37
|
-
label="Enable notifications"
|
|
38
|
-
intent="success"
|
|
39
|
-
size="large"
|
|
40
|
-
/>
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Props
|
|
44
|
-
|
|
45
|
-
| Prop | Type | Default | Description |
|
|
46
|
-
|------|------|---------|-------------|
|
|
47
|
-
| `checked` | `boolean` | `false` | Whether the checkbox is checked |
|
|
48
|
-
| `onPress` | `() => void` | **Required** | Function called when checkbox is pressed |
|
|
49
|
-
| `label` | `string` | - | Text label to display next to checkbox |
|
|
50
|
-
| `disabled` | `boolean` | `false` | Whether the checkbox is disabled |
|
|
51
|
-
| `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Size of the checkbox |
|
|
52
|
-
| `intent` | `IntentVariant` | `'primary'` | Color scheme/intent |
|
|
53
|
-
| `labelPosition` | `'left' \| 'right'` | `'right'` | Position of label relative to checkbox |
|
|
54
|
-
| `style` | `ViewStyle` | - | Additional custom styles |
|
|
55
|
-
| `testID` | `string` | - | Test identifier for testing |
|
|
56
|
-
|
|
57
|
-
## Examples
|
|
58
|
-
|
|
59
|
-
### Different Sizes
|
|
60
|
-
```tsx
|
|
61
|
-
<Checkbox size="small" checked={small} onPress={() => setSmall(!small)} label="Small" />
|
|
62
|
-
<Checkbox size="medium" checked={medium} onPress={() => setMedium(!medium)} label="Medium" />
|
|
63
|
-
<Checkbox size="large" checked={large} onPress={() => setLarge(!large)} label="Large" />
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Intent Colors
|
|
67
|
-
```tsx
|
|
68
|
-
<Checkbox intent="primary" checked={primary} onPress={() => setPrimary(!primary)} label="Primary" />
|
|
69
|
-
<Checkbox intent="success" checked={success} onPress={() => setSuccess(!success)} label="Success" />
|
|
70
|
-
<Checkbox intent="error" checked={error} onPress={() => setError(!error)} label="Error" />
|
|
71
|
-
<Checkbox intent="warning" checked={warning} onPress={() => setWarning(!warning)} label="Warning" />
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### Label Positioning
|
|
75
|
-
```tsx
|
|
76
|
-
<Checkbox
|
|
77
|
-
labelPosition="left"
|
|
78
|
-
checked={leftLabel}
|
|
79
|
-
onPress={() => setLeftLabel(!leftLabel)}
|
|
80
|
-
label="Label on left"
|
|
81
|
-
/>
|
|
82
|
-
<Checkbox
|
|
83
|
-
labelPosition="right"
|
|
84
|
-
checked={rightLabel}
|
|
85
|
-
onPress={() => setRightLabel(!rightLabel)}
|
|
86
|
-
label="Label on right"
|
|
87
|
-
/>
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### Disabled State
|
|
91
|
-
```tsx
|
|
92
|
-
<Checkbox disabled checked={true} label="Disabled (checked)" />
|
|
93
|
-
<Checkbox disabled checked={false} label="Disabled (unchecked)" />
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## Best Practices
|
|
97
|
-
|
|
98
|
-
1. **Provide clear labels** - Use descriptive text that explains what checking means
|
|
99
|
-
2. **Group related checkboxes** - Use consistent spacing and alignment
|
|
100
|
-
3. **Handle accessibility** - Ensure proper focus and screen reader support
|
|
101
|
-
4. **Use appropriate intents** - Match colors to the action's semantic meaning
|
|
102
|
-
5. **Test touch targets** - Ensure checkboxes are large enough for easy interaction
|
package/src/Dialog/README.md
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
# Dialog Component
|
|
2
|
-
|
|
3
|
-
A modal dialog component that creates a global overlay across the entire application. The Dialog component works consistently across web and React Native platforms.
|
|
4
|
-
|
|
5
|
-
## Features
|
|
6
|
-
|
|
7
|
-
- **Global Overlay**: Appears above all other content including navigation bars and tab bars
|
|
8
|
-
- **Cross-Platform**: Uses React portals on web and Modal component on React Native
|
|
9
|
-
- **Accessibility**: Focus management, escape key support (web), hardware back button handling (native)
|
|
10
|
-
- **Theme Integration**: Supports intent-based colors and Unistyles variants
|
|
11
|
-
- **Flexible Sizing**: Multiple size options from small to fullscreen
|
|
12
|
-
- **Backdrop Interaction**: Configurable backdrop click behavior
|
|
13
|
-
|
|
14
|
-
## Usage
|
|
15
|
-
|
|
16
|
-
```tsx
|
|
17
|
-
import { Dialog, Button, Text } from '@idealyst/components';
|
|
18
|
-
import { useState } from 'react';
|
|
19
|
-
|
|
20
|
-
const MyComponent = () => {
|
|
21
|
-
const [open, setOpen] = useState(false);
|
|
22
|
-
|
|
23
|
-
return (
|
|
24
|
-
<>
|
|
25
|
-
<Button onPress={() => setOpen(true)}>
|
|
26
|
-
Open Dialog
|
|
27
|
-
</Button>
|
|
28
|
-
|
|
29
|
-
<Dialog
|
|
30
|
-
open={open}
|
|
31
|
-
onOpenChange={setOpen}
|
|
32
|
-
title="Dialog Title"
|
|
33
|
-
size="medium"
|
|
34
|
-
variant="default"
|
|
35
|
-
intent="primary"
|
|
36
|
-
>
|
|
37
|
-
<Text>Dialog content goes here</Text>
|
|
38
|
-
<Button onPress={() => setOpen(false)}>
|
|
39
|
-
Close
|
|
40
|
-
</Button>
|
|
41
|
-
</Dialog>
|
|
42
|
-
</>
|
|
43
|
-
);
|
|
44
|
-
};
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Props
|
|
48
|
-
|
|
49
|
-
| Prop | Type | Default | Description |
|
|
50
|
-
|------|------|---------|-------------|
|
|
51
|
-
| `open` | `boolean` | - | Whether the dialog is visible |
|
|
52
|
-
| `onOpenChange` | `(open: boolean) => void` | - | Called when dialog should open/close |
|
|
53
|
-
| `title` | `string` | - | Optional title displayed in header |
|
|
54
|
-
| `children` | `ReactNode` | - | Content to display inside dialog |
|
|
55
|
-
| `size` | `'small' \| 'medium' \| 'large' \| 'fullscreen'` | `'medium'` | Size of the dialog |
|
|
56
|
-
| `variant` | `'default' \| 'alert' \| 'confirmation'` | `'default'` | Visual style variant |
|
|
57
|
-
| `intent` | `'primary' \| 'neutral' \| 'success' \| 'error' \| 'warning'` | `'primary'` | Color scheme/semantic meaning |
|
|
58
|
-
| `showCloseButton` | `boolean` | `true` | Whether to show close button in header |
|
|
59
|
-
| `closeOnBackdropClick` | `boolean` | `true` | Whether clicking backdrop closes dialog |
|
|
60
|
-
| `closeOnEscapeKey` | `boolean` | `true` | Whether escape key closes dialog (web only) |
|
|
61
|
-
| `animationType` | `'slide' \| 'fade' \| 'none'` | `'fade'` | Animation type (native only) |
|
|
62
|
-
| `style` | `any` | - | Additional platform-specific styles |
|
|
63
|
-
| `testID` | `string` | - | Test identifier |
|
|
64
|
-
|
|
65
|
-
## Variants
|
|
66
|
-
|
|
67
|
-
### Size Variants
|
|
68
|
-
- **small**: 400px max width, suitable for simple alerts
|
|
69
|
-
- **medium**: 600px max width, good for forms and content
|
|
70
|
-
- **large**: 800px max width, for complex layouts
|
|
71
|
-
- **fullscreen**: Full screen coverage, removes border radius
|
|
72
|
-
|
|
73
|
-
### Visual Variants
|
|
74
|
-
- **default**: Standard dialog appearance
|
|
75
|
-
- **alert**: Adds colored top border for alerts
|
|
76
|
-
- **confirmation**: Adds colored top border for confirmations
|
|
77
|
-
|
|
78
|
-
### Intent Colors
|
|
79
|
-
When used with `alert` or `confirmation` variants:
|
|
80
|
-
- **primary**: Blue top border
|
|
81
|
-
- **success**: Green top border
|
|
82
|
-
- **error**: Red top border
|
|
83
|
-
- **warning**: Orange top border
|
|
84
|
-
- **neutral**: Gray top border
|
|
85
|
-
|
|
86
|
-
## Platform Differences
|
|
87
|
-
|
|
88
|
-
### Web Implementation
|
|
89
|
-
- Uses React portals to render into `document.body`
|
|
90
|
-
- Supports escape key to close
|
|
91
|
-
- Automatic focus management and restoration
|
|
92
|
-
- Click outside to close (configurable)
|
|
93
|
-
- Body scroll prevention when open
|
|
94
|
-
|
|
95
|
-
### React Native Implementation
|
|
96
|
-
- Uses React Native's `Modal` component
|
|
97
|
-
- Hardware back button handling on Android
|
|
98
|
-
- Touch outside to close (configurable)
|
|
99
|
-
- Configurable animation types
|
|
100
|
-
|
|
101
|
-
## Examples
|
|
102
|
-
|
|
103
|
-
### Basic Dialog
|
|
104
|
-
```tsx
|
|
105
|
-
<Dialog
|
|
106
|
-
open={isOpen}
|
|
107
|
-
onOpenChange={setIsOpen}
|
|
108
|
-
title="Basic Dialog"
|
|
109
|
-
>
|
|
110
|
-
<Text>Simple dialog content</Text>
|
|
111
|
-
</Dialog>
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Alert Dialog
|
|
115
|
-
```tsx
|
|
116
|
-
<Dialog
|
|
117
|
-
open={alertOpen}
|
|
118
|
-
onOpenChange={setAlertOpen}
|
|
119
|
-
title="Important Alert"
|
|
120
|
-
variant="alert"
|
|
121
|
-
intent="warning"
|
|
122
|
-
>
|
|
123
|
-
<Text>This is an important message!</Text>
|
|
124
|
-
</Dialog>
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Confirmation Dialog
|
|
128
|
-
```tsx
|
|
129
|
-
<Dialog
|
|
130
|
-
open={confirmOpen}
|
|
131
|
-
onOpenChange={setConfirmOpen}
|
|
132
|
-
title="Confirm Action"
|
|
133
|
-
variant="confirmation"
|
|
134
|
-
intent="error"
|
|
135
|
-
closeOnBackdropClick={false}
|
|
136
|
-
>
|
|
137
|
-
<Text>Are you sure you want to delete this item?</Text>
|
|
138
|
-
<View style={{ flexDirection: 'row', gap: 12, marginTop: 16 }}>
|
|
139
|
-
<Button variant="outlined" onPress={() => setConfirmOpen(false)}>
|
|
140
|
-
Cancel
|
|
141
|
-
</Button>
|
|
142
|
-
<Button variant="contained" intent="error" onPress={handleDelete}>
|
|
143
|
-
Delete
|
|
144
|
-
</Button>
|
|
145
|
-
</View>
|
|
146
|
-
</Dialog>
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### Fullscreen Dialog
|
|
150
|
-
```tsx
|
|
151
|
-
<Dialog
|
|
152
|
-
open={fullscreenOpen}
|
|
153
|
-
onOpenChange={setFullscreenOpen}
|
|
154
|
-
title="Fullscreen Dialog"
|
|
155
|
-
size="fullscreen"
|
|
156
|
-
>
|
|
157
|
-
<Text>This dialog covers the entire screen</Text>
|
|
158
|
-
</Dialog>
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## Accessibility
|
|
162
|
-
|
|
163
|
-
- **Focus Management**: Automatically focuses dialog on open and restores focus on close (web)
|
|
164
|
-
- **Keyboard Navigation**: Escape key support on web
|
|
165
|
-
- **Screen Readers**: Proper ARIA roles and labels
|
|
166
|
-
- **Touch Targets**: Minimum 44px touch targets for interactive elements
|
|
167
|
-
- **Hardware Back Button**: Handled automatically on Android
|
|
168
|
-
|
|
169
|
-
## Best Practices
|
|
170
|
-
|
|
171
|
-
1. **Use appropriate sizes**: Choose size based on content complexity
|
|
172
|
-
2. **Provide clear actions**: Always include a way to close the dialog
|
|
173
|
-
3. **Use variants appropriately**: Choose alert or confirmation for important dialogs
|
|
174
|
-
4. **Handle confirmation dialogs carefully**: Disable backdrop close for destructive actions
|
|
175
|
-
5. **Keep content focused**: Dialogs should have a single, clear purpose
|
|
176
|
-
6. **Test cross-platform**: Verify behavior on both web and native platforms
|
|
177
|
-
|
|
178
|
-
## Common Patterns
|
|
179
|
-
|
|
180
|
-
### Form Dialog
|
|
181
|
-
```tsx
|
|
182
|
-
<Dialog open={formOpen} onOpenChange={setFormOpen} title="Edit Profile">
|
|
183
|
-
<View spacing="md">
|
|
184
|
-
<Input label="Name" value={name} onChangeText={setName} />
|
|
185
|
-
<Input label="Email" value={email} onChangeText={setEmail} />
|
|
186
|
-
<View style={{ flexDirection: 'row', gap: 12 }}>
|
|
187
|
-
<Button variant="outlined" onPress={() => setFormOpen(false)}>
|
|
188
|
-
Cancel
|
|
189
|
-
</Button>
|
|
190
|
-
<Button variant="contained" onPress={handleSave}>
|
|
191
|
-
Save
|
|
192
|
-
</Button>
|
|
193
|
-
</View>
|
|
194
|
-
</View>
|
|
195
|
-
</Dialog>
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
### Loading Dialog
|
|
199
|
-
```tsx
|
|
200
|
-
<Dialog
|
|
201
|
-
open={loading}
|
|
202
|
-
onOpenChange={() => {}}
|
|
203
|
-
closeOnBackdropClick={false}
|
|
204
|
-
showCloseButton={false}
|
|
205
|
-
>
|
|
206
|
-
<View style={{ alignItems: 'center', padding: 20 }}>
|
|
207
|
-
<Text>Loading...</Text>
|
|
208
|
-
</View>
|
|
209
|
-
</Dialog>
|
|
210
|
-
```
|
package/src/Divider/README.md
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
# Divider Component
|
|
2
|
-
|
|
3
|
-
A flexible separator component for creating visual divisions between content sections.
|
|
4
|
-
|
|
5
|
-
## Features
|
|
6
|
-
|
|
7
|
-
- ✅ Cross-platform (React & React Native)
|
|
8
|
-
- ✅ Horizontal and vertical orientations
|
|
9
|
-
- ✅ Spacing variants (small, medium, large)
|
|
10
|
-
- ✅ Intent-based color schemes
|
|
11
|
-
- ✅ Optional content/children support
|
|
12
|
-
- ✅ TypeScript support
|
|
13
|
-
|
|
14
|
-
## Basic Usage
|
|
15
|
-
|
|
16
|
-
```tsx
|
|
17
|
-
import { Divider, Text } from '@idealyst/components';
|
|
18
|
-
|
|
19
|
-
// Basic horizontal divider
|
|
20
|
-
<Divider />
|
|
21
|
-
|
|
22
|
-
// Divider with spacing
|
|
23
|
-
<Divider spacing="large" />
|
|
24
|
-
|
|
25
|
-
// Vertical divider
|
|
26
|
-
<Divider orientation="vertical" />
|
|
27
|
-
|
|
28
|
-
// Divider with content
|
|
29
|
-
<Divider spacing="medium">
|
|
30
|
-
<Text size="small" color="secondary">OR</Text>
|
|
31
|
-
</Divider>
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Props
|
|
35
|
-
|
|
36
|
-
| Prop | Type | Default | Description |
|
|
37
|
-
|------|------|---------|-------------|
|
|
38
|
-
| `children` | `ReactNode` | - | Optional content to display in the divider |
|
|
39
|
-
| `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | Direction of the divider |
|
|
40
|
-
| `spacing` | `'small' \| 'medium' \| 'large'` | `'medium'` | Spacing around the divider |
|
|
41
|
-
| `intent` | `IntentVariant` | `'neutral'` | Color scheme of the divider |
|
|
42
|
-
| `variant` | `'solid' \| 'dashed' \| 'dotted'` | `'solid'` | Visual style of the line |
|
|
43
|
-
| `thickness` | `'thin' \| 'medium' \| 'thick'` | `'thin'` | Thickness of the divider line |
|
|
44
|
-
| `style` | `ViewStyle` | - | Additional custom styles |
|
|
45
|
-
| `testID` | `string` | - | Test identifier for testing |
|
|
46
|
-
|
|
47
|
-
## Examples
|
|
48
|
-
|
|
49
|
-
### Basic Dividers
|
|
50
|
-
```tsx
|
|
51
|
-
<View>
|
|
52
|
-
<Text>Content above</Text>
|
|
53
|
-
<Divider />
|
|
54
|
-
<Text>Content below</Text>
|
|
55
|
-
</View>
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### Spacing Variants
|
|
59
|
-
```tsx
|
|
60
|
-
<View>
|
|
61
|
-
<Text>Small spacing</Text>
|
|
62
|
-
<Divider spacing="small" />
|
|
63
|
-
<Text>Medium spacing</Text>
|
|
64
|
-
<Divider spacing="medium" />
|
|
65
|
-
<Text>Large spacing</Text>
|
|
66
|
-
<Divider spacing="large" />
|
|
67
|
-
<Text>End content</Text>
|
|
68
|
-
</View>
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Vertical Dividers
|
|
72
|
-
```tsx
|
|
73
|
-
<View style={{ flexDirection: 'row', alignItems: 'center', height: 40 }}>
|
|
74
|
-
<Text>Left</Text>
|
|
75
|
-
<Divider orientation="vertical" spacing="medium" />
|
|
76
|
-
<Text>Middle</Text>
|
|
77
|
-
<Divider orientation="vertical" spacing="medium" />
|
|
78
|
-
<Text>Right</Text>
|
|
79
|
-
</View>
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Dividers with Content
|
|
83
|
-
```tsx
|
|
84
|
-
<View>
|
|
85
|
-
<Text>Sign in with your account</Text>
|
|
86
|
-
<Divider spacing="large">
|
|
87
|
-
<Text size="small" color="secondary">OR</Text>
|
|
88
|
-
</Divider>
|
|
89
|
-
<Text>Continue with social login</Text>
|
|
90
|
-
</View>
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Styled Dividers
|
|
94
|
-
```tsx
|
|
95
|
-
<View>
|
|
96
|
-
<Divider variant="solid" intent="neutral" />
|
|
97
|
-
<Divider variant="dashed" intent="primary" />
|
|
98
|
-
<Divider variant="dotted" intent="secondary" />
|
|
99
|
-
</View>
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
## Best Practices
|
|
103
|
-
|
|
104
|
-
1. **Use appropriate spacing** - Match divider spacing to your content hierarchy
|
|
105
|
-
2. **Consider orientation** - Use vertical dividers in horizontal layouts
|
|
106
|
-
3. **Keep content minimal** - If using children, keep text short and meaningful
|
|
107
|
-
4. **Maintain consistency** - Use the same divider style throughout your app
|
|
108
|
-
5. **Accessibility** - Ensure dividers don't interfere with screen reader flow
|