@elevasis/ui 2.34.0 → 2.35.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 (106) hide show
  1. package/dist/api/index.js +3 -3
  2. package/dist/app/index.d.ts +12 -12
  3. package/dist/app/index.js +25 -23
  4. package/dist/charts/index.js +3 -5
  5. package/dist/chunk-26HFM4MH.js +41449 -0
  6. package/dist/{chunk-DTFKWZ7A.js → chunk-4U3XAWCN.js} +502 -484
  7. package/dist/{chunk-ND5TDV2J.js → chunk-57OZ3AEG.js} +1 -1
  8. package/dist/{chunk-E4WQGJNS.js → chunk-7FPLLSHN.js} +14 -1
  9. package/dist/{chunk-RQA2EVN3.js → chunk-AKW7KISS.js} +39 -3
  10. package/dist/chunk-AUDNF2Q7.js +2050 -0
  11. package/dist/{chunk-TYRUKGGD.js → chunk-GX6XBRRF.js} +1 -2
  12. package/dist/{chunk-V6SZ4ECN.js → chunk-LUYVRATI.js} +257 -6
  13. package/dist/{chunk-X4WBGKJQ.js → chunk-R3VCBZDC.js} +50 -3
  14. package/dist/chunk-SIQ3P4OR.js +1764 -0
  15. package/dist/{chunk-RIAXZ6AH.js → chunk-VDOOGGBA.js} +1 -1
  16. package/dist/{chunk-3FV6HBXS.js → chunk-WF7CONXF.js} +23 -23
  17. package/dist/{chunk-3QXJK5IY.js → chunk-YYX7OPZQ.js} +1 -1
  18. package/dist/components/index.d.ts +69 -69
  19. package/dist/components/index.js +20 -2795
  20. package/dist/components/navigation/index.js +25 -5
  21. package/dist/execution/index.d.ts +9 -9
  22. package/dist/execution/index.js +1 -2
  23. package/dist/features/auth/index.js +23 -2
  24. package/dist/features/clients/index.js +20 -26
  25. package/dist/features/crm/index.js +20 -30
  26. package/dist/features/dashboard/index.d.ts +68 -68
  27. package/dist/features/dashboard/index.js +20 -28
  28. package/dist/features/delivery/index.js +20 -30
  29. package/dist/features/knowledge/index.js +25 -9
  30. package/dist/features/lead-gen/index.d.ts +9 -9
  31. package/dist/features/lead-gen/index.js +20 -31
  32. package/dist/features/monitoring/index.js +20 -30
  33. package/dist/features/monitoring/requests/index.js +20 -25
  34. package/dist/features/operations/index.d.ts +153 -153
  35. package/dist/features/operations/index.js +18 -37
  36. package/dist/features/seo/index.js +3 -4
  37. package/dist/features/settings/index.js +20 -27
  38. package/dist/graph/index.js +1 -1
  39. package/dist/hooks/delivery/index.js +30 -2
  40. package/dist/hooks/index.d.ts +85 -85
  41. package/dist/hooks/index.js +20 -21
  42. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +35 -35
  43. package/dist/hooks/published.d.ts +85 -85
  44. package/dist/hooks/published.js +20 -20
  45. package/dist/index.css +532 -532
  46. package/dist/index.d.ts +9256 -5803
  47. package/dist/index.js +22 -26
  48. package/dist/knowledge/index.d.ts +21 -21
  49. package/dist/knowledge/index.js +8 -15
  50. package/dist/layout/index.js +4 -10
  51. package/dist/organization/index.js +27 -1
  52. package/dist/provider/index.d.ts +47 -21
  53. package/dist/provider/index.js +20 -15
  54. package/dist/provider/published.d.ts +15 -16
  55. package/dist/provider/published.js +20 -11
  56. package/dist/test-utils/index.js +3 -3
  57. package/dist/theme/index.js +2 -3
  58. package/dist/theme/presets/index.d.ts +28 -3
  59. package/dist/theme/presets/index.js +1 -1
  60. package/dist/typeform/index.js +1 -2049
  61. package/dist/types/index.d.ts +68 -68
  62. package/dist/utils/index.d.ts +46 -46
  63. package/dist/utils/index.js +1 -1
  64. package/dist/zustand/index.d.ts +6 -6
  65. package/dist/zustand/index.js +0 -3
  66. package/package.json +5 -5
  67. package/dist/chunk-3AJVNMY5.js +0 -4769
  68. package/dist/chunk-3MEXPLWT.js +0 -265
  69. package/dist/chunk-3ZMAGTWF.js +0 -18
  70. package/dist/chunk-4O4MII5S.js +0 -4716
  71. package/dist/chunk-5EYJ2GIN.js +0 -122
  72. package/dist/chunk-7M2VOCYN.js +0 -1
  73. package/dist/chunk-BPQVTIUP.js +0 -105
  74. package/dist/chunk-BZZCNLT6.js +0 -12
  75. package/dist/chunk-CLDCYJQT.js +0 -1
  76. package/dist/chunk-E565XMTQ.js +0 -17
  77. package/dist/chunk-HRWLKKWM.js +0 -758
  78. package/dist/chunk-IGDYWFNE.js +0 -5198
  79. package/dist/chunk-IIMU5YAJ.js +0 -53
  80. package/dist/chunk-IVGI4GDL.js +0 -1593
  81. package/dist/chunk-JFL3GRD4.js +0 -39
  82. package/dist/chunk-LAWLB6CT.js +0 -951
  83. package/dist/chunk-LGKLC5MG.js +0 -44
  84. package/dist/chunk-LRWTWOGP.js +0 -1778
  85. package/dist/chunk-MP3GPBPX.js +0 -1874
  86. package/dist/chunk-N55DVMAG.js +0 -14
  87. package/dist/chunk-NLBQTDOW.js +0 -12051
  88. package/dist/chunk-O6JXQ6UQ.js +0 -468
  89. package/dist/chunk-OBBQ2JCM.js +0 -68
  90. package/dist/chunk-PDHTXPSF.js +0 -12
  91. package/dist/chunk-PLP3NYPL.js +0 -356
  92. package/dist/chunk-R2XR4FCV.js +0 -48
  93. package/dist/chunk-R66W5UDG.js +0 -26
  94. package/dist/chunk-RYTEQBAO.js +0 -37
  95. package/dist/chunk-SDXSB3HN.js +0 -425
  96. package/dist/chunk-TKAYX2SP.js +0 -204
  97. package/dist/chunk-TUMSNGTX.js +0 -35
  98. package/dist/chunk-VNAZTCHA.js +0 -65
  99. package/dist/chunk-VNFR57DF.js +0 -87
  100. package/dist/chunk-VTXTZXAU.js +0 -539
  101. package/dist/chunk-W73ZABT6.js +0 -85
  102. package/dist/chunk-WU4FNWCW.js +0 -2281
  103. package/dist/chunk-XZGSCABI.js +0 -383
  104. package/dist/chunk-YNWZIWJL.js +0 -1863
  105. /package/dist/{chunk-2RJMVWFJ.js → chunk-GEFWMU26.js} +0 -0
  106. /package/dist/{chunk-22UVE3RA.js → chunk-HENXLGVD.js} +0 -0
@@ -1,425 +0,0 @@
1
- import { useAppearance } from './chunk-E565XMTQ.js';
2
- import { useState, Component } from 'react';
3
- import { CopyButton, Tooltip } from '@mantine/core';
4
- import { IconCheck, IconCopy } from '@tabler/icons-react';
5
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
6
-
7
- var tokens = {
8
- cardBg: "rgba(16, 16, 20, 0.92)",
9
- cardBorder: "rgba(255, 255, 255, 0.06)",
10
- accentRed: "#ff5555",
11
- accentRedDim: "rgba(255, 85, 85, 0.15)",
12
- textPrimary: "#e8e8e8",
13
- textSecondary: "rgba(255, 255, 255, 0.5)",
14
- textTertiary: "rgba(255, 255, 255, 0.3)",
15
- codeBg: "rgba(0, 0, 0, 0.35)",
16
- codeBorder: "rgba(255, 255, 255, 0.05)",
17
- fileHighlight: "#7dd3fc",
18
- separator: "rgba(255, 255, 255, 0.06)",
19
- mono: "'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace",
20
- sans: "'Inter', -apple-system, system-ui, sans-serif"
21
- };
22
- function parseStackFrames(stack) {
23
- return stack.split("\n").filter((line) => line.trim().startsWith("at ")).map((line) => {
24
- const trimmed = line.trim();
25
- const parenMatch = trimmed.match(/^at\s+(.+?)\s+\((.+)\)$/);
26
- if (parenMatch) {
27
- return { fn: parenMatch[1], file: parenMatch[2], raw: trimmed };
28
- }
29
- const simpleMatch = trimmed.match(/^at\s+(.+)$/);
30
- if (simpleMatch) {
31
- return { fn: "", file: simpleMatch[1], raw: trimmed };
32
- }
33
- return { fn: "", file: "", raw: trimmed };
34
- });
35
- }
36
- var COMPONENT_NOISE = /* @__PURE__ */ new Set([
37
- "div",
38
- "main",
39
- "span",
40
- "section",
41
- "Lazy",
42
- "Suspense",
43
- "SafeFragment",
44
- "MatchImpl",
45
- "MatchInnerImpl",
46
- "OutletImpl",
47
- "CatchBoundaryImpl",
48
- "CatchBoundary",
49
- "MatchesInner",
50
- "Matches",
51
- "SplitComponent"
52
- ]);
53
- function isNoiseComponent(name) {
54
- if (COMPONENT_NOISE.has(name)) return true;
55
- if (name.startsWith("@mantine/") || name.startsWith("@tanstack/")) return true;
56
- return false;
57
- }
58
- function parseComponentStack(stack) {
59
- return stack.trim().split("\n").map((line) => line.trim()).filter((line) => line.startsWith("at ")).map((line) => {
60
- const match = line.match(/^at\s+(\S+)/);
61
- return match ? match[1] : line.replace(/^at\s+/, "");
62
- }).filter((name) => !isNoiseComponent(name));
63
- }
64
- function SectionLabel({ children }) {
65
- return /* @__PURE__ */ jsx(
66
- "div",
67
- {
68
- style: {
69
- fontSize: 10,
70
- fontFamily: tokens.sans,
71
- fontWeight: 600,
72
- textTransform: "uppercase",
73
- letterSpacing: "0.08em",
74
- color: tokens.textTertiary,
75
- marginBottom: 6
76
- },
77
- children
78
- }
79
- );
80
- }
81
- function CodeBlock({ children, style }) {
82
- return /* @__PURE__ */ jsx(
83
- "div",
84
- {
85
- style: {
86
- background: tokens.codeBg,
87
- border: `1px solid ${tokens.codeBorder}`,
88
- borderRadius: 6,
89
- padding: "10px 14px",
90
- fontFamily: tokens.mono,
91
- fontSize: 12,
92
- lineHeight: 1.6,
93
- color: tokens.textPrimary,
94
- overflowX: "auto",
95
- ...style
96
- },
97
- children
98
- }
99
- );
100
- }
101
- function StackFrameRow({ frame }) {
102
- return /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 8, alignItems: "baseline" }, children: [
103
- frame.fn && /* @__PURE__ */ jsx("span", { style: { color: tokens.textPrimary, flexShrink: 0 }, children: frame.fn }),
104
- /* @__PURE__ */ jsx("span", { style: { color: tokens.fileHighlight, opacity: 0.7, fontSize: 11 }, children: frame.file })
105
- ] });
106
- }
107
- function Separator() {
108
- return /* @__PURE__ */ jsx("div", { style: { height: 1, background: tokens.separator, margin: "4px 0" } });
109
- }
110
- function ErrorReportCard({
111
- errorName,
112
- errorMessage,
113
- errorStack,
114
- componentStack,
115
- eventId,
116
- url,
117
- timestamp,
118
- reportText,
119
- appVersion
120
- }) {
121
- const [expanded, setExpanded] = useState(true);
122
- const frames = errorStack ? parseStackFrames(errorStack) : [];
123
- const components = componentStack ? parseComponentStack(componentStack) : [];
124
- return /* @__PURE__ */ jsxs(
125
- "div",
126
- {
127
- style: {
128
- background: tokens.cardBg,
129
- border: `1px solid ${tokens.cardBorder}`,
130
- borderTop: `3px solid ${tokens.accentRed}`,
131
- borderRadius: 10,
132
- maxWidth: 720,
133
- width: "100%",
134
- fontFamily: tokens.sans,
135
- backdropFilter: "blur(20px)",
136
- boxShadow: "0 25px 60px rgba(0, 0, 0, 0.5), 0 0 40px rgba(255, 85, 85, 0.05)"
137
- },
138
- children: [
139
- /* @__PURE__ */ jsxs("div", { style: { padding: "20px 24px 0" }, children: [
140
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", marginBottom: 12 }, children: [
141
- /* @__PURE__ */ jsx("div", { style: { display: "flex", alignItems: "center", gap: 10 }, children: /* @__PURE__ */ jsx(
142
- "span",
143
- {
144
- style: {
145
- background: tokens.accentRedDim,
146
- color: tokens.accentRed,
147
- fontSize: 12,
148
- fontWeight: 600,
149
- fontFamily: tokens.mono,
150
- padding: "3px 10px",
151
- borderRadius: 4,
152
- letterSpacing: "0.02em"
153
- },
154
- children: errorName
155
- }
156
- ) }),
157
- /* @__PURE__ */ jsx(CopyButton, { value: reportText, timeout: 2e3, children: ({ copied, copy }) => /* @__PURE__ */ jsx(Tooltip, { label: copied ? "Copied!" : "Copy error report", position: "left", children: /* @__PURE__ */ jsxs(
158
- "button",
159
- {
160
- onClick: copy,
161
- style: {
162
- background: copied ? "rgba(45, 212, 191, 0.15)" : "rgba(255, 255, 255, 0.06)",
163
- border: `1px solid ${copied ? "rgba(45, 212, 191, 0.3)" : "rgba(255, 255, 255, 0.08)"}`,
164
- borderRadius: 6,
165
- padding: "5px 12px",
166
- color: copied ? "#2dd4bf" : tokens.textSecondary,
167
- cursor: "pointer",
168
- display: "flex",
169
- alignItems: "center",
170
- gap: 6,
171
- fontSize: 12,
172
- fontFamily: tokens.sans,
173
- transition: "all 0.15s ease"
174
- },
175
- children: [
176
- copied ? /* @__PURE__ */ jsx(IconCheck, { size: 13 }) : /* @__PURE__ */ jsx(IconCopy, { size: 13 }),
177
- copied ? "Copied" : "Copy"
178
- ]
179
- }
180
- ) }) })
181
- ] }),
182
- /* @__PURE__ */ jsx(
183
- "div",
184
- {
185
- style: {
186
- fontSize: 16,
187
- fontWeight: 500,
188
- color: tokens.textPrimary,
189
- lineHeight: 1.5,
190
- marginBottom: 16
191
- },
192
- children: errorMessage
193
- }
194
- ),
195
- /* @__PURE__ */ jsxs(
196
- "div",
197
- {
198
- style: {
199
- background: tokens.codeBg,
200
- border: `1px solid ${tokens.codeBorder}`,
201
- borderRadius: 6,
202
- padding: "8px 12px",
203
- fontFamily: tokens.mono,
204
- fontSize: 12,
205
- color: tokens.fileHighlight,
206
- marginBottom: 16,
207
- display: "flex",
208
- alignItems: "center",
209
- gap: 8
210
- },
211
- children: [
212
- /* @__PURE__ */ jsx("span", { style: { color: tokens.textTertiary, fontSize: 10, flexShrink: 0 }, children: "URL" }),
213
- /* @__PURE__ */ jsx("span", { style: { opacity: 0.8 }, children: url })
214
- ]
215
- }
216
- )
217
- ] }),
218
- /* @__PURE__ */ jsx("div", { style: { padding: "0 24px" }, children: /* @__PURE__ */ jsxs(
219
- "button",
220
- {
221
- onClick: () => setExpanded((v) => !v),
222
- style: {
223
- background: "none",
224
- border: "none",
225
- color: tokens.textTertiary,
226
- fontSize: 11,
227
- fontFamily: tokens.sans,
228
- cursor: "pointer",
229
- padding: "4px 0",
230
- display: "flex",
231
- alignItems: "center",
232
- gap: 4,
233
- letterSpacing: "0.05em",
234
- textTransform: "uppercase",
235
- fontWeight: 600
236
- },
237
- children: [
238
- expanded ? "- Hide" : "+ Show",
239
- " details"
240
- ]
241
- }
242
- ) }),
243
- expanded && /* @__PURE__ */ jsxs("div", { style: { padding: "8px 24px 20px" }, children: [
244
- frames.length > 0 && /* @__PURE__ */ jsxs("div", { style: { marginBottom: 16 }, children: [
245
- /* @__PURE__ */ jsx(SectionLabel, { children: "Stack Trace" }),
246
- /* @__PURE__ */ jsx(CodeBlock, { style: { maxHeight: 220, overflowY: "auto" }, children: frames.map((frame, i) => /* @__PURE__ */ jsx(StackFrameRow, { frame }, i)) })
247
- ] }),
248
- components.length > 0 && /* @__PURE__ */ jsxs("div", { style: { marginBottom: 16 }, children: [
249
- /* @__PURE__ */ jsx(SectionLabel, { children: "Component Tree" }),
250
- /* @__PURE__ */ jsx(CodeBlock, { style: { maxHeight: 120, overflowY: "auto" }, children: /* @__PURE__ */ jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: "2px 0", alignItems: "center" }, children: components.map((name, i) => /* @__PURE__ */ jsxs("span", { style: { display: "inline-flex", alignItems: "center" }, children: [
251
- /* @__PURE__ */ jsx(
252
- "span",
253
- {
254
- style: {
255
- color: i === 0 ? tokens.accentRed : tokens.textPrimary,
256
- fontWeight: i === 0 ? 600 : 400
257
- },
258
- children: name
259
- }
260
- ),
261
- i < components.length - 1 && /* @__PURE__ */ jsx("span", { style: { color: tokens.textTertiary, margin: "0 6px", fontSize: 10 }, children: "\u203A" })
262
- ] }, i)) }) })
263
- ] }),
264
- /* @__PURE__ */ jsx(Separator, {}),
265
- /* @__PURE__ */ jsxs(
266
- "div",
267
- {
268
- style: {
269
- display: "grid",
270
- gridTemplateColumns: "auto 1fr",
271
- gap: "4px 16px",
272
- fontSize: 11,
273
- fontFamily: tokens.mono,
274
- paddingTop: 12
275
- },
276
- children: [
277
- appVersion && /* @__PURE__ */ jsxs(Fragment, { children: [
278
- /* @__PURE__ */ jsx("span", { style: { color: tokens.textTertiary }, children: "version" }),
279
- /* @__PURE__ */ jsx("span", { style: { color: tokens.textSecondary }, children: appVersion })
280
- ] }),
281
- /* @__PURE__ */ jsx("span", { style: { color: tokens.textTertiary }, children: "timestamp" }),
282
- /* @__PURE__ */ jsx("span", { style: { color: tokens.textSecondary }, children: timestamp }),
283
- /* @__PURE__ */ jsx("span", { style: { color: tokens.textTertiary }, children: "viewport" }),
284
- /* @__PURE__ */ jsxs("span", { style: { color: tokens.textSecondary }, children: [
285
- window.innerWidth,
286
- "x",
287
- window.innerHeight
288
- ] }),
289
- eventId && /* @__PURE__ */ jsxs(Fragment, { children: [
290
- /* @__PURE__ */ jsx("span", { style: { color: tokens.textTertiary }, children: "sentry" }),
291
- /* @__PURE__ */ jsx("span", { style: { color: tokens.textSecondary }, children: eventId })
292
- ] })
293
- ]
294
- }
295
- )
296
- ] }),
297
- /* @__PURE__ */ jsx(
298
- "div",
299
- {
300
- style: {
301
- borderTop: `1px solid ${tokens.separator}`,
302
- padding: "12px 24px",
303
- display: "flex",
304
- justifyContent: "center"
305
- },
306
- children: /* @__PURE__ */ jsx(
307
- "button",
308
- {
309
- onClick: () => window.location.reload(),
310
- style: {
311
- background: "none",
312
- border: "none",
313
- color: tokens.textTertiary,
314
- fontSize: 12,
315
- fontFamily: tokens.sans,
316
- cursor: "pointer",
317
- padding: "2px 8px",
318
- textDecoration: "underline",
319
- textUnderlineOffset: 3
320
- },
321
- children: "Reload page"
322
- }
323
- )
324
- }
325
- )
326
- ]
327
- }
328
- );
329
- }
330
- function getErrorName(error) {
331
- if (error instanceof Error) {
332
- return error.constructor.name === "Error" ? "Error" : error.constructor.name;
333
- }
334
- return "Error";
335
- }
336
- function buildErrorReport(opts) {
337
- const { error, componentStack, eventId } = opts;
338
- const errorMessage = error instanceof Error ? error.message : String(error);
339
- const errorStack = error instanceof Error ? error.stack : void 0;
340
- const url = opts.url ?? window.location.href;
341
- const sections = [
342
- `## Error Report`,
343
- `**Timestamp:** ${(/* @__PURE__ */ new Date()).toISOString()}`,
344
- `**URL:** ${url}`,
345
- opts.appVersion && `**App Version:** ${opts.appVersion}`,
346
- eventId && `**Sentry Event ID:** ${eventId}`,
347
- `**User Agent:** ${navigator.userAgent}`,
348
- `**Viewport:** ${window.innerWidth}x${window.innerHeight}`,
349
- "",
350
- `### Error`,
351
- "```",
352
- `${getErrorName(error)}: ${errorMessage}`,
353
- "```",
354
- "",
355
- errorStack && `### Stack Trace`,
356
- errorStack && "```",
357
- errorStack,
358
- errorStack && "```",
359
- errorStack && "",
360
- componentStack && `### Component Stack`,
361
- componentStack && "```",
362
- componentStack?.trim(),
363
- componentStack && "```"
364
- ];
365
- return sections.filter(Boolean).join("\n");
366
- }
367
- function CrashErrorFallback({ error, componentStack, eventId, appVersion }) {
368
- const { background } = useAppearance();
369
- const errorMessage = error instanceof Error ? error.message : String(error);
370
- const errorStack = error instanceof Error ? error.stack : void 0;
371
- const errorName = getErrorName(error);
372
- const reportText = buildErrorReport({ error, componentStack, eventId, appVersion });
373
- const timestamp = (/* @__PURE__ */ new Date()).toISOString();
374
- return /* @__PURE__ */ jsxs(
375
- "div",
376
- {
377
- style: {
378
- position: "fixed",
379
- inset: 0,
380
- overflow: "auto",
381
- background: "var(--color-background)",
382
- display: "flex",
383
- alignItems: "center",
384
- justifyContent: "center",
385
- padding: 24
386
- },
387
- children: [
388
- background,
389
- /* @__PURE__ */ jsx("div", { style: { position: "relative", zIndex: 1, width: "100%", display: "flex", justifyContent: "center" }, children: /* @__PURE__ */ jsx(
390
- ErrorReportCard,
391
- {
392
- errorName,
393
- errorMessage,
394
- errorStack,
395
- componentStack,
396
- eventId,
397
- url: window.location.href,
398
- timestamp,
399
- reportText,
400
- appVersion
401
- }
402
- ) })
403
- ]
404
- }
405
- );
406
- }
407
- var AppErrorBoundary = class extends Component {
408
- state = { error: null, componentStack: "" };
409
- static getDerivedStateFromError(error) {
410
- return { error };
411
- }
412
- componentDidCatch(error, errorInfo) {
413
- this.setState({ componentStack: errorInfo.componentStack ?? "" });
414
- this.props.onError?.(error, errorInfo);
415
- }
416
- render() {
417
- if (this.state.error !== null) {
418
- const props = { error: this.state.error, componentStack: this.state.componentStack };
419
- return this.props.fallback ? this.props.fallback(props) : /* @__PURE__ */ jsx(CrashErrorFallback, { ...props, appVersion: this.props.appVersion });
420
- }
421
- return this.props.children;
422
- }
423
- };
424
-
425
- export { AppErrorBoundary, CrashErrorFallback, ErrorReportCard, buildErrorReport };
@@ -1,204 +0,0 @@
1
- import { topbarHeight, sidebarTransitionDuration, sidebarBottomSectionHeight } from './chunk-DT3QYZVU.js';
2
- import { jsx, jsxs } from 'react/jsx-runtime';
3
- import { useState } from 'react';
4
-
5
- var SubshellContainer = ({ children, className }) => {
6
- return /* @__PURE__ */ jsx(
7
- "div",
8
- {
9
- className,
10
- style: {
11
- display: "flex",
12
- height: "100%",
13
- width: "100%",
14
- position: "relative"
15
- },
16
- children
17
- }
18
- );
19
- };
20
- var SubshellRightSideContainer = ({ children, className }) => {
21
- return /* @__PURE__ */ jsx(
22
- "div",
23
- {
24
- className,
25
- style: {
26
- flex: 1,
27
- minWidth: 0,
28
- display: "flex",
29
- flexDirection: "column",
30
- overflow: "hidden"
31
- },
32
- children
33
- }
34
- );
35
- };
36
- var mdSpacing = 16;
37
- var SubshellContentContainer = ({ children, className }) => {
38
- return /* @__PURE__ */ jsx(
39
- "div",
40
- {
41
- className,
42
- style: {
43
- display: "flex",
44
- flexDirection: "column",
45
- flex: 1,
46
- overflowX: "clip",
47
- overflowY: "auto",
48
- minWidth: 0,
49
- minHeight: 0,
50
- padding: "var(--mantine-spacing-md)",
51
- paddingTop: `${topbarHeight + mdSpacing}px`
52
- },
53
- children
54
- }
55
- );
56
- };
57
- var SubshellSidebar = ({
58
- children,
59
- className,
60
- width,
61
- collapsible = true,
62
- defaultOpen = true
63
- }) => {
64
- const [isOpen, setIsOpen] = useState(defaultOpen);
65
- const effectiveWidth = collapsible && !isOpen ? 0 : width;
66
- if (!collapsible) {
67
- return /* @__PURE__ */ jsx(
68
- "aside",
69
- {
70
- className,
71
- style: {
72
- width: `${width}px`,
73
- flexShrink: 0,
74
- display: "flex",
75
- flexDirection: "column",
76
- backgroundColor: "color-mix(in srgb, var(--glass-background) 80%, transparent)",
77
- backdropFilter: "var(--glass-blur)",
78
- WebkitBackdropFilter: "var(--glass-blur)",
79
- borderRight: "1px solid var(--color-border)",
80
- boxShadow: "var(--card-shadow)",
81
- clipPath: "inset(-100px -100px -100px 0)",
82
- height: `calc(100vh - ${topbarHeight}px)`,
83
- minHeight: 0,
84
- marginTop: `${topbarHeight}px`,
85
- fontFamily: "var(--elevasis-font-family-subtitle)",
86
- overflow: "hidden"
87
- },
88
- children
89
- }
90
- );
91
- }
92
- return /* @__PURE__ */ jsxs(
93
- "div",
94
- {
95
- style: {
96
- position: "relative",
97
- flexShrink: 0,
98
- marginTop: `${topbarHeight}px`,
99
- height: `calc(100vh - ${topbarHeight}px)`,
100
- minHeight: 0
101
- },
102
- children: [
103
- /* @__PURE__ */ jsx(
104
- "aside",
105
- {
106
- className,
107
- style: {
108
- width: `${effectiveWidth}px`,
109
- flexShrink: 0,
110
- display: "flex",
111
- flexDirection: "column",
112
- backgroundColor: "color-mix(in srgb, var(--glass-background) 80%, transparent)",
113
- backdropFilter: "var(--glass-blur)",
114
- WebkitBackdropFilter: "var(--glass-blur)",
115
- borderRight: isOpen ? "1px solid var(--color-border)" : "none",
116
- boxShadow: isOpen ? "var(--card-shadow)" : "none",
117
- clipPath: isOpen ? "inset(-100px -100px -100px 0)" : "none",
118
- height: "100%",
119
- fontFamily: "var(--elevasis-font-family-subtitle)",
120
- overflow: "hidden",
121
- transition: `width ${sidebarTransitionDuration}ms var(--easing)`
122
- },
123
- children: /* @__PURE__ */ jsx(
124
- "div",
125
- {
126
- style: {
127
- width: `${width}px`,
128
- flexShrink: 0,
129
- height: "100%",
130
- minHeight: 0,
131
- display: "flex",
132
- flexDirection: "column",
133
- opacity: isOpen ? 1 : 0,
134
- transition: `opacity var(--duration-fast) var(--easing)`
135
- },
136
- children
137
- }
138
- )
139
- }
140
- ),
141
- /* @__PURE__ */ jsx(
142
- "button",
143
- {
144
- onClick: () => setIsOpen((prev) => !prev),
145
- style: {
146
- position: "absolute",
147
- right: 0,
148
- bottom: 0,
149
- transform: "translateX(100%)",
150
- width: "20px",
151
- // Match the live height of the outer Sidebar's bottom profile section.
152
- // SidebarBottomSection publishes --elevasis-sidebar-bottom-section-height
153
- // via ResizeObserver so this follows its actual height through
154
- // collapse/expand transitions. Falls back to the expanded-state
155
- // constant when rendered outside a Sidebar layout.
156
- height: `var(--elevasis-sidebar-bottom-section-height, ${sidebarBottomSectionHeight}px)`,
157
- display: "flex",
158
- alignItems: "center",
159
- justifyContent: "center",
160
- backgroundColor: "color-mix(in srgb, var(--glass-background) 80%, transparent)",
161
- backdropFilter: "var(--glass-blur)",
162
- WebkitBackdropFilter: "var(--glass-blur)",
163
- border: "1px solid var(--color-border)",
164
- borderLeft: "none",
165
- borderBottom: "none",
166
- borderRadius: "0 4px 0 0",
167
- cursor: "pointer",
168
- color: "var(--color-text-subtle)",
169
- padding: 0,
170
- zIndex: 10,
171
- transition: `color var(--duration-fast) var(--easing)`
172
- },
173
- "aria-label": isOpen ? "Collapse sidebar" : "Expand sidebar",
174
- children: /* @__PURE__ */ jsx(
175
- "svg",
176
- {
177
- width: "6",
178
- height: "10",
179
- viewBox: "0 0 8 12",
180
- fill: "none",
181
- style: {
182
- transform: isOpen ? void 0 : "rotate(180deg)",
183
- transition: `transform var(--duration-fast) var(--easing)`
184
- },
185
- children: /* @__PURE__ */ jsx(
186
- "path",
187
- {
188
- d: "M6 1L1 6L6 11",
189
- stroke: "currentColor",
190
- strokeWidth: "1.5",
191
- strokeLinecap: "round",
192
- strokeLinejoin: "round"
193
- }
194
- )
195
- }
196
- )
197
- }
198
- )
199
- ]
200
- }
201
- );
202
- };
203
-
204
- export { SubshellContainer, SubshellContentContainer, SubshellRightSideContainer, SubshellSidebar };
@@ -1,35 +0,0 @@
1
- import { Table, Group, Text, Button } from '@mantine/core';
2
- import { IconChevronUp, IconChevronDown, IconSelector, IconTrash } from '@tabler/icons-react';
3
- import { jsx, jsxs } from 'react/jsx-runtime';
4
-
5
- // src/components/table/SortableHeader.tsx
6
- function SortableHeader({ column, children, sort, onToggle, style, w }) {
7
- const isActive = sort.column === column;
8
- return /* @__PURE__ */ jsx(Table.Th, { style: { ...style, cursor: "pointer", userSelect: "none" }, w, onClick: () => onToggle(column), children: /* @__PURE__ */ jsxs(Group, { gap: 4, wrap: "nowrap", children: [
9
- children,
10
- isActive ? sort.direction === "asc" ? /* @__PURE__ */ jsx(IconChevronUp, { size: 14 }) : /* @__PURE__ */ jsx(IconChevronDown, { size: 14 }) : /* @__PURE__ */ jsx(IconSelector, { size: 14, style: { opacity: 0.3 } })
11
- ] }) });
12
- }
13
- function TableSelectionToolbar({ selectedCount, onDelete, isDeleting }) {
14
- if (selectedCount === 0) return null;
15
- return /* @__PURE__ */ jsxs(Group, { gap: "sm", children: [
16
- /* @__PURE__ */ jsxs(Text, { size: "sm", fw: 600, c: "blue", children: [
17
- selectedCount,
18
- " selected"
19
- ] }),
20
- onDelete && /* @__PURE__ */ jsx(
21
- Button,
22
- {
23
- size: "sm",
24
- color: "red",
25
- variant: "light",
26
- leftSection: /* @__PURE__ */ jsx(IconTrash, { size: 16 }),
27
- loading: isDeleting,
28
- onClick: onDelete,
29
- children: "Delete"
30
- }
31
- )
32
- ] });
33
- }
34
-
35
- export { SortableHeader, TableSelectionToolbar };