@surflane/ui 0.0.0-stage → 0.1.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.
Files changed (89) hide show
  1. package/LICENSE-APACHE +202 -0
  2. package/LICENSE-MIT +18 -0
  3. package/README.md +55 -2
  4. package/dist/advanced-forms.d.ts +115 -0
  5. package/dist/advanced-forms.js +93 -0
  6. package/dist/app-shell.d.ts +23 -0
  7. package/dist/app-shell.js +29 -0
  8. package/dist/button.d.ts +11 -0
  9. package/dist/button.js +16 -0
  10. package/dist/chart.d.ts +48 -0
  11. package/dist/chart.js +124 -0
  12. package/dist/commands.d.ts +47 -0
  13. package/dist/commands.js +27 -0
  14. package/dist/content.d.ts +59 -0
  15. package/dist/content.js +66 -0
  16. package/dist/context-overlays.d.ts +95 -0
  17. package/dist/context-overlays.js +50 -0
  18. package/dist/data.d.ts +95 -0
  19. package/dist/data.js +40 -0
  20. package/dist/date-picker.d.ts +23 -0
  21. package/dist/date-picker.js +39 -0
  22. package/dist/dialog-focus.d.ts +5 -0
  23. package/dist/dialog-focus.js +35 -0
  24. package/dist/dialog.d.ts +59 -0
  25. package/dist/dialog.js +49 -0
  26. package/dist/feedback.d.ts +76 -0
  27. package/dist/feedback.js +35 -0
  28. package/dist/file-upload.d.ts +77 -0
  29. package/dist/file-upload.js +343 -0
  30. package/dist/filter-bar.d.ts +17 -0
  31. package/dist/filter-bar.js +23 -0
  32. package/dist/form-state.d.ts +5 -0
  33. package/dist/form-state.js +63 -0
  34. package/dist/forms.d.ts +91 -0
  35. package/dist/forms.js +109 -0
  36. package/dist/foundations.d.ts +51 -0
  37. package/dist/foundations.js +55 -0
  38. package/dist/icon.d.ts +37 -0
  39. package/dist/icon.js +28 -0
  40. package/dist/index.d.ts +37 -0
  41. package/dist/index.js +38 -0
  42. package/dist/input-extensions.d.ts +117 -0
  43. package/dist/input-extensions.js +64 -0
  44. package/dist/input.d.ts +7 -0
  45. package/dist/input.js +10 -0
  46. package/dist/markdown.d.ts +15 -0
  47. package/dist/markdown.js +121 -0
  48. package/dist/menu.d.ts +79 -0
  49. package/dist/menu.js +44 -0
  50. package/dist/messages.d.ts +63 -0
  51. package/dist/messages.js +38 -0
  52. package/dist/navigation-menu.d.ts +52 -0
  53. package/dist/navigation-menu.js +31 -0
  54. package/dist/navigation.d.ts +107 -0
  55. package/dist/navigation.js +108 -0
  56. package/dist/otp-field.d.ts +12 -0
  57. package/dist/otp-field.js +46 -0
  58. package/dist/pagination.d.ts +23 -0
  59. package/dist/pagination.js +44 -0
  60. package/dist/panels.d.ts +66 -0
  61. package/dist/panels.js +99 -0
  62. package/dist/parts.d.ts +9 -0
  63. package/dist/parts.js +22 -0
  64. package/dist/popover.d.ts +21 -0
  65. package/dist/popover.js +13 -0
  66. package/dist/scroll-area.d.ts +8 -0
  67. package/dist/scroll-area.js +39 -0
  68. package/dist/select.d.ts +33 -0
  69. package/dist/select.js +97 -0
  70. package/dist/sizing.d.ts +13 -0
  71. package/dist/sizing.js +23 -0
  72. package/dist/slot.d.ts +2 -0
  73. package/dist/slot.js +10 -0
  74. package/dist/status.d.ts +22 -0
  75. package/dist/status.js +17 -0
  76. package/dist/syntax-engine.d.ts +5 -0
  77. package/dist/syntax-engine.js +129 -0
  78. package/dist/syntax-highlighter.d.ts +17 -0
  79. package/dist/syntax-highlighter.js +64 -0
  80. package/dist/toast.d.ts +59 -0
  81. package/dist/toast.js +99 -0
  82. package/dist/tone-transition.d.ts +4 -0
  83. package/dist/tone-transition.js +81 -0
  84. package/dist/tooltip.d.ts +11 -0
  85. package/dist/tooltip.js +13 -0
  86. package/dist/tree.d.ts +28 -0
  87. package/dist/tree.js +311 -0
  88. package/package.json +109 -4
  89. package/src/styles.css +3708 -0
package/dist/forms.js ADDED
@@ -0,0 +1,109 @@
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 { Field as BaseField } from "@base-ui/react/field";
6
+ import { Fieldset as BaseFieldset } from "@base-ui/react/fieldset";
7
+ import { Form as BaseForm } from "@base-ui/react/form";
8
+ import { Checkbox as BaseCheckbox } from "@base-ui/react/checkbox";
9
+ import { CheckboxGroup as BaseCheckboxGroup } from "@base-ui/react/checkbox-group";
10
+ import { Radio as BaseRadio } from "@base-ui/react/radio";
11
+ import { RadioGroup as BaseRadioGroup } from "@base-ui/react/radio-group";
12
+ import { Switch as BaseSwitch } from "@base-ui/react/switch";
13
+ const ChoiceResetPaint = React.createContext(0);
14
+ import { skin, part } from "./parts.js";
15
+ const FieldRoot = part(BaseField.Root, "pui-field");
16
+ const FieldLabel = part(BaseField.Label, "pui-field-label");
17
+ const FieldControl = part(BaseField.Control, "pui-input");
18
+ const FieldDescription = part(BaseField.Description, "pui-field-description");
19
+ const FieldError = part(BaseField.Error, "pui-field-error");
20
+ const FieldItem = part(BaseField.Item, "pui-field-item");
21
+ export const Field = {
22
+ ...BaseField,
23
+ Root: FieldRoot,
24
+ Label: FieldLabel,
25
+ Control: FieldControl,
26
+ Description: FieldDescription,
27
+ Error: FieldError,
28
+ Item: FieldItem,
29
+ };
30
+ export const Fieldset = {
31
+ ...BaseFieldset,
32
+ Root: part(BaseFieldset.Root, "pui-fieldset"),
33
+ Legend: part(BaseFieldset.Legend, "pui-fieldset-legend"),
34
+ };
35
+ export function Form({ className, ...props }) {
36
+ return (_jsx(BaseForm, { ...props, className: skin("pui-form", className) }));
37
+ }
38
+ export const Textarea = React.forwardRef(function Textarea({ className, size, ...props }, ref) {
39
+ const scheme = useComponentSize(size);
40
+ return (_jsx("textarea", { "data-ui-size": scheme, ...props, ref: ref, className: ["pui-input pui-textarea", className]
41
+ .filter(Boolean)
42
+ .join(" ") }));
43
+ });
44
+ import { useRootRef, useResetValue } from "./form-state.js";
45
+ const CheckboxRoot = React.forwardRef(function CheckboxRoot({ checked, defaultChecked = false, onCheckedChange, className, form, ...props }, ref) {
46
+ React.useContext(ChoiceResetPaint);
47
+ const [element, attach] = useRootRef(ref);
48
+ const [selected, setSelected] = useResetValue(checked, defaultChecked, element, form);
49
+ return (_jsx(BaseCheckbox.Root, { ...props, form: form, ref: attach, checked: selected, className: skin("pui-checkbox", className), onCheckedChange: (next, event) => {
50
+ onCheckedChange?.(next, event);
51
+ if (checked === undefined && !event.isCanceled)
52
+ setSelected(next);
53
+ } }));
54
+ });
55
+ const CheckboxIndicator = React.forwardRef(function CheckboxIndicator({ className, children, ...props }, ref) {
56
+ return (_jsx(BaseCheckbox.Indicator, { ...props, ref: ref, className: skin("pui-checkbox-indicator", className), children: children ?? (_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 20 20", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": "true", children: [_jsx("path", { className: "pui-checkbox-check", d: "m4 10 4 4 8-8" }), _jsx("path", { className: "pui-checkbox-mixed", d: "M4 10h12" })] })) }));
57
+ });
58
+ export const Checkbox = {
59
+ ...BaseCheckbox,
60
+ Root: CheckboxRoot,
61
+ Indicator: CheckboxIndicator,
62
+ };
63
+ export const CheckboxGroup = React.forwardRef(function CheckboxGroup({ value, defaultValue = [], onValueChange, className, ...props }, ref) {
64
+ const [element, attach] = useRootRef(ref);
65
+ const [selected, setSelected, revision] = useResetValue(value, defaultValue, element);
66
+ return (_jsx(ChoiceResetPaint.Provider, { value: revision, children: _jsx(BaseCheckboxGroup, { ...props, ref: attach, value: selected, className: skin("pui-choice-group", className), onValueChange: (next, event) => {
67
+ onValueChange?.(next, event);
68
+ if (value === undefined && !event.isCanceled)
69
+ setSelected(next);
70
+ } }) }));
71
+ });
72
+ export function RadioGroup({ value, defaultValue, onValueChange, className, form, ref, ...props }) {
73
+ const [element, attach] = useRootRef(ref);
74
+ const [selected, setSelected, revision] = useResetValue(value, defaultValue ?? null, element, form);
75
+ 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) => {
76
+ onValueChange?.(next, event);
77
+ if (value === undefined && !event.isCanceled)
78
+ setSelected(next);
79
+ } }) }));
80
+ }
81
+ const RadioRoot = React.forwardRef(function RadioRoot({ className, ...props }, ref) {
82
+ React.useContext(ChoiceResetPaint);
83
+ return (_jsx(BaseRadio.Root, { ...props, ref: ref, className: skin("pui-radio", className) }));
84
+ });
85
+ export const Radio = {
86
+ ...BaseRadio,
87
+ Root: RadioRoot,
88
+ Indicator: part(BaseRadio.Indicator, "pui-radio-indicator"),
89
+ };
90
+ const SwitchRoot = React.forwardRef(function SwitchRoot({ checked, defaultChecked = false, onCheckedChange, className, form, ...props }, ref) {
91
+ const [element, attach] = useRootRef(ref);
92
+ const [selected, setSelected] = useResetValue(checked, defaultChecked, element, form);
93
+ return (_jsx(BaseSwitch.Root, { ...props, form: form, ref: attach, checked: selected, className: skin("pui-switch", className), onCheckedChange: (next, event) => {
94
+ onCheckedChange?.(next, event);
95
+ if (checked === undefined && !event.isCanceled)
96
+ setSelected(next);
97
+ } }));
98
+ });
99
+ export const Switch = {
100
+ ...BaseSwitch,
101
+ Root: SwitchRoot,
102
+ Thumb: part(BaseSwitch.Thumb, "pui-switch-thumb"),
103
+ };
104
+ // Flat names for React Server Components, which cannot dot into client exports.
105
+ export { CheckboxIndicator, CheckboxRoot, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldRoot, RadioRoot, SwitchRoot, };
106
+ export const { Validity: FieldValidity } = Field;
107
+ export const { Legend: FieldsetLegend, Root: FieldsetRoot } = Fieldset;
108
+ export const { Indicator: RadioIndicator } = Radio;
109
+ export const { Thumb: SwitchThumb } = Switch;
@@ -0,0 +1,51 @@
1
+ import * as React from "react";
2
+ export type Space = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20;
3
+ export declare const Container: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
4
+ width?: "workspace" | "reading" | "wide" | "full";
5
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
6
+ export declare const Stack: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
7
+ gap?: Space;
8
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
+ export declare const Inline: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
10
+ gap?: Space;
11
+ justify?: "start" | "between" | "end";
12
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
+ export declare const Grid: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
14
+ gap?: Space;
15
+ /** Extend inline edges by the matching child content inset (card padding or table cell inset). The parent
16
+ * must reserve this space for the card surface and focus outline. */
17
+ bleed?: Space;
18
+ columns?: 1 | 2 | 3 | 4 | "layout";
19
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
20
+ /** Spans are explicit at each viewport breakpoint; placement follows DOM order. */
21
+ export declare const GridItem: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
22
+ span?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
23
+ mediumSpan?: 1 | 2 | 3 | 4 | 5 | 6;
24
+ smallSpan?: 1 | 2 | 3 | 4;
25
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
26
+ export declare const Surface: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
27
+ tone?: "canvas" | "subtle";
28
+ padding?: Space;
29
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
30
+ export declare function Heading({ level, size, className, ...props }: React.HTMLAttributes<HTMLHeadingElement> & {
31
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
32
+ size?: "display" | "title" | "page" | "section" | "subsection" | "workspace" | "document";
33
+ }): React.JSX.Element;
34
+ export declare function Text({ as: Tag, variant, color, weight, className, ...props }: React.HTMLAttributes<HTMLElement> & {
35
+ as?: "p" | "span" | "div";
36
+ variant?: "body" | "reading" | "table" | "caption" | "label" | "mono" | "metric";
37
+ color?: "primary" | "secondary" | "muted";
38
+ weight?: "regular" | "medium";
39
+ }): React.JSX.Element;
40
+ export declare function PageHeader({ as: Root, headingProps, actionsLabel, title, description, breadcrumb, actions, level, size, className, ...props }: Omit<React.ComponentProps<"div">, "title"> & {
41
+ as?: "div" | "header";
42
+ headingProps?: Omit<React.HTMLAttributes<HTMLHeadingElement>, "children" | "dangerouslySetInnerHTML">;
43
+ actionsLabel?: string;
44
+ title: React.ReactNode;
45
+ description?: React.ReactNode;
46
+ breadcrumb?: React.ReactNode;
47
+ actions?: React.ReactNode;
48
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
49
+ size?: "title" | "page" | "workspace" | "document";
50
+ }): React.JSX.Element;
51
+ export declare const Prose: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,55 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ const cx = (...values) => values.filter(Boolean).join(" ");
5
+ const gapStyle = (gap, style) => ({
6
+ ...(gap === undefined ? {} : { "--layout-gap": `var(--space-${gap})` }),
7
+ ...style,
8
+ });
9
+ export const Container = React.forwardRef(function Container({ width = "workspace", className, ...props }, ref) {
10
+ return (_jsx("div", { ...props, ref: ref, className: cx("pui-container", className), "data-width": width }));
11
+ });
12
+ export const Stack = React.forwardRef(function Stack({ gap, className, style, ...props }, ref) {
13
+ return (_jsx("div", { ...props, ref: ref, className: cx("pui-stack", className), style: gapStyle(gap, style) }));
14
+ });
15
+ export const Inline = React.forwardRef(function Inline({ gap, justify = "start", className, style, ...props }, ref) {
16
+ return (_jsx("div", { ...props, ref: ref, className: cx("pui-inline", className), "data-justify": justify, style: gapStyle(gap, style) }));
17
+ });
18
+ export const Grid = React.forwardRef(function Grid({ gap, bleed = 0, columns = 3, className, style, ...props }, ref) {
19
+ return (_jsx("div", { ...props, ref: ref, className: cx("pui-grid", className), "data-columns": columns, style: gapStyle(gap, {
20
+ "--grid-inline-bleed": `var(--space-${bleed})`,
21
+ ...style,
22
+ }) }));
23
+ });
24
+ /** Spans are explicit at each viewport breakpoint; placement follows DOM order. */
25
+ export const GridItem = React.forwardRef(function GridItem({ span, mediumSpan, smallSpan, className, style, ...props }, ref) {
26
+ return (_jsx("div", { ...props, ref: ref, className: cx("pui-grid-item", className), style: {
27
+ "--grid-item-span": span,
28
+ "--grid-item-span-medium": mediumSpan,
29
+ "--grid-item-span-small": smallSpan,
30
+ ...style,
31
+ } }));
32
+ });
33
+ export const Surface = React.forwardRef(function Surface({ tone = "subtle", padding, className, style, ...props }, ref) {
34
+ return (_jsx("div", { ...props, ref: ref, className: cx("pui-surface", className), "data-tone": tone, style: {
35
+ ...(padding === undefined
36
+ ? {}
37
+ : { "--surface-padding": `var(--space-${padding})` }),
38
+ ...style,
39
+ } }));
40
+ });
41
+ export function Heading({ level = 2, size = "section", className, ...props }) {
42
+ const Tag = `h${level}`;
43
+ return (_jsx(Tag, { ...props, className: cx("pui-heading", className), "data-size": size }));
44
+ }
45
+ export function Text({ as: Tag = "p", variant = "body", color = "primary", weight = "regular", className, ...props }) {
46
+ return (_jsx(Tag, { ...props, className: cx("pui-text", className), "data-variant": variant, "data-color": color, "data-weight": weight }));
47
+ }
48
+ export function PageHeader({ as: Root = "div", headingProps, actionsLabel, title, description, breadcrumb, actions, level = 1, size = "title", className, ...props }) {
49
+ return (_jsxs(Root, { ...props, className: cx("pui-page-header", className), children: [breadcrumb != null && breadcrumb !== false && breadcrumb !== "" && (_jsx("div", { className: "pui-page-header-breadcrumb", children: breadcrumb })), _jsxs("div", { className: "pui-page-header-content", children: [_jsxs("div", { className: "pui-page-header-copy", children: [_jsx(Heading, { ...headingProps, level: level, size: size, children: title }), description != null &&
50
+ description !== false &&
51
+ description !== "" && (_jsx(Text, { color: "secondary", className: "pui-page-header-description", children: description }))] }), actions != null && actions !== false && actions !== "" && (_jsx("div", { className: "pui-page-header-actions", role: actionsLabel ? "group" : undefined, "aria-label": actionsLabel, children: actions }))] })] }));
52
+ }
53
+ export const Prose = React.forwardRef(function Prose({ className, ...props }, ref) {
54
+ return _jsx("div", { ...props, ref: ref, className: cx("pui-prose", className) });
55
+ });
package/dist/icon.d.ts ADDED
@@ -0,0 +1,37 @@
1
+ import * as React from "react";
2
+ declare const shapes: {
3
+ search: React.JSX.Element;
4
+ plus: React.JSX.Element;
5
+ close: React.JSX.Element;
6
+ check: React.JSX.Element;
7
+ info: React.JSX.Element;
8
+ alert: React.JSX.Element;
9
+ warning: React.JSX.Element;
10
+ menu: React.JSX.Element;
11
+ sun: React.JSX.Element;
12
+ moon: React.JSX.Element;
13
+ monitor: React.JSX.Element;
14
+ "chevron-down": React.JSX.Element;
15
+ "chevron-forward": React.JSX.Element;
16
+ "arrow-back": React.JSX.Element;
17
+ "external-link": React.JSX.Element;
18
+ copy: React.JSX.Element;
19
+ play: React.JSX.Element;
20
+ settings: React.JSX.Element;
21
+ };
22
+ export type IconName = keyof typeof shapes;
23
+ export declare const iconNames: readonly IconName[];
24
+ type Semantics = {
25
+ decorative?: true;
26
+ label?: never;
27
+ } | {
28
+ decorative: false;
29
+ label: string;
30
+ };
31
+ export type IconProps = Omit<React.ComponentPropsWithoutRef<"svg">, "children" | "name" | "role" | "aria-label" | "aria-labelledby" | "aria-hidden" | "tabIndex" | "focusable" | "width" | "height" | "viewBox" | "strokeWidth" | "fill" | "stroke" | "title"> & Semantics & {
32
+ name: IconName;
33
+ size?: "sm" | "md" | "lg";
34
+ };
35
+ /** Static SVG only. Actions, focus, accessible button names and hit targets belong to the parent control. */
36
+ export declare const Icon: React.ForwardRefExoticComponent<IconProps & React.RefAttributes<SVGSVGElement>>;
37
+ export {};
package/dist/icon.js ADDED
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ const shapes = {
5
+ search: (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "10.5", cy: "10.5", r: "6.5" }), _jsx("path", { d: "m16 16 4 4" })] })),
6
+ plus: _jsx("path", { d: "M12 5v14M5 12h14" }),
7
+ close: _jsx("path", { d: "m6 6 12 12M18 6 6 18" }),
8
+ check: _jsx("path", { d: "m5 12 4 4L19 6" }),
9
+ info: (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "9" }), _jsx("path", { d: "M12 11v6m0-10v1" })] })),
10
+ alert: (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "9" }), _jsx("path", { d: "M12 7v6m0 3v1" })] })),
11
+ warning: (_jsxs(_Fragment, { children: [_jsx("path", { d: "m12 3 10 18H2L12 3Z" }), _jsx("path", { d: "M12 9v4m0 3v1" })] })),
12
+ menu: _jsx("path", { d: "M4 6h16M4 12h16M4 18h16" }),
13
+ sun: (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "4" }), _jsx("path", { d: "M12 2v2m0 16v2M2 12h2m16 0h2M5 5l1.5 1.5m11 11L19 19M5 19l1.5-1.5m11-11L19 5" })] })),
14
+ moon: _jsx("path", { d: "M20.5 13.2A8.5 8.5 0 0 1 10.8 3.5 8.5 8.5 0 1 0 20.5 13.2Z" }),
15
+ monitor: (_jsxs(_Fragment, { children: [_jsx("rect", { x: "3", y: "4", width: "18", height: "13", rx: "2" }), _jsx("path", { d: "M8 21h8m-4-4v4" })] })),
16
+ "chevron-down": _jsx("path", { d: "m7 10 5 5 5-5" }),
17
+ "chevron-forward": _jsx("path", { d: "m9 6 6 6-6 6" }),
18
+ "arrow-back": _jsx("path", { d: "M20 12H4m7-7-7 7 7 7" }),
19
+ "external-link": (_jsx(_Fragment, { children: _jsx("path", { d: "M14 3h7v7m0-7L10 14M10 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-5" }) })),
20
+ copy: (_jsxs(_Fragment, { children: [_jsx("rect", { x: "8", y: "8", width: "12", height: "13", rx: "2" }), _jsx("path", { d: "M16 8V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3" })] })),
21
+ play: _jsx("path", { d: "m7 3 14 9-14 9V3Z" }),
22
+ settings: (_jsx(_Fragment, { children: _jsx("path", { d: "M4 6h16M4 12h16M4 18h16M9 3v6m6 0v6m-6 0v6" }) })),
23
+ };
24
+ export const iconNames = Object.keys(shapes);
25
+ /** Static SVG only. Actions, focus, accessible button names and hit targets belong to the parent control. */
26
+ export const Icon = React.forwardRef(function Icon({ name, size = "sm", decorative = true, label, className, ...props }, ref) {
27
+ return (_jsx("svg", { ...props, ref: ref, className: ["pui-icon", className].filter(Boolean).join(" "), "data-size": size, "data-directional": name === "chevron-forward" || name === "arrow-back" ? "true" : undefined, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", focusable: "false", "aria-hidden": decorative ? true : undefined, role: decorative ? undefined : "img", "aria-label": decorative ? undefined : label, children: shapes[name] }));
28
+ });
@@ -0,0 +1,37 @@
1
+ export { SizeProvider, type ComponentSize, type ComponentSizeAlias, } from "./sizing.js";
2
+ export { Button, type ButtonVariant, type ButtonSize, type ButtonProps, } from "./button.js";
3
+ export { Slot } from "./slot.js";
4
+ export { Input } from "./input.js";
5
+ export { Select, NativeSelect, NativeSelectOption, NativeSelectOptGroup, type SelectOption, type SelectProps, } from "./select.js";
6
+ export { Popover, PopoverArrow, PopoverBackdrop, PopoverClose, PopoverDescription, PopoverHandle, PopoverPopup, PopoverPortal, PopoverPositioner, PopoverRoot, PopoverTitle, PopoverTrigger, PopoverViewport, PopoverContent, } from "./popover.js";
7
+ export { Tooltip, TooltipProvider } from "./tooltip.js";
8
+ export { Dialog, AlertDialog, DialogBackdrop, DialogClose, DialogDescription, DialogHandle, DialogPopup, DialogPortal, DialogRoot, DialogTitle, DialogTrigger, DialogViewport, DialogContent, DialogHeader, DialogBody, DialogFooter, DialogCloseButton, AlertDialogBackdrop, AlertDialogClose, AlertDialogDescription, AlertDialogHandle, AlertDialogPopup, AlertDialogPortal, AlertDialogRoot, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, } from "./dialog.js";
9
+ export { Menu, MenuArrow, MenuBackdrop, MenuCheckboxItem, MenuCheckboxItemIndicator, MenuClear, MenuEmpty, MenuFilterProvider, MenuGroup, MenuGroupLabel, MenuHandle, MenuInput, MenuItem, MenuLinkItem, MenuList, MenuPopup, MenuPortal, MenuPositioner, MenuRadioGroup, MenuRadioItem, MenuRadioItemIndicator, MenuRoot, MenuSeparator, MenuSubmenuRoot, MenuSubmenuTrigger, MenuTrigger, MenuViewport, MenuContent, } from "./menu.js";
10
+ export { ScrollArea } from "./scroll-area.js";
11
+ export { Sheet, Drawer, type PanelSide, SheetBackdrop, SheetClose, SheetDescription, SheetHandle, SheetPopup, SheetPortal, SheetRoot, SheetTitle, SheetTrigger, SheetViewport, SheetContent, SheetHeader, SheetBody, SheetFooter, DrawerBackdrop, DrawerClose, DrawerContent, DrawerDescription, DrawerHandle, DrawerIndent, DrawerIndentBackground, DrawerPopup, DrawerPortal, DrawerProvider, DrawerRoot, DrawerSwipeArea, DrawerTitle, DrawerTrigger, DrawerViewport, DrawerVirtualKeyboardProvider, DrawerPrimitiveContent, DrawerHeader, DrawerBody, DrawerFooter, } from "./panels.js";
12
+ export { Container, Stack, Inline, Grid, GridItem, Surface, Heading, Text, PageHeader, Prose, type Space, } from "./foundations.js";
13
+ export { Field, Fieldset, Form, Textarea, Checkbox, CheckboxGroup, Radio, RadioGroup, Switch, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldRoot, FieldValidity, FieldsetLegend, FieldsetRoot, CheckboxIndicator, CheckboxRoot, RadioIndicator, RadioRoot, SwitchRoot, SwitchThumb, } from "./forms.js";
14
+ export { Tabs, Accordion, Collapsible, Avatar, Separator, Link, Breadcrumbs, TabsIndicator, TabsList, TabsPanel, TabsRoot, TabsTab, AccordionHeader, AccordionItem, AccordionPanel, AccordionRoot, AccordionTrigger, CollapsiblePanel, CollapsibleRoot, CollapsibleTrigger, AvatarFallback, AvatarImage, AvatarRoot, AvatarStatus, BreadcrumbsRoot, BreadcrumbsList, BreadcrumbsItem, BreadcrumbsLink, BreadcrumbsSeparator, BreadcrumbsCurrent, } from "./navigation.js";
15
+ export { Badge, StatusBadge, type BadgeProps, type StatusTone, } from "./status.js";
16
+ export { Progress, Meter, Spinner, Skeleton, type SpinnerProps, type SkeletonProps, ProgressIndicator, ProgressLabel, ProgressRoot, ProgressTrack, ProgressValue, MeterIndicator, MeterLabel, MeterRoot, MeterTrack, MeterValue, } from "./feedback.js";
17
+ export { Table, List, TableContainer, TableRoot, TableCaption, TableHead, TableBody, TableFoot, TableRow, TableHeaderCell, TableCell, ListRoot, ListItem, ListContent, ListTitle, ListDescription, ListActions, } from "./data.js";
18
+ export { InlineMessage, EmptyState, InlineMessageRoot, InlineMessageIcon, InlineMessageContent, InlineMessageTitle, InlineMessageDescription, InlineMessageActions, EmptyStateRoot, EmptyStateIcon, EmptyStateTitle, EmptyStateDescription, EmptyStateActions, } from "./messages.js";
19
+ export { Card, CodeBlock, type CodeBlockProps, CardRoot, CardHeader, CardTitle, CardDescription, CardBody, CardFooter, } from "./content.js";
20
+ export { Pagination, type PaginationProps } from "./pagination.js";
21
+ export { Combobox, NumberField, ComboboxArrow, ComboboxBackdrop, ComboboxChip, ComboboxChipRemove, ComboboxChips, ComboboxClear, ComboboxCollection, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxIcon, ComboboxInput, ComboboxInputGroup, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxList, ComboboxPopup, ComboboxPortal, ComboboxPositioner, ComboboxRoot, ComboboxRow, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, ComboboxContent, NumberFieldDecrement, NumberFieldGroup, NumberFieldIncrement, NumberFieldInput, NumberFieldRoot, NumberFieldScrubArea, NumberFieldScrubAreaCursor, } from "./advanced-forms.js";
22
+ export { Autocomplete, Slider, AutocompleteArrow, AutocompleteBackdrop, AutocompleteClear, AutocompleteCollection, AutocompleteEmpty, AutocompleteGroup, AutocompleteGroupLabel, AutocompleteIcon, AutocompleteInput, AutocompleteInputGroup, AutocompleteItem, AutocompleteList, AutocompletePopup, AutocompletePortal, AutocompletePositioner, AutocompleteRoot, AutocompleteRow, AutocompleteSeparator, AutocompleteStatus, AutocompleteTrigger, AutocompleteValue, AutocompleteContent, SliderControl, SliderIndicator, SliderLabel, SliderRoot, SliderThumb, SliderTrack, SliderValue, } from "./input-extensions.js";
23
+ export { DirectionProvider } from "@base-ui/react/direction-provider";
24
+ export { Toggle, ToggleGroup, Toolbar, Menubar, ToolbarButton, ToolbarGroup, ToolbarInput, ToolbarLink, ToolbarRoot, ToolbarSeparator, } from "./commands.js";
25
+ export { ContextMenu, PreviewCard, ContextMenuArrow, ContextMenuBackdrop, ContextMenuCheckboxItem, ContextMenuCheckboxItemIndicator, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuLinkItem, ContextMenuPopup, ContextMenuPortal, ContextMenuPositioner, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRadioItemIndicator, ContextMenuRoot, ContextMenuSeparator, ContextMenuSubmenuRoot, ContextMenuSubmenuTrigger, ContextMenuTrigger, ContextMenuContent, PreviewCardArrow, PreviewCardBackdrop, PreviewCardHandle, PreviewCardPopup, PreviewCardPortal, PreviewCardPositioner, PreviewCardRoot, PreviewCardTrigger, PreviewCardViewport, PreviewCardContent, } from "./context-overlays.js";
26
+ export { NavigationMenu, NavigationMenuArrow, NavigationMenuBackdrop, NavigationMenuContent, NavigationMenuIcon, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuPopup, NavigationMenuPortal, NavigationMenuPositioner, NavigationMenuRoot, NavigationMenuTrigger, NavigationMenuViewport, } from "./navigation-menu.js";
27
+ export { OTPField, OTPFieldInput, OTPFieldRoot, OTPFieldSeparator, OTPFieldGroup, } from "./otp-field.js";
28
+ export { Toast, type ToastRootProps, type ToastViewportProps, ToastAction, ToastArrow, ToastClose, ToastContent, ToastDescription, ToastPortal, ToastPositioner, ToastProvider, ToastRoot, ToastTitle, ToastViewport, ToastIcon, ToastText, } from "./toast.js";
29
+ export { FileUpload, type FileUploadProps, type UploadTransport, type FileUploadLabels, type FileChangeDetails, type FileRejection, type UploadState, } from "./file-upload.js";
30
+ export { Icon, iconNames, type IconName, type IconProps } from "./icon.js";
31
+ export { FilterBar, FilterBarRoot, FilterBarControls, FilterBarField, FilterBarActions, FilterBarSummary, } from "./filter-bar.js";
32
+ export { AppShell, AppShellRoot, AppShellHeader, AppShellSidebar, AppShellContent, AppShellFooter, AppShellLabel, AppShellLink, } from "./app-shell.js";
33
+ export { Tree, type TreeNode, type TreeProps } from "./tree.js";
34
+ export { DatePicker, DateRangePicker, TimeField, DateLocaleProvider, type DatePickerProps, type DateRangePickerProps, type TimeFieldProps, type DateValue, type TimeValue, } from "./date-picker.js";
35
+ export { Chart, type ChartDatum, type ChartSeries, type ChartProps, } from "./chart.js";
36
+ export { SyntaxHighlighter, syntaxLanguages, type SyntaxHighlighterProps, } from "./syntax-highlighter.js";
37
+ export { Markdown, type MarkdownProps } from "./markdown.js";
package/dist/index.js ADDED
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ export { SizeProvider, } from "./sizing.js";
3
+ export { Button, } from "./button.js";
4
+ export { Slot } from "./slot.js";
5
+ export { Input } from "./input.js";
6
+ export { Select, NativeSelect, NativeSelectOption, NativeSelectOptGroup, } from "./select.js";
7
+ export { Popover, PopoverArrow, PopoverBackdrop, PopoverClose, PopoverDescription, PopoverHandle, PopoverPopup, PopoverPortal, PopoverPositioner, PopoverRoot, PopoverTitle, PopoverTrigger, PopoverViewport, PopoverContent, } from "./popover.js";
8
+ export { Tooltip, TooltipProvider } from "./tooltip.js";
9
+ export { Dialog, AlertDialog, DialogBackdrop, DialogClose, DialogDescription, DialogHandle, DialogPopup, DialogPortal, DialogRoot, DialogTitle, DialogTrigger, DialogViewport, DialogContent, DialogHeader, DialogBody, DialogFooter, DialogCloseButton, AlertDialogBackdrop, AlertDialogClose, AlertDialogDescription, AlertDialogHandle, AlertDialogPopup, AlertDialogPortal, AlertDialogRoot, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, } from "./dialog.js";
10
+ export { Menu, MenuArrow, MenuBackdrop, MenuCheckboxItem, MenuCheckboxItemIndicator, MenuClear, MenuEmpty, MenuFilterProvider, MenuGroup, MenuGroupLabel, MenuHandle, MenuInput, MenuItem, MenuLinkItem, MenuList, MenuPopup, MenuPortal, MenuPositioner, MenuRadioGroup, MenuRadioItem, MenuRadioItemIndicator, MenuRoot, MenuSeparator, MenuSubmenuRoot, MenuSubmenuTrigger, MenuTrigger, MenuViewport, MenuContent, } from "./menu.js";
11
+ export { ScrollArea } from "./scroll-area.js";
12
+ export { Sheet, Drawer, SheetBackdrop, SheetClose, SheetDescription, SheetHandle, SheetPopup, SheetPortal, SheetRoot, SheetTitle, SheetTrigger, SheetViewport, SheetContent, SheetHeader, SheetBody, SheetFooter, DrawerBackdrop, DrawerClose, DrawerContent, DrawerDescription, DrawerHandle, DrawerIndent, DrawerIndentBackground, DrawerPopup, DrawerPortal, DrawerProvider, DrawerRoot, DrawerSwipeArea, DrawerTitle, DrawerTrigger, DrawerViewport, DrawerVirtualKeyboardProvider, DrawerPrimitiveContent, DrawerHeader, DrawerBody, DrawerFooter, } from "./panels.js";
13
+ export { Container, Stack, Inline, Grid, GridItem, Surface, Heading, Text, PageHeader, Prose, } from "./foundations.js";
14
+ export { Field, Fieldset, Form, Textarea, Checkbox, CheckboxGroup, Radio, RadioGroup, Switch, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldRoot, FieldValidity, FieldsetLegend, FieldsetRoot, CheckboxIndicator, CheckboxRoot, RadioIndicator, RadioRoot, SwitchRoot, SwitchThumb, } from "./forms.js";
15
+ export { Tabs, Accordion, Collapsible, Avatar, Separator, Link, Breadcrumbs, TabsIndicator, TabsList, TabsPanel, TabsRoot, TabsTab, AccordionHeader, AccordionItem, AccordionPanel, AccordionRoot, AccordionTrigger, CollapsiblePanel, CollapsibleRoot, CollapsibleTrigger, AvatarFallback, AvatarImage, AvatarRoot, AvatarStatus, BreadcrumbsRoot, BreadcrumbsList, BreadcrumbsItem, BreadcrumbsLink, BreadcrumbsSeparator, BreadcrumbsCurrent, } from "./navigation.js";
16
+ export { Badge, StatusBadge, } from "./status.js";
17
+ export { Progress, Meter, Spinner, Skeleton, ProgressIndicator, ProgressLabel, ProgressRoot, ProgressTrack, ProgressValue, MeterIndicator, MeterLabel, MeterRoot, MeterTrack, MeterValue, } from "./feedback.js";
18
+ export { Table, List, TableContainer, TableRoot, TableCaption, TableHead, TableBody, TableFoot, TableRow, TableHeaderCell, TableCell, ListRoot, ListItem, ListContent, ListTitle, ListDescription, ListActions, } from "./data.js";
19
+ export { InlineMessage, EmptyState, InlineMessageRoot, InlineMessageIcon, InlineMessageContent, InlineMessageTitle, InlineMessageDescription, InlineMessageActions, EmptyStateRoot, EmptyStateIcon, EmptyStateTitle, EmptyStateDescription, EmptyStateActions, } from "./messages.js";
20
+ export { Card, CodeBlock, CardRoot, CardHeader, CardTitle, CardDescription, CardBody, CardFooter, } from "./content.js";
21
+ export { Pagination } from "./pagination.js";
22
+ export { Combobox, NumberField, ComboboxArrow, ComboboxBackdrop, ComboboxChip, ComboboxChipRemove, ComboboxChips, ComboboxClear, ComboboxCollection, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxIcon, ComboboxInput, ComboboxInputGroup, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxList, ComboboxPopup, ComboboxPortal, ComboboxPositioner, ComboboxRoot, ComboboxRow, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, ComboboxContent, NumberFieldDecrement, NumberFieldGroup, NumberFieldIncrement, NumberFieldInput, NumberFieldRoot, NumberFieldScrubArea, NumberFieldScrubAreaCursor, } from "./advanced-forms.js";
23
+ export { Autocomplete, Slider, AutocompleteArrow, AutocompleteBackdrop, AutocompleteClear, AutocompleteCollection, AutocompleteEmpty, AutocompleteGroup, AutocompleteGroupLabel, AutocompleteIcon, AutocompleteInput, AutocompleteInputGroup, AutocompleteItem, AutocompleteList, AutocompletePopup, AutocompletePortal, AutocompletePositioner, AutocompleteRoot, AutocompleteRow, AutocompleteSeparator, AutocompleteStatus, AutocompleteTrigger, AutocompleteValue, AutocompleteContent, SliderControl, SliderIndicator, SliderLabel, SliderRoot, SliderThumb, SliderTrack, SliderValue, } from "./input-extensions.js";
24
+ export { DirectionProvider } from "@base-ui/react/direction-provider";
25
+ export { Toggle, ToggleGroup, Toolbar, Menubar, ToolbarButton, ToolbarGroup, ToolbarInput, ToolbarLink, ToolbarRoot, ToolbarSeparator, } from "./commands.js";
26
+ export { ContextMenu, PreviewCard, ContextMenuArrow, ContextMenuBackdrop, ContextMenuCheckboxItem, ContextMenuCheckboxItemIndicator, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuLinkItem, ContextMenuPopup, ContextMenuPortal, ContextMenuPositioner, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRadioItemIndicator, ContextMenuRoot, ContextMenuSeparator, ContextMenuSubmenuRoot, ContextMenuSubmenuTrigger, ContextMenuTrigger, ContextMenuContent, PreviewCardArrow, PreviewCardBackdrop, PreviewCardHandle, PreviewCardPopup, PreviewCardPortal, PreviewCardPositioner, PreviewCardRoot, PreviewCardTrigger, PreviewCardViewport, PreviewCardContent, } from "./context-overlays.js";
27
+ export { NavigationMenu, NavigationMenuArrow, NavigationMenuBackdrop, NavigationMenuContent, NavigationMenuIcon, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuPopup, NavigationMenuPortal, NavigationMenuPositioner, NavigationMenuRoot, NavigationMenuTrigger, NavigationMenuViewport, } from "./navigation-menu.js";
28
+ export { OTPField, OTPFieldInput, OTPFieldRoot, OTPFieldSeparator, OTPFieldGroup, } from "./otp-field.js";
29
+ export { Toast, ToastAction, ToastArrow, ToastClose, ToastContent, ToastDescription, ToastPortal, ToastPositioner, ToastProvider, ToastRoot, ToastTitle, ToastViewport, ToastIcon, ToastText, } from "./toast.js";
30
+ export { FileUpload, } from "./file-upload.js";
31
+ export { Icon, iconNames } from "./icon.js";
32
+ export { FilterBar, FilterBarRoot, FilterBarControls, FilterBarField, FilterBarActions, FilterBarSummary, } from "./filter-bar.js";
33
+ export { AppShell, AppShellRoot, AppShellHeader, AppShellSidebar, AppShellContent, AppShellFooter, AppShellLabel, AppShellLink, } from "./app-shell.js";
34
+ export { Tree } from "./tree.js";
35
+ export { DatePicker, DateRangePicker, TimeField, DateLocaleProvider, } from "./date-picker.js";
36
+ export { Chart, } from "./chart.js";
37
+ export { SyntaxHighlighter, syntaxLanguages, } from "./syntax-highlighter.js";
38
+ export { Markdown } from "./markdown.js";
@@ -0,0 +1,117 @@
1
+ import * as React from "react";
2
+ import { Autocomplete as BaseAutocomplete } from "@base-ui/react/autocomplete";
3
+ import { Slider as BaseSlider } from "@base-ui/react/slider";
4
+ declare const AutocompleteRoot: typeof BaseAutocomplete.Root;
5
+ export declare const Autocomplete: {
6
+ Root: typeof BaseAutocomplete.Root;
7
+ Content: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/autocomplete").AutocompletePopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & {
8
+ positionerProps?: React.ComponentPropsWithoutRef<typeof BaseAutocomplete.Positioner>;
9
+ } & React.RefAttributes<HTMLDivElement>>;
10
+ Popup: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompletePopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
11
+ size?: import("./sizing.js").ComponentSize;
12
+ } & React.RefAttributes<HTMLDivElement>>;
13
+ Positioner: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompletePositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
14
+ size?: import("./sizing.js").ComponentSize;
15
+ } & React.RefAttributes<HTMLDivElement>>;
16
+ Input: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteInputProps, "ref"> & React.RefAttributes<HTMLInputElement>, "ref">, "size"> & {
17
+ size?: import("./sizing.js").ComponentSize;
18
+ } & React.RefAttributes<HTMLInputElement>>;
19
+ List: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteListProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
20
+ size?: import("./sizing.js").ComponentSize;
21
+ } & React.RefAttributes<HTMLDivElement>>;
22
+ Empty: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteEmptyProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
23
+ size?: import("./sizing.js").ComponentSize;
24
+ } & React.RefAttributes<HTMLDivElement>>;
25
+ Status: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteStatusProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
26
+ size?: import("./sizing.js").ComponentSize;
27
+ } & React.RefAttributes<HTMLDivElement>>;
28
+ Group: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
29
+ size?: import("./sizing.js").ComponentSize;
30
+ } & React.RefAttributes<HTMLDivElement>>;
31
+ GroupLabel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteGroupLabelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
32
+ size?: import("./sizing.js").ComponentSize;
33
+ } & React.RefAttributes<HTMLDivElement>>;
34
+ Clear: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteClearProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
35
+ Trigger: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/autocomplete").AutocompleteTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
36
+ InputGroup: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteInputGroupProps & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
37
+ size?: import("./sizing.js").ComponentSize;
38
+ } & React.RefAttributes<HTMLDivElement>>;
39
+ Item: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteItemProps & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
40
+ size?: import("./sizing.js").ComponentSize;
41
+ } & React.RefAttributes<HTMLDivElement>>;
42
+ Separator: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
43
+ size?: import("./sizing.js").ComponentSize;
44
+ } & React.RefAttributes<HTMLDivElement>>;
45
+ Value: typeof BaseAutocomplete.Value;
46
+ Icon: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/autocomplete").AutocompleteIconProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
47
+ Portal: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/autocomplete").AutocompletePortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
48
+ Backdrop: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/autocomplete").AutocompleteBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
49
+ Arrow: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/autocomplete").AutocompleteArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
50
+ Row: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/autocomplete").AutocompleteRowProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
51
+ Collection: typeof BaseAutocomplete.Collection;
52
+ useFilter: typeof import("@base-ui/react/internals/filter").getFilter;
53
+ useFilteredItems: typeof BaseAutocomplete.useFilteredItems;
54
+ };
55
+ declare function SliderRoot<Value extends number | readonly number[]>({ value, defaultValue, onValueChange, ref, className, form, thumbAlignment, ...props }: BaseSlider.Root.Props<Value> & {
56
+ ref?: React.Ref<HTMLDivElement>;
57
+ }): React.JSX.Element;
58
+ export declare const Slider: {
59
+ Root: typeof SliderRoot;
60
+ Label: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderLabelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
61
+ size?: import("./sizing.js").ComponentSize;
62
+ } & React.RefAttributes<HTMLDivElement>>;
63
+ Value: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderValueProps, "ref"> & React.RefAttributes<HTMLOutputElement>, "ref">, "size"> & {
64
+ size?: import("./sizing.js").ComponentSize;
65
+ } & React.RefAttributes<HTMLOutputElement>>;
66
+ Control: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderControlProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
67
+ size?: import("./sizing.js").ComponentSize;
68
+ } & React.RefAttributes<HTMLDivElement>>;
69
+ Track: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderTrackProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
70
+ size?: import("./sizing.js").ComponentSize;
71
+ } & React.RefAttributes<HTMLDivElement>>;
72
+ Indicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderIndicatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
73
+ size?: import("./sizing.js").ComponentSize;
74
+ } & React.RefAttributes<HTMLDivElement>>;
75
+ Thumb: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderThumbProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
76
+ size?: import("./sizing.js").ComponentSize;
77
+ } & React.RefAttributes<HTMLDivElement>>;
78
+ };
79
+ export { AutocompleteRoot, SliderRoot };
80
+ export declare const AutocompleteArrow: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/autocomplete").AutocompleteArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>>, AutocompleteBackdrop: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/autocomplete").AutocompleteBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>, AutocompleteClear: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteClearProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>, AutocompleteCollection: typeof BaseAutocomplete.Collection, AutocompleteEmpty: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteEmptyProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
81
+ size?: import("./sizing.js").ComponentSize;
82
+ } & React.RefAttributes<HTMLDivElement>>, AutocompleteGroup: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
83
+ size?: import("./sizing.js").ComponentSize;
84
+ } & React.RefAttributes<HTMLDivElement>>, AutocompleteGroupLabel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteGroupLabelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
85
+ size?: import("./sizing.js").ComponentSize;
86
+ } & React.RefAttributes<HTMLDivElement>>, AutocompleteIcon: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/autocomplete").AutocompleteIconProps, "ref"> & React.RefAttributes<HTMLSpanElement>>, AutocompleteInput: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteInputProps, "ref"> & React.RefAttributes<HTMLInputElement>, "ref">, "size"> & {
87
+ size?: import("./sizing.js").ComponentSize;
88
+ } & React.RefAttributes<HTMLInputElement>>, AutocompleteInputGroup: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteInputGroupProps & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
89
+ size?: import("./sizing.js").ComponentSize;
90
+ } & React.RefAttributes<HTMLDivElement>>, AutocompleteItem: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteItemProps & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
91
+ size?: import("./sizing.js").ComponentSize;
92
+ } & React.RefAttributes<HTMLDivElement>>, AutocompleteList: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteListProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
93
+ size?: import("./sizing.js").ComponentSize;
94
+ } & React.RefAttributes<HTMLDivElement>>, AutocompletePopup: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompletePopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
95
+ size?: import("./sizing.js").ComponentSize;
96
+ } & React.RefAttributes<HTMLDivElement>>, AutocompletePortal: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/autocomplete").AutocompletePortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>, AutocompletePositioner: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompletePositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
97
+ size?: import("./sizing.js").ComponentSize;
98
+ } & React.RefAttributes<HTMLDivElement>>, AutocompleteRow: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/autocomplete").AutocompleteRowProps, "ref"> & React.RefAttributes<HTMLDivElement>>, AutocompleteSeparator: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
99
+ size?: import("./sizing.js").ComponentSize;
100
+ } & React.RefAttributes<HTMLDivElement>>, AutocompleteStatus: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/autocomplete").AutocompleteStatusProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
101
+ size?: import("./sizing.js").ComponentSize;
102
+ } & React.RefAttributes<HTMLDivElement>>, AutocompleteTrigger: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/autocomplete").AutocompleteTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>, AutocompleteValue: typeof BaseAutocomplete.Value, AutocompleteContent: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/autocomplete").AutocompletePopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & {
103
+ positionerProps?: React.ComponentPropsWithoutRef<typeof BaseAutocomplete.Positioner>;
104
+ } & React.RefAttributes<HTMLDivElement>>;
105
+ export declare const SliderControl: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderControlProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
106
+ size?: import("./sizing.js").ComponentSize;
107
+ } & React.RefAttributes<HTMLDivElement>>, SliderIndicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderIndicatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
108
+ size?: import("./sizing.js").ComponentSize;
109
+ } & React.RefAttributes<HTMLDivElement>>, SliderLabel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderLabelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
110
+ size?: import("./sizing.js").ComponentSize;
111
+ } & React.RefAttributes<HTMLDivElement>>, SliderThumb: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderThumbProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
112
+ size?: import("./sizing.js").ComponentSize;
113
+ } & React.RefAttributes<HTMLDivElement>>, SliderTrack: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderTrackProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
114
+ size?: import("./sizing.js").ComponentSize;
115
+ } & React.RefAttributes<HTMLDivElement>>, SliderValue: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/slider").SliderValueProps, "ref"> & React.RefAttributes<HTMLOutputElement>, "ref">, "size"> & {
116
+ size?: import("./sizing.js").ComponentSize;
117
+ } & React.RefAttributes<HTMLOutputElement>>;
@@ -0,0 +1,64 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Autocomplete as BaseAutocomplete } from "@base-ui/react/autocomplete";
5
+ import { Slider as BaseSlider } from "@base-ui/react/slider";
6
+ import { Combobox } from "./advanced-forms.js";
7
+ import { skin, part } from "./parts.js";
8
+ import { useResetValue, useRootRef } from "./form-state.js";
9
+ const AutocompleteRoot = function AutocompleteRoot({ children, form, value, defaultValue, onValueChange, ...props }) {
10
+ const anchor = React.useRef(null);
11
+ const [query, setQuery, revision] = useResetValue(value, defaultValue ?? "", anchor, form);
12
+ return (_jsxs(BaseAutocomplete.Root, { ...props, form: form, value: query, onValueChange: (next, event) => {
13
+ onValueChange?.(next, event);
14
+ if (value === undefined && !event.isCanceled)
15
+ setQuery(next);
16
+ }, children: [_jsx("span", { hidden: true, ref: anchor }), children] }, revision));
17
+ };
18
+ const AutoTrigger = React.forwardRef(function AutoTrigger({ className, children, ...props }, ref) {
19
+ return (_jsx(BaseAutocomplete.Trigger, { "aria-label": "Show suggestions", ...props, ref: ref, className: skin("pui-combobox-action", className), children: children ?? (_jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", "aria-hidden": "true", children: _jsx("path", { d: "m6 9 6 6 6-6" }) })) }));
20
+ });
21
+ const AutoClear = React.forwardRef(function AutoClear(props, ref) {
22
+ return _jsx(Combobox.Clear, { "aria-label": "Clear input", ...props, ref: ref });
23
+ });
24
+ export const Autocomplete = {
25
+ ...BaseAutocomplete,
26
+ Root: AutocompleteRoot,
27
+ Content: Combobox.Content,
28
+ Popup: Combobox.Popup,
29
+ Positioner: Combobox.Positioner,
30
+ Input: Combobox.Input,
31
+ List: Combobox.List,
32
+ Empty: Combobox.Empty,
33
+ Status: Combobox.Status,
34
+ Group: Combobox.Group,
35
+ GroupLabel: Combobox.GroupLabel,
36
+ Clear: AutoClear,
37
+ Trigger: AutoTrigger,
38
+ InputGroup: part(BaseAutocomplete.InputGroup, "pui-combobox-group"),
39
+ Item: part(BaseAutocomplete.Item, "pui-combobox-item"),
40
+ Separator: part(BaseAutocomplete.Separator, "pui-combobox-separator"),
41
+ };
42
+ function SliderRoot({ value, defaultValue, onValueChange, ref, className, form, thumbAlignment = "edge", ...props }) {
43
+ const [element, attach] = useRootRef(ref);
44
+ const [selected, setSelected] = useResetValue(value, (defaultValue ?? props.min ?? 0), element, form);
45
+ return (_jsx(BaseSlider.Root, { ...props, form: form, ref: attach, value: selected, thumbAlignment: thumbAlignment, className: skin("pui-slider", className), onValueChange: (next, event) => {
46
+ onValueChange?.(next, event);
47
+ if (value === undefined && !event.isCanceled)
48
+ setSelected(next);
49
+ } }));
50
+ }
51
+ export const Slider = {
52
+ ...BaseSlider,
53
+ Root: SliderRoot,
54
+ Label: part(BaseSlider.Label, "pui-slider-label"),
55
+ Value: part(BaseSlider.Value, "pui-slider-value"),
56
+ Control: part(BaseSlider.Control, "pui-slider-control"),
57
+ Track: part(BaseSlider.Track, "pui-slider-track"),
58
+ Indicator: part(BaseSlider.Indicator, "pui-slider-indicator"),
59
+ Thumb: part(BaseSlider.Thumb, "pui-slider-thumb"),
60
+ };
61
+ // Flat names for React Server Components, which cannot dot into client exports.
62
+ export { AutocompleteRoot, SliderRoot };
63
+ export const { Arrow: AutocompleteArrow, Backdrop: AutocompleteBackdrop, Clear: AutocompleteClear, Collection: AutocompleteCollection, Empty: AutocompleteEmpty, Group: AutocompleteGroup, GroupLabel: AutocompleteGroupLabel, Icon: AutocompleteIcon, Input: AutocompleteInput, InputGroup: AutocompleteInputGroup, Item: AutocompleteItem, List: AutocompleteList, Popup: AutocompletePopup, Portal: AutocompletePortal, Positioner: AutocompletePositioner, Row: AutocompleteRow, Separator: AutocompleteSeparator, Status: AutocompleteStatus, Trigger: AutocompleteTrigger, Value: AutocompleteValue, Content: AutocompleteContent, } = Autocomplete;
64
+ export const { Control: SliderControl, Indicator: SliderIndicator, Label: SliderLabel, Thumb: SliderThumb, Track: SliderTrack, Value: SliderValue, } = Slider;
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ import { type ComponentSizeAlias } from "./sizing.js";
3
+ export declare const Input: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref">, "size"> & {
4
+ size?: number | ComponentSizeAlias;
5
+ leadingIcon?: React.ReactNode;
6
+ wrapperClassName?: string;
7
+ } & React.RefAttributes<HTMLInputElement>>;
package/dist/input.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 { Input as BaseInput } from "@base-ui/react/input";
6
+ const cx = (...v) => v.filter(Boolean).join(" ");
7
+ export const Input = React.forwardRef(function Input({ className, leadingIcon, wrapperClassName, size, ...props }, ref) {
8
+ const scheme = useComponentSize(typeof size === "string" ? size : undefined);
9
+ return (_jsxs("span", { "data-ui-size": scheme, className: cx("pui-control", wrapperClassName), "data-leading-icon": leadingIcon ? "" : undefined, "data-disabled": props.disabled || undefined, children: [leadingIcon && (_jsx("span", { className: "pui-control-icon control-icon", "aria-hidden": "true", children: leadingIcon })), _jsx(BaseInput, { ...props, size: typeof size === "number" ? size : undefined, ref: ref, className: cx("pui-input", className) })] }));
10
+ });