@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.
- package/README.md +240 -0
- package/dist/Accordion-9JunkjgY.js +111 -0
- package/dist/Alert-Cn_WUF3L.js +183 -0
- package/dist/AspectRatio-gSjpTVk-.js +39 -0
- package/dist/Avatar-BuitDluH.js +87 -0
- package/dist/Badge-sArNWMre.js +33 -0
- package/dist/Breadcrumb-Cq7tFtMX.js +170 -0
- package/dist/Button-AiyKnx5I.js +42 -0
- package/dist/ButtonGroup-C-CrwPXP.js +54 -0
- package/dist/Calendar-D7Q-QJ_e.js +503 -0
- package/dist/Checkbox-DfNbmOed.js +56 -0
- package/dist/Collapsible-D8UKiGip.js +86 -0
- package/dist/ColorPicker-B-eCI31W.js +612 -0
- package/dist/Combobox-D-BN-Tvp.js +302 -0
- package/dist/ContextMenu-D81uDaMG.js +44 -0
- package/dist/DatePicker-CfkMsaI-.js +192 -0
- package/dist/Dialog-_n8FpFs5.js +432 -0
- package/dist/Drawer-DKQF3OO7.js +158 -0
- package/dist/Field-FLFEO70D.js +58 -0
- package/dist/Fieldset-CYhh71Qt.js +28 -0
- package/dist/Form-DVPmW9XV.js +17 -0
- package/dist/Input-BgGWhO2q.js +18 -0
- package/dist/InputGroup-DsZyDXNn.js +89 -0
- package/dist/Menu-CKu9xE2h.js +261 -0
- package/dist/Menubar-Dax027Db.js +19 -0
- package/dist/NavList-DGvcIoJm.js +176 -0
- package/dist/NavigationMenu-BayQkUUb.js +209 -0
- package/dist/NumberField-P55SA8T7.js +191 -0
- package/dist/OTPField-CjHvBNSN.js +55 -0
- package/dist/Popover-BXhn2Wwt.js +142 -0
- package/dist/PreviewCard-Dnitrky0.js +99 -0
- package/dist/Progress-BlomDp-X.js +81 -0
- package/dist/ProgressCircle-j6XBl0fk.js +112 -0
- package/dist/Radio-BIcX4INJ.js +37 -0
- package/dist/Resizable-7nJJM97e.js +609 -0
- package/dist/ScrollArea-CBMGJ6hh.js +83 -0
- package/dist/Select-BP-zvdXm.js +237 -0
- package/dist/Separator-DewJBzaJ.js +21 -0
- package/dist/Skeleton-zr6ObCCq.js +79 -0
- package/dist/Slider-Bh8_cti1.js +104 -0
- package/dist/Spinner-BF0uD4hR.js +53 -0
- package/dist/Switch-OBewMMvM.js +39 -0
- package/dist/Tabs-LgkSbPSF.js +132 -0
- package/dist/Textarea-CqZJL41e.js +51 -0
- package/dist/Toast-BWayxAcd.js +304 -0
- package/dist/Toggle-BrhMnkF5.js +45 -0
- package/dist/Toolbar-OmOVCk3i.js +88 -0
- package/dist/Tooltip-CI4chsRw.js +101 -0
- package/dist/clsx-By2n9mTe.js +16 -0
- package/dist/cn.d.ts +8 -0
- package/dist/cn.js +11 -0
- package/dist/components/accordion/Accordion.d.ts +117 -0
- package/dist/components/accordion/Accordion.js +3 -0
- package/dist/components/accordion/index.d.ts +2 -0
- package/dist/components/accordion/index.js +2 -0
- package/dist/components/alert/Alert.d.ts +167 -0
- package/dist/components/alert/Alert.js +3 -0
- package/dist/components/alert/index.d.ts +2 -0
- package/dist/components/alert/index.js +2 -0
- package/dist/components/aspect-ratio/AspectRatio.d.ts +128 -0
- package/dist/components/aspect-ratio/AspectRatio.js +3 -0
- package/dist/components/aspect-ratio/index.d.ts +2 -0
- package/dist/components/aspect-ratio/index.js +2 -0
- package/dist/components/avatar/Avatar.d.ts +176 -0
- package/dist/components/avatar/Avatar.js +3 -0
- package/dist/components/avatar/index.d.ts +2 -0
- package/dist/components/avatar/index.js +2 -0
- package/dist/components/badge/Badge.d.ts +117 -0
- package/dist/components/badge/Badge.js +3 -0
- package/dist/components/badge/index.d.ts +2 -0
- package/dist/components/badge/index.js +2 -0
- package/dist/components/breadcrumb/Breadcrumb.d.ts +244 -0
- package/dist/components/breadcrumb/Breadcrumb.js +3 -0
- package/dist/components/breadcrumb/index.d.ts +2 -0
- package/dist/components/breadcrumb/index.js +2 -0
- package/dist/components/button/Button.d.ts +73 -0
- package/dist/components/button/Button.js +3 -0
- package/dist/components/button/index.d.ts +2 -0
- package/dist/components/button/index.js +2 -0
- package/dist/components/button-group/ButtonGroup.d.ts +113 -0
- package/dist/components/button-group/ButtonGroup.js +3 -0
- package/dist/components/button-group/index.d.ts +2 -0
- package/dist/components/button-group/index.js +2 -0
- package/dist/components/calendar/Calendar.d.ts +201 -0
- package/dist/components/calendar/Calendar.js +3 -0
- package/dist/components/calendar/index.d.ts +2 -0
- package/dist/components/calendar/index.js +2 -0
- package/dist/components/checkbox/Checkbox.d.ts +130 -0
- package/dist/components/checkbox/Checkbox.js +3 -0
- package/dist/components/checkbox/index.d.ts +2 -0
- package/dist/components/checkbox/index.js +2 -0
- package/dist/components/collapsible/Collapsible.d.ts +91 -0
- package/dist/components/collapsible/Collapsible.js +3 -0
- package/dist/components/collapsible/index.d.ts +2 -0
- package/dist/components/collapsible/index.js +2 -0
- package/dist/components/color-picker/ColorPicker.d.ts +553 -0
- package/dist/components/color-picker/ColorPicker.js +4 -0
- package/dist/components/color-picker/color.d.ts +102 -0
- package/dist/components/color-picker/color.js +249 -0
- package/dist/components/color-picker/index.d.ts +2 -0
- package/dist/components/color-picker/index.js +3 -0
- package/dist/components/combobox/Combobox.d.ts +553 -0
- package/dist/components/combobox/Combobox.js +3 -0
- package/dist/components/combobox/index.d.ts +2 -0
- package/dist/components/combobox/index.js +2 -0
- package/dist/components/context-menu/ContextMenu.d.ts +103 -0
- package/dist/components/context-menu/ContextMenu.js +3 -0
- package/dist/components/context-menu/index.d.ts +3 -0
- package/dist/components/context-menu/index.js +2 -0
- package/dist/components/date-picker/DatePicker.d.ts +268 -0
- package/dist/components/date-picker/DatePicker.js +3 -0
- package/dist/components/date-picker/index.d.ts +2 -0
- package/dist/components/date-picker/index.js +2 -0
- package/dist/components/dialog/Dialog.d.ts +567 -0
- package/dist/components/dialog/Dialog.js +3 -0
- package/dist/components/dialog/index.d.ts +2 -0
- package/dist/components/dialog/index.js +2 -0
- package/dist/components/drawer/Drawer.d.ts +351 -0
- package/dist/components/drawer/Drawer.js +3 -0
- package/dist/components/drawer/index.d.ts +2 -0
- package/dist/components/drawer/index.js +2 -0
- package/dist/components/field/Field.d.ts +170 -0
- package/dist/components/field/Field.js +3 -0
- package/dist/components/field/index.d.ts +2 -0
- package/dist/components/field/index.js +2 -0
- package/dist/components/fieldset/Fieldset.d.ts +60 -0
- package/dist/components/fieldset/Fieldset.js +3 -0
- package/dist/components/fieldset/index.d.ts +2 -0
- package/dist/components/fieldset/index.js +2 -0
- package/dist/components/form/Form.d.ts +76 -0
- package/dist/components/form/Form.js +3 -0
- package/dist/components/form/index.d.ts +2 -0
- package/dist/components/form/index.js +2 -0
- package/dist/components/input/Input.d.ts +67 -0
- package/dist/components/input/Input.js +3 -0
- package/dist/components/input/index.d.ts +2 -0
- package/dist/components/input/index.js +2 -0
- package/dist/components/input-group/InputGroup.d.ts +214 -0
- package/dist/components/input-group/InputGroup.js +3 -0
- package/dist/components/input-group/index.d.ts +2 -0
- package/dist/components/input-group/index.js +2 -0
- package/dist/components/menu/Menu.d.ts +587 -0
- package/dist/components/menu/Menu.js +3 -0
- package/dist/components/menu/index.d.ts +2 -0
- package/dist/components/menu/index.js +2 -0
- package/dist/components/menubar/Menubar.d.ts +104 -0
- package/dist/components/menubar/Menubar.js +3 -0
- package/dist/components/menubar/index.d.ts +2 -0
- package/dist/components/menubar/index.js +2 -0
- package/dist/components/nav-list/NavList.d.ts +290 -0
- package/dist/components/nav-list/NavList.js +3 -0
- package/dist/components/nav-list/index.d.ts +2 -0
- package/dist/components/nav-list/index.js +2 -0
- package/dist/components/navigation-menu/NavigationMenu.d.ts +483 -0
- package/dist/components/navigation-menu/NavigationMenu.js +3 -0
- package/dist/components/navigation-menu/index.d.ts +2 -0
- package/dist/components/navigation-menu/index.js +2 -0
- package/dist/components/number-field/NumberField.d.ts +303 -0
- package/dist/components/number-field/NumberField.js +3 -0
- package/dist/components/number-field/index.d.ts +2 -0
- package/dist/components/number-field/index.js +2 -0
- package/dist/components/otp-field/OTPField.d.ts +206 -0
- package/dist/components/otp-field/OTPField.js +3 -0
- package/dist/components/otp-field/index.d.ts +2 -0
- package/dist/components/otp-field/index.js +2 -0
- package/dist/components/popover/Popover.d.ts +394 -0
- package/dist/components/popover/Popover.js +3 -0
- package/dist/components/popover/index.d.ts +2 -0
- package/dist/components/popover/index.js +2 -0
- package/dist/components/preview-card/PreviewCard.d.ts +307 -0
- package/dist/components/preview-card/PreviewCard.js +3 -0
- package/dist/components/preview-card/index.d.ts +2 -0
- package/dist/components/preview-card/index.js +2 -0
- package/dist/components/progress/Progress.d.ts +156 -0
- package/dist/components/progress/Progress.js +3 -0
- package/dist/components/progress/ProgressCircle.d.ts +166 -0
- package/dist/components/progress/ProgressCircle.js +3 -0
- package/dist/components/progress/index.d.ts +4 -0
- package/dist/components/progress/index.js +3 -0
- package/dist/components/radio/Radio.d.ts +144 -0
- package/dist/components/radio/Radio.js +3 -0
- package/dist/components/radio/index.d.ts +2 -0
- package/dist/components/radio/index.js +2 -0
- package/dist/components/resizable/Resizable.d.ts +211 -0
- package/dist/components/resizable/Resizable.js +3 -0
- package/dist/components/resizable/index.d.ts +2 -0
- package/dist/components/resizable/index.js +2 -0
- package/dist/components/scroll-area/ScrollArea.d.ts +113 -0
- package/dist/components/scroll-area/ScrollArea.js +3 -0
- package/dist/components/scroll-area/index.d.ts +2 -0
- package/dist/components/scroll-area/index.js +2 -0
- package/dist/components/select/Select.d.ts +345 -0
- package/dist/components/select/Select.js +3 -0
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/select/index.js +2 -0
- package/dist/components/separator/Separator.d.ts +75 -0
- package/dist/components/separator/Separator.js +3 -0
- package/dist/components/separator/index.d.ts +2 -0
- package/dist/components/separator/index.js +2 -0
- package/dist/components/skeleton/Skeleton.d.ts +169 -0
- package/dist/components/skeleton/Skeleton.js +3 -0
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/skeleton/index.js +2 -0
- package/dist/components/slider/Slider.d.ts +208 -0
- package/dist/components/slider/Slider.js +3 -0
- package/dist/components/slider/index.d.ts +2 -0
- package/dist/components/slider/index.js +2 -0
- package/dist/components/spinner/Spinner.d.ts +92 -0
- package/dist/components/spinner/Spinner.js +3 -0
- package/dist/components/spinner/index.d.ts +2 -0
- package/dist/components/spinner/index.js +2 -0
- package/dist/components/switch/Switch.d.ts +80 -0
- package/dist/components/switch/Switch.js +3 -0
- package/dist/components/switch/index.d.ts +2 -0
- package/dist/components/switch/index.js +2 -0
- package/dist/components/tabs/Tabs.d.ts +125 -0
- package/dist/components/tabs/Tabs.js +3 -0
- package/dist/components/tabs/index.d.ts +2 -0
- package/dist/components/tabs/index.js +2 -0
- package/dist/components/textarea/Textarea.d.ts +119 -0
- package/dist/components/textarea/Textarea.js +3 -0
- package/dist/components/textarea/index.d.ts +2 -0
- package/dist/components/textarea/index.js +2 -0
- package/dist/components/toast/Toast.d.ts +517 -0
- package/dist/components/toast/Toast.js +3 -0
- package/dist/components/toast/index.d.ts +2 -0
- package/dist/components/toast/index.js +2 -0
- package/dist/components/toggle/Toggle.d.ts +171 -0
- package/dist/components/toggle/Toggle.js +3 -0
- package/dist/components/toggle/index.d.ts +2 -0
- package/dist/components/toggle/index.js +2 -0
- package/dist/components/toolbar/Toolbar.d.ts +318 -0
- package/dist/components/toolbar/Toolbar.js +3 -0
- package/dist/components/toolbar/index.d.ts +2 -0
- package/dist/components/toolbar/index.js +2 -0
- package/dist/components/tooltip/Tooltip.d.ts +361 -0
- package/dist/components/tooltip/Tooltip.js +3 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tooltip/index.js +2 -0
- package/dist/index.d.ts +92 -0
- package/dist/index.js +86 -0
- package/dist/styles/Accordion.css +1 -0
- package/dist/styles/Alert.css +1 -0
- package/dist/styles/AspectRatio.css +1 -0
- package/dist/styles/Avatar.css +1 -0
- package/dist/styles/Badge.css +1 -0
- package/dist/styles/Breadcrumb.css +1 -0
- package/dist/styles/Button.css +1 -0
- package/dist/styles/ButtonGroup.css +1 -0
- package/dist/styles/Calendar.css +1 -0
- package/dist/styles/Checkbox.css +1 -0
- package/dist/styles/Collapsible.css +1 -0
- package/dist/styles/ColorPicker.css +1 -0
- package/dist/styles/Combobox.css +1 -0
- package/dist/styles/ContextMenu.css +1 -0
- package/dist/styles/DatePicker.css +1 -0
- package/dist/styles/Dialog.css +1 -0
- package/dist/styles/Drawer.css +1 -0
- package/dist/styles/Field.css +1 -0
- package/dist/styles/Fieldset.css +1 -0
- package/dist/styles/Form.css +1 -0
- package/dist/styles/Input.css +1 -0
- package/dist/styles/InputGroup.css +1 -0
- package/dist/styles/Menu.css +1 -0
- package/dist/styles/Menubar.css +1 -0
- package/dist/styles/NavList.css +1 -0
- package/dist/styles/NavigationMenu.css +1 -0
- package/dist/styles/NumberField.css +1 -0
- package/dist/styles/OTPField.css +1 -0
- package/dist/styles/Popover.css +1 -0
- package/dist/styles/PreviewCard.css +1 -0
- package/dist/styles/Progress.css +1 -0
- package/dist/styles/ProgressCircle.css +1 -0
- package/dist/styles/Radio.css +1 -0
- package/dist/styles/Resizable.css +1 -0
- package/dist/styles/ScrollArea.css +1 -0
- package/dist/styles/Select.css +1 -0
- package/dist/styles/Separator.css +1 -0
- package/dist/styles/Skeleton.css +1 -0
- package/dist/styles/Slider.css +1 -0
- package/dist/styles/Spinner.css +1 -0
- package/dist/styles/Switch.css +1 -0
- package/dist/styles/Tabs.css +1 -0
- package/dist/styles/Textarea.css +1 -0
- package/dist/styles/Toast.css +1 -0
- package/dist/styles/Toggle.css +1 -0
- package/dist/styles/Toolbar.css +1 -0
- package/dist/styles/Tooltip.css +1 -0
- package/dist/styles/a11y.css +119 -0
- package/dist/styles/layers.css +39 -0
- package/dist/styles/motion.css +194 -0
- package/dist/styles/patterns.css +236 -0
- package/dist/styles/properties.css +62 -0
- package/dist/styles/reset.css +11 -0
- package/dist/styles/tailwind.css +281 -0
- package/dist/styles/theme.css +57 -0
- package/dist/styles/tokens.color.css +223 -0
- package/dist/styles/tokens.css +460 -0
- package/dist/tailwind-merge.d.ts +52 -0
- package/dist/tailwind-merge.js +52 -0
- package/docs-data/props.json +8047 -0
- package/docs-data/theming.json +9600 -0
- package/docs-data/tokens.json +4070 -0
- 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,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,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,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 {};
|