@tomny-dev/uzi 0.6.3 → 0.7.0-pr.78.214.1.87d1ede
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/conversation/Conversation.d.ts +18 -0
- package/dist/components/conversation/Conversation.d.ts.map +1 -0
- package/dist/components/conversation/Conversation.test.d.ts +2 -0
- package/dist/components/conversation/Conversation.test.d.ts.map +1 -0
- package/dist/components/multi-select/MultiSelect.d.ts +9 -0
- package/dist/components/multi-select/MultiSelect.d.ts.map +1 -1
- package/dist/components/multi-select/MultiSelect.test.d.ts +2 -0
- package/dist/components/multi-select/MultiSelect.test.d.ts.map +1 -0
- package/dist/index.cjs +19 -11
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -12
- package/dist/index26.js +10 -2
- package/dist/index26.js.map +1 -1
- package/dist/index27.cjs +13 -1
- package/dist/index27.cjs.map +1 -1
- package/dist/index27.js +74 -37
- package/dist/index27.js.map +1 -1
- package/dist/index28.cjs +74 -37
- package/dist/index28.cjs.map +1 -1
- package/dist/index53.js +26 -16
- package/dist/index53.js.map +1 -1
- package/dist/index54.cjs +37 -20
- package/dist/index54.cjs.map +1 -1
- package/dist/index54.js +57 -23
- package/dist/index54.js.map +1 -1
- package/dist/index55.cjs +63 -24
- package/dist/index55.cjs.map +1 -1
- package/dist/index55.js +16 -16
- package/dist/index55.js.map +1 -1
- package/dist/index56.cjs +19 -20
- package/dist/index56.cjs.map +1 -1
- package/dist/index56.js +24 -21
- package/dist/index56.js.map +1 -1
- package/dist/index57.cjs +25 -22
- package/dist/index57.cjs.map +1 -1
- package/dist/index57.js +17 -10
- package/dist/index57.js.map +1 -1
- package/dist/index58.cjs +23 -11
- package/dist/index58.cjs.map +1 -1
- package/dist/index58.js +25 -14
- package/dist/index58.js.map +1 -1
- package/dist/index59.cjs +25 -13
- package/dist/index59.cjs.map +1 -1
- package/dist/index59.js +10 -11
- package/dist/index59.js.map +1 -1
- package/dist/index60.cjs +11 -13
- package/dist/index60.cjs.map +1 -1
- package/dist/index60.js +13 -16
- package/dist/index60.js.map +1 -1
- package/dist/index61.cjs +13 -16
- package/dist/index61.cjs.map +1 -1
- package/dist/index61.js +10 -8
- package/dist/index61.js.map +1 -1
- package/dist/index62.cjs +11 -10
- package/dist/index62.cjs.map +1 -1
- package/dist/index62.js +15 -87
- package/dist/index62.js.map +1 -1
- package/dist/index63.cjs +15 -89
- package/dist/index63.cjs.map +1 -1
- package/dist/index63.js +9 -21
- package/dist/index63.js.map +1 -1
- package/dist/index64.cjs +12 -30
- package/dist/index64.cjs.map +1 -1
- package/dist/index64.js +89 -43
- package/dist/index64.js.map +1 -1
- package/dist/index65.cjs +88 -42
- package/dist/index65.cjs.map +1 -1
- package/dist/index65.js +14 -50
- package/dist/index65.js.map +1 -1
- package/dist/index66.cjs +15 -69
- package/dist/index66.cjs.map +1 -1
- package/dist/index66.js +25 -414
- package/dist/index66.js.map +1 -1
- package/dist/index67.cjs +25 -416
- package/dist/index67.cjs.map +1 -1
- package/dist/index67.js +56 -58
- package/dist/index67.js.map +1 -1
- package/dist/index68.cjs +82 -85
- package/dist/index68.cjs.map +1 -1
- package/dist/index68.js +419 -226
- package/dist/index68.js.map +1 -1
- package/dist/index69.cjs +420 -225
- package/dist/index69.cjs.map +1 -1
- package/dist/index69.js +58 -42
- package/dist/index69.js.map +1 -1
- package/dist/index70.cjs +85 -61
- package/dist/index70.cjs.map +1 -1
- package/dist/index70.js +236 -76
- package/dist/index70.js.map +1 -1
- package/dist/index71.cjs +235 -75
- package/dist/index71.cjs.map +1 -1
- package/dist/index71.js +42 -20
- package/dist/index71.js.map +1 -1
- package/dist/index72.cjs +60 -27
- package/dist/index72.cjs.map +1 -1
- package/dist/index72.js +73 -88
- package/dist/index72.js.map +1 -1
- package/dist/index73.cjs +73 -90
- package/dist/index73.cjs.map +1 -1
- package/dist/index73.js +17 -15
- package/dist/index73.js.map +1 -1
- package/dist/index74.cjs +22 -19
- package/dist/index74.cjs.map +1 -1
- package/dist/index74.js +85 -143
- package/dist/index74.js.map +1 -1
- package/dist/index75.cjs +87 -143
- package/dist/index75.cjs.map +1 -1
- package/dist/index75.js +23 -0
- package/dist/index75.js.map +1 -0
- package/dist/index76.cjs +31 -0
- package/dist/index76.cjs.map +1 -0
- package/dist/index76.js +159 -0
- package/dist/index76.js.map +1 -0
- package/dist/index77.cjs +161 -0
- package/dist/index77.cjs.map +1 -0
- package/dist/style.css +150 -0
- package/package.json +1 -1
package/dist/index74.js
CHANGED
|
@@ -1,159 +1,101 @@
|
|
|
1
1
|
import { cx } from "./index3.js";
|
|
2
|
-
import
|
|
2
|
+
import error_page_module_default from "./index73.js";
|
|
3
3
|
import "react";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
-
//#region src/components/
|
|
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
|
-
};
|
|
5
|
+
//#region src/components/error-page/ErrorPage.tsx
|
|
121
6
|
/**
|
|
122
|
-
*
|
|
7
|
+
* ErrorPage — a generic error page with configurable status code, message, and action.
|
|
123
8
|
*
|
|
124
9
|
* Layout:
|
|
125
|
-
*
|
|
10
|
+
* Full-viewport centered card with
|
|
11
|
+
* Icon (optional) -> status code -> message -> subtitle -> action
|
|
126
12
|
*/
|
|
127
|
-
function
|
|
128
|
-
const { icon: VariantIcon, title: defaultTitle, description: defaultDescription } = variantMap[variant];
|
|
13
|
+
function ErrorPage({ statusCode = 500, message = "Something went wrong", subtitle, action, showIcon = true, className }) {
|
|
129
14
|
return /* @__PURE__ */ jsx("div", {
|
|
130
|
-
className: cx(
|
|
15
|
+
className: cx(error_page_module_default.layout, className),
|
|
131
16
|
children: /* @__PURE__ */ jsxs("div", {
|
|
132
|
-
className:
|
|
133
|
-
children: [
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
className:
|
|
140
|
-
children: [
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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
|
+
]
|
|
151
49
|
})
|
|
152
|
-
|
|
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
|
+
})]
|
|
153
71
|
})
|
|
154
72
|
});
|
|
155
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
|
+
}
|
|
156
98
|
//#endregion
|
|
157
|
-
export {
|
|
99
|
+
export { ErrorPage, MaintenancePage, NotFoundPage };
|
|
158
100
|
|
|
159
101
|
//# sourceMappingURL=index74.js.map
|
package/dist/index74.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index74.js","names":[],"sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"index74.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"}
|
package/dist/index75.cjs
CHANGED
|
@@ -1,161 +1,105 @@
|
|
|
1
1
|
const require_runtime = require("./index2.cjs");
|
|
2
2
|
const require_cx = require("./index4.cjs");
|
|
3
|
-
const
|
|
3
|
+
const require_error_page_module = require("./index74.cjs");
|
|
4
4
|
let react = require("react");
|
|
5
5
|
react = require_runtime.__toESM(react, 1);
|
|
6
6
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
7
|
-
//#region src/components/
|
|
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
|
-
};
|
|
7
|
+
//#region src/components/error-page/ErrorPage.tsx
|
|
123
8
|
/**
|
|
124
|
-
*
|
|
9
|
+
* ErrorPage — a generic error page with configurable status code, message, and action.
|
|
125
10
|
*
|
|
126
11
|
* Layout:
|
|
127
|
-
*
|
|
12
|
+
* Full-viewport centered card with
|
|
13
|
+
* Icon (optional) -> status code -> message -> subtitle -> action
|
|
128
14
|
*/
|
|
129
|
-
function
|
|
130
|
-
const { icon: VariantIcon, title: defaultTitle, description: defaultDescription } = variantMap[variant];
|
|
15
|
+
function ErrorPage({ statusCode = 500, message = "Something went wrong", subtitle, action, showIcon = true, className }) {
|
|
131
16
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
132
|
-
className: require_cx.cx(
|
|
17
|
+
className: require_cx.cx(require_error_page_module.default.layout, className),
|
|
133
18
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
134
|
-
className:
|
|
135
|
-
children: [
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
className:
|
|
142
|
-
children: [
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
+
]
|
|
153
51
|
})
|
|
154
|
-
|
|
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
|
+
})]
|
|
155
73
|
})
|
|
156
74
|
});
|
|
157
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
|
+
}
|
|
158
100
|
//#endregion
|
|
159
|
-
exports.
|
|
101
|
+
exports.ErrorPage = ErrorPage;
|
|
102
|
+
exports.MaintenancePage = MaintenancePage;
|
|
103
|
+
exports.NotFoundPage = NotFoundPage;
|
|
160
104
|
|
|
161
105
|
//# sourceMappingURL=index75.cjs.map
|
package/dist/index75.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index75.cjs","names":[],"sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"index75.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"}
|
package/dist/index75.js
ADDED
|
@@ -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=index75.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index75.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":""}
|
package/dist/index76.cjs
ADDED
|
@@ -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=index76.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index76.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":""}
|