@surflane/ui 0.4.0 → 0.5.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/README.md +1 -1
- package/dist/{disclosure.d.ts → accordion.d.ts} +1 -17
- package/dist/{disclosure.js → accordion.js} +3 -17
- package/dist/alert-dialog.d.ts +31 -0
- package/dist/alert-dialog.js +22 -0
- package/dist/app-shell.js +9 -9
- package/dist/{input-extensions.d.ts → autocomplete.d.ts} +4 -42
- package/dist/{input-extensions.js → autocomplete.js} +7 -26
- package/dist/avatar.js +3 -5
- package/dist/badge.d.ts +20 -0
- package/dist/badge.js +16 -0
- package/dist/{navigation.d.ts → breadcrumbs.d.ts} +2 -6
- package/dist/breadcrumbs.js +31 -0
- package/dist/button.d.ts +11 -0
- package/dist/button.js +27 -4
- package/dist/{content.d.ts → card.d.ts} +6 -24
- package/dist/card.js +26 -0
- package/dist/chart.d.ts +19 -0
- package/dist/chart.js +24 -6
- package/dist/checkbox-group.d.ts +2 -0
- package/dist/checkbox-group.js +16 -0
- package/dist/checkbox.d.ts +9 -0
- package/dist/checkbox.js +29 -0
- package/dist/choice-label.d.ts +25 -0
- package/dist/choice-label.js +14 -0
- package/dist/choice.d.ts +7 -0
- package/dist/choice.js +3 -0
- package/dist/code.d.ts +21 -0
- package/dist/{content.js → code.js} +5 -30
- package/dist/collapsible.d.ts +18 -0
- package/dist/collapsible.js +21 -0
- package/dist/{advanced-forms.d.ts → combobox.d.ts} +5 -25
- package/dist/{advanced-forms.js → combobox.js} +13 -49
- package/dist/{context-overlays.d.ts → context-menu.d.ts} +6 -28
- package/dist/{context-overlays.js → context-menu.js} +5 -25
- package/dist/date-picker.js +3 -2
- package/dist/dialog.d.ts +6 -24
- package/dist/dialog.js +7 -20
- package/dist/{panels.d.ts → drawer.d.ts} +3 -34
- package/dist/drawer.js +47 -0
- package/dist/empty-state.d.ts +29 -0
- package/dist/empty-state.js +19 -0
- package/dist/field.d.ts +42 -0
- package/dist/field.js +21 -0
- package/dist/fieldset.d.ts +14 -0
- package/dist/fieldset.js +10 -0
- package/dist/file-upload.d.ts +3 -1
- package/dist/file-upload.js +7 -5
- package/dist/filter-bar.js +1 -1
- package/dist/form.d.ts +2 -0
- package/dist/form.js +7 -0
- package/dist/icon.d.ts +10 -0
- package/dist/icon.js +18 -3
- package/dist/index.d.ts +56 -29
- package/dist/index.js +70 -32
- package/dist/{messages.d.ts → inline-message.d.ts} +0 -28
- package/dist/{messages.js → inline-message.js} +3 -18
- package/dist/input.js +2 -2
- package/dist/{foundations.d.ts → layout.d.ts} +5 -23
- package/dist/{foundations.js → layout.js} +4 -19
- package/dist/link.d.ts +6 -0
- package/dist/link.js +17 -0
- package/dist/list.d.ts +33 -0
- package/dist/list.js +21 -0
- package/dist/markdown.js +4 -5
- package/dist/menu.d.ts +7 -5
- package/dist/menu.js +12 -8
- package/dist/menubar.d.ts +4 -0
- package/dist/menubar.js +4 -0
- package/dist/meter.d.ts +29 -0
- package/dist/meter.js +13 -0
- package/dist/native-select.d.ts +8 -0
- package/dist/native-select.js +54 -0
- package/dist/navigation-menu.js +8 -5
- package/dist/number-field.d.ts +23 -0
- package/dist/number-field.js +33 -0
- package/dist/page-header.d.ts +12 -0
- package/dist/page-header.js +9 -0
- package/dist/pagination.js +3 -4
- package/dist/panel.d.ts +13 -0
- package/dist/panel.js +13 -0
- package/dist/parts.d.ts +19 -1
- package/dist/parts.js +32 -6
- package/dist/popover.d.ts +23 -6
- package/dist/popover.js +17 -7
- package/dist/preview-card.d.ts +29 -0
- package/dist/preview-card.js +27 -0
- package/dist/progress.d.ts +29 -0
- package/dist/progress.js +13 -0
- package/dist/radio-group.d.ts +16 -0
- package/dist/radio-group.js +31 -0
- package/dist/scroll-area.js +3 -4
- package/dist/select.d.ts +8 -8
- package/dist/select.js +19 -54
- package/dist/separator.d.ts +4 -0
- package/dist/separator.js +8 -0
- package/dist/sheet.d.ts +29 -0
- package/dist/sheet.js +39 -0
- package/dist/skeleton.d.ts +8 -0
- package/dist/skeleton.js +8 -0
- package/dist/slider.d.ts +40 -0
- package/dist/slider.js +27 -0
- package/dist/spinner.d.ts +13 -0
- package/dist/spinner.js +10 -0
- package/dist/status.d.ts +1 -19
- package/dist/status.js +10 -14
- package/dist/switch.d.ts +13 -0
- package/dist/switch.js +25 -0
- package/dist/syntax-highlighter.js +2 -1
- package/dist/{data.d.ts → table.d.ts} +8 -32
- package/dist/{data.js → table.js} +15 -30
- package/dist/textarea.d.ts +7 -0
- package/dist/textarea.js +12 -0
- package/dist/toast.js +7 -6
- package/dist/toggle-group.d.ts +5 -0
- package/dist/toggle-group.js +7 -0
- package/dist/toggle.d.ts +7 -0
- package/dist/toggle.js +9 -0
- package/dist/{commands.d.ts → toolbar.d.ts} +0 -13
- package/dist/toolbar.js +14 -0
- package/dist/tooltip.d.ts +3 -2
- package/dist/tooltip.js +2 -2
- package/dist/tree.js +4 -2
- package/dist/typography.d.ts +12 -0
- package/dist/typography.js +14 -0
- package/package.json +237 -21
- package/src/styles.css +359 -191
- package/dist/chevron.d.ts +0 -3
- package/dist/chevron.js +0 -6
- package/dist/commands.js +0 -27
- package/dist/feedback.d.ts +0 -76
- package/dist/feedback.js +0 -35
- package/dist/forms.d.ts +0 -91
- package/dist/forms.js +0 -109
- package/dist/navigation.js +0 -41
- package/dist/panels.js +0 -100
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { PreviewCard as BasePreviewCard } from '@base-ui/react/preview-card';
|
|
3
|
+
import { type Placement } from './parts.js';
|
|
4
|
+
declare function PreviewTrigger<Payload>(props: BasePreviewCard.Trigger.Props<Payload> & React.RefAttributes<HTMLElement>): React.JSX.Element;
|
|
5
|
+
export declare const PreviewCard: {
|
|
6
|
+
Portal: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/preview-card").PreviewCardPortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
7
|
+
Trigger: typeof PreviewTrigger;
|
|
8
|
+
Positioner: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/preview-card").PreviewCardPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
9
|
+
size?: import("./sizing.js").ComponentSize;
|
|
10
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
Popup: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/preview-card").PreviewCardPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
Content: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/preview-card").PreviewCardPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & Placement<React.ForwardRefExoticComponent<Omit<import("@base-ui/react/preview-card").PreviewCardPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>>> & {
|
|
13
|
+
/** @deprecated Pass side, align, sideOffset and collisionPadding directly. */
|
|
14
|
+
positionerProps?: React.ComponentPropsWithoutRef<typeof BasePreviewCard.Positioner>;
|
|
15
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
16
|
+
Root: <Payload>(props: BasePreviewCard.Root.Props<Payload>) => React.JSX.Element;
|
|
17
|
+
Arrow: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/preview-card").PreviewCardArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
Backdrop: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/preview-card").PreviewCardBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
19
|
+
Viewport: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/preview-card").PreviewCardViewportProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
20
|
+
createHandle: typeof BasePreviewCard.createHandle;
|
|
21
|
+
Handle: typeof BasePreviewCard.Handle;
|
|
22
|
+
};
|
|
23
|
+
export declare const PreviewCardArrow: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/preview-card").PreviewCardArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>>, PreviewCardBackdrop: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/preview-card").PreviewCardBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>, PreviewCardHandle: typeof BasePreviewCard.Handle, PreviewCardPopup: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/preview-card").PreviewCardPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>, PreviewCardPortal: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/preview-card").PreviewCardPortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>, PreviewCardPositioner: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/preview-card").PreviewCardPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
24
|
+
size?: import("./sizing.js").ComponentSize;
|
|
25
|
+
} & React.RefAttributes<HTMLDivElement>>, PreviewCardRoot: <Payload>(props: BasePreviewCard.Root.Props<Payload>) => React.JSX.Element, PreviewCardTrigger: typeof PreviewTrigger, PreviewCardViewport: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/preview-card").PreviewCardViewportProps, "ref"> & React.RefAttributes<HTMLDivElement>>, PreviewCardContent: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/preview-card").PreviewCardPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & Placement<React.ForwardRefExoticComponent<Omit<import("@base-ui/react/preview-card").PreviewCardPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>>> & {
|
|
26
|
+
/** @deprecated Pass side, align, sideOffset and collisionPadding directly. */
|
|
27
|
+
positionerProps?: React.ComponentPropsWithoutRef<typeof BasePreviewCard.Positioner>;
|
|
28
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { PreviewCard as BasePreviewCard } from '@base-ui/react/preview-card';
|
|
5
|
+
import { OwnPortal, defined, part, scopedPortal, skin, } from './parts.js';
|
|
6
|
+
const PreviewPositioner = /* @__PURE__ */ part(BasePreviewCard.Positioner, 'pui-positioner', { portal: true });
|
|
7
|
+
// The preview is visual enhancement; its destination is the accessible interface.
|
|
8
|
+
const PreviewPopup = /* @__PURE__ */ React.forwardRef(function PreviewPopup({ className, ...props }, ref) {
|
|
9
|
+
return (_jsx(BasePreviewCard.Popup, { ...props, ref: ref, "aria-hidden": 'true', className: skin('pui-preview-card', className) }));
|
|
10
|
+
});
|
|
11
|
+
function PreviewTrigger(props) {
|
|
12
|
+
const { className, ...rest } = props;
|
|
13
|
+
return (_jsx(BasePreviewCard.Trigger, { ...rest, className: skin('pui-link pui-preview-trigger', className) }));
|
|
14
|
+
}
|
|
15
|
+
const PreviewContent = /* @__PURE__ */ React.forwardRef(function PreviewContent({ side, align, sideOffset, collisionPadding, positionerProps, ...props }, ref) {
|
|
16
|
+
return (_jsx(OwnPortal, { portal: BasePreviewCard.Portal, children: _jsx(PreviewPositioner, { sideOffset: 8, collisionPadding: 12, ...positionerProps, ...defined({ side, align, sideOffset, collisionPadding }), children: _jsx(PreviewPopup, { ...props, ref: ref }) }) }));
|
|
17
|
+
});
|
|
18
|
+
export const PreviewCard = {
|
|
19
|
+
...BasePreviewCard,
|
|
20
|
+
Portal: /* @__PURE__ */ scopedPortal(BasePreviewCard.Portal),
|
|
21
|
+
Trigger: PreviewTrigger,
|
|
22
|
+
Positioner: PreviewPositioner,
|
|
23
|
+
Popup: PreviewPopup,
|
|
24
|
+
Content: PreviewContent,
|
|
25
|
+
};
|
|
26
|
+
// Flat names for React Server Components, which cannot dot into client exports.
|
|
27
|
+
export const { Arrow: PreviewCardArrow, Backdrop: PreviewCardBackdrop, Handle: PreviewCardHandle, Popup: PreviewCardPopup, Portal: PreviewCardPortal, Positioner: PreviewCardPositioner, Root: PreviewCardRoot, Trigger: PreviewCardTrigger, Viewport: PreviewCardViewport, Content: PreviewCardContent, } = PreviewCard;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const Progress: {
|
|
3
|
+
Root: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
4
|
+
size?: import("./sizing.js").ComponentSize;
|
|
5
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
Label: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressLabelProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
|
|
7
|
+
size?: import("./sizing.js").ComponentSize;
|
|
8
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
|
9
|
+
Value: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressValueProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
|
|
10
|
+
size?: import("./sizing.js").ComponentSize;
|
|
11
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
|
12
|
+
Track: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressTrackProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
13
|
+
size?: import("./sizing.js").ComponentSize;
|
|
14
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
15
|
+
Indicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressIndicatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
16
|
+
size?: import("./sizing.js").ComponentSize;
|
|
17
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
};
|
|
19
|
+
export declare const ProgressIndicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressIndicatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
20
|
+
size?: import("./sizing.js").ComponentSize;
|
|
21
|
+
} & React.RefAttributes<HTMLDivElement>>, ProgressLabel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressLabelProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
|
|
22
|
+
size?: import("./sizing.js").ComponentSize;
|
|
23
|
+
} & React.RefAttributes<HTMLSpanElement>>, ProgressRoot: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
24
|
+
size?: import("./sizing.js").ComponentSize;
|
|
25
|
+
} & React.RefAttributes<HTMLDivElement>>, ProgressTrack: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressTrackProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
26
|
+
size?: import("./sizing.js").ComponentSize;
|
|
27
|
+
} & React.RefAttributes<HTMLDivElement>>, ProgressValue: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/progress").ProgressValueProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
|
|
28
|
+
size?: import("./sizing.js").ComponentSize;
|
|
29
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
package/dist/progress.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { Progress as BaseProgress } from '@base-ui/react/progress';
|
|
3
|
+
import { part } from './parts.js';
|
|
4
|
+
export const Progress = {
|
|
5
|
+
...BaseProgress,
|
|
6
|
+
Root: /* @__PURE__ */ part(BaseProgress.Root, 'pui-gauge pui-progress'),
|
|
7
|
+
Label: /* @__PURE__ */ part(BaseProgress.Label, 'pui-gauge-label'),
|
|
8
|
+
Value: /* @__PURE__ */ part(BaseProgress.Value, 'pui-gauge-value'),
|
|
9
|
+
Track: /* @__PURE__ */ part(BaseProgress.Track, 'pui-gauge-track'),
|
|
10
|
+
Indicator: /* @__PURE__ */ part(BaseProgress.Indicator, 'pui-gauge-indicator'),
|
|
11
|
+
};
|
|
12
|
+
// Flat names for React Server Components, which cannot dot into client exports.
|
|
13
|
+
export const { Indicator: ProgressIndicator, Label: ProgressLabel, Root: ProgressRoot, Track: ProgressTrack, Value: ProgressValue, } = Progress;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Radio as BaseRadio } from '@base-ui/react/radio';
|
|
3
|
+
import { RadioGroup as BaseRadioGroup } from '@base-ui/react/radio-group';
|
|
4
|
+
import { type ChoiceSize } from './choice.js';
|
|
5
|
+
export declare function RadioGroup<Value = string>({ value, defaultValue, onValueChange, className, form, ref, ...props }: BaseRadioGroup.Props<Value>): React.JSX.Element;
|
|
6
|
+
declare const RadioRoot: React.ForwardRefExoticComponent<Omit<BaseRadio.Root.Props<unknown>, "ref"> & ChoiceSize & React.RefAttributes<HTMLSpanElement>>;
|
|
7
|
+
export declare const Radio: {
|
|
8
|
+
Root: React.ForwardRefExoticComponent<Omit<BaseRadio.Root.Props<unknown>, "ref"> & ChoiceSize & React.RefAttributes<HTMLSpanElement>>;
|
|
9
|
+
Indicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/radio").RadioIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
|
|
10
|
+
size?: import("./sizing.js").ComponentSize;
|
|
11
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
|
12
|
+
};
|
|
13
|
+
export { RadioRoot };
|
|
14
|
+
export declare const RadioIndicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/radio").RadioIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
|
|
15
|
+
size?: import("./sizing.js").ComponentSize;
|
|
16
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { useComponentSize } from './sizing.js';
|
|
5
|
+
import { Radio as BaseRadio } from '@base-ui/react/radio';
|
|
6
|
+
import { RadioGroup as BaseRadioGroup } from '@base-ui/react/radio-group';
|
|
7
|
+
import { skin, part } from './parts.js';
|
|
8
|
+
import { useRootRef, useResetValue } from './form-state.js';
|
|
9
|
+
import { ChoiceResetPaint } from './choice.js';
|
|
10
|
+
export function RadioGroup({ value, defaultValue, onValueChange, className, form, ref, ...props }) {
|
|
11
|
+
const [element, attach] = useRootRef(ref);
|
|
12
|
+
const [selected, setSelected, revision] = useResetValue(value, defaultValue ?? null, element, form);
|
|
13
|
+
return (_jsx(ChoiceResetPaint.Provider, { value: revision, children: _jsx(BaseRadioGroup, { ...props, form: form, ref: attach, value: selected, className: skin('pui-choice-group', className), onValueChange: (next, event) => {
|
|
14
|
+
onValueChange?.(next, event);
|
|
15
|
+
if (value === undefined && !event.isCanceled)
|
|
16
|
+
setSelected(next);
|
|
17
|
+
} }) }));
|
|
18
|
+
}
|
|
19
|
+
const RadioRoot = /* @__PURE__ */ React.forwardRef(function RadioRoot({ size, className, ...props }, ref) {
|
|
20
|
+
React.useContext(ChoiceResetPaint);
|
|
21
|
+
const scheme = useComponentSize(size);
|
|
22
|
+
return (_jsx(BaseRadio.Root, { ...props, "data-ui-size": size ? scheme : undefined, ref: ref, className: skin('pui-radio', className) }));
|
|
23
|
+
});
|
|
24
|
+
export const Radio = {
|
|
25
|
+
...BaseRadio,
|
|
26
|
+
Root: RadioRoot,
|
|
27
|
+
Indicator: /* @__PURE__ */ part(BaseRadio.Indicator, 'pui-radio-indicator'),
|
|
28
|
+
};
|
|
29
|
+
// Flat names for React Server Components, which cannot dot into client exports.
|
|
30
|
+
export { RadioRoot };
|
|
31
|
+
export const { Indicator: RadioIndicator } = Radio;
|
package/dist/scroll-area.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area';
|
|
5
|
+
import { cx } from './parts.js';
|
|
5
6
|
export const ScrollArea = /* @__PURE__ */ React.forwardRef(function ScrollArea({ label, orientation = 'horizontal', scrollChain = 'auto', style, rootClassName, rootStyle, tabIndex = label ? 0 : undefined, role = label ? 'region' : undefined, className, children, ...props }, ref) {
|
|
6
7
|
const dragPointer = React.useRef(null);
|
|
7
8
|
const clearDrag = (event) => {
|
|
@@ -10,7 +11,7 @@ export const ScrollArea = /* @__PURE__ */ React.forwardRef(function ScrollArea({
|
|
|
10
11
|
dragPointer.current = null;
|
|
11
12
|
event.currentTarget.removeAttribute('data-scroll-dragging');
|
|
12
13
|
};
|
|
13
|
-
return (_jsxs(BaseScrollArea.Root, { className:
|
|
14
|
+
return (_jsxs(BaseScrollArea.Root, { className: cx('pui-scroll-root', rootClassName), style: rootStyle, onPointerMoveCapture: (event) => {
|
|
14
15
|
if (event.pointerType === 'touch')
|
|
15
16
|
return;
|
|
16
17
|
const root = event.currentTarget;
|
|
@@ -27,9 +28,7 @@ export const ScrollArea = /* @__PURE__ */ React.forwardRef(function ScrollArea({
|
|
|
27
28
|
dragPointer.current = event.pointerId;
|
|
28
29
|
event.currentTarget.setAttribute('data-scroll-dragging', bar.getAttribute('data-orientation') ?? '');
|
|
29
30
|
}
|
|
30
|
-
}, onPointerUpCapture: clearDrag, onPointerCancelCapture: clearDrag, onLostPointerCapture: clearDrag, children: [_jsx(BaseScrollArea.Viewport, { ...props, ref: ref, className:
|
|
31
|
-
.filter(Boolean)
|
|
32
|
-
.join(' '), role: role, "aria-label": label, tabIndex: tabIndex, "data-scroll-orientation": orientation, style: {
|
|
31
|
+
}, onPointerUpCapture: clearDrag, onPointerCancelCapture: clearDrag, onLostPointerCapture: clearDrag, children: [_jsx(BaseScrollArea.Viewport, { ...props, ref: ref, className: cx('pui-scroll-viewport', className), role: role, "aria-label": label, tabIndex: tabIndex, "data-scroll-orientation": orientation, style: {
|
|
33
32
|
overflowX: orientation === 'vertical' ? 'hidden' : 'auto',
|
|
34
33
|
overflowY: orientation === 'horizontal' ? 'hidden' : 'auto',
|
|
35
34
|
overscrollBehaviorX: orientation === 'vertical' ? 'auto' : scrollChain,
|
package/dist/select.d.ts
CHANGED
|
@@ -5,8 +5,13 @@ export type SelectOption = {
|
|
|
5
5
|
label: React.ReactNode;
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
};
|
|
8
|
-
|
|
8
|
+
/** Options under a visible heading, like an HTML optgroup. */
|
|
9
|
+
export type SelectGroup = {
|
|
10
|
+
label: React.ReactNode;
|
|
9
11
|
options: SelectOption[];
|
|
12
|
+
};
|
|
13
|
+
export type SelectProps = {
|
|
14
|
+
options: (SelectOption | SelectGroup)[];
|
|
10
15
|
value?: string;
|
|
11
16
|
defaultValue?: string;
|
|
12
17
|
onValueChange?: (value: string) => void;
|
|
@@ -24,10 +29,5 @@ export type SelectProps = {
|
|
|
24
29
|
'aria-describedby'?: string;
|
|
25
30
|
'aria-invalid'?: React.AriaAttributes['aria-invalid'];
|
|
26
31
|
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
export declare const NativeSelect: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.SelectHTMLAttributes<HTMLSelectElement>, HTMLSelectElement>, "ref">, "size" | "multiple"> & {
|
|
30
|
-
size?: ComponentSizeAlias;
|
|
31
|
-
} & React.RefAttributes<HTMLButtonElement>>;
|
|
32
|
-
export declare function NativeSelectOption(props: React.ComponentProps<'option'>): React.JSX.Element;
|
|
33
|
-
export declare function NativeSelectOptGroup(props: React.ComponentProps<'optgroup'>): React.JSX.Element;
|
|
32
|
+
/** A single-choice list. The ref reaches the trigger button, as triggerRef does. */
|
|
33
|
+
export declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLButtonElement>>;
|
package/dist/select.js
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from 'react';
|
|
4
|
+
import { Icon } from './icon.js';
|
|
4
5
|
import { useComponentSize } from './sizing.js';
|
|
5
6
|
import { Select as BaseSelect } from '@base-ui/react/select';
|
|
6
|
-
import { sizeName } from './parts.js';
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
function Check() {
|
|
12
|
-
return (_jsx("svg", { width: '14', height: '14', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.7', "aria-hidden": 'true', children: _jsx("path", { d: 'm5 12 4 4L19 6' }) }));
|
|
13
|
-
}
|
|
14
|
-
export function Select({ options, value, defaultValue, onValueChange, className, inputRef, triggerRef, size, ...props }) {
|
|
7
|
+
import { sizeName, cx } from './parts.js';
|
|
8
|
+
const isGroup = (item) => 'options' in item;
|
|
9
|
+
const flatten = (items) => items.flatMap((item) => (isGroup(item) ? item.options : [item]));
|
|
10
|
+
/** A single-choice list. The ref reaches the trigger button, as triggerRef does. */
|
|
11
|
+
export const Select = /* @__PURE__ */ React.forwardRef(function Select({ options: items, value, defaultValue, onValueChange, className, inputRef, triggerRef, size, ...props }, ref) {
|
|
15
12
|
const scheme = useComponentSize(size);
|
|
13
|
+
const options = flatten(items);
|
|
14
|
+
// One stable callback, so the trigger ref is not detached on every render.
|
|
15
|
+
const setTrigger = React.useCallback((node) => {
|
|
16
|
+
for (const target of [ref, triggerRef])
|
|
17
|
+
if (typeof target === 'function')
|
|
18
|
+
target(node);
|
|
19
|
+
else if (target)
|
|
20
|
+
target.current = node;
|
|
21
|
+
}, [ref, triggerRef]);
|
|
16
22
|
const [localValue, setLocalValue] = React.useState(defaultValue ?? options[0]?.value ?? '');
|
|
17
23
|
const nativeInput = React.useRef(null);
|
|
18
24
|
const initialValue = defaultValue ?? options[0]?.value ?? '';
|
|
@@ -41,7 +47,7 @@ export function Select({ options, value, defaultValue, onValueChange, className,
|
|
|
41
47
|
}, [initialValue, props.form]);
|
|
42
48
|
const selected = value ?? localValue;
|
|
43
49
|
const { name, form, required, disabled, id, ...aria } = props;
|
|
44
|
-
return (_jsx("span", { className: cx('pui-select
|
|
50
|
+
return (_jsx("span", { className: cx('pui-select', className), "data-size": sizeName(size), "data-ui-size": scheme, "data-disabled": disabled || undefined, children: _jsxs(BaseSelect.Root, { items: options, value: selected, onValueChange: (v) => {
|
|
45
51
|
setLocalValue(v ?? '');
|
|
46
52
|
onValueChange?.(v ?? '');
|
|
47
53
|
}, inputRef: (node) => {
|
|
@@ -50,49 +56,8 @@ export function Select({ options, value, defaultValue, onValueChange, className,
|
|
|
50
56
|
inputRef(node);
|
|
51
57
|
else if (inputRef)
|
|
52
58
|
inputRef.current = node;
|
|
53
|
-
}, name: name, form: form, required: required, disabled: disabled, id: id, children: [_jsxs(BaseSelect.Trigger, { ...aria, ref:
|
|
54
|
-
}
|
|
55
|
-
function optionList(children) {
|
|
56
|
-
return React.Children.toArray(children).flatMap((child) => {
|
|
57
|
-
if (!React.isValidElement(child))
|
|
58
|
-
return [];
|
|
59
|
-
const p = child.props;
|
|
60
|
-
if (child.type === React.Fragment ||
|
|
61
|
-
child.type === 'optgroup' ||
|
|
62
|
-
child.type === NativeSelectOptGroup)
|
|
63
|
-
return optionList(p.children);
|
|
64
|
-
return [
|
|
65
|
-
{
|
|
66
|
-
value: String(p.value ?? p.children ?? ''),
|
|
67
|
-
label: p.label ?? p.children,
|
|
68
|
-
disabled: p.disabled,
|
|
69
|
-
},
|
|
70
|
-
];
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
/** Transitional HTML-option adapter. Submitted values use Base UI's native hidden input. */
|
|
74
|
-
export const NativeSelect = /* @__PURE__ */ React.forwardRef(function NativeSelect({ children, onChange, value, defaultValue, className, size, ...props }, ref) {
|
|
75
|
-
const input = React.useRef(null);
|
|
76
|
-
const options = optionList(children);
|
|
77
|
-
return (_jsx(Select, { options: options, value: value === undefined ? undefined : String(value), defaultValue: defaultValue === undefined ? undefined : String(defaultValue), className: className, size: size, inputRef: input, triggerRef: ref, name: props.name, form: props.form, disabled: props.disabled, required: props.required, id: props.id, "aria-label": props['aria-label'], "aria-labelledby": props['aria-labelledby'], "aria-describedby": props['aria-describedby'], "aria-invalid": props['aria-invalid'], onValueChange: (next) => {
|
|
78
|
-
if (!onChange)
|
|
79
|
-
return;
|
|
80
|
-
const target = input.current;
|
|
81
|
-
if (!target)
|
|
82
|
-
return;
|
|
83
|
-
const setter = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set;
|
|
84
|
-
setter?.call(target, next);
|
|
85
|
-
const event = new Event('change', { bubbles: true });
|
|
86
|
-
Object.defineProperties(event, {
|
|
87
|
-
target: { value: target },
|
|
88
|
-
currentTarget: { value: target },
|
|
89
|
-
});
|
|
90
|
-
onChange(event);
|
|
91
|
-
} }));
|
|
59
|
+
}, name: name, form: form, required: required, disabled: disabled, id: id, children: [_jsxs(BaseSelect.Trigger, { ...aria, ref: setTrigger, className: 'pui-select-trigger', "data-value": selected, children: [_jsx(BaseSelect.Value, {}), _jsx(BaseSelect.Icon, { className: 'pui-select-icon', children: _jsx(Icon, { name: 'chevron-down' }) })] }), _jsx(BaseSelect.Portal, { children: _jsx(BaseSelect.Positioner, { className: 'pui-positioner', sideOffset: 6, alignItemWithTrigger: false, children: _jsx(BaseSelect.Popup, { className: 'pui-select-popup', "data-ui-size": scheme, children: _jsx(BaseSelect.List, { children: items.map((item, index) => isGroup(item) ? (_jsxs(BaseSelect.Group, { className: 'pui-select-group', children: [_jsx(BaseSelect.GroupLabel, { className: 'pui-select-group-label', children: item.label }), item.options.map(renderOption)] }, index)) : (renderOption(item))) }) }) }) })] }) }));
|
|
92
60
|
});
|
|
93
|
-
|
|
94
|
-
return
|
|
95
|
-
}
|
|
96
|
-
export function NativeSelectOptGroup(props) {
|
|
97
|
-
return _jsx("optgroup", { ...props });
|
|
61
|
+
function renderOption(option) {
|
|
62
|
+
return (_jsxs(BaseSelect.Item, { className: 'pui-select-item', value: option.value, "data-option-value": option.value, disabled: option.disabled, children: [_jsx(BaseSelect.ItemIndicator, { className: 'pui-select-check', children: _jsx(Icon, { name: 'check' }) }), _jsx(BaseSelect.ItemText, { children: option.label })] }, option.value));
|
|
98
63
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const Separator: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/separator").SeparatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
3
|
+
inset?: boolean;
|
|
4
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Separator as BaseSeparator } from '@base-ui/react/separator';
|
|
5
|
+
import { skin } from './parts.js';
|
|
6
|
+
export const Separator = /* @__PURE__ */ React.forwardRef(function Separator({ inset = false, className, ...props }, ref) {
|
|
7
|
+
return (_jsx(BaseSeparator, { ...props, ref: ref, "data-inset": inset || undefined, className: skin('pui-separator', className) }));
|
|
8
|
+
});
|
package/dist/sheet.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Dialog as BaseDialog } from '@base-ui/react/dialog';
|
|
3
|
+
import { Footer, Header, type PanelOptions, type PanelSide } from './panel.js';
|
|
4
|
+
declare function SheetRoot({ side, modal, ...props }: React.ComponentProps<typeof BaseDialog.Root> & {
|
|
5
|
+
side?: PanelSide;
|
|
6
|
+
}): React.JSX.Element;
|
|
7
|
+
declare const SheetContent: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/dialog").DialogPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & PanelOptions & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
declare function SheetTitle({ className, ...props }: React.ComponentProps<typeof BaseDialog.Title>): React.JSX.Element;
|
|
9
|
+
declare function SheetDescription({ className, ...props }: React.ComponentProps<typeof BaseDialog.Description>): React.JSX.Element;
|
|
10
|
+
export declare const Sheet: {
|
|
11
|
+
Root: typeof SheetRoot;
|
|
12
|
+
Content: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/dialog").DialogPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & PanelOptions & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
Header: typeof Header;
|
|
14
|
+
Body: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
15
|
+
Footer: typeof Footer;
|
|
16
|
+
Title: typeof SheetTitle;
|
|
17
|
+
Description: typeof SheetDescription;
|
|
18
|
+
Backdrop: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/dialog").DialogBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
19
|
+
Close: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/dialog").DialogCloseProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
20
|
+
Popup: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/dialog").DialogPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
21
|
+
Portal: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/dialog").DialogPortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
22
|
+
Viewport: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/dialog").DialogViewportProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
23
|
+
Trigger: BaseDialog.Trigger;
|
|
24
|
+
createHandle: typeof BaseDialog.createHandle;
|
|
25
|
+
Handle: typeof BaseDialog.Handle;
|
|
26
|
+
};
|
|
27
|
+
export { SheetDescription, SheetRoot, SheetTitle, SheetContent };
|
|
28
|
+
export declare const SheetBackdrop: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/dialog").DialogBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>, SheetClose: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/dialog").DialogCloseProps, "ref"> & React.RefAttributes<HTMLButtonElement>>, SheetHandle: typeof BaseDialog.Handle, SheetPopup: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/dialog").DialogPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>>, SheetPortal: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/dialog").DialogPortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>, SheetTrigger: BaseDialog.Trigger, SheetViewport: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/dialog").DialogViewportProps, "ref"> & React.RefAttributes<HTMLDivElement>>, SheetHeader: typeof Header, SheetBody: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>, SheetFooter: typeof Footer;
|
|
29
|
+
export type { PanelSide } from './panel.js';
|
package/dist/sheet.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Icon } from './icon.js';
|
|
5
|
+
import { skin } from './parts.js';
|
|
6
|
+
import { useComponentSize, normalizeSize } from './sizing.js';
|
|
7
|
+
import { Dialog as BaseDialog } from '@base-ui/react/dialog';
|
|
8
|
+
import { Body, Footer, Header, } from './panel.js';
|
|
9
|
+
const SheetSide = /* @__PURE__ */ React.createContext({
|
|
10
|
+
side: 'right',
|
|
11
|
+
modal: true,
|
|
12
|
+
});
|
|
13
|
+
function SheetRoot({ side = 'right', modal = true, ...props }) {
|
|
14
|
+
return (_jsx(SheetSide.Provider, { value: { side, modal }, children: _jsx(BaseDialog.Root, { ...props, modal: modal }) }));
|
|
15
|
+
}
|
|
16
|
+
const SheetContent = /* @__PURE__ */ React.forwardRef(function SheetContent({ size, flush, closeLabel = 'Close panel', className, children, ...props }, ref) {
|
|
17
|
+
const scheme = useComponentSize(size);
|
|
18
|
+
const { side, modal } = React.useContext(SheetSide);
|
|
19
|
+
return (_jsx(BaseDialog.Portal, { children: _jsxs("div", { className: 'pui-panel-layer', "data-ui-size": scheme, children: [modal === true && (_jsx(BaseDialog.Backdrop, { className: 'pui-panel-backdrop' })), _jsx("div", { className: 'pui-panel-viewport', "data-side": side, "data-flush": flush || undefined, children: _jsxs(BaseDialog.Popup, { ...props, ref: ref, className: skin('pui-panel', className), "data-side": side, "data-size": normalizeSize(size) ?? 'default', "data-flush": flush || undefined, children: [_jsx(BaseDialog.Close, { className: 'pui-panel-close pui-icon-button', "aria-label": closeLabel, children: _jsx(Icon, { name: 'close' }) }), children] }) })] }) }));
|
|
20
|
+
});
|
|
21
|
+
function SheetTitle({ className, ...props }) {
|
|
22
|
+
return (_jsx(BaseDialog.Title, { ...props, className: skin('pui-panel-title', className) }));
|
|
23
|
+
}
|
|
24
|
+
function SheetDescription({ className, ...props }) {
|
|
25
|
+
return (_jsx(BaseDialog.Description, { ...props, className: skin('pui-panel-description', className) }));
|
|
26
|
+
}
|
|
27
|
+
export const Sheet = {
|
|
28
|
+
...BaseDialog,
|
|
29
|
+
Root: SheetRoot,
|
|
30
|
+
Content: SheetContent,
|
|
31
|
+
Header,
|
|
32
|
+
Body,
|
|
33
|
+
Footer,
|
|
34
|
+
Title: SheetTitle,
|
|
35
|
+
Description: SheetDescription,
|
|
36
|
+
};
|
|
37
|
+
// Flat names for React Server Components, which cannot dot into client exports.
|
|
38
|
+
export { SheetDescription, SheetRoot, SheetTitle, SheetContent };
|
|
39
|
+
export const { Backdrop: SheetBackdrop, Close: SheetClose, Handle: SheetHandle, Popup: SheetPopup, Portal: SheetPortal, Trigger: SheetTrigger, Viewport: SheetViewport, Header: SheetHeader, Body: SheetBody, Footer: SheetFooter, } = Sheet;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export type SkeletonProps = Omit<React.ComponentPropsWithoutRef<'span'>, 'children'> & {
|
|
3
|
+
shape?: 'text' | 'block' | 'circle';
|
|
4
|
+
};
|
|
5
|
+
/** Decorative placeholder; the owning region provides aria-busy and loading text. */
|
|
6
|
+
export declare const Skeleton: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref">, "children"> & {
|
|
7
|
+
shape?: "text" | "block" | "circle";
|
|
8
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
package/dist/skeleton.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { cx } from './parts.js';
|
|
5
|
+
/** Decorative placeholder; the owning region provides aria-busy and loading text. */
|
|
6
|
+
export const Skeleton = /* @__PURE__ */ React.forwardRef(function Skeleton({ shape = 'text', className, ...props }, ref) {
|
|
7
|
+
return (_jsx("span", { ...props, ref: ref, className: cx('pui-skeleton', className), "data-shape": shape, "aria-hidden": 'true' }));
|
|
8
|
+
});
|
package/dist/slider.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Slider as BaseSlider } from '@base-ui/react/slider';
|
|
3
|
+
declare function SliderRoot<Value extends number | readonly number[]>({ value, defaultValue, onValueChange, ref, className, form, thumbAlignment, ...props }: BaseSlider.Root.Props<Value> & {
|
|
4
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
5
|
+
}): React.JSX.Element;
|
|
6
|
+
export declare const Slider: {
|
|
7
|
+
Root: typeof SliderRoot;
|
|
8
|
+
Label: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderLabelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
9
|
+
size?: import("./sizing.js").ComponentSize;
|
|
10
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
Value: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderValueProps, "ref"> & React.RefAttributes<HTMLOutputElement>, "ref">, "size"> & {
|
|
12
|
+
size?: import("./sizing.js").ComponentSize;
|
|
13
|
+
} & React.RefAttributes<HTMLOutputElement>>;
|
|
14
|
+
Control: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderControlProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
15
|
+
size?: import("./sizing.js").ComponentSize;
|
|
16
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
17
|
+
Track: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderTrackProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
18
|
+
size?: import("./sizing.js").ComponentSize;
|
|
19
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
20
|
+
Indicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderIndicatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
21
|
+
size?: import("./sizing.js").ComponentSize;
|
|
22
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
23
|
+
Thumb: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderThumbProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
24
|
+
size?: import("./sizing.js").ComponentSize;
|
|
25
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
26
|
+
};
|
|
27
|
+
export { SliderRoot };
|
|
28
|
+
export declare const SliderControl: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderControlProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
29
|
+
size?: import("./sizing.js").ComponentSize;
|
|
30
|
+
} & React.RefAttributes<HTMLDivElement>>, SliderIndicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderIndicatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
31
|
+
size?: import("./sizing.js").ComponentSize;
|
|
32
|
+
} & React.RefAttributes<HTMLDivElement>>, SliderLabel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderLabelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
33
|
+
size?: import("./sizing.js").ComponentSize;
|
|
34
|
+
} & React.RefAttributes<HTMLDivElement>>, SliderThumb: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderThumbProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
35
|
+
size?: import("./sizing.js").ComponentSize;
|
|
36
|
+
} & React.RefAttributes<HTMLDivElement>>, SliderTrack: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderTrackProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
37
|
+
size?: import("./sizing.js").ComponentSize;
|
|
38
|
+
} & React.RefAttributes<HTMLDivElement>>, SliderValue: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderValueProps, "ref"> & React.RefAttributes<HTMLOutputElement>, "ref">, "size"> & {
|
|
39
|
+
size?: import("./sizing.js").ComponentSize;
|
|
40
|
+
} & React.RefAttributes<HTMLOutputElement>>;
|
package/dist/slider.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Slider as BaseSlider } from '@base-ui/react/slider';
|
|
4
|
+
import { part, skin } from './parts.js';
|
|
5
|
+
import { useResetValue, useRootRef } from './form-state.js';
|
|
6
|
+
function SliderRoot({ value, defaultValue, onValueChange, ref, className, form, thumbAlignment = 'edge', ...props }) {
|
|
7
|
+
const [element, attach] = useRootRef(ref);
|
|
8
|
+
const [selected, setSelected] = useResetValue(value, (defaultValue ?? props.min ?? 0), element, form);
|
|
9
|
+
return (_jsx(BaseSlider.Root, { ...props, form: form, ref: attach, value: selected, thumbAlignment: thumbAlignment, className: skin('pui-slider', className), onValueChange: (next, event) => {
|
|
10
|
+
onValueChange?.(next, event);
|
|
11
|
+
if (value === undefined && !event.isCanceled)
|
|
12
|
+
setSelected(next);
|
|
13
|
+
} }));
|
|
14
|
+
}
|
|
15
|
+
export const Slider = {
|
|
16
|
+
...BaseSlider,
|
|
17
|
+
Root: SliderRoot,
|
|
18
|
+
Label: /* @__PURE__ */ part(BaseSlider.Label, 'pui-slider-label'),
|
|
19
|
+
Value: /* @__PURE__ */ part(BaseSlider.Value, 'pui-slider-value'),
|
|
20
|
+
Control: /* @__PURE__ */ part(BaseSlider.Control, 'pui-slider-control'),
|
|
21
|
+
Track: /* @__PURE__ */ part(BaseSlider.Track, 'pui-slider-track'),
|
|
22
|
+
Indicator: /* @__PURE__ */ part(BaseSlider.Indicator, 'pui-slider-indicator'),
|
|
23
|
+
Thumb: /* @__PURE__ */ part(BaseSlider.Thumb, 'pui-slider-thumb'),
|
|
24
|
+
};
|
|
25
|
+
// Flat names for React Server Components, which cannot dot into client exports.
|
|
26
|
+
export { SliderRoot };
|
|
27
|
+
export const { Control: SliderControl, Indicator: SliderIndicator, Label: SliderLabel, Thumb: SliderThumb, Track: SliderTrack, Value: SliderValue, } = Slider;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type ComponentSizeAlias } from './sizing.js';
|
|
3
|
+
export type SpinnerProps = Omit<React.ComponentPropsWithoutRef<'span'>, 'children'> & {
|
|
4
|
+
label?: string;
|
|
5
|
+
decorative?: boolean;
|
|
6
|
+
size?: ComponentSizeAlias;
|
|
7
|
+
};
|
|
8
|
+
/** Use decorative within a loading region that already owns the announcement. */
|
|
9
|
+
export declare const Spinner: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref">, "children"> & {
|
|
10
|
+
label?: string;
|
|
11
|
+
decorative?: boolean;
|
|
12
|
+
size?: ComponentSizeAlias;
|
|
13
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
package/dist/spinner.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { useComponentSize } from './sizing.js';
|
|
5
|
+
import { sizeName, cx } from './parts.js';
|
|
6
|
+
/** Use decorative within a loading region that already owns the announcement. */
|
|
7
|
+
export const Spinner = /* @__PURE__ */ React.forwardRef(function Spinner({ label = 'Loading', decorative = false, size, className, ...props }, ref) {
|
|
8
|
+
const scheme = useComponentSize(size);
|
|
9
|
+
return (_jsxs("span", { ...props, ref: ref, className: cx('pui-spinner', className), "data-size": sizeName(size), "data-ui-size": scheme, role: decorative ? undefined : 'status', "aria-hidden": decorative || undefined, children: [_jsxs("svg", { viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '2', "aria-hidden": 'true', children: [_jsx("circle", { cx: '12', cy: '12', r: '9', opacity: '.2' }), _jsx("path", { d: 'M12 3a9 9 0 0 1 9 9', strokeLinecap: 'round' })] }), !decorative && _jsx("span", { className: 'pui-feedback-sr', children: label })] }));
|
|
10
|
+
});
|
package/dist/status.d.ts
CHANGED
|
@@ -1,22 +1,4 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { type ComponentSize } from './sizing.js';
|
|
3
1
|
export type StatusTone = 'neutral' | 'success' | 'danger' | 'caution' | 'progress';
|
|
4
|
-
export type BadgeProps = React.ComponentPropsWithoutRef<'span'> & {
|
|
5
|
-
size?: ComponentSize;
|
|
6
|
-
tone?: StatusTone;
|
|
7
|
-
icon?: React.ReactNode;
|
|
8
|
-
};
|
|
9
|
-
export declare const Badge: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & {
|
|
10
|
-
size?: ComponentSize;
|
|
11
|
-
tone?: StatusTone;
|
|
12
|
-
icon?: React.ReactNode;
|
|
13
|
-
} & React.RefAttributes<HTMLSpanElement>>;
|
|
14
2
|
export declare function StatusIcon({ tone }: {
|
|
15
3
|
tone: StatusTone;
|
|
16
|
-
}):
|
|
17
|
-
/** Domain status labels and live announcements remain the caller's responsibility. */
|
|
18
|
-
export declare const StatusBadge: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & {
|
|
19
|
-
size?: ComponentSize;
|
|
20
|
-
tone?: StatusTone;
|
|
21
|
-
icon?: React.ReactNode;
|
|
22
|
-
} & React.RefAttributes<HTMLSpanElement>>;
|
|
4
|
+
}): import("react").JSX.Element;
|
package/dist/status.js
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Icon } from './icon.js';
|
|
4
|
+
const statusIcons = {
|
|
5
|
+
neutral: 'minus-circle',
|
|
6
|
+
success: 'check',
|
|
7
|
+
danger: 'alert',
|
|
8
|
+
caution: 'warning',
|
|
9
|
+
progress: 'clock',
|
|
10
|
+
};
|
|
11
11
|
export function StatusIcon({ tone }) {
|
|
12
|
-
return
|
|
12
|
+
return _jsx(Icon, { name: statusIcons[tone] });
|
|
13
13
|
}
|
|
14
|
-
/** Domain status labels and live announcements remain the caller's responsibility. */
|
|
15
|
-
export const StatusBadge = /* @__PURE__ */ React.forwardRef(function StatusBadge({ tone = 'neutral', icon, ...props }, ref) {
|
|
16
|
-
return (_jsx(Badge, { ...props, ref: ref, tone: tone, icon: icon === undefined ? _jsx(StatusIcon, { tone: tone }) : icon }));
|
|
17
|
-
});
|
package/dist/switch.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type ChoiceSize } from './choice.js';
|
|
3
|
+
declare const SwitchRoot: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/switch").SwitchRootProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & ChoiceSize & React.RefAttributes<HTMLElement>>;
|
|
4
|
+
export declare const Switch: {
|
|
5
|
+
Root: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/switch").SwitchRootProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & ChoiceSize & React.RefAttributes<HTMLElement>>;
|
|
6
|
+
Thumb: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/switch").SwitchThumbProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
|
|
7
|
+
size?: import("./sizing.js").ComponentSize;
|
|
8
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
|
9
|
+
};
|
|
10
|
+
export { SwitchRoot };
|
|
11
|
+
export declare const SwitchThumb: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/switch").SwitchThumbProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
|
|
12
|
+
size?: import("./sizing.js").ComponentSize;
|
|
13
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|