@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
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Screen, View, Text, Divider } from '../index';
|
|
3
|
-
import { ButtonExamples } from './ButtonExamples';
|
|
4
|
-
import { TextExamples } from './TextExamples';
|
|
5
|
-
import { ViewExamples } from './ViewExamples';
|
|
6
|
-
import { InputExamples } from './InputExamples';
|
|
7
|
-
import { IconExamples } from './IconExamples';
|
|
8
|
-
import { CardExamples } from './CardExamples';
|
|
9
|
-
import { CheckboxExamples } from './CheckboxExamples';
|
|
10
|
-
import { DividerExamples } from './DividerExamples';
|
|
11
|
-
import { BadgeExamples } from './BadgeExamples';
|
|
12
|
-
import { AvatarExamples } from './AvatarExamples';
|
|
13
|
-
import { ScreenExamples } from './ScreenExamples';
|
|
14
|
-
import { SVGImageExamples } from './SVGImageExamples';
|
|
15
|
-
import { DialogExamples } from './DialogExamples';
|
|
16
|
-
import { PopoverExamples } from './PopoverExamples';
|
|
17
|
-
import { ThemeExtensionExamples } from './ThemeExtensionExamples';
|
|
18
|
-
|
|
19
|
-
export const AllExamples = () => {
|
|
20
|
-
return (
|
|
21
|
-
<Screen background="primary" padding="xl">
|
|
22
|
-
<View spacing="none" style={{ maxWidth: 800, alignSelf: 'center' }}>
|
|
23
|
-
<Text size="xlarge" weight="bold" align="center" color="primary">
|
|
24
|
-
Idealyst Component Library Examples
|
|
25
|
-
</Text>
|
|
26
|
-
<Text size="medium" align="center" color="secondary">
|
|
27
|
-
Comprehensive showcase of all available components
|
|
28
|
-
</Text>
|
|
29
|
-
|
|
30
|
-
<Divider spacing="large" intent="primary">
|
|
31
|
-
<Text size="small" weight="semibold" color="primary">COMPONENTS</Text>
|
|
32
|
-
</Divider>
|
|
33
|
-
|
|
34
|
-
<ButtonExamples />
|
|
35
|
-
<Divider spacing="medium" />
|
|
36
|
-
|
|
37
|
-
<TextExamples />
|
|
38
|
-
<Divider spacing="medium" />
|
|
39
|
-
|
|
40
|
-
<ViewExamples />
|
|
41
|
-
<Divider spacing="medium" />
|
|
42
|
-
|
|
43
|
-
<InputExamples />
|
|
44
|
-
<Divider spacing="medium" />
|
|
45
|
-
|
|
46
|
-
<IconExamples />
|
|
47
|
-
<Divider spacing="medium" />
|
|
48
|
-
|
|
49
|
-
<CardExamples />
|
|
50
|
-
<Divider spacing="medium" />
|
|
51
|
-
|
|
52
|
-
<CheckboxExamples />
|
|
53
|
-
<Divider spacing="medium" />
|
|
54
|
-
|
|
55
|
-
<DividerExamples />
|
|
56
|
-
<Divider spacing="medium" />
|
|
57
|
-
|
|
58
|
-
<BadgeExamples />
|
|
59
|
-
<Divider spacing="medium" />
|
|
60
|
-
|
|
61
|
-
<AvatarExamples />
|
|
62
|
-
<Divider spacing="medium" />
|
|
63
|
-
|
|
64
|
-
<ScreenExamples />
|
|
65
|
-
<Divider spacing="medium" />
|
|
66
|
-
|
|
67
|
-
<SVGImageExamples />
|
|
68
|
-
<Divider spacing="medium" />
|
|
69
|
-
|
|
70
|
-
<DialogExamples />
|
|
71
|
-
<Divider spacing="medium" />
|
|
72
|
-
|
|
73
|
-
<PopoverExamples />
|
|
74
|
-
<Divider spacing="medium" />
|
|
75
|
-
|
|
76
|
-
<Divider spacing="large" intent="success">
|
|
77
|
-
<Text size="small" weight="semibold" color="green">THEME SYSTEM</Text>
|
|
78
|
-
</Divider>
|
|
79
|
-
|
|
80
|
-
<ThemeExtensionExamples />
|
|
81
|
-
</View>
|
|
82
|
-
</Screen>
|
|
83
|
-
);
|
|
84
|
-
};
|
package/src/examples/README.md
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
# Component Examples
|
|
2
|
-
|
|
3
|
-
This directory contains comprehensive examples showcasing all components from the Idealyst component library. Each example demonstrates the various props, variants, and use cases for each component.
|
|
4
|
-
|
|
5
|
-
## Available Examples
|
|
6
|
-
|
|
7
|
-
### Individual Component Examples
|
|
8
|
-
- **ButtonExamples**: Demonstrates all button variants, sizes, intents, and states
|
|
9
|
-
- **TextExamples**: Shows text sizes, weights, colors, and alignment options
|
|
10
|
-
- **ViewExamples**: Displays layout capabilities with spacing, backgrounds, and borders
|
|
11
|
-
- **InputExamples**: Covers input types, sizes, variants, and states
|
|
12
|
-
- **CardExamples**: Showcases card layouts, variants, intents, and interactive features
|
|
13
|
-
- **CheckboxExamples**: Demonstrates checkbox states, sizes, intents, and custom content
|
|
14
|
-
- **DividerExamples**: Shows divider orientations, variants, and styling options
|
|
15
|
-
- **BadgeExamples**: Displays badge variants, intents, and use cases
|
|
16
|
-
- **AvatarExamples**: Demonstrates avatar sizes, shapes, and fallback options
|
|
17
|
-
|
|
18
|
-
### Master Example
|
|
19
|
-
- **AllExamples**: A comprehensive showcase of all components in one scrollable view
|
|
20
|
-
|
|
21
|
-
## Usage
|
|
22
|
-
|
|
23
|
-
### Import Individual Examples
|
|
24
|
-
```typescript
|
|
25
|
-
import { ButtonExamples, TextExamples, CardExamples } from '@idealyst/components/examples';
|
|
26
|
-
|
|
27
|
-
// Use in your component
|
|
28
|
-
<ButtonExamples />
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Import All Examples
|
|
32
|
-
```typescript
|
|
33
|
-
import { AllExamples } from '@idealyst/components/examples';
|
|
34
|
-
|
|
35
|
-
// Display all examples at once
|
|
36
|
-
<AllExamples />
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Example Structure
|
|
40
|
-
|
|
41
|
-
Each example component follows this structure:
|
|
42
|
-
- **Header**: Component name and description
|
|
43
|
-
- **Grouped Sections**: Related variants and properties
|
|
44
|
-
- **Interactive Elements**: Demonstrating user interactions
|
|
45
|
-
- **Edge Cases**: Disabled states, error states, etc.
|
|
46
|
-
- **Real-world Usage**: Practical implementation examples
|
|
47
|
-
|
|
48
|
-
## Features Demonstrated
|
|
49
|
-
|
|
50
|
-
### Button Examples
|
|
51
|
-
- Variants: contained, outlined, text
|
|
52
|
-
- Sizes: small, medium, large
|
|
53
|
-
- Intents: primary, neutral, success, error, warning
|
|
54
|
-
- States: normal, disabled
|
|
55
|
-
|
|
56
|
-
### Text Examples
|
|
57
|
-
- Sizes: small, medium, large, xlarge
|
|
58
|
-
- Weights: light, normal, medium, semibold, bold
|
|
59
|
-
- Colors: primary, secondary, success, warning, error
|
|
60
|
-
- Alignment: left, center, right
|
|
61
|
-
|
|
62
|
-
### View Examples
|
|
63
|
-
- Spacing: none, xs, sm, md, lg, xl
|
|
64
|
-
- Backgrounds: transparent, surface, primary, secondary
|
|
65
|
-
- Border radius: none, xs, sm, md, lg, xl
|
|
66
|
-
- Borders: none, thin, thick
|
|
67
|
-
- Layout patterns: flex layouts, positioning
|
|
68
|
-
|
|
69
|
-
### Input Examples
|
|
70
|
-
- Types: text, email, password, number
|
|
71
|
-
- Sizes: small, medium, large
|
|
72
|
-
- Variants: default, outlined, filled
|
|
73
|
-
- States: normal, disabled, error, pre-filled
|
|
74
|
-
- Auto-capitalization: none, sentences, words, characters
|
|
75
|
-
|
|
76
|
-
### Card Examples
|
|
77
|
-
- Variants: default, outlined, elevated, filled
|
|
78
|
-
- Intents: neutral, primary, success, error, warning, info
|
|
79
|
-
- Padding: none, small, medium, large
|
|
80
|
-
- Radius: none, small, medium, large
|
|
81
|
-
- Interactive: clickable, disabled states
|
|
82
|
-
- Complex layouts: multi-element cards
|
|
83
|
-
|
|
84
|
-
### Checkbox Examples
|
|
85
|
-
- Basic states: checked, unchecked, indeterminate
|
|
86
|
-
- Sizes: small, medium, large
|
|
87
|
-
- Intents: primary, neutral, success, error, warning, info
|
|
88
|
-
- Variants: default, outlined
|
|
89
|
-
- States: normal, disabled
|
|
90
|
-
- Custom content: complex labels, helper text, errors
|
|
91
|
-
|
|
92
|
-
### Divider Examples
|
|
93
|
-
- Orientations: horizontal, vertical
|
|
94
|
-
- Variants: solid, dashed, dotted
|
|
95
|
-
- Thickness: thin, medium, thick
|
|
96
|
-
- Intents: primary, secondary, neutral, success, error, warning, info
|
|
97
|
-
- Spacing: none, small, medium, large
|
|
98
|
-
- With content: text labels, sections
|
|
99
|
-
|
|
100
|
-
### Badge Examples
|
|
101
|
-
- Variants: filled, outlined, dot
|
|
102
|
-
- Sizes: small, medium, large
|
|
103
|
-
- Intents: primary, success, error, warning, neutral, info
|
|
104
|
-
- Use cases: numbers, status, categories, notifications
|
|
105
|
-
|
|
106
|
-
### Avatar Examples
|
|
107
|
-
- Sizes: small, medium, large, xlarge
|
|
108
|
-
- Shapes: circle, square
|
|
109
|
-
- Fallbacks: initials, placeholder text
|
|
110
|
-
- Images: with proper fallbacks
|
|
111
|
-
- Groups: overlapping avatars
|
|
112
|
-
|
|
113
|
-
## Best Practices
|
|
114
|
-
|
|
115
|
-
1. **Interactive Testing**: All examples include interactive elements to test functionality
|
|
116
|
-
2. **Accessibility**: Examples demonstrate proper labeling and accessibility features
|
|
117
|
-
3. **Responsive Design**: Components adapt to different screen sizes
|
|
118
|
-
4. **Theme Integration**: All examples use the theme system properly
|
|
119
|
-
5. **Real-world Context**: Examples show practical usage scenarios
|
|
120
|
-
|
|
121
|
-
## Development Notes
|
|
122
|
-
|
|
123
|
-
- Examples are built using the same components they demonstrate
|
|
124
|
-
- All examples use TypeScript for type safety
|
|
125
|
-
- Components follow the established design system patterns
|
|
126
|
-
- Examples are optimized for both web and native platforms
|
|
127
|
-
|
|
128
|
-
## Contributing
|
|
129
|
-
|
|
130
|
-
When adding new components:
|
|
131
|
-
1. Create a new example file: `ComponentNameExamples.tsx`
|
|
132
|
-
2. Follow the established pattern of grouped sections
|
|
133
|
-
3. Include all variants, sizes, and states
|
|
134
|
-
4. Add interactive elements where applicable
|
|
135
|
-
5. Export the component in `index.ts`
|
|
136
|
-
6. Update the `AllExamples` component to include the new example
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Validation Examples
|
|
3
|
-
*
|
|
4
|
-
* This file demonstrates how the theme validation system works
|
|
5
|
-
* and how components can use it to validate their props.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import React from 'react';
|
|
9
|
-
import { View } from 'react-native';
|
|
10
|
-
import { useUnistyles } from 'react-native-unistyles';
|
|
11
|
-
import Text from '../Text';
|
|
12
|
-
import Button from '../Button';
|
|
13
|
-
import Badge from '../Badge';
|
|
14
|
-
import { validateColorProp, validateIntentProp } from '../theme';
|
|
15
|
-
|
|
16
|
-
export function ValidationExamples() {
|
|
17
|
-
const { theme } = useUnistyles();
|
|
18
|
-
|
|
19
|
-
// Example: Valid usage
|
|
20
|
-
const handleValidUsage = () => {
|
|
21
|
-
console.log('=== Valid Usage Examples ===');
|
|
22
|
-
|
|
23
|
-
// These should not produce warnings
|
|
24
|
-
validateColorProp(theme, 'blue', 'Text');
|
|
25
|
-
validateColorProp(theme, 'primary', 'Text');
|
|
26
|
-
validateIntentProp(theme, 'primary', 'Button');
|
|
27
|
-
validateIntentProp(theme, 'success', 'Button');
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
// Example: Invalid usage
|
|
31
|
-
const handleInvalidUsage = () => {
|
|
32
|
-
console.log('=== Invalid Usage Examples ===');
|
|
33
|
-
|
|
34
|
-
// These should produce warnings in development
|
|
35
|
-
validateColorProp(theme, 'invalidColor', 'Text');
|
|
36
|
-
validateColorProp(theme, 'neonPink', 'Text');
|
|
37
|
-
validateIntentProp(theme, 'invalidIntent', 'Button');
|
|
38
|
-
validateIntentProp(theme, 'danger', 'Button'); // 'danger' doesn't exist, should be 'error'
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
return (
|
|
42
|
-
<View style={{ padding: 20, gap: 16 }}>
|
|
43
|
-
<Text size="large" weight="bold">
|
|
44
|
-
Theme Validation Examples
|
|
45
|
-
</Text>
|
|
46
|
-
|
|
47
|
-
<Text>
|
|
48
|
-
Open the browser console to see validation warnings when using invalid colors or intents.
|
|
49
|
-
</Text>
|
|
50
|
-
|
|
51
|
-
{/* Valid examples */}
|
|
52
|
-
<View style={{ gap: 8 }}>
|
|
53
|
-
<Text weight="semibold">✅ Valid Usage (no warnings):</Text>
|
|
54
|
-
<Text color="blue">Blue text (valid palette color)</Text>
|
|
55
|
-
<Text color="blue">Blue text (valid palette color)</Text>
|
|
56
|
-
<Button intent="primary" onPress={handleValidUsage}>
|
|
57
|
-
Valid Button
|
|
58
|
-
</Button>
|
|
59
|
-
<Badge color="green">Valid Badge</Badge>
|
|
60
|
-
</View>
|
|
61
|
-
|
|
62
|
-
{/* Invalid examples that would show warnings */}
|
|
63
|
-
<View style={{ gap: 8 }}>
|
|
64
|
-
<Text weight="semibold">⚠️ Invalid Usage (shows warnings):</Text>
|
|
65
|
-
<Button onPress={handleInvalidUsage}>
|
|
66
|
-
Click to Test Invalid Props (check console)
|
|
67
|
-
</Button>
|
|
68
|
-
|
|
69
|
-
<Text size="small" color="secondary">
|
|
70
|
-
Note: The invalid examples are triggered programmatically to avoid
|
|
71
|
-
runtime TypeScript errors. In real usage, TypeScript would catch
|
|
72
|
-
most of these at compile time.
|
|
73
|
-
</Text>
|
|
74
|
-
</View>
|
|
75
|
-
|
|
76
|
-
{/* Extensibility example */}
|
|
77
|
-
<View style={{ gap: 8 }}>
|
|
78
|
-
<Text weight="semibold">🔧 Extensibility:</Text>
|
|
79
|
-
<Text size="small">
|
|
80
|
-
When you add new colors to your theme palette (e.g., 'orange', 'teal'),
|
|
81
|
-
they automatically become available in all components that use ColorVariant.
|
|
82
|
-
The validation system will recognize them as valid options.
|
|
83
|
-
</Text>
|
|
84
|
-
|
|
85
|
-
<Text size="small">
|
|
86
|
-
Example: If you add 'orange' to your theme.palettes, then
|
|
87
|
-
<Text color="orange"> and <Badge color="orange">
|
|
88
|
-
will work without any code changes to the components.
|
|
89
|
-
</Text>
|
|
90
|
-
</View>
|
|
91
|
-
</View>
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export default ValidationExamples;
|
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createTheme,
|
|
3
|
-
type ThemeConfig,
|
|
4
|
-
createStandardPalettes,
|
|
5
|
-
createDarkPalettes,
|
|
6
|
-
createLightIntentMappings,
|
|
7
|
-
createDarkIntentMappings,
|
|
8
|
-
createLightColorMappings,
|
|
9
|
-
createDarkColorMappings
|
|
10
|
-
} from '@idealyst/theme';
|
|
11
|
-
|
|
12
|
-
// Extended color palettes - includes all base colors plus additional ones
|
|
13
|
-
export const extendedColorPalettes = {
|
|
14
|
-
// Include all base colors
|
|
15
|
-
...createStandardPalettes(),
|
|
16
|
-
|
|
17
|
-
// Add extended colors
|
|
18
|
-
orange: {
|
|
19
|
-
50: '#fff7ed',
|
|
20
|
-
100: '#ffedd5',
|
|
21
|
-
200: '#fed7aa',
|
|
22
|
-
300: '#fdba74',
|
|
23
|
-
400: '#fb923c',
|
|
24
|
-
500: '#f97316',
|
|
25
|
-
600: '#ea580c',
|
|
26
|
-
700: '#c2410c',
|
|
27
|
-
800: '#9a3412',
|
|
28
|
-
900: '#7c2d12',
|
|
29
|
-
},
|
|
30
|
-
|
|
31
|
-
teal: {
|
|
32
|
-
50: '#f0fdfa',
|
|
33
|
-
100: '#ccfbf1',
|
|
34
|
-
200: '#99f6e4',
|
|
35
|
-
300: '#5eead4',
|
|
36
|
-
400: '#2dd4bf',
|
|
37
|
-
500: '#14b8a6',
|
|
38
|
-
600: '#0d9488',
|
|
39
|
-
700: '#0f766e',
|
|
40
|
-
800: '#115e59',
|
|
41
|
-
900: '#134e4a',
|
|
42
|
-
},
|
|
43
|
-
|
|
44
|
-
indigo: {
|
|
45
|
-
50: '#eef2ff',
|
|
46
|
-
100: '#e0e7ff',
|
|
47
|
-
200: '#c7d2fe',
|
|
48
|
-
300: '#a5b4fc',
|
|
49
|
-
400: '#818cf8',
|
|
50
|
-
500: '#6366f1',
|
|
51
|
-
600: '#4f46e5',
|
|
52
|
-
700: '#4338ca',
|
|
53
|
-
800: '#3730a3',
|
|
54
|
-
900: '#312e81',
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
violet: {
|
|
58
|
-
50: '#faf5ff',
|
|
59
|
-
100: '#f3e8ff',
|
|
60
|
-
200: '#e9d5ff',
|
|
61
|
-
300: '#d8b4fe',
|
|
62
|
-
400: '#c084fc',
|
|
63
|
-
500: '#a855f7',
|
|
64
|
-
600: '#9333ea',
|
|
65
|
-
700: '#7c3aed',
|
|
66
|
-
800: '#6b21a8',
|
|
67
|
-
900: '#581c87',
|
|
68
|
-
},
|
|
69
|
-
|
|
70
|
-
emerald: {
|
|
71
|
-
50: '#ecfdf5',
|
|
72
|
-
100: '#d1fae5',
|
|
73
|
-
200: '#a7f3d0',
|
|
74
|
-
300: '#6ee7b7',
|
|
75
|
-
400: '#34d399',
|
|
76
|
-
500: '#10b981',
|
|
77
|
-
600: '#059669',
|
|
78
|
-
700: '#047857',
|
|
79
|
-
800: '#065f46',
|
|
80
|
-
900: '#064e3b',
|
|
81
|
-
},
|
|
82
|
-
} as const;
|
|
83
|
-
|
|
84
|
-
// Extended color palettes for dark mode
|
|
85
|
-
export const extendedDarkColorPalettes = {
|
|
86
|
-
// Include all base dark colors
|
|
87
|
-
...createDarkPalettes(),
|
|
88
|
-
|
|
89
|
-
// Add the same extended colors (they work well in both light and dark)
|
|
90
|
-
orange: extendedColorPalettes.orange,
|
|
91
|
-
teal: extendedColorPalettes.teal,
|
|
92
|
-
indigo: extendedColorPalettes.indigo,
|
|
93
|
-
violet: extendedColorPalettes.violet,
|
|
94
|
-
emerald: extendedColorPalettes.emerald,
|
|
95
|
-
} as const;
|
|
96
|
-
|
|
97
|
-
// Helper function to create extended light intents
|
|
98
|
-
function createExtendedLightIntents(palettes: typeof extendedColorPalettes) {
|
|
99
|
-
return {
|
|
100
|
-
// Include all base intents
|
|
101
|
-
...createLightIntentMappings(),
|
|
102
|
-
|
|
103
|
-
// Add extended intents with resolved colors
|
|
104
|
-
accent: {
|
|
105
|
-
main: palettes.orange[500],
|
|
106
|
-
on: '#ffffff',
|
|
107
|
-
container: palettes.orange[100],
|
|
108
|
-
onContainer: palettes.orange[800],
|
|
109
|
-
light: palettes.orange[200],
|
|
110
|
-
dark: palettes.orange[700],
|
|
111
|
-
border: palettes.orange[300],
|
|
112
|
-
},
|
|
113
|
-
|
|
114
|
-
feature: {
|
|
115
|
-
main: palettes.teal[500],
|
|
116
|
-
on: '#ffffff',
|
|
117
|
-
container: palettes.teal[100],
|
|
118
|
-
onContainer: palettes.teal[800],
|
|
119
|
-
light: palettes.teal[200],
|
|
120
|
-
dark: palettes.teal[700],
|
|
121
|
-
border: palettes.teal[300],
|
|
122
|
-
},
|
|
123
|
-
|
|
124
|
-
highlight: {
|
|
125
|
-
main: palettes.violet[500],
|
|
126
|
-
on: '#ffffff',
|
|
127
|
-
container: palettes.violet[100],
|
|
128
|
-
onContainer: palettes.violet[800],
|
|
129
|
-
light: palettes.violet[200],
|
|
130
|
-
dark: palettes.violet[700],
|
|
131
|
-
border: palettes.violet[300],
|
|
132
|
-
},
|
|
133
|
-
} as any; // Type assertion for extended intents
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Helper function to create extended dark intents
|
|
137
|
-
function createExtendedDarkIntents(palettes: typeof extendedDarkColorPalettes) {
|
|
138
|
-
return {
|
|
139
|
-
// Include all base intents
|
|
140
|
-
...createDarkIntentMappings(),
|
|
141
|
-
|
|
142
|
-
// Add extended intents with resolved colors
|
|
143
|
-
accent: {
|
|
144
|
-
main: palettes.orange[400],
|
|
145
|
-
on: palettes.gray[50],
|
|
146
|
-
container: palettes.orange[200],
|
|
147
|
-
onContainer: palettes.orange[800],
|
|
148
|
-
light: palettes.orange[300],
|
|
149
|
-
dark: palettes.orange[600],
|
|
150
|
-
border: palettes.orange[400],
|
|
151
|
-
},
|
|
152
|
-
|
|
153
|
-
feature: {
|
|
154
|
-
main: palettes.teal[400],
|
|
155
|
-
on: palettes.gray[50],
|
|
156
|
-
container: palettes.teal[200],
|
|
157
|
-
onContainer: palettes.teal[800],
|
|
158
|
-
light: palettes.teal[300],
|
|
159
|
-
dark: palettes.teal[600],
|
|
160
|
-
border: palettes.teal[400],
|
|
161
|
-
},
|
|
162
|
-
|
|
163
|
-
highlight: {
|
|
164
|
-
main: palettes.violet[400],
|
|
165
|
-
on: palettes.gray[50],
|
|
166
|
-
container: palettes.violet[200],
|
|
167
|
-
onContainer: palettes.violet[800],
|
|
168
|
-
light: palettes.violet[300],
|
|
169
|
-
dark: palettes.violet[600],
|
|
170
|
-
border: palettes.violet[400],
|
|
171
|
-
},
|
|
172
|
-
} as any; // Type assertion for extended intents
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
// Create extended themes using the new theme builder
|
|
176
|
-
export const extendedThemes = {
|
|
177
|
-
light: createTheme({
|
|
178
|
-
name: 'ExtendedLight',
|
|
179
|
-
mode: 'light',
|
|
180
|
-
palettes: extendedColorPalettes,
|
|
181
|
-
intents: createExtendedLightIntents(extendedColorPalettes),
|
|
182
|
-
colors: createLightColorMappings(),
|
|
183
|
-
|
|
184
|
-
typography: {
|
|
185
|
-
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
|
|
186
|
-
},
|
|
187
|
-
|
|
188
|
-
borderRadius: {
|
|
189
|
-
sm: 4,
|
|
190
|
-
md: 8,
|
|
191
|
-
lg: 12,
|
|
192
|
-
xl: 16,
|
|
193
|
-
xxl: 20,
|
|
194
|
-
},
|
|
195
|
-
|
|
196
|
-
spacing: {
|
|
197
|
-
xs: 4,
|
|
198
|
-
sm: 8,
|
|
199
|
-
md: 16,
|
|
200
|
-
lg: 24,
|
|
201
|
-
xl: 32,
|
|
202
|
-
xxl: 40,
|
|
203
|
-
xxxl: 48,
|
|
204
|
-
},
|
|
205
|
-
|
|
206
|
-
shadows: {
|
|
207
|
-
sm: {
|
|
208
|
-
shadowColor: '#000',
|
|
209
|
-
shadowOffset: { width: 0, height: 1 },
|
|
210
|
-
shadowOpacity: 0.05,
|
|
211
|
-
shadowRadius: 2,
|
|
212
|
-
elevation: 1,
|
|
213
|
-
},
|
|
214
|
-
md: {
|
|
215
|
-
shadowColor: '#000',
|
|
216
|
-
shadowOffset: { width: 0, height: 4 },
|
|
217
|
-
shadowOpacity: 0.1,
|
|
218
|
-
shadowRadius: 8,
|
|
219
|
-
elevation: 4,
|
|
220
|
-
},
|
|
221
|
-
lg: {
|
|
222
|
-
shadowColor: '#000',
|
|
223
|
-
shadowOffset: { width: 0, height: 8 },
|
|
224
|
-
shadowOpacity: 0.15,
|
|
225
|
-
shadowRadius: 16,
|
|
226
|
-
elevation: 8,
|
|
227
|
-
},
|
|
228
|
-
},
|
|
229
|
-
|
|
230
|
-
transitions: {
|
|
231
|
-
fast: '0.15s ease',
|
|
232
|
-
base: '0.2s ease',
|
|
233
|
-
slow: '0.3s ease',
|
|
234
|
-
button: 'all 0.2s ease',
|
|
235
|
-
fade: 'opacity 0.2s ease',
|
|
236
|
-
slide: 'transform 0.3s ease',
|
|
237
|
-
},
|
|
238
|
-
}),
|
|
239
|
-
|
|
240
|
-
dark: createTheme({
|
|
241
|
-
name: 'ExtendedDark',
|
|
242
|
-
mode: 'dark',
|
|
243
|
-
palettes: extendedDarkColorPalettes,
|
|
244
|
-
intents: createExtendedDarkIntents(extendedDarkColorPalettes),
|
|
245
|
-
colors: createDarkColorMappings(),
|
|
246
|
-
|
|
247
|
-
typography: {
|
|
248
|
-
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
|
|
249
|
-
},
|
|
250
|
-
|
|
251
|
-
borderRadius: {
|
|
252
|
-
sm: 4,
|
|
253
|
-
md: 8,
|
|
254
|
-
lg: 12,
|
|
255
|
-
xl: 16,
|
|
256
|
-
xxl: 20,
|
|
257
|
-
},
|
|
258
|
-
|
|
259
|
-
spacing: {
|
|
260
|
-
xs: 4,
|
|
261
|
-
sm: 8,
|
|
262
|
-
md: 16,
|
|
263
|
-
lg: 24,
|
|
264
|
-
xl: 32,
|
|
265
|
-
xxl: 40,
|
|
266
|
-
xxxl: 48,
|
|
267
|
-
},
|
|
268
|
-
|
|
269
|
-
shadows: {
|
|
270
|
-
sm: {
|
|
271
|
-
shadowColor: '#000',
|
|
272
|
-
shadowOffset: { width: 0, height: 1 },
|
|
273
|
-
shadowOpacity: 0.2,
|
|
274
|
-
shadowRadius: 2,
|
|
275
|
-
elevation: 1,
|
|
276
|
-
},
|
|
277
|
-
md: {
|
|
278
|
-
shadowColor: '#000',
|
|
279
|
-
shadowOffset: { width: 0, height: 4 },
|
|
280
|
-
shadowOpacity: 0.3,
|
|
281
|
-
shadowRadius: 8,
|
|
282
|
-
elevation: 4,
|
|
283
|
-
},
|
|
284
|
-
lg: {
|
|
285
|
-
shadowColor: '#000',
|
|
286
|
-
shadowOffset: { width: 0, height: 8 },
|
|
287
|
-
shadowOpacity: 0.4,
|
|
288
|
-
shadowRadius: 16,
|
|
289
|
-
elevation: 8,
|
|
290
|
-
},
|
|
291
|
-
},
|
|
292
|
-
|
|
293
|
-
transitions: {
|
|
294
|
-
fast: '0.15s ease',
|
|
295
|
-
base: '0.2s ease',
|
|
296
|
-
slow: '0.3s ease',
|
|
297
|
-
button: 'all 0.2s ease',
|
|
298
|
-
fade: 'opacity 0.2s ease',
|
|
299
|
-
slide: 'transform 0.3s ease',
|
|
300
|
-
},
|
|
301
|
-
}),
|
|
302
|
-
} as const;
|
|
303
|
-
|
|
304
|
-
// Extended type definitions for TypeScript
|
|
305
|
-
export type ExtendedColorVariant =
|
|
306
|
-
| 'blue'
|
|
307
|
-
| 'green'
|
|
308
|
-
| 'red'
|
|
309
|
-
| 'amber'
|
|
310
|
-
| 'gray'
|
|
311
|
-
| 'purple'
|
|
312
|
-
| 'pink'
|
|
313
|
-
| 'cyan'
|
|
314
|
-
| 'orange'
|
|
315
|
-
| 'teal'
|
|
316
|
-
| 'indigo'
|
|
317
|
-
| 'violet'
|
|
318
|
-
| 'emerald';
|
|
319
|
-
|
|
320
|
-
export type ExtendedIntentVariant =
|
|
321
|
-
| 'primary'
|
|
322
|
-
| 'success'
|
|
323
|
-
| 'error'
|
|
324
|
-
| 'warning'
|
|
325
|
-
| 'neutral'
|
|
326
|
-
| 'info'
|
|
327
|
-
| 'accent'
|
|
328
|
-
| 'feature'
|
|
329
|
-
| 'highlight';
|