@nswds/app 1.67.0 → 1.69.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.66.1"};
13692
+ version: "1.68.0"};
13693
13693
  function Heading({
13694
13694
  className,
13695
13695
  trim = "normal",
@@ -23735,65 +23735,58 @@ function NavigationMenuIndicator({
23735
23735
  }
23736
23736
  var styles4 = {
23737
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
23738
+ "group relative mx-auto flex items-stretch w-full max-w-md flex-col overflow-hidden rounded-md hover:cursor-pointer",
23739
+ "bg-(--nsw-card-bg) text-(--nsw-card-text)",
23742
23740
  "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
- ],
23746
- default: [
23747
- // Base
23748
- "",
23749
- // Hover
23750
- ""
23741
+ "transition-colors duration-150 ease-out motion-reduce:transition-none",
23742
+ "[--nsw-card-top-border-base:var(--color-accent-600)]",
23743
+ "[--nsw-card-top-border-hover:var(--nsw-card-top-border-base)]"
23751
23744
  ],
23745
+ default: [""],
23752
23746
  highlight: [
23753
- "border-none",
23754
- // Highlight
23755
- "after:absolute after:inset-x-0 after:top-0 after:h-1 after:content-['']",
23756
- "after:pointer-events-none after:z-10 after:rounded-t-md after:bg-[var(--nsw-card-top-border)]",
23757
- // Hover
23758
- "hover:bg-primary-800 hover:after:bg-primary-800"
23747
+ "",
23748
+ 'data-[has-image=false]:after:content-[""]',
23749
+ "data-[has-image=false]:after:absolute data-[has-image=false]:after:inset-x-0 data-[has-image=false]:after:top-0 data-[has-image=false]:after:h-1",
23750
+ "data-[has-image=false]:after:pointer-events-none data-[has-image=false]:after:z-10 data-[has-image=false]:after:rounded-t-md",
23751
+ "data-[has-image=false]:after:bg-[var(--nsw-card-top-border-base)]",
23752
+ "data-[has-image=false]:hover:after:bg-[var(--nsw-card-top-border-hover)]"
23759
23753
  ],
23754
+ headline: ["", ""],
23760
23755
  colors: {
23761
23756
  white: [
23762
- // Base
23763
- "[--nsw-card-bg:white] [--nsw-card-border:var(--color-grey-200)] [--nsw-card-text:grey-800]",
23764
- // Hover
23765
- "hover:[--nsw-card-bg:var(--color-primary-800)] hover:[--nsw-card-border:var(--color-primary-800)] hover:[--nsw-card-text:white]"
23757
+ "[--nsw-card-bg:white] [--nsw-card-border:var(--color-grey-200)] [--nsw-card-text:grey-800] [--nsw-card-image-border:var(--color-grey-200)]",
23758
+ "hover:[--nsw-card-bg:var(--color-primary-800)] hover:[--nsw-card-border:var(--color-primary-800)] hover:[--nsw-card-text:white]",
23759
+ // 🔧 top-border color pair for highlight (base + hover)
23760
+ "[--nsw-card-top-border-base:var(--color-grey-200)]",
23761
+ "[--nsw-card-top-border-hover:var(--color-primary-800)]"
23766
23762
  ],
23767
23763
  primary: [
23768
- // Base
23769
23764
  "[--nsw-card-bg:var(--color-primary-800)] [--nsw-card-border:var(--color-primary-800)] [--nsw-card-text:white]",
23770
- // Hover
23771
- "hover:[--nsw-card-bg:white] hover:[--nsw-card-border:var(--color-grey-200)] hover:[--nsw-card-text:grey-800]"
23765
+ "hover:[--nsw-card-bg:white] hover:[--nsw-card-border:var(--color-grey-200)] hover:[--nsw-card-text:grey-800]",
23766
+ "[--nsw-card-top-border-base:var(--color-primary-800)]",
23767
+ "[--nsw-card-top-border-hover:var(--color-grey-200)]"
23772
23768
  ],
23773
23769
  secondary: [
23774
- // Base
23775
23770
  "[--nsw-card-bg:var(--color-primary-200)] [--nsw-card-border:var(--color-primary-200)] [--nsw-card-text:var(--color-primary-800)]",
23776
- // Hover
23777
- "hover:[--nsw-card-bg:var(--color-primary-800)] hover:[--nsw-card-border:var(--color-primary-800)] hover:[--nsw-card-text:white]"
23771
+ "hover:[--nsw-card-bg:var(--color-primary-800)] hover:[--nsw-card-border:var(--color-primary-800)] hover:[--nsw-card-text:white]",
23772
+ "[--nsw-card-top-border-base:var(--color-primary-200)]",
23773
+ "[--nsw-card-top-border-hover:var(--color-primary-800)]"
23778
23774
  ],
23779
23775
  tertiary: [
23780
- // Base
23781
- "[--nsw-card-bg:var(--color-primary-600)] [--nsw-card-border:var(--color-primary-600)] [--nsw-card-text:var(--color-primary-600)]",
23782
- // Hover
23783
- "hover:[--nsw-card-bg:var(--color-primary-800)] hover:[--nsw-card-border:var(--color-primary-800)] hover:[--nsw-card-text:white]"
23776
+ "[--nsw-card-bg:var(--color-primary-600)] [--nsw-card-border:var(--color-primary-600)] [--nsw-card-text:white]",
23777
+ "hover:[--nsw-card-bg:var(--color-primary-800)] hover:[--nsw-card-border:var(--color-primary-800)] hover:[--nsw-card-text:white]",
23778
+ "[--nsw-card-top-border-base:var(--color-primary-600)]",
23779
+ "[--nsw-card-top-border-hover:var(--color-primary-800)]"
23784
23780
  ]
23785
23781
  },
23786
- size: {
23787
- default: "",
23788
- sm: "",
23789
- lg: ""
23790
- }
23782
+ size: { default: "", sm: "", lg: "" }
23791
23783
  };
23792
23784
  var cardVariants = classVarianceAuthority.cva(styles4.base, {
23793
23785
  variants: {
23794
23786
  variant: {
23795
23787
  highlight: styles4.highlight,
23796
- default: styles4.default
23788
+ default: styles4.default,
23789
+ headline: styles4.headline
23797
23790
  },
23798
23791
  color: {
23799
23792
  white: styles4.colors.white,
@@ -23823,7 +23816,8 @@ function NSWCardTitle({
23823
23816
  Link,
23824
23817
  {
23825
23818
  className: cn(
23826
- "mb-6 text-3xl font-bold text-grey-800",
23819
+ "text-xl font-bold text-grey-800",
23820
+ "group-data-[variant=headline]:text-2xl",
23827
23821
  "group-hover:text-white",
23828
23822
  "group-data-[color=primary]:text-white",
23829
23823
  "group-hover:group-data-[color=primary]:text-grey-800",
@@ -23841,6 +23835,7 @@ function NSWCardTitle({
23841
23835
  }
23842
23836
  );
23843
23837
  }
23838
+ NSWCardTitle.displayName = "NSWCardTitle";
23844
23839
  function NSWCardDescription({
23845
23840
  children,
23846
23841
  className,
@@ -23850,7 +23845,7 @@ function NSWCardDescription({
23850
23845
  "p",
23851
23846
  {
23852
23847
  className: cn(
23853
- "mb-8 text-lg leading-relaxed text-grey-600",
23848
+ "mt-4 text-base leading-relaxed text-grey-600",
23854
23849
  "group-hover:text-white",
23855
23850
  "group-data-[color=primary]:text-white",
23856
23851
  "group-hover:group-data-[color=primary]:text-grey-800",
@@ -23864,22 +23859,74 @@ function NSWCardDescription({
23864
23859
  }
23865
23860
  );
23866
23861
  }
23867
- function NSWCardArrow({ className, ...props }) {
23868
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex", className), ...props, children: /* @__PURE__ */ jsxRuntime.jsx(
23862
+ NSWCardDescription.displayName = "NSWCardDescription";
23863
+ function NSWCardArrow({ color: color2, className, ...props }) {
23864
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-auto pt-12", className), ...props, children: /* @__PURE__ */ jsxRuntime.jsx(
23869
23865
  Icons.east,
23870
23866
  {
23871
23867
  className: cn(
23872
- "h-8 w-8",
23868
+ "size-8 text-primary-800",
23873
23869
  "group-hover:text-white",
23874
23870
  "group-data-[color=primary]:text-white",
23875
23871
  "group-hover:group-data-[color=primary]:text-grey-800",
23876
23872
  "group-data-[color=secondary]:text-primary-800",
23877
23873
  "group-hover:group-data-[color=secondary]:text-white",
23878
- "group-data-[color=tertiary]:text-white"
23874
+ "group-data-[color=tertiary]:text-white",
23875
+ "transition-transform group-hover:translate-x-0.5",
23876
+ color2
23879
23877
  )
23880
23878
  }
23881
23879
  ) });
23882
23880
  }
23881
+ NSWCardArrow.displayName = "NSWCardArrow";
23882
+ function NSWCardImg({
23883
+ imgSrc,
23884
+ imgAlt,
23885
+ className,
23886
+ ...props
23887
+ }) {
23888
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative w-full shadow-(--nsw-card-image-border)", className), ...props, children: [
23889
+ /* @__PURE__ */ jsxRuntime.jsx(
23890
+ Image2__default.default,
23891
+ {
23892
+ alt: imgAlt,
23893
+ src: imgSrc,
23894
+ className: "aspect-video w-full rounded-md rounded-b-none object-cover sm:aspect-2/1 lg:aspect-3/2",
23895
+ width: 400,
23896
+ height: 300
23897
+ }
23898
+ ),
23899
+ /* @__PURE__ */ jsxRuntime.jsx(
23900
+ "div",
23901
+ {
23902
+ className: cn(
23903
+ "absolute inset-0 rounded-md rounded-b-none dark:inset-ring-white/10",
23904
+ "shadow-[inset_0_1px_0_var(--nsw-card-image-border),inset_1px_0_0_var(--nsw-card-image-border),inset_-1px_0_0_var(--nsw-card-image-border)]",
23905
+ "group-data-[variant=highlight]:border-b-4",
23906
+ "group-data-[variant=highlight]:border-b-[var(--nsw-card-top-border-base)]",
23907
+ "group-data-[variant=highlight]:group-hover:border-b-[var(--nsw-card-top-border-hover)]"
23908
+ )
23909
+ }
23910
+ )
23911
+ ] });
23912
+ }
23913
+ NSWCardImg.displayName = "NSWCardImg";
23914
+ function NSWCardIcon({
23915
+ children,
23916
+ backgroundColor = "bg-primary-600",
23917
+ size = "size-12",
23918
+ className
23919
+ }) {
23920
+ return /* @__PURE__ */ jsxRuntime.jsx(
23921
+ "div",
23922
+ {
23923
+ className: cn(size, "mb-6 flex items-center justify-center rounded-full", className),
23924
+ style: { backgroundColor },
23925
+ children
23926
+ }
23927
+ );
23928
+ }
23929
+ NSWCardIcon.displayName = "NSWCardIcon";
23883
23930
  function NSWCard({
23884
23931
  children,
23885
23932
  topBorder = "var(--color-accent-600)",
@@ -23891,6 +23938,15 @@ function NSWCard({
23891
23938
  }) {
23892
23939
  const classes = cn(cardVariants({ variant, color: color2, size }), className);
23893
23940
  const isHighlight = variant === "highlight";
23941
+ const isCardImg = (child) => React5__namespace.isValidElement(child) && (child.type === NSWCardImg || typeof child.type === "function" && child.type.displayName === "NSWCardImg");
23942
+ const all = React5__namespace.Children.toArray(children);
23943
+ const imageChildren = all.filter(isCardImg).map(
23944
+ (child) => React5__namespace.isValidElement(child) ? React5__namespace.cloneElement(child, {
23945
+ className: cn(child.props?.className)
23946
+ }) : child
23947
+ );
23948
+ const bodyChildren = all.filter((c) => !isCardImg(c));
23949
+ const hasImage = imageChildren.length > 0;
23894
23950
  return /* @__PURE__ */ jsxRuntime.jsx(
23895
23951
  "div",
23896
23952
  {
@@ -23898,13 +23954,39 @@ function NSWCard({
23898
23954
  "data-variant": variant,
23899
23955
  "data-color": color2,
23900
23956
  "data-size": size,
23901
- style: isHighlight ? { ["--nsw-card-top-border"]: topBorder } : void 0,
23957
+ "data-has-image": hasImage ? "true" : "false",
23958
+ style: isHighlight && topBorder ? { ["--nsw-card-top-border-base"]: topBorder } : void 0,
23902
23959
  className: classes,
23903
23960
  ...props,
23904
- 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 })
23961
+ children: variant === "highlight" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
23962
+ hasImage && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: imageChildren }),
23963
+ /* @__PURE__ */ jsxRuntime.jsx(
23964
+ "div",
23965
+ {
23966
+ className: cn(
23967
+ "h-full rounded-md border border-(--nsw-card-border)",
23968
+ hasImage && "border-t-none rounded-t-none"
23969
+ ),
23970
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full flex-col p-8", children: bodyChildren })
23971
+ }
23972
+ )
23973
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
23974
+ hasImage && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: imageChildren }),
23975
+ /* @__PURE__ */ jsxRuntime.jsx(
23976
+ "div",
23977
+ {
23978
+ className: cn(
23979
+ "flex h-full flex-col rounded-md border border-(--nsw-card-border) p-8",
23980
+ hasImage && "border-t-none rounded-t-none"
23981
+ ),
23982
+ children: bodyChildren
23983
+ }
23984
+ )
23985
+ ] })
23905
23986
  }
23906
23987
  );
23907
23988
  }
23989
+ NSWCard.displayName = "NSWCard";
23908
23990
  function Wrapper({
23909
23991
  children,
23910
23992
  className,
@@ -27038,6 +27120,8 @@ exports.MultiLevelPushMenu = MultiLevelPushMenu;
27038
27120
  exports.NSWCard = NSWCard;
27039
27121
  exports.NSWCardArrow = NSWCardArrow;
27040
27122
  exports.NSWCardDescription = NSWCardDescription;
27123
+ exports.NSWCardIcon = NSWCardIcon;
27124
+ exports.NSWCardImg = NSWCardImg;
27041
27125
  exports.NSWCardTitle = NSWCardTitle;
27042
27126
  exports.Navbar = Navbar;
27043
27127
  exports.NavbarDivider = NavbarDivider;