@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
@@ -0,0 +1,200 @@
1
+ import React, { useState } from 'react';
2
+ import { Screen, View, Text } from '@idealyst/components';
3
+ import Slider from '../Slider';
4
+
5
+ export const SliderExamples: React.FC = () => {
6
+ const [basicValue, setBasicValue] = useState(50);
7
+ const [volumeValue, setVolumeValue] = useState(75);
8
+ const [temperatureValue, setTemperatureValue] = useState(20);
9
+
10
+ return (
11
+ <Screen background="primary" padding="lg">
12
+ <View spacing="lg">
13
+ <Text size="xl" weight="bold">Slider Examples</Text>
14
+
15
+ <View spacing="md">
16
+ <Text size="lg" weight="semibold">Basic Slider</Text>
17
+ <Slider
18
+ value={basicValue}
19
+ onValueChange={setBasicValue}
20
+ showValue
21
+ />
22
+ <Text size="sm" color="secondary">Value: {basicValue}</Text>
23
+ </View>
24
+
25
+ <View spacing="md">
26
+ <Text size="lg" weight="semibold">Sizes</Text>
27
+ <View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
28
+ <View spacing="xs">
29
+ <Text size="sm">Small</Text>
30
+ <Slider defaultValue={30} size="sm" />
31
+ </View>
32
+ <View spacing="xs">
33
+ <Text size="sm">Medium (default)</Text>
34
+ <Slider defaultValue={50} size="md" />
35
+ </View>
36
+ <View spacing="xs">
37
+ <Text size="sm">Large</Text>
38
+ <Slider defaultValue={70} size="lg" />
39
+ </View>
40
+ </View>
41
+ </View>
42
+
43
+ <View spacing="md">
44
+ <Text size="lg" weight="semibold">Intent Colors</Text>
45
+ <View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
46
+ <View spacing="xs">
47
+ <Text size="sm">Primary</Text>
48
+ <Slider defaultValue={60} intent="primary" />
49
+ </View>
50
+ <View spacing="xs">
51
+ <Text size="sm">Success</Text>
52
+ <Slider defaultValue={60} intent="success" />
53
+ </View>
54
+ <View spacing="xs">
55
+ <Text size="sm">Error</Text>
56
+ <Slider defaultValue={60} intent="error" />
57
+ </View>
58
+ <View spacing="xs">
59
+ <Text size="sm">Warning</Text>
60
+ <Slider defaultValue={60} intent="warning" />
61
+ </View>
62
+ <View spacing="xs">
63
+ <Text size="sm">Neutral</Text>
64
+ <Slider defaultValue={60} intent="neutral" />
65
+ </View>
66
+ </View>
67
+ </View>
68
+
69
+ <View spacing="md">
70
+ <Text size="lg" weight="semibold">With Min/Max Labels</Text>
71
+ <Slider
72
+ defaultValue={50}
73
+ showMinMax
74
+ />
75
+ </View>
76
+
77
+ <View spacing="md">
78
+ <Text size="lg" weight="semibold">Custom Range & Step</Text>
79
+ <View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
80
+ <View spacing="xs">
81
+ <Text size="sm">Range: 0-10, Step: 1</Text>
82
+ <Slider
83
+ min={0}
84
+ max={10}
85
+ step={1}
86
+ defaultValue={5}
87
+ showValue
88
+ showMinMax
89
+ />
90
+ </View>
91
+ <View spacing="xs">
92
+ <Text size="sm">Range: -50 to 50, Step: 5</Text>
93
+ <Slider
94
+ min={-50}
95
+ max={50}
96
+ step={5}
97
+ defaultValue={0}
98
+ showValue
99
+ showMinMax
100
+ />
101
+ </View>
102
+ </View>
103
+ </View>
104
+
105
+ <View spacing="md">
106
+ <Text size="lg" weight="semibold">With Marks</Text>
107
+ <Slider
108
+ min={0}
109
+ max={100}
110
+ defaultValue={50}
111
+ marks={[
112
+ { value: 0, label: '0%' },
113
+ { value: 25, label: '25%' },
114
+ { value: 50, label: '50%' },
115
+ { value: 75, label: '75%' },
116
+ { value: 100, label: '100%' },
117
+ ]}
118
+ />
119
+ </View>
120
+
121
+ <View spacing="md">
122
+ <Text size="lg" weight="semibold">Volume Control</Text>
123
+ <Slider
124
+ value={volumeValue}
125
+ onValueChange={setVolumeValue}
126
+ min={0}
127
+ max={100}
128
+ showValue
129
+ intent="primary"
130
+ marks={[
131
+ { value: 0, label: 'Mute' },
132
+ { value: 50 },
133
+ { value: 100, label: 'Max' },
134
+ ]}
135
+ />
136
+ </View>
137
+
138
+ <View spacing="md">
139
+ <Text size="lg" weight="semibold">With Icons</Text>
140
+ <View spacing="sm" style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>
141
+ <View spacing="xs">
142
+ <Text size="sm">Volume with icon</Text>
143
+ <Slider
144
+ defaultValue={60}
145
+ icon="volume-high"
146
+ intent="primary"
147
+ showMinMax
148
+ />
149
+ </View>
150
+ <View spacing="xs">
151
+ <Text size="sm">Brightness with icon</Text>
152
+ <Slider
153
+ defaultValue={75}
154
+ icon="brightness-6"
155
+ intent="warning"
156
+ showMinMax
157
+ />
158
+ </View>
159
+ <View spacing="xs">
160
+ <Text size="sm">Temperature with icon</Text>
161
+ <Slider
162
+ defaultValue={22}
163
+ min={10}
164
+ max={30}
165
+ icon="thermometer"
166
+ intent="error"
167
+ showMinMax
168
+ />
169
+ </View>
170
+ </View>
171
+ </View>
172
+
173
+ <View spacing="md">
174
+ <Text size="lg" weight="semibold">Temperature Control</Text>
175
+ <Slider
176
+ value={temperatureValue}
177
+ onValueChange={setTemperatureValue}
178
+ min={10}
179
+ max={30}
180
+ step={0.5}
181
+ showValue
182
+ showMinMax
183
+ intent="warning"
184
+ />
185
+ <Text size="sm" color="secondary">Temperature: {temperatureValue}°C</Text>
186
+ </View>
187
+
188
+ <View spacing="md">
189
+ <Text size="lg" weight="semibold">Disabled</Text>
190
+ <Slider
191
+ defaultValue={60}
192
+ disabled
193
+ />
194
+ </View>
195
+ </View>
196
+ </Screen>
197
+ );
198
+ };
199
+
200
+ export default SliderExamples;
@@ -0,0 +1,182 @@
1
+ import React, { useState } from 'react';
2
+ import { Screen, View, Text } from '@idealyst/components';
3
+ import Switch from '../Switch';
4
+
5
+ export const SwitchExamples: React.FC = () => {
6
+ const [basicChecked, setBasicChecked] = useState(false);
7
+ const [labelledChecked, setLabelledChecked] = useState(false);
8
+ const [intentChecked, setIntentChecked] = useState({
9
+ primary: false,
10
+ success: false,
11
+ error: false,
12
+ warning: false,
13
+ neutral: false,
14
+ });
15
+ const [iconChecked, setIconChecked] = useState({
16
+ basic: false,
17
+ notifications: true,
18
+ visibility: false,
19
+ volume: true,
20
+ wifi: false,
21
+ });
22
+
23
+ return (
24
+ <Screen background="primary" padding="lg">
25
+ <View spacing="lg">
26
+ <Text size="xl" weight="bold">Switch Examples</Text>
27
+
28
+ <View spacing="md">
29
+ <Text size="lg" weight="semibold">Basic Switch</Text>
30
+ <Switch
31
+ checked={basicChecked}
32
+ onCheckedChange={setBasicChecked}
33
+ />
34
+ </View>
35
+
36
+ <View spacing="md">
37
+ <Text size="lg" weight="semibold">With Label</Text>
38
+ <Switch
39
+ checked={labelledChecked}
40
+ onCheckedChange={setLabelledChecked}
41
+ label="Enable notifications"
42
+ />
43
+ </View>
44
+
45
+ <View spacing="md">
46
+ <Text size="lg" weight="semibold">Label Position</Text>
47
+ <Switch
48
+ checked={labelledChecked}
49
+ onCheckedChange={setLabelledChecked}
50
+ label="Left label"
51
+ labelPosition="left"
52
+ />
53
+ </View>
54
+
55
+ <View spacing="md">
56
+ <Text size="lg" weight="semibold">Sizes</Text>
57
+ <View spacing="sm">
58
+ <Switch
59
+ checked={basicChecked}
60
+ onCheckedChange={setBasicChecked}
61
+ size="sm"
62
+ label="Small"
63
+ />
64
+ <Switch
65
+ checked={basicChecked}
66
+ onCheckedChange={setBasicChecked}
67
+ size="md"
68
+ label="Medium (default)"
69
+ />
70
+ <Switch
71
+ checked={basicChecked}
72
+ onCheckedChange={setBasicChecked}
73
+ size="lg"
74
+ label="Large"
75
+ />
76
+ </View>
77
+ </View>
78
+
79
+ <View spacing="md">
80
+ <Text size="lg" weight="semibold">Intent Colors</Text>
81
+ <View spacing="sm">
82
+ <Switch
83
+ checked={intentChecked.primary}
84
+ onCheckedChange={(checked) => setIntentChecked(prev => ({ ...prev, primary: checked }))}
85
+ intent="primary"
86
+ label="Primary"
87
+ />
88
+ <Switch
89
+ checked={intentChecked.success}
90
+ onCheckedChange={(checked) => setIntentChecked(prev => ({ ...prev, success: checked }))}
91
+ intent="success"
92
+ label="Success"
93
+ />
94
+ <Switch
95
+ checked={intentChecked.error}
96
+ onCheckedChange={(checked) => setIntentChecked(prev => ({ ...prev, error: checked }))}
97
+ intent="error"
98
+ label="Error"
99
+ />
100
+ <Switch
101
+ checked={intentChecked.warning}
102
+ onCheckedChange={(checked) => setIntentChecked(prev => ({ ...prev, warning: checked }))}
103
+ intent="warning"
104
+ label="Warning"
105
+ />
106
+ <Switch
107
+ checked={intentChecked.neutral}
108
+ onCheckedChange={(checked) => setIntentChecked(prev => ({ ...prev, neutral: checked }))}
109
+ intent="neutral"
110
+ label="Neutral"
111
+ />
112
+ </View>
113
+ </View>
114
+
115
+ <View spacing="md">
116
+ <Text size="lg" weight="semibold">With Icons</Text>
117
+ <View spacing="sm">
118
+ <Switch
119
+ checked={iconChecked.basic}
120
+ onCheckedChange={(checked) => setIconChecked(prev => ({ ...prev, basic: checked }))}
121
+ enabledIcon="check"
122
+ disabledIcon="close"
123
+ label="On/Off"
124
+ />
125
+ <Switch
126
+ checked={iconChecked.notifications}
127
+ onCheckedChange={(checked) => setIconChecked(prev => ({ ...prev, notifications: checked }))}
128
+ enabledIcon="bell"
129
+ disabledIcon="bell-off"
130
+ intent="success"
131
+ label="Notifications"
132
+ />
133
+ <Switch
134
+ checked={iconChecked.visibility}
135
+ onCheckedChange={(checked) => setIconChecked(prev => ({ ...prev, visibility: checked }))}
136
+ enabledIcon="eye"
137
+ disabledIcon="eye-off"
138
+ intent="primary"
139
+ label="Visibility"
140
+ />
141
+ <Switch
142
+ checked={iconChecked.volume}
143
+ onCheckedChange={(checked) => setIconChecked(prev => ({ ...prev, volume: checked }))}
144
+ enabledIcon="volume-high"
145
+ disabledIcon="volume-off"
146
+ intent="warning"
147
+ label="Sound"
148
+ size="lg"
149
+ />
150
+ <Switch
151
+ checked={iconChecked.wifi}
152
+ onCheckedChange={(checked) => setIconChecked(prev => ({ ...prev, wifi: checked }))}
153
+ enabledIcon="wifi"
154
+ disabledIcon="wifi-off"
155
+ intent="error"
156
+ label="WiFi Connection"
157
+ size="sm"
158
+ />
159
+ </View>
160
+ </View>
161
+
162
+ <View spacing="md">
163
+ <Text size="lg" weight="semibold">Disabled States</Text>
164
+ <View spacing="sm">
165
+ <Switch
166
+ checked={false}
167
+ disabled
168
+ label="Disabled unchecked"
169
+ />
170
+ <Switch
171
+ checked={true}
172
+ disabled
173
+ label="Disabled checked"
174
+ />
175
+ </View>
176
+ </View>
177
+ </View>
178
+ </Screen>
179
+ );
180
+ };
181
+
182
+ export default SwitchExamples;
@@ -0,0 +1,143 @@
1
+ import React, { useState } from 'react';
2
+ import { Screen, View, Text } from '@idealyst/components';
3
+ import TabBar from '../TabBar';
4
+ import type { TabBarItem } from '../TabBar/types';
5
+
6
+ export const TabBarExamples: React.FC = () => {
7
+ const [activeTab, setActiveTab] = useState('tab1');
8
+ const [variantTab, setVariantTab] = useState('home');
9
+ const [pillTab, setPillTab] = useState('tab1');
10
+
11
+ const basicTabs: TabBarItem[] = [
12
+ { value: 'tab1', label: 'Tab 1' },
13
+ { value: 'tab2', label: 'Tab 2' },
14
+ { value: 'tab3', label: 'Tab 3' },
15
+ ];
16
+
17
+ const variantTabs: TabBarItem[] = [
18
+ { value: 'home', label: 'Home' },
19
+ { value: 'search', label: 'Search' },
20
+ { value: 'settings', label: 'Settings' },
21
+ ];
22
+
23
+ const disabledTabs: TabBarItem[] = [
24
+ { value: 'tab1', label: 'Enabled' },
25
+ { value: 'tab2', label: 'Disabled', disabled: true },
26
+ { value: 'tab3', label: 'Enabled' },
27
+ ];
28
+
29
+ return (
30
+ <Screen background="primary" padding="lg">
31
+ <View spacing="lg">
32
+ <Text size="xl" weight="bold">TabBar Examples</Text>
33
+
34
+ <View spacing="md">
35
+ <Text size="lg" weight="semibold">Basic TabBar</Text>
36
+ <TabBar
37
+ items={basicTabs}
38
+ value={activeTab}
39
+ onChange={setActiveTab}
40
+ />
41
+ <Text size="sm" color="secondary">
42
+ Active tab: {activeTab}
43
+ </Text>
44
+ </View>
45
+
46
+ <View spacing="md">
47
+ <Text size="lg" weight="semibold">Variants</Text>
48
+ <View spacing="sm">
49
+ <View spacing="xs">
50
+ <Text size="sm" weight="medium">Standard</Text>
51
+ <TabBar
52
+ items={variantTabs}
53
+ value={variantTab}
54
+ onChange={setVariantTab}
55
+ type="standard"
56
+ />
57
+ </View>
58
+ <View spacing="xs">
59
+ <Text size="sm" weight="medium">Pills</Text>
60
+ <TabBar
61
+ items={variantTabs}
62
+ value={variantTab}
63
+ onChange={setVariantTab}
64
+ type="pills"
65
+ pillMode="light"
66
+ />
67
+ </View>
68
+ <View spacing="xs">
69
+ <Text size="sm" weight="medium">Underline</Text>
70
+ <TabBar
71
+ items={variantTabs}
72
+ value={variantTab}
73
+ onChange={setVariantTab}
74
+ type="underline"
75
+ />
76
+ </View>
77
+ </View>
78
+ </View>
79
+
80
+ <View spacing="md">
81
+ <Text size="lg" weight="semibold">Sizes</Text>
82
+ <View spacing="sm">
83
+ <TabBar
84
+ items={basicTabs}
85
+ value={activeTab}
86
+ onChange={setActiveTab}
87
+ size="sm"
88
+ />
89
+ <TabBar
90
+ items={basicTabs}
91
+ value={activeTab}
92
+ onChange={setActiveTab}
93
+ size="md"
94
+ />
95
+ <TabBar
96
+ items={basicTabs}
97
+ value={activeTab}
98
+ onChange={setActiveTab}
99
+ size="lg"
100
+ />
101
+ </View>
102
+ </View>
103
+
104
+ <View spacing="md">
105
+ <Text size="lg" weight="semibold">Pill Modes</Text>
106
+ <View spacing="sm">
107
+ <View spacing="xs">
108
+ <Text size="sm" weight="medium">Light Mode (dark pill on light background)</Text>
109
+ <TabBar
110
+ items={basicTabs}
111
+ value={pillTab}
112
+ onChange={setPillTab}
113
+ type="pills"
114
+ pillMode="light"
115
+ />
116
+ </View>
117
+ <View spacing="xs">
118
+ <Text size="sm" weight="medium">Dark Mode (light pill on dark background)</Text>
119
+ <TabBar
120
+ items={basicTabs}
121
+ value={pillTab}
122
+ onChange={setPillTab}
123
+ type="pills"
124
+ pillMode="dark"
125
+ />
126
+ </View>
127
+ </View>
128
+ </View>
129
+
130
+ <View spacing="md">
131
+ <Text size="lg" weight="semibold">Disabled Tabs</Text>
132
+ <TabBar
133
+ items={disabledTabs}
134
+ value={activeTab}
135
+ onChange={setActiveTab}
136
+ />
137
+ </View>
138
+ </View>
139
+ </Screen>
140
+ );
141
+ };
142
+
143
+ export default TabBarExamples;