@tomny-dev/uzi 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/README.md +4 -1
  2. package/dist/components/card/Card.d.ts +7 -5
  3. package/dist/components/card/Card.d.ts.map +1 -1
  4. package/dist/components/surface/Surface.d.ts +16 -0
  5. package/dist/components/surface/Surface.d.ts.map +1 -0
  6. package/dist/components/toolbar/Toolbar.d.ts +13 -0
  7. package/dist/components/toolbar/Toolbar.d.ts.map +1 -0
  8. package/dist/index.cjs +36 -31
  9. package/dist/index.d.ts +4 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +34 -32
  12. package/dist/index10.cjs.map +1 -1
  13. package/dist/index10.js +19 -15
  14. package/dist/index10.js.map +1 -1
  15. package/dist/index11.cjs +21 -18
  16. package/dist/index11.cjs.map +1 -1
  17. package/dist/index11.js +8 -15
  18. package/dist/index11.js.map +1 -1
  19. package/dist/index12.cjs +7 -14
  20. package/dist/index12.cjs.map +1 -1
  21. package/dist/index12.js +15 -37
  22. package/dist/index12.js.map +1 -1
  23. package/dist/index13.cjs +18 -52
  24. package/dist/index13.cjs.map +1 -1
  25. package/dist/index13.js +15 -77
  26. package/dist/index13.js.map +1 -1
  27. package/dist/index14.cjs +15 -80
  28. package/dist/index14.cjs.map +1 -1
  29. package/dist/index14.js +37 -13
  30. package/dist/index14.js.map +1 -1
  31. package/dist/index15.cjs +52 -18
  32. package/dist/index15.cjs.map +1 -1
  33. package/dist/index15.js +77 -9
  34. package/dist/index15.js.map +1 -1
  35. package/dist/index16.cjs +79 -8
  36. package/dist/index16.cjs.map +1 -1
  37. package/dist/index16.js +13 -41
  38. package/dist/index16.js.map +1 -1
  39. package/dist/index17.cjs +18 -60
  40. package/dist/index17.cjs.map +1 -1
  41. package/dist/index17.js +9 -428
  42. package/dist/index17.js.map +1 -1
  43. package/dist/index18.cjs +8 -430
  44. package/dist/index18.cjs.map +1 -1
  45. package/dist/index18.js +42 -4
  46. package/dist/index18.js.map +1 -1
  47. package/dist/index19.cjs +61 -5
  48. package/dist/index19.cjs.map +1 -1
  49. package/dist/index19.js +430 -13
  50. package/dist/index19.js.map +1 -1
  51. package/dist/index20.cjs +430 -12
  52. package/dist/index20.cjs.map +1 -1
  53. package/dist/index20.js +4 -4
  54. package/dist/index20.js.map +1 -1
  55. package/dist/index21.cjs +5 -5
  56. package/dist/index21.cjs.map +1 -1
  57. package/dist/index21.js +12 -9
  58. package/dist/index21.js.map +1 -1
  59. package/dist/index22.cjs +12 -9
  60. package/dist/index22.cjs.map +1 -1
  61. package/dist/index22.js +4 -4
  62. package/dist/index22.js.map +1 -1
  63. package/dist/index23.cjs +5 -5
  64. package/dist/index23.cjs.map +1 -1
  65. package/dist/index23.js +9 -12
  66. package/dist/index23.js.map +1 -1
  67. package/dist/index24.cjs +9 -12
  68. package/dist/index24.cjs.map +1 -1
  69. package/dist/index24.js +4 -38
  70. package/dist/index24.js.map +1 -1
  71. package/dist/index25.cjs +5 -55
  72. package/dist/index25.cjs.map +1 -1
  73. package/dist/index25.js +11 -116
  74. package/dist/index25.js.map +1 -1
  75. package/dist/index26.cjs +10 -116
  76. package/dist/index26.cjs.map +1 -1
  77. package/dist/index26.js +31 -19
  78. package/dist/index26.js.map +1 -1
  79. package/dist/index27.cjs +42 -24
  80. package/dist/index27.cjs.map +1 -1
  81. package/dist/index27.js +106 -93
  82. package/dist/index27.js.map +1 -1
  83. package/dist/index28.cjs +106 -93
  84. package/dist/index28.cjs.map +1 -1
  85. package/dist/index28.js +26 -23
  86. package/dist/index28.js.map +1 -1
  87. package/dist/index29.cjs +37 -25
  88. package/dist/index29.cjs.map +1 -1
  89. package/dist/index29.js +107 -26
  90. package/dist/index29.js.map +1 -1
  91. package/dist/index30.cjs +110 -37
  92. package/dist/index30.cjs.map +1 -1
  93. package/dist/index30.js +21 -113
  94. package/dist/index30.js.map +1 -1
  95. package/dist/index31.cjs +19 -125
  96. package/dist/index31.cjs.map +1 -1
  97. package/dist/index31.js +26 -17
  98. package/dist/index31.js.map +1 -1
  99. package/dist/index32.cjs +37 -20
  100. package/dist/index32.cjs.map +1 -1
  101. package/dist/index32.js +108 -104
  102. package/dist/index32.js.map +1 -1
  103. package/dist/index33.cjs +122 -103
  104. package/dist/index33.cjs.map +1 -1
  105. package/dist/index33.js +17 -4
  106. package/dist/index33.js.map +1 -1
  107. package/dist/index34.cjs +20 -5
  108. package/dist/index34.cjs.map +1 -1
  109. package/dist/index34.js +106 -58
  110. package/dist/index34.js.map +1 -1
  111. package/dist/index35.cjs +106 -57
  112. package/dist/index35.cjs.map +1 -1
  113. package/dist/index35.js +4 -22
  114. package/dist/index35.js.map +1 -1
  115. package/dist/index36.cjs +5 -31
  116. package/dist/index36.cjs.map +1 -1
  117. package/dist/index36.js +55 -44
  118. package/dist/index36.js.map +1 -1
  119. package/dist/index37.cjs +55 -44
  120. package/dist/index37.cjs.map +1 -1
  121. package/dist/index37.js +21 -31
  122. package/dist/index37.js.map +1 -1
  123. package/dist/index38.cjs +30 -45
  124. package/dist/index38.cjs.map +1 -1
  125. package/dist/index38.js +46 -141
  126. package/dist/index38.js.map +1 -1
  127. package/dist/index39.cjs +46 -141
  128. package/dist/index39.cjs.map +1 -1
  129. package/dist/index39.js +31 -41
  130. package/dist/index39.js.map +1 -1
  131. package/dist/index40.cjs +45 -60
  132. package/dist/index40.cjs.map +1 -1
  133. package/dist/index40.js +139 -163
  134. package/dist/index40.js.map +1 -1
  135. package/dist/index41.cjs +137 -161
  136. package/dist/index41.cjs.map +1 -1
  137. package/dist/index41.js +41 -12
  138. package/dist/index41.js.map +1 -1
  139. package/dist/index42.cjs +60 -14
  140. package/dist/index42.cjs.map +1 -1
  141. package/dist/index42.js +167 -15
  142. package/dist/index42.js.map +1 -1
  143. package/dist/index43.cjs +166 -14
  144. package/dist/index43.cjs.map +1 -1
  145. package/dist/index43.js +12 -15
  146. package/dist/index43.js.map +1 -1
  147. package/dist/index44.cjs +14 -21
  148. package/dist/index44.cjs.map +1 -1
  149. package/dist/index44.js +15 -28
  150. package/dist/index44.js.map +1 -1
  151. package/dist/index45.cjs +14 -27
  152. package/dist/index45.cjs.map +1 -1
  153. package/dist/index45.js +10 -8
  154. package/dist/index45.js.map +1 -1
  155. package/dist/index46.cjs +11 -8
  156. package/dist/index46.cjs.map +1 -1
  157. package/dist/index46.js +22 -15
  158. package/dist/index46.js.map +1 -1
  159. package/dist/index47.cjs +22 -15
  160. package/dist/index47.cjs.map +1 -1
  161. package/dist/index47.js +9 -13
  162. package/dist/index47.js.map +1 -1
  163. package/dist/index48.cjs +10 -16
  164. package/dist/index48.cjs.map +1 -1
  165. package/dist/index48.js +18 -25
  166. package/dist/index48.js.map +1 -1
  167. package/dist/index49.cjs +18 -25
  168. package/dist/index49.cjs.map +1 -1
  169. package/dist/index49.js +17 -14
  170. package/dist/index49.js.map +1 -1
  171. package/dist/index50.cjs +24 -17
  172. package/dist/index50.cjs.map +1 -1
  173. package/dist/index50.js +28 -28
  174. package/dist/index50.js.map +1 -1
  175. package/dist/index51.cjs +27 -28
  176. package/dist/index51.cjs.map +1 -1
  177. package/dist/index51.js +14 -17
  178. package/dist/index51.js.map +1 -1
  179. package/dist/index52.cjs +17 -22
  180. package/dist/index52.cjs.map +1 -1
  181. package/dist/index52.js +23 -23
  182. package/dist/index52.js.map +1 -1
  183. package/dist/index53.cjs +23 -23
  184. package/dist/index53.cjs.map +1 -1
  185. package/dist/index53.js +17 -10
  186. package/dist/index53.js.map +1 -1
  187. package/dist/index54.cjs +22 -11
  188. package/dist/index54.cjs.map +1 -1
  189. package/dist/index54.js +28 -14
  190. package/dist/index54.js.map +1 -1
  191. package/dist/index55.cjs +28 -13
  192. package/dist/index55.cjs.map +1 -1
  193. package/dist/index55.js +17 -11
  194. package/dist/index55.js.map +1 -1
  195. package/dist/index56.cjs +23 -13
  196. package/dist/index56.cjs.map +1 -1
  197. package/dist/index56.js +24 -16
  198. package/dist/index56.js.map +1 -1
  199. package/dist/index57.cjs +24 -15
  200. package/dist/index57.cjs.map +1 -1
  201. package/dist/index57.js +10 -9
  202. package/dist/index57.js.map +1 -1
  203. package/dist/index58.cjs +11 -12
  204. package/dist/index58.cjs.map +1 -1
  205. package/dist/index58.js +12 -87
  206. package/dist/index58.js.map +1 -1
  207. package/dist/index59.cjs +12 -89
  208. package/dist/index59.cjs.map +1 -1
  209. package/dist/index59.js +11 -21
  210. package/dist/index59.js.map +1 -1
  211. package/dist/index60.cjs +13 -30
  212. package/dist/index60.cjs.map +1 -1
  213. package/dist/index60.js +17 -43
  214. package/dist/index60.js.map +1 -1
  215. package/dist/index61.cjs +16 -44
  216. package/dist/index61.cjs.map +1 -1
  217. package/dist/index61.js +9 -57
  218. package/dist/index61.js.map +1 -1
  219. package/dist/index62.cjs +11 -83
  220. package/dist/index62.cjs.map +1 -1
  221. package/dist/index62.js +83 -426
  222. package/dist/index62.js.map +1 -1
  223. package/dist/index63.cjs +82 -427
  224. package/dist/index63.cjs.map +1 -1
  225. package/dist/index63.js +21 -59
  226. package/dist/index63.js.map +1 -1
  227. package/dist/index64.cjs +30 -87
  228. package/dist/index64.cjs.map +1 -1
  229. package/dist/index64.js +44 -240
  230. package/dist/index64.js.map +1 -1
  231. package/dist/index65.cjs +43 -239
  232. package/dist/index65.cjs.map +1 -1
  233. package/dist/index65.js +57 -43
  234. package/dist/index65.js.map +1 -1
  235. package/dist/index66.cjs +84 -63
  236. package/dist/index66.cjs.map +1 -1
  237. package/dist/index66.js +426 -73
  238. package/dist/index66.js.map +1 -1
  239. package/dist/index67.cjs +426 -71
  240. package/dist/index67.cjs.map +1 -1
  241. package/dist/index67.js +59 -21
  242. package/dist/index67.js.map +1 -1
  243. package/dist/index68.cjs +87 -30
  244. package/dist/index68.cjs.map +1 -1
  245. package/dist/index68.js +233 -88
  246. package/dist/index68.js.map +1 -1
  247. package/dist/index69.cjs +232 -89
  248. package/dist/index69.cjs.map +1 -1
  249. package/dist/index69.js +40 -16
  250. package/dist/index69.js.map +1 -1
  251. package/dist/index70.cjs +56 -20
  252. package/dist/index70.cjs.map +1 -1
  253. package/dist/index70.js +72 -145
  254. package/dist/index70.js.map +1 -1
  255. package/dist/index71.cjs +72 -145
  256. package/dist/index71.cjs.map +1 -1
  257. package/dist/index71.js +25 -0
  258. package/dist/index71.js.map +1 -0
  259. package/dist/index72.cjs +34 -0
  260. package/dist/index72.cjs.map +1 -0
  261. package/dist/index72.js +101 -0
  262. package/dist/index72.js.map +1 -0
  263. package/dist/index73.cjs +105 -0
  264. package/dist/index73.cjs.map +1 -0
  265. package/dist/index73.js +23 -0
  266. package/dist/index73.js.map +1 -0
  267. package/dist/index74.cjs +31 -0
  268. package/dist/index74.cjs.map +1 -0
  269. package/dist/index74.js +159 -0
  270. package/dist/index74.js.map +1 -0
  271. package/dist/index75.cjs +161 -0
  272. package/dist/index75.cjs.map +1 -0
  273. package/dist/index8.js.map +1 -1
  274. package/dist/index9.cjs.map +1 -1
  275. package/dist/index9.js.map +1 -1
  276. package/dist/style.css +215 -45
  277. package/package.json +2 -2
@@ -0,0 +1,101 @@
1
+ import { cx } from "./index3.js";
2
+ import error_page_module_default from "./index71.js";
3
+ import "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/components/error-page/ErrorPage.tsx
6
+ /**
7
+ * ErrorPage — a generic error page with configurable status code, message, and action.
8
+ *
9
+ * Layout:
10
+ * Full-viewport centered card with
11
+ * Icon (optional) -> status code -> message -> subtitle -> action
12
+ */
13
+ function ErrorPage({ statusCode = 500, message = "Something went wrong", subtitle, action, showIcon = true, className }) {
14
+ return /* @__PURE__ */ jsx("div", {
15
+ className: cx(error_page_module_default.layout, className),
16
+ children: /* @__PURE__ */ jsxs("div", {
17
+ className: error_page_module_default.card,
18
+ children: [showIcon && /* @__PURE__ */ jsx("div", {
19
+ className: error_page_module_default.icon,
20
+ "aria-hidden": "true",
21
+ children: /* @__PURE__ */ jsxs("svg", {
22
+ viewBox: "0 0 24 24",
23
+ fill: "none",
24
+ className: error_page_module_default.iconSvg,
25
+ children: [
26
+ /* @__PURE__ */ jsx("circle", {
27
+ cx: "12",
28
+ cy: "12",
29
+ r: "10",
30
+ stroke: "currentColor",
31
+ strokeWidth: "2"
32
+ }),
33
+ /* @__PURE__ */ jsx("line", {
34
+ x1: "12",
35
+ y1: "8",
36
+ x2: "12",
37
+ y2: "12",
38
+ stroke: "currentColor",
39
+ strokeWidth: "2",
40
+ strokeLinecap: "round"
41
+ }),
42
+ /* @__PURE__ */ jsx("circle", {
43
+ cx: "12",
44
+ cy: "16",
45
+ r: "0.5",
46
+ fill: "currentColor"
47
+ })
48
+ ]
49
+ })
50
+ }), /* @__PURE__ */ jsxs("div", {
51
+ className: error_page_module_default.content,
52
+ children: [
53
+ /* @__PURE__ */ jsx("span", {
54
+ className: error_page_module_default.statusCode,
55
+ children: statusCode
56
+ }),
57
+ /* @__PURE__ */ jsx("h1", {
58
+ className: error_page_module_default.title,
59
+ children: message
60
+ }),
61
+ subtitle && /* @__PURE__ */ jsx("p", {
62
+ className: error_page_module_default.subtitle,
63
+ children: subtitle
64
+ }),
65
+ action && /* @__PURE__ */ jsx("div", {
66
+ className: error_page_module_default.action,
67
+ children: action
68
+ })
69
+ ]
70
+ })]
71
+ })
72
+ });
73
+ }
74
+ /**
75
+ * NotFoundPage — a 404 variant of ErrorPage.
76
+ */
77
+ function NotFoundPage({ action, className }) {
78
+ return /* @__PURE__ */ jsx(ErrorPage, {
79
+ statusCode: 404,
80
+ message: "Page not found",
81
+ subtitle: "The page you're looking for doesn't exist or has been moved.",
82
+ action,
83
+ className
84
+ });
85
+ }
86
+ /**
87
+ * MaintenancePage — a 503 variant of ErrorPage for under-maintenance sites.
88
+ */
89
+ function MaintenancePage({ action, className }) {
90
+ return /* @__PURE__ */ jsx(ErrorPage, {
91
+ statusCode: 503,
92
+ message: "Site under maintenance",
93
+ subtitle: "We're currently performing scheduled maintenance. We'll be back shortly.",
94
+ action,
95
+ className
96
+ });
97
+ }
98
+ //#endregion
99
+ export { ErrorPage, MaintenancePage, NotFoundPage };
100
+
101
+ //# sourceMappingURL=index72.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index72.js","names":[],"sources":["../src/components/error-page/ErrorPage.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./error-page.module.css\";\n\nexport interface ErrorPageProps {\n /** HTTP status code (e.g., 404, 500, 503) */\n statusCode?: number;\n /** Descriptive message for the error */\n message?: React.ReactNode;\n /** Subtitle providing additional context */\n subtitle?: React.ReactNode;\n /** Action button rendered below the message */\n action?: React.ReactNode;\n /** Whether to render a large decorative icon */\n showIcon?: boolean;\n /** Additional class name for the outer wrapper */\n className?: string;\n}\n\n/**\n * ErrorPage — a generic error page with configurable status code, message, and action.\n *\n * Layout:\n * Full-viewport centered card with\n * Icon (optional) -> status code -> message -> subtitle -> action\n */\nexport function ErrorPage({\n statusCode = 500,\n message = \"Something went wrong\",\n subtitle,\n action,\n showIcon = true,\n className,\n}: ErrorPageProps) {\n return (\n <div className={cx(styles.layout, className)}>\n <div className={styles.card}>\n {showIcon && (\n <div className={styles.icon} aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" className={styles.iconSvg}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"0.5\" fill=\"currentColor\" />\n </svg>\n </div>\n )}\n <div className={styles.content}>\n <span className={styles.statusCode}>{statusCode}</span>\n <h1 className={styles.title}>{message}</h1>\n {subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n {action && <div className={styles.action}>{action}</div>}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * NotFoundPage — a 404 variant of ErrorPage.\n */\nexport function NotFoundPage({\n action,\n className,\n}: Omit<ErrorPageProps, \"statusCode\" | \"message\" | \"subtitle\" | \"showIcon\">) {\n return (\n <ErrorPage\n statusCode={404}\n message=\"Page not found\"\n subtitle=\"The page you're looking for doesn't exist or has been moved.\"\n action={action}\n className={className}\n />\n );\n}\n\n/**\n * MaintenancePage — a 503 variant of ErrorPage for under-maintenance sites.\n */\nexport function MaintenancePage({\n action,\n className,\n}: Omit<ErrorPageProps, \"statusCode\" | \"message\" | \"subtitle\" | \"showIcon\">) {\n return (\n <ErrorPage\n statusCode={503}\n message=\"Site under maintenance\"\n subtitle=\"We're currently performing scheduled maintenance. We'll be back shortly.\"\n action={action}\n className={className}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;AA0BA,SAAgB,UAAU,EACxB,aAAa,KACb,UAAU,wBACV,UACA,QACA,WAAW,MACX,aACiB;CACjB,OACE,oBAAC,OAAD;EAAK,WAAW,GAAG,0BAAO,QAAQ,SAAS;YACzC,qBAAC,OAAD;GAAK,WAAW,0BAAO;aAAvB,CACG,YACC,oBAAC,OAAD;IAAK,WAAW,0BAAO;IAAM,eAAY;cACvC,qBAAC,OAAD;KAAK,SAAQ;KAAY,MAAK;KAAO,WAAW,0BAAO;eAAvD;MACE,oBAAC,UAAD;OAAQ,IAAG;OAAK,IAAG;OAAK,GAAE;OAAK,QAAO;OAAe,aAAY;MAAK,CAAA;MACtE,oBAAC,QAAD;OAAM,IAAG;OAAK,IAAG;OAAI,IAAG;OAAK,IAAG;OAAK,QAAO;OAAe,aAAY;OAAI,eAAc;MAAS,CAAA;MAClG,oBAAC,UAAD;OAAQ,IAAG;OAAK,IAAG;OAAK,GAAE;OAAM,MAAK;MAAgB,CAAA;KAClD;;GACF,CAAA,GAEP,qBAAC,OAAD;IAAK,WAAW,0BAAO;cAAvB;KACE,oBAAC,QAAD;MAAM,WAAW,0BAAO;gBAAa;KAAiB,CAAA;KACtD,oBAAC,MAAD;MAAI,WAAW,0BAAO;gBAAQ;KAAY,CAAA;KACzC,YAAY,oBAAC,KAAD;MAAG,WAAW,0BAAO;gBAAW;KAAY,CAAA;KACxD,UAAU,oBAAC,OAAD;MAAK,WAAW,0BAAO;gBAAS;KAAY,CAAA;IACpD;KACF;;CACF,CAAA;AAET;;;;AAKA,SAAgB,aAAa,EAC3B,QACA,aAC2E;CAC3E,OACE,oBAAC,WAAD;EACE,YAAY;EACZ,SAAQ;EACR,UAAS;EACD;EACG;CACZ,CAAA;AAEL;;;;AAKA,SAAgB,gBAAgB,EAC9B,QACA,aAC2E;CAC3E,OACE,oBAAC,WAAD;EACE,YAAY;EACZ,SAAQ;EACR,UAAS;EACD;EACG;CACZ,CAAA;AAEL"}
@@ -0,0 +1,105 @@
1
+ const require_runtime = require("./index2.cjs");
2
+ const require_cx = require("./index4.cjs");
3
+ const require_error_page_module = require("./index72.cjs");
4
+ let react = require("react");
5
+ react = require_runtime.__toESM(react, 1);
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ //#region src/components/error-page/ErrorPage.tsx
8
+ /**
9
+ * ErrorPage — a generic error page with configurable status code, message, and action.
10
+ *
11
+ * Layout:
12
+ * Full-viewport centered card with
13
+ * Icon (optional) -> status code -> message -> subtitle -> action
14
+ */
15
+ function ErrorPage({ statusCode = 500, message = "Something went wrong", subtitle, action, showIcon = true, className }) {
16
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
17
+ className: require_cx.cx(require_error_page_module.default.layout, className),
18
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
19
+ className: require_error_page_module.default.card,
20
+ children: [showIcon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
21
+ className: require_error_page_module.default.icon,
22
+ "aria-hidden": "true",
23
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
24
+ viewBox: "0 0 24 24",
25
+ fill: "none",
26
+ className: require_error_page_module.default.iconSvg,
27
+ children: [
28
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
29
+ cx: "12",
30
+ cy: "12",
31
+ r: "10",
32
+ stroke: "currentColor",
33
+ strokeWidth: "2"
34
+ }),
35
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
36
+ x1: "12",
37
+ y1: "8",
38
+ x2: "12",
39
+ y2: "12",
40
+ stroke: "currentColor",
41
+ strokeWidth: "2",
42
+ strokeLinecap: "round"
43
+ }),
44
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
45
+ cx: "12",
46
+ cy: "16",
47
+ r: "0.5",
48
+ fill: "currentColor"
49
+ })
50
+ ]
51
+ })
52
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
53
+ className: require_error_page_module.default.content,
54
+ children: [
55
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
56
+ className: require_error_page_module.default.statusCode,
57
+ children: statusCode
58
+ }),
59
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h1", {
60
+ className: require_error_page_module.default.title,
61
+ children: message
62
+ }),
63
+ subtitle && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
64
+ className: require_error_page_module.default.subtitle,
65
+ children: subtitle
66
+ }),
67
+ action && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
68
+ className: require_error_page_module.default.action,
69
+ children: action
70
+ })
71
+ ]
72
+ })]
73
+ })
74
+ });
75
+ }
76
+ /**
77
+ * NotFoundPage — a 404 variant of ErrorPage.
78
+ */
79
+ function NotFoundPage({ action, className }) {
80
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ErrorPage, {
81
+ statusCode: 404,
82
+ message: "Page not found",
83
+ subtitle: "The page you're looking for doesn't exist or has been moved.",
84
+ action,
85
+ className
86
+ });
87
+ }
88
+ /**
89
+ * MaintenancePage — a 503 variant of ErrorPage for under-maintenance sites.
90
+ */
91
+ function MaintenancePage({ action, className }) {
92
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ErrorPage, {
93
+ statusCode: 503,
94
+ message: "Site under maintenance",
95
+ subtitle: "We're currently performing scheduled maintenance. We'll be back shortly.",
96
+ action,
97
+ className
98
+ });
99
+ }
100
+ //#endregion
101
+ exports.ErrorPage = ErrorPage;
102
+ exports.MaintenancePage = MaintenancePage;
103
+ exports.NotFoundPage = NotFoundPage;
104
+
105
+ //# sourceMappingURL=index73.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index73.cjs","names":[],"sources":["../src/components/error-page/ErrorPage.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./error-page.module.css\";\n\nexport interface ErrorPageProps {\n /** HTTP status code (e.g., 404, 500, 503) */\n statusCode?: number;\n /** Descriptive message for the error */\n message?: React.ReactNode;\n /** Subtitle providing additional context */\n subtitle?: React.ReactNode;\n /** Action button rendered below the message */\n action?: React.ReactNode;\n /** Whether to render a large decorative icon */\n showIcon?: boolean;\n /** Additional class name for the outer wrapper */\n className?: string;\n}\n\n/**\n * ErrorPage — a generic error page with configurable status code, message, and action.\n *\n * Layout:\n * Full-viewport centered card with\n * Icon (optional) -> status code -> message -> subtitle -> action\n */\nexport function ErrorPage({\n statusCode = 500,\n message = \"Something went wrong\",\n subtitle,\n action,\n showIcon = true,\n className,\n}: ErrorPageProps) {\n return (\n <div className={cx(styles.layout, className)}>\n <div className={styles.card}>\n {showIcon && (\n <div className={styles.icon} aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" className={styles.iconSvg}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"0.5\" fill=\"currentColor\" />\n </svg>\n </div>\n )}\n <div className={styles.content}>\n <span className={styles.statusCode}>{statusCode}</span>\n <h1 className={styles.title}>{message}</h1>\n {subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n {action && <div className={styles.action}>{action}</div>}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * NotFoundPage — a 404 variant of ErrorPage.\n */\nexport function NotFoundPage({\n action,\n className,\n}: Omit<ErrorPageProps, \"statusCode\" | \"message\" | \"subtitle\" | \"showIcon\">) {\n return (\n <ErrorPage\n statusCode={404}\n message=\"Page not found\"\n subtitle=\"The page you're looking for doesn't exist or has been moved.\"\n action={action}\n className={className}\n />\n );\n}\n\n/**\n * MaintenancePage — a 503 variant of ErrorPage for under-maintenance sites.\n */\nexport function MaintenancePage({\n action,\n className,\n}: Omit<ErrorPageProps, \"statusCode\" | \"message\" | \"subtitle\" | \"showIcon\">) {\n return (\n <ErrorPage\n statusCode={503}\n message=\"Site under maintenance\"\n subtitle=\"We're currently performing scheduled maintenance. We'll be back shortly.\"\n action={action}\n className={className}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AA0BA,SAAgB,UAAU,EACxB,aAAa,KACb,UAAU,wBACV,UACA,QACA,WAAW,MACX,aACiB;CACjB,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAW,WAAA,GAAG,0BAAA,QAAO,QAAQ,SAAS;YACzC,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAW,0BAAA,QAAO;aAAvB,CACG,YACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAW,0BAAA,QAAO;IAAM,eAAY;cACvC,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;KAAK,SAAQ;KAAY,MAAK;KAAO,WAAW,0BAAA,QAAO;eAAvD;MACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;OAAQ,IAAG;OAAK,IAAG;OAAK,GAAE;OAAK,QAAO;OAAe,aAAY;MAAK,CAAA;MACtE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,IAAG;OAAK,IAAG;OAAI,IAAG;OAAK,IAAG;OAAK,QAAO;OAAe,aAAY;OAAI,eAAc;MAAS,CAAA;MAClG,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;OAAQ,IAAG;OAAK,IAAG;OAAK,GAAE;OAAM,MAAK;MAAgB,CAAA;KAClD;;GACF,CAAA,GAEP,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAW,0BAAA,QAAO;cAAvB;KACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;MAAM,WAAW,0BAAA,QAAO;gBAAa;KAAiB,CAAA;KACtD,iBAAA,GAAA,kBAAA,IAAA,CAAC,MAAD;MAAI,WAAW,0BAAA,QAAO;gBAAQ;KAAY,CAAA;KACzC,YAAY,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;MAAG,WAAW,0BAAA,QAAO;gBAAW;KAAY,CAAA;KACxD,UAAU,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;MAAK,WAAW,0BAAA,QAAO;gBAAS;KAAY,CAAA;IACpD;KACF;;CACF,CAAA;AAET;;;;AAKA,SAAgB,aAAa,EAC3B,QACA,aAC2E;CAC3E,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;EACE,YAAY;EACZ,SAAQ;EACR,UAAS;EACD;EACG;CACZ,CAAA;AAEL;;;;AAKA,SAAgB,gBAAgB,EAC9B,QACA,aAC2E;CAC3E,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;EACE,YAAY;EACZ,SAAQ;EACR,UAAS;EACD;EACG;CACZ,CAAA;AAEL"}
@@ -0,0 +1,23 @@
1
+ //#region src/components/empty-state-page/empty-state-page.module.css
2
+ var wrapper = "uzi-empty-state-page-module__wrapper__3f-kg";
3
+ var card = "uzi-empty-state-page-module__card__vcQUh";
4
+ var iconArea = "uzi-empty-state-page-module__iconArea__xpt5d";
5
+ var iconSvg = "uzi-empty-state-page-module__iconSvg__1TzoN";
6
+ var content = "uzi-empty-state-page-module__content__OjvBh";
7
+ var title = "uzi-empty-state-page-module__title__nvFC7";
8
+ var description = "uzi-empty-state-page-module__description__GqDMs";
9
+ var actions = "uzi-empty-state-page-module__actions__ojrjI";
10
+ var empty_state_page_module_default = {
11
+ wrapper,
12
+ card,
13
+ iconArea,
14
+ iconSvg,
15
+ content,
16
+ title,
17
+ description,
18
+ actions
19
+ };
20
+ //#endregion
21
+ export { actions, card, content, empty_state_page_module_default as default, description, iconArea, iconSvg, title, wrapper };
22
+
23
+ //# sourceMappingURL=index73.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index73.js","names":[],"sources":["../src/components/empty-state-page/empty-state-page.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n min-height: 100dvh;\n padding: 24px;\n background: var(--background);\n}\n\n.card {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1.5rem;\n max-width: 28rem;\n width: 100%;\n padding: 2.5rem 2rem;\n border-radius: var(--ts-card-radius, 12px);\n border: 1px solid var(--ts-card-border, var(--border));\n background: var(--ts-card-bg, var(--card));\n box-shadow: var(--ts-card-shadow, 0 16px 36px rgba(0, 0, 0, 0.28));\n color: var(--ts-card-fg, var(--foreground));\n text-align: center;\n}\n\n.iconArea {\n display: grid;\n place-items: center;\n color: var(--muted-foreground);\n}\n\n.iconSvg {\n width: 3.5rem;\n height: 3.5rem;\n stroke-width: 1.5;\n}\n\n.content {\n display: grid;\n gap: 0.5rem;\n}\n\n.title {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--foreground);\n line-height: 1.3;\n}\n\n.description {\n margin: 0;\n font-size: 0.9rem;\n color: var(--muted-foreground);\n line-height: 1.6;\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 0.625rem;\n}\n\n@media (max-width: 48rem) {\n .card {\n padding: 2rem 1.5rem;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,31 @@
1
+ //#region src/components/empty-state-page/empty-state-page.module.css
2
+ var wrapper = "uzi-empty-state-page-module__wrapper__3f-kg";
3
+ var card = "uzi-empty-state-page-module__card__vcQUh";
4
+ var iconArea = "uzi-empty-state-page-module__iconArea__xpt5d";
5
+ var iconSvg = "uzi-empty-state-page-module__iconSvg__1TzoN";
6
+ var content = "uzi-empty-state-page-module__content__OjvBh";
7
+ var title = "uzi-empty-state-page-module__title__nvFC7";
8
+ var description = "uzi-empty-state-page-module__description__GqDMs";
9
+ var actions = "uzi-empty-state-page-module__actions__ojrjI";
10
+ var empty_state_page_module_default = {
11
+ wrapper,
12
+ card,
13
+ iconArea,
14
+ iconSvg,
15
+ content,
16
+ title,
17
+ description,
18
+ actions
19
+ };
20
+ //#endregion
21
+ exports.actions = actions;
22
+ exports.card = card;
23
+ exports.content = content;
24
+ exports.default = empty_state_page_module_default;
25
+ exports.description = description;
26
+ exports.iconArea = iconArea;
27
+ exports.iconSvg = iconSvg;
28
+ exports.title = title;
29
+ exports.wrapper = wrapper;
30
+
31
+ //# sourceMappingURL=index74.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index74.cjs","names":[],"sources":["../src/components/empty-state-page/empty-state-page.module.css"],"sourcesContent":[".wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n min-height: 100dvh;\n padding: 24px;\n background: var(--background);\n}\n\n.card {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1.5rem;\n max-width: 28rem;\n width: 100%;\n padding: 2.5rem 2rem;\n border-radius: var(--ts-card-radius, 12px);\n border: 1px solid var(--ts-card-border, var(--border));\n background: var(--ts-card-bg, var(--card));\n box-shadow: var(--ts-card-shadow, 0 16px 36px rgba(0, 0, 0, 0.28));\n color: var(--ts-card-fg, var(--foreground));\n text-align: center;\n}\n\n.iconArea {\n display: grid;\n place-items: center;\n color: var(--muted-foreground);\n}\n\n.iconSvg {\n width: 3.5rem;\n height: 3.5rem;\n stroke-width: 1.5;\n}\n\n.content {\n display: grid;\n gap: 0.5rem;\n}\n\n.title {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--foreground);\n line-height: 1.3;\n}\n\n.description {\n margin: 0;\n font-size: 0.9rem;\n color: var(--muted-foreground);\n line-height: 1.6;\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 0.625rem;\n}\n\n@media (max-width: 48rem) {\n .card {\n padding: 2rem 1.5rem;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,159 @@
1
+ import { cx } from "./index3.js";
2
+ import empty_state_page_module_default from "./index73.js";
3
+ import "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/components/empty-state-page/EmptyStatePage.tsx
6
+ /** Inline SVG icon for the "no data" variant */
7
+ function NoDataIcon() {
8
+ return /* @__PURE__ */ jsxs("svg", {
9
+ viewBox: "0 0 48 48",
10
+ fill: "none",
11
+ className: empty_state_page_module_default.iconSvg,
12
+ "aria-hidden": "true",
13
+ children: [
14
+ /* @__PURE__ */ jsx("rect", {
15
+ x: "8",
16
+ y: "10",
17
+ width: "32",
18
+ height: "28",
19
+ rx: "4",
20
+ stroke: "currentColor",
21
+ strokeWidth: "2"
22
+ }),
23
+ /* @__PURE__ */ jsx("line", {
24
+ x1: "8",
25
+ y1: "18",
26
+ x2: "40",
27
+ y2: "18",
28
+ stroke: "currentColor",
29
+ strokeWidth: "2"
30
+ }),
31
+ /* @__PURE__ */ jsx("line", {
32
+ x1: "16",
33
+ y1: "24",
34
+ x2: "28",
35
+ y2: "24",
36
+ stroke: "currentColor",
37
+ strokeWidth: "2",
38
+ strokeLinecap: "round"
39
+ }),
40
+ /* @__PURE__ */ jsx("line", {
41
+ x1: "16",
42
+ y1: "30",
43
+ x2: "32",
44
+ y2: "30",
45
+ stroke: "currentColor",
46
+ strokeWidth: "2",
47
+ strokeLinecap: "round"
48
+ })
49
+ ]
50
+ });
51
+ }
52
+ /** Inline SVG icon for the "no connection" variant */
53
+ function NoConnectionIcon() {
54
+ return /* @__PURE__ */ jsxs("svg", {
55
+ viewBox: "0 0 48 48",
56
+ fill: "none",
57
+ className: empty_state_page_module_default.iconSvg,
58
+ "aria-hidden": "true",
59
+ children: [/* @__PURE__ */ jsx("circle", {
60
+ cx: "24",
61
+ cy: "24",
62
+ r: "14",
63
+ stroke: "currentColor",
64
+ strokeWidth: "2"
65
+ }), /* @__PURE__ */ jsx("path", {
66
+ d: "M18 18l12 12M30 18L18 30",
67
+ stroke: "currentColor",
68
+ strokeWidth: "2",
69
+ strokeLinecap: "round"
70
+ })]
71
+ });
72
+ }
73
+ /** Inline SVG icon for the "no permissions" variant */
74
+ function NoPermissionsIcon() {
75
+ return /* @__PURE__ */ jsxs("svg", {
76
+ viewBox: "0 0 48 48",
77
+ fill: "none",
78
+ className: empty_state_page_module_default.iconSvg,
79
+ "aria-hidden": "true",
80
+ children: [
81
+ /* @__PURE__ */ jsx("rect", {
82
+ x: "12",
83
+ y: "20",
84
+ width: "24",
85
+ height: "18",
86
+ rx: "3",
87
+ stroke: "currentColor",
88
+ strokeWidth: "2"
89
+ }),
90
+ /* @__PURE__ */ jsx("path", {
91
+ d: "M20 20v-6a4 4 0 018 0v6",
92
+ stroke: "currentColor",
93
+ strokeWidth: "2"
94
+ }),
95
+ /* @__PURE__ */ jsx("circle", {
96
+ cx: "24",
97
+ cy: "30",
98
+ r: "2",
99
+ fill: "currentColor"
100
+ })
101
+ ]
102
+ });
103
+ }
104
+ var variantMap = {
105
+ noData: {
106
+ icon: NoDataIcon,
107
+ title: "No data yet",
108
+ description: "When you add data, it will appear here."
109
+ },
110
+ noConnection: {
111
+ icon: NoConnectionIcon,
112
+ title: "No connection",
113
+ description: "Check your network settings and try again."
114
+ },
115
+ noPermissions: {
116
+ icon: NoPermissionsIcon,
117
+ title: "Access denied",
118
+ description: "You don't have permission to view this content."
119
+ }
120
+ };
121
+ /**
122
+ * EmptyStatePage — a Card-based page template with variant icons, title, description, and actions.
123
+ *
124
+ * Layout:
125
+ * Card → Icon → Title → Description → Actions
126
+ */
127
+ function EmptyStatePage({ variant = "noData", title, description, primaryAction, secondaryAction, icon, className }) {
128
+ const { icon: VariantIcon, title: defaultTitle, description: defaultDescription } = variantMap[variant];
129
+ return /* @__PURE__ */ jsx("div", {
130
+ className: cx(empty_state_page_module_default.wrapper, className),
131
+ children: /* @__PURE__ */ jsxs("div", {
132
+ className: empty_state_page_module_default.card,
133
+ children: [
134
+ /* @__PURE__ */ jsx("div", {
135
+ className: empty_state_page_module_default.iconArea,
136
+ children: icon ?? /* @__PURE__ */ jsx(VariantIcon, {})
137
+ }),
138
+ /* @__PURE__ */ jsxs("div", {
139
+ className: empty_state_page_module_default.content,
140
+ children: [/* @__PURE__ */ jsx("h2", {
141
+ className: empty_state_page_module_default.title,
142
+ children: title ?? defaultTitle
143
+ }), /* @__PURE__ */ jsx("p", {
144
+ className: empty_state_page_module_default.description,
145
+ children: description ?? defaultDescription
146
+ })]
147
+ }),
148
+ (primaryAction || secondaryAction) && /* @__PURE__ */ jsxs("div", {
149
+ className: empty_state_page_module_default.actions,
150
+ children: [primaryAction, secondaryAction]
151
+ })
152
+ ]
153
+ })
154
+ });
155
+ }
156
+ //#endregion
157
+ export { EmptyStatePage };
158
+
159
+ //# sourceMappingURL=index74.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index74.js","names":[],"sources":["../src/components/empty-state-page/EmptyStatePage.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./empty-state-page.module.css\";\n\nexport type EmptyStatePageVariant = \"noData\" | \"noConnection\" | \"noPermissions\";\n\nexport interface EmptyStatePageProps {\n /** Page variant driving icon, title, description defaults */\n variant?: EmptyStatePageVariant;\n /** Optional title override */\n title?: string;\n /** Optional description override */\n description?: string;\n /** Primary action button */\n primaryAction?: React.ReactNode;\n /** Secondary action button */\n secondaryAction?: React.ReactNode;\n /** Optional custom SVG icon (overrides variant icon) */\n icon?: React.ReactNode;\n /** Additional class name */\n className?: string;\n}\n\n/** Inline SVG icon for the \"no data\" variant */\nfunction NoDataIcon() {\n return (\n <svg viewBox=\"0 0 48 48\" fill=\"none\" className={styles.iconSvg} aria-hidden=\"true\">\n <rect x=\"8\" y=\"10\" width=\"32\" height=\"28\" rx=\"4\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <line x1=\"8\" y1=\"18\" x2=\"40\" y2=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <line x1=\"16\" y1=\"24\" x2=\"28\" y2=\"24\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <line x1=\"16\" y1=\"30\" x2=\"32\" y2=\"30\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\n/** Inline SVG icon for the \"no connection\" variant */\nfunction NoConnectionIcon() {\n return (\n <svg viewBox=\"0 0 48 48\" fill=\"none\" className={styles.iconSvg} aria-hidden=\"true\">\n <circle cx=\"24\" cy=\"24\" r=\"14\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M18 18l12 12M30 18L18 30\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\n/** Inline SVG icon for the \"no permissions\" variant */\nfunction NoPermissionsIcon() {\n return (\n <svg viewBox=\"0 0 48 48\" fill=\"none\" className={styles.iconSvg} aria-hidden=\"true\">\n <rect x=\"12\" y=\"20\" width=\"24\" height=\"18\" rx=\"3\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M20 20v-6a4 4 0 018 0v6\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <circle cx=\"24\" cy=\"30\" r=\"2\" fill=\"currentColor\" />\n </svg>\n );\n}\n\nconst variantMap: Record<\n EmptyStatePageVariant,\n { icon: React.FC; title: string; description: string }\n> = {\n noData: {\n icon: NoDataIcon,\n title: \"No data yet\",\n description: \"When you add data, it will appear here.\",\n },\n noConnection: {\n icon: NoConnectionIcon,\n title: \"No connection\",\n description: \"Check your network settings and try again.\",\n },\n noPermissions: {\n icon: NoPermissionsIcon,\n title: \"Access denied\",\n description: \"You don't have permission to view this content.\",\n },\n};\n\n/**\n * EmptyStatePage — a Card-based page template with variant icons, title, description, and actions.\n *\n * Layout:\n * Card → Icon → Title → Description → Actions\n */\nexport function EmptyStatePage({\n variant = \"noData\",\n title,\n description,\n primaryAction,\n secondaryAction,\n icon,\n className,\n}: EmptyStatePageProps) {\n const { icon: VariantIcon, title: defaultTitle, description: defaultDescription } = variantMap[variant];\n\n return (\n <div className={cx(styles.wrapper, className)}>\n <div className={styles.card}>\n <div className={styles.iconArea}>\n {icon ?? <VariantIcon />}\n </div>\n <div className={styles.content}>\n <h2 className={styles.title}>{title ?? defaultTitle}</h2>\n <p className={styles.description}>{description ?? defaultDescription}</p>\n </div>\n {(primaryAction || secondaryAction) && (\n <div className={styles.actions}>\n {primaryAction}\n {secondaryAction}\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAwBA,SAAS,aAAa;CACpB,OACE,qBAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,gCAAO;EAAS,eAAY;YAA5E;GACE,oBAAC,QAAD;IAAM,GAAE;IAAI,GAAE;IAAK,OAAM;IAAK,QAAO;IAAK,IAAG;IAAI,QAAO;IAAe,aAAY;GAAK,CAAA;GACxF,oBAAC,QAAD;IAAM,IAAG;IAAI,IAAG;IAAK,IAAG;IAAK,IAAG;IAAK,QAAO;IAAe,aAAY;GAAK,CAAA;GAC5E,oBAAC,QAAD;IAAM,IAAG;IAAK,IAAG;IAAK,IAAG;IAAK,IAAG;IAAK,QAAO;IAAe,aAAY;IAAI,eAAc;GAAS,CAAA;GACnG,oBAAC,QAAD;IAAM,IAAG;IAAK,IAAG;IAAK,IAAG;IAAK,IAAG;IAAK,QAAO;IAAe,aAAY;IAAI,eAAc;GAAS,CAAA;EAChG;;AAET;;AAGA,SAAS,mBAAmB;CAC1B,OACE,qBAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,gCAAO;EAAS,eAAY;YAA5E,CACE,oBAAC,UAAD;GAAQ,IAAG;GAAK,IAAG;GAAK,GAAE;GAAK,QAAO;GAAe,aAAY;EAAK,CAAA,GACtE,oBAAC,QAAD;GAAM,GAAE;GAA2B,QAAO;GAAe,aAAY;GAAI,eAAc;EAAS,CAAA,CAC7F;;AAET;;AAGA,SAAS,oBAAoB;CAC3B,OACE,qBAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,gCAAO;EAAS,eAAY;YAA5E;GACE,oBAAC,QAAD;IAAM,GAAE;IAAK,GAAE;IAAK,OAAM;IAAK,QAAO;IAAK,IAAG;IAAI,QAAO;IAAe,aAAY;GAAK,CAAA;GACzF,oBAAC,QAAD;IAAM,GAAE;IAA0B,QAAO;IAAe,aAAY;GAAK,CAAA;GACzE,oBAAC,UAAD;IAAQ,IAAG;IAAK,IAAG;IAAK,GAAE;IAAI,MAAK;GAAgB,CAAA;EAChD;;AAET;AAEA,IAAM,aAGF;CACF,QAAQ;EACN,MAAM;EACN,OAAO;EACP,aAAa;CACf;CACA,cAAc;EACZ,MAAM;EACN,OAAO;EACP,aAAa;CACf;CACA,eAAe;EACb,MAAM;EACN,OAAO;EACP,aAAa;CACf;AACF;;;;;;;AAQA,SAAgB,eAAe,EAC7B,UAAU,UACV,OACA,aACA,eACA,iBACA,MACA,aACsB;CACtB,MAAM,EAAE,MAAM,aAAa,OAAO,cAAc,aAAa,uBAAuB,WAAW;CAE/F,OACE,oBAAC,OAAD;EAAK,WAAW,GAAG,gCAAO,SAAS,SAAS;YAC1C,qBAAC,OAAD;GAAK,WAAW,gCAAO;aAAvB;IACE,oBAAC,OAAD;KAAK,WAAW,gCAAO;eACpB,QAAQ,oBAAC,aAAD,CAAc,CAAA;IACpB,CAAA;IACL,qBAAC,OAAD;KAAK,WAAW,gCAAO;eAAvB,CACE,oBAAC,MAAD;MAAI,WAAW,gCAAO;gBAAQ,SAAS;KAAiB,CAAA,GACxD,oBAAC,KAAD;MAAG,WAAW,gCAAO;gBAAc,eAAe;KAAsB,CAAA,CACrE;;KACH,iBAAiB,oBACjB,qBAAC,OAAD;KAAK,WAAW,gCAAO;eAAvB,CACG,eACA,eACE;;GAEJ;;CACF,CAAA;AAET"}
@@ -0,0 +1,161 @@
1
+ const require_runtime = require("./index2.cjs");
2
+ const require_cx = require("./index4.cjs");
3
+ const require_empty_state_page_module = require("./index74.cjs");
4
+ let react = require("react");
5
+ react = require_runtime.__toESM(react, 1);
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ //#region src/components/empty-state-page/EmptyStatePage.tsx
8
+ /** Inline SVG icon for the "no data" variant */
9
+ function NoDataIcon() {
10
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
11
+ viewBox: "0 0 48 48",
12
+ fill: "none",
13
+ className: require_empty_state_page_module.default.iconSvg,
14
+ "aria-hidden": "true",
15
+ children: [
16
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
17
+ x: "8",
18
+ y: "10",
19
+ width: "32",
20
+ height: "28",
21
+ rx: "4",
22
+ stroke: "currentColor",
23
+ strokeWidth: "2"
24
+ }),
25
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
26
+ x1: "8",
27
+ y1: "18",
28
+ x2: "40",
29
+ y2: "18",
30
+ stroke: "currentColor",
31
+ strokeWidth: "2"
32
+ }),
33
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
34
+ x1: "16",
35
+ y1: "24",
36
+ x2: "28",
37
+ y2: "24",
38
+ stroke: "currentColor",
39
+ strokeWidth: "2",
40
+ strokeLinecap: "round"
41
+ }),
42
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("line", {
43
+ x1: "16",
44
+ y1: "30",
45
+ x2: "32",
46
+ y2: "30",
47
+ stroke: "currentColor",
48
+ strokeWidth: "2",
49
+ strokeLinecap: "round"
50
+ })
51
+ ]
52
+ });
53
+ }
54
+ /** Inline SVG icon for the "no connection" variant */
55
+ function NoConnectionIcon() {
56
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
57
+ viewBox: "0 0 48 48",
58
+ fill: "none",
59
+ className: require_empty_state_page_module.default.iconSvg,
60
+ "aria-hidden": "true",
61
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
62
+ cx: "24",
63
+ cy: "24",
64
+ r: "14",
65
+ stroke: "currentColor",
66
+ strokeWidth: "2"
67
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
68
+ d: "M18 18l12 12M30 18L18 30",
69
+ stroke: "currentColor",
70
+ strokeWidth: "2",
71
+ strokeLinecap: "round"
72
+ })]
73
+ });
74
+ }
75
+ /** Inline SVG icon for the "no permissions" variant */
76
+ function NoPermissionsIcon() {
77
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
78
+ viewBox: "0 0 48 48",
79
+ fill: "none",
80
+ className: require_empty_state_page_module.default.iconSvg,
81
+ "aria-hidden": "true",
82
+ children: [
83
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
84
+ x: "12",
85
+ y: "20",
86
+ width: "24",
87
+ height: "18",
88
+ rx: "3",
89
+ stroke: "currentColor",
90
+ strokeWidth: "2"
91
+ }),
92
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
93
+ d: "M20 20v-6a4 4 0 018 0v6",
94
+ stroke: "currentColor",
95
+ strokeWidth: "2"
96
+ }),
97
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
98
+ cx: "24",
99
+ cy: "30",
100
+ r: "2",
101
+ fill: "currentColor"
102
+ })
103
+ ]
104
+ });
105
+ }
106
+ var variantMap = {
107
+ noData: {
108
+ icon: NoDataIcon,
109
+ title: "No data yet",
110
+ description: "When you add data, it will appear here."
111
+ },
112
+ noConnection: {
113
+ icon: NoConnectionIcon,
114
+ title: "No connection",
115
+ description: "Check your network settings and try again."
116
+ },
117
+ noPermissions: {
118
+ icon: NoPermissionsIcon,
119
+ title: "Access denied",
120
+ description: "You don't have permission to view this content."
121
+ }
122
+ };
123
+ /**
124
+ * EmptyStatePage — a Card-based page template with variant icons, title, description, and actions.
125
+ *
126
+ * Layout:
127
+ * Card → Icon → Title → Description → Actions
128
+ */
129
+ function EmptyStatePage({ variant = "noData", title, description, primaryAction, secondaryAction, icon, className }) {
130
+ const { icon: VariantIcon, title: defaultTitle, description: defaultDescription } = variantMap[variant];
131
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
132
+ className: require_cx.cx(require_empty_state_page_module.default.wrapper, className),
133
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
134
+ className: require_empty_state_page_module.default.card,
135
+ children: [
136
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
137
+ className: require_empty_state_page_module.default.iconArea,
138
+ children: icon ?? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(VariantIcon, {})
139
+ }),
140
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
141
+ className: require_empty_state_page_module.default.content,
142
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
143
+ className: require_empty_state_page_module.default.title,
144
+ children: title ?? defaultTitle
145
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
146
+ className: require_empty_state_page_module.default.description,
147
+ children: description ?? defaultDescription
148
+ })]
149
+ }),
150
+ (primaryAction || secondaryAction) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
151
+ className: require_empty_state_page_module.default.actions,
152
+ children: [primaryAction, secondaryAction]
153
+ })
154
+ ]
155
+ })
156
+ });
157
+ }
158
+ //#endregion
159
+ exports.EmptyStatePage = EmptyStatePage;
160
+
161
+ //# sourceMappingURL=index75.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index75.cjs","names":[],"sources":["../src/components/empty-state-page/EmptyStatePage.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./empty-state-page.module.css\";\n\nexport type EmptyStatePageVariant = \"noData\" | \"noConnection\" | \"noPermissions\";\n\nexport interface EmptyStatePageProps {\n /** Page variant driving icon, title, description defaults */\n variant?: EmptyStatePageVariant;\n /** Optional title override */\n title?: string;\n /** Optional description override */\n description?: string;\n /** Primary action button */\n primaryAction?: React.ReactNode;\n /** Secondary action button */\n secondaryAction?: React.ReactNode;\n /** Optional custom SVG icon (overrides variant icon) */\n icon?: React.ReactNode;\n /** Additional class name */\n className?: string;\n}\n\n/** Inline SVG icon for the \"no data\" variant */\nfunction NoDataIcon() {\n return (\n <svg viewBox=\"0 0 48 48\" fill=\"none\" className={styles.iconSvg} aria-hidden=\"true\">\n <rect x=\"8\" y=\"10\" width=\"32\" height=\"28\" rx=\"4\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <line x1=\"8\" y1=\"18\" x2=\"40\" y2=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <line x1=\"16\" y1=\"24\" x2=\"28\" y2=\"24\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <line x1=\"16\" y1=\"30\" x2=\"32\" y2=\"30\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\n/** Inline SVG icon for the \"no connection\" variant */\nfunction NoConnectionIcon() {\n return (\n <svg viewBox=\"0 0 48 48\" fill=\"none\" className={styles.iconSvg} aria-hidden=\"true\">\n <circle cx=\"24\" cy=\"24\" r=\"14\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M18 18l12 12M30 18L18 30\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\n/** Inline SVG icon for the \"no permissions\" variant */\nfunction NoPermissionsIcon() {\n return (\n <svg viewBox=\"0 0 48 48\" fill=\"none\" className={styles.iconSvg} aria-hidden=\"true\">\n <rect x=\"12\" y=\"20\" width=\"24\" height=\"18\" rx=\"3\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M20 20v-6a4 4 0 018 0v6\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <circle cx=\"24\" cy=\"30\" r=\"2\" fill=\"currentColor\" />\n </svg>\n );\n}\n\nconst variantMap: Record<\n EmptyStatePageVariant,\n { icon: React.FC; title: string; description: string }\n> = {\n noData: {\n icon: NoDataIcon,\n title: \"No data yet\",\n description: \"When you add data, it will appear here.\",\n },\n noConnection: {\n icon: NoConnectionIcon,\n title: \"No connection\",\n description: \"Check your network settings and try again.\",\n },\n noPermissions: {\n icon: NoPermissionsIcon,\n title: \"Access denied\",\n description: \"You don't have permission to view this content.\",\n },\n};\n\n/**\n * EmptyStatePage — a Card-based page template with variant icons, title, description, and actions.\n *\n * Layout:\n * Card → Icon → Title → Description → Actions\n */\nexport function EmptyStatePage({\n variant = \"noData\",\n title,\n description,\n primaryAction,\n secondaryAction,\n icon,\n className,\n}: EmptyStatePageProps) {\n const { icon: VariantIcon, title: defaultTitle, description: defaultDescription } = variantMap[variant];\n\n return (\n <div className={cx(styles.wrapper, className)}>\n <div className={styles.card}>\n <div className={styles.iconArea}>\n {icon ?? <VariantIcon />}\n </div>\n <div className={styles.content}>\n <h2 className={styles.title}>{title ?? defaultTitle}</h2>\n <p className={styles.description}>{description ?? defaultDescription}</p>\n </div>\n {(primaryAction || secondaryAction) && (\n <div className={styles.actions}>\n {primaryAction}\n {secondaryAction}\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAwBA,SAAS,aAAa;CACpB,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,gCAAA,QAAO;EAAS,eAAY;YAA5E;GACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,GAAE;IAAI,GAAE;IAAK,OAAM;IAAK,QAAO;IAAK,IAAG;IAAI,QAAO;IAAe,aAAY;GAAK,CAAA;GACxF,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,IAAG;IAAI,IAAG;IAAK,IAAG;IAAK,IAAG;IAAK,QAAO;IAAe,aAAY;GAAK,CAAA;GAC5E,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,IAAG;IAAK,IAAG;IAAK,IAAG;IAAK,IAAG;IAAK,QAAO;IAAe,aAAY;IAAI,eAAc;GAAS,CAAA;GACnG,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,IAAG;IAAK,IAAG;IAAK,IAAG;IAAK,IAAG;IAAK,QAAO;IAAe,aAAY;IAAI,eAAc;GAAS,CAAA;EAChG;;AAET;;AAGA,SAAS,mBAAmB;CAC1B,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,gCAAA,QAAO;EAAS,eAAY;YAA5E,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;GAAQ,IAAG;GAAK,IAAG;GAAK,GAAE;GAAK,QAAO;GAAe,aAAY;EAAK,CAAA,GACtE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;GAAM,GAAE;GAA2B,QAAO;GAAe,aAAY;GAAI,eAAc;EAAS,CAAA,CAC7F;;AAET;;AAGA,SAAS,oBAAoB;CAC3B,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,gCAAA,QAAO;EAAS,eAAY;YAA5E;GACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,GAAE;IAAK,GAAE;IAAK,OAAM;IAAK,QAAO;IAAK,IAAG;IAAI,QAAO;IAAe,aAAY;GAAK,CAAA;GACzF,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,GAAE;IAA0B,QAAO;IAAe,aAAY;GAAK,CAAA;GACzE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;IAAQ,IAAG;IAAK,IAAG;IAAK,GAAE;IAAI,MAAK;GAAgB,CAAA;EAChD;;AAET;AAEA,IAAM,aAGF;CACF,QAAQ;EACN,MAAM;EACN,OAAO;EACP,aAAa;CACf;CACA,cAAc;EACZ,MAAM;EACN,OAAO;EACP,aAAa;CACf;CACA,eAAe;EACb,MAAM;EACN,OAAO;EACP,aAAa;CACf;AACF;;;;;;;AAQA,SAAgB,eAAe,EAC7B,UAAU,UACV,OACA,aACA,eACA,iBACA,MACA,aACsB;CACtB,MAAM,EAAE,MAAM,aAAa,OAAO,cAAc,aAAa,uBAAuB,WAAW;CAE/F,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAW,WAAA,GAAG,gCAAA,QAAO,SAAS,SAAS;YAC1C,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAW,gCAAA,QAAO;aAAvB;IACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;KAAK,WAAW,gCAAA,QAAO;eACpB,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAD,CAAc,CAAA;IACpB,CAAA;IACL,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;KAAK,WAAW,gCAAA,QAAO;eAAvB,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,MAAD;MAAI,WAAW,gCAAA,QAAO;gBAAQ,SAAS;KAAiB,CAAA,GACxD,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;MAAG,WAAW,gCAAA,QAAO;gBAAc,eAAe;KAAsB,CAAA,CACrE;;KACH,iBAAiB,oBACjB,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;KAAK,WAAW,gCAAA,QAAO;eAAvB,CACG,eACA,eACE;;GAEJ;;CACF,CAAA;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"index8.js","names":[],"sources":["../src/components/card/card.module.css"],"sourcesContent":[".card {\n position: relative;\n overflow: visible;\n border-radius: var(--ts-card-radius, 12px);\n border: 1px solid var(--ts-card-border, var(--border));\n background: var(--ts-card-bg, var(--panel));\n color: var(--ts-card-fg, var(--foreground));\n box-shadow: var(--ts-card-shadow, 0 16px 36px rgba(0, 0, 0, 0.28));\n padding: var(--ts-card-padding, 16px);\n transition:\n transform 140ms ease,\n box-shadow 140ms ease,\n border-color 140ms ease,\n background-color 140ms ease;\n}\n\n.tone-default {\n --ts-card-bg: var(--panel);\n --ts-card-border: var(--border);\n --ts-card-shadow: 0 16px 36px rgba(0, 0, 0, 0.28);\n}\n\n.tone-muted {\n --ts-card-bg: var(--muted);\n --ts-card-border: var(--border);\n --ts-card-shadow: 0 10px 26px rgba(0, 0, 0, 0.22);\n}\n\n.tone-contrast {\n --ts-card-bg: var(--ts-card-contrast-bg, color-mix(in srgb, var(--background) 60%, black));\n --ts-card-border: var(--border);\n --ts-card-shadow: 0 18px 50px rgba(0, 0, 0, 0.32);\n}\n\n.interactive {\n cursor: default;\n}\n\n.interactive:hover {\n transform: translateY(-1px);\n box-shadow: 0 22px 60px rgba(0, 0, 0, 0.32);\n border-color: var(--ts-card-hover-border, color-mix(in srgb, var(--primary) 40%, transparent));\n}\n\n.interactive:focus-within {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.padding-none { --ts-card-padding: 0; }\n.padding-sm { --ts-card-padding: 10px; }\n.padding-md { --ts-card-padding: 16px; }\n.padding-lg { --ts-card-padding: 20px; }\n"],"mappings":""}
1
+ {"version":3,"file":"index8.js","names":[],"sources":["../src/components/card/card.module.css"],"sourcesContent":[".card {\n position: relative;\n overflow: visible;\n border-radius: var(--ts-card-radius, var(--uzi-radius-lg, 12px));\n border: 1px solid var(--ts-card-border, var(--uzi-border-subtle, var(--border)));\n background: var(--ts-card-bg, var(--uzi-surface-1, var(--panel)));\n color: var(--ts-card-fg, var(--uzi-text-primary, var(--foreground)));\n box-shadow: var(--ts-card-shadow, var(--uzi-shadow-none, none));\n padding: var(--ts-card-padding, 16px);\n transition:\n transform 140ms ease,\n box-shadow 140ms ease,\n border-color 140ms ease,\n background-color 140ms ease;\n}\n\n.tone-default {\n --ts-card-bg: var(--uzi-surface-1, var(--panel));\n --ts-card-border: var(--uzi-border-subtle, var(--border));\n --ts-card-shadow: var(--uzi-shadow-none, none);\n}\n\n.tone-muted {\n --ts-card-bg: var(--uzi-surface-2, var(--muted));\n --ts-card-border: var(--uzi-border-subtle, var(--border));\n --ts-card-shadow: var(--uzi-shadow-none, none);\n}\n\n.tone-contrast {\n --ts-card-bg: var(--ts-card-contrast-bg, color-mix(in srgb, var(--background) 60%, black));\n --ts-card-border: var(--uzi-border-default, var(--border));\n --ts-card-shadow: var(--uzi-shadow-lg, 0 18px 50px rgba(0, 0, 0, 0.32));\n}\n\n.interactive {\n cursor: default;\n}\n\n.interactive:hover {\n transform: translateY(-1px);\n box-shadow: var(--uzi-shadow-sm, 0 4px 12px rgba(0, 0, 0, 0.12));\n border-color: var(--ts-card-hover-border, var(--uzi-border-accent, color-mix(in srgb, var(--primary) 40%, transparent)));\n}\n\n.interactive:focus-within {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.padding-none { --ts-card-padding: 0; }\n.padding-sm { --ts-card-padding: 10px; }\n.padding-md { --ts-card-padding: 16px; }\n.padding-lg { --ts-card-padding: 20px; }\n"],"mappings":""}