@dust-tt/sparkle 0.1.3 → 0.1.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.
@@ -1,11 +1,12 @@
1
- import React, { MouseEvent } from "react";
1
+ import React, { MouseEvent, ComponentType } from "react";
2
2
  type ButtonProps = {
3
- type?: "primary" | "secondary";
3
+ type?: "primary" | "secondary" | "tertiary";
4
4
  size?: "xs" | "sm" | "md";
5
5
  onClick?: (event: MouseEvent<HTMLButtonElement>) => void;
6
6
  disabled?: boolean;
7
7
  label: string;
8
+ icon?: ComponentType;
8
9
  className?: string;
9
10
  };
10
- export declare function Button({ type, size, onClick, disabled, label, className, }: ButtonProps): React.JSX.Element;
11
+ export declare function Button({ type, size, onClick, disabled, label, icon, className, }: ButtonProps): React.JSX.Element;
11
12
  export {};
@@ -1,9 +1,20 @@
1
1
  import React from "react";
2
- import { classNames } from "../lib/utils";
2
+ import { classNames } from "@sparkle/lib/utils";
3
+ import { Icon } from "./Icon";
3
4
  var sizeClasses = {
4
- xs: "px-2.5 py-1.5 text-xs font-medium rounded-md",
5
- sm: "px-3 py-2 text-xs font-bold rounded-lg",
6
- md: "px-4 py-3 text-sm font-bold rounded-xl",
5
+ xs: "gap-x-1 px-3 py-1.5 text-xs font-semibold",
6
+ sm: "gap-x-1 px-4 py-2 text-sm font-semibold",
7
+ md: "gap-x-1.5 px-5 py-3 text-sm font-bold",
8
+ };
9
+ var containerClasses = {
10
+ xs: "px-0.5",
11
+ sm: "px-1",
12
+ md: "px-1",
13
+ };
14
+ var iconSizeClasses = {
15
+ xs: "h-4 w-4",
16
+ sm: "h-5 w-5",
17
+ md: "h-5 w-5",
7
18
  };
8
19
  var typeClasses = {
9
20
  primary: {
@@ -17,11 +28,21 @@ var typeClasses = {
17
28
  },
18
29
  },
19
30
  secondary: {
20
- base: "text-action-500 border-structure-200",
31
+ base: "text-action-500 border-structure-300 bg-structure-0",
21
32
  hover: "hover:bg-action-50 hover:border-action-300",
22
33
  active: "active:bg-action-100 active:border-action-500",
23
34
  dark: {
24
- base: "dark:text-action-500-dark dark:border-structure-300-dark",
35
+ base: "dark:text-action-500-dark dark:border-structure-300-dark dark:bg-structure-50-dark",
36
+ hover: "dark:hover:bg-action-50-dark dark:hover:border-action-300-dark",
37
+ active: "dark:active:bg-action-100-dark dark:active:border-action-500-dark",
38
+ },
39
+ },
40
+ tertiary: {
41
+ base: "text-element-700 border-structure-300 bg-structure-0",
42
+ hover: "hover:text-element-800 hover:bg-action-50 hover:border-action-300",
43
+ active: "active:bg-action-100 active:border-action-500",
44
+ dark: {
45
+ base: "dark:text-element-700-dark dark:border-structure-300-dark dark:bg-structure-50-dark",
25
46
  hover: "dark:hover:bg-action-50-dark dark:hover:border-action-300-dark",
26
47
  active: "dark:active:bg-action-100-dark dark:active:border-action-500-dark",
27
48
  },
@@ -29,8 +50,12 @@ var typeClasses = {
29
50
  };
30
51
  export function Button(_a) {
31
52
  var _b, _c, _d, _e, _f, _g, _h, _j, _k;
32
- var _l = _a.type, type = _l === void 0 ? "primary" : _l, _m = _a.size, size = _m === void 0 ? "sm" : _m, onClick = _a.onClick, _o = _a.disabled, disabled = _o === void 0 ? false : _o, label = _a.label, _p = _a.className, className = _p === void 0 ? "" : _p;
33
- var buttonClasses = classNames("inline-flex items-center border-2 transition-colors duration-200", sizeClasses[size], (_b = typeClasses[type]) === null || _b === void 0 ? void 0 : _b.base, (_c = typeClasses[type]) === null || _c === void 0 ? void 0 : _c.hover, (_d = typeClasses[type]) === null || _d === void 0 ? void 0 : _d.active, (_f = (_e = typeClasses[type]) === null || _e === void 0 ? void 0 : _e.dark) === null || _f === void 0 ? void 0 : _f.base, (_h = (_g = typeClasses[type]) === null || _g === void 0 ? void 0 : _g.dark) === null || _h === void 0 ? void 0 : _h.hover, (_k = (_j = typeClasses[type]) === null || _j === void 0 ? void 0 : _j.dark) === null || _k === void 0 ? void 0 : _k.active, disabled ? "cursor-not-allowed opacity-50 bg-gray-200" : "", className);
34
- return (React.createElement("button", { type: "button", className: buttonClasses, onClick: onClick, disabled: disabled, "aria-label": label }, label));
53
+ var _l = _a.type, type = _l === void 0 ? "primary" : _l, _m = _a.size, size = _m === void 0 ? "sm" : _m, onClick = _a.onClick, _o = _a.disabled, disabled = _o === void 0 ? false : _o, label = _a.label, icon = _a.icon, _p = _a.className, className = _p === void 0 ? "" : _p;
54
+ var buttonClasses = classNames("inline-flex items-center border transition-all ease-out duration-400 box-border rounded-full scale-95 hover:scale-100 hover:drop-shadow-md active:scale-95 active:drop-shadow-none", sizeClasses[size], (_b = typeClasses[type]) === null || _b === void 0 ? void 0 : _b.base, (_c = typeClasses[type]) === null || _c === void 0 ? void 0 : _c.hover, (_d = typeClasses[type]) === null || _d === void 0 ? void 0 : _d.active, (_f = (_e = typeClasses[type]) === null || _e === void 0 ? void 0 : _e.dark) === null || _f === void 0 ? void 0 : _f.base, (_h = (_g = typeClasses[type]) === null || _g === void 0 ? void 0 : _g.dark) === null || _h === void 0 ? void 0 : _h.hover, (_k = (_j = typeClasses[type]) === null || _j === void 0 ? void 0 : _j.dark) === null || _k === void 0 ? void 0 : _k.active, disabled ? "cursor-not-allowed opacity-50 bg-gray-200" : "", className);
55
+ var iconClasses = classNames(iconSizeClasses[size]);
56
+ var finalContainerClasses = classNames(containerClasses[size]);
57
+ return (React.createElement("button", { type: "button", className: buttonClasses, onClick: onClick, disabled: disabled, "aria-label": label },
58
+ icon && React.createElement(Icon, { IconComponent: icon, className: iconClasses }),
59
+ React.createElement("div", { className: finalContainerClasses }, label)));
35
60
  }
36
61
  //# sourceMappingURL=Button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/components/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAW1C,IAAM,WAAW,GAAG;IAClB,EAAE,EAAE,8CAA8C;IAClD,EAAE,EAAE,wCAAwC;IAC5C,EAAE,EAAE,wCAAwC;CAC7C,CAAC;AAEF,IAAM,WAAW,GAAG;IAClB,OAAO,EAAE;QACP,IAAI,EAAE,4CAA4C;QAClD,KAAK,EAAE,6CAA6C;QACpD,MAAM,EAAE,+CAA+C;QACvD,IAAI,EAAE;YACJ,IAAI,EAAE,qDAAqD;YAC3D,KAAK,EAAE,iEAAiE;YACxE,MAAM,EACJ,mEAAmE;SACtE;KACF;IACD,SAAS,EAAE;QACT,IAAI,EAAE,sCAAsC;QAC5C,KAAK,EAAE,4CAA4C;QACnD,MAAM,EAAE,+CAA+C;QACvD,IAAI,EAAE;YACJ,IAAI,EAAE,0DAA0D;YAChE,KAAK,EAAE,gEAAgE;YACvE,MAAM,EACJ,mEAAmE;SACtE;KACF;CACF,CAAC;AAEF,MAAM,UAAU,MAAM,CAAC,EAOT;;QANZ,YAAgB,EAAhB,IAAI,mBAAG,SAAS,KAAA,EAChB,YAAW,EAAX,IAAI,mBAAG,IAAI,KAAA,EACX,OAAO,aAAA,EACP,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,KAAK,WAAA,EACL,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA;IAEd,IAAM,aAAa,GAAG,UAAU,CAC9B,kEAAkE,EAClE,WAAW,CAAC,IAAI,CAAC,EACjB,MAAA,WAAW,CAAC,IAAI,CAAC,0CAAE,IAAI,EACvB,MAAA,WAAW,CAAC,IAAI,CAAC,0CAAE,KAAK,EACxB,MAAA,WAAW,CAAC,IAAI,CAAC,0CAAE,MAAM,EACzB,MAAA,MAAA,WAAW,CAAC,IAAI,CAAC,0CAAE,IAAI,0CAAE,IAAI,EAC7B,MAAA,MAAA,WAAW,CAAC,IAAI,CAAC,0CAAE,IAAI,0CAAE,KAAK,EAC9B,MAAA,MAAA,WAAW,CAAC,IAAI,CAAC,0CAAE,IAAI,0CAAE,MAAM,EAC/B,QAAQ,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,EAAE,EAC3D,SAAS,CACV,CAAC;IAEF,OAAO,CACL,gCACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,gBACN,KAAK,IAEhB,KAAK,CACC,CACV,CAAC;AACJ,CAAC","sourcesContent":["import React, { MouseEvent } from \"react\";\n\nimport { classNames } from \"../lib/utils\";\n\ntype ButtonProps = {\n type?: \"primary\" | \"secondary\";\n size?: \"xs\" | \"sm\" | \"md\";\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n disabled?: boolean;\n label: string;\n className?: string;\n};\n\nconst sizeClasses = {\n xs: \"px-2.5 py-1.5 text-xs font-medium rounded-md\",\n sm: \"px-3 py-2 text-xs font-bold rounded-lg\",\n md: \"px-4 py-3 text-sm font-bold rounded-xl\",\n};\n\nconst typeClasses = {\n primary: {\n base: \"text-white bg-action-500 border-action-600\",\n hover: \"hover:bg-action-400 hover:border-action-500\",\n active: \"active:bg-action-600 active:border-action-700\",\n dark: {\n base: \"dark:bg-action-500-dark dark:border-action-600-dark\",\n hover: \"dark:hover:bg-action-500-dark dark:hover:border-action-500-dark\",\n active:\n \"dark:active:bg-action-600-dark dark:active:border-action-700-dark\",\n },\n },\n secondary: {\n base: \"text-action-500 border-structure-200\",\n hover: \"hover:bg-action-50 hover:border-action-300\",\n active: \"active:bg-action-100 active:border-action-500\",\n dark: {\n base: \"dark:text-action-500-dark dark:border-structure-300-dark\",\n hover: \"dark:hover:bg-action-50-dark dark:hover:border-action-300-dark\",\n active:\n \"dark:active:bg-action-100-dark dark:active:border-action-500-dark\",\n },\n },\n};\n\nexport function Button({\n type = \"primary\",\n size = \"sm\",\n onClick,\n disabled = false,\n label,\n className = \"\",\n}: ButtonProps) {\n const buttonClasses = classNames(\n \"inline-flex items-center border-2 transition-colors duration-200\",\n sizeClasses[size],\n typeClasses[type]?.base,\n typeClasses[type]?.hover,\n typeClasses[type]?.active,\n typeClasses[type]?.dark?.base,\n typeClasses[type]?.dark?.hover,\n typeClasses[type]?.dark?.active,\n disabled ? \"cursor-not-allowed opacity-50 bg-gray-200\" : \"\",\n className\n );\n\n return (\n <button\n type=\"button\"\n className={buttonClasses}\n onClick={onClick}\n disabled={disabled}\n aria-label={label}\n >\n {label}\n </button>\n );\n}\n"]}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/components/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAY9B,IAAM,WAAW,GAAG;IAClB,EAAE,EAAE,2CAA2C;IAC/C,EAAE,EAAE,yCAAyC;IAC7C,EAAE,EAAE,uCAAuC;CAC5C,CAAC;AAEF,IAAM,gBAAgB,GAAG;IACvB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;CACX,CAAC;AAEF,IAAM,eAAe,GAAG;IACtB,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;CACd,CAAC;AAEF,IAAM,WAAW,GAAG;IAClB,OAAO,EAAE;QACP,IAAI,EAAE,4CAA4C;QAClD,KAAK,EAAE,6CAA6C;QACpD,MAAM,EAAE,+CAA+C;QACvD,IAAI,EAAE;YACJ,IAAI,EAAE,qDAAqD;YAC3D,KAAK,EAAE,iEAAiE;YACxE,MAAM,EACJ,mEAAmE;SACtE;KACF;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qDAAqD;QAC3D,KAAK,EAAE,4CAA4C;QACnD,MAAM,EAAE,+CAA+C;QACvD,IAAI,EAAE;YACJ,IAAI,EAAE,oFAAoF;YAC1F,KAAK,EAAE,gEAAgE;YACvE,MAAM,EACJ,mEAAmE;SACtE;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,sDAAsD;QAC5D,KAAK,EAAE,mEAAmE;QAC1E,MAAM,EAAE,+CAA+C;QACvD,IAAI,EAAE;YACJ,IAAI,EAAE,qFAAqF;YAC3F,KAAK,EAAE,gEAAgE;YACvE,MAAM,EACJ,mEAAmE;SACtE;KACF;CACF,CAAC;AAEF,MAAM,UAAU,MAAM,CAAC,EAQT;;QAPZ,YAAgB,EAAhB,IAAI,mBAAG,SAAS,KAAA,EAChB,YAAW,EAAX,IAAI,mBAAG,IAAI,KAAA,EACX,OAAO,aAAA,EACP,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,KAAK,WAAA,EACL,IAAI,UAAA,EACJ,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA;IAEd,IAAM,aAAa,GAAG,UAAU,CAC9B,oLAAoL,EACpL,WAAW,CAAC,IAAI,CAAC,EACjB,MAAA,WAAW,CAAC,IAAI,CAAC,0CAAE,IAAI,EACvB,MAAA,WAAW,CAAC,IAAI,CAAC,0CAAE,KAAK,EACxB,MAAA,WAAW,CAAC,IAAI,CAAC,0CAAE,MAAM,EACzB,MAAA,MAAA,WAAW,CAAC,IAAI,CAAC,0CAAE,IAAI,0CAAE,IAAI,EAC7B,MAAA,MAAA,WAAW,CAAC,IAAI,CAAC,0CAAE,IAAI,0CAAE,KAAK,EAC9B,MAAA,MAAA,WAAW,CAAC,IAAI,CAAC,0CAAE,IAAI,0CAAE,MAAM,EAC/B,QAAQ,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,EAAE,EAC3D,SAAS,CACV,CAAC;IAEF,IAAM,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,IAAM,qBAAqB,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjE,OAAO,CACL,gCACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,gBACN,KAAK;QAEhB,IAAI,IAAI,oBAAC,IAAI,IAAC,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,GAAI;QAC9D,6BAAK,SAAS,EAAE,qBAAqB,IAAG,KAAK,CAAO,CAC7C,CACV,CAAC;AACJ,CAAC","sourcesContent":["import React, { MouseEvent, ComponentType } from \"react\";\nimport { classNames } from \"@sparkle/lib/utils\";\nimport { Icon } from \"./Icon\";\n\ntype ButtonProps = {\n type?: \"primary\" | \"secondary\" | \"tertiary\";\n size?: \"xs\" | \"sm\" | \"md\";\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n disabled?: boolean;\n label: string;\n icon?: ComponentType;\n className?: string;\n};\n\nconst sizeClasses = {\n xs: \"gap-x-1 px-3 py-1.5 text-xs font-semibold\",\n sm: \"gap-x-1 px-4 py-2 text-sm font-semibold\",\n md: \"gap-x-1.5 px-5 py-3 text-sm font-bold\",\n};\n\nconst containerClasses = {\n xs: \"px-0.5\",\n sm: \"px-1\",\n md: \"px-1\",\n};\n\nconst iconSizeClasses = {\n xs: \"h-4 w-4\",\n sm: \"h-5 w-5\",\n md: \"h-5 w-5\",\n};\n\nconst typeClasses = {\n primary: {\n base: \"text-white bg-action-500 border-action-600\",\n hover: \"hover:bg-action-400 hover:border-action-500\",\n active: \"active:bg-action-600 active:border-action-700\",\n dark: {\n base: \"dark:bg-action-500-dark dark:border-action-600-dark\",\n hover: \"dark:hover:bg-action-500-dark dark:hover:border-action-500-dark\",\n active:\n \"dark:active:bg-action-600-dark dark:active:border-action-700-dark\",\n },\n },\n secondary: {\n base: \"text-action-500 border-structure-300 bg-structure-0\",\n hover: \"hover:bg-action-50 hover:border-action-300\",\n active: \"active:bg-action-100 active:border-action-500\",\n dark: {\n base: \"dark:text-action-500-dark dark:border-structure-300-dark dark:bg-structure-50-dark\",\n hover: \"dark:hover:bg-action-50-dark dark:hover:border-action-300-dark\",\n active:\n \"dark:active:bg-action-100-dark dark:active:border-action-500-dark\",\n },\n },\n tertiary: {\n base: \"text-element-700 border-structure-300 bg-structure-0\",\n hover: \"hover:text-element-800 hover:bg-action-50 hover:border-action-300\",\n active: \"active:bg-action-100 active:border-action-500\",\n dark: {\n base: \"dark:text-element-700-dark dark:border-structure-300-dark dark:bg-structure-50-dark\",\n hover: \"dark:hover:bg-action-50-dark dark:hover:border-action-300-dark\",\n active:\n \"dark:active:bg-action-100-dark dark:active:border-action-500-dark\",\n },\n },\n};\n\nexport function Button({\n type = \"primary\",\n size = \"sm\",\n onClick,\n disabled = false,\n label,\n icon,\n className = \"\",\n}: ButtonProps) {\n const buttonClasses = classNames(\n \"inline-flex items-center border transition-all ease-out duration-400 box-border rounded-full scale-95 hover:scale-100 hover:drop-shadow-md active:scale-95 active:drop-shadow-none\",\n sizeClasses[size],\n typeClasses[type]?.base,\n typeClasses[type]?.hover,\n typeClasses[type]?.active,\n typeClasses[type]?.dark?.base,\n typeClasses[type]?.dark?.hover,\n typeClasses[type]?.dark?.active,\n disabled ? \"cursor-not-allowed opacity-50 bg-gray-200\" : \"\",\n className\n );\n\n const iconClasses = classNames(iconSizeClasses[size]);\n const finalContainerClasses = classNames(containerClasses[size]);\n\n return (\n <button\n type=\"button\"\n className={buttonClasses}\n onClick={onClick}\n disabled={disabled}\n aria-label={label}\n >\n {icon && <Icon IconComponent={icon} className={iconClasses} />}\n <div className={finalContainerClasses}>{label}</div>\n </button>\n );\n}\n"]}
@@ -7,8 +7,9 @@ type TabProps = {
7
7
  current: boolean;
8
8
  sizing?: "hug" | "expand";
9
9
  icon?: ReactComponentLike;
10
+ href?: string;
10
11
  }>;
11
- onTabClick?: (tabName: string, event: MouseEvent<HTMLDivElement>) => void;
12
+ onTabClick?: (tabName: string, event: MouseEvent<HTMLAnchorElement>) => void;
12
13
  className?: string;
13
14
  };
14
15
  export declare function Tab({ tabs, onTabClick, className }: TabProps): React.JSX.Element;
@@ -1,16 +1,17 @@
1
1
  import React from "react";
2
+ import { SparkleContext } from "@sparkle/context";
2
3
  import { classNames } from "@sparkle/lib/utils";
3
4
  var tabClasses = {
4
5
  default: {
5
6
  base: "text-element-800 border-transparent cursor-pointer",
6
- hover: "hover:text-action-600",
7
+ hover: "hover:text-action-500",
7
8
  dark: {
8
- base: "dark:text-element-800-dark",
9
+ base: "dark:text-element-700-dark",
9
10
  hover: "dark:hover:text-action-600-dark",
10
11
  },
11
12
  },
12
13
  selected: {
13
- base: "border-action-500 text-action-600 cursor-default",
14
+ base: "border-action-500 text-action-500 cursor-default",
14
15
  hover: "",
15
16
  dark: {
16
17
  base: "dark:border-action-500-dark dark:text-action-500-dark",
@@ -21,17 +22,17 @@ var tabClasses = {
21
22
  var iconClasses = {
22
23
  default: {
23
24
  base: "text-element-600",
24
- hover: "group-hover:text-action-400 group-hover:text-action-400",
25
+ hover: "group-hover:text-action-400",
25
26
  dark: {
26
27
  base: "dark:text-element-600-dark",
27
- hover: "dark:group-hover:text-action-400-dark",
28
+ hover: "dark:group-hover:text-action-500-dark",
28
29
  },
29
30
  },
30
31
  selected: {
31
- base: "text-action-400",
32
+ base: "text-action-500",
32
33
  hover: "",
33
34
  dark: {
34
- base: "dark:text-action-400-dark",
35
+ base: "dark:text-action-500-dark",
35
36
  hover: "",
36
37
  },
37
38
  },
@@ -42,6 +43,8 @@ var tabSizingClasses = {
42
43
  };
43
44
  export function Tab(_a) {
44
45
  var tabs = _a.tabs, onTabClick = _a.onTabClick, _b = _a.className, className = _b === void 0 ? "" : _b;
46
+ var components = React.useContext(SparkleContext).components;
47
+ var Link = components.link;
45
48
  var renderTabs = function () {
46
49
  return tabs.map(function (tab) {
47
50
  var _a, _b;
@@ -51,10 +54,13 @@ export function Tab(_a) {
51
54
  var iconStateClasses = tab.current
52
55
  ? iconClasses.selected
53
56
  : iconClasses.default;
54
- var finalTabClasses = classNames("group justify-center flex gap-x-2 text-sm font-medium px-4 py-3 border-b-2 transition-colors duration-200 whitespace-nowrap", tabStateClasses.base, tabStateClasses.hover, tabSizingClasses[(_a = tab.sizing) !== null && _a !== void 0 ? _a : "hug"], className);
55
- var finalIconClasses = classNames("h-5 w-5", iconStateClasses.base, iconStateClasses.hover, className);
56
- return (React.createElement("div", { key: tab.label, className: finalTabClasses, "aria-current": tab.current ? "page" : undefined, onClick: function (event) { return onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(tab.label, event); } },
57
- tab.icon && React.createElement(tab.icon, { className: finalIconClasses }), (_b = tab.hideLabel) !== null && _b !== void 0 ? _b : tab.label));
57
+ var finalTabClasses = classNames("group justify-center flex text-sm font-semibold px-4 py-3 border-b-2 transition-colors duration-400 whitespace-nowrap select-none", tabStateClasses.base, tabStateClasses.hover, tabStateClasses.dark.base, tabStateClasses.dark.hover, tabSizingClasses[(_a = tab.sizing) !== null && _a !== void 0 ? _a : "hug"], className);
58
+ var finalIconClasses = classNames("h-5 w-5 transition-colors duration-400", iconStateClasses.base, iconStateClasses.hover, iconStateClasses.dark.base, iconStateClasses.dark.hover, className);
59
+ return (React.createElement(Link, { key: tab.label, className: finalTabClasses, "aria-current": tab.current ? "page" : undefined, onClick: function (event) { return onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(tab.label, event); }, href: tab.href },
60
+ React.createElement("div", { className: tab.current
61
+ ? "flex gap-x-2"
62
+ : "duration-400 flex scale-100 transform gap-x-2 transition-transform ease-out group-hover:scale-110" },
63
+ tab.icon && React.createElement(tab.icon, { className: finalIconClasses }), (_b = tab.hideLabel) !== null && _b !== void 0 ? _b : tab.label)));
58
64
  });
59
65
  };
60
66
  return (React.createElement("div", { className: "border-b border-structure-200 dark:border-structure-200-dark" },
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../src/components/Tab.tsx"],"names":[],"mappings":"AACA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAchD,IAAM,UAAU,GAAG;IACjB,OAAO,EAAE;QACP,IAAI,EAAE,oDAAoD;QAC1D,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE;YACJ,IAAI,EAAE,4BAA4B;YAClC,KAAK,EAAE,iCAAiC;SACzC;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,kDAAkD;QACxD,KAAK,EAAE,EAAE;QACT,IAAI,EAAE;YACJ,IAAI,EAAE,uDAAuD;YAC7D,KAAK,EAAE,EAAE;SACV;KACF;CACF,CAAC;AAEF,IAAM,WAAW,GAAG;IAClB,OAAO,EAAE;QACP,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,yDAAyD;QAChE,IAAI,EAAE;YACJ,IAAI,EAAE,4BAA4B;YAClC,KAAK,EAAE,uCAAuC;SAC/C;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,EAAE;QACT,IAAI,EAAE;YACJ,IAAI,EAAE,2BAA2B;YACjC,KAAK,EAAE,EAAE;SACV;KACF;CACF,CAAC;AAEF,IAAM,gBAAgB,GAAG;IACvB,GAAG,EAAE,EAAE;IACP,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,EAA8C;QAA5C,IAAI,UAAA,EAAE,UAAU,gBAAA,EAAE,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA;IACpD,IAAM,UAAU,GAAG;QACjB,OAAA,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG;;YACX,IAAM,eAAe,GAAG,GAAG,CAAC,OAAO;gBACjC,CAAC,CAAC,UAAU,CAAC,QAAQ;gBACrB,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;YACvB,IAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO;gBAClC,CAAC,CAAC,WAAW,CAAC,QAAQ;gBACtB,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;YAExB,IAAM,eAAe,GAAG,UAAU,CAChC,6HAA6H,EAC7H,eAAe,CAAC,IAAI,EACpB,eAAe,CAAC,KAAK,EACrB,gBAAgB,CAAC,MAAA,GAAG,CAAC,MAAM,mCAAI,KAAK,CAAC,EACrC,SAAS,CACV,CAAC;YAEF,IAAM,gBAAgB,GAAG,UAAU,CACjC,SAAS,EACT,gBAAgB,CAAC,IAAI,EACrB,gBAAgB,CAAC,KAAK,EACtB,SAAS,CACV,CAAC;YAEF,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,CAAC,KAAK,EACd,SAAS,EAAE,eAAe,kBACZ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC9C,OAAO,EAAE,UAAC,KAAK,IAAK,OAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,EAA9B,CAA8B;gBAEjD,GAAG,CAAC,IAAI,IAAI,oBAAC,GAAG,CAAC,IAAI,IAAC,SAAS,EAAE,gBAAgB,GAAI,EACrD,MAAA,GAAG,CAAC,SAAS,mCAAI,GAAG,CAAC,KAAK,CACvB,CACP,CAAC;QACJ,CAAC,CAAC;IAlCF,CAkCE,CAAC;IAEL,OAAO,CACL,6BAAK,SAAS,EAAC,8DAA8D;QAC3E,6BAAK,SAAS,EAAC,uBAAuB,gBAAY,MAAM,IACrD,UAAU,EAAE,CACT,CACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { ReactComponentLike } from \"prop-types\";\nimport React, { MouseEvent } from \"react\";\n\nimport { classNames } from \"@sparkle/lib/utils\";\n\ntype TabProps = {\n tabs: Array<{\n label: string;\n hideLabel?: boolean;\n current: boolean;\n sizing?: \"hug\" | \"expand\";\n icon?: ReactComponentLike;\n }>;\n onTabClick?: (tabName: string, event: MouseEvent<HTMLDivElement>) => void;\n className?: string;\n};\n\nconst tabClasses = {\n default: {\n base: \"text-element-800 border-transparent cursor-pointer\",\n hover: \"hover:text-action-600\",\n dark: {\n base: \"dark:text-element-800-dark\",\n hover: \"dark:hover:text-action-600-dark\",\n },\n },\n selected: {\n base: \"border-action-500 text-action-600 cursor-default\",\n hover: \"\",\n dark: {\n base: \"dark:border-action-500-dark dark:text-action-500-dark\",\n hover: \"\",\n },\n },\n};\n\nconst iconClasses = {\n default: {\n base: \"text-element-600\",\n hover: \"group-hover:text-action-400 group-hover:text-action-400\",\n dark: {\n base: \"dark:text-element-600-dark\",\n hover: \"dark:group-hover:text-action-400-dark\",\n },\n },\n selected: {\n base: \"text-action-400\",\n hover: \"\",\n dark: {\n base: \"dark:text-action-400-dark\",\n hover: \"\",\n },\n },\n};\n\nconst tabSizingClasses = {\n hug: \"\",\n expand: \"flex-1\",\n};\n\nexport function Tab({ tabs, onTabClick, className = \"\" }: TabProps) {\n const renderTabs = () =>\n tabs.map((tab) => {\n const tabStateClasses = tab.current\n ? tabClasses.selected\n : tabClasses.default;\n const iconStateClasses = tab.current\n ? iconClasses.selected\n : iconClasses.default;\n\n const finalTabClasses = classNames(\n \"group justify-center flex gap-x-2 text-sm font-medium px-4 py-3 border-b-2 transition-colors duration-200 whitespace-nowrap\",\n tabStateClasses.base,\n tabStateClasses.hover,\n tabSizingClasses[tab.sizing ?? \"hug\"],\n className\n );\n\n const finalIconClasses = classNames(\n \"h-5 w-5\",\n iconStateClasses.base,\n iconStateClasses.hover,\n className\n );\n\n return (\n <div\n key={tab.label}\n className={finalTabClasses}\n aria-current={tab.current ? \"page\" : undefined}\n onClick={(event) => onTabClick?.(tab.label, event)}\n >\n {tab.icon && <tab.icon className={finalIconClasses} />}\n {tab.hideLabel ?? tab.label}\n </div>\n );\n });\n\n return (\n <div className=\"border-b border-structure-200 dark:border-structure-200-dark\">\n <nav className=\"-mb-px flex space-x-0\" aria-label=\"Tabs\">\n {renderTabs()}\n </nav>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../src/components/Tab.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ReactComponentLike } from \"prop-types\";\nimport React, { MouseEvent } from \"react\";\n\nimport { SparkleContext } from \"@sparkle/context\";\nimport { classNames } from \"@sparkle/lib/utils\";\n\ntype TabProps = {\n tabs: Array<{\n label: string;\n hideLabel?: boolean;\n current: boolean;\n sizing?: \"hug\" | \"expand\";\n icon?: ReactComponentLike;\n href?: string;\n }>;\n onTabClick?: (tabName: string, event: MouseEvent<HTMLAnchorElement>) => void;\n className?: string;\n};\n\nconst tabClasses = {\n default: {\n base: \"text-element-800 border-transparent cursor-pointer\",\n hover: \"hover:text-action-500\",\n dark: {\n base: \"dark:text-element-700-dark\",\n hover: \"dark:hover:text-action-600-dark\",\n },\n },\n selected: {\n base: \"border-action-500 text-action-500 cursor-default\",\n hover: \"\",\n dark: {\n base: \"dark:border-action-500-dark dark:text-action-500-dark\",\n hover: \"\",\n },\n },\n};\n\nconst iconClasses = {\n default: {\n base: \"text-element-600\",\n hover: \"group-hover:text-action-400\",\n dark: {\n base: \"dark:text-element-600-dark\",\n hover: \"dark:group-hover:text-action-500-dark\",\n },\n },\n selected: {\n base: \"text-action-500\",\n hover: \"\",\n dark: {\n base: \"dark:text-action-500-dark\",\n hover: \"\",\n },\n },\n};\n\nconst tabSizingClasses = {\n hug: \"\",\n expand: \"flex-1\",\n};\n\nexport function Tab({ tabs, onTabClick, className = \"\" }: TabProps) {\n const { components } = React.useContext(SparkleContext);\n const Link = components.link;\n\n const renderTabs = () =>\n tabs.map((tab) => {\n const tabStateClasses = tab.current\n ? tabClasses.selected\n : tabClasses.default;\n const iconStateClasses = tab.current\n ? iconClasses.selected\n : iconClasses.default;\n\n const finalTabClasses = classNames(\n \"group justify-center flex text-sm font-semibold px-4 py-3 border-b-2 transition-colors duration-400 whitespace-nowrap select-none\",\n tabStateClasses.base,\n tabStateClasses.hover,\n tabStateClasses.dark.base,\n tabStateClasses.dark.hover,\n tabSizingClasses[tab.sizing ?? \"hug\"],\n className\n );\n\n const finalIconClasses = classNames(\n \"h-5 w-5 transition-colors duration-400\",\n iconStateClasses.base,\n iconStateClasses.hover,\n iconStateClasses.dark.base,\n iconStateClasses.dark.hover,\n className\n );\n\n return (\n <Link\n key={tab.label}\n className={finalTabClasses}\n aria-current={tab.current ? \"page\" : undefined}\n onClick={(event) => onTabClick?.(tab.label, event)}\n href={tab.href}\n >\n <div\n className={\n tab.current\n ? \"flex gap-x-2\"\n : \"duration-400 flex scale-100 transform gap-x-2 transition-transform ease-out group-hover:scale-110\"\n }\n >\n {tab.icon && <tab.icon className={finalIconClasses} />}\n {tab.hideLabel ?? tab.label}\n </div>\n </Link>\n );\n });\n\n return (\n <div className=\"border-b border-structure-200 dark:border-structure-200-dark\">\n <nav className=\"-mb-px flex space-x-0\" aria-label=\"Tabs\">\n {renderTabs()}\n </nav>\n </div>\n );\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import React, { ComponentType, MouseEvent, ReactNode } from "react";
2
+ export type SparkleContextType = {
3
+ components: {
4
+ link: ComponentType<{
5
+ href?: string;
6
+ className?: string;
7
+ children: ReactNode;
8
+ onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;
9
+ }>;
10
+ };
11
+ };
12
+ export declare const SparkleContext: React.Context<SparkleContextType>;
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ export var SparkleContext = React.createContext({
3
+ components: {
4
+ link: function (_a) {
5
+ var href = _a.href, className = _a.className, children = _a.children;
6
+ return (React.createElement("a", { href: href, className: className }, children));
7
+ },
8
+ },
9
+ });
10
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAapE,MAAM,CAAC,IAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAqB;IACpE,UAAU,EAAE;QACV,IAAI,EAAE,UAAC,EAA6B;gBAA3B,IAAI,UAAA,EAAE,SAAS,eAAA,EAAE,QAAQ,cAAA;YAAO,OAAA,CACvC,2BAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,IAChC,QAAQ,CACP,CACL;QAJwC,CAIxC;KACF;CACF,CAAC,CAAC","sourcesContent":["import React, { ComponentType, MouseEvent, ReactNode } from \"react\";\n\nexport type SparkleContextType = {\n components: {\n link: ComponentType<{\n href?: string;\n className?: string;\n children: ReactNode;\n onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;\n }>;\n };\n};\n\nexport const SparkleContext = React.createContext<SparkleContextType>({\n components: {\n link: ({ href, className, children }) => (\n <a href={href} className={className}>\n {children}\n </a>\n ),\n },\n});\n"]}
@@ -1,11 +1,12 @@
1
- import React, { MouseEvent } from "react";
1
+ import React, { MouseEvent, ComponentType } from "react";
2
2
  type ButtonProps = {
3
- type?: "primary" | "secondary";
3
+ type?: "primary" | "secondary" | "tertiary";
4
4
  size?: "xs" | "sm" | "md";
5
5
  onClick?: (event: MouseEvent<HTMLButtonElement>) => void;
6
6
  disabled?: boolean;
7
7
  label: string;
8
+ icon?: ComponentType;
8
9
  className?: string;
9
10
  };
10
- export declare function Button({ type, size, onClick, disabled, label, className, }: ButtonProps): React.JSX.Element;
11
+ export declare function Button({ type, size, onClick, disabled, label, icon, className, }: ButtonProps): React.JSX.Element;
11
12
  export {};
@@ -7,8 +7,9 @@ type TabProps = {
7
7
  current: boolean;
8
8
  sizing?: "hug" | "expand";
9
9
  icon?: ReactComponentLike;
10
+ href?: string;
10
11
  }>;
11
- onTabClick?: (tabName: string, event: MouseEvent<HTMLDivElement>) => void;
12
+ onTabClick?: (tabName: string, event: MouseEvent<HTMLAnchorElement>) => void;
12
13
  className?: string;
13
14
  };
14
15
  export declare function Tab({ tabs, onTabClick, className }: TabProps): React.JSX.Element;
@@ -0,0 +1,12 @@
1
+ import React, { ComponentType, MouseEvent, ReactNode } from "react";
2
+ export type SparkleContextType = {
3
+ components: {
4
+ link: ComponentType<{
5
+ href?: string;
6
+ className?: string;
7
+ children: ReactNode;
8
+ onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;
9
+ }>;
10
+ };
11
+ };
12
+ export declare const SparkleContext: React.Context<SparkleContextType>;
package/dist/cjs/index.js CHANGED
@@ -48,7 +48,7 @@ function styleInject(css, ref) {
48
48
  }
49
49
  }
50
50
 
51
- var css_248z = "/*\n! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com\n*//*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden] {\n display: none;\n}\n\n[type='text'],[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: #fff;\n border-color: #6b7280;\n border-width: 1px;\n border-radius: 0px;\n padding-top: 0.5rem;\n padding-right: 0.75rem;\n padding-bottom: 0.5rem;\n padding-left: 0.75rem;\n font-size: 1rem;\n line-height: 1.5rem;\n --tw-shadow: 0 0 #0000;\n}\n\n[type='text']:focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #2563eb;\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n border-color: #2563eb;\n}\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n color: #6b7280;\n opacity: 1;\n}\n\ninput::placeholder,textarea::placeholder {\n color: #6b7280;\n opacity: 1;\n}\n\n::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n}\n\n::-webkit-date-and-time-value {\n min-height: 1.5em;\n}\n\n::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field {\n padding-top: 0;\n padding-bottom: 0;\n}\n\nselect {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\");\n background-position: right 0.5rem center;\n background-repeat: no-repeat;\n background-size: 1.5em 1.5em;\n padding-right: 2.5rem;\n -webkit-print-color-adjust: exact;\n print-color-adjust: exact;\n}\n\n[multiple] {\n background-image: initial;\n background-position: initial;\n background-repeat: unset;\n background-size: initial;\n padding-right: 0.75rem;\n -webkit-print-color-adjust: unset;\n print-color-adjust: unset;\n}\n\n[type='checkbox'],[type='radio'] {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n padding: 0;\n -webkit-print-color-adjust: exact;\n print-color-adjust: exact;\n display: inline-block;\n vertical-align: middle;\n background-origin: border-box;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n flex-shrink: 0;\n height: 1rem;\n width: 1rem;\n color: #2563eb;\n background-color: #fff;\n border-color: #6b7280;\n border-width: 1px;\n --tw-shadow: 0 0 #0000;\n}\n\n[type='checkbox'] {\n border-radius: 0px;\n}\n\n[type='radio'] {\n border-radius: 100%;\n}\n\n[type='checkbox']:focus,[type='radio']:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #2563eb;\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n}\n\n[type='checkbox']:checked,[type='radio']:checked {\n border-color: transparent;\n background-color: currentColor;\n background-size: 100% 100%;\n background-position: center;\n background-repeat: no-repeat;\n}\n\n[type='checkbox']:checked {\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\");\n}\n\n[type='radio']:checked {\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\");\n}\n\n[type='checkbox']:checked:hover,[type='checkbox']:checked:focus,[type='radio']:checked:hover,[type='radio']:checked:focus {\n border-color: transparent;\n background-color: currentColor;\n}\n\n[type='checkbox']:indeterminate {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");\n border-color: transparent;\n background-color: currentColor;\n background-size: 100% 100%;\n background-position: center;\n background-repeat: no-repeat;\n}\n\n[type='checkbox']:indeterminate:hover,[type='checkbox']:indeterminate:focus {\n border-color: transparent;\n background-color: currentColor;\n}\n\n[type='file'] {\n background: unset;\n border-color: inherit;\n border-width: 0;\n border-radius: 0;\n padding: 0;\n font-size: unset;\n line-height: inherit;\n}\n\n[type='file']:focus {\n outline: 1px solid ButtonText;\n outline: 1px auto -webkit-focus-ring-color;\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.-mb-px {\n margin-bottom: -1px;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.h-5 {\n height: 1.25rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.cursor-default {\n cursor: default;\n}\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.items-center {\n align-items: center;\n}\n.justify-center {\n justify-content: center;\n}\n.gap-x-2 {\n -moz-column-gap: 0.5rem;\n column-gap: 0.5rem;\n}\n.space-x-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0px * var(--tw-space-x-reverse));\n margin-left: calc(0px * calc(1 - var(--tw-space-x-reverse)));\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.rounded-lg {\n border-radius: 0.5rem;\n}\n.rounded-md {\n border-radius: 0.375rem;\n}\n.rounded-xl {\n border-radius: 0.75rem;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-b-2 {\n border-bottom-width: 2px;\n}\n.border-action-500 {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n.border-action-600 {\n --tw-border-opacity: 1;\n border-color: rgb(37 99 235 / var(--tw-border-opacity));\n}\n.border-structure-200 {\n --tw-border-opacity: 1;\n border-color: rgb(226 232 240 / var(--tw-border-opacity));\n}\n.border-transparent {\n border-color: transparent;\n}\n.bg-action-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n}\n.bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity));\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-medium {\n font-weight: 500;\n}\n.text-action-400 {\n --tw-text-opacity: 1;\n color: rgb(96 165 250 / var(--tw-text-opacity));\n}\n.text-action-500 {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity));\n}\n.text-action-600 {\n --tw-text-opacity: 1;\n color: rgb(37 99 235 / var(--tw-text-opacity));\n}\n.text-element-600 {\n --tw-text-opacity: 1;\n color: rgb(148 163 184 / var(--tw-text-opacity));\n}\n.text-element-800 {\n --tw-text-opacity: 1;\n color: rgb(30 41 59 / var(--tw-text-opacity));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.opacity-50 {\n opacity: 0.5;\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.hover\\:border-action-300:hover {\n --tw-border-opacity: 1;\n border-color: rgb(147 197 253 / var(--tw-border-opacity));\n}\n.hover\\:border-action-500:hover {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n.hover\\:bg-action-400:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(96 165 250 / var(--tw-bg-opacity));\n}\n.hover\\:bg-action-50:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(239 246 255 / var(--tw-bg-opacity));\n}\n.hover\\:text-action-600:hover {\n --tw-text-opacity: 1;\n color: rgb(37 99 235 / var(--tw-text-opacity));\n}\n.active\\:border-action-500:active {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n.active\\:border-action-700:active {\n --tw-border-opacity: 1;\n border-color: rgb(29 78 216 / var(--tw-border-opacity));\n}\n.active\\:bg-action-100:active {\n --tw-bg-opacity: 1;\n background-color: rgb(219 234 254 / var(--tw-bg-opacity));\n}\n.active\\:bg-action-600:active {\n --tw-bg-opacity: 1;\n background-color: rgb(37 99 235 / var(--tw-bg-opacity));\n}\n.group:hover .group-hover\\:text-action-400 {\n --tw-text-opacity: 1;\n color: rgb(96 165 250 / var(--tw-text-opacity));\n}\n@media (prefers-color-scheme: dark) {\n\n .dark\\:border-action-500-dark {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n }\n\n .dark\\:border-action-600-dark {\n --tw-border-opacity: 1;\n border-color: rgb(96 165 250 / var(--tw-border-opacity));\n }\n\n .dark\\:border-structure-200-dark {\n --tw-border-opacity: 1;\n border-color: rgb(51 65 85 / var(--tw-border-opacity));\n }\n\n .dark\\:border-structure-300-dark {\n --tw-border-opacity: 1;\n border-color: rgb(71 85 105 / var(--tw-border-opacity));\n }\n\n .dark\\:bg-action-500-dark {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n }\n\n .dark\\:text-action-400-dark {\n --tw-text-opacity: 1;\n color: rgb(37 99 235 / var(--tw-text-opacity));\n }\n\n .dark\\:text-action-500-dark {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity));\n }\n\n .dark\\:text-element-600-dark {\n --tw-text-opacity: 1;\n color: rgb(148 163 184 / var(--tw-text-opacity));\n }\n\n .dark\\:text-element-800-dark {\n --tw-text-opacity: 1;\n color: rgb(226 232 240 / var(--tw-text-opacity));\n }\n\n .dark\\:hover\\:border-action-300-dark:hover {\n --tw-border-opacity: 1;\n border-color: rgb(29 78 216 / var(--tw-border-opacity));\n }\n\n .dark\\:hover\\:border-action-500-dark:hover {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n }\n\n .dark\\:hover\\:bg-action-50-dark:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(23 37 84 / var(--tw-bg-opacity));\n }\n\n .dark\\:hover\\:bg-action-500-dark:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n }\n\n .dark\\:hover\\:text-action-600-dark:hover {\n --tw-text-opacity: 1;\n color: rgb(96 165 250 / var(--tw-text-opacity));\n }\n\n .dark\\:active\\:border-action-500-dark:active {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n }\n\n .dark\\:active\\:border-action-700-dark:active {\n --tw-border-opacity: 1;\n border-color: rgb(147 197 253 / var(--tw-border-opacity));\n }\n\n .dark\\:active\\:bg-action-100-dark:active {\n --tw-bg-opacity: 1;\n background-color: rgb(30 58 138 / var(--tw-bg-opacity));\n }\n\n .dark\\:active\\:bg-action-600-dark:active {\n --tw-bg-opacity: 1;\n background-color: rgb(96 165 250 / var(--tw-bg-opacity));\n }\n\n .group:hover .dark\\:group-hover\\:text-action-400-dark {\n --tw-text-opacity: 1;\n color: rgb(37 99 235 / var(--tw-text-opacity));\n }\n}";
51
+ var css_248z = "/*\n! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com\n*//*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden] {\n display: none;\n}\n\n[type='text'],[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: #fff;\n border-color: #6b7280;\n border-width: 1px;\n border-radius: 0px;\n padding-top: 0.5rem;\n padding-right: 0.75rem;\n padding-bottom: 0.5rem;\n padding-left: 0.75rem;\n font-size: 1rem;\n line-height: 1.5rem;\n --tw-shadow: 0 0 #0000;\n}\n\n[type='text']:focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #2563eb;\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n border-color: #2563eb;\n}\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n color: #6b7280;\n opacity: 1;\n}\n\ninput::placeholder,textarea::placeholder {\n color: #6b7280;\n opacity: 1;\n}\n\n::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n}\n\n::-webkit-date-and-time-value {\n min-height: 1.5em;\n}\n\n::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field {\n padding-top: 0;\n padding-bottom: 0;\n}\n\nselect {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\");\n background-position: right 0.5rem center;\n background-repeat: no-repeat;\n background-size: 1.5em 1.5em;\n padding-right: 2.5rem;\n -webkit-print-color-adjust: exact;\n print-color-adjust: exact;\n}\n\n[multiple] {\n background-image: initial;\n background-position: initial;\n background-repeat: unset;\n background-size: initial;\n padding-right: 0.75rem;\n -webkit-print-color-adjust: unset;\n print-color-adjust: unset;\n}\n\n[type='checkbox'],[type='radio'] {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n padding: 0;\n -webkit-print-color-adjust: exact;\n print-color-adjust: exact;\n display: inline-block;\n vertical-align: middle;\n background-origin: border-box;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n flex-shrink: 0;\n height: 1rem;\n width: 1rem;\n color: #2563eb;\n background-color: #fff;\n border-color: #6b7280;\n border-width: 1px;\n --tw-shadow: 0 0 #0000;\n}\n\n[type='checkbox'] {\n border-radius: 0px;\n}\n\n[type='radio'] {\n border-radius: 100%;\n}\n\n[type='checkbox']:focus,[type='radio']:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #2563eb;\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n}\n\n[type='checkbox']:checked,[type='radio']:checked {\n border-color: transparent;\n background-color: currentColor;\n background-size: 100% 100%;\n background-position: center;\n background-repeat: no-repeat;\n}\n\n[type='checkbox']:checked {\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\");\n}\n\n[type='radio']:checked {\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\");\n}\n\n[type='checkbox']:checked:hover,[type='checkbox']:checked:focus,[type='radio']:checked:hover,[type='radio']:checked:focus {\n border-color: transparent;\n background-color: currentColor;\n}\n\n[type='checkbox']:indeterminate {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");\n border-color: transparent;\n background-color: currentColor;\n background-size: 100% 100%;\n background-position: center;\n background-repeat: no-repeat;\n}\n\n[type='checkbox']:indeterminate:hover,[type='checkbox']:indeterminate:focus {\n border-color: transparent;\n background-color: currentColor;\n}\n\n[type='file'] {\n background: unset;\n border-color: inherit;\n border-width: 0;\n border-radius: 0;\n padding: 0;\n font-size: unset;\n line-height: inherit;\n}\n\n[type='file']:focus {\n outline: 1px solid ButtonText;\n outline: 1px auto -webkit-focus-ring-color;\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.-mb-px {\n margin-bottom: -1px;\n}\n.box-border {\n box-sizing: border-box;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.h-4 {\n height: 1rem;\n}\n.h-5 {\n height: 1.25rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.scale-100 {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.scale-95 {\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.cursor-default {\n cursor: default;\n}\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.items-center {\n align-items: center;\n}\n.justify-center {\n justify-content: center;\n}\n.gap-x-1 {\n -moz-column-gap: 0.25rem;\n column-gap: 0.25rem;\n}\n.gap-x-1\\.5 {\n -moz-column-gap: 0.375rem;\n column-gap: 0.375rem;\n}\n.gap-x-2 {\n -moz-column-gap: 0.5rem;\n column-gap: 0.5rem;\n}\n.space-x-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0px * var(--tw-space-x-reverse));\n margin-left: calc(0px * calc(1 - var(--tw-space-x-reverse)));\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.border {\n border-width: 1px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-b-2 {\n border-bottom-width: 2px;\n}\n.border-action-500 {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n.border-action-600 {\n --tw-border-opacity: 1;\n border-color: rgb(37 99 235 / var(--tw-border-opacity));\n}\n.border-structure-200 {\n --tw-border-opacity: 1;\n border-color: rgb(226 232 240 / var(--tw-border-opacity));\n}\n.border-structure-300 {\n --tw-border-opacity: 1;\n border-color: rgb(203 213 225 / var(--tw-border-opacity));\n}\n.border-transparent {\n border-color: transparent;\n}\n.bg-action-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n}\n.bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity));\n}\n.bg-structure-0 {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.px-0 {\n padding-left: 0px;\n padding-right: 0px;\n}\n.px-0\\.5 {\n padding-left: 0.125rem;\n padding-right: 0.125rem;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-semibold {\n font-weight: 600;\n}\n.text-action-500 {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity));\n}\n.text-element-600 {\n --tw-text-opacity: 1;\n color: rgb(148 163 184 / var(--tw-text-opacity));\n}\n.text-element-700 {\n --tw-text-opacity: 1;\n color: rgb(100 116 139 / var(--tw-text-opacity));\n}\n.text-element-800 {\n --tw-text-opacity: 1;\n color: rgb(51 65 85 / var(--tw-text-opacity));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.opacity-50 {\n opacity: 0.5;\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n}\n.hover\\:scale-100:hover {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.hover\\:border-action-300:hover {\n --tw-border-opacity: 1;\n border-color: rgb(147 197 253 / var(--tw-border-opacity));\n}\n.hover\\:border-action-500:hover {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n.hover\\:bg-action-400:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(96 165 250 / var(--tw-bg-opacity));\n}\n.hover\\:bg-action-50:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(239 246 255 / var(--tw-bg-opacity));\n}\n.hover\\:text-action-500:hover {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity));\n}\n.hover\\:text-element-800:hover {\n --tw-text-opacity: 1;\n color: rgb(51 65 85 / var(--tw-text-opacity));\n}\n.hover\\:drop-shadow-md:hover {\n --tw-drop-shadow: drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.active\\:scale-95:active {\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.active\\:border-action-500:active {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n.active\\:border-action-700:active {\n --tw-border-opacity: 1;\n border-color: rgb(29 78 216 / var(--tw-border-opacity));\n}\n.active\\:bg-action-100:active {\n --tw-bg-opacity: 1;\n background-color: rgb(219 234 254 / var(--tw-bg-opacity));\n}\n.active\\:bg-action-600:active {\n --tw-bg-opacity: 1;\n background-color: rgb(37 99 235 / var(--tw-bg-opacity));\n}\n.active\\:drop-shadow-none:active {\n --tw-drop-shadow: drop-shadow(0 0 #0000);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.group:hover .group-hover\\:scale-110 {\n --tw-scale-x: 1.1;\n --tw-scale-y: 1.1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.group:hover .group-hover\\:text-action-400 {\n --tw-text-opacity: 1;\n color: rgb(96 165 250 / var(--tw-text-opacity));\n}\n:is(.dark .dark\\:border-action-500-dark) {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n:is(.dark .dark\\:border-action-600-dark) {\n --tw-border-opacity: 1;\n border-color: rgb(96 165 250 / var(--tw-border-opacity));\n}\n:is(.dark .dark\\:border-structure-200-dark) {\n --tw-border-opacity: 1;\n border-color: rgb(51 65 85 / var(--tw-border-opacity));\n}\n:is(.dark .dark\\:border-structure-300-dark) {\n --tw-border-opacity: 1;\n border-color: rgb(71 85 105 / var(--tw-border-opacity));\n}\n:is(.dark .dark\\:bg-action-500-dark) {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n}\n:is(.dark .dark\\:bg-structure-50-dark) {\n --tw-bg-opacity: 1;\n background-color: rgb(15 23 42 / var(--tw-bg-opacity));\n}\n:is(.dark .dark\\:text-action-500-dark) {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity));\n}\n:is(.dark .dark\\:text-element-600-dark) {\n --tw-text-opacity: 1;\n color: rgb(148 163 184 / var(--tw-text-opacity));\n}\n:is(.dark .dark\\:text-element-700-dark) {\n --tw-text-opacity: 1;\n color: rgb(203 213 225 / var(--tw-text-opacity));\n}\n:is(.dark .dark\\:hover\\:border-action-300-dark:hover) {\n --tw-border-opacity: 1;\n border-color: rgb(29 78 216 / var(--tw-border-opacity));\n}\n:is(.dark .dark\\:hover\\:border-action-500-dark:hover) {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n:is(.dark .dark\\:hover\\:bg-action-50-dark:hover) {\n --tw-bg-opacity: 1;\n background-color: rgb(23 37 84 / var(--tw-bg-opacity));\n}\n:is(.dark .dark\\:hover\\:bg-action-500-dark:hover) {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n}\n:is(.dark .dark\\:hover\\:text-action-600-dark:hover) {\n --tw-text-opacity: 1;\n color: rgb(96 165 250 / var(--tw-text-opacity));\n}\n:is(.dark .dark\\:active\\:border-action-500-dark:active) {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n:is(.dark .dark\\:active\\:border-action-700-dark:active) {\n --tw-border-opacity: 1;\n border-color: rgb(147 197 253 / var(--tw-border-opacity));\n}\n:is(.dark .dark\\:active\\:bg-action-100-dark:active) {\n --tw-bg-opacity: 1;\n background-color: rgb(30 58 138 / var(--tw-bg-opacity));\n}\n:is(.dark .dark\\:active\\:bg-action-600-dark:active) {\n --tw-bg-opacity: 1;\n background-color: rgb(96 165 250 / var(--tw-bg-opacity));\n}\n:is(.dark .group:hover .dark\\:group-hover\\:text-action-500-dark) {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity));\n}";
52
52
  styleInject(css_248z);
53
53
 
54
54
  function classNames() {
@@ -59,10 +59,25 @@ function classNames() {
59
59
  return classes.filter(Boolean).join(" ");
60
60
  }
61
61
 
62
+ function Icon(_a) {
63
+ var IconComponent = _a.IconComponent, _b = _a.className, className = _b === void 0 ? "" : _b;
64
+ return IconComponent ? React.createElement(IconComponent, { className: className }) : null;
65
+ }
66
+
62
67
  var sizeClasses = {
63
- xs: "px-2.5 py-1.5 text-xs font-medium rounded-md",
64
- sm: "px-3 py-2 text-xs font-bold rounded-lg",
65
- md: "px-4 py-3 text-sm font-bold rounded-xl",
68
+ xs: "gap-x-1 px-3 py-1.5 text-xs font-semibold",
69
+ sm: "gap-x-1 px-4 py-2 text-sm font-semibold",
70
+ md: "gap-x-1.5 px-5 py-3 text-sm font-bold",
71
+ };
72
+ var containerClasses = {
73
+ xs: "px-0.5",
74
+ sm: "px-1",
75
+ md: "px-1",
76
+ };
77
+ var iconSizeClasses = {
78
+ xs: "h-4 w-4",
79
+ sm: "h-5 w-5",
80
+ md: "h-5 w-5",
66
81
  };
67
82
  var typeClasses = {
68
83
  primary: {
@@ -76,11 +91,21 @@ var typeClasses = {
76
91
  },
77
92
  },
78
93
  secondary: {
79
- base: "text-action-500 border-structure-200",
94
+ base: "text-action-500 border-structure-300 bg-structure-0",
80
95
  hover: "hover:bg-action-50 hover:border-action-300",
81
96
  active: "active:bg-action-100 active:border-action-500",
82
97
  dark: {
83
- base: "dark:text-action-500-dark dark:border-structure-300-dark",
98
+ base: "dark:text-action-500-dark dark:border-structure-300-dark dark:bg-structure-50-dark",
99
+ hover: "dark:hover:bg-action-50-dark dark:hover:border-action-300-dark",
100
+ active: "dark:active:bg-action-100-dark dark:active:border-action-500-dark",
101
+ },
102
+ },
103
+ tertiary: {
104
+ base: "text-element-700 border-structure-300 bg-structure-0",
105
+ hover: "hover:text-element-800 hover:bg-action-50 hover:border-action-300",
106
+ active: "active:bg-action-100 active:border-action-500",
107
+ dark: {
108
+ base: "dark:text-element-700-dark dark:border-structure-300-dark dark:bg-structure-50-dark",
84
109
  hover: "dark:hover:bg-action-50-dark dark:hover:border-action-300-dark",
85
110
  active: "dark:active:bg-action-100-dark dark:active:border-action-500-dark",
86
111
  },
@@ -88,22 +113,35 @@ var typeClasses = {
88
113
  };
89
114
  function Button(_a) {
90
115
  var _b, _c, _d, _e, _f, _g, _h, _j, _k;
91
- var _l = _a.type, type = _l === void 0 ? "primary" : _l, _m = _a.size, size = _m === void 0 ? "sm" : _m, onClick = _a.onClick, _o = _a.disabled, disabled = _o === void 0 ? false : _o, label = _a.label, _p = _a.className, className = _p === void 0 ? "" : _p;
92
- var buttonClasses = classNames("inline-flex items-center border-2 transition-colors duration-200", sizeClasses[size], (_b = typeClasses[type]) === null || _b === void 0 ? void 0 : _b.base, (_c = typeClasses[type]) === null || _c === void 0 ? void 0 : _c.hover, (_d = typeClasses[type]) === null || _d === void 0 ? void 0 : _d.active, (_f = (_e = typeClasses[type]) === null || _e === void 0 ? void 0 : _e.dark) === null || _f === void 0 ? void 0 : _f.base, (_h = (_g = typeClasses[type]) === null || _g === void 0 ? void 0 : _g.dark) === null || _h === void 0 ? void 0 : _h.hover, (_k = (_j = typeClasses[type]) === null || _j === void 0 ? void 0 : _j.dark) === null || _k === void 0 ? void 0 : _k.active, disabled ? "cursor-not-allowed opacity-50 bg-gray-200" : "", className);
93
- return (React.createElement("button", { type: "button", className: buttonClasses, onClick: onClick, disabled: disabled, "aria-label": label }, label));
116
+ var _l = _a.type, type = _l === void 0 ? "primary" : _l, _m = _a.size, size = _m === void 0 ? "sm" : _m, onClick = _a.onClick, _o = _a.disabled, disabled = _o === void 0 ? false : _o, label = _a.label, icon = _a.icon, _p = _a.className, className = _p === void 0 ? "" : _p;
117
+ var buttonClasses = classNames("inline-flex items-center border transition-all ease-out duration-400 box-border rounded-full scale-95 hover:scale-100 hover:drop-shadow-md active:scale-95 active:drop-shadow-none", sizeClasses[size], (_b = typeClasses[type]) === null || _b === void 0 ? void 0 : _b.base, (_c = typeClasses[type]) === null || _c === void 0 ? void 0 : _c.hover, (_d = typeClasses[type]) === null || _d === void 0 ? void 0 : _d.active, (_f = (_e = typeClasses[type]) === null || _e === void 0 ? void 0 : _e.dark) === null || _f === void 0 ? void 0 : _f.base, (_h = (_g = typeClasses[type]) === null || _g === void 0 ? void 0 : _g.dark) === null || _h === void 0 ? void 0 : _h.hover, (_k = (_j = typeClasses[type]) === null || _j === void 0 ? void 0 : _j.dark) === null || _k === void 0 ? void 0 : _k.active, disabled ? "cursor-not-allowed opacity-50 bg-gray-200" : "", className);
118
+ var iconClasses = classNames(iconSizeClasses[size]);
119
+ var finalContainerClasses = classNames(containerClasses[size]);
120
+ return (React.createElement("button", { type: "button", className: buttonClasses, onClick: onClick, disabled: disabled, "aria-label": label },
121
+ icon && React.createElement(Icon, { IconComponent: icon, className: iconClasses }),
122
+ React.createElement("div", { className: finalContainerClasses }, label)));
94
123
  }
95
124
 
125
+ var SparkleContext = React.createContext({
126
+ components: {
127
+ link: function (_a) {
128
+ var href = _a.href, className = _a.className, children = _a.children;
129
+ return (React.createElement("a", { href: href, className: className }, children));
130
+ },
131
+ },
132
+ });
133
+
96
134
  var tabClasses = {
97
135
  default: {
98
136
  base: "text-element-800 border-transparent cursor-pointer",
99
- hover: "hover:text-action-600",
137
+ hover: "hover:text-action-500",
100
138
  dark: {
101
- base: "dark:text-element-800-dark",
139
+ base: "dark:text-element-700-dark",
102
140
  hover: "dark:hover:text-action-600-dark",
103
141
  },
104
142
  },
105
143
  selected: {
106
- base: "border-action-500 text-action-600 cursor-default",
144
+ base: "border-action-500 text-action-500 cursor-default",
107
145
  hover: "",
108
146
  dark: {
109
147
  base: "dark:border-action-500-dark dark:text-action-500-dark",
@@ -114,17 +152,17 @@ var tabClasses = {
114
152
  var iconClasses = {
115
153
  default: {
116
154
  base: "text-element-600",
117
- hover: "group-hover:text-action-400 group-hover:text-action-400",
155
+ hover: "group-hover:text-action-400",
118
156
  dark: {
119
157
  base: "dark:text-element-600-dark",
120
- hover: "dark:group-hover:text-action-400-dark",
158
+ hover: "dark:group-hover:text-action-500-dark",
121
159
  },
122
160
  },
123
161
  selected: {
124
- base: "text-action-400",
162
+ base: "text-action-500",
125
163
  hover: "",
126
164
  dark: {
127
- base: "dark:text-action-400-dark",
165
+ base: "dark:text-action-500-dark",
128
166
  hover: "",
129
167
  },
130
168
  },
@@ -135,6 +173,8 @@ var tabSizingClasses = {
135
173
  };
136
174
  function Tab(_a) {
137
175
  var tabs = _a.tabs, onTabClick = _a.onTabClick, _b = _a.className, className = _b === void 0 ? "" : _b;
176
+ var components = React.useContext(SparkleContext).components;
177
+ var Link = components.link;
138
178
  var renderTabs = function () {
139
179
  return tabs.map(function (tab) {
140
180
  var _a, _b;
@@ -144,21 +184,19 @@ function Tab(_a) {
144
184
  var iconStateClasses = tab.current
145
185
  ? iconClasses.selected
146
186
  : iconClasses.default;
147
- var finalTabClasses = classNames("group justify-center flex gap-x-2 text-sm font-medium px-4 py-3 border-b-2 transition-colors duration-200 whitespace-nowrap", tabStateClasses.base, tabStateClasses.hover, tabSizingClasses[(_a = tab.sizing) !== null && _a !== void 0 ? _a : "hug"], className);
148
- var finalIconClasses = classNames("h-5 w-5", iconStateClasses.base, iconStateClasses.hover, className);
149
- return (React.createElement("div", { key: tab.label, className: finalTabClasses, "aria-current": tab.current ? "page" : undefined, onClick: function (event) { return onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(tab.label, event); } },
150
- tab.icon && React.createElement(tab.icon, { className: finalIconClasses }), (_b = tab.hideLabel) !== null && _b !== void 0 ? _b : tab.label));
187
+ var finalTabClasses = classNames("group justify-center flex text-sm font-semibold px-4 py-3 border-b-2 transition-colors duration-400 whitespace-nowrap select-none", tabStateClasses.base, tabStateClasses.hover, tabStateClasses.dark.base, tabStateClasses.dark.hover, tabSizingClasses[(_a = tab.sizing) !== null && _a !== void 0 ? _a : "hug"], className);
188
+ var finalIconClasses = classNames("h-5 w-5 transition-colors duration-400", iconStateClasses.base, iconStateClasses.hover, iconStateClasses.dark.base, iconStateClasses.dark.hover, className);
189
+ return (React.createElement(Link, { key: tab.label, className: finalTabClasses, "aria-current": tab.current ? "page" : undefined, onClick: function (event) { return onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(tab.label, event); }, href: tab.href },
190
+ React.createElement("div", { className: tab.current
191
+ ? "flex gap-x-2"
192
+ : "duration-400 flex scale-100 transform gap-x-2 transition-transform ease-out group-hover:scale-110" },
193
+ tab.icon && React.createElement(tab.icon, { className: finalIconClasses }), (_b = tab.hideLabel) !== null && _b !== void 0 ? _b : tab.label)));
151
194
  });
152
195
  };
153
196
  return (React.createElement("div", { className: "border-b border-structure-200 dark:border-structure-200-dark" },
154
197
  React.createElement("nav", { className: "-mb-px flex space-x-0", "aria-label": "Tabs" }, renderTabs())));
155
198
  }
156
199
 
157
- function Icon(_a) {
158
- var IconComponent = _a.IconComponent, _b = _a.className, className = _b === void 0 ? "" : _b;
159
- return IconComponent ? React.createElement(IconComponent, { className: className }) : null;
160
- }
161
-
162
200
  /******************************************************************************
163
201
  Copyright (c) Microsoft Corporation.
164
202