@cdx-ui/components 0.2.3 → 0.2.5

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 (296) hide show
  1. package/AGENTS.md +24 -0
  2. package/README.md +2 -0
  3. package/coverage.svg +1 -1
  4. package/docs/components/accordion/content.md +538 -0
  5. package/docs/components/alert/content.md +203 -0
  6. package/docs/components/alert-dialog/content.md +319 -0
  7. package/docs/components/avatar/content.md +368 -0
  8. package/docs/components/avatar/design.md +202 -0
  9. package/docs/components/badge/content.md +225 -0
  10. package/docs/components/bottom-sheet/content.md +353 -0
  11. package/docs/components/bottom-sheet/design.md +249 -0
  12. package/docs/components/box/content.md +141 -0
  13. package/docs/components/breadcrumbs/content.md +169 -0
  14. package/docs/components/button/content.md +398 -0
  15. package/docs/components/button/design.md +258 -0
  16. package/docs/components/calendar/content.md +137 -0
  17. package/docs/components/card/content.md +283 -0
  18. package/docs/components/carousel/content.md +417 -0
  19. package/docs/components/checkbox/content.md +236 -0
  20. package/docs/components/checkbox/design.md +214 -0
  21. package/docs/components/chip/content.md +439 -0
  22. package/docs/components/chip/design.md +418 -0
  23. package/docs/components/color-area/content.md +84 -0
  24. package/docs/components/color-field/content.md +132 -0
  25. package/docs/components/color-picker/content.md +209 -0
  26. package/docs/components/color-slider/content.md +118 -0
  27. package/docs/components/color-swatch/content.md +62 -0
  28. package/docs/components/color-swatch-picker/content.md +124 -0
  29. package/docs/components/content.md +98 -0
  30. package/docs/components/currency-input/content.md +205 -0
  31. package/docs/components/data-grid/content.md +521 -0
  32. package/docs/components/date-field/content.md +147 -0
  33. package/docs/components/date-picker/content.md +360 -0
  34. package/docs/components/date-range-picker/content.md +301 -0
  35. package/docs/components/date-time-field/content.md +157 -0
  36. package/docs/components/date-time-list/content.md +105 -0
  37. package/docs/components/date-time-picker/content.md +272 -0
  38. package/docs/components/dialog/content.md +436 -0
  39. package/docs/components/dialog/design.md +192 -0
  40. package/docs/components/divider/content.md +112 -0
  41. package/docs/components/drawer/content.md +428 -0
  42. package/docs/components/field/content.md +277 -0
  43. package/docs/components/form/content.md +62 -0
  44. package/docs/components/full-screen-dialog/content.md +881 -0
  45. package/docs/components/heading/content.md +55 -0
  46. package/docs/components/icon/content.md +190 -0
  47. package/docs/components/icon-button/content.md +200 -0
  48. package/docs/components/icon-button/design.md +165 -0
  49. package/docs/components/image/content.md +104 -0
  50. package/docs/components/input/content.md +346 -0
  51. package/docs/components/input/design.md +389 -0
  52. package/docs/components/insurance-disclosure/content.md +103 -0
  53. package/docs/components/link/content.md +180 -0
  54. package/docs/components/link/design.md +160 -0
  55. package/docs/components/list-item/content.md +695 -0
  56. package/docs/components/menu/content.md +1254 -0
  57. package/docs/components/month-calendar/content.md +84 -0
  58. package/docs/components/month-picker/content.md +273 -0
  59. package/docs/components/otp-input/content.md +327 -0
  60. package/docs/components/progress-bar/content.md +87 -0
  61. package/docs/components/progress-circle/content.md +176 -0
  62. package/docs/components/progress-segmented/content.md +119 -0
  63. package/docs/components/quick-action-button/content.md +154 -0
  64. package/docs/components/quick-action-button/design.md +170 -0
  65. package/docs/components/radio/content.md +224 -0
  66. package/docs/components/range-calendar/content.md +123 -0
  67. package/docs/components/reorderable-list/content.md +311 -0
  68. package/docs/components/scoped-theme/content.md +47 -0
  69. package/docs/components/scroll-shadow/content.md +693 -0
  70. package/docs/components/select/content.md +473 -0
  71. package/docs/components/select/design.md +301 -0
  72. package/docs/components/skeleton/content.md +104 -0
  73. package/docs/components/slider/content.md +423 -0
  74. package/docs/components/stack/content.md +161 -0
  75. package/docs/components/switch/content.md +150 -0
  76. package/docs/components/switch/design.md +208 -0
  77. package/docs/components/table/content.md +548 -0
  78. package/docs/components/table-pagination/content.md +177 -0
  79. package/docs/components/tabs/content.md +297 -0
  80. package/docs/components/text/content.md +142 -0
  81. package/docs/components/textarea/content.md +222 -0
  82. package/docs/components/tile/content.md +702 -0
  83. package/docs/components/toast/content.md +456 -0
  84. package/docs/components/toggle-button/content.md +505 -0
  85. package/docs/components/tooltip/content.md +350 -0
  86. package/docs/components/virtualized-list/content.md +250 -0
  87. package/docs/foundations/content.md +9 -0
  88. package/docs/foundations/expressions/icons/content.md +19 -0
  89. package/docs/foundations/styles/tokens/all-tokens/content.md +192 -0
  90. package/docs/foundations/styles/tokens/what-are-tokens/content.md +33 -0
  91. package/docs/foundations/styles/tokens/what-are-tokens/design.md +33 -0
  92. package/docs/getting-started/content.md +4 -0
  93. package/docs/getting-started/designers/content.md +13 -0
  94. package/docs/getting-started/designers/design.md +13 -0
  95. package/docs/getting-started/developers/accessibility/content.md +31 -0
  96. package/docs/getting-started/developers/content.md +612 -0
  97. package/docs/getting-started/developers/styling/content.md +195 -0
  98. package/docs/llms.txt +195 -0
  99. package/docs/patterns/account-management/content.md +75 -0
  100. package/docs/patterns/authentication/content.md +50 -0
  101. package/docs/patterns/content.md +10 -0
  102. package/docs/patterns/dashboard/content.md +34 -0
  103. package/docs/patterns/empty-states/content.md +32 -0
  104. package/docs/patterns/forms/content.md +108 -0
  105. package/docs/patterns/onboarding/content.md +69 -0
  106. package/docs/patterns/payments/content.md +35 -0
  107. package/docs/patterns/settings/content.md +72 -0
  108. package/docs/resources/content.md +9 -0
  109. package/docs/resources/figma-libraries/content.md +42 -0
  110. package/docs/resources/release-notes/0.0.1-beta.118/content.md +27 -0
  111. package/docs/resources/release-notes/0.0.1-beta.122/content.md +21 -0
  112. package/docs/resources/release-notes/0.0.1-beta.124/content.md +16 -0
  113. package/docs/resources/release-notes/0.0.1-beta.126/content.md +10 -0
  114. package/docs/resources/release-notes/0.0.1-beta.127/content.md +14 -0
  115. package/docs/resources/release-notes/0.0.1-beta.128/content.md +9 -0
  116. package/docs/resources/release-notes/0.0.1-beta.129/content.md +18 -0
  117. package/docs/resources/release-notes/0.0.1-beta.130/content.md +18 -0
  118. package/docs/resources/release-notes/0.0.1-beta.133/content.md +7 -0
  119. package/docs/resources/release-notes/0.0.1-beta.134/content.md +17 -0
  120. package/docs/resources/release-notes/0.0.1-beta.136/content.md +7 -0
  121. package/docs/resources/release-notes/0.0.1-beta.137/content.md +10 -0
  122. package/docs/resources/release-notes/0.0.1-beta.138/content.md +7 -0
  123. package/docs/resources/release-notes/0.0.1-beta.139/content.md +13 -0
  124. package/docs/resources/release-notes/0.0.1-beta.140/content.md +26 -0
  125. package/docs/resources/release-notes/0.0.1-beta.141/content.md +63 -0
  126. package/docs/resources/release-notes/0.0.1-beta.142/content.md +7 -0
  127. package/docs/resources/release-notes/0.0.1-beta.143/content.md +12 -0
  128. package/docs/resources/release-notes/0.0.1-beta.144/content.md +7 -0
  129. package/docs/resources/release-notes/0.0.1-beta.145/content.md +7 -0
  130. package/docs/resources/release-notes/0.0.1-beta.147/content.md +10 -0
  131. package/docs/resources/release-notes/0.0.1-beta.149/content.md +10 -0
  132. package/docs/resources/release-notes/0.0.1-beta.150/content.md +13 -0
  133. package/docs/resources/release-notes/0.0.1-beta.152/content.md +7 -0
  134. package/docs/resources/release-notes/0.0.1-beta.154/content.md +15 -0
  135. package/docs/resources/release-notes/0.0.1-beta.156/content.md +7 -0
  136. package/docs/resources/release-notes/0.0.1-beta.158/content.md +9 -0
  137. package/docs/resources/release-notes/0.0.1-beta.159/content.md +11 -0
  138. package/docs/resources/release-notes/0.0.1-beta.160/content.md +7 -0
  139. package/docs/resources/release-notes/0.0.1-beta.161/content.md +7 -0
  140. package/docs/resources/release-notes/0.0.1-beta.163/content.md +7 -0
  141. package/docs/resources/release-notes/0.0.1-beta.164/content.md +9 -0
  142. package/docs/resources/release-notes/0.0.1-beta.166/content.md +17 -0
  143. package/docs/resources/release-notes/0.0.1-beta.167/content.md +7 -0
  144. package/docs/resources/release-notes/0.0.1-beta.168/content.md +7 -0
  145. package/docs/resources/release-notes/0.0.1-beta.169/content.md +7 -0
  146. package/docs/resources/release-notes/0.0.1-beta.171/content.md +16 -0
  147. package/docs/resources/release-notes/0.0.1-beta.172/content.md +24 -0
  148. package/docs/resources/release-notes/0.0.1-beta.173/content.md +15 -0
  149. package/docs/resources/release-notes/0.0.1-beta.174/content.md +7 -0
  150. package/docs/resources/release-notes/0.0.1-beta.176/content.md +32 -0
  151. package/docs/resources/release-notes/0.0.1-beta.179/content.md +11 -0
  152. package/docs/resources/release-notes/0.0.1-beta.182/content.md +13 -0
  153. package/docs/resources/release-notes/0.0.1-beta.185/content.md +7 -0
  154. package/docs/resources/release-notes/0.0.1-beta.187/content.md +27 -0
  155. package/docs/resources/release-notes/0.1.1/content.md +23 -0
  156. package/docs/resources/release-notes/0.1.2/content.md +7 -0
  157. package/docs/resources/release-notes/0.1.4/content.md +19 -0
  158. package/docs/resources/release-notes/0.1.5/content.md +7 -0
  159. package/docs/resources/release-notes/0.1.6/content.md +7 -0
  160. package/docs/resources/release-notes/0.2.0/content.md +31 -0
  161. package/docs/resources/release-notes/0.2.1/content.md +17 -0
  162. package/docs/resources/release-notes/0.2.2/content.md +11 -0
  163. package/docs/resources/release-notes/0.2.3/content.md +15 -0
  164. package/docs/resources/release-notes/0.2.4/content.md +17 -0
  165. package/docs/resources/release-notes/content.md +65 -0
  166. package/lib/commonjs/components/Box/Box.js +9 -1
  167. package/lib/commonjs/components/Box/Box.js.map +1 -1
  168. package/lib/commonjs/components/Breadcrumbs/index.js +28 -3
  169. package/lib/commonjs/components/Breadcrumbs/index.js.map +1 -1
  170. package/lib/commonjs/components/Breadcrumbs/styles.js +27 -0
  171. package/lib/commonjs/components/Breadcrumbs/styles.js.map +1 -1
  172. package/lib/commonjs/components/DateTimeList/index.js +11 -26
  173. package/lib/commonjs/components/DateTimeList/index.js.map +1 -1
  174. package/lib/commonjs/components/DateTimeList/styles.js +2 -12
  175. package/lib/commonjs/components/DateTimeList/styles.js.map +1 -1
  176. package/lib/commonjs/components/ListItem/index.js.map +1 -1
  177. package/lib/commonjs/components/ListItem/styles.js +2 -1
  178. package/lib/commonjs/components/ListItem/styles.js.map +1 -1
  179. package/lib/commonjs/components/Menu/index.js +11 -5
  180. package/lib/commonjs/components/Menu/index.js.map +1 -1
  181. package/lib/commonjs/components/ScrollShadow/gradient.js +29 -0
  182. package/lib/commonjs/components/ScrollShadow/gradient.js.map +1 -0
  183. package/lib/commonjs/components/ScrollShadow/index.js +171 -44
  184. package/lib/commonjs/components/ScrollShadow/index.js.map +1 -1
  185. package/lib/commonjs/components/ScrollShadow/styles.js +58 -14
  186. package/lib/commonjs/components/ScrollShadow/styles.js.map +1 -1
  187. package/lib/commonjs/components/ScrollShadow/useComposedScrollHandler.js +63 -0
  188. package/lib/commonjs/components/ScrollShadow/useComposedScrollHandler.js.map +1 -0
  189. package/lib/commonjs/components/ScrollShadow/useScrollShadow.js +48 -8
  190. package/lib/commonjs/components/ScrollShadow/useScrollShadow.js.map +1 -1
  191. package/lib/commonjs/components/Stack/HStack.js +6 -2
  192. package/lib/commonjs/components/Stack/HStack.js.map +1 -1
  193. package/lib/commonjs/components/Stack/VStack.js +6 -2
  194. package/lib/commonjs/components/Stack/VStack.js.map +1 -1
  195. package/lib/commonjs/components/Tabs/index.js +16 -23
  196. package/lib/commonjs/components/Tabs/index.js.map +1 -1
  197. package/lib/commonjs/components/Tabs/styles.js +1 -10
  198. package/lib/commonjs/components/Tabs/styles.js.map +1 -1
  199. package/lib/commonjs/figma/ListItem.SectionHeader.figma.js +20 -5
  200. package/lib/commonjs/figma/ListItem.SectionHeader.figma.js.map +1 -1
  201. package/lib/commonjs/index.js +10 -10
  202. package/lib/commonjs/index.js.map +1 -1
  203. package/lib/module/components/Box/Box.js +9 -1
  204. package/lib/module/components/Box/Box.js.map +1 -1
  205. package/lib/module/components/Breadcrumbs/index.js +29 -4
  206. package/lib/module/components/Breadcrumbs/index.js.map +1 -1
  207. package/lib/module/components/Breadcrumbs/styles.js +26 -0
  208. package/lib/module/components/Breadcrumbs/styles.js.map +1 -1
  209. package/lib/module/components/DateTimeList/index.js +12 -27
  210. package/lib/module/components/DateTimeList/index.js.map +1 -1
  211. package/lib/module/components/DateTimeList/styles.js +1 -11
  212. package/lib/module/components/DateTimeList/styles.js.map +1 -1
  213. package/lib/module/components/ListItem/index.js.map +1 -1
  214. package/lib/module/components/ListItem/styles.js +2 -1
  215. package/lib/module/components/ListItem/styles.js.map +1 -1
  216. package/lib/module/components/Menu/index.js +11 -5
  217. package/lib/module/components/Menu/index.js.map +1 -1
  218. package/lib/module/components/ScrollShadow/gradient.js +24 -0
  219. package/lib/module/components/ScrollShadow/gradient.js.map +1 -0
  220. package/lib/module/components/ScrollShadow/index.js +170 -48
  221. package/lib/module/components/ScrollShadow/index.js.map +1 -1
  222. package/lib/module/components/ScrollShadow/styles.js +57 -13
  223. package/lib/module/components/ScrollShadow/styles.js.map +1 -1
  224. package/lib/module/components/ScrollShadow/useComposedScrollHandler.js +57 -0
  225. package/lib/module/components/ScrollShadow/useComposedScrollHandler.js.map +1 -0
  226. package/lib/module/components/ScrollShadow/useScrollShadow.js +46 -8
  227. package/lib/module/components/ScrollShadow/useScrollShadow.js.map +1 -1
  228. package/lib/module/components/Stack/HStack.js +6 -2
  229. package/lib/module/components/Stack/HStack.js.map +1 -1
  230. package/lib/module/components/Stack/VStack.js +6 -2
  231. package/lib/module/components/Stack/VStack.js.map +1 -1
  232. package/lib/module/components/Tabs/index.js +17 -24
  233. package/lib/module/components/Tabs/index.js.map +1 -1
  234. package/lib/module/components/Tabs/styles.js +0 -9
  235. package/lib/module/components/Tabs/styles.js.map +1 -1
  236. package/lib/module/figma/ListItem.SectionHeader.figma.js +20 -5
  237. package/lib/module/figma/ListItem.SectionHeader.figma.js.map +1 -1
  238. package/lib/module/index.js +6 -1
  239. package/lib/module/index.js.map +1 -1
  240. package/lib/typescript/animation/hooks/usePopupDialogContentAnimation.d.ts +2 -2
  241. package/lib/typescript/animation/hooks/usePopupOverlayAnimation.d.ts +2 -2
  242. package/lib/typescript/components/Box/Box.d.ts +4 -0
  243. package/lib/typescript/components/Box/Box.d.ts.map +1 -1
  244. package/lib/typescript/components/Breadcrumbs/index.d.ts +3 -1
  245. package/lib/typescript/components/Breadcrumbs/index.d.ts.map +1 -1
  246. package/lib/typescript/components/Breadcrumbs/styles.d.ts +2 -0
  247. package/lib/typescript/components/Breadcrumbs/styles.d.ts.map +1 -1
  248. package/lib/typescript/components/DateTimeList/index.d.ts.map +1 -1
  249. package/lib/typescript/components/DateTimeList/styles.d.ts +1 -4
  250. package/lib/typescript/components/DateTimeList/styles.d.ts.map +1 -1
  251. package/lib/typescript/components/ListItem/index.d.ts +5 -4
  252. package/lib/typescript/components/ListItem/index.d.ts.map +1 -1
  253. package/lib/typescript/components/ListItem/styles.d.ts +1 -1
  254. package/lib/typescript/components/ListItem/styles.d.ts.map +1 -1
  255. package/lib/typescript/components/Menu/index.d.ts.map +1 -1
  256. package/lib/typescript/components/ScrollShadow/gradient.d.ts +7 -0
  257. package/lib/typescript/components/ScrollShadow/gradient.d.ts.map +1 -0
  258. package/lib/typescript/components/ScrollShadow/index.d.ts +57 -15
  259. package/lib/typescript/components/ScrollShadow/index.d.ts.map +1 -1
  260. package/lib/typescript/components/ScrollShadow/styles.d.ts +8 -2
  261. package/lib/typescript/components/ScrollShadow/styles.d.ts.map +1 -1
  262. package/lib/typescript/components/ScrollShadow/useComposedScrollHandler.d.ts +13 -0
  263. package/lib/typescript/components/ScrollShadow/useComposedScrollHandler.d.ts.map +1 -0
  264. package/lib/typescript/components/ScrollShadow/useScrollShadow.d.ts +15 -2
  265. package/lib/typescript/components/ScrollShadow/useScrollShadow.d.ts.map +1 -1
  266. package/lib/typescript/components/Stack/HStack.d.ts +3 -2
  267. package/lib/typescript/components/Stack/HStack.d.ts.map +1 -1
  268. package/lib/typescript/components/Stack/VStack.d.ts +3 -2
  269. package/lib/typescript/components/Stack/VStack.d.ts.map +1 -1
  270. package/lib/typescript/components/Tabs/index.d.ts.map +1 -1
  271. package/lib/typescript/components/Tabs/styles.d.ts +0 -7
  272. package/lib/typescript/components/Tabs/styles.d.ts.map +1 -1
  273. package/lib/typescript/components/Toast/animation.d.ts +3 -3
  274. package/lib/typescript/components/Toast/animation.d.ts.map +1 -1
  275. package/lib/typescript/figma/ListItem.SectionHeader.figma.d.ts.map +1 -1
  276. package/lib/typescript/index.d.ts +6 -1
  277. package/lib/typescript/index.d.ts.map +1 -1
  278. package/package.json +11 -9
  279. package/src/components/Box/Box.tsx +18 -4
  280. package/src/components/Breadcrumbs/index.tsx +28 -4
  281. package/src/components/Breadcrumbs/styles.ts +30 -0
  282. package/src/components/DateTimeList/index.tsx +13 -26
  283. package/src/components/DateTimeList/styles.ts +1 -10
  284. package/src/components/ListItem/index.tsx +5 -4
  285. package/src/components/ListItem/styles.ts +1 -0
  286. package/src/components/Menu/index.tsx +11 -8
  287. package/src/components/ScrollShadow/gradient.ts +48 -0
  288. package/src/components/ScrollShadow/index.tsx +300 -69
  289. package/src/components/ScrollShadow/styles.ts +45 -28
  290. package/src/components/ScrollShadow/useComposedScrollHandler.ts +58 -0
  291. package/src/components/ScrollShadow/useScrollShadow.ts +72 -10
  292. package/src/components/Stack/HStack.tsx +8 -4
  293. package/src/components/Stack/VStack.tsx +8 -4
  294. package/src/components/Tabs/index.tsx +25 -35
  295. package/src/components/Tabs/styles.ts +0 -9
  296. package/src/index.ts +8 -1
@@ -0,0 +1,209 @@
1
+ # Color Picker (https://design.candescent.com/docs/components/color-picker)
2
+
3
+ Resources: [Storybook](https://victorious-wave-0daadf00f.6.azurestaticapps.net/?path=/story/inputs-colorpicker--default)
4
+
5
+ `ColorPicker` coordinates color controls that consumers compose inside its popover.
6
+
7
+ ```tsx
8
+ import {
9
+ ColorArea,
10
+ ColorField,
11
+ ColorPicker,
12
+ ColorSlider,
13
+ ColorSwatch,
14
+ ColorSwatchPicker,
15
+ HStack,
16
+ Select,
17
+ Text,
18
+ parseColor,
19
+ } from '@cdx-ui/components';
20
+ ```
21
+
22
+ ## Basic
23
+
24
+ Compose the area, hue slider, format `Select`, fields, and optional preset picker for the workflow your product needs.
25
+
26
+ ```tsx
27
+ import { useState } from 'react';
28
+ import {
29
+ ColorArea,
30
+ ColorField,
31
+ ColorPicker,
32
+ ColorSlider,
33
+ ColorSwatch,
34
+ ColorSwatchPicker,
35
+ HStack,
36
+ Select,
37
+ Text,
38
+ parseColor,
39
+ type Color,
40
+ } from '@cdx-ui/components';
41
+
42
+ type ColorFormat = 'hex' | 'rgb' | 'hsl';
43
+
44
+ const formatItems = [
45
+ { value: 'hex', label: 'Hex' },
46
+ { value: 'rgb', label: 'RGB' },
47
+ { value: 'hsl', label: 'HSL' },
48
+ ];
49
+
50
+ function requiredColor(value: string): Color {
51
+ const color = parseColor(value);
52
+ if (!color) {
53
+ throw new Error(`Expected ${value} to parse`);
54
+ }
55
+ return color;
56
+ }
57
+
58
+ const initialColor = requiredColor('#2F6FED');
59
+ const presets = ['#2F6FED', '#7C3AED', '#DB2777', '#DC2626', '#D97706', '#059669'].map(
60
+ requiredColor,
61
+ );
62
+
63
+ export default function ColorPickerBasicDemo() {
64
+ const [value, setValue] = useState(initialColor);
65
+ const [format, setFormat] = useState<ColorFormat>('hex');
66
+
67
+ return (
68
+ <ColorPicker value={value} onValueChange={setValue} className="w-full max-w-sm">
69
+ <ColorPicker.Trigger accessibilityLabel="Choose brand color">
70
+ <ColorSwatch />
71
+ <Text>{value.toString('hex')}</Text>
72
+ </ColorPicker.Trigger>
73
+ <ColorPicker.Popover>
74
+ <ColorArea accessibilityLabel="Brand color">
75
+ <ColorArea.Thumb />
76
+ </ColorArea>
77
+ <ColorSlider colorSpace="hsb" channel="hue" accessibilityLabel="Hue">
78
+ <ColorSlider.Output />
79
+ <ColorSlider.Rail>
80
+ <ColorSlider.Thumb accessibilityLabel="Hue" />
81
+ </ColorSlider.Rail>
82
+ </ColorSlider>
83
+ <Select
84
+ items={formatItems}
85
+ value={format}
86
+ onValueChange={(nextFormat) => setFormat(nextFormat as ColorFormat)}
87
+ accessibilityLabel="Color format"
88
+ >
89
+ <Select.Trigger>
90
+ <Select.Value />
91
+ </Select.Trigger>
92
+ <Select.Content>
93
+ {formatItems.map((item) => (
94
+ <Select.Item key={item.value} value={item.value}>
95
+ <Select.ItemLabel>{item.label}</Select.ItemLabel>
96
+ </Select.Item>
97
+ ))}
98
+ </Select.Content>
99
+ </Select>
100
+ {format === 'hex' ? (
101
+ <ColorField>
102
+ <ColorField.Group>
103
+ <ColorField.Slot position="leading">
104
+ <ColorSwatch size="xs" />
105
+ </ColorField.Slot>
106
+ <ColorField.Input accessibilityLabel="Hex color" />
107
+ </ColorField.Group>
108
+ </ColorField>
109
+ ) : format === 'rgb' ? (
110
+ <HStack className="w-full min-w-0" space="sm">
111
+ {(['red', 'green', 'blue'] as const).map((channel) => (
112
+ <ColorField
113
+ key={channel}
114
+ className="min-w-0 flex-1"
115
+ colorSpace="rgb"
116
+ channel={channel}
117
+ >
118
+ <ColorField.Group>
119
+ <ColorField.Input accessibilityLabel={channel} />
120
+ </ColorField.Group>
121
+ </ColorField>
122
+ ))}
123
+ </HStack>
124
+ ) : (
125
+ <HStack className="w-full min-w-0" space="sm">
126
+ {(['hue', 'saturation', 'lightness'] as const).map((channel) => (
127
+ <ColorField
128
+ key={channel}
129
+ className="min-w-0 flex-1"
130
+ colorSpace="hsl"
131
+ channel={channel}
132
+ >
133
+ <ColorField.Group>
134
+ <ColorField.Input accessibilityLabel={channel} />
135
+ </ColorField.Group>
136
+ </ColorField>
137
+ ))}
138
+ </HStack>
139
+ )}
140
+ <ColorSwatchPicker accessibilityLabel="Preset colors">
141
+ {presets.map((preset) => (
142
+ <ColorSwatchPicker.Item key={preset.toString('hex')} color={preset}>
143
+ <ColorSwatchPicker.Swatch />
144
+ <ColorSwatchPicker.Indicator />
145
+ </ColorSwatchPicker.Item>
146
+ ))}
147
+ </ColorSwatchPicker>
148
+ </ColorPicker.Popover>
149
+ </ColorPicker>
150
+ );
151
+ }
152
+ ```
153
+
154
+ ## API
155
+
156
+ ### ColorPicker
157
+
158
+ Owns the shared color and popover open state.
159
+
160
+ | Prop | Type | Default | Description |
161
+ | --- | --- | --- | --- |
162
+ | `className?` | `string` | — | — |
163
+ | `children?` | `ReactNode` | — | — |
164
+ | `asChild?` | `boolean` | — | — |
165
+ | `value?` | `Color` | — | Current controlled color. |
166
+ | `defaultValue?` | `Color` | — | Initial color for uncontrolled usage. |
167
+ | `onValueChange?` | `((value: Color) => void)` | — | Called when a nested color control changes the current color. |
168
+ | `isOpen?` | `boolean` | — | Controlled popover open state. |
169
+ | `defaultOpen?` | `boolean` | ``false`` | Initial popover open state for uncontrolled usage. |
170
+ | `onOpenChange?` | `((open: boolean) => void)` | — | Called when the popover open state changes. |
171
+
172
+ Inherits all [`ViewProps`](https://reactnative.dev/docs/view#props).
173
+
174
+ ## Sub-components
175
+
176
+ ### ColorPicker.Trigger
177
+
178
+ Toggles the popover and announces its expanded state. Include text with a swatch so color is not the only cue.
179
+
180
+ | Prop | Type | Default | Description |
181
+ | --- | --- | --- | --- |
182
+ | `className?` | `string` | — | — |
183
+ | `children?` | `ReactNode` | — | — |
184
+ | `isDisabled?` | `boolean` | — | If true, the button will be disabled. |
185
+ | `asChild?` | `boolean` | — | — |
186
+
187
+ Inherits all [`PressableProps`](https://reactnative.dev/docs/pressable#props).
188
+
189
+ ### ColorPicker.Popover
190
+
191
+ Presents consumer-composed color controls in the shared picker popover surface.
192
+
193
+ | Prop | Type | Default | Description |
194
+ | --- | --- | --- | --- |
195
+ | `className?` | `string` | — | — |
196
+ | `contentClassName?` | `string` | — | — |
197
+ | `children` | `ReactNode` | — | — |
198
+
199
+ ## Anatomy
200
+
201
+ | `data-slot` | Element |
202
+ | ---------------------- | ------------------------ |
203
+ | `color-picker` | Root container |
204
+ | `color-picker-trigger` | Popover trigger |
205
+ | `color-picker-popover` | Anchored popover surface |
206
+
207
+ ## Accessibility
208
+
209
+ Give `ColorPicker.Trigger` an accessible name and include a text value with its swatch. Label each nested area, slider, field, and preset group independently.
@@ -0,0 +1,118 @@
1
+ # Color Slider (https://design.candescent.com/docs/components/color-slider)
2
+
3
+ Resources: [Storybook](https://victorious-wave-0daadf00f.6.azurestaticapps.net/?path=/story/inputs-colorslider--default)
4
+
5
+ `ColorSlider` adjusts one color channel and renders the channel gradient in its rail.
6
+
7
+ ```tsx
8
+ import { ColorSlider, parseColor } from '@cdx-ui/components';
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ import { useState } from 'react';
15
+ import { ColorSlider, parseColor, type Color } from '@cdx-ui/components';
16
+
17
+ function requiredColor(value: string): Color {
18
+ const color = parseColor(value);
19
+ if (!color) {
20
+ throw new Error(`Expected ${value} to parse`);
21
+ }
22
+ return color;
23
+ }
24
+
25
+ export default function ColorSliderBasicDemo() {
26
+ const [value, setValue] = useState(requiredColor('#2F6FED'));
27
+
28
+ return (
29
+ <ColorSlider
30
+ colorSpace="hsb"
31
+ channel="hue"
32
+ value={value}
33
+ onValueChange={setValue}
34
+ accessibilityLabel="Hue"
35
+ >
36
+ <ColorSlider.Output />
37
+ <ColorSlider.Rail>
38
+ <ColorSlider.Thumb accessibilityLabel="Hue" />
39
+ </ColorSlider.Rail>
40
+ </ColorSlider>
41
+ );
42
+ }
43
+ ```
44
+
45
+ ## API
46
+
47
+ ### ColorSlider
48
+
49
+ Pair `colorSpace` with a channel from that color space.
50
+
51
+ | Prop | Type | Default | Description |
52
+ | --- | --- | --- | --- |
53
+ | `className?` | `string` | — | — |
54
+ | `children?` | `ReactNode` | — | — |
55
+ | `value?` | `Color` | — | — |
56
+ | `defaultValue?` | `Color` | — | — |
57
+ | `onValueChange?` | `((value: Color) => void)` | — | — |
58
+ | `onValueChangeComplete?` | `((value: Color) => void)` | — | — |
59
+ | `orientation?` | `'horizontal' \| 'vertical'` | — | — |
60
+ | `step?` | `number` | — | — |
61
+ | `pageStep?` | `number` | — | — |
62
+ | `isDisabled?` | `boolean` | — | — |
63
+ | `colorSpace?` | `'rgb' \| 'hsl' \| 'hsb'` | — | — |
64
+ | `channel?` | `'red' \| 'green' \| 'blue' \| 'hue' \| 'saturation' \| 'lightness' \| 'brightness'` | — | — |
65
+ | `asChild?` | `boolean` | — | — |
66
+
67
+ Inherits all [`ViewProps`](https://reactnative.dev/docs/view#props).
68
+
69
+ ## Sub-components
70
+
71
+ ### ColorSlider.Rail
72
+
73
+ Renders the channel gradient and handles press and drag interactions.
74
+
75
+ | Prop | Type | Default | Description |
76
+ | --- | --- | --- | --- |
77
+ | `className?` | `string` | — | — |
78
+ | `children?` | `ReactNode` | — | — |
79
+ | `asChild?` | `boolean` | — | — |
80
+
81
+ Inherits all [`ViewProps`](https://reactnative.dev/docs/view#props).
82
+
83
+ ### ColorSlider.Thumb
84
+
85
+ The focusable, adjustable channel control.
86
+
87
+ | Prop | Type | Default | Description |
88
+ | --- | --- | --- | --- |
89
+ | `className?` | `string` | — | — |
90
+ | `children?` | `ReactNode` | — | Either children or a render prop that receives a boolean reflecting whether the component is currently pressed. |
91
+ | `asChild?` | `boolean` | — | — |
92
+
93
+ Inherits all [`PressableProps`](https://reactnative.dev/docs/pressable#props).
94
+
95
+ ### ColorSlider.Output
96
+
97
+ Displays the formatted channel value.
98
+
99
+ | Prop | Type | Default | Description |
100
+ | --- | --- | --- | --- |
101
+ | `className?` | `string` | — | — |
102
+ | `children?` | `ReactNode` | — | — |
103
+ | `asChild?` | `boolean` | — | — |
104
+
105
+ Inherits all [`TextProps`](https://reactnative.dev/docs/text#props).
106
+
107
+ ## Anatomy
108
+
109
+ | `data-slot` | Element |
110
+ | --------------------- | -------------------------- |
111
+ | `color-slider` | Root container |
112
+ | `color-slider-rail` | Gradient interaction rail |
113
+ | `color-slider-thumb` | Adjustable channel control |
114
+ | `color-slider-output` | Formatted value label |
115
+
116
+ ## Accessibility
117
+
118
+ Give the slider and thumb an accessible label describing the channel. Arrow keys and native increment/decrement actions change the value.
@@ -0,0 +1,62 @@
1
+ # Color Swatch (https://design.candescent.com/docs/components/color-swatch)
2
+
3
+ Resources: [Storybook](https://victorious-wave-0daadf00f.6.azurestaticapps.net/?path=/story/inputs-colorswatch--default)
4
+
5
+ `ColorSwatch` displays an explicit color or the current value from a surrounding `ColorPicker`.
6
+
7
+ ```tsx
8
+ import { ColorSwatch, HStack, parseColor } from '@cdx-ui/components';
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ import { ColorSwatch, HStack, parseColor, type Color } from '@cdx-ui/components';
15
+
16
+ function requiredColor(value: string): Color {
17
+ const color = parseColor(value);
18
+ if (!color) {
19
+ throw new Error(`Expected ${value} to parse`);
20
+ }
21
+ return color;
22
+ }
23
+
24
+ const color = requiredColor('#2F6FED');
25
+
26
+ export default function ColorSwatchBasicDemo() {
27
+ return (
28
+ <HStack space="lg" className="items-center">
29
+ <ColorSwatch color={color} size="xs" />
30
+ <ColorSwatch color={color} size="sm" shape="square" />
31
+ <ColorSwatch color={color} size="lg" />
32
+ </HStack>
33
+ );
34
+ }
35
+ ```
36
+
37
+ ## API
38
+
39
+ ### ColorSwatch
40
+
41
+ The swatch is presentational unless a consumer composes it inside an interactive control. Existing docs-site palette swatches remain local documentation chrome and are not this published component.
42
+
43
+ | Prop | Type | Default | Description |
44
+ | --- | --- | --- | --- |
45
+ | `className?` | `string` | — | — |
46
+ | `children?` | `React.ReactNode` | — | — |
47
+ | `size?` | `'xs' \| 'sm' \| 'lg'` | — | Visual dimension. `xs` = 16, `sm` = 24, and `lg` = 40. |
48
+ | `shape?` | `'circle' \| 'square'` | — | Swatch outline shape. |
49
+ | `asChild?` | `boolean` | — | — |
50
+ | `color?` | `Color` | — | — |
51
+
52
+ Inherits all [`ViewProps`](https://reactnative.dev/docs/view#props).
53
+
54
+ ## Anatomy
55
+
56
+ | `data-slot` | Element |
57
+ | -------------- | ------------ |
58
+ | `color-swatch` | Color sample |
59
+
60
+ ## Accessibility
61
+
62
+ Do not use a swatch as the only indication of a selected value. Pair it with text inside an appropriately named trigger when it is interactive.
@@ -0,0 +1,124 @@
1
+ # Color Swatch Picker (https://design.candescent.com/docs/components/color-swatch-picker)
2
+
3
+ Resources: [Storybook](https://victorious-wave-0daadf00f.6.azurestaticapps.net/?path=/story/inputs-colorswatchpicker--default)
4
+
5
+ `ColorSwatchPicker` selects one color from a consumer-supplied set of presets.
6
+
7
+ ```tsx
8
+ import { ColorSwatchPicker, parseColor } from '@cdx-ui/components';
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ import { useState } from 'react';
15
+ import { ColorSwatchPicker, parseColor, type Color } from '@cdx-ui/components';
16
+
17
+ function requiredColor(value: string): Color {
18
+ const color = parseColor(value);
19
+ if (!color) {
20
+ throw new Error(`Expected ${value} to parse`);
21
+ }
22
+ return color;
23
+ }
24
+
25
+ const colors = ['#2F6FED', '#7C3AED', '#DB2777', '#DC2626', '#D97706', '#059669'].map(
26
+ requiredColor,
27
+ );
28
+
29
+ export default function ColorSwatchPickerBasicDemo() {
30
+ const [value, setValue] = useState(colors[0]);
31
+
32
+ return (
33
+ <ColorSwatchPicker value={value} onValueChange={setValue} accessibilityLabel="Preset colors">
34
+ {colors.map((color) => (
35
+ <ColorSwatchPicker.Item key={color.toString('hex')} color={color}>
36
+ <ColorSwatchPicker.Swatch />
37
+ <ColorSwatchPicker.Indicator />
38
+ </ColorSwatchPicker.Item>
39
+ ))}
40
+ </ColorSwatchPicker>
41
+ );
42
+ }
43
+ ```
44
+
45
+ ## API
46
+
47
+ ### ColorSwatchPicker
48
+
49
+ Owns standalone selection or reads and updates the shared value when nested in `ColorPicker`.
50
+
51
+ | Prop | Type | Default | Description |
52
+ | --- | --- | --- | --- |
53
+ | `className?` | `string` | — | — |
54
+ | `children?` | `ReactNode` | — | — |
55
+ | `asChild?` | `boolean` | — | — |
56
+ | `value?` | `Color` | — | — |
57
+ | `defaultValue?` | `Color` | — | — |
58
+ | `onValueChange?` | `((value: Color) => void)` | — | — |
59
+ | `isDisabled?` | `boolean` | — | — |
60
+
61
+ Inherits all [`ViewProps`](https://reactnative.dev/docs/view#props).
62
+
63
+ ## Sub-components
64
+
65
+ ### ColorSwatchPicker.Item
66
+
67
+ The pressable radio item for one preset color.
68
+
69
+ | Prop | Type | Default | Description |
70
+ | --- | --- | --- | --- |
71
+ | `className?` | `string` | — | — |
72
+ | `children?` | `ReactNode` | — | — |
73
+ | `asChild?` | `boolean` | — | — |
74
+ | `color` | `Color` | — | — |
75
+ | `isDisabled?` | `boolean` | — | — |
76
+ | `isHovered?` | `boolean` | — | — |
77
+ | `isActive?` | `boolean` | — | — |
78
+ | `isFocused?` | `boolean` | — | — |
79
+ | `isFocusVisible?` | `boolean` | — | — |
80
+
81
+ Inherits all [`PressableProps`](https://reactnative.dev/docs/pressable#props).
82
+
83
+ ### ColorSwatchPicker.Swatch
84
+
85
+ Displays the item color.
86
+
87
+ | Prop | Type | Default | Description |
88
+ | --- | --- | --- | --- |
89
+ | `className?` | `string` | — | — |
90
+ | `children?` | `ReactNode` | — | — |
91
+ | `size?` | `'xs' \| 'sm' \| 'lg'` | — | Visual dimension. `xs` = 16, `sm` = 24, and `lg` = 40. |
92
+ | `shape?` | `'circle' \| 'square'` | — | Swatch outline shape. |
93
+ | `asChild?` | `boolean` | — | — |
94
+
95
+ Inherits all [`ViewProps`](https://reactnative.dev/docs/view#props).
96
+
97
+ ### ColorSwatchPicker.Indicator
98
+
99
+ Renders the selected-state indicator.
100
+
101
+ | Prop | Type | Default | Description |
102
+ | --- | --- | --- | --- |
103
+ | `className?` | `string` | — | Utility classes for size (`size-*`) and placement, merged after the defaults. |
104
+ | `children?` | `ReactNode` | — | — |
105
+ | `filled?` | `boolean` | — | When `true`, renders the filled variant of the icon (if available). Defaults to `false` (outlined). |
106
+ | `size?` | `string \| number` | — | Width and height of the icon, in pixels or any SVG length. The bare icon renders at 24 when omitted. |
107
+ | `data-testid?` | `string` | — | Test identifier forwarded to the rendered SVG. |
108
+ | `as?` | `ForgeIcon` | — | — |
109
+ | `asChild?` | `boolean` | — | — |
110
+
111
+ Inherits all `ForgeIconProps` (react-native-svg `SvgProps` plus `filled` and `size`).
112
+
113
+ ## Anatomy
114
+
115
+ | `data-slot` | Element |
116
+ | ------------------------------- | ------------------------ |
117
+ | `color-swatch-picker` | Radio group |
118
+ | `color-swatch-picker-item` | Pressable preset |
119
+ | `color-swatch-picker-swatch` | Item color sample |
120
+ | `color-swatch-picker-indicator` | Selected-state indicator |
121
+
122
+ ## Accessibility
123
+
124
+ Give the picker an accessible label. Each item is announced as a radio option using its color value unless an explicit accessible label is supplied.
@@ -0,0 +1,98 @@
1
+ # Components (https://design.candescent.com/docs/components)
2
+
3
+ ## Action
4
+
5
+ - [Button](https://design.candescent.com/docs/components/button/content.md) — A pressable action element for triggering events.
6
+ - [Icon Button](https://design.candescent.com/docs/components/icon-button/content.md) — A button that displays only an icon, used for compact actions where the icon clearly communicates intent.
7
+ - [Toggle Button](https://design.candescent.com/docs/components/toggle-button/content.md) — A button that stays pressed when selected, used standalone or in a group for single- or multiple-choice actions.
8
+ - [Link](https://design.candescent.com/docs/components/link/content.md) — A link is interactive text that navigates to another location, either inside or outside the app.
9
+ - [Quick Action Button](https://design.candescent.com/docs/components/quick-action-button/content.md) — A circular icon action with a supporting label for compact action groups.
10
+
11
+ ## Input & selection
12
+
13
+ - [Checkbox](https://design.candescent.com/docs/components/checkbox/content.md) — A checkbox is an input control that allows the user to select multiple options from a set of options or a single yes/no option.
14
+ - [Currency Input](https://design.candescent.com/docs/components/currency-input/content.md) — A calculator-style monetary input that formats digits as currency while the user types.
15
+ - [Field](https://design.candescent.com/docs/components/field/content.md) — A form-control wrapper that coordinates labels, supporting text, validation messages, and shared state.
16
+ - [Form](https://design.candescent.com/docs/components/form/content.md) — A container that spaces related fields vertically and renders a form on web or a view on native.
17
+ - [Input Field](https://design.candescent.com/docs/components/input/content.md) — A single-line text entry with optional label, helper text, and adornments.
18
+ - [Menu](https://design.candescent.com/docs/components/menu/content.md) — Menus present actions or selectable options in an anchored overlay or a standalone list surface.
19
+ - [OTP Input Field](https://design.candescent.com/docs/components/otp-input/content.md) — A controlled multi-cell input for one-time passwords and verification codes.
20
+ - [Radio](https://design.candescent.com/docs/components/radio/content.md) — A radio group is an input control that allows the user to select a single option from a set of mutually exclusive options.
21
+ - [Range Calendar](https://design.candescent.com/docs/components/range-calendar/content.md) — A two-tap day grid for selecting a start and end date, with a continuous range band, month navigation, and a year picker.
22
+ - [Select](https://design.candescent.com/docs/components/select/content.md) — A form control that allows users to choose one option from a dropdown list.
23
+ - [Textarea](https://design.candescent.com/docs/components/textarea/content.md) — A multi-line text entry for longer free-form content.
24
+ - [Slider](https://design.candescent.com/docs/components/slider/content.md) — A control for selecting a numeric value along a track.
25
+ - [Color Picker](https://design.candescent.com/docs/components/color-picker/content.md) — A compound color picker that coordinates an opaque color value with a trigger and popover.
26
+ - [Color Area](https://design.candescent.com/docs/components/color-area/content.md) — A two-dimensional control for selecting saturation and brightness in the HSB color space.
27
+ - [Color Slider](https://design.candescent.com/docs/components/color-slider/content.md) — A one-dimensional control for selecting a channel from an opaque RGB, HSL, or HSB color.
28
+ - [Color Field](https://design.candescent.com/docs/components/color-field/content.md) — A text field for editing an opaque color or one RGB or HSL channel.
29
+ - [Color Swatch](https://design.candescent.com/docs/components/color-swatch/content.md) — A presentational sample of an opaque color in configurable sizes and shapes.
30
+ - [Color Swatch Picker](https://design.candescent.com/docs/components/color-swatch-picker/content.md) — A radio-style compound for choosing from consumer-supplied color presets.
31
+ - [Switch](https://design.candescent.com/docs/components/switch/content.md) — A toggle control that lets users turn a single option on or off.
32
+ - [Tile](https://design.candescent.com/docs/components/tile/content.md) — A composable, selectable card/row for pick-one or pick-many flows such as account pickers and category selectors.
33
+
34
+ ## Date & time
35
+
36
+ - [Calendar](https://design.candescent.com/docs/components/calendar/content.md) — A single-date day grid for selecting a date, with month navigation and a year picker.
37
+ - [Date Field](https://design.candescent.com/docs/components/date-field/content.md) — A segmented input for typing a date or a month, with values exchanged as DateId strings.
38
+ - [Date Picker](https://design.candescent.com/docs/components/date-picker/content.md) — A compound date picker pairing a segmented date field with a calendar in a popover, dialog, bottom sheet, or inline surface.
39
+ - [Date Range Picker](https://design.candescent.com/docs/components/date-range-picker/content.md) — A compound date range picker pairing dual segmented date fields with a range calendar in a popover, dialog, bottom sheet, or inline surface.
40
+ - [Date Time Field](https://design.candescent.com/docs/components/date-time-field/content.md) — A segmented input for typing a date and time together, with values exchanged as DateTimeId strings.
41
+ - [Date Time List](https://design.candescent.com/docs/components/date-time-list/content.md) — A scroll-wheel picker for choosing a date and time across separate columns, with values exchanged as DateTimeId strings.
42
+ - [Date Time Picker](https://design.candescent.com/docs/components/date-time-picker/content.md) — A compound date and time picker pairing a segmented field with scroll-wheel columns in a popover, dialog, or bottom sheet.
43
+ - [Month Calendar](https://design.candescent.com/docs/components/month-calendar/content.md) — A month and year grid for selecting a single month, with a year picker and year navigation.
44
+ - [Month Picker](https://design.candescent.com/docs/components/month-picker/content.md) — A compound month picker pairing a segmented date field in month mode with a month calendar in a popover, dialog, bottom sheet, or inline surface.
45
+
46
+ ## Indicators & status
47
+
48
+ - [Badge](https://design.candescent.com/docs/components/badge/content.md) — A small status annotation that wraps a child control and positions an indicator at a corner.
49
+ - [Chip](https://design.candescent.com/docs/components/chip/content.md) — Chips are compact elements that represent an input, attribute, or action. They allow users to enter information, make selections, filter content, or trigger actions.
50
+ - [Progress Bar](https://design.candescent.com/docs/components/progress-bar/content.md) — A continuous progress bar that visualizes determinate or indeterminate progress with a compound track and indicator.
51
+ - [Progress Circle](https://design.candescent.com/docs/components/progress-circle/content.md) — A circular progress indicator that visualizes determinate or indeterminate progress with a compound ring and indicator.
52
+ - [Progress Segmented](https://design.candescent.com/docs/components/progress-segmented/content.md) — A segmented progress bar that visualizes step-by-step completion as a row of discrete segments.
53
+ - [Skeleton](https://design.candescent.com/docs/components/skeleton/content.md) — A pulsing loading placeholder shaped via className — no intrinsic size, layout preserved while content loads.
54
+
55
+ ## Content display
56
+
57
+ - [Accordion](https://design.candescent.com/docs/components/accordion/content.md) — A vertically stacked set of disclosure items for showing and hiding related content.
58
+ - [Avatar](https://design.candescent.com/docs/components/avatar/content.md) — A visual representation of a user or entity, displayed as an image, initials, or fallback icon.
59
+ - [Carousel](https://design.candescent.com/docs/components/carousel/content.md) — A swipeable, paginated carousel for promotional banners, onboarding, and card browsing. Wraps react-native-reanimated-carousel with token-styled Pagination and Prev/Next nav button compounds plus useCarousel hook.
60
+ - [Divider](https://design.candescent.com/docs/components/divider/content.md) — A horizontal or vertical separator for grouping related content, with an optional inline label.
61
+ - [FDIC Digital Sign](https://design.candescent.com/docs/components/insurance-disclosure/content.md) — Domain-specific regulatory disclosure — official FDIC lockup with optional copy for account footers, deposit screens, and onboarding.
62
+ - [Icon](https://design.candescent.com/docs/components/icon/content.md) — A cross-platform SVG icon wrapper with semantic color, sizing, filled variants, and accessibility support.
63
+ - [Image](https://design.candescent.com/docs/components/image/content.md) — Displays local or remote images across native and web platforms.
64
+ - [List Item](https://design.candescent.com/docs/components/list-item/content.md) — A composable row for display and navigation — accounts, transactions, alerts, settings, and nav rows.
65
+ - [Reorderable List](https://design.candescent.com/docs/components/reorderable-list/content.md) — A short, mount-all list that lets members drag rows into a new order via an explicit handle.
66
+ - [Virtualized List](https://design.candescent.com/docs/components/virtualized-list/content.md) — A performant virtualized list for large datasets — only visible rows mount at a time.
67
+ - [Text](https://design.candescent.com/docs/components/text/content.md) — Body text with a responsive, token-based typography scale.
68
+ - [Heading](https://design.candescent.com/docs/components/heading/content.md) — Semantic heading text with an accessible, token-based typography scale.
69
+
70
+ ## Feedback
71
+
72
+ - [Alert](https://design.candescent.com/docs/components/alert/content.md) — An inline severity banner that renders contextual feedback — danger, warning, success, or info — with an optional title, body, and trailing actions.
73
+ - [Alert Dialog](https://design.candescent.com/docs/components/alert-dialog/content.md) — A modal confirmation for destructive or important actions that requires an explicit response.
74
+ - [Dialog](https://design.candescent.com/docs/components/dialog/content.md) — A modal overlay that interrupts the user with critical information or decisions requiring immediate attention.
75
+ - [Full Screen Dialog](https://design.candescent.com/docs/components/full-screen-dialog/content.md) — A modal page that covers the viewport with a back, title, and close header for single-step or multi-step tasks.
76
+ - [Tooltip](https://design.candescent.com/docs/components/tooltip/content.md) — A contextual hint overlay anchored to a trigger element.
77
+ - [Toast](https://design.candescent.com/docs/components/toast/content.md) — A brief notification that confirms an action or reports a background result without interrupting the current task.
78
+
79
+ ## Surfaces & layout
80
+
81
+ - [Bottom Sheet](https://design.candescent.com/docs/components/bottom-sheet/content.md) — A surface that slides up from the bottom of the screen to present secondary tasks without leaving the current context.
82
+ - [Box](https://design.candescent.com/docs/components/box/content.md) — The layout container for building screens, with semantic web elements through role and an asChild escape hatch.
83
+ - [Card](https://design.candescent.com/docs/components/card/content.md) — A composable surface for grouping related content, with optional brand stripe, header, content, and footer regions.
84
+ - [Drawer](https://design.candescent.com/docs/components/drawer/content.md) — A panel attached to an edge of the viewport or container, with modal and permanent presentations.
85
+ - [Scoped Theme](https://design.candescent.com/docs/components/scoped-theme/content.md) — Forces a specific theme on a component subtree, regardless of the application's global theme.
86
+ - [Scroll Shadow](https://design.candescent.com/docs/components/scroll-shadow/content.md) — Fades the edges of a scroll view so overflowing content reads as scrollable on iOS, Android, and web.
87
+ - [Stack](https://design.candescent.com/docs/components/stack/content.md) — Horizontal and vertical layout primitives with token-based spacing and optional reversed order.
88
+
89
+ ## Navigation
90
+
91
+ - [Breadcrumbs](https://design.candescent.com/docs/components/breadcrumbs/content.md) — A navigation trail that shows the current page within a hierarchy.
92
+ - [Tabs](https://design.candescent.com/docs/components/tabs/content.md) — A set of layered sections that displays one content panel at a time.
93
+
94
+ ## Data & tables
95
+
96
+ - [Data Grid](https://design.candescent.com/docs/components/data-grid/content.md) — A web data grid with rows, columns, sort, filters, selection, and pagination.
97
+ - [Table](https://design.candescent.com/docs/components/table/content.md) — A presentational compound table for displaying tabular data with consistent Forge styling.
98
+ - [Table Pagination](https://design.candescent.com/docs/components/table-pagination/content.md) — A compound pager for moving between pages of a list or table.