@vinyasa/navigation 1.0.26

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 (98) hide show
  1. package/README.md +45 -0
  2. package/dist/cjs/breadcrumbs.cjs +240 -0
  3. package/dist/cjs/breadcrumbs.css +58 -0
  4. package/dist/cjs/command-navigation.cjs +215 -0
  5. package/dist/cjs/command-navigation.css +46 -0
  6. package/dist/cjs/index.cjs +2681 -0
  7. package/dist/cjs/index.css +1162 -0
  8. package/dist/cjs/navigation-menu.cjs +302 -0
  9. package/dist/cjs/navigation-menu.css +197 -0
  10. package/dist/cjs/pagination.cjs +462 -0
  11. package/dist/cjs/pagination.css +79 -0
  12. package/dist/cjs/sidebar.cjs +476 -0
  13. package/dist/cjs/sidebar.css +171 -0
  14. package/dist/cjs/stepper.cjs +270 -0
  15. package/dist/cjs/stepper.css +153 -0
  16. package/dist/cjs/tabs.cjs +260 -0
  17. package/dist/cjs/tabs.css +122 -0
  18. package/dist/cjs/top-navigation.cjs +363 -0
  19. package/dist/cjs/top-navigation.css +127 -0
  20. package/dist/cjs/tree-view.cjs +373 -0
  21. package/dist/cjs/tree-view.css +109 -0
  22. package/dist/cjs/workspace-switcher.cjs +249 -0
  23. package/dist/cjs/workspace-switcher.css +100 -0
  24. package/dist/esm/217.css +79 -0
  25. package/dist/esm/217.js +202 -0
  26. package/dist/esm/294.css +100 -0
  27. package/dist/esm/294.js +114 -0
  28. package/dist/esm/375.css +153 -0
  29. package/dist/esm/375.js +120 -0
  30. package/dist/esm/555.css +171 -0
  31. package/dist/esm/555.js +232 -0
  32. package/dist/esm/655.css +58 -0
  33. package/dist/esm/655.js +87 -0
  34. package/dist/esm/66.css +46 -0
  35. package/dist/esm/66.js +92 -0
  36. package/dist/esm/694.css +109 -0
  37. package/dist/esm/694.js +227 -0
  38. package/dist/esm/814.css +197 -0
  39. package/dist/esm/814.js +146 -0
  40. package/dist/esm/862.css +127 -0
  41. package/dist/esm/862.js +130 -0
  42. package/dist/esm/913.css +119 -0
  43. package/dist/esm/913.js +121 -0
  44. package/dist/esm/953.js +87 -0
  45. package/dist/esm/breadcrumbs.d.ts +2 -0
  46. package/dist/esm/breadcrumbs.js +1 -0
  47. package/dist/esm/command-navigation.d.ts +2 -0
  48. package/dist/esm/command-navigation.js +1 -0
  49. package/dist/esm/components/breadcrumbs/Breadcrumbs.css.d.ts +6 -0
  50. package/dist/esm/components/breadcrumbs/Breadcrumbs.d.ts +58 -0
  51. package/dist/esm/components/breadcrumbs/index.d.ts +1 -0
  52. package/dist/esm/components/command-navigation/CommandNavigation.css.d.ts +4 -0
  53. package/dist/esm/components/command-navigation/CommandNavigation.d.ts +50 -0
  54. package/dist/esm/components/command-navigation/index.d.ts +1 -0
  55. package/dist/esm/components/navigation-menu/NavigationMenu.css.d.ts +13 -0
  56. package/dist/esm/components/navigation-menu/NavigationMenu.d.ts +69 -0
  57. package/dist/esm/components/navigation-menu/index.d.ts +1 -0
  58. package/dist/esm/components/pagination/Pagination.css.d.ts +13 -0
  59. package/dist/esm/components/pagination/Pagination.d.ts +69 -0
  60. package/dist/esm/components/pagination/getPaginationRange.d.ts +15 -0
  61. package/dist/esm/components/pagination/index.d.ts +2 -0
  62. package/dist/esm/components/sidebar/Sidebar.css.d.ts +60 -0
  63. package/dist/esm/components/sidebar/Sidebar.d.ts +82 -0
  64. package/dist/esm/components/sidebar/index.d.ts +1 -0
  65. package/dist/esm/components/stepper/Stepper.css.d.ts +10 -0
  66. package/dist/esm/components/stepper/Stepper.d.ts +57 -0
  67. package/dist/esm/components/stepper/index.d.ts +1 -0
  68. package/dist/esm/components/tabs/Tabs.css.d.ts +6 -0
  69. package/dist/esm/components/tabs/Tabs.d.ts +39 -0
  70. package/dist/esm/components/tabs/index.d.ts +1 -0
  71. package/dist/esm/components/top-navigation/TopNavigation.css.d.ts +13 -0
  72. package/dist/esm/components/top-navigation/TopNavigation.d.ts +67 -0
  73. package/dist/esm/components/top-navigation/index.d.ts +1 -0
  74. package/dist/esm/components/tree-view/TreeView.css.d.ts +8 -0
  75. package/dist/esm/components/tree-view/TreeView.d.ts +43 -0
  76. package/dist/esm/components/tree-view/index.d.ts +1 -0
  77. package/dist/esm/components/workspace-switcher/WorkspaceSwitcher.css.d.ts +9 -0
  78. package/dist/esm/components/workspace-switcher/WorkspaceSwitcher.d.ts +43 -0
  79. package/dist/esm/components/workspace-switcher/index.d.ts +1 -0
  80. package/dist/esm/index.d.ts +10 -0
  81. package/dist/esm/index.js +10 -0
  82. package/dist/esm/navigation-menu.d.ts +2 -0
  83. package/dist/esm/navigation-menu.js +1 -0
  84. package/dist/esm/pagination.d.ts +2 -0
  85. package/dist/esm/pagination.js +1 -0
  86. package/dist/esm/sidebar.d.ts +2 -0
  87. package/dist/esm/sidebar.js +1 -0
  88. package/dist/esm/stepper.d.ts +2 -0
  89. package/dist/esm/stepper.js +1 -0
  90. package/dist/esm/tabs.d.ts +2 -0
  91. package/dist/esm/tabs.js +1 -0
  92. package/dist/esm/top-navigation.d.ts +2 -0
  93. package/dist/esm/top-navigation.js +1 -0
  94. package/dist/esm/tree-view.d.ts +2 -0
  95. package/dist/esm/tree-view.js +1 -0
  96. package/dist/esm/workspace-switcher.d.ts +2 -0
  97. package/dist/esm/workspace-switcher.js +1 -0
  98. package/package.json +146 -0
@@ -0,0 +1,227 @@
1
+ import "./694.css";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { ChevronRightIcon } from "@vinyasa/icons";
4
+ import { useThemedRef } from "@vinyasa/tokens";
5
+ import { createContext, forwardRef, useContext, useLayoutEffect, useRef, useState } from "react";
6
+ var expandTrigger = '_1o0hep24';
7
+ var expandTriggerSpacer = '_1o0hep25';
8
+ var group = '_1o0hep21';
9
+ var icon = '_1o0hep26';
10
+ var item = '_1o0hep22';
11
+ var label = '_1o0hep27';
12
+ var root = '_1o0hep20';
13
+ var row = '_1o0hep23';
14
+ const TreeViewContext = /*#__PURE__*/ createContext(null);
15
+ const useTreeViewContext = ()=>{
16
+ const context = useContext(TreeViewContext);
17
+ if (!context) throw new Error('TreeView parts must be rendered inside <TreeView.Root>.');
18
+ return context;
19
+ };
20
+ const TreeViewLevelContext = /*#__PURE__*/ createContext(1);
21
+ const TreeViewRoot = /*#__PURE__*/ forwardRef(({ selectedId, onSelect, expandedIds: expandedIdsProp, defaultExpandedIds = [], onExpandedChange, className, children, ...rest }, ref)=>{
22
+ const [internalExpandedIds, setInternalExpandedIds] = useState(defaultExpandedIds);
23
+ const [activeId, setActiveId] = useState(null);
24
+ const rootElementRef = useRef(null);
25
+ const themedRef = useThemedRef(ref);
26
+ const isControlled = void 0 !== expandedIdsProp;
27
+ const expandedIdsArray = isControlled ? expandedIdsProp : internalExpandedIds;
28
+ const expandedIds = new Set(expandedIdsArray);
29
+ const toggleExpanded = (id)=>{
30
+ const next = expandedIds.has(id) ? expandedIdsArray.filter((existing)=>existing !== id) : [
31
+ ...expandedIdsArray,
32
+ id
33
+ ];
34
+ if (!isControlled) setInternalExpandedIds(next);
35
+ onExpandedChange?.(next);
36
+ };
37
+ useLayoutEffect(()=>{
38
+ if (null !== activeId) return;
39
+ const firstItem = rootElementRef.current?.querySelector('[role="treeitem"]');
40
+ const firstId = firstItem?.dataset.treeId;
41
+ if (firstId) setActiveId(firstId);
42
+ }, [
43
+ activeId
44
+ ]);
45
+ const focusItem = (element)=>{
46
+ if (!element) return;
47
+ element.focus();
48
+ const id = element.dataset.treeId;
49
+ if (id) setActiveId(id);
50
+ };
51
+ const focusSibling = (rootElement, target, delta)=>{
52
+ const items = Array.from(rootElement.querySelectorAll('[role="treeitem"]'));
53
+ focusItem(items[items.indexOf(target) + delta]);
54
+ };
55
+ const focusFirst = (rootElement)=>{
56
+ focusItem(rootElement.querySelector('[role="treeitem"]'));
57
+ };
58
+ const focusLast = (rootElement)=>{
59
+ const items = rootElement.querySelectorAll('[role="treeitem"]');
60
+ focusItem(items[items.length - 1]);
61
+ };
62
+ const expandOrFocusFirstChild = (target, targetId)=>{
63
+ if ('true' !== target.dataset.hasChildren) return;
64
+ if ('true' !== target.getAttribute('aria-expanded')) return void toggleExpanded(targetId);
65
+ const childGroup = target.parentElement?.querySelector(':scope > [role="group"]');
66
+ focusItem(childGroup?.querySelector('[role="treeitem"]'));
67
+ };
68
+ const collapseOrFocusParent = (target, targetId)=>{
69
+ if ('true' === target.getAttribute('aria-expanded')) return void toggleExpanded(targetId);
70
+ const parentGroup = target.closest('[role="group"]');
71
+ focusItem(parentGroup?.parentElement?.querySelector(':scope > [role="treeitem"]'));
72
+ };
73
+ const keyHandlers = {
74
+ ArrowDown: (rootElement, target)=>{
75
+ focusSibling(rootElement, target, 1);
76
+ },
77
+ ArrowUp: (rootElement, target)=>{
78
+ focusSibling(rootElement, target, -1);
79
+ },
80
+ Home: (rootElement)=>{
81
+ focusFirst(rootElement);
82
+ },
83
+ End: (rootElement)=>{
84
+ focusLast(rootElement);
85
+ },
86
+ ArrowRight: (_rootElement, target, targetId)=>{
87
+ expandOrFocusFirstChild(target, targetId);
88
+ },
89
+ ArrowLeft: (_rootElement, target, targetId)=>{
90
+ collapseOrFocusParent(target, targetId);
91
+ },
92
+ Enter: (_rootElement, _target, targetId)=>{
93
+ onSelect?.(targetId);
94
+ },
95
+ ' ': (_rootElement, _target, targetId)=>{
96
+ onSelect?.(targetId);
97
+ }
98
+ };
99
+ const handleKeyDown = (event)=>{
100
+ const target = event.target;
101
+ if (!(target instanceof HTMLElement) || 'treeitem' !== target.getAttribute('role')) return;
102
+ const rootElement = rootElementRef.current;
103
+ const targetId = target.dataset.treeId;
104
+ const handler = keyHandlers[event.key];
105
+ if (!rootElement || !targetId || !handler) return;
106
+ event.preventDefault();
107
+ handler(rootElement, target, targetId);
108
+ };
109
+ return /*#__PURE__*/ jsx(TreeViewContext.Provider, {
110
+ value: {
111
+ expandedIds,
112
+ toggleExpanded,
113
+ selectedId,
114
+ onSelect: onSelect ?? (()=>void 0),
115
+ activeId,
116
+ setActiveId
117
+ },
118
+ children: /*#__PURE__*/ jsx("ul", {
119
+ ref: (node)=>{
120
+ rootElementRef.current = node;
121
+ if ('function' == typeof themedRef) themedRef(node);
122
+ },
123
+ role: "tree",
124
+ className: className ? `${root} ${className}` : root,
125
+ onKeyDown: handleKeyDown,
126
+ ...rest,
127
+ children: children
128
+ })
129
+ });
130
+ });
131
+ TreeViewRoot.displayName = 'TreeViewRoot';
132
+ const TreeViewGroup = ({ className, children, ...rest })=>{
133
+ const level = useContext(TreeViewLevelContext);
134
+ return /*#__PURE__*/ jsx(TreeViewLevelContext.Provider, {
135
+ value: level + 1,
136
+ children: /*#__PURE__*/ jsx("ul", {
137
+ role: "group",
138
+ className: className ? `${group} ${className}` : group,
139
+ ...rest,
140
+ children: children
141
+ })
142
+ });
143
+ };
144
+ TreeViewGroup.displayName = 'TreeViewGroup';
145
+ const TreeViewItem = ({ id, label: labelContent, icon: iconContent, disabled, children, className, ...rest })=>{
146
+ const { expandedIds, toggleExpanded, selectedId, onSelect, activeId, setActiveId } = useTreeViewContext();
147
+ const level = useContext(TreeViewLevelContext);
148
+ const hasChildren = Boolean(children);
149
+ const isExpanded = expandedIds.has(id);
150
+ const isSelected = selectedId === id;
151
+ return /*#__PURE__*/ jsxs("li", {
152
+ className: className ? `${item} ${className}` : item,
153
+ role: "none",
154
+ ...rest,
155
+ children: [
156
+ /*#__PURE__*/ jsxs("div", {
157
+ role: "treeitem",
158
+ "data-tree-id": id,
159
+ "data-has-children": hasChildren,
160
+ "aria-expanded": hasChildren ? isExpanded : void 0,
161
+ "aria-selected": isSelected,
162
+ "aria-disabled": disabled,
163
+ "aria-level": level,
164
+ tabIndex: activeId === id ? 0 : -1,
165
+ className: row,
166
+ onFocus: ()=>{
167
+ setActiveId(id);
168
+ },
169
+ onClick: ()=>{
170
+ if (disabled) return;
171
+ onSelect(id);
172
+ if (hasChildren) toggleExpanded(id);
173
+ },
174
+ children: [
175
+ hasChildren ? /*#__PURE__*/ jsx("button", {
176
+ type: "button",
177
+ tabIndex: -1,
178
+ "aria-hidden": "true",
179
+ "data-expanded": isExpanded,
180
+ className: expandTrigger,
181
+ onClick: (event)=>{
182
+ event.stopPropagation();
183
+ if (!disabled) toggleExpanded(id);
184
+ },
185
+ children: /*#__PURE__*/ jsx(ChevronRightIcon, {})
186
+ }) : /*#__PURE__*/ jsx("span", {
187
+ className: expandTriggerSpacer,
188
+ "aria-hidden": "true"
189
+ }),
190
+ iconContent ? /*#__PURE__*/ jsx("span", {
191
+ className: icon,
192
+ "aria-hidden": "true",
193
+ children: iconContent
194
+ }) : null,
195
+ /*#__PURE__*/ jsx("span", {
196
+ className: label,
197
+ children: labelContent
198
+ })
199
+ ]
200
+ }),
201
+ hasChildren && isExpanded ? children : null
202
+ ]
203
+ });
204
+ };
205
+ TreeViewItem.displayName = 'TreeViewItem';
206
+ const renderNodes = (nodes)=>/*#__PURE__*/ jsx(Fragment, {
207
+ children: nodes.map((node)=>/*#__PURE__*/ jsx(TreeViewItem, {
208
+ id: node.id,
209
+ label: node.label,
210
+ icon: node.icon,
211
+ disabled: node.disabled,
212
+ children: node.children && node.children.length > 0 ? /*#__PURE__*/ jsx(TreeViewGroup, {
213
+ children: renderNodes(node.children)
214
+ }) : void 0
215
+ }, node.id))
216
+ });
217
+ const TreeViewImpl = ({ items, ...rest })=>/*#__PURE__*/ jsx(TreeViewRoot, {
218
+ ...rest,
219
+ children: renderNodes(items)
220
+ });
221
+ TreeViewImpl.displayName = 'TreeView';
222
+ const TreeView = Object.assign(TreeViewImpl, {
223
+ Root: TreeViewRoot,
224
+ Group: TreeViewGroup,
225
+ Item: TreeViewItem
226
+ });
227
+ export { TreeView };
@@ -0,0 +1,197 @@
1
+ @keyframes bzjbii7 {
2
+ from {
3
+ opacity: 0;
4
+ transform: translateY(-.25rem);
5
+ }
6
+
7
+ to {
8
+ opacity: 1;
9
+ transform: translateY(0);
10
+ }
11
+ }
12
+
13
+ .bzjbii0 {
14
+ position: relative;
15
+ }
16
+
17
+ .bzjbii1 {
18
+ align-items: center;
19
+ gap: var(--vinyasa-space1);
20
+ margin: 0;
21
+ padding: 0;
22
+ list-style: none;
23
+ display: flex;
24
+ position: relative;
25
+ }
26
+
27
+ .bzjbii2 {
28
+ align-items: center;
29
+ gap: var(--vinyasa-space1);
30
+ height: 2.5rem;
31
+ padding: 0 var(--vinyasa-space3);
32
+ border-radius: var(--vinyasa-radius-sm);
33
+ color: var(--vinyasa-text-muted);
34
+ font-family: var(--vinyasa-font-family-sans);
35
+ font-size: var(--vinyasa-font-size-sm);
36
+ font-weight: var(--vinyasa-font-weight-medium);
37
+ cursor: pointer;
38
+ transition: background-color var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard), color var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard);
39
+ background-color: #0000;
40
+ border: none;
41
+ display: inline-flex;
42
+ }
43
+
44
+ .bzjbii2:hover {
45
+ background-color: var(--vinyasa-secondary);
46
+ color: var(--vinyasa-text-default);
47
+ }
48
+
49
+ .bzjbii2:focus-visible {
50
+ outline: 2px solid var(--vinyasa-focus);
51
+ outline-offset: -2px;
52
+ }
53
+
54
+ .bzjbii2[data-state="open"] {
55
+ background-color: var(--vinyasa-secondary);
56
+ color: var(--vinyasa-text-default);
57
+ }
58
+
59
+ .bzjbii3 {
60
+ transition: transform var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard);
61
+ font-size: .875rem;
62
+ display: inline-flex;
63
+ }
64
+
65
+ [data-state="open"] > .bzjbii3 {
66
+ transform: rotate(180deg);
67
+ }
68
+
69
+ .bzjbii4 {
70
+ height: 2.5rem;
71
+ padding: 0 var(--vinyasa-space3);
72
+ border-radius: var(--vinyasa-radius-sm);
73
+ color: var(--vinyasa-text-muted);
74
+ font-family: var(--vinyasa-font-family-sans);
75
+ font-size: var(--vinyasa-font-size-sm);
76
+ font-weight: var(--vinyasa-font-weight-medium);
77
+ cursor: pointer;
78
+ transition: background-color var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard), color var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard);
79
+ align-items: center;
80
+ text-decoration: none;
81
+ display: inline-flex;
82
+ }
83
+
84
+ .bzjbii4:hover {
85
+ background-color: var(--vinyasa-secondary);
86
+ color: var(--vinyasa-text-default);
87
+ }
88
+
89
+ .bzjbii4:focus-visible {
90
+ outline: 2px solid var(--vinyasa-focus);
91
+ outline-offset: -2px;
92
+ }
93
+
94
+ .bzjbii4[data-active] {
95
+ background-color: var(--vinyasa-tertiary);
96
+ color: var(--vinyasa-on-tertiary);
97
+ font-weight: var(--vinyasa-font-weight-semibold);
98
+ }
99
+
100
+ .bzjbii5 {
101
+ background-color: var(--vinyasa-primary);
102
+ height: 2px;
103
+ transition: transform var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard), width var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard);
104
+ bottom: 0;
105
+ }
106
+
107
+ .bzjbii5[data-state="hidden"] {
108
+ opacity: 0;
109
+ }
110
+
111
+ .bzjbii6 {
112
+ width: 100%;
113
+ padding-top: var(--vinyasa-space2);
114
+ justify-content: center;
115
+ display: flex;
116
+ position: absolute;
117
+ top: 100%;
118
+ left: 0;
119
+ }
120
+
121
+ .bzjbii8 {
122
+ transform-origin: top;
123
+ width: var(--radix-navigation-menu-viewport-width);
124
+ height: var(--radix-navigation-menu-viewport-height);
125
+ border-radius: var(--vinyasa-radius-md);
126
+ background-color: var(--vinyasa-surface);
127
+ box-shadow: var(--vinyasa-elevation-overlay);
128
+ transition: width var(--vinyasa-motion-duration-normal) var(--vinyasa-motion-easing-standard), height var(--vinyasa-motion-duration-normal) var(--vinyasa-motion-easing-standard);
129
+ flex-shrink: 0;
130
+ position: relative;
131
+ overflow: hidden;
132
+ }
133
+
134
+ .bzjbii9 {
135
+ padding: var(--vinyasa-space4);
136
+ position: absolute;
137
+ top: 0;
138
+ left: 0;
139
+ }
140
+
141
+ .bzjbii9[data-state="open"] {
142
+ animation: bzjbii7 var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard);
143
+ }
144
+
145
+ .bzjbiia {
146
+ gap: var(--vinyasa-space2);
147
+ grid-template-columns: repeat(2, minmax(12rem, 1fr));
148
+ display: grid;
149
+ }
150
+
151
+ .bzjbiib {
152
+ align-items: flex-start;
153
+ gap: var(--vinyasa-space1);
154
+ height: auto;
155
+ padding: var(--vinyasa-space3);
156
+ border-radius: var(--vinyasa-radius-sm);
157
+ color: inherit;
158
+ transition: background-color var(--vinyasa-motion-duration-fast) var(--vinyasa-motion-easing-standard);
159
+ flex-direction: column;
160
+ text-decoration: none;
161
+ display: flex;
162
+ }
163
+
164
+ .bzjbiib:hover {
165
+ background-color: var(--vinyasa-secondary);
166
+ }
167
+
168
+ .bzjbiib:focus-visible {
169
+ outline: 2px solid var(--vinyasa-focus);
170
+ outline-offset: -2px;
171
+ }
172
+
173
+ .bzjbiib[data-active] {
174
+ background-color: var(--vinyasa-tertiary);
175
+ }
176
+
177
+ .bzjbiic {
178
+ font-size: var(--vinyasa-font-size-sm);
179
+ font-weight: var(--vinyasa-font-weight-medium);
180
+ color: var(--vinyasa-text-default);
181
+ }
182
+
183
+ [data-active] .bzjbiic {
184
+ color: var(--vinyasa-on-tertiary);
185
+ font-weight: var(--vinyasa-font-weight-semibold);
186
+ }
187
+
188
+ .bzjbiid {
189
+ font-size: var(--vinyasa-font-size-xs);
190
+ color: var(--vinyasa-text-muted);
191
+ }
192
+
193
+ [data-active] .bzjbiid {
194
+ color: var(--vinyasa-on-tertiary);
195
+ opacity: .8;
196
+ }
197
+
@@ -0,0 +1,146 @@
1
+ import "./814.css";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { ChevronDownIcon } from "@vinyasa/icons";
4
+ import { useThemedRef } from "@vinyasa/tokens";
5
+ import { forwardRef } from "react";
6
+ import * as __rspack_external__radix_ui_react_navigation_menu_25af01f6 from "@radix-ui/react-navigation-menu";
7
+ var content = 'bzjbii9';
8
+ var contentGrid = 'bzjbiia';
9
+ var contentLink = 'bzjbiib';
10
+ var contentLinkDescription = 'bzjbiid';
11
+ var contentLinkTitle = 'bzjbiic';
12
+ var indicator = 'bzjbii5';
13
+ var NavigationMenu_css_link = 'bzjbii4';
14
+ var list = 'bzjbii1';
15
+ var root = 'bzjbii0';
16
+ var trigger = 'bzjbii2';
17
+ var triggerIcon = 'bzjbii3';
18
+ var viewport = 'bzjbii8';
19
+ var viewportPosition = 'bzjbii6';
20
+ const NavigationMenuRoot = /*#__PURE__*/ forwardRef(({ className, children, ...rest }, ref)=>{
21
+ const themedRef = useThemedRef(ref);
22
+ return /*#__PURE__*/ jsx(__rspack_external__radix_ui_react_navigation_menu_25af01f6.Root, {
23
+ ref: themedRef,
24
+ className: className ? `${root} ${className}` : root,
25
+ ...rest,
26
+ children: children
27
+ });
28
+ });
29
+ NavigationMenuRoot.displayName = 'NavigationMenuRoot';
30
+ const NavigationMenuList = ({ className, ...rest })=>/*#__PURE__*/ jsx(__rspack_external__radix_ui_react_navigation_menu_25af01f6.List, {
31
+ className: className ? `${list} ${className}` : list,
32
+ ...rest
33
+ });
34
+ NavigationMenuList.displayName = 'NavigationMenuList';
35
+ const NavigationMenuItem = __rspack_external__radix_ui_react_navigation_menu_25af01f6.Item;
36
+ const NavigationMenuTrigger = /*#__PURE__*/ forwardRef(({ className, children, ...rest }, ref)=>/*#__PURE__*/ jsxs(__rspack_external__radix_ui_react_navigation_menu_25af01f6.Trigger, {
37
+ ref: ref,
38
+ className: className ? `${trigger} ${className}` : trigger,
39
+ ...rest,
40
+ children: [
41
+ children,
42
+ /*#__PURE__*/ jsx(ChevronDownIcon, {
43
+ className: triggerIcon,
44
+ "aria-hidden": true
45
+ })
46
+ ]
47
+ }));
48
+ NavigationMenuTrigger.displayName = 'NavigationMenuTrigger';
49
+ const NavigationMenuLink = ({ className, ...rest })=>/*#__PURE__*/ jsx(__rspack_external__radix_ui_react_navigation_menu_25af01f6.Link, {
50
+ className: className ? `${NavigationMenu_css_link} ${className}` : NavigationMenu_css_link,
51
+ ...rest
52
+ });
53
+ NavigationMenuLink.displayName = 'NavigationMenuLink';
54
+ const NavigationMenuContent = ({ className, ...rest })=>/*#__PURE__*/ jsx(__rspack_external__radix_ui_react_navigation_menu_25af01f6.Content, {
55
+ className: className ? `${content} ${className}` : content,
56
+ ...rest
57
+ });
58
+ NavigationMenuContent.displayName = 'NavigationMenuContent';
59
+ const NavigationMenuIndicator = ({ className, ...rest })=>/*#__PURE__*/ jsx(__rspack_external__radix_ui_react_navigation_menu_25af01f6.Indicator, {
60
+ className: className ? `${indicator} ${className}` : indicator,
61
+ ...rest
62
+ });
63
+ NavigationMenuIndicator.displayName = 'NavigationMenuIndicator';
64
+ const NavigationMenuViewport = ({ className, ...rest })=>/*#__PURE__*/ jsx("div", {
65
+ className: viewportPosition,
66
+ children: /*#__PURE__*/ jsx(__rspack_external__radix_ui_react_navigation_menu_25af01f6.Viewport, {
67
+ className: className ? `${viewport} ${className}` : viewport,
68
+ ...rest
69
+ })
70
+ });
71
+ NavigationMenuViewport.displayName = 'NavigationMenuViewport';
72
+ const SimpleLink = ({ href, active, linkComponent: Link, className, children })=>{
73
+ if (Link) return /*#__PURE__*/ jsx(NavigationMenuLink, {
74
+ asChild: true,
75
+ active: active,
76
+ className: className,
77
+ children: /*#__PURE__*/ jsx(Link, {
78
+ href: href,
79
+ children: children
80
+ })
81
+ });
82
+ return /*#__PURE__*/ jsx(NavigationMenuLink, {
83
+ href: href,
84
+ active: active,
85
+ className: className,
86
+ children: children
87
+ });
88
+ };
89
+ const NavigationMenuImpl = ({ items, linkComponent, ...rest })=>/*#__PURE__*/ jsxs(NavigationMenuRoot, {
90
+ ...rest,
91
+ children: [
92
+ /*#__PURE__*/ jsxs(NavigationMenuList, {
93
+ children: [
94
+ items.map((itemSpec)=>/*#__PURE__*/ jsx(NavigationMenuItem, {
95
+ children: itemSpec.links ? /*#__PURE__*/ jsxs(Fragment, {
96
+ children: [
97
+ /*#__PURE__*/ jsx(NavigationMenuTrigger, {
98
+ children: itemSpec.label
99
+ }),
100
+ /*#__PURE__*/ jsx(NavigationMenuContent, {
101
+ children: /*#__PURE__*/ jsx("div", {
102
+ className: contentGrid,
103
+ children: itemSpec.links.map((linkSpec)=>/*#__PURE__*/ jsxs(SimpleLink, {
104
+ href: linkSpec.href,
105
+ active: linkSpec.active,
106
+ linkComponent: linkComponent,
107
+ className: contentLink,
108
+ children: [
109
+ /*#__PURE__*/ jsx("span", {
110
+ className: contentLinkTitle,
111
+ children: linkSpec.label
112
+ }),
113
+ linkSpec.description ? /*#__PURE__*/ jsx("span", {
114
+ className: contentLinkDescription,
115
+ children: linkSpec.description
116
+ }) : null
117
+ ]
118
+ }, linkSpec.key))
119
+ })
120
+ })
121
+ ]
122
+ }) : /*#__PURE__*/ jsx(SimpleLink, {
123
+ href: itemSpec.href,
124
+ active: itemSpec.active,
125
+ linkComponent: linkComponent,
126
+ children: itemSpec.label
127
+ })
128
+ }, itemSpec.key)),
129
+ /*#__PURE__*/ jsx(NavigationMenuIndicator, {})
130
+ ]
131
+ }),
132
+ /*#__PURE__*/ jsx(NavigationMenuViewport, {})
133
+ ]
134
+ });
135
+ NavigationMenuImpl.displayName = 'NavigationMenu';
136
+ const NavigationMenu = Object.assign(NavigationMenuImpl, {
137
+ Root: NavigationMenuRoot,
138
+ List: NavigationMenuList,
139
+ Item: NavigationMenuItem,
140
+ Trigger: NavigationMenuTrigger,
141
+ Link: NavigationMenuLink,
142
+ Content: NavigationMenuContent,
143
+ Indicator: NavigationMenuIndicator,
144
+ Viewport: NavigationMenuViewport
145
+ });
146
+ export { NavigationMenu };
@@ -0,0 +1,127 @@
1
+ ._383lbb0 {
2
+ align-items: center;
3
+ gap: var(--vinyasa-space4);
4
+ height: 3.5rem;
5
+ padding: 0 var(--vinyasa-space4);
6
+ background-color: var(--vinyasa-surface);
7
+ border-bottom: var(--vinyasa-border-width-thin) solid var(--vinyasa-border-color-default);
8
+ display: flex;
9
+ position: relative;
10
+ }
11
+
12
+ ._383lbb1 {
13
+ font-family: var(--vinyasa-font-family-sans);
14
+ font-size: var(--vinyasa-font-size-md);
15
+ font-weight: var(--vinyasa-font-weight-semibold);
16
+ color: var(--vinyasa-text-default);
17
+ flex-shrink: 0;
18
+ align-items: center;
19
+ text-decoration: none;
20
+ display: flex;
21
+ }
22
+
23
+ ._383lbb2 {
24
+ align-items: center;
25
+ gap: var(--vinyasa-space1);
26
+ flex: 1;
27
+ display: flex;
28
+ }
29
+
30
+ ._383lbb3 {
31
+ align-items: center;
32
+ gap: var(--vinyasa-space2);
33
+ flex-shrink: 0;
34
+ display: flex;
35
+ }
36
+
37
+ ._383lbb4 {
38
+ height: 100%;
39
+ padding: 0 var(--vinyasa-space3);
40
+ color: var(--vinyasa-text-muted);
41
+ font-family: var(--vinyasa-font-family-sans);
42
+ font-size: var(--vinyasa-font-size-sm);
43
+ font-weight: var(--vinyasa-font-weight-medium);
44
+ cursor: pointer;
45
+ white-space: nowrap;
46
+ background-color: #0000;
47
+ border: none;
48
+ border-bottom: 2px solid #0000;
49
+ align-items: center;
50
+ text-decoration: none;
51
+ display: inline-flex;
52
+ }
53
+
54
+ ._383lbb4:hover:not(:disabled) {
55
+ color: var(--vinyasa-text-default);
56
+ }
57
+
58
+ ._383lbb4:focus-visible {
59
+ outline: 2px solid var(--vinyasa-focus);
60
+ outline-offset: -2px;
61
+ }
62
+
63
+ ._383lbb4:disabled {
64
+ opacity: var(--vinyasa-opacity-disabled);
65
+ cursor: not-allowed;
66
+ }
67
+
68
+ ._383lbb5 {
69
+ border-bottom-color: var(--vinyasa-primary);
70
+ color: var(--vinyasa-text-default);
71
+ }
72
+
73
+ ._383lbb6 {
74
+ border-radius: var(--vinyasa-radius-sm);
75
+ width: 2rem;
76
+ height: 2rem;
77
+ color: var(--vinyasa-text-default);
78
+ cursor: pointer;
79
+ background-color: #0000;
80
+ border: none;
81
+ flex-shrink: 0;
82
+ justify-content: center;
83
+ align-items: center;
84
+ margin-left: auto;
85
+ display: none;
86
+ }
87
+
88
+ ._383lbb6:hover {
89
+ background-color: var(--vinyasa-secondary);
90
+ }
91
+
92
+ ._383lbb6:focus-visible {
93
+ outline: 2px solid var(--vinyasa-focus);
94
+ outline-offset: 2px;
95
+ }
96
+
97
+ @media (max-width: 768px) {
98
+ ._383lbb2 {
99
+ padding: var(--vinyasa-space2);
100
+ background-color: var(--vinyasa-surface);
101
+ border-bottom: var(--vinyasa-border-width-thin) solid var(--vinyasa-border-color-default);
102
+ box-shadow: var(--vinyasa-elevation-overlay);
103
+ flex-direction: column;
104
+ align-items: stretch;
105
+ gap: 0;
106
+ position: absolute;
107
+ top: 100%;
108
+ left: 0;
109
+ right: 0;
110
+ }
111
+
112
+ ._383lbb2:not([data-open="true"]) {
113
+ display: none;
114
+ }
115
+
116
+ ._383lbb4 {
117
+ height: auto;
118
+ padding: var(--vinyasa-space3) var(--vinyasa-space3);
119
+ border-radius: var(--vinyasa-radius-sm);
120
+ border-bottom: none;
121
+ }
122
+
123
+ ._383lbb6 {
124
+ display: inline-flex;
125
+ }
126
+ }
127
+