@cladd-ui/react 0.9.0 → 0.11.0
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/CHANGELOG.md +36 -0
- package/calendar/Calendar.d.ts +21 -0
- package/calendar/Calendar.d.ts.map +1 -0
- package/calendar/Calendar.js +158 -0
- package/calendar/Calendar.js.map +1 -0
- package/calendar/CalendarIcon.d.ts +2 -0
- package/calendar/CalendarIcon.d.ts.map +1 -0
- package/calendar/CalendarIcon.js +5 -0
- package/calendar/CalendarIcon.js.map +1 -0
- package/calendar/DatePicker.d.ts +91 -0
- package/calendar/DatePicker.d.ts.map +1 -0
- package/calendar/DatePicker.js +79 -0
- package/calendar/DatePicker.js.map +1 -0
- package/calendar/index.d.ts +4 -0
- package/calendar/index.d.ts.map +1 -0
- package/calendar/index.js +3 -0
- package/calendar/index.js.map +1 -0
- package/components/AccordionContext.d.ts +22 -0
- package/components/AccordionContext.d.ts.map +1 -0
- package/components/AccordionContext.js +14 -0
- package/components/AccordionContext.js.map +1 -0
- package/components/AccordionItem.d.ts +27 -0
- package/components/AccordionItem.d.ts.map +1 -0
- package/components/AccordionItem.js +36 -0
- package/components/AccordionItem.js.map +1 -0
- package/components/AccordionRoot.d.ts +47 -0
- package/components/AccordionRoot.d.ts.map +1 -0
- package/components/AccordionRoot.js +53 -0
- package/components/AccordionRoot.js.map +1 -0
- package/components/Button.js +2 -2
- package/components/Button.js.map +1 -1
- package/components/Checkbox.js +2 -2
- package/components/Checkbox.js.map +1 -1
- package/components/CollapsibleContext.d.ts +36 -0
- package/components/CollapsibleContext.d.ts.map +1 -0
- package/components/CollapsibleContext.js +24 -0
- package/components/CollapsibleContext.js.map +1 -0
- package/components/CollapsibleIndicator.d.ts +45 -0
- package/components/CollapsibleIndicator.d.ts.map +1 -0
- package/components/CollapsibleIndicator.js +34 -0
- package/components/CollapsibleIndicator.js.map +1 -0
- package/components/CollapsiblePanel.d.ts +35 -0
- package/components/CollapsiblePanel.d.ts.map +1 -0
- package/components/CollapsiblePanel.js +104 -0
- package/components/CollapsiblePanel.js.map +1 -0
- package/components/CollapsibleRoot.d.ts +35 -0
- package/components/CollapsibleRoot.d.ts.map +1 -0
- package/components/CollapsibleRoot.js +43 -0
- package/components/CollapsibleRoot.js.map +1 -0
- package/components/CollapsibleTrigger.d.ts +21 -0
- package/components/CollapsibleTrigger.d.ts.map +1 -0
- package/components/CollapsibleTrigger.js +36 -0
- package/components/CollapsibleTrigger.js.map +1 -0
- package/components/ColorEditor.d.ts +84 -0
- package/components/ColorEditor.d.ts.map +1 -0
- package/components/ColorEditor.js +517 -0
- package/components/ColorEditor.js.map +1 -0
- package/components/ColorPicker.d.ts +127 -0
- package/components/ColorPicker.d.ts.map +1 -0
- package/components/ColorPicker.js +136 -0
- package/components/ColorPicker.js.map +1 -0
- package/components/Dialog.d.ts.map +1 -1
- package/components/Dialog.js +4 -1
- package/components/Dialog.js.map +1 -1
- package/components/{FocusableLayer.d.ts → FocusRing.d.ts} +2 -2
- package/components/FocusRing.d.ts.map +1 -0
- package/components/{FocusableLayer.js → FocusRing.js} +2 -2
- package/components/FocusRing.js.map +1 -0
- package/components/Input.d.ts +2 -0
- package/components/Input.d.ts.map +1 -1
- package/components/Input.js +4 -4
- package/components/Input.js.map +1 -1
- package/components/Link.js +2 -2
- package/components/Link.js.map +1 -1
- package/components/NumberScrubber.d.ts +2 -0
- package/components/NumberScrubber.d.ts.map +1 -1
- package/components/NumberScrubber.js +3 -3
- package/components/NumberScrubber.js.map +1 -1
- package/components/OTPField.d.ts.map +1 -1
- package/components/OTPField.js +2 -2
- package/components/OTPField.js.map +1 -1
- package/components/Popover.d.ts.map +1 -1
- package/components/Popover.js +9 -2
- package/components/Popover.js.map +1 -1
- package/components/Popup.d.ts.map +1 -1
- package/components/Popup.js +2 -1
- package/components/Popup.js.map +1 -1
- package/components/Radio.js +2 -2
- package/components/Radio.js.map +1 -1
- package/components/Segmented.d.ts +7 -1
- package/components/Segmented.d.ts.map +1 -1
- package/components/Segmented.js +4 -2
- package/components/Segmented.js.map +1 -1
- package/components/Select.d.ts +2 -0
- package/components/Select.d.ts.map +1 -1
- package/components/Select.js +5 -5
- package/components/Select.js.map +1 -1
- package/components/Slider.d.ts +34 -3
- package/components/Slider.d.ts.map +1 -1
- package/components/Slider.js +27 -14
- package/components/Slider.js.map +1 -1
- package/components/Surface.d.ts.map +1 -1
- package/components/Surface.js +3 -2
- package/components/Surface.js.map +1 -1
- package/components/SurfaceContext.d.ts +20 -1
- package/components/SurfaceContext.d.ts.map +1 -1
- package/components/SurfaceContext.js +13 -2
- package/components/SurfaceContext.js.map +1 -1
- package/components/SurfaceCut.d.ts.map +1 -1
- package/components/SurfaceCut.js +3 -2
- package/components/SurfaceCut.js.map +1 -1
- package/components/Switch.js +2 -2
- package/components/Switch.js.map +1 -1
- package/components/Tab.d.ts +19 -0
- package/components/Tab.d.ts.map +1 -0
- package/components/Tab.js +22 -0
- package/components/Tab.js.map +1 -0
- package/components/TabPanel.d.ts +31 -0
- package/components/TabPanel.d.ts.map +1 -0
- package/components/TabPanel.js +19 -0
- package/components/TabPanel.js.map +1 -0
- package/components/Tabs.d.ts +33 -0
- package/components/Tabs.d.ts.map +1 -0
- package/components/Tabs.js +36 -0
- package/components/Tabs.js.map +1 -0
- package/components/TabsContext.d.ts +25 -0
- package/components/TabsContext.d.ts.map +1 -0
- package/components/TabsContext.js +18 -0
- package/components/TabsContext.js.map +1 -0
- package/components/TabsList.d.ts +12 -0
- package/components/TabsList.d.ts.map +1 -0
- package/components/TabsList.js +52 -0
- package/components/TabsList.js.map +1 -0
- package/components/Textarea.d.ts +2 -0
- package/components/Textarea.d.ts.map +1 -1
- package/components/Textarea.js +3 -3
- package/components/Textarea.js.map +1 -1
- package/components/ThemeContext.d.ts +26 -0
- package/components/ThemeContext.d.ts.map +1 -1
- package/components/ThemeContext.js.map +1 -1
- package/components/ToggleButton.d.ts +44 -0
- package/components/ToggleButton.d.ts.map +1 -0
- package/components/ToggleButton.js +66 -0
- package/components/ToggleButton.js.map +1 -0
- package/components/ToggleGroup.d.ts +50 -0
- package/components/ToggleGroup.d.ts.map +1 -0
- package/components/ToggleGroup.js +57 -0
- package/components/ToggleGroup.js.map +1 -0
- package/components/ToggleGroupContext.d.ts +31 -0
- package/components/ToggleGroupContext.d.ts.map +1 -0
- package/components/ToggleGroupContext.js +14 -0
- package/components/ToggleGroupContext.js.map +1 -0
- package/components/TooltipPrimitive.d.ts.map +1 -1
- package/components/TooltipPrimitive.js +4 -1
- package/components/TooltipPrimitive.js.map +1 -1
- package/components/icons/ArrowLeftIcon.d.ts +2 -0
- package/components/icons/ArrowLeftIcon.d.ts.map +1 -0
- package/components/icons/ArrowLeftIcon.js +5 -0
- package/components/icons/ArrowLeftIcon.js.map +1 -0
- package/components/icons/ChevronLeftIcon.d.ts +2 -0
- package/components/icons/ChevronLeftIcon.d.ts.map +1 -0
- package/components/icons/ChevronLeftIcon.js +5 -0
- package/components/icons/ChevronLeftIcon.js.map +1 -0
- package/components/icons/FlipIcon.d.ts +2 -0
- package/components/icons/FlipIcon.d.ts.map +1 -0
- package/components/icons/FlipIcon.js +5 -0
- package/components/icons/FlipIcon.js.map +1 -0
- package/components/icons/GradientColorIcon.d.ts +2 -0
- package/components/icons/GradientColorIcon.d.ts.map +1 -0
- package/components/icons/GradientColorIcon.js +5 -0
- package/components/icons/GradientColorIcon.js.map +1 -0
- package/components/icons/SolidColorIcon.d.ts +2 -0
- package/components/icons/SolidColorIcon.d.ts.map +1 -0
- package/components/icons/SolidColorIcon.js +5 -0
- package/components/icons/SolidColorIcon.js.map +1 -0
- package/hooks/use-surface.d.ts +6 -0
- package/hooks/use-surface.d.ts.map +1 -1
- package/hooks/use-surface.js +7 -0
- package/hooks/use-surface.js.map +1 -1
- package/index.d.ts +20 -1
- package/index.d.ts.map +1 -1
- package/index.js +18 -0
- package/index.js.map +1 -1
- package/package.json +11 -1
- package/shared/color.d.ts +122 -0
- package/shared/color.d.ts.map +1 -0
- package/shared/color.js +319 -0
- package/shared/color.js.map +1 -0
- package/styles/colors.css +4 -4
- package/components/FocusableLayer.d.ts.map +0 -1
- package/components/FocusableLayer.js.map +0 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useComponentDefaults } from '../hooks/use-component-defaults.js';
|
|
3
|
+
import { cn } from '../shared/cn.js';
|
|
4
|
+
import { tabId, tabPanelId, useTabsContext } from './TabsContext.js';
|
|
5
|
+
/**
|
|
6
|
+
* The content area for a tab. Renders a single unstyled element carrying the
|
|
7
|
+
* `tabpanel` role and the aria wiring back to its `Tab`; all extra props pass
|
|
8
|
+
* through to it so it can be styled. Mounts its children only when its `value`
|
|
9
|
+
* is selected (or always, when `keepMounted`).
|
|
10
|
+
*/
|
|
11
|
+
export const TabPanel = (props) => {
|
|
12
|
+
const { value: selectedValue, baseId } = useTabsContext();
|
|
13
|
+
const { children, className = '', value, keepMounted = false, as: Component = 'div', ref, ...rest } = useComponentDefaults('TabPanel', props);
|
|
14
|
+
const selected = selectedValue === value;
|
|
15
|
+
if (!selected && !keepMounted)
|
|
16
|
+
return null;
|
|
17
|
+
return (_jsx(Component, { role: "tabpanel", id: tabPanelId(baseId, value), "aria-labelledby": tabId(baseId, value), hidden: !selected || undefined, tabIndex: 0, "data-selected": selected || undefined, className: cn('cladd-tab-panel', className), ref: ref, ...rest, children: children }));
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=TabPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabPanel.js","sourceRoot":"","sources":["../../../src/components/TabPanel.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA6BlE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,KAAuB,EACvB,EAAE;IACF,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;IAC1D,MAAM,EACJ,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,KAAK,EACL,WAAW,GAAG,KAAK,EACnB,EAAE,EAAE,SAAS,GAAG,KAAyB,EACzC,GAAG,EACH,GAAG,IAAI,EACR,GAAG,oBAAoB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,aAAa,KAAK,KAAK,CAAC;IACzC,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE3C,OAAO,CACL,KAAC,SAAS,IACR,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,qBACZ,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EACrC,MAAM,EAAE,CAAC,QAAQ,IAAI,SAAS,EAC9B,QAAQ,EAAE,CAAC,mBACI,QAAQ,IAAI,SAAS,EACpC,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAC3C,GAAG,EAAE,GAAG,KACJ,IAAI,YAEP,QAAQ,GACC,CACb,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
interface TabsOwnProps {
|
|
3
|
+
/** The tab strip (`TabsList` with `Tab`s) and the `TabPanel`s. */
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
/** Controlled selected tab value. When provided, internal state is bypassed. */
|
|
6
|
+
value?: string;
|
|
7
|
+
/** Initially selected tab value (uncontrolled). Ignored when `value` is provided. */
|
|
8
|
+
defaultValue?: string;
|
|
9
|
+
/** Fires whenever the selected tab changes (click or keyboard). */
|
|
10
|
+
onValueChange?: (value: string) => void;
|
|
11
|
+
}
|
|
12
|
+
export type TabsProps = TabsOwnProps;
|
|
13
|
+
/** Shape of `Tabs` defaults that can be supplied via `CladdProvider`'s `defaults` prop. */
|
|
14
|
+
export type TabsDefaultProps = Partial<Omit<TabsOwnProps, 'children' | 'value' | 'defaultValue' | 'onValueChange'>>;
|
|
15
|
+
/**
|
|
16
|
+
* Stateful, non-visual root for a set of tabs. Owns the selected value
|
|
17
|
+
* (controlled via `value`/`onValueChange` or uncontrolled via `defaultValue`)
|
|
18
|
+
* and publishes it to `TabsList`/`Tab`/`TabPanel` through context - it renders
|
|
19
|
+
* no DOM of its own.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* <Tabs defaultValue="overview">
|
|
23
|
+
* <TabsList>
|
|
24
|
+
* <Tab value="overview">Overview</Tab>
|
|
25
|
+
* <Tab value="activity">Activity</Tab>
|
|
26
|
+
* </TabsList>
|
|
27
|
+
* <TabPanel value="overview">…</TabPanel>
|
|
28
|
+
* <TabPanel value="activity">…</TabPanel>
|
|
29
|
+
* </Tabs>
|
|
30
|
+
*/
|
|
31
|
+
export declare const Tabs: (props: TabsProps) => import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=Tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,OAAO,CAAC;AAKnD,UAAU,YAAY;IACpB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC;AAErC,2FAA2F;AAC3F,MAAM,MAAM,gBAAgB,GAAG,OAAO,CACpC,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,OAAO,GAAG,cAAc,GAAG,eAAe,CAAC,CAC5E,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,IAAI,GAAI,OAAO,SAAS,4CAwBpC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useId, useState } from 'react';
|
|
3
|
+
import { useComponentDefaults } from '../hooks/use-component-defaults.js';
|
|
4
|
+
import { TabsContextProvider } from './TabsContext.js';
|
|
5
|
+
/**
|
|
6
|
+
* Stateful, non-visual root for a set of tabs. Owns the selected value
|
|
7
|
+
* (controlled via `value`/`onValueChange` or uncontrolled via `defaultValue`)
|
|
8
|
+
* and publishes it to `TabsList`/`Tab`/`TabPanel` through context - it renders
|
|
9
|
+
* no DOM of its own.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <Tabs defaultValue="overview">
|
|
13
|
+
* <TabsList>
|
|
14
|
+
* <Tab value="overview">Overview</Tab>
|
|
15
|
+
* <Tab value="activity">Activity</Tab>
|
|
16
|
+
* </TabsList>
|
|
17
|
+
* <TabPanel value="overview">…</TabPanel>
|
|
18
|
+
* <TabPanel value="activity">…</TabPanel>
|
|
19
|
+
* </Tabs>
|
|
20
|
+
*/
|
|
21
|
+
export const Tabs = (props) => {
|
|
22
|
+
const baseId = useId();
|
|
23
|
+
const { children, value: valueProp, defaultValue, onValueChange, } = useComponentDefaults('Tabs', props);
|
|
24
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
25
|
+
const isControlled = valueProp !== undefined;
|
|
26
|
+
const value = isControlled ? valueProp : internalValue;
|
|
27
|
+
const setValue = (next) => {
|
|
28
|
+
if (next === value)
|
|
29
|
+
return;
|
|
30
|
+
if (!isControlled)
|
|
31
|
+
setInternalValue(next);
|
|
32
|
+
onValueChange?.(next);
|
|
33
|
+
};
|
|
34
|
+
return (_jsx(TabsContextProvider, { value: { value, setValue, baseId }, children: children }));
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=Tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../src/components/Tabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAoBpD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAgB,EAAE,EAAE;IACvC,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,EACJ,QAAQ,EACR,KAAK,EAAE,SAAS,EAChB,YAAY,EACZ,aAAa,GACd,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAExC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,SAAS,KAAK,SAAS,CAAC;IAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;IAEvD,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;QAChC,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO;QAC3B,IAAI,CAAC,YAAY;YAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC1C,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,mBAAmB,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,YACpD,QAAQ,GACW,CACvB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Selection state published by `Tabs` to its descendant `TabsList`, `Tab`, and `TabPanel`.
|
|
4
|
+
*
|
|
5
|
+
* Each reads it via `useTabsContext()` - `Tab` to derive its `active` state and wire selection, `TabPanel` to decide whether to mount.
|
|
6
|
+
*/
|
|
7
|
+
interface TabsContextValue {
|
|
8
|
+
/** Currently selected tab value (`undefined` when nothing is selected). */
|
|
9
|
+
value: string | undefined;
|
|
10
|
+
/** Select a tab by its `value`. No-ops when the value is already selected. */
|
|
11
|
+
setValue: (value: string) => void;
|
|
12
|
+
/** Stable id used to wire `aria-controls`/`aria-labelledby` between tabs and panels. */
|
|
13
|
+
baseId: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function useTabsContext(): TabsContextValue;
|
|
16
|
+
export declare function TabsContextProvider(props: {
|
|
17
|
+
value: TabsContextValue;
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
/** Id of the `Tab` button for a given value, within a `Tabs` instance. */
|
|
21
|
+
export declare const tabId: (baseId: string, value: string) => string;
|
|
22
|
+
/** Id of the `TabPanel` for a given value, within a `Tabs` instance. */
|
|
23
|
+
export declare const tabPanelId: (baseId: string, value: string) => string;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=TabsContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsContext.d.ts","sourceRoot":"","sources":["../../../src/components/TabsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7D;;;;GAIG;AACH,UAAU,gBAAgB;IACxB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,wFAAwF;IACxF,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,wBAAgB,cAAc,IAAI,gBAAgB,CAQjD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAMA;AAED,0EAA0E;AAC1E,eAAO,MAAM,KAAK,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,WACzB,CAAC;AAE3B,wEAAwE;AACxE,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,WAC5B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
const TabsContext = createContext(null);
|
|
4
|
+
export function useTabsContext() {
|
|
5
|
+
const ctx = useContext(TabsContext);
|
|
6
|
+
if (!ctx) {
|
|
7
|
+
throw new Error('Cladd: `TabsList`, `Tab` and `TabPanel` must be rendered inside a `Tabs` root.');
|
|
8
|
+
}
|
|
9
|
+
return ctx;
|
|
10
|
+
}
|
|
11
|
+
export function TabsContextProvider(props) {
|
|
12
|
+
return (_jsx(TabsContext.Provider, { value: props.value, children: props.children }));
|
|
13
|
+
}
|
|
14
|
+
/** Id of the `Tab` button for a given value, within a `Tabs` instance. */
|
|
15
|
+
export const tabId = (baseId, value) => `${baseId}-tab-${value}`;
|
|
16
|
+
/** Id of the `TabPanel` for a given value, within a `Tabs` instance. */
|
|
17
|
+
export const tabPanelId = (baseId, value) => `${baseId}-panel-${value}`;
|
|
18
|
+
//# sourceMappingURL=TabsContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsContext.js","sourceRoot":"","sources":["../../../src/components/TabsContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAa,MAAM,OAAO,CAAC;AAgB7D,MAAM,WAAW,GAAG,aAAa,CAA0B,IAAI,CAAC,CAAC;AAEjE,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAGnC;IACC,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,YACrC,KAAK,CAAC,QAAQ,GACM,CACxB,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,EAAE,CACrD,GAAG,MAAM,QAAQ,KAAK,EAAE,CAAC;AAE3B,wEAAwE;AACxE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,EAAE,CAC1D,GAAG,MAAM,UAAU,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ElementType } from 'react';
|
|
2
|
+
import { SegmentedProps } from './Segmented.js';
|
|
3
|
+
export type TabsListProps<C extends ElementType = 'div'> = SegmentedProps<C>;
|
|
4
|
+
/** Shape of `TabsList` defaults that can be supplied via `CladdProvider`'s `defaults` prop. */
|
|
5
|
+
export type TabsListDefaultProps = Partial<Omit<SegmentedProps, 'as' | 'ref' | 'children'>>;
|
|
6
|
+
/**
|
|
7
|
+
* The tab strip. Renders a `Segmented` (so it inherits the full segmented look
|
|
8
|
+
* and all its `color`/`variant`/`active*` knobs) and layers on `role="tablist"`
|
|
9
|
+
* plus arrow-key navigation. Children are `Tab`s.
|
|
10
|
+
*/
|
|
11
|
+
export declare const TabsList: <C extends ElementType = "div">(props: TabsListProps<C>) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=TabsList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsList.d.ts","sourceRoot":"","sources":["../../../src/components/TabsList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqB,MAAM,OAAO,CAAC;AAGvD,OAAO,EAAa,cAAc,EAAE,MAAM,aAAa,CAAC;AAGxD,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,WAAW,GAAG,KAAK,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;AAE7E,+FAA+F;AAC/F,MAAM,MAAM,oBAAoB,GAAG,OAAO,CACxC,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,KAAK,GAAG,UAAU,CAAC,CAChD,CAAC;AA0CF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,WAAW,GAAG,KAAK,EACpD,OAAO,aAAa,CAAC,CAAC,CAAC,4CAoBxB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useComponentDefaults } from '../hooks/use-component-defaults.js';
|
|
3
|
+
import { Segmented } from './Segmented.js';
|
|
4
|
+
import { useTabsContext } from './TabsContext.js';
|
|
5
|
+
/**
|
|
6
|
+
* Moves focus and selection between tabs with the arrow / Home / End keys
|
|
7
|
+
* (automatic activation). Skips disabled tabs and wraps around the ends.
|
|
8
|
+
*/
|
|
9
|
+
function onTabsKeyDown(e, setValue) {
|
|
10
|
+
if (!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(e.key))
|
|
11
|
+
return;
|
|
12
|
+
const container = e.currentTarget;
|
|
13
|
+
const tabs = Array.from(container.querySelectorAll('[role="tab"]')).filter((tab) => tab.getAttribute('data-disabled') == null);
|
|
14
|
+
if (tabs.length === 0)
|
|
15
|
+
return;
|
|
16
|
+
const active = container.ownerDocument.activeElement;
|
|
17
|
+
const currentIndex = active ? tabs.indexOf(active) : -1;
|
|
18
|
+
let nextIndex;
|
|
19
|
+
switch (e.key) {
|
|
20
|
+
case 'ArrowRight':
|
|
21
|
+
nextIndex = (currentIndex + 1 + tabs.length) % tabs.length;
|
|
22
|
+
break;
|
|
23
|
+
case 'ArrowLeft':
|
|
24
|
+
nextIndex = (currentIndex - 1 + tabs.length) % tabs.length;
|
|
25
|
+
break;
|
|
26
|
+
case 'Home':
|
|
27
|
+
nextIndex = 0;
|
|
28
|
+
break;
|
|
29
|
+
default:
|
|
30
|
+
nextIndex = tabs.length - 1;
|
|
31
|
+
}
|
|
32
|
+
e.preventDefault();
|
|
33
|
+
const next = tabs[nextIndex];
|
|
34
|
+
if (next.dataset.value != null)
|
|
35
|
+
setValue(next.dataset.value);
|
|
36
|
+
next.focus();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The tab strip. Renders a `Segmented` (so it inherits the full segmented look
|
|
40
|
+
* and all its `color`/`variant`/`active*` knobs) and layers on `role="tablist"`
|
|
41
|
+
* plus arrow-key navigation. Children are `Tab`s.
|
|
42
|
+
*/
|
|
43
|
+
export const TabsList = (props) => {
|
|
44
|
+
const { setValue } = useTabsContext();
|
|
45
|
+
const { onKeyDown, ...rest } = useComponentDefaults('TabsList', props);
|
|
46
|
+
const SegmentedEl = Segmented;
|
|
47
|
+
return (_jsx(SegmentedEl, { ...rest, role: "tablist", "aria-orientation": "horizontal", onKeyDown: (e) => {
|
|
48
|
+
onKeyDown?.(e);
|
|
49
|
+
onTabsKeyDown(e, setValue);
|
|
50
|
+
} }));
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=TabsList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsList.js","sourceRoot":"","sources":["../../../src/components/TabsList.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAS/C;;;GAGG;AACH,SAAS,aAAa,CACpB,CAA6B,EAC7B,QAAiC;IAEjC,IAAI,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO;IAExE,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACrB,SAAS,CAAC,gBAAgB,CAAc,cAAc,CAAC,CACxD,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE9B,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,aAAmC,CAAC;IAC3E,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAExD,IAAI,SAAiB,CAAC;IACtB,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,YAAY;YACf,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3D,MAAM;QACR,KAAK,WAAW;YACd,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3D,MAAM;QACR,KAAK,MAAM;YACT,SAAS,GAAG,CAAC,CAAC;YACd,MAAM;QACR;YACE,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,CAAC,CAAC,cAAc,EAAE,CAAC;IACnB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI;QAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,KAAuB,EACvB,EAAE;IACF,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAC;IACtC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,oBAAoB,CACjD,UAAU,EACV,KAAK,CACY,CAAC;IACpB,MAAM,WAAW,GAAG,SAA+B,CAAC;IAEpD,OAAO,CACL,KAAC,WAAW,OACN,IAAI,EACR,IAAI,EAAC,SAAS,sBACG,YAAY,EAC7B,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YACf,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC7B,CAAC,GACD,CACH,CAAC;AACJ,CAAC,CAAC"}
|
package/components/Textarea.d.ts
CHANGED
|
@@ -57,6 +57,8 @@ interface TextareaOwnProps<C extends ElementType = 'div'> {
|
|
|
57
57
|
errorMessage?: ReactNode;
|
|
58
58
|
/** Icon node rendered absolutely positioned on the left. */
|
|
59
59
|
icon?: ReactNode;
|
|
60
|
+
/** Extra classes for the icon wrapper. */
|
|
61
|
+
iconClassName?: string;
|
|
60
62
|
/** Reserved - currently not applied in the rendered output. */
|
|
61
63
|
inputPadding?: string;
|
|
62
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/components/Textarea.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/components/Textarea.tsx"],"names":[],"mappings":"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"}
|
package/components/Textarea.js
CHANGED
|
@@ -5,11 +5,11 @@ import { useComponentDefaults } from '../hooks/use-component-defaults.js';
|
|
|
5
5
|
import { cn } from '../shared/cn.js';
|
|
6
6
|
import { roundedClasses } from '../shared/rounded-classes.js';
|
|
7
7
|
import { rootSizeClasses } from '../shared/size-utls.js';
|
|
8
|
-
import {
|
|
8
|
+
import { FocusRing } from './FocusRing.js';
|
|
9
9
|
import { SurfaceCut } from './SurfaceCut.js';
|
|
10
10
|
export const Textarea = (props) => {
|
|
11
11
|
const accentColor = useAccentColor();
|
|
12
|
-
const { as: asProp = 'div', ref: externalRef, value, placeholder, disabled = false, readOnly, rounded = false, size = 'lg', onChange = () => { }, onKeyDown = () => { }, onFocus = () => { }, onBlur = () => { }, color = accentColor, prefix, suffix, updateContentOnChange = true, className, contentClassName, inputClassName, placeholderClassName = '', valid = true, infoMessage, errorMessage, icon, ...rest } = useComponentDefaults('Textarea', props);
|
|
12
|
+
const { as: asProp = 'div', ref: externalRef, value, placeholder, disabled = false, readOnly, rounded = false, size = 'lg', onChange = () => { }, onKeyDown = () => { }, onFocus = () => { }, onBlur = () => { }, color = accentColor, prefix, suffix, updateContentOnChange = true, className, contentClassName, inputClassName, placeholderClassName = '', valid = true, infoMessage, errorMessage, icon, iconClassName = '', ...rest } = useComponentDefaults('Textarea', props);
|
|
13
13
|
const fontSizes = {
|
|
14
14
|
sm: 'text-cladd-xs',
|
|
15
15
|
md: 'text-cladd-xs',
|
|
@@ -71,6 +71,6 @@ export const Textarea = (props) => {
|
|
|
71
71
|
}
|
|
72
72
|
}, [value]);
|
|
73
73
|
const SurfaceCutComponent = SurfaceCut;
|
|
74
|
-
return (_jsxs(SurfaceCutComponent, { ...rest, as: asProp, ref: externalRef, "data-disabled": disabled || undefined, "data-readonly": readOnly || undefined, "data-invalid": valid === false || undefined, hoverable: !disabled && !readOnly, wrapContent: false, className: cn('cladd-textarea group/cladd-textarea relative', disabled && 'opacity-50', itemRoundedClasses, className), children: [!readOnly && !disabled && (_jsx(
|
|
74
|
+
return (_jsxs(SurfaceCutComponent, { ...rest, as: asProp, ref: externalRef, "data-disabled": disabled || undefined, "data-readonly": readOnly || undefined, "data-invalid": valid === false || undefined, hoverable: !disabled && !readOnly, wrapContent: false, className: cn('cladd-textarea group/cladd-textarea relative', disabled && 'opacity-50', itemRoundedClasses, className), children: [!readOnly && !disabled && (_jsx(FocusRing, { className: cn(focusRoundedClasses), force: valid === false, color: valid === false ? 'red' : color, group: "textarea" })), _jsxs("div", { "data-part": "wrapper", onContextMenuCapture: (e) => e.preventDefault(), className: cn('relative flex items-center', contentClassName), children: [prefix, icon && (_jsx("div", { "data-part": "icon", className: cn('pointer-events-none absolute', iconWrapClasses[size], iconClassName), children: icon })), _jsxs("div", { className: "relative flex w-full", children: [_jsx("div", { "data-part": "control", contentEditable: !disabled && !readOnly, ref: inputElRef, className: cn(inputPadding, height, itemRoundedClasses, fontSizes[size], 'w-full appearance-none border-none bg-transparent font-medium shadow-none outline-none', disabled && 'text-cladd-fg-softer', inputClassName), onPaste: onPaste, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, onInput: onInput }), !text && placeholder && (_jsx("div", { "data-part": "placeholder", className: cn('pointer-events-none absolute top-0 left-0 h-full w-full text-cladd-fg-softer select-none', fontSizes[size], inputPadding, placeholderClassName), children: placeholder }))] }), suffix] }), infoMessage && valid !== false && !readOnly && (_jsx("div", { "data-part": "info", className: cn(`cladd-color-${color}`, 'pointer-events-none absolute -top-1.5 left-2 z-10 translate-y-1 rounded-cladd-sm bg-cladd-primary px-2 py-1.5 text-cladd-2xs leading-none font-semibold text-cladd-on-primary opacity-0 duration-200 group-has-[[contenteditable]:focus]/cladd-textarea:-translate-y-1/2 group-has-[[contenteditable]:focus]/cladd-textarea:opacity-100'), children: infoMessage })), errorMessage && valid === false && (_jsx("div", { "data-part": "error", className: cn('cladd-color-red pointer-events-none absolute -top-1.5 left-2 z-10 -translate-y-1/2 rounded-cladd-sm bg-cladd-primary px-1 py-0.5 text-cladd-2xs leading-none font-semibold text-cladd-on-primary opacity-100 duration-200'), children: errorMessage }))] }));
|
|
75
75
|
};
|
|
76
76
|
//# sourceMappingURL=Textarea.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../../../src/components/Textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,SAAS,EACT,MAAM,EACN,QAAQ,GAUT,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../../../src/components/Textarea.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { Color } from '../types.js';
|
|
3
|
+
import type { AccordionItemDefaultProps } from './AccordionItem.js';
|
|
4
|
+
import type { AccordionRootDefaultProps } from './AccordionRoot.js';
|
|
3
5
|
import type { BackdropDefaultProps } from './Backdrop.js';
|
|
4
6
|
import type { ButtonDefaultProps } from './Button.js';
|
|
5
7
|
import type { CheckboxDefaultProps } from './Checkbox.js';
|
|
6
8
|
import type { ChipDefaultProps } from './Chip.js';
|
|
9
|
+
import type { CollapsibleIndicatorDefaultProps } from './CollapsibleIndicator.js';
|
|
10
|
+
import type { CollapsiblePanelDefaultProps } from './CollapsiblePanel.js';
|
|
11
|
+
import type { CollapsibleRootDefaultProps } from './CollapsibleRoot.js';
|
|
12
|
+
import type { ColorEditorDefaultProps } from './ColorEditor.js';
|
|
13
|
+
import type { ColorPickerDefaultProps } from './ColorPicker.js';
|
|
7
14
|
import type { DialogDefaultProps } from './Dialog.js';
|
|
8
15
|
import type { InputDefaultProps } from './Input.js';
|
|
9
16
|
import type { LinkDefaultProps } from './Link.js';
|
|
@@ -34,8 +41,14 @@ import type { SurfaceContentDefaultProps } from './SurfaceContent.js';
|
|
|
34
41
|
import type { SurfaceCutDefaultProps } from './SurfaceCut.js';
|
|
35
42
|
import type { SurfaceCutContentDefaultProps } from './SurfaceCutContent.js';
|
|
36
43
|
import type { SwitchDefaultProps } from './Switch.js';
|
|
44
|
+
import type { TabDefaultProps } from './Tab.js';
|
|
45
|
+
import type { TabPanelDefaultProps } from './TabPanel.js';
|
|
46
|
+
import type { TabsDefaultProps } from './Tabs.js';
|
|
47
|
+
import type { TabsListDefaultProps } from './TabsList.js';
|
|
37
48
|
import type { TextareaDefaultProps } from './Textarea.js';
|
|
38
49
|
import type { ToastDefaultProps } from './Toast.js';
|
|
50
|
+
import type { ToggleButtonDefaultProps } from './ToggleButton.js';
|
|
51
|
+
import type { ToggleGroupDefaultProps } from './ToggleGroup.js';
|
|
39
52
|
import type { ToolbarDefaultProps } from './Toolbar.js';
|
|
40
53
|
import type { ToolbarButtonDefaultProps } from './ToolbarButton.js';
|
|
41
54
|
import type { ToolbarSeparatorDefaultProps } from './ToolbarSeparator.js';
|
|
@@ -51,10 +64,17 @@ import type { TooltipPrimitiveDefaultProps } from './TooltipPrimitive.js';
|
|
|
51
64
|
* Add new entries here as additional components opt into context defaults.
|
|
52
65
|
*/
|
|
53
66
|
export interface ComponentDefaults {
|
|
67
|
+
AccordionRoot?: AccordionRootDefaultProps;
|
|
68
|
+
AccordionItem?: AccordionItemDefaultProps;
|
|
54
69
|
Backdrop?: BackdropDefaultProps;
|
|
55
70
|
Button?: ButtonDefaultProps;
|
|
56
71
|
Checkbox?: CheckboxDefaultProps;
|
|
57
72
|
Chip?: ChipDefaultProps;
|
|
73
|
+
ColorEditor?: ColorEditorDefaultProps;
|
|
74
|
+
ColorPicker?: ColorPickerDefaultProps;
|
|
75
|
+
CollapsibleRoot?: CollapsibleRootDefaultProps;
|
|
76
|
+
CollapsiblePanel?: CollapsiblePanelDefaultProps;
|
|
77
|
+
CollapsibleIndicator?: CollapsibleIndicatorDefaultProps;
|
|
58
78
|
Dialog?: DialogDefaultProps;
|
|
59
79
|
Input?: InputDefaultProps;
|
|
60
80
|
Link?: LinkDefaultProps;
|
|
@@ -85,8 +105,14 @@ export interface ComponentDefaults {
|
|
|
85
105
|
SurfaceCut?: SurfaceCutDefaultProps;
|
|
86
106
|
SurfaceCutContent?: SurfaceCutContentDefaultProps;
|
|
87
107
|
Switch?: SwitchDefaultProps;
|
|
108
|
+
Tabs?: TabsDefaultProps;
|
|
109
|
+
TabsList?: TabsListDefaultProps;
|
|
110
|
+
Tab?: TabDefaultProps;
|
|
111
|
+
TabPanel?: TabPanelDefaultProps;
|
|
88
112
|
Textarea?: TextareaDefaultProps;
|
|
89
113
|
Toast?: ToastDefaultProps;
|
|
114
|
+
ToggleGroup?: ToggleGroupDefaultProps;
|
|
115
|
+
ToggleButton?: ToggleButtonDefaultProps;
|
|
90
116
|
Toolbar?: ToolbarDefaultProps;
|
|
91
117
|
ToolbarButton?: ToolbarButtonDefaultProps;
|
|
92
118
|
ToolbarSeparator?: ToolbarSeparatorDefaultProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeContext.d.ts","sourceRoot":"","sources":["../../../src/components/ThemeContext.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThemeContext.d.ts","sourceRoot":"","sources":["../../../src/components/ThemeContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeContext.js","sourceRoot":"","sources":["../../../src/components/ThemeContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAa,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ThemeContext.js","sourceRoot":"","sources":["../../../src/components/ThemeContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAa,MAAM,OAAO,CAAC;AAkIjD,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAoB;IAC3D,KAAK,EAAE,MAAM;IACb,WAAW,EAAE,OAAO;IACpB,YAAY,EAAE,sBAAsB;IACpC,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,WAAW,EACX,YAAY,EACZ,QAAQ,GAYT,EAAE,EAAE;IACH,OAAO,CACL,KAAC,YAAY,CAAC,QAAQ,IACpB,KAAK,EAAE;YACL,KAAK;YACL,WAAW;YACX,YAAY,EAAE,YAAY,IAAI,sBAAsB;YACpD,QAAQ,EAAE,QAAQ,IAAI,EAAE;SACzB,YAEA,QAAQ,GACa,CACzB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ElementType, MouseEvent } from 'react';
|
|
2
|
+
import { Color } from '../types.js';
|
|
3
|
+
import { SegmentedButtonProps } from './SegmentedButton.js';
|
|
4
|
+
import { SurfaceVariant } from './Surface.js';
|
|
5
|
+
interface ToggleButtonOwnProps {
|
|
6
|
+
/**
|
|
7
|
+
* Identifies this button inside a `ToggleGroup` - matched against the group's selection.
|
|
8
|
+
*
|
|
9
|
+
* Omit when using the button standalone.
|
|
10
|
+
*/
|
|
11
|
+
value?: string;
|
|
12
|
+
/** Controlled pressed state for **standalone** use. Ignored inside a `ToggleGroup`. */
|
|
13
|
+
selected?: boolean;
|
|
14
|
+
/** Initial pressed state for **standalone** use (uncontrolled). Ignored inside a `ToggleGroup`. */
|
|
15
|
+
defaultSelected?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Fires with the next pressed state on click. Standalone only - inside a `ToggleGroup` use the group's `onValueChange` instead.
|
|
18
|
+
*/
|
|
19
|
+
onChange?: (selected: boolean, event: MouseEvent) => void;
|
|
20
|
+
/** Accent color applied while **pressed**. Default: theme accent (or the group's `activeColor`). */
|
|
21
|
+
activeColor?: Color;
|
|
22
|
+
/** `Surface` variant applied while **pressed**. Default `'gradient'`. */
|
|
23
|
+
activeVariant?: SurfaceVariant;
|
|
24
|
+
/** Outline ring while **pressed**. Default `true`. */
|
|
25
|
+
activeOutline?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export type ToggleButtonProps<C extends ElementType = 'button'> = ToggleButtonOwnProps & Omit<SegmentedButtonProps<C>, 'active' | keyof ToggleButtonOwnProps>;
|
|
28
|
+
/** Shape of `ToggleButton` defaults that can be supplied via `CladdProvider`'s `defaults` prop. */
|
|
29
|
+
export type ToggleButtonDefaultProps = Partial<Omit<ToggleButtonProps, 'as' | 'ref' | 'children' | 'value' | 'selected' | 'defaultSelected'>>;
|
|
30
|
+
/**
|
|
31
|
+
* A two-state (pressed / not) button. Looks like a single `SegmentedButton` -
|
|
32
|
+
* transparent when idle, accent gradient when pressed - and exposes
|
|
33
|
+
* `aria-pressed`.
|
|
34
|
+
*
|
|
35
|
+
* Works both ways:
|
|
36
|
+
* - **Inside a `ToggleGroup`**: identify it with `value`; the group owns the
|
|
37
|
+
* selection and the button derives its pressed state and styling from it.
|
|
38
|
+
* - **Standalone**: owns its own state (controlled via `selected`/`onChange` or
|
|
39
|
+
* uncontrolled via `defaultSelected`) - handy for toolbar controls like
|
|
40
|
+
* bold/italic/pin.
|
|
41
|
+
*/
|
|
42
|
+
export declare const ToggleButton: <C extends ElementType = "button">(props: ToggleButtonProps<C>) => import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=ToggleButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleButton.d.ts","sourceRoot":"","sources":["../../../src/components/ToggleButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAM,UAAU,EAAY,MAAM,OAAO,CAAC;AAI9D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAmB,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK1E,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAI3C,UAAU,oBAAoB;IAC5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mGAAmG;IACnG,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1D,oGAAoG;IACpG,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,yEAAyE;IACzE,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,sDAAsD;IACtD,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,QAAQ,IAC5D,oBAAoB,GAClB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,oBAAoB,CAAC,CAAC;AAEzE,mGAAmG;AACnG,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,IAAI,CACF,iBAAiB,EACjB,IAAI,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,iBAAiB,CACrE,CACF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,WAAW,GAAG,QAAQ,EAC3D,OAAO,iBAAiB,CAAC,CAAC,CAAC,4CAyE5B,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { useAccentColor } from '../hooks/use-accent-color.js';
|
|
4
|
+
import { useComponentDefaults } from '../hooks/use-component-defaults.js';
|
|
5
|
+
import { SegmentedButton } from './SegmentedButton.js';
|
|
6
|
+
import { SegmentedContextProvider, useSegmentedContext, } from './SegmentedContext.js';
|
|
7
|
+
import { useToggleGroupContext } from './ToggleGroupContext.js';
|
|
8
|
+
import { useToolbarContext } from './ToolbarContext.js';
|
|
9
|
+
/**
|
|
10
|
+
* A two-state (pressed / not) button. Looks like a single `SegmentedButton` -
|
|
11
|
+
* transparent when idle, accent gradient when pressed - and exposes
|
|
12
|
+
* `aria-pressed`.
|
|
13
|
+
*
|
|
14
|
+
* Works both ways:
|
|
15
|
+
* - **Inside a `ToggleGroup`**: identify it with `value`; the group owns the
|
|
16
|
+
* selection and the button derives its pressed state and styling from it.
|
|
17
|
+
* - **Standalone**: owns its own state (controlled via `selected`/`onChange` or
|
|
18
|
+
* uncontrolled via `defaultSelected`) - handy for toolbar controls like
|
|
19
|
+
* bold/italic/pin.
|
|
20
|
+
*/
|
|
21
|
+
export const ToggleButton = (props) => {
|
|
22
|
+
const accentColor = useAccentColor();
|
|
23
|
+
const { size: toolbarSize, rounded: toolbarRounded } = useToolbarContext();
|
|
24
|
+
const group = useToggleGroupContext();
|
|
25
|
+
const seg = useSegmentedContext();
|
|
26
|
+
const { value, selected: selectedProp, defaultSelected = false, onChange, activeColor, activeVariant, activeOutline, color, variant, outline, size, rounded, onClick, ...rest } = useComponentDefaults('ToggleButton', props);
|
|
27
|
+
const [internalSelected, setInternalSelected] = useState(defaultSelected);
|
|
28
|
+
const selected = group
|
|
29
|
+
? group.multiple
|
|
30
|
+
? Array.isArray(group.value) &&
|
|
31
|
+
value != null &&
|
|
32
|
+
group.value.includes(value)
|
|
33
|
+
: group.value === value
|
|
34
|
+
: selectedProp !== undefined
|
|
35
|
+
? selectedProp
|
|
36
|
+
: internalSelected;
|
|
37
|
+
// Resolve styling from this button's props, then the surrounding `Segmented`
|
|
38
|
+
// (set up by `ToggleGroup`), then toggle defaults. Routed through context -
|
|
39
|
+
// not passed to `SegmentedButton` directly - so its active/inactive switch
|
|
40
|
+
// keeps working (props passed to it would override the context-derived look).
|
|
41
|
+
const styling = {
|
|
42
|
+
size: size ?? seg.size ?? toolbarSize ?? 'md',
|
|
43
|
+
rounded: rounded ?? seg.rounded ?? toolbarRounded ?? true,
|
|
44
|
+
color: color ?? seg.color ?? '',
|
|
45
|
+
variant: variant ?? seg.variant ?? 'transparent',
|
|
46
|
+
outline: outline ?? seg.outline ?? false,
|
|
47
|
+
activeColor: activeColor ?? seg.activeColor ?? accentColor,
|
|
48
|
+
activeVariant: activeVariant ?? seg.activeVariant ?? 'gradient',
|
|
49
|
+
activeOutline: activeOutline ?? seg.activeOutline ?? true,
|
|
50
|
+
};
|
|
51
|
+
const SegmentedButtonEl = SegmentedButton;
|
|
52
|
+
return (_jsx(SegmentedContextProvider, { value: styling, children: _jsx(SegmentedButtonEl, { ...rest, active: selected, readOnly: false, "aria-pressed": selected, "data-value": value, onClick: (e) => {
|
|
53
|
+
onClick?.(e);
|
|
54
|
+
if (group) {
|
|
55
|
+
if (value != null)
|
|
56
|
+
group.toggleValue(value);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const next = !selected;
|
|
60
|
+
if (selectedProp === undefined)
|
|
61
|
+
setInternalSelected(next);
|
|
62
|
+
onChange?.(next, e);
|
|
63
|
+
}
|
|
64
|
+
} }) }));
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=ToggleButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleButton.js","sourceRoot":"","sources":["../../../src/components/ToggleButton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ElementType } from 'react';
|
|
2
|
+
import { SegmentedProps } from './Segmented.js';
|
|
3
|
+
interface ToggleGroupOwnProps {
|
|
4
|
+
/**
|
|
5
|
+
* Controlled selection. A single value in single-select mode, an array when `multiple`.
|
|
6
|
+
*
|
|
7
|
+
* When provided, internal state is bypassed.
|
|
8
|
+
*/
|
|
9
|
+
value?: string | string[];
|
|
10
|
+
/** Initial selection (uncontrolled). Ignored when `value` is provided. */
|
|
11
|
+
defaultValue?: string | string[];
|
|
12
|
+
/**
|
|
13
|
+
* Fires whenever the selection changes.
|
|
14
|
+
*
|
|
15
|
+
* Receives a single value (or `undefined` when nothing is selected) in single-select mode, or the full array in `multiple` mode.
|
|
16
|
+
*/
|
|
17
|
+
onValueChange?: (value: string | string[] | undefined) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Allow more than one selected value. Selection becomes an array and every `ToggleButton` toggles independently. Default `false`.
|
|
20
|
+
*/
|
|
21
|
+
multiple?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export type ToggleGroupProps<C extends ElementType = 'div'> = ToggleGroupOwnProps & Omit<SegmentedProps<C>, keyof ToggleGroupOwnProps>;
|
|
24
|
+
/** Shape of `ToggleGroup` defaults that can be supplied via `CladdProvider`'s `defaults` prop. */
|
|
25
|
+
export type ToggleGroupDefaultProps = Partial<Omit<ToggleGroupProps, 'as' | 'ref' | 'children' | 'value' | 'defaultValue' | 'onValueChange'>>;
|
|
26
|
+
/**
|
|
27
|
+
* A group of `ToggleButton`s that owns the selected value(s) - the
|
|
28
|
+
* self-managing counterpart to wiring `Segmented`/`SegmentedButton` by hand.
|
|
29
|
+
* Renders a `Segmented` (so it inherits the full segmented look and all its
|
|
30
|
+
* `color`/`variant`/`active*` knobs) and publishes the selection to its
|
|
31
|
+
* children through context.
|
|
32
|
+
*
|
|
33
|
+
* Unlike `Segmented`, the active button stays pressable: clicking it deselects
|
|
34
|
+
* (single mode collapses to no selection, `multiple` removes it from the set).
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* <ToggleGroup defaultValue="grid" activeColor="neutral">
|
|
38
|
+
* <ToggleButton value="grid">Grid</ToggleButton>
|
|
39
|
+
* <ToggleButton value="list">List</ToggleButton>
|
|
40
|
+
* </ToggleGroup>
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* <ToggleGroup multiple defaultValue={['bold']}>
|
|
44
|
+
* <ToggleButton value="bold">Bold</ToggleButton>
|
|
45
|
+
* <ToggleButton value="italic">Italic</ToggleButton>
|
|
46
|
+
* </ToggleGroup>
|
|
47
|
+
*/
|
|
48
|
+
export declare const ToggleGroup: <C extends ElementType = "div">(props: ToggleGroupProps<C>) => import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=ToggleGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleGroup.d.ts","sourceRoot":"","sources":["../../../src/components/ToggleGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,OAAO,CAAC;AAGlD,OAAO,EAAa,cAAc,EAAE,MAAM,aAAa,CAAC;AAGxD,UAAU,mBAAmB;IAC3B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,KAAK,IAAI,CAAC;IAC/D;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,WAAW,GAAG,KAAK,IACxD,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,mBAAmB,CAAC,CAAC;AAE3E,kGAAkG;AAClG,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAC3C,IAAI,CACF,gBAAgB,EAChB,IAAI,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,cAAc,GAAG,eAAe,CACvE,CACF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,WAAW,GAAG,KAAK,EACvD,OAAO,gBAAgB,CAAC,CAAC,CAAC,4CA+C3B,CAAC"}
|