@surflane/ui 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -7
- package/dist/advanced-forms.js +24 -24
- package/dist/app-shell.js +8 -8
- package/dist/avatar.d.ts +24 -0
- package/dist/avatar.js +26 -0
- package/dist/button.js +3 -3
- package/dist/chart.js +6 -3
- package/dist/chevron.d.ts +3 -0
- package/dist/chevron.js +6 -0
- package/dist/commands.js +9 -9
- package/dist/content.js +11 -8
- package/dist/context-overlays.js +6 -6
- package/dist/data.js +21 -21
- package/dist/dialog.js +8 -7
- package/dist/disclosure.d.ts +42 -0
- package/dist/disclosure.js +41 -0
- package/dist/feedback.js +14 -14
- package/dist/file-upload.js +1 -1
- package/dist/filter-bar.js +5 -5
- package/dist/forms.js +17 -17
- package/dist/foundations.js +7 -7
- package/dist/icon.js +4 -2
- package/dist/index.d.ts +4 -5
- package/dist/index.js +7 -5
- package/dist/input-extensions.js +11 -11
- package/dist/input.js +1 -1
- package/dist/markdown.js +3 -2
- package/dist/menu.js +14 -14
- package/dist/messages.js +11 -11
- package/dist/navigation-menu.js +9 -9
- package/dist/navigation.d.ts +1 -91
- package/dist/navigation.js +8 -75
- package/dist/otp-field.js +4 -4
- package/dist/pagination.js +1 -1
- package/dist/panels.js +12 -11
- package/dist/parts.d.ts +3 -0
- package/dist/parts.js +8 -1
- package/dist/popover.js +2 -2
- package/dist/scroll-area.js +1 -1
- package/dist/select.js +3 -2
- package/dist/sizing.js +1 -1
- package/dist/status.js +2 -2
- package/dist/syntax-context.d.ts +7 -0
- package/dist/syntax-context.js +4 -0
- package/dist/syntax-highlighter.d.ts +4 -1
- package/dist/syntax-highlighter.js +11 -5
- package/dist/syntax-highlighting.d.ts +8 -0
- package/dist/syntax-highlighting.js +12 -0
- package/dist/tabs.d.ts +29 -0
- package/dist/tabs.js +13 -0
- package/dist/toast.js +14 -14
- package/package.json +57 -8
- package/src/all.css +8 -0
- package/src/styles.css +3571 -3623
package/dist/navigation.d.ts
CHANGED
|
@@ -1,70 +1,4 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { type ComponentSizeAlias } from './sizing.js';
|
|
3
|
-
import { Accordion as BaseAccordion } from '@base-ui/react/accordion';
|
|
4
|
-
export declare const Tabs: {
|
|
5
|
-
Root: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
6
|
-
size?: import("./sizing.js").ComponentSize;
|
|
7
|
-
} & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
-
List: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsListProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
9
|
-
size?: import("./sizing.js").ComponentSize;
|
|
10
|
-
} & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
-
Tab: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsTabProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
|
|
12
|
-
size?: import("./sizing.js").ComponentSize;
|
|
13
|
-
} & React.RefAttributes<HTMLElement>>;
|
|
14
|
-
Panel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
15
|
-
size?: import("./sizing.js").ComponentSize;
|
|
16
|
-
} & React.RefAttributes<HTMLDivElement>>;
|
|
17
|
-
Indicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
|
|
18
|
-
size?: import("./sizing.js").ComponentSize;
|
|
19
|
-
} & React.RefAttributes<HTMLSpanElement>>;
|
|
20
|
-
};
|
|
21
|
-
declare function AccordionRoot<Value = string>({ className, ...props }: BaseAccordion.Root.Props<Value>): React.JSX.Element;
|
|
22
|
-
declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/accordion").AccordionTriggerProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & {
|
|
23
|
-
indicator?: React.ReactNode;
|
|
24
|
-
} & React.RefAttributes<HTMLElement>>;
|
|
25
|
-
declare const AccordionPanel: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/accordion").AccordionPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
26
|
-
export declare const Accordion: {
|
|
27
|
-
Root: typeof AccordionRoot;
|
|
28
|
-
Item: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/accordion").AccordionItemProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
29
|
-
size?: import("./sizing.js").ComponentSize;
|
|
30
|
-
} & React.RefAttributes<HTMLDivElement>>;
|
|
31
|
-
Header: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/accordion").AccordionHeaderProps, "ref"> & React.RefAttributes<HTMLHeadingElement>, "ref">, "size"> & {
|
|
32
|
-
size?: import("./sizing.js").ComponentSize;
|
|
33
|
-
} & React.RefAttributes<HTMLHeadingElement>>;
|
|
34
|
-
Trigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/accordion").AccordionTriggerProps, "ref"> & React.RefAttributes<HTMLElement>, "ref"> & {
|
|
35
|
-
indicator?: React.ReactNode;
|
|
36
|
-
} & React.RefAttributes<HTMLElement>>;
|
|
37
|
-
Panel: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/accordion").AccordionPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
38
|
-
};
|
|
39
|
-
declare const CollapsibleTrigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/collapsible").CollapsibleTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & {
|
|
40
|
-
indicator?: React.ReactNode;
|
|
41
|
-
} & React.RefAttributes<HTMLButtonElement>>;
|
|
42
|
-
declare const CollapsiblePanel: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/collapsible").CollapsiblePanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
43
|
-
export declare const Collapsible: {
|
|
44
|
-
Root: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/collapsible").CollapsibleRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
45
|
-
size?: import("./sizing.js").ComponentSize;
|
|
46
|
-
} & React.RefAttributes<HTMLDivElement>>;
|
|
47
|
-
Trigger: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/collapsible").CollapsibleTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & {
|
|
48
|
-
indicator?: React.ReactNode;
|
|
49
|
-
} & React.RefAttributes<HTMLButtonElement>>;
|
|
50
|
-
Panel: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/collapsible").CollapsiblePanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
51
|
-
};
|
|
52
|
-
declare const AvatarRoot: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/avatar").AvatarRootProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & {
|
|
53
|
-
size?: ComponentSizeAlias;
|
|
54
|
-
} & React.RefAttributes<HTMLSpanElement>>;
|
|
55
|
-
declare const AvatarFallback: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/avatar").AvatarFallbackProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
56
|
-
export declare const Avatar: {
|
|
57
|
-
Root: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/avatar").AvatarRootProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & {
|
|
58
|
-
size?: ComponentSizeAlias;
|
|
59
|
-
} & React.RefAttributes<HTMLSpanElement>>;
|
|
60
|
-
Status: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref">, "size"> & {
|
|
61
|
-
size?: import("./sizing.js").ComponentSize;
|
|
62
|
-
} & React.RefAttributes<HTMLSpanElement>>;
|
|
63
|
-
Fallback: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/avatar").AvatarFallbackProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
64
|
-
Image: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/avatar").AvatarImageProps, "ref"> & React.RefAttributes<HTMLImageElement>, "ref">, "size"> & {
|
|
65
|
-
size?: import("./sizing.js").ComponentSize;
|
|
66
|
-
} & React.RefAttributes<HTMLImageElement>>;
|
|
67
|
-
};
|
|
68
2
|
export declare const Separator: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react/separator").SeparatorProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
69
3
|
inset?: boolean;
|
|
70
4
|
} & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -79,29 +13,5 @@ export declare const Breadcrumbs: {
|
|
|
79
13
|
Separator: typeof BreadcrumbSeparator;
|
|
80
14
|
Current: typeof BreadcrumbCurrent;
|
|
81
15
|
};
|
|
82
|
-
export { AccordionPanel, AccordionRoot, AccordionTrigger, AvatarFallback, AvatarRoot, CollapsiblePanel, CollapsibleTrigger, };
|
|
83
|
-
export declare const AccordionHeader: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/accordion").AccordionHeaderProps, "ref"> & React.RefAttributes<HTMLHeadingElement>, "ref">, "size"> & {
|
|
84
|
-
size?: import("./sizing.js").ComponentSize;
|
|
85
|
-
} & React.RefAttributes<HTMLHeadingElement>>, AccordionItem: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/accordion").AccordionItemProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
86
|
-
size?: import("./sizing.js").ComponentSize;
|
|
87
|
-
} & React.RefAttributes<HTMLDivElement>>;
|
|
88
|
-
export declare const AvatarImage: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/avatar").AvatarImageProps, "ref"> & React.RefAttributes<HTMLImageElement>, "ref">, "size"> & {
|
|
89
|
-
size?: import("./sizing.js").ComponentSize;
|
|
90
|
-
} & React.RefAttributes<HTMLImageElement>>, AvatarStatus: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref">, "size"> & {
|
|
91
|
-
size?: import("./sizing.js").ComponentSize;
|
|
92
|
-
} & React.RefAttributes<HTMLSpanElement>>;
|
|
93
16
|
export declare const BreadcrumbsRoot: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>, BreadcrumbsList: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.OlHTMLAttributes<HTMLOListElement>, HTMLOListElement>, "ref"> & React.RefAttributes<HTMLOListElement>>, BreadcrumbsItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>, BreadcrumbsLink: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & React.RefAttributes<HTMLAnchorElement>>, BreadcrumbsSeparator: typeof BreadcrumbSeparator, BreadcrumbsCurrent: typeof BreadcrumbCurrent;
|
|
94
|
-
export
|
|
95
|
-
size?: import("./sizing.js").ComponentSize;
|
|
96
|
-
} & React.RefAttributes<HTMLDivElement>>;
|
|
97
|
-
export declare const TabsIndicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
|
|
98
|
-
size?: import("./sizing.js").ComponentSize;
|
|
99
|
-
} & React.RefAttributes<HTMLSpanElement>>, TabsList: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsListProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
100
|
-
size?: import("./sizing.js").ComponentSize;
|
|
101
|
-
} & React.RefAttributes<HTMLDivElement>>, TabsPanel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
102
|
-
size?: import("./sizing.js").ComponentSize;
|
|
103
|
-
} & React.RefAttributes<HTMLDivElement>>, TabsRoot: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
104
|
-
size?: import("./sizing.js").ComponentSize;
|
|
105
|
-
} & React.RefAttributes<HTMLDivElement>>, TabsTab: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsTabProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
|
|
106
|
-
size?: import("./sizing.js").ComponentSize;
|
|
107
|
-
} & React.RefAttributes<HTMLElement>>;
|
|
17
|
+
export {};
|
package/dist/navigation.js
CHANGED
|
@@ -1,84 +1,22 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import { useComponentSize } from './sizing.js';
|
|
5
|
-
import { Tabs as BaseTabs } from '@base-ui/react/tabs';
|
|
6
|
-
import { Accordion as BaseAccordion } from '@base-ui/react/accordion';
|
|
7
|
-
import { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible';
|
|
8
|
-
import { Avatar as BaseAvatar } from '@base-ui/react/avatar';
|
|
9
4
|
import { Separator as BaseSeparator } from '@base-ui/react/separator';
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Root: part(BaseTabs.Root, 'pui-tabs'),
|
|
14
|
-
List: part(BaseTabs.List, 'pui-tabs-list'),
|
|
15
|
-
Tab: part(BaseTabs.Tab, 'pui-tabs-tab'),
|
|
16
|
-
Panel: part(BaseTabs.Panel, 'pui-tabs-panel'),
|
|
17
|
-
Indicator: part(BaseTabs.Indicator, 'pui-tabs-indicator'),
|
|
18
|
-
};
|
|
19
|
-
function Chevron() {
|
|
20
|
-
return (_jsx("svg", { className: 'pui-disclosure-chevron', width: '16', height: '16', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.5', "aria-hidden": 'true', children: _jsx("path", { d: 'm9 6 6 6-6 6' }) }));
|
|
21
|
-
}
|
|
22
|
-
function AccordionRoot({ className, ...props }) {
|
|
23
|
-
return (_jsx(BaseAccordion.Root, { ...props, className: skin('pui-accordion', className) }));
|
|
24
|
-
}
|
|
25
|
-
const AccordionTrigger = React.forwardRef(function AccordionTrigger({ className, children, indicator, ...props }, ref) {
|
|
26
|
-
return (_jsxs(BaseAccordion.Trigger, { ...props, ref: ref, className: skin('pui-disclosure-trigger', className), children: [_jsx("span", { className: 'pui-disclosure-label', children: children }), indicator === undefined ? _jsx(Chevron, {}) : indicator] }));
|
|
27
|
-
});
|
|
28
|
-
const AccordionPanel = React.forwardRef(function AccordionPanel({ className, children, render, ...props }, ref) {
|
|
29
|
-
return (_jsx(BaseAccordion.Panel, { ...props, ref: ref, className: skin('pui-accordion-panel', className), render: render ??
|
|
30
|
-
((panelProps, state) => (_jsx("div", { ...panelProps, inert: state.transitionStatus === 'ending' || undefined, "aria-hidden": state.transitionStatus === 'ending' || undefined }))), children: _jsx("div", { className: 'pui-disclosure-body', children: children }) }));
|
|
31
|
-
});
|
|
32
|
-
export const Accordion = {
|
|
33
|
-
...BaseAccordion,
|
|
34
|
-
Root: AccordionRoot,
|
|
35
|
-
Item: part(BaseAccordion.Item, 'pui-accordion-item'),
|
|
36
|
-
Header: part(BaseAccordion.Header, 'pui-accordion-header'),
|
|
37
|
-
Trigger: AccordionTrigger,
|
|
38
|
-
Panel: AccordionPanel,
|
|
39
|
-
};
|
|
40
|
-
const CollapsibleTrigger = React.forwardRef(function CollapsibleTrigger({ className, children, indicator, ...props }, ref) {
|
|
41
|
-
return (_jsxs(BaseCollapsible.Trigger, { ...props, ref: ref, className: skin('pui-disclosure-trigger', className), children: [_jsx("span", { className: 'pui-disclosure-label', children: children }), indicator === undefined ? _jsx(Chevron, {}) : indicator] }));
|
|
42
|
-
});
|
|
43
|
-
const CollapsiblePanel = React.forwardRef(function CollapsiblePanel({ className, children, ...props }, ref) {
|
|
44
|
-
return (_jsx(BaseCollapsible.Panel, { ...props, ref: ref, className: skin('pui-collapsible-panel', className), children: _jsx("div", { className: 'pui-disclosure-body', children: children }) }));
|
|
45
|
-
});
|
|
46
|
-
export const Collapsible = {
|
|
47
|
-
...BaseCollapsible,
|
|
48
|
-
Root: part(BaseCollapsible.Root, 'pui-collapsible'),
|
|
49
|
-
Trigger: CollapsibleTrigger,
|
|
50
|
-
Panel: CollapsiblePanel,
|
|
51
|
-
};
|
|
52
|
-
const AvatarRoot = React.forwardRef(function AvatarRoot({ size, className, ...props }, ref) {
|
|
53
|
-
const scheme = useComponentSize(size);
|
|
54
|
-
return (_jsx(BaseAvatar.Root, { ...props, ref: ref, "data-size": size, "data-ui-size": scheme, className: skin('pui-avatar', className) }));
|
|
55
|
-
});
|
|
56
|
-
function Person() {
|
|
57
|
-
return (_jsxs("svg", { width: '18', height: '18', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.5', "aria-hidden": 'true', children: [_jsx("circle", { cx: '12', cy: '8', r: '4' }), _jsx("path", { d: 'M4 21v-2a8 8 0 0 1 16 0v2' })] }));
|
|
58
|
-
}
|
|
59
|
-
const AvatarFallback = React.forwardRef(function AvatarFallback({ children, className, ...props }, ref) {
|
|
60
|
-
return (_jsx(BaseAvatar.Fallback, { ...props, ref: ref, className: skin('pui-avatar-fallback', className), children: children ?? _jsx(Person, {}) }));
|
|
61
|
-
});
|
|
62
|
-
export const Avatar = {
|
|
63
|
-
...BaseAvatar,
|
|
64
|
-
Root: AvatarRoot,
|
|
65
|
-
Status: part('span', 'pui-avatar-status'),
|
|
66
|
-
Fallback: AvatarFallback,
|
|
67
|
-
Image: part(BaseAvatar.Image, 'pui-avatar-image'),
|
|
68
|
-
};
|
|
69
|
-
export const Separator = React.forwardRef(function Separator({ inset = false, className, ...props }, ref) {
|
|
5
|
+
import { Chevron } from './chevron.js';
|
|
6
|
+
import { skin } from './parts.js';
|
|
7
|
+
export const Separator = /* @__PURE__ */ React.forwardRef(function Separator({ inset = false, className, ...props }, ref) {
|
|
70
8
|
return (_jsx(BaseSeparator, { ...props, ref: ref, "data-inset": inset || undefined, className: skin('pui-separator', className) }));
|
|
71
9
|
});
|
|
72
|
-
export const Link = React.forwardRef(function Link({ className, ...props }, ref) {
|
|
10
|
+
export const Link = /* @__PURE__ */ React.forwardRef(function Link({ className, ...props }, ref) {
|
|
73
11
|
return (_jsx("a", { ...props, ref: ref, className: ['pui-link', className].filter(Boolean).join(' ') }));
|
|
74
12
|
});
|
|
75
|
-
const BreadcrumbRoot = React.forwardRef(function BreadcrumbRoot({ className, 'aria-label': label = 'Breadcrumb', ...props }, ref) {
|
|
13
|
+
const BreadcrumbRoot = /* @__PURE__ */ React.forwardRef(function BreadcrumbRoot({ className, 'aria-label': label = 'Breadcrumb', ...props }, ref) {
|
|
76
14
|
return (_jsx("nav", { ...props, ref: ref, "aria-label": label, className: ['pui-breadcrumbs', className].filter(Boolean).join(' ') }));
|
|
77
15
|
});
|
|
78
|
-
const BreadcrumbList = React.forwardRef(function BreadcrumbList({ className, role = 'list', ...props }, ref) {
|
|
16
|
+
const BreadcrumbList = /* @__PURE__ */ React.forwardRef(function BreadcrumbList({ className, role = 'list', ...props }, ref) {
|
|
79
17
|
return (_jsx("ol", { ...props, role: role, ref: ref, className: ['pui-breadcrumb-list', className].filter(Boolean).join(' ') }));
|
|
80
18
|
});
|
|
81
|
-
const BreadcrumbItem = React.forwardRef(function BreadcrumbItem({ className, ...props }, ref) {
|
|
19
|
+
const BreadcrumbItem = /* @__PURE__ */ React.forwardRef(function BreadcrumbItem({ className, ...props }, ref) {
|
|
82
20
|
return (_jsx("li", { ...props, ref: ref, className: ['pui-breadcrumb-item', className].filter(Boolean).join(' ') }));
|
|
83
21
|
});
|
|
84
22
|
function BreadcrumbSeparator({ className, ...props }) {
|
|
@@ -100,9 +38,4 @@ export const Breadcrumbs = {
|
|
|
100
38
|
Current: BreadcrumbCurrent,
|
|
101
39
|
};
|
|
102
40
|
// Flat names for React Server Components, which cannot dot into client exports.
|
|
103
|
-
export { AccordionPanel, AccordionRoot, AccordionTrigger, AvatarFallback, AvatarRoot, CollapsiblePanel, CollapsibleTrigger, };
|
|
104
|
-
export const { Header: AccordionHeader, Item: AccordionItem } = Accordion;
|
|
105
|
-
export const { Image: AvatarImage, Status: AvatarStatus } = Avatar;
|
|
106
41
|
export const { Root: BreadcrumbsRoot, List: BreadcrumbsList, Item: BreadcrumbsItem, Link: BreadcrumbsLink, Separator: BreadcrumbsSeparator, Current: BreadcrumbsCurrent, } = Breadcrumbs;
|
|
107
|
-
export const { Root: CollapsibleRoot } = Collapsible;
|
|
108
|
-
export const { Indicator: TabsIndicator, List: TabsList, Panel: TabsPanel, Root: TabsRoot, Tab: TabsTab, } = Tabs;
|
package/dist/otp-field.js
CHANGED
|
@@ -5,7 +5,7 @@ import { useRender } from '@base-ui/react/use-render';
|
|
|
5
5
|
import { OTPField as BaseOTPField } from '@base-ui/react/otp-field';
|
|
6
6
|
import { part, skin } from './parts.js';
|
|
7
7
|
import { useResetValue, useRootRef } from './form-state.js';
|
|
8
|
-
const Root = React.forwardRef(function Root({ value, defaultValue = '', form, onValueChange, className, ...props }, forwardedRef) {
|
|
8
|
+
const Root = /* @__PURE__ */ React.forwardRef(function Root({ value, defaultValue = '', form, onValueChange, className, ...props }, forwardedRef) {
|
|
9
9
|
const [element, ref] = useRootRef(forwardedRef);
|
|
10
10
|
const [local, setLocal, revision] = useResetValue(value, defaultValue, element, form);
|
|
11
11
|
return (_jsx(BaseOTPField.Root, { ...props, ref: ref, form: form, value: local, className: skin('pui-otp-field', className), onValueChange: (next, event) => {
|
|
@@ -14,7 +14,7 @@ const Root = React.forwardRef(function Root({ value, defaultValue = '', form, on
|
|
|
14
14
|
setLocal(next);
|
|
15
15
|
} }, revision));
|
|
16
16
|
});
|
|
17
|
-
const Separator = React.forwardRef(function Separator({ className, ...props }, ref) {
|
|
17
|
+
const Separator = /* @__PURE__ */ React.forwardRef(function Separator({ className, ...props }, ref) {
|
|
18
18
|
return (_jsx(BaseOTPField.Separator, { "aria-hidden": 'true', ...props, ref: ref, className: skin('pui-otp-separator', className) }));
|
|
19
19
|
});
|
|
20
20
|
// Preserve Base UI's DOM refs and user render composition while fixing native-validation ARIA.
|
|
@@ -32,14 +32,14 @@ function SlotElement({ domProps, state, render, }) {
|
|
|
32
32
|
},
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
const Input = React.forwardRef(function Input({ render, className, ...props }, ref) {
|
|
35
|
+
const Input = /* @__PURE__ */ React.forwardRef(function Input({ render, className, ...props }, ref) {
|
|
36
36
|
return (_jsx(BaseOTPField.Input, { ...props, ref: ref, className: skin('pui-input pui-otp-input', className), render: (domProps, state) => (_jsx(SlotElement, { domProps: domProps, state: state, render: render })) }));
|
|
37
37
|
});
|
|
38
38
|
export const OTPField = {
|
|
39
39
|
...BaseOTPField,
|
|
40
40
|
Root,
|
|
41
41
|
Input,
|
|
42
|
-
Group: part('div', 'pui-otp-group'),
|
|
42
|
+
Group: /* @__PURE__ */ part('div', 'pui-otp-group'),
|
|
43
43
|
Separator,
|
|
44
44
|
};
|
|
45
45
|
// Flat names for React Server Components, which cannot dot into client exports.
|
package/dist/pagination.js
CHANGED
|
@@ -5,7 +5,7 @@ import { Button } from './button.js';
|
|
|
5
5
|
function Chevron({ next = false }) {
|
|
6
6
|
return (_jsx("svg", { className: 'pui-pagination-arrow', width: '16', height: '16', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.6', "aria-hidden": 'true', children: _jsx("path", { d: next ? 'm9 6 6 6-6 6' : 'm15 6-6 6 6 6' }) }));
|
|
7
7
|
}
|
|
8
|
-
export const Pagination = React.forwardRef(function Pagination({ page, pageCount, siblings = 1, disabled = false, labels, getPageHref, onPageChange, className, 'aria-label': ariaLabel = 'Pagination', ...props }, ref) {
|
|
8
|
+
export const Pagination = /* @__PURE__ */ React.forwardRef(function Pagination({ page, pageCount, siblings = 1, disabled = false, labels, getPageHref, onPageChange, className, 'aria-label': ariaLabel = 'Pagination', ...props }, ref) {
|
|
9
9
|
const count = Number.isFinite(pageCount)
|
|
10
10
|
? Math.min(Number.MAX_SAFE_INTEGER, Math.max(0, Math.floor(pageCount)))
|
|
11
11
|
: 0;
|
package/dist/panels.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from 'react';
|
|
4
|
+
import { skin } from './parts.js';
|
|
4
5
|
import { useComponentSize, normalizeSize, } from './sizing.js';
|
|
5
6
|
import { Dialog as BaseDialog } from '@base-ui/react/dialog';
|
|
6
7
|
import { Drawer as BaseDrawer } from '@base-ui/react/drawer';
|
|
7
|
-
const SheetSide = React.createContext({
|
|
8
|
+
const SheetSide = /* @__PURE__ */ React.createContext({
|
|
8
9
|
side: 'right',
|
|
9
10
|
modal: true,
|
|
10
11
|
});
|
|
11
|
-
const DrawerSide = React.createContext({
|
|
12
|
+
const DrawerSide = /* @__PURE__ */ React.createContext({
|
|
12
13
|
side: 'bottom',
|
|
13
14
|
modal: true,
|
|
14
15
|
});
|
|
@@ -28,10 +29,10 @@ function DrawerRoot({ side = 'bottom', modal = true, ...props }) {
|
|
|
28
29
|
};
|
|
29
30
|
return (_jsx(DrawerSide.Provider, { value: { side, modal }, children: _jsx(BaseDrawer.Root, { ...props, modal: modal, swipeDirection: direction[side] }) }));
|
|
30
31
|
}
|
|
31
|
-
const SheetContent = React.forwardRef(function SheetContent({ size, closeLabel = 'Close panel', className, children, ...props }, ref) {
|
|
32
|
+
const SheetContent = /* @__PURE__ */ React.forwardRef(function SheetContent({ size, closeLabel = 'Close panel', className, children, ...props }, ref) {
|
|
32
33
|
const scheme = useComponentSize(size);
|
|
33
34
|
const { side, modal } = React.useContext(SheetSide);
|
|
34
|
-
return (_jsx(BaseDialog.Portal, { children: _jsxs("div", { className: 'pui-panel-layer', "data-ui-size": scheme, children: [modal === true && (_jsx(BaseDialog.Backdrop, { className: 'pui-panel-backdrop' })), _jsx("div", { className: 'pui-panel-viewport', "data-side": side, children: _jsxs(BaseDialog.Popup, { ...props, ref: ref, className:
|
|
35
|
+
return (_jsx(BaseDialog.Portal, { children: _jsxs("div", { className: 'pui-panel-layer', "data-ui-size": scheme, children: [modal === true && (_jsx(BaseDialog.Backdrop, { className: 'pui-panel-backdrop' })), _jsx("div", { className: 'pui-panel-viewport', "data-side": side, children: _jsxs(BaseDialog.Popup, { ...props, ref: ref, className: skin('pui-panel', className), "data-side": side, "data-size": size
|
|
35
36
|
? normalizeSize(size) === 'small'
|
|
36
37
|
? 'sm'
|
|
37
38
|
: normalizeSize(size) === 'large'
|
|
@@ -39,11 +40,11 @@ const SheetContent = React.forwardRef(function SheetContent({ size, closeLabel =
|
|
|
39
40
|
: 'md'
|
|
40
41
|
: 'md', children: [_jsx(BaseDialog.Close, { className: 'pui-panel-close pui-icon-button', "aria-label": closeLabel, children: _jsx(CloseIcon, {}) }), children] }) })] }) }));
|
|
41
42
|
});
|
|
42
|
-
const DrawerContent = React.forwardRef(function DrawerContent({ size, closeLabel = 'Close panel', className, children, ...props }, ref) {
|
|
43
|
+
const DrawerContent = /* @__PURE__ */ React.forwardRef(function DrawerContent({ size, closeLabel = 'Close panel', className, children, ...props }, ref) {
|
|
43
44
|
const scheme = useComponentSize(size);
|
|
44
45
|
const { side, modal } = React.useContext(DrawerSide);
|
|
45
46
|
const KeyboardProvider = side === 'bottom' ? BaseDrawer.VirtualKeyboardProvider : React.Fragment;
|
|
46
|
-
return (_jsx(KeyboardProvider, { children: _jsx(BaseDrawer.Portal, { children: _jsxs("div", { className: 'pui-panel-layer', "data-ui-size": scheme, children: [modal === true && (_jsx(BaseDrawer.Backdrop, { className: 'pui-panel-backdrop' })), _jsx(BaseDrawer.Viewport, { className: 'pui-panel-viewport', "data-side": side, children: _jsxs(BaseDrawer.Popup, { ...props, ref: ref, className:
|
|
47
|
+
return (_jsx(KeyboardProvider, { children: _jsx(BaseDrawer.Portal, { children: _jsxs("div", { className: 'pui-panel-layer', "data-ui-size": scheme, children: [modal === true && (_jsx(BaseDrawer.Backdrop, { className: 'pui-panel-backdrop' })), _jsx(BaseDrawer.Viewport, { className: 'pui-panel-viewport', "data-side": side, children: _jsxs(BaseDrawer.Popup, { ...props, ref: ref, className: skin('pui-panel pui-drawer', className), "data-side": side, "data-size": size
|
|
47
48
|
? normalizeSize(size) === 'small'
|
|
48
49
|
? 'sm'
|
|
49
50
|
: normalizeSize(size) === 'large'
|
|
@@ -54,23 +55,23 @@ const DrawerContent = React.forwardRef(function DrawerContent({ size, closeLabel
|
|
|
54
55
|
function Header({ className, ...props }) {
|
|
55
56
|
return _jsx("div", { ...props, className: cx('pui-panel-header', className) });
|
|
56
57
|
}
|
|
57
|
-
const Body = React.forwardRef(function Body({ className, ...props }, ref) {
|
|
58
|
+
const Body = /* @__PURE__ */ React.forwardRef(function Body({ className, ...props }, ref) {
|
|
58
59
|
return (_jsx("div", { ...props, ref: ref, className: cx('pui-panel-body', className) }));
|
|
59
60
|
});
|
|
60
61
|
function Footer({ className, ...props }) {
|
|
61
62
|
return _jsx("div", { ...props, className: cx('pui-panel-footer', className) });
|
|
62
63
|
}
|
|
63
64
|
function SheetTitle({ className, ...props }) {
|
|
64
|
-
return (_jsx(BaseDialog.Title, { ...props, className:
|
|
65
|
+
return (_jsx(BaseDialog.Title, { ...props, className: skin('pui-panel-title', className) }));
|
|
65
66
|
}
|
|
66
67
|
function SheetDescription({ className, ...props }) {
|
|
67
|
-
return (_jsx(BaseDialog.Description, { ...props, className:
|
|
68
|
+
return (_jsx(BaseDialog.Description, { ...props, className: skin('pui-panel-description', className) }));
|
|
68
69
|
}
|
|
69
70
|
function DrawerTitle({ className, ...props }) {
|
|
70
|
-
return (_jsx(BaseDrawer.Title, { ...props, className:
|
|
71
|
+
return (_jsx(BaseDrawer.Title, { ...props, className: skin('pui-panel-title', className) }));
|
|
71
72
|
}
|
|
72
73
|
function DrawerDescription({ className, ...props }) {
|
|
73
|
-
return (_jsx(BaseDrawer.Description, { ...props, className:
|
|
74
|
+
return (_jsx(BaseDrawer.Description, { ...props, className: skin('pui-panel-description', className) }));
|
|
74
75
|
}
|
|
75
76
|
export const Sheet = {
|
|
76
77
|
...BaseDialog,
|
package/dist/parts.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { type ComponentSize } from './sizing.js';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
/** The data-size value: a short alias (sm, md, lg) renders as its full name, so both
|
|
4
|
+
* spellings meet the same CSS; other values such as xs or icon pass through. */
|
|
5
|
+
export declare function sizeName<Size extends string>(size?: Size): ComponentSize | Size | undefined;
|
|
3
6
|
/** Preserve Base UI's state-dependent className contract when adding a skin. */
|
|
4
7
|
export declare function skin<State>(base: string, custom?: string | ((state: State) => string | undefined)): string | ((state: State) => string);
|
|
5
8
|
export declare function part<Element extends HTMLElement, Props extends {
|
package/dist/parts.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { ComponentSizeContext, useComponentSize, } from './sizing.js';
|
|
2
|
+
import { ComponentSizeContext, normalizeSize, useComponentSize, } from './sizing.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
+
/** The data-size value: a short alias (sm, md, lg) renders as its full name, so both
|
|
5
|
+
* spellings meet the same CSS; other values such as xs or icon pass through. */
|
|
6
|
+
export function sizeName(size) {
|
|
7
|
+
return size === 'sm' || size === 'md' || size === 'lg'
|
|
8
|
+
? normalizeSize(size)
|
|
9
|
+
: size;
|
|
10
|
+
}
|
|
4
11
|
/** Preserve Base UI's state-dependent className contract when adding a skin. */
|
|
5
12
|
export function skin(base, custom) {
|
|
6
13
|
if (typeof custom === 'function')
|
package/dist/popover.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { skin } from './parts.js';
|
|
3
4
|
import { useComponentSize } from './sizing.js';
|
|
4
5
|
import { Popover as BasePopover } from '@base-ui/react/popover';
|
|
5
|
-
const cx = (...v) => v.filter(Boolean).join(' ');
|
|
6
6
|
function PopoverContent({ side = 'bottom', align = 'start', sideOffset = 8, collisionPadding = 12, className, ...props }) {
|
|
7
7
|
const scheme = useComponentSize();
|
|
8
|
-
return (_jsx(BasePopover.Positioner, { side: side, align: align, sideOffset: sideOffset, collisionPadding: collisionPadding, className: 'pui-positioner', children: _jsx(BasePopover.Popup, { "data-ui-size": scheme, ...props, className:
|
|
8
|
+
return (_jsx(BasePopover.Positioner, { side: side, align: align, sideOffset: sideOffset, collisionPadding: collisionPadding, className: 'pui-positioner', children: _jsx(BasePopover.Popup, { "data-ui-size": scheme, ...props, className: skin('pui-popover', className) }) }));
|
|
9
9
|
}
|
|
10
10
|
export const Popover = { ...BasePopover, Content: PopoverContent };
|
|
11
11
|
// Flat names for React Server Components, which cannot dot into client exports.
|
package/dist/scroll-area.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area';
|
|
5
|
-
export const ScrollArea = React.forwardRef(function ScrollArea({ label, orientation = 'horizontal', scrollChain = 'auto', style, rootClassName, rootStyle, tabIndex = label ? 0 : undefined, role = label ? 'region' : undefined, className, children, ...props }, ref) {
|
|
5
|
+
export const ScrollArea = /* @__PURE__ */ React.forwardRef(function ScrollArea({ label, orientation = 'horizontal', scrollChain = 'auto', style, rootClassName, rootStyle, tabIndex = label ? 0 : undefined, role = label ? 'region' : undefined, className, children, ...props }, ref) {
|
|
6
6
|
const dragPointer = React.useRef(null);
|
|
7
7
|
const clearDrag = (event) => {
|
|
8
8
|
if (dragPointer.current !== event.pointerId)
|
package/dist/select.js
CHANGED
|
@@ -3,6 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { useComponentSize } from './sizing.js';
|
|
5
5
|
import { Select as BaseSelect } from '@base-ui/react/select';
|
|
6
|
+
import { sizeName } from './parts.js';
|
|
6
7
|
const cx = (...v) => v.filter(Boolean).join(' ');
|
|
7
8
|
function Chevron() {
|
|
8
9
|
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' }) }));
|
|
@@ -40,7 +41,7 @@ export function Select({ options, value, defaultValue, onValueChange, className,
|
|
|
40
41
|
}, [initialValue, props.form]);
|
|
41
42
|
const selected = value ?? localValue;
|
|
42
43
|
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
|
+
return (_jsx("span", { className: cx('pui-select control-shell select-control', className), "data-size": sizeName(size), "data-ui-size": scheme, "data-disabled": disabled || undefined, children: _jsxs(BaseSelect.Root, { items: options, value: selected, onValueChange: (v) => {
|
|
44
45
|
setLocalValue(v ?? '');
|
|
45
46
|
onValueChange?.(v ?? '');
|
|
46
47
|
}, inputRef: (node) => {
|
|
@@ -70,7 +71,7 @@ function optionList(children) {
|
|
|
70
71
|
});
|
|
71
72
|
}
|
|
72
73
|
/** Transitional HTML-option adapter. Submitted values use Base UI's native hidden input. */
|
|
73
|
-
export const NativeSelect = React.forwardRef(function NativeSelect({ children, onChange, value, defaultValue, className, size, ...props }, ref) {
|
|
74
|
+
export const NativeSelect = /* @__PURE__ */ React.forwardRef(function NativeSelect({ children, onChange, value, defaultValue, className, size, ...props }, ref) {
|
|
74
75
|
const input = React.useRef(null);
|
|
75
76
|
const options = optionList(children);
|
|
76
77
|
return (_jsx(Select, { options: options, value: value === undefined ? undefined : String(value), defaultValue: defaultValue === undefined ? undefined : String(defaultValue), className: className, size: size, inputRef: input, triggerRef: ref, name: props.name, form: props.form, disabled: props.disabled, required: props.required, id: props.id, "aria-label": props['aria-label'], "aria-labelledby": props['aria-labelledby'], "aria-describedby": props['aria-describedby'], "aria-invalid": props['aria-invalid'], onValueChange: (next) => {
|
package/dist/sizing.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
export const ComponentSizeContext = React.createContext(undefined);
|
|
4
|
+
export const ComponentSizeContext = /* @__PURE__ */ React.createContext(undefined);
|
|
5
5
|
export function normalizeSize(size) {
|
|
6
6
|
return size === 'sm'
|
|
7
7
|
? 'small'
|
package/dist/status.js
CHANGED
|
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { useComponentSize } from './sizing.js';
|
|
5
5
|
import { useToneTransition } from './tone-transition.js';
|
|
6
|
-
export const Badge = React.forwardRef(function Badge({ tone = 'neutral', icon, children, className, size, ...props }, ref) {
|
|
6
|
+
export const Badge = /* @__PURE__ */ React.forwardRef(function Badge({ tone = 'neutral', icon, children, className, size, ...props }, ref) {
|
|
7
7
|
const scheme = useComponentSize(size);
|
|
8
8
|
const elementRef = useToneTransition(tone, ref);
|
|
9
9
|
return (_jsxs("span", { ...props, ref: elementRef, className: ['pui-badge', className].filter(Boolean).join(' '), "data-tone": tone, "data-ui-size": scheme, children: [icon && (_jsx("span", { className: 'pui-badge-icon', "aria-hidden": 'true', children: icon })), children] }));
|
|
@@ -12,6 +12,6 @@ export function StatusIcon({ tone }) {
|
|
|
12
12
|
return (_jsx("svg", { width: '13', height: '13', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '1.7', "aria-hidden": 'true', children: tone === 'success' ? (_jsx("path", { d: 'm5 12 4 4L19 6' })) : tone === 'caution' ? (_jsxs(_Fragment, { children: [_jsx("path", { d: 'm12 3 10 18H2L12 3Z' }), _jsx("path", { d: 'M12 9v4m0 3v1' })] })) : tone === 'danger' ? (_jsxs(_Fragment, { children: [_jsx("circle", { cx: '12', cy: '12', r: '9' }), _jsx("path", { d: 'M12 7v6m0 3v1' })] })) : tone === 'progress' ? (_jsxs(_Fragment, { children: [_jsx("circle", { cx: '12', cy: '12', r: '9' }), _jsx("path", { d: 'M12 7v6l4 2' })] })) : (_jsxs(_Fragment, { children: [_jsx("circle", { cx: '12', cy: '12', r: '9' }), _jsx("path", { d: 'M8 12h8' })] })) }));
|
|
13
13
|
}
|
|
14
14
|
/** Domain status labels and live announcements remain the caller's responsibility. */
|
|
15
|
-
export const StatusBadge = React.forwardRef(function StatusBadge({ tone = 'neutral', icon, ...props }, ref) {
|
|
15
|
+
export const StatusBadge = /* @__PURE__ */ React.forwardRef(function StatusBadge({ tone = 'neutral', icon, ...props }, ref) {
|
|
16
16
|
return (_jsx(Badge, { ...props, ref: ref, tone: tone, icon: icon === undefined ? _jsx(StatusIcon, { tone: tone }) : icon }));
|
|
17
17
|
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { SyntaxToken } from './syntax-engine.js';
|
|
3
|
+
export type SyntaxEngine = {
|
|
4
|
+
highlightCode(code: string, language: string): Promise<SyntaxToken[][] | null>;
|
|
5
|
+
};
|
|
6
|
+
/** Loads the highlighting engine. Without a provider, code renders as plain text. */
|
|
7
|
+
export declare const SyntaxEngineContext: React.Context<(() => Promise<SyntaxEngine>) | null>;
|
|
@@ -7,7 +7,10 @@ export type SyntaxHighlighterProps = Omit<React.ComponentPropsWithoutRef<'code'>
|
|
|
7
7
|
label?: string;
|
|
8
8
|
wrap?: boolean;
|
|
9
9
|
};
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Rendering remains selectable React text; it never inserts executable HTML. Tokens are
|
|
12
|
+
* colored inside a SyntaxHighlighting provider; without one, the code renders plain.
|
|
13
|
+
*/
|
|
11
14
|
export declare const SyntaxHighlighter: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref">, "children"> & {
|
|
12
15
|
code: string;
|
|
13
16
|
language?: string;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { ScrollArea } from './scroll-area.js';
|
|
5
|
+
import { SyntaxEngineContext } from './syntax-context.js';
|
|
5
6
|
export const syntaxLanguages = [
|
|
6
7
|
'tsx',
|
|
7
8
|
'jsx',
|
|
@@ -29,18 +30,23 @@ const aliases = {
|
|
|
29
30
|
plaintext: 'text',
|
|
30
31
|
txt: 'text',
|
|
31
32
|
};
|
|
32
|
-
/**
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Rendering remains selectable React text; it never inserts executable HTML. Tokens are
|
|
35
|
+
* colored inside a SyntaxHighlighting provider; without one, the code renders plain.
|
|
36
|
+
*/
|
|
37
|
+
export const SyntaxHighlighter = /* @__PURE__ */ React.forwardRef(function SyntaxHighlighter({ code, language = 'text', inline = false, label = 'Highlighted source', wrap = false, className, ...props }, ref) {
|
|
38
|
+
const load = React.useContext(SyntaxEngineContext);
|
|
34
39
|
const name = language.trim().toLowerCase();
|
|
35
40
|
const lang = aliases[name] ?? name;
|
|
36
41
|
const [result, setResult] = React.useState();
|
|
37
42
|
React.useEffect(() => {
|
|
38
43
|
let current = true;
|
|
39
|
-
if (
|
|
44
|
+
if (!load ||
|
|
45
|
+
lang === 'text' ||
|
|
40
46
|
!syntaxLanguages.includes(lang) ||
|
|
41
47
|
code.length > 50000)
|
|
42
48
|
return;
|
|
43
|
-
|
|
49
|
+
load()
|
|
44
50
|
.then((engine) => engine.highlightCode(code, lang))
|
|
45
51
|
.then((tokens) => {
|
|
46
52
|
if (current)
|
|
@@ -53,7 +59,7 @@ export const SyntaxHighlighter = React.forwardRef(function SyntaxHighlighter({ c
|
|
|
53
59
|
return () => {
|
|
54
60
|
current = false;
|
|
55
61
|
};
|
|
56
|
-
}, [code, lang]);
|
|
62
|
+
}, [code, lang, load]);
|
|
57
63
|
const tokens = result?.code === code && result.language === lang ? result.tokens : null;
|
|
58
64
|
const eols = code.match(/\r\n|\n|\r/g) ?? [];
|
|
59
65
|
const valid = tokens && tokens.length === eols.length + 1;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Turns on syntax highlighting for CodeBlock, SyntaxHighlighter and Markdown inside it.
|
|
4
|
+
* Requires the optional `shiki` package; without this provider, code renders as plain text.
|
|
5
|
+
*/
|
|
6
|
+
export declare function SyntaxHighlighting({ children, }: {
|
|
7
|
+
children?: React.ReactNode;
|
|
8
|
+
}): React.JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { SyntaxEngineContext } from './syntax-context.js';
|
|
4
|
+
// The engine and each grammar load on first use, in their own chunks.
|
|
5
|
+
const load = () => import('./syntax-engine.js');
|
|
6
|
+
/**
|
|
7
|
+
* Turns on syntax highlighting for CodeBlock, SyntaxHighlighter and Markdown inside it.
|
|
8
|
+
* Requires the optional `shiki` package; without this provider, code renders as plain text.
|
|
9
|
+
*/
|
|
10
|
+
export function SyntaxHighlighting({ children, }) {
|
|
11
|
+
return (_jsx(SyntaxEngineContext.Provider, { value: load, children: children }));
|
|
12
|
+
}
|
package/dist/tabs.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const Tabs: {
|
|
3
|
+
Root: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
4
|
+
size?: import("./sizing.js").ComponentSize;
|
|
5
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
List: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsListProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
7
|
+
size?: import("./sizing.js").ComponentSize;
|
|
8
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
Tab: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsTabProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
|
|
10
|
+
size?: import("./sizing.js").ComponentSize;
|
|
11
|
+
} & React.RefAttributes<HTMLElement>>;
|
|
12
|
+
Panel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
13
|
+
size?: import("./sizing.js").ComponentSize;
|
|
14
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
15
|
+
Indicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
|
|
16
|
+
size?: import("./sizing.js").ComponentSize;
|
|
17
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
|
18
|
+
};
|
|
19
|
+
export declare const TabsIndicator: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsIndicatorProps, "ref"> & React.RefAttributes<HTMLSpanElement>, "ref">, "size"> & {
|
|
20
|
+
size?: import("./sizing.js").ComponentSize;
|
|
21
|
+
} & React.RefAttributes<HTMLSpanElement>>, TabsList: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsListProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
22
|
+
size?: import("./sizing.js").ComponentSize;
|
|
23
|
+
} & React.RefAttributes<HTMLDivElement>>, TabsPanel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
24
|
+
size?: import("./sizing.js").ComponentSize;
|
|
25
|
+
} & React.RefAttributes<HTMLDivElement>>, TabsRoot: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref">, "size"> & {
|
|
26
|
+
size?: import("./sizing.js").ComponentSize;
|
|
27
|
+
} & React.RefAttributes<HTMLDivElement>>, TabsTab: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@base-ui/react/tabs").TabsTabProps, "ref"> & React.RefAttributes<HTMLElement>, "ref">, "size"> & {
|
|
28
|
+
size?: import("./sizing.js").ComponentSize;
|
|
29
|
+
} & React.RefAttributes<HTMLElement>>;
|
package/dist/tabs.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { Tabs as BaseTabs } from '@base-ui/react/tabs';
|
|
3
|
+
import { part } from './parts.js';
|
|
4
|
+
export const Tabs = {
|
|
5
|
+
...BaseTabs,
|
|
6
|
+
Root: /* @__PURE__ */ part(BaseTabs.Root, 'pui-tabs'),
|
|
7
|
+
List: /* @__PURE__ */ part(BaseTabs.List, 'pui-tabs-list'),
|
|
8
|
+
Tab: /* @__PURE__ */ part(BaseTabs.Tab, 'pui-tabs-tab'),
|
|
9
|
+
Panel: /* @__PURE__ */ part(BaseTabs.Panel, 'pui-tabs-panel'),
|
|
10
|
+
Indicator: /* @__PURE__ */ part(BaseTabs.Indicator, 'pui-tabs-indicator'),
|
|
11
|
+
};
|
|
12
|
+
// Flat names for React Server Components, which cannot dot into client exports.
|
|
13
|
+
export const { Indicator: TabsIndicator, List: TabsList, Panel: TabsPanel, Root: TabsRoot, Tab: TabsTab, } = Tabs;
|