@idealyst/components 1.0.83 → 1.0.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/CLAUDE.md +199 -232
  2. package/README.md +5 -5
  3. package/package.json +20 -2
  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 +140 -63
  170. package/src/Select/Select.styles.tsx +312 -302
  171. package/src/Select/Select.web.tsx +156 -316
  172. package/src/Select/index.ts +5 -2
  173. package/src/Select/index.web.ts +5 -2
  174. package/src/Select/types.ts +13 -7
  175. package/src/Skeleton/Skeleton.native.tsx +139 -0
  176. package/src/Skeleton/Skeleton.styles.tsx +59 -0
  177. package/src/Skeleton/Skeleton.web.tsx +112 -0
  178. package/src/Skeleton/index.native.ts +4 -0
  179. package/src/Skeleton/index.ts +5 -0
  180. package/src/Skeleton/index.web.ts +5 -0
  181. package/src/Skeleton/types.ts +75 -0
  182. package/src/Slider/Slider.native.tsx +248 -0
  183. package/src/Slider/Slider.styles.tsx +241 -0
  184. package/src/Slider/Slider.web.tsx +226 -0
  185. package/src/Slider/index.native.ts +3 -0
  186. package/src/Slider/index.ts +5 -0
  187. package/src/Slider/index.web.ts +5 -0
  188. package/src/Slider/types.ts +31 -0
  189. package/src/Switch/Switch.native.tsx +131 -0
  190. package/src/Switch/Switch.styles.tsx +169 -0
  191. package/src/Switch/Switch.web.tsx +121 -0
  192. package/src/Switch/index.native.ts +3 -0
  193. package/src/Switch/index.ts +5 -0
  194. package/src/Switch/index.web.ts +5 -0
  195. package/src/Switch/types.ts +21 -0
  196. package/src/TabBar/TabBar.native.tsx +142 -0
  197. package/src/TabBar/TabBar.styles.tsx +399 -0
  198. package/src/TabBar/TabBar.web.tsx +205 -0
  199. package/src/TabBar/index.native.tsx +3 -0
  200. package/src/TabBar/index.ts +3 -0
  201. package/src/TabBar/index.web.tsx +3 -0
  202. package/src/TabBar/types.ts +26 -0
  203. package/src/Table/Table.native.tsx +122 -0
  204. package/src/Table/Table.styles.tsx +283 -0
  205. package/src/Table/Table.web.tsx +112 -0
  206. package/src/Table/index.native.tsx +3 -0
  207. package/src/Table/index.ts +3 -0
  208. package/src/Table/index.web.tsx +3 -0
  209. package/src/Table/types.ts +28 -0
  210. package/src/Text/Text.native.tsx +12 -11
  211. package/src/Text/Text.styles.tsx +76 -64
  212. package/src/Text/Text.web.tsx +14 -9
  213. package/src/Text/index.ts +5 -5
  214. package/src/Text/index.web.ts +5 -3
  215. package/src/Text/types.ts +20 -13
  216. package/src/TextArea/TextArea.native.tsx +134 -0
  217. package/src/TextArea/TextArea.styles.tsx +175 -0
  218. package/src/TextArea/TextArea.web.tsx +156 -0
  219. package/src/TextArea/index.native.ts +3 -0
  220. package/src/TextArea/index.ts +3 -0
  221. package/src/TextArea/index.web.ts +3 -0
  222. package/src/TextArea/types.ts +30 -0
  223. package/src/Tooltip/Tooltip.native.tsx +165 -0
  224. package/src/Tooltip/Tooltip.styles.tsx +73 -0
  225. package/src/Tooltip/Tooltip.web.tsx +87 -0
  226. package/src/Tooltip/index.native.ts +3 -0
  227. package/src/Tooltip/index.ts +3 -0
  228. package/src/Tooltip/types.ts +18 -0
  229. package/src/Video/Video.native.tsx +105 -0
  230. package/src/Video/Video.styles.tsx +39 -0
  231. package/src/Video/Video.web.tsx +115 -0
  232. package/src/Video/index.native.ts +5 -0
  233. package/src/Video/index.ts +5 -0
  234. package/src/Video/types.ts +29 -0
  235. package/src/View/View.native.tsx +9 -14
  236. package/src/View/View.styles.tsx +101 -93
  237. package/src/View/View.web.tsx +16 -17
  238. package/src/View/index.ts +5 -5
  239. package/src/View/index.web.ts +5 -3
  240. package/src/View/types.ts +29 -21
  241. package/src/examples/AccordionExamples.tsx +126 -0
  242. package/src/examples/AlertExamples.tsx +280 -0
  243. package/src/examples/AvatarExamples.tsx +23 -23
  244. package/src/examples/BadgeExamples.tsx +109 -41
  245. package/src/examples/BreadcrumbExamples.tsx +312 -0
  246. package/src/examples/ButtonExamples.tsx +160 -33
  247. package/src/examples/CardExamples.tsx +40 -40
  248. package/src/examples/CheckboxExamples.tsx +12 -12
  249. package/src/examples/ChipExamples.tsx +197 -0
  250. package/src/examples/DialogExamples.tsx +22 -22
  251. package/src/examples/DividerExamples.tsx +49 -49
  252. package/src/examples/IconExamples.tsx +270 -54
  253. package/src/examples/ImageExamples.tsx +174 -0
  254. package/src/examples/InputExamples.tsx +75 -17
  255. package/src/examples/ListExamples.tsx +288 -0
  256. package/src/examples/MenuExamples.tsx +144 -0
  257. package/src/examples/PopoverExamples.tsx +69 -73
  258. package/src/examples/ProgressExamples.tsx +137 -0
  259. package/src/examples/RadioButtonExamples.tsx +161 -0
  260. package/src/examples/SVGImageExamples.tsx +19 -17
  261. package/src/examples/ScreenExamples.tsx +31 -31
  262. package/src/examples/SelectExamples.tsx +67 -67
  263. package/src/examples/SkeletonExamples.tsx +206 -0
  264. package/src/examples/SliderExamples.tsx +200 -0
  265. package/src/examples/SwitchExamples.tsx +182 -0
  266. package/src/examples/TabBarExamples.tsx +143 -0
  267. package/src/examples/TableExamples.tsx +280 -0
  268. package/src/examples/TextAreaExamples.tsx +173 -0
  269. package/src/examples/TextExamples.tsx +28 -32
  270. package/src/examples/ThemeExtensionExamples.tsx +10 -10
  271. package/src/examples/TooltipExamples.tsx +126 -0
  272. package/src/examples/VideoExamples.tsx +144 -0
  273. package/src/examples/ViewExamples.tsx +64 -56
  274. package/src/examples/index.ts +17 -3
  275. package/src/hooks/useMergeRefs.ts +16 -0
  276. package/src/hooks/useSmartPosition.native.ts +169 -0
  277. package/src/index.native.ts +80 -9
  278. package/src/index.ts +71 -1
  279. package/src/internal/BoundedModalContent.native.tsx +58 -0
  280. package/src/internal/PositionedPortal.tsx +254 -0
  281. package/src/internal/SafeAreaDebugOverlay.native.tsx +173 -0
  282. package/src/unistyles.d.ts +6 -0
  283. package/src/utils/buildSizeVariants.ts +16 -0
  284. package/src/utils/deepMerge.ts +43 -0
  285. package/src/utils/positionUtils.native.ts +280 -0
  286. package/src/utils/styleHelpers.ts +48 -0
  287. package/LLM-ACCESS-GUIDE.md +0 -143
  288. package/src/ActivityIndicator/README.md +0 -132
  289. package/src/Avatar/README.md +0 -139
  290. package/src/Badge/README.md +0 -170
  291. package/src/Button/Button.types.ts +0 -12
  292. package/src/Button/README.md +0 -262
  293. package/src/Card/README.md +0 -258
  294. package/src/Checkbox/README.md +0 -102
  295. package/src/Dialog/README.md +0 -210
  296. package/src/Divider/README.md +0 -108
  297. package/src/Icon/README.md +0 -81
  298. package/src/Input/README.md +0 -100
  299. package/src/SVGImage/README.md +0 -209
  300. package/src/Screen/README.md +0 -86
  301. package/src/Select/README.md +0 -166
  302. package/src/Text/README.md +0 -94
  303. package/src/View/README.md +0 -107
  304. package/src/examples/AllExamples.tsx +0 -88
  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
@@ -5,35 +5,35 @@ export const BadgeExamples = () => {
5
5
  return (
6
6
  <Screen background="primary" padding="lg">
7
7
  <View spacing="none">
8
- <Text size="large" weight="bold" align="center">
8
+ <Text size="lg" weight="bold" align="center">
9
9
  Badge Examples
10
10
  </Text>
11
11
 
12
12
  {/* Badge Variants */}
13
13
  <View spacing="md">
14
- <Text size="medium" weight="semibold">Variants</Text>
14
+ <Text size="md" weight="semibold">Variants</Text>
15
15
  <View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
16
- <Badge variant="filled" color="blue">
16
+ <Badge type="filled" color="blue">
17
17
  Filled
18
18
  </Badge>
19
- <Badge variant="outlined" color="blue">
19
+ <Badge type="outlined" color="blue">
20
20
  Outlined
21
21
  </Badge>
22
- <Badge variant="dot" color="blue" />
22
+ <Badge type="dot" color="blue" />
23
23
  </View>
24
24
  </View>
25
25
 
26
26
  {/* Badge Sizes */}
27
27
  <View spacing="md">
28
- <Text size="medium" weight="semibold">Sizes</Text>
28
+ <Text size="md" weight="semibold">Sizes</Text>
29
29
  <View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
30
- <Badge size="small" color="blue">
30
+ <Badge size="sm" color="blue">
31
31
  Small
32
32
  </Badge>
33
- <Badge size="medium" color="blue">
33
+ <Badge size="md" color="blue">
34
34
  Medium
35
35
  </Badge>
36
- <Badge size="large" color="blue">
36
+ <Badge size="lg" color="blue">
37
37
  Large
38
38
  </Badge>
39
39
  </View>
@@ -41,7 +41,7 @@ export const BadgeExamples = () => {
41
41
 
42
42
  {/* Badge Colors */}
43
43
  <View spacing="md">
44
- <Text size="medium" weight="semibold">Colors</Text>
44
+ <Text size="md" weight="semibold">Colors</Text>
45
45
  <View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
46
46
  <Badge color="blue">
47
47
  Blue
@@ -66,7 +66,7 @@ export const BadgeExamples = () => {
66
66
 
67
67
  {/* Badge Color Shades */}
68
68
  <View spacing="md">
69
- <Text size="medium" weight="semibold">Color Shades</Text>
69
+ <Text size="md" weight="semibold">Color Shades</Text>
70
70
  <View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
71
71
  <Badge color="blue.200">
72
72
  Blue 200
@@ -93,30 +93,30 @@ export const BadgeExamples = () => {
93
93
 
94
94
  {/* Dot Badges */}
95
95
  <View spacing="md">
96
- <Text size="medium" weight="semibold">Dot Badges</Text>
96
+ <Text size="md" weight="semibold">Dot Badges</Text>
97
97
  <View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
98
- <Badge variant="dot" color="blue" size="small" />
99
- <Badge variant="dot" color="green" size="medium" />
100
- <Badge variant="dot" color="red" size="large" />
101
- <Badge variant="dot" color="orange" size="medium" />
102
- <Badge variant="dot" color="gray" size="medium" />
98
+ <Badge type="dot" color="blue" size="sm" />
99
+ <Badge type="dot" color="green" size="md" />
100
+ <Badge type="dot" color="red" size="lg" />
101
+ <Badge type="dot" color="orange" size="md" />
102
+ <Badge type="dot" color="gray" size="md" />
103
103
  </View>
104
104
  </View>
105
105
 
106
106
  {/* Number Badges */}
107
107
  <View spacing="md">
108
- <Text size="medium" weight="semibold">Number Badges</Text>
108
+ <Text size="md" weight="semibold">Number Badges</Text>
109
109
  <View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
110
- <Badge color="red" size="small">
110
+ <Badge color="red" size="sm">
111
111
  1
112
112
  </Badge>
113
- <Badge color="red" size="medium">
113
+ <Badge color="red" size="md">
114
114
  5
115
115
  </Badge>
116
- <Badge color="red" size="large">
116
+ <Badge color="red" size="lg">
117
117
  99+
118
118
  </Badge>
119
- <Badge color="blue" size="medium">
119
+ <Badge color="blue" size="md">
120
120
  42
121
121
  </Badge>
122
122
  </View>
@@ -124,21 +124,21 @@ export const BadgeExamples = () => {
124
124
 
125
125
  {/* Status Badges */}
126
126
  <View spacing="md">
127
- <Text size="medium" weight="semibold">Status Badges</Text>
127
+ <Text size="md" weight="semibold">Status Badges</Text>
128
128
  <View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
129
- <Badge color="green" variant="filled">
129
+ <Badge color="green" type="filled">
130
130
  ACTIVE
131
131
  </Badge>
132
- <Badge color="orange" variant="filled">
132
+ <Badge color="orange" type="filled">
133
133
  PENDING
134
134
  </Badge>
135
- <Badge color="red" variant="filled">
135
+ <Badge color="red" type="filled">
136
136
  INACTIVE
137
137
  </Badge>
138
- <Badge color="gray" variant="outlined">
138
+ <Badge color="gray" type="outlined">
139
139
  DRAFT
140
140
  </Badge>
141
- <Badge color="blue" variant="outlined">
141
+ <Badge color="blue" type="outlined">
142
142
  REVIEW
143
143
  </Badge>
144
144
  </View>
@@ -146,54 +146,122 @@ export const BadgeExamples = () => {
146
146
 
147
147
  {/* Combined with Other Components */}
148
148
  <View spacing="md">
149
- <Text size="medium" weight="semibold">With Other Components</Text>
149
+ <Text size="md" weight="semibold">With Other Components</Text>
150
150
  <View spacing="sm">
151
151
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
152
152
  <Text>Notifications</Text>
153
- <Badge color="red" size="small">3</Badge>
153
+ <Badge color="red" size="sm">3</Badge>
154
154
  </View>
155
155
 
156
156
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
157
157
  <Text>Messages</Text>
158
- <Badge color="blue" size="small">12</Badge>
158
+ <Badge color="blue" size="sm">12</Badge>
159
159
  </View>
160
160
 
161
161
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
162
162
  <Text>Status</Text>
163
- <Badge color="green" variant="dot" />
164
- <Text size="small" color="secondary">Online</Text>
163
+ <Badge color="green" type="dot" />
164
+ <Text size="sm" color="secondary">Online</Text>
165
165
  </View>
166
166
 
167
167
  <View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
168
- <Button size="small" variant="outlined">
168
+ <Button size="sm" type="outlined">
169
169
  Inbox
170
170
  </Button>
171
- <Badge color="red" size="small">99+</Badge>
171
+ <Badge color="red" size="sm">99+</Badge>
172
172
  </View>
173
173
  </View>
174
174
  </View>
175
175
 
176
176
  {/* Category Badges */}
177
177
  <View spacing="md">
178
- <Text size="medium" weight="semibold">Category Badges</Text>
178
+ <Text size="md" weight="semibold">Category Badges</Text>
179
179
  <View style={{ flexDirection: 'row', gap: 8, flexWrap: 'wrap' }}>
180
- <Badge color="blue" variant="outlined">
180
+ <Badge color="blue" type="outlined">
181
181
  React
182
182
  </Badge>
183
- <Badge color="green" variant="outlined">
183
+ <Badge color="green" type="outlined">
184
184
  TypeScript
185
185
  </Badge>
186
- <Badge color="yellow" variant="outlined">
186
+ <Badge color="yellow" type="outlined">
187
187
  JavaScript
188
188
  </Badge>
189
- <Badge color="orange" variant="outlined">
189
+ <Badge color="orange" type="outlined">
190
190
  CSS
191
191
  </Badge>
192
- <Badge color="gray" variant="outlined">
192
+ <Badge color="gray" type="outlined">
193
193
  HTML
194
194
  </Badge>
195
195
  </View>
196
196
  </View>
197
+
198
+ {/* Badges with Icons */}
199
+ <View spacing="md">
200
+ <Text size="md" weight="semibold">Badges with Icons</Text>
201
+ <View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
202
+ <Badge color="blue" icon="information">
203
+ Info
204
+ </Badge>
205
+ <Badge color="green" icon="check-circle">
206
+ Success
207
+ </Badge>
208
+ <Badge color="red" icon="alert-circle">
209
+ Error
210
+ </Badge>
211
+ <Badge color="orange" icon="alert">
212
+ Warning
213
+ </Badge>
214
+ </View>
215
+ </View>
216
+
217
+ {/* Icon-only Badges */}
218
+ <View spacing="md">
219
+ <Text size="md" weight="semibold">Icon-only Badges</Text>
220
+ <View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
221
+ <Badge color="blue" icon="star" size="sm" />
222
+ <Badge color="green" icon="heart" size="md" />
223
+ <Badge color="red" icon="fire" size="lg" />
224
+ <Badge color="purple" icon="lightning-bolt" type="outlined" />
225
+ </View>
226
+ </View>
227
+
228
+ {/* Status Badges with Icons */}
229
+ <View spacing="md">
230
+ <Text size="md" weight="semibold">Status with Icons</Text>
231
+ <View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
232
+ <Badge color="green" icon="check">
233
+ VERIFIED
234
+ </Badge>
235
+ <Badge color="blue" icon="clock">
236
+ PENDING
237
+ </Badge>
238
+ <Badge color="red" icon="close">
239
+ REJECTED
240
+ </Badge>
241
+ <Badge color="gray" icon="email">
242
+ SENT
243
+ </Badge>
244
+ </View>
245
+ </View>
246
+
247
+ {/* Outlined Badges with Icons */}
248
+ <View spacing="md">
249
+ <Text size="md" weight="semibold">Outlined with Icons</Text>
250
+ <View style={{ flexDirection: 'row', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
251
+ <Badge color="blue" type="outlined" icon="download">
252
+ Download
253
+ </Badge>
254
+ <Badge color="green" type="outlined" icon="upload">
255
+ Upload
256
+ </Badge>
257
+ <Badge color="red" type="outlined" icon="delete">
258
+ Delete
259
+ </Badge>
260
+ <Badge color="purple" type="outlined" icon="share">
261
+ Share
262
+ </Badge>
263
+ </View>
264
+ </View>
197
265
  </View>
198
266
  </Screen>
199
267
  );
@@ -0,0 +1,312 @@
1
+ import React from 'react';
2
+ import { Screen, View , Text, Breadcrumb, Divider, Icon, BreadcrumbItem } from '../index';
3
+
4
+ export const BreadcrumbExamples = () => {
5
+ const basicItems: BreadcrumbItem[] = [
6
+ { label: 'Home', onPress: () => console.log('Home') },
7
+ { label: 'Products', onPress: () => console.log('Products') },
8
+ { label: 'Category', onPress: () => console.log('Category') },
9
+ { label: 'Item' },
10
+ ];
11
+
12
+ const withIconsItems: BreadcrumbItem[] = [
13
+ {
14
+ label: 'Home',
15
+ icon: <Icon name="home" size="sm" />,
16
+ onPress: () => console.log('Home'),
17
+ },
18
+ {
19
+ label: 'Documents',
20
+ icon: <Icon name="folder" size="sm" />,
21
+ onPress: () => console.log('Documents'),
22
+ },
23
+ {
24
+ label: 'Projects',
25
+ icon: <Icon name="folder-open" size="sm" />,
26
+ onPress: () => console.log('Projects'),
27
+ },
28
+ {
29
+ label: 'Current File',
30
+ icon: <Icon name="file-document" size="sm" />,
31
+ },
32
+ ];
33
+
34
+ const withIconNamesItems: BreadcrumbItem[] = [
35
+ {
36
+ label: 'Home',
37
+ icon: 'home',
38
+ onPress: () => console.log('Home'),
39
+ },
40
+ {
41
+ label: 'Documents',
42
+ icon: 'folder',
43
+ onPress: () => console.log('Documents'),
44
+ },
45
+ {
46
+ label: 'Projects',
47
+ icon: 'folder-open',
48
+ onPress: () => console.log('Projects'),
49
+ },
50
+ {
51
+ label: 'Current File',
52
+ icon: 'file-document',
53
+ },
54
+ ];
55
+
56
+ const longPathItems: BreadcrumbItem[] = [
57
+ { label: 'Home', onPress: () => console.log('Home') },
58
+ { label: 'Level 1', onPress: () => console.log('Level 1') },
59
+ { label: 'Level 2', onPress: () => console.log('Level 2') },
60
+ { label: 'Level 3', onPress: () => console.log('Level 3') },
61
+ { label: 'Level 4', onPress: () => console.log('Level 4') },
62
+ { label: 'Level 5', onPress: () => console.log('Level 5') },
63
+ { label: 'Current Page' },
64
+ ];
65
+
66
+ return (
67
+ <Screen background="primary" safeArea padding="lg">
68
+ <View spacing="xl" style={{ maxWidth: 800, width: '100%', marginHorizontal: 'auto' }}>
69
+ <Text size="xl" weight="bold">Breadcrumb Examples</Text>
70
+
71
+ <View spacing="md">
72
+ <Text size="lg" weight="semibold">Basic Breadcrumb</Text>
73
+ <Breadcrumb items={basicItems} />
74
+ </View>
75
+
76
+ <View spacing="md">
77
+ <Text size="lg" weight="semibold">With Icons (Components)</Text>
78
+ <Breadcrumb items={withIconsItems} />
79
+ <Text size="sm" color="secondary">Using Icon components</Text>
80
+ </View>
81
+
82
+ <View spacing="md">
83
+ <Text size="lg" weight="semibold">With Icons (Icon Names)</Text>
84
+ <Breadcrumb items={withIconNamesItems} />
85
+ <Text size="sm" color="secondary">Using icon name strings (recommended)</Text>
86
+ </View>
87
+
88
+ <View spacing="md">
89
+ <Text size="lg" weight="semibold">Custom Separator</Text>
90
+ <View spacing="sm">
91
+ <Breadcrumb items={basicItems} separator=">" />
92
+ <Breadcrumb items={basicItems} separator="•" />
93
+ <Breadcrumb items={basicItems} separator={<Icon name="chevron-right" size="sm" />} />
94
+ </View>
95
+ </View>
96
+
97
+ <View spacing="md">
98
+ <Text size="lg" weight="semibold">Sizes</Text>
99
+ <View spacing="sm">
100
+ <View spacing="xs">
101
+ <Text size="md" weight="semibold">Small</Text>
102
+ <Breadcrumb items={basicItems} size="sm" />
103
+ </View>
104
+ <View spacing="xs">
105
+ <Text size="md" weight="semibold">Medium (Default)</Text>
106
+ <Breadcrumb items={basicItems} size="md" />
107
+ </View>
108
+ <View spacing="xs">
109
+ <Text size="md" weight="semibold">Large</Text>
110
+ <Breadcrumb items={basicItems} size="lg" />
111
+ </View>
112
+ </View>
113
+ </View>
114
+
115
+ <View spacing="md">
116
+ <Text size="lg" weight="semibold">Intent Colors</Text>
117
+ <View spacing="sm">
118
+ <View spacing="xs">
119
+ <Text size="md" weight="semibold">Primary (Default)</Text>
120
+ <Breadcrumb items={basicItems} intent="primary" />
121
+ </View>
122
+ <View spacing="xs">
123
+ <Text size="md" weight="semibold">Neutral</Text>
124
+ <Breadcrumb items={basicItems} intent="neutral" />
125
+ </View>
126
+ </View>
127
+ </View>
128
+
129
+ <View spacing="md">
130
+ <Text size="lg" weight="semibold">Truncation</Text>
131
+ <View spacing="sm">
132
+ <View spacing="xs">
133
+ <Text size="sm" color="secondary">Full path (7 items):</Text>
134
+ <Breadcrumb items={longPathItems} />
135
+ </View>
136
+ <View spacing="xs">
137
+ <Text size="sm" color="secondary">Truncated to 4 items (shows first + last 3):</Text>
138
+ <Breadcrumb items={longPathItems} maxItems={4} />
139
+ </View>
140
+ <View spacing="xs">
141
+ <Text size="sm" color="secondary">Truncated to 3 items (shows first + last 2):</Text>
142
+ <Breadcrumb items={longPathItems} maxItems={3} />
143
+ </View>
144
+ </View>
145
+ </View>
146
+
147
+ <View spacing="md">
148
+ <Text size="lg" weight="semibold">With Disabled Items</Text>
149
+ <Breadcrumb
150
+ items={[
151
+ { label: 'Home', onPress: () => console.log('Home') },
152
+ { label: 'Disabled Level', onPress: () => console.log('Disabled'), disabled: true },
153
+ { label: 'Active Level', onPress: () => console.log('Active') },
154
+ { label: 'Current Page' },
155
+ ]}
156
+ />
157
+ </View>
158
+
159
+ <View spacing="md">
160
+ <Text size="lg" weight="semibold">Non-clickable Items</Text>
161
+ <Breadcrumb
162
+ items={[
163
+ { label: 'Home' },
164
+ { label: 'Products' },
165
+ { label: 'Category' },
166
+ { label: 'Item' },
167
+ ]}
168
+ />
169
+ <Text size="sm" color="secondary">None of these items are clickable</Text>
170
+ </View>
171
+
172
+ <View spacing="md">
173
+ <Text size="lg" weight="semibold">Mixed Clickable & Non-clickable</Text>
174
+ <Breadcrumb
175
+ items={[
176
+ { label: 'Home', onPress: () => console.log('Home') },
177
+ { label: 'Static Section' },
178
+ { label: 'Products', onPress: () => console.log('Products') },
179
+ { label: 'Current Product' },
180
+ ]}
181
+ />
182
+ </View>
183
+
184
+ <View spacing="md">
185
+ <Text size="lg" weight="semibold">File System Example</Text>
186
+ <Breadcrumb
187
+ items={[
188
+ {
189
+ label: 'Root',
190
+ icon: <Icon name="harddisk" size="sm" />,
191
+ onPress: () => console.log('Root'),
192
+ },
193
+ {
194
+ label: 'Users',
195
+ icon: <Icon name="account-group" size="sm" />,
196
+ onPress: () => console.log('Users'),
197
+ },
198
+ {
199
+ label: 'Documents',
200
+ icon: <Icon name="folder" size="sm" />,
201
+ onPress: () => console.log('Documents'),
202
+ },
203
+ {
204
+ label: 'project-files',
205
+ icon: <Icon name="folder-open" size="sm" />,
206
+ onPress: () => console.log('project-files'),
207
+ },
208
+ {
209
+ label: 'index.tsx',
210
+ icon: <Icon name="file-document" size="sm" />,
211
+ },
212
+ ]}
213
+ separator="/"
214
+ />
215
+ </View>
216
+
217
+ <View spacing="md">
218
+ <Text size="lg" weight="semibold">E-commerce Example</Text>
219
+ <Breadcrumb
220
+ items={[
221
+ { label: 'Shop', onPress: () => console.log('Shop') },
222
+ { label: 'Electronics', onPress: () => console.log('Electronics') },
223
+ { label: 'Computers', onPress: () => console.log('Computers') },
224
+ { label: 'Laptops', onPress: () => console.log('Laptops') },
225
+ { label: 'Gaming Laptops' },
226
+ ]}
227
+ size="sm"
228
+ />
229
+ </View>
230
+
231
+ <View spacing="md">
232
+ <Text size="lg" weight="semibold">Responsive Breadcrumbs</Text>
233
+ <Text size="sm" color="secondary">
234
+ Automatically collapses middle items into a dropdown menu on narrow screens
235
+ </Text>
236
+ <View spacing="sm">
237
+ <View spacing="xs">
238
+ <Text size="md" weight="semibold">Default (minVisibleItems: 3)</Text>
239
+ <Text size="sm" color="secondary">Shows first item + dropdown + last item</Text>
240
+ <Breadcrumb
241
+ items={longPathItems}
242
+ responsive
243
+ />
244
+ </View>
245
+ <View spacing="xs">
246
+ <Text size="md" weight="semibold">More Visible Items (minVisibleItems: 4)</Text>
247
+ <Text size="sm" color="secondary">Shows first item + dropdown + last 2 items</Text>
248
+ <Breadcrumb
249
+ items={longPathItems}
250
+ responsive
251
+ minVisibleItems={4}
252
+ />
253
+ </View>
254
+ <View spacing="xs">
255
+ <Text size="md" weight="semibold">Fewer Items (minVisibleItems: 2)</Text>
256
+ <Text size="sm" color="secondary">Shows first item + dropdown (all items collapsed)</Text>
257
+ <Breadcrumb
258
+ items={longPathItems}
259
+ responsive
260
+ minVisibleItems={2}
261
+ />
262
+ </View>
263
+ </View>
264
+ </View>
265
+
266
+ <View spacing="md">
267
+ <Text size="lg" weight="semibold">Responsive with Icons</Text>
268
+ <Breadcrumb
269
+ items={[
270
+ {
271
+ label: 'Root',
272
+ icon: 'harddisk',
273
+ onPress: () => console.log('Root'),
274
+ },
275
+ {
276
+ label: 'Users',
277
+ icon: 'account-group',
278
+ onPress: () => console.log('Users'),
279
+ },
280
+ {
281
+ label: 'Documents',
282
+ icon: 'folder',
283
+ onPress: () => console.log('Documents'),
284
+ },
285
+ {
286
+ label: 'Projects',
287
+ icon: 'folder',
288
+ onPress: () => console.log('Projects'),
289
+ },
290
+ {
291
+ label: 'Work',
292
+ icon: 'folder',
293
+ onPress: () => console.log('Work'),
294
+ },
295
+ {
296
+ label: 'project-files',
297
+ icon: 'folder-open',
298
+ onPress: () => console.log('project-files'),
299
+ },
300
+ {
301
+ label: 'index.tsx',
302
+ icon: 'file-document',
303
+ },
304
+ ]}
305
+ responsive
306
+ separator="/"
307
+ />
308
+ </View>
309
+ </View>
310
+ </Screen>
311
+ );
312
+ };