@surflane/ui 0.1.0 → 0.2.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 (85) hide show
  1. package/README.md +8 -8
  2. package/dist/advanced-forms.d.ts +2 -2
  3. package/dist/advanced-forms.js +39 -39
  4. package/dist/app-shell.d.ts +1 -1
  5. package/dist/app-shell.js +11 -11
  6. package/dist/button.d.ts +5 -5
  7. package/dist/button.js +12 -12
  8. package/dist/chart.d.ts +3 -3
  9. package/dist/chart.js +36 -34
  10. package/dist/commands.d.ts +5 -5
  11. package/dist/commands.js +17 -17
  12. package/dist/content.d.ts +2 -2
  13. package/dist/content.js +66 -28
  14. package/dist/context-overlays.d.ts +3 -3
  15. package/dist/context-overlays.js +11 -11
  16. package/dist/data.d.ts +1 -1
  17. package/dist/data.js +18 -18
  18. package/dist/date-picker.d.ts +8 -8
  19. package/dist/date-picker.js +18 -18
  20. package/dist/dialog-focus.js +7 -7
  21. package/dist/dialog.d.ts +5 -5
  22. package/dist/dialog.js +16 -16
  23. package/dist/feedback.d.ts +5 -5
  24. package/dist/feedback.js +20 -20
  25. package/dist/file-upload.d.ts +9 -9
  26. package/dist/file-upload.js +64 -63
  27. package/dist/filter-bar.d.ts +1 -1
  28. package/dist/filter-bar.js +9 -9
  29. package/dist/form-state.d.ts +1 -1
  30. package/dist/form-state.js +11 -11
  31. package/dist/forms.d.ts +5 -5
  32. package/dist/forms.js +32 -32
  33. package/dist/foundations.d.ts +10 -10
  34. package/dist/foundations.js +26 -26
  35. package/dist/icon.d.ts +7 -7
  36. package/dist/icon.js +22 -22
  37. package/dist/index.d.ts +37 -37
  38. package/dist/index.js +38 -38
  39. package/dist/input-extensions.d.ts +3 -3
  40. package/dist/input-extensions.js +21 -21
  41. package/dist/input.d.ts +2 -2
  42. package/dist/input.js +7 -7
  43. package/dist/markdown.d.ts +2 -2
  44. package/dist/markdown.js +38 -38
  45. package/dist/menu.d.ts +2 -2
  46. package/dist/menu.js +19 -19
  47. package/dist/messages.d.ts +2 -2
  48. package/dist/messages.js +18 -18
  49. package/dist/navigation-menu.d.ts +2 -2
  50. package/dist/navigation-menu.js +16 -16
  51. package/dist/navigation.d.ts +5 -5
  52. package/dist/navigation.js +40 -40
  53. package/dist/otp-field.d.ts +1 -1
  54. package/dist/otp-field.js +14 -14
  55. package/dist/pagination.d.ts +2 -2
  56. package/dist/pagination.js +12 -12
  57. package/dist/panels.d.ts +8 -8
  58. package/dist/panels.js +39 -39
  59. package/dist/parts.d.ts +2 -2
  60. package/dist/parts.js +8 -8
  61. package/dist/popover.d.ts +3 -3
  62. package/dist/popover.js +6 -6
  63. package/dist/scroll-area.d.ts +1 -1
  64. package/dist/scroll-area.js +20 -20
  65. package/dist/select.d.ts +8 -8
  66. package/dist/select.js +21 -21
  67. package/dist/sizing.d.ts +3 -3
  68. package/dist/sizing.js +9 -9
  69. package/dist/slot.d.ts +1 -1
  70. package/dist/slot.js +4 -4
  71. package/dist/status.d.ts +4 -4
  72. package/dist/status.js +8 -8
  73. package/dist/syntax-engine.js +43 -43
  74. package/dist/syntax-highlighter.d.ts +2 -2
  75. package/dist/syntax-highlighter.js +32 -32
  76. package/dist/toast.d.ts +4 -4
  77. package/dist/toast.js +33 -33
  78. package/dist/tone-transition.d.ts +1 -1
  79. package/dist/tone-transition.js +17 -17
  80. package/dist/tooltip.d.ts +1 -1
  81. package/dist/tooltip.js +4 -4
  82. package/dist/tree.d.ts +4 -4
  83. package/dist/tree.js +60 -60
  84. package/package.json +2 -2
  85. package/src/styles.css +233 -142
@@ -1,11 +1,11 @@
1
- "use client";
1
+ 'use client';
2
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as React from "react";
4
- import { Button } from "./button.js";
3
+ import * as React from 'react';
4
+ import { Button } from './button.js';
5
5
  function Chevron({ next = false }) {
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" }) }));
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 = 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;
@@ -27,18 +27,18 @@ export const Pagination = React.forwardRef(function Pagination({ page, pageCount
27
27
  });
28
28
  function control(target, name, children, boundary = false) {
29
29
  const inactive = disabled || boundary;
30
- const currentPage = !boundary && target === current && typeof children === "number";
30
+ const currentPage = !boundary && target === current && typeof children === 'number';
31
31
  const attributes = {
32
- className: "pui-pagination-control",
33
- "aria-label": name,
34
- "aria-current": currentPage ? "page" : undefined,
32
+ className: 'pui-pagination-control',
33
+ 'aria-label': name,
34
+ 'aria-current': currentPage ? 'page' : undefined,
35
35
  };
36
36
  if (getPageHref)
37
- return inactive ? (_jsx("span", { ...attributes, "aria-disabled": "true", children: children })) : (_jsx("a", { ...attributes, href: getPageHref(target), children: children }));
38
- return (_jsx(Button, { ...attributes, variant: "ghost", type: "button", disabled: inactive, onClick: () => {
37
+ return inactive ? (_jsx("span", { ...attributes, "aria-disabled": 'true', children: children })) : (_jsx("a", { ...attributes, href: getPageHref(target), children: children }));
38
+ return (_jsx(Button, { ...attributes, variant: 'ghost', type: 'button', disabled: inactive, onClick: () => {
39
39
  if (target !== current)
40
40
  onPageChange?.(target);
41
41
  }, children: children }));
42
42
  }
43
- return (_jsxs("nav", { ...props, ref: ref, "aria-label": ariaLabel, className: ["pui-pagination", className].filter(Boolean).join(" "), children: [control(Math.max(1, current - 1), labels?.previous ?? "Previous page", _jsxs(_Fragment, { children: [_jsx(Chevron, {}), _jsx("span", { children: labels?.previous ?? "Previous page" })] }), current === 1), _jsx("span", { className: "pui-pagination-summary", children: labels?.summary?.(current, count) ?? `Page ${current} of ${count}` }), _jsx("ul", { role: "list", className: "pui-pagination-list", children: items.map((item) => (_jsx("li", { children: typeof item === "number" ? (control(item, labels?.page?.(item) ?? `Page ${item}`, item)) : (_jsxs("span", { className: "pui-pagination-gap", children: [_jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: [_jsx("circle", { cx: "5", cy: "12", r: "1.5" }), _jsx("circle", { cx: "12", cy: "12", r: "1.5" }), _jsx("circle", { cx: "19", cy: "12", r: "1.5" })] }), _jsx("span", { className: "pui-feedback-sr", children: labels?.more ?? "More pages" })] })) }, item))) }), control(Math.min(count, current + 1), labels?.next ?? "Next page", _jsxs(_Fragment, { children: [_jsx("span", { children: labels?.next ?? "Next page" }), _jsx(Chevron, { next: true })] }), current === count)] }));
43
+ return (_jsxs("nav", { ...props, ref: ref, "aria-label": ariaLabel, className: ['pui-pagination', className].filter(Boolean).join(' '), children: [control(Math.max(1, current - 1), labels?.previous ?? 'Previous page', _jsxs(_Fragment, { children: [_jsx(Chevron, {}), _jsx("span", { children: labels?.previous ?? 'Previous page' })] }), current === 1), _jsx("span", { className: 'pui-pagination-summary', children: labels?.summary?.(current, count) ?? `Page ${current} of ${count}` }), _jsx("ul", { role: 'list', className: 'pui-pagination-list', children: items.map((item) => (_jsx("li", { children: typeof item === 'number' ? (control(item, labels?.page?.(item) ?? `Page ${item}`, item)) : (_jsxs("span", { className: 'pui-pagination-gap', children: [_jsxs("svg", { width: '16', height: '16', viewBox: '0 0 24 24', fill: 'currentColor', "aria-hidden": 'true', children: [_jsx("circle", { cx: '5', cy: '12', r: '1.5' }), _jsx("circle", { cx: '12', cy: '12', r: '1.5' }), _jsx("circle", { cx: '19', cy: '12', r: '1.5' })] }), _jsx("span", { className: 'pui-feedback-sr', children: labels?.more ?? 'More pages' })] })) }, item))) }), control(Math.min(count, current + 1), labels?.next ?? 'Next page', _jsxs(_Fragment, { children: [_jsx("span", { children: labels?.next ?? 'Next page' }), _jsx(Chevron, { next: true })] }), current === count)] }));
44
44
  });
package/dist/panels.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import * as React from "react";
2
- import { type ComponentSizeAlias } from "./sizing.js";
3
- import { Dialog as BaseDialog } from "@base-ui/react/dialog";
4
- import { Drawer as BaseDrawer } from "@base-ui/react/drawer";
5
- export type PanelSide = "left" | "right" | "top" | "bottom";
1
+ import * as React from 'react';
2
+ import { type ComponentSizeAlias } from './sizing.js';
3
+ import { Dialog as BaseDialog } from '@base-ui/react/dialog';
4
+ import { Drawer as BaseDrawer } from '@base-ui/react/drawer';
5
+ export type PanelSide = 'left' | 'right' | 'top' | 'bottom';
6
6
  type PanelOptions = {
7
7
  size?: ComponentSizeAlias;
8
8
  closeLabel?: string;
@@ -10,13 +10,13 @@ type PanelOptions = {
10
10
  declare function SheetRoot({ side, modal, ...props }: React.ComponentProps<typeof BaseDialog.Root> & {
11
11
  side?: PanelSide;
12
12
  }): React.JSX.Element;
13
- declare function DrawerRoot({ side, modal, ...props }: Omit<React.ComponentProps<typeof BaseDrawer.Root>, "swipeDirection"> & {
13
+ declare function DrawerRoot({ side, modal, ...props }: Omit<React.ComponentProps<typeof BaseDrawer.Root>, 'swipeDirection'> & {
14
14
  side?: PanelSide;
15
15
  }): React.JSX.Element;
16
16
  declare const SheetContent: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/dialog").DialogPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & PanelOptions & React.RefAttributes<HTMLDivElement>>;
17
17
  declare const DrawerContent: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/drawer").DrawerPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & PanelOptions & React.RefAttributes<HTMLDivElement>>;
18
- declare function Header({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
19
- declare function Footer({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
18
+ declare function Header({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
19
+ declare function Footer({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
20
20
  declare function SheetTitle({ className, ...props }: React.ComponentProps<typeof BaseDialog.Title>): React.JSX.Element;
21
21
  declare function SheetDescription({ className, ...props }: React.ComponentProps<typeof BaseDialog.Description>): React.JSX.Element;
22
22
  declare function DrawerTitle({ className, ...props }: React.ComponentProps<typeof BaseDrawer.Title>): React.JSX.Element;
package/dist/panels.js CHANGED
@@ -1,76 +1,76 @@
1
- "use client";
1
+ 'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as React from "react";
4
- import { useComponentSize, normalizeSize, } from "./sizing.js";
5
- import { Dialog as BaseDialog } from "@base-ui/react/dialog";
6
- import { Drawer as BaseDrawer } from "@base-ui/react/drawer";
3
+ import * as React from 'react';
4
+ import { useComponentSize, normalizeSize, } from './sizing.js';
5
+ import { Dialog as BaseDialog } from '@base-ui/react/dialog';
6
+ import { Drawer as BaseDrawer } from '@base-ui/react/drawer';
7
7
  const SheetSide = React.createContext({
8
- side: "right",
8
+ side: 'right',
9
9
  modal: true,
10
10
  });
11
11
  const DrawerSide = React.createContext({
12
- side: "bottom",
12
+ side: 'bottom',
13
13
  modal: true,
14
14
  });
15
- const cx = (...values) => values.filter(Boolean).join(" ");
15
+ const cx = (...values) => values.filter(Boolean).join(' ');
16
16
  function CloseIcon() {
17
- return (_jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.7", "aria-hidden": "true", children: _jsx("path", { d: "m6 6 12 12M18 6 6 18" }) }));
17
+ return (_jsx("svg", { width: '18', height: '18', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.7', "aria-hidden": 'true', children: _jsx("path", { d: 'm6 6 12 12M18 6 6 18' }) }));
18
18
  }
19
- function SheetRoot({ side = "right", modal = true, ...props }) {
19
+ function SheetRoot({ side = 'right', modal = true, ...props }) {
20
20
  return (_jsx(SheetSide.Provider, { value: { side, modal }, children: _jsx(BaseDialog.Root, { ...props, modal: modal }) }));
21
21
  }
22
- function DrawerRoot({ side = "bottom", modal = true, ...props }) {
22
+ function DrawerRoot({ side = 'bottom', modal = true, ...props }) {
23
23
  const direction = {
24
- left: "left",
25
- right: "right",
26
- top: "up",
27
- bottom: "down",
24
+ left: 'left',
25
+ right: 'right',
26
+ top: 'up',
27
+ bottom: 'down',
28
28
  };
29
29
  return (_jsx(DrawerSide.Provider, { value: { side, modal }, children: _jsx(BaseDrawer.Root, { ...props, modal: modal, swipeDirection: direction[side] }) }));
30
30
  }
31
- const SheetContent = React.forwardRef(function SheetContent({ size, closeLabel = "Close panel", className, children, ...props }, ref) {
31
+ const SheetContent = React.forwardRef(function SheetContent({ size, closeLabel = 'Close panel', className, children, ...props }, ref) {
32
32
  const scheme = useComponentSize(size);
33
33
  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
- ? normalizeSize(size) === "small"
36
- ? "sm"
37
- : normalizeSize(size) === "large"
38
- ? "lg"
39
- : "md"
40
- : "md", children: [_jsx(BaseDialog.Close, { className: "pui-panel-close pui-icon-button", "aria-label": closeLabel, children: _jsx(CloseIcon, {}) }), children] }) })] }) }));
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
+ ? normalizeSize(size) === 'small'
36
+ ? 'sm'
37
+ : normalizeSize(size) === 'large'
38
+ ? 'lg'
39
+ : 'md'
40
+ : 'md', children: [_jsx(BaseDialog.Close, { className: 'pui-panel-close pui-icon-button', "aria-label": closeLabel, children: _jsx(CloseIcon, {}) }), children] }) })] }) }));
41
41
  });
42
- const DrawerContent = React.forwardRef(function DrawerContent({ size, closeLabel = "Close panel", className, children, ...props }, ref) {
42
+ const DrawerContent = React.forwardRef(function DrawerContent({ size, closeLabel = 'Close panel', className, children, ...props }, ref) {
43
43
  const scheme = useComponentSize(size);
44
44
  const { side, modal } = React.useContext(DrawerSide);
45
- 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
- ? normalizeSize(size) === "small"
48
- ? "sm"
49
- : normalizeSize(size) === "large"
50
- ? "lg"
51
- : "md"
52
- : "lg", children: [_jsx("div", { className: "pui-drawer-handle", "aria-hidden": "true" }), _jsx(BaseDrawer.Close, { className: "pui-panel-close pui-icon-button", "aria-label": closeLabel, children: _jsx(CloseIcon, {}) }), _jsx(BaseDrawer.Content, { className: "pui-panel-content", children: children })] }) })] }) }) }));
45
+ 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
+ ? normalizeSize(size) === 'small'
48
+ ? 'sm'
49
+ : normalizeSize(size) === 'large'
50
+ ? 'lg'
51
+ : 'md'
52
+ : 'lg', children: [_jsx("div", { className: 'pui-drawer-handle', "aria-hidden": 'true' }), _jsx(BaseDrawer.Close, { className: 'pui-panel-close pui-icon-button', "aria-label": closeLabel, children: _jsx(CloseIcon, {}) }), _jsx(BaseDrawer.Content, { className: 'pui-panel-content', children: children })] }) })] }) }) }));
53
53
  });
54
54
  function Header({ className, ...props }) {
55
- return _jsx("div", { ...props, className: cx("pui-panel-header", className) });
55
+ return _jsx("div", { ...props, className: cx('pui-panel-header', className) });
56
56
  }
57
57
  const Body = React.forwardRef(function Body({ className, ...props }, ref) {
58
- return (_jsx("div", { ...props, ref: ref, className: cx("pui-panel-body", className) }));
58
+ return (_jsx("div", { ...props, ref: ref, className: cx('pui-panel-body', className) }));
59
59
  });
60
60
  function Footer({ className, ...props }) {
61
- return _jsx("div", { ...props, className: cx("pui-panel-footer", className) });
61
+ return _jsx("div", { ...props, className: cx('pui-panel-footer', className) });
62
62
  }
63
63
  function SheetTitle({ className, ...props }) {
64
- return (_jsx(BaseDialog.Title, { ...props, className: cx("pui-panel-title", typeof className === "string" ? className : undefined) }));
64
+ return (_jsx(BaseDialog.Title, { ...props, className: cx('pui-panel-title', typeof className === 'string' ? className : undefined) }));
65
65
  }
66
66
  function SheetDescription({ className, ...props }) {
67
- return (_jsx(BaseDialog.Description, { ...props, className: cx("pui-panel-description", typeof className === "string" ? className : undefined) }));
67
+ return (_jsx(BaseDialog.Description, { ...props, className: cx('pui-panel-description', typeof className === 'string' ? className : undefined) }));
68
68
  }
69
69
  function DrawerTitle({ className, ...props }) {
70
- return (_jsx(BaseDrawer.Title, { ...props, className: cx("pui-panel-title", typeof className === "string" ? className : undefined) }));
70
+ return (_jsx(BaseDrawer.Title, { ...props, className: cx('pui-panel-title', typeof className === 'string' ? className : undefined) }));
71
71
  }
72
72
  function DrawerDescription({ className, ...props }) {
73
- return (_jsx(BaseDrawer.Description, { ...props, className: cx("pui-panel-description", typeof className === "string" ? className : undefined) }));
73
+ return (_jsx(BaseDrawer.Description, { ...props, className: cx('pui-panel-description', typeof className === 'string' ? className : undefined) }));
74
74
  }
75
75
  export const Sheet = {
76
76
  ...BaseDialog,
package/dist/parts.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { type ComponentSize } from "./sizing.js";
2
- import * as React from "react";
1
+ import { type ComponentSize } from './sizing.js';
2
+ import * as React from 'react';
3
3
  /** Preserve Base UI's state-dependent className contract when adding a skin. */
4
4
  export declare function skin<State>(base: string, custom?: string | ((state: State) => string | undefined)): string | ((state: State) => string);
5
5
  export declare function part<Element extends HTMLElement, Props extends {
package/dist/parts.js CHANGED
@@ -1,20 +1,20 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { ComponentSizeContext, useComponentSize, } from "./sizing.js";
3
- import * as React from "react";
2
+ import { ComponentSizeContext, useComponentSize, } from './sizing.js';
3
+ import * as React from 'react';
4
4
  /** Preserve Base UI's state-dependent className contract when adding a skin. */
5
5
  export function skin(base, custom) {
6
- if (typeof custom === "function")
7
- return (state) => [base, custom(state)].filter(Boolean).join(" ");
8
- return [base, custom].filter(Boolean).join(" ");
6
+ if (typeof custom === 'function')
7
+ return (state) => [base, custom(state)].filter(Boolean).join(' ');
8
+ return [base, custom].filter(Boolean).join(' ');
9
9
  }
10
10
  export function part(Component, base) {
11
11
  return React.forwardRef(function ThemedPart(props, ref) {
12
12
  const { className, size, ...rest } = props;
13
13
  const scheme = useComponentSize(size);
14
14
  const portal = /positioner|popup|^pui-menu$|navigation-menu-viewport/.test(base);
15
- const classes = typeof className === "function"
16
- ? (state) => [base, className(state)].filter(Boolean).join(" ")
17
- : [base, className].filter(Boolean).join(" ");
15
+ const classes = typeof className === 'function'
16
+ ? (state) => [base, className(state)].filter(Boolean).join(' ')
17
+ : [base, className].filter(Boolean).join(' ');
18
18
  const element = (_jsx(Component, { ...rest, ref: ref, className: classes, "data-ui-size": size ? scheme : portal ? scheme : undefined }));
19
19
  // Keep the React subtree stable when size changes from omitted to explicit.
20
20
  return (_jsx(ComponentSizeContext.Provider, { value: scheme, children: element }));
package/dist/popover.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import * as React from "react";
2
- import { Popover as BasePopover } from "@base-ui/react/popover";
3
- declare function PopoverContent({ side, align, sideOffset, collisionPadding, className, ...props }: React.ComponentProps<typeof BasePopover.Popup> & Pick<React.ComponentProps<typeof BasePopover.Positioner>, "side" | "align" | "sideOffset" | "collisionPadding">): React.JSX.Element;
1
+ import * as React from 'react';
2
+ import { Popover as BasePopover } from '@base-ui/react/popover';
3
+ declare function PopoverContent({ side, align, sideOffset, collisionPadding, className, ...props }: React.ComponentProps<typeof BasePopover.Popup> & Pick<React.ComponentProps<typeof BasePopover.Positioner>, 'side' | 'align' | 'sideOffset' | 'collisionPadding'>): React.JSX.Element;
4
4
  export declare const Popover: {
5
5
  Content: typeof PopoverContent;
6
6
  Root: typeof BasePopover.Root;
package/dist/popover.js CHANGED
@@ -1,11 +1,11 @@
1
- "use client";
1
+ 'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { useComponentSize } from "./sizing.js";
4
- import { Popover as BasePopover } from "@base-ui/react/popover";
5
- const cx = (...v) => v.filter(Boolean).join(" ");
6
- function PopoverContent({ side = "bottom", align = "start", sideOffset = 8, collisionPadding = 12, className, ...props }) {
3
+ import { useComponentSize } from './sizing.js';
4
+ import { Popover as BasePopover } from '@base-ui/react/popover';
5
+ const cx = (...v) => v.filter(Boolean).join(' ');
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: cx('pui-popover', typeof className === 'string' && 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.
@@ -1,4 +1,4 @@
1
- import * as React from "react";
1
+ import * as React from 'react';
2
2
  export declare const ScrollArea: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
3
3
  label?: string;
4
4
  rootClassName?: string;
@@ -1,39 +1,39 @@
1
- "use client";
1
+ 'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as React from "react";
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) {
3
+ import * as React from 'react';
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) {
6
6
  const dragPointer = React.useRef(null);
7
7
  const clearDrag = (event) => {
8
8
  if (dragPointer.current !== event.pointerId)
9
9
  return;
10
10
  dragPointer.current = null;
11
- event.currentTarget.removeAttribute("data-scroll-dragging");
11
+ event.currentTarget.removeAttribute('data-scroll-dragging');
12
12
  };
13
- return (_jsxs(BaseScrollArea.Root, { className: ["pui-scroll-root", rootClassName].filter(Boolean).join(" "), style: rootStyle, onPointerMoveCapture: (event) => {
14
- if (event.pointerType === "touch")
13
+ return (_jsxs(BaseScrollArea.Root, { className: ['pui-scroll-root', rootClassName].filter(Boolean).join(' '), style: rootStyle, onPointerMoveCapture: (event) => {
14
+ if (event.pointerType === 'touch')
15
15
  return;
16
16
  const root = event.currentTarget;
17
17
  const bounds = root.getBoundingClientRect();
18
- root.toggleAttribute("data-scroll-near-x", bounds.bottom - event.clientY <= 24 && event.clientY <= bounds.bottom);
19
- root.toggleAttribute("data-scroll-near-y", bounds.right - event.clientX <= 24 && event.clientX <= bounds.right);
18
+ root.toggleAttribute('data-scroll-near-x', bounds.bottom - event.clientY <= 24 && event.clientY <= bounds.bottom);
19
+ root.toggleAttribute('data-scroll-near-y', bounds.right - event.clientX <= 24 && event.clientX <= bounds.right);
20
20
  }, onPointerLeave: (event) => {
21
- event.currentTarget.removeAttribute("data-scroll-near-x");
22
- event.currentTarget.removeAttribute("data-scroll-near-y");
21
+ event.currentTarget.removeAttribute('data-scroll-near-x');
22
+ event.currentTarget.removeAttribute('data-scroll-near-y');
23
23
  }, onPointerDownCapture: (event) => {
24
24
  const target = event.target;
25
- const bar = target.closest(".pui-scrollbar");
25
+ const bar = target.closest('.pui-scrollbar');
26
26
  if (event.button === 0 && bar?.parentElement === event.currentTarget) {
27
27
  dragPointer.current = event.pointerId;
28
- event.currentTarget.setAttribute("data-scroll-dragging", bar.getAttribute("data-orientation") ?? "");
28
+ event.currentTarget.setAttribute('data-scroll-dragging', bar.getAttribute('data-orientation') ?? '');
29
29
  }
30
- }, onPointerUpCapture: clearDrag, onPointerCancelCapture: clearDrag, onLostPointerCapture: clearDrag, children: [_jsx(BaseScrollArea.Viewport, { ...props, ref: ref, className: ["pui-scroll-viewport scroll-area", className]
30
+ }, onPointerUpCapture: clearDrag, onPointerCancelCapture: clearDrag, onLostPointerCapture: clearDrag, children: [_jsx(BaseScrollArea.Viewport, { ...props, ref: ref, className: ['pui-scroll-viewport scroll-area', className]
31
31
  .filter(Boolean)
32
- .join(" "), role: role, "aria-label": label, tabIndex: tabIndex, "data-scroll-orientation": orientation, style: {
33
- overflowX: orientation === "vertical" ? "hidden" : "auto",
34
- overflowY: orientation === "horizontal" ? "hidden" : "auto",
35
- overscrollBehaviorX: orientation === "vertical" ? "auto" : scrollChain,
36
- overscrollBehaviorY: orientation === "horizontal" ? "auto" : scrollChain,
32
+ .join(' '), role: role, "aria-label": label, tabIndex: tabIndex, "data-scroll-orientation": orientation, style: {
33
+ overflowX: orientation === 'vertical' ? 'hidden' : 'auto',
34
+ overflowY: orientation === 'horizontal' ? 'hidden' : 'auto',
35
+ overscrollBehaviorX: orientation === 'vertical' ? 'auto' : scrollChain,
36
+ overscrollBehaviorY: orientation === 'horizontal' ? 'auto' : scrollChain,
37
37
  ...style,
38
- }, children: _jsx(BaseScrollArea.Content, { className: "pui-scroll-content", style: orientation === "vertical" ? { minWidth: 0 } : undefined, children: children }) }), orientation !== "vertical" && (_jsx(BaseScrollArea.Scrollbar, { orientation: "horizontal", className: "pui-scrollbar", children: _jsx(BaseScrollArea.Thumb, { className: "pui-scroll-thumb" }) })), orientation !== "horizontal" && (_jsx(BaseScrollArea.Scrollbar, { orientation: "vertical", className: "pui-scrollbar", children: _jsx(BaseScrollArea.Thumb, { className: "pui-scroll-thumb" }) })), _jsx(BaseScrollArea.Corner, {})] }));
38
+ }, children: _jsx(BaseScrollArea.Content, { className: 'pui-scroll-content', style: orientation === 'vertical' ? { minWidth: 0 } : undefined, children: children }) }), orientation !== 'vertical' && (_jsx(BaseScrollArea.Scrollbar, { orientation: 'horizontal', className: 'pui-scrollbar', children: _jsx(BaseScrollArea.Thumb, { className: 'pui-scroll-thumb' }) })), orientation !== 'horizontal' && (_jsx(BaseScrollArea.Scrollbar, { orientation: 'vertical', className: 'pui-scrollbar', children: _jsx(BaseScrollArea.Thumb, { className: 'pui-scroll-thumb' }) })), _jsx(BaseScrollArea.Corner, {})] }));
39
39
  });
package/dist/select.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import * as React from "react";
2
- import { type ComponentSizeAlias } from "./sizing.js";
1
+ import * as React from 'react';
2
+ import { type ComponentSizeAlias } from './sizing.js';
3
3
  export type SelectOption = {
4
4
  value: string;
5
5
  label: React.ReactNode;
@@ -19,15 +19,15 @@ export type SelectProps = {
19
19
  inputRef?: React.Ref<HTMLInputElement>;
20
20
  triggerRef?: React.Ref<HTMLButtonElement>;
21
21
  size?: ComponentSizeAlias;
22
- "aria-label"?: string;
23
- "aria-labelledby"?: string;
24
- "aria-describedby"?: string;
25
- "aria-invalid"?: React.AriaAttributes["aria-invalid"];
22
+ 'aria-label'?: string;
23
+ 'aria-labelledby'?: string;
24
+ 'aria-describedby'?: string;
25
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
26
26
  };
27
27
  export declare function Select({ options, value, defaultValue, onValueChange, className, inputRef, triggerRef, size, ...props }: SelectProps): React.JSX.Element;
28
28
  /** Transitional HTML-option adapter. Submitted values use Base UI's native hidden input. */
29
29
  export declare const NativeSelect: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.SelectHTMLAttributes<HTMLSelectElement>, HTMLSelectElement>, "ref">, "size" | "multiple"> & {
30
30
  size?: ComponentSizeAlias;
31
31
  } & React.RefAttributes<HTMLButtonElement>>;
32
- export declare function NativeSelectOption(props: React.ComponentProps<"option">): React.JSX.Element;
33
- export declare function NativeSelectOptGroup(props: React.ComponentProps<"optgroup">): React.JSX.Element;
32
+ export declare function NativeSelectOption(props: React.ComponentProps<'option'>): React.JSX.Element;
33
+ export declare function NativeSelectOptGroup(props: React.ComponentProps<'optgroup'>): React.JSX.Element;
package/dist/select.js CHANGED
@@ -1,20 +1,20 @@
1
- "use client";
1
+ 'use client';
2
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 { Select as BaseSelect } from "@base-ui/react/select";
6
- const cx = (...v) => v.filter(Boolean).join(" ");
3
+ import * as React from 'react';
4
+ import { useComponentSize } from './sizing.js';
5
+ import { Select as BaseSelect } from '@base-ui/react/select';
6
+ const cx = (...v) => v.filter(Boolean).join(' ');
7
7
  function Chevron() {
8
- return (_jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.7", "aria-hidden": "true", children: _jsx("path", { d: "m7 10 5 5 5-5" }) }));
8
+ return (_jsx("svg", { width: '16', height: '16', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.7', "aria-hidden": 'true', children: _jsx("path", { d: 'm7 10 5 5 5-5' }) }));
9
9
  }
10
10
  function Check() {
11
- return (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.7", "aria-hidden": "true", children: _jsx("path", { d: "m5 12 4 4L19 6" }) }));
11
+ return (_jsx("svg", { width: '14', height: '14', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.7', "aria-hidden": 'true', children: _jsx("path", { d: 'm5 12 4 4L19 6' }) }));
12
12
  }
13
13
  export function Select({ options, value, defaultValue, onValueChange, className, inputRef, triggerRef, size, ...props }) {
14
14
  const scheme = useComponentSize(size);
15
- const [localValue, setLocalValue] = React.useState(defaultValue ?? options[0]?.value ?? "");
15
+ const [localValue, setLocalValue] = React.useState(defaultValue ?? options[0]?.value ?? '');
16
16
  const nativeInput = React.useRef(null);
17
- const initialValue = defaultValue ?? options[0]?.value ?? "";
17
+ const initialValue = defaultValue ?? options[0]?.value ?? '';
18
18
  const resetCallback = React.useRef(onValueChange);
19
19
  resetCallback.current = onValueChange;
20
20
  React.useEffect(() => {
@@ -32,24 +32,24 @@ export function Select({ options, value, defaultValue, onValueChange, className,
32
32
  }, 0);
33
33
  pending.add(timer);
34
34
  };
35
- owner.addEventListener("reset", reset);
35
+ owner.addEventListener('reset', reset);
36
36
  return () => {
37
- owner.removeEventListener("reset", reset);
37
+ owner.removeEventListener('reset', reset);
38
38
  pending.forEach(clearTimeout);
39
39
  };
40
40
  }, [initialValue, props.form]);
41
41
  const selected = value ?? localValue;
42
42
  const { name, form, required, disabled, id, ...aria } = props;
43
- return (_jsx("span", { className: cx("pui-select control-shell select-control", className), "data-size": size, "data-ui-size": scheme, "data-disabled": disabled || undefined, children: _jsxs(BaseSelect.Root, { items: options, value: selected, onValueChange: (v) => {
44
- setLocalValue(v ?? "");
45
- onValueChange?.(v ?? "");
43
+ return (_jsx("span", { className: cx('pui-select control-shell select-control', className), "data-size": size, "data-ui-size": scheme, "data-disabled": disabled || undefined, children: _jsxs(BaseSelect.Root, { items: options, value: selected, onValueChange: (v) => {
44
+ setLocalValue(v ?? '');
45
+ onValueChange?.(v ?? '');
46
46
  }, inputRef: (node) => {
47
47
  nativeInput.current = node;
48
- if (typeof inputRef === "function")
48
+ if (typeof inputRef === 'function')
49
49
  inputRef(node);
50
50
  else if (inputRef)
51
51
  inputRef.current = node;
52
- }, name: name, form: form, required: required, disabled: disabled, id: id, children: [_jsxs(BaseSelect.Trigger, { ...aria, ref: triggerRef, className: "pui-select-trigger form-control", "data-value": selected, children: [_jsx(BaseSelect.Value, {}), _jsx(BaseSelect.Icon, { className: "pui-select-icon select-chevron", children: _jsx(Chevron, {}) })] }), _jsx(BaseSelect.Portal, { children: _jsx(BaseSelect.Positioner, { className: "pui-positioner", sideOffset: 6, alignItemWithTrigger: false, children: _jsx(BaseSelect.Popup, { className: "pui-select-popup", "data-ui-size": scheme, children: _jsx(BaseSelect.List, { children: options.map((o) => (_jsxs(BaseSelect.Item, { className: "pui-select-item", value: o.value, "data-option-value": o.value, disabled: o.disabled, children: [_jsx(BaseSelect.ItemIndicator, { className: "pui-select-check", children: _jsx(Check, {}) }), _jsx(BaseSelect.ItemText, { children: o.label })] }, o.value))) }) }) }) })] }) }));
52
+ }, name: name, form: form, required: required, disabled: disabled, id: id, children: [_jsxs(BaseSelect.Trigger, { ...aria, ref: triggerRef, className: 'pui-select-trigger form-control', "data-value": selected, children: [_jsx(BaseSelect.Value, {}), _jsx(BaseSelect.Icon, { className: 'pui-select-icon select-chevron', children: _jsx(Chevron, {}) })] }), _jsx(BaseSelect.Portal, { children: _jsx(BaseSelect.Positioner, { className: 'pui-positioner', sideOffset: 6, alignItemWithTrigger: false, children: _jsx(BaseSelect.Popup, { className: 'pui-select-popup', "data-ui-size": scheme, children: _jsx(BaseSelect.List, { children: options.map((o) => (_jsxs(BaseSelect.Item, { className: 'pui-select-item', value: o.value, "data-option-value": o.value, disabled: o.disabled, children: [_jsx(BaseSelect.ItemIndicator, { className: 'pui-select-check', children: _jsx(Check, {}) }), _jsx(BaseSelect.ItemText, { children: o.label })] }, o.value))) }) }) }) })] }) }));
53
53
  }
54
54
  function optionList(children) {
55
55
  return React.Children.toArray(children).flatMap((child) => {
@@ -57,12 +57,12 @@ function optionList(children) {
57
57
  return [];
58
58
  const p = child.props;
59
59
  if (child.type === React.Fragment ||
60
- child.type === "optgroup" ||
60
+ child.type === 'optgroup' ||
61
61
  child.type === NativeSelectOptGroup)
62
62
  return optionList(p.children);
63
63
  return [
64
64
  {
65
- value: String(p.value ?? p.children ?? ""),
65
+ value: String(p.value ?? p.children ?? ''),
66
66
  label: p.label ?? p.children,
67
67
  disabled: p.disabled,
68
68
  },
@@ -73,15 +73,15 @@ function optionList(children) {
73
73
  export const NativeSelect = React.forwardRef(function NativeSelect({ children, onChange, value, defaultValue, className, size, ...props }, ref) {
74
74
  const input = React.useRef(null);
75
75
  const options = optionList(children);
76
- return (_jsx(Select, { options: options, value: value === undefined ? undefined : String(value), defaultValue: defaultValue === undefined ? undefined : String(defaultValue), className: className, size: size, inputRef: input, triggerRef: ref, name: props.name, form: props.form, disabled: props.disabled, required: props.required, id: props.id, "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], "aria-describedby": props["aria-describedby"], "aria-invalid": props["aria-invalid"], onValueChange: (next) => {
76
+ return (_jsx(Select, { options: options, value: value === undefined ? undefined : String(value), defaultValue: defaultValue === undefined ? undefined : String(defaultValue), className: className, size: size, inputRef: input, triggerRef: ref, name: props.name, form: props.form, disabled: props.disabled, required: props.required, id: props.id, "aria-label": props['aria-label'], "aria-labelledby": props['aria-labelledby'], "aria-describedby": props['aria-describedby'], "aria-invalid": props['aria-invalid'], onValueChange: (next) => {
77
77
  if (!onChange)
78
78
  return;
79
79
  const target = input.current;
80
80
  if (!target)
81
81
  return;
82
- const setter = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value")?.set;
82
+ const setter = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set;
83
83
  setter?.call(target, next);
84
- const event = new Event("change", { bubbles: true });
84
+ const event = new Event('change', { bubbles: true });
85
85
  Object.defineProperties(event, {
86
86
  target: { value: target },
87
87
  currentTarget: { value: target },
package/dist/sizing.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import * as React from "react";
2
- export type ComponentSize = "small" | "default" | "large";
3
- export type ComponentSizeAlias = ComponentSize | "sm" | "md" | "lg";
1
+ import * as React from 'react';
2
+ export type ComponentSize = 'small' | 'default' | 'large';
3
+ export type ComponentSizeAlias = ComponentSize | 'sm' | 'md' | 'lg';
4
4
  export declare const ComponentSizeContext: React.Context<ComponentSize | undefined>;
5
5
  export declare function normalizeSize(size?: ComponentSizeAlias): ComponentSize | undefined;
6
6
  /** Explicit sizes override the surrounding scheme; portals retain React context. */
package/dist/sizing.js CHANGED
@@ -1,14 +1,14 @@
1
- "use client";
1
+ 'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import * as React from "react";
3
+ import * as React from 'react';
4
4
  export const ComponentSizeContext = React.createContext(undefined);
5
5
  export function normalizeSize(size) {
6
- return size === "sm"
7
- ? "small"
8
- : size === "md"
9
- ? "default"
10
- : size === "lg"
11
- ? "large"
6
+ return size === 'sm'
7
+ ? 'small'
8
+ : size === 'md'
9
+ ? 'default'
10
+ : size === 'lg'
11
+ ? 'large'
12
12
  : size;
13
13
  }
14
14
  /** Explicit sizes override the surrounding scheme; portals retain React context. */
@@ -19,5 +19,5 @@ export function useComponentSize(size) {
19
19
  /** No layout box: grid/flex items and semantic children retain their own layout.
20
20
  * For table internals, place the provider outside the table, never inside tbody. */
21
21
  export function SizeProvider({ size, children, }) {
22
- return (_jsx(ComponentSizeContext.Provider, { value: size, children: _jsx("div", { className: "pui-size-scope", "data-ui-size": size, children: children }) }));
22
+ return (_jsx(ComponentSizeContext.Provider, { value: size, children: _jsx("div", { className: 'pui-size-scope', "data-ui-size": size, children: children }) }));
23
23
  }
package/dist/slot.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import * as React from "react";
1
+ import * as React from 'react';
2
2
  export declare function Slot({ children, ...props }: React.HTMLAttributes<HTMLElement>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
package/dist/slot.js CHANGED
@@ -1,10 +1,10 @@
1
- "use client";
2
- import * as React from "react";
3
- import { useRender } from "@base-ui/react/use-render";
1
+ 'use client';
2
+ import * as React from 'react';
3
+ import { useRender } from '@base-ui/react/use-render';
4
4
  export function Slot({ children, ...props }) {
5
5
  return useRender({
6
6
  render: React.isValidElement(children) ? children : undefined,
7
7
  props: React.isValidElement(children) ? props : { ...props, children },
8
- defaultTagName: "span",
8
+ defaultTagName: 'span',
9
9
  });
10
10
  }
package/dist/status.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import * as React from "react";
2
- import { type ComponentSize } from "./sizing.js";
3
- export type StatusTone = "neutral" | "success" | "danger" | "caution" | "progress";
4
- export type BadgeProps = React.ComponentPropsWithoutRef<"span"> & {
1
+ import * as React from 'react';
2
+ import { type ComponentSize } from './sizing.js';
3
+ export type StatusTone = 'neutral' | 'success' | 'danger' | 'caution' | 'progress';
4
+ export type BadgeProps = React.ComponentPropsWithoutRef<'span'> & {
5
5
  size?: ComponentSize;
6
6
  tone?: StatusTone;
7
7
  icon?: React.ReactNode;