@nexa-stack/framework 1.0.0 → 1.1.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 (133) hide show
  1. package/README.md +15 -3
  2. package/package.json +22 -5
  3. package/packages/server/src/router.ts +36 -12
  4. package/public/assets/blog-CGOdzgkO.js +1 -0
  5. package/public/assets/blog-ML7LFtff.js +1 -0
  6. package/public/assets/components-B_D1ccvJ.js +50 -0
  7. package/public/assets/components-C67m2tNE.js +1 -0
  8. package/public/assets/components-DCNIrNdJ.js +50 -0
  9. package/public/assets/components-DZ9oc9zI.js +1 -0
  10. package/public/assets/contact-CAfovn36.js +1 -0
  11. package/public/assets/contact-bMUqmce3.js +1 -0
  12. package/public/assets/docs-B92Otuxs.js +20 -0
  13. package/public/assets/docs-BGOHuCe3.js +20 -0
  14. package/public/assets/docs-BUkg7Pd2.css +1 -0
  15. package/public/assets/echarts-mount-DdBiYEc1.js +19 -0
  16. package/public/assets/echarts-mount-kJrXh_za.js +19 -0
  17. package/public/assets/echarts-nexa-BsAEVjT0.js +1 -0
  18. package/public/assets/integration-BNpFB3SL.js +1 -0
  19. package/public/assets/integration-Br6tmvWh.js +1 -0
  20. package/public/assets/integration-D7vdPco_.js +1 -0
  21. package/public/assets/main-BBkehs0N.js +1 -0
  22. package/public/assets/main-Cx_-Fq0O.css +1 -0
  23. package/public/assets/main-ny0uOGg1.js +1 -0
  24. package/public/assets/src-B4_Kaae6.css +1 -0
  25. package/public/assets/src-BfdoaLcc.js +1 -0
  26. package/public/assets/src-D__MdyFu.js +1 -0
  27. package/public/cards/README.md +17 -0
  28. package/public/cards/bloom.jpg +0 -0
  29. package/public/favicon.svg +11 -0
  30. package/public/nexa-hero-sculpture-1280.png +0 -0
  31. package/public/nexa-hero-sculpture-640.png +0 -0
  32. package/public/nexa-hero-sculpture-960.png +0 -0
  33. package/public/nexa-hero-sculpture.png +0 -0
  34. package/public/nexa-hero-sculpture.webp +0 -0
  35. package/public/nexa-mark-24.png +0 -0
  36. package/public/nexa-mark-256.png +0 -0
  37. package/public/nexa-mark-32.png +0 -0
  38. package/public/nexa-mark-40.png +0 -0
  39. package/public/nexa-mark-48.png +0 -0
  40. package/public/nexa-mark-512.png +0 -0
  41. package/public/nexa-mark-64.png +0 -0
  42. package/public/nexa-mark-96.png +0 -0
  43. package/public/nexa-mark-apple.png +0 -0
  44. package/public/nexa-mark-product-256.png +0 -0
  45. package/public/nexa-mark-product.png +0 -0
  46. package/public/nexa-mark-source.png +0 -0
  47. package/public/nexa-mark-trim.png +0 -0
  48. package/public/nexa-mark.png +0 -0
  49. package/public/nexa-mark.webp +0 -0
  50. package/public/nexa-palette-vision.png +0 -0
  51. package/public/nexa-wordmark.png +0 -0
  52. package/public/nexa-wordmark.webp +0 -0
  53. package/public/og.png +0 -0
  54. package/public/site/about.html +101 -0
  55. package/public/site/blog.html +87 -0
  56. package/public/site/components.html +251 -0
  57. package/public/site/contact.html +72 -0
  58. package/public/site/docs/buttons.html +157 -0
  59. package/public/site/docs/cards.html +159 -0
  60. package/public/site/docs/colors.html +216 -0
  61. package/public/site/docs/commands.html +170 -0
  62. package/public/site/docs/data.html +122 -0
  63. package/public/site/docs/feedback.html +111 -0
  64. package/public/site/docs/forms.html +117 -0
  65. package/public/site/docs/icons.html +125 -0
  66. package/public/site/docs/index.html +82 -0
  67. package/public/site/docs/installation.html +83 -0
  68. package/public/site/docs/layout.html +116 -0
  69. package/public/site/docs/media.html +96 -0
  70. package/public/site/docs/navigation.html +122 -0
  71. package/public/site/docs/overlays.html +95 -0
  72. package/public/site/docs/pickers.html +126 -0
  73. package/public/site/docs/sections.html +111 -0
  74. package/public/site/docs/typography.html +97 -0
  75. package/public/site/docs/usage.html +76 -0
  76. package/public/site/features.html +107 -0
  77. package/public/site/index.html +117 -0
  78. package/public/site/integration.html +43 -0
  79. package/public/site/pricing.html +87 -0
  80. package/ui/cards/README.md +17 -0
  81. package/ui/cards/bloom.jpg +0 -0
  82. package/ui/echarts-mount-DWNKcqeo.js +22945 -0
  83. package/ui/echarts-nexa-BY8eW9ug.js +456 -0
  84. package/ui/favicon.svg +11 -0
  85. package/ui/nexa-hero-sculpture-1280.png +0 -0
  86. package/ui/nexa-hero-sculpture-640.png +0 -0
  87. package/ui/nexa-hero-sculpture-960.png +0 -0
  88. package/ui/nexa-hero-sculpture.png +0 -0
  89. package/ui/nexa-hero-sculpture.webp +0 -0
  90. package/ui/nexa-mark-24.png +0 -0
  91. package/ui/nexa-mark-256.png +0 -0
  92. package/ui/nexa-mark-32.png +0 -0
  93. package/ui/nexa-mark-40.png +0 -0
  94. package/ui/nexa-mark-48.png +0 -0
  95. package/ui/nexa-mark-512.png +0 -0
  96. package/ui/nexa-mark-64.png +0 -0
  97. package/ui/nexa-mark-96.png +0 -0
  98. package/ui/nexa-mark-apple.png +0 -0
  99. package/ui/nexa-mark-product-256.png +0 -0
  100. package/ui/nexa-mark-product.png +0 -0
  101. package/ui/nexa-mark-source.png +0 -0
  102. package/ui/nexa-mark-trim.png +0 -0
  103. package/ui/nexa-mark.png +0 -0
  104. package/ui/nexa-mark.webp +0 -0
  105. package/ui/nexa-palette-vision.png +0 -0
  106. package/ui/nexa-wordmark.png +0 -0
  107. package/ui/nexa-wordmark.webp +0 -0
  108. package/ui/nexa.css +2 -0
  109. package/ui/nexa.js +2971 -0
  110. package/ui/nexa.umd.js +80 -0
  111. package/ui/og.png +0 -0
  112. package/ui/types/components/art.d.ts +11 -0
  113. package/ui/types/components/card-layouts.d.ts +11 -0
  114. package/ui/types/components/card.d.ts +11 -0
  115. package/ui/types/components/charts.d.ts +7 -0
  116. package/ui/types/components/extra.d.ts +2 -0
  117. package/ui/types/components/helpers.d.ts +18 -0
  118. package/ui/types/components/icons.d.ts +24 -0
  119. package/ui/types/components/index.d.ts +2 -0
  120. package/ui/types/components/pickers.d.ts +8 -0
  121. package/ui/types/components/structure.d.ts +2 -0
  122. package/ui/types/core/behaviors.d.ts +2 -0
  123. package/ui/types/core/brand-assets.d.ts +44 -0
  124. package/ui/types/core/colormap.d.ts +49 -0
  125. package/ui/types/core/echarts-mount.d.ts +5 -0
  126. package/ui/types/core/echarts-nexa.d.ts +71 -0
  127. package/ui/types/core/parser.d.ts +11 -0
  128. package/ui/types/core/registry.d.ts +13 -0
  129. package/ui/types/core/renderer.d.ts +14 -0
  130. package/ui/types/core/schema.d.ts +8 -0
  131. package/ui/types/core/toast.d.ts +11 -0
  132. package/ui/types/core/validate.d.ts +1 -0
  133. package/ui/types/index.d.ts +50 -0
@@ -0,0 +1,456 @@
1
+ //#region resources/ui/src/components/helpers.ts
2
+ var e = (e, t) => e.includes(t);
3
+ function t(e, t = /[,;]/) {
4
+ return e ? e.split(t).map((e) => e.trim()).filter(Boolean) : [];
5
+ }
6
+ function n(e) {
7
+ if (!e.includes("|") && !e.includes("/")) return e;
8
+ let t = e.split("||").map((e) => e.trim()).filter(Boolean), n = (e) => {
9
+ if (e.includes("/")) {
10
+ let [t, ...n] = e.split("/"), r = n.join("/").trim();
11
+ if (r.includes("|")) {
12
+ let e = r.split("|").map((e) => e.trim()).filter(Boolean);
13
+ if (e.length >= 2) return `${t.trim()} ${e.slice(0, -1).join(" ")} <em>${e[e.length - 1]}</em>`;
14
+ }
15
+ return `${t.trim()} <em>${r}</em>`;
16
+ }
17
+ if (!e.includes("|")) return e;
18
+ let t = e.split("|").map((e) => e.trim()).filter(Boolean);
19
+ return t.length === 3 ? `${t[0]} <em>${t[1]}</em> ${t[2]}` : t.length === 2 ? `${t[0]} <em>${t[1]}</em>` : t.map((e, t, n) => t === n.length - 1 ? `<em>${e}</em>` : e).join(" ");
20
+ };
21
+ return t.length > 1 ? t.map(n).join("<br>") : n(t[0] ?? e);
22
+ }
23
+ function r(e, n = ";") {
24
+ return t(e, n).map((e) => {
25
+ let [t, ...n] = e.split("|");
26
+ return {
27
+ head: t?.trim() ?? "",
28
+ body: n.join("|").trim()
29
+ };
30
+ });
31
+ }
32
+ function i(e) {
33
+ let n = e.getAttribute("plans"), r = Number(e.getAttribute("popular") ?? "1");
34
+ return n ? t(n, ";").map((e, n) => {
35
+ let [i, a, o, s, c] = e.split("|");
36
+ return {
37
+ name: i?.trim() ?? "Plan",
38
+ price: a?.trim() ?? "0",
39
+ desc: o?.trim() ?? "",
40
+ features: t(s ?? "", /,/),
41
+ cta: c?.trim() ?? "Choose",
42
+ popular: n === r
43
+ };
44
+ }) : [
45
+ {
46
+ name: "STARTER",
47
+ price: "0",
48
+ desc: "For personal projects and quick starts.",
49
+ features: [
50
+ "Core components",
51
+ "Responsive themes",
52
+ "Community updates"
53
+ ],
54
+ cta: "Start free"
55
+ },
56
+ {
57
+ name: "PRO",
58
+ price: "19",
59
+ desc: "For real products and ambitious teams.",
60
+ features: [
61
+ "All widgets + pickers",
62
+ "Featured presets",
63
+ "Priority updates"
64
+ ],
65
+ cta: "Choose Pro",
66
+ popular: !0
67
+ },
68
+ {
69
+ name: "STUDIO",
70
+ price: "49",
71
+ desc: "For agencies shipping many experiences.",
72
+ features: [
73
+ "Unlimited projects",
74
+ "Custom tokens",
75
+ "Team license"
76
+ ],
77
+ cta: "Choose Studio"
78
+ }
79
+ ];
80
+ }
81
+ function a(e, n) {
82
+ let r = e.getAttribute("items");
83
+ return r ? t(r, ";").slice(0, n).map((e, t) => {
84
+ let n = e.split("|").map((e) => e.trim()).filter(Boolean);
85
+ return n.length >= 3 ? [
86
+ n[0],
87
+ n[1],
88
+ n.slice(2).join(" | ")
89
+ ] : n.length === 2 ? [
90
+ String(t + 1).padStart(2, "0"),
91
+ n[0],
92
+ n[1]
93
+ ] : [
94
+ String(t + 1).padStart(2, "0"),
95
+ n[0] ?? "Feature",
96
+ "One short command."
97
+ ];
98
+ }) : [
99
+ [
100
+ "01",
101
+ "Exceptional speed",
102
+ "Lightweight core — no heavy dependencies."
103
+ ],
104
+ [
105
+ "02",
106
+ "Adaptive design",
107
+ "Looks great on every screen and direction."
108
+ ],
109
+ [
110
+ "03",
111
+ "Scalable registry",
112
+ "Clear components that grow with your product."
113
+ ],
114
+ [
115
+ "04",
116
+ "Living color map",
117
+ "One seed color dresses every widget."
118
+ ]
119
+ ].slice(0, n);
120
+ }
121
+ function o(e, n) {
122
+ let r = t(e.getAttribute("links") ?? e.getAttribute("nav"));
123
+ return (r.length ? r : n).map((e) => {
124
+ let [t, n] = e.split("|").map((e) => e.trim());
125
+ return `<a href="${n || "#"}">${t}</a>`;
126
+ }).join("");
127
+ }
128
+ //#endregion
129
+ //#region resources/ui/src/components/charts.ts
130
+ var s = 0;
131
+ function c(e) {
132
+ return s += 1, `${e}${s}`;
133
+ }
134
+ function l(e) {
135
+ let n = r(e);
136
+ return n.length ? n.map((e) => {
137
+ let t = Number(e.body.replace(/[^0-9.-]/g, ""));
138
+ return {
139
+ label: e.head || "—",
140
+ value: Number.isFinite(t) ? t : 0
141
+ };
142
+ }).filter((e) => e.label) : t(e).map((e, t) => {
143
+ let n = Number(e.replace(/[^0-9.-]/g, ""));
144
+ return {
145
+ label: String(t + 1),
146
+ value: Number.isFinite(n) ? n : 0
147
+ };
148
+ });
149
+ }
150
+ function u(e) {
151
+ return Math.max(1, ...e.map((e) => e.value));
152
+ }
153
+ function d(e, t) {
154
+ let n = t <= 1 ? 0 : e / (t - 1);
155
+ return n < .33 ? "var(--nexa-cyan,#00c6ff)" : n < .66 ? "var(--nexa-sky,#2e9eff)" : "var(--nexa-violet,#7c5cfc)";
156
+ }
157
+ function f(e, t) {
158
+ let n = u(e);
159
+ return `<div class="nexa-chart-bars" role="img" aria-label="Bar chart">${e.map((r, i) => `<div class="nexa-chart-bar" style="--h:${Math.round(r.value / n * 100)}%;--c:${d(i, e.length)};${t ? `--d:${i * 60}ms` : ""}"><i></i><b>${r.value}</b><span>${r.label}</span></div>`).join("")}</div>`;
160
+ }
161
+ function p(e, t, n) {
162
+ let r = u(e), i = e.length <= 1 ? 0 : 92 / Math.max(1, e.length - 1), a = e.map((e, t) => ({
163
+ x: 4 + t * i,
164
+ y: 52 - e.value / r * 48,
165
+ p: e
166
+ })), o = a.map((e, t) => `${t ? "L" : "M"}${e.x.toFixed(2)} ${e.y.toFixed(2)}`).join(" "), s = `M${a[0]?.x.toFixed(2) ?? 4} 52 ${a.map((e) => `L${e.x.toFixed(2)} ${e.y.toFixed(2)}`).join(" ")} L${a.at(-1)?.x.toFixed(2) ?? 96} 52 Z`, l = a.map((e, t) => `<circle class="nexa-chart-dot" cx="${e.x}" cy="${e.y}" r="1.6" style="--d:${t * 50}ms"><title>${e.p.label}: ${e.p.value}</title></circle>`).join(""), d = c("nexaLine"), f = c("nexaArea"), p = `<div class="nexa-chart-x">${e.map((e) => `<span>${e.label}</span>`).join("")}</div>`;
167
+ return `<div class="nexa-chart-line ${t ? "is-area" : ""} ${n ? "is-anim" : ""}" role="img" aria-label="${t ? "Area" : "Line"} chart">
168
+ <svg viewBox="0 0 100 56" preserveAspectRatio="none" aria-hidden="true">
169
+ <defs>
170
+ <linearGradient id="${d}" x1="0" y1="0" x2="1" y2="0"><stop offset="0%" stop-color="#00c6ff"/><stop offset="50%" stop-color="#2e9eff"/><stop offset="100%" stop-color="#7c5cfc"/></linearGradient>
171
+ <linearGradient id="${f}" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#2e9eff" stop-opacity=".35"/><stop offset="100%" stop-color="#7c5cfc" stop-opacity="0"/></linearGradient>
172
+ </defs>
173
+ ${t ? `<path class="nexa-chart-area" d="${s}" fill="url(#${f})"/>` : ""}
174
+ <path class="nexa-chart-path" d="${o}" fill="none" stroke="url(#${d})" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
175
+ ${l}
176
+ </svg>${p}</div>`;
177
+ }
178
+ function m(e, t) {
179
+ let n = e.reduce((e, t) => e + t.value, 0) || 1, r = 2 * Math.PI * 42, i = 0, a = e.map((t, a) => {
180
+ let o = t.value / n * r, s = `${o} ${r - o}`, c = `<circle class="nexa-chart-ring" r="42" cx="50" cy="50" stroke="${d(a, e.length)}" stroke-dasharray="${s}" stroke-dashoffset="${-i}" pathLength="${r}" style="--len:${o};--gap:${r - o};--off:${-i};--d:${a * 80}ms"><title>${t.label}: ${t.value}</title></circle>`;
181
+ return i += o, c;
182
+ }).join(""), o = e.map((t, r) => `<li style="--c:${d(r, e.length)}"><i></i><span>${t.label}</span><b>${Math.round(t.value / n * 100)}%</b></li>`).join("");
183
+ return `<div class="nexa-chart-donut ${t ? "is-anim" : ""}" role="img" aria-label="Donut chart">
184
+ <svg viewBox="0 0 100 100" aria-hidden="true">
185
+ <circle class="nexa-chart-ring-bg" r="42" cx="50" cy="50"/>
186
+ ${a}
187
+ <text x="50" y="48" text-anchor="middle" class="nexa-chart-donut-val">${n}</text>
188
+ <text x="50" y="58" text-anchor="middle" class="nexa-chart-donut-lbl">TOTAL</text>
189
+ </svg>
190
+ <ul class="nexa-chart-legend">${o}</ul>
191
+ </div>`;
192
+ }
193
+ function h(e) {
194
+ let t = u(e), n = e.length <= 1 ? 0 : 116 / Math.max(1, e.length - 1), r = e.map((e, r) => {
195
+ let i = 2 + r * n, a = 26 - e.value / t * 24;
196
+ return `${r ? "L" : "M"}${i.toFixed(1)} ${a.toFixed(1)}`;
197
+ }).join(" "), i = c("nexaSpark");
198
+ return `<div class="nexa-chart-spark" role="img" aria-label="Sparkline"><svg viewBox="0 0 120 28" preserveAspectRatio="none"><defs><linearGradient id="${i}" x1="0" y1="0" x2="1" y2="0"><stop offset="0%" stop-color="#00c6ff"/><stop offset="100%" stop-color="#7c5cfc"/></linearGradient></defs><path d="${r}" fill="none" stroke="url(#${i})" stroke-width="2" stroke-linecap="round"/></svg></div>`;
199
+ }
200
+ var g = {
201
+ bar: "Jan|42;Feb|58;Mar|71;Apr|65;May|88;Jun|96",
202
+ line: "Mon|12;Tue|19;Wed|15;Thu|28;Fri|24;Sat|32;Sun|30",
203
+ area: "W1|40;W2|55;W3|48;W4|72;W5|68;W6|90",
204
+ donut: "Pro|48;Studio|27;Starter|25",
205
+ spark: "12,18,14,22,19,28,26,34,30,38"
206
+ };
207
+ function _(t) {
208
+ t.register("chart", ({ modifiers: t, element: n }) => {
209
+ let r = [
210
+ "bar",
211
+ "line",
212
+ "area",
213
+ "donut",
214
+ "pie",
215
+ "spark",
216
+ "sparkline"
217
+ ].find((n) => e(t, n)) ?? "bar", i = r === "pie" ? "donut" : r === "sparkline" ? "spark" : r;
218
+ n.classList.add(`is-${i}`);
219
+ let a = !e(t, "static");
220
+ a && n.classList.add("is-anim");
221
+ let o = n.getAttribute("title") ?? n.getAttribute("label") ?? "", s = n.getAttribute("subtitle") ?? n.getAttribute("desc") ?? "", c = n.getAttribute("data") ?? n.getAttribute("values") ?? n.getAttribute("series") ?? g[i] ?? g.bar, u = i === "spark" ? c.includes("|") ? l(c) : l(c.split(/[,;\s]+/).filter(Boolean).map((e, t) => `${t + 1}|${e}`).join(";")) : l(c), d = o || s ? `<header class="nexa-chart-head">${o ? `<h3>${o}</h3>` : ""}${s ? `<p>${s}</p>` : ""}</header>` : "";
222
+ if (!e(t, "pro")) {
223
+ let e = "";
224
+ return e = i === "bar" ? f(u, a) : i === "line" ? p(u, !1, a) : i === "area" ? p(u, !0, a) : i === "donut" ? m(u, a) : h(u), n.classList.add("is-css"), `<div class="nexa-chart-card">${d}${e}</div>`;
225
+ }
226
+ n.classList.add("is-echarts");
227
+ let _ = a ? "" : " data-static=\"true\"";
228
+ return `<div class="nexa-chart-card is-pro">${d}${`<div class="nexa-echart-host" data-nexa-echart="${i}" data-chart="${((e) => e.replace(/&/g, "&amp;").replace(/"/g, "&quot;"))(c)}"${_} role="img" aria-label="${i} chart"></div>`}</div>`;
229
+ });
230
+ }
231
+ //#endregion
232
+ //#region resources/ui/src/core/echarts-nexa.ts
233
+ var v = {
234
+ color: [
235
+ "#00C6FF",
236
+ "#2E9EFF",
237
+ "#2563EB",
238
+ "#7C5CFC",
239
+ "#a78bfa",
240
+ "#38bdf8"
241
+ ],
242
+ backgroundColor: "transparent",
243
+ textStyle: {
244
+ fontFamily: "Inter,Segoe UI,system-ui,sans-serif",
245
+ color: "#5B6478"
246
+ },
247
+ title: { textStyle: {
248
+ color: "#0B1220",
249
+ fontWeight: 700
250
+ } },
251
+ legend: { textStyle: { color: "#5B6478" } },
252
+ grid: {
253
+ left: 12,
254
+ right: 12,
255
+ top: 48,
256
+ bottom: 28,
257
+ containLabel: !0
258
+ },
259
+ categoryAxis: {
260
+ axisLine: { lineStyle: { color: "rgba(11,18,32,.08)" } },
261
+ axisTick: { show: !1 },
262
+ axisLabel: {
263
+ color: "#5B6478",
264
+ fontSize: 11
265
+ },
266
+ splitLine: { lineStyle: { color: "rgba(11,18,32,.06)" } }
267
+ },
268
+ valueAxis: {
269
+ axisLine: { show: !1 },
270
+ axisTick: { show: !1 },
271
+ axisLabel: {
272
+ color: "#5B6478",
273
+ fontSize: 11
274
+ },
275
+ splitLine: { lineStyle: { color: "rgba(11,18,32,.06)" } }
276
+ }
277
+ }, y = {
278
+ type: "linear",
279
+ x: 0,
280
+ y: 0,
281
+ x2: 1,
282
+ y2: 0,
283
+ colorStops: [
284
+ {
285
+ offset: 0,
286
+ color: "#00C6FF"
287
+ },
288
+ {
289
+ offset: .5,
290
+ color: "#2E9EFF"
291
+ },
292
+ {
293
+ offset: 1,
294
+ color: "#7C5CFC"
295
+ }
296
+ ]
297
+ };
298
+ function b(e, t, n = !0) {
299
+ let r = t.map((e) => e.label), i = t.map((e) => e.value), a = {
300
+ animation: n,
301
+ backgroundColor: "transparent"
302
+ };
303
+ return e === "spark" ? {
304
+ ...a,
305
+ grid: {
306
+ left: 0,
307
+ right: 0,
308
+ top: 4,
309
+ bottom: 4
310
+ },
311
+ xAxis: {
312
+ type: "category",
313
+ show: !1,
314
+ data: r
315
+ },
316
+ yAxis: {
317
+ type: "value",
318
+ show: !1
319
+ },
320
+ series: [{
321
+ type: "line",
322
+ data: i,
323
+ smooth: !0,
324
+ symbol: "none",
325
+ lineStyle: {
326
+ width: 2,
327
+ color: "#2E9EFF"
328
+ },
329
+ areaStyle: { color: {
330
+ type: "linear",
331
+ x: 0,
332
+ y: 0,
333
+ x2: 0,
334
+ y2: 1,
335
+ colorStops: [{
336
+ offset: 0,
337
+ color: "rgba(46,158,255,.28)"
338
+ }, {
339
+ offset: 1,
340
+ color: "rgba(124,92,252,0)"
341
+ }]
342
+ } }
343
+ }]
344
+ } : e === "donut" || e === "pie" ? {
345
+ ...a,
346
+ tooltip: { trigger: "item" },
347
+ legend: {
348
+ bottom: 0,
349
+ icon: "circle",
350
+ itemWidth: 8,
351
+ itemHeight: 8
352
+ },
353
+ series: [{
354
+ type: "pie",
355
+ radius: e === "donut" ? ["46%", "72%"] : ["0%", "72%"],
356
+ itemStyle: {
357
+ borderRadius: 6,
358
+ borderColor: "#fff",
359
+ borderWidth: 2
360
+ },
361
+ label: { show: !1 },
362
+ emphasis: {
363
+ scale: !0,
364
+ scaleSize: 6
365
+ },
366
+ data: t.map((e, t) => ({
367
+ name: e.label,
368
+ value: e.value,
369
+ itemStyle: { color: [
370
+ "#00C6FF",
371
+ "#2E9EFF",
372
+ "#2563EB",
373
+ "#7C5CFC",
374
+ "#a78bfa",
375
+ "#38bdf8"
376
+ ][t % 6] }
377
+ }))
378
+ }]
379
+ } : e === "line" || e === "area" ? {
380
+ ...a,
381
+ tooltip: { trigger: "axis" },
382
+ xAxis: {
383
+ type: "category",
384
+ data: r,
385
+ boundaryGap: !1
386
+ },
387
+ yAxis: { type: "value" },
388
+ series: [{
389
+ type: "line",
390
+ data: i,
391
+ smooth: !0,
392
+ symbolSize: 7,
393
+ lineStyle: {
394
+ width: 3,
395
+ color: y
396
+ },
397
+ itemStyle: {
398
+ color: "#2E9EFF",
399
+ borderColor: "#fff",
400
+ borderWidth: 2
401
+ },
402
+ areaStyle: e === "area" ? { color: {
403
+ type: "linear",
404
+ x: 0,
405
+ y: 0,
406
+ x2: 0,
407
+ y2: 1,
408
+ colorStops: [{
409
+ offset: 0,
410
+ color: "rgba(46,158,255,.32)"
411
+ }, {
412
+ offset: 1,
413
+ color: "rgba(124,92,252,0)"
414
+ }]
415
+ } } : void 0
416
+ }]
417
+ } : {
418
+ ...a,
419
+ tooltip: { trigger: "axis" },
420
+ xAxis: {
421
+ type: "category",
422
+ data: r
423
+ },
424
+ yAxis: { type: "value" },
425
+ series: [{
426
+ type: "bar",
427
+ data: i,
428
+ barMaxWidth: 42,
429
+ itemStyle: {
430
+ borderRadius: [
431
+ 8,
432
+ 8,
433
+ 4,
434
+ 4
435
+ ],
436
+ color: y
437
+ },
438
+ emphasis: { itemStyle: {
439
+ shadowBlur: 12,
440
+ shadowColor: "rgba(46,158,255,.35)"
441
+ } }
442
+ }]
443
+ };
444
+ }
445
+ function x(e) {
446
+ let t = (e ?? "bar").toLowerCase();
447
+ return t === "pie" ? "donut" : t === "sparkline" ? "spark" : [
448
+ "bar",
449
+ "line",
450
+ "area",
451
+ "donut",
452
+ "spark"
453
+ ].includes(t) ? t : "bar";
454
+ }
455
+ //#endregion
456
+ export { _ as a, o as c, i as d, t as f, l as i, a as l, b as n, n as o, x as r, e as s, v as t, r as u };
package/ui/favicon.svg ADDED
@@ -0,0 +1,11 @@
1
+ <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="32" height="32" rx="8" fill="#0B1220"/>
3
+ <path d="M8 24V8h4.2l7.6 11.2V8H24v16h-4.2L12.2 12.8V24H8z" fill="url(#nexaFav)"/>
4
+ <defs>
5
+ <linearGradient id="nexaFav" x1="8" y1="8" x2="24" y2="24" gradientUnits="userSpaceOnUse">
6
+ <stop stop-color="#68C4FF"/>
7
+ <stop offset=".45" stop-color="#2E9EFF"/>
8
+ <stop offset="1" stop-color="#7C5CFC"/>
9
+ </linearGradient>
10
+ </defs>
11
+ </svg>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file