@beydesign/storybook 0.2.30 → 0.3.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 (80) hide show
  1. package/dist/index.d.ts +0 -2
  2. package/dist/index.js +0 -2
  3. package/dist/stories/{Drawer → Navigation/Drawer}/Drawer.d.ts +4 -0
  4. package/dist/stories/Navigation/Drawer/Drawer.js +81 -0
  5. package/dist/stories/{Drawer → Navigation/Drawer}/Drawer.stories.js +1 -1
  6. package/dist/stories/Navigation/Drawer/DrawerBody.d.ts +9 -0
  7. package/dist/stories/Navigation/Drawer/DrawerBody.js +73 -0
  8. package/dist/stories/{Drawer → Navigation/Drawer}/DrawerCreditsCard.js +3 -3
  9. package/dist/stories/{Drawer → Navigation/Drawer}/DrawerCreditsCard.stories.js +1 -1
  10. package/dist/stories/{Drawer → Navigation/Drawer}/DrawerCreditsCardSkeleton.js +1 -1
  11. package/dist/stories/{Drawer → Navigation/Drawer}/DrawerCreditsCardSkeleton.stories.js +1 -1
  12. package/dist/stories/{Drawer → Navigation/Drawer}/DrawerNavItem.d.ts +1 -1
  13. package/dist/stories/Navigation/Drawer/DrawerNavItem.js +22 -0
  14. package/dist/stories/{Drawer → Navigation/Drawer}/DrawerNavItem.stories.js +1 -1
  15. package/dist/stories/{Drawer → Navigation/Drawer}/DrawerProfile.js +3 -3
  16. package/dist/stories/{Drawer → Navigation/Drawer}/DrawerProfile.stories.js +1 -1
  17. package/dist/stories/{Drawer → Navigation/Drawer}/DrawerProfileSkeleton.js +1 -1
  18. package/dist/stories/{Drawer → Navigation/Drawer}/DrawerProfileSkeleton.stories.js +1 -1
  19. package/dist/stories/{Drawer → Navigation/Drawer}/index.d.ts +1 -0
  20. package/dist/stories/{Drawer → Navigation/Drawer}/index.js +1 -0
  21. package/dist/stories/{Drawer → Navigation/Drawer}/types.d.ts +44 -34
  22. package/dist/stories/Navigation/Drawer/types.js +7 -0
  23. package/dist/stories/Navigation/MobileNav.d.ts +15 -0
  24. package/dist/stories/Navigation/MobileNav.js +97 -0
  25. package/dist/stories/Navigation/MobileNav.stories.d.ts +25 -0
  26. package/dist/stories/Navigation/MobileNav.stories.js +65 -0
  27. package/dist/stories/Navigation/MobileNavBar.js +3 -13
  28. package/dist/stories/Navigation/MobileNavBar.stories.js +5 -18
  29. package/dist/stories/Navigation/SettingsPage.stories.d.ts +19 -0
  30. package/dist/stories/Navigation/SettingsPage.stories.js +75 -0
  31. package/dist/stories/Navigation/SubNav/SubNav.d.ts +14 -0
  32. package/dist/stories/Navigation/SubNav/SubNav.js +16 -0
  33. package/dist/stories/{Settings/SettingsNav.stories.d.ts → Navigation/SubNav/SubNav.stories.d.ts} +3 -3
  34. package/dist/stories/{Settings/SettingsNav.stories.js → Navigation/SubNav/SubNav.stories.js} +3 -3
  35. package/dist/stories/Navigation/SubNav/SubNavBody.d.ts +10 -0
  36. package/dist/stories/Navigation/SubNav/SubNavBody.js +91 -0
  37. package/dist/stories/Navigation/SubNav/SubNavItem.d.ts +10 -0
  38. package/dist/stories/Navigation/SubNav/SubNavItem.js +12 -0
  39. package/dist/stories/Navigation/SubNav/index.d.ts +4 -0
  40. package/dist/stories/Navigation/SubNav/index.js +4 -0
  41. package/dist/stories/Navigation/SubNav/types.d.ts +54 -0
  42. package/dist/stories/Navigation/index.d.ts +3 -0
  43. package/dist/stories/Navigation/index.js +3 -0
  44. package/dist/stories/Navigation/internal/NavPanel.d.ts +21 -0
  45. package/dist/stories/Navigation/internal/NavPanel.js +45 -0
  46. package/dist/stories/Navigation/internal/NavRow.d.ts +45 -0
  47. package/dist/stories/Navigation/internal/NavRow.js +79 -0
  48. package/dist/stories/Navigation/internal/index.d.ts +11 -0
  49. package/dist/stories/Navigation/internal/index.js +11 -0
  50. package/dist/stories/Navigation/internal/types.d.ts +71 -0
  51. package/dist/stories/Navigation/internal/types.js +30 -0
  52. package/dist/stories/Navigation/navigation.fixtures.d.ts +22 -0
  53. package/dist/stories/Navigation/navigation.fixtures.js +64 -0
  54. package/dist/stories/Navigation/types.d.ts +24 -1
  55. package/package.json +1 -1
  56. package/dist/stories/Drawer/Drawer.js +0 -163
  57. package/dist/stories/Drawer/DrawerNavItem.js +0 -87
  58. package/dist/stories/Drawer/types.js +0 -29
  59. package/dist/stories/Settings/SettingsNav.d.ts +0 -10
  60. package/dist/stories/Settings/SettingsNav.js +0 -97
  61. package/dist/stories/Settings/SettingsNavItem.d.ts +0 -9
  62. package/dist/stories/Settings/SettingsNavItem.js +0 -75
  63. package/dist/stories/Settings/SettingsPage.stories.d.ts +0 -11
  64. package/dist/stories/Settings/SettingsPage.stories.js +0 -93
  65. package/dist/stories/Settings/index.d.ts +0 -3
  66. package/dist/stories/Settings/index.js +0 -3
  67. package/dist/stories/Settings/types.d.ts +0 -68
  68. /package/dist/stories/{Drawer → Navigation/Drawer}/Drawer.stories.d.ts +0 -0
  69. /package/dist/stories/{Drawer → Navigation/Drawer}/DrawerCreditsCard.d.ts +0 -0
  70. /package/dist/stories/{Drawer → Navigation/Drawer}/DrawerCreditsCard.stories.d.ts +0 -0
  71. /package/dist/stories/{Drawer → Navigation/Drawer}/DrawerCreditsCardSkeleton.d.ts +0 -0
  72. /package/dist/stories/{Drawer → Navigation/Drawer}/DrawerCreditsCardSkeleton.stories.d.ts +0 -0
  73. /package/dist/stories/{Drawer → Navigation/Drawer}/DrawerIcons.d.ts +0 -0
  74. /package/dist/stories/{Drawer → Navigation/Drawer}/DrawerIcons.js +0 -0
  75. /package/dist/stories/{Drawer → Navigation/Drawer}/DrawerNavItem.stories.d.ts +0 -0
  76. /package/dist/stories/{Drawer → Navigation/Drawer}/DrawerProfile.d.ts +0 -0
  77. /package/dist/stories/{Drawer → Navigation/Drawer}/DrawerProfile.stories.d.ts +0 -0
  78. /package/dist/stories/{Drawer → Navigation/Drawer}/DrawerProfileSkeleton.d.ts +0 -0
  79. /package/dist/stories/{Drawer → Navigation/Drawer}/DrawerProfileSkeleton.stories.d.ts +0 -0
  80. /package/dist/stories/{Settings → Navigation/SubNav}/types.js +0 -0
@@ -1,97 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import styled from '@emotion/styled';
3
- import { SettingsNavItem } from './SettingsNavItem';
4
- import { DrawerNavItemState } from '../Drawer/types';
5
- import { Typography, TypographySize, TypographyWeight } from '../Typography';
6
- const WIDTH = '238px';
7
- const Shell = styled.aside `
8
- box-sizing: border-box;
9
- display: flex;
10
- flex-direction: column;
11
- flex-shrink: 0;
12
- width: ${WIDTH};
13
- height: 100vh;
14
- padding: var(--spacing-tokens-size-in-px-spacing-spacing-xl, 16px)
15
- var(--spacing-tokens-size-in-px-spacing-spacing-xl, 16px)
16
- var(--spacing-tokens-size-in-px-spacing-spacing-2xl, 24px);
17
- background-color: var(--color-background-bg-page-contrast);
18
- border-right: 1px solid var(--color-border-border-component);
19
- overflow-x: hidden;
20
- overflow-y: auto;
21
-
22
- scrollbar-width: thin;
23
- scrollbar-color: var(--color-border-border-component) transparent;
24
-
25
- &::-webkit-scrollbar {
26
- width: 6px;
27
- }
28
- &::-webkit-scrollbar-track {
29
- background: transparent;
30
- }
31
- &::-webkit-scrollbar-thumb {
32
- background-color: var(--color-border-border-component);
33
- border-radius: var(--spacing-tokens-size-in-px-radius-radius-full);
34
- }
35
- &::-webkit-scrollbar-thumb:hover {
36
- background-color: var(--color-text-text-subtle);
37
- }
38
- `;
39
- const Content = styled.div `
40
- display: flex;
41
- flex-direction: column;
42
- gap: var(--spacing-tokens-size-in-px-spacing-spacing-2xl, 20px);
43
- height: 100%;
44
- `;
45
- const Header = styled.div `
46
- padding: 0 var(--spacing-tokens-size-in-px-spacing-spacing-md, 8px);
47
- `;
48
- const Sections = styled.nav `
49
- display: flex;
50
- flex-direction: column;
51
- gap: var(--spacing-tokens-size-in-px-spacing-spacing-2xl, 20px);
52
- `;
53
- const Section = styled.div `
54
- display: flex;
55
- flex-direction: column;
56
- gap: var(--spacing-tokens-size-in-px-spacing-spacing-md, 8px);
57
- `;
58
- const SectionTitle = styled.div `
59
- padding: 0 var(--spacing-tokens-size-in-px-spacing-spacing-md, 8px);
60
- text-transform: uppercase;
61
- `;
62
- const Items = styled.div `
63
- display: flex;
64
- flex-direction: column;
65
- gap: var(--spacing-tokens-size-in-px-spacing-spacing-xs, 4px);
66
- `;
67
- const resolveState = (item, activeKey) => {
68
- if (item.state)
69
- return item.state;
70
- if (item.disabled)
71
- return DrawerNavItemState.Disabled;
72
- const key = item.key ?? item.text;
73
- if (activeKey !== undefined && key === activeKey) {
74
- return DrawerNavItemState.Active;
75
- }
76
- return DrawerNavItemState.Inactive;
77
- };
78
- /**
79
- * Secondary navigation for the Settings area: a "Settings" heading followed by
80
- * titled sections of {@link SettingsNavItem} rows. Sits beside the primary
81
- * {@link Drawer} and only appears on settings pages. Every colour, space and
82
- * radius resolves to `@beydesign/tokens` CSS variables, so it renders correctly
83
- * in light and dark.
84
- */
85
- export const SettingsNav = ({ title = 'Settings', sections, activeKey, className, style, testId, }) => {
86
- const handleItemClick = (item) => {
87
- if (item.disabled)
88
- return;
89
- if (item.link) {
90
- window.location.href = item.link;
91
- }
92
- else {
93
- item.onClick?.();
94
- }
95
- };
96
- return (_jsx(Shell, { className: className, style: style, "data-testid": testId, children: _jsxs(Content, { children: [_jsx(Header, { children: _jsx(Typography, { size: TypographySize.HeadingS, weight: TypographyWeight.Bold, color: "var(--color-text-text-title)", children: title }) }), _jsx(Sections, { children: sections.map((section, sectionIndex) => (_jsxs(Section, { children: [section.title && (_jsx(SectionTitle, { children: _jsx(Typography, { size: TypographySize.TextXS, weight: TypographyWeight.SemiBold, color: "var(--color-text-text-subtle)", children: section.title }) })), _jsx(Items, { children: section.items.map((item) => (_jsx(SettingsNavItem, { text: item.text, icon: item.icon, state: resolveState(item, activeKey), showBadge: item.showBadge, badgeText: item.badgeText, onClick: () => handleItemClick(item) }, item.key ?? item.text))) })] }, section.key ?? section.title ?? sectionIndex))) })] }) }));
97
- };
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- import type { SettingsNavItemProps } from './types';
3
- /**
4
- * A single navigation row for the {@link SettingsNav}. Deliberately more compact
5
- * than {@link DrawerNavItem} — 28px tall (4px vertical padding), a 16px icon and
6
- * a Medium-weight label — to read as secondary navigation. All colours resolve
7
- * to theme tokens, so it adapts to light and dark.
8
- */
9
- export declare const SettingsNavItem: React.FC<SettingsNavItemProps>;
@@ -1,75 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import styled from '@emotion/styled';
3
- import { DrawerNavItemState } from '../Drawer/types';
4
- import { Typography, TypographySize, TypographyWeight } from '../Typography';
5
- import { Badge, BadgeColor, BadgeSize } from '../UI';
6
- import { getIconComponent } from '../../utils';
7
- const ACTIVE_FG = 'var(--color-text-text-clicable)';
8
- const INACTIVE_FG = 'var(--color-text-text-subtle)';
9
- const ACTIVE_BG = 'var(--color-background-bg-brand-transparent)';
10
- const HOVER_BG = 'var(--color-background-bg-brand-transparent-hover)';
11
- const foreground = (state) => state === DrawerNavItemState.Active || state === DrawerNavItemState.Hover
12
- ? ACTIVE_FG
13
- : INACTIVE_FG;
14
- const background = (state) => {
15
- if (state === DrawerNavItemState.Active)
16
- return ACTIVE_BG;
17
- if (state === DrawerNavItemState.Hover)
18
- return HOVER_BG;
19
- return 'transparent';
20
- };
21
- const StyledNavItem = styled.button `
22
- appearance: none;
23
- font: inherit;
24
- text-align: left;
25
- border: none;
26
- box-sizing: border-box;
27
- display: flex;
28
- align-items: center;
29
- gap: var(--spacing-tokens-size-in-px-spacing-spacing-md, 8px);
30
- width: 100%;
31
- padding: var(--spacing-tokens-size-in-px-spacing-spacing-xs, 4px)
32
- var(--spacing-tokens-size-in-px-spacing-spacing-md, 8px);
33
- border-radius: var(--spacing-tokens-size-in-px-spacing-spacing-md, 8px);
34
- color: ${({ $state }) => foreground($state)};
35
- background-color: ${({ $state }) => background($state)};
36
- opacity: ${({ $state }) => $state === DrawerNavItemState.Disabled ? 0.5 : 1};
37
- cursor: ${({ $state }) => $state === DrawerNavItemState.Disabled ? 'not-allowed' : 'pointer'};
38
- transition:
39
- background-color 0.2s ease-in-out,
40
- color 0.2s ease-in-out;
41
-
42
- &:hover {
43
- ${({ $state }) => $state === DrawerNavItemState.Inactive
44
- ? `background-color: ${HOVER_BG}; color: ${ACTIVE_FG};`
45
- : ''}
46
- }
47
- `;
48
- const IconSlot = styled.span `
49
- display: inline-flex;
50
- flex-shrink: 0;
51
- color: inherit;
52
- `;
53
- const Label = styled.span `
54
- display: inline-flex;
55
- flex: 1 1 0;
56
- min-width: 0;
57
- white-space: nowrap;
58
- overflow: hidden;
59
- text-overflow: ellipsis;
60
- color: inherit;
61
- `;
62
- /**
63
- * A single navigation row for the {@link SettingsNav}. Deliberately more compact
64
- * than {@link DrawerNavItem} — 28px tall (4px vertical padding), a 16px icon and
65
- * a Medium-weight label — to read as secondary navigation. All colours resolve
66
- * to theme tokens, so it adapts to light and dark.
67
- */
68
- export const SettingsNavItem = ({ text, icon, state = DrawerNavItemState.Inactive, showBadge = false, badgeText = 'Coming Soon', onClick, className, style, testId, }) => {
69
- const isDisabled = state === DrawerNavItemState.Disabled;
70
- const handleClick = () => {
71
- if (!isDisabled)
72
- onClick?.();
73
- };
74
- return (_jsxs(StyledNavItem, { type: "button", "$state": state, className: className, style: style, onClick: handleClick, disabled: isDisabled, "aria-current": state === DrawerNavItemState.Active ? 'page' : undefined, "data-testid": testId, children: [_jsx(IconSlot, { children: getIconComponent(icon, { size: 16 }) }), _jsx(Label, { children: _jsx(Typography, { size: TypographySize.TextS, weight: TypographyWeight.Medium, color: "inherit", children: text }) }), showBadge && (_jsx(Badge, { size: BadgeSize.xs, icon: "ClockCountdown", showIcon: true, text: badgeText, color: BadgeColor.Default }))] }));
75
- };
@@ -1,11 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- /**
3
- * Renders the primary {@link Drawer} beside the {@link SettingsNav} exactly as
4
- * they compose on a real settings page, with a placeholder content pane. Both
5
- * navs are interactive.
6
- */
7
- declare const SettingsPageExample: () => import("react").JSX.Element;
8
- declare const meta: Meta<typeof SettingsPageExample>;
9
- export default meta;
10
- type Story = StoryObj<typeof SettingsPageExample>;
11
- export declare const DrawerWithSettingsNav: Story;
@@ -1,93 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from 'react';
3
- import { SettingsNav } from './SettingsNav';
4
- import { Drawer } from '../Drawer';
5
- import { Typography, TypographySize, TypographyWeight } from '../Typography';
6
- const drawerNavItems = [
7
- { key: 'home', text: 'Home', icon: 'House' },
8
- { key: 'avatars', text: 'Avatars', icon: 'UserFocus' },
9
- { key: 'agents', text: 'My Agents', icon: 'Headset' },
10
- { key: 'ttv', text: 'Text-to-Video', icon: 'VideoCamera' },
11
- { key: 'kb', text: 'Knowledge Base', icon: 'Book' },
12
- {
13
- key: 'conversations',
14
- text: 'Conversations',
15
- icon: 'ChatTeardropDots',
16
- },
17
- { key: 'analytics', text: 'Analytics', icon: 'ChartBar' },
18
- { key: 'api', text: 'API keys', icon: 'Key' },
19
- { key: 'developers', text: 'Developers', icon: 'BracketsCurly' },
20
- ];
21
- const settingsSections = [
22
- {
23
- key: 'business',
24
- title: 'Your business',
25
- items: [{ key: 'branding', text: 'Branding', icon: 'StarFour' }],
26
- },
27
- {
28
- key: 'team',
29
- title: 'Team',
30
- items: [{ key: 'members', text: 'Members', icon: 'UsersThree' }],
31
- },
32
- {
33
- key: 'billing',
34
- title: 'Billing & plans',
35
- items: [
36
- { key: 'subscription', text: 'Subscription', icon: 'CreditCard' },
37
- { key: 'invoices', text: 'Invoices', icon: 'FileText' },
38
- ],
39
- },
40
- {
41
- key: 'developers',
42
- title: 'Developers',
43
- items: [
44
- { key: 'api-keys', text: 'API keys', icon: 'Key' },
45
- { key: 'webhooks', text: 'Webhooks', icon: 'Graph' },
46
- ],
47
- },
48
- ];
49
- const labels = {
50
- branding: 'Branding',
51
- members: 'Members',
52
- subscription: 'Subscription',
53
- invoices: 'Invoices',
54
- 'api-keys': 'API keys',
55
- webhooks: 'Webhooks',
56
- };
57
- /**
58
- * Renders the primary {@link Drawer} beside the {@link SettingsNav} exactly as
59
- * they compose on a real settings page, with a placeholder content pane. Both
60
- * navs are interactive.
61
- */
62
- const SettingsPageExample = () => {
63
- const [activeSetting, setActiveSetting] = useState('api-keys');
64
- const sections = settingsSections.map((section) => ({
65
- ...section,
66
- items: section.items.map((item) => ({
67
- ...item,
68
- onClick: () => setActiveSetting(item.key ?? item.text),
69
- })),
70
- }));
71
- return (_jsxs("div", { style: {
72
- display: 'flex',
73
- height: '100vh',
74
- backgroundColor: 'var(--color-background-bg-page)',
75
- }, children: [_jsx(Drawer, { navItems: drawerNavItems, activeKey: "api", credits: { usedCredits: 500, maxCredits: 2000 }, profile: { name: 'Emma Novak', email: 'emma@example.com' } }), _jsx(SettingsNav, { sections: sections, activeKey: activeSetting }), _jsxs("main", { style: {
76
- flex: 1,
77
- padding: '32px 40px',
78
- overflowY: 'auto',
79
- }, children: [_jsx(Typography, { size: TypographySize.HeadingM, weight: TypographyWeight.SemiBold, color: "var(--color-text-text-title)", children: labels[activeSetting] ?? activeSetting }), _jsx("div", { style: { marginTop: 12 }, children: _jsxs(Typography, { size: TypographySize.TextS, weight: TypographyWeight.Regular, color: "var(--color-text-text-paragraph)", children: ["Content for the \"", labels[activeSetting] ?? activeSetting, "\" settings page renders here."] }) })] })] }));
80
- };
81
- const meta = {
82
- title: 'Design System/Examples/Settings Page',
83
- component: SettingsPageExample,
84
- parameters: {
85
- layout: 'fullscreen',
86
- design: {
87
- type: 'figspec',
88
- url: 'https://www.figma.com/design/mIhjz2yJjcpLlIqw6oUivt/Beyond-Presence?node-id=7002-33215',
89
- },
90
- },
91
- };
92
- export default meta;
93
- export const DrawerWithSettingsNav = {};
@@ -1,3 +0,0 @@
1
- export * from './SettingsNav';
2
- export * from './SettingsNavItem';
3
- export * from './types';
@@ -1,3 +0,0 @@
1
- export * from './SettingsNav';
2
- export * from './SettingsNavItem';
3
- export * from './types';
@@ -1,68 +0,0 @@
1
- import type { CSSProperties } from 'react';
2
- import type { IconName } from '../../utils';
3
- import type { DrawerNavItemState } from '../Drawer/types';
4
- /**
5
- * Props for the standalone {@link SettingsNavItem} row. Compared to
6
- * {@link DrawerNavItem} this is a more compact secondary-nav row: 28px tall,
7
- * 16px icon and Medium-weight label.
8
- */
9
- export interface SettingsNavItemProps {
10
- /** Label text. */
11
- text: string;
12
- /** Phosphor icon name rendered to the left of the label. */
13
- icon: IconName;
14
- /** Visual state of the item. */
15
- state?: DrawerNavItemState;
16
- /** Show a trailing badge (e.g. "Coming Soon"). */
17
- showBadge?: boolean;
18
- /** Text for the trailing badge. */
19
- badgeText?: string;
20
- /** Click handler. Not fired when the item is disabled. */
21
- onClick?: () => void;
22
- className?: string;
23
- style?: CSSProperties;
24
- /** Renders as `data-testid` for testing. */
25
- testId?: string;
26
- }
27
- /**
28
- * A single navigation entry inside a {@link SettingsNavSection}.
29
- */
30
- export interface SettingsNavItemConfig {
31
- /** Stable identifier used to resolve the active item (falls back to `text`). */
32
- key?: string;
33
- text: string;
34
- icon: IconName;
35
- /** Force a state. When omitted it is derived from `activeKey` / `disabled`. */
36
- state?: DrawerNavItemState;
37
- disabled?: boolean;
38
- showBadge?: boolean;
39
- badgeText?: string;
40
- /** When set, clicking navigates to this URL. */
41
- link?: string;
42
- onClick?: () => void;
43
- }
44
- /**
45
- * A titled group of {@link SettingsNavItemConfig} rows
46
- * (e.g. "Your business", "Billing & plans").
47
- */
48
- export interface SettingsNavSection {
49
- /** Stable key for the section (falls back to `title`). */
50
- key?: string;
51
- /** Uppercase caption rendered above the section's items. */
52
- title?: string;
53
- items: SettingsNavItemConfig[];
54
- }
55
- /**
56
- * Props for the composed {@link SettingsNav} secondary navigation.
57
- */
58
- export interface SettingsNavProps {
59
- /** Heading rendered at the top. Defaults to "Settings". */
60
- title?: string;
61
- /** Grouped navigation entries. */
62
- sections: SettingsNavSection[];
63
- /** Key (or text) of the currently active item. */
64
- activeKey?: string;
65
- className?: string;
66
- style?: CSSProperties;
67
- testId?: string;
68
- }