@forte-ui/react 1.0.0-alpha.1

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 (304) hide show
  1. package/README.md +240 -0
  2. package/dist/Accordion-9JunkjgY.js +111 -0
  3. package/dist/Alert-Cn_WUF3L.js +183 -0
  4. package/dist/AspectRatio-gSjpTVk-.js +39 -0
  5. package/dist/Avatar-BuitDluH.js +87 -0
  6. package/dist/Badge-sArNWMre.js +33 -0
  7. package/dist/Breadcrumb-Cq7tFtMX.js +170 -0
  8. package/dist/Button-AiyKnx5I.js +42 -0
  9. package/dist/ButtonGroup-C-CrwPXP.js +54 -0
  10. package/dist/Calendar-D7Q-QJ_e.js +503 -0
  11. package/dist/Checkbox-DfNbmOed.js +56 -0
  12. package/dist/Collapsible-D8UKiGip.js +86 -0
  13. package/dist/ColorPicker-B-eCI31W.js +612 -0
  14. package/dist/Combobox-D-BN-Tvp.js +302 -0
  15. package/dist/ContextMenu-D81uDaMG.js +44 -0
  16. package/dist/DatePicker-CfkMsaI-.js +192 -0
  17. package/dist/Dialog-_n8FpFs5.js +432 -0
  18. package/dist/Drawer-DKQF3OO7.js +158 -0
  19. package/dist/Field-FLFEO70D.js +58 -0
  20. package/dist/Fieldset-CYhh71Qt.js +28 -0
  21. package/dist/Form-DVPmW9XV.js +17 -0
  22. package/dist/Input-BgGWhO2q.js +18 -0
  23. package/dist/InputGroup-DsZyDXNn.js +89 -0
  24. package/dist/Menu-CKu9xE2h.js +261 -0
  25. package/dist/Menubar-Dax027Db.js +19 -0
  26. package/dist/NavList-DGvcIoJm.js +176 -0
  27. package/dist/NavigationMenu-BayQkUUb.js +209 -0
  28. package/dist/NumberField-P55SA8T7.js +191 -0
  29. package/dist/OTPField-CjHvBNSN.js +55 -0
  30. package/dist/Popover-BXhn2Wwt.js +142 -0
  31. package/dist/PreviewCard-Dnitrky0.js +99 -0
  32. package/dist/Progress-BlomDp-X.js +81 -0
  33. package/dist/ProgressCircle-j6XBl0fk.js +112 -0
  34. package/dist/Radio-BIcX4INJ.js +37 -0
  35. package/dist/Resizable-7nJJM97e.js +609 -0
  36. package/dist/ScrollArea-CBMGJ6hh.js +83 -0
  37. package/dist/Select-BP-zvdXm.js +237 -0
  38. package/dist/Separator-DewJBzaJ.js +21 -0
  39. package/dist/Skeleton-zr6ObCCq.js +79 -0
  40. package/dist/Slider-Bh8_cti1.js +104 -0
  41. package/dist/Spinner-BF0uD4hR.js +53 -0
  42. package/dist/Switch-OBewMMvM.js +39 -0
  43. package/dist/Tabs-LgkSbPSF.js +132 -0
  44. package/dist/Textarea-CqZJL41e.js +51 -0
  45. package/dist/Toast-BWayxAcd.js +304 -0
  46. package/dist/Toggle-BrhMnkF5.js +45 -0
  47. package/dist/Toolbar-OmOVCk3i.js +88 -0
  48. package/dist/Tooltip-CI4chsRw.js +101 -0
  49. package/dist/clsx-By2n9mTe.js +16 -0
  50. package/dist/cn.d.ts +8 -0
  51. package/dist/cn.js +11 -0
  52. package/dist/components/accordion/Accordion.d.ts +117 -0
  53. package/dist/components/accordion/Accordion.js +3 -0
  54. package/dist/components/accordion/index.d.ts +2 -0
  55. package/dist/components/accordion/index.js +2 -0
  56. package/dist/components/alert/Alert.d.ts +167 -0
  57. package/dist/components/alert/Alert.js +3 -0
  58. package/dist/components/alert/index.d.ts +2 -0
  59. package/dist/components/alert/index.js +2 -0
  60. package/dist/components/aspect-ratio/AspectRatio.d.ts +128 -0
  61. package/dist/components/aspect-ratio/AspectRatio.js +3 -0
  62. package/dist/components/aspect-ratio/index.d.ts +2 -0
  63. package/dist/components/aspect-ratio/index.js +2 -0
  64. package/dist/components/avatar/Avatar.d.ts +176 -0
  65. package/dist/components/avatar/Avatar.js +3 -0
  66. package/dist/components/avatar/index.d.ts +2 -0
  67. package/dist/components/avatar/index.js +2 -0
  68. package/dist/components/badge/Badge.d.ts +117 -0
  69. package/dist/components/badge/Badge.js +3 -0
  70. package/dist/components/badge/index.d.ts +2 -0
  71. package/dist/components/badge/index.js +2 -0
  72. package/dist/components/breadcrumb/Breadcrumb.d.ts +244 -0
  73. package/dist/components/breadcrumb/Breadcrumb.js +3 -0
  74. package/dist/components/breadcrumb/index.d.ts +2 -0
  75. package/dist/components/breadcrumb/index.js +2 -0
  76. package/dist/components/button/Button.d.ts +73 -0
  77. package/dist/components/button/Button.js +3 -0
  78. package/dist/components/button/index.d.ts +2 -0
  79. package/dist/components/button/index.js +2 -0
  80. package/dist/components/button-group/ButtonGroup.d.ts +113 -0
  81. package/dist/components/button-group/ButtonGroup.js +3 -0
  82. package/dist/components/button-group/index.d.ts +2 -0
  83. package/dist/components/button-group/index.js +2 -0
  84. package/dist/components/calendar/Calendar.d.ts +201 -0
  85. package/dist/components/calendar/Calendar.js +3 -0
  86. package/dist/components/calendar/index.d.ts +2 -0
  87. package/dist/components/calendar/index.js +2 -0
  88. package/dist/components/checkbox/Checkbox.d.ts +130 -0
  89. package/dist/components/checkbox/Checkbox.js +3 -0
  90. package/dist/components/checkbox/index.d.ts +2 -0
  91. package/dist/components/checkbox/index.js +2 -0
  92. package/dist/components/collapsible/Collapsible.d.ts +91 -0
  93. package/dist/components/collapsible/Collapsible.js +3 -0
  94. package/dist/components/collapsible/index.d.ts +2 -0
  95. package/dist/components/collapsible/index.js +2 -0
  96. package/dist/components/color-picker/ColorPicker.d.ts +553 -0
  97. package/dist/components/color-picker/ColorPicker.js +4 -0
  98. package/dist/components/color-picker/color.d.ts +102 -0
  99. package/dist/components/color-picker/color.js +249 -0
  100. package/dist/components/color-picker/index.d.ts +2 -0
  101. package/dist/components/color-picker/index.js +3 -0
  102. package/dist/components/combobox/Combobox.d.ts +553 -0
  103. package/dist/components/combobox/Combobox.js +3 -0
  104. package/dist/components/combobox/index.d.ts +2 -0
  105. package/dist/components/combobox/index.js +2 -0
  106. package/dist/components/context-menu/ContextMenu.d.ts +103 -0
  107. package/dist/components/context-menu/ContextMenu.js +3 -0
  108. package/dist/components/context-menu/index.d.ts +3 -0
  109. package/dist/components/context-menu/index.js +2 -0
  110. package/dist/components/date-picker/DatePicker.d.ts +268 -0
  111. package/dist/components/date-picker/DatePicker.js +3 -0
  112. package/dist/components/date-picker/index.d.ts +2 -0
  113. package/dist/components/date-picker/index.js +2 -0
  114. package/dist/components/dialog/Dialog.d.ts +567 -0
  115. package/dist/components/dialog/Dialog.js +3 -0
  116. package/dist/components/dialog/index.d.ts +2 -0
  117. package/dist/components/dialog/index.js +2 -0
  118. package/dist/components/drawer/Drawer.d.ts +351 -0
  119. package/dist/components/drawer/Drawer.js +3 -0
  120. package/dist/components/drawer/index.d.ts +2 -0
  121. package/dist/components/drawer/index.js +2 -0
  122. package/dist/components/field/Field.d.ts +170 -0
  123. package/dist/components/field/Field.js +3 -0
  124. package/dist/components/field/index.d.ts +2 -0
  125. package/dist/components/field/index.js +2 -0
  126. package/dist/components/fieldset/Fieldset.d.ts +60 -0
  127. package/dist/components/fieldset/Fieldset.js +3 -0
  128. package/dist/components/fieldset/index.d.ts +2 -0
  129. package/dist/components/fieldset/index.js +2 -0
  130. package/dist/components/form/Form.d.ts +76 -0
  131. package/dist/components/form/Form.js +3 -0
  132. package/dist/components/form/index.d.ts +2 -0
  133. package/dist/components/form/index.js +2 -0
  134. package/dist/components/input/Input.d.ts +67 -0
  135. package/dist/components/input/Input.js +3 -0
  136. package/dist/components/input/index.d.ts +2 -0
  137. package/dist/components/input/index.js +2 -0
  138. package/dist/components/input-group/InputGroup.d.ts +214 -0
  139. package/dist/components/input-group/InputGroup.js +3 -0
  140. package/dist/components/input-group/index.d.ts +2 -0
  141. package/dist/components/input-group/index.js +2 -0
  142. package/dist/components/menu/Menu.d.ts +587 -0
  143. package/dist/components/menu/Menu.js +3 -0
  144. package/dist/components/menu/index.d.ts +2 -0
  145. package/dist/components/menu/index.js +2 -0
  146. package/dist/components/menubar/Menubar.d.ts +104 -0
  147. package/dist/components/menubar/Menubar.js +3 -0
  148. package/dist/components/menubar/index.d.ts +2 -0
  149. package/dist/components/menubar/index.js +2 -0
  150. package/dist/components/nav-list/NavList.d.ts +290 -0
  151. package/dist/components/nav-list/NavList.js +3 -0
  152. package/dist/components/nav-list/index.d.ts +2 -0
  153. package/dist/components/nav-list/index.js +2 -0
  154. package/dist/components/navigation-menu/NavigationMenu.d.ts +483 -0
  155. package/dist/components/navigation-menu/NavigationMenu.js +3 -0
  156. package/dist/components/navigation-menu/index.d.ts +2 -0
  157. package/dist/components/navigation-menu/index.js +2 -0
  158. package/dist/components/number-field/NumberField.d.ts +303 -0
  159. package/dist/components/number-field/NumberField.js +3 -0
  160. package/dist/components/number-field/index.d.ts +2 -0
  161. package/dist/components/number-field/index.js +2 -0
  162. package/dist/components/otp-field/OTPField.d.ts +206 -0
  163. package/dist/components/otp-field/OTPField.js +3 -0
  164. package/dist/components/otp-field/index.d.ts +2 -0
  165. package/dist/components/otp-field/index.js +2 -0
  166. package/dist/components/popover/Popover.d.ts +394 -0
  167. package/dist/components/popover/Popover.js +3 -0
  168. package/dist/components/popover/index.d.ts +2 -0
  169. package/dist/components/popover/index.js +2 -0
  170. package/dist/components/preview-card/PreviewCard.d.ts +307 -0
  171. package/dist/components/preview-card/PreviewCard.js +3 -0
  172. package/dist/components/preview-card/index.d.ts +2 -0
  173. package/dist/components/preview-card/index.js +2 -0
  174. package/dist/components/progress/Progress.d.ts +156 -0
  175. package/dist/components/progress/Progress.js +3 -0
  176. package/dist/components/progress/ProgressCircle.d.ts +166 -0
  177. package/dist/components/progress/ProgressCircle.js +3 -0
  178. package/dist/components/progress/index.d.ts +4 -0
  179. package/dist/components/progress/index.js +3 -0
  180. package/dist/components/radio/Radio.d.ts +144 -0
  181. package/dist/components/radio/Radio.js +3 -0
  182. package/dist/components/radio/index.d.ts +2 -0
  183. package/dist/components/radio/index.js +2 -0
  184. package/dist/components/resizable/Resizable.d.ts +211 -0
  185. package/dist/components/resizable/Resizable.js +3 -0
  186. package/dist/components/resizable/index.d.ts +2 -0
  187. package/dist/components/resizable/index.js +2 -0
  188. package/dist/components/scroll-area/ScrollArea.d.ts +113 -0
  189. package/dist/components/scroll-area/ScrollArea.js +3 -0
  190. package/dist/components/scroll-area/index.d.ts +2 -0
  191. package/dist/components/scroll-area/index.js +2 -0
  192. package/dist/components/select/Select.d.ts +345 -0
  193. package/dist/components/select/Select.js +3 -0
  194. package/dist/components/select/index.d.ts +2 -0
  195. package/dist/components/select/index.js +2 -0
  196. package/dist/components/separator/Separator.d.ts +75 -0
  197. package/dist/components/separator/Separator.js +3 -0
  198. package/dist/components/separator/index.d.ts +2 -0
  199. package/dist/components/separator/index.js +2 -0
  200. package/dist/components/skeleton/Skeleton.d.ts +169 -0
  201. package/dist/components/skeleton/Skeleton.js +3 -0
  202. package/dist/components/skeleton/index.d.ts +2 -0
  203. package/dist/components/skeleton/index.js +2 -0
  204. package/dist/components/slider/Slider.d.ts +208 -0
  205. package/dist/components/slider/Slider.js +3 -0
  206. package/dist/components/slider/index.d.ts +2 -0
  207. package/dist/components/slider/index.js +2 -0
  208. package/dist/components/spinner/Spinner.d.ts +92 -0
  209. package/dist/components/spinner/Spinner.js +3 -0
  210. package/dist/components/spinner/index.d.ts +2 -0
  211. package/dist/components/spinner/index.js +2 -0
  212. package/dist/components/switch/Switch.d.ts +80 -0
  213. package/dist/components/switch/Switch.js +3 -0
  214. package/dist/components/switch/index.d.ts +2 -0
  215. package/dist/components/switch/index.js +2 -0
  216. package/dist/components/tabs/Tabs.d.ts +125 -0
  217. package/dist/components/tabs/Tabs.js +3 -0
  218. package/dist/components/tabs/index.d.ts +2 -0
  219. package/dist/components/tabs/index.js +2 -0
  220. package/dist/components/textarea/Textarea.d.ts +119 -0
  221. package/dist/components/textarea/Textarea.js +3 -0
  222. package/dist/components/textarea/index.d.ts +2 -0
  223. package/dist/components/textarea/index.js +2 -0
  224. package/dist/components/toast/Toast.d.ts +517 -0
  225. package/dist/components/toast/Toast.js +3 -0
  226. package/dist/components/toast/index.d.ts +2 -0
  227. package/dist/components/toast/index.js +2 -0
  228. package/dist/components/toggle/Toggle.d.ts +171 -0
  229. package/dist/components/toggle/Toggle.js +3 -0
  230. package/dist/components/toggle/index.d.ts +2 -0
  231. package/dist/components/toggle/index.js +2 -0
  232. package/dist/components/toolbar/Toolbar.d.ts +318 -0
  233. package/dist/components/toolbar/Toolbar.js +3 -0
  234. package/dist/components/toolbar/index.d.ts +2 -0
  235. package/dist/components/toolbar/index.js +2 -0
  236. package/dist/components/tooltip/Tooltip.d.ts +361 -0
  237. package/dist/components/tooltip/Tooltip.js +3 -0
  238. package/dist/components/tooltip/index.d.ts +2 -0
  239. package/dist/components/tooltip/index.js +2 -0
  240. package/dist/index.d.ts +92 -0
  241. package/dist/index.js +86 -0
  242. package/dist/styles/Accordion.css +1 -0
  243. package/dist/styles/Alert.css +1 -0
  244. package/dist/styles/AspectRatio.css +1 -0
  245. package/dist/styles/Avatar.css +1 -0
  246. package/dist/styles/Badge.css +1 -0
  247. package/dist/styles/Breadcrumb.css +1 -0
  248. package/dist/styles/Button.css +1 -0
  249. package/dist/styles/ButtonGroup.css +1 -0
  250. package/dist/styles/Calendar.css +1 -0
  251. package/dist/styles/Checkbox.css +1 -0
  252. package/dist/styles/Collapsible.css +1 -0
  253. package/dist/styles/ColorPicker.css +1 -0
  254. package/dist/styles/Combobox.css +1 -0
  255. package/dist/styles/ContextMenu.css +1 -0
  256. package/dist/styles/DatePicker.css +1 -0
  257. package/dist/styles/Dialog.css +1 -0
  258. package/dist/styles/Drawer.css +1 -0
  259. package/dist/styles/Field.css +1 -0
  260. package/dist/styles/Fieldset.css +1 -0
  261. package/dist/styles/Form.css +1 -0
  262. package/dist/styles/Input.css +1 -0
  263. package/dist/styles/InputGroup.css +1 -0
  264. package/dist/styles/Menu.css +1 -0
  265. package/dist/styles/Menubar.css +1 -0
  266. package/dist/styles/NavList.css +1 -0
  267. package/dist/styles/NavigationMenu.css +1 -0
  268. package/dist/styles/NumberField.css +1 -0
  269. package/dist/styles/OTPField.css +1 -0
  270. package/dist/styles/Popover.css +1 -0
  271. package/dist/styles/PreviewCard.css +1 -0
  272. package/dist/styles/Progress.css +1 -0
  273. package/dist/styles/ProgressCircle.css +1 -0
  274. package/dist/styles/Radio.css +1 -0
  275. package/dist/styles/Resizable.css +1 -0
  276. package/dist/styles/ScrollArea.css +1 -0
  277. package/dist/styles/Select.css +1 -0
  278. package/dist/styles/Separator.css +1 -0
  279. package/dist/styles/Skeleton.css +1 -0
  280. package/dist/styles/Slider.css +1 -0
  281. package/dist/styles/Spinner.css +1 -0
  282. package/dist/styles/Switch.css +1 -0
  283. package/dist/styles/Tabs.css +1 -0
  284. package/dist/styles/Textarea.css +1 -0
  285. package/dist/styles/Toast.css +1 -0
  286. package/dist/styles/Toggle.css +1 -0
  287. package/dist/styles/Toolbar.css +1 -0
  288. package/dist/styles/Tooltip.css +1 -0
  289. package/dist/styles/a11y.css +119 -0
  290. package/dist/styles/layers.css +39 -0
  291. package/dist/styles/motion.css +194 -0
  292. package/dist/styles/patterns.css +236 -0
  293. package/dist/styles/properties.css +62 -0
  294. package/dist/styles/reset.css +11 -0
  295. package/dist/styles/tailwind.css +281 -0
  296. package/dist/styles/theme.css +57 -0
  297. package/dist/styles/tokens.color.css +223 -0
  298. package/dist/styles/tokens.css +460 -0
  299. package/dist/tailwind-merge.d.ts +52 -0
  300. package/dist/tailwind-merge.js +52 -0
  301. package/docs-data/props.json +8047 -0
  302. package/docs-data/theming.json +9600 -0
  303. package/docs-data/tokens.json +4070 -0
  304. package/package.json +78 -0
@@ -0,0 +1,208 @@
1
+ import { Slider as BaseSlider } from '@base-ui/react/slider';
2
+ import * as React from "react";
3
+ export type SliderSize = "sm" | "md" | "lg";
4
+ export type SliderTone = "primary" | "secondary" | "danger" | "neutral";
5
+ type BaseRootProps<Value extends number | readonly number[]> = BaseSlider.Root.Props<Value>;
6
+ export interface SliderRootProps<Value extends number | readonly number[] = number | readonly number[]> extends Omit<BaseRootProps<Value>, "className"> {
7
+ /**
8
+ * Size of the slider. Scales the track thickness, the thumb and the gap
9
+ * between the rows together.
10
+ * @default "md"
11
+ */
12
+ size?: SliderSize;
13
+ /**
14
+ * Which semantic colour set the indicator and thumb draw from.
15
+ * @default "primary"
16
+ */
17
+ tone?: SliderTone;
18
+ /**
19
+ * Additional class name(s). Applied after the internal styles so consumer
20
+ * utilities (e.g. Tailwind) win without needing `!important`.
21
+ */
22
+ className?: string;
23
+ /**
24
+ * A ref to the root `<div>`.
25
+ */
26
+ ref?: React.Ref<HTMLDivElement>;
27
+ }
28
+ /**
29
+ * Groups every part of the slider and owns its value. Renders a `<div>` laid
30
+ * out as a two-column grid: `Label` and `Value` share the first row, and
31
+ * `Control` spans both columns underneath.
32
+ *
33
+ * The generic is forwarded rather than widened, so a `number` value keeps
34
+ * `onValueChange(value: number)` and an array keeps `readonly number[]` — the
35
+ * distinction between a single-thumb and a range slider is carried entirely by
36
+ * the shape of `value` / `defaultValue`.
37
+ *
38
+ * ```tsx
39
+ * <Slider.Root defaultValue={40}>
40
+ * <Slider.Label>Volume</Slider.Label>
41
+ * <Slider.Value />
42
+ * <Slider.Control>
43
+ * <Slider.Track>
44
+ * <Slider.Indicator />
45
+ * <Slider.Thumb />
46
+ * </Slider.Track>
47
+ * </Slider.Control>
48
+ * </Slider.Root>
49
+ * ```
50
+ */
51
+ export declare function SliderRoot<Value extends number | readonly number[] = number | readonly number[]>({ size, tone, className, ...props }: SliderRootProps<Value>): React.JSX.Element;
52
+ type BaseLabelProps = React.ComponentPropsWithoutRef<typeof BaseSlider.Label>;
53
+ export interface SliderLabelProps extends Omit<BaseLabelProps, "className"> {
54
+ /**
55
+ * Additional class name(s). Applied after the internal styles so consumer
56
+ * utilities (e.g. Tailwind) win without needing `!important`.
57
+ */
58
+ className?: string;
59
+ }
60
+ /**
61
+ * The slider's visible label. Renders a `<div>`, not a `<label>`, and is wired
62
+ * to every thumb's hidden `<input>` with `aria-labelledby` — a native label
63
+ * cannot point at more than one control, so a range slider would leave the
64
+ * second thumb unnamed.
65
+ *
66
+ * On a range slider this names the group; give each `Thumb` its own
67
+ * `aria-label` ("Minimum price", "Maximum price") so the two are still
68
+ * distinguishable.
69
+ */
70
+ export declare const SliderLabel: React.ForwardRefExoticComponent<SliderLabelProps & React.RefAttributes<HTMLDivElement>>;
71
+ type BaseValueProps = React.ComponentPropsWithoutRef<typeof BaseSlider.Value>;
72
+ export interface SliderValueProps extends Omit<BaseValueProps, "className"> {
73
+ /**
74
+ * Additional class name(s). Applied after the internal styles so consumer
75
+ * utilities (e.g. Tailwind) win without needing `!important`.
76
+ */
77
+ className?: string;
78
+ }
79
+ /**
80
+ * The current value as text. Renders an `<output>`.
81
+ *
82
+ * By default it prints the values formatted with `Slider.Root`'s `format` and
83
+ * `locale`, joined with an en dash for a range. Pass a function as `children`
84
+ * to compose your own — it receives the formatted strings and the raw numbers:
85
+ *
86
+ * ```tsx
87
+ * <Slider.Value>{(formatted) => `${formatted[0]} to ${formatted[1]}`}</Slider.Value>
88
+ * ```
89
+ *
90
+ * This is a visible duplicate of what `aria-valuetext` already announces, so
91
+ * it is never the only way to read the value — but it is what makes a slider
92
+ * usable for anyone who cannot judge a thumb's position by eye, which is why
93
+ * every demo that has room for it renders one.
94
+ */
95
+ export declare const SliderValue: React.ForwardRefExoticComponent<SliderValueProps & React.RefAttributes<HTMLOutputElement>>;
96
+ type BaseControlProps = React.ComponentPropsWithoutRef<typeof BaseSlider.Control>;
97
+ export interface SliderControlProps extends Omit<BaseControlProps, "className"> {
98
+ /**
99
+ * Additional class name(s). Applied after the internal styles so consumer
100
+ * utilities (e.g. Tailwind) win without needing `!important`.
101
+ */
102
+ className?: string;
103
+ }
104
+ /**
105
+ * The interactive strip. Renders a `<div>` that is padded well beyond the
106
+ * painted track, because *this* is the element that takes the pointer: a press
107
+ * anywhere inside it moves the nearest thumb. The padding is what gives the
108
+ * control its 24×24 minimum target (SC 2.5.8) without thickening the rail, and
109
+ * `thumbAlignment="edge"` measures it, so changing the padding changes where
110
+ * an edge-aligned thumb comes to rest.
111
+ *
112
+ * Contains exactly one `Track`.
113
+ */
114
+ export declare const SliderControl: React.ForwardRefExoticComponent<SliderControlProps & React.RefAttributes<HTMLDivElement>>;
115
+ type BaseTrackProps = React.ComponentPropsWithoutRef<typeof BaseSlider.Track>;
116
+ export interface SliderTrackProps extends Omit<BaseTrackProps, "className"> {
117
+ /**
118
+ * Additional class name(s). Applied after the internal styles so consumer
119
+ * utilities (e.g. Tailwind) win without needing `!important`.
120
+ */
121
+ className?: string;
122
+ }
123
+ /**
124
+ * The rail: the whole range from `min` to `max`. Renders a `<div>` that Base
125
+ * UI gives `position: relative` inline, which is what the `Indicator` and the
126
+ * `Thumb` are positioned against.
127
+ *
128
+ * Its thickness must stay an explicit length rather than `auto` — Base UI sizes
129
+ * the indicator's cross axis with `height: inherit` (`width: inherit` when
130
+ * vertical), so an auto-sized track leaves the indicator with nothing to
131
+ * inherit and it collapses.
132
+ */
133
+ export declare const SliderTrack: React.ForwardRefExoticComponent<SliderTrackProps & React.RefAttributes<HTMLDivElement>>;
134
+ type BaseIndicatorProps = React.ComponentPropsWithoutRef<typeof BaseSlider.Indicator>;
135
+ export interface SliderIndicatorProps extends Omit<BaseIndicatorProps, "className"> {
136
+ /**
137
+ * Additional class name(s). Applied after the internal styles so consumer
138
+ * utilities (e.g. Tailwind) win without needing `!important`.
139
+ */
140
+ className?: string;
141
+ }
142
+ /**
143
+ * The filled part of the rail. Renders a `<div>` inside `Track`.
144
+ *
145
+ * Base UI owns its position and size through inline styles — `width` /
146
+ * `height` for a single thumb, plus an offset from the start edge for a range
147
+ * — so the stylesheet only paints it. Setting a width here would be
148
+ * overwritten on the next render.
149
+ */
150
+ export declare const SliderIndicator: React.ForwardRefExoticComponent<SliderIndicatorProps & React.RefAttributes<HTMLDivElement>>;
151
+ type BaseThumbProps = React.ComponentPropsWithoutRef<typeof BaseSlider.Thumb>;
152
+ export interface SliderThumbProps extends Omit<BaseThumbProps, "className"> {
153
+ /**
154
+ * Additional class name(s). Applied after the internal styles so consumer
155
+ * utilities (e.g. Tailwind) win without needing `!important`.
156
+ */
157
+ className?: string;
158
+ }
159
+ /**
160
+ * One draggable handle. Renders a `<div>` wrapping a visually hidden
161
+ * `<input type="range">` — the input is the real control, so it is what takes
162
+ * focus and what a screen reader reads.
163
+ *
164
+ * That split is why the focus ring is `.forte-focus-ring-within` rather than
165
+ * `.forte-focus-ring`: the thumb `<div>` never matches `:focus-visible` itself.
166
+ *
167
+ * A range slider needs one `Thumb` per value, each with an `index` — without
168
+ * it the thumbs only find their order once the composite list has registered
169
+ * on the client, so a server-rendered range slider paints both handles at the
170
+ * first value and jumps on hydration. Give each one an `aria-label` too; the
171
+ * `Label` names the group, not the individual handles.
172
+ */
173
+ export declare const SliderThumb: React.ForwardRefExoticComponent<SliderThumbProps & React.RefAttributes<HTMLDivElement>>;
174
+ /**
175
+ * A slider built on Base UI's unstyled `Slider` primitive.
176
+ *
177
+ * ```tsx
178
+ * <Slider.Root defaultValue={[25, 75]} tone="secondary">
179
+ * <Slider.Label>Price range</Slider.Label>
180
+ * <Slider.Value />
181
+ * <Slider.Control>
182
+ * <Slider.Track>
183
+ * <Slider.Indicator />
184
+ * <Slider.Thumb index={0} aria-label="Minimum price" />
185
+ * <Slider.Thumb index={1} aria-label="Maximum price" />
186
+ * </Slider.Track>
187
+ * </Slider.Control>
188
+ * </Slider.Root>
189
+ * ```
190
+ *
191
+ * Motion — the handle and the fill are never animated into position. Base UI
192
+ * rewrites their geometry on every pointermove, so a positional transition
193
+ * restarts on every frame of a drag and the handle ends up permanently
194
+ * interpolating toward a target that has already moved: it trails the pointer,
195
+ * and it puts a layout-triggering property under animation for the whole
196
+ * gesture. Colour and the hover halo still transition, because those have a
197
+ * start and an end. See the note at the top of `Slider.module.css`.
198
+ */
199
+ export declare const Slider: {
200
+ Root: typeof SliderRoot;
201
+ Label: React.ForwardRefExoticComponent<SliderLabelProps & React.RefAttributes<HTMLDivElement>>;
202
+ Value: React.ForwardRefExoticComponent<SliderValueProps & React.RefAttributes<HTMLOutputElement>>;
203
+ Control: React.ForwardRefExoticComponent<SliderControlProps & React.RefAttributes<HTMLDivElement>>;
204
+ Track: React.ForwardRefExoticComponent<SliderTrackProps & React.RefAttributes<HTMLDivElement>>;
205
+ Indicator: React.ForwardRefExoticComponent<SliderIndicatorProps & React.RefAttributes<HTMLDivElement>>;
206
+ Thumb: React.ForwardRefExoticComponent<SliderThumbProps & React.RefAttributes<HTMLDivElement>>;
207
+ };
208
+ export {};
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "../../Slider-Bh8_cti1.js";
3
+ export { s as Slider, r as SliderControl, a as SliderIndicator, n as SliderLabel, e as SliderRoot, i as SliderThumb, o as SliderTrack, t as SliderValue };
@@ -0,0 +1,2 @@
1
+ export { Slider } from './Slider';
2
+ export type { SliderSize, SliderTone, SliderRootProps, SliderLabelProps, SliderValueProps, SliderControlProps, SliderTrackProps, SliderIndicatorProps, SliderThumbProps, } from './Slider';
@@ -0,0 +1,2 @@
1
+ import { t as e } from "../../Slider-Bh8_cti1.js";
2
+ export { e as Slider };
@@ -0,0 +1,92 @@
1
+ import * as React from "react";
2
+ export type SpinnerVariant = "ring" | "dots" | "bars" | "pulse";
3
+ export type SpinnerSize = "sm" | "md" | "lg";
4
+ export type SpinnerTone = "primary" | "secondary" | "danger" | "neutral" | "current";
5
+ export type SpinnerLabelPlacement = "hidden" | "end" | "bottom";
6
+ export interface SpinnerProps extends Omit<React.ComponentPropsWithoutRef<"span">, "className"> {
7
+ /**
8
+ * Which indicator to draw. All four are the same size and cost the same —
9
+ * this is a question of voice, not of capability.
10
+ *
11
+ * `ring` is a rotating comet, the neutral default. `dots` is three bouncing
12
+ * dots, which reads as friendlier and suits inline text. `bars` is eight
13
+ * fading spokes — the only variant whose animation is identical with and
14
+ * without reduced motion, so it is the safest choice for something that must
15
+ * look the same for everyone. `pulse` is a breathing halo, best for ambient
16
+ * "still working" states rather than for blocking ones.
17
+ * @default "ring"
18
+ */
19
+ variant?: SpinnerVariant;
20
+ /**
21
+ * Diameter of the indicator — `1rem`, `1.5rem` or `2rem`. Every variant is
22
+ * laid out as a fraction of it, so all four occupy exactly the same box and
23
+ * can be swapped without moving anything around them.
24
+ * @default "md"
25
+ */
26
+ size?: SpinnerSize;
27
+ /**
28
+ * Which semantic colour set the indicator draws from. `current` takes
29
+ * `currentColor` instead, which is what makes a spinner dropped inside a
30
+ * button or a link match the text beside it.
31
+ * @default "primary"
32
+ */
33
+ tone?: SpinnerTone;
34
+ /**
35
+ * What the spinner is waiting on. This is the only thing that reaches a
36
+ * screen reader — the indicator itself is `aria-hidden`, because a picture
37
+ * of motion is not information.
38
+ *
39
+ * Say what is happening rather than that something is: "Loading invoices"
40
+ * tells someone whether the wait concerns them; "Loading" does not.
41
+ * @default "Loading"
42
+ */
43
+ label?: string;
44
+ /**
45
+ * Where the label goes. `hidden` keeps it in the accessibility tree but out
46
+ * of the paint; `end` and `bottom` also show it, which is what you want for
47
+ * a wait long enough that the user deserves to know what it is for.
48
+ * @default "hidden"
49
+ */
50
+ labelPlacement?: SpinnerLabelPlacement;
51
+ /**
52
+ * Stops the spinner announcing itself: no `role="status"`, and no hidden
53
+ * label.
54
+ *
55
+ * Use it whenever something else already announces the wait — a `Button`
56
+ * with `loading`, a panel that sets `aria-busy`, a live region that swaps in
57
+ * the loaded content. Two announcements for one wait is worse than one, and
58
+ * a page that mounts six spinners with six live regions is unusable.
59
+ *
60
+ * A label you asked to SHOW stays visible and stays in the accessibility
61
+ * tree, as ordinary text. Text that is on screen but hidden from assistive
62
+ * technology is a bug in its own right, so `decorative` will not do that —
63
+ * it only ever removes the live region and the invisible label.
64
+ * @default false
65
+ */
66
+ decorative?: boolean;
67
+ /**
68
+ * Additional class name(s). Applied after the internal styles so consumer
69
+ * utilities (e.g. Tailwind) win without needing `!important`.
70
+ */
71
+ className?: string;
72
+ }
73
+ /**
74
+ * A busy indicator, in four flavours.
75
+ *
76
+ * Base UI has no spinner primitive — there is no interaction to model and no
77
+ * state machine to get right — so this is the one component in the library
78
+ * that is not built on one. What it does have is the part everybody gets
79
+ * wrong: an indicator that is announced once and correctly, and an animation
80
+ * that stays informative when the user has asked for less motion.
81
+ *
82
+ * ```tsx
83
+ * <Spinner />
84
+ * <Spinner variant="bars" size="lg" label="Loading invoices" labelPlacement="end" />
85
+ * <Spinner decorative variant="dots" tone="current" />
86
+ * ```
87
+ *
88
+ * Styling is driven by `data-*` attributes and `--forte-spinner-*` custom
89
+ * properties, so it can be re-skinned from plain CSS or targeted with Tailwind
90
+ * arbitrary variants (`data-[variant=dots]:...`) without wrapping.
91
+ */
92
+ export declare const Spinner: React.ForwardRefExoticComponent<SpinnerProps & React.RefAttributes<HTMLSpanElement>>;
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import { t as e } from "../../Spinner-BF0uD4hR.js";
3
+ export { e as Spinner };
@@ -0,0 +1,2 @@
1
+ export { Spinner } from './Spinner';
2
+ export type { SpinnerProps, SpinnerVariant, SpinnerSize, SpinnerTone, SpinnerLabelPlacement, } from './Spinner';
@@ -0,0 +1,2 @@
1
+ import { t as e } from "../../Spinner-BF0uD4hR.js";
2
+ export { e as Spinner };
@@ -0,0 +1,80 @@
1
+ import { Switch as BaseSwitch } from '@base-ui/react/switch';
2
+ import * as React from "react";
3
+ export type SwitchSize = "sm" | "md" | "lg";
4
+ type BaseSwitchRootProps = React.ComponentPropsWithoutRef<typeof BaseSwitch.Root>;
5
+ export interface SwitchProps extends Omit<BaseSwitchRootProps, "className" | "children"> {
6
+ /**
7
+ * Size of the switch. Track, thumb and travel distance all scale together,
8
+ * so the thumb always lands flush against the end of the track.
9
+ * @default "md"
10
+ */
11
+ size?: SwitchSize;
12
+ /**
13
+ * Draw a checkmark inside the thumb while the switch is on.
14
+ *
15
+ * This is the switch's non-positional state cue, and it is why the default
16
+ * is `true`: a user who cannot perceive the thumb sliding still gets a
17
+ * glyph appearing. Turning it off leaves colour as the only cue that does
18
+ * not depend on noticing movement.
19
+ * @default true
20
+ */
21
+ stateIcon?: boolean;
22
+ /**
23
+ * Whether the rendered element is a native `<button>`. Base UI defaults
24
+ * this to `false` here — the opposite of trigger-style parts — because the
25
+ * root renders a `<span>` so that an enclosing `<label>` stays valid HTML.
26
+ *
27
+ * Set it (together with `render={<button />}`) for the sibling-label
28
+ * `htmlFor`/`id` pattern. Note that it also moves `id`: with `nativeButton`
29
+ * the `id` lands on the root element, otherwise on the hidden input.
30
+ * @default false
31
+ */
32
+ nativeButton?: boolean | undefined;
33
+ /**
34
+ * The id of the hidden `<input>` element — or of the root element when
35
+ * `nativeButton` is `true`. Point a sibling `<label htmlFor>` at whichever
36
+ * of the two your `nativeButton` setting produces.
37
+ */
38
+ id?: string | undefined;
39
+ /**
40
+ * Additional class name(s) for the track. Applied after the internal styles
41
+ * so consumer utilities (e.g. Tailwind) win without needing `!important`.
42
+ */
43
+ className?: string;
44
+ /**
45
+ * Additional class name(s) for the thumb, for the same reason.
46
+ */
47
+ thumbClassName?: string;
48
+ }
49
+ /**
50
+ * A switch built on Base UI's unstyled `Switch` primitive.
51
+ *
52
+ * Labeling — a switch has no text of its own, so it needs one of:
53
+ *
54
+ * ```tsx
55
+ * // Simplest correct pattern: an enclosing label.
56
+ * <label><Switch /> Notifications</label>
57
+ *
58
+ * // Sibling label. Needs a native button so htmlFor/id resolve; with
59
+ * // nativeButton the id lands on the root rather than the hidden input.
60
+ * <label htmlFor="notify">Notifications</label>
61
+ * <Switch id="notify" nativeButton render={<button />} />
62
+ *
63
+ * // A native button INSIDE a wrapping label needs the render callback, so
64
+ * // the hidden input is placed outside the label and the HTML stays valid.
65
+ * <Switch
66
+ * nativeButton
67
+ * render={(buttonProps) => (
68
+ * <label><button {...buttonProps} /> Notifications</label>
69
+ * )}
70
+ * />
71
+ * ```
72
+ *
73
+ * Motion — the thumb's position *is* the state, not decoration, so its travel
74
+ * is never multiplied by `--forte-motion-ok`. Under reduced motion the thumb
75
+ * still moves; only the spring flattens, because the duration token it rides
76
+ * on shortens. The track colour, the thumb colour and the checkmark change
77
+ * alongside it so state never rests on movement alone.
78
+ */
79
+ export declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLElement>>;
80
+ export {};
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import { t as e } from "../../Switch-OBewMMvM.js";
3
+ export { e as Switch };
@@ -0,0 +1,2 @@
1
+ export { Switch } from './Switch';
2
+ export type { SwitchProps, SwitchSize } from './Switch';
@@ -0,0 +1,2 @@
1
+ import { t as e } from "../../Switch-OBewMMvM.js";
2
+ export { e as Switch };
@@ -0,0 +1,125 @@
1
+ import { Tabs as BaseTabs } from '@base-ui/react/tabs';
2
+ import * as React from "react";
3
+ export type TabsVariant = "line" | "pill";
4
+ export type TabsOverflow = "scroll" | "visible";
5
+ type BaseRootProps = React.ComponentPropsWithoutRef<typeof BaseTabs.Root>;
6
+ type BaseListProps = React.ComponentPropsWithoutRef<typeof BaseTabs.List>;
7
+ type BaseTabProps = React.ComponentPropsWithoutRef<typeof BaseTabs.Tab>;
8
+ type BaseIndicatorProps = React.ComponentPropsWithoutRef<typeof BaseTabs.Indicator>;
9
+ type BasePanelProps = React.ComponentPropsWithoutRef<typeof BaseTabs.Panel>;
10
+ export interface TabsRootProps extends Omit<BaseRootProps, "className"> {
11
+ /**
12
+ * Which indicator treatment the tab strip uses. `"line"` draws a rail with a
13
+ * sliding underline; `"pill"` draws a filled pill that slides behind the
14
+ * active tab. Both are the same indicator element moved by the same CSS
15
+ * variables — only the geometry differs.
16
+ * @default "line"
17
+ */
18
+ variant?: TabsVariant;
19
+ /**
20
+ * What a strip with more tabs than room does. `"scroll"` puts the tabs in a
21
+ * `ScrollArea` that only engages once they stop fitting — the overflowing
22
+ * end fades out, a swipe or a drag brings it back, and activating a tab
23
+ * scrolls it into view. `"visible"` restores the plain flex row, which
24
+ * spills out of its container instead; take it when the strip sits in a
25
+ * layout that already handles the overflow.
26
+ *
27
+ * A vertical strip needs a height to scroll against: the scroller is capped
28
+ * at the height of `Tabs.Root`, so give the root one (or a `max-height`) and
29
+ * the strip scrolls beside a panel that does not.
30
+ * @default "scroll"
31
+ */
32
+ overflow?: TabsOverflow;
33
+ /**
34
+ * Additional class name(s). Applied after the internal styles so consumer
35
+ * utilities (e.g. Tailwind) win without needing `!important`.
36
+ */
37
+ className?: string;
38
+ }
39
+ export interface TabsListProps extends Omit<BaseListProps, "className" | "activateOnFocus" | "loopFocus"> {
40
+ /**
41
+ * Whether arrow-key focus also activates the tab it lands on. Left `false`
42
+ * so arrow keys only move focus and activation happens on Enter or Space —
43
+ * automatic activation loads every panel the user arrows past, which is
44
+ * hostile when a panel fetches data.
45
+ * @default false
46
+ */
47
+ activateOnFocus?: boolean;
48
+ /**
49
+ * Whether arrow-key focus wraps from the last tab back to the first.
50
+ * @default true
51
+ */
52
+ loopFocus?: boolean;
53
+ /**
54
+ * Additional class name(s). Applied after the internal styles so consumer
55
+ * utilities (e.g. Tailwind) win without needing `!important`.
56
+ */
57
+ className?: string;
58
+ }
59
+ export interface TabsTabProps extends Omit<BaseTabProps, "className"> {
60
+ /**
61
+ * Additional class name(s). Applied after the internal styles so consumer
62
+ * utilities (e.g. Tailwind) win without needing `!important`.
63
+ */
64
+ className?: string;
65
+ }
66
+ export interface TabsIndicatorProps extends Omit<BaseIndicatorProps, "className" | "renderBeforeHydration"> {
67
+ /**
68
+ * Whether to emit a tiny inline script that positions the indicator before
69
+ * React hydrates. Defaults to `true` here rather than Base UI's `false`:
70
+ * without it a server-rendered tab strip shows no indicator at all until
71
+ * hydration finishes, which reads as a broken selection.
72
+ * @default true
73
+ */
74
+ renderBeforeHydration?: boolean;
75
+ /**
76
+ * Additional class name(s). Applied after the internal styles so consumer
77
+ * utilities (e.g. Tailwind) win without needing `!important`.
78
+ */
79
+ className?: string;
80
+ }
81
+ export interface TabsPanelProps extends Omit<BasePanelProps, "className" | "keepMounted"> {
82
+ /**
83
+ * Whether the panel stays in the DOM while hidden. Required if you want the
84
+ * exit transition to play, or if the panel holds scroll position or
85
+ * uncommitted form state that should survive a round trip.
86
+ * @default false
87
+ */
88
+ keepMounted?: boolean;
89
+ /**
90
+ * Additional class name(s). Applied after the internal styles so consumer
91
+ * utilities (e.g. Tailwind) win without needing `!important`.
92
+ */
93
+ className?: string;
94
+ }
95
+ /**
96
+ * Tabs built on Base UI's unstyled `Tabs` primitive.
97
+ *
98
+ * ```tsx
99
+ * <Tabs.Root defaultValue="overview" variant="pill">
100
+ * <Tabs.List>
101
+ * <Tabs.Tab value="overview">Overview</Tabs.Tab>
102
+ * <Tabs.Tab value="activity">Activity</Tabs.Tab>
103
+ * <Tabs.Indicator />
104
+ * </Tabs.List>
105
+ * <Tabs.Panel value="overview">…</Tabs.Panel>
106
+ * <Tabs.Panel value="activity">…</Tabs.Panel>
107
+ * </Tabs.Root>
108
+ * ```
109
+ *
110
+ * Arrow keys move focus along the strip; Enter or Space activates. A strip
111
+ * with more tabs than room scrolls rather than spilling out of its container,
112
+ * and activating a tab that is off the edge brings it into view — set
113
+ * `overflow="visible"` on `Tabs.Root` to opt out. Styling is driven entirely by
114
+ * `data-*` attributes and `--forte-tabs-*` custom properties, so it can be
115
+ * re-skinned from plain CSS or targeted with Tailwind arbitrary variants
116
+ * (`data-[variant=pill]:...`) without wrapping.
117
+ */
118
+ export declare const Tabs: {
119
+ Root: React.ForwardRefExoticComponent<TabsRootProps & React.RefAttributes<HTMLDivElement>>;
120
+ List: React.ForwardRefExoticComponent<TabsListProps & React.RefAttributes<HTMLDivElement>>;
121
+ Tab: React.ForwardRefExoticComponent<TabsTabProps & React.RefAttributes<HTMLElement>>;
122
+ Indicator: React.ForwardRefExoticComponent<TabsIndicatorProps & React.RefAttributes<HTMLSpanElement>>;
123
+ Panel: React.ForwardRefExoticComponent<TabsPanelProps & React.RefAttributes<HTMLDivElement>>;
124
+ };
125
+ export {};
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import { t as e } from "../../Tabs-LgkSbPSF.js";
3
+ export { e as Tabs };
@@ -0,0 +1,2 @@
1
+ export { Tabs } from './Tabs';
2
+ export type { TabsVariant, TabsOverflow, TabsRootProps, TabsListProps, TabsTabProps, TabsIndicatorProps, TabsPanelProps, } from './Tabs';
@@ -0,0 +1,2 @@
1
+ import { t as e } from "../../Tabs-LgkSbPSF.js";
2
+ export { e as Tabs };