@wallarm-org/design-system 0.43.0 → 0.44.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/dist/components/AppShell/story-content/_storyConfigRenderer.d.ts +7 -0
- package/dist/components/AppShell/story-content/_storyConfigRenderer.js +46 -0
- package/dist/components/AppShell/story-content/_storyHomeContent.d.ts +2 -0
- package/dist/components/AppShell/story-content/_storyHomeContent.js +15 -0
- package/dist/components/AppShell/story-content/_storyNavConfigs.d.ts +6 -0
- package/dist/components/AppShell/story-content/_storyNavConfigs.js +693 -0
- package/dist/components/AppShell/story-content/index.d.ts +3 -0
- package/dist/components/AppShell/story-content/index.js +4 -0
- package/dist/components/Breadcrumbs/BreadcrumbsItem.js +2 -1
- package/dist/components/Breadcrumbs/BreadcrumbsScopeSwitcher.d.ts +18 -0
- package/dist/components/Breadcrumbs/BreadcrumbsScopeSwitcher.js +60 -0
- package/dist/components/Breadcrumbs/index.d.ts +1 -0
- package/dist/components/Breadcrumbs/index.js +2 -1
- package/dist/components/NavPanel/NavPanel.d.ts +8 -0
- package/dist/components/NavPanel/NavPanel.js +93 -0
- package/dist/components/NavPanel/NavPanelBack.d.ts +6 -0
- package/dist/components/NavPanel/NavPanelBack.js +31 -0
- package/dist/components/NavPanel/NavPanelContext.d.ts +12 -0
- package/dist/components/NavPanel/NavPanelContext.js +9 -0
- package/dist/components/NavPanel/NavPanelDivider.d.ts +3 -0
- package/dist/components/NavPanel/NavPanelDivider.js +10 -0
- package/dist/components/NavPanel/NavPanelGroup.d.ts +18 -0
- package/dist/components/NavPanel/NavPanelGroup.js +49 -0
- package/dist/components/NavPanel/NavPanelGroupContent.d.ts +6 -0
- package/dist/components/NavPanel/NavPanelGroupContent.js +36 -0
- package/dist/components/NavPanel/NavPanelGroupItem.d.ts +10 -0
- package/dist/components/NavPanel/NavPanelGroupItem.js +40 -0
- package/dist/components/NavPanel/NavPanelGroupLabel.d.ts +8 -0
- package/dist/components/NavPanel/NavPanelGroupLabel.js +48 -0
- package/dist/components/NavPanel/NavPanelHeader.d.ts +6 -0
- package/dist/components/NavPanel/NavPanelHeader.js +21 -0
- package/dist/components/NavPanel/NavPanelItem.d.ts +10 -0
- package/dist/components/NavPanel/NavPanelItem.js +35 -0
- package/dist/components/NavPanel/NavPanelResizeHandle.d.ts +2 -0
- package/dist/components/NavPanel/NavPanelResizeHandle.js +81 -0
- package/dist/components/NavPanel/NavPanelSectionHeader.d.ts +6 -0
- package/dist/components/NavPanel/NavPanelSectionHeader.js +22 -0
- package/dist/components/NavPanel/classes.d.ts +6 -0
- package/dist/components/NavPanel/classes.js +24 -0
- package/dist/components/NavPanel/index.d.ts +10 -0
- package/dist/components/NavPanel/index.js +11 -0
- package/dist/components/NavRail/NavRail.js +33 -2
- package/dist/components/NavRail/NavRailItem.js +10 -3
- package/dist/components/NavRail/classes.js +2 -2
- package/dist/components/NavRail/useShortcut.d.ts +2 -0
- package/dist/components/NavRail/useShortcut.js +44 -0
- package/dist/components/ProductNav/ProductNav.d.ts +13 -0
- package/dist/components/ProductNav/ProductNav.js +100 -0
- package/dist/components/ProductNav/ProductNavBreadcrumbs.d.ts +2 -0
- package/dist/components/ProductNav/ProductNavBreadcrumbs.js +38 -0
- package/dist/components/ProductNav/ProductNavContext.d.ts +22 -0
- package/dist/components/ProductNav/ProductNavContext.js +9 -0
- package/dist/components/ProductNav/ProductNavPanel.d.ts +6 -0
- package/dist/components/ProductNav/ProductNavPanel.js +82 -0
- package/dist/components/ProductNav/index.d.ts +10 -0
- package/dist/components/ProductNav/index.js +9 -0
- package/dist/components/ProductNav/matchNav.d.ts +16 -0
- package/dist/components/ProductNav/matchNav.js +108 -0
- package/dist/components/ProductNav/navUtils.d.ts +5 -0
- package/dist/components/ProductNav/navUtils.js +26 -0
- package/dist/components/ProductNav/types.d.ts +69 -0
- package/dist/components/ProductNav/types.js +0 -0
- package/dist/components/ProductNav/useLocationPathname.d.ts +4 -0
- package/dist/components/ProductNav/useLocationPathname.js +24 -0
- package/dist/components/ProductNav/useProductNav.d.ts +16 -0
- package/dist/components/ProductNav/useProductNav.js +19 -0
- package/dist/components/RemoteShell/RemoteShell.d.ts +7 -0
- package/dist/components/RemoteShell/RemoteShell.js +16 -0
- package/dist/components/RemoteShell/RemoteShellBreadcrumb.d.ts +6 -0
- package/dist/components/RemoteShell/RemoteShellBreadcrumb.js +16 -0
- package/dist/components/RemoteShell/RemoteShellContent.d.ts +6 -0
- package/dist/components/RemoteShell/RemoteShellContent.js +16 -0
- package/dist/components/RemoteShell/RemoteShellPanel.d.ts +6 -0
- package/dist/components/RemoteShell/RemoteShellPanel.js +16 -0
- package/dist/components/RemoteShell/index.d.ts +4 -0
- package/dist/components/RemoteShell/index.js +5 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +2 -1
- package/dist/hooks/useArrowNav.d.ts +7 -0
- package/dist/hooks/useArrowNav.js +98 -0
- package/dist/icons/ChevronUpDown.d.ts +3 -0
- package/dist/icons/ChevronUpDown.js +12 -0
- package/dist/icons/MapPin.d.ts +3 -0
- package/dist/icons/MapPin.js +12 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/icons/index.js +3 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -1
- package/dist/metadata/components.json +4829 -682
- package/package.json +1 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
const findMatchingNode = (items, segment, groupPath = [])=>{
|
|
2
|
+
for (const item of items)if ('section-header' !== item.type) {
|
|
3
|
+
if ('group' === item.type) {
|
|
4
|
+
const found = findMatchingNode(item.children, segment, [
|
|
5
|
+
...groupPath,
|
|
6
|
+
item
|
|
7
|
+
]);
|
|
8
|
+
if (found) return found;
|
|
9
|
+
} else if (item.path === segment) return {
|
|
10
|
+
node: item,
|
|
11
|
+
groupPath
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
};
|
|
16
|
+
const matchNav = (pathname, config)=>{
|
|
17
|
+
const segments = pathname.replace(/^\/+|\/+$/g, '').split('/').filter(Boolean);
|
|
18
|
+
const navStack = [];
|
|
19
|
+
const breadcrumbSegments = [];
|
|
20
|
+
let activeItemId = null;
|
|
21
|
+
const rootEntry = {
|
|
22
|
+
title: config.productLabel,
|
|
23
|
+
parentLabel: null,
|
|
24
|
+
items: config.items,
|
|
25
|
+
activeItemId: null
|
|
26
|
+
};
|
|
27
|
+
navStack.push(rootEntry);
|
|
28
|
+
breadcrumbSegments.push({
|
|
29
|
+
type: 'link',
|
|
30
|
+
label: config.productLabel,
|
|
31
|
+
href: '/'
|
|
32
|
+
});
|
|
33
|
+
let segmentIndex = 0;
|
|
34
|
+
let currentItems = config.items;
|
|
35
|
+
let currentStackEntry = rootEntry;
|
|
36
|
+
while(segmentIndex < segments.length){
|
|
37
|
+
const seg = segments[segmentIndex];
|
|
38
|
+
const result = findMatchingNode(currentItems, seg);
|
|
39
|
+
if (!result) break;
|
|
40
|
+
const { node: match, groupPath } = result;
|
|
41
|
+
if ('link' === match.type) {
|
|
42
|
+
currentStackEntry.activeItemId = match.id;
|
|
43
|
+
activeItemId = match.id;
|
|
44
|
+
segmentIndex++;
|
|
45
|
+
for (const group of groupPath)breadcrumbSegments.push({
|
|
46
|
+
type: 'static',
|
|
47
|
+
label: group.label
|
|
48
|
+
});
|
|
49
|
+
breadcrumbSegments.push({
|
|
50
|
+
type: 'static',
|
|
51
|
+
label: match.label
|
|
52
|
+
});
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
if ('drill' === match.type) {
|
|
56
|
+
currentStackEntry.activeItemId = match.id;
|
|
57
|
+
segmentIndex++;
|
|
58
|
+
if (segmentIndex >= segments.length) {
|
|
59
|
+
activeItemId = match.id;
|
|
60
|
+
breadcrumbSegments.push({
|
|
61
|
+
type: 'static',
|
|
62
|
+
label: match.label
|
|
63
|
+
});
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
const paramValue = segments[segmentIndex];
|
|
67
|
+
segmentIndex++;
|
|
68
|
+
const matchedEntity = match.entities?.find((e)=>e.id === paramValue);
|
|
69
|
+
const entityLabel = matchedEntity?.label ?? paramValue;
|
|
70
|
+
const childPath = segments.slice(segmentIndex).join('/');
|
|
71
|
+
const scopeItems = match.entities?.map((e)=>({
|
|
72
|
+
id: e.id,
|
|
73
|
+
label: e.label,
|
|
74
|
+
description: e.description,
|
|
75
|
+
href: childPath ? `/${match.path}/${e.id}/${childPath}` : `/${match.path}/${e.id}`
|
|
76
|
+
}));
|
|
77
|
+
breadcrumbSegments.push({
|
|
78
|
+
type: 'scope-switcher',
|
|
79
|
+
label: entityLabel,
|
|
80
|
+
href: `/${segments.slice(0, segmentIndex).join('/')}`,
|
|
81
|
+
paramValue,
|
|
82
|
+
scopeItems
|
|
83
|
+
});
|
|
84
|
+
const drillEntry = {
|
|
85
|
+
title: entityLabel,
|
|
86
|
+
parentLabel: currentStackEntry.title,
|
|
87
|
+
items: match.children,
|
|
88
|
+
activeItemId: null
|
|
89
|
+
};
|
|
90
|
+
navStack.push(drillEntry);
|
|
91
|
+
currentItems = match.children;
|
|
92
|
+
currentStackEntry = drillEntry;
|
|
93
|
+
if (segmentIndex >= segments.length) {
|
|
94
|
+
activeItemId = null;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const lastEntry = navStack[navStack.length - 1];
|
|
101
|
+
if (null === activeItemId && lastEntry) activeItemId = lastEntry.activeItemId;
|
|
102
|
+
return {
|
|
103
|
+
navStack,
|
|
104
|
+
breadcrumbSegments,
|
|
105
|
+
activeItemId
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
export { matchNav };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NavConfigDrill, NavConfigNode } from './types';
|
|
2
|
+
/** Find the first link path in a config tree (used as default pathname) */
|
|
3
|
+
export declare function findFirstLinkPath(items: NavConfigNode[]): string | null;
|
|
4
|
+
/** Find a drill node by ID in a potentially nested item list */
|
|
5
|
+
export declare function findDrillNode(items: NavConfigNode[], id: string | null): NavConfigDrill | null;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
function findFirstLinkPath(items) {
|
|
2
|
+
for (const item of items){
|
|
3
|
+
if ('link' === item.type) return item.path;
|
|
4
|
+
if ('group' === item.type) {
|
|
5
|
+
const found = findFirstLinkPath(item.children);
|
|
6
|
+
if (found) return found;
|
|
7
|
+
}
|
|
8
|
+
if ('drill' === item.type) {
|
|
9
|
+
const found = findFirstLinkPath(item.children);
|
|
10
|
+
if (found) return found;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
function findDrillNode(items, id) {
|
|
16
|
+
if (!id) return null;
|
|
17
|
+
for (const item of items){
|
|
18
|
+
if ('drill' === item.type && item.id === id) return item;
|
|
19
|
+
if ('group' === item.type) {
|
|
20
|
+
const found = findDrillNode(item.children, id);
|
|
21
|
+
if (found) return found;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
export { findDrillNode, findFirstLinkPath };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { ComponentType } from 'react';
|
|
2
|
+
import type { SvgIconProps } from '../../icons/SvgIcon';
|
|
3
|
+
export interface NavConfig {
|
|
4
|
+
productLabel: string;
|
|
5
|
+
items: NavConfigNode[];
|
|
6
|
+
}
|
|
7
|
+
export type NavConfigNode = NavConfigLink | NavConfigDrill | NavConfigGroup | NavConfigSectionHeader;
|
|
8
|
+
export interface NavConfigLink {
|
|
9
|
+
type: 'link';
|
|
10
|
+
id: string;
|
|
11
|
+
label: string;
|
|
12
|
+
path: string;
|
|
13
|
+
icon?: ComponentType<SvgIconProps>;
|
|
14
|
+
dividerAfter?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface NavConfigDrill {
|
|
17
|
+
type: 'drill';
|
|
18
|
+
id: string;
|
|
19
|
+
label: string;
|
|
20
|
+
path: string;
|
|
21
|
+
/** URL parameter name for the dynamic segment */
|
|
22
|
+
param: string;
|
|
23
|
+
children: NavConfigNode[];
|
|
24
|
+
icon?: ComponentType<SvgIconProps>;
|
|
25
|
+
/** Available entities for the drill scope-switcher dropdown */
|
|
26
|
+
entities?: {
|
|
27
|
+
id: string;
|
|
28
|
+
label: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
}[];
|
|
31
|
+
/** Render a visual divider after this item */
|
|
32
|
+
dividerAfter?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface NavConfigGroup {
|
|
35
|
+
type: 'group';
|
|
36
|
+
id: string;
|
|
37
|
+
label: string;
|
|
38
|
+
children: NavConfigNode[];
|
|
39
|
+
icon?: ComponentType<SvgIconProps>;
|
|
40
|
+
defaultExpanded?: boolean;
|
|
41
|
+
/** Render a visual divider after this item */
|
|
42
|
+
dividerAfter?: boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface NavConfigSectionHeader {
|
|
45
|
+
type: 'section-header';
|
|
46
|
+
id: string;
|
|
47
|
+
label: string;
|
|
48
|
+
dividerAfter?: boolean;
|
|
49
|
+
}
|
|
50
|
+
export interface NavStackEntry {
|
|
51
|
+
title: string;
|
|
52
|
+
parentLabel: string | null;
|
|
53
|
+
items: NavConfigNode[];
|
|
54
|
+
activeItemId: string | null;
|
|
55
|
+
}
|
|
56
|
+
export interface BreadcrumbSegment {
|
|
57
|
+
type: 'link' | 'scope-switcher' | 'static';
|
|
58
|
+
label: string;
|
|
59
|
+
href?: string;
|
|
60
|
+
/** Present on scope-switcher segments. Current entity parameter value. */
|
|
61
|
+
paramValue?: string;
|
|
62
|
+
/** Present on scope-switcher segments. Built scope items with hrefs for the dropdown. */
|
|
63
|
+
scopeItems?: {
|
|
64
|
+
id: string;
|
|
65
|
+
label: string;
|
|
66
|
+
description?: string;
|
|
67
|
+
href: string;
|
|
68
|
+
}[];
|
|
69
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useSyncExternalStore } from "react";
|
|
2
|
+
let listeners = [];
|
|
3
|
+
function subscribe(listener) {
|
|
4
|
+
listeners = [
|
|
5
|
+
...listeners,
|
|
6
|
+
listener
|
|
7
|
+
];
|
|
8
|
+
window.addEventListener('popstate', listener);
|
|
9
|
+
return ()=>{
|
|
10
|
+
listeners = listeners.filter((l)=>l !== listener);
|
|
11
|
+
window.removeEventListener('popstate', listener);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function getSnapshot() {
|
|
15
|
+
return window.location.pathname;
|
|
16
|
+
}
|
|
17
|
+
function pushPathname(path) {
|
|
18
|
+
window.history.pushState(null, '', path);
|
|
19
|
+
for (const listener of listeners)listener();
|
|
20
|
+
}
|
|
21
|
+
function useLocationPathname() {
|
|
22
|
+
return useSyncExternalStore(subscribe, getSnapshot);
|
|
23
|
+
}
|
|
24
|
+
export { pushPathname, useLocationPathname };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type Dispatch, type SetStateAction } from 'react';
|
|
2
|
+
import type { BreadcrumbSegment, NavStackEntry } from './types';
|
|
3
|
+
export interface UseProductNavResult {
|
|
4
|
+
navStack: NavStackEntry[];
|
|
5
|
+
peekDepth: number;
|
|
6
|
+
setPeekDepth: Dispatch<SetStateAction<number>>;
|
|
7
|
+
breadcrumbSegments: BreadcrumbSegment[];
|
|
8
|
+
activeItemId: string | null;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Hook providing computed nav state + peekDepth management.
|
|
12
|
+
*
|
|
13
|
+
* Reads computed state from ProductNav context.
|
|
14
|
+
* `peekDepth` is the only local mutable state and resets on pathname changes.
|
|
15
|
+
*/
|
|
16
|
+
export declare function useProductNav(): UseProductNavResult;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
import { useProductNavContext } from "./ProductNavContext.js";
|
|
3
|
+
function useProductNav() {
|
|
4
|
+
const { pathname, navStack, breadcrumbSegments, activeItemId } = useProductNavContext();
|
|
5
|
+
const [peekDepth, setPeekDepth] = useState(0);
|
|
6
|
+
useEffect(()=>{
|
|
7
|
+
setPeekDepth(0);
|
|
8
|
+
}, [
|
|
9
|
+
pathname
|
|
10
|
+
]);
|
|
11
|
+
return {
|
|
12
|
+
navStack,
|
|
13
|
+
peekDepth,
|
|
14
|
+
setPeekDepth,
|
|
15
|
+
breadcrumbSegments,
|
|
16
|
+
activeItemId
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export { useProductNav };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FC, HTMLAttributes, ReactNode, Ref } from 'react';
|
|
2
|
+
import { type TestableProps } from '../../utils/testId';
|
|
3
|
+
export interface RemoteShellProps extends HTMLAttributes<HTMLDivElement>, TestableProps {
|
|
4
|
+
ref?: Ref<HTMLDivElement>;
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export declare const RemoteShell: FC<RemoteShellProps>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../utils/cn.js";
|
|
3
|
+
import { TestIdProvider } from "../../utils/testId.js";
|
|
4
|
+
const RemoteShell = ({ ref, className, children, 'data-testid': testId, ...props })=>/*#__PURE__*/ jsx(TestIdProvider, {
|
|
5
|
+
value: testId,
|
|
6
|
+
children: /*#__PURE__*/ jsx("div", {
|
|
7
|
+
...props,
|
|
8
|
+
ref: ref,
|
|
9
|
+
"data-slot": "remote-shell",
|
|
10
|
+
"data-testid": testId,
|
|
11
|
+
className: cn('grid h-full overflow-hidden [grid-template-areas:"panel_breadcrumb""panel_content"] [grid-template-columns:auto_1fr] [grid-template-rows:auto_1fr]', className),
|
|
12
|
+
children: children
|
|
13
|
+
})
|
|
14
|
+
});
|
|
15
|
+
RemoteShell.displayName = 'RemoteShell';
|
|
16
|
+
export { RemoteShell };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FC, HTMLAttributes, ReactNode, Ref } from 'react';
|
|
2
|
+
export interface RemoteShellBreadcrumbProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
ref?: Ref<HTMLDivElement>;
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export declare const RemoteShellBreadcrumb: FC<RemoteShellBreadcrumbProps>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../utils/cn.js";
|
|
3
|
+
import { useTestId } from "../../utils/testId.js";
|
|
4
|
+
const RemoteShellBreadcrumb = ({ ref, className, children, ...props })=>{
|
|
5
|
+
const testId = useTestId('breadcrumb');
|
|
6
|
+
return /*#__PURE__*/ jsx("div", {
|
|
7
|
+
...props,
|
|
8
|
+
ref: ref,
|
|
9
|
+
"data-slot": "remote-shell-breadcrumb",
|
|
10
|
+
"data-testid": testId,
|
|
11
|
+
className: cn('[grid-area:breadcrumb] flex items-center px-24 py-8', className),
|
|
12
|
+
children: children
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
RemoteShellBreadcrumb.displayName = 'RemoteShellBreadcrumb';
|
|
16
|
+
export { RemoteShellBreadcrumb };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FC, HTMLAttributes, ReactNode, Ref } from 'react';
|
|
2
|
+
export interface RemoteShellContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
ref?: Ref<HTMLDivElement>;
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export declare const RemoteShellContent: FC<RemoteShellContentProps>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../utils/cn.js";
|
|
3
|
+
import { useTestId } from "../../utils/testId.js";
|
|
4
|
+
const RemoteShellContent = ({ ref, className, children, ...props })=>{
|
|
5
|
+
const testId = useTestId('content');
|
|
6
|
+
return /*#__PURE__*/ jsx("div", {
|
|
7
|
+
...props,
|
|
8
|
+
ref: ref,
|
|
9
|
+
"data-slot": "remote-shell-content",
|
|
10
|
+
"data-testid": testId,
|
|
11
|
+
className: cn('[grid-area:content] min-h-0 overflow-auto px-24 py-16 [scrollbar-width:thin]', className),
|
|
12
|
+
children: children
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
RemoteShellContent.displayName = 'RemoteShellContent';
|
|
16
|
+
export { RemoteShellContent };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FC, HTMLAttributes, ReactNode, Ref } from 'react';
|
|
2
|
+
export interface RemoteShellPanelProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
ref?: Ref<HTMLDivElement>;
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export declare const RemoteShellPanel: FC<RemoteShellPanelProps>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../utils/cn.js";
|
|
3
|
+
import { useTestId } from "../../utils/testId.js";
|
|
4
|
+
const RemoteShellPanel = ({ ref, className, children, ...props })=>{
|
|
5
|
+
const testId = useTestId('panel');
|
|
6
|
+
return /*#__PURE__*/ jsx("div", {
|
|
7
|
+
...props,
|
|
8
|
+
ref: ref,
|
|
9
|
+
"data-slot": "remote-shell-panel",
|
|
10
|
+
"data-testid": testId,
|
|
11
|
+
className: cn('[grid-area:panel] min-h-0', className),
|
|
12
|
+
children: children
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
RemoteShellPanel.displayName = 'RemoteShellPanel';
|
|
16
|
+
export { RemoteShellPanel };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { RemoteShell, type RemoteShellProps } from './RemoteShell';
|
|
2
|
+
export { RemoteShellBreadcrumb, type RemoteShellBreadcrumbProps } from './RemoteShellBreadcrumb';
|
|
3
|
+
export { RemoteShellContent, type RemoteShellContentProps } from './RemoteShellContent';
|
|
4
|
+
export { RemoteShellPanel, type RemoteShellPanelProps } from './RemoteShellPanel';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { RemoteShell } from "./RemoteShell.js";
|
|
2
|
+
import { RemoteShellBreadcrumb } from "./RemoteShellBreadcrumb.js";
|
|
3
|
+
import { RemoteShellContent } from "./RemoteShellContent.js";
|
|
4
|
+
import { RemoteShellPanel } from "./RemoteShellPanel.js";
|
|
5
|
+
export { RemoteShell, RemoteShellBreadcrumb, RemoteShellContent, RemoteShellPanel };
|
package/dist/hooks/index.d.ts
CHANGED
package/dist/hooks/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { useArrowNav } from "./useArrowNav.js";
|
|
1
2
|
import { useControlled } from "./useControlled.js";
|
|
2
3
|
import { useCopyToClipboard } from "./useCopyToClipboard.js";
|
|
3
4
|
import { useCopyTooltip } from "./useCopyTooltip.js";
|
|
4
5
|
import { useIsKeyPressed } from "./useIsKeyPressed.js";
|
|
5
6
|
import { useOverflowItems } from "./useOverflowItems.js";
|
|
6
|
-
export { useControlled, useCopyToClipboard, useCopyTooltip, useIsKeyPressed, useOverflowItems };
|
|
7
|
+
export { useArrowNav, useControlled, useCopyToClipboard, useCopyTooltip, useIsKeyPressed, useOverflowItems };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
export interface UseArrowNavOptions {
|
|
3
|
+
onArrowRight?: () => void;
|
|
4
|
+
onArrowLeft?: () => void;
|
|
5
|
+
onEnter?: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function useArrowNav(containerRef: RefObject<HTMLElement | null>, selector: string, options?: UseArrowNavOptions): void;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
function isVisible(el, container) {
|
|
3
|
+
let current = el;
|
|
4
|
+
while(current && current !== container){
|
|
5
|
+
if (0 === current.offsetWidth || 0 === current.offsetHeight) return false;
|
|
6
|
+
current = current.parentElement;
|
|
7
|
+
}
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
function useArrowNav(containerRef, selector, options) {
|
|
11
|
+
useEffect(()=>{
|
|
12
|
+
const container = containerRef.current;
|
|
13
|
+
if (!container) return;
|
|
14
|
+
function getItems() {
|
|
15
|
+
const all = container.querySelectorAll(selector);
|
|
16
|
+
return Array.from(all).filter((el)=>isVisible(el, container));
|
|
17
|
+
}
|
|
18
|
+
function syncTabIndex() {
|
|
19
|
+
const items = getItems();
|
|
20
|
+
if (0 === items.length) return;
|
|
21
|
+
const active = items.find((el)=>'page' === el.getAttribute('aria-current'));
|
|
22
|
+
const hasFocused = items.find((el)=>'0' === el.getAttribute('tabindex'));
|
|
23
|
+
if (hasFocused) {
|
|
24
|
+
for (const item of items)if (!item.hasAttribute('tabindex')) item.setAttribute('tabindex', '-1');
|
|
25
|
+
} else {
|
|
26
|
+
const target = active ?? items[0];
|
|
27
|
+
for (const item of items)item.setAttribute('tabindex', item === target ? '0' : '-1');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function handleKeyDown(event) {
|
|
31
|
+
const { key } = event;
|
|
32
|
+
if ('Enter' === key) {
|
|
33
|
+
const target = document.activeElement;
|
|
34
|
+
if (target && getItems().includes(target)) {
|
|
35
|
+
event.preventDefault();
|
|
36
|
+
target.click();
|
|
37
|
+
options?.onEnter?.();
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if ('ArrowRight' === key && options?.onArrowRight) {
|
|
42
|
+
event.preventDefault();
|
|
43
|
+
options.onArrowRight();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if ('ArrowLeft' === key && options?.onArrowLeft) {
|
|
47
|
+
event.preventDefault();
|
|
48
|
+
options.onArrowLeft();
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if ('ArrowDown' !== key && 'ArrowUp' !== key && 'Home' !== key && 'End' !== key) return;
|
|
52
|
+
const items = getItems();
|
|
53
|
+
if (0 === items.length) return;
|
|
54
|
+
const currentIndex = items.indexOf(document.activeElement);
|
|
55
|
+
if (-1 === currentIndex) return;
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
let nextIndex;
|
|
58
|
+
switch(key){
|
|
59
|
+
case 'ArrowDown':
|
|
60
|
+
nextIndex = currentIndex + 1 >= items.length ? 0 : currentIndex + 1;
|
|
61
|
+
break;
|
|
62
|
+
case 'ArrowUp':
|
|
63
|
+
nextIndex = currentIndex - 1 < 0 ? items.length - 1 : currentIndex - 1;
|
|
64
|
+
break;
|
|
65
|
+
case 'Home':
|
|
66
|
+
nextIndex = 0;
|
|
67
|
+
break;
|
|
68
|
+
case 'End':
|
|
69
|
+
nextIndex = items.length - 1;
|
|
70
|
+
break;
|
|
71
|
+
default:
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
items[currentIndex]?.setAttribute('tabindex', '-1');
|
|
75
|
+
items[nextIndex]?.setAttribute('tabindex', '0');
|
|
76
|
+
items[nextIndex]?.focus();
|
|
77
|
+
}
|
|
78
|
+
syncTabIndex();
|
|
79
|
+
const observer = new MutationObserver(syncTabIndex);
|
|
80
|
+
observer.observe(container, {
|
|
81
|
+
childList: true,
|
|
82
|
+
subtree: true,
|
|
83
|
+
attributes: true
|
|
84
|
+
});
|
|
85
|
+
container.addEventListener('keydown', handleKeyDown);
|
|
86
|
+
return ()=>{
|
|
87
|
+
observer.disconnect();
|
|
88
|
+
container.removeEventListener('keydown', handleKeyDown);
|
|
89
|
+
};
|
|
90
|
+
}, [
|
|
91
|
+
containerRef,
|
|
92
|
+
selector,
|
|
93
|
+
options?.onArrowRight,
|
|
94
|
+
options?.onArrowLeft,
|
|
95
|
+
options?.onEnter
|
|
96
|
+
]);
|
|
97
|
+
}
|
|
98
|
+
export { useArrowNav };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SvgIcon } from "./SvgIcon.js";
|
|
3
|
+
const ChevronUpDown = (props)=>/*#__PURE__*/ jsx(SvgIcon, {
|
|
4
|
+
...props,
|
|
5
|
+
viewBox: "0 0 24 24",
|
|
6
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
7
|
+
d: "M16.293 14.293C16.6835 13.9025 17.3165 13.9025 17.707 14.293C18.0976 14.6835 18.0976 15.3165 17.707 15.707L12.707 20.707C12.3165 21.0976 11.6835 21.0976 11.293 20.707L6.29297 15.707C5.90245 15.3165 5.90245 14.6835 6.29297 14.293C6.68349 13.9025 7.31651 13.9025 7.70703 14.293L12 18.5859L16.293 14.293ZM11.3691 3.22462C11.7619 2.90427 12.3409 2.92686 12.707 3.29298L17.707 8.29298C18.0976 8.6835 18.0976 9.31652 17.707 9.70704C17.3165 10.0976 16.6835 10.0976 16.293 9.70704L12 5.41407L7.70703 9.70704C7.31651 10.0976 6.68349 10.0976 6.29297 9.70704C5.90245 9.31652 5.90245 8.6835 6.29297 8.29298L11.293 3.29298L11.3691 3.22462Z",
|
|
8
|
+
fill: "currentColor"
|
|
9
|
+
})
|
|
10
|
+
});
|
|
11
|
+
ChevronUpDown.displayName = 'ChevronUpDownIcon';
|
|
12
|
+
export { ChevronUpDown };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SvgIcon } from "./SvgIcon.js";
|
|
3
|
+
const MapPin = (props)=>/*#__PURE__*/ jsx(SvgIcon, {
|
|
4
|
+
...props,
|
|
5
|
+
viewBox: "0 0 24 24",
|
|
6
|
+
children: /*#__PURE__*/ jsx("path", {
|
|
7
|
+
d: "M18 9.20605C18 6.0948 15.3546 3.5 12 3.5C8.6454 3.5 6 6.0948 6 9.20605C6.00006 11.3244 7.02608 13.6029 8.35938 15.6416C9.64802 17.612 11.145 19.2389 12 20.1045C12.855 19.2389 14.352 17.612 15.6406 15.6416C16.9739 13.6029 17.9999 11.3244 18 9.20605ZM14 9.5C14 8.39543 13.1046 7.5 12 7.5C10.8954 7.5 10 8.39543 10 9.5C10 10.6046 10.8954 11.5 12 11.5C13.1046 11.5 14 10.6046 14 9.5ZM16 9.5C16 11.7091 14.2091 13.5 12 13.5C9.79086 13.5 8 11.7091 8 9.5C8 7.29086 9.79086 5.5 12 5.5C14.2091 5.5 16 7.29086 16 9.5ZM20 9.20605C19.9999 11.9075 18.7208 14.5859 17.3145 16.7363C15.8932 18.9095 14.2547 20.6742 13.3613 21.5732C12.6073 22.3321 11.3927 22.3321 10.6387 21.5732C9.74532 20.6742 8.10681 18.9095 6.68555 16.7363C5.27921 14.5859 4.00005 11.9075 4 9.20605C4 4.91019 7.62261 1.5 12 1.5C16.3774 1.5 20 4.91019 20 9.20605Z",
|
|
8
|
+
fill: "currentColor"
|
|
9
|
+
})
|
|
10
|
+
});
|
|
11
|
+
MapPin.displayName = 'MapPinIcon';
|
|
12
|
+
export { MapPin };
|
package/dist/icons/index.d.ts
CHANGED
|
@@ -41,6 +41,7 @@ export { ChevronsLeft } from './ChevronsLeft';
|
|
|
41
41
|
export { ChevronsRight } from './ChevronsRight';
|
|
42
42
|
export { ChevronsUp } from './ChevronsUp';
|
|
43
43
|
export { ChevronUp } from './ChevronUp';
|
|
44
|
+
export { ChevronUpDown } from './ChevronUpDown';
|
|
44
45
|
export { Circle } from './Circle';
|
|
45
46
|
export { CircleArrowDown } from './CircleArrowDown';
|
|
46
47
|
export { CircleArrowLeft } from './CircleArrowLeft';
|
|
@@ -113,6 +114,7 @@ export { Loader } from './Loader';
|
|
|
113
114
|
export { LoaderCircle } from './LoaderCircle';
|
|
114
115
|
export { Lock } from './Lock';
|
|
115
116
|
export { LockOpen } from './LockOpen';
|
|
117
|
+
export { MapPin } from './MapPin';
|
|
116
118
|
export { Maximize } from './Maximize';
|
|
117
119
|
export { Maximize2 } from './Maximize2';
|
|
118
120
|
export { Megaphone } from './Megaphone';
|
package/dist/icons/index.js
CHANGED
|
@@ -41,6 +41,7 @@ import { ChevronsLeft } from "./ChevronsLeft.js";
|
|
|
41
41
|
import { ChevronsRight } from "./ChevronsRight.js";
|
|
42
42
|
import { ChevronsUp } from "./ChevronsUp.js";
|
|
43
43
|
import { ChevronUp } from "./ChevronUp.js";
|
|
44
|
+
import { ChevronUpDown } from "./ChevronUpDown.js";
|
|
44
45
|
import { Circle } from "./Circle.js";
|
|
45
46
|
import { CircleArrowDown } from "./CircleArrowDown.js";
|
|
46
47
|
import { CircleArrowLeft } from "./CircleArrowLeft.js";
|
|
@@ -113,6 +114,7 @@ import { Loader } from "./Loader.js";
|
|
|
113
114
|
import { LoaderCircle } from "./LoaderCircle.js";
|
|
114
115
|
import { Lock } from "./Lock.js";
|
|
115
116
|
import { LockOpen } from "./LockOpen.js";
|
|
117
|
+
import { MapPin } from "./MapPin.js";
|
|
116
118
|
import { Maximize } from "./Maximize.js";
|
|
117
119
|
import { Maximize2 } from "./Maximize2.js";
|
|
118
120
|
import { Megaphone } from "./Megaphone.js";
|
|
@@ -178,4 +180,4 @@ import { X } from "./X.js";
|
|
|
178
180
|
import { Zap } from "./Zap.js";
|
|
179
181
|
import { ZoomIn } from "./ZoomIn.js";
|
|
180
182
|
import { ZoomOut } from "./ZoomOut.js";
|
|
181
|
-
export { Activity, Alt, ArrowBigUp, ArrowBigUpDash, ArrowDown, ArrowDownLeft, ArrowDownRight, ArrowLeft, ArrowRight, ArrowUp, ArrowUpLeft, ArrowUpRight, Bell, Calendar, CalendarCheck, CalendarCheck2, CalendarClock, CalendarCog, CalendarDays, CalendarFold, CalendarHeart, CalendarMinus, CalendarMinus2, CalendarOff, CalendarPlus, CalendarPlus2, CalendarRange, CalendarSearch, CalendarX, CalendarX2, Check, CheckCheck, CheckboxIndeterminate, ChevronDown, ChevronFirst, ChevronLast, ChevronLeft, ChevronRight, ChevronUp, ChevronsDown, ChevronsLeft, ChevronsRight, ChevronsUp, Circle, CircleArrowDown, CircleArrowLeft, CircleArrowOutDownLeft, CircleArrowOutDownRight, CircleArrowOutUpLeft, CircleArrowOutUpRight, CircleArrowRight, CircleArrowUp, CircleCheck, CircleCheckBig, CircleChevronDown, CircleChevronLeft, CircleChevronRight, CircleChevronUp, CircleDashed, CircleDotDashed, CircleEllipsis, CircleHelp, CirclePlus, Clock, Command, Copy, CornerUpLeft, CornerUpRight, Ctrl, Dot, Earth, EarthLock, Ellipsis, EyeOff, Filter, FilterX, Folder, FunnelPlus, GitCommitHorizontal, GitCommitVertical, GitCompare, GitCompareArrows, GitFork, GitGraph, GitMerge, GitPullRequest, GitPullRequestArrow, GitPullRequestClosed, GitPullRequestCreate, GitPullRequestCreateArrow, GitPullRequestDraft, Globe, GlobeLock, GripVertical, History, Home, Info, KeyRound, KeySquare, Keyboard, Layers, Layers2, Layers3, LayoutDashboard, LayoutGrid, LayoutList, LayoutPanelLeft, LayoutPanelTop, LayoutTemplate, LibraryBig, Link, Loader, LoaderCircle, Lock, LockOpen, Maximize, Maximize2, Megaphone, MegaphoneOff, MessageSquare, MessageSquareText, MessageSquareWarning, MessageSquareX, MessagesSquare, Minus, Mouse, Move3D, MoveDown, MoveUp, MoveVertical, NotebookPen, NotepadText, OctagonAlert, PanelBottom, PanelBottomOpen, PanelRight, PanelRightAnimated, PanelRightClose, PanelRightDashed, PanelRightOpen, Paperclip, Pen, PenLine, PenOff, PenTool, Pencil, PencilLine, PencilOff, PencilRuler, Pentagon, Pin, PinOff, Plus, Quote, Redo, Redo2, RedoDot, RefreshCcw, RefreshCwOff, Search, Settings, Sheet, Shift, Skull, SlidersHorizontal, SlidersVertical, Space, SquareArrowOutUpRight, Trash, Trash2, TriangleAlert, Undo, Undo2, UndoDot, User, Wrench, X, Zap, ZoomIn, ZoomOut };
|
|
183
|
+
export { Activity, Alt, ArrowBigUp, ArrowBigUpDash, ArrowDown, ArrowDownLeft, ArrowDownRight, ArrowLeft, ArrowRight, ArrowUp, ArrowUpLeft, ArrowUpRight, Bell, Calendar, CalendarCheck, CalendarCheck2, CalendarClock, CalendarCog, CalendarDays, CalendarFold, CalendarHeart, CalendarMinus, CalendarMinus2, CalendarOff, CalendarPlus, CalendarPlus2, CalendarRange, CalendarSearch, CalendarX, CalendarX2, Check, CheckCheck, CheckboxIndeterminate, ChevronDown, ChevronFirst, ChevronLast, ChevronLeft, ChevronRight, ChevronUp, ChevronUpDown, ChevronsDown, ChevronsLeft, ChevronsRight, ChevronsUp, Circle, CircleArrowDown, CircleArrowLeft, CircleArrowOutDownLeft, CircleArrowOutDownRight, CircleArrowOutUpLeft, CircleArrowOutUpRight, CircleArrowRight, CircleArrowUp, CircleCheck, CircleCheckBig, CircleChevronDown, CircleChevronLeft, CircleChevronRight, CircleChevronUp, CircleDashed, CircleDotDashed, CircleEllipsis, CircleHelp, CirclePlus, Clock, Command, Copy, CornerUpLeft, CornerUpRight, Ctrl, Dot, Earth, EarthLock, Ellipsis, EyeOff, Filter, FilterX, Folder, FunnelPlus, GitCommitHorizontal, GitCommitVertical, GitCompare, GitCompareArrows, GitFork, GitGraph, GitMerge, GitPullRequest, GitPullRequestArrow, GitPullRequestClosed, GitPullRequestCreate, GitPullRequestCreateArrow, GitPullRequestDraft, Globe, GlobeLock, GripVertical, History, Home, Info, KeyRound, KeySquare, Keyboard, Layers, Layers2, Layers3, LayoutDashboard, LayoutGrid, LayoutList, LayoutPanelLeft, LayoutPanelTop, LayoutTemplate, LibraryBig, Link, Loader, LoaderCircle, Lock, LockOpen, MapPin, Maximize, Maximize2, Megaphone, MegaphoneOff, MessageSquare, MessageSquareText, MessageSquareWarning, MessageSquareX, MessagesSquare, Minus, Mouse, Move3D, MoveDown, MoveUp, MoveVertical, NotebookPen, NotepadText, OctagonAlert, PanelBottom, PanelBottomOpen, PanelRight, PanelRightAnimated, PanelRightClose, PanelRightDashed, PanelRightOpen, Paperclip, Pen, PenLine, PenOff, PenTool, Pencil, PencilLine, PencilOff, PencilRuler, Pentagon, Pin, PinOff, Plus, Quote, Redo, Redo2, RedoDot, RefreshCcw, RefreshCwOff, Search, Settings, Sheet, Shift, Skull, SlidersHorizontal, SlidersVertical, Space, SquareArrowOutUpRight, Trash, Trash2, TriangleAlert, Undo, Undo2, UndoDot, User, Wrench, X, Zap, ZoomIn, ZoomOut };
|
package/dist/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export { Alert, AlertClose, type AlertCloseProps, type AlertColor, AlertContent,
|
|
|
15
15
|
export { AppShell, AppShellHeader, type AppShellHeaderProps, type AppShellProps, AppShellRail, type AppShellRailProps, AppShellRemote, type AppShellRemoteProps, } from './components/AppShell';
|
|
16
16
|
export { Attribute, AttributeActions, AttributeActionsContent, type AttributeActionsContentProps, AttributeActionsItem, type AttributeActionsItemProps, type AttributeActionsProps, AttributeActionsTarget, type AttributeActionsTargetProps, AttributeLabel, AttributeLabelDescription, type AttributeLabelDescriptionProps, AttributeLabelInfo, type AttributeLabelInfoProps, type AttributeLabelProps, type AttributeProps, AttributeValue, type AttributeValueProps, } from './components/Attribute';
|
|
17
17
|
export { Badge, type BadgeProps } from './components/Badge';
|
|
18
|
+
export { Breadcrumbs, BreadcrumbsEllipsis, type BreadcrumbsEllipsisProps, BreadcrumbsItem, type BreadcrumbsItemProps, type BreadcrumbsProps, BreadcrumbsScopeSwitcher, type BreadcrumbsScopeSwitcherProps, BreadcrumbsSeparator, type BreadcrumbsSeparatorProps, type ScopeSwitcherItem, } from './components/Breadcrumbs';
|
|
18
19
|
export { Button, type ButtonProps } from './components/Button';
|
|
19
20
|
export { Calendar, CalendarApplyButton, type CalendarApplyButtonProps, CalendarBody, type CalendarBodyProps, CalendarContent, type CalendarContentProps, type CalendarContextValue, CalendarDayName, CalendarFooter, CalendarFooterControls, type CalendarFooterControlsProps, type CalendarFooterProps, CalendarGrid, CalendarGrids, type CalendarGridsProps, CalendarHeader, CalendarInputHeader, type CalendarInputHeaderProps, CalendarKeyboardHints, type CalendarKeyboardHintsProps, CalendarPresetItem, CalendarPresets, type CalendarPresetsProps, type CalendarProps, CalendarProvider, CalendarResetButton, type CalendarResetButtonProps, CalendarTrigger, type CalendarTriggerProps, type CalendarType, DAY_NAMES, type DateRangePreset, type DateValue, DEFAULT_RANGE_PRESETS, DEFAULT_SINGLE_PRESETS, MONTH_NAMES, type PresetConfig, type PresetValue, useCalendarContext, } from './components/Calendar';
|
|
20
21
|
export { Card, CardContent, type CardContentProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardProps, CardTitle, type CardTitleProps, cardVariants, } from './components/Card';
|
|
@@ -45,7 +46,9 @@ export { NumericBadge, type NumericBadgeProps, } from './components/NumericBadge
|
|
|
45
46
|
export { OverflowTooltip, OverflowTooltipContent, type OverflowTooltipContentProps, type OverflowTooltipProps, } from './components/OverflowTooltip';
|
|
46
47
|
export { type CopyFormatData, formatAsFilter, ParameterPath, type ParameterPathProps, } from './components/ParameterPath';
|
|
47
48
|
export { Popover, PopoverContent, PopoverTrigger } from './components/Popover';
|
|
49
|
+
export { type BreadcrumbSegment, findDrillNode, findFirstLinkPath, type MatchNavResult, matchNav, type NavConfig, type NavConfigDrill, type NavConfigGroup, type NavConfigLink, type NavConfigNode, type NavStackEntry, ProductNav, ProductNavBreadcrumbs, type ProductNavContextValue, ProductNavPanel, type ProductNavProps, type UseProductNavResult, useProductNav, useProductNavContext, } from './components/ProductNav';
|
|
48
50
|
export { Radio, RadioDescription, type RadioDescriptionProps, RadioGroup, type RadioGroupProps, RadioIndicator, RadioLabel, type RadioLabelProps, type RadioProps, } from './components/Radio';
|
|
51
|
+
export { RemoteShell, RemoteShellBreadcrumb, type RemoteShellBreadcrumbProps, RemoteShellContent, type RemoteShellContentProps, RemoteShellPanel, type RemoteShellPanelProps, type RemoteShellProps, } from './components/RemoteShell';
|
|
49
52
|
export { getResponseCodeCategory, RESPONSE_CODE_COLOR, ResponseCode, type ResponseCodeCategory, type ResponseCodeProps, } from './components/ResponseCode';
|
|
50
53
|
export { ScrollArea, ScrollAreaContent, type ScrollAreaContentProps, ScrollAreaCorner, type ScrollAreaProps, ScrollAreaScrollbar, type ScrollAreaScrollbarProps, ScrollAreaViewport, type ScrollAreaViewportProps, } from './components/ScrollArea';
|
|
51
54
|
export { SegmentedControl, SegmentedControlButton, type SegmentedControlButtonProps, SegmentedControlItem, type SegmentedControlItemProps, type SegmentedControlProps, SegmentedControlSeparator, type SegmentedControlSeparatorProps, } from './components/SegmentedControl';
|