@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.
Files changed (316) hide show
  1. package/CLAUDE.md +199 -232
  2. package/README.md +5 -5
  3. package/package.json +25 -7
  4. package/plugin/README.md +272 -0
  5. package/plugin/test-cases.jsx +112 -0
  6. package/plugin/web-legacy.js +320 -0
  7. package/plugin/web.js +422 -124
  8. package/src/Accordion/Accordion.native.tsx +182 -0
  9. package/src/Accordion/Accordion.styles.tsx +260 -0
  10. package/src/Accordion/Accordion.web.tsx +147 -0
  11. package/src/Accordion/index.native.tsx +3 -0
  12. package/src/Accordion/index.ts +3 -0
  13. package/src/Accordion/index.web.tsx +3 -0
  14. package/src/Accordion/types.ts +23 -0
  15. package/src/ActivityIndicator/ActivityIndicator.native.tsx +17 -12
  16. package/src/ActivityIndicator/ActivityIndicator.styles.tsx +83 -109
  17. package/src/ActivityIndicator/ActivityIndicator.web.tsx +23 -17
  18. package/src/ActivityIndicator/index.ts +5 -2
  19. package/src/ActivityIndicator/index.web.ts +5 -2
  20. package/src/ActivityIndicator/types.ts +15 -10
  21. package/src/Alert/Alert.native.tsx +113 -0
  22. package/src/Alert/Alert.styles.tsx +304 -0
  23. package/src/Alert/Alert.web.tsx +123 -0
  24. package/src/Alert/index.native.ts +5 -0
  25. package/src/Alert/index.ts +5 -0
  26. package/src/Alert/index.web.ts +5 -0
  27. package/src/Alert/types.ts +21 -0
  28. package/src/Avatar/Avatar.native.tsx +8 -6
  29. package/src/Avatar/Avatar.styles.tsx +64 -58
  30. package/src/Avatar/Avatar.web.tsx +13 -8
  31. package/src/Avatar/index.ts +5 -2
  32. package/src/Avatar/index.web.ts +5 -2
  33. package/src/Avatar/types.ts +19 -13
  34. package/src/Badge/Badge.native.tsx +59 -14
  35. package/src/Badge/Badge.styles.tsx +125 -139
  36. package/src/Badge/Badge.web.tsx +72 -16
  37. package/src/Badge/index.ts +5 -2
  38. package/src/Badge/index.web.ts +5 -2
  39. package/src/Badge/types.ts +23 -11
  40. package/src/Breadcrumb/Breadcrumb.native.tsx +225 -0
  41. package/src/Breadcrumb/Breadcrumb.styles.tsx +234 -0
  42. package/src/Breadcrumb/Breadcrumb.web.tsx +268 -0
  43. package/src/Breadcrumb/index.native.ts +5 -0
  44. package/src/Breadcrumb/index.ts +5 -0
  45. package/src/Breadcrumb/index.web.ts +5 -0
  46. package/src/Breadcrumb/types.ts +56 -0
  47. package/src/Button/Button.native.tsx +75 -24
  48. package/src/Button/Button.styles.tsx +248 -205
  49. package/src/Button/Button.web.tsx +82 -25
  50. package/src/Button/index.ts +5 -5
  51. package/src/Button/index.web.ts +5 -3
  52. package/src/Button/types.ts +32 -15
  53. package/src/Card/Card.native.tsx +14 -11
  54. package/src/Card/Card.styles.tsx +146 -220
  55. package/src/Card/Card.web.tsx +20 -21
  56. package/src/Card/index.ts +5 -5
  57. package/src/Card/index.web.ts +5 -3
  58. package/src/Card/types.ts +24 -17
  59. package/src/Checkbox/Checkbox.native.tsx +24 -34
  60. package/src/Checkbox/Checkbox.styles.tsx +223 -275
  61. package/src/Checkbox/Checkbox.web.tsx +30 -37
  62. package/src/Checkbox/index.ts +5 -5
  63. package/src/Checkbox/index.web.ts +5 -3
  64. package/src/Checkbox/types.ts +26 -20
  65. package/src/Chip/Chip.native.tsx +126 -0
  66. package/src/Chip/Chip.styles.tsx +138 -0
  67. package/src/Chip/Chip.web.tsx +154 -0
  68. package/src/Chip/index.native.ts +5 -0
  69. package/src/Chip/index.ts +5 -0
  70. package/src/Chip/index.web.ts +5 -0
  71. package/src/Chip/types.ts +51 -0
  72. package/src/Dialog/Dialog.native.tsx +65 -12
  73. package/src/Dialog/Dialog.styles.tsx +154 -136
  74. package/src/Dialog/Dialog.web.tsx +16 -11
  75. package/src/Dialog/index.ts +5 -2
  76. package/src/Dialog/index.web.ts +5 -2
  77. package/src/Dialog/types.ts +22 -16
  78. package/src/Divider/Divider.native.tsx +19 -14
  79. package/src/Divider/Divider.styles.tsx +273 -595
  80. package/src/Divider/Divider.web.tsx +19 -12
  81. package/src/Divider/index.ts +5 -5
  82. package/src/Divider/index.web.ts +5 -3
  83. package/src/Divider/types.ts +28 -19
  84. package/src/Icon/Icon.native.tsx +17 -24
  85. package/src/Icon/Icon.styles.tsx +64 -48
  86. package/src/Icon/Icon.web.tsx +14 -11
  87. package/src/Icon/IconSvg/IconSvg.native.tsx +42 -0
  88. package/src/Icon/IconSvg/IconSvg.web.tsx +40 -0
  89. package/src/Icon/IconSvg/index.native.ts +1 -0
  90. package/src/Icon/IconSvg/index.ts +1 -0
  91. package/src/Icon/icon-resolver.native.ts +27 -0
  92. package/src/Icon/icon-resolver.ts +70 -0
  93. package/src/Icon/index.ts +5 -5
  94. package/src/Icon/index.web.ts +5 -3
  95. package/src/Icon/types.ts +17 -11
  96. package/src/Image/Image.native.tsx +86 -0
  97. package/src/Image/Image.styles.tsx +57 -0
  98. package/src/Image/Image.web.tsx +92 -0
  99. package/src/Image/index.native.ts +5 -0
  100. package/src/Image/index.ts +5 -0
  101. package/src/Image/types.ts +21 -0
  102. package/src/Input/Input.native.tsx +103 -26
  103. package/src/Input/Input.styles.tsx +240 -177
  104. package/src/Input/Input.web.tsx +141 -38
  105. package/src/Input/index.ts +5 -5
  106. package/src/Input/index.web.ts +5 -3
  107. package/src/Input/types.ts +43 -20
  108. package/src/List/List.native.tsx +56 -0
  109. package/src/List/List.styles.tsx +257 -0
  110. package/src/List/List.web.tsx +43 -0
  111. package/src/List/ListContext.tsx +16 -0
  112. package/src/List/ListItem.native.tsx +111 -0
  113. package/src/List/ListItem.web.tsx +110 -0
  114. package/src/List/ListSection.native.tsx +31 -0
  115. package/src/List/ListSection.web.tsx +33 -0
  116. package/src/List/index.native.tsx +5 -0
  117. package/src/List/index.ts +5 -0
  118. package/src/List/index.web.tsx +5 -0
  119. package/src/List/types.ts +42 -0
  120. package/src/Menu/Menu.native.tsx +150 -0
  121. package/src/Menu/Menu.styles.tsx +185 -0
  122. package/src/Menu/Menu.web.tsx +99 -0
  123. package/src/Menu/MenuItem.native.tsx +66 -0
  124. package/src/Menu/MenuItem.styles.tsx +119 -0
  125. package/src/Menu/MenuItem.web.tsx +67 -0
  126. package/src/Menu/index.native.ts +3 -0
  127. package/src/Menu/index.ts +3 -0
  128. package/src/Menu/index.web.ts +3 -0
  129. package/src/Menu/types.ts +30 -0
  130. package/src/Popover/Popover.native.tsx +102 -32
  131. package/src/Popover/Popover.styles.tsx +100 -67
  132. package/src/Popover/Popover.web.tsx +36 -260
  133. package/src/Popover/index.ts +5 -2
  134. package/src/Popover/index.web.ts +5 -2
  135. package/src/Popover/types.ts +14 -13
  136. package/src/Pressable/Pressable.native.tsx +7 -6
  137. package/src/Pressable/Pressable.web.tsx +8 -6
  138. package/src/Pressable/index.ts +5 -2
  139. package/src/Pressable/index.web.ts +5 -2
  140. package/src/Pressable/types.ts +11 -10
  141. package/src/Progress/Progress.native.tsx +179 -0
  142. package/src/Progress/Progress.styles.tsx +164 -0
  143. package/src/Progress/Progress.web.tsx +144 -0
  144. package/src/Progress/index.native.ts +1 -0
  145. package/src/Progress/index.ts +5 -0
  146. package/src/Progress/index.web.ts +5 -0
  147. package/src/Progress/types.ts +21 -0
  148. package/src/RadioButton/RadioButton.native.tsx +88 -0
  149. package/src/RadioButton/RadioButton.styles.tsx +163 -0
  150. package/src/RadioButton/RadioButton.web.tsx +85 -0
  151. package/src/RadioButton/RadioGroup.native.tsx +43 -0
  152. package/src/RadioButton/RadioGroup.web.tsx +49 -0
  153. package/src/RadioButton/index.native.ts +2 -0
  154. package/src/RadioButton/index.ts +2 -0
  155. package/src/RadioButton/index.web.ts +2 -0
  156. package/src/RadioButton/types.ts +29 -0
  157. package/src/SVGImage/SVGImage.native.tsx +9 -7
  158. package/src/SVGImage/SVGImage.styles.tsx +63 -55
  159. package/src/SVGImage/SVGImage.web.tsx +16 -13
  160. package/src/SVGImage/index.ts +5 -5
  161. package/src/SVGImage/index.web.ts +5 -2
  162. package/src/SVGImage/types.ts +7 -3
  163. package/src/Screen/Screen.native.tsx +43 -17
  164. package/src/Screen/Screen.styles.tsx +58 -54
  165. package/src/Screen/Screen.web.tsx +11 -5
  166. package/src/Screen/index.ts +5 -2
  167. package/src/Screen/index.web.ts +5 -2
  168. package/src/Screen/types.ts +23 -9
  169. package/src/Select/Select.native.tsx +347 -0
  170. package/src/Select/Select.styles.tsx +335 -0
  171. package/src/Select/Select.web.tsx +276 -0
  172. package/src/Select/index.native.ts +2 -0
  173. package/src/Select/index.ts +5 -0
  174. package/src/Select/index.web.ts +5 -0
  175. package/src/Select/types.ts +124 -0
  176. package/src/Skeleton/Skeleton.native.tsx +139 -0
  177. package/src/Skeleton/Skeleton.styles.tsx +59 -0
  178. package/src/Skeleton/Skeleton.web.tsx +112 -0
  179. package/src/Skeleton/index.native.ts +4 -0
  180. package/src/Skeleton/index.ts +5 -0
  181. package/src/Skeleton/index.web.ts +5 -0
  182. package/src/Skeleton/types.ts +75 -0
  183. package/src/Slider/Slider.native.tsx +248 -0
  184. package/src/Slider/Slider.styles.tsx +241 -0
  185. package/src/Slider/Slider.web.tsx +226 -0
  186. package/src/Slider/index.native.ts +3 -0
  187. package/src/Slider/index.ts +5 -0
  188. package/src/Slider/index.web.ts +5 -0
  189. package/src/Slider/types.ts +31 -0
  190. package/src/Switch/Switch.native.tsx +131 -0
  191. package/src/Switch/Switch.styles.tsx +169 -0
  192. package/src/Switch/Switch.web.tsx +121 -0
  193. package/src/Switch/index.native.ts +3 -0
  194. package/src/Switch/index.ts +5 -0
  195. package/src/Switch/index.web.ts +5 -0
  196. package/src/Switch/types.ts +21 -0
  197. package/src/TabBar/TabBar.native.tsx +142 -0
  198. package/src/TabBar/TabBar.styles.tsx +399 -0
  199. package/src/TabBar/TabBar.web.tsx +205 -0
  200. package/src/TabBar/index.native.tsx +3 -0
  201. package/src/TabBar/index.ts +3 -0
  202. package/src/TabBar/index.web.tsx +3 -0
  203. package/src/TabBar/types.ts +26 -0
  204. package/src/Table/Table.native.tsx +122 -0
  205. package/src/Table/Table.styles.tsx +283 -0
  206. package/src/Table/Table.web.tsx +112 -0
  207. package/src/Table/index.native.tsx +3 -0
  208. package/src/Table/index.ts +3 -0
  209. package/src/Table/index.web.tsx +3 -0
  210. package/src/Table/types.ts +28 -0
  211. package/src/Text/Text.native.tsx +12 -11
  212. package/src/Text/Text.styles.tsx +76 -64
  213. package/src/Text/Text.web.tsx +14 -9
  214. package/src/Text/index.ts +5 -5
  215. package/src/Text/index.web.ts +5 -3
  216. package/src/Text/types.ts +20 -13
  217. package/src/TextArea/TextArea.native.tsx +134 -0
  218. package/src/TextArea/TextArea.styles.tsx +175 -0
  219. package/src/TextArea/TextArea.web.tsx +156 -0
  220. package/src/TextArea/index.native.ts +3 -0
  221. package/src/TextArea/index.ts +3 -0
  222. package/src/TextArea/index.web.ts +3 -0
  223. package/src/TextArea/types.ts +30 -0
  224. package/src/Tooltip/Tooltip.native.tsx +165 -0
  225. package/src/Tooltip/Tooltip.styles.tsx +73 -0
  226. package/src/Tooltip/Tooltip.web.tsx +87 -0
  227. package/src/Tooltip/index.native.ts +3 -0
  228. package/src/Tooltip/index.ts +3 -0
  229. package/src/Tooltip/types.ts +18 -0
  230. package/src/Video/Video.native.tsx +105 -0
  231. package/src/Video/Video.styles.tsx +39 -0
  232. package/src/Video/Video.web.tsx +115 -0
  233. package/src/Video/index.native.ts +5 -0
  234. package/src/Video/index.ts +5 -0
  235. package/src/Video/types.ts +29 -0
  236. package/src/View/View.native.tsx +9 -14
  237. package/src/View/View.styles.tsx +101 -93
  238. package/src/View/View.web.tsx +16 -17
  239. package/src/View/index.ts +5 -5
  240. package/src/View/index.web.ts +5 -3
  241. package/src/View/types.ts +29 -21
  242. package/src/examples/AccordionExamples.tsx +126 -0
  243. package/src/examples/AlertExamples.tsx +280 -0
  244. package/src/examples/AvatarExamples.tsx +23 -23
  245. package/src/examples/BadgeExamples.tsx +109 -41
  246. package/src/examples/BreadcrumbExamples.tsx +312 -0
  247. package/src/examples/ButtonExamples.tsx +160 -33
  248. package/src/examples/CardExamples.tsx +40 -40
  249. package/src/examples/CheckboxExamples.tsx +12 -12
  250. package/src/examples/ChipExamples.tsx +197 -0
  251. package/src/examples/DialogExamples.tsx +22 -22
  252. package/src/examples/DividerExamples.tsx +49 -49
  253. package/src/examples/IconExamples.tsx +270 -54
  254. package/src/examples/ImageExamples.tsx +174 -0
  255. package/src/examples/InputExamples.tsx +75 -17
  256. package/src/examples/ListExamples.tsx +288 -0
  257. package/src/examples/MenuExamples.tsx +144 -0
  258. package/src/examples/PopoverExamples.tsx +69 -73
  259. package/src/examples/ProgressExamples.tsx +137 -0
  260. package/src/examples/RadioButtonExamples.tsx +161 -0
  261. package/src/examples/SVGImageExamples.tsx +19 -17
  262. package/src/examples/ScreenExamples.tsx +31 -31
  263. package/src/examples/SelectExamples.tsx +423 -0
  264. package/src/examples/SkeletonExamples.tsx +206 -0
  265. package/src/examples/SliderExamples.tsx +200 -0
  266. package/src/examples/SwitchExamples.tsx +182 -0
  267. package/src/examples/TabBarExamples.tsx +143 -0
  268. package/src/examples/TableExamples.tsx +280 -0
  269. package/src/examples/TextAreaExamples.tsx +173 -0
  270. package/src/examples/TextExamples.tsx +28 -32
  271. package/src/examples/ThemeExtensionExamples.tsx +10 -10
  272. package/src/examples/TooltipExamples.tsx +126 -0
  273. package/src/examples/VideoExamples.tsx +144 -0
  274. package/src/examples/ViewExamples.tsx +64 -56
  275. package/src/examples/index.ts +18 -3
  276. package/src/hooks/useMergeRefs.ts +16 -0
  277. package/src/hooks/useSmartPosition.native.ts +169 -0
  278. package/src/index.native.ts +80 -9
  279. package/src/index.ts +75 -1
  280. package/src/internal/BoundedModalContent.native.tsx +58 -0
  281. package/src/internal/PositionedPortal.tsx +254 -0
  282. package/src/internal/SafeAreaDebugOverlay.native.tsx +173 -0
  283. package/src/unistyles.d.ts +6 -0
  284. package/src/utils/buildSizeVariants.ts +16 -0
  285. package/src/utils/deepMerge.ts +43 -0
  286. package/src/utils/positionUtils.native.ts +280 -0
  287. package/src/utils/styleHelpers.ts +48 -0
  288. package/LLM-ACCESS-GUIDE.md +0 -143
  289. package/src/ActivityIndicator/README.md +0 -132
  290. package/src/Avatar/README.md +0 -139
  291. package/src/Badge/README.md +0 -170
  292. package/src/Button/Button.types.ts +0 -12
  293. package/src/Button/README.md +0 -262
  294. package/src/Card/README.md +0 -258
  295. package/src/Checkbox/README.md +0 -102
  296. package/src/Dialog/README.md +0 -210
  297. package/src/Divider/README.md +0 -108
  298. package/src/Icon/README.md +0 -81
  299. package/src/Input/README.md +0 -100
  300. package/src/SVGImage/README.md +0 -209
  301. package/src/Screen/README.md +0 -86
  302. package/src/Text/README.md +0 -94
  303. package/src/View/README.md +0 -107
  304. package/src/examples/AllExamples.tsx +0 -84
  305. package/src/examples/README.md +0 -136
  306. package/src/examples/ValidationExamples.tsx +0 -95
  307. package/src/examples/extendedTheme.ts +0 -329
  308. package/src/theme/breakpoints.ts +0 -8
  309. package/src/theme/colorResolver.ts +0 -218
  310. package/src/theme/colors.ts +0 -315
  311. package/src/theme/defaultThemes.ts +0 -326
  312. package/src/theme/index.ts +0 -188
  313. package/src/theme/themeBuilder.ts +0 -602
  314. package/src/theme/unistyles.d.ts +0 -6
  315. package/src/theme/variantHelpers.ts +0 -584
  316. 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
- };
@@ -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
- &lt;Text color="orange"&gt; and &lt;Badge color="orange"&gt;
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';
@@ -1,8 +0,0 @@
1
- export const breakpoints = {
2
- xs: 0,
3
- sm: 400,
4
- md: 768,
5
- lg: 1024,
6
- xl: 1280,
7
- } as const;
8
-