@atom-learning/components 12.0.0-beta.3 → 12.0.0-beta.4

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.
@@ -13,8 +13,12 @@ export declare const EmptyState: {
13
13
  as?: never;
14
14
  } & Omit<Omit<{
15
15
  fluid?: boolean | undefined;
16
- } & Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "as" | "fluid">, "children"> & {
16
+ } & Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "as" | "fluid">, "children" | "src"> & {
17
17
  children?: React.ReactNode;
18
+ src?: string | {
19
+ light: string;
20
+ dark: string;
21
+ };
18
22
  }, "as" | "size">) => React.JSX.Element;
19
23
  Title: (props: Omit<{
20
24
  size?: ("lg" | "md" | "sm" | "xl" | "xs" | Partial<Record<"@initial" | "@lg" | "@md" | "@sm" | "@xl", "lg" | "md" | "sm" | "xl" | "xs">>) | undefined;
@@ -1,8 +1,12 @@
1
1
  import * as React from 'react';
2
- declare const StyledEmptyStateImage: import("../..").PolymorphicComponent<(({ children, ref, ...props }: Omit<{
2
+ declare const StyledEmptyStateImage: import("../..").PolymorphicComponent<(({ children, ref, src, className, ...props }: Omit<{
3
3
  fluid?: boolean | undefined;
4
- } & Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "as" | "fluid">, "children"> & {
4
+ } & Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "as" | "fluid">, "children" | "src"> & {
5
5
  children?: React.ReactNode;
6
+ src?: string | {
7
+ light: string;
8
+ dark: string;
9
+ };
6
10
  }) => React.JSX.Element) & {
7
11
  Credit: {
8
12
  ({ author, sourceUrl, licenseName, licenseUrl }: import("..").ImageCreditProps): React.JSX.Element;
@@ -5,8 +5,13 @@ export declare const StyledImage: import("../..").StyledComponent<"img", {
5
5
  }>;
6
6
  type ImageProps = Override<React.ComponentProps<typeof StyledImage>, {
7
7
  children?: React.ReactNode;
8
+ /** A path, or one per colour scheme: `{ light, dark }` */
9
+ src?: string | {
10
+ light: string;
11
+ dark: string;
12
+ };
8
13
  }>;
9
- export declare const Image: (({ children, ref, ...props }: ImageProps) => React.JSX.Element) & {
14
+ export declare const Image: (({ children, ref, src, className, ...props }: ImageProps) => React.JSX.Element) & {
10
15
  Credit: {
11
16
  ({ author, sourceUrl, licenseName, licenseUrl }: import("./ImageCredit").ImageCreditProps): React.JSX.Element;
12
17
  displayName: string;
@@ -1,7 +1,8 @@
1
+ import { cn } from "../../utilities/tw-merge/index.js";
1
2
  import { styled } from "../../styled.js";
2
3
  import { ImageCredit } from "./ImageCredit.js";
3
4
  import "react";
4
- import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
6
  //#region src/components/image/Image.tsx
6
7
  var StyledImage = styled("img", {
7
8
  base: ["align-middle", "max-w-full"],
@@ -13,17 +14,39 @@ var StyledImage = styled("img", {
13
14
  "[[width]]:w-auto"
14
15
  ] } }
15
16
  }, { enablePolymorphism: false });
16
- var ImageComponent = ({ children, ref, ...props }) => {
17
- if (!children) return /* @__PURE__ */ jsx(StyledImage, {
17
+ var darkDisplay = {
18
+ block: "dark:block",
19
+ "inline-block": "dark:inline-block",
20
+ flex: "dark:flex",
21
+ grid: "dark:grid"
22
+ };
23
+ var whitespace = /\s+/;
24
+ var darkDisplayFor = (className) => {
25
+ const classes = new Set(className?.split(whitespace));
26
+ return Object.entries(darkDisplay).find(([display]) => classes.has(display))?.[1] ?? "dark:inline";
27
+ };
28
+ var ImageComponent = ({ children, ref, src, className, ...props }) => {
29
+ const image = typeof src === "object" ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(StyledImage, {
30
+ loading: "lazy",
31
+ ...props,
32
+ src: src.light,
33
+ ref,
34
+ className: cn(className, "dark:hidden")
35
+ }), /* @__PURE__ */ jsx(StyledImage, {
36
+ loading: "lazy",
37
+ ...props,
38
+ src: src.dark,
39
+ className: cn(className, "hidden", darkDisplayFor(className))
40
+ })] }) : /* @__PURE__ */ jsx(StyledImage, {
18
41
  ...props,
19
- ref
42
+ src,
43
+ ref,
44
+ className
20
45
  });
46
+ if (!children) return image;
21
47
  return /* @__PURE__ */ jsxs("figure", {
22
48
  className: "relative overflow-hidden",
23
- children: [/* @__PURE__ */ jsx(StyledImage, {
24
- ...props,
25
- ref
26
- }), children]
49
+ children: [image, children]
27
50
  });
28
51
  };
29
52
  var Image = /* @__PURE__ */ Object.assign(ImageComponent, {
@@ -1 +1 @@
1
- {"version":3,"file":"Image.js","names":[],"sources":["../../../src/components/image/Image.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { styled } from '../../styled'\nimport type { Override } from '../../utilities/types'\nimport { ImageCredit } from './ImageCredit'\n\n// default styling lifted from https://www.zachleat.com/web/fluid-images/#copy-and-paste\n// (potentially unnecessary now we've moved to Tailwind)\nexport const StyledImage = styled(\n 'img',\n {\n base: ['align-middle', 'max-w-full'],\n variants: {\n fluid: {\n true: [\n \"[[src$='.svg']]:h-auto\",\n \"[[src$='.svg']]:max-w-none\",\n \"[[src$='.svg']]:w-full\",\n '[[width]]:[[height]]:h-auto',\n '[[width]]:w-auto'\n ]\n }\n }\n },\n { enablePolymorphism: false }\n)\n\ntype ImageProps = Override<\n React.ComponentProps<typeof StyledImage>,\n { children?: React.ReactNode }\n>\n\nconst ImageComponent = ({ children, ref, ...props }: ImageProps) => {\n if (!children) {\n return <StyledImage {...props} ref={ref} />\n }\n\n return (\n <figure className=\"relative overflow-hidden\">\n <StyledImage {...props} ref={ref} />\n {children}\n </figure>\n )\n}\n\nexport const Image = /* @__PURE__ */ Object.assign(ImageComponent, {\n Credit: ImageCredit,\n displayName: 'Image'\n})\n"],"mappings":";;;;;AAQA,IAAa,cAAc,OACzB,OACA;CACE,MAAM,CAAC,gBAAgB,YAAY;CACnC,UAAU,EACR,OAAO,EACL,MAAM;EACJ;EACA;EACA;EACA;EACA;CACF,EACF,EACF;AACF,GACA,EAAE,oBAAoB,MAAM,CAC9B;AAOA,IAAM,kBAAkB,EAAE,UAAU,KAAK,GAAG,YAAwB;CAClE,IAAI,CAAC,UACH,OAAO,oBAAC,aAAD;EAAa,GAAI;EAAY;CAAM,CAAA;CAG5C,OACE,qBAAC,UAAD;EAAQ,WAAU;YAAlB,CACE,oBAAC,aAAD;GAAa,GAAI;GAAY;EAAM,CAAA,GAClC,QACK;;AAEZ;AAEA,IAAa,QAAwB,uBAAO,OAAO,gBAAgB;CACjE,QAAQ;CACR,aAAa;AACf,CAAC"}
1
+ {"version":3,"file":"Image.js","names":[],"sources":["../../../src/components/image/Image.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { cn, styled } from '../../styled'\nimport type { Override } from '../../utilities/types'\nimport { ImageCredit } from './ImageCredit'\n\n// default styling lifted from https://www.zachleat.com/web/fluid-images/#copy-and-paste\n// (potentially unnecessary now we've moved to Tailwind)\nexport const StyledImage = styled(\n 'img',\n {\n base: ['align-middle', 'max-w-full'],\n variants: {\n fluid: {\n true: [\n \"[[src$='.svg']]:h-auto\",\n \"[[src$='.svg']]:max-w-none\",\n \"[[src$='.svg']]:w-full\",\n '[[width]]:[[height]]:h-auto',\n '[[width]]:w-auto'\n ]\n }\n }\n },\n { enablePolymorphism: false }\n)\n\ntype ImageProps = Override<\n React.ComponentProps<typeof StyledImage>,\n {\n children?: React.ReactNode\n /** A path, or one per colour scheme: `{ light, dark }` */\n src?: string | { light: string; dark: string }\n }\n>\n\n// The dark image's display in dark: the caller's display class, else an img's\n// inline. Literal classes, so the apps' Tailwind builds can find them.\nconst darkDisplay = {\n block: 'dark:block',\n 'inline-block': 'dark:inline-block',\n flex: 'dark:flex',\n grid: 'dark:grid'\n}\nconst whitespace = /\\s+/\nconst darkDisplayFor = (className?: string) => {\n const classes = new Set(className?.split(whitespace))\n return (\n Object.entries(darkDisplay).find(([display]) =>\n classes.has(display)\n )?.[1] ?? 'dark:inline'\n )\n}\n\nconst ImageComponent = ({\n children,\n ref,\n src,\n className,\n ...props\n}: ImageProps) => {\n // Both render and CSS shows one, so the right image is there on first\n // paint and inside nested dark areas. Lazy loading stops the browser\n // fetching the hidden one.\n const image =\n typeof src === 'object' ? (\n <>\n <StyledImage\n loading=\"lazy\"\n {...props}\n src={src.light}\n ref={ref}\n className={cn(className, 'dark:hidden')}\n />\n <StyledImage\n loading=\"lazy\"\n {...props}\n src={src.dark}\n className={cn(className, 'hidden', darkDisplayFor(className))}\n />\n </>\n ) : (\n <StyledImage {...props} src={src} ref={ref} className={className} />\n )\n\n if (!children) return image\n\n return (\n <figure className=\"relative overflow-hidden\">\n {image}\n {children}\n </figure>\n )\n}\n\nexport const Image = /* @__PURE__ */ Object.assign(ImageComponent, {\n Credit: ImageCredit,\n displayName: 'Image'\n})\n"],"mappings":";;;;;;AAQA,IAAa,cAAc,OACzB,OACA;CACE,MAAM,CAAC,gBAAgB,YAAY;CACnC,UAAU,EACR,OAAO,EACL,MAAM;EACJ;EACA;EACA;EACA;EACA;CACF,EACF,EACF;AACF,GACA,EAAE,oBAAoB,MAAM,CAC9B;AAaA,IAAM,cAAc;CAClB,OAAO;CACP,gBAAgB;CAChB,MAAM;CACN,MAAM;AACR;AACA,IAAM,aAAa;AACnB,IAAM,kBAAkB,cAAuB;CAC7C,MAAM,UAAU,IAAI,IAAI,WAAW,MAAM,UAAU,CAAC;CACpD,OACE,OAAO,QAAQ,WAAW,CAAC,CAAC,MAAM,CAAC,aACjC,QAAQ,IAAI,OAAO,CACrB,CAAC,GAAG,MAAM;AAEd;AAEA,IAAM,kBAAkB,EACtB,UACA,KACA,KACA,WACA,GAAG,YACa;CAIhB,MAAM,QACJ,OAAO,QAAQ,WACb,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,aAAD;EACE,SAAQ;EACR,GAAI;EACJ,KAAK,IAAI;EACJ;EACL,WAAW,GAAG,WAAW,aAAa;CACvC,CAAA,GACD,oBAAC,aAAD;EACE,SAAQ;EACR,GAAI;EACJ,KAAK,IAAI;EACT,WAAW,GAAG,WAAW,UAAU,eAAe,SAAS,CAAC;CAC7D,CAAA,CACD,EAAA,CAAA,IAEF,oBAAC,aAAD;EAAa,GAAI;EAAY;EAAU;EAAgB;CAAY,CAAA;CAGvE,IAAI,CAAC,UAAU,OAAO;CAEtB,OACE,qBAAC,UAAD;EAAQ,WAAU;YAAlB,CACG,OACA,QACK;;AAEZ;AAEA,IAAa,QAAwB,uBAAO,OAAO,gBAAgB;CACjE,QAAQ;CACR,aAAa;AACf,CAAC"}
@@ -10,10 +10,14 @@ export declare const SideBar: (({ className, children, type, offset, style, ...r
10
10
  Brand: React.FC<React.ClassAttributes<HTMLAnchorElement> & React.AnchorHTMLAttributes<HTMLAnchorElement> & {
11
11
  as?: React.ElementType;
12
12
  }>;
13
- BrandLogo: (({ children, ref, ...props }: Omit<{
13
+ BrandLogo: (({ children, ref, src, className, ...props }: Omit<{
14
14
  fluid?: boolean | undefined;
15
- } & Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "as" | "fluid">, "children"> & {
15
+ } & Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "as" | "fluid">, "children" | "src"> & {
16
16
  children?: React.ReactNode;
17
+ src?: string | {
18
+ light: string;
19
+ dark: string;
20
+ };
17
21
  }) => React.JSX.Element) & {
18
22
  Credit: {
19
23
  ({ author, sourceUrl, licenseName, licenseUrl }: import("..").ImageCreditProps): React.JSX.Element;
@@ -5,10 +5,14 @@ export declare const SideBarFooter: import("../..").PolymorphicComponent<"div",
5
5
  export declare const SideBarBrand: React.FC<React.ComponentPropsWithRef<'a'> & {
6
6
  as?: React.ElementType;
7
7
  }>;
8
- export declare const SideBarBrandLogo: (({ children, ref, ...props }: Omit<{
8
+ export declare const SideBarBrandLogo: (({ children, ref, src, className, ...props }: Omit<{
9
9
  fluid?: boolean | undefined;
10
- } & Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "as" | "fluid">, "children"> & {
10
+ } & Omit<React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "as" | "fluid">, "children" | "src"> & {
11
11
  children?: React.ReactNode;
12
+ src?: string | {
13
+ light: string;
14
+ dark: string;
15
+ };
12
16
  }) => React.JSX.Element) & {
13
17
  Credit: {
14
18
  ({ author, sourceUrl, licenseName, licenseUrl }: import("..").ImageCreditProps): React.JSX.Element;