@nswds/app 1.66.4 → 1.68.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
@@ -13689,7 +13689,7 @@ function FormatToggle({ format, setFormat }) {
13689
13689
 
13690
13690
  // package.json
13691
13691
  var package_default = {
13692
- version: "1.65.1"};
13692
+ version: "1.67.0"};
13693
13693
  function Heading({
13694
13694
  className,
13695
13695
  trim = "normal",
@@ -23733,133 +23733,383 @@ function NavigationMenuIndicator({
23733
23733
  }
23734
23734
  );
23735
23735
  }
23736
- function Wrapper({
23736
+ var styles4 = {
23737
+ base: [
23738
+ // Base
23739
+ "group relative mx-auto max-w-md overflow-hidden rounded-md",
23740
+ "bg-(--nsw-card-bg) border border-(--nsw-card-border) text-(--nsw-card-text)",
23741
+ // Focus
23742
+ "focus:outline focus:outline-2 focus:outline-offset-2 focus:outline-primary-600",
23743
+ // Add transition
23744
+ "transition-colors duration-100 ease-out motion-reduce:transition-none",
23745
+ // Hover
23746
+ "hover:-translate-y-0.5"
23747
+ ],
23748
+ default: [
23749
+ // Base
23750
+ "",
23751
+ // Hover
23752
+ ""
23753
+ ],
23754
+ highlight: [
23755
+ "border-none",
23756
+ // Highlight
23757
+ "after:absolute after:inset-x-0 after:top-0 after:h-1 after:content-['']",
23758
+ "after:pointer-events-none after:z-10 after:rounded-t-md after:bg-[var(--nsw-card-top-border)]",
23759
+ // Hover
23760
+ "hover:bg-primary-800 hover:after:bg-primary-800"
23761
+ ],
23762
+ colors: {
23763
+ white: [
23764
+ // Base
23765
+ "[--nsw-card-bg:white] [--nsw-card-border:var(--color-grey-200)] [--nsw-card-text:grey-800]",
23766
+ // Hover
23767
+ "hover:[--nsw-card-bg:var(--color-primary-800)] hover:[--nsw-card-border:var(--color-primary-800)] hover:[--nsw-card-text:white]"
23768
+ ],
23769
+ primary: [
23770
+ // Base
23771
+ "[--nsw-card-bg:var(--color-primary-800)] [--nsw-card-border:var(--color-primary-800)] [--nsw-card-text:white]",
23772
+ // Hover
23773
+ "hover:[--nsw-card-bg:white] hover:[--nsw-card-border:var(--color-grey-200)] hover:[--nsw-card-text:grey-800]"
23774
+ ],
23775
+ secondary: [
23776
+ // Base
23777
+ "[--nsw-card-bg:var(--color-primary-200)] [--nsw-card-border:var(--color-primary-200)] [--nsw-card-text:var(--color-primary-800)]",
23778
+ // Hover
23779
+ "hover:[--nsw-card-bg:var(--color-primary-800)] hover:[--nsw-card-border:var(--color-primary-800)] hover:[--nsw-card-text:white]"
23780
+ ],
23781
+ tertiary: [
23782
+ // Base
23783
+ "[--nsw-card-bg:var(--color-primary-600)] [--nsw-card-border:var(--color-primary-600)] [--nsw-card-text:var(--color-primary-600)]",
23784
+ // Hover
23785
+ "hover:[--nsw-card-bg:var(--color-primary-800)] hover:[--nsw-card-border:var(--color-primary-800)] hover:[--nsw-card-text:white]"
23786
+ ]
23787
+ },
23788
+ size: {
23789
+ default: "",
23790
+ sm: "",
23791
+ lg: ""
23792
+ }
23793
+ };
23794
+ var cardVariants = classVarianceAuthority.cva(styles4.base, {
23795
+ variants: {
23796
+ variant: {
23797
+ highlight: styles4.highlight,
23798
+ default: styles4.default
23799
+ },
23800
+ color: {
23801
+ white: styles4.colors.white,
23802
+ primary: styles4.colors.primary,
23803
+ secondary: styles4.colors.secondary,
23804
+ tertiary: styles4.colors.tertiary
23805
+ },
23806
+ size: {
23807
+ default: styles4.size.default,
23808
+ sm: styles4.size.sm,
23809
+ lg: styles4.size.lg
23810
+ }
23811
+ },
23812
+ defaultVariants: {
23813
+ variant: "default",
23814
+ color: "white",
23815
+ size: "default"
23816
+ }
23817
+ });
23818
+ function NSWCardTitle({
23819
+ children,
23820
+ className,
23821
+ href,
23822
+ ...props
23823
+ }) {
23824
+ return /* @__PURE__ */ jsxRuntime.jsxs(
23825
+ Link,
23826
+ {
23827
+ className: cn(
23828
+ "mb-6 text-3xl font-bold text-grey-800",
23829
+ "group-hover:text-white",
23830
+ "group-data-[color=primary]:text-white",
23831
+ "group-hover:group-data-[color=primary]:text-grey-800",
23832
+ "group-data-[color=secondary]:text-primary-800",
23833
+ "group-hover:group-data-[color=secondary]:text-white",
23834
+ "group-data-[color=tertiary]:text-white",
23835
+ className
23836
+ ),
23837
+ href,
23838
+ ...props,
23839
+ children: [
23840
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute inset-0" }),
23841
+ children
23842
+ ]
23843
+ }
23844
+ );
23845
+ }
23846
+ function NSWCardDescription({
23737
23847
  children,
23738
23848
  className,
23739
23849
  ...props
23740
23850
  }) {
23741
23851
  return /* @__PURE__ */ jsxRuntime.jsx(
23742
- "div",
23852
+ "p",
23743
23853
  {
23744
- className: `max-w-8xl mx-auto space-y-8 px-4 py-6 sm:px-6 lg:px-12 ${className}`,
23854
+ className: cn(
23855
+ "mb-8 text-lg leading-relaxed text-grey-600",
23856
+ "group-hover:text-white",
23857
+ "group-data-[color=primary]:text-white",
23858
+ "group-hover:group-data-[color=primary]:text-grey-800",
23859
+ "group-data-[color=secondary]:text-primary-800",
23860
+ "group-hover:group-data-[color=secondary]:text-white",
23861
+ "group-data-[color=tertiary]:text-white",
23862
+ className
23863
+ ),
23745
23864
  ...props,
23746
23865
  children
23747
23866
  }
23748
23867
  );
23749
23868
  }
23750
- function PageHeading({
23751
- heading,
23869
+ function NSWCardArrow({ className, ...props }) {
23870
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex", className), ...props, children: /* @__PURE__ */ jsxRuntime.jsx(
23871
+ Icons.east,
23872
+ {
23873
+ className: cn(
23874
+ "h-8 w-8",
23875
+ "group-hover:text-white",
23876
+ "group-data-[color=primary]:text-white",
23877
+ "group-hover:group-data-[color=primary]:text-grey-800",
23878
+ "group-data-[color=secondary]:text-primary-800",
23879
+ "group-hover:group-data-[color=secondary]:text-white",
23880
+ "group-data-[color=tertiary]:text-white",
23881
+ "transition-transform group-hover:translate-x-0.5"
23882
+ )
23883
+ }
23884
+ ) });
23885
+ }
23886
+ function NSWCardIcon({
23752
23887
  children,
23888
+ backgroundColor = "bg-primary-600",
23889
+ size = "w-16 h-16",
23753
23890
  className
23754
23891
  }) {
23755
- return /* @__PURE__ */ jsxRuntime.jsx("header", { className: `border-b border-grey-300 bg-white ${className}`, children: /* @__PURE__ */ jsxRuntime.jsxs(Wrapper, { children: [
23756
- heading && /* @__PURE__ */ jsxRuntime.jsx(Heading, { level: 1, size: 3, className: "font-semibold", children: heading }),
23757
- children
23758
- ] }) });
23759
- }
23760
- var buttonVariants4 = classVarianceAuthority.cva(
23761
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
23762
- {
23763
- variants: {
23764
- variant: {
23765
- outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
23766
- ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50"
23767
- },
23768
- size: {
23769
- default: "h-9 px-4 py-2 has-[>svg]:px-3",
23770
- icon: "size-9"
23771
- }
23772
- },
23773
- defaultVariants: {
23774
- size: "default"
23775
- }
23776
- }
23777
- );
23778
- function Pagination({ className, ...props }) {
23779
23892
  return /* @__PURE__ */ jsxRuntime.jsx(
23780
- "nav",
23893
+ "div",
23781
23894
  {
23782
- role: "navigation",
23783
- "aria-label": "pagination",
23784
- "data-slot": "pagination",
23785
- className: cn("mx-auto flex w-full justify-center", className),
23786
- ...props
23895
+ className: cn(size, "mb-6 flex items-center justify-center rounded-full", className),
23896
+ style: { backgroundColor },
23897
+ children
23787
23898
  }
23788
23899
  );
23789
23900
  }
23790
- function PaginationContent({ className, ...props }) {
23901
+ function NSWCard({
23902
+ children,
23903
+ topBorder = "var(--color-accent-600)",
23904
+ className,
23905
+ variant,
23906
+ color: color2,
23907
+ size,
23908
+ ...props
23909
+ }) {
23910
+ const classes = cn(cardVariants({ variant, color: color2, size }), className);
23911
+ const isHighlight = variant === "highlight";
23791
23912
  return /* @__PURE__ */ jsxRuntime.jsx(
23792
- "ul",
23913
+ "div",
23793
23914
  {
23794
- "data-slot": "pagination-content",
23795
- className: cn("flex flex-row items-center gap-1", className),
23796
- ...props
23915
+ "data-slot": "card",
23916
+ "data-variant": variant,
23917
+ "data-color": color2,
23918
+ "data-size": size,
23919
+ style: isHighlight ? { ["--nsw-card-top-border"]: topBorder } : void 0,
23920
+ className: classes,
23921
+ ...props,
23922
+ children: variant === "highlight" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("rounded-md border border-grey-200", "hover:border-primary-800"), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-8", children }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-8", children })
23797
23923
  }
23798
23924
  );
23799
23925
  }
23800
- function PaginationItem({ ...props }) {
23801
- return /* @__PURE__ */ jsxRuntime.jsx("li", { "data-slot": "pagination-item", ...props });
23802
- }
23803
- function PaginationLink({ className, isActive, size = "icon", ...props }) {
23926
+ function Wrapper({
23927
+ children,
23928
+ className,
23929
+ ...props
23930
+ }) {
23804
23931
  return /* @__PURE__ */ jsxRuntime.jsx(
23805
- "a",
23932
+ "div",
23806
23933
  {
23807
- "aria-current": isActive ? "page" : void 0,
23808
- "data-slot": "pagination-link",
23809
- "data-active": isActive,
23810
- className: cn(
23811
- buttonVariants4({
23812
- variant: isActive ? "outline" : "ghost",
23813
- size
23814
- }),
23815
- className
23816
- ),
23817
- ...props
23934
+ className: `max-w-8xl mx-auto space-y-8 px-4 py-6 sm:px-6 lg:px-12 ${className}`,
23935
+ ...props,
23936
+ children
23818
23937
  }
23819
23938
  );
23820
23939
  }
23821
- function PaginationPrevious({ className, ...props }) {
23822
- return /* @__PURE__ */ jsxRuntime.jsxs(
23823
- PaginationLink,
23940
+ function PageHeading({
23941
+ heading,
23942
+ children,
23943
+ className
23944
+ }) {
23945
+ return /* @__PURE__ */ jsxRuntime.jsx("header", { className: `border-b border-grey-300 bg-white ${className}`, children: /* @__PURE__ */ jsxRuntime.jsxs(Wrapper, { children: [
23946
+ heading && /* @__PURE__ */ jsxRuntime.jsx(Heading, { level: 1, size: 3, className: "font-semibold", children: heading }),
23947
+ children
23948
+ ] }) });
23949
+ }
23950
+ var PaginationVariantContext = React5__namespace.createContext("default");
23951
+ var containerStyles = {
23952
+ line: cn("flex items-center justify-between border-t px-4 sm:px-0", "border-grey-200"),
23953
+ default: cn("flex gap-x-2")
23954
+ };
23955
+ var listStyles = {
23956
+ line: cn("hidden md:-mt-px md:flex"),
23957
+ default: cn("hidden items-baseline gap-x-2 sm:flex")
23958
+ };
23959
+ function Pagination({
23960
+ variant = "default",
23961
+ className,
23962
+ "aria-label": ariaLabel = "Page navigation",
23963
+ children,
23964
+ ...props
23965
+ }) {
23966
+ return /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": ariaLabel, className: clsx12__default.default(containerStyles[variant], className), ...props, children: /* @__PURE__ */ jsxRuntime.jsx(PaginationVariantContext.Provider, { value: variant, children }) });
23967
+ }
23968
+ function PaginationPrevious({ href = null, className, children = "Previous" }) {
23969
+ const variant = React5__namespace.useContext(PaginationVariantContext);
23970
+ if (variant === "line") {
23971
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "-mt-px flex w-0 flex-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
23972
+ "a",
23973
+ {
23974
+ href: href ?? void 0,
23975
+ "aria-disabled": href === null,
23976
+ className: cn(
23977
+ "group inline-flex items-center border-t-2 pt-4 pr-1 text-sm font-medium",
23978
+ "border-transparent text-grey-800 hover:border-grey-400 hover:text-grey-700",
23979
+ href === null && "pointer-events-none text-grey-300",
23980
+ className
23981
+ ),
23982
+ children: [
23983
+ /* @__PURE__ */ jsxRuntime.jsx(Icons.west, { "aria-hidden": "true", className: "mr-3 size-5 group-hover:text-grey-700" }),
23984
+ children
23985
+ ]
23986
+ }
23987
+ ) });
23988
+ }
23989
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: clsx12__default.default(className, "grow basis-0"), children: /* @__PURE__ */ jsxRuntime.jsxs(
23990
+ Button2,
23824
23991
  {
23825
- "aria-label": "Go to previous page",
23826
- size: "default",
23827
- className: cn("gap-1 px-2.5 sm:pl-2.5", className),
23828
- ...props,
23992
+ ...href === null ? { disabled: true } : { href },
23993
+ variant: "ghost",
23994
+ "aria-label": "Previous page",
23829
23995
  children: [
23830
- /* @__PURE__ */ jsxRuntime.jsx(Icons.west, {}),
23831
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:block", children: "Previous" })
23996
+ /* @__PURE__ */ jsxRuntime.jsx(Icons.west, { "aria-hidden": "true" }),
23997
+ children
23832
23998
  ]
23833
23999
  }
23834
- );
24000
+ ) });
23835
24001
  }
23836
- function PaginationNext({ className, ...props }) {
23837
- return /* @__PURE__ */ jsxRuntime.jsxs(
23838
- PaginationLink,
24002
+ function PaginationNext({ href = null, className, children = "Next" }) {
24003
+ const variant = React5__namespace.useContext(PaginationVariantContext);
24004
+ if (variant === "line") {
24005
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "-mt-px flex w-0 flex-1 justify-end", children: /* @__PURE__ */ jsxRuntime.jsxs(
24006
+ "a",
24007
+ {
24008
+ href: href ?? void 0,
24009
+ "aria-disabled": href === null,
24010
+ className: cn(
24011
+ "group inline-flex items-center border-t-2 pt-4 pl-1 text-sm font-medium",
24012
+ "border-transparent text-grey-800 hover:border-grey-400 hover:text-grey-700",
24013
+ href === null && "pointer-events-none text-grey-300",
24014
+ className
24015
+ ),
24016
+ children: [
24017
+ children,
24018
+ /* @__PURE__ */ jsxRuntime.jsx(Icons.east, { "aria-hidden": "true", className: "ml-3 size-5 group-hover:text-grey-700" })
24019
+ ]
24020
+ }
24021
+ ) });
24022
+ }
24023
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: clsx12__default.default(className, "flex grow basis-0 justify-end"), children: /* @__PURE__ */ jsxRuntime.jsxs(
24024
+ Button2,
23839
24025
  {
23840
- "aria-label": "Go to next page",
23841
- size: "default",
23842
- className: cn("gap-1 px-2.5 sm:pr-2.5", className),
23843
- ...props,
24026
+ ...href === null ? { disabled: true } : { href },
24027
+ "aria-label": "Next page",
24028
+ variant: "ghost",
23844
24029
  children: [
23845
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:block", children: "Next" }),
23846
- /* @__PURE__ */ jsxRuntime.jsx(Icons.east, {})
24030
+ children,
24031
+ /* @__PURE__ */ jsxRuntime.jsx(Icons.east, { "aria-hidden": "true" })
23847
24032
  ]
23848
24033
  }
24034
+ ) });
24035
+ }
24036
+ function PaginationList({ className, ...props }) {
24037
+ const variant = React5__namespace.useContext(PaginationVariantContext);
24038
+ if (variant === "line") {
24039
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx12__default.default(listStyles.line, className), ...props });
24040
+ }
24041
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: clsx12__default.default(listStyles.default, className), ...props });
24042
+ }
24043
+ function PaginationPage({
24044
+ href,
24045
+ className,
24046
+ current = false,
24047
+ children
24048
+ }) {
24049
+ const variant = React5__namespace.useContext(PaginationVariantContext);
24050
+ if (variant === "line") {
24051
+ return /* @__PURE__ */ jsxRuntime.jsx(
24052
+ "a",
24053
+ {
24054
+ href,
24055
+ "aria-current": current ? "page" : void 0,
24056
+ className: cn(
24057
+ "inline-flex items-center border-t-2 px-4 pt-4 text-sm font-medium",
24058
+ current ? "border-accent-600 font-bold text-primary-800" : "border-transparent text-grey-800 hover:border-grey-400 hover:text-grey-600",
24059
+ className
24060
+ ),
24061
+ children
24062
+ }
24063
+ );
24064
+ }
24065
+ return /* @__PURE__ */ jsxRuntime.jsx(
24066
+ Button2,
24067
+ {
24068
+ href,
24069
+ "aria-label": `Page ${children}`,
24070
+ "aria-current": current ? "page" : void 0,
24071
+ variant: current ? "solid" : "ghost",
24072
+ color: current ? "accent" : "light",
24073
+ className: clsx12__default.default(
24074
+ className,
24075
+ "leading-none before:absolute before:-inset-px before:rounded-sm",
24076
+ "min-h-8 min-w-8 sm:px-[calc(--spacing(4))] sm:py-[calc(--spacing(3))]",
24077
+ current && "before:bg-grey-950/5 dark:before:bg-white/10"
24078
+ ),
24079
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "-mx-0.5 leading-none", children })
24080
+ }
23849
24081
  );
23850
24082
  }
23851
- function PaginationEllipsis({ className, ...props }) {
23852
- return /* @__PURE__ */ jsxRuntime.jsxs(
24083
+ function PaginationGap({
24084
+ className,
24085
+ children = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: "\u2026" }),
24086
+ ...props
24087
+ }) {
24088
+ const variant = React5__namespace.useContext(PaginationVariantContext);
24089
+ if (variant === "line") {
24090
+ return /* @__PURE__ */ jsxRuntime.jsx(
24091
+ "span",
24092
+ {
24093
+ "aria-hidden": "true",
24094
+ className: clsx12__default.default(
24095
+ "inline-flex items-center border-t-2 border-transparent px-4 pt-4 text-sm font-medium text-grey-800 select-none",
24096
+ className
24097
+ ),
24098
+ ...props,
24099
+ children
24100
+ }
24101
+ );
24102
+ }
24103
+ return /* @__PURE__ */ jsxRuntime.jsx(
23853
24104
  "span",
23854
24105
  {
23855
- "aria-hidden": true,
23856
- "data-slot": "pagination-ellipsis",
23857
- className: cn("flex size-9 items-center justify-center", className),
24106
+ "aria-hidden": "true",
23858
24107
  ...props,
23859
- children: [
23860
- /* @__PURE__ */ jsxRuntime.jsx(Icons.more_horiz, { className: "size-4" }),
23861
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "More pages" })
23862
- ]
24108
+ className: clsx12__default.default(
24109
+ className,
24110
+ "w-9 text-center text-sm/6 font-semibold text-grey-950 select-none dark:text-white"
24111
+ ),
24112
+ children
23863
24113
  }
23864
24114
  );
23865
24115
  }
@@ -26803,6 +27053,11 @@ exports.MenubarTrigger = MenubarTrigger;
26803
27053
  exports.MobileHeader = MobileHeader;
26804
27054
  exports.MobileSearch = MobileSearch;
26805
27055
  exports.MultiLevelPushMenu = MultiLevelPushMenu;
27056
+ exports.NSWCard = NSWCard;
27057
+ exports.NSWCardArrow = NSWCardArrow;
27058
+ exports.NSWCardDescription = NSWCardDescription;
27059
+ exports.NSWCardIcon = NSWCardIcon;
27060
+ exports.NSWCardTitle = NSWCardTitle;
26806
27061
  exports.Navbar = Navbar;
26807
27062
  exports.NavbarDivider = NavbarDivider;
26808
27063
  exports.NavbarItem = NavbarItem;
@@ -26820,11 +27075,10 @@ exports.NavigationMenuTrigger = NavigationMenuTrigger;
26820
27075
  exports.NavigationMenuViewport = NavigationMenuViewport;
26821
27076
  exports.PageHeading = PageHeading;
26822
27077
  exports.Pagination = Pagination;
26823
- exports.PaginationContent = PaginationContent;
26824
- exports.PaginationEllipsis = PaginationEllipsis;
26825
- exports.PaginationItem = PaginationItem;
26826
- exports.PaginationLink = PaginationLink;
27078
+ exports.PaginationGap = PaginationGap;
27079
+ exports.PaginationList = PaginationList;
26827
27080
  exports.PaginationNext = PaginationNext;
27081
+ exports.PaginationPage = PaginationPage;
26828
27082
  exports.PaginationPrevious = PaginationPrevious;
26829
27083
  exports.Popover = Popover;
26830
27084
  exports.PopoverAnchor = PopoverAnchor;