@dimaan/ui 0.0.14 → 0.0.15

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/index.js CHANGED
@@ -5,9 +5,10 @@ import { DirectionProvider } from '@radix-ui/react-direction';
5
5
  import { clsx } from 'clsx';
6
6
  import { twMerge } from 'tailwind-merge';
7
7
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
8
- import { Loader2, Check, Minus, Calendar, X, ChevronLeft, ChevronRight, ChevronDown, ChevronUp, ArrowLeft, Menu, ChevronsUpDown, Search, RefreshCw, Inbox, SearchX } from 'lucide-react';
8
+ import { Loader2, Check, Minus, Calendar, X, ChevronLeft, ChevronRight, ChevronDown, ChevronUp, ArrowLeft, Menu, FileQuestion, ChevronsUpDown, Search, RefreshCw, Inbox, SearchX } from 'lucide-react';
9
9
  import * as RadixPopover from '@radix-ui/react-popover';
10
10
  import { DayPicker } from 'react-day-picker';
11
+ import * as RadixDialog from '@radix-ui/react-dialog';
11
12
  import * as RadixDropdown from '@radix-ui/react-dropdown-menu';
12
13
  import { useFormContext, Controller } from 'react-hook-form';
13
14
  import * as RadixSelect from '@radix-ui/react-select';
@@ -16347,86 +16348,6 @@ function readDocumentLocale() {
16347
16348
  return lang || void 0;
16348
16349
  }
16349
16350
 
16350
- // src/components/dropdown-menu/dropdownMenuVariants.ts
16351
- var dropdownMenuContentClass = "z-50 min-w-32 overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95";
16352
- var dropdownMenuItemBaseClass = "relative flex w-full cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0";
16353
- var dropdownMenuItemVariantClass = {
16354
- default: "text-foreground data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground",
16355
- destructive: "text-destructive data-[highlighted]:bg-destructive data-[highlighted]:text-destructive-foreground"
16356
- };
16357
- var dropdownMenuItemInsetClass = "ps-8";
16358
- var dropdownMenuSeparatorClass = "-mx-1 my-1 h-px bg-border";
16359
- var dropdownMenuLabelClass = "px-2 py-1.5 text-xs font-semibold text-muted-foreground select-none";
16360
- var dropdownMenuShortcutClass = "ms-auto text-xs tracking-widest text-muted-foreground";
16361
- var DropdownMenu = RadixDropdown.Root;
16362
- var DropdownMenuTrigger = RadixDropdown.Trigger;
16363
- var DropdownMenuGroup = RadixDropdown.Group;
16364
- var DropdownMenuPortal = RadixDropdown.Portal;
16365
- var DropdownMenuContent = forwardRef(function DropdownMenuContent2({ className, sideOffset = 4, ...props }, ref) {
16366
- return /* @__PURE__ */ jsx(RadixDropdown.Portal, { children: /* @__PURE__ */ jsx(
16367
- RadixDropdown.Content,
16368
- {
16369
- ref,
16370
- sideOffset,
16371
- "data-slot": "dropdown-menu-content",
16372
- className: cn(dropdownMenuContentClass, className),
16373
- ...props
16374
- }
16375
- ) });
16376
- });
16377
- var DropdownMenuItem = forwardRef(function DropdownMenuItem2({ className, variant = "default", inset = false, ...props }, ref) {
16378
- return /* @__PURE__ */ jsx(
16379
- RadixDropdown.Item,
16380
- {
16381
- ref,
16382
- "data-slot": "dropdown-menu-item",
16383
- "data-variant": variant,
16384
- className: cn(
16385
- dropdownMenuItemBaseClass,
16386
- dropdownMenuItemVariantClass[variant],
16387
- inset && dropdownMenuItemInsetClass,
16388
- className
16389
- ),
16390
- ...props
16391
- }
16392
- );
16393
- });
16394
- var DropdownMenuSeparator = forwardRef(function DropdownMenuSeparator2({ className, ...props }, ref) {
16395
- return /* @__PURE__ */ jsx(
16396
- RadixDropdown.Separator,
16397
- {
16398
- ref,
16399
- "data-slot": "dropdown-menu-separator",
16400
- className: cn(dropdownMenuSeparatorClass, className),
16401
- ...props
16402
- }
16403
- );
16404
- });
16405
- var DropdownMenuLabel = forwardRef(function DropdownMenuLabel2({ className, inset = false, ...props }, ref) {
16406
- return /* @__PURE__ */ jsx(
16407
- RadixDropdown.Label,
16408
- {
16409
- ref,
16410
- "data-slot": "dropdown-menu-label",
16411
- className: cn(dropdownMenuLabelClass, inset && dropdownMenuItemInsetClass, className),
16412
- ...props
16413
- }
16414
- );
16415
- });
16416
- var DropdownMenuShortcut = forwardRef(
16417
- function DropdownMenuShortcut2({ className, ...props }, ref) {
16418
- return /* @__PURE__ */ jsx(
16419
- "span",
16420
- {
16421
- ref,
16422
- "data-slot": "dropdown-menu-shortcut",
16423
- className: cn(dropdownMenuShortcutClass, className),
16424
- ...props
16425
- }
16426
- );
16427
- }
16428
- );
16429
-
16430
16351
  // src/components/empty-state/emptyStateVariants.ts
16431
16352
  var emptyStateContainerSizeClass = {
16432
16353
  sm: "py-8 gap-2",
@@ -16506,6 +16427,303 @@ var EmptyState = forwardRef(function EmptyState2({ icon, title, description, act
16506
16427
  }
16507
16428
  );
16508
16429
  });
16430
+
16431
+ // src/components/page-header/PageHeader.tsx
16432
+ var import_react_router_dom2 = __toESM(require_dist2());
16433
+
16434
+ // src/components/page-header/pageHeaderVariants.ts
16435
+ var pageHeaderBaseClass = "flex w-full flex-col gap-3";
16436
+ var pageHeaderBorderedClass = "border-b border-border pb-4";
16437
+ var pageHeaderTitleRowClass = "flex flex-wrap items-start justify-between gap-3 sm:gap-4";
16438
+ var pageHeaderTitleBlockClass = "min-w-0 flex-1 space-y-1";
16439
+ var pageHeaderTitleClass = "text-2xl font-semibold tracking-tight text-foreground";
16440
+ var pageHeaderDescriptionClass = "text-sm text-muted-foreground";
16441
+ var pageHeaderActionsClass = "flex shrink-0 flex-wrap items-center gap-2";
16442
+ var pageHeaderBackClass = "inline-flex items-center gap-1.5 self-start text-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background rounded-md";
16443
+ var pageHeaderBackIconClass = "size-4 shrink-0 rtl:rotate-180";
16444
+ var pageHeaderBreadcrumbsClass = "text-xs text-muted-foreground";
16445
+ var PageHeader = forwardRef(function PageHeader2({
16446
+ title,
16447
+ description,
16448
+ breadcrumbs,
16449
+ back,
16450
+ actions,
16451
+ as = "h1",
16452
+ bordered = false,
16453
+ className,
16454
+ ...props
16455
+ }, ref) {
16456
+ return /* @__PURE__ */ jsxs(
16457
+ "header",
16458
+ {
16459
+ ref,
16460
+ "data-slot": "page-header",
16461
+ className: cn(pageHeaderBaseClass, bordered && pageHeaderBorderedClass, className),
16462
+ ...props,
16463
+ children: [
16464
+ breadcrumbs ? /* @__PURE__ */ jsx("div", { "data-slot": "page-header-breadcrumbs", className: pageHeaderBreadcrumbsClass, children: breadcrumbs }) : null,
16465
+ back ? /* @__PURE__ */ jsx(PageHeaderBack, { ...back }) : null,
16466
+ /* @__PURE__ */ jsxs("div", { "data-slot": "page-header-row", className: pageHeaderTitleRowClass, children: [
16467
+ /* @__PURE__ */ jsxs("div", { className: pageHeaderTitleBlockClass, children: [
16468
+ createElement(
16469
+ as,
16470
+ { "data-slot": "page-header-title", className: pageHeaderTitleClass },
16471
+ title
16472
+ ),
16473
+ description ? /* @__PURE__ */ jsx("p", { "data-slot": "page-header-description", className: pageHeaderDescriptionClass, children: description }) : null
16474
+ ] }),
16475
+ actions ? /* @__PURE__ */ jsx("div", { "data-slot": "page-header-actions", className: pageHeaderActionsClass, children: actions }) : null
16476
+ ] })
16477
+ ]
16478
+ }
16479
+ );
16480
+ });
16481
+ function PageHeaderBack({ label = "Back", to, onClick, render }) {
16482
+ const inner = /* @__PURE__ */ jsxs(Fragment, { children: [
16483
+ /* @__PURE__ */ jsx(ArrowLeft, { className: pageHeaderBackIconClass, "aria-hidden": "true" }),
16484
+ /* @__PURE__ */ jsx("span", { children: label })
16485
+ ] });
16486
+ if (render) {
16487
+ return render({
16488
+ to,
16489
+ onClick,
16490
+ className: pageHeaderBackClass,
16491
+ children: inner
16492
+ });
16493
+ }
16494
+ if (to) {
16495
+ return /* @__PURE__ */ jsx(import_react_router_dom2.Link, { to, onClick, className: pageHeaderBackClass, children: inner });
16496
+ }
16497
+ return /* @__PURE__ */ jsx("button", { type: "button", onClick, className: pageHeaderBackClass, children: inner });
16498
+ }
16499
+
16500
+ // src/components/detail-page/detailPageVariants.ts
16501
+ var detailPageBaseClass = "flex w-full flex-col gap-6";
16502
+ var detailPageBodyClass = "flex flex-col gap-6";
16503
+ var detailPageSkeletonRowClass = "h-5 w-full animate-pulse rounded-md bg-muted";
16504
+ var detailPageEmptyClass = "rounded-md border border-border bg-card";
16505
+ var DEFAULT_LABELS = {
16506
+ notFoundTitle: "Not found",
16507
+ notFoundDescription: "The record you\u2019re looking for does not exist or has been removed."
16508
+ };
16509
+ var DEFAULT_SKELETON_ROW_COUNT = 6;
16510
+ function DetailPage({
16511
+ title,
16512
+ description,
16513
+ back,
16514
+ actions,
16515
+ bordered = true,
16516
+ isLoading = false,
16517
+ loadingRowCount = DEFAULT_SKELETON_ROW_COUNT,
16518
+ notFound = false,
16519
+ notFoundState,
16520
+ labels: labelsProp,
16521
+ children,
16522
+ className,
16523
+ bodyClassName
16524
+ }) {
16525
+ const labels = { ...DEFAULT_LABELS, ...labelsProp };
16526
+ return /* @__PURE__ */ jsxs(
16527
+ "div",
16528
+ {
16529
+ "data-slot": "detail-page",
16530
+ "data-state": isLoading ? "loading" : notFound ? "not-found" : "ready",
16531
+ "aria-busy": isLoading || void 0,
16532
+ className: cn(detailPageBaseClass, className),
16533
+ children: [
16534
+ /* @__PURE__ */ jsx(
16535
+ PageHeader,
16536
+ {
16537
+ title,
16538
+ description,
16539
+ back,
16540
+ actions,
16541
+ bordered
16542
+ }
16543
+ ),
16544
+ isLoading ? /* @__PURE__ */ jsx(DetailPageSkeleton, { rowCount: loadingRowCount }) : notFound ? /* @__PURE__ */ jsx("div", { "data-slot": "detail-page-empty", "data-state": "not-found", className: detailPageEmptyClass, children: /* @__PURE__ */ jsx(
16545
+ EmptyState,
16546
+ {
16547
+ size: "lg",
16548
+ icon: notFoundState?.icon ?? /* @__PURE__ */ jsx(FileQuestion, {}),
16549
+ title: notFoundState?.title ?? labels.notFoundTitle,
16550
+ description: notFoundState?.description ?? labels.notFoundDescription,
16551
+ action: notFoundState?.action ?? null
16552
+ }
16553
+ ) }) : /* @__PURE__ */ jsx("div", { "data-slot": "detail-page-body", className: cn(detailPageBodyClass, bodyClassName), children })
16554
+ ]
16555
+ }
16556
+ );
16557
+ }
16558
+ function DetailPageSkeleton({ rowCount }) {
16559
+ const rows = Array.from({ length: Math.max(1, rowCount) }, (_, i) => `detail-page-skeleton-${i}`);
16560
+ return /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4", "aria-hidden": "true", children: rows.map((key) => /* @__PURE__ */ jsx(
16561
+ "div",
16562
+ {
16563
+ "data-testid": "detail-page-skeleton-row",
16564
+ className: detailPageSkeletonRowClass
16565
+ },
16566
+ key
16567
+ )) });
16568
+ }
16569
+
16570
+ // src/components/dialog/dialogVariants.ts
16571
+ var dialogOverlayClass = "fixed inset-0 z-50 bg-foreground/40 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0";
16572
+ var dialogContentClass = "fixed start-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border border-border bg-background p-6 text-foreground shadow-lg outline-none rtl:translate-x-1/2 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95";
16573
+ var dialogHeaderClass = "flex flex-col gap-1.5 text-start";
16574
+ var dialogTitleClass = "text-lg font-semibold text-foreground";
16575
+ var dialogDescriptionClass = "text-sm text-muted-foreground";
16576
+ var dialogFooterClass = "flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-end";
16577
+ var dialogCloseButtonClass = "absolute end-4 top-4 inline-flex size-7 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 disabled:pointer-events-none";
16578
+ var Dialog = RadixDialog.Root;
16579
+ var DialogTrigger = RadixDialog.Trigger;
16580
+ var DialogPortal = RadixDialog.Portal;
16581
+ var DialogClose = RadixDialog.Close;
16582
+ var DialogOverlay = forwardRef(function DialogOverlay2({ className, ...props }, ref) {
16583
+ return /* @__PURE__ */ jsx(
16584
+ RadixDialog.Overlay,
16585
+ {
16586
+ ref,
16587
+ "data-slot": "dialog-overlay",
16588
+ className: cn(dialogOverlayClass, className),
16589
+ ...props
16590
+ }
16591
+ );
16592
+ });
16593
+ var DialogContent = forwardRef(function DialogContent2({ className, children, showCloseButton = true, closeLabel = "Close", ...props }, ref) {
16594
+ return /* @__PURE__ */ jsxs(RadixDialog.Portal, { children: [
16595
+ /* @__PURE__ */ jsx(DialogOverlay, {}),
16596
+ /* @__PURE__ */ jsxs(
16597
+ RadixDialog.Content,
16598
+ {
16599
+ ref,
16600
+ "data-slot": "dialog-content",
16601
+ className: cn(dialogContentClass, className),
16602
+ ...props,
16603
+ children: [
16604
+ children,
16605
+ showCloseButton ? /* @__PURE__ */ jsx(
16606
+ RadixDialog.Close,
16607
+ {
16608
+ "aria-label": closeLabel,
16609
+ "data-slot": "dialog-close-button",
16610
+ className: dialogCloseButtonClass,
16611
+ children: /* @__PURE__ */ jsx(X, { className: "size-4", "aria-hidden": "true" })
16612
+ }
16613
+ ) : null
16614
+ ]
16615
+ }
16616
+ )
16617
+ ] });
16618
+ });
16619
+ function DialogHeader({ className, ...props }) {
16620
+ return /* @__PURE__ */ jsx("div", { "data-slot": "dialog-header", className: cn(dialogHeaderClass, className), ...props });
16621
+ }
16622
+ function DialogFooter({ className, ...props }) {
16623
+ return /* @__PURE__ */ jsx("div", { "data-slot": "dialog-footer", className: cn(dialogFooterClass, className), ...props });
16624
+ }
16625
+ var DialogTitle = forwardRef(function DialogTitle2({ className, ...props }, ref) {
16626
+ return /* @__PURE__ */ jsx(
16627
+ RadixDialog.Title,
16628
+ {
16629
+ ref,
16630
+ "data-slot": "dialog-title",
16631
+ className: cn(dialogTitleClass, className),
16632
+ ...props
16633
+ }
16634
+ );
16635
+ });
16636
+ var DialogDescription = forwardRef(function DialogDescription2({ className, ...props }, ref) {
16637
+ return /* @__PURE__ */ jsx(
16638
+ RadixDialog.Description,
16639
+ {
16640
+ ref,
16641
+ "data-slot": "dialog-description",
16642
+ className: cn(dialogDescriptionClass, className),
16643
+ ...props
16644
+ }
16645
+ );
16646
+ });
16647
+
16648
+ // src/components/dropdown-menu/dropdownMenuVariants.ts
16649
+ var dropdownMenuContentClass = "z-50 min-w-32 overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95";
16650
+ var dropdownMenuItemBaseClass = "relative flex w-full cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0";
16651
+ var dropdownMenuItemVariantClass = {
16652
+ default: "text-foreground data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground",
16653
+ destructive: "text-destructive data-[highlighted]:bg-destructive data-[highlighted]:text-destructive-foreground"
16654
+ };
16655
+ var dropdownMenuItemInsetClass = "ps-8";
16656
+ var dropdownMenuSeparatorClass = "-mx-1 my-1 h-px bg-border";
16657
+ var dropdownMenuLabelClass = "px-2 py-1.5 text-xs font-semibold text-muted-foreground select-none";
16658
+ var dropdownMenuShortcutClass = "ms-auto text-xs tracking-widest text-muted-foreground";
16659
+ var DropdownMenu = RadixDropdown.Root;
16660
+ var DropdownMenuTrigger = RadixDropdown.Trigger;
16661
+ var DropdownMenuGroup = RadixDropdown.Group;
16662
+ var DropdownMenuPortal = RadixDropdown.Portal;
16663
+ var DropdownMenuContent = forwardRef(function DropdownMenuContent2({ className, sideOffset = 4, ...props }, ref) {
16664
+ return /* @__PURE__ */ jsx(RadixDropdown.Portal, { children: /* @__PURE__ */ jsx(
16665
+ RadixDropdown.Content,
16666
+ {
16667
+ ref,
16668
+ sideOffset,
16669
+ "data-slot": "dropdown-menu-content",
16670
+ className: cn(dropdownMenuContentClass, className),
16671
+ ...props
16672
+ }
16673
+ ) });
16674
+ });
16675
+ var DropdownMenuItem = forwardRef(function DropdownMenuItem2({ className, variant = "default", inset = false, ...props }, ref) {
16676
+ return /* @__PURE__ */ jsx(
16677
+ RadixDropdown.Item,
16678
+ {
16679
+ ref,
16680
+ "data-slot": "dropdown-menu-item",
16681
+ "data-variant": variant,
16682
+ className: cn(
16683
+ dropdownMenuItemBaseClass,
16684
+ dropdownMenuItemVariantClass[variant],
16685
+ inset && dropdownMenuItemInsetClass,
16686
+ className
16687
+ ),
16688
+ ...props
16689
+ }
16690
+ );
16691
+ });
16692
+ var DropdownMenuSeparator = forwardRef(function DropdownMenuSeparator2({ className, ...props }, ref) {
16693
+ return /* @__PURE__ */ jsx(
16694
+ RadixDropdown.Separator,
16695
+ {
16696
+ ref,
16697
+ "data-slot": "dropdown-menu-separator",
16698
+ className: cn(dropdownMenuSeparatorClass, className),
16699
+ ...props
16700
+ }
16701
+ );
16702
+ });
16703
+ var DropdownMenuLabel = forwardRef(function DropdownMenuLabel2({ className, inset = false, ...props }, ref) {
16704
+ return /* @__PURE__ */ jsx(
16705
+ RadixDropdown.Label,
16706
+ {
16707
+ ref,
16708
+ "data-slot": "dropdown-menu-label",
16709
+ className: cn(dropdownMenuLabelClass, inset && dropdownMenuItemInsetClass, className),
16710
+ ...props
16711
+ }
16712
+ );
16713
+ });
16714
+ var DropdownMenuShortcut = forwardRef(
16715
+ function DropdownMenuShortcut2({ className, ...props }, ref) {
16716
+ return /* @__PURE__ */ jsx(
16717
+ "span",
16718
+ {
16719
+ ref,
16720
+ "data-slot": "dropdown-menu-shortcut",
16721
+ className: cn(dropdownMenuShortcutClass, className),
16722
+ ...props
16723
+ }
16724
+ );
16725
+ }
16726
+ );
16509
16727
  function Field(props) {
16510
16728
  const formContext = useFormContext();
16511
16729
  if (props.name !== void 0) {
@@ -16635,81 +16853,12 @@ function mergeRefs2(...refs) {
16635
16853
  };
16636
16854
  }
16637
16855
 
16638
- // src/components/page-header/PageHeader.tsx
16639
- var import_react_router_dom2 = __toESM(require_dist2());
16640
-
16641
- // src/components/page-header/pageHeaderVariants.ts
16642
- var pageHeaderBaseClass = "flex w-full flex-col gap-3";
16643
- var pageHeaderBorderedClass = "border-b border-border pb-4";
16644
- var pageHeaderTitleRowClass = "flex flex-wrap items-start justify-between gap-3 sm:gap-4";
16645
- var pageHeaderTitleBlockClass = "min-w-0 flex-1 space-y-1";
16646
- var pageHeaderTitleClass = "text-2xl font-semibold tracking-tight text-foreground";
16647
- var pageHeaderDescriptionClass = "text-sm text-muted-foreground";
16648
- var pageHeaderActionsClass = "flex shrink-0 flex-wrap items-center gap-2";
16649
- var pageHeaderBackClass = "inline-flex items-center gap-1.5 self-start text-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-2 focus-visible:ring-offset-background rounded-md";
16650
- var pageHeaderBackIconClass = "size-4 shrink-0 rtl:rotate-180";
16651
- var pageHeaderBreadcrumbsClass = "text-xs text-muted-foreground";
16652
- var PageHeader = forwardRef(function PageHeader2({
16653
- title,
16654
- description,
16655
- breadcrumbs,
16656
- back,
16657
- actions,
16658
- as = "h1",
16659
- bordered = false,
16660
- className,
16661
- ...props
16662
- }, ref) {
16663
- return /* @__PURE__ */ jsxs(
16664
- "header",
16665
- {
16666
- ref,
16667
- "data-slot": "page-header",
16668
- className: cn(pageHeaderBaseClass, bordered && pageHeaderBorderedClass, className),
16669
- ...props,
16670
- children: [
16671
- breadcrumbs ? /* @__PURE__ */ jsx("div", { "data-slot": "page-header-breadcrumbs", className: pageHeaderBreadcrumbsClass, children: breadcrumbs }) : null,
16672
- back ? /* @__PURE__ */ jsx(PageHeaderBack, { ...back }) : null,
16673
- /* @__PURE__ */ jsxs("div", { "data-slot": "page-header-row", className: pageHeaderTitleRowClass, children: [
16674
- /* @__PURE__ */ jsxs("div", { className: pageHeaderTitleBlockClass, children: [
16675
- createElement(
16676
- as,
16677
- { "data-slot": "page-header-title", className: pageHeaderTitleClass },
16678
- title
16679
- ),
16680
- description ? /* @__PURE__ */ jsx("p", { "data-slot": "page-header-description", className: pageHeaderDescriptionClass, children: description }) : null
16681
- ] }),
16682
- actions ? /* @__PURE__ */ jsx("div", { "data-slot": "page-header-actions", className: pageHeaderActionsClass, children: actions }) : null
16683
- ] })
16684
- ]
16685
- }
16686
- );
16687
- });
16688
- function PageHeaderBack({ label = "Back", to, onClick, render }) {
16689
- const inner = /* @__PURE__ */ jsxs(Fragment, { children: [
16690
- /* @__PURE__ */ jsx(ArrowLeft, { className: pageHeaderBackIconClass, "aria-hidden": "true" }),
16691
- /* @__PURE__ */ jsx("span", { children: label })
16692
- ] });
16693
- if (render) {
16694
- return render({
16695
- to,
16696
- onClick,
16697
- className: pageHeaderBackClass,
16698
- children: inner
16699
- });
16700
- }
16701
- if (to) {
16702
- return /* @__PURE__ */ jsx(import_react_router_dom2.Link, { to, onClick, className: pageHeaderBackClass, children: inner });
16703
- }
16704
- return /* @__PURE__ */ jsx("button", { type: "button", onClick, className: pageHeaderBackClass, children: inner });
16705
- }
16706
-
16707
16856
  // src/components/form-page/formPageVariants.ts
16708
16857
  var formPageBaseClass = "flex w-full flex-col gap-6";
16709
16858
  var formPageBodyClass = "flex-1";
16710
16859
  var formPageActionsBarClass = "sticky bottom-0 -mx-6 -mb-6 mt-6 flex items-center justify-end gap-2 border-t border-border bg-background/95 px-6 py-3 backdrop-blur supports-[backdrop-filter]:bg-background/80";
16711
16860
  var formPageSkeletonRowClass = "h-10 w-full animate-pulse rounded-md bg-muted";
16712
- var DEFAULT_SKELETON_ROW_COUNT = 6;
16861
+ var DEFAULT_SKELETON_ROW_COUNT2 = 6;
16713
16862
  function FormPage({
16714
16863
  title,
16715
16864
  description,
@@ -16717,7 +16866,7 @@ function FormPage({
16717
16866
  bordered = true,
16718
16867
  onSubmit,
16719
16868
  isLoading = false,
16720
- loadingRowCount = DEFAULT_SKELETON_ROW_COUNT,
16869
+ loadingRowCount = DEFAULT_SKELETON_ROW_COUNT2,
16721
16870
  actions,
16722
16871
  children,
16723
16872
  className,
@@ -17482,7 +17631,7 @@ function SortIndicator({ active, direction }) {
17482
17631
  if (!active) return /* @__PURE__ */ jsx(ChevronsUpDown, { "aria-hidden": "true", className });
17483
17632
  return direction === "asc" ? /* @__PURE__ */ jsx(ChevronUp, { "aria-hidden": "true", className }) : /* @__PURE__ */ jsx(ChevronDown, { "aria-hidden": "true", className });
17484
17633
  }
17485
- var DEFAULT_LABELS = {
17634
+ var DEFAULT_LABELS2 = {
17486
17635
  searchPlaceholder: "Search\u2026",
17487
17636
  searchAriaLabel: "Search",
17488
17637
  reset: "Reset filters",
@@ -17515,7 +17664,7 @@ function ListPage({
17515
17664
  labels: labelsProp,
17516
17665
  className
17517
17666
  }) {
17518
- const labels = { ...DEFAULT_LABELS, ...labelsProp };
17667
+ const labels = { ...DEFAULT_LABELS2, ...labelsProp };
17519
17668
  const initialFilterValues = useMemo(() => {
17520
17669
  const init = {};
17521
17670
  for (const f of filters ?? []) {
@@ -17944,6 +18093,6 @@ react-router-dom/dist/index.js:
17944
18093
  *)
17945
18094
  */
17946
18095
 
17947
- export { AppShell, Avatar, Badge, Button, Checkbox, DashboardContent, DashboardHeader, DashboardLayout, DashboardMain, DatePicker, DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuTrigger, EmptyState, Field, FormPage, HeaderActions, HeaderCollapseTrigger, HeaderMobileTrigger, HeaderSearch, HeaderTitle, Input, LanguageSwitcher, ListPage, PageHeader, RadioGroup, RadioGroupItem, Select, Sidebar, SidebarFooter, SidebarGroup, SidebarHeader, SidebarNav, SidebarNavGroup, SidebarNavItem, Switch, Table, Textarea, badgeBaseClass, badgeDotSizeClass, badgeSizeClass, badgeVariantClass, buttonBaseClass, buttonSizeClass, buttonVariantClass, cn, datePickerCalendarClass, datePickerCaptionClass, datePickerContentClass, datePickerDayBaseClass, datePickerDayWrapperClass, datePickerDisabledClass, datePickerMonthClass, datePickerMonthGridClass, datePickerMonthsClass, datePickerNavButtonClass, datePickerNavClass, datePickerOutsideClass, datePickerPlaceholderClass, datePickerSelectedClass, datePickerTodayClass, datePickerTriggerBaseClass, datePickerTriggerSizeClass, datePickerTriggerVariantClass, datePickerValueClass, datePickerWeekClass, datePickerWeekdayClass, datePickerWeekdaysClass, dropdownMenuContentClass, dropdownMenuItemBaseClass, dropdownMenuItemInsetClass, dropdownMenuItemVariantClass, dropdownMenuLabelClass, dropdownMenuSeparatorClass, dropdownMenuShortcutClass, emptyStateActionsSpacingClass, emptyStateBaseClass, emptyStateContainerSizeClass, emptyStateDescriptionSizeClass, emptyStateIconWrapperBaseClass, emptyStateIconWrapperSizeClass, emptyStateTitleSizeClass, formPageActionsBarClass, formPageBaseClass, formPageBodyClass, formPageSkeletonRowClass, inputBaseClass, inputSizeClass, inputVariantClass, pageHeaderActionsClass, pageHeaderBackClass, pageHeaderBackIconClass, pageHeaderBaseClass, pageHeaderBorderedClass, pageHeaderBreadcrumbsClass, pageHeaderDescriptionClass, pageHeaderTitleBlockClass, pageHeaderTitleClass, pageHeaderTitleRowClass, radioGroupBaseClass, radioGroupOrientationClass, radioIndicatorBaseClass, radioIndicatorDotClass, radioIndicatorSizeClass, radioItemBaseClass, radioItemSizeClass, radioLabelSizeClass, radioOptionRowClass, selectBaseClass, selectSizeClass, selectVariantClass, switchThumbBaseClass, switchThumbClass, switchTrackBaseClass, switchTrackClass, alignClass as tableAlignClass, tableBaseClass, selectedRowClass as tableSelectedRowClass, tableSizeClass, sortIconClass as tableSortIconClass, textareaBaseClass, textareaResizeClass, textareaSizeClass, textareaVariantClass, useDashboardLayout, useDirection };
18096
+ export { AppShell, Avatar, Badge, Button, Checkbox, DashboardContent, DashboardHeader, DashboardLayout, DashboardMain, DatePicker, DetailPage, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuTrigger, EmptyState, Field, FormPage, HeaderActions, HeaderCollapseTrigger, HeaderMobileTrigger, HeaderSearch, HeaderTitle, Input, LanguageSwitcher, ListPage, PageHeader, RadioGroup, RadioGroupItem, Select, Sidebar, SidebarFooter, SidebarGroup, SidebarHeader, SidebarNav, SidebarNavGroup, SidebarNavItem, Switch, Table, Textarea, badgeBaseClass, badgeDotSizeClass, badgeSizeClass, badgeVariantClass, buttonBaseClass, buttonSizeClass, buttonVariantClass, cn, datePickerCalendarClass, datePickerCaptionClass, datePickerContentClass, datePickerDayBaseClass, datePickerDayWrapperClass, datePickerDisabledClass, datePickerMonthClass, datePickerMonthGridClass, datePickerMonthsClass, datePickerNavButtonClass, datePickerNavClass, datePickerOutsideClass, datePickerPlaceholderClass, datePickerSelectedClass, datePickerTodayClass, datePickerTriggerBaseClass, datePickerTriggerSizeClass, datePickerTriggerVariantClass, datePickerValueClass, datePickerWeekClass, datePickerWeekdayClass, datePickerWeekdaysClass, detailPageBaseClass, detailPageBodyClass, detailPageEmptyClass, detailPageSkeletonRowClass, dialogCloseButtonClass, dialogContentClass, dialogDescriptionClass, dialogFooterClass, dialogHeaderClass, dialogOverlayClass, dialogTitleClass, dropdownMenuContentClass, dropdownMenuItemBaseClass, dropdownMenuItemInsetClass, dropdownMenuItemVariantClass, dropdownMenuLabelClass, dropdownMenuSeparatorClass, dropdownMenuShortcutClass, emptyStateActionsSpacingClass, emptyStateBaseClass, emptyStateContainerSizeClass, emptyStateDescriptionSizeClass, emptyStateIconWrapperBaseClass, emptyStateIconWrapperSizeClass, emptyStateTitleSizeClass, formPageActionsBarClass, formPageBaseClass, formPageBodyClass, formPageSkeletonRowClass, inputBaseClass, inputSizeClass, inputVariantClass, pageHeaderActionsClass, pageHeaderBackClass, pageHeaderBackIconClass, pageHeaderBaseClass, pageHeaderBorderedClass, pageHeaderBreadcrumbsClass, pageHeaderDescriptionClass, pageHeaderTitleBlockClass, pageHeaderTitleClass, pageHeaderTitleRowClass, radioGroupBaseClass, radioGroupOrientationClass, radioIndicatorBaseClass, radioIndicatorDotClass, radioIndicatorSizeClass, radioItemBaseClass, radioItemSizeClass, radioLabelSizeClass, radioOptionRowClass, selectBaseClass, selectSizeClass, selectVariantClass, switchThumbBaseClass, switchThumbClass, switchTrackBaseClass, switchTrackClass, alignClass as tableAlignClass, tableBaseClass, selectedRowClass as tableSelectedRowClass, tableSizeClass, sortIconClass as tableSortIconClass, textareaBaseClass, textareaResizeClass, textareaSizeClass, textareaVariantClass, useDashboardLayout, useDirection };
17948
18097
  //# sourceMappingURL=index.js.map
17949
18098
  //# sourceMappingURL=index.js.map