@surflane/ui 0.2.0 → 0.4.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 (59) hide show
  1. package/README.md +17 -7
  2. package/dist/advanced-forms.js +24 -24
  3. package/dist/app-shell.d.ts +2 -1
  4. package/dist/app-shell.js +25 -9
  5. package/dist/avatar.d.ts +24 -0
  6. package/dist/avatar.js +26 -0
  7. package/dist/button.js +3 -3
  8. package/dist/chart.js +6 -3
  9. package/dist/chevron.d.ts +3 -0
  10. package/dist/chevron.js +6 -0
  11. package/dist/commands.js +9 -9
  12. package/dist/content.js +11 -8
  13. package/dist/context-overlays.js +6 -6
  14. package/dist/data.d.ts +57 -12
  15. package/dist/data.js +60 -18
  16. package/dist/dialog.js +8 -7
  17. package/dist/disclosure.d.ts +42 -0
  18. package/dist/disclosure.js +41 -0
  19. package/dist/feedback.js +14 -14
  20. package/dist/file-upload.js +1 -1
  21. package/dist/filter-bar.js +5 -5
  22. package/dist/forms.js +17 -17
  23. package/dist/foundations.js +7 -7
  24. package/dist/icon.d.ts +1 -0
  25. package/dist/icon.js +5 -2
  26. package/dist/index.d.ts +7 -7
  27. package/dist/index.js +10 -7
  28. package/dist/input-extensions.js +11 -11
  29. package/dist/input.js +1 -1
  30. package/dist/markdown.js +3 -2
  31. package/dist/menu.js +14 -14
  32. package/dist/messages.js +11 -11
  33. package/dist/navigation-menu.js +9 -9
  34. package/dist/navigation.d.ts +1 -91
  35. package/dist/navigation.js +8 -75
  36. package/dist/otp-field.js +4 -4
  37. package/dist/pagination.js +1 -1
  38. package/dist/panels.js +12 -11
  39. package/dist/parts.d.ts +3 -0
  40. package/dist/parts.js +8 -1
  41. package/dist/popover.js +2 -2
  42. package/dist/scroll-area.js +1 -1
  43. package/dist/select.js +3 -2
  44. package/dist/sizing.js +1 -1
  45. package/dist/status.js +2 -2
  46. package/dist/syntax-context.d.ts +7 -0
  47. package/dist/syntax-context.js +4 -0
  48. package/dist/syntax-highlighter.d.ts +4 -1
  49. package/dist/syntax-highlighter.js +11 -5
  50. package/dist/syntax-highlighting.d.ts +8 -0
  51. package/dist/syntax-highlighting.js +12 -0
  52. package/dist/table-selection.d.ts +31 -0
  53. package/dist/table-selection.js +50 -0
  54. package/dist/tabs.d.ts +29 -0
  55. package/dist/tabs.js +13 -0
  56. package/dist/toast.js +14 -14
  57. package/package.json +57 -8
  58. package/src/all.css +8 -0
  59. package/src/styles.css +3579 -3598
@@ -15,10 +15,10 @@ const AutocompleteRoot = function AutocompleteRoot({ children, form, value, defa
15
15
  setQuery(next);
16
16
  }, children: [_jsx("span", { hidden: true, ref: anchor }), children] }, revision));
17
17
  };
18
- const AutoTrigger = React.forwardRef(function AutoTrigger({ className, children, ...props }, ref) {
18
+ const AutoTrigger = /* @__PURE__ */ React.forwardRef(function AutoTrigger({ className, children, ...props }, ref) {
19
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
20
  });
21
- const AutoClear = React.forwardRef(function AutoClear(props, ref) {
21
+ const AutoClear = /* @__PURE__ */ React.forwardRef(function AutoClear(props, ref) {
22
22
  return _jsx(Combobox.Clear, { "aria-label": 'Clear input', ...props, ref: ref });
23
23
  });
24
24
  export const Autocomplete = {
@@ -35,9 +35,9 @@ export const Autocomplete = {
35
35
  GroupLabel: Combobox.GroupLabel,
36
36
  Clear: AutoClear,
37
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'),
38
+ InputGroup: /* @__PURE__ */ part(BaseAutocomplete.InputGroup, 'pui-combobox-group'),
39
+ Item: /* @__PURE__ */ part(BaseAutocomplete.Item, 'pui-combobox-item'),
40
+ Separator: /* @__PURE__ */ part(BaseAutocomplete.Separator, 'pui-combobox-separator'),
41
41
  };
42
42
  function SliderRoot({ value, defaultValue, onValueChange, ref, className, form, thumbAlignment = 'edge', ...props }) {
43
43
  const [element, attach] = useRootRef(ref);
@@ -51,12 +51,12 @@ function SliderRoot({ value, defaultValue, onValueChange, ref, className, form,
51
51
  export const Slider = {
52
52
  ...BaseSlider,
53
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'),
54
+ Label: /* @__PURE__ */ part(BaseSlider.Label, 'pui-slider-label'),
55
+ Value: /* @__PURE__ */ part(BaseSlider.Value, 'pui-slider-value'),
56
+ Control: /* @__PURE__ */ part(BaseSlider.Control, 'pui-slider-control'),
57
+ Track: /* @__PURE__ */ part(BaseSlider.Track, 'pui-slider-track'),
58
+ Indicator: /* @__PURE__ */ part(BaseSlider.Indicator, 'pui-slider-indicator'),
59
+ Thumb: /* @__PURE__ */ part(BaseSlider.Thumb, 'pui-slider-thumb'),
60
60
  };
61
61
  // Flat names for React Server Components, which cannot dot into client exports.
62
62
  export { AutocompleteRoot, SliderRoot };
package/dist/input.js CHANGED
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
  import { useComponentSize } from './sizing.js';
5
5
  import { Input as BaseInput } from '@base-ui/react/input';
6
6
  const cx = (...v) => v.filter(Boolean).join(' ');
7
- export const Input = React.forwardRef(function Input({ className, leadingIcon, wrapperClassName, size, ...props }, ref) {
7
+ export const Input = /* @__PURE__ */ React.forwardRef(function Input({ className, leadingIcon, wrapperClassName, size, ...props }, ref) {
8
8
  const scheme = useComponentSize(typeof size === 'string' ? size : undefined);
9
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
10
  });
package/dist/markdown.js CHANGED
@@ -20,7 +20,7 @@ function visit(node, callback) {
20
20
  }
21
21
  /** CommonMark + GFM. HTML stays disabled, URLs use react-markdown's safe default.
22
22
  * Fetching, permissions, frontmatter, MDX and script execution are caller concerns. */
23
- export const Markdown = React.forwardRef(function Markdown({ source, label = 'Markdown content', headingLevel = 2, codeWrap = false, className, ...props }, ref) {
23
+ export const Markdown = /* @__PURE__ */ React.forwardRef(function Markdown({ source, label = 'Markdown content', headingLevel = 2, codeWrap = false, className, ...props }, ref) {
24
24
  const prefix = `md-${React.useId().replace(/[^a-zA-Z0-9_-]/g, '')}`;
25
25
  const headings = React.useMemo(() => () => (tree) => {
26
26
  const counts = new Map();
@@ -91,7 +91,8 @@ export const Markdown = React.forwardRef(function Markdown({ source, label = 'Ma
91
91
  const child = React.Children.toArray(children)[0];
92
92
  if (!React.isValidElement(child))
93
93
  return _jsx("pre", { children: children });
94
- const language = /(?:^|\s)language-([^\s]+)/.exec(child.props.className ?? '')?.[1] ?? 'text';
94
+ const language = /(?:^|\s)language-([^\s]+)/.exec(child.props.className ?? '')?.[1] ??
95
+ 'text';
95
96
  const code = String(child.props.children ?? '').replace(/\n$/, '');
96
97
  return (_jsx(CodeBlock, { code: code, language: language, wrap: codeWrap, label: `${label}: code at line ${node?.position?.start.line ?? 1}` }));
97
98
  },
package/dist/menu.js CHANGED
@@ -3,21 +3,21 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
4
  import { Menu as BaseMenu } from '@base-ui/react/menu';
5
5
  import { skin, part } from './parts.js';
6
- const MenuPopup = part(BaseMenu.Popup, 'pui-menu');
7
- const MenuPositioner = part(BaseMenu.Positioner, 'pui-positioner');
8
- const MenuContent = React.forwardRef(function MenuContent({ align = 'end', sideOffset = 6, side, collisionPadding, className, ...props }, ref) {
6
+ const MenuPopup = /* @__PURE__ */ part(BaseMenu.Popup, 'pui-menu');
7
+ const MenuPositioner = /* @__PURE__ */ part(BaseMenu.Positioner, 'pui-positioner');
8
+ const MenuContent = /* @__PURE__ */ React.forwardRef(function MenuContent({ align = 'end', sideOffset = 6, side, collisionPadding, className, ...props }, ref) {
9
9
  return (_jsx(MenuPositioner, { align: align, side: side, sideOffset: sideOffset, collisionPadding: collisionPadding, children: _jsx(MenuPopup, { ...props, ref: ref, className: className }) }));
10
10
  });
11
- const MenuTrigger = React.forwardRef(function MenuTrigger({ className, ...props }, ref) {
11
+ const MenuTrigger = /* @__PURE__ */ React.forwardRef(function MenuTrigger({ className, ...props }, ref) {
12
12
  return (_jsx(BaseMenu.Trigger, { "data-variant": 'ghost', ...props, ref: ref, className: skin('pui-button pui-menu-trigger', className) }));
13
13
  });
14
- const CheckboxIndicator = React.forwardRef(function CheckboxIndicator({ className, children, ...props }, ref) {
14
+ const CheckboxIndicator = /* @__PURE__ */ React.forwardRef(function CheckboxIndicator({ className, children, ...props }, ref) {
15
15
  return (_jsx(BaseMenu.CheckboxItemIndicator, { keepMounted: true, ...props, ref: ref, className: skin('pui-menu-indicator', 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: 'm5 12 4 4L19 6' }) })) }));
16
16
  });
17
- const RadioIndicator = React.forwardRef(function RadioIndicator({ className, children, ...props }, ref) {
17
+ const RadioIndicator = /* @__PURE__ */ React.forwardRef(function RadioIndicator({ className, children, ...props }, ref) {
18
18
  return (_jsx(BaseMenu.RadioItemIndicator, { keepMounted: true, ...props, ref: ref, className: skin('pui-menu-indicator', className), children: children ?? (_jsx("svg", { width: '16', height: '16', viewBox: '0 0 24 24', fill: 'currentColor', "aria-hidden": 'true', children: _jsx("circle", { cx: '12', cy: '12', r: '4' }) })) }));
19
19
  });
20
- const SubmenuTrigger = React.forwardRef(function SubmenuTrigger({ className, children, indicator, ...props }, ref) {
20
+ const SubmenuTrigger = /* @__PURE__ */ React.forwardRef(function SubmenuTrigger({ className, children, indicator, ...props }, ref) {
21
21
  return (_jsxs(BaseMenu.SubmenuTrigger, { ...props, ref: ref, className: skin('pui-menu-item pui-menu-submenu-trigger', className), children: [children, indicator === false
22
22
  ? null
23
23
  : (indicator ?? (_jsx("svg", { className: 'pui-submenu-arrow', width: '16', height: '16', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.6', "aria-hidden": 'true', children: _jsx("path", { d: 'm9 6 6 6-6 6' }) })))] }));
@@ -31,13 +31,13 @@ export const Menu = {
31
31
  CheckboxItemIndicator: CheckboxIndicator,
32
32
  RadioItemIndicator: RadioIndicator,
33
33
  SubmenuTrigger,
34
- Item: part(BaseMenu.Item, 'pui-menu-item'),
35
- LinkItem: part(BaseMenu.LinkItem, 'pui-menu-item'),
36
- CheckboxItem: part(BaseMenu.CheckboxItem, 'pui-menu-item pui-menu-check-item'),
37
- RadioItem: part(BaseMenu.RadioItem, 'pui-menu-item pui-menu-check-item'),
38
- GroupLabel: part(BaseMenu.GroupLabel, 'pui-menu-group-label'),
39
- Separator: part(BaseMenu.Separator, 'pui-menu-separator'),
40
- Input: part(BaseMenu.Input, 'pui-input'),
34
+ Item: /* @__PURE__ */ part(BaseMenu.Item, 'pui-menu-item'),
35
+ LinkItem: /* @__PURE__ */ part(BaseMenu.LinkItem, 'pui-menu-item'),
36
+ CheckboxItem: /* @__PURE__ */ part(BaseMenu.CheckboxItem, 'pui-menu-item pui-menu-check-item'),
37
+ RadioItem: /* @__PURE__ */ part(BaseMenu.RadioItem, 'pui-menu-item pui-menu-check-item'),
38
+ GroupLabel: /* @__PURE__ */ part(BaseMenu.GroupLabel, 'pui-menu-group-label'),
39
+ Separator: /* @__PURE__ */ part(BaseMenu.Separator, 'pui-menu-separator'),
40
+ Input: /* @__PURE__ */ part(BaseMenu.Input, 'pui-input'),
41
41
  };
42
42
  // Flat names for React Server Components, which cannot dot into client exports.
43
43
  export { MenuPopup, MenuPositioner, MenuTrigger, MenuContent };
package/dist/messages.js CHANGED
@@ -4,22 +4,22 @@ import * as React from 'react';
4
4
  import { useToneTransition } from './tone-transition.js';
5
5
  import { part } from './parts.js';
6
6
  import { StatusIcon } from './status.js';
7
- const MessageRoot = React.forwardRef(function MessageRoot({ tone = 'neutral', className, ...props }, ref) {
7
+ const MessageRoot = /* @__PURE__ */ React.forwardRef(function MessageRoot({ tone = 'neutral', className, ...props }, ref) {
8
8
  const elementRef = useToneTransition(tone, ref);
9
9
  return (_jsx("div", { ...props, ref: elementRef, "data-tone": tone, className: ['pui-message', className].filter(Boolean).join(' ') }));
10
10
  });
11
- const MessageIcon = React.forwardRef(function MessageIcon({ tone = 'neutral', children, className, ...props }, ref) {
11
+ const MessageIcon = /* @__PURE__ */ React.forwardRef(function MessageIcon({ tone = 'neutral', children, className, ...props }, ref) {
12
12
  return (_jsx("span", { ...props, ref: ref, "aria-hidden": 'true', className: ['pui-message-icon', className].filter(Boolean).join(' '), children: children ?? _jsx(StatusIcon, { tone: tone }) }));
13
13
  });
14
14
  export const InlineMessage = {
15
15
  Root: MessageRoot,
16
16
  Icon: MessageIcon,
17
- Content: part('div', 'pui-message-content'),
18
- Title: part('strong', 'pui-message-title'),
19
- Description: part('p', 'pui-message-description'),
20
- Actions: part('div', 'pui-message-actions'),
17
+ Content: /* @__PURE__ */ part('div', 'pui-message-content'),
18
+ Title: /* @__PURE__ */ part('strong', 'pui-message-title'),
19
+ Description: /* @__PURE__ */ part('p', 'pui-message-description'),
20
+ Actions: /* @__PURE__ */ part('div', 'pui-message-actions'),
21
21
  };
22
- const EmptyTitle = React.forwardRef(function EmptyTitle({ level = 3, className, ...props }, ref) {
22
+ const EmptyTitle = /* @__PURE__ */ React.forwardRef(function EmptyTitle({ level = 3, className, ...props }, ref) {
23
23
  return React.createElement(`h${level}`, {
24
24
  ...props,
25
25
  ref,
@@ -27,11 +27,11 @@ const EmptyTitle = React.forwardRef(function EmptyTitle({ level = 3, className,
27
27
  });
28
28
  });
29
29
  export const EmptyState = {
30
- Root: part('div', 'pui-empty'),
31
- Icon: part('div', 'pui-empty-icon'),
30
+ Root: /* @__PURE__ */ part('div', 'pui-empty'),
31
+ Icon: /* @__PURE__ */ part('div', 'pui-empty-icon'),
32
32
  Title: EmptyTitle,
33
- Description: part('p', 'pui-empty-description'),
34
- Actions: part('div', 'pui-empty-actions'),
33
+ Description: /* @__PURE__ */ part('p', 'pui-empty-description'),
34
+ Actions: /* @__PURE__ */ part('div', 'pui-empty-actions'),
35
35
  };
36
36
  // Flat names for React Server Components, which cannot dot into client exports.
37
37
  export const { Root: EmptyStateRoot, Icon: EmptyStateIcon, Title: EmptyStateTitle, Description: EmptyStateDescription, Actions: EmptyStateActions, } = EmptyState;
@@ -7,7 +7,7 @@ function Root(props) {
7
7
  const { className, orientation = 'horizontal', ...rest } = props;
8
8
  return (_jsx(BaseNavigationMenu.Root, { ...rest, orientation: orientation, "data-orientation": orientation, className: skin('pui-navigation-menu', className) }));
9
9
  }
10
- const Trigger = React.forwardRef(function Trigger({ className, children, indicator, ...props }, ref) {
10
+ const Trigger = /* @__PURE__ */ React.forwardRef(function Trigger({ className, children, indicator, ...props }, ref) {
11
11
  return (_jsxs(BaseNavigationMenu.Trigger, { "data-variant": 'ghost', ...props, ref: ref, className: skin('pui-button pui-navigation-trigger', className), children: [children, indicator === false
12
12
  ? null
13
13
  : (indicator ?? (_jsx(BaseNavigationMenu.Icon, { className: 'pui-navigation-icon', 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' }) }) })))] }));
@@ -16,14 +16,14 @@ export const NavigationMenu = {
16
16
  ...BaseNavigationMenu,
17
17
  Root,
18
18
  Trigger,
19
- List: part(BaseNavigationMenu.List, 'pui-navigation-list'),
20
- Item: part(BaseNavigationMenu.Item, 'pui-navigation-item'),
21
- Link: part(BaseNavigationMenu.Link, 'pui-navigation-link'),
22
- Content: part(BaseNavigationMenu.Content, 'pui-navigation-content'),
23
- Positioner: part(BaseNavigationMenu.Positioner, 'pui-positioner pui-navigation-positioner'),
24
- Popup: part(BaseNavigationMenu.Popup, 'pui-navigation-popup'),
25
- Viewport: part(BaseNavigationMenu.Viewport, 'pui-navigation-viewport'),
26
- Icon: React.forwardRef(function Icon({ children, className, ...props }, ref) {
19
+ List: /* @__PURE__ */ part(BaseNavigationMenu.List, 'pui-navigation-list'),
20
+ Item: /* @__PURE__ */ part(BaseNavigationMenu.Item, 'pui-navigation-item'),
21
+ Link: /* @__PURE__ */ part(BaseNavigationMenu.Link, 'pui-navigation-link'),
22
+ Content: /* @__PURE__ */ part(BaseNavigationMenu.Content, 'pui-navigation-content'),
23
+ Positioner: /* @__PURE__ */ part(BaseNavigationMenu.Positioner, 'pui-positioner pui-navigation-positioner'),
24
+ Popup: /* @__PURE__ */ part(BaseNavigationMenu.Popup, 'pui-navigation-popup'),
25
+ Viewport: /* @__PURE__ */ part(BaseNavigationMenu.Viewport, 'pui-navigation-viewport'),
26
+ Icon: /* @__PURE__ */ React.forwardRef(function Icon({ children, className, ...props }, ref) {
27
27
  return (_jsx(BaseNavigationMenu.Icon, { ...props, ref: ref, className: skin('pui-navigation-icon', 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' }) })) }));
28
28
  }),
29
29
  };
@@ -1,70 +1,4 @@
1
1
  import * as React from 'react';
2
- import { type ComponentSizeAlias } from './sizing.js';
3
- import { Accordion as BaseAccordion } from '@base-ui/react/accordion';
4
- export declare const Tabs: {
5
- Root: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
6
- size?: import("./sizing.js").ComponentSize;
7
- } & React.RefAttributes<HTMLDivElement>>;
8
- List: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsListProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
9
- size?: import("./sizing.js").ComponentSize;
10
- } & React.RefAttributes<HTMLDivElement>>;
11
- Tab: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsTabProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
12
- size?: import("./sizing.js").ComponentSize;
13
- } & React.RefAttributes<HTMLElement>>;
14
- Panel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
15
- size?: import("./sizing.js").ComponentSize;
16
- } & React.RefAttributes<HTMLDivElement>>;
17
- Indicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
18
- size?: import("./sizing.js").ComponentSize;
19
- } & React.RefAttributes<HTMLSpanElement>>;
20
- };
21
- declare function AccordionRoot<Value = string>({ className, ...props }: BaseAccordion.Root.Props<Value>): React.JSX.Element;
22
- declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/accordion").AccordionTriggerProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & {
23
- indicator?: React.ReactNode;
24
- } & React.RefAttributes<HTMLElement>>;
25
- declare const AccordionPanel: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/accordion").AccordionPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
26
- export declare const Accordion: {
27
- Root: typeof AccordionRoot;
28
- Item: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/accordion").AccordionItemProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
29
- size?: import("./sizing.js").ComponentSize;
30
- } & React.RefAttributes<HTMLDivElement>>;
31
- Header: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/accordion").AccordionHeaderProps, "ref"> & React.RefAttributes<HTMLHeadingElement>, "ref">, "size"> & {
32
- size?: import("./sizing.js").ComponentSize;
33
- } & React.RefAttributes<HTMLHeadingElement>>;
34
- Trigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/accordion").AccordionTriggerProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & {
35
- indicator?: React.ReactNode;
36
- } & React.RefAttributes<HTMLElement>>;
37
- Panel: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/accordion").AccordionPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
38
- };
39
- declare const CollapsibleTrigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/collapsible").CollapsibleTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & {
40
- indicator?: React.ReactNode;
41
- } & React.RefAttributes<HTMLButtonElement>>;
42
- declare const CollapsiblePanel: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/collapsible").CollapsiblePanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
43
- export declare const Collapsible: {
44
- Root: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/collapsible").CollapsibleRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
45
- size?: import("./sizing.js").ComponentSize;
46
- } & React.RefAttributes<HTMLDivElement>>;
47
- Trigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/collapsible").CollapsibleTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & {
48
- indicator?: React.ReactNode;
49
- } & React.RefAttributes<HTMLButtonElement>>;
50
- Panel: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/collapsible").CollapsiblePanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
51
- };
52
- declare const AvatarRoot: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/avatar").AvatarRootProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & {
53
- size?: ComponentSizeAlias;
54
- } & React.RefAttributes<HTMLSpanElement>>;
55
- declare const AvatarFallback: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/avatar").AvatarFallbackProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
56
- export declare const Avatar: {
57
- Root: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/avatar").AvatarRootProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & {
58
- size?: ComponentSizeAlias;
59
- } & React.RefAttributes<HTMLSpanElement>>;
60
- Status: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref">, "size"> & {
61
- size?: import("./sizing.js").ComponentSize;
62
- } & React.RefAttributes<HTMLSpanElement>>;
63
- Fallback: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/avatar").AvatarFallbackProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
64
- Image: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/avatar").AvatarImageProps, "ref"> & React.RefAttributes<HTMLImageElement>, "ref">, "size"> & {
65
- size?: import("./sizing.js").ComponentSize;
66
- } & React.RefAttributes<HTMLImageElement>>;
67
- };
68
2
  export declare const Separator: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/separator").SeparatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & {
69
3
  inset?: boolean;
70
4
  } & React.RefAttributes<HTMLDivElement>>;
@@ -79,29 +13,5 @@ export declare const Breadcrumbs: {
79
13
  Separator: typeof BreadcrumbSeparator;
80
14
  Current: typeof BreadcrumbCurrent;
81
15
  };
82
- export { AccordionPanel, AccordionRoot, AccordionTrigger, AvatarFallback, AvatarRoot, CollapsiblePanel, CollapsibleTrigger, };
83
- export declare const AccordionHeader: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/accordion").AccordionHeaderProps, "ref"> & React.RefAttributes<HTMLHeadingElement>, "ref">, "size"> & {
84
- size?: import("./sizing.js").ComponentSize;
85
- } & React.RefAttributes<HTMLHeadingElement>>, AccordionItem: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/accordion").AccordionItemProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
86
- size?: import("./sizing.js").ComponentSize;
87
- } & React.RefAttributes<HTMLDivElement>>;
88
- export declare const AvatarImage: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/avatar").AvatarImageProps, "ref"> & React.RefAttributes<HTMLImageElement>, "ref">, "size"> & {
89
- size?: import("./sizing.js").ComponentSize;
90
- } & React.RefAttributes<HTMLImageElement>>, AvatarStatus: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref">, "size"> & {
91
- size?: import("./sizing.js").ComponentSize;
92
- } & React.RefAttributes<HTMLSpanElement>>;
93
16
  export declare const BreadcrumbsRoot: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>, BreadcrumbsList: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.OlHTMLAttributes<HTMLOListElement>, HTMLOListElement>, "ref"> & React.RefAttributes<HTMLOListElement>>, BreadcrumbsItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>, BreadcrumbsLink: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & React.RefAttributes<HTMLAnchorElement>>, BreadcrumbsSeparator: typeof BreadcrumbSeparator, BreadcrumbsCurrent: typeof BreadcrumbCurrent;
94
- export declare const CollapsibleRoot: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/collapsible").CollapsibleRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
95
- size?: import("./sizing.js").ComponentSize;
96
- } & React.RefAttributes<HTMLDivElement>>;
97
- export declare const TabsIndicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
98
- size?: import("./sizing.js").ComponentSize;
99
- } & React.RefAttributes<HTMLSpanElement>>, TabsList: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsListProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
100
- size?: import("./sizing.js").ComponentSize;
101
- } & React.RefAttributes<HTMLDivElement>>, TabsPanel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
102
- size?: import("./sizing.js").ComponentSize;
103
- } & React.RefAttributes<HTMLDivElement>>, TabsRoot: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
104
- size?: import("./sizing.js").ComponentSize;
105
- } & React.RefAttributes<HTMLDivElement>>, TabsTab: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsTabProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
106
- size?: import("./sizing.js").ComponentSize;
107
- } & React.RefAttributes<HTMLElement>>;
17
+ export {};
@@ -1,84 +1,22 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
- import { useComponentSize } from './sizing.js';
5
- import { Tabs as BaseTabs } from '@base-ui/react/tabs';
6
- import { Accordion as BaseAccordion } from '@base-ui/react/accordion';
7
- import { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible';
8
- import { Avatar as BaseAvatar } from '@base-ui/react/avatar';
9
4
  import { Separator as BaseSeparator } from '@base-ui/react/separator';
10
- import { skin, part } from './parts.js';
11
- export const Tabs = {
12
- ...BaseTabs,
13
- Root: part(BaseTabs.Root, 'pui-tabs'),
14
- List: part(BaseTabs.List, 'pui-tabs-list'),
15
- Tab: part(BaseTabs.Tab, 'pui-tabs-tab'),
16
- Panel: part(BaseTabs.Panel, 'pui-tabs-panel'),
17
- Indicator: part(BaseTabs.Indicator, 'pui-tabs-indicator'),
18
- };
19
- function Chevron() {
20
- return (_jsx("svg", { className: 'pui-disclosure-chevron', width: '16', height: '16', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.5', "aria-hidden": 'true', children: _jsx("path", { d: 'm9 6 6 6-6 6' }) }));
21
- }
22
- function AccordionRoot({ className, ...props }) {
23
- return (_jsx(BaseAccordion.Root, { ...props, className: skin('pui-accordion', className) }));
24
- }
25
- const AccordionTrigger = React.forwardRef(function AccordionTrigger({ className, children, indicator, ...props }, ref) {
26
- return (_jsxs(BaseAccordion.Trigger, { ...props, ref: ref, className: skin('pui-disclosure-trigger', className), children: [_jsx("span", { className: 'pui-disclosure-label', children: children }), indicator === undefined ? _jsx(Chevron, {}) : indicator] }));
27
- });
28
- const AccordionPanel = React.forwardRef(function AccordionPanel({ className, children, render, ...props }, ref) {
29
- return (_jsx(BaseAccordion.Panel, { ...props, ref: ref, className: skin('pui-accordion-panel', className), render: render ??
30
- ((panelProps, state) => (_jsx("div", { ...panelProps, inert: state.transitionStatus === 'ending' || undefined, "aria-hidden": state.transitionStatus === 'ending' || undefined }))), children: _jsx("div", { className: 'pui-disclosure-body', children: children }) }));
31
- });
32
- export const Accordion = {
33
- ...BaseAccordion,
34
- Root: AccordionRoot,
35
- Item: part(BaseAccordion.Item, 'pui-accordion-item'),
36
- Header: part(BaseAccordion.Header, 'pui-accordion-header'),
37
- Trigger: AccordionTrigger,
38
- Panel: AccordionPanel,
39
- };
40
- const CollapsibleTrigger = React.forwardRef(function CollapsibleTrigger({ className, children, indicator, ...props }, ref) {
41
- return (_jsxs(BaseCollapsible.Trigger, { ...props, ref: ref, className: skin('pui-disclosure-trigger', className), children: [_jsx("span", { className: 'pui-disclosure-label', children: children }), indicator === undefined ? _jsx(Chevron, {}) : indicator] }));
42
- });
43
- const CollapsiblePanel = React.forwardRef(function CollapsiblePanel({ className, children, ...props }, ref) {
44
- return (_jsx(BaseCollapsible.Panel, { ...props, ref: ref, className: skin('pui-collapsible-panel', className), children: _jsx("div", { className: 'pui-disclosure-body', children: children }) }));
45
- });
46
- export const Collapsible = {
47
- ...BaseCollapsible,
48
- Root: part(BaseCollapsible.Root, 'pui-collapsible'),
49
- Trigger: CollapsibleTrigger,
50
- Panel: CollapsiblePanel,
51
- };
52
- const AvatarRoot = React.forwardRef(function AvatarRoot({ size, className, ...props }, ref) {
53
- const scheme = useComponentSize(size);
54
- return (_jsx(BaseAvatar.Root, { ...props, ref: ref, "data-size": size, "data-ui-size": scheme, className: skin('pui-avatar', className) }));
55
- });
56
- function Person() {
57
- return (_jsxs("svg", { width: '18', height: '18', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.5', "aria-hidden": 'true', children: [_jsx("circle", { cx: '12', cy: '8', r: '4' }), _jsx("path", { d: 'M4 21v-2a8 8 0 0 1 16 0v2' })] }));
58
- }
59
- const AvatarFallback = React.forwardRef(function AvatarFallback({ children, className, ...props }, ref) {
60
- return (_jsx(BaseAvatar.Fallback, { ...props, ref: ref, className: skin('pui-avatar-fallback', className), children: children ?? _jsx(Person, {}) }));
61
- });
62
- export const Avatar = {
63
- ...BaseAvatar,
64
- Root: AvatarRoot,
65
- Status: part('span', 'pui-avatar-status'),
66
- Fallback: AvatarFallback,
67
- Image: part(BaseAvatar.Image, 'pui-avatar-image'),
68
- };
69
- export const Separator = React.forwardRef(function Separator({ inset = false, className, ...props }, ref) {
5
+ import { Chevron } from './chevron.js';
6
+ import { skin } from './parts.js';
7
+ export const Separator = /* @__PURE__ */ React.forwardRef(function Separator({ inset = false, className, ...props }, ref) {
70
8
  return (_jsx(BaseSeparator, { ...props, ref: ref, "data-inset": inset || undefined, className: skin('pui-separator', className) }));
71
9
  });
72
- export const Link = React.forwardRef(function Link({ className, ...props }, ref) {
10
+ export const Link = /* @__PURE__ */ React.forwardRef(function Link({ className, ...props }, ref) {
73
11
  return (_jsx("a", { ...props, ref: ref, className: ['pui-link', className].filter(Boolean).join(' ') }));
74
12
  });
75
- const BreadcrumbRoot = React.forwardRef(function BreadcrumbRoot({ className, 'aria-label': label = 'Breadcrumb', ...props }, ref) {
13
+ const BreadcrumbRoot = /* @__PURE__ */ React.forwardRef(function BreadcrumbRoot({ className, 'aria-label': label = 'Breadcrumb', ...props }, ref) {
76
14
  return (_jsx("nav", { ...props, ref: ref, "aria-label": label, className: ['pui-breadcrumbs', className].filter(Boolean).join(' ') }));
77
15
  });
78
- const BreadcrumbList = React.forwardRef(function BreadcrumbList({ className, role = 'list', ...props }, ref) {
16
+ const BreadcrumbList = /* @__PURE__ */ React.forwardRef(function BreadcrumbList({ className, role = 'list', ...props }, ref) {
79
17
  return (_jsx("ol", { ...props, role: role, ref: ref, className: ['pui-breadcrumb-list', className].filter(Boolean).join(' ') }));
80
18
  });
81
- const BreadcrumbItem = React.forwardRef(function BreadcrumbItem({ className, ...props }, ref) {
19
+ const BreadcrumbItem = /* @__PURE__ */ React.forwardRef(function BreadcrumbItem({ className, ...props }, ref) {
82
20
  return (_jsx("li", { ...props, ref: ref, className: ['pui-breadcrumb-item', className].filter(Boolean).join(' ') }));
83
21
  });
84
22
  function BreadcrumbSeparator({ className, ...props }) {
@@ -100,9 +38,4 @@ export const Breadcrumbs = {
100
38
  Current: BreadcrumbCurrent,
101
39
  };
102
40
  // Flat names for React Server Components, which cannot dot into client exports.
103
- export { AccordionPanel, AccordionRoot, AccordionTrigger, AvatarFallback, AvatarRoot, CollapsiblePanel, CollapsibleTrigger, };
104
- export const { Header: AccordionHeader, Item: AccordionItem } = Accordion;
105
- export const { Image: AvatarImage, Status: AvatarStatus } = Avatar;
106
41
  export const { Root: BreadcrumbsRoot, List: BreadcrumbsList, Item: BreadcrumbsItem, Link: BreadcrumbsLink, Separator: BreadcrumbsSeparator, Current: BreadcrumbsCurrent, } = Breadcrumbs;
107
- export const { Root: CollapsibleRoot } = Collapsible;
108
- export const { Indicator: TabsIndicator, List: TabsList, Panel: TabsPanel, Root: TabsRoot, Tab: TabsTab, } = Tabs;
package/dist/otp-field.js CHANGED
@@ -5,7 +5,7 @@ import { useRender } from '@base-ui/react/use-render';
5
5
  import { OTPField as BaseOTPField } from '@base-ui/react/otp-field';
6
6
  import { part, skin } from './parts.js';
7
7
  import { useResetValue, useRootRef } from './form-state.js';
8
- const Root = React.forwardRef(function Root({ value, defaultValue = '', form, onValueChange, className, ...props }, forwardedRef) {
8
+ const Root = /* @__PURE__ */ React.forwardRef(function Root({ value, defaultValue = '', form, onValueChange, className, ...props }, forwardedRef) {
9
9
  const [element, ref] = useRootRef(forwardedRef);
10
10
  const [local, setLocal, revision] = useResetValue(value, defaultValue, element, form);
11
11
  return (_jsx(BaseOTPField.Root, { ...props, ref: ref, form: form, value: local, className: skin('pui-otp-field', className), onValueChange: (next, event) => {
@@ -14,7 +14,7 @@ const Root = React.forwardRef(function Root({ value, defaultValue = '', form, on
14
14
  setLocal(next);
15
15
  } }, revision));
16
16
  });
17
- const Separator = React.forwardRef(function Separator({ className, ...props }, ref) {
17
+ const Separator = /* @__PURE__ */ React.forwardRef(function Separator({ className, ...props }, ref) {
18
18
  return (_jsx(BaseOTPField.Separator, { "aria-hidden": 'true', ...props, ref: ref, className: skin('pui-otp-separator', className) }));
19
19
  });
20
20
  // Preserve Base UI's DOM refs and user render composition while fixing native-validation ARIA.
@@ -32,14 +32,14 @@ function SlotElement({ domProps, state, render, }) {
32
32
  },
33
33
  });
34
34
  }
35
- const Input = React.forwardRef(function Input({ render, className, ...props }, ref) {
35
+ const Input = /* @__PURE__ */ React.forwardRef(function Input({ render, className, ...props }, ref) {
36
36
  return (_jsx(BaseOTPField.Input, { ...props, ref: ref, className: skin('pui-input pui-otp-input', className), render: (domProps, state) => (_jsx(SlotElement, { domProps: domProps, state: state, render: render })) }));
37
37
  });
38
38
  export const OTPField = {
39
39
  ...BaseOTPField,
40
40
  Root,
41
41
  Input,
42
- Group: part('div', 'pui-otp-group'),
42
+ Group: /* @__PURE__ */ part('div', 'pui-otp-group'),
43
43
  Separator,
44
44
  };
45
45
  // Flat names for React Server Components, which cannot dot into client exports.
@@ -5,7 +5,7 @@ import { Button } from './button.js';
5
5
  function Chevron({ next = false }) {
6
6
  return (_jsx("svg", { className: 'pui-pagination-arrow', width: '16', height: '16', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.6', "aria-hidden": 'true', children: _jsx("path", { d: next ? 'm9 6 6 6-6 6' : 'm15 6-6 6 6 6' }) }));
7
7
  }
8
- export const Pagination = React.forwardRef(function Pagination({ page, pageCount, siblings = 1, disabled = false, labels, getPageHref, onPageChange, className, 'aria-label': ariaLabel = 'Pagination', ...props }, ref) {
8
+ export const Pagination = /* @__PURE__ */ React.forwardRef(function Pagination({ page, pageCount, siblings = 1, disabled = false, labels, getPageHref, onPageChange, className, 'aria-label': ariaLabel = 'Pagination', ...props }, ref) {
9
9
  const count = Number.isFinite(pageCount)
10
10
  ? Math.min(Number.MAX_SAFE_INTEGER, Math.max(0, Math.floor(pageCount)))
11
11
  : 0;
package/dist/panels.js CHANGED
@@ -1,14 +1,15 @@
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 { skin } from './parts.js';
4
5
  import { useComponentSize, normalizeSize, } from './sizing.js';
5
6
  import { Dialog as BaseDialog } from '@base-ui/react/dialog';
6
7
  import { Drawer as BaseDrawer } from '@base-ui/react/drawer';
7
- const SheetSide = React.createContext({
8
+ const SheetSide = /* @__PURE__ */ React.createContext({
8
9
  side: 'right',
9
10
  modal: true,
10
11
  });
11
- const DrawerSide = React.createContext({
12
+ const DrawerSide = /* @__PURE__ */ React.createContext({
12
13
  side: 'bottom',
13
14
  modal: true,
14
15
  });
@@ -28,10 +29,10 @@ function DrawerRoot({ side = 'bottom', modal = true, ...props }) {
28
29
  };
29
30
  return (_jsx(DrawerSide.Provider, { value: { side, modal }, children: _jsx(BaseDrawer.Root, { ...props, modal: modal, swipeDirection: direction[side] }) }));
30
31
  }
31
- const SheetContent = React.forwardRef(function SheetContent({ size, closeLabel = 'Close panel', className, children, ...props }, ref) {
32
+ const SheetContent = /* @__PURE__ */ React.forwardRef(function SheetContent({ size, closeLabel = 'Close panel', className, children, ...props }, ref) {
32
33
  const scheme = useComponentSize(size);
33
34
  const { side, modal } = React.useContext(SheetSide);
34
- 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, children: _jsxs(BaseDialog.Popup, { ...props, ref: ref, className: cx('pui-panel', typeof className === 'string' ? className : undefined), "data-side": side, "data-size": size
35
+ 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, children: _jsxs(BaseDialog.Popup, { ...props, ref: ref, className: skin('pui-panel', className), "data-side": side, "data-size": size
35
36
  ? normalizeSize(size) === 'small'
36
37
  ? 'sm'
37
38
  : normalizeSize(size) === 'large'
@@ -39,11 +40,11 @@ const SheetContent = React.forwardRef(function SheetContent({ size, closeLabel =
39
40
  : 'md'
40
41
  : 'md', children: [_jsx(BaseDialog.Close, { className: 'pui-panel-close pui-icon-button', "aria-label": closeLabel, children: _jsx(CloseIcon, {}) }), children] }) })] }) }));
41
42
  });
42
- const DrawerContent = React.forwardRef(function DrawerContent({ size, closeLabel = 'Close panel', className, children, ...props }, ref) {
43
+ const DrawerContent = /* @__PURE__ */ React.forwardRef(function DrawerContent({ size, closeLabel = 'Close panel', className, children, ...props }, ref) {
43
44
  const scheme = useComponentSize(size);
44
45
  const { side, modal } = React.useContext(DrawerSide);
45
46
  const KeyboardProvider = side === 'bottom' ? BaseDrawer.VirtualKeyboardProvider : React.Fragment;
46
- return (_jsx(KeyboardProvider, { children: _jsx(BaseDrawer.Portal, { children: _jsxs("div", { className: 'pui-panel-layer', "data-ui-size": scheme, children: [modal === true && (_jsx(BaseDrawer.Backdrop, { className: 'pui-panel-backdrop' })), _jsx(BaseDrawer.Viewport, { className: 'pui-panel-viewport', "data-side": side, children: _jsxs(BaseDrawer.Popup, { ...props, ref: ref, className: cx('pui-panel pui-drawer', typeof className === 'string' ? className : undefined), "data-side": side, "data-size": size
47
+ return (_jsx(KeyboardProvider, { children: _jsx(BaseDrawer.Portal, { children: _jsxs("div", { className: 'pui-panel-layer', "data-ui-size": scheme, children: [modal === true && (_jsx(BaseDrawer.Backdrop, { className: 'pui-panel-backdrop' })), _jsx(BaseDrawer.Viewport, { className: 'pui-panel-viewport', "data-side": side, children: _jsxs(BaseDrawer.Popup, { ...props, ref: ref, className: skin('pui-panel pui-drawer', className), "data-side": side, "data-size": size
47
48
  ? normalizeSize(size) === 'small'
48
49
  ? 'sm'
49
50
  : normalizeSize(size) === 'large'
@@ -54,23 +55,23 @@ const DrawerContent = React.forwardRef(function DrawerContent({ size, closeLabel
54
55
  function Header({ className, ...props }) {
55
56
  return _jsx("div", { ...props, className: cx('pui-panel-header', className) });
56
57
  }
57
- const Body = React.forwardRef(function Body({ className, ...props }, ref) {
58
+ const Body = /* @__PURE__ */ React.forwardRef(function Body({ className, ...props }, ref) {
58
59
  return (_jsx("div", { ...props, ref: ref, className: cx('pui-panel-body', className) }));
59
60
  });
60
61
  function Footer({ className, ...props }) {
61
62
  return _jsx("div", { ...props, className: cx('pui-panel-footer', className) });
62
63
  }
63
64
  function SheetTitle({ className, ...props }) {
64
- return (_jsx(BaseDialog.Title, { ...props, className: cx('pui-panel-title', typeof className === 'string' ? className : undefined) }));
65
+ return (_jsx(BaseDialog.Title, { ...props, className: skin('pui-panel-title', className) }));
65
66
  }
66
67
  function SheetDescription({ className, ...props }) {
67
- return (_jsx(BaseDialog.Description, { ...props, className: cx('pui-panel-description', typeof className === 'string' ? className : undefined) }));
68
+ return (_jsx(BaseDialog.Description, { ...props, className: skin('pui-panel-description', className) }));
68
69
  }
69
70
  function DrawerTitle({ className, ...props }) {
70
- return (_jsx(BaseDrawer.Title, { ...props, className: cx('pui-panel-title', typeof className === 'string' ? className : undefined) }));
71
+ return (_jsx(BaseDrawer.Title, { ...props, className: skin('pui-panel-title', className) }));
71
72
  }
72
73
  function DrawerDescription({ className, ...props }) {
73
- return (_jsx(BaseDrawer.Description, { ...props, className: cx('pui-panel-description', typeof className === 'string' ? className : undefined) }));
74
+ return (_jsx(BaseDrawer.Description, { ...props, className: skin('pui-panel-description', className) }));
74
75
  }
75
76
  export const Sheet = {
76
77
  ...BaseDialog,
package/dist/parts.d.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  import { type ComponentSize } from './sizing.js';
2
2
  import * as React from 'react';
3
+ /** The data-size value: a short alias (sm, md, lg) renders as its full name, so both
4
+ * spellings meet the same CSS; other values such as xs or icon pass through. */
5
+ export declare function sizeName<Size extends string>(size?: Size): ComponentSize | Size | undefined;
3
6
  /** Preserve Base UI's state-dependent className contract when adding a skin. */
4
7
  export declare function skin<State>(base: string, custom?: string | ((state: State) => string | undefined)): string | ((state: State) => string);
5
8
  export declare function part<Element extends HTMLElement, Props extends {
package/dist/parts.js CHANGED
@@ -1,6 +1,13 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { ComponentSizeContext, useComponentSize, } from './sizing.js';
2
+ import { ComponentSizeContext, normalizeSize, useComponentSize, } from './sizing.js';
3
3
  import * as React from 'react';
4
+ /** The data-size value: a short alias (sm, md, lg) renders as its full name, so both
5
+ * spellings meet the same CSS; other values such as xs or icon pass through. */
6
+ export function sizeName(size) {
7
+ return size === 'sm' || size === 'md' || size === 'lg'
8
+ ? normalizeSize(size)
9
+ : size;
10
+ }
4
11
  /** Preserve Base UI's state-dependent className contract when adding a skin. */
5
12
  export function skin(base, custom) {
6
13
  if (typeof custom === 'function')
package/dist/popover.js CHANGED
@@ -1,11 +1,11 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { skin } from './parts.js';
3
4
  import { useComponentSize } from './sizing.js';
4
5
  import { Popover as BasePopover } from '@base-ui/react/popover';
5
- const cx = (...v) => v.filter(Boolean).join(' ');
6
6
  function PopoverContent({ side = 'bottom', align = 'start', sideOffset = 8, collisionPadding = 12, className, ...props }) {
7
7
  const scheme = useComponentSize();
8
- return (_jsx(BasePopover.Positioner, { side: side, align: align, sideOffset: sideOffset, collisionPadding: collisionPadding, className: 'pui-positioner', children: _jsx(BasePopover.Popup, { "data-ui-size": scheme, ...props, className: cx('pui-popover', typeof className === 'string' && className) }) }));
8
+ return (_jsx(BasePopover.Positioner, { side: side, align: align, sideOffset: sideOffset, collisionPadding: collisionPadding, className: 'pui-positioner', children: _jsx(BasePopover.Popup, { "data-ui-size": scheme, ...props, className: skin('pui-popover', className) }) }));
9
9
  }
10
10
  export const Popover = { ...BasePopover, Content: PopoverContent };
11
11
  // Flat names for React Server Components, which cannot dot into client exports.
@@ -2,7 +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
- export const ScrollArea = React.forwardRef(function ScrollArea({ label, orientation = 'horizontal', scrollChain = 'auto', style, rootClassName, rootStyle, tabIndex = label ? 0 : undefined, role = label ? 'region' : undefined, className, children, ...props }, ref) {
5
+ 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
6
  const dragPointer = React.useRef(null);
7
7
  const clearDrag = (event) => {
8
8
  if (dragPointer.current !== event.pointerId)