@conscia-labs/design-system 0.2.0 → 0.3.1
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/README.md +65 -0
- package/dist/{card-DqFHjLjm.d.ts → card-BFUHJgV-.d.ts} +3 -1
- package/dist/{chunk-YHPZ5CQU.js → chunk-HLND6FZS.js} +89 -69
- package/dist/chunk-HLND6FZS.js.map +1 -0
- package/dist/{chunk-5MGPU2JE.js → chunk-TXCHAKNG.js} +144 -26
- package/dist/chunk-TXCHAKNG.js.map +1 -0
- package/dist/{chunk-CU3OXBFI.js → chunk-VVTTFVCC.js} +37 -56
- package/dist/chunk-VVTTFVCC.js.map +1 -0
- package/dist/foundation.css +89 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +6 -4
- package/dist/patterns/index.d.ts +24 -4
- package/dist/patterns/index.js +4 -2
- package/dist/primitives/index.d.ts +2 -4
- package/dist/primitives/index.js +3 -3
- package/dist/standalone.css +1 -1
- package/dist/styles.css +89 -1
- package/package.json +2 -1
- package/dist/chunk-5MGPU2JE.js.map +0 -1
- package/dist/chunk-CU3OXBFI.js.map +0 -1
- package/dist/chunk-YHPZ5CQU.js.map +0 -1
package/README.md
CHANGED
|
@@ -252,6 +252,7 @@ export function ProductShell({
|
|
|
252
252
|
|
|
253
253
|
<MainRegion>
|
|
254
254
|
<TopBar>
|
|
255
|
+
{/* Keep the toggle in the topbar; it must remain visible when the sidebar collapses. */}
|
|
255
256
|
<SidebarTrigger />
|
|
256
257
|
</TopBar>
|
|
257
258
|
|
|
@@ -270,6 +271,70 @@ export function ProductShell({
|
|
|
270
271
|
}
|
|
271
272
|
```
|
|
272
273
|
|
|
274
|
+
### Typography and font loading
|
|
275
|
+
|
|
276
|
+
The design system declares the open-source Inter variable font as a runtime
|
|
277
|
+
dependency and loads it through its CSS entry points. Inter is distributed
|
|
278
|
+
under the SIL Open Font License 1.1 and supports the system's fractional
|
|
279
|
+
weight values. Consumers should import the published `tailwind.css` or
|
|
280
|
+
`styles.css` entry and should not add a separate Saans or Inter download.
|
|
281
|
+
Applications may override `--font-sans` only when a deliberate product-specific
|
|
282
|
+
type decision has been made.
|
|
283
|
+
|
|
284
|
+
### Sidebar variants and semantic surfaces
|
|
285
|
+
|
|
286
|
+
`AppSidebar` keeps the historical dark treatment by default. Consumers that
|
|
287
|
+
want the sidebar to follow the application appearance can opt into the
|
|
288
|
+
refreshed hierarchy with `variant="auto"`; `variant="light"` is available for
|
|
289
|
+
an explicitly light sidebar.
|
|
290
|
+
|
|
291
|
+
```tsx
|
|
292
|
+
<AppShell>
|
|
293
|
+
<AppSidebar variant="auto">
|
|
294
|
+
<AppSidebarHeader>
|
|
295
|
+
<ProductIdentity label="Conscia" description="Administration" />
|
|
296
|
+
</AppSidebarHeader>
|
|
297
|
+
<AppSidebarContent>{navigation}</AppSidebarContent>
|
|
298
|
+
<AppSidebarFooter>{accountMenu}</AppSidebarFooter>
|
|
299
|
+
</AppSidebar>
|
|
300
|
+
</AppShell>
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
The default is intentionally backwards compatible. The sidebar scope exposes
|
|
304
|
+
reusable semantic aliases for its canvas, header, content, hover, active,
|
|
305
|
+
search, footer, text, icon, group label, count, border, and focus-ring roles.
|
|
306
|
+
Use the generated utilities such as `bg-sidebar-canvas`,
|
|
307
|
+
`bg-sidebar-hover`, `text-sidebar-primary-text`, and
|
|
308
|
+
`text-sidebar-metadata-text` in shared or application-owned compositions.
|
|
309
|
+
Legacy aliases including `bg-sidebar`, `bg-sidebar-accent`, and
|
|
310
|
+
`text-sidebar-foreground` remain supported.
|
|
311
|
+
|
|
312
|
+
`SidebarSearch` owns only the trigger, expanded field, Escape handling, and
|
|
313
|
+
focus handoff. Applications provide the query value and filtering behavior.
|
|
314
|
+
`NavigationGroup` accepts an optional `count`; application-owned group labels
|
|
315
|
+
can still be supplied as arbitrary React nodes. Routing, conversation rows,
|
|
316
|
+
row actions, account menus, permissions, and appearance controls remain
|
|
317
|
+
application-owned.
|
|
318
|
+
|
|
319
|
+
The shell uses `--ds-topbar-height` as the shared chrome-height contract. The
|
|
320
|
+
sidebar header aliases the historical `--ds-sidebar-header-height` token to the
|
|
321
|
+
same value, so the two rails stay aligned. `SidebarTrigger` should be rendered
|
|
322
|
+
as a child of `TopBar`, never inside `AppSidebar`; the topbar remains mounted
|
|
323
|
+
when the sidebar enters collapsed or mobile states.
|
|
324
|
+
|
|
325
|
+
For migration, replace a consuming application's light-only `--sidebar-*`
|
|
326
|
+
root override with `variant="auto"` on its shared `AppSidebar`. Remove
|
|
327
|
+
descendant opacity and background overrides as each shell adopts the semantic
|
|
328
|
+
aliases. Keep product-specific selectors only where they encode behavior or
|
|
329
|
+
content rather than shared sidebar presentation.
|
|
330
|
+
|
|
331
|
+
The ownership boundary is:
|
|
332
|
+
|
|
333
|
+
| Shared design system | Application-owned |
|
|
334
|
+
| --- | --- |
|
|
335
|
+
| Sidebar variant tokens, surface hierarchy, geometry, responsive drawer, focus states, active/hover/disabled styling, tooltips, and search affordance behavior | Routes, permissions, navigation data, query/filter state, conversation or inventory data, row actions, account/profile menus, sign-out, and product-specific persistence keys |
|
|
336
|
+
| `NavigationGroup` keyboard expansion and `SidebarNavigation` collapsed flyouts | Group labels/content, link destinations, active-route calculation, and business-specific empty states |
|
|
337
|
+
|
|
273
338
|
## Choosing the right component
|
|
274
339
|
|
|
275
340
|
### Table or DataTable?
|
|
@@ -11,6 +11,8 @@ declare function Button({ className, variant, size, asChild, type, ...props }: R
|
|
|
11
11
|
asChild?: boolean;
|
|
12
12
|
}): React.JSX.Element;
|
|
13
13
|
|
|
14
|
+
declare function Input({ className, type, ...props }: React.ComponentProps<"input">): React.JSX.Element;
|
|
15
|
+
|
|
14
16
|
declare function Separator({ className, orientation, decorative, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>): React.JSX.Element;
|
|
15
17
|
|
|
16
18
|
declare function Card({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
@@ -19,4 +21,4 @@ declare function CardTitle({ className, ...props }: React.ComponentProps<"div">)
|
|
|
19
21
|
declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
20
22
|
declare function CardContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
21
23
|
|
|
22
|
-
export { Button as B, Card as C, Separator as S, CardContent as a, CardDescription as b, CardHeader as c, CardTitle as d, buttonVariants as e };
|
|
24
|
+
export { Button as B, Card as C, Input as I, Separator as S, CardContent as a, CardDescription as b, CardHeader as c, CardTitle as d, buttonVariants as e };
|
|
@@ -232,16 +232,35 @@ function SelectScrollDownButton({ className, ...props }) {
|
|
|
232
232
|
return /* @__PURE__ */ jsx4(SelectPrimitive.ScrollDownButton, { "data-slot": "select-scroll-down-button", className: cn("flex cursor-default items-center justify-center py-1", className), ...props, children: /* @__PURE__ */ jsx4(ChevronDownIcon, { className: "size-4" }) });
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
+
// src/primitives/input.tsx
|
|
236
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
237
|
+
function Input({ className, type, ...props }) {
|
|
238
|
+
return /* @__PURE__ */ jsx5(
|
|
239
|
+
"input",
|
|
240
|
+
{
|
|
241
|
+
type,
|
|
242
|
+
"data-slot": "input",
|
|
243
|
+
className: cn(
|
|
244
|
+
"border-input bg-card flex h-[var(--ds-field-control-height)] w-full min-w-0 rounded-[var(--ds-field-control-radius)] border px-[var(--ds-field-control-padding-x)] py-2 text-base shadow-none transition-colors outline-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
245
|
+
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
246
|
+
"aria-invalid:border-danger aria-invalid:ring-danger/20 dark:aria-invalid:ring-danger/40",
|
|
247
|
+
className
|
|
248
|
+
),
|
|
249
|
+
...props
|
|
250
|
+
}
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
|
|
235
254
|
// src/primitives/separator.tsx
|
|
236
255
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
237
|
-
import { jsx as
|
|
256
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
238
257
|
function Separator2({
|
|
239
258
|
className,
|
|
240
259
|
orientation = "horizontal",
|
|
241
260
|
decorative = true,
|
|
242
261
|
...props
|
|
243
262
|
}) {
|
|
244
|
-
return /* @__PURE__ */
|
|
263
|
+
return /* @__PURE__ */ jsx6(
|
|
245
264
|
SeparatorPrimitive.Root,
|
|
246
265
|
{
|
|
247
266
|
"data-slot": "separator",
|
|
@@ -259,30 +278,30 @@ function Separator2({
|
|
|
259
278
|
// src/primitives/sheet.tsx
|
|
260
279
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
261
280
|
import { XIcon } from "lucide-react";
|
|
262
|
-
import { jsx as
|
|
281
|
+
import { jsx as jsx7, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
263
282
|
function Sheet({ ...props }) {
|
|
264
|
-
return /* @__PURE__ */
|
|
283
|
+
return /* @__PURE__ */ jsx7(DialogPrimitive.Root, { "data-slot": "sheet", ...props });
|
|
265
284
|
}
|
|
266
285
|
function SheetTrigger({
|
|
267
286
|
...props
|
|
268
287
|
}) {
|
|
269
|
-
return /* @__PURE__ */
|
|
288
|
+
return /* @__PURE__ */ jsx7(DialogPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
|
|
270
289
|
}
|
|
271
290
|
function SheetPortal({
|
|
272
291
|
...props
|
|
273
292
|
}) {
|
|
274
|
-
return /* @__PURE__ */
|
|
293
|
+
return /* @__PURE__ */ jsx7(DialogPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
|
|
275
294
|
}
|
|
276
295
|
function SheetClose({
|
|
277
296
|
...props
|
|
278
297
|
}) {
|
|
279
|
-
return /* @__PURE__ */
|
|
298
|
+
return /* @__PURE__ */ jsx7(DialogPrimitive.Close, { "data-slot": "sheet-close", ...props });
|
|
280
299
|
}
|
|
281
300
|
function SheetOverlay({
|
|
282
301
|
className,
|
|
283
302
|
...props
|
|
284
303
|
}) {
|
|
285
|
-
return /* @__PURE__ */
|
|
304
|
+
return /* @__PURE__ */ jsx7(
|
|
286
305
|
DialogPrimitive.Overlay,
|
|
287
306
|
{
|
|
288
307
|
"data-slot": "sheet-overlay",
|
|
@@ -305,7 +324,7 @@ function SheetContent({
|
|
|
305
324
|
...props
|
|
306
325
|
}) {
|
|
307
326
|
return /* @__PURE__ */ jsxs2(SheetPortal, { children: [
|
|
308
|
-
/* @__PURE__ */
|
|
327
|
+
/* @__PURE__ */ jsx7(SheetOverlay, {}),
|
|
309
328
|
/* @__PURE__ */ jsxs2(
|
|
310
329
|
DialogPrimitive.Content,
|
|
311
330
|
{
|
|
@@ -324,8 +343,8 @@ function SheetContent({
|
|
|
324
343
|
"data-slot": "sheet-close",
|
|
325
344
|
className: "absolute right-4 top-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:ring-offset-background disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
326
345
|
children: [
|
|
327
|
-
/* @__PURE__ */
|
|
328
|
-
/* @__PURE__ */
|
|
346
|
+
/* @__PURE__ */ jsx7(XIcon, {}),
|
|
347
|
+
/* @__PURE__ */ jsx7("span", { className: "sr-only", children: closeLabel })
|
|
329
348
|
]
|
|
330
349
|
}
|
|
331
350
|
)
|
|
@@ -335,13 +354,13 @@ function SheetContent({
|
|
|
335
354
|
] });
|
|
336
355
|
}
|
|
337
356
|
function SheetHeader({ className, ...props }) {
|
|
338
|
-
return /* @__PURE__ */
|
|
357
|
+
return /* @__PURE__ */ jsx7("div", { "data-slot": "sheet-header", className: cn("grid gap-2 pr-8", className), ...props });
|
|
339
358
|
}
|
|
340
359
|
function SheetTitle({
|
|
341
360
|
className,
|
|
342
361
|
...props
|
|
343
362
|
}) {
|
|
344
|
-
return /* @__PURE__ */
|
|
363
|
+
return /* @__PURE__ */ jsx7(
|
|
345
364
|
DialogPrimitive.Title,
|
|
346
365
|
{
|
|
347
366
|
"data-slot": "sheet-title",
|
|
@@ -354,7 +373,7 @@ function SheetDescription({
|
|
|
354
373
|
className,
|
|
355
374
|
...props
|
|
356
375
|
}) {
|
|
357
|
-
return /* @__PURE__ */
|
|
376
|
+
return /* @__PURE__ */ jsx7(
|
|
358
377
|
DialogPrimitive.Description,
|
|
359
378
|
{
|
|
360
379
|
"data-slot": "sheet-description",
|
|
@@ -364,7 +383,7 @@ function SheetDescription({
|
|
|
364
383
|
);
|
|
365
384
|
}
|
|
366
385
|
function SheetBody({ className, ...props }) {
|
|
367
|
-
return /* @__PURE__ */
|
|
386
|
+
return /* @__PURE__ */ jsx7(
|
|
368
387
|
"div",
|
|
369
388
|
{
|
|
370
389
|
"data-slot": "sheet-body",
|
|
@@ -374,7 +393,7 @@ function SheetBody({ className, ...props }) {
|
|
|
374
393
|
);
|
|
375
394
|
}
|
|
376
395
|
function SheetFooter({ className, ...props }) {
|
|
377
|
-
return /* @__PURE__ */
|
|
396
|
+
return /* @__PURE__ */ jsx7(
|
|
378
397
|
"div",
|
|
379
398
|
{
|
|
380
399
|
"data-slot": "sheet-footer",
|
|
@@ -386,15 +405,15 @@ function SheetFooter({ className, ...props }) {
|
|
|
386
405
|
|
|
387
406
|
// src/primitives/tooltip.tsx
|
|
388
407
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
389
|
-
import { jsx as
|
|
408
|
+
import { jsx as jsx8, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
390
409
|
function TooltipProvider({ delayDuration = 150, ...props }) {
|
|
391
|
-
return /* @__PURE__ */
|
|
410
|
+
return /* @__PURE__ */ jsx8(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delayDuration, ...props });
|
|
392
411
|
}
|
|
393
412
|
function Tooltip({ ...props }) {
|
|
394
|
-
return /* @__PURE__ */
|
|
413
|
+
return /* @__PURE__ */ jsx8(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props });
|
|
395
414
|
}
|
|
396
415
|
function TooltipTrigger({ ...props }) {
|
|
397
|
-
return /* @__PURE__ */
|
|
416
|
+
return /* @__PURE__ */ jsx8(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
398
417
|
}
|
|
399
418
|
function TooltipContent({
|
|
400
419
|
className,
|
|
@@ -402,7 +421,7 @@ function TooltipContent({
|
|
|
402
421
|
children,
|
|
403
422
|
...props
|
|
404
423
|
}) {
|
|
405
|
-
return /* @__PURE__ */
|
|
424
|
+
return /* @__PURE__ */ jsx8(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs3(
|
|
406
425
|
TooltipPrimitive.Content,
|
|
407
426
|
{
|
|
408
427
|
"data-slot": "tooltip-content",
|
|
@@ -411,7 +430,7 @@ function TooltipContent({
|
|
|
411
430
|
...props,
|
|
412
431
|
children: [
|
|
413
432
|
children,
|
|
414
|
-
/* @__PURE__ */
|
|
433
|
+
/* @__PURE__ */ jsx8(TooltipPrimitive.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground" })
|
|
415
434
|
]
|
|
416
435
|
}
|
|
417
436
|
) });
|
|
@@ -420,21 +439,21 @@ function TooltipContent({
|
|
|
420
439
|
// src/primitives/dialog.tsx
|
|
421
440
|
import * as DialogPrimitive2 from "@radix-ui/react-dialog";
|
|
422
441
|
import { XIcon as XIcon2 } from "lucide-react";
|
|
423
|
-
import { jsx as
|
|
442
|
+
import { jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
424
443
|
function Dialog({ ...props }) {
|
|
425
|
-
return /* @__PURE__ */
|
|
444
|
+
return /* @__PURE__ */ jsx9(DialogPrimitive2.Root, { "data-slot": "dialog", ...props });
|
|
426
445
|
}
|
|
427
446
|
function DialogTrigger({ ...props }) {
|
|
428
|
-
return /* @__PURE__ */
|
|
447
|
+
return /* @__PURE__ */ jsx9(DialogPrimitive2.Trigger, { "data-slot": "dialog-trigger", ...props });
|
|
429
448
|
}
|
|
430
449
|
function DialogClose({ ...props }) {
|
|
431
|
-
return /* @__PURE__ */
|
|
450
|
+
return /* @__PURE__ */ jsx9(DialogPrimitive2.Close, { "data-slot": "dialog-close", ...props });
|
|
432
451
|
}
|
|
433
452
|
function DialogPortal({ ...props }) {
|
|
434
|
-
return /* @__PURE__ */
|
|
453
|
+
return /* @__PURE__ */ jsx9(DialogPrimitive2.Portal, { "data-slot": "dialog-portal", ...props });
|
|
435
454
|
}
|
|
436
455
|
function DialogOverlay({ className, ...props }) {
|
|
437
|
-
return /* @__PURE__ */
|
|
456
|
+
return /* @__PURE__ */ jsx9(DialogPrimitive2.Overlay, { "data-slot": "dialog-overlay", className: cn("fixed inset-0 z-50 bg-black/50", className), ...props });
|
|
438
457
|
}
|
|
439
458
|
function DialogContent({
|
|
440
459
|
className,
|
|
@@ -445,7 +464,7 @@ function DialogContent({
|
|
|
445
464
|
...props
|
|
446
465
|
}) {
|
|
447
466
|
return /* @__PURE__ */ jsxs4(DialogPortal, { children: [
|
|
448
|
-
/* @__PURE__ */
|
|
467
|
+
/* @__PURE__ */ jsx9(DialogOverlay, {}),
|
|
449
468
|
/* @__PURE__ */ jsxs4(
|
|
450
469
|
DialogPrimitive2.Content,
|
|
451
470
|
{
|
|
@@ -465,8 +484,8 @@ function DialogContent({
|
|
|
465
484
|
"data-slot": "dialog-close",
|
|
466
485
|
className: "absolute right-4 top-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:ring-offset-background disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
467
486
|
children: [
|
|
468
|
-
/* @__PURE__ */
|
|
469
|
-
/* @__PURE__ */
|
|
487
|
+
/* @__PURE__ */ jsx9(XIcon2, { className: "size-4" }),
|
|
488
|
+
/* @__PURE__ */ jsx9("span", { className: "sr-only", children: closeLabel })
|
|
470
489
|
]
|
|
471
490
|
}
|
|
472
491
|
) : null
|
|
@@ -476,26 +495,26 @@ function DialogContent({
|
|
|
476
495
|
] });
|
|
477
496
|
}
|
|
478
497
|
function DialogHeader({ className, ...props }) {
|
|
479
|
-
return /* @__PURE__ */
|
|
498
|
+
return /* @__PURE__ */ jsx9("div", { "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-left", className), ...props });
|
|
480
499
|
}
|
|
481
500
|
function DialogTitle({ className, ...props }) {
|
|
482
|
-
return /* @__PURE__ */
|
|
501
|
+
return /* @__PURE__ */ jsx9(DialogPrimitive2.Title, { "data-slot": "dialog-title", className: cn("text-base font-semibold leading-none", className), ...props });
|
|
483
502
|
}
|
|
484
503
|
function DialogDescription({ className, ...props }) {
|
|
485
|
-
return /* @__PURE__ */
|
|
504
|
+
return /* @__PURE__ */ jsx9(DialogPrimitive2.Description, { "data-slot": "dialog-description", className: cn("text-sm text-muted-foreground", className), ...props });
|
|
486
505
|
}
|
|
487
506
|
function DialogBody({ className, ...props }) {
|
|
488
|
-
return /* @__PURE__ */
|
|
507
|
+
return /* @__PURE__ */ jsx9("div", { "data-slot": "dialog-body", className: cn("min-h-0 overflow-y-auto text-sm", className), ...props });
|
|
489
508
|
}
|
|
490
509
|
function DialogFooter({ className, ...props }) {
|
|
491
|
-
return /* @__PURE__ */
|
|
510
|
+
return /* @__PURE__ */ jsx9("div", { "data-slot": "dialog-footer", className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className), ...props });
|
|
492
511
|
}
|
|
493
512
|
|
|
494
513
|
// src/primitives/tabs.tsx
|
|
495
514
|
import * as React from "react";
|
|
496
515
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
497
516
|
import { Slot as Slot2 } from "@radix-ui/react-slot";
|
|
498
|
-
import { jsx as
|
|
517
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
499
518
|
var defaultTabsVisualContext = {
|
|
500
519
|
variant: "underline",
|
|
501
520
|
size: "default"
|
|
@@ -546,7 +565,7 @@ function Tabs({
|
|
|
546
565
|
size = "default",
|
|
547
566
|
...props
|
|
548
567
|
}) {
|
|
549
|
-
return /* @__PURE__ */
|
|
568
|
+
return /* @__PURE__ */ jsx10(TabsRootVisualContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx10(
|
|
550
569
|
TabsPrimitive.Root,
|
|
551
570
|
{
|
|
552
571
|
"data-slot": "tabs",
|
|
@@ -570,7 +589,7 @@ function TabsList({
|
|
|
570
589
|
const resolvedVariant = variant ?? rootVisuals.variant;
|
|
571
590
|
const resolvedSize = size ?? rootVisuals.size;
|
|
572
591
|
const [scrollPosition, scrollRailRef, updateScrollPosition] = useHorizontalScrollRail(externalRef);
|
|
573
|
-
return /* @__PURE__ */
|
|
592
|
+
return /* @__PURE__ */ jsx10(
|
|
574
593
|
TabsPrimitive.List,
|
|
575
594
|
{
|
|
576
595
|
"data-slot": "tabs-list",
|
|
@@ -590,7 +609,7 @@ function TabsList({
|
|
|
590
609
|
className
|
|
591
610
|
),
|
|
592
611
|
...props,
|
|
593
|
-
children: /* @__PURE__ */
|
|
612
|
+
children: /* @__PURE__ */ jsx10(
|
|
594
613
|
TabsListVisualContext.Provider,
|
|
595
614
|
{
|
|
596
615
|
value: { variant: resolvedVariant, size: resolvedSize },
|
|
@@ -609,7 +628,7 @@ function TabsTrigger({
|
|
|
609
628
|
const listVisuals = React.useContext(TabsListVisualContext);
|
|
610
629
|
const resolvedVariant = variant ?? listVisuals.variant;
|
|
611
630
|
const resolvedSize = size ?? listVisuals.size;
|
|
612
|
-
return /* @__PURE__ */
|
|
631
|
+
return /* @__PURE__ */ jsx10(
|
|
613
632
|
TabsPrimitive.Trigger,
|
|
614
633
|
{
|
|
615
634
|
"data-slot": "tabs-trigger",
|
|
@@ -632,7 +651,7 @@ function TabsContent({
|
|
|
632
651
|
className,
|
|
633
652
|
...props
|
|
634
653
|
}) {
|
|
635
|
-
return /* @__PURE__ */
|
|
654
|
+
return /* @__PURE__ */ jsx10(
|
|
636
655
|
TabsPrimitive.Content,
|
|
637
656
|
{
|
|
638
657
|
"data-slot": "tabs-content",
|
|
@@ -648,7 +667,7 @@ function NavigationTabs({
|
|
|
648
667
|
className,
|
|
649
668
|
...props
|
|
650
669
|
}) {
|
|
651
|
-
return /* @__PURE__ */
|
|
670
|
+
return /* @__PURE__ */ jsx10(
|
|
652
671
|
"nav",
|
|
653
672
|
{
|
|
654
673
|
"data-slot": "navigation-tabs",
|
|
@@ -664,7 +683,7 @@ function NavigationTabsList({
|
|
|
664
683
|
...props
|
|
665
684
|
}) {
|
|
666
685
|
const [scrollPosition, scrollRailRef, updateScrollPosition] = useHorizontalScrollRail(externalRef);
|
|
667
|
-
return /* @__PURE__ */
|
|
686
|
+
return /* @__PURE__ */ jsx10(
|
|
668
687
|
"div",
|
|
669
688
|
{
|
|
670
689
|
"data-slot": "navigation-tabs-list",
|
|
@@ -707,7 +726,7 @@ function NavigationTab({
|
|
|
707
726
|
inline: "nearest"
|
|
708
727
|
});
|
|
709
728
|
}, [active]);
|
|
710
|
-
return /* @__PURE__ */
|
|
729
|
+
return /* @__PURE__ */ jsx10(
|
|
711
730
|
Comp,
|
|
712
731
|
{
|
|
713
732
|
...props,
|
|
@@ -724,9 +743,9 @@ function NavigationTab({
|
|
|
724
743
|
}
|
|
725
744
|
|
|
726
745
|
// src/primitives/card.tsx
|
|
727
|
-
import { jsx as
|
|
746
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
728
747
|
function Card({ className, ...props }) {
|
|
729
|
-
return /* @__PURE__ */
|
|
748
|
+
return /* @__PURE__ */ jsx11(
|
|
730
749
|
"div",
|
|
731
750
|
{
|
|
732
751
|
"data-slot": "card",
|
|
@@ -736,22 +755,22 @@ function Card({ className, ...props }) {
|
|
|
736
755
|
);
|
|
737
756
|
}
|
|
738
757
|
function CardHeader({ className, ...props }) {
|
|
739
|
-
return /* @__PURE__ */
|
|
758
|
+
return /* @__PURE__ */ jsx11("div", { "data-slot": "card-header", className: cn("grid auto-rows-min gap-1.5 px-[var(--ds-surface-padding)]", className), ...props });
|
|
740
759
|
}
|
|
741
760
|
function CardTitle({ className, ...props }) {
|
|
742
|
-
return /* @__PURE__ */
|
|
761
|
+
return /* @__PURE__ */ jsx11("div", { "data-slot": "card-title", className: cn("font-semibold leading-none", className), ...props });
|
|
743
762
|
}
|
|
744
763
|
function CardDescription({ className, ...props }) {
|
|
745
|
-
return /* @__PURE__ */
|
|
764
|
+
return /* @__PURE__ */ jsx11("div", { "data-slot": "card-description", className: cn("text-sm text-muted-foreground", className), ...props });
|
|
746
765
|
}
|
|
747
766
|
function CardContent({ className, ...props }) {
|
|
748
|
-
return /* @__PURE__ */
|
|
767
|
+
return /* @__PURE__ */ jsx11("div", { "data-slot": "card-content", className: cn("px-[var(--ds-surface-padding)]", className), ...props });
|
|
749
768
|
}
|
|
750
769
|
|
|
751
770
|
// src/primitives/skeleton.tsx
|
|
752
|
-
import { jsx as
|
|
771
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
753
772
|
function Skeleton({ className, ...props }) {
|
|
754
|
-
return /* @__PURE__ */
|
|
773
|
+
return /* @__PURE__ */ jsx12(
|
|
755
774
|
"div",
|
|
756
775
|
{
|
|
757
776
|
"data-slot": "skeleton",
|
|
@@ -763,16 +782,16 @@ function Skeleton({ className, ...props }) {
|
|
|
763
782
|
|
|
764
783
|
// src/primitives/collapsible.tsx
|
|
765
784
|
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
|
|
766
|
-
import { jsx as
|
|
785
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
767
786
|
function Collapsible({
|
|
768
787
|
...props
|
|
769
788
|
}) {
|
|
770
|
-
return /* @__PURE__ */
|
|
789
|
+
return /* @__PURE__ */ jsx13(CollapsiblePrimitive.Root, { "data-slot": "collapsible", ...props });
|
|
771
790
|
}
|
|
772
791
|
function CollapsibleTrigger({
|
|
773
792
|
...props
|
|
774
793
|
}) {
|
|
775
|
-
return /* @__PURE__ */
|
|
794
|
+
return /* @__PURE__ */ jsx13(
|
|
776
795
|
CollapsiblePrimitive.Trigger,
|
|
777
796
|
{
|
|
778
797
|
"data-slot": "collapsible-trigger",
|
|
@@ -783,7 +802,7 @@ function CollapsibleTrigger({
|
|
|
783
802
|
function CollapsibleContent({
|
|
784
803
|
...props
|
|
785
804
|
}) {
|
|
786
|
-
return /* @__PURE__ */
|
|
805
|
+
return /* @__PURE__ */ jsx13(
|
|
787
806
|
CollapsiblePrimitive.Content,
|
|
788
807
|
{
|
|
789
808
|
"data-slot": "collapsible-content",
|
|
@@ -795,34 +814,34 @@ function CollapsibleContent({
|
|
|
795
814
|
// src/primitives/dropdown-menu.tsx
|
|
796
815
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
797
816
|
import { ChevronRight } from "lucide-react";
|
|
798
|
-
import { jsx as
|
|
817
|
+
import { jsx as jsx14, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
799
818
|
function DropdownMenu({ ...props }) {
|
|
800
|
-
return /* @__PURE__ */
|
|
819
|
+
return /* @__PURE__ */ jsx14(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
|
|
801
820
|
}
|
|
802
821
|
function DropdownMenuGroup({ ...props }) {
|
|
803
|
-
return /* @__PURE__ */
|
|
822
|
+
return /* @__PURE__ */ jsx14(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
|
|
804
823
|
}
|
|
805
824
|
function DropdownMenuSub({ ...props }) {
|
|
806
|
-
return /* @__PURE__ */
|
|
825
|
+
return /* @__PURE__ */ jsx14(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
|
|
807
826
|
}
|
|
808
827
|
function DropdownMenuSubTrigger({ className, children, ...props }) {
|
|
809
828
|
return /* @__PURE__ */ jsxs5(DropdownMenuPrimitive.SubTrigger, { "data-slot": "dropdown-menu-sub-trigger", className: cn("focus:bg-surface-muted flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-[length:var(--ds-menu-item-size)] outline-hidden", className), ...props, children: [
|
|
810
829
|
children,
|
|
811
|
-
/* @__PURE__ */
|
|
830
|
+
/* @__PURE__ */ jsx14(ChevronRight, { className: "ml-auto size-4 text-muted-foreground" })
|
|
812
831
|
] });
|
|
813
832
|
}
|
|
814
833
|
function DropdownMenuSubContent({ className, ...props }) {
|
|
815
|
-
return /* @__PURE__ */
|
|
834
|
+
return /* @__PURE__ */ jsx14(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx14(DropdownMenuPrimitive.SubContent, { "data-slot": "dropdown-menu-sub-content", className: cn("z-50 min-w-56 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-[var(--ds-shadow-floating)]", className), ...props }) });
|
|
816
835
|
}
|
|
817
836
|
function DropdownMenuTrigger({ ...props }) {
|
|
818
|
-
return /* @__PURE__ */
|
|
837
|
+
return /* @__PURE__ */ jsx14(DropdownMenuPrimitive.Trigger, { "data-slot": "dropdown-menu-trigger", ...props });
|
|
819
838
|
}
|
|
820
839
|
function DropdownMenuContent({
|
|
821
840
|
className,
|
|
822
841
|
sideOffset = 4,
|
|
823
842
|
...props
|
|
824
843
|
}) {
|
|
825
|
-
return /* @__PURE__ */
|
|
844
|
+
return /* @__PURE__ */ jsx14(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx14(
|
|
826
845
|
DropdownMenuPrimitive.Content,
|
|
827
846
|
{
|
|
828
847
|
"data-slot": "dropdown-menu-content",
|
|
@@ -838,7 +857,7 @@ function DropdownMenuItem({
|
|
|
838
857
|
variant = "default",
|
|
839
858
|
...props
|
|
840
859
|
}) {
|
|
841
|
-
return /* @__PURE__ */
|
|
860
|
+
return /* @__PURE__ */ jsx14(
|
|
842
861
|
DropdownMenuPrimitive.Item,
|
|
843
862
|
{
|
|
844
863
|
"data-slot": "dropdown-menu-item",
|
|
@@ -854,10 +873,10 @@ function DropdownMenuLabel({
|
|
|
854
873
|
inset,
|
|
855
874
|
...props
|
|
856
875
|
}) {
|
|
857
|
-
return /* @__PURE__ */
|
|
876
|
+
return /* @__PURE__ */ jsx14(DropdownMenuPrimitive.Label, { "data-slot": "dropdown-menu-label", "data-inset": inset, className: cn("px-2 py-1.5 text-[length:var(--ds-menu-label-size)] font-medium data-[inset=true]:pl-8", className), ...props });
|
|
858
877
|
}
|
|
859
878
|
function DropdownMenuSeparator({ className, ...props }) {
|
|
860
|
-
return /* @__PURE__ */
|
|
879
|
+
return /* @__PURE__ */ jsx14(DropdownMenuPrimitive.Separator, { "data-slot": "dropdown-menu-separator", className: cn("-mx-1 my-1 h-px bg-border", className), ...props });
|
|
861
880
|
}
|
|
862
881
|
|
|
863
882
|
export {
|
|
@@ -880,6 +899,7 @@ export {
|
|
|
880
899
|
SelectSeparator,
|
|
881
900
|
SelectScrollUpButton,
|
|
882
901
|
SelectScrollDownButton,
|
|
902
|
+
Input,
|
|
883
903
|
Separator2 as Separator,
|
|
884
904
|
Sheet,
|
|
885
905
|
SheetTrigger,
|
|
@@ -934,4 +954,4 @@ export {
|
|
|
934
954
|
DropdownMenuLabel,
|
|
935
955
|
DropdownMenuSeparator
|
|
936
956
|
};
|
|
937
|
-
//# sourceMappingURL=chunk-
|
|
957
|
+
//# sourceMappingURL=chunk-HLND6FZS.js.map
|