@surflane/ui 0.0.0-stage → 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 (89) hide show
  1. package/LICENSE-APACHE +202 -0
  2. package/LICENSE-MIT +18 -0
  3. package/README.md +55 -2
  4. package/dist/advanced-forms.d.ts +115 -0
  5. package/dist/advanced-forms.js +93 -0
  6. package/dist/app-shell.d.ts +23 -0
  7. package/dist/app-shell.js +29 -0
  8. package/dist/button.d.ts +11 -0
  9. package/dist/button.js +16 -0
  10. package/dist/chart.d.ts +48 -0
  11. package/dist/chart.js +126 -0
  12. package/dist/commands.d.ts +47 -0
  13. package/dist/commands.js +27 -0
  14. package/dist/content.d.ts +59 -0
  15. package/dist/content.js +104 -0
  16. package/dist/context-overlays.d.ts +95 -0
  17. package/dist/context-overlays.js +50 -0
  18. package/dist/data.d.ts +95 -0
  19. package/dist/data.js +40 -0
  20. package/dist/date-picker.d.ts +23 -0
  21. package/dist/date-picker.js +39 -0
  22. package/dist/dialog-focus.d.ts +5 -0
  23. package/dist/dialog-focus.js +35 -0
  24. package/dist/dialog.d.ts +59 -0
  25. package/dist/dialog.js +49 -0
  26. package/dist/feedback.d.ts +76 -0
  27. package/dist/feedback.js +35 -0
  28. package/dist/file-upload.d.ts +77 -0
  29. package/dist/file-upload.js +344 -0
  30. package/dist/filter-bar.d.ts +17 -0
  31. package/dist/filter-bar.js +23 -0
  32. package/dist/form-state.d.ts +5 -0
  33. package/dist/form-state.js +63 -0
  34. package/dist/forms.d.ts +91 -0
  35. package/dist/forms.js +109 -0
  36. package/dist/foundations.d.ts +51 -0
  37. package/dist/foundations.js +55 -0
  38. package/dist/icon.d.ts +37 -0
  39. package/dist/icon.js +28 -0
  40. package/dist/index.d.ts +37 -0
  41. package/dist/index.js +38 -0
  42. package/dist/input-extensions.d.ts +117 -0
  43. package/dist/input-extensions.js +64 -0
  44. package/dist/input.d.ts +7 -0
  45. package/dist/input.js +10 -0
  46. package/dist/markdown.d.ts +15 -0
  47. package/dist/markdown.js +121 -0
  48. package/dist/menu.d.ts +79 -0
  49. package/dist/menu.js +44 -0
  50. package/dist/messages.d.ts +63 -0
  51. package/dist/messages.js +38 -0
  52. package/dist/navigation-menu.d.ts +52 -0
  53. package/dist/navigation-menu.js +31 -0
  54. package/dist/navigation.d.ts +107 -0
  55. package/dist/navigation.js +108 -0
  56. package/dist/otp-field.d.ts +12 -0
  57. package/dist/otp-field.js +46 -0
  58. package/dist/pagination.d.ts +23 -0
  59. package/dist/pagination.js +44 -0
  60. package/dist/panels.d.ts +66 -0
  61. package/dist/panels.js +99 -0
  62. package/dist/parts.d.ts +9 -0
  63. package/dist/parts.js +22 -0
  64. package/dist/popover.d.ts +21 -0
  65. package/dist/popover.js +13 -0
  66. package/dist/scroll-area.d.ts +8 -0
  67. package/dist/scroll-area.js +39 -0
  68. package/dist/select.d.ts +33 -0
  69. package/dist/select.js +97 -0
  70. package/dist/sizing.d.ts +13 -0
  71. package/dist/sizing.js +23 -0
  72. package/dist/slot.d.ts +2 -0
  73. package/dist/slot.js +10 -0
  74. package/dist/status.d.ts +22 -0
  75. package/dist/status.js +17 -0
  76. package/dist/syntax-engine.d.ts +5 -0
  77. package/dist/syntax-engine.js +129 -0
  78. package/dist/syntax-highlighter.d.ts +17 -0
  79. package/dist/syntax-highlighter.js +64 -0
  80. package/dist/toast.d.ts +59 -0
  81. package/dist/toast.js +99 -0
  82. package/dist/tone-transition.d.ts +4 -0
  83. package/dist/tone-transition.js +81 -0
  84. package/dist/tooltip.d.ts +11 -0
  85. package/dist/tooltip.js +13 -0
  86. package/dist/tree.d.ts +28 -0
  87. package/dist/tree.js +311 -0
  88. package/package.json +109 -4
  89. package/src/styles.css +3799 -0
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ export type MarkdownProps = Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> & {
3
+ source: string;
4
+ label?: string;
5
+ headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;
6
+ codeWrap?: boolean;
7
+ };
8
+ /** CommonMark + GFM. HTML stays disabled, URLs use react-markdown's safe default.
9
+ * Fetching, permissions, frontmatter, MDX and script execution are caller concerns. */
10
+ export declare const Markdown: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "children"> & {
11
+ source: string;
12
+ label?: string;
13
+ headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;
14
+ codeWrap?: boolean;
15
+ } & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,121 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import ReactMarkdown from 'react-markdown';
5
+ import remarkGfm from 'remark-gfm';
6
+ import { CodeBlock } from './content.js';
7
+ import { Table } from './data.js';
8
+ function text(node) {
9
+ return 'value' in node
10
+ ? node.value
11
+ : 'children' in node
12
+ ? node.children.map((child) => text(child)).join('')
13
+ : '';
14
+ }
15
+ function visit(node, callback) {
16
+ if (node.type === 'element')
17
+ callback(node);
18
+ if ('children' in node)
19
+ node.children.forEach((child) => visit(child, callback));
20
+ }
21
+ /** CommonMark + GFM. HTML stays disabled, URLs use react-markdown's safe default.
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) {
24
+ const prefix = `md-${React.useId().replace(/[^a-zA-Z0-9_-]/g, '')}`;
25
+ const headings = React.useMemo(() => () => (tree) => {
26
+ const counts = new Map();
27
+ const anchors = new Map();
28
+ const previousIds = new Map();
29
+ visit(tree, (node) => {
30
+ if (!/^h[1-6]$/.test(node.tagName))
31
+ return;
32
+ const slug = text(node)
33
+ .normalize('NFKC')
34
+ .toLowerCase()
35
+ .replace(/[^\p{L}\p{N}\s_-]/gu, '')
36
+ .trim()
37
+ .replace(/\s+/g, '-') || 'section';
38
+ const count = counts.get(slug) ?? 0;
39
+ counts.set(slug, count + 1);
40
+ const key = count ? `${slug}-${count}` : slug;
41
+ const id = `${prefix}-${key}`;
42
+ if (typeof node.properties.id === 'string')
43
+ previousIds.set(node.properties.id, id);
44
+ node.properties.id = id;
45
+ anchors.set(key, id);
46
+ });
47
+ visit(tree, (node) => {
48
+ if (node.tagName === 'li' &&
49
+ String(node.properties.className ?? '').includes('task-list-item')) {
50
+ const taskLabel = text(node).trim() || 'Task list item';
51
+ visit(node, (child) => {
52
+ if (child.tagName === 'input' &&
53
+ child.properties.type === 'checkbox')
54
+ child.properties.ariaLabel = taskLabel;
55
+ });
56
+ }
57
+ for (const property of ['ariaDescribedBy', 'ariaLabelledBy']) {
58
+ const references = node.properties[property];
59
+ if (Array.isArray(references))
60
+ node.properties[property] = references.map((value) => previousIds.get(String(value)) ?? value);
61
+ else if (typeof references === 'string')
62
+ node.properties[property] = references
63
+ .split(/\s+/)
64
+ .map((value) => previousIds.get(value) ?? value)
65
+ .join(' ');
66
+ }
67
+ if (node.tagName !== 'a' ||
68
+ typeof node.properties.href !== 'string' ||
69
+ !node.properties.href.startsWith('#'))
70
+ return;
71
+ try {
72
+ const target = anchors.get(decodeURIComponent(node.properties.href.slice(1)));
73
+ if (target)
74
+ node.properties.href = `#${target}`;
75
+ }
76
+ catch {
77
+ /* A malformed fragment remains inert navigation text. */
78
+ }
79
+ });
80
+ }, [prefix]);
81
+ const components = React.useMemo(() => {
82
+ const heading = (level) => ({ node: _node, ...headingProps }) => React.createElement(`h${Math.min(6, Math.max(1, headingLevel) + level - 1)}`, headingProps);
83
+ return {
84
+ h1: heading(1),
85
+ h2: heading(2),
86
+ h3: heading(3),
87
+ h4: heading(4),
88
+ h5: heading(5),
89
+ h6: heading(6),
90
+ pre({ node, children }) {
91
+ const child = React.Children.toArray(children)[0];
92
+ if (!React.isValidElement(child))
93
+ return _jsx("pre", { children: children });
94
+ const language = /(?:^|\s)language-([^\s]+)/.exec(child.props.className ?? '')?.[1] ?? 'text';
95
+ const code = String(child.props.children ?? '').replace(/\n$/, '');
96
+ return (_jsx(CodeBlock, { code: code, language: language, wrap: codeWrap, label: `${label}: code at line ${node?.position?.start.line ?? 1}` }));
97
+ },
98
+ code({ node: _node, ...codeProps }) {
99
+ return _jsx("code", { ...codeProps, className: 'pui-markdown-inline-code' });
100
+ },
101
+ table({ node, children, ...tableProps }) {
102
+ return (_jsx(Table.Container, { label: `${label}: table at line ${node?.position?.start.line ?? 1}`, orientation: 'horizontal', children: _jsx("table", { ...tableProps, className: 'pui-table', children: children }) }));
103
+ },
104
+ th({ node: _node, ...cellProps }) {
105
+ return (_jsx("th", { ...cellProps, scope: 'col', className: 'pui-table-cell pui-table-header' }));
106
+ },
107
+ td({ node: _node, ...cellProps }) {
108
+ return _jsx("td", { ...cellProps, className: 'pui-table-cell' });
109
+ },
110
+ a({ node: _node, href, children, ...linkProps }) {
111
+ return href ? (_jsx("a", { ...linkProps, href: href, children: children })) : (_jsx("span", { children: children }));
112
+ },
113
+ img({ node: _node, src, alt, ...imageProps }) {
114
+ return src ? (_jsx("img", { ...imageProps, src: src, alt: alt ?? '', loading: 'lazy' })) : (_jsx("span", { children: alt }));
115
+ },
116
+ };
117
+ }, [headingLevel, label, codeWrap]);
118
+ return (_jsx("div", { ...props, ref: ref, role: 'article', className: ['pui-prose pui-markdown', className]
119
+ .filter(Boolean)
120
+ .join(' '), "aria-label": label, children: _jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], rehypePlugins: [headings], remarkRehypeOptions: { clobberPrefix: `${prefix}-` }, skipHtml: true, components: components, children: source }) }));
121
+ });
package/dist/menu.d.ts ADDED
@@ -0,0 +1,79 @@
1
+ import * as React from 'react';
2
+ import { Menu as BaseMenu } from '@base-ui/react/menu';
3
+ declare const MenuPopup: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
4
+ size?: import("./sizing.js").ComponentSize;
5
+ } & React.RefAttributes<HTMLDivElement>>;
6
+ declare const MenuPositioner: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
7
+ size?: import("./sizing.js").ComponentSize;
8
+ } & React.RefAttributes<HTMLDivElement>>;
9
+ declare const MenuContent: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/menu").MenuPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & Pick<Omit<Omit<import("@base-ui/react/menu").MenuPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "align" | "side" | "sideOffset" | "collisionPadding"> & React.RefAttributes<HTMLDivElement>>;
10
+ declare const MenuTrigger: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuTriggerProps<unknown> & React.RefAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
11
+ export declare const Menu: {
12
+ Content: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/menu").MenuPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & Pick<Omit<Omit<import("@base-ui/react/menu").MenuPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "align" | "side" | "sideOffset" | "collisionPadding"> & React.RefAttributes<HTMLDivElement>>;
13
+ Popup: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
14
+ size?: import("./sizing.js").ComponentSize;
15
+ } & React.RefAttributes<HTMLDivElement>>;
16
+ Positioner: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
17
+ size?: import("./sizing.js").ComponentSize;
18
+ } & React.RefAttributes<HTMLDivElement>>;
19
+ Trigger: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuTriggerProps<unknown> & React.RefAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
20
+ CheckboxItemIndicator: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/menu").MenuCheckboxItemIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
21
+ RadioItemIndicator: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/menu").MenuRadioItemIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
22
+ SubmenuTrigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/menu").MenuSubmenuTriggerProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & {
23
+ indicator?: React.ReactNode;
24
+ } & React.RefAttributes<HTMLDivElement>>;
25
+ Item: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuItemProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
26
+ size?: import("./sizing.js").ComponentSize;
27
+ } & React.RefAttributes<HTMLDivElement>>;
28
+ LinkItem: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuLinkItemProps, "ref"> & React.RefAttributes<Element>, "ref">, "size"> & {
29
+ size?: import("./sizing.js").ComponentSize;
30
+ } & React.RefAttributes<HTMLAnchorElement>>;
31
+ CheckboxItem: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuCheckboxItemProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
32
+ size?: import("./sizing.js").ComponentSize;
33
+ } & React.RefAttributes<HTMLDivElement>>;
34
+ RadioItem: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuRadioItemProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
35
+ size?: import("./sizing.js").ComponentSize;
36
+ } & React.RefAttributes<HTMLDivElement>>;
37
+ GroupLabel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuGroupLabelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
38
+ size?: import("./sizing.js").ComponentSize;
39
+ } & React.RefAttributes<HTMLDivElement>>;
40
+ Separator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react").SeparatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
41
+ size?: import("./sizing.js").ComponentSize;
42
+ } & React.RefAttributes<HTMLDivElement>>;
43
+ Input: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuInputProps, "ref"> & React.RefAttributes<HTMLInputElement>, "ref">, "size"> & {
44
+ size?: import("./sizing.js").ComponentSize;
45
+ } & React.RefAttributes<HTMLInputElement>>;
46
+ Arrow: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
47
+ Backdrop: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
48
+ Group: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
49
+ Portal: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuPortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
50
+ RadioGroup: React.NamedExoticComponent<Omit<import("@base-ui/react/menu").MenuRadioGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
51
+ Root: typeof BaseMenu.Root;
52
+ SubmenuRoot: typeof BaseMenu.SubmenuRoot;
53
+ Viewport: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuViewportProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
54
+ Handle: typeof BaseMenu.Handle;
55
+ createHandle: typeof BaseMenu.createHandle;
56
+ FilterProvider: typeof BaseMenu.FilterProvider;
57
+ List: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuListProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
58
+ Clear: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuClearProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
59
+ Empty: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuEmptyProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
60
+ useFilter: typeof BaseMenu.useFilter;
61
+ };
62
+ export { MenuPopup, MenuPositioner, MenuTrigger, MenuContent };
63
+ export declare const MenuArrow: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>>, MenuBackdrop: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>, MenuCheckboxItem: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuCheckboxItemProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
64
+ size?: import("./sizing.js").ComponentSize;
65
+ } & React.RefAttributes<HTMLDivElement>>, MenuCheckboxItemIndicator: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/menu").MenuCheckboxItemIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>, MenuClear: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuClearProps, "ref"> & React.RefAttributes<HTMLButtonElement>>, MenuEmpty: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuEmptyProps, "ref"> & React.RefAttributes<HTMLDivElement>>, MenuFilterProvider: typeof BaseMenu.FilterProvider, MenuGroup: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>, MenuGroupLabel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuGroupLabelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
66
+ size?: import("./sizing.js").ComponentSize;
67
+ } & React.RefAttributes<HTMLDivElement>>, MenuHandle: typeof BaseMenu.Handle, MenuInput: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuInputProps, "ref"> & React.RefAttributes<HTMLInputElement>, "ref">, "size"> & {
68
+ size?: import("./sizing.js").ComponentSize;
69
+ } & React.RefAttributes<HTMLInputElement>>, MenuItem: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuItemProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
70
+ size?: import("./sizing.js").ComponentSize;
71
+ } & React.RefAttributes<HTMLDivElement>>, MenuLinkItem: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuLinkItemProps, "ref"> & React.RefAttributes<Element>, "ref">, "size"> & {
72
+ size?: import("./sizing.js").ComponentSize;
73
+ } & React.RefAttributes<HTMLAnchorElement>>, MenuList: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuListProps, "ref"> & React.RefAttributes<HTMLDivElement>>, MenuPortal: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuPortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>, MenuRadioGroup: React.NamedExoticComponent<Omit<import("@base-ui/react/menu").MenuRadioGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>, MenuRadioItem: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/menu").MenuRadioItemProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
74
+ size?: import("./sizing.js").ComponentSize;
75
+ } & React.RefAttributes<HTMLDivElement>>, MenuRadioItemIndicator: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/menu").MenuRadioItemIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>, MenuRoot: typeof BaseMenu.Root, MenuSeparator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react").SeparatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
76
+ size?: import("./sizing.js").ComponentSize;
77
+ } & React.RefAttributes<HTMLDivElement>>, MenuSubmenuRoot: typeof BaseMenu.SubmenuRoot, MenuSubmenuTrigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/menu").MenuSubmenuTriggerProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & {
78
+ indicator?: React.ReactNode;
79
+ } & React.RefAttributes<HTMLDivElement>>, MenuViewport: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/menu").MenuViewportProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
package/dist/menu.js ADDED
@@ -0,0 +1,44 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { Menu as BaseMenu } from '@base-ui/react/menu';
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) {
9
+ return (_jsx(MenuPositioner, { align: align, side: side, sideOffset: sideOffset, collisionPadding: collisionPadding, children: _jsx(MenuPopup, { ...props, ref: ref, className: className }) }));
10
+ });
11
+ const MenuTrigger = React.forwardRef(function MenuTrigger({ className, ...props }, ref) {
12
+ return (_jsx(BaseMenu.Trigger, { "data-variant": 'ghost', ...props, ref: ref, className: skin('pui-button pui-menu-trigger', className) }));
13
+ });
14
+ const CheckboxIndicator = React.forwardRef(function CheckboxIndicator({ className, children, ...props }, ref) {
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
+ });
17
+ const RadioIndicator = React.forwardRef(function RadioIndicator({ className, children, ...props }, ref) {
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
+ });
20
+ const SubmenuTrigger = React.forwardRef(function SubmenuTrigger({ className, children, indicator, ...props }, ref) {
21
+ return (_jsxs(BaseMenu.SubmenuTrigger, { ...props, ref: ref, className: skin('pui-menu-item pui-menu-submenu-trigger', className), children: [children, indicator === false
22
+ ? null
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' }) })))] }));
24
+ });
25
+ export const Menu = {
26
+ ...BaseMenu,
27
+ Content: MenuContent,
28
+ Popup: MenuPopup,
29
+ Positioner: MenuPositioner,
30
+ Trigger: MenuTrigger,
31
+ CheckboxItemIndicator: CheckboxIndicator,
32
+ RadioItemIndicator: RadioIndicator,
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'),
41
+ };
42
+ // Flat names for React Server Components, which cannot dot into client exports.
43
+ export { MenuPopup, MenuPositioner, MenuTrigger, MenuContent };
44
+ export const { Arrow: MenuArrow, Backdrop: MenuBackdrop, CheckboxItem: MenuCheckboxItem, CheckboxItemIndicator: MenuCheckboxItemIndicator, Clear: MenuClear, Empty: MenuEmpty, FilterProvider: MenuFilterProvider, Group: MenuGroup, GroupLabel: MenuGroupLabel, Handle: MenuHandle, Input: MenuInput, Item: MenuItem, LinkItem: MenuLinkItem, List: MenuList, Portal: MenuPortal, RadioGroup: MenuRadioGroup, RadioItem: MenuRadioItem, RadioItemIndicator: MenuRadioItemIndicator, Root: MenuRoot, Separator: MenuSeparator, SubmenuRoot: MenuSubmenuRoot, SubmenuTrigger: MenuSubmenuTrigger, Viewport: MenuViewport, } = Menu;
@@ -0,0 +1,63 @@
1
+ import * as React from 'react';
2
+ import { type StatusTone } from './status.js';
3
+ export declare const InlineMessage: {
4
+ Root: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
5
+ tone?: StatusTone;
6
+ } & React.RefAttributes<HTMLDivElement>>;
7
+ Icon: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & {
8
+ tone?: StatusTone;
9
+ } & React.RefAttributes<HTMLSpanElement>>;
10
+ Content: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "size"> & {
11
+ size?: import("./sizing.js").ComponentSize;
12
+ } & React.RefAttributes<HTMLDivElement>>;
13
+ Title: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref">, "size"> & {
14
+ size?: import("./sizing.js").ComponentSize;
15
+ } & React.RefAttributes<HTMLElement>>;
16
+ Description: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref">, "size"> & {
17
+ size?: import("./sizing.js").ComponentSize;
18
+ } & React.RefAttributes<HTMLParagraphElement>>;
19
+ Actions: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "size"> & {
20
+ size?: import("./sizing.js").ComponentSize;
21
+ } & React.RefAttributes<HTMLDivElement>>;
22
+ };
23
+ export declare const EmptyState: {
24
+ Root: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "size"> & {
25
+ size?: import("./sizing.js").ComponentSize;
26
+ } & React.RefAttributes<HTMLDivElement>>;
27
+ Icon: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "size"> & {
28
+ size?: import("./sizing.js").ComponentSize;
29
+ } & React.RefAttributes<HTMLDivElement>>;
30
+ Title: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref"> & {
31
+ level?: 2 | 3 | 4 | 5 | 6;
32
+ } & React.RefAttributes<HTMLHeadingElement>>;
33
+ Description: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref">, "size"> & {
34
+ size?: import("./sizing.js").ComponentSize;
35
+ } & React.RefAttributes<HTMLParagraphElement>>;
36
+ Actions: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "size"> & {
37
+ size?: import("./sizing.js").ComponentSize;
38
+ } & React.RefAttributes<HTMLDivElement>>;
39
+ };
40
+ export declare const EmptyStateRoot: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "size"> & {
41
+ size?: import("./sizing.js").ComponentSize;
42
+ } & React.RefAttributes<HTMLDivElement>>, EmptyStateIcon: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "size"> & {
43
+ size?: import("./sizing.js").ComponentSize;
44
+ } & React.RefAttributes<HTMLDivElement>>, EmptyStateTitle: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref"> & {
45
+ level?: 2 | 3 | 4 | 5 | 6;
46
+ } & React.RefAttributes<HTMLHeadingElement>>, EmptyStateDescription: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref">, "size"> & {
47
+ size?: import("./sizing.js").ComponentSize;
48
+ } & React.RefAttributes<HTMLParagraphElement>>, EmptyStateActions: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "size"> & {
49
+ size?: import("./sizing.js").ComponentSize;
50
+ } & React.RefAttributes<HTMLDivElement>>;
51
+ export declare const InlineMessageRoot: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
52
+ tone?: StatusTone;
53
+ } & React.RefAttributes<HTMLDivElement>>, InlineMessageIcon: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & {
54
+ tone?: StatusTone;
55
+ } & React.RefAttributes<HTMLSpanElement>>, InlineMessageContent: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "size"> & {
56
+ size?: import("./sizing.js").ComponentSize;
57
+ } & React.RefAttributes<HTMLDivElement>>, InlineMessageTitle: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref">, "size"> & {
58
+ size?: import("./sizing.js").ComponentSize;
59
+ } & React.RefAttributes<HTMLElement>>, InlineMessageDescription: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref">, "size"> & {
60
+ size?: import("./sizing.js").ComponentSize;
61
+ } & React.RefAttributes<HTMLParagraphElement>>, InlineMessageActions: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "size"> & {
62
+ size?: import("./sizing.js").ComponentSize;
63
+ } & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,38 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { useToneTransition } from './tone-transition.js';
5
+ import { part } from './parts.js';
6
+ import { StatusIcon } from './status.js';
7
+ const MessageRoot = React.forwardRef(function MessageRoot({ tone = 'neutral', className, ...props }, ref) {
8
+ const elementRef = useToneTransition(tone, ref);
9
+ return (_jsx("div", { ...props, ref: elementRef, "data-tone": tone, className: ['pui-message', className].filter(Boolean).join(' ') }));
10
+ });
11
+ const MessageIcon = React.forwardRef(function MessageIcon({ tone = 'neutral', children, className, ...props }, ref) {
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
+ });
14
+ export const InlineMessage = {
15
+ Root: MessageRoot,
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'),
21
+ };
22
+ const EmptyTitle = React.forwardRef(function EmptyTitle({ level = 3, className, ...props }, ref) {
23
+ return React.createElement(`h${level}`, {
24
+ ...props,
25
+ ref,
26
+ className: ['pui-empty-title', className].filter(Boolean).join(' '),
27
+ });
28
+ });
29
+ export const EmptyState = {
30
+ Root: part('div', 'pui-empty'),
31
+ Icon: part('div', 'pui-empty-icon'),
32
+ Title: EmptyTitle,
33
+ Description: part('p', 'pui-empty-description'),
34
+ Actions: part('div', 'pui-empty-actions'),
35
+ };
36
+ // Flat names for React Server Components, which cannot dot into client exports.
37
+ export const { Root: EmptyStateRoot, Icon: EmptyStateIcon, Title: EmptyStateTitle, Description: EmptyStateDescription, Actions: EmptyStateActions, } = EmptyState;
38
+ export const { Root: InlineMessageRoot, Icon: InlineMessageIcon, Content: InlineMessageContent, Title: InlineMessageTitle, Description: InlineMessageDescription, Actions: InlineMessageActions, } = InlineMessage;
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+ import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react/navigation-menu';
3
+ declare function Root<Value>(props: BaseNavigationMenu.Root.Props<Value>): React.JSX.Element;
4
+ export declare const NavigationMenu: {
5
+ Root: typeof Root;
6
+ Trigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & {
7
+ indicator?: React.ReactNode;
8
+ } & React.RefAttributes<HTMLButtonElement>>;
9
+ List: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuListProps, "ref"> & React.RefAttributes<HTMLUListElement>, "ref">, "size"> & {
10
+ size?: import("./sizing.js").ComponentSize;
11
+ } & React.RefAttributes<HTMLUListElement>>;
12
+ Item: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuItemProps, "ref"> & React.RefAttributes<HTMLLIElement>, "ref">, "size"> & {
13
+ size?: import("./sizing.js").ComponentSize;
14
+ } & React.RefAttributes<HTMLLIElement>>;
15
+ Link: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuLinkProps, "ref"> & React.RefAttributes<HTMLAnchorElement>, "ref">, "size"> & {
16
+ size?: import("./sizing.js").ComponentSize;
17
+ } & React.RefAttributes<HTMLAnchorElement>>;
18
+ Content: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuContentProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
19
+ size?: import("./sizing.js").ComponentSize;
20
+ } & React.RefAttributes<HTMLDivElement>>;
21
+ Positioner: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
22
+ size?: import("./sizing.js").ComponentSize;
23
+ } & React.RefAttributes<HTMLDivElement>>;
24
+ Popup: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuPopupProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
25
+ size?: import("./sizing.js").ComponentSize;
26
+ } & React.RefAttributes<HTMLElement>>;
27
+ Viewport: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuViewportProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
28
+ size?: import("./sizing.js").ComponentSize;
29
+ } & React.RefAttributes<HTMLDivElement>>;
30
+ Icon: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuIconProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
31
+ Portal: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/navigation-menu").NavigationMenuPortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
32
+ Backdrop: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/navigation-menu").NavigationMenuBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
33
+ Arrow: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/navigation-menu").NavigationMenuArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
34
+ };
35
+ export declare const NavigationMenuArrow: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/navigation-menu").NavigationMenuArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>>, NavigationMenuBackdrop: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/navigation-menu").NavigationMenuBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>>, NavigationMenuContent: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuContentProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
36
+ size?: import("./sizing.js").ComponentSize;
37
+ } & React.RefAttributes<HTMLDivElement>>, NavigationMenuIcon: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuIconProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>, NavigationMenuItem: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuItemProps, "ref"> & React.RefAttributes<HTMLLIElement>, "ref">, "size"> & {
38
+ size?: import("./sizing.js").ComponentSize;
39
+ } & React.RefAttributes<HTMLLIElement>>, NavigationMenuLink: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuLinkProps, "ref"> & React.RefAttributes<HTMLAnchorElement>, "ref">, "size"> & {
40
+ size?: import("./sizing.js").ComponentSize;
41
+ } & React.RefAttributes<HTMLAnchorElement>>, NavigationMenuList: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuListProps, "ref"> & React.RefAttributes<HTMLUListElement>, "ref">, "size"> & {
42
+ size?: import("./sizing.js").ComponentSize;
43
+ } & React.RefAttributes<HTMLUListElement>>, NavigationMenuPopup: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuPopupProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
44
+ size?: import("./sizing.js").ComponentSize;
45
+ } & React.RefAttributes<HTMLElement>>, NavigationMenuPortal: React.ForwardRefExoticComponent<Omit<import("@base-ui/react/navigation-menu").NavigationMenuPortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>, NavigationMenuPositioner: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuPositionerProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
46
+ size?: import("./sizing.js").ComponentSize;
47
+ } & React.RefAttributes<HTMLDivElement>>, NavigationMenuRoot: typeof Root, NavigationMenuTrigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & {
48
+ indicator?: React.ReactNode;
49
+ } & React.RefAttributes<HTMLButtonElement>>, NavigationMenuViewport: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/navigation-menu").NavigationMenuViewportProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
50
+ size?: import("./sizing.js").ComponentSize;
51
+ } & React.RefAttributes<HTMLDivElement>>;
52
+ export {};
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { NavigationMenu as BaseNavigationMenu } from '@base-ui/react/navigation-menu';
5
+ import { part, skin } from './parts.js';
6
+ function Root(props) {
7
+ const { className, orientation = 'horizontal', ...rest } = props;
8
+ return (_jsx(BaseNavigationMenu.Root, { ...rest, orientation: orientation, "data-orientation": orientation, className: skin('pui-navigation-menu', className) }));
9
+ }
10
+ const Trigger = React.forwardRef(function Trigger({ className, children, indicator, ...props }, ref) {
11
+ return (_jsxs(BaseNavigationMenu.Trigger, { "data-variant": 'ghost', ...props, ref: ref, className: skin('pui-button pui-navigation-trigger', className), children: [children, indicator === false
12
+ ? null
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' }) }) })))] }));
14
+ });
15
+ export const NavigationMenu = {
16
+ ...BaseNavigationMenu,
17
+ Root,
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) {
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
+ }),
29
+ };
30
+ // Flat names for React Server Components, which cannot dot into client exports.
31
+ export const { Arrow: NavigationMenuArrow, Backdrop: NavigationMenuBackdrop, Content: NavigationMenuContent, Icon: NavigationMenuIcon, Item: NavigationMenuItem, Link: NavigationMenuLink, List: NavigationMenuList, Popup: NavigationMenuPopup, Portal: NavigationMenuPortal, Positioner: NavigationMenuPositioner, Root: NavigationMenuRoot, Trigger: NavigationMenuTrigger, Viewport: NavigationMenuViewport, } = NavigationMenu;
@@ -0,0 +1,107 @@
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
+ export declare const Separator: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/separator").SeparatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & {
69
+ inset?: boolean;
70
+ } & React.RefAttributes<HTMLDivElement>>;
71
+ export declare const Link: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & React.RefAttributes<HTMLAnchorElement>>;
72
+ declare function BreadcrumbSeparator({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
73
+ declare function BreadcrumbCurrent({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
74
+ export declare const Breadcrumbs: {
75
+ Root: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
76
+ List: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.OlHTMLAttributes<HTMLOListElement>, HTMLOListElement>, "ref"> & React.RefAttributes<HTMLOListElement>>;
77
+ Item: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>;
78
+ Link: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & React.RefAttributes<HTMLAnchorElement>>;
79
+ Separator: typeof BreadcrumbSeparator;
80
+ Current: typeof BreadcrumbCurrent;
81
+ };
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
+ 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>>;