@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.
Files changed (103) hide show
  1. package/dist/accordion.js +1 -1
  2. package/dist/agent.json +4 -1
  3. package/dist/alert-BWwNPOMI.d.ts +391 -0
  4. package/dist/alert-QMs0PqMq.js +1 -0
  5. package/dist/alert-center.d.ts +449 -0
  6. package/dist/alert-center.js +1 -0
  7. package/dist/alert-dialog.js +1 -1
  8. package/dist/alert.d.ts +1 -390
  9. package/dist/alert.js +1 -1
  10. package/dist/{anchor-DfeXTpKW.js → anchor-DvbNsphX.js} +1 -1
  11. package/dist/anchor.js +1 -1
  12. package/dist/app-layout.d.ts +483 -0
  13. package/dist/app-layout.js +1 -0
  14. package/dist/area-chart.js +1 -1
  15. package/dist/badge.js +1 -1
  16. package/dist/bar-chart.js +1 -1
  17. package/dist/breadcrumb.d.ts +1 -1
  18. package/dist/breadcrumb.js +1 -1
  19. package/dist/browser-only-CmEEzfU3.js +1 -0
  20. package/dist/browser-only.js +1 -1
  21. package/dist/{button-D9n09xUg.js → button-BO2CKsz6.js} +1 -1
  22. package/dist/{button-DjpEKt2X.js → button-BUospUB3.js} +1 -1
  23. package/dist/{button-BAno7KIU.js → button-C0S8RbaJ.js} +1 -1
  24. package/dist/button.js +1 -1
  25. package/dist/calendar.d.ts +1 -1
  26. package/dist/card.js +1 -1
  27. package/dist/centered-layout.d.ts +9 -9
  28. package/dist/centered-layout.js +1 -1
  29. package/dist/chart-DdBQ3xwx.js +2 -0
  30. package/dist/{choice-BHwFSSyv.js → choice-C9gLKECf.js} +1 -1
  31. package/dist/choice.js +1 -1
  32. package/dist/code-block.js +1 -1
  33. package/dist/code.js +1 -1
  34. package/dist/combobox.js +1 -1
  35. package/dist/command.js +1 -1
  36. package/dist/{copy-to-clipboard-BsCQ9m6K.js → copy-to-clipboard-B4UB6pts.js} +1 -1
  37. package/dist/data-slot-EM6s2WEU.js +1 -0
  38. package/dist/data-table.js +1 -1
  39. package/dist/description-list.js +1 -1
  40. package/dist/{dialog-DWZWd5Jt.js → dialog-Bsj_dX6r.js} +1 -1
  41. package/dist/dialog.d.ts +1 -1
  42. package/dist/dialog.js +1 -1
  43. package/dist/dropdown-menu-fUMqjRC0.js +1 -0
  44. package/dist/dropdown-menu.js +1 -1
  45. package/dist/empty.js +1 -1
  46. package/dist/field.js +1 -1
  47. package/dist/hooks.js +1 -1
  48. package/dist/{icons-DLCs1hLP.js → icons-CPbOq7cF.js} +1 -1
  49. package/dist/icons.js +1 -1
  50. package/dist/input.js +1 -1
  51. package/dist/line-chart.js +1 -1
  52. package/dist/{list-51KQvENW.js → list-CQFWx6Z8.js} +1 -1
  53. package/dist/list.js +1 -1
  54. package/dist/llms.txt +4 -1
  55. package/dist/main.d.ts +4 -1
  56. package/dist/main.js +1 -1
  57. package/dist/mantle.css +21 -1
  58. package/dist/media-object.js +1 -1
  59. package/dist/multi-select.d.ts +10 -2
  60. package/dist/multi-select.js +1 -1
  61. package/dist/otp-input.js +1 -1
  62. package/dist/pagination.js +1 -1
  63. package/dist/{primitive-trJDqIXJ.js → primitive-Dv-3snU3.js} +1 -1
  64. package/dist/progress.d.ts +8 -8
  65. package/dist/qr-code.js +1 -1
  66. package/dist/radio-group.d.ts +10 -0
  67. package/dist/radio-group.js +1 -1
  68. package/dist/sandboxed-on-click.js +1 -1
  69. package/dist/scatter-plot.d.ts +2 -1
  70. package/dist/scatter-plot.js +1 -1
  71. package/dist/{select-BCHWvmyC.js → select-B-9yWrif.js} +1 -1
  72. package/dist/select.js +1 -1
  73. package/dist/selectable-list.js +1 -1
  74. package/dist/{separator-bpE_kooz.js → separator-BepAcFFy.js} +1 -1
  75. package/dist/separator.js +1 -1
  76. package/dist/sheet-_fXLjiq2.js +1 -0
  77. package/dist/sheet.d.ts +1 -1
  78. package/dist/sheet.js +1 -1
  79. package/dist/sidebar.d.ts +2084 -0
  80. package/dist/sidebar.js +1 -0
  81. package/dist/{skeleton-CsbUHbBA.js → skeleton-DsHXIa9j.js} +1 -1
  82. package/dist/skeleton.js +1 -1
  83. package/dist/skip-to-main-link.js +1 -1
  84. package/dist/slot-Dpsqz16D.js +1 -0
  85. package/dist/slot.js +1 -1
  86. package/dist/split-button.js +1 -1
  87. package/dist/tabs.js +1 -1
  88. package/dist/{theme-C26-Xolp.js → theme-IAnQ35bd.js} +1 -1
  89. package/dist/theme-switcher.js +1 -1
  90. package/dist/theme.js +1 -1
  91. package/dist/toast.js +1 -1
  92. package/dist/use-breakpoint-Wd7_5-Mu.js +1 -0
  93. package/dist/use-copy-to-clipboard-CSyp4Zk0.js +1 -0
  94. package/dist/use-is-hydrated-DDCqXmju.js +1 -0
  95. package/dist/{use-prefers-reduced-motion-CagaNRgm.js → use-prefers-reduced-motion-Bk5zAfHY.js} +1 -1
  96. package/dist/utils.js +1 -1
  97. package/dist/well.js +1 -1
  98. package/package.json +16 -13
  99. package/dist/browser-only-CPH56Xw_.js +0 -1
  100. package/dist/chart-Do2qkrxl.js +0 -2
  101. package/dist/dropdown-menu-RyDWoKHx.js +0 -1
  102. package/dist/slot-CDk0Bb9z.js +0 -1
  103. package/dist/use-copy-to-clipboard-DqQ0_N3E.js +0 -1
@@ -0,0 +1,483 @@
1
+ import { n as WithAsChild } from "./as-child-D23mGo4f.js";
2
+ import { t as WithDataSlot } from "./data-slot-CChfb_cv.js";
3
+ import { ComponentProps } from "react";
4
+ //#region src/components/app-layout/app-layout.d.ts
5
+ /**
6
+ * The outer frame of an application shell. Renders a `<div>` with
7
+ * `relative isolate flex h-full w-full flex-col overflow-hidden bg-base`, so
8
+ * it fills its nearest sized ancestor — which makes it embeddable in docs
9
+ * demos and tests. Real app shells pin it to the viewport by merging
10
+ * `className="fixed inset-0"` (mantle `cx` is tailwind-merge-backed, so the
11
+ * override is deterministic); the shell itself never scrolls — only
12
+ * `AppLayout.Content` does.
13
+ *
14
+ * When the shell owns the document, render a `SkipToMainLink` as its first
15
+ * child and compose the `Main` landmark into `AppLayout.Content` via
16
+ * `asChild` so keyboard users can jump past the sidebar and toolbar straight
17
+ * into the content card.
18
+ *
19
+ * @see https://mantle.ngrok.com/layouts/app-layout
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * <AppLayout.Root className="fixed inset-0">
24
+ * <SkipToMainLink />
25
+ * <AppLayout.Notice>{isUnderMaintenance && <MaintenanceBanner />}</AppLayout.Notice>
26
+ * <AppLayout.Body>
27
+ * <AppLayout.Inset>
28
+ * <AppLayout.Content>
29
+ * <AppLayout.Header>
30
+ * <Breadcrumbs />
31
+ * </AppLayout.Header>
32
+ * <Outlet />
33
+ * </AppLayout.Content>
34
+ * </AppLayout.Inset>
35
+ * </AppLayout.Body>
36
+ * </AppLayout.Root>
37
+ * ```
38
+ */
39
+ declare const Root: ({ asChild, children, className, "data-slot": dataSlot, ...props }: ComponentProps<"div"> & WithAsChild & WithDataSlot) => import("react").JSX.Element;
40
+ /**
41
+ * A full-window-width strip pinned above everything else in the shell —
42
+ * including any sidebar — for maintenance notices, environment warnings,
43
+ * and similar app-wide messaging. It is a vertical composition slot: place an
44
+ * maintenance banner and an `AlertCenter.Bar` here, and each contributes its
45
+ * own row while the slot pushes the shell down. Renders an unstyled `<div>`
46
+ * (`flex w-full shrink-0 flex-col`): its children bring their own colors and
47
+ * layout, and the part collapses to nothing when empty. Deliberately not named
48
+ * `Banner` so it never reads as the ARIA `banner` landmark — it claims no
49
+ * landmark at all.
50
+ *
51
+ * @see https://mantle.ngrok.com/layouts/app-layout
52
+ *
53
+ * @example
54
+ * ```tsx
55
+ * <Sidebar.Root>
56
+ * <AppLayout.Root className="fixed inset-0">
57
+ * <SkipToMainLink />
58
+ * <AppLayout.Notice>
59
+ * {isUnderMaintenance && (
60
+ * <div className="bg-red-500 text-on-filled flex items-center gap-2 px-4 py-1 text-xs">
61
+ * The dashboard is read-only until {maintenanceEndsAt}.
62
+ * </div>
63
+ * )}
64
+ * </AppLayout.Notice>
65
+ * <AppLayout.Body>
66
+ * <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
67
+ * <AppLayout.Inset>
68
+ * <AppLayout.Content asChild>
69
+ * <Main>
70
+ * <AppLayout.Header>
71
+ * <Sidebar.Trigger />
72
+ * <Breadcrumbs />
73
+ * </AppLayout.Header>
74
+ * <Outlet />
75
+ * </Main>
76
+ * </AppLayout.Content>
77
+ * </AppLayout.Inset>
78
+ * </AppLayout.Body>
79
+ * </AppLayout.Root>
80
+ * </Sidebar.Root>
81
+ * ```
82
+ */
83
+ declare const Notice: ({ asChild, children, className, "data-slot": dataSlot, ...props }: ComponentProps<"div"> & WithAsChild & WithDataSlot) => import("react").JSX.Element;
84
+ /**
85
+ * The main horizontal region of the shell, below `AppLayout.Notice`. A flex
86
+ * row (`flex min-h-0 flex-1`) whose children are the app's columns — place a
87
+ * `Sidebar.Nav` (or any other rail) beside an `AppLayout.Inset`. The
88
+ * `min-h-0` is what lets `AppLayout.Content` scroll instead of the page.
89
+ *
90
+ * @see https://mantle.ngrok.com/layouts/app-layout
91
+ *
92
+ * @example
93
+ * ```tsx
94
+ * <Sidebar.Root>
95
+ * <AppLayout.Root className="fixed inset-0">
96
+ * <SkipToMainLink />
97
+ * <AppLayout.Notice>{isUnderMaintenance && <MaintenanceBanner />}</AppLayout.Notice>
98
+ * <AppLayout.Body>
99
+ * <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
100
+ * <AppLayout.Inset>
101
+ * <AppLayout.Content asChild>
102
+ * <Main>
103
+ * <AppLayout.Header>
104
+ * <Sidebar.Trigger />
105
+ * <Breadcrumbs />
106
+ * </AppLayout.Header>
107
+ * <Outlet />
108
+ * </Main>
109
+ * </AppLayout.Content>
110
+ * </AppLayout.Inset>
111
+ * </AppLayout.Body>
112
+ * </AppLayout.Root>
113
+ * </Sidebar.Root>
114
+ * ```
115
+ */
116
+ declare const Body: ({ asChild, children, className, "data-slot": dataSlot, ...props }: ComponentProps<"div"> & WithAsChild & WithDataSlot) => import("react").JSX.Element;
117
+ /**
118
+ * The content column of the shell: the flex column beside the sidebar that
119
+ * wraps the scrolling `AppLayout.Content` card. Owns the card gutter
120
+ * (`gap-2 p-2`), keeping a consistent gap beside a sidebar (invisible when
121
+ * both share `bg-base`).
122
+ *
123
+ * @see https://mantle.ngrok.com/layouts/app-layout
124
+ *
125
+ * @example
126
+ * ```tsx
127
+ * <Sidebar.Root>
128
+ * <AppLayout.Root className="fixed inset-0">
129
+ * <SkipToMainLink />
130
+ * <AppLayout.Notice>{isUnderMaintenance && <MaintenanceBanner />}</AppLayout.Notice>
131
+ * <AppLayout.Body>
132
+ * <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
133
+ * <AppLayout.Inset>
134
+ * <AppLayout.Content asChild>
135
+ * <Main>
136
+ * <AppLayout.Header>
137
+ * <Sidebar.Trigger />
138
+ * <Breadcrumbs />
139
+ * </AppLayout.Header>
140
+ * <Outlet />
141
+ * </Main>
142
+ * </AppLayout.Content>
143
+ * </AppLayout.Inset>
144
+ * </AppLayout.Body>
145
+ * </AppLayout.Root>
146
+ * </Sidebar.Root>
147
+ * ```
148
+ */
149
+ declare const Inset: ({ asChild, children, className, "data-slot": dataSlot, ...props }: ComponentProps<"div"> & WithAsChild & WithDataSlot) => import("react").JSX.Element;
150
+ /**
151
+ * The toolbar row pinned to the top of the content card — render it as the
152
+ * **first child of `AppLayout.Content`**. It is sticky (`top-0`) inside the
153
+ * card's scroll container with a hairline border beneath it, so page content
154
+ * scrolls under it. The natural home for a `Sidebar.Trigger` in its top-left,
155
+ * followed by `Breadcrumb` navigation, search, or page-level actions.
156
+ *
157
+ * Renders a semantic `<header>` scoped to the content region (inside `Main`
158
+ * it is deliberately not an ARIA `banner` landmark).
159
+ *
160
+ * **Sidebar alignment is an invariant, not a coincidence:** standalone, the
161
+ * toolbar is `h-14`. When the shell contains a `Sidebar.Header` (detected via
162
+ * `:has()` from `AppLayout.Root`), the toolbar instead derives its height from
163
+ * the sidebar's public `--sidebar-header-height` token as
164
+ * `calc(var(--sidebar-header-height, 4.5rem) - 1rem - 2px)` — subtracting
165
+ * twice the `AppLayout.Inset` gutter and twice the content card's hairline
166
+ * border — which keeps the two rows' vertical centers on the same band by
167
+ * construction. Override `--sidebar-header-height` on a common ancestor
168
+ * (e.g. `AppLayout.Root`'s `className`) and both rows move together.
169
+ *
170
+ * **CSS variables (public API):**
171
+ * - `--sidebar-header-height` — read, not owned: `Sidebar.Header` owns this
172
+ * token (default `4.5rem`) and `AppLayout.Header` derives its own height
173
+ * from it whenever a sidebar header is present in the shell. Set it on a
174
+ * common ancestor of both rows (e.g. `AppLayout.Root`), never on one of
175
+ * them, since custom properties only inherit downward.
176
+ *
177
+ * @see https://mantle.ngrok.com/layouts/app-layout
178
+ *
179
+ * @example
180
+ * ```tsx
181
+ * <Sidebar.Root>
182
+ * <AppLayout.Root className="fixed inset-0">
183
+ * <SkipToMainLink />
184
+ * <AppLayout.Notice>{isUnderMaintenance && <MaintenanceBanner />}</AppLayout.Notice>
185
+ * <AppLayout.Body>
186
+ * <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
187
+ * <AppLayout.Inset>
188
+ * <AppLayout.Content asChild>
189
+ * <Main>
190
+ * <AppLayout.Header>
191
+ * <Sidebar.Trigger />
192
+ * <Breadcrumbs />
193
+ * </AppLayout.Header>
194
+ * <Outlet />
195
+ * </Main>
196
+ * </AppLayout.Content>
197
+ * </AppLayout.Inset>
198
+ * </AppLayout.Body>
199
+ * </AppLayout.Root>
200
+ * </Sidebar.Root>
201
+ * ```
202
+ */
203
+ declare const Header: ({ asChild, children, className, "data-slot": dataSlot, ...props }: ComponentProps<"header"> & WithAsChild & WithDataSlot) => import("react").JSX.Element;
204
+ /**
205
+ * The scrolling content card of the shell: a rounded, bordered `bg-card`
206
+ * surface that fills the remaining space and scrolls internally
207
+ * (`overflow-y-auto overscroll-none`) — the page body never scrolls and
208
+ * scroll never bounces the shell. Render `AppLayout.Header` as its first
209
+ * child for a sticky in-card toolbar that content scrolls beneath. The card
210
+ * renders a `<div>` by default, but in a real
211
+ * app shell this should almost always be mantle's `Main` landmark, composed
212
+ * via `asChild` — pair it with a `SkipToMainLink` as the first child of
213
+ * `AppLayout.Root` so keyboard users can jump past the sidebar and toolbar
214
+ * straight into the content card (`SkipToMainLink`'s default `targetId`
215
+ * matches `Main`'s `id="main"`). The `<div>` default exists for embedded
216
+ * usage (docs demos, tests) where the surrounding document already owns the
217
+ * Main landmark.
218
+ *
219
+ * @see https://mantle.ngrok.com/layouts/app-layout
220
+ *
221
+ * @example
222
+ * ```tsx
223
+ * <Sidebar.Root>
224
+ * <AppLayout.Root className="fixed inset-0">
225
+ * <SkipToMainLink />
226
+ * <AppLayout.Notice>{isUnderMaintenance && <MaintenanceBanner />}</AppLayout.Notice>
227
+ * <AppLayout.Body>
228
+ * <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
229
+ * <AppLayout.Inset>
230
+ * <AppLayout.Content asChild>
231
+ * <Main>
232
+ * <AppLayout.Header>
233
+ * <Sidebar.Trigger />
234
+ * <Breadcrumbs />
235
+ * </AppLayout.Header>
236
+ * <Outlet />
237
+ * </Main>
238
+ * </AppLayout.Content>
239
+ * </AppLayout.Inset>
240
+ * </AppLayout.Body>
241
+ * </AppLayout.Root>
242
+ * </Sidebar.Root>
243
+ * ```
244
+ */
245
+ declare const Content: ({ asChild, children, className, "data-slot": dataSlot, ...props }: ComponentProps<"div"> & WithAsChild & WithDataSlot) => import("react").JSX.Element;
246
+ /**
247
+ * A viewport-locked application shell: an optional full-width
248
+ * `AppLayout.Notice` strip on top, then a row holding the app's columns —
249
+ * typically a `Sidebar.Nav` beside an `AppLayout.Inset` whose
250
+ * `AppLayout.Content` card is the only thing that scrolls. It owns structure
251
+ * only and is deliberately unaware of any sidebar: compose `Sidebar.Root`
252
+ * around it and place `Sidebar.Trigger` in `AppLayout.Header` to connect the
253
+ * two.
254
+ *
255
+ * @see https://mantle.ngrok.com/layouts/app-layout
256
+ *
257
+ * @example
258
+ * Composition:
259
+ * ```
260
+ * AppLayout.Root
261
+ * ├── AppLayout.Notice
262
+ * └── AppLayout.Body
263
+ * └── AppLayout.Inset
264
+ * └── AppLayout.Content
265
+ * └── AppLayout.Header
266
+ * ```
267
+ *
268
+ * @example
269
+ * ```tsx
270
+ * <Sidebar.Root>
271
+ * <AppLayout.Root className="fixed inset-0">
272
+ * <SkipToMainLink />
273
+ * <AppLayout.Notice>{isUnderMaintenance && <MaintenanceBanner />}</AppLayout.Notice>
274
+ * <AppLayout.Body>
275
+ * <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
276
+ * <AppLayout.Inset>
277
+ * <AppLayout.Content asChild>
278
+ * <Main>
279
+ * <AppLayout.Header>
280
+ * <Sidebar.Trigger />
281
+ * <Breadcrumbs />
282
+ * </AppLayout.Header>
283
+ * <Outlet />
284
+ * </Main>
285
+ * </AppLayout.Content>
286
+ * </AppLayout.Inset>
287
+ * </AppLayout.Body>
288
+ * </AppLayout.Root>
289
+ * </Sidebar.Root>
290
+ * ```
291
+ */
292
+ declare const AppLayout: {
293
+ /**
294
+ * The outer frame. Fills its nearest sized ancestor; merge
295
+ * `className="fixed inset-0"` to pin a real app shell to the viewport.
296
+ *
297
+ * @see https://mantle.ngrok.com/layouts/app-layout
298
+ *
299
+ * @example
300
+ * ```tsx
301
+ * <Sidebar.Root>
302
+ * <AppLayout.Root className="fixed inset-0">
303
+ * <SkipToMainLink />
304
+ * <AppLayout.Notice>{isUnderMaintenance && <MaintenanceBanner />}</AppLayout.Notice>
305
+ * <AppLayout.Body>
306
+ * <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
307
+ * <AppLayout.Inset>
308
+ * <AppLayout.Content asChild>
309
+ * <Main>
310
+ * <AppLayout.Header>
311
+ * <Sidebar.Trigger />
312
+ * <Breadcrumbs />
313
+ * </AppLayout.Header>
314
+ * <Outlet />
315
+ * </Main>
316
+ * </AppLayout.Content>
317
+ * </AppLayout.Inset>
318
+ * </AppLayout.Body>
319
+ * </AppLayout.Root>
320
+ * </Sidebar.Root>
321
+ * ```
322
+ */
323
+ readonly Root: typeof Root;
324
+ /**
325
+ * A full-window-width strip above everything (maintenance notices,
326
+ * environment warnings). Unstyled; collapses when empty.
327
+ *
328
+ * @see https://mantle.ngrok.com/layouts/app-layout
329
+ *
330
+ * @example
331
+ * ```tsx
332
+ * <Sidebar.Root>
333
+ * <AppLayout.Root className="fixed inset-0">
334
+ * <SkipToMainLink />
335
+ * <AppLayout.Notice>{isUnderMaintenance && <MaintenanceBanner />}</AppLayout.Notice>
336
+ * <AppLayout.Body>
337
+ * <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
338
+ * <AppLayout.Inset>
339
+ * <AppLayout.Content asChild>
340
+ * <Main>
341
+ * <AppLayout.Header>
342
+ * <Sidebar.Trigger />
343
+ * <Breadcrumbs />
344
+ * </AppLayout.Header>
345
+ * <Outlet />
346
+ * </Main>
347
+ * </AppLayout.Content>
348
+ * </AppLayout.Inset>
349
+ * </AppLayout.Body>
350
+ * </AppLayout.Root>
351
+ * </Sidebar.Root>
352
+ * ```
353
+ */
354
+ readonly Notice: typeof Notice;
355
+ /**
356
+ * The flex row below the notice — place a `Sidebar.Nav` beside an
357
+ * `AppLayout.Inset` here.
358
+ *
359
+ * @see https://mantle.ngrok.com/layouts/app-layout
360
+ *
361
+ * @example
362
+ * ```tsx
363
+ * <Sidebar.Root>
364
+ * <AppLayout.Root className="fixed inset-0">
365
+ * <SkipToMainLink />
366
+ * <AppLayout.Notice>{isUnderMaintenance && <MaintenanceBanner />}</AppLayout.Notice>
367
+ * <AppLayout.Body>
368
+ * <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
369
+ * <AppLayout.Inset>
370
+ * <AppLayout.Content asChild>
371
+ * <Main>
372
+ * <AppLayout.Header>
373
+ * <Sidebar.Trigger />
374
+ * <Breadcrumbs />
375
+ * </AppLayout.Header>
376
+ * <Outlet />
377
+ * </Main>
378
+ * </AppLayout.Content>
379
+ * </AppLayout.Inset>
380
+ * </AppLayout.Body>
381
+ * </AppLayout.Root>
382
+ * </Sidebar.Root>
383
+ * ```
384
+ */
385
+ readonly Body: typeof Body;
386
+ /**
387
+ * The content column: wraps the `AppLayout.Content` card and owns the
388
+ * card gutter.
389
+ *
390
+ * @see https://mantle.ngrok.com/layouts/app-layout
391
+ *
392
+ * @example
393
+ * ```tsx
394
+ * <Sidebar.Root>
395
+ * <AppLayout.Root className="fixed inset-0">
396
+ * <SkipToMainLink />
397
+ * <AppLayout.Notice>{isUnderMaintenance && <MaintenanceBanner />}</AppLayout.Notice>
398
+ * <AppLayout.Body>
399
+ * <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
400
+ * <AppLayout.Inset>
401
+ * <AppLayout.Content asChild>
402
+ * <Main>
403
+ * <AppLayout.Header>
404
+ * <Sidebar.Trigger />
405
+ * <Breadcrumbs />
406
+ * </AppLayout.Header>
407
+ * <Outlet />
408
+ * </Main>
409
+ * </AppLayout.Content>
410
+ * </AppLayout.Inset>
411
+ * </AppLayout.Body>
412
+ * </AppLayout.Root>
413
+ * </Sidebar.Root>
414
+ * ```
415
+ */
416
+ readonly Inset: typeof Inset;
417
+ /**
418
+ * The sticky toolbar `<header>` at the top of the content card — render
419
+ * it as `AppLayout.Content`'s first child, with `Sidebar.Trigger` in its
420
+ * top-left followed by breadcrumbs.
421
+ *
422
+ * @see https://mantle.ngrok.com/layouts/app-layout
423
+ *
424
+ * @example
425
+ * ```tsx
426
+ * <Sidebar.Root>
427
+ * <AppLayout.Root className="fixed inset-0">
428
+ * <SkipToMainLink />
429
+ * <AppLayout.Notice>{isUnderMaintenance && <MaintenanceBanner />}</AppLayout.Notice>
430
+ * <AppLayout.Body>
431
+ * <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
432
+ * <AppLayout.Inset>
433
+ * <AppLayout.Content asChild>
434
+ * <Main>
435
+ * <AppLayout.Header>
436
+ * <Sidebar.Trigger />
437
+ * <Breadcrumbs />
438
+ * </AppLayout.Header>
439
+ * <Outlet />
440
+ * </Main>
441
+ * </AppLayout.Content>
442
+ * </AppLayout.Inset>
443
+ * </AppLayout.Body>
444
+ * </AppLayout.Root>
445
+ * </Sidebar.Root>
446
+ * ```
447
+ */
448
+ readonly Header: typeof Header;
449
+ /**
450
+ * The rounded `bg-card` surface that is the shell's only scroll container
451
+ * (`overflow-y-auto overscroll-none`). `AppLayout.Header` is its first
452
+ * child; compose `Main` via `asChild` when the shell owns the document.
453
+ *
454
+ * @see https://mantle.ngrok.com/layouts/app-layout
455
+ *
456
+ * @example
457
+ * ```tsx
458
+ * <Sidebar.Root>
459
+ * <AppLayout.Root className="fixed inset-0">
460
+ * <SkipToMainLink />
461
+ * <AppLayout.Notice>{isUnderMaintenance && <MaintenanceBanner />}</AppLayout.Notice>
462
+ * <AppLayout.Body>
463
+ * <Sidebar.Nav aria-label="Main">…</Sidebar.Nav>
464
+ * <AppLayout.Inset>
465
+ * <AppLayout.Content asChild>
466
+ * <Main>
467
+ * <AppLayout.Header>
468
+ * <Sidebar.Trigger />
469
+ * <Breadcrumbs />
470
+ * </AppLayout.Header>
471
+ * <Outlet />
472
+ * </Main>
473
+ * </AppLayout.Content>
474
+ * </AppLayout.Inset>
475
+ * </AppLayout.Body>
476
+ * </AppLayout.Root>
477
+ * </Sidebar.Root>
478
+ * ```
479
+ */
480
+ readonly Content: typeof Content;
481
+ };
482
+ //#endregion
483
+ export { AppLayout };
@@ -0,0 +1 @@
1
+ import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./data-slot-EM6s2WEU.js";import{t as n}from"./slot-Dpsqz16D.js";import{jsx as r}from"react/jsx-runtime";const i={Root:({asChild:i,children:a,className:o,"data-slot":s,...c})=>r(i?n:`div`,{"data-slot":t(s,`app-layout`),className:e(`group/app-layout bg-base relative isolate flex h-full w-full flex-col overflow-hidden`,o),...c,children:a}),Notice:({asChild:i,children:a,className:o,"data-slot":s,...c})=>r(i?n:`div`,{"data-slot":t(s,`app-layout-notice`),className:e(`flex w-full shrink-0 flex-col`,o),...c,children:a}),Body:({asChild:i,children:a,className:o,"data-slot":s,...c})=>r(i?n:`div`,{"data-slot":t(s,`app-layout-body`),className:e(`flex min-h-0 flex-1`,o),...c,children:a}),Inset:({asChild:i,children:a,className:o,"data-slot":s,...c})=>r(i?n:`div`,{"data-slot":t(s,`app-layout-inset`),className:e(`flex min-w-0 flex-1 flex-col gap-2 p-2`,o),...c,children:a}),Header:({asChild:i,children:a,className:o,"data-slot":s,...c})=>r(i?n:`header`,{"data-slot":t(s,`app-layout-header`),className:e(`border-card-muted bg-card sticky top-0 z-10 flex h-14 shrink-0 items-center gap-2 border-b px-4`,`group-has-[[data-slot~=sidebar-header]]/app-layout:h-[calc(var(--sidebar-header-height,4.5rem)-1rem-2px)]`,o),...c,children:a}),Content:({asChild:i,children:a,className:o,"data-slot":s,...c})=>r(i?n:`div`,{"data-slot":t(s,`app-layout-content`),className:e(`bg-card border-card-muted scrollbar min-h-0 flex-1 overflow-y-auto overscroll-none rounded-xl border shadow-sm`,o),...c,children:a})};export{i as AppLayout};
@@ -1 +1 @@
1
- import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c}from"./chart-Do2qkrxl.js";import{jsx as l}from"react/jsx-runtime";const u={Root:e=>l(o,{kind:`area`,componentName:`AreaChart`,slotName:`area-chart`,...e}),Area:e=>a(`AreaChart.Area`,`area`,e),Grid:e=>n(`AreaChart.Grid`,e),XAxis:e=>t(`AreaChart.XAxis`,e),YAxis:e=>r(`AreaChart.YAxis`,e),ReferenceLine:t=>e(`AreaChart.ReferenceLine`,t),Tooltip:e=>s(`AreaChart.Tooltip`,e),Legend:e=>l(i,{partName:`AreaChart.Legend`,slotName:`area-chart`,...e}),CopyButton:e=>l(c,{partName:`AreaChart.CopyButton`,slotName:`area-chart`,...e})};export{u as AreaChart};
1
+ import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c}from"./chart-DdBQ3xwx.js";import{jsx as l}from"react/jsx-runtime";const u={Root:e=>l(o,{kind:`area`,componentName:`AreaChart`,slotName:`area-chart`,...e}),Area:e=>a(`AreaChart.Area`,`area`,e),Grid:e=>n(`AreaChart.Grid`,e),XAxis:e=>t(`AreaChart.XAxis`,e),YAxis:e=>r(`AreaChart.YAxis`,e),ReferenceLine:t=>e(`AreaChart.ReferenceLine`,t),Tooltip:e=>s(`AreaChart.Tooltip`,e),Legend:e=>l(i,{partName:`AreaChart.Legend`,slotName:`area-chart`,...e}),CopyButton:e=>l(c,{partName:`AreaChart.CopyButton`,slotName:`area-chart`,...e})};export{u as AreaChart};
package/dist/badge.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./icon-d-nMCfAI.js";import{t as n}from"./slot-CDk0Bb9z.js";import{Children as r,cloneElement as i,isValidElement as a}from"react";import o from"tiny-invariant";import{Fragment as s,jsx as c,jsxs as l}from"react/jsx-runtime";const u=({appearance:u,asChild:d=!1,children:p,className:h,color:g=`neutral`,icon:_,...v})=>{let y=f(g,u),b=m(g,u),x=e(`inline-flex w-fit shrink-0 cursor-default items-center gap-1 rounded px-1.5 py-0.5 font-medium text-xs font-sans`,_&&`ps-1`,y,b,h);if(d){let e=r.only(p);o(a(e),"When using `asChild`, Badge must be passed a single child as a JSX tag.");let u=e.props?.children;return c(n,{"data-slot":`badge`,className:x,...v,children:i(e,{},l(s,{children:[_&&c(t,{className:`size-4`,svg:_}),u]}))})}return l(`span`,{"data-slot":`badge`,className:x,...v,children:[_&&c(t,{className:`size-4`,svg:_}),p]})},d={amber:`bg-amber-500/20`,blue:`bg-blue-500/20`,cyan:`bg-cyan-500/20`,emerald:`bg-emerald-500/20`,fuchsia:`bg-fuchsia-500/20`,gray:`bg-gray-500/20`,green:`bg-green-500/20`,indigo:`bg-indigo-500/20`,lime:`bg-lime-500/20`,orange:`bg-orange-500/20`,pink:`bg-pink-500/20`,purple:`bg-purple-500/20`,red:`bg-red-500/20`,rose:`bg-rose-500/20`,sky:`bg-sky-500/20`,teal:`bg-teal-500/20`,violet:`bg-violet-500/20`,yellow:`bg-yellow-500/20`,accent:`bg-accent-500/20`,danger:`bg-danger-500/20`,important:`bg-important-500/20`,info:`bg-info-500/20`,neutral:`bg-neutral-500/20`,success:`bg-success-500/20`,warning:`bg-warning-500/20`};function f(e,t){switch(t){case`muted`:return d[e];default:o(!1,`Invalid appearance: ${String(t)}`)}}const p={amber:`text-amber-700`,blue:`text-blue-700`,cyan:`text-cyan-700`,emerald:`text-emerald-700`,fuchsia:`text-fuchsia-700`,gray:`text-gray-700`,green:`text-green-700`,indigo:`text-indigo-700`,lime:`text-lime-700`,orange:`text-orange-700`,pink:`text-pink-700`,purple:`text-purple-700`,red:`text-red-700`,rose:`text-rose-700`,sky:`text-sky-700`,teal:`text-teal-700`,violet:`text-violet-700`,yellow:`text-yellow-700`,accent:`text-accent-700`,danger:`text-danger-700`,important:`text-important-700`,info:`text-info-700`,neutral:`text-neutral-700`,success:`text-success-700`,warning:`text-warning-700`};function m(e,t){switch(t){case`muted`:return p[e];default:o(!1,`Invalid appearance: ${String(t)}`)}}export{u as Badge};
1
+ import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./icon-d-nMCfAI.js";import{t as n}from"./slot-Dpsqz16D.js";import{Children as r,cloneElement as i,isValidElement as a}from"react";import o from"tiny-invariant";import{Fragment as s,jsx as c,jsxs as l}from"react/jsx-runtime";const u=({appearance:u,asChild:d=!1,children:p,className:h,color:g=`neutral`,icon:_,...v})=>{let y=f(g,u),b=m(g,u),x=e(`inline-flex w-fit shrink-0 cursor-default items-center gap-1 rounded px-1.5 py-0.5 font-medium text-xs font-sans`,_&&`ps-1`,y,b,h);if(d){let e=r.only(p);o(a(e),"When using `asChild`, Badge must be passed a single child as a JSX tag.");let u=e.props?.children;return c(n,{"data-slot":`badge`,className:x,...v,children:i(e,{},l(s,{children:[_&&c(t,{className:`size-4`,svg:_}),u]}))})}return l(`span`,{"data-slot":`badge`,className:x,...v,children:[_&&c(t,{className:`size-4`,svg:_}),p]})},d={amber:`bg-amber-500/20`,blue:`bg-blue-500/20`,cyan:`bg-cyan-500/20`,emerald:`bg-emerald-500/20`,fuchsia:`bg-fuchsia-500/20`,gray:`bg-gray-500/20`,green:`bg-green-500/20`,indigo:`bg-indigo-500/20`,lime:`bg-lime-500/20`,orange:`bg-orange-500/20`,pink:`bg-pink-500/20`,purple:`bg-purple-500/20`,red:`bg-red-500/20`,rose:`bg-rose-500/20`,sky:`bg-sky-500/20`,teal:`bg-teal-500/20`,violet:`bg-violet-500/20`,yellow:`bg-yellow-500/20`,accent:`bg-accent-500/20`,danger:`bg-danger-500/20`,important:`bg-important-500/20`,info:`bg-info-500/20`,neutral:`bg-neutral-500/20`,success:`bg-success-500/20`,warning:`bg-warning-500/20`};function f(e,t){switch(t){case`muted`:return d[e];default:o(!1,`Invalid appearance: ${String(t)}`)}}const p={amber:`text-amber-700`,blue:`text-blue-700`,cyan:`text-cyan-700`,emerald:`text-emerald-700`,fuchsia:`text-fuchsia-700`,gray:`text-gray-700`,green:`text-green-700`,indigo:`text-indigo-700`,lime:`text-lime-700`,orange:`text-orange-700`,pink:`text-pink-700`,purple:`text-purple-700`,red:`text-red-700`,rose:`text-rose-700`,sky:`text-sky-700`,teal:`text-teal-700`,violet:`text-violet-700`,yellow:`text-yellow-700`,accent:`text-accent-700`,danger:`text-danger-700`,important:`text-important-700`,info:`text-info-700`,neutral:`text-neutral-700`,success:`text-success-700`,warning:`text-warning-700`};function m(e,t){switch(t){case`muted`:return p[e];default:o(!1,`Invalid appearance: ${String(t)}`)}}export{u as Badge};
package/dist/bar-chart.js CHANGED
@@ -1 +1 @@
1
- import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c}from"./chart-Do2qkrxl.js";import{jsx as l}from"react/jsx-runtime";const u={Root:e=>l(o,{kind:`bar`,componentName:`BarChart`,slotName:`bar-chart`,...e}),Bar:e=>a(`BarChart.Bar`,`bar`,e),Grid:e=>n(`BarChart.Grid`,e),XAxis:e=>t(`BarChart.XAxis`,e),YAxis:e=>r(`BarChart.YAxis`,e),ReferenceLine:t=>e(`BarChart.ReferenceLine`,t),Tooltip:e=>s(`BarChart.Tooltip`,e),Legend:e=>l(i,{partName:`BarChart.Legend`,slotName:`bar-chart`,...e}),CopyButton:e=>l(c,{partName:`BarChart.CopyButton`,slotName:`bar-chart`,...e})};export{u as BarChart};
1
+ import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c}from"./chart-DdBQ3xwx.js";import{jsx as l}from"react/jsx-runtime";const u={Root:e=>l(o,{kind:`bar`,componentName:`BarChart`,slotName:`bar-chart`,...e}),Bar:e=>a(`BarChart.Bar`,`bar`,e),Grid:e=>n(`BarChart.Grid`,e),XAxis:e=>t(`BarChart.XAxis`,e),YAxis:e=>r(`BarChart.YAxis`,e),ReferenceLine:t=>e(`BarChart.ReferenceLine`,t),Tooltip:e=>s(`BarChart.Tooltip`,e),Legend:e=>l(i,{partName:`BarChart.Legend`,slotName:`bar-chart`,...e}),CopyButton:e=>l(c,{partName:`BarChart.CopyButton`,slotName:`bar-chart`,...e})};export{u as BarChart};
@@ -189,7 +189,7 @@ type BreadcrumbSeparatorProps = Omit<ComponentProps<"li">, "children"> & ({
189
189
  * </Breadcrumb.Root>
190
190
  * ```
191
191
  */
192
- declare const Separator: ({ asChild, children, className, "data-slot": dataSlot, ref, ...props }: BreadcrumbSeparatorProps & WithDataSlot) => import("react").JSX.Element;
192
+ declare const Separator: ({ asChild, children, "data-slot": dataSlot, ref, ...props }: BreadcrumbSeparatorProps & WithDataSlot) => import("react").JSX.Element;
193
193
  /**
194
194
  * Compound component for WAI-ARIA breadcrumb navigation — the path from a
195
195
  * root to the current page as an ordered list of links inside a labeled
@@ -1 +1 @@
1
- import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./icon-lZ48P8Nn.js";import{n,t as r}from"./slot-CDk0Bb9z.js";import{cloneElement as i,isValidElement as a}from"react";import{jsx as o}from"react/jsx-runtime";import{CaretRightIcon as s}from"@phosphor-icons/react/CaretRight";const c={Root:({asChild:e,children:t,"data-slot":i,ref:a,...s})=>o(e?r:`nav`,{ref:a,"data-slot":n(i,`breadcrumb`),"aria-label":`Breadcrumb`,...s,children:t}),List:({asChild:t,children:i,className:a,"data-slot":s,ref:c,...l})=>o(t?r:`ol`,{ref:c,"data-slot":n(s,`breadcrumb-list`),className:e(`text-muted flex flex-wrap items-center gap-1.5 text-sm`,a),...l,children:i}),Item:({asChild:t,children:i,className:a,"data-slot":s,ref:c,...l})=>o(t?r:`li`,{ref:c,"data-slot":n(s,`breadcrumb-item`),className:e(`inline-flex items-center gap-1.5`,a),...l,children:i}),Link:({asChild:t,children:i,className:a,"data-slot":s,ref:c,...l})=>o(t?r:`a`,{ref:c,"data-slot":n(s,`breadcrumb-link`),className:e(`hover:text-strong transition-colors`,a),...l,children:i}),Page:({asChild:t,children:s,className:c,"data-slot":l,ref:u,...d})=>{let f=t?r:`span`,p=t&&a(s)?i(s,{"aria-current":`page`}):s;return o(f,{ref:u,"data-slot":n(l,`breadcrumb-page`),className:e(`text-strong`,c),...d,"aria-current":`page`,children:p})},Separator:({asChild:e,children:c,className:l,"data-slot":u,ref:d,...f})=>{let p=e?r:`li`,m=e&&a(c)?i(c,{role:`presentation`,"aria-hidden":`true`}):c??o(t,{svg:o(s,{}),className:`size-3.5`});return o(p,{ref:d,"data-slot":n(u,`breadcrumb-separator`),className:l,...f,role:`presentation`,"aria-hidden":`true`,children:m})}};export{c as Breadcrumb};
1
+ import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./icon-lZ48P8Nn.js";import{t as n}from"./data-slot-EM6s2WEU.js";import{t as r}from"./slot-Dpsqz16D.js";import{cloneElement as i,isValidElement as a}from"react";import{jsx as o}from"react/jsx-runtime";import{CaretRightIcon as s}from"@phosphor-icons/react/CaretRight";const c={Root:({asChild:e,children:t,"data-slot":i,ref:a,...s})=>o(e?r:`nav`,{ref:a,"data-slot":n(i,`breadcrumb`),"aria-label":`Breadcrumb`,...s,children:t}),List:({asChild:t,children:i,className:a,"data-slot":s,ref:c,...l})=>o(t?r:`ol`,{ref:c,"data-slot":n(s,`breadcrumb-list`),className:e(`text-muted flex flex-wrap items-center gap-1.5 text-sm`,a),...l,children:i}),Item:({asChild:t,children:i,className:a,"data-slot":s,ref:c,...l})=>o(t?r:`li`,{ref:c,"data-slot":n(s,`breadcrumb-item`),className:e(`inline-flex items-center gap-1.5`,a),...l,children:i}),Link:({asChild:t,children:i,className:a,"data-slot":s,ref:c,...l})=>o(t?r:`a`,{ref:c,"data-slot":n(s,`breadcrumb-link`),className:e(`hover:text-strong transition-colors`,a),...l,children:i}),Page:({asChild:t,children:s,className:c,"data-slot":l,ref:u,...d})=>{let f=t?r:`span`,p=t&&a(s)?i(s,{"aria-current":`page`}):s;return o(f,{ref:u,"data-slot":n(l,`breadcrumb-page`),className:e(`text-muted`,c),...d,"aria-current":`page`,children:p})},Separator:({asChild:e,children:c,"data-slot":l,ref:u,...d})=>{let f=e?r:`li`,p=e&&a(c)?i(c,{role:`presentation`,"aria-hidden":`true`}):c??o(t,{svg:o(s,{}),className:`size-3.5`});return o(f,{ref:u,"data-slot":n(l,`breadcrumb-separator`),...d,role:`presentation`,"aria-hidden":`true`,children:p})}};export{c as Breadcrumb};
@@ -0,0 +1 @@
1
+ import{t as e}from"./use-is-hydrated-DDCqXmju.js";function t({children:t,fallback:n=null}){return e()?t():n}function n(){return typeof window<`u`&&typeof document<`u`}export{n,t};
@@ -1 +1 @@
1
- import{n as e,t}from"./browser-only-CPH56Xw_.js";export{t as BrowserOnly,e as canUseDOM};
1
+ import{n as e,t}from"./browser-only-CmEEzfU3.js";export{t as BrowserOnly,e as canUseDOM};
@@ -1 +1 @@
1
- import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./slot-CDk0Bb9z.js";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(`border-form inline-flex items-center rounded-md`,{variants:{appearance:{panel:`bg-form gap-0.5 border p-0.75 [--icon-button-border-radius:0.125rem] [&>.separator]:mx-px`,ghost:`gap-0.5`,outlined:``}}}),a=({appearance:r,asChild:a,className:o,children:s,ref:c,...l})=>n(a?t:`div`,{"data-slot":`button-group`,className:e(i({appearance:r}),o),ref:c,...l,children:s});export{a as t};
1
+ import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./slot-Dpsqz16D.js";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(`border-form inline-flex items-center rounded-md`,{variants:{appearance:{panel:`bg-form gap-0.5 border p-0.75 [--icon-button-border-radius:0.125rem] [&>.separator]:mx-px`,ghost:`gap-0.5`,outlined:``}}}),a=({appearance:r,asChild:a,className:o,children:s,ref:c,...l})=>n(a?t:`div`,{"data-slot":`button-group`,className:e(i({appearance:r}),o),ref:c,...l,children:s});export{a as t};
@@ -1 +1 @@
1
- import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./icon-lZ48P8Nn.js";import{t as n}from"./slot-CDk0Bb9z.js";import{t as r}from"./booleanish-BfvnW6vy.js";import{t as i}from"./clsx-DUGZgXfJ.js";import{Children as a,cloneElement as o,isValidElement as s}from"react";import c from"tiny-invariant";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";import{cva as f}from"class-variance-authority";import{CircleNotchIcon as p}from"@phosphor-icons/react/CircleNotch";const m=f(``,{variants:{appearance:{filled:`bg-filled-accent text-white focus-visible:ring-focus-accent not-disabled:hover:bg-filled-accent-hover border border-transparent text-sm font-medium`,ghost:`text-accent-600 focus-visible:ring-focus-accent not-disabled:hover:bg-accent-500/10 not-disabled:hover:text-accent-700 border border-transparent text-sm font-medium`,outlined:`border-accent-600 bg-form text-accent-600 focus-visible:ring-focus-accent not-disabled:hover:border-accent-700 not-disabled:hover:bg-accent-500/10 not-disabled:hover:text-accent-700 border text-sm font-medium`,link:`text-accent-600 focus-visible:ring-focus-accent not-disabled:hover:underline group/button-link border-transparent`},isLoading:{false:``,true:`opacity-50`},intent:{accent:``,danger:``,neutral:``},size:{xs:``,sm:``,md:``,lg:``,xl:``}},defaultVariants:{isLoading:!1,size:`md`},compoundVariants:[{appearance:[`filled`,`ghost`,`outlined`],size:`xs`,class:`h-6 px-2`},{appearance:[`filled`,`ghost`,`outlined`],size:`sm`,class:`h-7 px-2.5`},{appearance:[`filled`,`ghost`,`outlined`],size:`md`,class:`h-9 px-3`},{appearance:[`filled`,`ghost`,`outlined`],size:`lg`,class:`h-10 px-3.5`},{appearance:[`filled`,`ghost`,`outlined`],size:`xl`,class:`h-12 px-4`},{appearance:`ghost`,intent:`danger`,class:`text-danger-600 focus-visible:ring-focus-danger not-disabled:hover:bg-danger-500/10 not-disabled:hover:text-danger-700 border-transparent`},{appearance:`outlined`,intent:`danger`,class:`border-danger-600 bg-form text-danger-600 focus-visible:ring-focus-danger not-disabled:hover:border-danger-700 not-disabled:hover:bg-danger-500/10 not-disabled:hover:text-danger-700`},{appearance:`filled`,intent:`danger`,class:`bg-filled-danger focus-visible:ring-focus-danger not-disabled:hover:bg-filled-danger-hover border-transparent`},{appearance:`link`,intent:`danger`,class:`text-danger-600 focus-visible:ring-focus-danger`},{appearance:`ghost`,intent:`neutral`,class:`text-strong focus-visible:ring-focus-accent not-disabled:hover:bg-neutral-500/10 not-disabled:hover:text-strong border-transparent`},{appearance:`outlined`,intent:`neutral`,class:`border-form bg-form text-strong focus-visible:border-accent-600 focus-visible:ring-focus-accent not-disabled:hover:border-neutral-400 not-disabled:hover:bg-form-hover not-disabled:hover:text-strong focus-visible:not-disabled:hover:border-accent-600`},{appearance:`filled`,intent:`neutral`,class:`bg-filled-neutral not-disabled:hover:bg-filled-neutral-hover border-transparent focus-visible:border-transparent text-neutral-50`},{appearance:`link`,intent:`neutral`,class:`text-strong focus-visible:ring-focus-accent`}]}),h={xs:`ps-1.5`,sm:`ps-2`,md:`ps-2.5`,lg:`ps-3`,xl:`ps-3.5`},g={xs:`pe-1.5`,sm:`pe-2`,md:`pe-2.5`,lg:`pe-3`,xl:`pe-3.5`},_=({"aria-disabled":f,appearance:_,asChild:v,children:y,className:b,disabled:x,icon:S,iconPlacement:C=`start`,intent:w,isLoading:T=!1,ref:E,size:D=`md`,type:O,...k})=>{let A=r(f??x??T),j=T?u(p,{className:`animate-spin`}):S,M=j&&_!==`link`,N={"aria-disabled":A,"data-slot":`button`,className:e(`inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-md`,`focus:outline-hidden focus-visible:ring-4`,`disabled:cursor-default disabled:opacity-50`,`not-disabled:active:scale-97 ease-out transition-transform duration-150`,m({appearance:_,intent:w,isLoading:T,size:D}),_!==`link`&&`font-sans`,M&&C===`start`&&h[D],M&&C===`end`&&g[D],b),"data-appearance":_,"data-disabled":A,"data-intent":w,"data-loading":T,"data-size":_===`link`?void 0:D,disabled:A,ref:E,...k};return v?(c(s(y)&&a.only(y),"When using `asChild`, Button must be passed a single child as a JSX tag."),u(n,{...N,children:o(y,{},d(l,{children:[j&&u(t,{svg:j,className:i(C===`end`&&`order-last`)}),y.props.children]}))})):d(`button`,{...N,type:O??`button`,children:[j&&u(t,{svg:j,className:i(C===`end`&&`order-last`)}),y]})};export{_ as t};
1
+ import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./icon-lZ48P8Nn.js";import{t as n}from"./slot-Dpsqz16D.js";import{t as r}from"./booleanish-BfvnW6vy.js";import{t as i}from"./clsx-DUGZgXfJ.js";import{Children as a,cloneElement as o,isValidElement as s}from"react";import c from"tiny-invariant";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";import{cva as f}from"class-variance-authority";import{CircleNotchIcon as p}from"@phosphor-icons/react/CircleNotch";const m=f(``,{variants:{appearance:{filled:`bg-filled-accent text-white focus-visible:ring-focus-accent not-disabled:hover:bg-filled-accent-hover border border-transparent text-sm font-medium`,ghost:`text-accent-600 focus-visible:ring-focus-accent not-disabled:hover:bg-accent-500/10 not-disabled:hover:text-accent-700 border border-transparent text-sm font-medium`,outlined:`border-accent-600 bg-form text-accent-600 focus-visible:ring-focus-accent not-disabled:hover:border-accent-700 not-disabled:hover:bg-accent-500/10 not-disabled:hover:text-accent-700 border text-sm font-medium`,link:`text-accent-600 focus-visible:ring-focus-accent not-disabled:hover:underline group/button-link border-transparent`},isLoading:{false:``,true:`opacity-50`},intent:{accent:``,danger:``,neutral:``},size:{xs:``,sm:``,md:``,lg:``,xl:``}},defaultVariants:{isLoading:!1,size:`md`},compoundVariants:[{appearance:[`filled`,`ghost`,`outlined`],size:`xs`,class:`h-6 px-2`},{appearance:[`filled`,`ghost`,`outlined`],size:`sm`,class:`h-7 px-2.5`},{appearance:[`filled`,`ghost`,`outlined`],size:`md`,class:`h-9 px-3`},{appearance:[`filled`,`ghost`,`outlined`],size:`lg`,class:`h-10 px-3.5`},{appearance:[`filled`,`ghost`,`outlined`],size:`xl`,class:`h-12 px-4`},{appearance:`ghost`,intent:`danger`,class:`text-danger-600 focus-visible:ring-focus-danger not-disabled:hover:bg-danger-500/10 not-disabled:hover:text-danger-700 border-transparent`},{appearance:`outlined`,intent:`danger`,class:`border-danger-600 bg-form text-danger-600 focus-visible:ring-focus-danger not-disabled:hover:border-danger-700 not-disabled:hover:bg-danger-500/10 not-disabled:hover:text-danger-700`},{appearance:`filled`,intent:`danger`,class:`bg-filled-danger focus-visible:ring-focus-danger not-disabled:hover:bg-filled-danger-hover border-transparent`},{appearance:`link`,intent:`danger`,class:`text-danger-600 focus-visible:ring-focus-danger`},{appearance:`ghost`,intent:`neutral`,class:`text-strong focus-visible:ring-focus-accent not-disabled:hover:bg-neutral-500/10 not-disabled:hover:text-strong border-transparent`},{appearance:`outlined`,intent:`neutral`,class:`border-form bg-form text-strong focus-visible:border-accent-600 focus-visible:ring-focus-accent not-disabled:hover:border-neutral-400 not-disabled:hover:bg-form-hover not-disabled:hover:text-strong focus-visible:not-disabled:hover:border-accent-600`},{appearance:`filled`,intent:`neutral`,class:`bg-filled-neutral not-disabled:hover:bg-filled-neutral-hover border-transparent focus-visible:border-transparent text-neutral-50`},{appearance:`link`,intent:`neutral`,class:`text-strong focus-visible:ring-focus-accent`}]}),h={xs:`ps-1.5`,sm:`ps-2`,md:`ps-2.5`,lg:`ps-3`,xl:`ps-3.5`},g={xs:`pe-1.5`,sm:`pe-2`,md:`pe-2.5`,lg:`pe-3`,xl:`pe-3.5`},_=({"aria-disabled":f,appearance:_,asChild:v,children:y,className:b,disabled:x,icon:S,iconPlacement:C=`start`,intent:w,isLoading:T=!1,ref:E,size:D=`md`,type:O,...k})=>{let A=r(f??x??T),j=T?u(p,{className:`animate-spin`}):S,M=j&&_!==`link`,N={"aria-disabled":A,"data-slot":`button`,className:e(`inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-md`,`focus:outline-hidden focus-visible:ring-4`,`disabled:cursor-default disabled:opacity-50`,`not-disabled:active:scale-97 ease-out transition-transform duration-150`,m({appearance:_,intent:w,isLoading:T,size:D}),_!==`link`&&`font-sans`,M&&C===`start`&&h[D],M&&C===`end`&&g[D],b),"data-appearance":_,"data-disabled":A,"data-intent":w,"data-loading":T,"data-size":_===`link`?void 0:D,disabled:A,ref:E,...k};return v?(c(s(y)&&a.only(y),"When using `asChild`, Button must be passed a single child as a JSX tag."),u(n,{...N,children:o(y,{},d(l,{children:[j&&u(t,{svg:j,className:i(C===`end`&&`order-last`)}),y.props.children]}))})):d(`button`,{...N,type:O??`button`,children:[j&&u(t,{svg:j,className:i(C===`end`&&`order-last`)}),y]})};export{_ as t};
@@ -1 +1 @@
1
- import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./icon-lZ48P8Nn.js";import{t as n}from"./slot-CDk0Bb9z.js";import{t as r}from"./booleanish-BfvnW6vy.js";import{t as i}from"./button-DvHMWAPl.js";import{Children as a,cloneElement as o,isValidElement as s}from"react";import c from"tiny-invariant";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";import{CircleNotchIcon as f}from"@phosphor-icons/react/CircleNotch";const p=({"aria-disabled":p,appearance:m,asChild:h=!1,children:g,className:_,disabled:v,icon:y,intent:b,isLoading:x=!1,label:S,ref:C,size:w=`md`,type:T,...E})=>{let D=r(p??v??x),O=x?u(f,{className:`animate-spin`}):y,k={"aria-disabled":D,"data-slot":`icon-button`,className:e(i({appearance:m,intent:b,isLoading:x,size:w}),_),"data-appearance":m,"data-disabled":D,"data-icon-button":!0,"data-intent":b,"data-loading":x,"data-size":w,disabled:D,ref:C,...E},A=d(l,{children:[u(`span`,{className:`sr-only`,children:S}),u(t,{svg:O})]});return h?(c(s(g)&&a.only(g),"When using `asChild`, IconButton must be passed a single child as a JSX tag."),u(n,{...k,children:o(g,{},A)})):u(`button`,{...k,type:T??`button`,children:A})};export{p as t};
1
+ import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./icon-lZ48P8Nn.js";import{t as n}from"./slot-Dpsqz16D.js";import{t as r}from"./booleanish-BfvnW6vy.js";import{t as i}from"./button-DvHMWAPl.js";import{Children as a,cloneElement as o,isValidElement as s}from"react";import c from"tiny-invariant";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";import{CircleNotchIcon as f}from"@phosphor-icons/react/CircleNotch";const p=({"aria-disabled":p,appearance:m,asChild:h=!1,children:g,className:_,disabled:v,icon:y,intent:b,isLoading:x=!1,label:S,ref:C,size:w=`md`,type:T,...E})=>{let D=r(p??v??x),O=x?u(f,{className:`animate-spin`}):y,k={"aria-disabled":D,"data-slot":`icon-button`,className:e(i({appearance:m,intent:b,isLoading:x,size:w}),_),"data-appearance":m,"data-disabled":D,"data-icon-button":!0,"data-intent":b,"data-loading":x,"data-size":w,disabled:D,ref:C,...E},A=d(l,{children:[u(`span`,{className:`sr-only`,children:S}),u(t,{svg:O})]});return h?(c(s(g)&&a.only(g),"When using `asChild`, IconButton must be passed a single child as a JSX tag."),u(n,{...k,children:o(g,{},A)})):u(`button`,{...k,type:T??`button`,children:A})};export{p as t};
package/dist/button.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./button-DjpEKt2X.js";import{t}from"./button-BAno7KIU.js";import{t as n}from"./button-D9n09xUg.js";export{e as Button,n as ButtonGroup,t as IconButton};
1
+ import{t as e}from"./button-BUospUB3.js";import{t}from"./button-C0S8RbaJ.js";import{t as n}from"./button-BO2CKsz6.js";export{e as Button,n as ButtonGroup,t as IconButton};
@@ -8,7 +8,7 @@ type CalendarProps = ComponentProps<typeof DayPicker>;
8
8
  * @preview This component is in `preview` mode which means the API is not stable and may change.
9
9
  * There may also be bugs! Please file an issue if you find any! <3
10
10
  *
11
- * @see https://mantle.ngrok.com/components/preview/calendar#api-calendar
11
+ * @see https://mantle.ngrok.com/components/preview/calendar
12
12
  *
13
13
  * @example
14
14
  * ```tsx
package/dist/card.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./slot-CDk0Bb9z.js";import{jsx as n}from"react/jsx-runtime";const r={Root:({asChild:r=!1,className:i,children:a,ref:o,...s})=>n(r?t:`div`,{ref:o,"data-slot":`card`,className:e(`border-card bg-card relative rounded-md border`,i),...s,children:a}),Body:({asChild:r=!1,className:i,children:a,ref:o,...s})=>n(r?t:`div`,{ref:o,"data-slot":`card-body`,className:e(`p-6 border-t border-card-muted first:border-t-0`,i),...s,children:a}),Footer:({asChild:r=!1,className:i,children:a,ref:o,...s})=>n(r?t:`div`,{ref:o,"data-slot":`card-footer`,className:e(`px-6 py-3 border-t border-card-muted first:border-t-0`,i),...s,children:a}),Header:({asChild:r=!1,className:i,children:a,ref:o,...s})=>n(r?t:`div`,{ref:o,"data-slot":`card-header`,className:e(`px-6 py-3 border-t border-card-muted first:border-t-0`,i),...s,children:a}),Title:({className:r,asChild:i,ref:a,...o})=>n(i?t:`h3`,{ref:a,"data-slot":`card-title`,className:e(`text-strong text-base font-medium`,r),...o})};export{r as Card};
1
+ import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./slot-Dpsqz16D.js";import{jsx as n}from"react/jsx-runtime";const r={Root:({asChild:r=!1,className:i,children:a,ref:o,...s})=>n(r?t:`div`,{ref:o,"data-slot":`card`,className:e(`border-card bg-card relative rounded-md border`,i),...s,children:a}),Body:({asChild:r=!1,className:i,children:a,ref:o,...s})=>n(r?t:`div`,{ref:o,"data-slot":`card-body`,className:e(`p-6 border-t border-card-muted first:border-t-0`,i),...s,children:a}),Footer:({asChild:r=!1,className:i,children:a,ref:o,...s})=>n(r?t:`div`,{ref:o,"data-slot":`card-footer`,className:e(`px-6 py-3 border-t border-card-muted first:border-t-0`,i),...s,children:a}),Header:({asChild:r=!1,className:i,children:a,ref:o,...s})=>n(r?t:`div`,{ref:o,"data-slot":`card-header`,className:e(`px-6 py-3 border-t border-card-muted first:border-t-0`,i),...s,children:a}),Title:({className:r,asChild:i,ref:a,...o})=>n(i?t:`h3`,{ref:a,"data-slot":`card-title`,className:e(`text-strong text-base font-medium`,r),...o})};export{r as Card};