@arbor-education/design-system.components 0.23.2 → 0.24.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 (122) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/components/sidebarNav/SidebarNav.d.ts +46 -0
  3. package/dist/components/sidebarNav/SidebarNav.d.ts.map +1 -0
  4. package/dist/components/sidebarNav/SidebarNav.js +102 -0
  5. package/dist/components/sidebarNav/SidebarNav.js.map +1 -0
  6. package/dist/components/sidebarNav/SidebarNav.stories.d.ts +61 -0
  7. package/dist/components/sidebarNav/SidebarNav.stories.d.ts.map +1 -0
  8. package/dist/components/sidebarNav/SidebarNav.stories.js +253 -0
  9. package/dist/components/sidebarNav/SidebarNav.stories.js.map +1 -0
  10. package/dist/components/sidebarNav/SidebarNav.test.d.ts +2 -0
  11. package/dist/components/sidebarNav/SidebarNav.test.d.ts.map +1 -0
  12. package/dist/components/sidebarNav/SidebarNav.test.js +240 -0
  13. package/dist/components/sidebarNav/SidebarNav.test.js.map +1 -0
  14. package/dist/components/sidebarNav/SidebarNavContext.d.ts +13 -0
  15. package/dist/components/sidebarNav/SidebarNavContext.d.ts.map +1 -0
  16. package/dist/components/sidebarNav/SidebarNavContext.js +15 -0
  17. package/dist/components/sidebarNav/SidebarNavContext.js.map +1 -0
  18. package/dist/components/sidebarNav/SidebarNavGroup.d.ts +10 -0
  19. package/dist/components/sidebarNav/SidebarNavGroup.d.ts.map +1 -0
  20. package/dist/components/sidebarNav/SidebarNavGroup.js +16 -0
  21. package/dist/components/sidebarNav/SidebarNavGroup.js.map +1 -0
  22. package/dist/components/sidebarNav/SidebarNavItem.d.ts +32 -0
  23. package/dist/components/sidebarNav/SidebarNavItem.d.ts.map +1 -0
  24. package/dist/components/sidebarNav/SidebarNavItem.js +43 -0
  25. package/dist/components/sidebarNav/SidebarNavItem.js.map +1 -0
  26. package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts +8 -0
  27. package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts.map +1 -0
  28. package/dist/components/sidebarNav/SidebarNavItemFavourite.js +14 -0
  29. package/dist/components/sidebarNav/SidebarNavItemFavourite.js.map +1 -0
  30. package/dist/components/sidebarNav/SidebarNavPanel.d.ts +4 -0
  31. package/dist/components/sidebarNav/SidebarNavPanel.d.ts.map +1 -0
  32. package/dist/components/sidebarNav/SidebarNavPanel.js +9 -0
  33. package/dist/components/sidebarNav/SidebarNavPanel.js.map +1 -0
  34. package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts +10 -0
  35. package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts.map +1 -0
  36. package/dist/components/sidebarNav/SidebarNavPanelNav.js +21 -0
  37. package/dist/components/sidebarNav/SidebarNavPanelNav.js.map +1 -0
  38. package/dist/components/sidebarNav/SidebarNavRail.d.ts +6 -0
  39. package/dist/components/sidebarNav/SidebarNavRail.d.ts.map +1 -0
  40. package/dist/components/sidebarNav/SidebarNavRail.js +7 -0
  41. package/dist/components/sidebarNav/SidebarNavRail.js.map +1 -0
  42. package/dist/components/sidebarNav/SidebarNavRailItem.d.ts +10 -0
  43. package/dist/components/sidebarNav/SidebarNavRailItem.d.ts.map +1 -0
  44. package/dist/components/sidebarNav/SidebarNavRailItem.js +24 -0
  45. package/dist/components/sidebarNav/SidebarNavRailItem.js.map +1 -0
  46. package/dist/components/sidebarNav/SidebarNavRailList.d.ts +4 -0
  47. package/dist/components/sidebarNav/SidebarNavRailList.d.ts.map +1 -0
  48. package/dist/components/sidebarNav/SidebarNavRailList.js +7 -0
  49. package/dist/components/sidebarNav/SidebarNavRailList.js.map +1 -0
  50. package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts +6 -0
  51. package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts.map +1 -0
  52. package/dist/components/sidebarNav/SidebarNavRailSlot.js +7 -0
  53. package/dist/components/sidebarNav/SidebarNavRailSlot.js.map +1 -0
  54. package/dist/components/sidebarNav/SidebarNavSeparator.d.ts +6 -0
  55. package/dist/components/sidebarNav/SidebarNavSeparator.d.ts.map +1 -0
  56. package/dist/components/sidebarNav/SidebarNavSeparator.js +8 -0
  57. package/dist/components/sidebarNav/SidebarNavSeparator.js.map +1 -0
  58. package/dist/components/sidebarNav/SidebarNavTitle.d.ts +4 -0
  59. package/dist/components/sidebarNav/SidebarNavTitle.d.ts.map +1 -0
  60. package/dist/components/sidebarNav/SidebarNavTitle.js +7 -0
  61. package/dist/components/sidebarNav/SidebarNavTitle.js.map +1 -0
  62. package/dist/components/sidebarNav/SidebarNavTooltip.d.ts +7 -0
  63. package/dist/components/sidebarNav/SidebarNavTooltip.d.ts.map +1 -0
  64. package/dist/components/sidebarNav/SidebarNavTooltip.js +9 -0
  65. package/dist/components/sidebarNav/SidebarNavTooltip.js.map +1 -0
  66. package/dist/components/sidebarNav/SidebarNavTrigger.d.ts +8 -0
  67. package/dist/components/sidebarNav/SidebarNavTrigger.d.ts.map +1 -0
  68. package/dist/components/sidebarNav/SidebarNavTrigger.js +15 -0
  69. package/dist/components/sidebarNav/SidebarNavTrigger.js.map +1 -0
  70. package/dist/components/sidebarNav/index.d.ts +4 -0
  71. package/dist/components/sidebarNav/index.d.ts.map +1 -0
  72. package/dist/components/sidebarNav/index.js +3 -0
  73. package/dist/components/sidebarNav/index.js.map +1 -0
  74. package/dist/components/sidebarNav/resolvePanelItemProps.d.ts +4 -0
  75. package/dist/components/sidebarNav/resolvePanelItemProps.d.ts.map +1 -0
  76. package/dist/components/sidebarNav/resolvePanelItemProps.js +43 -0
  77. package/dist/components/sidebarNav/resolvePanelItemProps.js.map +1 -0
  78. package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts +2 -0
  79. package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts.map +1 -0
  80. package/dist/components/sidebarNav/resolvePanelItemProps.test.js +52 -0
  81. package/dist/components/sidebarNav/resolvePanelItemProps.test.js.map +1 -0
  82. package/dist/components/sidebarNav/types.d.ts +100 -0
  83. package/dist/components/sidebarNav/types.d.ts.map +1 -0
  84. package/dist/components/sidebarNav/types.js +4 -0
  85. package/dist/components/sidebarNav/types.js.map +1 -0
  86. package/dist/components/sidebarNav/useControllableBoolean.d.ts +9 -0
  87. package/dist/components/sidebarNav/useControllableBoolean.d.ts.map +1 -0
  88. package/dist/components/sidebarNav/useControllableBoolean.js +14 -0
  89. package/dist/components/sidebarNav/useControllableBoolean.js.map +1 -0
  90. package/dist/index.css +275 -0
  91. package/dist/index.css.map +1 -1
  92. package/dist/index.d.ts +3 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +2 -0
  95. package/dist/index.js.map +1 -1
  96. package/package.json +1 -1
  97. package/src/components/sidebarNav/SidebarNav.stories.tsx +484 -0
  98. package/src/components/sidebarNav/SidebarNav.test.tsx +611 -0
  99. package/src/components/sidebarNav/SidebarNav.tsx +230 -0
  100. package/src/components/sidebarNav/SidebarNavContext.tsx +28 -0
  101. package/src/components/sidebarNav/SidebarNavGroup.tsx +59 -0
  102. package/src/components/sidebarNav/SidebarNavItem.tsx +160 -0
  103. package/src/components/sidebarNav/SidebarNavItemFavourite.tsx +49 -0
  104. package/src/components/sidebarNav/SidebarNavPanel.tsx +20 -0
  105. package/src/components/sidebarNav/SidebarNavPanelNav.tsx +55 -0
  106. package/src/components/sidebarNav/SidebarNavRail.tsx +20 -0
  107. package/src/components/sidebarNav/SidebarNavRailItem.tsx +84 -0
  108. package/src/components/sidebarNav/SidebarNavRailList.tsx +11 -0
  109. package/src/components/sidebarNav/SidebarNavRailSlot.tsx +15 -0
  110. package/src/components/sidebarNav/SidebarNavSeparator.tsx +19 -0
  111. package/src/components/sidebarNav/SidebarNavTitle.tsx +13 -0
  112. package/src/components/sidebarNav/SidebarNavTooltip.tsx +24 -0
  113. package/src/components/sidebarNav/SidebarNavTrigger.tsx +52 -0
  114. package/src/components/sidebarNav/index.ts +6 -0
  115. package/src/components/sidebarNav/resolvePanelItemProps.test.ts +57 -0
  116. package/src/components/sidebarNav/resolvePanelItemProps.ts +50 -0
  117. package/src/components/sidebarNav/sidebarNav.scss +283 -0
  118. package/src/components/sidebarNav/types.ts +126 -0
  119. package/src/components/sidebarNav/useControllableBoolean.ts +20 -0
  120. package/src/index.scss +1 -0
  121. package/src/index.ts +12 -0
  122. package/src/tokens.scss +14 -0
@@ -0,0 +1,240 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import '@testing-library/jest-dom/vitest';
3
+ import { render, screen } from '@testing-library/react';
4
+ import userEvent from '@testing-library/user-event';
5
+ import { Icon } from '../icon/Icon.js';
6
+ import { describe, expect, test, vi } from 'vitest';
7
+ import { SidebarNav } from './SidebarNav.js';
8
+ describe('SidebarNav', () => {
9
+ test('toggles panel visibility via trigger (uncontrolled)', async () => {
10
+ render(_jsxs(SidebarNav, { defaultExpanded: false, children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsxs(SidebarNav.Panel, { children: [_jsx(SidebarNav.Title, { children: "Attendance" }), _jsx(SidebarNav.PanelNav, { items: [] })] })] }));
11
+ const panel = screen.getByTestId('sidebar-nav-panel');
12
+ expect(panel).toHaveAttribute('aria-hidden', 'true');
13
+ const trigger = screen.getByRole('button', { name: 'Show/hide sub navigation' });
14
+ await userEvent.click(trigger);
15
+ expect(panel).toHaveAttribute('aria-hidden', 'false');
16
+ expect(screen.getByText('Attendance')).toBeInTheDocument();
17
+ await userEvent.click(trigger);
18
+ expect(panel).toHaveAttribute('aria-hidden', 'true');
19
+ });
20
+ test('expands and collapses groups in place', async () => {
21
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
22
+ {
23
+ type: 'group',
24
+ id: 'registers',
25
+ label: 'Registers',
26
+ children: [
27
+ { type: 'item', id: 'daily', label: 'Daily attendance', href: '/daily' },
28
+ ],
29
+ },
30
+ ] }) })] }));
31
+ const registersTrigger = screen.getByRole('button', { name: 'Registers' });
32
+ const groupChildren = document.getElementById(registersTrigger.getAttribute('aria-controls'));
33
+ expect(groupChildren).toHaveAttribute('aria-hidden', 'true');
34
+ await userEvent.click(registersTrigger);
35
+ expect(groupChildren).toHaveAttribute('aria-hidden', 'false');
36
+ expect(screen.getByText('Daily attendance')).toBeInTheDocument();
37
+ await userEvent.click(registersTrigger);
38
+ expect(groupChildren).toHaveAttribute('aria-hidden', 'true');
39
+ });
40
+ test('renders group row as a button with aria-expanded', () => {
41
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
42
+ {
43
+ type: 'group',
44
+ id: 'registers',
45
+ label: 'Registers',
46
+ children: [],
47
+ },
48
+ ] }) })] }));
49
+ const registers = screen.getByRole('button', { name: 'Registers' });
50
+ expect(registers).toHaveAttribute('aria-expanded', 'false');
51
+ expect(registers.tagName).toBe('BUTTON');
52
+ });
53
+ test('supports nested groups (sub-sub menus)', async () => {
54
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
55
+ {
56
+ type: 'group',
57
+ id: 'a',
58
+ label: 'A',
59
+ children: [
60
+ {
61
+ type: 'group',
62
+ id: 'b',
63
+ label: 'B',
64
+ children: [{ type: 'item', id: 'c', label: 'C', href: '/c' }],
65
+ },
66
+ ],
67
+ },
68
+ ] }) })] }));
69
+ const triggerA = screen.getByRole('button', { name: 'A' });
70
+ const groupAChildren = document.getElementById(triggerA.getAttribute('aria-controls'));
71
+ const triggerB = screen.getByRole('button', { name: 'B', hidden: true });
72
+ const groupC = document.getElementById(triggerB.getAttribute('aria-controls'));
73
+ expect(groupC).toHaveAttribute('aria-hidden', 'true');
74
+ await userEvent.click(triggerA);
75
+ expect(groupAChildren).toHaveAttribute('aria-hidden', 'false');
76
+ expect(groupC).toHaveAttribute('aria-hidden', 'true');
77
+ await userEvent.click(screen.getByRole('button', { name: 'B' }));
78
+ expect(groupC).toHaveAttribute('aria-hidden', 'false');
79
+ expect(screen.getByText('C')).toBeInTheDocument();
80
+ });
81
+ test('uses renderLink for leaf items', () => {
82
+ const renderLink = vi.fn(({ href, className, children, ariaCurrent, onClick, linkProps, }) => (_jsx("a", { href: href, className: className, "data-custom-link": "true", ...(ariaCurrent ? { 'aria-current': ariaCurrent } : {}), ...linkProps, onClick: onClick, children: children })));
83
+ render(_jsxs(SidebarNav, { renderLink: renderLink, children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
84
+ { type: 'item', id: 'home', label: 'Home', href: '/' },
85
+ ] }) })] }));
86
+ expect(screen.getByText('Home').closest('a')).toHaveAttribute('data-custom-link', 'true');
87
+ expect(renderLink).toHaveBeenCalledWith(expect.objectContaining({
88
+ linkProps: undefined,
89
+ }));
90
+ });
91
+ test('passes linkProps through renderLink for panel items', () => {
92
+ const renderLink = vi.fn(({ href, className, children, linkProps }) => (_jsx("a", { href: href, className: className, "data-custom-link": "true", ...linkProps, children: children })));
93
+ render(_jsxs(SidebarNav, { renderLink: renderLink, children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { children: _jsx(SidebarNav.Item, { itemId: "daily", href: "/daily", linkProps: { 'data-track': 'daily' }, children: "Daily Attendance" }) }) })] }));
94
+ expect(screen.getByRole('link', { name: 'Daily Attendance' })).toHaveAttribute('data-track', 'daily');
95
+ expect(renderLink).toHaveBeenCalledWith(expect.objectContaining({
96
+ linkProps: { 'data-track': 'daily' },
97
+ }));
98
+ });
99
+ test('passes linkElementProps through renderLink for panel items', () => {
100
+ const renderLink = vi.fn(({ href, className, children, linkProps, linkElementProps }) => (_jsx("a", { href: href, className: className, "data-custom-link": "true", ...linkProps, ...linkElementProps, children: children })));
101
+ render(_jsxs(SidebarNav, { renderLink: renderLink, children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { children: _jsx(SidebarNav.Item, { itemId: "daily", href: "/daily", linkElementProps: { 'aria-describedby': 'daily-desc' }, children: "Daily Attendance" }) }) })] }));
102
+ expect(screen.getByRole('link', { name: 'Daily Attendance' })).toHaveAttribute('aria-describedby', 'daily-desc');
103
+ expect(renderLink).toHaveBeenCalledWith(expect.objectContaining({
104
+ linkElementProps: { 'aria-describedby': 'daily-desc' },
105
+ }));
106
+ });
107
+ test('passes ariaLabel through renderLink for rail items', () => {
108
+ const renderLink = vi.fn(({ href, className, children, ariaLabel, onClick }) => (_jsx("a", { href: href, className: className, "aria-label": ariaLabel, "data-custom-link": "true", onClick: onClick, children: children })));
109
+ render(_jsx(SidebarNav, { renderLink: renderLink, children: _jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.RailList, { children: _jsx(SidebarNav.RailItem, { href: "/favourites", "aria-label": "Favourites", children: _jsx(Icon, { name: "favourite-outline", size: 24 }) }) }) }) }));
110
+ expect(screen.getByRole('link', { name: 'Favourites' })).toHaveAttribute('data-custom-link', 'true');
111
+ expect(renderLink).toHaveBeenCalledWith(expect.objectContaining({
112
+ ariaLabel: 'Favourites',
113
+ }));
114
+ });
115
+ test('renders onClick-only panel items as buttons', async () => {
116
+ const onClick = vi.fn();
117
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
118
+ { type: 'item', id: 'action', label: 'Run action', onClick },
119
+ ] }) })] }));
120
+ const action = screen.getByRole('button', { name: 'Run action' });
121
+ expect(action.tagName).toBe('BUTTON');
122
+ await userEvent.click(action);
123
+ expect(onClick).toHaveBeenCalled();
124
+ });
125
+ test('renders composable button items via linkElement', async () => {
126
+ const onClick = vi.fn();
127
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { children: _jsx(SidebarNav.Item, { itemId: "action", linkElement: "button", linkElementProps: { onClick }, children: "Run action" }) }) })] }));
128
+ await userEvent.click(screen.getByRole('button', { name: 'Run action' }));
129
+ expect(onClick).toHaveBeenCalled();
130
+ });
131
+ test('prefers top-level onClick over linkElementProps.onClick when both are provided', async () => {
132
+ const topLevelOnClick = vi.fn();
133
+ const linkElementPropsOnClick = vi.fn();
134
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { children: _jsx(SidebarNav.Item, { itemId: "action", linkElement: "button", onClick: topLevelOnClick, linkElementProps: { onClick: linkElementPropsOnClick }, children: "Run action" }) }) })] }));
135
+ await userEvent.click(screen.getByRole('button', { name: 'Run action' }));
136
+ expect(topLevelOnClick).toHaveBeenCalledTimes(1);
137
+ expect(linkElementPropsOnClick).not.toHaveBeenCalled();
138
+ });
139
+ test('assigns distinct test ids to composable items via required itemId', () => {
140
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsxs(SidebarNav.PanelNav, { children: [_jsx(SidebarNav.Item, { itemId: "first", linkElement: "button", linkElementProps: { onClick: vi.fn() }, children: "First action" }), _jsx(SidebarNav.Item, { itemId: "second", linkElement: "button", linkElementProps: { onClick: vi.fn() }, children: "Second action" })] }) })] }));
141
+ expect(screen.getByTestId('sidebar-nav-panel-item-first')).toBeInTheDocument();
142
+ expect(screen.getByTestId('sidebar-nav-panel-item-second')).toBeInTheDocument();
143
+ });
144
+ test('warns when composable Rail is wrapped and hybrid panel mode is used', () => {
145
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
146
+ render(_jsx(SidebarNav, { panelTitle: "Attendance", panelNavItems: [], children: _jsx(_Fragment, { children: _jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }) }) }));
147
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('SidebarNav.Rail must be a direct child of SidebarNav'));
148
+ warnSpy.mockRestore();
149
+ });
150
+ test('does not warn for rail-only data-driven sidebar', () => {
151
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
152
+ render(_jsx(SidebarNav, { railItems: [
153
+ {
154
+ id: 'burger',
155
+ label: 'Show/hide sub navigation',
156
+ iconName: 'menu',
157
+ opensPanel: true,
158
+ },
159
+ ] }));
160
+ expect(warnSpy).not.toHaveBeenCalled();
161
+ warnSpy.mockRestore();
162
+ });
163
+ test('defaults rail nav aria-label to Sidebar rail', () => {
164
+ render(_jsx(SidebarNav, { defaultExpanded: false, children: _jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }) }));
165
+ expect(screen.getByRole('navigation', { name: 'Sidebar rail' })).toBeInTheDocument();
166
+ });
167
+ test('allows overriding rail nav aria-label', () => {
168
+ render(_jsx(SidebarNav, { defaultExpanded: false, children: _jsx(SidebarNav.Rail, { ariaLabel: "App shortcuts", children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }) }));
169
+ expect(screen.getByRole('navigation', { name: 'App shortcuts' })).toBeInTheDocument();
170
+ });
171
+ test('uses data-driven railItems when an empty array is passed', () => {
172
+ render(_jsx(SidebarNav, { railItems: [], panelTitle: "Attendance", panelNavItems: [] }));
173
+ expect(screen.getByTestId('sidebar-nav-rail')).toBeInTheDocument();
174
+ expect(screen.queryByTestId('sidebar-nav-rail-item-burger')).not.toBeInTheDocument();
175
+ expect(screen.getByText('Attendance')).toBeInTheDocument();
176
+ });
177
+ test('prefixes data-driven trigger test id with entry id', () => {
178
+ render(_jsx(SidebarNav, { railItems: [
179
+ {
180
+ id: 'burger',
181
+ label: 'Show/hide sub navigation',
182
+ iconName: 'menu',
183
+ opensPanel: true,
184
+ },
185
+ ], panelNavItems: [] }));
186
+ expect(screen.getByTestId('sidebar-nav-panel-trigger-burger')).toBeInTheDocument();
187
+ });
188
+ test('renders favourite button outside the item link with aria-pressed', async () => {
189
+ const onFavouriteClick = vi.fn();
190
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
191
+ {
192
+ type: 'item',
193
+ id: 'daily',
194
+ label: 'Daily Attendance',
195
+ href: '/daily',
196
+ canFavourite: true,
197
+ isPressed: true,
198
+ favouriteTooltip: 'Remove from favourites',
199
+ onFavouriteClick,
200
+ },
201
+ ] }) })] }));
202
+ const listItem = screen.getByTestId('sidebar-nav-panel-item-daily');
203
+ const link = screen.getByRole('link', { name: 'Daily Attendance' });
204
+ const favourite = screen.getByTestId('sidebar-nav-panel-item-favourite-daily');
205
+ expect(listItem).toContainElement(link);
206
+ expect(listItem).toContainElement(favourite);
207
+ expect(favourite).not.toContainElement(link);
208
+ expect(link).not.toContainElement(favourite);
209
+ expect(favourite).toHaveAttribute('aria-pressed', 'true');
210
+ await userEvent.click(favourite);
211
+ expect(onFavouriteClick).toHaveBeenCalled();
212
+ });
213
+ test('uses favouriteTooltip as aria-label on favourite button', () => {
214
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
215
+ {
216
+ type: 'item',
217
+ id: 'daily',
218
+ label: 'Daily Attendance',
219
+ href: '/daily',
220
+ canFavourite: true,
221
+ isPressed: false,
222
+ favouriteTooltip: 'Add to favourites',
223
+ },
224
+ ] }) })] }));
225
+ expect(screen.getByTestId('sidebar-nav-panel-item-favourite-daily')).toHaveAttribute('aria-label', 'Add to favourites');
226
+ });
227
+ test('does not render favourite button when canFavourite is false', () => {
228
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
229
+ {
230
+ type: 'item',
231
+ id: 'daily',
232
+ label: 'Daily Attendance',
233
+ href: '/daily',
234
+ canFavourite: false,
235
+ },
236
+ ] }) })] }));
237
+ expect(screen.queryByTestId('sidebar-nav-panel-item-favourite-daily')).not.toBeInTheDocument();
238
+ });
239
+ });
240
+ //# sourceMappingURL=SidebarNav.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNav.test.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNav.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { SidebarNavRenderLinkArgs } from './types.js';
2
+ export type SidebarNavContextValue = {
3
+ expanded: boolean;
4
+ setExpanded: (expanded: boolean) => void;
5
+ panelId: string;
6
+ renderLink?: (args: SidebarNavRenderLinkArgs) => React.ReactElement;
7
+ };
8
+ export declare function SidebarNavProvider(props: {
9
+ value: SidebarNavContextValue;
10
+ children: React.ReactNode;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ export declare function useSidebarNavContext(): SidebarNavContextValue;
13
+ //# sourceMappingURL=SidebarNavContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavContext.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,KAAK,CAAC,YAAY,CAAC;CACrE,CAAC;AAIF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,sBAAsB,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAOrG;AAED,wBAAgB,oBAAoB,2BAMnC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext } from 'react';
3
+ const SidebarNavContext = createContext(null);
4
+ export function SidebarNavProvider(props) {
5
+ const { value, children } = props;
6
+ return (_jsx(SidebarNavContext.Provider, { value: value, children: children }));
7
+ }
8
+ export function useSidebarNavContext() {
9
+ const ctx = useContext(SidebarNavContext);
10
+ if (!ctx) {
11
+ throw new Error('SidebarNav components must be used within <SidebarNav>.');
12
+ }
13
+ return ctx;
14
+ }
15
+ //# sourceMappingURL=SidebarNavContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavContext.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAUlD,MAAM,iBAAiB,GAAG,aAAa,CAAgC,IAAI,CAAC,CAAC;AAE7E,MAAM,UAAU,kBAAkB,CAAC,KAAmE;IACpG,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAClC,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACrC,QAAQ,GACkB,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export type SidebarNavGroupProps = {
3
+ label: string;
4
+ expanded?: boolean;
5
+ defaultExpanded?: boolean;
6
+ onExpandedChange?: (expanded: boolean) => void;
7
+ children: React.ReactNode;
8
+ } & Omit<HTMLAttributes<HTMLLIElement>, 'children'>;
9
+ export declare const SidebarNavGroup: (props: SidebarNavGroupProps) => import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=SidebarNavGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavGroup.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAI5C,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,4CA4C1D,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Icon } from '../icon/Icon.js';
3
+ import classNames from 'classnames';
4
+ import { useId } from 'react';
5
+ import { useControllableBoolean } from './useControllableBoolean.js';
6
+ export const SidebarNavGroup = (props) => {
7
+ const { label, expanded, defaultExpanded = false, onExpandedChange, className, children, ...rest } = props;
8
+ const ulId = useId();
9
+ const { value: isExpanded, set: setExpanded } = useControllableBoolean({
10
+ value: expanded,
11
+ defaultValue: defaultExpanded,
12
+ onChange: onExpandedChange,
13
+ });
14
+ return (_jsxs("li", { className: classNames('ds-sidebar-nav__list-item', 'ds-sidebar-nav__group', className), ...rest, children: [_jsxs("button", { type: "button", className: "ds-sidebar-nav__group-link", "aria-expanded": isExpanded, "aria-controls": ulId, onClick: () => setExpanded(!isExpanded), children: [_jsx(Icon, { name: "chevron-right", size: 16, className: "ds-sidebar-nav__group-chevron" }), _jsx("span", { className: "ds-sidebar-nav__group-label", children: label })] }), _jsx("ul", { id: ulId, "aria-hidden": !isExpanded, className: "ds-sidebar-nav__group-children", children: children })] }));
15
+ };
16
+ //# sourceMappingURL=SidebarNavGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavGroup.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAUrE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAA2B,EAAE,EAAE;IAC7D,MAAM,EACJ,KAAK,EACL,QAAQ,EACR,eAAe,GAAG,KAAK,EACvB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC;IACrB,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,sBAAsB,CAAC;QACrE,KAAK,EAAE,QAAQ;QACf,YAAY,EAAE,eAAe;QAC7B,QAAQ,EAAE,gBAAgB;KAC3B,CAAC,CAAC;IAEH,OAAO,CACL,cAAI,SAAS,EAAE,UAAU,CAAC,2BAA2B,EAAE,uBAAuB,EAAE,SAAS,CAAC,KAAM,IAAI,aAClG,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,4BAA4B,mBACvB,UAAU,mBACV,IAAI,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,aAEvC,KAAC,IAAI,IACH,IAAI,EAAC,eAAe,EACpB,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,+BAA+B,GACzC,EACF,eAAM,SAAS,EAAC,6BAA6B,YAAE,KAAK,GAAQ,IACrD,EAET,aACE,EAAE,EAAE,IAAI,iBACK,CAAC,UAAU,EACxB,SAAS,EAAC,gCAAgC,YAEzC,QAAQ,GACN,IACF,CACN,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { AnchorHTMLAttributes, ButtonHTMLAttributes, HTMLAttributes, MouseEventHandler } from 'react';
2
+ import type { SidebarNavLinkProps } from './types.js';
3
+ type SidebarNavItemFavouriteVariant = {
4
+ canFavourite?: false;
5
+ favouriteTooltip?: never;
6
+ } | {
7
+ canFavourite: true;
8
+ favouriteTooltip: string;
9
+ };
10
+ type SidebarNavItemLinkVariant = {
11
+ linkElement?: 'link';
12
+ href: string;
13
+ linkElementProps?: Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'className' | 'children'>;
14
+ linkProps?: SidebarNavLinkProps;
15
+ };
16
+ type SidebarNavItemButtonVariant = {
17
+ linkElement: 'button';
18
+ href?: never;
19
+ linkElementProps?: ButtonHTMLAttributes<HTMLButtonElement>;
20
+ linkProps?: never;
21
+ };
22
+ export type SidebarNavItemProps = {
23
+ current?: boolean;
24
+ itemId: string;
25
+ isPressed?: boolean;
26
+ onFavouriteClick?: MouseEventHandler<HTMLButtonElement>;
27
+ onClick?: MouseEventHandler<HTMLElement>;
28
+ children: React.ReactNode;
29
+ } & Omit<HTMLAttributes<HTMLLIElement>, 'children' | 'onClick'> & SidebarNavItemFavouriteVariant & (SidebarNavItemLinkVariant | SidebarNavItemButtonVariant);
30
+ export declare const SidebarNavItem: (props: SidebarNavItemProps) => import("react/jsx-runtime").JSX.Element;
31
+ export {};
32
+ //# sourceMappingURL=SidebarNavItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavItem.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EAClB,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,KAAK,8BAA8B,GAC7B;IAAE,YAAY,CAAC,EAAE,KAAK,CAAC;IAAC,gBAAgB,CAAC,EAAE,KAAK,CAAA;CAAE,GAClD;IAAE,YAAY,EAAE,IAAI,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,KAAK,yBAAyB,GAAG;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC,CAAC;IACpG,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,WAAW,EAAE,QAAQ,CAAC;IACtB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,gBAAgB,CAAC,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,KAAK,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACzC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAC7D,8BAA8B,GAC9B,CAAC,yBAAyB,GAAG,2BAA2B,CAAC,CAAC;AAc5D,eAAO,MAAM,cAAc,GAAI,OAAO,mBAAmB,4CA2GxD,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ import { useSidebarNavContext } from './SidebarNavContext.js';
4
+ import { SidebarNavItemFavourite } from './SidebarNavItemFavourite.js';
5
+ function omitOnClick(props) {
6
+ if (props == null) {
7
+ return undefined;
8
+ }
9
+ const rest = { ...props };
10
+ delete rest.onClick;
11
+ return rest;
12
+ }
13
+ export const SidebarNavItem = (props) => {
14
+ const { current, itemId, canFavourite, favouriteTooltip, isPressed = false, onFavouriteClick, children, className, linkElement = 'link', href, linkElementProps, linkProps, onClick, ...rest } = props;
15
+ const { renderLink } = useSidebarNavContext();
16
+ const linkClassName = classNames('ds-sidebar-nav__item-link', { 'ds-sidebar-nav__item-link--current': Boolean(current) });
17
+ const linkChildren = _jsx("span", { className: "ds-sidebar-nav__item-label", children: children });
18
+ const linkElementOnClick = linkElementProps?.onClick;
19
+ const handleClick = (event) => {
20
+ if (onClick) {
21
+ onClick(event);
22
+ return;
23
+ }
24
+ linkElementOnClick?.(event);
25
+ };
26
+ const buttonLinkElementProps = omitOnClick(linkElementProps);
27
+ const anchorLinkElementProps = omitOnClick(linkElementProps);
28
+ const linkElementNode = linkElement === 'button'
29
+ ? (_jsx("button", { type: "button", className: linkClassName, "aria-current": current ? 'page' : undefined, ...buttonLinkElementProps, onClick: handleClick, children: linkChildren }))
30
+ : renderLink
31
+ ? renderLink({
32
+ href: href,
33
+ className: linkClassName,
34
+ ariaCurrent: current ? 'page' : undefined,
35
+ linkProps,
36
+ linkElementProps: anchorLinkElementProps,
37
+ onClick: handleClick,
38
+ children: linkChildren,
39
+ })
40
+ : (_jsx("a", { href: href, className: linkClassName, "aria-current": current ? 'page' : undefined, ...linkProps, ...anchorLinkElementProps, onClick: handleClick, children: linkChildren }));
41
+ return (_jsxs("li", { className: classNames('ds-sidebar-nav__list-item', 'ds-sidebar-nav__item', { 'ds-sidebar-nav__item--has-favourite': canFavourite }, className), "data-testid": `sidebar-nav-panel-item-${itemId}`, ...rest, children: [linkElementNode, canFavourite === true && (_jsx(SidebarNavItemFavourite, { isPressed: isPressed, itemId: itemId, favouriteTooltip: favouriteTooltip, onClick: onFavouriteClick }))] }));
42
+ };
43
+ //# sourceMappingURL=SidebarNavItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavItem.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavItem.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ButtonHTMLAttributes } from 'react';
2
+ export type SidebarNavItemFavouriteProps = {
3
+ isPressed: boolean;
4
+ itemId: string;
5
+ favouriteTooltip: string;
6
+ } & ButtonHTMLAttributes<HTMLButtonElement>;
7
+ export declare const SidebarNavItemFavourite: (props: SidebarNavItemFavouriteProps) => import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=SidebarNavItemFavourite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavItemFavourite.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavItemFavourite.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAE5C,eAAO,MAAM,uBAAuB,GAAI,OAAO,4BAA4B,4CAqC1E,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Icon } from '../icon/Icon.js';
3
+ import classNames from 'classnames';
4
+ import { SidebarNavTooltip } from './SidebarNavTooltip.js';
5
+ export const SidebarNavItemFavourite = (props) => {
6
+ const { isPressed, itemId, favouriteTooltip, className, onClick, ...rest } = props;
7
+ const button = (_jsx("button", { type: "button", className: classNames('ds-sidebar-nav__item-favourite', className), "aria-pressed": isPressed, "aria-label": favouriteTooltip, "data-testid": `sidebar-nav-panel-item-favourite-${itemId}`, onClick: (e) => {
8
+ e.preventDefault();
9
+ e.stopPropagation();
10
+ onClick?.(e);
11
+ }, ...rest, children: _jsx(Icon, { name: isPressed ? 'favourite-filled' : 'favourite-outline', size: 16, color: isPressed ? 'var(--color-brand-600)' : 'currentColor' }) }));
12
+ return (_jsx(SidebarNavTooltip, { label: favouriteTooltip, side: "left", children: button }));
13
+ };
14
+ //# sourceMappingURL=SidebarNavItemFavourite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavItemFavourite.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavItemFavourite.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAQ3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,KAAmC,EAAE,EAAE;IAC7E,MAAM,EACJ,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,MAAM,MAAM,GAAG,CACb,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,UAAU,CAAC,gCAAgC,EAAE,SAAS,CAAC,kBACpD,SAAS,gBACX,gBAAgB,iBACf,oCAAoC,MAAM,EAAE,EACzD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC,KACG,IAAI,YAER,KAAC,IAAI,IACH,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,EAC1D,IAAI,EAAE,EAAE,EACR,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,cAAc,GAC5D,GACK,CACV,CAAC;IAEF,OAAO,CACL,KAAC,iBAAiB,IAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAC,MAAM,YACpD,MAAM,GACW,CACrB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export type SidebarNavPanelProps = HTMLAttributes<HTMLDivElement>;
3
+ export declare const SidebarNavPanel: (props: SidebarNavPanelProps) => import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=SidebarNavPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavPanel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAElE,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,4CAa1D,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ import { useSidebarNavContext } from './SidebarNavContext.js';
4
+ export const SidebarNavPanel = (props) => {
5
+ const { className, ...rest } = props;
6
+ const { expanded, panelId } = useSidebarNavContext();
7
+ return (_jsx("div", { id: panelId, "aria-hidden": !expanded, className: classNames('ds-sidebar-nav__panel', className), "data-testid": "sidebar-nav-panel", ...rest }));
8
+ };
9
+ //# sourceMappingURL=SidebarNavPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavPanel.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAA2B,EAAE,EAAE;IAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAErD,OAAO,CACL,cACE,EAAE,EAAE,OAAO,iBACE,CAAC,QAAQ,EACtB,SAAS,EAAE,UAAU,CAAC,uBAAuB,EAAE,SAAS,CAAC,iBAC7C,mBAAmB,KAC3B,IAAI,GACR,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ import type { SidebarNavNode } from './types.js';
3
+ export type SidebarNavPanelNavProps = {
4
+ ariaLabel?: string;
5
+ items?: SidebarNavNode[];
6
+ } & Omit<HTMLAttributes<HTMLElement>, 'children'> & {
7
+ children?: React.ReactNode;
8
+ };
9
+ export declare const SidebarNavPanelNav: (props: SidebarNavPanelNavProps) => import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=SidebarNavPanelNav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavPanelNav.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavPanelNav.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAI5C,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,YAAY,CAAC;AAErE,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CAC1B,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,GAAG;IAClD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AA0BF,eAAO,MAAM,kBAAkB,GAAI,OAAO,uBAAuB,4CAgBhE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ import { SidebarNavGroup } from './SidebarNavGroup.js';
4
+ import { SidebarNavItem } from './SidebarNavItem.js';
5
+ import { resolvePanelItemProps } from './resolvePanelItemProps.js';
6
+ function renderItemNode(node) {
7
+ return _jsx(SidebarNavItem, { ...resolvePanelItemProps(node) }, node.id);
8
+ }
9
+ function renderNodes(nodes) {
10
+ return nodes.map((node) => {
11
+ if (node.type === 'group') {
12
+ return (_jsx(SidebarNavGroup, { label: node.label, defaultExpanded: node.defaultExpanded, expanded: node.expanded, onExpandedChange: node.onExpandedChange, children: renderNodes(node.children ?? []) }, node.id));
13
+ }
14
+ return renderItemNode(node);
15
+ });
16
+ }
17
+ export const SidebarNavPanelNav = (props) => {
18
+ const { ariaLabel = 'Sidebar links', items, className, children, ...rest } = props;
19
+ return (_jsx("nav", { "aria-label": ariaLabel, className: classNames('ds-sidebar-nav__nav', className), ...rest, children: _jsx("ul", { className: "ds-sidebar-nav__list", children: items ? renderNodes(items) : children }) }));
20
+ };
21
+ //# sourceMappingURL=SidebarNavPanelNav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavPanelNav.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavPanelNav.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAUnE,SAAS,cAAc,CAAC,IAAwB;IAC9C,OAAO,KAAC,cAAc,OAAmB,qBAAqB,CAAC,IAAI,CAAC,IAAxC,IAAI,CAAC,EAAE,CAAqC,CAAC;AAC3E,CAAC;AAED,SAAS,WAAW,CAAC,KAAuB;IAC1C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,CACL,KAAC,eAAe,IAEd,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,YAEtC,WAAW,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,IAN5B,IAAI,CAAC,EAAE,CAOI,CACnB,CAAC;QACJ,CAAC;QAED,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACnE,MAAM,EACJ,SAAS,GAAG,eAAe,EAC3B,KAAK,EACL,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,4BAAiB,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,EAAE,SAAS,CAAC,KAAM,IAAI,YAC3F,aAAI,SAAS,EAAC,sBAAsB,YACjC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GACnC,GACD,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export type SidebarNavRailProps = {
3
+ ariaLabel?: string;
4
+ } & HTMLAttributes<HTMLElement>;
5
+ export declare const SidebarNavRail: (props: SidebarNavRailProps) => import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=SidebarNavRail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavRail.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavRail.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;AAEhC,eAAO,MAAM,cAAc,GAAI,OAAO,mBAAmB,4CAYxD,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ export const SidebarNavRail = (props) => {
4
+ const { className, children, ariaLabel = 'Sidebar rail', ...rest } = props;
5
+ return (_jsx("nav", { "aria-label": ariaLabel, className: classNames('ds-sidebar-nav__rail', className), "data-testid": "sidebar-nav-rail", ...rest, children: children }));
6
+ };
7
+ //# sourceMappingURL=SidebarNavRail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavRail.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavRail.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAOpC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAE,EAAE;IAC3D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,GAAG,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC3E,OAAO,CACL,4BACc,SAAS,EACrB,SAAS,EAAE,UAAU,CAAC,sBAAsB,EAAE,SAAS,CAAC,iBAC5C,kBAAkB,KAC1B,IAAI,YAEP,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { MouseEventHandler } from 'react';
2
+ export type SidebarNavRailItemProps = {
3
+ 'href'?: string;
4
+ 'onClick'?: MouseEventHandler;
5
+ 'current'?: boolean;
6
+ 'aria-label': string;
7
+ 'data-testid'?: string;
8
+ } & Omit<React.HTMLAttributes<HTMLLIElement>, 'onClick'>;
9
+ export declare const SidebarNavRailItem: (props: SidebarNavRailItemProps) => import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=SidebarNavRailItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavRailItem.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavRailItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAI/C,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;AAEzD,eAAO,MAAM,kBAAkB,GAAI,OAAO,uBAAuB,4CAsEhE,CAAC"}