@cloudvoyant/helix 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -99,6 +99,13 @@ __export(index_exports, {
99
99
  numberInputInputBase: () => numberInputInputBase,
100
100
  numberInputRootBase: () => numberInputRootBase,
101
101
  numberInputTriggerBase: () => numberInputTriggerBase,
102
+ pageContentBase: () => pageContentBase,
103
+ pageFooterBase: () => pageFooterBase,
104
+ pageGutterAreaBase: () => pageGutterAreaBase,
105
+ pageGutterContentVariants: () => pageGutterContentVariants,
106
+ pageGutterVariants: () => pageGutterVariants,
107
+ pageSectionBase: () => pageSectionBase,
108
+ pageVariants: () => pageVariants,
102
109
  paginationEllipsisBase: () => paginationEllipsisBase,
103
110
  paginationItemBase: () => paginationItemBase,
104
111
  paginationRootBase: () => paginationRootBase,
@@ -409,6 +416,53 @@ var scrollScrollbarBase = "relative m-[var(--scrollbar-margin)] flex touch-none
409
416
  var scrollThumbBase = "rounded-[inherit] bg-border/40 transition-colors data-[orientation=vertical]:w-full data-[orientation=horizontal]:h-full";
410
417
  var scrollCornerBase = "m-[var(--scrollbar-margin)] bg-muted opacity-0 transition-opacity duration-150 data-[hover]:opacity-100";
411
418
 
419
+ // src/page.ts
420
+ var import_class_variance_authority6 = require("class-variance-authority");
421
+
422
+ // src/cn.ts
423
+ var import_clsx = require("clsx");
424
+ var import_tailwind_merge = require("tailwind-merge");
425
+ function cn(...inputs) {
426
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
427
+ }
428
+
429
+ // src/page.ts
430
+ var pageVariants = (0, import_class_variance_authority6.cva)("min-h-svh w-full", {
431
+ variants: {
432
+ variant: {
433
+ default: 'grid grid-cols-[auto_minmax(0,1fr)_auto] grid-rows-[minmax(100svh,1fr)_auto] [grid-template-areas:"left_content_right"_"footer_footer_footer"]',
434
+ landing: colBase
435
+ }
436
+ },
437
+ defaultVariants: { variant: "default" }
438
+ });
439
+ var pageGutterAreaBase = "h-full min-w-0 [grid-area:left]";
440
+ var pageGutterVariants = (0, import_class_variance_authority6.cva)(
441
+ "sticky top-0 h-svh w-4 shrink-0 overflow-hidden p-0.5 md:w-56 md:p-2 lg:w-72 lg:p-3",
442
+ {
443
+ variants: {
444
+ side: {
445
+ left: "",
446
+ right: ""
447
+ }
448
+ },
449
+ defaultVariants: { side: "left" }
450
+ }
451
+ );
452
+ var pageGutterContentVariants = (0, import_class_variance_authority6.cva)("hidden h-full w-full flex-col md:flex", {
453
+ variants: {
454
+ align: {
455
+ start: "justify-start",
456
+ center: "justify-center",
457
+ end: "justify-end"
458
+ }
459
+ },
460
+ defaultVariants: { align: "start" }
461
+ });
462
+ var pageContentBase = "min-w-0 [grid-area:content]";
463
+ var pageFooterBase = "w-full shrink-0 [grid-area:footer]";
464
+ var pageSectionBase = cn(colBase, "min-h-svh w-full");
465
+
412
466
  // src/splitter.ts
413
467
  var splitterRootBase = "";
414
468
  var splitterPanelBase = "";
@@ -417,12 +471,12 @@ var splitterResizeTriggerSeparatorBase = "absolute bg-border group-data-[orienta
417
471
  var splitterResizeTriggerIndicatorBase = "relative z-10 rounded-full border border-border bg-muted shadow-xs data-[dragging]:bg-muted-foreground data-[focus]:bg-accent data-[disabled]:hidden data-[orientation=horizontal]:h-6 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-6";
418
472
 
419
473
  // src/sidebar.ts
420
- var import_class_variance_authority6 = require("class-variance-authority");
474
+ var import_class_variance_authority7 = require("class-variance-authority");
421
475
  var SIDEBAR_WIDTH = "16rem";
422
476
  var SIDEBAR_WIDTH_MOBILE = "18rem";
423
477
  var SIDEBAR_WIDTH_ICON = "3rem";
424
478
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
425
- var sidebarMenuButtonVariants = (0, import_class_variance_authority6.cva)(
479
+ var sidebarMenuButtonVariants = (0, import_class_variance_authority7.cva)(
426
480
  "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
427
481
  {
428
482
  variants: {
@@ -475,11 +529,11 @@ var sidebarStyles = {
475
529
  };
476
530
 
477
531
  // src/navbar-menu.ts
478
- var import_class_variance_authority7 = require("class-variance-authority");
532
+ var import_class_variance_authority8 = require("class-variance-authority");
479
533
  var navbarMenuRootBase = "group/nav-menu relative flex max-w-max flex-1 items-center justify-center";
480
534
  var navbarMenuListBase = "group flex flex-1 list-none items-center justify-center gap-1";
481
535
  var navbarMenuItemBase = "relative";
482
- var navbarMenuTriggerStyle = (0, import_class_variance_authority7.cva)(
536
+ var navbarMenuTriggerStyle = (0, import_class_variance_authority8.cva)(
483
537
  "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-3 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent",
484
538
  {
485
539
  variants: {
@@ -504,10 +558,10 @@ var navbarMenuViewportBase = "absolute left-(--viewport-x) top-0 mt-1.5 h-(--vie
504
558
  var navbarMenuIndicatorBase = "data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-50 flex h-1.5 items-end justify-center overflow-hidden";
505
559
 
506
560
  // src/tabs.ts
507
- var import_class_variance_authority8 = require("class-variance-authority");
561
+ var import_class_variance_authority9 = require("class-variance-authority");
508
562
  var tabsRootBase = "flex flex-col gap-2 data-[orientation=vertical]:flex-row";
509
563
  var tabsListBase = "relative z-0 flex w-fit items-center justify-center gap-x-0.5 text-muted-foreground data-[orientation=vertical]:flex-col";
510
- var tabsListVariants = (0, import_class_variance_authority8.cva)("", {
564
+ var tabsListVariants = (0, import_class_variance_authority9.cva)("", {
511
565
  variants: {
512
566
  variant: {
513
567
  default: "rounded-lg",
@@ -519,7 +573,7 @@ var tabsListVariants = (0, import_class_variance_authority8.cva)("", {
519
573
  }
520
574
  });
521
575
  var tabsIndicatorBase = "absolute inset-x-0 bottom-0 h-(--height) w-(--width) transition-[width,translate] duration-200 ease-in-out motion-reduce:transition-none";
522
- var tabsIndicatorVariants = (0, import_class_variance_authority8.cva)("", {
576
+ var tabsIndicatorVariants = (0, import_class_variance_authority9.cva)("", {
523
577
  variants: {
524
578
  variant: {
525
579
  default: "-z-1 rounded-lg bg-accent",
@@ -540,8 +594,8 @@ var paginationItemBase = "inline-flex h-9 min-w-9 items-center justify-center wh
540
594
  var paginationEllipsisBase = "flex h-8 w-12 items-end justify-center text-muted-foreground pointer-events-none select-none [&_svg]:size-4";
541
595
 
542
596
  // src/navbar.ts
543
- var import_class_variance_authority9 = require("class-variance-authority");
544
- var navbarVariants = (0, import_class_variance_authority9.cva)(
597
+ var import_class_variance_authority10 = require("class-variance-authority");
598
+ var navbarVariants = (0, import_class_variance_authority10.cva)(
545
599
  "w-full bg-background/80 backdrop-blur transition-[box-shadow,height,translate] duration-300",
546
600
  {
547
601
  variants: {
@@ -563,7 +617,7 @@ var navbarVariants = (0, import_class_variance_authority9.cva)(
563
617
  }
564
618
  );
565
619
  var navbarContainerBase = "flex items-center justify-between transition-[height,gap,padding] duration-300";
566
- var navbarDensityVariants = (0, import_class_variance_authority9.cva)("", {
620
+ var navbarDensityVariants = (0, import_class_variance_authority10.cva)("", {
567
621
  variants: {
568
622
  density: {
569
623
  relaxed: "h-16 gap-4 px-4 md:px-6",
@@ -577,7 +631,7 @@ var navbarDensityVariants = (0, import_class_variance_authority9.cva)("", {
577
631
  var navbarShrunkBase = "h-12";
578
632
  var navbarBrandBase = "flex shrink-0 items-center gap-2";
579
633
  var navbarMenuBase = "hidden items-center md:flex";
580
- var navbarMenuPlacementVariants = (0, import_class_variance_authority9.cva)("", {
634
+ var navbarMenuPlacementVariants = (0, import_class_variance_authority10.cva)("", {
581
635
  variants: {
582
636
  placement: {
583
637
  left: "justify-start",
@@ -590,7 +644,7 @@ var navbarMenuPlacementVariants = (0, import_class_variance_authority9.cva)("",
590
644
  }
591
645
  });
592
646
  var navbarActionsBase = "ml-auto hidden items-center gap-2 md:flex";
593
- var navbarTriggerVariants = (0, import_class_variance_authority9.cva)(
647
+ var navbarTriggerVariants = (0, import_class_variance_authority10.cva)(
594
648
  "inline-flex h-9 w-9 items-center justify-center text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
595
649
  {
596
650
  variants: {
@@ -669,13 +723,6 @@ var THEMES = [
669
723
  ];
670
724
  var THEME_NAMES = THEMES.map((t) => t.name);
671
725
 
672
- // src/cn.ts
673
- var import_clsx = require("clsx");
674
- var import_tailwind_merge = require("tailwind-merge");
675
- function cn(...inputs) {
676
- return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
677
- }
678
-
679
726
  // src/field.ts
680
727
  var fieldRootBase = "flex w-full flex-col gap-2 data-invalid:text-destructive";
681
728
  var fieldLabelBase = "flex w-fit select-none items-center gap-1 text-sm font-medium leading-none text-foreground";
@@ -688,8 +735,8 @@ var fieldsetHelperBase = "text-sm text-muted-foreground";
688
735
  var fieldsetErrorBase = "text-sm text-destructive";
689
736
 
690
737
  // src/input.ts
691
- var import_class_variance_authority10 = require("class-variance-authority");
692
- var inputVariants = (0, import_class_variance_authority10.cva)(
738
+ var import_class_variance_authority11 = require("class-variance-authority");
739
+ var inputVariants = (0, import_class_variance_authority11.cva)(
693
740
  "flex w-full min-w-0 rounded-md border border-input bg-transparent px-3 text-sm shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/24 data-invalid:border-destructive data-invalid:ring-[3px] data-invalid:ring-destructive/24",
694
741
  {
695
742
  variants: {
@@ -715,8 +762,8 @@ var numberInputInputBase = "h-9 w-full min-w-0 flex-1 border-0 bg-transparent px
715
762
  var numberInputTriggerBase = "flex size-9 shrink-0 items-center justify-center text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0";
716
763
 
717
764
  // src/checkbox.ts
718
- var import_class_variance_authority11 = require("class-variance-authority");
719
- var checkboxVariants = (0, import_class_variance_authority11.cva)(
765
+ var import_class_variance_authority12 = require("class-variance-authority");
766
+ var checkboxVariants = (0, import_class_variance_authority12.cva)(
720
767
  "relative inline-flex size-4 shrink-0 items-center justify-center rounded-sm border border-input bg-transparent shadow-xs transition-shadow focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/30 focus-visible:ring-offset-1 focus-visible:ring-offset-background data-invalid:border-destructive data-invalid:ring-[3px] data-invalid:ring-destructive/24 disabled:pointer-events-none disabled:opacity-50",
721
768
  {
722
769
  variants: {
@@ -736,8 +783,8 @@ var checkboxLabelBase = "select-none text-sm font-medium leading-none";
736
783
  var checkboxGroupBase = "flex flex-col gap-2";
737
784
 
738
785
  // src/switch.ts
739
- var import_class_variance_authority12 = require("class-variance-authority");
740
- var switchVariants = (0, import_class_variance_authority12.cva)(
786
+ var import_class_variance_authority13 = require("class-variance-authority");
787
+ var switchVariants = (0, import_class_variance_authority13.cva)(
741
788
  "inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border border-transparent bg-input p-0.5 shadow-xs transition-colors outline-none data-[state=checked]:bg-primary data-invalid:border-destructive data-invalid:ring-[3px] data-invalid:ring-destructive/24 focus-visible:ring-[3px] focus-visible:ring-ring/30 disabled:pointer-events-none disabled:opacity-50",
742
789
  {
743
790
  variants: {
@@ -757,7 +804,7 @@ var switchThumbBase = "pointer-events-none block aspect-square h-full w-auto rou
757
804
  var switchLabelBase = "select-none text-sm font-medium leading-none";
758
805
 
759
806
  // src/select.ts
760
- var import_class_variance_authority13 = require("class-variance-authority");
807
+ var import_class_variance_authority14 = require("class-variance-authority");
761
808
  var selectTriggerBase = "flex w-fit cursor-default items-center gap-2 whitespace-nowrap data-[placeholder-shown]:text-muted-foreground data-[state=open]:border-ring data-[state=open]:ring-[3px] data-[state=open]:ring-ring/30 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground";
762
809
  var selectValueBase = "flex min-w-0 items-center gap-2 truncate";
763
810
  var selectIndicatorBase = "flex items-center justify-center text-muted-foreground";
@@ -768,7 +815,7 @@ var selectItemGroupLabelBase = "px-2 py-1.5 text-xs font-semibold text-muted-for
768
815
  var selectItemBase = "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 pe-8 text-sm outline-none data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground";
769
816
  var selectItemTextBase = "flex w-full flex-1 items-center gap-2";
770
817
  var selectItemIndicatorBase = "absolute inset-y-0 end-2 flex items-center justify-center text-foreground";
771
- var nativeSelectVariants = (0, import_class_variance_authority13.cva)(
818
+ var nativeSelectVariants = (0, import_class_variance_authority14.cva)(
772
819
  "appearance-none w-full min-w-0 rounded-md border border-input bg-transparent pe-8 ps-2.5 text-sm shadow-xs transition-colors outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/24",
773
820
  {
774
821
  variants: {
@@ -787,7 +834,7 @@ var nativeSelectWrapperBase = "relative w-fit [&_svg]:pointer-events-none [&_svg
787
834
  var nativeSelectIconBase = "pointer-events-none absolute inset-y-0 end-2.5 flex items-center justify-center text-muted-foreground";
788
835
 
789
836
  // src/combobox.ts
790
- var import_class_variance_authority14 = require("class-variance-authority");
837
+ var import_class_variance_authority15 = require("class-variance-authority");
791
838
  var comboboxControlBase = "relative flex w-full flex-wrap items-center gap-1";
792
839
  var comboboxInputBase = "pe-8";
793
840
  var comboboxTriggerBase = "absolute inset-y-0 end-1 flex w-8 items-center justify-center text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0";
@@ -795,7 +842,7 @@ var comboboxClearTriggerBase = "absolute inset-y-0 end-9 flex items-center justi
795
842
  var comboboxPositionerBase = "z-50";
796
843
  var comboboxContentBase = "relative z-50 max-h-96 min-w-48 overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md outline-none";
797
844
  var comboboxItemGroupLabelBase = "px-2 py-1.5 text-xs font-semibold text-muted-foreground";
798
- var comboboxItemVariants = (0, import_class_variance_authority14.cva)(
845
+ var comboboxItemVariants = (0, import_class_variance_authority15.cva)(
799
846
  "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground",
800
847
  {
801
848
  variants: {
@@ -903,6 +950,13 @@ var tagsInputClearTriggerBase = "ms-auto flex shrink-0 items-center justify-cent
903
950
  numberInputInputBase,
904
951
  numberInputRootBase,
905
952
  numberInputTriggerBase,
953
+ pageContentBase,
954
+ pageFooterBase,
955
+ pageGutterAreaBase,
956
+ pageGutterContentVariants,
957
+ pageGutterVariants,
958
+ pageSectionBase,
959
+ pageVariants,
906
960
  paginationEllipsisBase,
907
961
  paginationItemBase,
908
962
  paginationRootBase,
package/dist/index.d.cts CHANGED
@@ -91,6 +91,23 @@ declare const scrollScrollbarBase = "relative m-[var(--scrollbar-margin)] flex t
91
91
  declare const scrollThumbBase = "rounded-[inherit] bg-border/40 transition-colors data-[orientation=vertical]:w-full data-[orientation=horizontal]:h-full";
92
92
  declare const scrollCornerBase = "m-[var(--scrollbar-margin)] bg-muted opacity-0 transition-opacity duration-150 data-[hover]:opacity-100";
93
93
 
94
+ declare const pageVariants: (props?: ({
95
+ variant?: "default" | "landing" | null | undefined;
96
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
97
+ declare const pageGutterAreaBase = "h-full min-w-0 [grid-area:left]";
98
+ declare const pageGutterVariants: (props?: ({
99
+ side?: "left" | "right" | null | undefined;
100
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
101
+ declare const pageGutterContentVariants: (props?: ({
102
+ align?: "start" | "center" | "end" | null | undefined;
103
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
104
+ declare const pageContentBase = "min-w-0 [grid-area:content]";
105
+ declare const pageFooterBase = "w-full shrink-0 [grid-area:footer]";
106
+ declare const pageSectionBase: string;
107
+ type PageVariants = VariantProps<typeof pageVariants>;
108
+ type PageGutterVariants = VariantProps<typeof pageGutterVariants>;
109
+ type PageGutterContentVariants = VariantProps<typeof pageGutterContentVariants>;
110
+
94
111
  /**
95
112
  * Intentionally empty: Ark UI sets `display`/`flex-direction` on the root and
96
113
  * the panel's `height`/`width: 100%`, `overflow`, and flex sizing inline.
@@ -203,7 +220,7 @@ declare const navbarShrunkBase = "h-12";
203
220
  declare const navbarBrandBase = "flex shrink-0 items-center gap-2";
204
221
  declare const navbarMenuBase = "hidden items-center md:flex";
205
222
  declare const navbarMenuPlacementVariants: (props?: ({
206
- placement?: "left" | "center" | "right" | null | undefined;
223
+ placement?: "left" | "right" | "center" | null | undefined;
207
224
  } & class_variance_authority_types.ClassProp) | undefined) => string;
208
225
  declare const navbarActionsBase = "ml-auto hidden items-center gap-2 md:flex";
209
226
  declare const navbarTriggerVariants: (props?: ({
@@ -336,4 +353,4 @@ interface TagsInputProps {
336
353
  className?: string;
337
354
  }
338
355
 
339
- export { type BadgeProps, type BadgeVariants, type ButtonProps, type ButtonVariants, type CardCoverProps, type CardProps, type CardVariants, type CheckboxProps, type CheckboxVariants, type ComboboxItemVariants, type ComboboxProps, type InputProps, type InputVariants, type ItemProps, type ItemVariants, type NativeSelectVariants, type NavbarDensity, type NavbarMenuDensity, type NavbarMenuVariant, type NavbarVariant, type NumberInputProps, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, type SelectItemData, type SelectProps, type SidebarContextProps, type SidebarMenuButtonVariants, type SwitchProps, type SwitchVariants, THEMES, THEME_NAMES, type TabsIndicatorVariants, type TabsListVariants, type TagsInputProps, type TextareaProps, type ThemeMeta, type ToggleButtonProps, type ToggleButtonVariants, badgeVariants, buttonVariants, cardBodyBase, cardCoverVariants, cardDescriptionBase, cardFooterBase, cardHeaderBase, cardTitleBase, cardVariants, centerBase, checkboxGroupBase, checkboxIndicatorBase, checkboxLabelBase, checkboxVariants, cn, colBase, comboboxClearTriggerBase, comboboxContentBase, comboboxControlBase, comboboxEmptyBase, comboboxInputBase, comboboxItemGroupLabelBase, comboboxItemIndicatorBase, comboboxItemVariants, comboboxListBase, comboboxPositionerBase, comboboxTriggerBase, containerBase, fieldErrorBase, fieldHelperBase, fieldLabelBase, fieldRequiredIndicatorBase, fieldRootBase, fieldsetErrorBase, fieldsetHelperBase, fieldsetLegendBase, fieldsetRootBase, hstackBase, inputVariants, itemVariants, nativeSelectIconBase, nativeSelectVariants, nativeSelectWrapperBase, navbarActionsBase, navbarActivationAreaBase, navbarBrandBase, navbarContainerBase, navbarDensityVariants, navbarMenuBase, navbarMenuContentBase, navbarMenuIndicatorBase, navbarMenuItemBase, navbarMenuLinkBase, navbarMenuListBase, navbarMenuPlacementVariants, navbarMenuRootBase, navbarMenuTriggerStyle, navbarMenuViewportBase, navbarMenuViewportPositionerBase, navbarMobileActionsBase, navbarMobileBase, navbarMobileContentBase, navbarMobileHeaderBase, navbarMobileMenuBase, navbarMobileMenuContentBase, navbarMobileMenuTriggerBase, navbarShrunkBase, navbarTriggerVariants, navbarVariants, numberInputControlBase, numberInputInputBase, numberInputRootBase, numberInputTriggerBase, paginationEllipsisBase, paginationItemBase, paginationRootBase, paginationTriggerBase, rowBase, scrollContentBase, scrollCornerBase, scrollRootBase, scrollScrollbarBase, scrollThumbBase, scrollViewportBase, selectClearTriggerBase, selectContentBase, selectIndicatorBase, selectItemBase, selectItemGroupLabelBase, selectItemIndicatorBase, selectItemTextBase, selectPositionerBase, selectTriggerBase, selectValueBase, sidebarMenuButtonVariants, sidebarStyles, splitterPanelBase, splitterResizeTriggerBase, splitterResizeTriggerIndicatorBase, splitterResizeTriggerSeparatorBase, splitterRootBase, stackBase, switchControlBase, switchLabelBase, switchThumbBase, switchVariants, tabsContentBase, tabsIndicatorBase, tabsIndicatorVariants, tabsListBase, tabsListVariants, tabsRootBase, tabsTriggerBase, tagsInputClearTriggerBase, tagsInputControlBase, tagsInputInputBase, tagsInputItemBase, tagsInputItemDeleteTriggerBase, tagsInputItemInputBase, tagsInputItemTextBase, tagsInputRootBase, textareaBase, toggleButtonVariants, vstackBase };
356
+ export { type BadgeProps, type BadgeVariants, type ButtonProps, type ButtonVariants, type CardCoverProps, type CardProps, type CardVariants, type CheckboxProps, type CheckboxVariants, type ComboboxItemVariants, type ComboboxProps, type InputProps, type InputVariants, type ItemProps, type ItemVariants, type NativeSelectVariants, type NavbarDensity, type NavbarMenuDensity, type NavbarMenuVariant, type NavbarVariant, type NumberInputProps, type PageGutterContentVariants, type PageGutterVariants, type PageVariants, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, type SelectItemData, type SelectProps, type SidebarContextProps, type SidebarMenuButtonVariants, type SwitchProps, type SwitchVariants, THEMES, THEME_NAMES, type TabsIndicatorVariants, type TabsListVariants, type TagsInputProps, type TextareaProps, type ThemeMeta, type ToggleButtonProps, type ToggleButtonVariants, badgeVariants, buttonVariants, cardBodyBase, cardCoverVariants, cardDescriptionBase, cardFooterBase, cardHeaderBase, cardTitleBase, cardVariants, centerBase, checkboxGroupBase, checkboxIndicatorBase, checkboxLabelBase, checkboxVariants, cn, colBase, comboboxClearTriggerBase, comboboxContentBase, comboboxControlBase, comboboxEmptyBase, comboboxInputBase, comboboxItemGroupLabelBase, comboboxItemIndicatorBase, comboboxItemVariants, comboboxListBase, comboboxPositionerBase, comboboxTriggerBase, containerBase, fieldErrorBase, fieldHelperBase, fieldLabelBase, fieldRequiredIndicatorBase, fieldRootBase, fieldsetErrorBase, fieldsetHelperBase, fieldsetLegendBase, fieldsetRootBase, hstackBase, inputVariants, itemVariants, nativeSelectIconBase, nativeSelectVariants, nativeSelectWrapperBase, navbarActionsBase, navbarActivationAreaBase, navbarBrandBase, navbarContainerBase, navbarDensityVariants, navbarMenuBase, navbarMenuContentBase, navbarMenuIndicatorBase, navbarMenuItemBase, navbarMenuLinkBase, navbarMenuListBase, navbarMenuPlacementVariants, navbarMenuRootBase, navbarMenuTriggerStyle, navbarMenuViewportBase, navbarMenuViewportPositionerBase, navbarMobileActionsBase, navbarMobileBase, navbarMobileContentBase, navbarMobileHeaderBase, navbarMobileMenuBase, navbarMobileMenuContentBase, navbarMobileMenuTriggerBase, navbarShrunkBase, navbarTriggerVariants, navbarVariants, numberInputControlBase, numberInputInputBase, numberInputRootBase, numberInputTriggerBase, pageContentBase, pageFooterBase, pageGutterAreaBase, pageGutterContentVariants, pageGutterVariants, pageSectionBase, pageVariants, paginationEllipsisBase, paginationItemBase, paginationRootBase, paginationTriggerBase, rowBase, scrollContentBase, scrollCornerBase, scrollRootBase, scrollScrollbarBase, scrollThumbBase, scrollViewportBase, selectClearTriggerBase, selectContentBase, selectIndicatorBase, selectItemBase, selectItemGroupLabelBase, selectItemIndicatorBase, selectItemTextBase, selectPositionerBase, selectTriggerBase, selectValueBase, sidebarMenuButtonVariants, sidebarStyles, splitterPanelBase, splitterResizeTriggerBase, splitterResizeTriggerIndicatorBase, splitterResizeTriggerSeparatorBase, splitterRootBase, stackBase, switchControlBase, switchLabelBase, switchThumbBase, switchVariants, tabsContentBase, tabsIndicatorBase, tabsIndicatorVariants, tabsListBase, tabsListVariants, tabsRootBase, tabsTriggerBase, tagsInputClearTriggerBase, tagsInputControlBase, tagsInputInputBase, tagsInputItemBase, tagsInputItemDeleteTriggerBase, tagsInputItemInputBase, tagsInputItemTextBase, tagsInputRootBase, textareaBase, toggleButtonVariants, vstackBase };
package/dist/index.d.ts CHANGED
@@ -91,6 +91,23 @@ declare const scrollScrollbarBase = "relative m-[var(--scrollbar-margin)] flex t
91
91
  declare const scrollThumbBase = "rounded-[inherit] bg-border/40 transition-colors data-[orientation=vertical]:w-full data-[orientation=horizontal]:h-full";
92
92
  declare const scrollCornerBase = "m-[var(--scrollbar-margin)] bg-muted opacity-0 transition-opacity duration-150 data-[hover]:opacity-100";
93
93
 
94
+ declare const pageVariants: (props?: ({
95
+ variant?: "default" | "landing" | null | undefined;
96
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
97
+ declare const pageGutterAreaBase = "h-full min-w-0 [grid-area:left]";
98
+ declare const pageGutterVariants: (props?: ({
99
+ side?: "left" | "right" | null | undefined;
100
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
101
+ declare const pageGutterContentVariants: (props?: ({
102
+ align?: "start" | "center" | "end" | null | undefined;
103
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
104
+ declare const pageContentBase = "min-w-0 [grid-area:content]";
105
+ declare const pageFooterBase = "w-full shrink-0 [grid-area:footer]";
106
+ declare const pageSectionBase: string;
107
+ type PageVariants = VariantProps<typeof pageVariants>;
108
+ type PageGutterVariants = VariantProps<typeof pageGutterVariants>;
109
+ type PageGutterContentVariants = VariantProps<typeof pageGutterContentVariants>;
110
+
94
111
  /**
95
112
  * Intentionally empty: Ark UI sets `display`/`flex-direction` on the root and
96
113
  * the panel's `height`/`width: 100%`, `overflow`, and flex sizing inline.
@@ -203,7 +220,7 @@ declare const navbarShrunkBase = "h-12";
203
220
  declare const navbarBrandBase = "flex shrink-0 items-center gap-2";
204
221
  declare const navbarMenuBase = "hidden items-center md:flex";
205
222
  declare const navbarMenuPlacementVariants: (props?: ({
206
- placement?: "left" | "center" | "right" | null | undefined;
223
+ placement?: "left" | "right" | "center" | null | undefined;
207
224
  } & class_variance_authority_types.ClassProp) | undefined) => string;
208
225
  declare const navbarActionsBase = "ml-auto hidden items-center gap-2 md:flex";
209
226
  declare const navbarTriggerVariants: (props?: ({
@@ -336,4 +353,4 @@ interface TagsInputProps {
336
353
  className?: string;
337
354
  }
338
355
 
339
- export { type BadgeProps, type BadgeVariants, type ButtonProps, type ButtonVariants, type CardCoverProps, type CardProps, type CardVariants, type CheckboxProps, type CheckboxVariants, type ComboboxItemVariants, type ComboboxProps, type InputProps, type InputVariants, type ItemProps, type ItemVariants, type NativeSelectVariants, type NavbarDensity, type NavbarMenuDensity, type NavbarMenuVariant, type NavbarVariant, type NumberInputProps, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, type SelectItemData, type SelectProps, type SidebarContextProps, type SidebarMenuButtonVariants, type SwitchProps, type SwitchVariants, THEMES, THEME_NAMES, type TabsIndicatorVariants, type TabsListVariants, type TagsInputProps, type TextareaProps, type ThemeMeta, type ToggleButtonProps, type ToggleButtonVariants, badgeVariants, buttonVariants, cardBodyBase, cardCoverVariants, cardDescriptionBase, cardFooterBase, cardHeaderBase, cardTitleBase, cardVariants, centerBase, checkboxGroupBase, checkboxIndicatorBase, checkboxLabelBase, checkboxVariants, cn, colBase, comboboxClearTriggerBase, comboboxContentBase, comboboxControlBase, comboboxEmptyBase, comboboxInputBase, comboboxItemGroupLabelBase, comboboxItemIndicatorBase, comboboxItemVariants, comboboxListBase, comboboxPositionerBase, comboboxTriggerBase, containerBase, fieldErrorBase, fieldHelperBase, fieldLabelBase, fieldRequiredIndicatorBase, fieldRootBase, fieldsetErrorBase, fieldsetHelperBase, fieldsetLegendBase, fieldsetRootBase, hstackBase, inputVariants, itemVariants, nativeSelectIconBase, nativeSelectVariants, nativeSelectWrapperBase, navbarActionsBase, navbarActivationAreaBase, navbarBrandBase, navbarContainerBase, navbarDensityVariants, navbarMenuBase, navbarMenuContentBase, navbarMenuIndicatorBase, navbarMenuItemBase, navbarMenuLinkBase, navbarMenuListBase, navbarMenuPlacementVariants, navbarMenuRootBase, navbarMenuTriggerStyle, navbarMenuViewportBase, navbarMenuViewportPositionerBase, navbarMobileActionsBase, navbarMobileBase, navbarMobileContentBase, navbarMobileHeaderBase, navbarMobileMenuBase, navbarMobileMenuContentBase, navbarMobileMenuTriggerBase, navbarShrunkBase, navbarTriggerVariants, navbarVariants, numberInputControlBase, numberInputInputBase, numberInputRootBase, numberInputTriggerBase, paginationEllipsisBase, paginationItemBase, paginationRootBase, paginationTriggerBase, rowBase, scrollContentBase, scrollCornerBase, scrollRootBase, scrollScrollbarBase, scrollThumbBase, scrollViewportBase, selectClearTriggerBase, selectContentBase, selectIndicatorBase, selectItemBase, selectItemGroupLabelBase, selectItemIndicatorBase, selectItemTextBase, selectPositionerBase, selectTriggerBase, selectValueBase, sidebarMenuButtonVariants, sidebarStyles, splitterPanelBase, splitterResizeTriggerBase, splitterResizeTriggerIndicatorBase, splitterResizeTriggerSeparatorBase, splitterRootBase, stackBase, switchControlBase, switchLabelBase, switchThumbBase, switchVariants, tabsContentBase, tabsIndicatorBase, tabsIndicatorVariants, tabsListBase, tabsListVariants, tabsRootBase, tabsTriggerBase, tagsInputClearTriggerBase, tagsInputControlBase, tagsInputInputBase, tagsInputItemBase, tagsInputItemDeleteTriggerBase, tagsInputItemInputBase, tagsInputItemTextBase, tagsInputRootBase, textareaBase, toggleButtonVariants, vstackBase };
356
+ export { type BadgeProps, type BadgeVariants, type ButtonProps, type ButtonVariants, type CardCoverProps, type CardProps, type CardVariants, type CheckboxProps, type CheckboxVariants, type ComboboxItemVariants, type ComboboxProps, type InputProps, type InputVariants, type ItemProps, type ItemVariants, type NativeSelectVariants, type NavbarDensity, type NavbarMenuDensity, type NavbarMenuVariant, type NavbarVariant, type NumberInputProps, type PageGutterContentVariants, type PageGutterVariants, type PageVariants, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, type SelectItemData, type SelectProps, type SidebarContextProps, type SidebarMenuButtonVariants, type SwitchProps, type SwitchVariants, THEMES, THEME_NAMES, type TabsIndicatorVariants, type TabsListVariants, type TagsInputProps, type TextareaProps, type ThemeMeta, type ToggleButtonProps, type ToggleButtonVariants, badgeVariants, buttonVariants, cardBodyBase, cardCoverVariants, cardDescriptionBase, cardFooterBase, cardHeaderBase, cardTitleBase, cardVariants, centerBase, checkboxGroupBase, checkboxIndicatorBase, checkboxLabelBase, checkboxVariants, cn, colBase, comboboxClearTriggerBase, comboboxContentBase, comboboxControlBase, comboboxEmptyBase, comboboxInputBase, comboboxItemGroupLabelBase, comboboxItemIndicatorBase, comboboxItemVariants, comboboxListBase, comboboxPositionerBase, comboboxTriggerBase, containerBase, fieldErrorBase, fieldHelperBase, fieldLabelBase, fieldRequiredIndicatorBase, fieldRootBase, fieldsetErrorBase, fieldsetHelperBase, fieldsetLegendBase, fieldsetRootBase, hstackBase, inputVariants, itemVariants, nativeSelectIconBase, nativeSelectVariants, nativeSelectWrapperBase, navbarActionsBase, navbarActivationAreaBase, navbarBrandBase, navbarContainerBase, navbarDensityVariants, navbarMenuBase, navbarMenuContentBase, navbarMenuIndicatorBase, navbarMenuItemBase, navbarMenuLinkBase, navbarMenuListBase, navbarMenuPlacementVariants, navbarMenuRootBase, navbarMenuTriggerStyle, navbarMenuViewportBase, navbarMenuViewportPositionerBase, navbarMobileActionsBase, navbarMobileBase, navbarMobileContentBase, navbarMobileHeaderBase, navbarMobileMenuBase, navbarMobileMenuContentBase, navbarMobileMenuTriggerBase, navbarShrunkBase, navbarTriggerVariants, navbarVariants, numberInputControlBase, numberInputInputBase, numberInputRootBase, numberInputTriggerBase, pageContentBase, pageFooterBase, pageGutterAreaBase, pageGutterContentVariants, pageGutterVariants, pageSectionBase, pageVariants, paginationEllipsisBase, paginationItemBase, paginationRootBase, paginationTriggerBase, rowBase, scrollContentBase, scrollCornerBase, scrollRootBase, scrollScrollbarBase, scrollThumbBase, scrollViewportBase, selectClearTriggerBase, selectContentBase, selectIndicatorBase, selectItemBase, selectItemGroupLabelBase, selectItemIndicatorBase, selectItemTextBase, selectPositionerBase, selectTriggerBase, selectValueBase, sidebarMenuButtonVariants, sidebarStyles, splitterPanelBase, splitterResizeTriggerBase, splitterResizeTriggerIndicatorBase, splitterResizeTriggerSeparatorBase, splitterRootBase, stackBase, switchControlBase, switchLabelBase, switchThumbBase, switchVariants, tabsContentBase, tabsIndicatorBase, tabsIndicatorVariants, tabsListBase, tabsListVariants, tabsRootBase, tabsTriggerBase, tagsInputClearTriggerBase, tagsInputControlBase, tagsInputInputBase, tagsInputItemBase, tagsInputItemDeleteTriggerBase, tagsInputItemInputBase, tagsInputItemTextBase, tagsInputRootBase, textareaBase, toggleButtonVariants, vstackBase };
package/dist/index.js CHANGED
@@ -254,6 +254,53 @@ var scrollScrollbarBase = "relative m-[var(--scrollbar-margin)] flex touch-none
254
254
  var scrollThumbBase = "rounded-[inherit] bg-border/40 transition-colors data-[orientation=vertical]:w-full data-[orientation=horizontal]:h-full";
255
255
  var scrollCornerBase = "m-[var(--scrollbar-margin)] bg-muted opacity-0 transition-opacity duration-150 data-[hover]:opacity-100";
256
256
 
257
+ // src/page.ts
258
+ import { cva as cva6 } from "class-variance-authority";
259
+
260
+ // src/cn.ts
261
+ import { clsx } from "clsx";
262
+ import { twMerge } from "tailwind-merge";
263
+ function cn(...inputs) {
264
+ return twMerge(clsx(inputs));
265
+ }
266
+
267
+ // src/page.ts
268
+ var pageVariants = cva6("min-h-svh w-full", {
269
+ variants: {
270
+ variant: {
271
+ default: 'grid grid-cols-[auto_minmax(0,1fr)_auto] grid-rows-[minmax(100svh,1fr)_auto] [grid-template-areas:"left_content_right"_"footer_footer_footer"]',
272
+ landing: colBase
273
+ }
274
+ },
275
+ defaultVariants: { variant: "default" }
276
+ });
277
+ var pageGutterAreaBase = "h-full min-w-0 [grid-area:left]";
278
+ var pageGutterVariants = cva6(
279
+ "sticky top-0 h-svh w-4 shrink-0 overflow-hidden p-0.5 md:w-56 md:p-2 lg:w-72 lg:p-3",
280
+ {
281
+ variants: {
282
+ side: {
283
+ left: "",
284
+ right: ""
285
+ }
286
+ },
287
+ defaultVariants: { side: "left" }
288
+ }
289
+ );
290
+ var pageGutterContentVariants = cva6("hidden h-full w-full flex-col md:flex", {
291
+ variants: {
292
+ align: {
293
+ start: "justify-start",
294
+ center: "justify-center",
295
+ end: "justify-end"
296
+ }
297
+ },
298
+ defaultVariants: { align: "start" }
299
+ });
300
+ var pageContentBase = "min-w-0 [grid-area:content]";
301
+ var pageFooterBase = "w-full shrink-0 [grid-area:footer]";
302
+ var pageSectionBase = cn(colBase, "min-h-svh w-full");
303
+
257
304
  // src/splitter.ts
258
305
  var splitterRootBase = "";
259
306
  var splitterPanelBase = "";
@@ -262,12 +309,12 @@ var splitterResizeTriggerSeparatorBase = "absolute bg-border group-data-[orienta
262
309
  var splitterResizeTriggerIndicatorBase = "relative z-10 rounded-full border border-border bg-muted shadow-xs data-[dragging]:bg-muted-foreground data-[focus]:bg-accent data-[disabled]:hidden data-[orientation=horizontal]:h-6 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-6";
263
310
 
264
311
  // src/sidebar.ts
265
- import { cva as cva6 } from "class-variance-authority";
312
+ import { cva as cva7 } from "class-variance-authority";
266
313
  var SIDEBAR_WIDTH = "16rem";
267
314
  var SIDEBAR_WIDTH_MOBILE = "18rem";
268
315
  var SIDEBAR_WIDTH_ICON = "3rem";
269
316
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
270
- var sidebarMenuButtonVariants = cva6(
317
+ var sidebarMenuButtonVariants = cva7(
271
318
  "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
272
319
  {
273
320
  variants: {
@@ -320,11 +367,11 @@ var sidebarStyles = {
320
367
  };
321
368
 
322
369
  // src/navbar-menu.ts
323
- import { cva as cva7 } from "class-variance-authority";
370
+ import { cva as cva8 } from "class-variance-authority";
324
371
  var navbarMenuRootBase = "group/nav-menu relative flex max-w-max flex-1 items-center justify-center";
325
372
  var navbarMenuListBase = "group flex flex-1 list-none items-center justify-center gap-1";
326
373
  var navbarMenuItemBase = "relative";
327
- var navbarMenuTriggerStyle = cva7(
374
+ var navbarMenuTriggerStyle = cva8(
328
375
  "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-3 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent",
329
376
  {
330
377
  variants: {
@@ -349,10 +396,10 @@ var navbarMenuViewportBase = "absolute left-(--viewport-x) top-0 mt-1.5 h-(--vie
349
396
  var navbarMenuIndicatorBase = "data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-50 flex h-1.5 items-end justify-center overflow-hidden";
350
397
 
351
398
  // src/tabs.ts
352
- import { cva as cva8 } from "class-variance-authority";
399
+ import { cva as cva9 } from "class-variance-authority";
353
400
  var tabsRootBase = "flex flex-col gap-2 data-[orientation=vertical]:flex-row";
354
401
  var tabsListBase = "relative z-0 flex w-fit items-center justify-center gap-x-0.5 text-muted-foreground data-[orientation=vertical]:flex-col";
355
- var tabsListVariants = cva8("", {
402
+ var tabsListVariants = cva9("", {
356
403
  variants: {
357
404
  variant: {
358
405
  default: "rounded-lg",
@@ -364,7 +411,7 @@ var tabsListVariants = cva8("", {
364
411
  }
365
412
  });
366
413
  var tabsIndicatorBase = "absolute inset-x-0 bottom-0 h-(--height) w-(--width) transition-[width,translate] duration-200 ease-in-out motion-reduce:transition-none";
367
- var tabsIndicatorVariants = cva8("", {
414
+ var tabsIndicatorVariants = cva9("", {
368
415
  variants: {
369
416
  variant: {
370
417
  default: "-z-1 rounded-lg bg-accent",
@@ -385,8 +432,8 @@ var paginationItemBase = "inline-flex h-9 min-w-9 items-center justify-center wh
385
432
  var paginationEllipsisBase = "flex h-8 w-12 items-end justify-center text-muted-foreground pointer-events-none select-none [&_svg]:size-4";
386
433
 
387
434
  // src/navbar.ts
388
- import { cva as cva9 } from "class-variance-authority";
389
- var navbarVariants = cva9(
435
+ import { cva as cva10 } from "class-variance-authority";
436
+ var navbarVariants = cva10(
390
437
  "w-full bg-background/80 backdrop-blur transition-[box-shadow,height,translate] duration-300",
391
438
  {
392
439
  variants: {
@@ -408,7 +455,7 @@ var navbarVariants = cva9(
408
455
  }
409
456
  );
410
457
  var navbarContainerBase = "flex items-center justify-between transition-[height,gap,padding] duration-300";
411
- var navbarDensityVariants = cva9("", {
458
+ var navbarDensityVariants = cva10("", {
412
459
  variants: {
413
460
  density: {
414
461
  relaxed: "h-16 gap-4 px-4 md:px-6",
@@ -422,7 +469,7 @@ var navbarDensityVariants = cva9("", {
422
469
  var navbarShrunkBase = "h-12";
423
470
  var navbarBrandBase = "flex shrink-0 items-center gap-2";
424
471
  var navbarMenuBase = "hidden items-center md:flex";
425
- var navbarMenuPlacementVariants = cva9("", {
472
+ var navbarMenuPlacementVariants = cva10("", {
426
473
  variants: {
427
474
  placement: {
428
475
  left: "justify-start",
@@ -435,7 +482,7 @@ var navbarMenuPlacementVariants = cva9("", {
435
482
  }
436
483
  });
437
484
  var navbarActionsBase = "ml-auto hidden items-center gap-2 md:flex";
438
- var navbarTriggerVariants = cva9(
485
+ var navbarTriggerVariants = cva10(
439
486
  "inline-flex h-9 w-9 items-center justify-center text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
440
487
  {
441
488
  variants: {
@@ -514,13 +561,6 @@ var THEMES = [
514
561
  ];
515
562
  var THEME_NAMES = THEMES.map((t) => t.name);
516
563
 
517
- // src/cn.ts
518
- import { clsx } from "clsx";
519
- import { twMerge } from "tailwind-merge";
520
- function cn(...inputs) {
521
- return twMerge(clsx(inputs));
522
- }
523
-
524
564
  // src/field.ts
525
565
  var fieldRootBase = "flex w-full flex-col gap-2 data-invalid:text-destructive";
526
566
  var fieldLabelBase = "flex w-fit select-none items-center gap-1 text-sm font-medium leading-none text-foreground";
@@ -533,8 +573,8 @@ var fieldsetHelperBase = "text-sm text-muted-foreground";
533
573
  var fieldsetErrorBase = "text-sm text-destructive";
534
574
 
535
575
  // src/input.ts
536
- import { cva as cva10 } from "class-variance-authority";
537
- var inputVariants = cva10(
576
+ import { cva as cva11 } from "class-variance-authority";
577
+ var inputVariants = cva11(
538
578
  "flex w-full min-w-0 rounded-md border border-input bg-transparent px-3 text-sm shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/24 data-invalid:border-destructive data-invalid:ring-[3px] data-invalid:ring-destructive/24",
539
579
  {
540
580
  variants: {
@@ -560,8 +600,8 @@ var numberInputInputBase = "h-9 w-full min-w-0 flex-1 border-0 bg-transparent px
560
600
  var numberInputTriggerBase = "flex size-9 shrink-0 items-center justify-center text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0";
561
601
 
562
602
  // src/checkbox.ts
563
- import { cva as cva11 } from "class-variance-authority";
564
- var checkboxVariants = cva11(
603
+ import { cva as cva12 } from "class-variance-authority";
604
+ var checkboxVariants = cva12(
565
605
  "relative inline-flex size-4 shrink-0 items-center justify-center rounded-sm border border-input bg-transparent shadow-xs transition-shadow focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/30 focus-visible:ring-offset-1 focus-visible:ring-offset-background data-invalid:border-destructive data-invalid:ring-[3px] data-invalid:ring-destructive/24 disabled:pointer-events-none disabled:opacity-50",
566
606
  {
567
607
  variants: {
@@ -581,8 +621,8 @@ var checkboxLabelBase = "select-none text-sm font-medium leading-none";
581
621
  var checkboxGroupBase = "flex flex-col gap-2";
582
622
 
583
623
  // src/switch.ts
584
- import { cva as cva12 } from "class-variance-authority";
585
- var switchVariants = cva12(
624
+ import { cva as cva13 } from "class-variance-authority";
625
+ var switchVariants = cva13(
586
626
  "inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border border-transparent bg-input p-0.5 shadow-xs transition-colors outline-none data-[state=checked]:bg-primary data-invalid:border-destructive data-invalid:ring-[3px] data-invalid:ring-destructive/24 focus-visible:ring-[3px] focus-visible:ring-ring/30 disabled:pointer-events-none disabled:opacity-50",
587
627
  {
588
628
  variants: {
@@ -602,7 +642,7 @@ var switchThumbBase = "pointer-events-none block aspect-square h-full w-auto rou
602
642
  var switchLabelBase = "select-none text-sm font-medium leading-none";
603
643
 
604
644
  // src/select.ts
605
- import { cva as cva13 } from "class-variance-authority";
645
+ import { cva as cva14 } from "class-variance-authority";
606
646
  var selectTriggerBase = "flex w-fit cursor-default items-center gap-2 whitespace-nowrap data-[placeholder-shown]:text-muted-foreground data-[state=open]:border-ring data-[state=open]:ring-[3px] data-[state=open]:ring-ring/30 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground";
607
647
  var selectValueBase = "flex min-w-0 items-center gap-2 truncate";
608
648
  var selectIndicatorBase = "flex items-center justify-center text-muted-foreground";
@@ -613,7 +653,7 @@ var selectItemGroupLabelBase = "px-2 py-1.5 text-xs font-semibold text-muted-for
613
653
  var selectItemBase = "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 pe-8 text-sm outline-none data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground";
614
654
  var selectItemTextBase = "flex w-full flex-1 items-center gap-2";
615
655
  var selectItemIndicatorBase = "absolute inset-y-0 end-2 flex items-center justify-center text-foreground";
616
- var nativeSelectVariants = cva13(
656
+ var nativeSelectVariants = cva14(
617
657
  "appearance-none w-full min-w-0 rounded-md border border-input bg-transparent pe-8 ps-2.5 text-sm shadow-xs transition-colors outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/24",
618
658
  {
619
659
  variants: {
@@ -632,7 +672,7 @@ var nativeSelectWrapperBase = "relative w-fit [&_svg]:pointer-events-none [&_svg
632
672
  var nativeSelectIconBase = "pointer-events-none absolute inset-y-0 end-2.5 flex items-center justify-center text-muted-foreground";
633
673
 
634
674
  // src/combobox.ts
635
- import { cva as cva14 } from "class-variance-authority";
675
+ import { cva as cva15 } from "class-variance-authority";
636
676
  var comboboxControlBase = "relative flex w-full flex-wrap items-center gap-1";
637
677
  var comboboxInputBase = "pe-8";
638
678
  var comboboxTriggerBase = "absolute inset-y-0 end-1 flex w-8 items-center justify-center text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0";
@@ -640,7 +680,7 @@ var comboboxClearTriggerBase = "absolute inset-y-0 end-9 flex items-center justi
640
680
  var comboboxPositionerBase = "z-50";
641
681
  var comboboxContentBase = "relative z-50 max-h-96 min-w-48 overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md outline-none";
642
682
  var comboboxItemGroupLabelBase = "px-2 py-1.5 text-xs font-semibold text-muted-foreground";
643
- var comboboxItemVariants = cva14(
683
+ var comboboxItemVariants = cva15(
644
684
  "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-muted-foreground",
645
685
  {
646
686
  variants: {
@@ -747,6 +787,13 @@ export {
747
787
  numberInputInputBase,
748
788
  numberInputRootBase,
749
789
  numberInputTriggerBase,
790
+ pageContentBase,
791
+ pageFooterBase,
792
+ pageGutterAreaBase,
793
+ pageGutterContentVariants,
794
+ pageGutterVariants,
795
+ pageSectionBase,
796
+ pageVariants,
750
797
  paginationEllipsisBase,
751
798
  paginationItemBase,
752
799
  paginationRootBase,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudvoyant/helix",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "helix shared component interfaces, cva variants, and theme",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/theme.css CHANGED
@@ -158,4 +158,31 @@
158
158
  body {
159
159
  @apply bg-background text-foreground;
160
160
  }
161
+ /* helix page scrollbar. `Page` relies on the document scrollbar (sticky
162
+ gutters + footer bottom-out need window scrolling, so the page body is
163
+ never wrapped in Ark ScrollArea). Style that document scrollbar — and any
164
+ other native scrollbar — to match the Scroll component's look: thin,
165
+ rounded, --border-based. The Scroll component's own viewport keeps hiding
166
+ its native scrollbar ([scrollbar-width:none] / ::-webkit-scrollbar:hidden),
167
+ so this never double-styles it. */
168
+ * {
169
+ scrollbar-width: thin;
170
+ scrollbar-color: color-mix(in oklab, var(--border) 40%, transparent) transparent;
171
+ }
172
+ ::-webkit-scrollbar {
173
+ width: 0.5rem;
174
+ height: 0.5rem;
175
+ }
176
+ ::-webkit-scrollbar-track {
177
+ background: transparent;
178
+ }
179
+ ::-webkit-scrollbar-thumb {
180
+ background-color: color-mix(in oklab, var(--border) 40%, transparent);
181
+ border-radius: 9999px;
182
+ border: 2px solid transparent;
183
+ background-clip: padding-box;
184
+ }
185
+ ::-webkit-scrollbar-thumb:hover {
186
+ background-color: var(--border);
187
+ }
161
188
  }