@ngrok/mantle 0.81.1 → 0.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion.js +1 -1
- package/dist/agent.json +4 -1
- package/dist/alert-BWwNPOMI.d.ts +391 -0
- package/dist/alert-QMs0PqMq.js +1 -0
- package/dist/alert-center.d.ts +449 -0
- package/dist/alert-center.js +1 -0
- package/dist/alert-dialog.js +1 -1
- package/dist/alert.d.ts +1 -390
- package/dist/alert.js +1 -1
- package/dist/{anchor-DfeXTpKW.js → anchor-DvbNsphX.js} +1 -1
- package/dist/anchor.js +1 -1
- package/dist/app-layout.d.ts +483 -0
- package/dist/app-layout.js +1 -0
- package/dist/area-chart.js +1 -1
- package/dist/badge.js +1 -1
- package/dist/bar-chart.js +1 -1
- package/dist/breadcrumb.d.ts +1 -1
- package/dist/breadcrumb.js +1 -1
- package/dist/browser-only-CmEEzfU3.js +1 -0
- package/dist/browser-only.js +1 -1
- package/dist/{button-D9n09xUg.js → button-BO2CKsz6.js} +1 -1
- package/dist/{button-DjpEKt2X.js → button-BUospUB3.js} +1 -1
- package/dist/{button-BAno7KIU.js → button-C0S8RbaJ.js} +1 -1
- package/dist/button.js +1 -1
- package/dist/calendar.d.ts +1 -1
- package/dist/card.js +1 -1
- package/dist/centered-layout.d.ts +9 -9
- package/dist/centered-layout.js +1 -1
- package/dist/chart-DdBQ3xwx.js +2 -0
- package/dist/{choice-BHwFSSyv.js → choice-C9gLKECf.js} +1 -1
- package/dist/choice.js +1 -1
- package/dist/code-block.js +1 -1
- package/dist/code.js +1 -1
- package/dist/combobox.js +1 -1
- package/dist/command.js +1 -1
- package/dist/{copy-to-clipboard-BsCQ9m6K.js → copy-to-clipboard-B4UB6pts.js} +1 -1
- package/dist/data-slot-EM6s2WEU.js +1 -0
- package/dist/data-table.js +1 -1
- package/dist/description-list.js +1 -1
- package/dist/{dialog-DWZWd5Jt.js → dialog-Bsj_dX6r.js} +1 -1
- package/dist/dialog.d.ts +1 -1
- package/dist/dialog.js +1 -1
- package/dist/dropdown-menu-fUMqjRC0.js +1 -0
- package/dist/dropdown-menu.js +1 -1
- package/dist/empty.js +1 -1
- package/dist/field.js +1 -1
- package/dist/hooks.js +1 -1
- package/dist/{icons-DLCs1hLP.js → icons-CPbOq7cF.js} +1 -1
- package/dist/icons.js +1 -1
- package/dist/input.js +1 -1
- package/dist/line-chart.js +1 -1
- package/dist/{list-51KQvENW.js → list-CQFWx6Z8.js} +1 -1
- package/dist/list.js +1 -1
- package/dist/llms.txt +4 -1
- package/dist/main.d.ts +4 -1
- package/dist/main.js +1 -1
- package/dist/mantle.css +21 -1
- package/dist/media-object.js +1 -1
- package/dist/multi-select.d.ts +10 -2
- package/dist/multi-select.js +1 -1
- package/dist/otp-input.js +1 -1
- package/dist/pagination.js +1 -1
- package/dist/{primitive-trJDqIXJ.js → primitive-Dv-3snU3.js} +1 -1
- package/dist/progress.d.ts +8 -8
- package/dist/qr-code.js +1 -1
- package/dist/radio-group.d.ts +10 -0
- package/dist/radio-group.js +1 -1
- package/dist/sandboxed-on-click.js +1 -1
- package/dist/scatter-plot.d.ts +2 -1
- package/dist/scatter-plot.js +1 -1
- package/dist/{select-BCHWvmyC.js → select-B-9yWrif.js} +1 -1
- package/dist/select.js +1 -1
- package/dist/selectable-list.js +1 -1
- package/dist/{separator-bpE_kooz.js → separator-BepAcFFy.js} +1 -1
- package/dist/separator.js +1 -1
- package/dist/sheet-_fXLjiq2.js +1 -0
- package/dist/sheet.d.ts +1 -1
- package/dist/sheet.js +1 -1
- package/dist/sidebar.d.ts +2084 -0
- package/dist/sidebar.js +1 -0
- package/dist/{skeleton-CsbUHbBA.js → skeleton-DsHXIa9j.js} +1 -1
- package/dist/skeleton.js +1 -1
- package/dist/skip-to-main-link.js +1 -1
- package/dist/slot-Dpsqz16D.js +1 -0
- package/dist/slot.js +1 -1
- package/dist/split-button.js +1 -1
- package/dist/tabs.js +1 -1
- package/dist/{theme-C26-Xolp.js → theme-IAnQ35bd.js} +1 -1
- package/dist/theme-switcher.js +1 -1
- package/dist/theme.js +1 -1
- package/dist/toast.js +1 -1
- package/dist/use-breakpoint-Wd7_5-Mu.js +1 -0
- package/dist/use-copy-to-clipboard-CSyp4Zk0.js +1 -0
- package/dist/use-is-hydrated-DDCqXmju.js +1 -0
- package/dist/{use-prefers-reduced-motion-CagaNRgm.js → use-prefers-reduced-motion-Bk5zAfHY.js} +1 -1
- package/dist/utils.js +1 -1
- package/dist/well.js +1 -1
- package/package.json +16 -13
- package/dist/browser-only-CPH56Xw_.js +0 -1
- package/dist/chart-Do2qkrxl.js +0 -2
- package/dist/dropdown-menu-RyDWoKHx.js +0 -1
- package/dist/slot-CDk0Bb9z.js +0 -1
- package/dist/use-copy-to-clipboard-DqQ0_N3E.js +0 -1
|
@@ -0,0 +1,2084 @@
|
|
|
1
|
+
import { n as WithAsChild } from "./as-child-D23mGo4f.js";
|
|
2
|
+
import { n as IconButtonProps } from "./button-C7vAl6lS.js";
|
|
3
|
+
import { t as WithDataSlot } from "./data-slot-CChfb_cv.js";
|
|
4
|
+
import { n as Separator } from "./separator-B5UmkVRL.js";
|
|
5
|
+
import { ComponentProps, ReactNode } from "react";
|
|
6
|
+
//#region src/components/sidebar/sidebar.d.ts
|
|
7
|
+
/**
|
|
8
|
+
* The breakpoints below which `Sidebar.Nav` swaps from the inline desktop
|
|
9
|
+
* panel to the mobile `Sheet` presentation. Kept to a closed set because the
|
|
10
|
+
* pre-hydration visibility classes are static strings (Tailwind cannot see
|
|
11
|
+
* interpolated class names).
|
|
12
|
+
*
|
|
13
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* <Sidebar.Root mobileBreakpoint="md">…</Sidebar.Root>
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
type SidebarMobileBreakpoint = "sm" | "md" | "lg";
|
|
21
|
+
/**
|
|
22
|
+
* The state and actions shared by every part under a `Sidebar.Root`, returned
|
|
23
|
+
* by {@link useSidebar}. Use it to build custom triggers, keyboard shortcuts,
|
|
24
|
+
* or close-on-navigate behavior.
|
|
25
|
+
*
|
|
26
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```tsx
|
|
30
|
+
* function CollapseSidebarButton() {
|
|
31
|
+
* const { open, toggle } = useSidebar();
|
|
32
|
+
* return (
|
|
33
|
+
* <button type="button" onClick={toggle}>
|
|
34
|
+
* {open ? "Collapse" : "Expand"} sidebar
|
|
35
|
+
* </button>
|
|
36
|
+
* );
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
type SidebarState = {
|
|
41
|
+
/**
|
|
42
|
+
* Whether the desktop sidebar is expanded. Mirrored as
|
|
43
|
+
* `data-state="expanded" | "collapsed"` on `Sidebar.Nav`.
|
|
44
|
+
*/
|
|
45
|
+
open: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Set the desktop expanded state. Calls `onOpenChange` and, when
|
|
48
|
+
* uncontrolled, updates the internal state.
|
|
49
|
+
*/
|
|
50
|
+
setOpen: (open: boolean) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Whether the mobile sheet is open. Only meaningful when `isMobile`.
|
|
53
|
+
*/
|
|
54
|
+
openMobile: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Set the mobile sheet open state. Calls `onOpenMobileChange` and, when
|
|
57
|
+
* uncontrolled, updates the internal state. Use it to close the sheet on
|
|
58
|
+
* navigation.
|
|
59
|
+
*/
|
|
60
|
+
setOpenMobile: (open: boolean) => void;
|
|
61
|
+
/**
|
|
62
|
+
* `true` when the viewport is below `mobileBreakpoint`. `false` during SSR
|
|
63
|
+
* and the hydration render (desktop-first).
|
|
64
|
+
*/
|
|
65
|
+
isMobile: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* The breakpoint below which the sidebar renders as a mobile sheet.
|
|
68
|
+
*/
|
|
69
|
+
mobileBreakpoint: SidebarMobileBreakpoint;
|
|
70
|
+
/**
|
|
71
|
+
* Toggle the sidebar: the mobile sheet when `isMobile`, the desktop
|
|
72
|
+
* expanded state otherwise. This is what `Sidebar.Trigger` calls.
|
|
73
|
+
*/
|
|
74
|
+
toggle: () => void;
|
|
75
|
+
/**
|
|
76
|
+
* The generated id of the sidebar's `<nav>` landmark. `Sidebar.Trigger`
|
|
77
|
+
* references it via `aria-controls`; reuse it when building custom
|
|
78
|
+
* triggers.
|
|
79
|
+
*/
|
|
80
|
+
navId: string;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Read the nearest `Sidebar.Root` state. Throws when called outside a
|
|
84
|
+
* `Sidebar.Root` so misuse fails loudly. Use it to build custom triggers,
|
|
85
|
+
* a keyboard shortcut, or close-on-navigate behavior.
|
|
86
|
+
*
|
|
87
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```tsx
|
|
91
|
+
* function CloseSidebarOnNavigate() {
|
|
92
|
+
* const { setOpenMobile } = useSidebar();
|
|
93
|
+
* const location = useLocation();
|
|
94
|
+
* useEffect(() => {
|
|
95
|
+
* setOpenMobile(false);
|
|
96
|
+
* }, [location.pathname, setOpenMobile]);
|
|
97
|
+
* return null;
|
|
98
|
+
* }
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
declare function useSidebar(): SidebarState;
|
|
102
|
+
type SidebarRootProps = {
|
|
103
|
+
children?: ReactNode;
|
|
104
|
+
/**
|
|
105
|
+
* The initial desktop expanded state for the uncontrolled case.
|
|
106
|
+
*
|
|
107
|
+
* @default true
|
|
108
|
+
*/
|
|
109
|
+
defaultOpen?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Controlled desktop expanded state. Pair with `onOpenChange`.
|
|
112
|
+
*/
|
|
113
|
+
open?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Called with the next desktop expanded state whenever it changes.
|
|
116
|
+
*/
|
|
117
|
+
onOpenChange?: (open: boolean) => void;
|
|
118
|
+
/**
|
|
119
|
+
* Controlled mobile sheet open state. Pair with `onOpenMobileChange`.
|
|
120
|
+
*/
|
|
121
|
+
openMobile?: boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Called with the next mobile sheet open state whenever it changes.
|
|
124
|
+
*/
|
|
125
|
+
onOpenMobileChange?: (open: boolean) => void;
|
|
126
|
+
/**
|
|
127
|
+
* The breakpoint below which `Sidebar.Nav` renders as a mobile `Sheet`
|
|
128
|
+
* instead of the inline desktop panel.
|
|
129
|
+
*
|
|
130
|
+
* @default "lg"
|
|
131
|
+
*/
|
|
132
|
+
mobileBreakpoint?: SidebarMobileBreakpoint;
|
|
133
|
+
/**
|
|
134
|
+
* Toggle the sidebar with `⌘B` (macOS) / `Ctrl+B` (Windows/Linux). The
|
|
135
|
+
* shortcut requires exactly the platform modifier + `b` — combinations with
|
|
136
|
+
* `Shift`/`Alt` (e.g. the browser's own `⌘⇧B`) are left alone. Set `false`
|
|
137
|
+
* to opt out, e.g. when the app embeds a rich-text editor where `⌘B` means
|
|
138
|
+
* bold.
|
|
139
|
+
*
|
|
140
|
+
* The shortcut has exactly one owner per window: the first mounted root
|
|
141
|
+
* with the shortcut enabled. Additional roots (nested or siblings) queue
|
|
142
|
+
* and take ownership only when the owner unmounts, so composing a second
|
|
143
|
+
* sidebar never makes one keypress toggle both.
|
|
144
|
+
*
|
|
145
|
+
* @default true
|
|
146
|
+
*/
|
|
147
|
+
keyboardShortcut?: boolean;
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* The state owner for a sidebar. Renders no DOM of its own (like
|
|
151
|
+
* `Tooltip.Root`) — it provides the expanded/collapsed and mobile-sheet state
|
|
152
|
+
* to every part below it, so `Sidebar.Trigger` can live anywhere in the tree
|
|
153
|
+
* (for example inside an `AppLayout.Header`) without coupling the app shell
|
|
154
|
+
* to the sidebar.
|
|
155
|
+
*
|
|
156
|
+
* Render exactly one `Sidebar.Nav` per `Sidebar.Root`. Nested roots shadow
|
|
157
|
+
* the outer sidebar for everything below them.
|
|
158
|
+
*
|
|
159
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```tsx
|
|
163
|
+
* <Sidebar.Root>
|
|
164
|
+
* <Sidebar.Nav aria-label="Main">
|
|
165
|
+
* <Sidebar.Header>…</Sidebar.Header>
|
|
166
|
+
* <Sidebar.Body>
|
|
167
|
+
* <Sidebar.Group>
|
|
168
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
169
|
+
* <Sidebar.List>
|
|
170
|
+
* <Sidebar.Item>
|
|
171
|
+
* <Sidebar.ItemButton asChild current>
|
|
172
|
+
* <a href="/endpoints">
|
|
173
|
+
* <GraphIcon />
|
|
174
|
+
* Endpoints
|
|
175
|
+
* </a>
|
|
176
|
+
* </Sidebar.ItemButton>
|
|
177
|
+
* </Sidebar.Item>
|
|
178
|
+
* </Sidebar.List>
|
|
179
|
+
* </Sidebar.Group>
|
|
180
|
+
* </Sidebar.Body>
|
|
181
|
+
* <Sidebar.Footer>…</Sidebar.Footer>
|
|
182
|
+
* </Sidebar.Nav>
|
|
183
|
+
* <main>
|
|
184
|
+
* <Sidebar.Trigger />
|
|
185
|
+
* </main>
|
|
186
|
+
* </Sidebar.Root>
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
declare const Root: ({ children, defaultOpen, keyboardShortcut, mobileBreakpoint, onOpenChange, onOpenMobileChange, open: openProp, openMobile: openMobileProp }: SidebarRootProps) => import("react").JSX.Element;
|
|
190
|
+
type SidebarNavProps = ComponentProps<"div"> & WithDataSlot;
|
|
191
|
+
/**
|
|
192
|
+
* The sidebar panel. On viewports at or above the root's `mobileBreakpoint`
|
|
193
|
+
* it renders inline (in normal flow, so it composes under an
|
|
194
|
+
* `AppLayout.Notice` banner) and collapses by animating its width down to a
|
|
195
|
+
* skinny icon rail (`--sidebar-width-icon`): group labels fade out in place
|
|
196
|
+
* and each row becomes a square chip around its leading icon, but everything
|
|
197
|
+
* keeps its expanded position and stays in the tab order and the
|
|
198
|
+
* accessibility tree. Below the breakpoint it renders inside a mantle
|
|
199
|
+
* `Sheet` on the left.
|
|
200
|
+
*
|
|
201
|
+
* `className`, `style`, `ref`, and rest props land on the panel surface in
|
|
202
|
+
* both presentations (the desktop animator / the mobile `Sheet.Content`), so
|
|
203
|
+
* the width variables work anywhere:
|
|
204
|
+
* `className="[--sidebar-width:20rem] [--sidebar-width-mobile:20rem]"`.
|
|
205
|
+
* `aria-label` (default `"Main"`) is forwarded to the inner `<nav>` landmark.
|
|
206
|
+
*
|
|
207
|
+
* **CSS variables (public API):**
|
|
208
|
+
*
|
|
209
|
+
* | CSS Variable | Default | Description |
|
|
210
|
+
* | --- | --- | --- |
|
|
211
|
+
* | `--sidebar-width` | `16rem` | Expanded desktop panel width (256px). |
|
|
212
|
+
* | `--sidebar-width-mobile` | `18rem` | Mobile sheet width (288px). |
|
|
213
|
+
* | `--sidebar-width-icon` | `3.25rem` | Collapsed icon rail width (52px). |
|
|
214
|
+
* | `--sidebar-row-width` | `15rem` | Derived, not set: one row's width in the expanded panel (240px), for sizing surfaces that render *outside* it. See below and `Sidebar.SwitcherTrigger`. |
|
|
215
|
+
*
|
|
216
|
+
* `--sidebar-row-width` is `calc(var(--sidebar-width,16rem) - 1rem)`, declared
|
|
217
|
+
* at `:root` by `mantle.css` — the panel width minus the row gutter this
|
|
218
|
+
* component's regions apply.
|
|
219
|
+
*
|
|
220
|
+
* Each of the three widths is read with its default as the fallback, and
|
|
221
|
+
* custom properties inherit, so set one on `Sidebar.Nav` to resize a single
|
|
222
|
+
* sidebar or on any ancestor (`:root` in your global stylesheet) to resize
|
|
223
|
+
* every sidebar in the app. `--sidebar-row-width` resolves at `:root`, so a
|
|
224
|
+
* `--sidebar-width` override scoped to one `Sidebar.Nav` does not reach it in
|
|
225
|
+
* either direction — a narrower panel leaves the floor *wider* than the row it
|
|
226
|
+
* opens from. Override `--sidebar-width` at `:root` to move both together, or
|
|
227
|
+
* set `--sidebar-row-width` on the outside surface itself.
|
|
228
|
+
*
|
|
229
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```tsx
|
|
233
|
+
* <Sidebar.Root>
|
|
234
|
+
* <Sidebar.Nav aria-label="Main">
|
|
235
|
+
* <Sidebar.Header>…</Sidebar.Header>
|
|
236
|
+
* <Sidebar.Body>
|
|
237
|
+
* <Sidebar.Group>
|
|
238
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
239
|
+
* <Sidebar.List>
|
|
240
|
+
* <Sidebar.Item>
|
|
241
|
+
* <Sidebar.ItemButton asChild>
|
|
242
|
+
* <a href="/endpoints">
|
|
243
|
+
* <GraphIcon />
|
|
244
|
+
* Endpoints
|
|
245
|
+
* </a>
|
|
246
|
+
* </Sidebar.ItemButton>
|
|
247
|
+
* </Sidebar.Item>
|
|
248
|
+
* </Sidebar.List>
|
|
249
|
+
* </Sidebar.Group>
|
|
250
|
+
* </Sidebar.Body>
|
|
251
|
+
* <Sidebar.Footer>…</Sidebar.Footer>
|
|
252
|
+
* </Sidebar.Nav>
|
|
253
|
+
* </Sidebar.Root>
|
|
254
|
+
* ```
|
|
255
|
+
*/
|
|
256
|
+
declare const Nav: ({ "aria-label": ariaLabelProp, "aria-labelledby": ariaLabelledBy, children, className, "data-slot": dataSlot, ...props }: SidebarNavProps) => import("react").JSX.Element;
|
|
257
|
+
/**
|
|
258
|
+
* The props for `Sidebar.Trigger`. `IconButton`'s props, except the parts the
|
|
259
|
+
* trigger owns: `asChild` and `children` are removed (the trigger renders
|
|
260
|
+
* only its icon and sr-only label — build custom triggers with `useSidebar`
|
|
261
|
+
* instead), and `appearance`, `icon`, `intent`, and `label` become optional
|
|
262
|
+
* with sidebar defaults.
|
|
263
|
+
*/
|
|
264
|
+
type SidebarTriggerProps = Omit<IconButtonProps, "appearance" | "asChild" | "children" | "icon" | "intent" | "label"> & WithDataSlot & {
|
|
265
|
+
/**
|
|
266
|
+
* The visual style of the trigger `IconButton`.
|
|
267
|
+
*
|
|
268
|
+
* @default "ghost"
|
|
269
|
+
*/
|
|
270
|
+
appearance?: IconButtonProps["appearance"];
|
|
271
|
+
/**
|
|
272
|
+
* The icon rendered inside the trigger.
|
|
273
|
+
*
|
|
274
|
+
* @default <SidebarSimpleIcon />
|
|
275
|
+
*/
|
|
276
|
+
icon?: ReactNode;
|
|
277
|
+
/**
|
|
278
|
+
* The color intent of the trigger `IconButton`.
|
|
279
|
+
*
|
|
280
|
+
* @default "neutral"
|
|
281
|
+
*/
|
|
282
|
+
intent?: IconButtonProps["intent"];
|
|
283
|
+
/**
|
|
284
|
+
* The accessible name for the trigger. Visually hidden but announced to
|
|
285
|
+
* assistive technology. Override it for localization.
|
|
286
|
+
*
|
|
287
|
+
* @default "Toggle Sidebar"
|
|
288
|
+
*/
|
|
289
|
+
label?: string;
|
|
290
|
+
};
|
|
291
|
+
/**
|
|
292
|
+
* The button that toggles the sidebar: the mobile sheet below the root's
|
|
293
|
+
* `mobileBreakpoint`, the desktop expanded state otherwise. Renders a ghost
|
|
294
|
+
* neutral `IconButton` with `aria-expanded` and `aria-controls` wired to the
|
|
295
|
+
* sidebar's `<nav>`. Place it in your app shell's header (for example
|
|
296
|
+
* `AppLayout.Header`) — it must stay visible at every breakpoint where the
|
|
297
|
+
* sidebar can collapse, or users have no way to reopen it.
|
|
298
|
+
*
|
|
299
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
300
|
+
*
|
|
301
|
+
* @example
|
|
302
|
+
* ```tsx
|
|
303
|
+
* <Sidebar.Root>
|
|
304
|
+
* <Sidebar.Nav aria-label="Main">
|
|
305
|
+
* <Sidebar.Header>
|
|
306
|
+
* <DropdownMenu.Root>
|
|
307
|
+
* <DropdownMenu.Trigger asChild>
|
|
308
|
+
* <Sidebar.SwitcherTrigger>
|
|
309
|
+
* <GlobeIcon />
|
|
310
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
311
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
312
|
+
* </Sidebar.SwitcherTrigger>
|
|
313
|
+
* </DropdownMenu.Trigger>
|
|
314
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
315
|
+
* </DropdownMenu.Root>
|
|
316
|
+
* </Sidebar.Header>
|
|
317
|
+
* <Sidebar.Body>
|
|
318
|
+
* <Sidebar.Group>
|
|
319
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
320
|
+
* <Sidebar.List>
|
|
321
|
+
* <Sidebar.Item>
|
|
322
|
+
* <Sidebar.ItemButton asChild current>
|
|
323
|
+
* <a href="/endpoints">
|
|
324
|
+
* <GraphIcon />
|
|
325
|
+
* Endpoints
|
|
326
|
+
* </a>
|
|
327
|
+
* </Sidebar.ItemButton>
|
|
328
|
+
* </Sidebar.Item>
|
|
329
|
+
* </Sidebar.List>
|
|
330
|
+
* </Sidebar.Group>
|
|
331
|
+
* </Sidebar.Body>
|
|
332
|
+
* <Sidebar.Footer>
|
|
333
|
+
* <Sidebar.Separator />
|
|
334
|
+
* <DropdownMenu.Root>
|
|
335
|
+
* <DropdownMenu.Trigger asChild>
|
|
336
|
+
* <Sidebar.SwitcherTrigger>
|
|
337
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
338
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
339
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
340
|
+
* </Sidebar.SwitcherTrigger>
|
|
341
|
+
* </DropdownMenu.Trigger>
|
|
342
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
343
|
+
* </DropdownMenu.Root>
|
|
344
|
+
* </Sidebar.Footer>
|
|
345
|
+
* </Sidebar.Nav>
|
|
346
|
+
* <Sidebar.Trigger />
|
|
347
|
+
* </Sidebar.Root>
|
|
348
|
+
* ```
|
|
349
|
+
*
|
|
350
|
+
* @example
|
|
351
|
+
* Placement within an `AppLayout` shell:
|
|
352
|
+
* ```tsx
|
|
353
|
+
* <Sidebar.Root>
|
|
354
|
+
* <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
|
|
355
|
+
* <AppLayout.Inset>
|
|
356
|
+
* <AppLayout.Content>
|
|
357
|
+
* <AppLayout.Header>
|
|
358
|
+
* <Sidebar.Trigger />
|
|
359
|
+
* </AppLayout.Header>
|
|
360
|
+
* …
|
|
361
|
+
* </AppLayout.Content>
|
|
362
|
+
* </AppLayout.Inset>
|
|
363
|
+
* </Sidebar.Root>
|
|
364
|
+
* ```
|
|
365
|
+
*/
|
|
366
|
+
declare const Trigger: ({ appearance, "data-slot": dataSlot, icon, intent, label, onClick, ...props }: SidebarTriggerProps) => import("react").JSX.Element;
|
|
367
|
+
type SidebarHeaderProps = ComponentProps<"div"> & WithAsChild & WithDataSlot;
|
|
368
|
+
/**
|
|
369
|
+
* The top container of a `Sidebar.Nav`, pinned above the scrollable
|
|
370
|
+
* `Sidebar.Body`. Typically holds an app/product switcher built from
|
|
371
|
+
* `Sidebar.SwitcherTrigger` composed with a `DropdownMenu` or `Dialog`. Its
|
|
372
|
+
* height is the public `--sidebar-header-height` CSS variable (default
|
|
373
|
+
* `4.5rem`), which centers the switcher row on the same horizontal band as an
|
|
374
|
+
* `AppLayout.Header` toolbar — when a sidebar header is composed inside an
|
|
375
|
+
* `AppLayout`, the toolbar derives its own height from the same variable, so
|
|
376
|
+
* overriding it at a shared ancestor (e.g. `AppLayout.Root`) moves both rows
|
|
377
|
+
* together and the alignment holds by construction.
|
|
378
|
+
*
|
|
379
|
+
* **CSS variables (public API):**
|
|
380
|
+
*
|
|
381
|
+
* | CSS Variable | Default | Description |
|
|
382
|
+
* | --- | --- | --- |
|
|
383
|
+
* | `--sidebar-header-height` | `4.5rem` | The header row height (72px). Set it on a common ancestor of the sidebar and `AppLayout.Header`, not on `Sidebar.Nav`, so both rows read one value. |
|
|
384
|
+
*
|
|
385
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
386
|
+
*
|
|
387
|
+
* @example
|
|
388
|
+
* ```tsx
|
|
389
|
+
* <Sidebar.Root>
|
|
390
|
+
* <Sidebar.Nav aria-label="Main">
|
|
391
|
+
* <Sidebar.Header>
|
|
392
|
+
* <DropdownMenu.Root>
|
|
393
|
+
* <DropdownMenu.Trigger asChild>
|
|
394
|
+
* <Sidebar.SwitcherTrigger>
|
|
395
|
+
* <GlobeIcon />
|
|
396
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
397
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
398
|
+
* </Sidebar.SwitcherTrigger>
|
|
399
|
+
* </DropdownMenu.Trigger>
|
|
400
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
401
|
+
* </DropdownMenu.Root>
|
|
402
|
+
* </Sidebar.Header>
|
|
403
|
+
* <Sidebar.Body>
|
|
404
|
+
* <Sidebar.Group>
|
|
405
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
406
|
+
* <Sidebar.List>
|
|
407
|
+
* <Sidebar.Item>
|
|
408
|
+
* <Sidebar.ItemButton asChild current>
|
|
409
|
+
* <a href="/endpoints">
|
|
410
|
+
* <GraphIcon />
|
|
411
|
+
* Endpoints
|
|
412
|
+
* </a>
|
|
413
|
+
* </Sidebar.ItemButton>
|
|
414
|
+
* </Sidebar.Item>
|
|
415
|
+
* </Sidebar.List>
|
|
416
|
+
* </Sidebar.Group>
|
|
417
|
+
* </Sidebar.Body>
|
|
418
|
+
* <Sidebar.Footer>
|
|
419
|
+
* <Sidebar.Separator />
|
|
420
|
+
* <DropdownMenu.Root>
|
|
421
|
+
* <DropdownMenu.Trigger asChild>
|
|
422
|
+
* <Sidebar.SwitcherTrigger>
|
|
423
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
424
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
425
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
426
|
+
* </Sidebar.SwitcherTrigger>
|
|
427
|
+
* </DropdownMenu.Trigger>
|
|
428
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
429
|
+
* </DropdownMenu.Root>
|
|
430
|
+
* </Sidebar.Footer>
|
|
431
|
+
* </Sidebar.Nav>
|
|
432
|
+
* <Sidebar.Trigger />
|
|
433
|
+
* </Sidebar.Root>
|
|
434
|
+
* ```
|
|
435
|
+
*/
|
|
436
|
+
declare const Header: ({ asChild, children, className, "data-slot": dataSlot, ...props }: SidebarHeaderProps) => import("react").JSX.Element;
|
|
437
|
+
type SidebarBodyProps = ComponentProps<"div"> & WithAsChild & WithDataSlot;
|
|
438
|
+
/**
|
|
439
|
+
* The scrollable middle region of a `Sidebar.Nav`, growing to fill the space
|
|
440
|
+
* between `Sidebar.Header` and `Sidebar.Footer`. Holds the navigation
|
|
441
|
+
* `Sidebar.Group` children. Overflowing edges fade out via the
|
|
442
|
+
* `scroll-fade-y` mask; inside the collapsed icon rail the scrollbar and its
|
|
443
|
+
* reserved gutter are hidden and the fade is the only overflow signal.
|
|
444
|
+
*
|
|
445
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
446
|
+
*
|
|
447
|
+
* @example
|
|
448
|
+
* ```tsx
|
|
449
|
+
* <Sidebar.Root>
|
|
450
|
+
* <Sidebar.Nav aria-label="Main">
|
|
451
|
+
* <Sidebar.Header>
|
|
452
|
+
* <DropdownMenu.Root>
|
|
453
|
+
* <DropdownMenu.Trigger asChild>
|
|
454
|
+
* <Sidebar.SwitcherTrigger>
|
|
455
|
+
* <GlobeIcon />
|
|
456
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
457
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
458
|
+
* </Sidebar.SwitcherTrigger>
|
|
459
|
+
* </DropdownMenu.Trigger>
|
|
460
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
461
|
+
* </DropdownMenu.Root>
|
|
462
|
+
* </Sidebar.Header>
|
|
463
|
+
* <Sidebar.Body>
|
|
464
|
+
* <Sidebar.Group>
|
|
465
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
466
|
+
* <Sidebar.List>
|
|
467
|
+
* <Sidebar.Item>
|
|
468
|
+
* <Sidebar.ItemButton asChild current>
|
|
469
|
+
* <a href="/endpoints">
|
|
470
|
+
* <GraphIcon />
|
|
471
|
+
* Endpoints
|
|
472
|
+
* </a>
|
|
473
|
+
* </Sidebar.ItemButton>
|
|
474
|
+
* </Sidebar.Item>
|
|
475
|
+
* </Sidebar.List>
|
|
476
|
+
* </Sidebar.Group>
|
|
477
|
+
* </Sidebar.Body>
|
|
478
|
+
* <Sidebar.Footer>
|
|
479
|
+
* <Sidebar.Separator />
|
|
480
|
+
* <DropdownMenu.Root>
|
|
481
|
+
* <DropdownMenu.Trigger asChild>
|
|
482
|
+
* <Sidebar.SwitcherTrigger>
|
|
483
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
484
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
485
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
486
|
+
* </Sidebar.SwitcherTrigger>
|
|
487
|
+
* </DropdownMenu.Trigger>
|
|
488
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
489
|
+
* </DropdownMenu.Root>
|
|
490
|
+
* </Sidebar.Footer>
|
|
491
|
+
* </Sidebar.Nav>
|
|
492
|
+
* <Sidebar.Trigger />
|
|
493
|
+
* </Sidebar.Root>
|
|
494
|
+
* ```
|
|
495
|
+
*/
|
|
496
|
+
declare const Body: ({ asChild, children, className, "data-slot": dataSlot, ...props }: SidebarBodyProps) => import("react").JSX.Element;
|
|
497
|
+
type SidebarFooterProps = ComponentProps<"div"> & WithAsChild & WithDataSlot;
|
|
498
|
+
/**
|
|
499
|
+
* The bottom container of a `Sidebar.Nav`, pinned below the scrollable
|
|
500
|
+
* `Sidebar.Body`. Typically holds cross-product items and the account/user
|
|
501
|
+
* switcher row (`Sidebar.SwitcherTrigger` with `Sidebar.AccountAvatar` and
|
|
502
|
+
* `Sidebar.UserAvatar`).
|
|
503
|
+
*
|
|
504
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
505
|
+
*
|
|
506
|
+
* @example
|
|
507
|
+
* ```tsx
|
|
508
|
+
* <Sidebar.Root>
|
|
509
|
+
* <Sidebar.Nav aria-label="Main">
|
|
510
|
+
* <Sidebar.Header>
|
|
511
|
+
* <DropdownMenu.Root>
|
|
512
|
+
* <DropdownMenu.Trigger asChild>
|
|
513
|
+
* <Sidebar.SwitcherTrigger>
|
|
514
|
+
* <GlobeIcon />
|
|
515
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
516
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
517
|
+
* </Sidebar.SwitcherTrigger>
|
|
518
|
+
* </DropdownMenu.Trigger>
|
|
519
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
520
|
+
* </DropdownMenu.Root>
|
|
521
|
+
* </Sidebar.Header>
|
|
522
|
+
* <Sidebar.Body>
|
|
523
|
+
* <Sidebar.Group>
|
|
524
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
525
|
+
* <Sidebar.List>
|
|
526
|
+
* <Sidebar.Item>
|
|
527
|
+
* <Sidebar.ItemButton asChild current>
|
|
528
|
+
* <a href="/endpoints">
|
|
529
|
+
* <GraphIcon />
|
|
530
|
+
* Endpoints
|
|
531
|
+
* </a>
|
|
532
|
+
* </Sidebar.ItemButton>
|
|
533
|
+
* </Sidebar.Item>
|
|
534
|
+
* </Sidebar.List>
|
|
535
|
+
* </Sidebar.Group>
|
|
536
|
+
* </Sidebar.Body>
|
|
537
|
+
* <Sidebar.Footer>
|
|
538
|
+
* <Sidebar.Separator />
|
|
539
|
+
* <DropdownMenu.Root>
|
|
540
|
+
* <DropdownMenu.Trigger asChild>
|
|
541
|
+
* <Sidebar.SwitcherTrigger>
|
|
542
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
543
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
544
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
545
|
+
* </Sidebar.SwitcherTrigger>
|
|
546
|
+
* </DropdownMenu.Trigger>
|
|
547
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
548
|
+
* </DropdownMenu.Root>
|
|
549
|
+
* </Sidebar.Footer>
|
|
550
|
+
* </Sidebar.Nav>
|
|
551
|
+
* <Sidebar.Trigger />
|
|
552
|
+
* </Sidebar.Root>
|
|
553
|
+
* ```
|
|
554
|
+
*/
|
|
555
|
+
declare const Footer: ({ asChild, children, className, "data-slot": dataSlot, ...props }: SidebarFooterProps) => import("react").JSX.Element;
|
|
556
|
+
type SidebarGroupProps = ComponentProps<"div"> & WithAsChild & WithDataSlot;
|
|
557
|
+
/**
|
|
558
|
+
* A grouping container inside `Sidebar.Body` pairing an optional
|
|
559
|
+
* `Sidebar.GroupLabel` with a `Sidebar.List`. When a label is present, the
|
|
560
|
+
* group wires it to the list via `aria-labelledby` so assistive technology
|
|
561
|
+
* announces the list with the group's name.
|
|
562
|
+
*
|
|
563
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
564
|
+
*
|
|
565
|
+
* @example
|
|
566
|
+
* ```tsx
|
|
567
|
+
* <Sidebar.Root>
|
|
568
|
+
* <Sidebar.Nav aria-label="Main">
|
|
569
|
+
* <Sidebar.Header>
|
|
570
|
+
* <DropdownMenu.Root>
|
|
571
|
+
* <DropdownMenu.Trigger asChild>
|
|
572
|
+
* <Sidebar.SwitcherTrigger>
|
|
573
|
+
* <GlobeIcon />
|
|
574
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
575
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
576
|
+
* </Sidebar.SwitcherTrigger>
|
|
577
|
+
* </DropdownMenu.Trigger>
|
|
578
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
579
|
+
* </DropdownMenu.Root>
|
|
580
|
+
* </Sidebar.Header>
|
|
581
|
+
* <Sidebar.Body>
|
|
582
|
+
* <Sidebar.Group>
|
|
583
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
584
|
+
* <Sidebar.List>
|
|
585
|
+
* <Sidebar.Item>
|
|
586
|
+
* <Sidebar.ItemButton asChild current>
|
|
587
|
+
* <a href="/endpoints">
|
|
588
|
+
* <GraphIcon />
|
|
589
|
+
* Endpoints
|
|
590
|
+
* </a>
|
|
591
|
+
* </Sidebar.ItemButton>
|
|
592
|
+
* </Sidebar.Item>
|
|
593
|
+
* </Sidebar.List>
|
|
594
|
+
* </Sidebar.Group>
|
|
595
|
+
* </Sidebar.Body>
|
|
596
|
+
* <Sidebar.Footer>
|
|
597
|
+
* <Sidebar.Separator />
|
|
598
|
+
* <DropdownMenu.Root>
|
|
599
|
+
* <DropdownMenu.Trigger asChild>
|
|
600
|
+
* <Sidebar.SwitcherTrigger>
|
|
601
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
602
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
603
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
604
|
+
* </Sidebar.SwitcherTrigger>
|
|
605
|
+
* </DropdownMenu.Trigger>
|
|
606
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
607
|
+
* </DropdownMenu.Root>
|
|
608
|
+
* </Sidebar.Footer>
|
|
609
|
+
* </Sidebar.Nav>
|
|
610
|
+
* <Sidebar.Trigger />
|
|
611
|
+
* </Sidebar.Root>
|
|
612
|
+
* ```
|
|
613
|
+
*/
|
|
614
|
+
declare const Group: ({ asChild, children, className, "data-slot": dataSlot, ...props }: SidebarGroupProps) => import("react").JSX.Element;
|
|
615
|
+
type SidebarGroupLabelProps = ComponentProps<"div"> & WithAsChild & WithDataSlot;
|
|
616
|
+
/**
|
|
617
|
+
* The muted label of a `Sidebar.Group`, rendered above its `Sidebar.List`.
|
|
618
|
+
* Renders a `<div>` (not a heading, so the sidebar never dictates the page's
|
|
619
|
+
* heading outline); inside a `Sidebar.Group` it is automatically linked to
|
|
620
|
+
* the sibling list via `aria-labelledby`. Pass `asChild` to render a heading
|
|
621
|
+
* at a level you control.
|
|
622
|
+
*
|
|
623
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
624
|
+
*
|
|
625
|
+
* @example
|
|
626
|
+
* ```tsx
|
|
627
|
+
* <Sidebar.Root>
|
|
628
|
+
* <Sidebar.Nav aria-label="Main">
|
|
629
|
+
* <Sidebar.Header>
|
|
630
|
+
* <DropdownMenu.Root>
|
|
631
|
+
* <DropdownMenu.Trigger asChild>
|
|
632
|
+
* <Sidebar.SwitcherTrigger>
|
|
633
|
+
* <GlobeIcon />
|
|
634
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
635
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
636
|
+
* </Sidebar.SwitcherTrigger>
|
|
637
|
+
* </DropdownMenu.Trigger>
|
|
638
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
639
|
+
* </DropdownMenu.Root>
|
|
640
|
+
* </Sidebar.Header>
|
|
641
|
+
* <Sidebar.Body>
|
|
642
|
+
* <Sidebar.Group>
|
|
643
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
644
|
+
* <Sidebar.List>
|
|
645
|
+
* <Sidebar.Item>
|
|
646
|
+
* <Sidebar.ItemButton asChild current>
|
|
647
|
+
* <a href="/endpoints">
|
|
648
|
+
* <GraphIcon />
|
|
649
|
+
* Endpoints
|
|
650
|
+
* </a>
|
|
651
|
+
* </Sidebar.ItemButton>
|
|
652
|
+
* </Sidebar.Item>
|
|
653
|
+
* </Sidebar.List>
|
|
654
|
+
* </Sidebar.Group>
|
|
655
|
+
* </Sidebar.Body>
|
|
656
|
+
* <Sidebar.Footer>
|
|
657
|
+
* <Sidebar.Separator />
|
|
658
|
+
* <DropdownMenu.Root>
|
|
659
|
+
* <DropdownMenu.Trigger asChild>
|
|
660
|
+
* <Sidebar.SwitcherTrigger>
|
|
661
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
662
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
663
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
664
|
+
* </Sidebar.SwitcherTrigger>
|
|
665
|
+
* </DropdownMenu.Trigger>
|
|
666
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
667
|
+
* </DropdownMenu.Root>
|
|
668
|
+
* </Sidebar.Footer>
|
|
669
|
+
* </Sidebar.Nav>
|
|
670
|
+
* <Sidebar.Trigger />
|
|
671
|
+
* </Sidebar.Root>
|
|
672
|
+
* ```
|
|
673
|
+
*/
|
|
674
|
+
declare const GroupLabel: ({ asChild, children, className, "data-slot": dataSlot, id: idProp, ...props }: SidebarGroupLabelProps) => import("react").JSX.Element;
|
|
675
|
+
type SidebarListProps = ComponentProps<"ul"> & WithAsChild & WithDataSlot;
|
|
676
|
+
/**
|
|
677
|
+
* The `<ul>` list of navigation rows inside a `Sidebar.Group`. When the group
|
|
678
|
+
* has a `Sidebar.GroupLabel`, the list is announced with the group's name via
|
|
679
|
+
* `aria-labelledby`.
|
|
680
|
+
*
|
|
681
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
682
|
+
*
|
|
683
|
+
* @example
|
|
684
|
+
* ```tsx
|
|
685
|
+
* <Sidebar.Root>
|
|
686
|
+
* <Sidebar.Nav aria-label="Main">
|
|
687
|
+
* <Sidebar.Header>
|
|
688
|
+
* <DropdownMenu.Root>
|
|
689
|
+
* <DropdownMenu.Trigger asChild>
|
|
690
|
+
* <Sidebar.SwitcherTrigger>
|
|
691
|
+
* <GlobeIcon />
|
|
692
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
693
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
694
|
+
* </Sidebar.SwitcherTrigger>
|
|
695
|
+
* </DropdownMenu.Trigger>
|
|
696
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
697
|
+
* </DropdownMenu.Root>
|
|
698
|
+
* </Sidebar.Header>
|
|
699
|
+
* <Sidebar.Body>
|
|
700
|
+
* <Sidebar.Group>
|
|
701
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
702
|
+
* <Sidebar.List>
|
|
703
|
+
* <Sidebar.Item>
|
|
704
|
+
* <Sidebar.ItemButton asChild current>
|
|
705
|
+
* <a href="/endpoints">
|
|
706
|
+
* <GraphIcon />
|
|
707
|
+
* Endpoints
|
|
708
|
+
* </a>
|
|
709
|
+
* </Sidebar.ItemButton>
|
|
710
|
+
* </Sidebar.Item>
|
|
711
|
+
* </Sidebar.List>
|
|
712
|
+
* </Sidebar.Group>
|
|
713
|
+
* </Sidebar.Body>
|
|
714
|
+
* <Sidebar.Footer>
|
|
715
|
+
* <Sidebar.Separator />
|
|
716
|
+
* <DropdownMenu.Root>
|
|
717
|
+
* <DropdownMenu.Trigger asChild>
|
|
718
|
+
* <Sidebar.SwitcherTrigger>
|
|
719
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
720
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
721
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
722
|
+
* </Sidebar.SwitcherTrigger>
|
|
723
|
+
* </DropdownMenu.Trigger>
|
|
724
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
725
|
+
* </DropdownMenu.Root>
|
|
726
|
+
* </Sidebar.Footer>
|
|
727
|
+
* </Sidebar.Nav>
|
|
728
|
+
* <Sidebar.Trigger />
|
|
729
|
+
* </Sidebar.Root>
|
|
730
|
+
* ```
|
|
731
|
+
*/
|
|
732
|
+
declare const List: ({ "aria-labelledby": ariaLabelledBy, asChild, children, className, "data-slot": dataSlot, ...props }: SidebarListProps) => import("react").JSX.Element;
|
|
733
|
+
type SidebarItemProps = ComponentProps<"li"> & WithAsChild & WithDataSlot;
|
|
734
|
+
/**
|
|
735
|
+
* A single `<li>` row of a `Sidebar.List`. A plain wrapper — the interactive
|
|
736
|
+
* element is the `Sidebar.ItemButton` child, so props, `ref`, and `className`
|
|
737
|
+
* all target the list item itself.
|
|
738
|
+
*
|
|
739
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
740
|
+
*
|
|
741
|
+
* @example
|
|
742
|
+
* ```tsx
|
|
743
|
+
* <Sidebar.Root>
|
|
744
|
+
* <Sidebar.Nav aria-label="Main">
|
|
745
|
+
* <Sidebar.Header>
|
|
746
|
+
* <DropdownMenu.Root>
|
|
747
|
+
* <DropdownMenu.Trigger asChild>
|
|
748
|
+
* <Sidebar.SwitcherTrigger>
|
|
749
|
+
* <GlobeIcon />
|
|
750
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
751
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
752
|
+
* </Sidebar.SwitcherTrigger>
|
|
753
|
+
* </DropdownMenu.Trigger>
|
|
754
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
755
|
+
* </DropdownMenu.Root>
|
|
756
|
+
* </Sidebar.Header>
|
|
757
|
+
* <Sidebar.Body>
|
|
758
|
+
* <Sidebar.Group>
|
|
759
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
760
|
+
* <Sidebar.List>
|
|
761
|
+
* <Sidebar.Item>
|
|
762
|
+
* <Sidebar.ItemButton asChild current>
|
|
763
|
+
* <a href="/endpoints">
|
|
764
|
+
* <GraphIcon />
|
|
765
|
+
* Endpoints
|
|
766
|
+
* </a>
|
|
767
|
+
* </Sidebar.ItemButton>
|
|
768
|
+
* </Sidebar.Item>
|
|
769
|
+
* </Sidebar.List>
|
|
770
|
+
* </Sidebar.Group>
|
|
771
|
+
* </Sidebar.Body>
|
|
772
|
+
* <Sidebar.Footer>
|
|
773
|
+
* <Sidebar.Separator />
|
|
774
|
+
* <DropdownMenu.Root>
|
|
775
|
+
* <DropdownMenu.Trigger asChild>
|
|
776
|
+
* <Sidebar.SwitcherTrigger>
|
|
777
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
778
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
779
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
780
|
+
* </Sidebar.SwitcherTrigger>
|
|
781
|
+
* </DropdownMenu.Trigger>
|
|
782
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
783
|
+
* </DropdownMenu.Root>
|
|
784
|
+
* </Sidebar.Footer>
|
|
785
|
+
* </Sidebar.Nav>
|
|
786
|
+
* <Sidebar.Trigger />
|
|
787
|
+
* </Sidebar.Root>
|
|
788
|
+
* ```
|
|
789
|
+
*/
|
|
790
|
+
declare const Item: ({ asChild, children, className, "data-slot": dataSlot, ...props }: SidebarItemProps) => import("react").JSX.Element;
|
|
791
|
+
type SidebarItemButtonProps = ComponentProps<"button"> & WithAsChild & WithDataSlot & {
|
|
792
|
+
/**
|
|
793
|
+
* Marks this row as the current page: sets `aria-current="page"` and the
|
|
794
|
+
* `data-current` styling state. Consumers control it from their router,
|
|
795
|
+
* e.g. `current={pathname === "/endpoints"}`.
|
|
796
|
+
*/
|
|
797
|
+
current?: boolean;
|
|
798
|
+
};
|
|
799
|
+
/**
|
|
800
|
+
* The interactive row of a `Sidebar.Item`: a leading icon slot and a
|
|
801
|
+
* truncating label. Renders a `<button>` by default; pass `asChild` to
|
|
802
|
+
* compose with a router link. `current` sets `aria-current="page"` and the
|
|
803
|
+
* `data-current` visual state.
|
|
804
|
+
*
|
|
805
|
+
* The row sizes its **leading** icon to 20px and leaves trailing visuals — a
|
|
806
|
+
* caret, a count, a status dot — to size themselves, so a row composed with
|
|
807
|
+
* `DropdownMenu.Trigger asChild` can end in `<CaretDownIcon className="text-muted
|
|
808
|
+
* ml-auto size-4 shrink-0" />` and stays highlighted while its menu is open
|
|
809
|
+
* (`data-state="open"`, supplied by the trigger). Give that menu the same width
|
|
810
|
+
* floor the switcher rows use — `className="min-w-(--sidebar-row-width)"` — so
|
|
811
|
+
* it keeps the expanded row's width instead of shrinking to this row's 28px
|
|
812
|
+
* rail chip (see `Sidebar.SwitcherTrigger` for the whole contract).
|
|
813
|
+
*
|
|
814
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
815
|
+
*
|
|
816
|
+
* @example
|
|
817
|
+
* ```tsx
|
|
818
|
+
* <Sidebar.Root>
|
|
819
|
+
* <Sidebar.Nav aria-label="Main">
|
|
820
|
+
* <Sidebar.Header>
|
|
821
|
+
* <DropdownMenu.Root>
|
|
822
|
+
* <DropdownMenu.Trigger asChild>
|
|
823
|
+
* <Sidebar.SwitcherTrigger>
|
|
824
|
+
* <GlobeIcon />
|
|
825
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
826
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
827
|
+
* </Sidebar.SwitcherTrigger>
|
|
828
|
+
* </DropdownMenu.Trigger>
|
|
829
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
830
|
+
* </DropdownMenu.Root>
|
|
831
|
+
* </Sidebar.Header>
|
|
832
|
+
* <Sidebar.Body>
|
|
833
|
+
* <Sidebar.Group>
|
|
834
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
835
|
+
* <Sidebar.List>
|
|
836
|
+
* <Sidebar.Item>
|
|
837
|
+
* <Sidebar.ItemButton asChild current>
|
|
838
|
+
* <a href="/endpoints">
|
|
839
|
+
* <GraphIcon />
|
|
840
|
+
* Endpoints
|
|
841
|
+
* </a>
|
|
842
|
+
* </Sidebar.ItemButton>
|
|
843
|
+
* </Sidebar.Item>
|
|
844
|
+
* </Sidebar.List>
|
|
845
|
+
* </Sidebar.Group>
|
|
846
|
+
* </Sidebar.Body>
|
|
847
|
+
* <Sidebar.Footer>
|
|
848
|
+
* <Sidebar.Separator />
|
|
849
|
+
* <DropdownMenu.Root>
|
|
850
|
+
* <DropdownMenu.Trigger asChild>
|
|
851
|
+
* <Sidebar.SwitcherTrigger>
|
|
852
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
853
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
854
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
855
|
+
* </Sidebar.SwitcherTrigger>
|
|
856
|
+
* </DropdownMenu.Trigger>
|
|
857
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
858
|
+
* </DropdownMenu.Root>
|
|
859
|
+
* </Sidebar.Footer>
|
|
860
|
+
* </Sidebar.Nav>
|
|
861
|
+
* <Sidebar.Trigger />
|
|
862
|
+
* </Sidebar.Root>
|
|
863
|
+
* ```
|
|
864
|
+
*/
|
|
865
|
+
declare const ItemButton: ({ asChild, children, className, current, "data-slot": dataSlot, type, ...props }: SidebarItemButtonProps) => import("react").JSX.Element;
|
|
866
|
+
type SidebarSwitcherTriggerProps = ComponentProps<"button"> & WithAsChild & WithDataSlot;
|
|
867
|
+
/**
|
|
868
|
+
* The styled row for the sidebar's switchers: the app/product switcher in
|
|
869
|
+
* `Sidebar.Header` and the account/user row in `Sidebar.Footer`. A styled
|
|
870
|
+
* button only — it is not wired to any state; compose it with
|
|
871
|
+
* `DropdownMenu.Trigger asChild` or `Dialog.Trigger asChild`, which supply
|
|
872
|
+
* the open state (`data-state="open"` styling comes for free from those
|
|
873
|
+
* primitives).
|
|
874
|
+
*
|
|
875
|
+
* Inside the collapsed icon rail, the row collapses to
|
|
876
|
+
* its **first child element** — the leading visual (product icon, account
|
|
877
|
+
* avatar) — and the remaining children become visually hidden while staying
|
|
878
|
+
* in the accessibility tree, so the button's accessible name is unchanged.
|
|
879
|
+
* Wrap loose text in an element (e.g. a `<span>`) so it participates.
|
|
880
|
+
*
|
|
881
|
+
* A menu opened from the row should be as wide as the row: `width="trigger"`
|
|
882
|
+
* does that while the panel is expanded, but the row shrinks to a 36px chip in
|
|
883
|
+
* the icon rail and would drag the menu down to it. Floor the menu at the
|
|
884
|
+
* expanded row width with `className="min-w-(--sidebar-row-width)"` — the
|
|
885
|
+
* token `mantle.css` declares at `:root` for exactly this, since the menu
|
|
886
|
+
* renders in a portal and inherits nothing from the panel. The floor is a
|
|
887
|
+
* no-op while the panel is expanded (the row already measures that wide), and
|
|
888
|
+
* inert in the mobile sheet as long as its row is the wider of the two
|
|
889
|
+
* (`--sidebar-width-mobile` minus `1.5rem` and the sheet's 1px border, vs
|
|
890
|
+
* `--sidebar-width` minus `1rem`; 263px vs 240px at the defaults) — so widen
|
|
891
|
+
* `--sidebar-width-mobile` whenever you widen `--sidebar-width`, or the floor
|
|
892
|
+
* overhangs the sheet.
|
|
893
|
+
*
|
|
894
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
895
|
+
*
|
|
896
|
+
* @example
|
|
897
|
+
* ```tsx
|
|
898
|
+
* <Sidebar.Root>
|
|
899
|
+
* <Sidebar.Nav aria-label="Main">
|
|
900
|
+
* <Sidebar.Header>
|
|
901
|
+
* <DropdownMenu.Root>
|
|
902
|
+
* <DropdownMenu.Trigger asChild>
|
|
903
|
+
* <Sidebar.SwitcherTrigger>
|
|
904
|
+
* <GlobeIcon />
|
|
905
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
906
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
907
|
+
* </Sidebar.SwitcherTrigger>
|
|
908
|
+
* </DropdownMenu.Trigger>
|
|
909
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
910
|
+
* </DropdownMenu.Root>
|
|
911
|
+
* </Sidebar.Header>
|
|
912
|
+
* <Sidebar.Body>
|
|
913
|
+
* <Sidebar.Group>
|
|
914
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
915
|
+
* <Sidebar.List>
|
|
916
|
+
* <Sidebar.Item>
|
|
917
|
+
* <Sidebar.ItemButton asChild current>
|
|
918
|
+
* <a href="/endpoints">
|
|
919
|
+
* <GraphIcon />
|
|
920
|
+
* Endpoints
|
|
921
|
+
* </a>
|
|
922
|
+
* </Sidebar.ItemButton>
|
|
923
|
+
* </Sidebar.Item>
|
|
924
|
+
* </Sidebar.List>
|
|
925
|
+
* </Sidebar.Group>
|
|
926
|
+
* </Sidebar.Body>
|
|
927
|
+
* <Sidebar.Footer>
|
|
928
|
+
* <Sidebar.Separator />
|
|
929
|
+
* <DropdownMenu.Root>
|
|
930
|
+
* <DropdownMenu.Trigger asChild>
|
|
931
|
+
* <Sidebar.SwitcherTrigger>
|
|
932
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
933
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
934
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
935
|
+
* </Sidebar.SwitcherTrigger>
|
|
936
|
+
* </DropdownMenu.Trigger>
|
|
937
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
938
|
+
* </DropdownMenu.Root>
|
|
939
|
+
* </Sidebar.Footer>
|
|
940
|
+
* </Sidebar.Nav>
|
|
941
|
+
* <Sidebar.Trigger />
|
|
942
|
+
* </Sidebar.Root>
|
|
943
|
+
* ```
|
|
944
|
+
*/
|
|
945
|
+
declare const SwitcherTrigger: ({ asChild, children, className, "data-slot": dataSlot, type, ...props }: SidebarSwitcherTriggerProps) => import("react").JSX.Element;
|
|
946
|
+
type SidebarSeparatorProps = ComponentProps<typeof Separator>;
|
|
947
|
+
/**
|
|
948
|
+
* An inset hairline between sidebar regions. Composes the mantle `Separator`,
|
|
949
|
+
* staying aligned with the `px-3` content padding of `Sidebar.Body` and
|
|
950
|
+
* `Sidebar.Footer` (it deliberately does not run edge to edge) with `my-3`
|
|
951
|
+
* breathing room above and below. When collapsed to the icon rail, it widens
|
|
952
|
+
* to the same 36px chip width as `Sidebar.SwitcherTrigger`, balancing the
|
|
953
|
+
* adjacent app-content gutter that sits outside the rail.
|
|
954
|
+
*
|
|
955
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
956
|
+
*
|
|
957
|
+
* @example
|
|
958
|
+
* ```tsx
|
|
959
|
+
* <Sidebar.Root>
|
|
960
|
+
* <Sidebar.Nav aria-label="Main">
|
|
961
|
+
* <Sidebar.Header>
|
|
962
|
+
* <DropdownMenu.Root>
|
|
963
|
+
* <DropdownMenu.Trigger asChild>
|
|
964
|
+
* <Sidebar.SwitcherTrigger>
|
|
965
|
+
* <GlobeIcon />
|
|
966
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
967
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
968
|
+
* </Sidebar.SwitcherTrigger>
|
|
969
|
+
* </DropdownMenu.Trigger>
|
|
970
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
971
|
+
* </DropdownMenu.Root>
|
|
972
|
+
* </Sidebar.Header>
|
|
973
|
+
* <Sidebar.Body>
|
|
974
|
+
* <Sidebar.Group>
|
|
975
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
976
|
+
* <Sidebar.List>
|
|
977
|
+
* <Sidebar.Item>
|
|
978
|
+
* <Sidebar.ItemButton asChild current>
|
|
979
|
+
* <a href="/endpoints">
|
|
980
|
+
* <GraphIcon />
|
|
981
|
+
* Endpoints
|
|
982
|
+
* </a>
|
|
983
|
+
* </Sidebar.ItemButton>
|
|
984
|
+
* </Sidebar.Item>
|
|
985
|
+
* </Sidebar.List>
|
|
986
|
+
* </Sidebar.Group>
|
|
987
|
+
* </Sidebar.Body>
|
|
988
|
+
* <Sidebar.Footer>
|
|
989
|
+
* <Sidebar.Separator />
|
|
990
|
+
* <DropdownMenu.Root>
|
|
991
|
+
* <DropdownMenu.Trigger asChild>
|
|
992
|
+
* <Sidebar.SwitcherTrigger>
|
|
993
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
994
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
995
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
996
|
+
* </Sidebar.SwitcherTrigger>
|
|
997
|
+
* </DropdownMenu.Trigger>
|
|
998
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
999
|
+
* </DropdownMenu.Root>
|
|
1000
|
+
* </Sidebar.Footer>
|
|
1001
|
+
* </Sidebar.Nav>
|
|
1002
|
+
* <Sidebar.Trigger />
|
|
1003
|
+
* </Sidebar.Root>
|
|
1004
|
+
* ```
|
|
1005
|
+
*/
|
|
1006
|
+
declare const SidebarSeparator: ({ className, ...props }: SidebarSeparatorProps) => import("react").JSX.Element;
|
|
1007
|
+
type SidebarAccountAvatarProps = Omit<ComponentProps<"div">, "children"> & {
|
|
1008
|
+
/**
|
|
1009
|
+
* The account's stable identifier. Used to deterministically select a
|
|
1010
|
+
* background swatch from the design system's palette so the same account
|
|
1011
|
+
* always gets the same color.
|
|
1012
|
+
*/
|
|
1013
|
+
accountId: string | undefined;
|
|
1014
|
+
/**
|
|
1015
|
+
* The account's display name. The first one or two letters become the
|
|
1016
|
+
* avatar's initials. Falls back to `?` when the name is empty.
|
|
1017
|
+
*/
|
|
1018
|
+
accountName: string | undefined;
|
|
1019
|
+
};
|
|
1020
|
+
/**
|
|
1021
|
+
* A small rounded-square avatar that represents an account (workspace,
|
|
1022
|
+
* organization, etc.). The background color is derived deterministically from
|
|
1023
|
+
* the `accountId` so an account's swatch is stable across renders, sessions,
|
|
1024
|
+
* and devices.
|
|
1025
|
+
*
|
|
1026
|
+
* Accounts are rendered as squares to differentiate them visually from users,
|
|
1027
|
+
* which use a circular `Sidebar.UserAvatar`.
|
|
1028
|
+
*
|
|
1029
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1030
|
+
*
|
|
1031
|
+
* @example
|
|
1032
|
+
* ```tsx
|
|
1033
|
+
* <Sidebar.Root>
|
|
1034
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1035
|
+
* <Sidebar.Header>
|
|
1036
|
+
* <DropdownMenu.Root>
|
|
1037
|
+
* <DropdownMenu.Trigger asChild>
|
|
1038
|
+
* <Sidebar.SwitcherTrigger>
|
|
1039
|
+
* <GlobeIcon />
|
|
1040
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1041
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1042
|
+
* </Sidebar.SwitcherTrigger>
|
|
1043
|
+
* </DropdownMenu.Trigger>
|
|
1044
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1045
|
+
* </DropdownMenu.Root>
|
|
1046
|
+
* </Sidebar.Header>
|
|
1047
|
+
* <Sidebar.Body>
|
|
1048
|
+
* <Sidebar.Group>
|
|
1049
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1050
|
+
* <Sidebar.List>
|
|
1051
|
+
* <Sidebar.Item>
|
|
1052
|
+
* <Sidebar.ItemButton asChild current>
|
|
1053
|
+
* <a href="/endpoints">
|
|
1054
|
+
* <GraphIcon />
|
|
1055
|
+
* Endpoints
|
|
1056
|
+
* </a>
|
|
1057
|
+
* </Sidebar.ItemButton>
|
|
1058
|
+
* </Sidebar.Item>
|
|
1059
|
+
* </Sidebar.List>
|
|
1060
|
+
* </Sidebar.Group>
|
|
1061
|
+
* </Sidebar.Body>
|
|
1062
|
+
* <Sidebar.Footer>
|
|
1063
|
+
* <Sidebar.Separator />
|
|
1064
|
+
* <DropdownMenu.Root>
|
|
1065
|
+
* <DropdownMenu.Trigger asChild>
|
|
1066
|
+
* <Sidebar.SwitcherTrigger>
|
|
1067
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1068
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1069
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1070
|
+
* </Sidebar.SwitcherTrigger>
|
|
1071
|
+
* </DropdownMenu.Trigger>
|
|
1072
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1073
|
+
* </DropdownMenu.Root>
|
|
1074
|
+
* </Sidebar.Footer>
|
|
1075
|
+
* </Sidebar.Nav>
|
|
1076
|
+
* <Sidebar.Trigger />
|
|
1077
|
+
* </Sidebar.Root>
|
|
1078
|
+
* ```
|
|
1079
|
+
*/
|
|
1080
|
+
declare const AccountAvatar: ({ accountId, accountName, className, ...props }: SidebarAccountAvatarProps) => import("react").JSX.Element;
|
|
1081
|
+
type SidebarUserAvatarProps = Omit<ComponentProps<"div">, "children"> & {
|
|
1082
|
+
/**
|
|
1083
|
+
* Optional URL of the user's profile picture. When provided, the image is
|
|
1084
|
+
* rendered to fill the avatar with `object-cover`. When omitted (or while
|
|
1085
|
+
* loading), a neutral person silhouette is shown.
|
|
1086
|
+
*/
|
|
1087
|
+
src?: string;
|
|
1088
|
+
/**
|
|
1089
|
+
* Accessible label for the avatar. Used as the image's `alt` text and as
|
|
1090
|
+
* the container's `aria-label` when no image is rendered.
|
|
1091
|
+
*
|
|
1092
|
+
* @default "Your account"
|
|
1093
|
+
*/
|
|
1094
|
+
alt?: string;
|
|
1095
|
+
};
|
|
1096
|
+
/**
|
|
1097
|
+
* A circular avatar that represents the currently signed-in user. Renders the
|
|
1098
|
+
* user's profile picture when `src` is provided, otherwise falls back to a
|
|
1099
|
+
* neutral, theme-aware person silhouette.
|
|
1100
|
+
*
|
|
1101
|
+
* Users are rendered as circles to differentiate them visually from accounts,
|
|
1102
|
+
* which use a square `Sidebar.AccountAvatar`.
|
|
1103
|
+
*
|
|
1104
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1105
|
+
*
|
|
1106
|
+
* @example
|
|
1107
|
+
* ```tsx
|
|
1108
|
+
* <Sidebar.Root>
|
|
1109
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1110
|
+
* <Sidebar.Header>
|
|
1111
|
+
* <DropdownMenu.Root>
|
|
1112
|
+
* <DropdownMenu.Trigger asChild>
|
|
1113
|
+
* <Sidebar.SwitcherTrigger>
|
|
1114
|
+
* <GlobeIcon />
|
|
1115
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1116
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1117
|
+
* </Sidebar.SwitcherTrigger>
|
|
1118
|
+
* </DropdownMenu.Trigger>
|
|
1119
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1120
|
+
* </DropdownMenu.Root>
|
|
1121
|
+
* </Sidebar.Header>
|
|
1122
|
+
* <Sidebar.Body>
|
|
1123
|
+
* <Sidebar.Group>
|
|
1124
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1125
|
+
* <Sidebar.List>
|
|
1126
|
+
* <Sidebar.Item>
|
|
1127
|
+
* <Sidebar.ItemButton asChild current>
|
|
1128
|
+
* <a href="/endpoints">
|
|
1129
|
+
* <GraphIcon />
|
|
1130
|
+
* Endpoints
|
|
1131
|
+
* </a>
|
|
1132
|
+
* </Sidebar.ItemButton>
|
|
1133
|
+
* </Sidebar.Item>
|
|
1134
|
+
* </Sidebar.List>
|
|
1135
|
+
* </Sidebar.Group>
|
|
1136
|
+
* </Sidebar.Body>
|
|
1137
|
+
* <Sidebar.Footer>
|
|
1138
|
+
* <Sidebar.Separator />
|
|
1139
|
+
* <DropdownMenu.Root>
|
|
1140
|
+
* <DropdownMenu.Trigger asChild>
|
|
1141
|
+
* <Sidebar.SwitcherTrigger>
|
|
1142
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1143
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1144
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1145
|
+
* </Sidebar.SwitcherTrigger>
|
|
1146
|
+
* </DropdownMenu.Trigger>
|
|
1147
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1148
|
+
* </DropdownMenu.Root>
|
|
1149
|
+
* </Sidebar.Footer>
|
|
1150
|
+
* </Sidebar.Nav>
|
|
1151
|
+
* <Sidebar.Trigger />
|
|
1152
|
+
* </Sidebar.Root>
|
|
1153
|
+
* ```
|
|
1154
|
+
*/
|
|
1155
|
+
declare const UserAvatar: ({ alt, className, src, ...props }: SidebarUserAvatarProps) => import("react").JSX.Element;
|
|
1156
|
+
/**
|
|
1157
|
+
* A composable, collapsible app-navigation sidebar. `Sidebar.Root` owns the
|
|
1158
|
+
* state (no DOM); `Sidebar.Nav` renders the panel — inline on desktop,
|
|
1159
|
+
* collapsing to a skinny icon rail, and a left-side `Sheet` below the root's
|
|
1160
|
+
* `mobileBreakpoint`; and `Sidebar.Trigger` toggles it from anywhere under the
|
|
1161
|
+
* root (typically an `AppLayout.Header`). Navigation is grouped with
|
|
1162
|
+
* `Sidebar.Group`/`Sidebar.GroupLabel`/`Sidebar.List`, and the switcher rows
|
|
1163
|
+
* (app switcher up top, account/user down bottom) compose
|
|
1164
|
+
* `Sidebar.SwitcherTrigger` with your own `DropdownMenu` or `Dialog`.
|
|
1165
|
+
*
|
|
1166
|
+
* The component is routing-agnostic: compose router links via `asChild` on
|
|
1167
|
+
* `Sidebar.ItemButton` and drive `current` from your router's location.
|
|
1168
|
+
*
|
|
1169
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1170
|
+
*
|
|
1171
|
+
* @example
|
|
1172
|
+
* Composition:
|
|
1173
|
+
* ```
|
|
1174
|
+
* Sidebar.Root
|
|
1175
|
+
* ├── Sidebar.Nav
|
|
1176
|
+
* │ ├── Sidebar.Header
|
|
1177
|
+
* │ │ └── Sidebar.SwitcherTrigger
|
|
1178
|
+
* │ ├── Sidebar.Body
|
|
1179
|
+
* │ │ └── Sidebar.Group
|
|
1180
|
+
* │ │ ├── Sidebar.GroupLabel
|
|
1181
|
+
* │ │ └── Sidebar.List
|
|
1182
|
+
* │ │ └── Sidebar.Item
|
|
1183
|
+
* │ │ └── Sidebar.ItemButton
|
|
1184
|
+
* │ └── Sidebar.Footer
|
|
1185
|
+
* │ ├── Sidebar.Separator
|
|
1186
|
+
* │ └── Sidebar.SwitcherTrigger
|
|
1187
|
+
* │ ├── Sidebar.AccountAvatar
|
|
1188
|
+
* │ └── Sidebar.UserAvatar
|
|
1189
|
+
* └── Sidebar.Trigger
|
|
1190
|
+
* ```
|
|
1191
|
+
*
|
|
1192
|
+
* @example
|
|
1193
|
+
* ```tsx
|
|
1194
|
+
* <Sidebar.Root>
|
|
1195
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1196
|
+
* <Sidebar.Header>
|
|
1197
|
+
* <DropdownMenu.Root>
|
|
1198
|
+
* <DropdownMenu.Trigger asChild>
|
|
1199
|
+
* <Sidebar.SwitcherTrigger>
|
|
1200
|
+
* <GlobeIcon />
|
|
1201
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1202
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1203
|
+
* </Sidebar.SwitcherTrigger>
|
|
1204
|
+
* </DropdownMenu.Trigger>
|
|
1205
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1206
|
+
* </DropdownMenu.Root>
|
|
1207
|
+
* </Sidebar.Header>
|
|
1208
|
+
* <Sidebar.Body>
|
|
1209
|
+
* <Sidebar.Group>
|
|
1210
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1211
|
+
* <Sidebar.List>
|
|
1212
|
+
* <Sidebar.Item>
|
|
1213
|
+
* <Sidebar.ItemButton asChild current>
|
|
1214
|
+
* <a href="/endpoints">
|
|
1215
|
+
* <GraphIcon />
|
|
1216
|
+
* Endpoints
|
|
1217
|
+
* </a>
|
|
1218
|
+
* </Sidebar.ItemButton>
|
|
1219
|
+
* </Sidebar.Item>
|
|
1220
|
+
* </Sidebar.List>
|
|
1221
|
+
* </Sidebar.Group>
|
|
1222
|
+
* </Sidebar.Body>
|
|
1223
|
+
* <Sidebar.Footer>
|
|
1224
|
+
* <Sidebar.Separator />
|
|
1225
|
+
* <DropdownMenu.Root>
|
|
1226
|
+
* <DropdownMenu.Trigger asChild>
|
|
1227
|
+
* <Sidebar.SwitcherTrigger>
|
|
1228
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1229
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1230
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1231
|
+
* </Sidebar.SwitcherTrigger>
|
|
1232
|
+
* </DropdownMenu.Trigger>
|
|
1233
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1234
|
+
* </DropdownMenu.Root>
|
|
1235
|
+
* </Sidebar.Footer>
|
|
1236
|
+
* </Sidebar.Nav>
|
|
1237
|
+
* <Sidebar.Trigger />
|
|
1238
|
+
* </Sidebar.Root>
|
|
1239
|
+
* ```
|
|
1240
|
+
*/
|
|
1241
|
+
declare const Sidebar: {
|
|
1242
|
+
/**
|
|
1243
|
+
* The state owner for a sidebar. Renders no DOM — provides expanded /
|
|
1244
|
+
* mobile-sheet state to every part below it so the trigger can live in the
|
|
1245
|
+
* app shell without coupling it to the sidebar.
|
|
1246
|
+
*
|
|
1247
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1248
|
+
*
|
|
1249
|
+
* @example
|
|
1250
|
+
* ```tsx
|
|
1251
|
+
* <Sidebar.Root>
|
|
1252
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1253
|
+
* <Sidebar.Header>
|
|
1254
|
+
* <DropdownMenu.Root>
|
|
1255
|
+
* <DropdownMenu.Trigger asChild>
|
|
1256
|
+
* <Sidebar.SwitcherTrigger>
|
|
1257
|
+
* <GlobeIcon />
|
|
1258
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1259
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1260
|
+
* </Sidebar.SwitcherTrigger>
|
|
1261
|
+
* </DropdownMenu.Trigger>
|
|
1262
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1263
|
+
* </DropdownMenu.Root>
|
|
1264
|
+
* </Sidebar.Header>
|
|
1265
|
+
* <Sidebar.Body>
|
|
1266
|
+
* <Sidebar.Group>
|
|
1267
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1268
|
+
* <Sidebar.List>
|
|
1269
|
+
* <Sidebar.Item>
|
|
1270
|
+
* <Sidebar.ItemButton asChild current>
|
|
1271
|
+
* <a href="/endpoints">
|
|
1272
|
+
* <GraphIcon />
|
|
1273
|
+
* Endpoints
|
|
1274
|
+
* </a>
|
|
1275
|
+
* </Sidebar.ItemButton>
|
|
1276
|
+
* </Sidebar.Item>
|
|
1277
|
+
* </Sidebar.List>
|
|
1278
|
+
* </Sidebar.Group>
|
|
1279
|
+
* </Sidebar.Body>
|
|
1280
|
+
* <Sidebar.Footer>
|
|
1281
|
+
* <Sidebar.Separator />
|
|
1282
|
+
* <DropdownMenu.Root>
|
|
1283
|
+
* <DropdownMenu.Trigger asChild>
|
|
1284
|
+
* <Sidebar.SwitcherTrigger>
|
|
1285
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1286
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1287
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1288
|
+
* </Sidebar.SwitcherTrigger>
|
|
1289
|
+
* </DropdownMenu.Trigger>
|
|
1290
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1291
|
+
* </DropdownMenu.Root>
|
|
1292
|
+
* </Sidebar.Footer>
|
|
1293
|
+
* </Sidebar.Nav>
|
|
1294
|
+
* <Sidebar.Trigger />
|
|
1295
|
+
* </Sidebar.Root>
|
|
1296
|
+
* ```
|
|
1297
|
+
*/
|
|
1298
|
+
readonly Root: typeof Root;
|
|
1299
|
+
/**
|
|
1300
|
+
* The sidebar panel: an inline panel that collapses to the icon rail on
|
|
1301
|
+
* desktop, a left `Sheet` below the root's `mobileBreakpoint`. Set
|
|
1302
|
+
* `--sidebar-width` / `--sidebar-width-mobile` via its `className` or
|
|
1303
|
+
* `style`.
|
|
1304
|
+
*
|
|
1305
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1306
|
+
*
|
|
1307
|
+
* @example
|
|
1308
|
+
* ```tsx
|
|
1309
|
+
* <Sidebar.Root>
|
|
1310
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1311
|
+
* <Sidebar.Header>
|
|
1312
|
+
* <DropdownMenu.Root>
|
|
1313
|
+
* <DropdownMenu.Trigger asChild>
|
|
1314
|
+
* <Sidebar.SwitcherTrigger>
|
|
1315
|
+
* <GlobeIcon />
|
|
1316
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1317
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1318
|
+
* </Sidebar.SwitcherTrigger>
|
|
1319
|
+
* </DropdownMenu.Trigger>
|
|
1320
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1321
|
+
* </DropdownMenu.Root>
|
|
1322
|
+
* </Sidebar.Header>
|
|
1323
|
+
* <Sidebar.Body>
|
|
1324
|
+
* <Sidebar.Group>
|
|
1325
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1326
|
+
* <Sidebar.List>
|
|
1327
|
+
* <Sidebar.Item>
|
|
1328
|
+
* <Sidebar.ItemButton asChild current>
|
|
1329
|
+
* <a href="/endpoints">
|
|
1330
|
+
* <GraphIcon />
|
|
1331
|
+
* Endpoints
|
|
1332
|
+
* </a>
|
|
1333
|
+
* </Sidebar.ItemButton>
|
|
1334
|
+
* </Sidebar.Item>
|
|
1335
|
+
* </Sidebar.List>
|
|
1336
|
+
* </Sidebar.Group>
|
|
1337
|
+
* </Sidebar.Body>
|
|
1338
|
+
* <Sidebar.Footer>
|
|
1339
|
+
* <Sidebar.Separator />
|
|
1340
|
+
* <DropdownMenu.Root>
|
|
1341
|
+
* <DropdownMenu.Trigger asChild>
|
|
1342
|
+
* <Sidebar.SwitcherTrigger>
|
|
1343
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1344
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1345
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1346
|
+
* </Sidebar.SwitcherTrigger>
|
|
1347
|
+
* </DropdownMenu.Trigger>
|
|
1348
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1349
|
+
* </DropdownMenu.Root>
|
|
1350
|
+
* </Sidebar.Footer>
|
|
1351
|
+
* </Sidebar.Nav>
|
|
1352
|
+
* <Sidebar.Trigger />
|
|
1353
|
+
* </Sidebar.Root>
|
|
1354
|
+
* ```
|
|
1355
|
+
*/
|
|
1356
|
+
readonly Nav: typeof Nav;
|
|
1357
|
+
/**
|
|
1358
|
+
* The `IconButton` that toggles the sidebar. Place it in the app shell's
|
|
1359
|
+
* header; it stays functional at every breakpoint.
|
|
1360
|
+
*
|
|
1361
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1362
|
+
*
|
|
1363
|
+
* @example
|
|
1364
|
+
* ```tsx
|
|
1365
|
+
* <Sidebar.Root>
|
|
1366
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1367
|
+
* <Sidebar.Header>
|
|
1368
|
+
* <DropdownMenu.Root>
|
|
1369
|
+
* <DropdownMenu.Trigger asChild>
|
|
1370
|
+
* <Sidebar.SwitcherTrigger>
|
|
1371
|
+
* <GlobeIcon />
|
|
1372
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1373
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1374
|
+
* </Sidebar.SwitcherTrigger>
|
|
1375
|
+
* </DropdownMenu.Trigger>
|
|
1376
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1377
|
+
* </DropdownMenu.Root>
|
|
1378
|
+
* </Sidebar.Header>
|
|
1379
|
+
* <Sidebar.Body>
|
|
1380
|
+
* <Sidebar.Group>
|
|
1381
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1382
|
+
* <Sidebar.List>
|
|
1383
|
+
* <Sidebar.Item>
|
|
1384
|
+
* <Sidebar.ItemButton asChild current>
|
|
1385
|
+
* <a href="/endpoints">
|
|
1386
|
+
* <GraphIcon />
|
|
1387
|
+
* Endpoints
|
|
1388
|
+
* </a>
|
|
1389
|
+
* </Sidebar.ItemButton>
|
|
1390
|
+
* </Sidebar.Item>
|
|
1391
|
+
* </Sidebar.List>
|
|
1392
|
+
* </Sidebar.Group>
|
|
1393
|
+
* </Sidebar.Body>
|
|
1394
|
+
* <Sidebar.Footer>
|
|
1395
|
+
* <Sidebar.Separator />
|
|
1396
|
+
* <DropdownMenu.Root>
|
|
1397
|
+
* <DropdownMenu.Trigger asChild>
|
|
1398
|
+
* <Sidebar.SwitcherTrigger>
|
|
1399
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1400
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1401
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1402
|
+
* </Sidebar.SwitcherTrigger>
|
|
1403
|
+
* </DropdownMenu.Trigger>
|
|
1404
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1405
|
+
* </DropdownMenu.Root>
|
|
1406
|
+
* </Sidebar.Footer>
|
|
1407
|
+
* </Sidebar.Nav>
|
|
1408
|
+
* <Sidebar.Trigger />
|
|
1409
|
+
* </Sidebar.Root>
|
|
1410
|
+
* ```
|
|
1411
|
+
*/
|
|
1412
|
+
readonly Trigger: typeof Trigger;
|
|
1413
|
+
/**
|
|
1414
|
+
* The pinned top container of the panel, typically holding the app
|
|
1415
|
+
* switcher (`Sidebar.SwitcherTrigger` + `DropdownMenu`/`Dialog`). Its
|
|
1416
|
+
* height vertically aligns the switcher with an `AppLayout.Header`.
|
|
1417
|
+
*
|
|
1418
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1419
|
+
*
|
|
1420
|
+
* @example
|
|
1421
|
+
* ```tsx
|
|
1422
|
+
* <Sidebar.Root>
|
|
1423
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1424
|
+
* <Sidebar.Header>
|
|
1425
|
+
* <DropdownMenu.Root>
|
|
1426
|
+
* <DropdownMenu.Trigger asChild>
|
|
1427
|
+
* <Sidebar.SwitcherTrigger>
|
|
1428
|
+
* <GlobeIcon />
|
|
1429
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1430
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1431
|
+
* </Sidebar.SwitcherTrigger>
|
|
1432
|
+
* </DropdownMenu.Trigger>
|
|
1433
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1434
|
+
* </DropdownMenu.Root>
|
|
1435
|
+
* </Sidebar.Header>
|
|
1436
|
+
* <Sidebar.Body>
|
|
1437
|
+
* <Sidebar.Group>
|
|
1438
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1439
|
+
* <Sidebar.List>
|
|
1440
|
+
* <Sidebar.Item>
|
|
1441
|
+
* <Sidebar.ItemButton asChild current>
|
|
1442
|
+
* <a href="/endpoints">
|
|
1443
|
+
* <GraphIcon />
|
|
1444
|
+
* Endpoints
|
|
1445
|
+
* </a>
|
|
1446
|
+
* </Sidebar.ItemButton>
|
|
1447
|
+
* </Sidebar.Item>
|
|
1448
|
+
* </Sidebar.List>
|
|
1449
|
+
* </Sidebar.Group>
|
|
1450
|
+
* </Sidebar.Body>
|
|
1451
|
+
* <Sidebar.Footer>
|
|
1452
|
+
* <Sidebar.Separator />
|
|
1453
|
+
* <DropdownMenu.Root>
|
|
1454
|
+
* <DropdownMenu.Trigger asChild>
|
|
1455
|
+
* <Sidebar.SwitcherTrigger>
|
|
1456
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1457
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1458
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1459
|
+
* </Sidebar.SwitcherTrigger>
|
|
1460
|
+
* </DropdownMenu.Trigger>
|
|
1461
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1462
|
+
* </DropdownMenu.Root>
|
|
1463
|
+
* </Sidebar.Footer>
|
|
1464
|
+
* </Sidebar.Nav>
|
|
1465
|
+
* <Sidebar.Trigger />
|
|
1466
|
+
* </Sidebar.Root>
|
|
1467
|
+
* ```
|
|
1468
|
+
*/
|
|
1469
|
+
readonly Header: typeof Header;
|
|
1470
|
+
/**
|
|
1471
|
+
* The scrollable middle region holding the navigation groups.
|
|
1472
|
+
*
|
|
1473
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1474
|
+
*
|
|
1475
|
+
* @example
|
|
1476
|
+
* ```tsx
|
|
1477
|
+
* <Sidebar.Root>
|
|
1478
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1479
|
+
* <Sidebar.Header>
|
|
1480
|
+
* <DropdownMenu.Root>
|
|
1481
|
+
* <DropdownMenu.Trigger asChild>
|
|
1482
|
+
* <Sidebar.SwitcherTrigger>
|
|
1483
|
+
* <GlobeIcon />
|
|
1484
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1485
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1486
|
+
* </Sidebar.SwitcherTrigger>
|
|
1487
|
+
* </DropdownMenu.Trigger>
|
|
1488
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1489
|
+
* </DropdownMenu.Root>
|
|
1490
|
+
* </Sidebar.Header>
|
|
1491
|
+
* <Sidebar.Body>
|
|
1492
|
+
* <Sidebar.Group>
|
|
1493
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1494
|
+
* <Sidebar.List>
|
|
1495
|
+
* <Sidebar.Item>
|
|
1496
|
+
* <Sidebar.ItemButton asChild current>
|
|
1497
|
+
* <a href="/endpoints">
|
|
1498
|
+
* <GraphIcon />
|
|
1499
|
+
* Endpoints
|
|
1500
|
+
* </a>
|
|
1501
|
+
* </Sidebar.ItemButton>
|
|
1502
|
+
* </Sidebar.Item>
|
|
1503
|
+
* </Sidebar.List>
|
|
1504
|
+
* </Sidebar.Group>
|
|
1505
|
+
* </Sidebar.Body>
|
|
1506
|
+
* <Sidebar.Footer>
|
|
1507
|
+
* <Sidebar.Separator />
|
|
1508
|
+
* <DropdownMenu.Root>
|
|
1509
|
+
* <DropdownMenu.Trigger asChild>
|
|
1510
|
+
* <Sidebar.SwitcherTrigger>
|
|
1511
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1512
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1513
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1514
|
+
* </Sidebar.SwitcherTrigger>
|
|
1515
|
+
* </DropdownMenu.Trigger>
|
|
1516
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1517
|
+
* </DropdownMenu.Root>
|
|
1518
|
+
* </Sidebar.Footer>
|
|
1519
|
+
* </Sidebar.Nav>
|
|
1520
|
+
* <Sidebar.Trigger />
|
|
1521
|
+
* </Sidebar.Root>
|
|
1522
|
+
* ```
|
|
1523
|
+
*/
|
|
1524
|
+
readonly Body: typeof Body;
|
|
1525
|
+
/**
|
|
1526
|
+
* The pinned bottom container, typically holding cross-product items and
|
|
1527
|
+
* the account/user switcher row.
|
|
1528
|
+
*
|
|
1529
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1530
|
+
*
|
|
1531
|
+
* @example
|
|
1532
|
+
* ```tsx
|
|
1533
|
+
* <Sidebar.Root>
|
|
1534
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1535
|
+
* <Sidebar.Header>
|
|
1536
|
+
* <DropdownMenu.Root>
|
|
1537
|
+
* <DropdownMenu.Trigger asChild>
|
|
1538
|
+
* <Sidebar.SwitcherTrigger>
|
|
1539
|
+
* <GlobeIcon />
|
|
1540
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1541
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1542
|
+
* </Sidebar.SwitcherTrigger>
|
|
1543
|
+
* </DropdownMenu.Trigger>
|
|
1544
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1545
|
+
* </DropdownMenu.Root>
|
|
1546
|
+
* </Sidebar.Header>
|
|
1547
|
+
* <Sidebar.Body>
|
|
1548
|
+
* <Sidebar.Group>
|
|
1549
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1550
|
+
* <Sidebar.List>
|
|
1551
|
+
* <Sidebar.Item>
|
|
1552
|
+
* <Sidebar.ItemButton asChild current>
|
|
1553
|
+
* <a href="/endpoints">
|
|
1554
|
+
* <GraphIcon />
|
|
1555
|
+
* Endpoints
|
|
1556
|
+
* </a>
|
|
1557
|
+
* </Sidebar.ItemButton>
|
|
1558
|
+
* </Sidebar.Item>
|
|
1559
|
+
* </Sidebar.List>
|
|
1560
|
+
* </Sidebar.Group>
|
|
1561
|
+
* </Sidebar.Body>
|
|
1562
|
+
* <Sidebar.Footer>
|
|
1563
|
+
* <Sidebar.Separator />
|
|
1564
|
+
* <DropdownMenu.Root>
|
|
1565
|
+
* <DropdownMenu.Trigger asChild>
|
|
1566
|
+
* <Sidebar.SwitcherTrigger>
|
|
1567
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1568
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1569
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1570
|
+
* </Sidebar.SwitcherTrigger>
|
|
1571
|
+
* </DropdownMenu.Trigger>
|
|
1572
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1573
|
+
* </DropdownMenu.Root>
|
|
1574
|
+
* </Sidebar.Footer>
|
|
1575
|
+
* </Sidebar.Nav>
|
|
1576
|
+
* <Sidebar.Trigger />
|
|
1577
|
+
* </Sidebar.Root>
|
|
1578
|
+
* ```
|
|
1579
|
+
*/
|
|
1580
|
+
readonly Footer: typeof Footer;
|
|
1581
|
+
/**
|
|
1582
|
+
* A grouping container pairing a `GroupLabel` with a `List`; wires the
|
|
1583
|
+
* label to the list via `aria-labelledby`.
|
|
1584
|
+
*
|
|
1585
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1586
|
+
*
|
|
1587
|
+
* @example
|
|
1588
|
+
* ```tsx
|
|
1589
|
+
* <Sidebar.Root>
|
|
1590
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1591
|
+
* <Sidebar.Header>
|
|
1592
|
+
* <DropdownMenu.Root>
|
|
1593
|
+
* <DropdownMenu.Trigger asChild>
|
|
1594
|
+
* <Sidebar.SwitcherTrigger>
|
|
1595
|
+
* <GlobeIcon />
|
|
1596
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1597
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1598
|
+
* </Sidebar.SwitcherTrigger>
|
|
1599
|
+
* </DropdownMenu.Trigger>
|
|
1600
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1601
|
+
* </DropdownMenu.Root>
|
|
1602
|
+
* </Sidebar.Header>
|
|
1603
|
+
* <Sidebar.Body>
|
|
1604
|
+
* <Sidebar.Group>
|
|
1605
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1606
|
+
* <Sidebar.List>
|
|
1607
|
+
* <Sidebar.Item>
|
|
1608
|
+
* <Sidebar.ItemButton asChild current>
|
|
1609
|
+
* <a href="/endpoints">
|
|
1610
|
+
* <GraphIcon />
|
|
1611
|
+
* Endpoints
|
|
1612
|
+
* </a>
|
|
1613
|
+
* </Sidebar.ItemButton>
|
|
1614
|
+
* </Sidebar.Item>
|
|
1615
|
+
* </Sidebar.List>
|
|
1616
|
+
* </Sidebar.Group>
|
|
1617
|
+
* </Sidebar.Body>
|
|
1618
|
+
* <Sidebar.Footer>
|
|
1619
|
+
* <Sidebar.Separator />
|
|
1620
|
+
* <DropdownMenu.Root>
|
|
1621
|
+
* <DropdownMenu.Trigger asChild>
|
|
1622
|
+
* <Sidebar.SwitcherTrigger>
|
|
1623
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1624
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1625
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1626
|
+
* </Sidebar.SwitcherTrigger>
|
|
1627
|
+
* </DropdownMenu.Trigger>
|
|
1628
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1629
|
+
* </DropdownMenu.Root>
|
|
1630
|
+
* </Sidebar.Footer>
|
|
1631
|
+
* </Sidebar.Nav>
|
|
1632
|
+
* <Sidebar.Trigger />
|
|
1633
|
+
* </Sidebar.Root>
|
|
1634
|
+
* ```
|
|
1635
|
+
*/
|
|
1636
|
+
readonly Group: typeof Group;
|
|
1637
|
+
/**
|
|
1638
|
+
* The muted label of a group. Renders a `<div>`; pass `asChild` to render
|
|
1639
|
+
* a heading at a level you control.
|
|
1640
|
+
*
|
|
1641
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1642
|
+
*
|
|
1643
|
+
* @example
|
|
1644
|
+
* ```tsx
|
|
1645
|
+
* <Sidebar.Root>
|
|
1646
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1647
|
+
* <Sidebar.Header>
|
|
1648
|
+
* <DropdownMenu.Root>
|
|
1649
|
+
* <DropdownMenu.Trigger asChild>
|
|
1650
|
+
* <Sidebar.SwitcherTrigger>
|
|
1651
|
+
* <GlobeIcon />
|
|
1652
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1653
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1654
|
+
* </Sidebar.SwitcherTrigger>
|
|
1655
|
+
* </DropdownMenu.Trigger>
|
|
1656
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1657
|
+
* </DropdownMenu.Root>
|
|
1658
|
+
* </Sidebar.Header>
|
|
1659
|
+
* <Sidebar.Body>
|
|
1660
|
+
* <Sidebar.Group>
|
|
1661
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1662
|
+
* <Sidebar.List>
|
|
1663
|
+
* <Sidebar.Item>
|
|
1664
|
+
* <Sidebar.ItemButton asChild current>
|
|
1665
|
+
* <a href="/endpoints">
|
|
1666
|
+
* <GraphIcon />
|
|
1667
|
+
* Endpoints
|
|
1668
|
+
* </a>
|
|
1669
|
+
* </Sidebar.ItemButton>
|
|
1670
|
+
* </Sidebar.Item>
|
|
1671
|
+
* </Sidebar.List>
|
|
1672
|
+
* </Sidebar.Group>
|
|
1673
|
+
* </Sidebar.Body>
|
|
1674
|
+
* <Sidebar.Footer>
|
|
1675
|
+
* <Sidebar.Separator />
|
|
1676
|
+
* <DropdownMenu.Root>
|
|
1677
|
+
* <DropdownMenu.Trigger asChild>
|
|
1678
|
+
* <Sidebar.SwitcherTrigger>
|
|
1679
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1680
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1681
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1682
|
+
* </Sidebar.SwitcherTrigger>
|
|
1683
|
+
* </DropdownMenu.Trigger>
|
|
1684
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1685
|
+
* </DropdownMenu.Root>
|
|
1686
|
+
* </Sidebar.Footer>
|
|
1687
|
+
* </Sidebar.Nav>
|
|
1688
|
+
* <Sidebar.Trigger />
|
|
1689
|
+
* </Sidebar.Root>
|
|
1690
|
+
* ```
|
|
1691
|
+
*/
|
|
1692
|
+
readonly GroupLabel: typeof GroupLabel;
|
|
1693
|
+
/**
|
|
1694
|
+
* The `<ul>` of navigation rows in a group.
|
|
1695
|
+
*
|
|
1696
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1697
|
+
*
|
|
1698
|
+
* @example
|
|
1699
|
+
* ```tsx
|
|
1700
|
+
* <Sidebar.Root>
|
|
1701
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1702
|
+
* <Sidebar.Header>
|
|
1703
|
+
* <DropdownMenu.Root>
|
|
1704
|
+
* <DropdownMenu.Trigger asChild>
|
|
1705
|
+
* <Sidebar.SwitcherTrigger>
|
|
1706
|
+
* <GlobeIcon />
|
|
1707
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1708
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1709
|
+
* </Sidebar.SwitcherTrigger>
|
|
1710
|
+
* </DropdownMenu.Trigger>
|
|
1711
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1712
|
+
* </DropdownMenu.Root>
|
|
1713
|
+
* </Sidebar.Header>
|
|
1714
|
+
* <Sidebar.Body>
|
|
1715
|
+
* <Sidebar.Group>
|
|
1716
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1717
|
+
* <Sidebar.List>
|
|
1718
|
+
* <Sidebar.Item>
|
|
1719
|
+
* <Sidebar.ItemButton asChild current>
|
|
1720
|
+
* <a href="/endpoints">
|
|
1721
|
+
* <GraphIcon />
|
|
1722
|
+
* Endpoints
|
|
1723
|
+
* </a>
|
|
1724
|
+
* </Sidebar.ItemButton>
|
|
1725
|
+
* </Sidebar.Item>
|
|
1726
|
+
* </Sidebar.List>
|
|
1727
|
+
* </Sidebar.Group>
|
|
1728
|
+
* </Sidebar.Body>
|
|
1729
|
+
* <Sidebar.Footer>
|
|
1730
|
+
* <Sidebar.Separator />
|
|
1731
|
+
* <DropdownMenu.Root>
|
|
1732
|
+
* <DropdownMenu.Trigger asChild>
|
|
1733
|
+
* <Sidebar.SwitcherTrigger>
|
|
1734
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1735
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1736
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1737
|
+
* </Sidebar.SwitcherTrigger>
|
|
1738
|
+
* </DropdownMenu.Trigger>
|
|
1739
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1740
|
+
* </DropdownMenu.Root>
|
|
1741
|
+
* </Sidebar.Footer>
|
|
1742
|
+
* </Sidebar.Nav>
|
|
1743
|
+
* <Sidebar.Trigger />
|
|
1744
|
+
* </Sidebar.Root>
|
|
1745
|
+
* ```
|
|
1746
|
+
*/
|
|
1747
|
+
readonly List: typeof List;
|
|
1748
|
+
/**
|
|
1749
|
+
* A single `<li>` row wrapper.
|
|
1750
|
+
*
|
|
1751
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1752
|
+
*
|
|
1753
|
+
* @example
|
|
1754
|
+
* ```tsx
|
|
1755
|
+
* <Sidebar.Root>
|
|
1756
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1757
|
+
* <Sidebar.Header>
|
|
1758
|
+
* <DropdownMenu.Root>
|
|
1759
|
+
* <DropdownMenu.Trigger asChild>
|
|
1760
|
+
* <Sidebar.SwitcherTrigger>
|
|
1761
|
+
* <GlobeIcon />
|
|
1762
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1763
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1764
|
+
* </Sidebar.SwitcherTrigger>
|
|
1765
|
+
* </DropdownMenu.Trigger>
|
|
1766
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1767
|
+
* </DropdownMenu.Root>
|
|
1768
|
+
* </Sidebar.Header>
|
|
1769
|
+
* <Sidebar.Body>
|
|
1770
|
+
* <Sidebar.Group>
|
|
1771
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1772
|
+
* <Sidebar.List>
|
|
1773
|
+
* <Sidebar.Item>
|
|
1774
|
+
* <Sidebar.ItemButton asChild current>
|
|
1775
|
+
* <a href="/endpoints">
|
|
1776
|
+
* <GraphIcon />
|
|
1777
|
+
* Endpoints
|
|
1778
|
+
* </a>
|
|
1779
|
+
* </Sidebar.ItemButton>
|
|
1780
|
+
* </Sidebar.Item>
|
|
1781
|
+
* </Sidebar.List>
|
|
1782
|
+
* </Sidebar.Group>
|
|
1783
|
+
* </Sidebar.Body>
|
|
1784
|
+
* <Sidebar.Footer>
|
|
1785
|
+
* <Sidebar.Separator />
|
|
1786
|
+
* <DropdownMenu.Root>
|
|
1787
|
+
* <DropdownMenu.Trigger asChild>
|
|
1788
|
+
* <Sidebar.SwitcherTrigger>
|
|
1789
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1790
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1791
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1792
|
+
* </Sidebar.SwitcherTrigger>
|
|
1793
|
+
* </DropdownMenu.Trigger>
|
|
1794
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1795
|
+
* </DropdownMenu.Root>
|
|
1796
|
+
* </Sidebar.Footer>
|
|
1797
|
+
* </Sidebar.Nav>
|
|
1798
|
+
* <Sidebar.Trigger />
|
|
1799
|
+
* </Sidebar.Root>
|
|
1800
|
+
* ```
|
|
1801
|
+
*/
|
|
1802
|
+
readonly Item: typeof Item;
|
|
1803
|
+
/**
|
|
1804
|
+
* The interactive navigation row (icon + truncating label). `asChild` for
|
|
1805
|
+
* router links; `current` for the active page.
|
|
1806
|
+
*
|
|
1807
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1808
|
+
*
|
|
1809
|
+
* @example
|
|
1810
|
+
* ```tsx
|
|
1811
|
+
* <Sidebar.Root>
|
|
1812
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1813
|
+
* <Sidebar.Header>
|
|
1814
|
+
* <DropdownMenu.Root>
|
|
1815
|
+
* <DropdownMenu.Trigger asChild>
|
|
1816
|
+
* <Sidebar.SwitcherTrigger>
|
|
1817
|
+
* <GlobeIcon />
|
|
1818
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1819
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1820
|
+
* </Sidebar.SwitcherTrigger>
|
|
1821
|
+
* </DropdownMenu.Trigger>
|
|
1822
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1823
|
+
* </DropdownMenu.Root>
|
|
1824
|
+
* </Sidebar.Header>
|
|
1825
|
+
* <Sidebar.Body>
|
|
1826
|
+
* <Sidebar.Group>
|
|
1827
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1828
|
+
* <Sidebar.List>
|
|
1829
|
+
* <Sidebar.Item>
|
|
1830
|
+
* <Sidebar.ItemButton asChild current>
|
|
1831
|
+
* <a href="/endpoints">
|
|
1832
|
+
* <GraphIcon />
|
|
1833
|
+
* Endpoints
|
|
1834
|
+
* </a>
|
|
1835
|
+
* </Sidebar.ItemButton>
|
|
1836
|
+
* </Sidebar.Item>
|
|
1837
|
+
* </Sidebar.List>
|
|
1838
|
+
* </Sidebar.Group>
|
|
1839
|
+
* </Sidebar.Body>
|
|
1840
|
+
* <Sidebar.Footer>
|
|
1841
|
+
* <Sidebar.Separator />
|
|
1842
|
+
* <DropdownMenu.Root>
|
|
1843
|
+
* <DropdownMenu.Trigger asChild>
|
|
1844
|
+
* <Sidebar.SwitcherTrigger>
|
|
1845
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1846
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1847
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1848
|
+
* </Sidebar.SwitcherTrigger>
|
|
1849
|
+
* </DropdownMenu.Trigger>
|
|
1850
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1851
|
+
* </DropdownMenu.Root>
|
|
1852
|
+
* </Sidebar.Footer>
|
|
1853
|
+
* </Sidebar.Nav>
|
|
1854
|
+
* <Sidebar.Trigger />
|
|
1855
|
+
* </Sidebar.Root>
|
|
1856
|
+
* ```
|
|
1857
|
+
*/
|
|
1858
|
+
readonly ItemButton: typeof ItemButton;
|
|
1859
|
+
/**
|
|
1860
|
+
* The styled switcher row for the header/footer. Not state-wired — compose
|
|
1861
|
+
* with `DropdownMenu.Trigger asChild` or `Dialog.Trigger asChild`.
|
|
1862
|
+
*
|
|
1863
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1864
|
+
*
|
|
1865
|
+
* @example
|
|
1866
|
+
* ```tsx
|
|
1867
|
+
* <Sidebar.Root>
|
|
1868
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1869
|
+
* <Sidebar.Header>
|
|
1870
|
+
* <DropdownMenu.Root>
|
|
1871
|
+
* <DropdownMenu.Trigger asChild>
|
|
1872
|
+
* <Sidebar.SwitcherTrigger>
|
|
1873
|
+
* <GlobeIcon />
|
|
1874
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1875
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1876
|
+
* </Sidebar.SwitcherTrigger>
|
|
1877
|
+
* </DropdownMenu.Trigger>
|
|
1878
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1879
|
+
* </DropdownMenu.Root>
|
|
1880
|
+
* </Sidebar.Header>
|
|
1881
|
+
* <Sidebar.Body>
|
|
1882
|
+
* <Sidebar.Group>
|
|
1883
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1884
|
+
* <Sidebar.List>
|
|
1885
|
+
* <Sidebar.Item>
|
|
1886
|
+
* <Sidebar.ItemButton asChild current>
|
|
1887
|
+
* <a href="/endpoints">
|
|
1888
|
+
* <GraphIcon />
|
|
1889
|
+
* Endpoints
|
|
1890
|
+
* </a>
|
|
1891
|
+
* </Sidebar.ItemButton>
|
|
1892
|
+
* </Sidebar.Item>
|
|
1893
|
+
* </Sidebar.List>
|
|
1894
|
+
* </Sidebar.Group>
|
|
1895
|
+
* </Sidebar.Body>
|
|
1896
|
+
* <Sidebar.Footer>
|
|
1897
|
+
* <Sidebar.Separator />
|
|
1898
|
+
* <DropdownMenu.Root>
|
|
1899
|
+
* <DropdownMenu.Trigger asChild>
|
|
1900
|
+
* <Sidebar.SwitcherTrigger>
|
|
1901
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1902
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1903
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1904
|
+
* </Sidebar.SwitcherTrigger>
|
|
1905
|
+
* </DropdownMenu.Trigger>
|
|
1906
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1907
|
+
* </DropdownMenu.Root>
|
|
1908
|
+
* </Sidebar.Footer>
|
|
1909
|
+
* </Sidebar.Nav>
|
|
1910
|
+
* <Sidebar.Trigger />
|
|
1911
|
+
* </Sidebar.Root>
|
|
1912
|
+
* ```
|
|
1913
|
+
*/
|
|
1914
|
+
readonly SwitcherTrigger: typeof SwitcherTrigger;
|
|
1915
|
+
/**
|
|
1916
|
+
* An inset hairline between sidebar regions, aligned with the content
|
|
1917
|
+
* padding.
|
|
1918
|
+
*
|
|
1919
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1920
|
+
*
|
|
1921
|
+
* @example
|
|
1922
|
+
* ```tsx
|
|
1923
|
+
* <Sidebar.Root>
|
|
1924
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1925
|
+
* <Sidebar.Header>
|
|
1926
|
+
* <DropdownMenu.Root>
|
|
1927
|
+
* <DropdownMenu.Trigger asChild>
|
|
1928
|
+
* <Sidebar.SwitcherTrigger>
|
|
1929
|
+
* <GlobeIcon />
|
|
1930
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1931
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1932
|
+
* </Sidebar.SwitcherTrigger>
|
|
1933
|
+
* </DropdownMenu.Trigger>
|
|
1934
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1935
|
+
* </DropdownMenu.Root>
|
|
1936
|
+
* </Sidebar.Header>
|
|
1937
|
+
* <Sidebar.Body>
|
|
1938
|
+
* <Sidebar.Group>
|
|
1939
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1940
|
+
* <Sidebar.List>
|
|
1941
|
+
* <Sidebar.Item>
|
|
1942
|
+
* <Sidebar.ItemButton asChild current>
|
|
1943
|
+
* <a href="/endpoints">
|
|
1944
|
+
* <GraphIcon />
|
|
1945
|
+
* Endpoints
|
|
1946
|
+
* </a>
|
|
1947
|
+
* </Sidebar.ItemButton>
|
|
1948
|
+
* </Sidebar.Item>
|
|
1949
|
+
* </Sidebar.List>
|
|
1950
|
+
* </Sidebar.Group>
|
|
1951
|
+
* </Sidebar.Body>
|
|
1952
|
+
* <Sidebar.Footer>
|
|
1953
|
+
* <Sidebar.Separator />
|
|
1954
|
+
* <DropdownMenu.Root>
|
|
1955
|
+
* <DropdownMenu.Trigger asChild>
|
|
1956
|
+
* <Sidebar.SwitcherTrigger>
|
|
1957
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
1958
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
1959
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
1960
|
+
* </Sidebar.SwitcherTrigger>
|
|
1961
|
+
* </DropdownMenu.Trigger>
|
|
1962
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1963
|
+
* </DropdownMenu.Root>
|
|
1964
|
+
* </Sidebar.Footer>
|
|
1965
|
+
* </Sidebar.Nav>
|
|
1966
|
+
* <Sidebar.Trigger />
|
|
1967
|
+
* </Sidebar.Root>
|
|
1968
|
+
* ```
|
|
1969
|
+
*/
|
|
1970
|
+
readonly Separator: typeof SidebarSeparator;
|
|
1971
|
+
/**
|
|
1972
|
+
* A rounded-square account avatar with deterministic, WCAG-compliant
|
|
1973
|
+
* swatch colors derived from the account id.
|
|
1974
|
+
*
|
|
1975
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
1976
|
+
*
|
|
1977
|
+
* @example
|
|
1978
|
+
* ```tsx
|
|
1979
|
+
* <Sidebar.Root>
|
|
1980
|
+
* <Sidebar.Nav aria-label="Main">
|
|
1981
|
+
* <Sidebar.Header>
|
|
1982
|
+
* <DropdownMenu.Root>
|
|
1983
|
+
* <DropdownMenu.Trigger asChild>
|
|
1984
|
+
* <Sidebar.SwitcherTrigger>
|
|
1985
|
+
* <GlobeIcon />
|
|
1986
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
1987
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
1988
|
+
* </Sidebar.SwitcherTrigger>
|
|
1989
|
+
* </DropdownMenu.Trigger>
|
|
1990
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
1991
|
+
* </DropdownMenu.Root>
|
|
1992
|
+
* </Sidebar.Header>
|
|
1993
|
+
* <Sidebar.Body>
|
|
1994
|
+
* <Sidebar.Group>
|
|
1995
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
1996
|
+
* <Sidebar.List>
|
|
1997
|
+
* <Sidebar.Item>
|
|
1998
|
+
* <Sidebar.ItemButton asChild current>
|
|
1999
|
+
* <a href="/endpoints">
|
|
2000
|
+
* <GraphIcon />
|
|
2001
|
+
* Endpoints
|
|
2002
|
+
* </a>
|
|
2003
|
+
* </Sidebar.ItemButton>
|
|
2004
|
+
* </Sidebar.Item>
|
|
2005
|
+
* </Sidebar.List>
|
|
2006
|
+
* </Sidebar.Group>
|
|
2007
|
+
* </Sidebar.Body>
|
|
2008
|
+
* <Sidebar.Footer>
|
|
2009
|
+
* <Sidebar.Separator />
|
|
2010
|
+
* <DropdownMenu.Root>
|
|
2011
|
+
* <DropdownMenu.Trigger asChild>
|
|
2012
|
+
* <Sidebar.SwitcherTrigger>
|
|
2013
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
2014
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
2015
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
2016
|
+
* </Sidebar.SwitcherTrigger>
|
|
2017
|
+
* </DropdownMenu.Trigger>
|
|
2018
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
2019
|
+
* </DropdownMenu.Root>
|
|
2020
|
+
* </Sidebar.Footer>
|
|
2021
|
+
* </Sidebar.Nav>
|
|
2022
|
+
* <Sidebar.Trigger />
|
|
2023
|
+
* </Sidebar.Root>
|
|
2024
|
+
* ```
|
|
2025
|
+
*/
|
|
2026
|
+
readonly AccountAvatar: typeof AccountAvatar;
|
|
2027
|
+
/**
|
|
2028
|
+
* A circular user avatar with a silhouette fallback.
|
|
2029
|
+
*
|
|
2030
|
+
* @see https://mantle.ngrok.com/components/navigation/sidebar
|
|
2031
|
+
*
|
|
2032
|
+
* @example
|
|
2033
|
+
* ```tsx
|
|
2034
|
+
* <Sidebar.Root>
|
|
2035
|
+
* <Sidebar.Nav aria-label="Main">
|
|
2036
|
+
* <Sidebar.Header>
|
|
2037
|
+
* <DropdownMenu.Root>
|
|
2038
|
+
* <DropdownMenu.Trigger asChild>
|
|
2039
|
+
* <Sidebar.SwitcherTrigger>
|
|
2040
|
+
* <GlobeIcon />
|
|
2041
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-base">Universal Gateway</span>
|
|
2042
|
+
* <CaretDownIcon className="text-muted size-4 shrink-0" />
|
|
2043
|
+
* </Sidebar.SwitcherTrigger>
|
|
2044
|
+
* </DropdownMenu.Trigger>
|
|
2045
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
2046
|
+
* </DropdownMenu.Root>
|
|
2047
|
+
* </Sidebar.Header>
|
|
2048
|
+
* <Sidebar.Body>
|
|
2049
|
+
* <Sidebar.Group>
|
|
2050
|
+
* <Sidebar.GroupLabel>Traffic</Sidebar.GroupLabel>
|
|
2051
|
+
* <Sidebar.List>
|
|
2052
|
+
* <Sidebar.Item>
|
|
2053
|
+
* <Sidebar.ItemButton asChild current>
|
|
2054
|
+
* <a href="/endpoints">
|
|
2055
|
+
* <GraphIcon />
|
|
2056
|
+
* Endpoints
|
|
2057
|
+
* </a>
|
|
2058
|
+
* </Sidebar.ItemButton>
|
|
2059
|
+
* </Sidebar.Item>
|
|
2060
|
+
* </Sidebar.List>
|
|
2061
|
+
* </Sidebar.Group>
|
|
2062
|
+
* </Sidebar.Body>
|
|
2063
|
+
* <Sidebar.Footer>
|
|
2064
|
+
* <Sidebar.Separator />
|
|
2065
|
+
* <DropdownMenu.Root>
|
|
2066
|
+
* <DropdownMenu.Trigger asChild>
|
|
2067
|
+
* <Sidebar.SwitcherTrigger>
|
|
2068
|
+
* <Sidebar.AccountAvatar accountId="acc_123" accountName="Acme Corp" />
|
|
2069
|
+
* <span className="text-strong min-w-0 flex-1 truncate text-sm font-medium">Acme Corp</span>
|
|
2070
|
+
* <Sidebar.UserAvatar alt="Jane Doe" />
|
|
2071
|
+
* </Sidebar.SwitcherTrigger>
|
|
2072
|
+
* </DropdownMenu.Trigger>
|
|
2073
|
+
* <DropdownMenu.Content width="trigger" className="min-w-(--sidebar-row-width)">…</DropdownMenu.Content>
|
|
2074
|
+
* </DropdownMenu.Root>
|
|
2075
|
+
* </Sidebar.Footer>
|
|
2076
|
+
* </Sidebar.Nav>
|
|
2077
|
+
* <Sidebar.Trigger />
|
|
2078
|
+
* </Sidebar.Root>
|
|
2079
|
+
* ```
|
|
2080
|
+
*/
|
|
2081
|
+
readonly UserAvatar: typeof UserAvatar;
|
|
2082
|
+
};
|
|
2083
|
+
//#endregion
|
|
2084
|
+
export { Sidebar, type SidebarMobileBreakpoint, type SidebarState, useSidebar };
|