@stackframe/dashboard-ui-components 2.8.76

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.
Files changed (169) hide show
  1. package/LICENSE +5 -0
  2. package/dist/chunk-BE-pF4vm.js +34 -0
  3. package/dist/components/alert.d.ts +22 -0
  4. package/dist/components/alert.d.ts.map +1 -0
  5. package/dist/components/alert.js +75 -0
  6. package/dist/components/alert.js.map +1 -0
  7. package/dist/components/badge.d.ts +24 -0
  8. package/dist/components/badge.d.ts.map +1 -0
  9. package/dist/components/badge.js +59 -0
  10. package/dist/components/badge.js.map +1 -0
  11. package/dist/components/button.d.ts +32 -0
  12. package/dist/components/button.d.ts.map +1 -0
  13. package/dist/components/button.js +68 -0
  14. package/dist/components/button.js.map +1 -0
  15. package/dist/components/card.d.ts +59 -0
  16. package/dist/components/card.d.ts.map +1 -0
  17. package/dist/components/card.js +133 -0
  18. package/dist/components/card.js.map +1 -0
  19. package/dist/components/chart-card.d.ts +21 -0
  20. package/dist/components/chart-card.d.ts.map +1 -0
  21. package/dist/components/chart-card.js +54 -0
  22. package/dist/components/chart-card.js.map +1 -0
  23. package/dist/components/chart-container.d.ts +51 -0
  24. package/dist/components/chart-container.d.ts.map +1 -0
  25. package/dist/components/chart-container.js +77 -0
  26. package/dist/components/chart-container.js.map +1 -0
  27. package/dist/components/chart-legend.d.ts +12 -0
  28. package/dist/components/chart-legend.d.ts.map +1 -0
  29. package/dist/components/chart-legend.js +41 -0
  30. package/dist/components/chart-legend.js.map +1 -0
  31. package/dist/components/chart-theme.d.ts +26 -0
  32. package/dist/components/chart-theme.d.ts.map +1 -0
  33. package/dist/components/chart-theme.js +64 -0
  34. package/dist/components/chart-theme.js.map +1 -0
  35. package/dist/components/chart-tooltip.d.ts +41 -0
  36. package/dist/components/chart-tooltip.d.ts.map +1 -0
  37. package/dist/components/chart-tooltip.js +89 -0
  38. package/dist/components/chart-tooltip.js.map +1 -0
  39. package/dist/components/cursor-blast-effect.d.ts +27 -0
  40. package/dist/components/cursor-blast-effect.d.ts.map +1 -0
  41. package/dist/components/cursor-blast-effect.js +243 -0
  42. package/dist/components/cursor-blast-effect.js.map +1 -0
  43. package/dist/components/edit-mode.d.ts +12 -0
  44. package/dist/components/edit-mode.d.ts.map +1 -0
  45. package/dist/components/edit-mode.js +23 -0
  46. package/dist/components/edit-mode.js.map +1 -0
  47. package/dist/components/empty-state.d.ts +21 -0
  48. package/dist/components/empty-state.d.ts.map +1 -0
  49. package/dist/components/empty-state.js +37 -0
  50. package/dist/components/empty-state.js.map +1 -0
  51. package/dist/components/input.d.ts +18 -0
  52. package/dist/components/input.d.ts.map +1 -0
  53. package/dist/components/input.js +53 -0
  54. package/dist/components/input.js.map +1 -0
  55. package/dist/components/metric-card.d.ts +31 -0
  56. package/dist/components/metric-card.d.ts.map +1 -0
  57. package/dist/components/metric-card.js +88 -0
  58. package/dist/components/metric-card.js.map +1 -0
  59. package/dist/components/pill-toggle.d.ts +33 -0
  60. package/dist/components/pill-toggle.d.ts.map +1 -0
  61. package/dist/components/pill-toggle.js +86 -0
  62. package/dist/components/pill-toggle.js.map +1 -0
  63. package/dist/components/progress-bar.d.ts +25 -0
  64. package/dist/components/progress-bar.d.ts.map +1 -0
  65. package/dist/components/progress-bar.js +44 -0
  66. package/dist/components/progress-bar.js.map +1 -0
  67. package/dist/components/separator.d.ts +14 -0
  68. package/dist/components/separator.d.ts.map +1 -0
  69. package/dist/components/separator.js +20 -0
  70. package/dist/components/separator.js.map +1 -0
  71. package/dist/components/skeleton.d.ts +12 -0
  72. package/dist/components/skeleton.d.ts.map +1 -0
  73. package/dist/components/skeleton.js +18 -0
  74. package/dist/components/skeleton.js.map +1 -0
  75. package/dist/components/table.d.ts +24 -0
  76. package/dist/components/table.d.ts.map +1 -0
  77. package/dist/components/table.js +59 -0
  78. package/dist/components/table.js.map +1 -0
  79. package/dist/components/tabs.d.ts +34 -0
  80. package/dist/components/tabs.d.ts.map +1 -0
  81. package/dist/components/tabs.js +100 -0
  82. package/dist/components/tabs.js.map +1 -0
  83. package/dist/dashboard-ui-components.global.js +15232 -0
  84. package/dist/dashboard-ui-components.global.js.map +7 -0
  85. package/dist/esm/components/alert.d.ts +22 -0
  86. package/dist/esm/components/alert.d.ts.map +1 -0
  87. package/dist/esm/components/alert.js +73 -0
  88. package/dist/esm/components/alert.js.map +1 -0
  89. package/dist/esm/components/badge.d.ts +24 -0
  90. package/dist/esm/components/badge.d.ts.map +1 -0
  91. package/dist/esm/components/badge.js +57 -0
  92. package/dist/esm/components/badge.js.map +1 -0
  93. package/dist/esm/components/button.d.ts +32 -0
  94. package/dist/esm/components/button.d.ts.map +1 -0
  95. package/dist/esm/components/button.js +65 -0
  96. package/dist/esm/components/button.js.map +1 -0
  97. package/dist/esm/components/card.d.ts +59 -0
  98. package/dist/esm/components/card.d.ts.map +1 -0
  99. package/dist/esm/components/card.js +127 -0
  100. package/dist/esm/components/card.js.map +1 -0
  101. package/dist/esm/components/chart-card.d.ts +21 -0
  102. package/dist/esm/components/chart-card.d.ts.map +1 -0
  103. package/dist/esm/components/chart-card.js +51 -0
  104. package/dist/esm/components/chart-card.js.map +1 -0
  105. package/dist/esm/components/chart-container.d.ts +51 -0
  106. package/dist/esm/components/chart-container.d.ts.map +1 -0
  107. package/dist/esm/components/chart-container.js +70 -0
  108. package/dist/esm/components/chart-container.js.map +1 -0
  109. package/dist/esm/components/chart-legend.d.ts +12 -0
  110. package/dist/esm/components/chart-legend.d.ts.map +1 -0
  111. package/dist/esm/components/chart-legend.js +36 -0
  112. package/dist/esm/components/chart-legend.js.map +1 -0
  113. package/dist/esm/components/chart-theme.d.ts +26 -0
  114. package/dist/esm/components/chart-theme.d.ts.map +1 -0
  115. package/dist/esm/components/chart-theme.js +59 -0
  116. package/dist/esm/components/chart-theme.js.map +1 -0
  117. package/dist/esm/components/chart-tooltip.d.ts +41 -0
  118. package/dist/esm/components/chart-tooltip.d.ts.map +1 -0
  119. package/dist/esm/components/chart-tooltip.js +84 -0
  120. package/dist/esm/components/chart-tooltip.js.map +1 -0
  121. package/dist/esm/components/cursor-blast-effect.d.ts +27 -0
  122. package/dist/esm/components/cursor-blast-effect.d.ts.map +1 -0
  123. package/dist/esm/components/cursor-blast-effect.js +241 -0
  124. package/dist/esm/components/cursor-blast-effect.js.map +1 -0
  125. package/dist/esm/components/edit-mode.d.ts +12 -0
  126. package/dist/esm/components/edit-mode.d.ts.map +1 -0
  127. package/dist/esm/components/edit-mode.js +20 -0
  128. package/dist/esm/components/edit-mode.js.map +1 -0
  129. package/dist/esm/components/empty-state.d.ts +21 -0
  130. package/dist/esm/components/empty-state.d.ts.map +1 -0
  131. package/dist/esm/components/empty-state.js +34 -0
  132. package/dist/esm/components/empty-state.js.map +1 -0
  133. package/dist/esm/components/input.d.ts +18 -0
  134. package/dist/esm/components/input.d.ts.map +1 -0
  135. package/dist/esm/components/input.js +50 -0
  136. package/dist/esm/components/input.js.map +1 -0
  137. package/dist/esm/components/metric-card.d.ts +31 -0
  138. package/dist/esm/components/metric-card.d.ts.map +1 -0
  139. package/dist/esm/components/metric-card.js +85 -0
  140. package/dist/esm/components/metric-card.js.map +1 -0
  141. package/dist/esm/components/pill-toggle.d.ts +33 -0
  142. package/dist/esm/components/pill-toggle.d.ts.map +1 -0
  143. package/dist/esm/components/pill-toggle.js +84 -0
  144. package/dist/esm/components/pill-toggle.js.map +1 -0
  145. package/dist/esm/components/progress-bar.d.ts +25 -0
  146. package/dist/esm/components/progress-bar.d.ts.map +1 -0
  147. package/dist/esm/components/progress-bar.js +42 -0
  148. package/dist/esm/components/progress-bar.js.map +1 -0
  149. package/dist/esm/components/separator.d.ts +14 -0
  150. package/dist/esm/components/separator.d.ts.map +1 -0
  151. package/dist/esm/components/separator.js +18 -0
  152. package/dist/esm/components/separator.js.map +1 -0
  153. package/dist/esm/components/skeleton.d.ts +12 -0
  154. package/dist/esm/components/skeleton.d.ts.map +1 -0
  155. package/dist/esm/components/skeleton.js +16 -0
  156. package/dist/esm/components/skeleton.js.map +1 -0
  157. package/dist/esm/components/table.d.ts +24 -0
  158. package/dist/esm/components/table.d.ts.map +1 -0
  159. package/dist/esm/components/table.js +51 -0
  160. package/dist/esm/components/table.js.map +1 -0
  161. package/dist/esm/components/tabs.d.ts +34 -0
  162. package/dist/esm/components/tabs.d.ts.map +1 -0
  163. package/dist/esm/components/tabs.js +98 -0
  164. package/dist/esm/components/tabs.js.map +1 -0
  165. package/dist/esm/index.d.ts +21 -0
  166. package/dist/esm/index.js +22 -0
  167. package/dist/index.d.ts +21 -0
  168. package/dist/index.js +245 -0
  169. package/package.json +71 -0
package/LICENSE ADDED
@@ -0,0 +1,5 @@
1
+ Stack is licensed per-package, and 100% open-source.
2
+
3
+ Generally speaking, client code and examples are licensed under an open-source MIT license, while server components are licensed under an open-source AGPLv3 license. Please refer to each package's `LICENSE` files for more information.
4
+
5
+ We also have enterprise licenses available, if you prefer; please contact [enterprise@stack-auth.com](mailto:enterprise@stack-auth.com).
@@ -0,0 +1,34 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) {
13
+ __defProp(to, key, {
14
+ get: ((k) => from[k]).bind(null, key),
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ }
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
25
+ }) : target, mod));
26
+
27
+ //#endregion
28
+
29
+ Object.defineProperty(exports, '__toESM', {
30
+ enumerable: true,
31
+ get: function () {
32
+ return __toESM;
33
+ }
34
+ });
@@ -0,0 +1,22 @@
1
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
2
+
3
+ //#region src/components/alert.d.ts
4
+ type DesignAlertVariant = "default" | "success" | "error" | "warning" | "info";
5
+ type DesignAlertProps = React.HTMLAttributes<HTMLDivElement> & {
6
+ variant?: DesignAlertVariant;
7
+ title?: React.ReactNode;
8
+ description?: React.ReactNode;
9
+ glassmorphic?: boolean;
10
+ };
11
+ declare function DesignAlert({
12
+ variant,
13
+ title,
14
+ description,
15
+ glassmorphic,
16
+ className,
17
+ children,
18
+ ...props
19
+ }: DesignAlertProps): react_jsx_runtime0.JSX.Element;
20
+ //#endregion
21
+ export { DesignAlert, DesignAlertProps };
22
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","names":[],"sources":["../../src/components/alert.tsx"],"mappings":";;;KAKK,kBAAA;AAAA,KAmEO,gBAAA,GAAmB,KAAA,CAAM,cAAA,CAAe,cAAA;EAClD,OAAA,GAAU,kBAAA;EACV,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,WAAA,GAAc,KAAA,CAAM,SAAA;EACpB,YAAA;AAAA;AAAA,iBAGc,WAAA,CAAA;EACd,OAAA;EACA,KAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,gBAAA,GAAgB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1,75 @@
1
+ "use client";
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_chunk = require('../chunk-BE-pF4vm.js');
5
+ let _phosphor_icons_react = require("@phosphor-icons/react");
6
+ let _stackframe_stack_ui = require("@stackframe/stack-ui");
7
+ let react_jsx_runtime = require("react/jsx-runtime");
8
+
9
+ //#region src/components/alert.tsx
10
+ const variantIconMap = new Map([
11
+ ["default", _phosphor_icons_react.Info],
12
+ ["success", _phosphor_icons_react.CheckCircle],
13
+ ["error", _phosphor_icons_react.XCircle],
14
+ ["warning", _phosphor_icons_react.WarningCircle],
15
+ ["info", _phosphor_icons_react.Info]
16
+ ]);
17
+ const variantStyles = new Map([
18
+ ["default", {
19
+ container: "bg-background border-border",
20
+ icon: "text-foreground",
21
+ title: "text-foreground"
22
+ }],
23
+ ["success", {
24
+ container: "bg-green-500/[0.06] border-green-500/30",
25
+ icon: "text-green-500",
26
+ title: "text-green-600 dark:text-green-400"
27
+ }],
28
+ ["error", {
29
+ container: "bg-red-500/[0.06] border-red-500/30",
30
+ icon: "text-red-500",
31
+ title: "text-red-600 dark:text-red-400"
32
+ }],
33
+ ["warning", {
34
+ container: "bg-amber-500/[0.08] border-amber-500/40",
35
+ icon: "text-amber-600 dark:text-amber-400",
36
+ title: "text-amber-700 dark:text-amber-300"
37
+ }],
38
+ ["info", {
39
+ container: "bg-blue-500/[0.06] border-blue-500/30",
40
+ icon: "text-blue-500",
41
+ title: "text-blue-600 dark:text-blue-400"
42
+ }]
43
+ ]);
44
+ function getMapValueOrThrow(map, key, mapName) {
45
+ const value = map.get(key);
46
+ if (!value) throw new Error(`Missing ${mapName} entry for key "${String(key)}"`);
47
+ return value;
48
+ }
49
+ function DesignAlert({ variant = "default", title, description, glassmorphic = false, className, children, ...props }) {
50
+ const styles = getMapValueOrThrow(variantStyles, variant, "variantStyles");
51
+ const Icon = getMapValueOrThrow(variantIconMap, variant, "variantIconMap");
52
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
53
+ role: "alert",
54
+ className: (0, _stackframe_stack_ui.cn)("relative w-full rounded-2xl border p-4 text-sm", "flex gap-3 items-start", styles.container, glassmorphic && "backdrop-blur-xl", className),
55
+ ...props,
56
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { className: (0, _stackframe_stack_ui.cn)("h-4 w-4 mt-0.5 flex-shrink-0", styles.icon) }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
57
+ className: "min-w-0",
58
+ children: [
59
+ title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h5", {
60
+ className: (0, _stackframe_stack_ui.cn)("mb-1 font-medium leading-none tracking-tight", styles.title),
61
+ children: title
62
+ }),
63
+ description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
64
+ className: "text-sm text-foreground/80 dark:text-muted-foreground [&_p]:leading-relaxed",
65
+ children: description
66
+ }),
67
+ children
68
+ ]
69
+ })]
70
+ });
71
+ }
72
+
73
+ //#endregion
74
+ exports.DesignAlert = DesignAlert;
75
+ //# sourceMappingURL=alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.js","names":["Info","CheckCircle","XCircle","WarningCircle"],"sources":["../../src/components/alert.tsx"],"sourcesContent":["\"use client\";\n\nimport { CheckCircle, Info, WarningCircle, XCircle } from \"@phosphor-icons/react\";\nimport { cn } from \"@stackframe/stack-ui\";\n\ntype DesignAlertVariant = \"default\" | \"success\" | \"error\" | \"warning\" | \"info\";\n\nconst variantIconMap = new Map<DesignAlertVariant, React.ElementType>([\n [\"default\", Info],\n [\"success\", CheckCircle],\n [\"error\", XCircle],\n [\"warning\", WarningCircle],\n [\"info\", Info],\n]);\n\ntype VariantStyles = {\n container: string,\n icon: string,\n title: string,\n};\n\nconst variantStyles = new Map<DesignAlertVariant, VariantStyles>([\n [\n \"default\",\n {\n container: \"bg-background border-border\",\n icon: \"text-foreground\",\n title: \"text-foreground\",\n },\n ],\n [\n \"success\",\n {\n container: \"bg-green-500/[0.06] border-green-500/30\",\n icon: \"text-green-500\",\n title: \"text-green-600 dark:text-green-400\",\n },\n ],\n [\n \"error\",\n {\n container: \"bg-red-500/[0.06] border-red-500/30\",\n icon: \"text-red-500\",\n title: \"text-red-600 dark:text-red-400\",\n },\n ],\n [\n \"warning\",\n {\n container: \"bg-amber-500/[0.08] border-amber-500/40\",\n icon: \"text-amber-600 dark:text-amber-400\",\n title: \"text-amber-700 dark:text-amber-300\",\n },\n ],\n [\n \"info\",\n {\n container: \"bg-blue-500/[0.06] border-blue-500/30\",\n icon: \"text-blue-500\",\n title: \"text-blue-600 dark:text-blue-400\",\n },\n ],\n]);\n\nfunction getMapValueOrThrow<TKey, TValue>(map: Map<TKey, TValue>, key: TKey, mapName: string) {\n const value = map.get(key);\n if (!value) {\n throw new Error(`Missing ${mapName} entry for key \"${String(key)}\"`);\n }\n return value;\n}\n\nexport type DesignAlertProps = React.HTMLAttributes<HTMLDivElement> & {\n variant?: DesignAlertVariant,\n title?: React.ReactNode,\n description?: React.ReactNode,\n glassmorphic?: boolean,\n};\n\nexport function DesignAlert({\n variant = \"default\",\n title,\n description,\n glassmorphic = false,\n className,\n children,\n ...props\n}: DesignAlertProps) {\n const styles = getMapValueOrThrow(variantStyles, variant, \"variantStyles\");\n const Icon = getMapValueOrThrow(variantIconMap, variant, \"variantIconMap\");\n\n return (\n <div\n role=\"alert\"\n className={cn(\n \"relative w-full rounded-2xl border p-4 text-sm\",\n \"flex gap-3 items-start\",\n styles.container,\n glassmorphic && \"backdrop-blur-xl\",\n className\n )}\n {...props}\n >\n <Icon className={cn(\"h-4 w-4 mt-0.5 flex-shrink-0\", styles.icon)} />\n <div className=\"min-w-0\">\n {title && (\n <h5 className={cn(\"mb-1 font-medium leading-none tracking-tight\", styles.title)}>\n {title}\n </h5>\n )}\n {description && (\n <div className=\"text-sm text-foreground/80 dark:text-muted-foreground [&_p]:leading-relaxed\">\n {description}\n </div>\n )}\n {children}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AAOA,MAAM,iBAAiB,IAAI,IAA2C;CACpE,CAAC,WAAWA,2BAAK;CACjB,CAAC,WAAWC,kCAAY;CACxB,CAAC,SAASC,8BAAQ;CAClB,CAAC,WAAWC,oCAAc;CAC1B,CAAC,QAAQH,2BAAK;CACf,CAAC;AAQF,MAAM,gBAAgB,IAAI,IAAuC;CAC/D,CACE,WACA;EACE,WAAW;EACX,MAAM;EACN,OAAO;EACR,CACF;CACD,CACE,WACA;EACE,WAAW;EACX,MAAM;EACN,OAAO;EACR,CACF;CACD,CACE,SACA;EACE,WAAW;EACX,MAAM;EACN,OAAO;EACR,CACF;CACD,CACE,WACA;EACE,WAAW;EACX,MAAM;EACN,OAAO;EACR,CACF;CACD,CACE,QACA;EACE,WAAW;EACX,MAAM;EACN,OAAO;EACR,CACF;CACF,CAAC;AAEF,SAAS,mBAAiC,KAAwB,KAAW,SAAiB;CAC5F,MAAM,QAAQ,IAAI,IAAI,IAAI;AAC1B,KAAI,CAAC,MACH,OAAM,IAAI,MAAM,WAAW,QAAQ,kBAAkB,OAAO,IAAI,CAAC,GAAG;AAEtE,QAAO;;AAUT,SAAgB,YAAY,EAC1B,UAAU,WACV,OACA,aACA,eAAe,OACf,WACA,UACA,GAAG,SACgB;CACnB,MAAM,SAAS,mBAAmB,eAAe,SAAS,gBAAgB;CAC1E,MAAM,OAAO,mBAAmB,gBAAgB,SAAS,iBAAiB;AAE1E,QACE,4CAAC;EACC,MAAK;EACL,wCACE,kDACA,0BACA,OAAO,WACP,gBAAgB,oBAChB,UACD;EACD,GAAI;aAEJ,2CAAC,QAAK,wCAAc,gCAAgC,OAAO,KAAK,GAAI,EACpE,4CAAC;GAAI,WAAU;;IACZ,SACC,2CAAC;KAAG,wCAAc,gDAAgD,OAAO,MAAM;eAC5E;MACE;IAEN,eACC,2CAAC;KAAI,WAAU;eACZ;MACG;IAEP;;IACG;GACF"}
@@ -0,0 +1,24 @@
1
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
2
+
3
+ //#region src/components/badge.d.ts
4
+ type DesignBadgeColor = "blue" | "cyan" | "purple" | "green" | "orange" | "red";
5
+ type DesignBadgeSize = "sm" | "md";
6
+ /** At least one of showLabel or showIcon must be true. */
7
+ type DesignBadgeContentMode = "both" | "text" | "icon";
8
+ type DesignBadgeProps = {
9
+ label: string;
10
+ color: DesignBadgeColor;
11
+ icon?: React.ElementType;
12
+ size?: DesignBadgeSize; /** What to display: "both" (default), "text" (label only), or "icon" (icon only; requires icon prop). */
13
+ contentMode?: DesignBadgeContentMode;
14
+ };
15
+ declare function DesignBadge({
16
+ label,
17
+ color,
18
+ icon,
19
+ size,
20
+ contentMode
21
+ }: DesignBadgeProps): react_jsx_runtime0.JSX.Element;
22
+ //#endregion
23
+ export { DesignBadge, DesignBadgeColor, DesignBadgeContentMode, DesignBadgeProps, DesignBadgeSize };
24
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","names":[],"sources":["../../src/components/badge.tsx"],"mappings":";;;KAIY,gBAAA;AAAA,KACA,eAAA;;KAoBA,sBAAA;AAAA,KAEA,gBAAA;EACV,KAAA;EACA,KAAA,EAAO,gBAAA;EACP,IAAA,GAAO,KAAA,CAAM,WAAA;EACb,IAAA,GAAO,eAAA,EA1BkB;EA4BzB,WAAA,GAAc,sBAAA;AAAA;AAAA,iBA2BA,WAAA,CAAA;EACd,KAAA;EACA,KAAA;EACA,IAAA;EACA,IAAA;EACA;AAAA,GACC,gBAAA,GAAgB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1,59 @@
1
+ "use client";
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_chunk = require('../chunk-BE-pF4vm.js');
5
+ let _stackframe_stack_ui = require("@stackframe/stack-ui");
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+
8
+ //#region src/components/badge.tsx
9
+ const badgeStyles = new Map([
10
+ ["blue", "text-blue-700 dark:text-blue-400 bg-blue-500/20 dark:bg-blue-500/10 ring-1 ring-blue-500/30 dark:ring-blue-500/20"],
11
+ ["cyan", "text-cyan-700 dark:text-cyan-400 bg-cyan-500/20 dark:bg-cyan-500/10 ring-1 ring-cyan-500/30 dark:ring-cyan-500/20"],
12
+ ["purple", "text-purple-700 dark:text-purple-400 bg-purple-500/20 dark:bg-purple-500/10 ring-1 ring-purple-500/30 dark:ring-purple-500/20"],
13
+ ["green", "text-emerald-700 dark:text-emerald-400 bg-emerald-500/20 dark:bg-emerald-500/10 ring-1 ring-emerald-500/30 dark:ring-emerald-500/20"],
14
+ ["orange", "text-amber-700 dark:text-amber-300 bg-amber-500/20 dark:bg-amber-500/10 ring-1 ring-amber-500/30 dark:ring-amber-500/20"],
15
+ ["red", "text-red-700 dark:text-red-400 bg-red-500/20 dark:bg-red-500/10 ring-1 ring-red-500/30 dark:ring-red-500/20"]
16
+ ]);
17
+ function getMapValueOrThrow(map, key, mapName) {
18
+ const value = map.get(key);
19
+ if (!value) throw new Error(`Missing ${mapName} entry for key "${String(key)}"`);
20
+ return value;
21
+ }
22
+ function getShowLabelShowIcon(contentMode, hasIcon) {
23
+ switch (contentMode) {
24
+ case "both": return {
25
+ showLabel: true,
26
+ showIcon: hasIcon
27
+ };
28
+ case "text": return {
29
+ showLabel: true,
30
+ showIcon: false
31
+ };
32
+ case "icon":
33
+ if (!hasIcon) throw new Error("DesignBadge contentMode 'icon' requires the icon prop to be provided.");
34
+ return {
35
+ showLabel: false,
36
+ showIcon: true
37
+ };
38
+ default: {
39
+ const _exhaustive = contentMode;
40
+ throw new Error(`Unknown contentMode: ${String(_exhaustive)}`);
41
+ }
42
+ }
43
+ }
44
+ function DesignBadge({ label, color, icon, size = "md", contentMode = "both" }) {
45
+ const Icon = icon;
46
+ const { showLabel, showIcon } = getShowLabelShowIcon(contentMode, !!Icon);
47
+ if (!showLabel && !showIcon) throw new Error("DesignBadge must show at least label or icon.");
48
+ const sizeClasses = size === "sm" ? "px-2 py-0.5 text-[10px]" : "px-2.5 py-1 text-[11px]";
49
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
50
+ className: (0, _stackframe_stack_ui.cn)("inline-flex items-center gap-1.5 rounded-full font-medium", getMapValueOrThrow(badgeStyles, color, "badgeStyles"), sizeClasses),
51
+ title: !showLabel ? label : void 0,
52
+ "aria-label": label,
53
+ children: [showIcon && Icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { className: "h-3 w-3" }), showLabel ? label : null]
54
+ });
55
+ }
56
+
57
+ //#endregion
58
+ exports.DesignBadge = DesignBadge;
59
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","names":[],"sources":["../../src/components/badge.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"@stackframe/stack-ui\";\n\nexport type DesignBadgeColor = \"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"red\";\nexport type DesignBadgeSize = \"sm\" | \"md\";\n\nconst badgeStyles = new Map<DesignBadgeColor, string>([\n [\"blue\", \"text-blue-700 dark:text-blue-400 bg-blue-500/20 dark:bg-blue-500/10 ring-1 ring-blue-500/30 dark:ring-blue-500/20\"],\n [\"cyan\", \"text-cyan-700 dark:text-cyan-400 bg-cyan-500/20 dark:bg-cyan-500/10 ring-1 ring-cyan-500/30 dark:ring-cyan-500/20\"],\n [\"purple\", \"text-purple-700 dark:text-purple-400 bg-purple-500/20 dark:bg-purple-500/10 ring-1 ring-purple-500/30 dark:ring-purple-500/20\"],\n [\"green\", \"text-emerald-700 dark:text-emerald-400 bg-emerald-500/20 dark:bg-emerald-500/10 ring-1 ring-emerald-500/30 dark:ring-emerald-500/20\"],\n [\"orange\", \"text-amber-700 dark:text-amber-300 bg-amber-500/20 dark:bg-amber-500/10 ring-1 ring-amber-500/30 dark:ring-amber-500/20\"],\n [\"red\", \"text-red-700 dark:text-red-400 bg-red-500/20 dark:bg-red-500/10 ring-1 ring-red-500/30 dark:ring-red-500/20\"],\n]);\n\nfunction getMapValueOrThrow<TKey, TValue>(map: Map<TKey, TValue>, key: TKey, mapName: string) {\n const value = map.get(key);\n if (!value) {\n throw new Error(`Missing ${mapName} entry for key \"${String(key)}\"`);\n }\n return value;\n}\n\n/** At least one of showLabel or showIcon must be true. */\nexport type DesignBadgeContentMode = \"both\" | \"text\" | \"icon\";\n\nexport type DesignBadgeProps = {\n label: string,\n color: DesignBadgeColor,\n icon?: React.ElementType,\n size?: DesignBadgeSize,\n /** What to display: \"both\" (default), \"text\" (label only), or \"icon\" (icon only; requires icon prop). */\n contentMode?: DesignBadgeContentMode,\n};\n\nfunction getShowLabelShowIcon(\n contentMode: DesignBadgeContentMode,\n hasIcon: boolean,\n): { showLabel: boolean, showIcon: boolean } {\n switch (contentMode) {\n case \"both\": {\n return { showLabel: true, showIcon: hasIcon };\n }\n case \"text\": {\n return { showLabel: true, showIcon: false };\n }\n case \"icon\": {\n if (!hasIcon) {\n throw new Error(\"DesignBadge contentMode 'icon' requires the icon prop to be provided.\");\n }\n return { showLabel: false, showIcon: true };\n }\n default: {\n const _exhaustive: never = contentMode;\n throw new Error(`Unknown contentMode: ${String(_exhaustive)}`);\n }\n }\n}\n\nexport function DesignBadge({\n label,\n color,\n icon,\n size = \"md\",\n contentMode = \"both\",\n}: DesignBadgeProps) {\n const Icon = icon;\n const { showLabel, showIcon } = getShowLabelShowIcon(contentMode, !!Icon);\n if (!showLabel && !showIcon) {\n throw new Error(\"DesignBadge must show at least label or icon.\");\n }\n const sizeClasses = size === \"sm\"\n ? \"px-2 py-0.5 text-[10px]\"\n : \"px-2.5 py-1 text-[11px]\";\n const colorClasses = getMapValueOrThrow(badgeStyles, color, \"badgeStyles\");\n\n return (\n <div\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-full font-medium\",\n colorClasses,\n sizeClasses\n )}\n title={!showLabel ? label : undefined}\n aria-label={label}\n >\n {showIcon && Icon && <Icon className=\"h-3 w-3\" />}\n {showLabel ? label : null}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,cAAc,IAAI,IAA8B;CACpD,CAAC,QAAQ,oHAAoH;CAC7H,CAAC,QAAQ,oHAAoH;CAC7H,CAAC,UAAU,gIAAgI;CAC3I,CAAC,SAAS,sIAAsI;CAChJ,CAAC,UAAU,0HAA0H;CACrI,CAAC,OAAO,8GAA8G;CACvH,CAAC;AAEF,SAAS,mBAAiC,KAAwB,KAAW,SAAiB;CAC5F,MAAM,QAAQ,IAAI,IAAI,IAAI;AAC1B,KAAI,CAAC,MACH,OAAM,IAAI,MAAM,WAAW,QAAQ,kBAAkB,OAAO,IAAI,CAAC,GAAG;AAEtE,QAAO;;AAeT,SAAS,qBACP,aACA,SAC2C;AAC3C,SAAQ,aAAR;EACE,KAAK,OACH,QAAO;GAAE,WAAW;GAAM,UAAU;GAAS;EAE/C,KAAK,OACH,QAAO;GAAE,WAAW;GAAM,UAAU;GAAO;EAE7C,KAAK;AACH,OAAI,CAAC,QACH,OAAM,IAAI,MAAM,wEAAwE;AAE1F,UAAO;IAAE,WAAW;IAAO,UAAU;IAAM;EAE7C,SAAS;GACP,MAAM,cAAqB;AAC3B,SAAM,IAAI,MAAM,wBAAwB,OAAO,YAAY,GAAG;;;;AAKpE,SAAgB,YAAY,EAC1B,OACA,OACA,MACA,OAAO,MACP,cAAc,UACK;CACnB,MAAM,OAAO;CACb,MAAM,EAAE,WAAW,aAAa,qBAAqB,aAAa,CAAC,CAAC,KAAK;AACzE,KAAI,CAAC,aAAa,CAAC,SACjB,OAAM,IAAI,MAAM,gDAAgD;CAElE,MAAM,cAAc,SAAS,OACzB,4BACA;AAGJ,QACE,4CAAC;EACC,wCACE,6DALe,mBAAmB,aAAa,OAAO,cAAc,EAOpE,YACD;EACD,OAAO,CAAC,YAAY,QAAQ;EAC5B,cAAY;aAEX,YAAY,QAAQ,2CAAC,QAAK,WAAU,YAAY,EAChD,YAAY,QAAQ;GACjB"}
@@ -0,0 +1,32 @@
1
+ import * as class_variance_authority_types0 from "class-variance-authority/types";
2
+ import { VariantProps } from "class-variance-authority";
3
+ import React from "react";
4
+
5
+ //#region src/components/button.d.ts
6
+ declare const designButtonVariants: (props?: ({
7
+ variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | "plain" | null | undefined;
8
+ size?: "icon" | "default" | "sm" | "lg" | null | undefined;
9
+ } & class_variance_authority_types0.ClassProp) | undefined) => string;
10
+ type DesignOriginalButtonProps = {
11
+ asChild?: boolean;
12
+ } & React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<typeof designButtonVariants>;
13
+ type DesignButtonProps = {
14
+ onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void | Promise<void>;
15
+ loading?: boolean;
16
+ loadingStyle?: "spinner" | "disabled";
17
+ } & DesignOriginalButtonProps;
18
+ declare const DesignButton: React.FC<{
19
+ onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void | Promise<void>;
20
+ loading?: boolean;
21
+ loadingStyle?: "spinner" | "disabled";
22
+ } & {
23
+ asChild?: boolean;
24
+ } & React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<(props?: ({
25
+ variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | "plain" | null | undefined;
26
+ size?: "icon" | "default" | "sm" | "lg" | null | undefined;
27
+ } & class_variance_authority_types0.ClassProp) | undefined) => string> & {
28
+ ref?: React.Ref<HTMLButtonElement> | undefined;
29
+ }>;
30
+ //#endregion
31
+ export { DesignButton, DesignButtonProps, DesignOriginalButtonProps };
32
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","names":[],"sources":["../../src/components/button.tsx"],"mappings":";;;;;cASM,oBAAA,GAAoB,KAAA;;;IA6BzB,+BAAA,CAAA,SAAA;AAAA,KAEW,yBAAA;EACV,OAAA;AAAA,IACE,KAAA,CAAM,oBAAA,CAAqB,iBAAA,IAAqB,YAAA,QAAoB,oBAAA;AAAA,KAgB5D,iBAAA;EACV,OAAA,IAAW,CAAA,EAAG,KAAA,CAAM,UAAA,CAAW,iBAAA,aAA8B,OAAA;EAC7D,OAAA;EACA,YAAA;AAAA,IACE,yBAAA;AAAA,cAES,YAAA,EAAY,KAAA,CAAA,EAAA;aALZ,CAAA,EAAG,KAAA,CAAM,UAAA,CAAW,iBAAA,aAA8B,OAAA"}
@@ -0,0 +1,68 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_chunk = require('../chunk-BE-pF4vm.js');
3
+ let _stackframe_stack_ui = require("@stackframe/stack-ui");
4
+ let react_jsx_runtime = require("react/jsx-runtime");
5
+ let _radix_ui_react_slot = require("@radix-ui/react-slot");
6
+ let _stackframe_stack_shared_dist_utils_react = require("@stackframe/stack-shared/dist/utils/react");
7
+ let class_variance_authority = require("class-variance-authority");
8
+ let react = require("react");
9
+ react = require_chunk.__toESM(react);
10
+ let _stackframe_stack_shared_dist_hooks_use_async_callback = require("@stackframe/stack-shared/dist/hooks/use-async-callback");
11
+ let _stackframe_stack_shared_dist_utils_promises = require("@stackframe/stack-shared/dist/utils/promises");
12
+
13
+ //#region src/components/button.tsx
14
+ const designButtonVariants = (0, class_variance_authority.cva)("stack-scope inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", {
15
+ variants: {
16
+ variant: {
17
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
18
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
19
+ outline: "border border-input bg-white/85 dark:bg-background hover:bg-white dark:hover:bg-accent hover:text-accent-foreground",
20
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
21
+ ghost: "hover:bg-accent hover:text-accent-foreground",
22
+ link: "text-primary underline-offset-4 hover:underline",
23
+ plain: ""
24
+ },
25
+ size: {
26
+ default: "h-9 px-4 py-2",
27
+ sm: "h-8 rounded-md px-3 text-xs",
28
+ lg: "h-10 rounded-md px-8",
29
+ icon: "h-9 w-9"
30
+ }
31
+ },
32
+ defaultVariants: {
33
+ variant: "default",
34
+ size: "default"
35
+ }
36
+ });
37
+ const DesignOriginalButton = (0, _stackframe_stack_shared_dist_utils_react.forwardRefIfNeeded)(({ className, variant, size, asChild = false, ...props }, ref) => {
38
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(asChild ? _radix_ui_react_slot.Slot : "button", {
39
+ className: (0, _stackframe_stack_ui.cn)(designButtonVariants({
40
+ variant,
41
+ size,
42
+ className
43
+ })),
44
+ ref,
45
+ ...props
46
+ });
47
+ });
48
+ DesignOriginalButton.displayName = "DesignButton";
49
+ const DesignButton = (0, _stackframe_stack_shared_dist_utils_react.forwardRefIfNeeded)(({ onClick, loading: loadingProp, loadingStyle = "spinner", children, size, ...props }, ref) => {
50
+ const [handleClick, isLoading] = (0, _stackframe_stack_shared_dist_hooks_use_async_callback.useAsyncCallback)(async (e) => {
51
+ await onClick?.(e);
52
+ }, [onClick]);
53
+ const loading = loadingProp || isLoading;
54
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(DesignOriginalButton, {
55
+ ...props,
56
+ ref,
57
+ disabled: props.disabled || loading,
58
+ onClick: (e) => (0, _stackframe_stack_shared_dist_utils_promises.runAsynchronouslyWithAlert)(handleClick(e)),
59
+ size,
60
+ className: (0, _stackframe_stack_ui.cn)("relative", loading && "[&>:not(.stack-button-do-not-hide-when-siblings-are)]:invisible", props.className),
61
+ children: [loadingStyle === "spinner" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_stackframe_stack_ui.Spinner, { className: (0, _stackframe_stack_ui.cn)("absolute inset-0 flex items-center justify-center stack-button-do-not-hide-when-siblings-are", !loading && "invisible") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_slot.Slottable, { children: typeof children === "string" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children }) : children })]
62
+ });
63
+ });
64
+ DesignButton.displayName = "DesignButton";
65
+
66
+ //#endregion
67
+ exports.DesignButton = DesignButton;
68
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","names":["Slot","Spinner","Slottable"],"sources":["../../src/components/button.tsx"],"sourcesContent":["import { Slot, Slottable } from \"@radix-ui/react-slot\";\nimport { forwardRefIfNeeded } from \"@stackframe/stack-shared/dist/utils/react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport React from \"react\";\n\nimport { cn, Spinner } from \"@stackframe/stack-ui\";\nimport { useAsyncCallback } from \"@stackframe/stack-shared/dist/hooks/use-async-callback\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\n\nconst designButtonVariants = cva(\n \"stack-scope inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-white/85 dark:bg-background hover:bg-white dark:hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n plain: \"\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport type DesignOriginalButtonProps = {\n asChild?: boolean,\n} & React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<typeof designButtonVariants>;\n\nconst DesignOriginalButton = forwardRefIfNeeded<HTMLButtonElement, DesignOriginalButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(designButtonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nDesignOriginalButton.displayName = \"DesignButton\";\n\nexport type DesignButtonProps = {\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void | Promise<void>,\n loading?: boolean,\n loadingStyle?: \"spinner\" | \"disabled\",\n} & DesignOriginalButtonProps;\n\nexport const DesignButton = forwardRefIfNeeded<HTMLButtonElement, DesignButtonProps>(\n ({ onClick, loading: loadingProp, loadingStyle = \"spinner\", children, size, ...props }, ref) => {\n const [handleClick, isLoading] = useAsyncCallback(async (e: React.MouseEvent<HTMLButtonElement>) => {\n await onClick?.(e);\n }, [onClick]);\n\n const loading = loadingProp || isLoading;\n\n return (\n <DesignOriginalButton\n {...props}\n ref={ref}\n disabled={props.disabled || loading}\n onClick={(e) => runAsynchronouslyWithAlert(handleClick(e))}\n size={size}\n className={cn(\"relative\", loading && \"[&>:not(.stack-button-do-not-hide-when-siblings-are)]:invisible\", props.className)}\n >\n {loadingStyle === \"spinner\" && <Spinner className={cn(\"absolute inset-0 flex items-center justify-center stack-button-do-not-hide-when-siblings-are\", !loading && \"invisible\")} />}\n <Slottable>\n {typeof children === \"string\" ? <span>{children}</span> : children}\n </Slottable>\n </DesignOriginalButton>\n );\n }\n);\nDesignButton.displayName = \"DesignButton\";\n"],"mappings":";;;;;;;;;;;;;AASA,MAAM,yDACJ,iOACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,aACE;GACF,SACE;GACF,WACE;GACF,OAAO;GACP,MAAM;GACN,OAAO;GACR;EACD,MAAM;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,MAAM;GACP;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF;AAMD,MAAM,0FACH,EAAE,WAAW,SAAS,MAAM,UAAU,OAAO,GAAG,SAAS,QAAQ;AAEhE,QACE,2CAFW,UAAUA,4BAAO;EAG1B,wCAAc,qBAAqB;GAAE;GAAS;GAAM;GAAW,CAAC,CAAC;EAC5D;EACL,GAAI;GACJ;EAGP;AACD,qBAAqB,cAAc;AAQnC,MAAa,kFACV,EAAE,SAAS,SAAS,aAAa,eAAe,WAAW,UAAU,MAAM,GAAG,SAAS,QAAQ;CAC9F,MAAM,CAAC,aAAa,0FAA8B,OAAO,MAA2C;AAClG,QAAM,UAAU,EAAE;IACjB,CAAC,QAAQ,CAAC;CAEb,MAAM,UAAU,eAAe;AAE/B,QACE,4CAAC;EACC,GAAI;EACC;EACL,UAAU,MAAM,YAAY;EAC5B,UAAU,mFAAiC,YAAY,EAAE,CAAC;EACpD;EACN,wCAAc,YAAY,WAAW,mEAAmE,MAAM,UAAU;aAEvH,iBAAiB,aAAa,2CAACC,gCAAQ,wCAAc,gGAAgG,CAAC,WAAW,YAAY,GAAI,EAClL,2CAACC,4CACE,OAAO,aAAa,WAAW,2CAAC,UAAM,WAAgB,GAAG,WAChD;GACS;EAG5B;AACD,aAAa,cAAc"}
@@ -0,0 +1,59 @@
1
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { Card } from "@stackframe/stack-ui";
4
+
5
+ //#region src/components/card.d.ts
6
+ /**
7
+ * Returns `true` when the calling component is rendered inside a DesignCard.
8
+ * Useful for deriving a glassmorphic default.
9
+ */
10
+ declare function useInsideDesignCard(): boolean;
11
+ /**
12
+ * Resolve the effective glassmorphic value.
13
+ * - If the caller passed an explicit boolean → honour it.
14
+ * - Otherwise → fall back to whether we're inside a DesignCard.
15
+ */
16
+ declare function useGlassmorphicDefault(explicit: boolean | undefined): boolean;
17
+ type DesignCardGradient = "blue" | "cyan" | "purple" | "green" | "orange" | "default";
18
+ type DesignCardBaseProps = {
19
+ glassmorphic?: boolean;
20
+ gradient?: DesignCardGradient;
21
+ contentClassName?: string;
22
+ } & Omit<React.ComponentProps<typeof Card>, "title">;
23
+ type WithTitleProps = {
24
+ title: React.ReactNode;
25
+ subtitle?: React.ReactNode;
26
+ icon: React.ElementType;
27
+ actions?: React.ReactNode;
28
+ };
29
+ type WithoutTitleProps = {
30
+ title?: never;
31
+ subtitle?: never;
32
+ icon?: never;
33
+ actions?: never;
34
+ };
35
+ type DesignCardProps = DesignCardBaseProps & (WithTitleProps | WithoutTitleProps);
36
+ declare function DesignCard({
37
+ title,
38
+ subtitle,
39
+ icon: Icon,
40
+ actions,
41
+ glassmorphic: glassmorphicProp,
42
+ gradient,
43
+ children,
44
+ className,
45
+ contentClassName,
46
+ ...props
47
+ }: DesignCardProps): react_jsx_runtime0.JSX.Element;
48
+ type DesignCardTintProps = {
49
+ gradient: DesignCardGradient;
50
+ } & React.ComponentProps<"div">;
51
+ declare function DesignCardTint({
52
+ gradient,
53
+ className,
54
+ children,
55
+ ...props
56
+ }: DesignCardTintProps): react_jsx_runtime0.JSX.Element;
57
+ //#endregion
58
+ export { DesignCard, DesignCardProps, DesignCardTint, DesignCardTintProps, useGlassmorphicDefault, useInsideDesignCard };
59
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","names":[],"sources":["../../src/components/card.tsx"],"mappings":";;;;;;;;AAiBA;iBAAgB,mBAAA,CAAA;;;;AAShB;;iBAAgB,sBAAA,CAAuB,QAAA;AAAA,KAKlC,kBAAA;AAAA,KA6BA,mBAAA;EACH,YAAA;EACA,QAAA,GAAW,kBAAA;EACX,gBAAA;AAAA,IACE,IAAA,CAAK,KAAA,CAAM,cAAA,QAAsB,IAAA;AAAA,KAEhC,cAAA;EACH,KAAA,EAAO,KAAA,CAAM,SAAA;EACb,QAAA,GAAW,KAAA,CAAM,SAAA;EACjB,IAAA,EAAM,KAAA,CAAM,WAAA;EACZ,OAAA,GAAU,KAAA,CAAM,SAAA;AAAA;AAAA,KAGb,iBAAA;EACH,KAAA;EACA,QAAA;EACA,IAAA;EACA,OAAA;AAAA;AAAA,KAGU,eAAA,GAAkB,mBAAA,IAAuB,cAAA,GAAiB,iBAAA;AAAA,iBAEtD,UAAA,CAAA;EACd,KAAA;EACA,QAAA;EACA,IAAA,EAAM,IAAA;EACN,OAAA;EACA,YAAA,EAAc,gBAAA;EACd,QAAA;EACA,QAAA;EACA,SAAA;EACA,gBAAA;EAAA,GACG;AAAA,GACF,eAAA,GAAe,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,KA2GN,mBAAA;EACV,QAAA,EAAU,kBAAA;AAAA,IACR,KAAA,CAAM,cAAA;AAAA,iBAEM,cAAA,CAAA;EACd,QAAA;EACA,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,mBAAA,GAAmB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1,133 @@
1
+ "use client";
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_chunk = require('../chunk-BE-pF4vm.js');
5
+ let _stackframe_stack_ui = require("@stackframe/stack-ui");
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ let react = require("react");
8
+ react = require_chunk.__toESM(react);
9
+
10
+ //#region src/components/card.tsx
11
+ const DesignCardNestingContext = react.default.createContext(false);
12
+ /**
13
+ * Returns `true` when the calling component is rendered inside a DesignCard.
14
+ * Useful for deriving a glassmorphic default.
15
+ */
16
+ function useInsideDesignCard() {
17
+ return react.default.useContext(DesignCardNestingContext);
18
+ }
19
+ /**
20
+ * Resolve the effective glassmorphic value.
21
+ * - If the caller passed an explicit boolean → honour it.
22
+ * - Otherwise → fall back to whether we're inside a DesignCard.
23
+ */
24
+ function useGlassmorphicDefault(explicit) {
25
+ const insideCard = useInsideDesignCard();
26
+ return explicit ?? insideCard;
27
+ }
28
+ const hoverTintClasses = new Map([
29
+ ["blue", "group-hover:bg-blue-500/[0.03]"],
30
+ ["purple", "group-hover:bg-purple-500/[0.03]"],
31
+ ["green", "group-hover:bg-emerald-500/[0.03]"],
32
+ ["orange", "group-hover:bg-orange-500/[0.03]"],
33
+ ["default", "group-hover:bg-slate-500/[0.02]"],
34
+ ["cyan", "group-hover:bg-cyan-500/[0.03]"]
35
+ ]);
36
+ const demoTintClasses = new Map([
37
+ ["blue", "group-hover/tint:bg-blue-500/[0.02]"],
38
+ ["purple", "group-hover/tint:bg-purple-500/[0.02]"],
39
+ ["green", "group-hover/tint:bg-emerald-500/[0.02]"],
40
+ ["orange", "group-hover/tint:bg-orange-500/[0.02]"],
41
+ ["default", "group-hover/tint:bg-slate-500/[0.015]"],
42
+ ["cyan", "group-hover/tint:bg-cyan-500/[0.02]"]
43
+ ]);
44
+ const bodyPaddingClass = "p-5";
45
+ function DesignCard({ title, subtitle, icon: Icon, actions, glassmorphic: glassmorphicProp, gradient = "default", children, className, contentClassName, ...props }) {
46
+ const glassmorphic = glassmorphicProp ?? true;
47
+ const hoverTintClass = hoverTintClasses.get(gradient) ?? "group-hover:bg-slate-500/[0.02]";
48
+ const hasContent = react.default.Children.count(children) > 0;
49
+ const variant = title != null ? subtitle != null ? "header" : "compact" : "bodyOnly";
50
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DesignCardNestingContext.Provider, {
51
+ value: true,
52
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_stackframe_stack_ui.Card, {
53
+ className: (0, _stackframe_stack_ui.cn)("group relative rounded-2xl overflow-hidden", glassmorphic && [
54
+ "bg-white/90 dark:bg-background/60 dark:backdrop-blur-xl border-0 transition-all duration-150 hover:transition-none",
55
+ "ring-1 ring-black/[0.06] hover:ring-black/[0.1] dark:ring-white/[0.06] dark:hover:ring-white/[0.1]",
56
+ "shadow-none"
57
+ ], glassmorphic && variant === "bodyOnly" && "dark:bg-transparent dark:ring-0 dark:shadow-none", className),
58
+ ...props,
59
+ children: [glassmorphic && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: (0, _stackframe_stack_ui.cn)("absolute inset-0 bg-gradient-to-br from-foreground/[0.04] dark:from-foreground/[0.02] to-transparent pointer-events-none rounded-2xl", variant === "bodyOnly" && "dark:hidden") }), variant !== "bodyOnly" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: (0, _stackframe_stack_ui.cn)("absolute inset-0 transition-colors duration-150 group-hover:transition-none pointer-events-none rounded-2xl", hoverTintClass) })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
60
+ className: "relative",
61
+ children: [
62
+ variant === "header" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
63
+ className: bodyPaddingClass,
64
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
65
+ className: "flex items-start justify-between gap-4",
66
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
67
+ className: "flex-1 min-w-0",
68
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
69
+ className: "flex items-center gap-2",
70
+ children: [Icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
71
+ className: "p-1.5 rounded-lg bg-foreground/[0.06] dark:bg-foreground/[0.04]",
72
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { className: "h-3.5 w-3.5 text-foreground/70 dark:text-muted-foreground" })
73
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
74
+ className: "text-xs font-semibold text-foreground uppercase tracking-wider",
75
+ children: title
76
+ })]
77
+ }), subtitle && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
78
+ className: "text-sm text-muted-foreground mt-1",
79
+ children: subtitle
80
+ })]
81
+ }), actions && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
82
+ className: "flex-shrink-0",
83
+ children: actions
84
+ })]
85
+ })
86
+ }),
87
+ variant === "compact" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
88
+ className: "p-5 flex items-center justify-between gap-4 border-b border-black/[0.12] dark:border-white/[0.06]",
89
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
90
+ className: "flex items-center gap-2 min-w-0",
91
+ children: [Icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
92
+ className: "p-1.5 rounded-lg bg-foreground/[0.04]",
93
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { className: "h-3.5 w-3.5 text-muted-foreground" })
94
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
95
+ className: "text-xs font-semibold text-foreground uppercase tracking-wider",
96
+ children: title
97
+ })]
98
+ }), actions && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
99
+ className: "flex-shrink-0",
100
+ children: actions
101
+ })]
102
+ }),
103
+ hasContent && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
104
+ className: (0, _stackframe_stack_ui.cn)(variant === "header" ? "border-t border-black/[0.12] dark:border-white/[0.06]" : "", variant === "compact" ? "px-5 py-4" : "", variant === "bodyOnly" || variant === "header" ? bodyPaddingClass : "", contentClassName),
105
+ children
106
+ })
107
+ ]
108
+ })]
109
+ })
110
+ });
111
+ }
112
+ function DesignCardTint({ gradient, className, children, ...props }) {
113
+ const tintClass = demoTintClasses.get(gradient) ?? "group-hover/tint:bg-slate-500/[0.015]";
114
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
115
+ className: (0, _stackframe_stack_ui.cn)("group/tint relative rounded-2xl bg-white/90 dark:bg-background/60 dark:backdrop-blur-xl transition-all duration-150 hover:transition-none", "ring-1 ring-black/[0.06] hover:ring-black/[0.1] dark:ring-white/[0.06] dark:hover:ring-white/[0.1]", "shadow-none overflow-hidden", className),
116
+ ...props,
117
+ children: [
118
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "absolute inset-0 bg-gradient-to-br from-foreground/[0.04] dark:from-foreground/[0.02] to-transparent pointer-events-none rounded-2xl" }),
119
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: (0, _stackframe_stack_ui.cn)("absolute inset-0 transition-colors duration-150 group-hover/tint:transition-none pointer-events-none rounded-2xl", tintClass) }),
120
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
121
+ className: "relative",
122
+ children
123
+ })
124
+ ]
125
+ });
126
+ }
127
+
128
+ //#endregion
129
+ exports.DesignCard = DesignCard;
130
+ exports.DesignCardTint = DesignCardTint;
131
+ exports.useGlassmorphicDefault = useGlassmorphicDefault;
132
+ exports.useInsideDesignCard = useInsideDesignCard;
133
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","names":["React","Card"],"sources":["../../src/components/card.tsx"],"sourcesContent":["\"use client\";\n\nimport { Card } from \"@stackframe/stack-ui\";\nimport { cn } from \"@stackframe/stack-ui\";\nimport React from \"react\";\n\n// ─── Card nesting context ────────────────────────────────────────────────────\n// Components with a `glassmorphic` prop use this to auto-detect whether they\n// sit inside a DesignCard. When they do, glassmorphic defaults to `true`;\n// when they don't, it defaults to `false`.\n\nconst DesignCardNestingContext = React.createContext(false);\n\n/**\n * Returns `true` when the calling component is rendered inside a DesignCard.\n * Useful for deriving a glassmorphic default.\n */\nexport function useInsideDesignCard(): boolean {\n return React.useContext(DesignCardNestingContext);\n}\n\n/**\n * Resolve the effective glassmorphic value.\n * - If the caller passed an explicit boolean → honour it.\n * - Otherwise → fall back to whether we're inside a DesignCard.\n */\nexport function useGlassmorphicDefault(explicit: boolean | undefined): boolean {\n const insideCard = useInsideDesignCard();\n return explicit ?? insideCard;\n}\n\ntype DesignCardGradient = \"blue\" | \"cyan\" | \"purple\" | \"green\" | \"orange\" | \"default\";\n\nconst hoverTintClasses = new Map<DesignCardGradient, string>([\n [\"blue\", \"group-hover:bg-blue-500/[0.03]\"],\n [\"purple\", \"group-hover:bg-purple-500/[0.03]\"],\n [\"green\", \"group-hover:bg-emerald-500/[0.03]\"],\n [\"orange\", \"group-hover:bg-orange-500/[0.03]\"],\n [\"default\", \"group-hover:bg-slate-500/[0.02]\"],\n [\"cyan\", \"group-hover:bg-cyan-500/[0.03]\"],\n]);\n\nconst demoTintClasses = new Map<DesignCardGradient, string>([\n [\"blue\", \"group-hover/tint:bg-blue-500/[0.02]\"],\n [\"purple\", \"group-hover/tint:bg-purple-500/[0.02]\"],\n [\"green\", \"group-hover/tint:bg-emerald-500/[0.02]\"],\n [\"orange\", \"group-hover/tint:bg-orange-500/[0.02]\"],\n [\"default\", \"group-hover/tint:bg-slate-500/[0.015]\"],\n [\"cyan\", \"group-hover/tint:bg-cyan-500/[0.02]\"],\n]);\n\nconst bodyPaddingClass = \"p-5\";\n\n// ─── Discriminated props ──────────────────────────────────────────────────\n// - If title is given, icon is required.\n// - The layout is derived automatically:\n// title + subtitle → \"header\" (full header block with subtitle)\n// title only → \"compact\" (slim bar with border-b)\n// no title → \"bodyOnly\" (just the body)\n\ntype DesignCardBaseProps = {\n glassmorphic?: boolean,\n gradient?: DesignCardGradient,\n contentClassName?: string,\n} & Omit<React.ComponentProps<typeof Card>, \"title\">;\n\ntype WithTitleProps = {\n title: React.ReactNode,\n subtitle?: React.ReactNode,\n icon: React.ElementType,\n actions?: React.ReactNode,\n};\n\ntype WithoutTitleProps = {\n title?: never,\n subtitle?: never,\n icon?: never,\n actions?: never,\n};\n\nexport type DesignCardProps = DesignCardBaseProps & (WithTitleProps | WithoutTitleProps);\n\nexport function DesignCard({\n title,\n subtitle,\n icon: Icon,\n actions,\n glassmorphic: glassmorphicProp,\n gradient = \"default\",\n children,\n className,\n contentClassName,\n ...props\n}: DesignCardProps) {\n const glassmorphic = glassmorphicProp ?? true;\n const hoverTintClass = hoverTintClasses.get(gradient) ?? \"group-hover:bg-slate-500/[0.02]\";\n const hasContent = React.Children.count(children) > 0;\n\n // Derive layout from which props were provided\n const variant = title != null\n ? (subtitle != null ? \"header\" : \"compact\")\n : \"bodyOnly\";\n\n return (\n <DesignCardNestingContext.Provider value={true}>\n <Card\n className={cn(\n \"group relative rounded-2xl overflow-hidden\",\n glassmorphic && [\n \"bg-white/90 dark:bg-background/60 dark:backdrop-blur-xl border-0 transition-all duration-150 hover:transition-none\",\n \"ring-1 ring-black/[0.06] hover:ring-black/[0.1] dark:ring-white/[0.06] dark:hover:ring-white/[0.1]\",\n \"shadow-none\",\n ],\n glassmorphic && variant === \"bodyOnly\" && \"dark:bg-transparent dark:ring-0 dark:shadow-none\",\n className\n )}\n {...props}\n >\n {glassmorphic && (\n <>\n <div className={cn(\n \"absolute inset-0 bg-gradient-to-br from-foreground/[0.04] dark:from-foreground/[0.02] to-transparent pointer-events-none rounded-2xl\",\n variant === \"bodyOnly\" && \"dark:hidden\"\n )} />\n {variant !== \"bodyOnly\" && (\n <div\n className={cn(\n \"absolute inset-0 transition-colors duration-150 group-hover:transition-none pointer-events-none rounded-2xl\",\n hoverTintClass\n )}\n />\n )}\n </>\n )}\n <div className=\"relative\">\n {variant === \"header\" && (\n <div className={bodyPaddingClass}>\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n {Icon && (\n <div className=\"p-1.5 rounded-lg bg-foreground/[0.06] dark:bg-foreground/[0.04]\">\n <Icon className=\"h-3.5 w-3.5 text-foreground/70 dark:text-muted-foreground\" />\n </div>\n )}\n <span className=\"text-xs font-semibold text-foreground uppercase tracking-wider\">\n {title}\n </span>\n </div>\n {subtitle && (\n <p className=\"text-sm text-muted-foreground mt-1\">\n {subtitle}\n </p>\n )}\n </div>\n {actions && (\n <div className=\"flex-shrink-0\">\n {actions}\n </div>\n )}\n </div>\n </div>\n )}\n {variant === \"compact\" && (\n <div className=\"p-5 flex items-center justify-between gap-4 border-b border-black/[0.12] dark:border-white/[0.06]\">\n <div className=\"flex items-center gap-2 min-w-0\">\n {Icon && (\n <div className=\"p-1.5 rounded-lg bg-foreground/[0.04]\">\n <Icon className=\"h-3.5 w-3.5 text-muted-foreground\" />\n </div>\n )}\n <span className=\"text-xs font-semibold text-foreground uppercase tracking-wider\">\n {title}\n </span>\n </div>\n {actions && (\n <div className=\"flex-shrink-0\">\n {actions}\n </div>\n )}\n </div>\n )}\n {hasContent && (\n <div\n className={cn(\n variant === \"header\" ? \"border-t border-black/[0.12] dark:border-white/[0.06]\" : \"\",\n variant === \"compact\" ? \"px-5 py-4\" : \"\",\n variant === \"bodyOnly\" || variant === \"header\" ? bodyPaddingClass : \"\",\n contentClassName\n )}\n >\n {children}\n </div>\n )}\n </div>\n </Card>\n </DesignCardNestingContext.Provider>\n );\n}\n\nexport type DesignCardTintProps = {\n gradient: DesignCardGradient,\n} & React.ComponentProps<\"div\">\n\nexport function DesignCardTint({\n gradient,\n className,\n children,\n ...props\n}: DesignCardTintProps) {\n const tintClass = demoTintClasses.get(gradient) ?? \"group-hover/tint:bg-slate-500/[0.015]\";\n\n return (\n <div\n className={cn(\n \"group/tint relative rounded-2xl bg-white/90 dark:bg-background/60 dark:backdrop-blur-xl transition-all duration-150 hover:transition-none\",\n \"ring-1 ring-black/[0.06] hover:ring-black/[0.1] dark:ring-white/[0.06] dark:hover:ring-white/[0.1]\",\n \"shadow-none overflow-hidden\",\n className\n )}\n {...props}\n >\n <div className=\"absolute inset-0 bg-gradient-to-br from-foreground/[0.04] dark:from-foreground/[0.02] to-transparent pointer-events-none rounded-2xl\" />\n <div\n className={cn(\n \"absolute inset-0 transition-colors duration-150 group-hover/tint:transition-none pointer-events-none rounded-2xl\",\n tintClass\n )}\n />\n <div className=\"relative\">\n {children}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAWA,MAAM,2BAA2BA,cAAM,cAAc,MAAM;;;;;AAM3D,SAAgB,sBAA+B;AAC7C,QAAOA,cAAM,WAAW,yBAAyB;;;;;;;AAQnD,SAAgB,uBAAuB,UAAwC;CAC7E,MAAM,aAAa,qBAAqB;AACxC,QAAO,YAAY;;AAKrB,MAAM,mBAAmB,IAAI,IAAgC;CAC3D,CAAC,QAAQ,iCAAiC;CAC1C,CAAC,UAAU,mCAAmC;CAC9C,CAAC,SAAS,oCAAoC;CAC9C,CAAC,UAAU,mCAAmC;CAC9C,CAAC,WAAW,kCAAkC;CAC9C,CAAC,QAAQ,iCAAiC;CAC3C,CAAC;AAEF,MAAM,kBAAkB,IAAI,IAAgC;CAC1D,CAAC,QAAQ,sCAAsC;CAC/C,CAAC,UAAU,wCAAwC;CACnD,CAAC,SAAS,yCAAyC;CACnD,CAAC,UAAU,wCAAwC;CACnD,CAAC,WAAW,wCAAwC;CACpD,CAAC,QAAQ,sCAAsC;CAChD,CAAC;AAEF,MAAM,mBAAmB;AA+BzB,SAAgB,WAAW,EACzB,OACA,UACA,MAAM,MACN,SACA,cAAc,kBACd,WAAW,WACX,UACA,WACA,kBACA,GAAG,SACe;CAClB,MAAM,eAAe,oBAAoB;CACzC,MAAM,iBAAiB,iBAAiB,IAAI,SAAS,IAAI;CACzD,MAAM,aAAaA,cAAM,SAAS,MAAM,SAAS,GAAG;CAGpD,MAAM,UAAU,SAAS,OACpB,YAAY,OAAO,WAAW,YAC/B;AAEJ,QACE,2CAAC,yBAAyB;EAAS,OAAO;YACxC,4CAACC;GACC,wCACE,8CACA,gBAAgB;IACd;IACA;IACA;IACD,EACD,gBAAgB,YAAY,cAAc,oDAC1C,UACD;GACD,GAAI;cAEH,gBACC,qFACE,2CAAC,SAAI,wCACH,wIACA,YAAY,cAAc,cAC3B,GAAI,EACJ,YAAY,cACX,2CAAC,SACC,wCACE,+GACA,eACD,GACD,IAEH,EAEL,4CAAC;IAAI,WAAU;;KACZ,YAAY,YACX,2CAAC;MAAI,WAAW;gBACd,4CAAC;OAAI,WAAU;kBACb,4CAAC;QAAI,WAAU;mBACb,4CAAC;SAAI,WAAU;oBACZ,QACC,2CAAC;UAAI,WAAU;oBACb,2CAAC,QAAK,WAAU,8DAA8D;WAC1E,EAER,2CAAC;UAAK,WAAU;oBACb;WACI;UACH,EACL,YACC,2CAAC;SAAE,WAAU;mBACV;UACC;SAEF,EACL,WACC,2CAAC;QAAI,WAAU;kBACZ;SACG;QAEJ;OACF;KAEP,YAAY,aACX,4CAAC;MAAI,WAAU;iBACb,4CAAC;OAAI,WAAU;kBACZ,QACC,2CAAC;QAAI,WAAU;kBACb,2CAAC,QAAK,WAAU,sCAAsC;SAClD,EAER,2CAAC;QAAK,WAAU;kBACb;SACI;QACH,EACL,WACC,2CAAC;OAAI,WAAU;iBACZ;QACG;OAEJ;KAEP,cACC,2CAAC;MACC,wCACE,YAAY,WAAW,0DAA0D,IACjF,YAAY,YAAY,cAAc,IACtC,YAAY,cAAc,YAAY,WAAW,mBAAmB,IACpE,iBACD;MAEA;OACG;;KAEJ;IACD;GAC2B;;AAQxC,SAAgB,eAAe,EAC7B,UACA,WACA,UACA,GAAG,SACmB;CACtB,MAAM,YAAY,gBAAgB,IAAI,SAAS,IAAI;AAEnD,QACE,4CAAC;EACC,wCACE,6IACA,sGACA,+BACA,UACD;EACD,GAAI;;GAEJ,2CAAC,SAAI,WAAU,yIAAyI;GACxJ,2CAAC,SACC,wCACE,oHACA,UACD,GACD;GACF,2CAAC;IAAI,WAAU;IACZ;KACG;;GACF"}
@@ -0,0 +1,21 @@
1
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
2
+ import React from "react";
3
+
4
+ //#region src/components/chart-card.d.ts
5
+ type DesignChartCardGradient = "blue" | "cyan" | "purple" | "green" | "orange" | "default";
6
+ type DesignChartCardProps = {
7
+ gradient?: DesignChartCardGradient;
8
+ title?: React.ReactNode;
9
+ description?: React.ReactNode;
10
+ } & Omit<React.ComponentProps<"div">, "title">;
11
+ declare function DesignChartCard({
12
+ gradient,
13
+ title,
14
+ description,
15
+ className,
16
+ children,
17
+ ...props
18
+ }: DesignChartCardProps): react_jsx_runtime0.JSX.Element;
19
+ //#endregion
20
+ export { DesignChartCard, DesignChartCardProps };
21
+ //# sourceMappingURL=chart-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-card.d.ts","names":[],"sources":["../../src/components/chart-card.tsx"],"mappings":";;;;KAKK,uBAAA;AAAA,KAWO,oBAAA;EACV,QAAA,GAAW,uBAAA;EACX,KAAA,GAAQ,KAAA,CAAM,SAAA;EACd,WAAA,GAAc,KAAA,CAAM,SAAA;AAAA,IAClB,IAAA,CAAK,KAAA,CAAM,cAAA;AAAA,iBAEC,eAAA,CAAA;EACd,QAAA;EACA,KAAA;EACA,WAAA;EACA,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,oBAAA,GAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA"}