@datatechsolutions/ui 3.6.1 → 3.7.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.
- package/dist/astrlabe/graph-node.js +8 -5
- package/dist/astrlabe/graph-node.mjs +4 -1
- package/dist/astrlabe/index.js +115 -114
- package/dist/astrlabe/index.mjs +7 -6
- package/dist/astrlabe/workflow-canvas.js +7 -6
- package/dist/astrlabe/workflow-canvas.mjs +6 -5
- package/dist/{chunk-3Z66NXEB.mjs → chunk-2OPBUVTQ.mjs} +3 -3
- package/dist/{chunk-3Z66NXEB.mjs.map → chunk-2OPBUVTQ.mjs.map} +1 -1
- package/dist/{chunk-4JDJRGAB.mjs → chunk-34XRH2FX.mjs} +5 -4
- package/dist/chunk-34XRH2FX.mjs.map +1 -0
- package/dist/{chunk-KEWRLEYV.js → chunk-3JZGRXSG.js} +4 -4
- package/dist/{chunk-KEWRLEYV.js.map → chunk-3JZGRXSG.js.map} +1 -1
- package/dist/{chunk-JQYDJ75Q.mjs → chunk-3VYD7QL2.mjs} +3 -3
- package/dist/{chunk-JQYDJ75Q.mjs.map → chunk-3VYD7QL2.mjs.map} +1 -1
- package/dist/{chunk-MRRFDIUQ.mjs → chunk-4JRMXHPU.mjs} +5 -4
- package/dist/chunk-4JRMXHPU.mjs.map +1 -0
- package/dist/{chunk-4OFG6POC.mjs → chunk-5LCWQKGQ.mjs} +207 -1128
- package/dist/chunk-5LCWQKGQ.mjs.map +1 -0
- package/dist/{chunk-W5YCZOXO.js → chunk-7YK4WXHO.js} +79 -78
- package/dist/chunk-7YK4WXHO.js.map +1 -0
- package/dist/{chunk-YOJIPZ72.js → chunk-BBLBSDPN.js} +9 -9
- package/dist/{chunk-YOJIPZ72.js.map → chunk-BBLBSDPN.js.map} +1 -1
- package/dist/chunk-BHOT22QL.js +998 -0
- package/dist/chunk-BHOT22QL.js.map +1 -0
- package/dist/{chunk-MQNXKBFP.mjs → chunk-C4AJWDFB.mjs} +7 -6
- package/dist/chunk-C4AJWDFB.mjs.map +1 -0
- package/dist/{chunk-UOABOFKO.mjs → chunk-CBFK4W4C.mjs} +3 -3
- package/dist/{chunk-UOABOFKO.mjs.map → chunk-CBFK4W4C.mjs.map} +1 -1
- package/dist/{chunk-P5F257N3.js → chunk-CVZXZK2X.js} +35 -34
- package/dist/chunk-CVZXZK2X.js.map +1 -0
- package/dist/{chunk-IHHGT3LP.mjs → chunk-CYAAL3BY.mjs} +6 -5
- package/dist/chunk-CYAAL3BY.mjs.map +1 -0
- package/dist/{chunk-LVK7VXW7.js → chunk-DMPBNWJB.js} +37 -36
- package/dist/chunk-DMPBNWJB.js.map +1 -0
- package/dist/{chunk-ESLKQJQS.mjs → chunk-DXLATMGD.mjs} +6 -5
- package/dist/chunk-DXLATMGD.mjs.map +1 -0
- package/dist/{chunk-P4YYEM4B.js → chunk-EZQ2D47U.js} +7 -10
- package/dist/chunk-EZQ2D47U.js.map +1 -0
- package/dist/{chunk-6ZMTJSQF.js → chunk-FUHNEP3Y.js} +164 -163
- package/dist/chunk-FUHNEP3Y.js.map +1 -0
- package/dist/{chunk-YTE6WCBX.js → chunk-JHN2OUWG.js} +64 -63
- package/dist/chunk-JHN2OUWG.js.map +1 -0
- package/dist/{chunk-AMYQSPQC.js → chunk-JLECJI7S.js} +18 -17
- package/dist/chunk-JLECJI7S.js.map +1 -0
- package/dist/{chunk-DRORQGN2.js → chunk-KMNWPC64.js} +40 -39
- package/dist/chunk-KMNWPC64.js.map +1 -0
- package/dist/{chunk-VUAGVZJM.mjs → chunk-NJ6HH4QP.mjs} +6 -5
- package/dist/chunk-NJ6HH4QP.mjs.map +1 -0
- package/dist/{chunk-OZNTQROP.mjs → chunk-PLTLRL2V.mjs} +7 -10
- package/dist/chunk-PLTLRL2V.mjs.map +1 -0
- package/dist/{chunk-5ZAZ2C7A.mjs → chunk-PMMP76MV.mjs} +7 -6
- package/dist/chunk-PMMP76MV.mjs.map +1 -0
- package/dist/{chunk-NJZIE4EH.js → chunk-QF6WL7XU.js} +6 -5
- package/dist/chunk-QF6WL7XU.js.map +1 -0
- package/dist/{chunk-QRNFTG6A.js → chunk-QGLGQXJE.js} +4 -4
- package/dist/{chunk-QRNFTG6A.js.map → chunk-QGLGQXJE.js.map} +1 -1
- package/dist/{chunk-GCYYGSHU.js → chunk-R4EKPXX3.js} +564 -1525
- package/dist/chunk-R4EKPXX3.js.map +1 -0
- package/dist/{chunk-SQZGQOKU.js → chunk-RWYG7QHP.js} +119 -132
- package/dist/chunk-RWYG7QHP.js.map +1 -0
- package/dist/{chunk-WBEZATIB.js → chunk-RZ3NDH5S.js} +13 -13
- package/dist/{chunk-WBEZATIB.js.map → chunk-RZ3NDH5S.js.map} +1 -1
- package/dist/{chunk-HGWVJ3VB.mjs → chunk-SJVKID3E.mjs} +4 -3
- package/dist/chunk-SJVKID3E.mjs.map +1 -0
- package/dist/{chunk-7LILNZMR.mjs → chunk-TJEZL72T.mjs} +4 -3
- package/dist/chunk-TJEZL72T.mjs.map +1 -0
- package/dist/{chunk-MUOTTGCX.js → chunk-UDYEUTJC.js} +31 -30
- package/dist/chunk-UDYEUTJC.js.map +1 -0
- package/dist/{chunk-UGJZ3M4Q.js → chunk-VDLMWOQM.js} +55 -54
- package/dist/chunk-VDLMWOQM.js.map +1 -0
- package/dist/{chunk-KDFBN2L2.mjs → chunk-VZIUQE7B.mjs} +24 -37
- package/dist/chunk-VZIUQE7B.mjs.map +1 -0
- package/dist/chunk-WR55H7DH.mjs +934 -0
- package/dist/chunk-WR55H7DH.mjs.map +1 -0
- package/dist/{chunk-ZYVDDSAC.mjs → chunk-YRXDETBK.mjs} +6 -6
- package/dist/{chunk-ZYVDDSAC.mjs.map → chunk-YRXDETBK.mjs.map} +1 -1
- package/dist/{chunk-VDLAZR7S.mjs → chunk-ZYRL3WER.mjs} +5 -4
- package/dist/chunk-ZYRL3WER.mjs.map +1 -0
- package/dist/index.js +826 -825
- package/dist/index.mjs +4 -3
- package/dist/platform/admin/index.js +13 -12
- package/dist/platform/admin/index.mjs +7 -6
- package/dist/platform/agents-workspace.js +10 -9
- package/dist/platform/agents-workspace.mjs +9 -8
- package/dist/platform/app-shell.js +6 -5
- package/dist/platform/app-shell.mjs +5 -4
- package/dist/platform/auth/index.js +30 -29
- package/dist/platform/auth/index.mjs +7 -6
- package/dist/platform/billing/index.js +6 -5
- package/dist/platform/billing/index.mjs +5 -4
- package/dist/platform/impersonation/index.js +6 -5
- package/dist/platform/impersonation/index.mjs +5 -4
- package/dist/platform/index.d.mts +1 -1
- package/dist/platform/index.d.ts +1 -1
- package/dist/platform/index.js +87 -93
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/index.mjs +23 -29
- package/dist/platform/index.mjs.map +1 -1
- package/dist/platform/pages/index.d.mts +86 -1
- package/dist/platform/pages/index.d.ts +86 -1
- package/dist/platform/pages/index.js +868 -209
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +670 -12
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/settings/index.js +10 -9
- package/dist/platform/settings/index.mjs +9 -8
- package/dist/platform/workflow-canvas-shell.js +8 -7
- package/dist/platform/workflow-canvas-shell.mjs +7 -6
- package/package.json +1 -1
- package/dist/chunk-4JDJRGAB.mjs.map +0 -1
- package/dist/chunk-4OFG6POC.mjs.map +0 -1
- package/dist/chunk-5ZAZ2C7A.mjs.map +0 -1
- package/dist/chunk-6ZMTJSQF.js.map +0 -1
- package/dist/chunk-7LILNZMR.mjs.map +0 -1
- package/dist/chunk-AMYQSPQC.js.map +0 -1
- package/dist/chunk-DRORQGN2.js.map +0 -1
- package/dist/chunk-ESLKQJQS.mjs.map +0 -1
- package/dist/chunk-GCYYGSHU.js.map +0 -1
- package/dist/chunk-HGWVJ3VB.mjs.map +0 -1
- package/dist/chunk-IHHGT3LP.mjs.map +0 -1
- package/dist/chunk-KDFBN2L2.mjs.map +0 -1
- package/dist/chunk-LVK7VXW7.js.map +0 -1
- package/dist/chunk-MQNXKBFP.mjs.map +0 -1
- package/dist/chunk-MRRFDIUQ.mjs.map +0 -1
- package/dist/chunk-MUOTTGCX.js.map +0 -1
- package/dist/chunk-NJZIE4EH.js.map +0 -1
- package/dist/chunk-OZNTQROP.mjs.map +0 -1
- package/dist/chunk-P4YYEM4B.js.map +0 -1
- package/dist/chunk-P5F257N3.js.map +0 -1
- package/dist/chunk-SQZGQOKU.js.map +0 -1
- package/dist/chunk-UGJZ3M4Q.js.map +0 -1
- package/dist/chunk-VDLAZR7S.mjs.map +0 -1
- package/dist/chunk-VUAGVZJM.mjs.map +0 -1
- package/dist/chunk-W5YCZOXO.js.map +0 -1
- package/dist/chunk-YTE6WCBX.js.map +0 -1
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var chunkUZ3CMNUJ_js = require('./chunk-UZ3CMNUJ.js');
|
|
5
4
|
var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
|
|
6
|
-
var chunkS7KHTUHA_js = require('./chunk-S7KHTUHA.js');
|
|
7
5
|
var chunkSY4MUT5V_js = require('./chunk-SY4MUT5V.js');
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
6
|
+
var chunkBHOT22QL_js = require('./chunk-BHOT22QL.js');
|
|
7
|
+
var chunkUZ3CMNUJ_js = require('./chunk-UZ3CMNUJ.js');
|
|
8
|
+
var chunkS7KHTUHA_js = require('./chunk-S7KHTUHA.js');
|
|
9
|
+
var React9 = require('react');
|
|
11
10
|
var framerMotion = require('framer-motion');
|
|
12
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
13
11
|
var HeroIcons = require('@heroicons/react/24/outline');
|
|
12
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
14
13
|
var solid = require('@heroicons/react/20/solid');
|
|
14
|
+
var Headless3 = require('@headlessui/react');
|
|
15
15
|
var solid$1 = require('@heroicons/react/24/solid');
|
|
16
16
|
var Popover = require('@radix-ui/react-popover');
|
|
17
|
+
var clsx4 = require('clsx');
|
|
17
18
|
var reactDom = require('react-dom');
|
|
18
19
|
var dateFns = require('date-fns');
|
|
19
20
|
var locale = require('date-fns/locale');
|
|
@@ -45,803 +46,14 @@ function _interopNamespace(e) {
|
|
|
45
46
|
return Object.freeze(n);
|
|
46
47
|
}
|
|
47
48
|
|
|
48
|
-
var
|
|
49
|
-
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
50
|
-
var React12__namespace = /*#__PURE__*/_interopNamespace(React12);
|
|
49
|
+
var React9__namespace = /*#__PURE__*/_interopNamespace(React9);
|
|
51
50
|
var HeroIcons__namespace = /*#__PURE__*/_interopNamespace(HeroIcons);
|
|
51
|
+
var Headless3__namespace = /*#__PURE__*/_interopNamespace(Headless3);
|
|
52
52
|
var Popover__namespace = /*#__PURE__*/_interopNamespace(Popover);
|
|
53
|
+
var clsx4__default = /*#__PURE__*/_interopDefault(clsx4);
|
|
53
54
|
var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
|
|
54
55
|
var ProgressPrimitive__namespace = /*#__PURE__*/_interopNamespace(ProgressPrimitive);
|
|
55
56
|
|
|
56
|
-
var Link = React12.forwardRef(function Link2(props, ref) {
|
|
57
|
-
const RouterLink = chunkS7KHTUHA_js.useLink();
|
|
58
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Headless5__namespace.DataInteractive, { children: /* @__PURE__ */ jsxRuntime.jsx(RouterLink, { ...props, ref }) });
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
// src/lib/motion-tokens.ts
|
|
62
|
-
var duration = {
|
|
63
|
-
/** 90ms — micro feedback: toggle thumb, hover tint, focus ring */
|
|
64
|
-
xs: 90,
|
|
65
|
-
/** 150ms — button press, popover open, chip toggle */
|
|
66
|
-
sm: 150,
|
|
67
|
-
/** 240ms — card hover, drawer slide, tab switch */
|
|
68
|
-
md: 240,
|
|
69
|
-
/** 360ms — page transitions, modal enter/exit */
|
|
70
|
-
lg: 360
|
|
71
|
-
};
|
|
72
|
-
var durationSeconds = {
|
|
73
|
-
xs: duration.xs / 1e3,
|
|
74
|
-
sm: duration.sm / 1e3,
|
|
75
|
-
md: duration.md / 1e3,
|
|
76
|
-
lg: duration.lg / 1e3
|
|
77
|
-
};
|
|
78
|
-
var ease = {
|
|
79
|
-
/** Default product curve — symmetric, balanced */
|
|
80
|
-
standard: [0.4, 0, 0.2, 1],
|
|
81
|
-
/** Entering elements — slow start, fast finish */
|
|
82
|
-
emphasized: [0.2, 0, 0, 1],
|
|
83
|
-
/** Arrivals — fast in, slow settle */
|
|
84
|
-
decelerate: [0, 0, 0.2, 1],
|
|
85
|
-
/** Departures — fast out, sharp end */
|
|
86
|
-
accelerate: [0.4, 0, 1, 1],
|
|
87
|
-
/** iOS HIG-canonical curve — slightly slower decay than `standard` */
|
|
88
|
-
ios: [0.25, 0.46, 0.45, 0.94]
|
|
89
|
-
};
|
|
90
|
-
var easeCss = {
|
|
91
|
-
standard: `cubic-bezier(${ease.standard.join(", ")})`,
|
|
92
|
-
emphasized: `cubic-bezier(${ease.emphasized.join(", ")})`,
|
|
93
|
-
decelerate: `cubic-bezier(${ease.decelerate.join(", ")})`,
|
|
94
|
-
accelerate: `cubic-bezier(${ease.accelerate.join(", ")})`,
|
|
95
|
-
ios: `cubic-bezier(${ease.ios.join(", ")})`
|
|
96
|
-
};
|
|
97
|
-
var spring = {
|
|
98
|
-
/** Snap — fast, no overshoot. Buttons, micro-interactions. */
|
|
99
|
-
snap: { type: "spring", stiffness: 500, damping: 38 },
|
|
100
|
-
/** Smooth — balanced, no overshoot. Default for cards/transitions. */
|
|
101
|
-
smooth: { type: "spring", stiffness: 300, damping: 30 },
|
|
102
|
-
/** Bounce — playful overshoot. Icons, success confirmations. */
|
|
103
|
-
bounce: { type: "spring", stiffness: 400, damping: 22 },
|
|
104
|
-
/** Gentle — soft and slow. Modals, large surface entry. */
|
|
105
|
-
gentle: { type: "spring", stiffness: 200, damping: 22 },
|
|
106
|
-
/** Sheet — iOS sheet presentation (with mass). Drawers. */
|
|
107
|
-
sheet: { type: "spring", stiffness: 350, damping: 30, mass: 0.8 }
|
|
108
|
-
};
|
|
109
|
-
var motionTokens = {
|
|
110
|
-
duration,
|
|
111
|
-
durationSeconds,
|
|
112
|
-
ease,
|
|
113
|
-
easeCss,
|
|
114
|
-
spring
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
// src/lib/animations.ts
|
|
118
|
-
function prefersReducedMotion() {
|
|
119
|
-
if (typeof window === "undefined") return false;
|
|
120
|
-
return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
121
|
-
}
|
|
122
|
-
function getTransition(transition) {
|
|
123
|
-
if (prefersReducedMotion()) {
|
|
124
|
-
return { duration: 0 };
|
|
125
|
-
}
|
|
126
|
-
return transition;
|
|
127
|
-
}
|
|
128
|
-
function getVariants(variants) {
|
|
129
|
-
if (prefersReducedMotion()) {
|
|
130
|
-
const reducedVariants = {};
|
|
131
|
-
for (const key in variants) {
|
|
132
|
-
reducedVariants[key] = {
|
|
133
|
-
...variants[key],
|
|
134
|
-
transition: { duration: 0 }
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
return reducedVariants;
|
|
138
|
-
}
|
|
139
|
-
return variants;
|
|
140
|
-
}
|
|
141
|
-
var springPresets = {
|
|
142
|
-
default: spring.smooth,
|
|
143
|
-
bouncy: spring.bounce,
|
|
144
|
-
stiff: spring.snap,
|
|
145
|
-
gentle: spring.gentle,
|
|
146
|
-
sheet: spring.sheet,
|
|
147
|
-
/** Quick spring - very fast, good for micro-interactions */
|
|
148
|
-
quick: { type: "spring", stiffness: 600, damping: 40 }
|
|
149
|
-
};
|
|
150
|
-
var springPresetsReduced = {
|
|
151
|
-
default: prefersReducedMotion() ? { duration: 0 } : springPresets.default,
|
|
152
|
-
bouncy: prefersReducedMotion() ? { duration: 0 } : springPresets.bouncy,
|
|
153
|
-
stiff: prefersReducedMotion() ? { duration: 0 } : springPresets.stiff,
|
|
154
|
-
gentle: prefersReducedMotion() ? { duration: 0 } : springPresets.gentle,
|
|
155
|
-
sheet: prefersReducedMotion() ? { duration: 0 } : springPresets.sheet,
|
|
156
|
-
quick: prefersReducedMotion() ? { duration: 0 } : springPresets.quick
|
|
157
|
-
};
|
|
158
|
-
var buttonPress = {
|
|
159
|
-
idle: { scale: 1 },
|
|
160
|
-
pressed: { scale: 0.97 },
|
|
161
|
-
hover: { scale: 1.02 }
|
|
162
|
-
};
|
|
163
|
-
var buttonTap = {
|
|
164
|
-
scale: 0.97,
|
|
165
|
-
transition: springPresets.stiff
|
|
166
|
-
};
|
|
167
|
-
var buttonPressReduced = {
|
|
168
|
-
idle: { opacity: 1 },
|
|
169
|
-
pressed: { opacity: 0.7 },
|
|
170
|
-
hover: { opacity: 0.9 }
|
|
171
|
-
};
|
|
172
|
-
var cardHover = {
|
|
173
|
-
idle: {
|
|
174
|
-
y: 0,
|
|
175
|
-
boxShadow: "0 4px 6px -1px rgb(0 0 0 / 0.1)"
|
|
176
|
-
},
|
|
177
|
-
hover: {
|
|
178
|
-
y: -4,
|
|
179
|
-
boxShadow: "0 20px 25px -5px rgb(0 0 0 / 0.1)"
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
var cardPress = {
|
|
183
|
-
idle: { scale: 1 },
|
|
184
|
-
pressed: { scale: 0.98 }
|
|
185
|
-
};
|
|
186
|
-
var cardHoverReduced = {
|
|
187
|
-
idle: { opacity: 1 },
|
|
188
|
-
hover: { opacity: 0.95 }
|
|
189
|
-
};
|
|
190
|
-
var slideUp = {
|
|
191
|
-
hidden: { y: "100%", opacity: 0 },
|
|
192
|
-
visible: { y: 0, opacity: 1 },
|
|
193
|
-
exit: { y: "100%", opacity: 0 }
|
|
194
|
-
};
|
|
195
|
-
var slideRight = {
|
|
196
|
-
hidden: { x: "100%", opacity: 0 },
|
|
197
|
-
visible: { x: 0, opacity: 1 },
|
|
198
|
-
exit: { x: "100%", opacity: 0 }
|
|
199
|
-
};
|
|
200
|
-
var slideDown = {
|
|
201
|
-
hidden: { y: "-100%", opacity: 0 },
|
|
202
|
-
visible: { y: 0, opacity: 1 },
|
|
203
|
-
exit: { y: "-100%", opacity: 0 }
|
|
204
|
-
};
|
|
205
|
-
var fadeScale = {
|
|
206
|
-
hidden: { opacity: 0, scale: 0.95 },
|
|
207
|
-
visible: { opacity: 1, scale: 1 },
|
|
208
|
-
exit: { opacity: 0, scale: 0.95 }
|
|
209
|
-
};
|
|
210
|
-
var fadeOnly = {
|
|
211
|
-
hidden: { opacity: 0 },
|
|
212
|
-
visible: { opacity: 1 },
|
|
213
|
-
exit: { opacity: 0 }
|
|
214
|
-
};
|
|
215
|
-
var notificationBanner = {
|
|
216
|
-
hidden: { y: -100, opacity: 0, scale: 0.9 },
|
|
217
|
-
visible: {
|
|
218
|
-
y: 0,
|
|
219
|
-
opacity: 1,
|
|
220
|
-
scale: 1,
|
|
221
|
-
transition: springPresets.bouncy
|
|
222
|
-
},
|
|
223
|
-
exit: {
|
|
224
|
-
y: -100,
|
|
225
|
-
opacity: 0,
|
|
226
|
-
scale: 0.9,
|
|
227
|
-
transition: { duration: 0.2 }
|
|
228
|
-
}
|
|
229
|
-
};
|
|
230
|
-
var notificationBannerReduced = {
|
|
231
|
-
hidden: { opacity: 0 },
|
|
232
|
-
visible: { opacity: 1, transition: { duration: 0.15 } },
|
|
233
|
-
exit: { opacity: 0, transition: { duration: 0.1 } }
|
|
234
|
-
};
|
|
235
|
-
var listItem = {
|
|
236
|
-
hidden: { opacity: 0, x: -20 },
|
|
237
|
-
visible: (i) => ({
|
|
238
|
-
opacity: 1,
|
|
239
|
-
x: 0,
|
|
240
|
-
transition: {
|
|
241
|
-
delay: i * 0.05,
|
|
242
|
-
...springPresets.default
|
|
243
|
-
}
|
|
244
|
-
})
|
|
245
|
-
};
|
|
246
|
-
var staggerContainer = {
|
|
247
|
-
hidden: { opacity: 0 },
|
|
248
|
-
visible: {
|
|
249
|
-
opacity: 1,
|
|
250
|
-
transition: {
|
|
251
|
-
staggerChildren: 0.05
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
};
|
|
255
|
-
var listItemReduced = {
|
|
256
|
-
hidden: { opacity: 0 },
|
|
257
|
-
visible: { opacity: 1, transition: { duration: 0.15 } }
|
|
258
|
-
};
|
|
259
|
-
var swipeActionThreshold = 80;
|
|
260
|
-
var swipeConstraints = {
|
|
261
|
-
left: -120,
|
|
262
|
-
right: 0
|
|
263
|
-
};
|
|
264
|
-
var pageControlDot = {
|
|
265
|
-
inactive: { width: 8, backgroundColor: "rgb(156 163 175)" },
|
|
266
|
-
active: { width: 24, backgroundColor: "rgb(59 130 246)" }
|
|
267
|
-
};
|
|
268
|
-
var iosColors = {
|
|
269
|
-
// Primary colors
|
|
270
|
-
blue: "#007AFF",
|
|
271
|
-
green: "#34C759",
|
|
272
|
-
red: "#FF3B30",
|
|
273
|
-
orange: "#FF9500",
|
|
274
|
-
yellow: "#FFCC00",
|
|
275
|
-
purple: "#AF52DE",
|
|
276
|
-
pink: "#FF2D55",
|
|
277
|
-
teal: "#5AC8FA",
|
|
278
|
-
indigo: "#5856D6",
|
|
279
|
-
mint: "#00C7BE",
|
|
280
|
-
cyan: "#32ADE6",
|
|
281
|
-
brown: "#A2845E",
|
|
282
|
-
// Grays
|
|
283
|
-
gray: "#8E8E93",
|
|
284
|
-
gray2: "#AEAEB2",
|
|
285
|
-
gray3: "#C7C7CC",
|
|
286
|
-
gray4: "#D1D1D6",
|
|
287
|
-
gray5: "#E5E5EA",
|
|
288
|
-
gray6: "#F2F2F7",
|
|
289
|
-
// Dark mode variants
|
|
290
|
-
dark: {
|
|
291
|
-
blue: "#0A84FF",
|
|
292
|
-
green: "#30D158",
|
|
293
|
-
red: "#FF453A",
|
|
294
|
-
orange: "#FF9F0A",
|
|
295
|
-
yellow: "#FFD60A",
|
|
296
|
-
purple: "#BF5AF2",
|
|
297
|
-
pink: "#FF375F",
|
|
298
|
-
teal: "#64D2FF",
|
|
299
|
-
indigo: "#5E5CE6",
|
|
300
|
-
mint: "#66D4CF",
|
|
301
|
-
cyan: "#5AC8FA",
|
|
302
|
-
brown: "#AC8E68"
|
|
303
|
-
}
|
|
304
|
-
};
|
|
305
|
-
var durations = {
|
|
306
|
-
instant: 0,
|
|
307
|
-
fast: duration.sm / 1e3,
|
|
308
|
-
normal: duration.md / 1e3,
|
|
309
|
-
slow: duration.lg / 1e3,
|
|
310
|
-
verySlow: 0.5
|
|
311
|
-
};
|
|
312
|
-
var durationsReduced = {
|
|
313
|
-
instant: 0,
|
|
314
|
-
fast: prefersReducedMotion() ? 0 : 0.15,
|
|
315
|
-
normal: prefersReducedMotion() ? 0 : 0.25,
|
|
316
|
-
slow: prefersReducedMotion() ? 0 : 0.35,
|
|
317
|
-
verySlow: prefersReducedMotion() ? 0 : 0.5
|
|
318
|
-
};
|
|
319
|
-
var easings = {
|
|
320
|
-
default: [0.25, 0.1, 0.25, 1],
|
|
321
|
-
out: ease.decelerate,
|
|
322
|
-
in: ease.accelerate,
|
|
323
|
-
inOut: ease.standard,
|
|
324
|
-
ios: ease.ios
|
|
325
|
-
};
|
|
326
|
-
function createMotionProps(animatedProps, reducedProps = {}) {
|
|
327
|
-
if (prefersReducedMotion()) {
|
|
328
|
-
return { ...animatedProps, ...reducedProps, transition: { duration: 0 } };
|
|
329
|
-
}
|
|
330
|
-
return animatedProps;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
// src/components/button-styles.ts
|
|
334
|
-
var iosColors2 = {
|
|
335
|
-
// Glassy iOS blue — neutral glass at rest, fills blue on hover
|
|
336
|
-
"ios-glass-blue": [
|
|
337
|
-
"liquid-button-primary text-slate-900 [--btn-bg:transparent] [--btn-border:transparent] [--btn-hover-overlay:transparent]",
|
|
338
|
-
"dark:text-white dark:[--btn-bg:transparent] dark:[--btn-border:transparent]",
|
|
339
|
-
"[--btn-icon:var(--color-slate-600)] dark:[--btn-icon:var(--color-white)]/70"
|
|
340
|
-
],
|
|
341
|
-
// Glassy iOS red — neutral glass at rest, fills red on hover
|
|
342
|
-
"ios-glass-red": [
|
|
343
|
-
"liquid-button liquid-button-red text-slate-900 [--btn-bg:transparent] [--btn-border:transparent] [--btn-hover-overlay:transparent]",
|
|
344
|
-
"dark:text-white dark:[--btn-bg:transparent] dark:[--btn-border:transparent]",
|
|
345
|
-
"[--btn-icon:var(--color-slate-600)] dark:[--btn-icon:var(--color-white)]/70"
|
|
346
|
-
],
|
|
347
|
-
// Glassy iOS green — neutral glass at rest, fills green on hover
|
|
348
|
-
"ios-glass-green": [
|
|
349
|
-
"liquid-button liquid-button-green text-slate-900 [--btn-bg:transparent] [--btn-border:transparent] [--btn-hover-overlay:transparent]",
|
|
350
|
-
"dark:text-white dark:[--btn-bg:transparent] dark:[--btn-border:transparent]",
|
|
351
|
-
"[--btn-icon:var(--color-slate-600)] dark:[--btn-icon:var(--color-white)]/70"
|
|
352
|
-
],
|
|
353
|
-
// Primary iOS blue
|
|
354
|
-
"ios-blue": [
|
|
355
|
-
"text-white [--btn-bg:#007AFF] [--btn-border:#0066DD] [--btn-hover-overlay:var(--color-white)]/10",
|
|
356
|
-
"dark:[--btn-bg:#0A84FF] dark:[--btn-border:#007AFF]",
|
|
357
|
-
"[--btn-icon:var(--color-white)]/80"
|
|
358
|
-
],
|
|
359
|
-
// Destructive iOS red
|
|
360
|
-
"ios-red": [
|
|
361
|
-
"text-white [--btn-bg:#FF3B30] [--btn-border:#E6352B] [--btn-hover-overlay:var(--color-white)]/10",
|
|
362
|
-
"dark:[--btn-bg:#FF453A] dark:[--btn-border:#FF3B30]",
|
|
363
|
-
"[--btn-icon:var(--color-white)]/80"
|
|
364
|
-
],
|
|
365
|
-
// iOS green (success/confirm)
|
|
366
|
-
"ios-green": [
|
|
367
|
-
"text-white [--btn-bg:#34C759] [--btn-border:#2DB350] [--btn-hover-overlay:var(--color-white)]/10",
|
|
368
|
-
"dark:[--btn-bg:#30D158] dark:[--btn-border:#34C759]",
|
|
369
|
-
"[--btn-icon:var(--color-white)]/80"
|
|
370
|
-
],
|
|
371
|
-
// iOS orange (warning)
|
|
372
|
-
"ios-orange": [
|
|
373
|
-
"text-white [--btn-bg:#FF9500] [--btn-border:#E68600] [--btn-hover-overlay:var(--color-white)]/10",
|
|
374
|
-
"dark:[--btn-bg:#FF9F0A] dark:[--btn-border:#FF9500]",
|
|
375
|
-
"[--btn-icon:var(--color-white)]/80"
|
|
376
|
-
],
|
|
377
|
-
// iOS purple
|
|
378
|
-
"ios-purple": [
|
|
379
|
-
"text-white [--btn-bg:#AF52DE] [--btn-border:#9B48C7] [--btn-hover-overlay:var(--color-white)]/10",
|
|
380
|
-
"dark:[--btn-bg:#BF5AF2] dark:[--btn-border:#AF52DE]",
|
|
381
|
-
"[--btn-icon:var(--color-white)]/80"
|
|
382
|
-
],
|
|
383
|
-
// iOS teal
|
|
384
|
-
"ios-teal": [
|
|
385
|
-
"text-white [--btn-bg:#5AC8FA] [--btn-border:#4AB8E8] [--btn-hover-overlay:var(--color-white)]/10",
|
|
386
|
-
"dark:[--btn-bg:#64D2FF] dark:[--btn-border:#5AC8FA]",
|
|
387
|
-
"[--btn-icon:var(--color-white)]/80"
|
|
388
|
-
]
|
|
389
|
-
};
|
|
390
|
-
var sizeStyles = {
|
|
391
|
-
xs: "px-2 py-1 text-xs rounded-md",
|
|
392
|
-
sm: "px-3 py-1.5 text-sm rounded-lg",
|
|
393
|
-
md: "",
|
|
394
|
-
// Default size from base styles
|
|
395
|
-
lg: "px-5 py-3 text-base rounded-xl",
|
|
396
|
-
xl: "px-6 py-4 text-lg rounded-xl"
|
|
397
|
-
};
|
|
398
|
-
var pillStyles = "rounded-full";
|
|
399
|
-
var styles = {
|
|
400
|
-
base: [
|
|
401
|
-
// Base
|
|
402
|
-
"relative isolate inline-flex items-center justify-center gap-x-2 rounded-lg border text-base/6 font-semibold",
|
|
403
|
-
// Sizing
|
|
404
|
-
"px-[calc(--spacing(3.5)-1px)] py-[calc(--spacing(2.5)-1px)] sm:px-[calc(--spacing(3)-1px)] sm:py-[calc(--spacing(1.5)-1px)] sm:text-sm/6",
|
|
405
|
-
// Focus
|
|
406
|
-
"focus:not-data-focus:outline-hidden data-focus:outline-2 data-focus:outline-offset-2 data-focus:outline-blue-500",
|
|
407
|
-
// Disabled
|
|
408
|
-
"data-disabled:opacity-50",
|
|
409
|
-
// Icon
|
|
410
|
-
"*:data-[slot=icon]:-mx-0.5 *:data-[slot=icon]:my-0.5 *:data-[slot=icon]:size-5 *:data-[slot=icon]:shrink-0 *:data-[slot=icon]:self-center *:data-[slot=icon]:text-(--btn-icon) sm:*:data-[slot=icon]:my-1 sm:*:data-[slot=icon]:size-4 forced-colors:[--btn-icon:ButtonText] forced-colors:data-hover:[--btn-icon:ButtonText]"
|
|
411
|
-
],
|
|
412
|
-
solid: [
|
|
413
|
-
// Optical border, implemented as the button background to avoid corner artifacts
|
|
414
|
-
"border-transparent bg-(--btn-border)",
|
|
415
|
-
// Dark mode: border is rendered on `after` so background is set to button background
|
|
416
|
-
"dark:bg-(--btn-bg)",
|
|
417
|
-
// Button background, implemented as foreground layer to stack on top of pseudo-border layer
|
|
418
|
-
"before:absolute before:inset-0 before:-z-10 before:rounded-[calc(var(--radius-lg)-1px)] before:bg-(--btn-bg)",
|
|
419
|
-
// Drop shadow, applied to the inset `before` layer so it blends with the border
|
|
420
|
-
"before:shadow-xs",
|
|
421
|
-
// Background color is moved to control and shadow is removed in dark mode so hide `before` pseudo
|
|
422
|
-
"dark:before:hidden",
|
|
423
|
-
// Dark mode: Subtle white outline is applied using a border
|
|
424
|
-
"dark:border-white/5",
|
|
425
|
-
// Shim/overlay, inset to match button foreground and used for hover state + highlight shadow
|
|
426
|
-
"after:absolute after:inset-0 after:-z-10 after:rounded-[calc(var(--radius-lg)-1px)]",
|
|
427
|
-
// Inner highlight shadow
|
|
428
|
-
"after:shadow-[inset_0_1px_--theme(--color-white/15%)]",
|
|
429
|
-
// White overlay on hover
|
|
430
|
-
"data-active:after:bg-(--btn-hover-overlay) data-hover:after:bg-(--btn-hover-overlay)",
|
|
431
|
-
// Dark mode: `after` layer expands to cover entire button
|
|
432
|
-
"dark:after:-inset-px dark:after:rounded-lg",
|
|
433
|
-
// Disabled
|
|
434
|
-
"data-disabled:before:shadow-none data-disabled:after:shadow-none"
|
|
435
|
-
],
|
|
436
|
-
outline: [
|
|
437
|
-
// Liquid glass secondary button
|
|
438
|
-
"liquid-button text-slate-900 !border-white/55",
|
|
439
|
-
// Dark mode
|
|
440
|
-
"dark:text-white dark:!border-white/18",
|
|
441
|
-
// Icon
|
|
442
|
-
"[--btn-icon:var(--color-zinc-500)] data-active:[--btn-icon:var(--color-zinc-700)] data-hover:[--btn-icon:var(--color-zinc-700)] dark:data-active:[--btn-icon:var(--color-zinc-400)] dark:data-hover:[--btn-icon:var(--color-zinc-400)]"
|
|
443
|
-
],
|
|
444
|
-
plain: [
|
|
445
|
-
// Base
|
|
446
|
-
"border-transparent text-zinc-950 data-active:bg-zinc-950/5 data-hover:bg-zinc-950/5",
|
|
447
|
-
// Dark mode
|
|
448
|
-
"dark:text-white dark:data-active:bg-white/10 dark:data-hover:bg-white/10",
|
|
449
|
-
// Icon
|
|
450
|
-
"[--btn-icon:var(--color-zinc-500)] data-active:[--btn-icon:var(--color-zinc-700)] data-hover:[--btn-icon:var(--color-zinc-700)] dark:[--btn-icon:var(--color-zinc-500)] dark:data-active:[--btn-icon:var(--color-zinc-400)] dark:data-hover:[--btn-icon:var(--color-zinc-400)]"
|
|
451
|
-
],
|
|
452
|
-
gradient: [
|
|
453
|
-
// Same crystal-illuminated mechanic as ios-glass-blue/red/green:
|
|
454
|
-
// neutral glass at rest, fills with translucent indigo→purple
|
|
455
|
-
// gradient on hover. The actual rest/hover styling — including
|
|
456
|
-
// the text-color flip from slate-900 → white — lives in the
|
|
457
|
-
// `.liquid-button-gradient` CSS class in liquid-glass.css so the
|
|
458
|
-
// whole transition is keyed off `:hover` (works without JS).
|
|
459
|
-
"liquid-button-gradient border-transparent",
|
|
460
|
-
// Disabled
|
|
461
|
-
"data-disabled:opacity-50 data-disabled:saturate-50",
|
|
462
|
-
// Icon tint flips with text via inherit (currentColor)
|
|
463
|
-
"[--btn-icon:currentColor]"
|
|
464
|
-
],
|
|
465
|
-
colors: {
|
|
466
|
-
"dark/zinc": [
|
|
467
|
-
"text-white [--btn-bg:var(--color-zinc-900)] [--btn-border:var(--color-zinc-950)]/90 [--btn-hover-overlay:var(--color-white)]/10",
|
|
468
|
-
"dark:text-white dark:[--btn-bg:var(--color-zinc-600)] dark:[--btn-hover-overlay:var(--color-white)]/5",
|
|
469
|
-
"[--btn-icon:var(--color-zinc-400)] data-active:[--btn-icon:var(--color-zinc-300)] data-hover:[--btn-icon:var(--color-zinc-300)]"
|
|
470
|
-
],
|
|
471
|
-
light: [
|
|
472
|
-
"text-zinc-950 [--btn-bg:white] [--btn-border:var(--color-zinc-950)]/10 [--btn-hover-overlay:var(--color-zinc-950)]/2.5 data-active:[--btn-border:var(--color-zinc-950)]/15 data-hover:[--btn-border:var(--color-zinc-950)]/15",
|
|
473
|
-
"dark:text-white dark:[--btn-hover-overlay:var(--color-white)]/5 dark:[--btn-bg:var(--color-zinc-800)]",
|
|
474
|
-
"[--btn-icon:var(--color-zinc-500)] data-active:[--btn-icon:var(--color-zinc-700)] data-hover:[--btn-icon:var(--color-zinc-700)] dark:[--btn-icon:var(--color-zinc-500)] dark:data-active:[--btn-icon:var(--color-zinc-400)] dark:data-hover:[--btn-icon:var(--color-zinc-400)]"
|
|
475
|
-
],
|
|
476
|
-
"dark/white": [
|
|
477
|
-
"text-white [--btn-bg:var(--color-zinc-900)] [--btn-border:var(--color-zinc-950)]/90 [--btn-hover-overlay:var(--color-white)]/10",
|
|
478
|
-
"dark:text-zinc-950 dark:[--btn-bg:white] dark:[--btn-hover-overlay:var(--color-zinc-950)]/5",
|
|
479
|
-
"[--btn-icon:var(--color-zinc-400)] data-active:[--btn-icon:var(--color-zinc-300)] data-hover:[--btn-icon:var(--color-zinc-300)] dark:[--btn-icon:var(--color-zinc-500)] dark:data-active:[--btn-icon:var(--color-zinc-400)] dark:data-hover:[--btn-icon:var(--color-zinc-400)]"
|
|
480
|
-
],
|
|
481
|
-
dark: [
|
|
482
|
-
"text-white [--btn-bg:var(--color-zinc-900)] [--btn-border:var(--color-zinc-950)]/90 [--btn-hover-overlay:var(--color-white)]/10",
|
|
483
|
-
"dark:[--btn-hover-overlay:var(--color-white)]/5 dark:[--btn-bg:var(--color-zinc-800)]",
|
|
484
|
-
"[--btn-icon:var(--color-zinc-400)] data-active:[--btn-icon:var(--color-zinc-300)] data-hover:[--btn-icon:var(--color-zinc-300)]"
|
|
485
|
-
],
|
|
486
|
-
white: [
|
|
487
|
-
"text-zinc-950 [--btn-bg:white] [--btn-border:var(--color-zinc-950)]/10 [--btn-hover-overlay:var(--color-zinc-950)]/2.5 data-active:[--btn-border:var(--color-zinc-950)]/15 data-hover:[--btn-border:var(--color-zinc-950)]/15",
|
|
488
|
-
"dark:[--btn-hover-overlay:var(--color-zinc-950)]/5",
|
|
489
|
-
"[--btn-icon:var(--color-zinc-400)] data-active:[--btn-icon:var(--color-zinc-500)] data-hover:[--btn-icon:var(--color-zinc-500)]"
|
|
490
|
-
],
|
|
491
|
-
zinc: [
|
|
492
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-zinc-600)] [--btn-border:var(--color-zinc-700)]/90",
|
|
493
|
-
"dark:[--btn-hover-overlay:var(--color-white)]/5",
|
|
494
|
-
"[--btn-icon:var(--color-zinc-400)] data-active:[--btn-icon:var(--color-zinc-300)] data-hover:[--btn-icon:var(--color-zinc-300)]"
|
|
495
|
-
],
|
|
496
|
-
indigo: [
|
|
497
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-indigo-500)] [--btn-border:var(--color-indigo-600)]/90",
|
|
498
|
-
"[--btn-icon:var(--color-indigo-300)] data-active:[--btn-icon:var(--color-indigo-200)] data-hover:[--btn-icon:var(--color-indigo-200)]"
|
|
499
|
-
],
|
|
500
|
-
cyan: [
|
|
501
|
-
"text-cyan-950 [--btn-bg:var(--color-cyan-300)] [--btn-border:var(--color-cyan-400)]/80 [--btn-hover-overlay:var(--color-white)]/25",
|
|
502
|
-
"[--btn-icon:var(--color-cyan-500)]"
|
|
503
|
-
],
|
|
504
|
-
red: [
|
|
505
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-red-600)] [--btn-border:var(--color-red-700)]/90",
|
|
506
|
-
"[--btn-icon:var(--color-red-300)] data-active:[--btn-icon:var(--color-red-200)] data-hover:[--btn-icon:var(--color-red-200)]"
|
|
507
|
-
],
|
|
508
|
-
orange: [
|
|
509
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-orange-500)] [--btn-border:var(--color-orange-600)]/90",
|
|
510
|
-
"[--btn-icon:var(--color-orange-300)] data-active:[--btn-icon:var(--color-orange-200)] data-hover:[--btn-icon:var(--color-orange-200)]"
|
|
511
|
-
],
|
|
512
|
-
amber: [
|
|
513
|
-
"text-amber-950 [--btn-hover-overlay:var(--color-white)]/25 [--btn-bg:var(--color-amber-400)] [--btn-border:var(--color-amber-500)]/80",
|
|
514
|
-
"[--btn-icon:var(--color-amber-600)]"
|
|
515
|
-
],
|
|
516
|
-
yellow: [
|
|
517
|
-
"text-yellow-950 [--btn-hover-overlay:var(--color-white)]/25 [--btn-bg:var(--color-yellow-300)] [--btn-border:var(--color-yellow-400)]/80",
|
|
518
|
-
"[--btn-icon:var(--color-yellow-600)] data-active:[--btn-icon:var(--color-yellow-700)] data-hover:[--btn-icon:var(--color-yellow-700)]"
|
|
519
|
-
],
|
|
520
|
-
lime: [
|
|
521
|
-
"text-lime-950 [--btn-hover-overlay:var(--color-white)]/25 [--btn-bg:var(--color-lime-300)] [--btn-border:var(--color-lime-400)]/80",
|
|
522
|
-
"[--btn-icon:var(--color-lime-600)] data-active:[--btn-icon:var(--color-lime-700)] data-hover:[--btn-icon:var(--color-lime-700)]"
|
|
523
|
-
],
|
|
524
|
-
green: [
|
|
525
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-green-600)] [--btn-border:var(--color-green-700)]/90",
|
|
526
|
-
"[--btn-icon:var(--color-white)]/60 data-active:[--btn-icon:var(--color-white)]/80 data-hover:[--btn-icon:var(--color-white)]/80"
|
|
527
|
-
],
|
|
528
|
-
emerald: [
|
|
529
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-emerald-600)] [--btn-border:var(--color-emerald-700)]/90",
|
|
530
|
-
"[--btn-icon:var(--color-white)]/60 data-active:[--btn-icon:var(--color-white)]/80 data-hover:[--btn-icon:var(--color-white)]/80"
|
|
531
|
-
],
|
|
532
|
-
teal: [
|
|
533
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-teal-600)] [--btn-border:var(--color-teal-700)]/90",
|
|
534
|
-
"[--btn-icon:var(--color-white)]/60 data-active:[--btn-icon:var(--color-white)]/80 data-hover:[--btn-icon:var(--color-white)]/80"
|
|
535
|
-
],
|
|
536
|
-
sky: [
|
|
537
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-sky-500)] [--btn-border:var(--color-sky-600)]/80",
|
|
538
|
-
"[--btn-icon:var(--color-white)]/60 data-active:[--btn-icon:var(--color-white)]/80 data-hover:[--btn-icon:var(--color-white)]/80"
|
|
539
|
-
],
|
|
540
|
-
blue: [
|
|
541
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-blue-600)] [--btn-border:var(--color-blue-700)]/90",
|
|
542
|
-
"[--btn-icon:var(--color-blue-400)] data-active:[--btn-icon:var(--color-blue-300)] data-hover:[--btn-icon:var(--color-blue-300)]"
|
|
543
|
-
],
|
|
544
|
-
violet: [
|
|
545
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-violet-500)] [--btn-border:var(--color-violet-600)]/90",
|
|
546
|
-
"[--btn-icon:var(--color-violet-300)] data-active:[--btn-icon:var(--color-violet-200)] data-hover:[--btn-icon:var(--color-violet-200)]"
|
|
547
|
-
],
|
|
548
|
-
purple: [
|
|
549
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-purple-500)] [--btn-border:var(--color-purple-600)]/90",
|
|
550
|
-
"[--btn-icon:var(--color-purple-300)] data-active:[--btn-icon:var(--color-purple-200)] data-hover:[--btn-icon:var(--color-purple-200)]"
|
|
551
|
-
],
|
|
552
|
-
fuchsia: [
|
|
553
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-fuchsia-500)] [--btn-border:var(--color-fuchsia-600)]/90",
|
|
554
|
-
"[--btn-icon:var(--color-fuchsia-300)] data-active:[--btn-icon:var(--color-fuchsia-200)] data-hover:[--btn-icon:var(--color-fuchsia-200)]"
|
|
555
|
-
],
|
|
556
|
-
pink: [
|
|
557
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-pink-500)] [--btn-border:var(--color-pink-600)]/90",
|
|
558
|
-
"[--btn-icon:var(--color-pink-300)] data-active:[--btn-icon:var(--color-pink-200)] data-hover:[--btn-icon:var(--color-pink-200)]"
|
|
559
|
-
],
|
|
560
|
-
rose: [
|
|
561
|
-
"text-white [--btn-hover-overlay:var(--color-white)]/10 [--btn-bg:var(--color-rose-500)] [--btn-border:var(--color-rose-600)]/90",
|
|
562
|
-
"[--btn-icon:var(--color-rose-300)] data-active:[--btn-icon:var(--color-rose-200)] data-hover:[--btn-icon:var(--color-rose-200)]"
|
|
563
|
-
]
|
|
564
|
-
}
|
|
565
|
-
};
|
|
566
|
-
var fabSizes = {
|
|
567
|
-
sm: "h-12 w-12",
|
|
568
|
-
md: "h-14 w-14",
|
|
569
|
-
lg: "h-16 w-16"
|
|
570
|
-
};
|
|
571
|
-
var fabIconSizes = {
|
|
572
|
-
sm: "h-5 w-5",
|
|
573
|
-
md: "h-6 w-6",
|
|
574
|
-
lg: "h-7 w-7"
|
|
575
|
-
};
|
|
576
|
-
var fabPositions = {
|
|
577
|
-
"bottom-right": "fixed bottom-6 right-6",
|
|
578
|
-
"bottom-left": "fixed bottom-6 left-6",
|
|
579
|
-
"bottom-center": "fixed bottom-6 left-1/2 -translate-x-1/2"
|
|
580
|
-
};
|
|
581
|
-
var fabColors = {
|
|
582
|
-
"ios-blue": "text-white bg-[#007AFF]/85 dark:bg-[#0A84FF]/80 backdrop-blur-xl border border-white/30 dark:border-white/15 shadow-[inset_0_1px_2px_rgba(255,255,255,0.5),0_12px_32px_-8px_rgba(0,122,255,0.5)] hover:bg-[#007AFF] dark:hover:bg-[#0A84FF] hover:shadow-[inset_0_1px_2px_rgba(255,255,255,0.55),0_16px_40px_-8px_rgba(0,122,255,0.65),0_0_24px_-4px_rgba(0,122,255,0.4)]",
|
|
583
|
-
"ios-green": "text-white bg-[#34C759]/85 dark:bg-[#30D158]/80 backdrop-blur-xl border border-white/30 dark:border-white/15 shadow-[inset_0_1px_2px_rgba(255,255,255,0.5),0_12px_32px_-8px_rgba(52,199,89,0.5)] hover:bg-[#34C759] dark:hover:bg-[#30D158] hover:shadow-[inset_0_1px_2px_rgba(255,255,255,0.55),0_16px_40px_-8px_rgba(52,199,89,0.65),0_0_24px_-4px_rgba(52,199,89,0.4)]",
|
|
584
|
-
"ios-red": "text-white bg-[#FF3B30]/85 dark:bg-[#FF453A]/80 backdrop-blur-xl border border-white/30 dark:border-white/15 shadow-[inset_0_1px_2px_rgba(255,255,255,0.5),0_12px_32px_-8px_rgba(255,59,48,0.5)] hover:bg-[#FF3B30] dark:hover:bg-[#FF453A] hover:shadow-[inset_0_1px_2px_rgba(255,255,255,0.55),0_16px_40px_-8px_rgba(255,59,48,0.65),0_0_24px_-4px_rgba(255,59,48,0.4)]",
|
|
585
|
-
"ios-purple": "text-white bg-[#AF52DE]/85 dark:bg-[#BF5AF2]/80 backdrop-blur-xl border border-white/30 dark:border-white/15 shadow-[inset_0_1px_2px_rgba(255,255,255,0.5),0_12px_32px_-8px_rgba(175,82,222,0.5)] hover:bg-[#AF52DE] dark:hover:bg-[#BF5AF2] hover:shadow-[inset_0_1px_2px_rgba(255,255,255,0.55),0_16px_40px_-8px_rgba(175,82,222,0.65),0_0_24px_-4px_rgba(175,82,222,0.4)]",
|
|
586
|
-
"ios-orange": "text-white bg-[#FF9500]/85 dark:bg-[#FF9F0A]/80 backdrop-blur-xl border border-white/30 dark:border-white/15 shadow-[inset_0_1px_2px_rgba(255,255,255,0.5),0_12px_32px_-8px_rgba(255,149,0,0.5)] hover:bg-[#FF9500] dark:hover:bg-[#FF9F0A] hover:shadow-[inset_0_1px_2px_rgba(255,255,255,0.55),0_16px_40px_-8px_rgba(255,149,0,0.65),0_0_24px_-4px_rgba(255,149,0,0.4)]"
|
|
587
|
-
};
|
|
588
|
-
var iconButtonSizes = {
|
|
589
|
-
sm: "h-8 w-8",
|
|
590
|
-
md: "h-10 w-10",
|
|
591
|
-
lg: "h-12 w-12"
|
|
592
|
-
};
|
|
593
|
-
var iconSizes = {
|
|
594
|
-
sm: "h-4 w-4",
|
|
595
|
-
md: "h-5 w-5",
|
|
596
|
-
lg: "h-6 w-6"
|
|
597
|
-
};
|
|
598
|
-
var Button = React12.forwardRef(function Button2({
|
|
599
|
-
color,
|
|
600
|
-
outline,
|
|
601
|
-
plain,
|
|
602
|
-
gradient,
|
|
603
|
-
className,
|
|
604
|
-
children,
|
|
605
|
-
pill,
|
|
606
|
-
size = "md",
|
|
607
|
-
loading,
|
|
608
|
-
loadingText,
|
|
609
|
-
fullWidth,
|
|
610
|
-
destructive,
|
|
611
|
-
disabled,
|
|
612
|
-
...props
|
|
613
|
-
}, ref) {
|
|
614
|
-
const finalColor = destructive ? "ios-red" : color;
|
|
615
|
-
const isIosColor = finalColor && finalColor in iosColors2;
|
|
616
|
-
const colorStyles2 = isIosColor ? iosColors2[finalColor] : styles.colors[finalColor] ?? styles.colors["dark/zinc"];
|
|
617
|
-
let classes = clsx__default.default(
|
|
618
|
-
className,
|
|
619
|
-
styles.base,
|
|
620
|
-
gradient ? styles.gradient : outline ? styles.outline : plain ? styles.plain : clsx__default.default(styles.solid, colorStyles2),
|
|
621
|
-
pill && pillStyles,
|
|
622
|
-
size !== "md" && sizeStyles[size],
|
|
623
|
-
fullWidth && "w-full",
|
|
624
|
-
loading && "pointer-events-none"
|
|
625
|
-
);
|
|
626
|
-
const handleTapStart = () => {
|
|
627
|
-
if (!loading && !disabled) {
|
|
628
|
-
chunkUZ3CMNUJ_js.triggerHaptic(destructive ? "medium" : "light");
|
|
629
|
-
}
|
|
630
|
-
};
|
|
631
|
-
const isDisabled = disabled || loading;
|
|
632
|
-
const buttonContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
633
|
-
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: loading && /* @__PURE__ */ jsxRuntime.jsx(
|
|
634
|
-
framerMotion.motion.span,
|
|
635
|
-
{
|
|
636
|
-
initial: { opacity: 0, width: 0 },
|
|
637
|
-
animate: { opacity: 1, width: "auto" },
|
|
638
|
-
exit: { opacity: 0, width: 0 },
|
|
639
|
-
transition: getTransition(springPresets.stiff),
|
|
640
|
-
className: "inline-flex items-center",
|
|
641
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(LoadingSpinner, { className: "mr-2" })
|
|
642
|
-
}
|
|
643
|
-
) }),
|
|
644
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: clsx__default.default("inline-flex items-center gap-x-2", loading && "opacity-70"), children: loading && loadingText ? loadingText : children })
|
|
645
|
-
] });
|
|
646
|
-
const linkProps = props;
|
|
647
|
-
const buttonProps = props;
|
|
648
|
-
const isLink = typeof props.href === "string";
|
|
649
|
-
return isLink ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
650
|
-
framerMotion.motion.div,
|
|
651
|
-
{
|
|
652
|
-
whileTap: !isDisabled ? { scale: 0.97 } : void 0,
|
|
653
|
-
transition: getTransition(springPresets.stiff),
|
|
654
|
-
onTapStart: handleTapStart,
|
|
655
|
-
className: clsx__default.default("inline-flex", fullWidth && "w-full"),
|
|
656
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
657
|
-
Link,
|
|
658
|
-
{
|
|
659
|
-
...linkProps,
|
|
660
|
-
className: classes,
|
|
661
|
-
ref,
|
|
662
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(TouchTarget, { children: buttonContent })
|
|
663
|
-
}
|
|
664
|
-
)
|
|
665
|
-
}
|
|
666
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
667
|
-
framerMotion.motion.div,
|
|
668
|
-
{
|
|
669
|
-
whileTap: !isDisabled ? { scale: 0.97 } : void 0,
|
|
670
|
-
transition: getTransition(springPresets.stiff),
|
|
671
|
-
onTapStart: handleTapStart,
|
|
672
|
-
className: clsx__default.default("inline-flex", fullWidth && "w-full"),
|
|
673
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
674
|
-
Headless5.Button,
|
|
675
|
-
{
|
|
676
|
-
...buttonProps,
|
|
677
|
-
disabled: isDisabled,
|
|
678
|
-
className: clsx__default.default(classes, "cursor-default"),
|
|
679
|
-
ref,
|
|
680
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(TouchTarget, { children: buttonContent })
|
|
681
|
-
}
|
|
682
|
-
)
|
|
683
|
-
}
|
|
684
|
-
);
|
|
685
|
-
});
|
|
686
|
-
function TouchTarget({ children }) {
|
|
687
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
688
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
689
|
-
"span",
|
|
690
|
-
{
|
|
691
|
-
className: "absolute top-1/2 left-1/2 size-[max(100%,2.75rem)] -translate-x-1/2 -translate-y-1/2 pointer-fine:hidden",
|
|
692
|
-
"aria-hidden": "true"
|
|
693
|
-
}
|
|
694
|
-
),
|
|
695
|
-
children
|
|
696
|
-
] });
|
|
697
|
-
}
|
|
698
|
-
function LoadingSpinner({ className }) {
|
|
699
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
700
|
-
"svg",
|
|
701
|
-
{
|
|
702
|
-
className: clsx__default.default("h-4 w-4 animate-spin motion-reduce:animate-none", className),
|
|
703
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
704
|
-
fill: "none",
|
|
705
|
-
viewBox: "0 0 24 24",
|
|
706
|
-
children: [
|
|
707
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
708
|
-
"circle",
|
|
709
|
-
{
|
|
710
|
-
className: "opacity-25",
|
|
711
|
-
cx: "12",
|
|
712
|
-
cy: "12",
|
|
713
|
-
r: "10",
|
|
714
|
-
stroke: "currentColor",
|
|
715
|
-
strokeWidth: "4"
|
|
716
|
-
}
|
|
717
|
-
),
|
|
718
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
719
|
-
"path",
|
|
720
|
-
{
|
|
721
|
-
className: "opacity-75",
|
|
722
|
-
fill: "currentColor",
|
|
723
|
-
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
724
|
-
}
|
|
725
|
-
)
|
|
726
|
-
]
|
|
727
|
-
}
|
|
728
|
-
);
|
|
729
|
-
}
|
|
730
|
-
function FloatingActionButton({
|
|
731
|
-
icon,
|
|
732
|
-
label,
|
|
733
|
-
color = "ios-blue",
|
|
734
|
-
size = "md",
|
|
735
|
-
position = "bottom-right",
|
|
736
|
-
onClick,
|
|
737
|
-
loading,
|
|
738
|
-
className,
|
|
739
|
-
extended
|
|
740
|
-
}) {
|
|
741
|
-
const handleClick = () => {
|
|
742
|
-
if (!loading) {
|
|
743
|
-
chunkUZ3CMNUJ_js.triggerHaptic("medium");
|
|
744
|
-
onClick?.();
|
|
745
|
-
}
|
|
746
|
-
};
|
|
747
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
748
|
-
framerMotion.motion.button,
|
|
749
|
-
{
|
|
750
|
-
onClick: handleClick,
|
|
751
|
-
disabled: loading,
|
|
752
|
-
initial: { scale: 0, opacity: 0 },
|
|
753
|
-
animate: { scale: 1, opacity: 1 },
|
|
754
|
-
exit: { scale: 0, opacity: 0 },
|
|
755
|
-
whileHover: { scale: 1.05 },
|
|
756
|
-
whileTap: { scale: 0.95 },
|
|
757
|
-
transition: getTransition(springPresets.bouncy),
|
|
758
|
-
className: clsx__default.default(
|
|
759
|
-
fabPositions[position],
|
|
760
|
-
extended ? "px-5 h-14 rounded-full" : clsx__default.default(fabSizes[size], "rounded-full"),
|
|
761
|
-
fabColors[color],
|
|
762
|
-
"flex items-center justify-center gap-2",
|
|
763
|
-
"shadow-lg hover:shadow-xl",
|
|
764
|
-
"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-indigo-500/70",
|
|
765
|
-
"z-50",
|
|
766
|
-
loading && "opacity-70 cursor-not-allowed",
|
|
767
|
-
className
|
|
768
|
-
),
|
|
769
|
-
"aria-label": label,
|
|
770
|
-
children: [
|
|
771
|
-
loading ? /* @__PURE__ */ jsxRuntime.jsx(LoadingSpinner, { className: fabIconSizes[size] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: fabIconSizes[size], children: icon }),
|
|
772
|
-
extended && label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold text-base", children: label })
|
|
773
|
-
]
|
|
774
|
-
}
|
|
775
|
-
);
|
|
776
|
-
}
|
|
777
|
-
function IconButton({
|
|
778
|
-
icon,
|
|
779
|
-
label,
|
|
780
|
-
color = "ios-blue",
|
|
781
|
-
size = "md",
|
|
782
|
-
variant = "ghost",
|
|
783
|
-
onClick,
|
|
784
|
-
disabled,
|
|
785
|
-
loading,
|
|
786
|
-
className,
|
|
787
|
-
destructive
|
|
788
|
-
}) {
|
|
789
|
-
const finalColor = destructive ? "ios-red" : color;
|
|
790
|
-
const isIosColor = finalColor in iosColors2;
|
|
791
|
-
const handleClick = () => {
|
|
792
|
-
if (!disabled && !loading) {
|
|
793
|
-
chunkUZ3CMNUJ_js.triggerHaptic(destructive ? "medium" : "light");
|
|
794
|
-
onClick?.();
|
|
795
|
-
}
|
|
796
|
-
};
|
|
797
|
-
const variantStyles2 = {
|
|
798
|
-
solid: clsx__default.default(
|
|
799
|
-
"text-white",
|
|
800
|
-
isIosColor && finalColor === "ios-blue" && "bg-[#007AFF] dark:bg-[#0A84FF]",
|
|
801
|
-
isIosColor && finalColor === "ios-red" && "bg-[#FF3B30] dark:bg-[#FF453A]",
|
|
802
|
-
isIosColor && finalColor === "ios-green" && "bg-[#34C759] dark:bg-[#30D158]",
|
|
803
|
-
isIosColor && finalColor === "ios-orange" && "bg-[#FF9500] dark:bg-[#FF9F0A]",
|
|
804
|
-
isIosColor && finalColor === "ios-purple" && "bg-[#AF52DE] dark:bg-[#BF5AF2]"
|
|
805
|
-
),
|
|
806
|
-
ghost: clsx__default.default(
|
|
807
|
-
"bg-transparent hover:bg-white/40 dark:hover:bg-white/[0.08]",
|
|
808
|
-
isIosColor && finalColor === "ios-blue" && "text-[#007AFF] dark:text-[#0A84FF]",
|
|
809
|
-
isIosColor && finalColor === "ios-red" && "text-[#FF3B30] dark:text-[#FF453A]",
|
|
810
|
-
isIosColor && finalColor === "ios-green" && "text-[#34C759] dark:text-[#30D158]",
|
|
811
|
-
isIosColor && finalColor === "ios-orange" && "text-[#FF9500] dark:text-[#FF9F0A]",
|
|
812
|
-
isIosColor && finalColor === "ios-purple" && "text-[#AF52DE] dark:text-[#BF5AF2]",
|
|
813
|
-
!isIosColor && "text-slate-700 dark:text-slate-300"
|
|
814
|
-
),
|
|
815
|
-
outline: clsx__default.default(
|
|
816
|
-
"bg-transparent border",
|
|
817
|
-
isIosColor && finalColor === "ios-blue" && "border-[#007AFF] text-[#007AFF] dark:border-[#0A84FF] dark:text-[#0A84FF]",
|
|
818
|
-
isIosColor && finalColor === "ios-red" && "border-[#FF3B30] text-[#FF3B30] dark:border-[#FF453A] dark:text-[#FF453A]",
|
|
819
|
-
isIosColor && finalColor === "ios-green" && "border-[#34C759] text-[#34C759] dark:border-[#30D158] dark:text-[#30D158]",
|
|
820
|
-
isIosColor && finalColor === "ios-orange" && "border-[#FF9500] text-[#FF9500] dark:border-[#FF9F0A] dark:text-[#FF9F0A]",
|
|
821
|
-
isIosColor && finalColor === "ios-purple" && "border-[#AF52DE] text-[#AF52DE] dark:border-[#BF5AF2] dark:text-[#BF5AF2]"
|
|
822
|
-
)
|
|
823
|
-
};
|
|
824
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
825
|
-
framerMotion.motion.button,
|
|
826
|
-
{
|
|
827
|
-
onClick: handleClick,
|
|
828
|
-
disabled: disabled || loading,
|
|
829
|
-
whileTap: { scale: 0.9 },
|
|
830
|
-
transition: getTransition(springPresets.stiff),
|
|
831
|
-
className: clsx__default.default(
|
|
832
|
-
iconButtonSizes[size],
|
|
833
|
-
"rounded-full flex items-center justify-center",
|
|
834
|
-
"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-indigo-500/70",
|
|
835
|
-
"transition-colors",
|
|
836
|
-
variantStyles2[variant],
|
|
837
|
-
(disabled || loading) && "opacity-50 cursor-not-allowed",
|
|
838
|
-
className
|
|
839
|
-
),
|
|
840
|
-
"aria-label": label,
|
|
841
|
-
children: loading ? /* @__PURE__ */ jsxRuntime.jsx(LoadingSpinner, { className: iconSizes[size] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: iconSizes[size], children: icon })
|
|
842
|
-
}
|
|
843
|
-
);
|
|
844
|
-
}
|
|
845
57
|
var ICON_SIZE_CLASSES = {
|
|
846
58
|
sm: "h-9 w-9",
|
|
847
59
|
md: "h-10 w-10",
|
|
@@ -1020,13 +232,13 @@ function SectionCard({
|
|
|
1020
232
|
eyebrowExtra
|
|
1021
233
|
}) {
|
|
1022
234
|
const { icon, eyebrow, title, subtitle, gradient = "from-indigo-500 to-purple-600", rightContent } = header;
|
|
1023
|
-
const [internalOpen, setInternalOpen] =
|
|
235
|
+
const [internalOpen, setInternalOpen] = React9.useState(defaultOpen);
|
|
1024
236
|
const isOpen = controlledOpen ?? internalOpen;
|
|
1025
237
|
const setOpen = (next) => {
|
|
1026
238
|
if (controlledOpen === void 0) setInternalOpen(next);
|
|
1027
239
|
onOpenChange?.(next);
|
|
1028
240
|
};
|
|
1029
|
-
const reactId =
|
|
241
|
+
const reactId = React9.useId();
|
|
1030
242
|
const headingId = `${reactId}-heading`;
|
|
1031
243
|
const bodyId = `${reactId}-body`;
|
|
1032
244
|
const chevron = collapsible ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1137,7 +349,7 @@ function ListCardItem({
|
|
|
1137
349
|
}
|
|
1138
350
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex items-center gap-3 px-4 py-3 ${className}`, ...props, children: content });
|
|
1139
351
|
}
|
|
1140
|
-
var Input =
|
|
352
|
+
var Input = React9.forwardRef(
|
|
1141
353
|
({
|
|
1142
354
|
className = "",
|
|
1143
355
|
label,
|
|
@@ -1160,18 +372,18 @@ var Input = React12.forwardRef(
|
|
|
1160
372
|
...props
|
|
1161
373
|
}, ref) => {
|
|
1162
374
|
const t = chunkYXN2K77G_js.useTranslations("auth");
|
|
1163
|
-
const autoId =
|
|
375
|
+
const autoId = React9.useId();
|
|
1164
376
|
const inputId = props.id || autoId;
|
|
1165
377
|
const errorId = `${inputId}-error`;
|
|
1166
378
|
const helperId = `${inputId}-helper`;
|
|
1167
|
-
const [isFocused, setIsFocused] =
|
|
1168
|
-
const [showPassword, setShowPassword] =
|
|
379
|
+
const [isFocused, setIsFocused] = React9.useState(false);
|
|
380
|
+
const [showPassword, setShowPassword] = React9.useState(false);
|
|
1169
381
|
const prefersReducedMotion2 = framerMotion.useReducedMotion();
|
|
1170
382
|
const hasValue = value !== void 0 && value !== "";
|
|
1171
383
|
const characterCount = typeof value === "string" ? value.length : 0;
|
|
1172
384
|
const isOverLimit = maxCharacters ? characterCount > maxCharacters : false;
|
|
1173
385
|
const isFilled = variant === "filled";
|
|
1174
|
-
const handleFocus =
|
|
386
|
+
const handleFocus = React9.useCallback(
|
|
1175
387
|
(e) => {
|
|
1176
388
|
setIsFocused(true);
|
|
1177
389
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
@@ -1179,18 +391,18 @@ var Input = React12.forwardRef(
|
|
|
1179
391
|
},
|
|
1180
392
|
[onFocus]
|
|
1181
393
|
);
|
|
1182
|
-
const handleBlur =
|
|
394
|
+
const handleBlur = React9.useCallback(
|
|
1183
395
|
(e) => {
|
|
1184
396
|
setIsFocused(false);
|
|
1185
397
|
onBlur?.(e);
|
|
1186
398
|
},
|
|
1187
399
|
[onBlur]
|
|
1188
400
|
);
|
|
1189
|
-
const handleClear =
|
|
401
|
+
const handleClear = React9.useCallback(() => {
|
|
1190
402
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
1191
403
|
onClear?.();
|
|
1192
404
|
}, [onClear]);
|
|
1193
|
-
const togglePassword =
|
|
405
|
+
const togglePassword = React9.useCallback(() => {
|
|
1194
406
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
1195
407
|
setShowPassword(!showPassword);
|
|
1196
408
|
}, [showPassword]);
|
|
@@ -1223,7 +435,7 @@ var Input = React12.forwardRef(
|
|
|
1223
435
|
initial: { opacity: 0, scale: 0.8 },
|
|
1224
436
|
animate: { opacity: 1, scale: 1 },
|
|
1225
437
|
exit: { opacity: 0, scale: 0.8 },
|
|
1226
|
-
transition: getTransition(springPresets.bouncy),
|
|
438
|
+
transition: chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.bouncy),
|
|
1227
439
|
children: /* @__PURE__ */ jsxRuntime.jsx(solid.CheckCircleIcon, { className: "h-5 w-5 text-ios-green dark:text-ios-green-dark" })
|
|
1228
440
|
}
|
|
1229
441
|
) }),
|
|
@@ -1398,7 +610,7 @@ var Input = React12.forwardRef(
|
|
|
1398
610
|
}
|
|
1399
611
|
);
|
|
1400
612
|
Input.displayName = "Input";
|
|
1401
|
-
var PasswordInput =
|
|
613
|
+
var PasswordInput = React9.forwardRef(
|
|
1402
614
|
({ variant = "default", icon, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1403
615
|
Input,
|
|
1404
616
|
{
|
|
@@ -1412,7 +624,7 @@ var PasswordInput = React12.forwardRef(
|
|
|
1412
624
|
)
|
|
1413
625
|
);
|
|
1414
626
|
PasswordInput.displayName = "PasswordInput";
|
|
1415
|
-
var SearchInput =
|
|
627
|
+
var SearchInput = React9.forwardRef(
|
|
1416
628
|
({ icon, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1417
629
|
Input,
|
|
1418
630
|
{
|
|
@@ -1437,9 +649,9 @@ function Sheet({
|
|
|
1437
649
|
}) {
|
|
1438
650
|
const isRight = side === "right";
|
|
1439
651
|
const motionValue = framerMotion.useMotionValue(0);
|
|
1440
|
-
const sheetRef =
|
|
652
|
+
const sheetRef = React9.useRef(null);
|
|
1441
653
|
const backdropOpacity = framerMotion.useTransform(motionValue, [0, 300], [1, 0]);
|
|
1442
|
-
const handleDragEnd =
|
|
654
|
+
const handleDragEnd = React9.useCallback(
|
|
1443
655
|
(_, info) => {
|
|
1444
656
|
const shouldClose = isRight ? info.velocity.x > 500 || info.offset.x > 150 : info.velocity.y > 500 || info.offset.y > 150;
|
|
1445
657
|
if (shouldClose) {
|
|
@@ -1451,18 +663,18 @@ function Sheet({
|
|
|
1451
663
|
},
|
|
1452
664
|
[onClose, motionValue, isRight]
|
|
1453
665
|
);
|
|
1454
|
-
|
|
666
|
+
React9.useEffect(() => {
|
|
1455
667
|
if (open) {
|
|
1456
668
|
motionValue.set(0);
|
|
1457
669
|
}
|
|
1458
670
|
}, [open, motionValue]);
|
|
1459
671
|
const maxHeight = snapPoints[snapPoints.length - 1];
|
|
1460
672
|
const rightSizeClass = size === "xl" ? "max-w-xl" : size === "lg" ? "max-w-lg" : "max-w-md";
|
|
1461
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
673
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Headless3.Transition, { show: open, as: React9.Fragment, children: /* @__PURE__ */ jsxRuntime.jsxs(Headless3.Dialog, { as: "div", className: "relative z-50", onClose, children: [
|
|
1462
674
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1463
|
-
|
|
675
|
+
Headless3.TransitionChild,
|
|
1464
676
|
{
|
|
1465
|
-
as:
|
|
677
|
+
as: React9.Fragment,
|
|
1466
678
|
enter: "ease-out duration-300",
|
|
1467
679
|
enterFrom: "opacity-0",
|
|
1468
680
|
enterTo: "opacity-100",
|
|
@@ -1483,9 +695,9 @@ function Sheet({
|
|
|
1483
695
|
{
|
|
1484
696
|
className: isRight ? "pointer-events-none fixed inset-y-0 right-0 flex w-screen max-w-full justify-end" : "pointer-events-none fixed inset-x-0 bottom-0 flex justify-center",
|
|
1485
697
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1486
|
-
|
|
698
|
+
Headless3.TransitionChild,
|
|
1487
699
|
{
|
|
1488
|
-
as:
|
|
700
|
+
as: React9.Fragment,
|
|
1489
701
|
enter: "transform transition ease-out duration-300",
|
|
1490
702
|
enterFrom: isRight ? "translate-x-full" : "translate-y-full",
|
|
1491
703
|
enterTo: isRight ? "translate-x-0" : "translate-y-0",
|
|
@@ -1493,7 +705,7 @@ function Sheet({
|
|
|
1493
705
|
leaveFrom: isRight ? "translate-x-0" : "translate-y-0",
|
|
1494
706
|
leaveTo: isRight ? "translate-x-full" : "translate-y-full",
|
|
1495
707
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1496
|
-
|
|
708
|
+
Headless3.DialogPanel,
|
|
1497
709
|
{
|
|
1498
710
|
as: framerMotion.motion.div,
|
|
1499
711
|
ref: sheetRef,
|
|
@@ -1506,7 +718,7 @@ function Sheet({
|
|
|
1506
718
|
...!isRight ? { initial: { height: maxHeight } } : {},
|
|
1507
719
|
children: [
|
|
1508
720
|
showHandle && !isRight && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center pt-3 pb-2 cursor-grab active:cursor-grabbing", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-1 w-10 rounded-full bg-slate-400/50 dark:bg-slate-500/50" }) }),
|
|
1509
|
-
title && /* @__PURE__ */ jsxRuntime.jsx(
|
|
721
|
+
title && /* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogTitle, { className: "px-6 py-3 text-lg font-semibold text-slate-900 dark:text-white border-b border-white/30 dark:border-white/10", children: title }),
|
|
1510
722
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1511
723
|
"div",
|
|
1512
724
|
{
|
|
@@ -1573,21 +785,21 @@ function WheelPicker({
|
|
|
1573
785
|
visibleItems = 5,
|
|
1574
786
|
itemHeight = ITEM_HEIGHT
|
|
1575
787
|
}) {
|
|
1576
|
-
const containerRef =
|
|
788
|
+
const containerRef = React9.useRef(null);
|
|
1577
789
|
const y = framerMotion.useMotionValue(0);
|
|
1578
|
-
const [isDragging, setIsDragging] =
|
|
790
|
+
const [isDragging, setIsDragging] = React9.useState(false);
|
|
1579
791
|
const normalizedOptions = options.map(
|
|
1580
792
|
(opt) => typeof opt === "string" ? { value: opt, label: opt } : opt
|
|
1581
793
|
);
|
|
1582
794
|
const selectedIndex = normalizedOptions.findIndex((opt) => opt.value === value);
|
|
1583
795
|
const containerHeight = visibleItems * itemHeight;
|
|
1584
|
-
|
|
796
|
+
React9.useEffect(() => {
|
|
1585
797
|
if (selectedIndex >= 0 && !isDragging) {
|
|
1586
798
|
const targetY = -selectedIndex * itemHeight;
|
|
1587
799
|
framerMotion.animate(y, targetY, { type: "spring", stiffness: 300, damping: 30 });
|
|
1588
800
|
}
|
|
1589
801
|
}, [selectedIndex, itemHeight, y, isDragging]);
|
|
1590
|
-
const handleDragEnd =
|
|
802
|
+
const handleDragEnd = React9.useCallback(() => {
|
|
1591
803
|
setIsDragging(false);
|
|
1592
804
|
const currentY = y.get();
|
|
1593
805
|
const nearestIndex = Math.round(-currentY / itemHeight);
|
|
@@ -1606,7 +818,7 @@ function WheelPicker({
|
|
|
1606
818
|
}
|
|
1607
819
|
});
|
|
1608
820
|
}, [y, itemHeight, normalizedOptions, value, onChange]);
|
|
1609
|
-
const handleDrag =
|
|
821
|
+
const handleDrag = React9.useCallback(() => {
|
|
1610
822
|
if (!isDragging) setIsDragging(true);
|
|
1611
823
|
const currentY = y.get();
|
|
1612
824
|
const currentIndex = Math.round(-currentY / itemHeight);
|
|
@@ -1690,7 +902,7 @@ function MultiColumnPicker({ columns }) {
|
|
|
1690
902
|
index
|
|
1691
903
|
)) });
|
|
1692
904
|
}
|
|
1693
|
-
var Select =
|
|
905
|
+
var Select = React9.forwardRef(
|
|
1694
906
|
({
|
|
1695
907
|
className = "",
|
|
1696
908
|
label,
|
|
@@ -1706,13 +918,13 @@ var Select = React12.forwardRef(
|
|
|
1706
918
|
onBlur,
|
|
1707
919
|
...props
|
|
1708
920
|
}, ref) => {
|
|
1709
|
-
const [isOpen, setIsOpen] =
|
|
1710
|
-
const [isFocused, setIsFocused] =
|
|
921
|
+
const [isOpen, setIsOpen] = React9.useState(false);
|
|
922
|
+
const [isFocused, setIsFocused] = React9.useState(false);
|
|
1711
923
|
const normalizedOptions = options.map(
|
|
1712
924
|
(opt) => typeof opt === "string" ? { value: opt, label: opt } : opt
|
|
1713
925
|
);
|
|
1714
926
|
const selectedOption = normalizedOptions.find((opt) => opt.value === String(value));
|
|
1715
|
-
const handleFocus =
|
|
927
|
+
const handleFocus = React9.useCallback(
|
|
1716
928
|
(e) => {
|
|
1717
929
|
setIsFocused(true);
|
|
1718
930
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
@@ -1720,14 +932,14 @@ var Select = React12.forwardRef(
|
|
|
1720
932
|
},
|
|
1721
933
|
[onFocus]
|
|
1722
934
|
);
|
|
1723
|
-
const handleBlur =
|
|
935
|
+
const handleBlur = React9.useCallback(
|
|
1724
936
|
(e) => {
|
|
1725
937
|
setIsFocused(false);
|
|
1726
938
|
onBlur?.(e);
|
|
1727
939
|
},
|
|
1728
940
|
[onBlur]
|
|
1729
941
|
);
|
|
1730
|
-
const handlePickerChange =
|
|
942
|
+
const handlePickerChange = React9.useCallback(
|
|
1731
943
|
(newValue) => {
|
|
1732
944
|
chunkUZ3CMNUJ_js.triggerHaptic("selection");
|
|
1733
945
|
const syntheticEvent = {
|
|
@@ -1739,7 +951,7 @@ var Select = React12.forwardRef(
|
|
|
1739
951
|
},
|
|
1740
952
|
[onChange]
|
|
1741
953
|
);
|
|
1742
|
-
const handleOpenPicker =
|
|
954
|
+
const handleOpenPicker = React9.useCallback(() => {
|
|
1743
955
|
if (disabled) return;
|
|
1744
956
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
1745
957
|
setIsOpen(true);
|
|
@@ -1862,7 +1074,7 @@ function DropdownSelect({
|
|
|
1862
1074
|
disabled,
|
|
1863
1075
|
error
|
|
1864
1076
|
}) {
|
|
1865
|
-
const [isOpen, setIsOpen] =
|
|
1077
|
+
const [isOpen, setIsOpen] = React9.useState(false);
|
|
1866
1078
|
const selectedOption = options.find((opt) => opt.value === value);
|
|
1867
1079
|
const handleSelect = (optionValue) => {
|
|
1868
1080
|
chunkUZ3CMNUJ_js.triggerHaptic("selection");
|
|
@@ -2005,7 +1217,7 @@ function ToggleSwitch({
|
|
|
2005
1217
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2006
1218
|
framerMotion.motion.span,
|
|
2007
1219
|
{
|
|
2008
|
-
transition: springPresets.bouncy,
|
|
1220
|
+
transition: chunkBHOT22QL_js.springPresets.bouncy,
|
|
2009
1221
|
className: `
|
|
2010
1222
|
pointer-events-none inline-block rounded-full
|
|
2011
1223
|
bg-white shadow-lg shadow-black/10
|
|
@@ -2485,7 +1697,7 @@ function EntityCard({
|
|
|
2485
1697
|
}) {
|
|
2486
1698
|
const isInteractive = Boolean(onClick);
|
|
2487
1699
|
const plainTextTitle = isPlainTextTitle(title) ? String(title) : void 0;
|
|
2488
|
-
const handleKeyDown =
|
|
1700
|
+
const handleKeyDown = React9.useCallback(
|
|
2489
1701
|
(event) => {
|
|
2490
1702
|
if (onClick && (event.key === "Enter" || event.key === " ")) {
|
|
2491
1703
|
event.preventDefault();
|
|
@@ -2551,7 +1763,7 @@ var SIZE_STYLES = {
|
|
|
2551
1763
|
sm: "px-2 py-0.5 text-xs",
|
|
2552
1764
|
md: "px-2.5 py-1 text-xs"
|
|
2553
1765
|
};
|
|
2554
|
-
var StatusBadge =
|
|
1766
|
+
var StatusBadge = React9.forwardRef(function StatusBadge2({ status, label, size = "md", className = "", ...props }, ref) {
|
|
2555
1767
|
let tone;
|
|
2556
1768
|
let resolvedLabel;
|
|
2557
1769
|
let IconComponent;
|
|
@@ -3053,12 +2265,12 @@ function InputRequestForm({
|
|
|
3053
2265
|
data,
|
|
3054
2266
|
onResolved
|
|
3055
2267
|
}) {
|
|
3056
|
-
const [values, setValues] =
|
|
2268
|
+
const [values, setValues] = React9.useState(
|
|
3057
2269
|
() => initialValues(data.fields)
|
|
3058
2270
|
);
|
|
3059
|
-
const [submitting, setSubmitting] =
|
|
3060
|
-
const [resolved, setResolved] =
|
|
3061
|
-
const [error, setError] =
|
|
2271
|
+
const [submitting, setSubmitting] = React9.useState(false);
|
|
2272
|
+
const [resolved, setResolved] = React9.useState(null);
|
|
2273
|
+
const [error, setError] = React9.useState(null);
|
|
3062
2274
|
async function submit(decision) {
|
|
3063
2275
|
if (submitting || resolved) return;
|
|
3064
2276
|
setSubmitting(true);
|
|
@@ -3301,16 +2513,16 @@ function StreamingDashboard({
|
|
|
3301
2513
|
initialStatus,
|
|
3302
2514
|
className
|
|
3303
2515
|
}) {
|
|
3304
|
-
const [spec, setSpec] =
|
|
2516
|
+
const [spec, setSpec] = React9.useState(
|
|
3305
2517
|
initialSpec ?? null
|
|
3306
2518
|
);
|
|
3307
|
-
const [timeline, setTimeline] =
|
|
3308
|
-
const [phase, setPhase] =
|
|
2519
|
+
const [timeline, setTimeline] = React9.useState([]);
|
|
2520
|
+
const [phase, setPhase] = React9.useState(
|
|
3309
2521
|
() => derivePhase(initialStatus)
|
|
3310
2522
|
);
|
|
3311
|
-
const [error, setError] =
|
|
3312
|
-
const specRef =
|
|
3313
|
-
|
|
2523
|
+
const [error, setError] = React9.useState(null);
|
|
2524
|
+
const specRef = React9.useRef(initialSpec ?? null);
|
|
2525
|
+
React9.useEffect(() => {
|
|
3314
2526
|
if (phase === "completed" || phase === "failed" || phase === "cancelled") {
|
|
3315
2527
|
return;
|
|
3316
2528
|
}
|
|
@@ -3813,23 +3025,23 @@ function SearchBar({
|
|
|
3813
3025
|
filterChipStyleConfig
|
|
3814
3026
|
}) {
|
|
3815
3027
|
const t = chunkYXN2K77G_js.useTranslations("common");
|
|
3816
|
-
const [isFocused, setIsFocused] =
|
|
3817
|
-
const inputRef =
|
|
3028
|
+
const [isFocused, setIsFocused] = React9.useState(false);
|
|
3029
|
+
const inputRef = React9.useRef(null);
|
|
3818
3030
|
const hasFilters = activeFilters.length > 0 || searchTerm.length > 0;
|
|
3819
3031
|
const defaultPlaceholder = placeholder || t("searchPlaceholder");
|
|
3820
|
-
const handleFocus =
|
|
3032
|
+
const handleFocus = React9.useCallback(() => {
|
|
3821
3033
|
setIsFocused(true);
|
|
3822
3034
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
3823
3035
|
}, []);
|
|
3824
|
-
const handleBlur =
|
|
3036
|
+
const handleBlur = React9.useCallback(() => {
|
|
3825
3037
|
setTimeout(() => setIsFocused(false), 150);
|
|
3826
3038
|
}, []);
|
|
3827
|
-
const handleClear =
|
|
3039
|
+
const handleClear = React9.useCallback(() => {
|
|
3828
3040
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
3829
3041
|
onSearchChange("");
|
|
3830
3042
|
inputRef.current?.focus();
|
|
3831
3043
|
}, [onSearchChange]);
|
|
3832
|
-
const handleCancel =
|
|
3044
|
+
const handleCancel = React9.useCallback(() => {
|
|
3833
3045
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
3834
3046
|
onSearchChange("");
|
|
3835
3047
|
setIsFocused(false);
|
|
@@ -3921,7 +3133,7 @@ function SearchBar({
|
|
|
3921
3133
|
] });
|
|
3922
3134
|
}
|
|
3923
3135
|
function InfoPopover({ title, content, triggerLabel = "Info" }) {
|
|
3924
|
-
const id =
|
|
3136
|
+
const id = React9.useId();
|
|
3925
3137
|
return /* @__PURE__ */ jsxRuntime.jsxs(Popover__namespace.Root, { children: [
|
|
3926
3138
|
/* @__PURE__ */ jsxRuntime.jsx(Popover__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", "aria-label": triggerLabel, className: "text-gray-400 hover:text-gray-700 dark:hover:text-gray-200", children: /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.InformationCircleIcon, { className: "h-4 w-4" }) }) }),
|
|
3927
3139
|
/* @__PURE__ */ jsxRuntime.jsx(Popover__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(Popover__namespace.Content, { id, sideOffset: 8, className: "liquid-surface-strong z-[120] w-80 rounded-xl p-3", children: [
|
|
@@ -4354,16 +3566,16 @@ var colorClasses2 = {
|
|
|
4354
3566
|
};
|
|
4355
3567
|
function CircleSpinner({ size, color, className, ariaLabel }) {
|
|
4356
3568
|
const config = sizeConfig[size];
|
|
4357
|
-
const
|
|
3569
|
+
const colors2 = colorClasses2[color];
|
|
4358
3570
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4359
3571
|
"div",
|
|
4360
3572
|
{
|
|
4361
|
-
className:
|
|
3573
|
+
className: clsx4.clsx(
|
|
4362
3574
|
"rounded-full animate-spin motion-reduce:animate-none",
|
|
4363
3575
|
config.size,
|
|
4364
3576
|
config.border,
|
|
4365
|
-
|
|
4366
|
-
|
|
3577
|
+
colors2.track,
|
|
3578
|
+
colors2.indicator,
|
|
4367
3579
|
className
|
|
4368
3580
|
),
|
|
4369
3581
|
role: "status",
|
|
@@ -4373,16 +3585,16 @@ function CircleSpinner({ size, color, className, ariaLabel }) {
|
|
|
4373
3585
|
}
|
|
4374
3586
|
function DotsSpinner({ size, color, className, ariaLabel }) {
|
|
4375
3587
|
const config = sizeConfig[size];
|
|
4376
|
-
const
|
|
3588
|
+
const colors2 = colorClasses2[color];
|
|
4377
3589
|
const prefersReducedMotion2 = framerMotion.useReducedMotion();
|
|
4378
3590
|
const dotVariants = {
|
|
4379
3591
|
initial: { scale: 0.8, opacity: 0.4 },
|
|
4380
3592
|
animate: prefersReducedMotion2 ? { scale: 1, opacity: 1 } : { scale: 1, opacity: 1 }
|
|
4381
3593
|
};
|
|
4382
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
3594
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx4.clsx("flex items-center gap-1", className), role: "status", "aria-label": ariaLabel, children: [0, 1, 2].map((index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4383
3595
|
framerMotion.motion.div,
|
|
4384
3596
|
{
|
|
4385
|
-
className:
|
|
3597
|
+
className: clsx4.clsx("rounded-full", colors2.dot),
|
|
4386
3598
|
style: {
|
|
4387
3599
|
width: config.dotSize,
|
|
4388
3600
|
height: config.dotSize
|
|
@@ -4402,13 +3614,13 @@ function DotsSpinner({ size, color, className, ariaLabel }) {
|
|
|
4402
3614
|
}
|
|
4403
3615
|
function PulseSpinner({ size, color, className, ariaLabel }) {
|
|
4404
3616
|
const config = sizeConfig[size];
|
|
4405
|
-
const
|
|
3617
|
+
const colors2 = colorClasses2[color];
|
|
4406
3618
|
const prefersReducedMotion2 = framerMotion.useReducedMotion();
|
|
4407
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
3619
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx4.clsx("relative", config.size, className), role: "status", "aria-label": ariaLabel, children: [
|
|
4408
3620
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4409
3621
|
framerMotion.motion.div,
|
|
4410
3622
|
{
|
|
4411
|
-
className:
|
|
3623
|
+
className: clsx4.clsx("absolute inset-0 rounded-full", colors2.dot),
|
|
4412
3624
|
animate: prefersReducedMotion2 ? {} : {
|
|
4413
3625
|
scale: [1, 1.5, 1],
|
|
4414
3626
|
opacity: [0.7, 0, 0.7]
|
|
@@ -4420,7 +3632,7 @@ function PulseSpinner({ size, color, className, ariaLabel }) {
|
|
|
4420
3632
|
}
|
|
4421
3633
|
}
|
|
4422
3634
|
),
|
|
4423
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
3635
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx4.clsx("absolute inset-0 rounded-full", colors2.dot) })
|
|
4424
3636
|
] });
|
|
4425
3637
|
}
|
|
4426
3638
|
function Spinner({
|
|
@@ -4461,7 +3673,7 @@ function LoadingOverlay({ show, message, blur = true }) {
|
|
|
4461
3673
|
initial: { opacity: 0 },
|
|
4462
3674
|
animate: { opacity: 1 },
|
|
4463
3675
|
exit: { opacity: 0 },
|
|
4464
|
-
className:
|
|
3676
|
+
className: clsx4.clsx(
|
|
4465
3677
|
"fixed inset-0 z-50 flex flex-col items-center justify-center",
|
|
4466
3678
|
"bg-white/80 dark:bg-slate-900/80",
|
|
4467
3679
|
blur && "backdrop-blur-sm"
|
|
@@ -4507,12 +3719,12 @@ function GrowthIndicator({
|
|
|
4507
3719
|
if (isNeutral && !showValue) {
|
|
4508
3720
|
return null;
|
|
4509
3721
|
}
|
|
4510
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className:
|
|
3722
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: clsx4.clsx("inline-flex items-center gap-0.5", colorClasses3, className), children: [
|
|
4511
3723
|
!isNeutral && /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: iconClass }),
|
|
4512
3724
|
showValue && /* @__PURE__ */ jsxRuntime.jsx("span", { className: textClass, children: formattedValue })
|
|
4513
3725
|
] });
|
|
4514
3726
|
}
|
|
4515
|
-
var
|
|
3727
|
+
var sizeStyles = {
|
|
4516
3728
|
sm: {
|
|
4517
3729
|
container: "h-8 p-0.5 text-xs",
|
|
4518
3730
|
segment: "px-3 py-1"
|
|
@@ -4534,14 +3746,14 @@ function SegmentedControl({
|
|
|
4534
3746
|
fullWidth = false,
|
|
4535
3747
|
disabled = false
|
|
4536
3748
|
}) {
|
|
4537
|
-
const containerRef =
|
|
4538
|
-
const [indicatorStyle, setIndicatorStyle] =
|
|
3749
|
+
const containerRef = React9.useRef(null);
|
|
3750
|
+
const [indicatorStyle, setIndicatorStyle] = React9.useState({ left: 0, width: 0 });
|
|
4539
3751
|
const normalizedSegments = segments.map(
|
|
4540
3752
|
(seg) => typeof seg === "string" ? { value: seg, label: seg } : seg
|
|
4541
3753
|
);
|
|
4542
3754
|
const selectedIndex = normalizedSegments.findIndex((seg) => seg.value === value);
|
|
4543
|
-
const
|
|
4544
|
-
|
|
3755
|
+
const styles = sizeStyles[size];
|
|
3756
|
+
React9.useEffect(() => {
|
|
4545
3757
|
if (containerRef.current && selectedIndex >= 0) {
|
|
4546
3758
|
const container = containerRef.current;
|
|
4547
3759
|
const buttons = container.querySelectorAll("button");
|
|
@@ -4561,7 +3773,7 @@ function SegmentedControl({
|
|
|
4561
3773
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
4562
3774
|
onChange(segmentValue);
|
|
4563
3775
|
};
|
|
4564
|
-
const handleKeyDown =
|
|
3776
|
+
const handleKeyDown = React9.useCallback(
|
|
4565
3777
|
(event) => {
|
|
4566
3778
|
if (disabled) return;
|
|
4567
3779
|
const currentIndex = normalizedSegments.findIndex((seg) => seg.value === value);
|
|
@@ -4600,7 +3812,7 @@ function SegmentedControl({
|
|
|
4600
3812
|
className: `
|
|
4601
3813
|
liquid-surface relative inline-flex items-center rounded-xl
|
|
4602
3814
|
focus-within:ring-2 focus-within:ring-indigo-500/70 focus-within:ring-offset-1
|
|
4603
|
-
${
|
|
3815
|
+
${styles.container}
|
|
4604
3816
|
${fullWidth ? "w-full" : ""}
|
|
4605
3817
|
${disabled ? "opacity-50 pointer-events-none" : ""}
|
|
4606
3818
|
`,
|
|
@@ -4620,7 +3832,7 @@ function SegmentedControl({
|
|
|
4620
3832
|
left: indicatorStyle.left,
|
|
4621
3833
|
width: indicatorStyle.width
|
|
4622
3834
|
},
|
|
4623
|
-
transition: springPresets.default
|
|
3835
|
+
transition: chunkBHOT22QL_js.springPresets.default
|
|
4624
3836
|
}
|
|
4625
3837
|
),
|
|
4626
3838
|
normalizedSegments.map((segment) => {
|
|
@@ -4639,7 +3851,7 @@ function SegmentedControl({
|
|
|
4639
3851
|
relative z-10 flex items-center justify-center gap-1.5
|
|
4640
3852
|
font-semibold rounded-lg transition-colors duration-150
|
|
4641
3853
|
focus:outline-none
|
|
4642
|
-
${
|
|
3854
|
+
${styles.segment}
|
|
4643
3855
|
${fullWidth ? "flex-1" : ""}
|
|
4644
3856
|
${isSelected ? "text-slate-950 dark:text-white" : "text-slate-700 dark:text-slate-300 hover:text-slate-900 dark:hover:text-white"}
|
|
4645
3857
|
`,
|
|
@@ -4698,7 +3910,7 @@ function PageIndicator({
|
|
|
4698
3910
|
}) {
|
|
4699
3911
|
const t = chunkYXN2K77G_js.useTranslations("common");
|
|
4700
3912
|
const { dot, gap } = sizeConfig2[size];
|
|
4701
|
-
const
|
|
3913
|
+
const colors2 = variantConfig[variant];
|
|
4702
3914
|
const handleClick = (index) => {
|
|
4703
3915
|
if (onChange && index !== active) {
|
|
4704
3916
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
@@ -4725,7 +3937,7 @@ function PageIndicator({
|
|
|
4725
3937
|
className: `
|
|
4726
3938
|
rounded-full transition-colors duration-200
|
|
4727
3939
|
${onChange ? "cursor-pointer" : "cursor-default"}
|
|
4728
|
-
${isActive ?
|
|
3940
|
+
${isActive ? colors2.active : colors2.inactive}
|
|
4729
3941
|
`,
|
|
4730
3942
|
style: {
|
|
4731
3943
|
width: dot,
|
|
@@ -4756,7 +3968,7 @@ function ExpandingPageIndicator({
|
|
|
4756
3968
|
activeWidth = 24
|
|
4757
3969
|
}) {
|
|
4758
3970
|
const t = chunkYXN2K77G_js.useTranslations("common");
|
|
4759
|
-
const
|
|
3971
|
+
const colors2 = variantConfig[variant];
|
|
4760
3972
|
const handleClick = (index) => {
|
|
4761
3973
|
if (onChange && index !== active) {
|
|
4762
3974
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
@@ -4782,7 +3994,7 @@ function ExpandingPageIndicator({
|
|
|
4782
3994
|
className: `
|
|
4783
3995
|
h-2 rounded-full transition-colors duration-200
|
|
4784
3996
|
${onChange ? "cursor-pointer" : "cursor-default"}
|
|
4785
|
-
${isActive ?
|
|
3997
|
+
${isActive ? colors2.active : colors2.inactive}
|
|
4786
3998
|
`,
|
|
4787
3999
|
animate: {
|
|
4788
4000
|
width: isActive ? activeWidth : 8,
|
|
@@ -4886,7 +4098,7 @@ function SafeArea({
|
|
|
4886
4098
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4887
4099
|
"div",
|
|
4888
4100
|
{
|
|
4889
|
-
className:
|
|
4101
|
+
className: clsx4.clsx(flex && "flex flex-col", className),
|
|
4890
4102
|
style: paddingStyles,
|
|
4891
4103
|
children
|
|
4892
4104
|
}
|
|
@@ -4899,7 +4111,7 @@ function SafeAreaView({
|
|
|
4899
4111
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4900
4112
|
"div",
|
|
4901
4113
|
{
|
|
4902
|
-
className:
|
|
4114
|
+
className: clsx4.clsx("min-h-screen flex flex-col", className),
|
|
4903
4115
|
style: {
|
|
4904
4116
|
paddingTop: "env(safe-area-inset-top, 0px)",
|
|
4905
4117
|
paddingBottom: "env(safe-area-inset-bottom, 0px)",
|
|
@@ -4932,7 +4144,7 @@ function BottomSafeArea({
|
|
|
4932
4144
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4933
4145
|
"div",
|
|
4934
4146
|
{
|
|
4935
|
-
className:
|
|
4147
|
+
className: clsx4.clsx(
|
|
4936
4148
|
"fixed bottom-0 inset-x-0 z-40",
|
|
4937
4149
|
blur && "bg-white/80 dark:bg-gray-900/80 backdrop-blur-xl border-t border-gray-200/50 dark:border-gray-700/50",
|
|
4938
4150
|
className
|
|
@@ -4954,20 +4166,20 @@ function SwipeableRow({
|
|
|
4954
4166
|
className = ""
|
|
4955
4167
|
}) {
|
|
4956
4168
|
const x = framerMotion.useMotionValue(0);
|
|
4957
|
-
const containerRef =
|
|
4958
|
-
const [isDragging, setIsDragging] =
|
|
4959
|
-
const hasTriggeredHaptic =
|
|
4169
|
+
const containerRef = React9.useRef(null);
|
|
4170
|
+
const [isDragging, setIsDragging] = React9.useState(false);
|
|
4171
|
+
const hasTriggeredHaptic = React9.useRef(false);
|
|
4960
4172
|
const leftActionsWidth = leftActions.length * actionWidth;
|
|
4961
4173
|
const rightActionsWidth = rightActions.length * actionWidth;
|
|
4962
4174
|
const leftConstraint = rightActions.length > 0 ? -rightActionsWidth : 0;
|
|
4963
4175
|
const rightConstraint = leftActions.length > 0 ? leftActionsWidth : 0;
|
|
4964
4176
|
const leftBgOpacity = framerMotion.useTransform(x, [0, leftActionsWidth], [0, 1]);
|
|
4965
4177
|
const rightBgOpacity = framerMotion.useTransform(x, [-rightActionsWidth, 0], [1, 0]);
|
|
4966
|
-
const handleDragStart =
|
|
4178
|
+
const handleDragStart = React9.useCallback(() => {
|
|
4967
4179
|
setIsDragging(true);
|
|
4968
4180
|
hasTriggeredHaptic.current = false;
|
|
4969
4181
|
}, []);
|
|
4970
|
-
const handleDrag =
|
|
4182
|
+
const handleDrag = React9.useCallback((_, info) => {
|
|
4971
4183
|
const currentX = x.get();
|
|
4972
4184
|
if (enableFullSwipe) {
|
|
4973
4185
|
const containerWidth = containerRef.current?.offsetWidth || 300;
|
|
@@ -4980,7 +4192,7 @@ function SwipeableRow({
|
|
|
4980
4192
|
}
|
|
4981
4193
|
}
|
|
4982
4194
|
}, [x, enableFullSwipe, fullSwipeThreshold]);
|
|
4983
|
-
const handleDragEnd =
|
|
4195
|
+
const handleDragEnd = React9.useCallback((_, info) => {
|
|
4984
4196
|
setIsDragging(false);
|
|
4985
4197
|
const currentX = x.get();
|
|
4986
4198
|
const velocity = info.velocity.x;
|
|
@@ -5019,7 +4231,7 @@ function SwipeableRow({
|
|
|
5019
4231
|
action.onAction();
|
|
5020
4232
|
framerMotion.animate(x, 0, { type: "spring", stiffness: 400, damping: 30 });
|
|
5021
4233
|
};
|
|
5022
|
-
|
|
4234
|
+
React9.useCallback(() => {
|
|
5023
4235
|
framerMotion.animate(x, 0, { type: "spring", stiffness: 400, damping: 30 });
|
|
5024
4236
|
}, [x]);
|
|
5025
4237
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: containerRef, className: `relative overflow-hidden ${className}`, children: [
|
|
@@ -5132,22 +4344,22 @@ function usePullToRefresh(options) {
|
|
|
5132
4344
|
maxPull = 120,
|
|
5133
4345
|
enabled = true
|
|
5134
4346
|
} = options;
|
|
5135
|
-
const [state, setState] =
|
|
4347
|
+
const [state, setState] = React9.useState({
|
|
5136
4348
|
pullDistance: 0,
|
|
5137
4349
|
isRefreshing: false,
|
|
5138
4350
|
canRefresh: false
|
|
5139
4351
|
});
|
|
5140
|
-
const startY =
|
|
5141
|
-
const containerRef =
|
|
5142
|
-
const hasTriggeredHaptic =
|
|
5143
|
-
const handleTouchStart =
|
|
4352
|
+
const startY = React9.useRef(null);
|
|
4353
|
+
const containerRef = React9.useRef(null);
|
|
4354
|
+
const hasTriggeredHaptic = React9.useRef(false);
|
|
4355
|
+
const handleTouchStart = React9.useCallback((e) => {
|
|
5144
4356
|
if (!enabled || state.isRefreshing) return;
|
|
5145
4357
|
const container = containerRef.current;
|
|
5146
4358
|
if (container && container.scrollTop > 0) return;
|
|
5147
4359
|
startY.current = e.touches[0].clientY;
|
|
5148
4360
|
hasTriggeredHaptic.current = false;
|
|
5149
4361
|
}, [enabled, state.isRefreshing]);
|
|
5150
|
-
const handleTouchMove =
|
|
4362
|
+
const handleTouchMove = React9.useCallback((e) => {
|
|
5151
4363
|
if (!enabled || startY.current === null || state.isRefreshing) return;
|
|
5152
4364
|
const currentY = e.touches[0].clientY;
|
|
5153
4365
|
const deltaY = currentY - startY.current;
|
|
@@ -5166,7 +4378,7 @@ function usePullToRefresh(options) {
|
|
|
5166
4378
|
}
|
|
5167
4379
|
setState((prev) => ({ ...prev, pullDistance, canRefresh }));
|
|
5168
4380
|
}, [enabled, state.isRefreshing, threshold, maxPull]);
|
|
5169
|
-
const handleTouchEnd =
|
|
4381
|
+
const handleTouchEnd = React9.useCallback(async () => {
|
|
5170
4382
|
if (!enabled || startY.current === null) return;
|
|
5171
4383
|
startY.current = null;
|
|
5172
4384
|
if (state.canRefresh && !state.isRefreshing) {
|
|
@@ -5181,7 +4393,7 @@ function usePullToRefresh(options) {
|
|
|
5181
4393
|
setState((prev) => ({ ...prev, pullDistance: 0, canRefresh: false }));
|
|
5182
4394
|
}
|
|
5183
4395
|
}, [enabled, state.canRefresh, state.isRefreshing, threshold, onRefresh]);
|
|
5184
|
-
|
|
4396
|
+
React9.useEffect(() => {
|
|
5185
4397
|
const container = containerRef.current;
|
|
5186
4398
|
if (!container || !enabled) return;
|
|
5187
4399
|
container.addEventListener("touchstart", handleTouchStart, { passive: true });
|
|
@@ -5400,11 +4612,11 @@ function EdgeSwipeIndicator({
|
|
|
5400
4612
|
edgeWidth = 20,
|
|
5401
4613
|
showThreshold = 30
|
|
5402
4614
|
}) {
|
|
5403
|
-
const [swipeProgress, setSwipeProgress] =
|
|
5404
|
-
const [isVisible, setIsVisible] =
|
|
5405
|
-
const startX =
|
|
5406
|
-
const isEdgeSwipe =
|
|
5407
|
-
|
|
4615
|
+
const [swipeProgress, setSwipeProgress] = React9.useState(0);
|
|
4616
|
+
const [isVisible, setIsVisible] = React9.useState(false);
|
|
4617
|
+
const startX = React9.useRef(null);
|
|
4618
|
+
const isEdgeSwipe = React9.useRef(false);
|
|
4619
|
+
React9.useEffect(() => {
|
|
5408
4620
|
if (!enabled) return;
|
|
5409
4621
|
const handleTouchStart = (e) => {
|
|
5410
4622
|
const touch = e.touches[0];
|
|
@@ -5500,10 +4712,10 @@ function useEdgeSwipeEffect({
|
|
|
5500
4712
|
enabled = true,
|
|
5501
4713
|
onBack
|
|
5502
4714
|
}) {
|
|
5503
|
-
const startX =
|
|
5504
|
-
const startY =
|
|
5505
|
-
const isEdgeSwipe =
|
|
5506
|
-
|
|
4715
|
+
const startX = React9.useRef(null);
|
|
4716
|
+
const startY = React9.useRef(null);
|
|
4717
|
+
const isEdgeSwipe = React9.useRef(false);
|
|
4718
|
+
React9.useEffect(() => {
|
|
5507
4719
|
if (!enabled) return;
|
|
5508
4720
|
const edgeWidth = 20;
|
|
5509
4721
|
const threshold = 100;
|
|
@@ -5553,7 +4765,7 @@ function useEdgeSwipeEffect({
|
|
|
5553
4765
|
};
|
|
5554
4766
|
}, [enabled, onBack]);
|
|
5555
4767
|
}
|
|
5556
|
-
var TableContext =
|
|
4768
|
+
var TableContext = React9.createContext({
|
|
5557
4769
|
bleed: false,
|
|
5558
4770
|
dense: false,
|
|
5559
4771
|
grid: false,
|
|
@@ -5572,15 +4784,15 @@ function Table({
|
|
|
5572
4784
|
children,
|
|
5573
4785
|
...props
|
|
5574
4786
|
}) {
|
|
5575
|
-
return /* @__PURE__ */ jsxRuntime.jsx(TableContext.Provider, { value: { bleed, dense, grid, striped, loading, emptyState }, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flow-root", children: /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className:
|
|
4787
|
+
return /* @__PURE__ */ jsxRuntime.jsx(TableContext.Provider, { value: { bleed, dense, grid, striped, loading, emptyState }, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flow-root", children: /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: clsx4__default.default(className, "-mx-(--gutter) overflow-x-auto whitespace-nowrap"), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx4__default.default("inline-block min-w-full align-middle", !bleed && "sm:px-(--gutter)"), children: /* @__PURE__ */ jsxRuntime.jsx("table", { className: "min-w-full text-left text-sm/6 text-slate-950 dark:text-white", children }) }) }) }) });
|
|
5576
4788
|
}
|
|
5577
4789
|
function TableHead({ className, ...props }) {
|
|
5578
|
-
return /* @__PURE__ */ jsxRuntime.jsx("thead", { ...props, className:
|
|
4790
|
+
return /* @__PURE__ */ jsxRuntime.jsx("thead", { ...props, className: clsx4__default.default(className, "text-slate-600 dark:text-slate-300") });
|
|
5579
4791
|
}
|
|
5580
4792
|
function TableBody(props) {
|
|
5581
4793
|
return /* @__PURE__ */ jsxRuntime.jsx("tbody", { ...props });
|
|
5582
4794
|
}
|
|
5583
|
-
var TableRowContext =
|
|
4795
|
+
var TableRowContext = React9.createContext({
|
|
5584
4796
|
href: void 0,
|
|
5585
4797
|
target: void 0,
|
|
5586
4798
|
title: void 0
|
|
@@ -5592,12 +4804,12 @@ function TableRow({
|
|
|
5592
4804
|
className,
|
|
5593
4805
|
...props
|
|
5594
4806
|
}) {
|
|
5595
|
-
let { striped } =
|
|
4807
|
+
let { striped } = React9.useContext(TableContext);
|
|
5596
4808
|
return /* @__PURE__ */ jsxRuntime.jsx(TableRowContext.Provider, { value: { href, target, title }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5597
4809
|
"tr",
|
|
5598
4810
|
{
|
|
5599
4811
|
...props,
|
|
5600
|
-
className:
|
|
4812
|
+
className: clsx4__default.default(
|
|
5601
4813
|
className,
|
|
5602
4814
|
href && "has-[[data-row-link][data-focus]]:outline-2 has-[[data-row-link][data-focus]]:-outline-offset-2 has-[[data-row-link][data-focus]]:outline-indigo-500/70 dark:focus-within:bg-white/2.5",
|
|
5603
4815
|
striped && "even:bg-slate-950/2.5 dark:even:bg-white/2.5",
|
|
@@ -5608,13 +4820,13 @@ function TableRow({
|
|
|
5608
4820
|
) });
|
|
5609
4821
|
}
|
|
5610
4822
|
function TableHeader({ className, scope, ...props }) {
|
|
5611
|
-
let { bleed, grid } =
|
|
4823
|
+
let { bleed, grid } = React9.useContext(TableContext);
|
|
5612
4824
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5613
4825
|
"th",
|
|
5614
4826
|
{
|
|
5615
4827
|
scope: scope ?? "col",
|
|
5616
4828
|
...props,
|
|
5617
|
-
className:
|
|
4829
|
+
className: clsx4__default.default(
|
|
5618
4830
|
className,
|
|
5619
4831
|
"border-b border-b-white/20 dark:border-b-white/10 px-4 py-2 font-medium first:pl-(--gutter,--spacing(2)) last:pr-(--gutter,--spacing(2))",
|
|
5620
4832
|
grid && "border-l border-l-white/20 first:border-l-0 dark:border-l-white/10",
|
|
@@ -5624,15 +4836,15 @@ function TableHeader({ className, scope, ...props }) {
|
|
|
5624
4836
|
);
|
|
5625
4837
|
}
|
|
5626
4838
|
function TableCell({ className, children, ...props }) {
|
|
5627
|
-
let { bleed, dense, grid, striped } =
|
|
5628
|
-
let { href, target, title } =
|
|
5629
|
-
let [cellRef, setCellRef] =
|
|
4839
|
+
let { bleed, dense, grid, striped } = React9.useContext(TableContext);
|
|
4840
|
+
let { href, target, title } = React9.useContext(TableRowContext);
|
|
4841
|
+
let [cellRef, setCellRef] = React9.useState(null);
|
|
5630
4842
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5631
4843
|
"td",
|
|
5632
4844
|
{
|
|
5633
4845
|
ref: href ? setCellRef : void 0,
|
|
5634
4846
|
...props,
|
|
5635
|
-
className:
|
|
4847
|
+
className: clsx4__default.default(
|
|
5636
4848
|
className,
|
|
5637
4849
|
"relative px-4 first:pl-(--gutter,--spacing(2)) last:pr-(--gutter,--spacing(2))",
|
|
5638
4850
|
!striped && "border-b border-white/20 dark:border-white/[0.08]",
|
|
@@ -5642,7 +4854,7 @@ function TableCell({ className, children, ...props }) {
|
|
|
5642
4854
|
),
|
|
5643
4855
|
children: [
|
|
5644
4856
|
href && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5645
|
-
Link,
|
|
4857
|
+
chunkBHOT22QL_js.Link,
|
|
5646
4858
|
{
|
|
5647
4859
|
"data-row-link": true,
|
|
5648
4860
|
href,
|
|
@@ -5666,7 +4878,7 @@ function SortableTableHeader({
|
|
|
5666
4878
|
onSort,
|
|
5667
4879
|
...props
|
|
5668
4880
|
}) {
|
|
5669
|
-
let { bleed, grid } =
|
|
4881
|
+
let { bleed, grid } = React9.useContext(TableContext);
|
|
5670
4882
|
const isActive = currentSort === sortKey;
|
|
5671
4883
|
const direction = isActive ? currentDirection : null;
|
|
5672
4884
|
const handleSort = () => {
|
|
@@ -5684,7 +4896,7 @@ function SortableTableHeader({
|
|
|
5684
4896
|
{
|
|
5685
4897
|
...props,
|
|
5686
4898
|
onClick: handleSort,
|
|
5687
|
-
className:
|
|
4899
|
+
className: clsx4__default.default(
|
|
5688
4900
|
className,
|
|
5689
4901
|
"border-b border-b-white/20 dark:border-b-white/10 px-4 py-2 font-medium first:pl-(--gutter,--spacing(2)) last:pr-(--gutter,--spacing(2))",
|
|
5690
4902
|
grid && "border-l border-l-white/20 first:border-l-0 dark:border-l-white/10",
|
|
@@ -5699,7 +4911,7 @@ function SortableTableHeader({
|
|
|
5699
4911
|
{
|
|
5700
4912
|
initial: false,
|
|
5701
4913
|
animate: { opacity: 1 },
|
|
5702
|
-
transition: getTransition(springPresets.stiff),
|
|
4914
|
+
transition: chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.stiff),
|
|
5703
4915
|
className: "flex-shrink-0",
|
|
5704
4916
|
children: direction === "asc" ? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.ChevronUpIcon, { className: "h-4 w-4" }) : direction === "desc" ? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.ChevronDownIcon, { className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.ChevronUpDownIcon, { className: "h-4 w-4 opacity-40" })
|
|
5705
4917
|
}
|
|
@@ -5712,11 +4924,11 @@ function TableSkeletonRow({
|
|
|
5712
4924
|
columns = 4,
|
|
5713
4925
|
className
|
|
5714
4926
|
}) {
|
|
5715
|
-
const { dense } =
|
|
4927
|
+
const { dense } = React9.useContext(TableContext);
|
|
5716
4928
|
return /* @__PURE__ */ jsxRuntime.jsx("tr", { className, children: Array.from({ length: columns }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5717
4929
|
"td",
|
|
5718
4930
|
{
|
|
5719
|
-
className:
|
|
4931
|
+
className: clsx4__default.default(
|
|
5720
4932
|
"px-4 first:pl-(--gutter,--spacing(2)) last:pr-(--gutter,--spacing(2))",
|
|
5721
4933
|
"border-b border-white/20 dark:border-white/[0.08]",
|
|
5722
4934
|
dense ? "py-2.5" : "py-4"
|
|
@@ -5724,7 +4936,7 @@ function TableSkeletonRow({
|
|
|
5724
4936
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5725
4937
|
"div",
|
|
5726
4938
|
{
|
|
5727
|
-
className:
|
|
4939
|
+
className: clsx4__default.default(
|
|
5728
4940
|
"h-4 rounded bg-slate-200 dark:bg-slate-700 animate-pulse motion-reduce:animate-none",
|
|
5729
4941
|
i === 0 ? "w-32" : i === columns - 1 ? "w-16" : "w-24"
|
|
5730
4942
|
)
|
|
@@ -5752,7 +4964,7 @@ function TableEmptyState({
|
|
|
5752
4964
|
{
|
|
5753
4965
|
initial: { opacity: 0, y: 10 },
|
|
5754
4966
|
animate: { opacity: 1, y: 0 },
|
|
5755
|
-
transition: getTransition(springPresets.gentle),
|
|
4967
|
+
transition: chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.gentle),
|
|
5756
4968
|
className: "flex flex-col items-center gap-3",
|
|
5757
4969
|
children: [
|
|
5758
4970
|
icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-12 w-12 rounded-full bg-white/40 dark:bg-white/[0.04] flex items-center justify-center text-slate-400 dark:text-slate-500", children: icon }),
|
|
@@ -5773,7 +4985,7 @@ function AnimatedTableRow({
|
|
|
5773
4985
|
index = 0,
|
|
5774
4986
|
...props
|
|
5775
4987
|
}) {
|
|
5776
|
-
let { striped } =
|
|
4988
|
+
let { striped } = React9.useContext(TableContext);
|
|
5777
4989
|
const { onDrag, onDragStart, onDragEnd, onAnimationStart, onAnimationEnd, onAnimationIteration, ...restProps } = props;
|
|
5778
4990
|
return /* @__PURE__ */ jsxRuntime.jsx(TableRowContext.Provider, { value: { href, target, title }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5779
4991
|
framerMotion.motion.tr,
|
|
@@ -5782,11 +4994,11 @@ function AnimatedTableRow({
|
|
|
5782
4994
|
animate: { opacity: 1, y: 0 },
|
|
5783
4995
|
exit: { opacity: 0, x: -20 },
|
|
5784
4996
|
transition: {
|
|
5785
|
-
...getTransition(springPresets.gentle),
|
|
4997
|
+
...chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.gentle),
|
|
5786
4998
|
delay: index * 0.03
|
|
5787
4999
|
},
|
|
5788
5000
|
...restProps,
|
|
5789
|
-
className:
|
|
5001
|
+
className: clsx4__default.default(
|
|
5790
5002
|
className,
|
|
5791
5003
|
href && "has-[[data-row-link][data-focus]]:outline-2 has-[[data-row-link][data-focus]]:-outline-offset-2 has-[[data-row-link][data-focus]]:outline-indigo-500/70 dark:focus-within:bg-white/2.5",
|
|
5792
5004
|
striped && "even:bg-slate-950/2.5 dark:even:bg-white/2.5",
|
|
@@ -5806,7 +5018,7 @@ function SelectableTableRow({
|
|
|
5806
5018
|
children,
|
|
5807
5019
|
...props
|
|
5808
5020
|
}) {
|
|
5809
|
-
let { striped, dense } =
|
|
5021
|
+
let { striped, dense } = React9.useContext(TableContext);
|
|
5810
5022
|
const handleSelect = () => {
|
|
5811
5023
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
5812
5024
|
onSelect?.(!selected);
|
|
@@ -5815,7 +5027,7 @@ function SelectableTableRow({
|
|
|
5815
5027
|
"tr",
|
|
5816
5028
|
{
|
|
5817
5029
|
...props,
|
|
5818
|
-
className:
|
|
5030
|
+
className: clsx4__default.default(
|
|
5819
5031
|
className,
|
|
5820
5032
|
href && "has-[[data-row-link][data-focus]]:outline-2 has-[[data-row-link][data-focus]]:-outline-offset-2 has-[[data-row-link][data-focus]]:outline-indigo-500/70 dark:focus-within:bg-white/2.5",
|
|
5821
5033
|
striped && "even:bg-slate-950/2.5 dark:even:bg-white/2.5",
|
|
@@ -5827,7 +5039,7 @@ function SelectableTableRow({
|
|
|
5827
5039
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5828
5040
|
"td",
|
|
5829
5041
|
{
|
|
5830
|
-
className:
|
|
5042
|
+
className: clsx4__default.default(
|
|
5831
5043
|
"px-4 first:pl-(--gutter,--spacing(2))",
|
|
5832
5044
|
"border-b border-white/20 dark:border-white/[0.08]",
|
|
5833
5045
|
dense ? "py-2.5" : "py-4"
|
|
@@ -5841,8 +5053,8 @@ function SelectableTableRow({
|
|
|
5841
5053
|
"aria-label": "Select row",
|
|
5842
5054
|
onClick: handleSelect,
|
|
5843
5055
|
whileTap: { scale: 0.9 },
|
|
5844
|
-
transition: getTransition(springPresets.stiff),
|
|
5845
|
-
className:
|
|
5056
|
+
transition: chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.stiff),
|
|
5057
|
+
className: clsx4__default.default(
|
|
5846
5058
|
"h-5 w-5 rounded-full border-2 flex items-center justify-center transition-colors",
|
|
5847
5059
|
selected ? "bg-[#007AFF] dark:bg-[#0A84FF] border-[#007AFF] dark:border-[#0A84FF]" : "border-slate-300 dark:border-slate-600"
|
|
5848
5060
|
),
|
|
@@ -5852,7 +5064,7 @@ function SelectableTableRow({
|
|
|
5852
5064
|
initial: { scale: 0 },
|
|
5853
5065
|
animate: { scale: 1 },
|
|
5854
5066
|
exit: { scale: 0 },
|
|
5855
|
-
transition: getTransition(springPresets.bouncy),
|
|
5067
|
+
transition: chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.bouncy),
|
|
5856
5068
|
className: "h-3 w-3 text-white",
|
|
5857
5069
|
fill: "none",
|
|
5858
5070
|
viewBox: "0 0 24 24",
|
|
@@ -5896,7 +5108,7 @@ function EmptyState({
|
|
|
5896
5108
|
{
|
|
5897
5109
|
initial: { scale: 0.8, opacity: 0 },
|
|
5898
5110
|
animate: { scale: 1, opacity: 1 },
|
|
5899
|
-
transition: springPresets.bouncy,
|
|
5111
|
+
transition: chunkBHOT22QL_js.springPresets.bouncy,
|
|
5900
5112
|
className: "mx-auto mb-4",
|
|
5901
5113
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex h-16 w-16 items-center justify-center rounded-full border border-white/60 bg-white/75 shadow-sm backdrop-blur-xl dark:border-white/12 dark:bg-white/8", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-8 w-8 text-slate-600 dark:text-slate-300" }) })
|
|
5902
5114
|
}
|
|
@@ -5906,7 +5118,7 @@ function EmptyState({
|
|
|
5906
5118
|
{
|
|
5907
5119
|
initial: { y: 10, opacity: 0 },
|
|
5908
5120
|
animate: { y: 0, opacity: 1 },
|
|
5909
|
-
transition: { ...springPresets.default, delay: 0.1 },
|
|
5121
|
+
transition: { ...chunkBHOT22QL_js.springPresets.default, delay: 0.1 },
|
|
5910
5122
|
children: [
|
|
5911
5123
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base font-semibold text-slate-900 dark:text-white", children: message }),
|
|
5912
5124
|
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-slate-500 dark:text-slate-400 max-w-sm mx-auto", children: description })
|
|
@@ -5918,9 +5130,9 @@ function EmptyState({
|
|
|
5918
5130
|
{
|
|
5919
5131
|
initial: { y: 10, opacity: 0 },
|
|
5920
5132
|
animate: { y: 0, opacity: 1 },
|
|
5921
|
-
transition: { ...springPresets.default, delay: 0.2 },
|
|
5133
|
+
transition: { ...chunkBHOT22QL_js.springPresets.default, delay: 0.2 },
|
|
5922
5134
|
className: "mt-6",
|
|
5923
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Button, { color: "ios-glass-blue", onClick: handleActionClick, children: action.label })
|
|
5135
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { color: "ios-glass-blue", onClick: handleActionClick, children: action.label })
|
|
5924
5136
|
}
|
|
5925
5137
|
)
|
|
5926
5138
|
]
|
|
@@ -5977,12 +5189,12 @@ function ErrorState({
|
|
|
5977
5189
|
variant = "default"
|
|
5978
5190
|
}) {
|
|
5979
5191
|
const t = chunkYXN2K77G_js.useTranslations("common.errorState");
|
|
5980
|
-
const [isRetrying, setIsRetrying] =
|
|
5981
|
-
const [showErrorDetails, setShowErrorDetails] =
|
|
5192
|
+
const [isRetrying, setIsRetrying] = React9.useState(false);
|
|
5193
|
+
const [showErrorDetails, setShowErrorDetails] = React9.useState(false);
|
|
5982
5194
|
const config = errorTypeConfig[type];
|
|
5983
5195
|
const Icon = config.icon;
|
|
5984
5196
|
const resolvedRetryLabel = retryLabel || t("tryAgain");
|
|
5985
|
-
const handleRetry =
|
|
5197
|
+
const handleRetry = React9.useCallback(async () => {
|
|
5986
5198
|
if (!onRetry || isRetrying) return;
|
|
5987
5199
|
setIsRetrying(true);
|
|
5988
5200
|
chunkUZ3CMNUJ_js.triggerHaptic("medium");
|
|
@@ -6008,7 +5220,7 @@ function ErrorState({
|
|
|
6008
5220
|
{
|
|
6009
5221
|
initial: { scale: 0.8, opacity: 0 },
|
|
6010
5222
|
animate: { scale: 1, opacity: 1 },
|
|
6011
|
-
transition: getTransition(springPresets.bouncy),
|
|
5223
|
+
transition: chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.bouncy),
|
|
6012
5224
|
className: "mx-auto mb-4",
|
|
6013
5225
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: `inline-flex h-16 w-16 items-center justify-center rounded-full ${config.iconBg}`, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: `h-8 w-8 ${config.iconColor}` }) })
|
|
6014
5226
|
}
|
|
@@ -6018,7 +5230,7 @@ function ErrorState({
|
|
|
6018
5230
|
{
|
|
6019
5231
|
initial: { y: 10, opacity: 0 },
|
|
6020
5232
|
animate: { y: 0, opacity: 1 },
|
|
6021
|
-
transition: { ...getTransition(springPresets.default), delay: 0.1 },
|
|
5233
|
+
transition: { ...chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.default), delay: 0.1 },
|
|
6022
5234
|
children: [
|
|
6023
5235
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold text-slate-900 dark:text-white", children: title || t(config.titleKey) }),
|
|
6024
5236
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-slate-500 dark:text-slate-400 max-w-sm mx-auto", children: message || t(config.messageKey) }),
|
|
@@ -6031,11 +5243,11 @@ function ErrorState({
|
|
|
6031
5243
|
{
|
|
6032
5244
|
initial: { y: 10, opacity: 0 },
|
|
6033
5245
|
animate: { y: 0, opacity: 1 },
|
|
6034
|
-
transition: { ...getTransition(springPresets.default), delay: 0.2 },
|
|
5246
|
+
transition: { ...chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.default), delay: 0.2 },
|
|
6035
5247
|
className: "mt-6 flex flex-col sm:flex-row items-center justify-center gap-3",
|
|
6036
5248
|
children: [
|
|
6037
5249
|
onRetry && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6038
|
-
Button,
|
|
5250
|
+
chunkBHOT22QL_js.Button,
|
|
6039
5251
|
{
|
|
6040
5252
|
color: "ios-glass-blue",
|
|
6041
5253
|
onClick: handleRetry,
|
|
@@ -6049,7 +5261,7 @@ function ErrorState({
|
|
|
6049
5261
|
}
|
|
6050
5262
|
),
|
|
6051
5263
|
secondaryAction && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6052
|
-
Button,
|
|
5264
|
+
chunkBHOT22QL_js.Button,
|
|
6053
5265
|
{
|
|
6054
5266
|
plain: true,
|
|
6055
5267
|
onClick: () => {
|
|
@@ -6067,7 +5279,7 @@ function ErrorState({
|
|
|
6067
5279
|
{
|
|
6068
5280
|
initial: { y: 10, opacity: 0 },
|
|
6069
5281
|
animate: { y: 0, opacity: 1 },
|
|
6070
|
-
transition: { ...getTransition(springPresets.default), delay: 0.3 },
|
|
5282
|
+
transition: { ...chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.default), delay: 0.3 },
|
|
6071
5283
|
className: "mt-6",
|
|
6072
5284
|
children: [
|
|
6073
5285
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -6084,7 +5296,7 @@ function ErrorState({
|
|
|
6084
5296
|
initial: { height: 0, opacity: 0 },
|
|
6085
5297
|
animate: { height: "auto", opacity: 1 },
|
|
6086
5298
|
exit: { height: 0, opacity: 0 },
|
|
6087
|
-
transition: getTransition(springPresets.gentle),
|
|
5299
|
+
transition: chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.gentle),
|
|
6088
5300
|
className: "overflow-hidden",
|
|
6089
5301
|
children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-3 p-3 bg-white/40 dark:bg-white/[0.04] rounded-lg text-xs text-left text-slate-600 dark:text-slate-400 font-mono overflow-x-auto max-h-32", children: details })
|
|
6090
5302
|
}
|
|
@@ -6136,7 +5348,7 @@ function NoResultsState({
|
|
|
6136
5348
|
{
|
|
6137
5349
|
initial: { scale: 0.8, opacity: 0 },
|
|
6138
5350
|
animate: { scale: 1, opacity: 1 },
|
|
6139
|
-
transition: getTransition(springPresets.bouncy),
|
|
5351
|
+
transition: chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.bouncy),
|
|
6140
5352
|
className: "mx-auto mb-4",
|
|
6141
5353
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex h-16 w-16 items-center justify-center rounded-full border border-white/60 bg-white/75 shadow-sm backdrop-blur-xl dark:border-white/12 dark:bg-white/8", children: /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.DocumentMagnifyingGlassIcon, { className: "h-8 w-8 text-slate-600 dark:text-slate-300" }) })
|
|
6142
5354
|
}
|
|
@@ -6146,7 +5358,7 @@ function NoResultsState({
|
|
|
6146
5358
|
{
|
|
6147
5359
|
initial: { y: 10, opacity: 0 },
|
|
6148
5360
|
animate: { y: 0, opacity: 1 },
|
|
6149
|
-
transition: { ...getTransition(springPresets.default), delay: 0.1 },
|
|
5361
|
+
transition: { ...chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.default), delay: 0.1 },
|
|
6150
5362
|
children: [
|
|
6151
5363
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold text-slate-900 dark:text-white", children: t("noResultsFound") }),
|
|
6152
5364
|
searchTerm && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-slate-500 dark:text-slate-400", children: t("noResultsFor", { searchTerm }) }),
|
|
@@ -6166,10 +5378,10 @@ function NoResultsState({
|
|
|
6166
5378
|
{
|
|
6167
5379
|
initial: { y: 10, opacity: 0 },
|
|
6168
5380
|
animate: { y: 0, opacity: 1 },
|
|
6169
|
-
transition: { ...getTransition(springPresets.default), delay: 0.2 },
|
|
5381
|
+
transition: { ...chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.default), delay: 0.2 },
|
|
6170
5382
|
className: "mt-6",
|
|
6171
5383
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6172
|
-
Button,
|
|
5384
|
+
chunkBHOT22QL_js.Button,
|
|
6173
5385
|
{
|
|
6174
5386
|
color: "ios-glass-blue",
|
|
6175
5387
|
onClick: () => {
|
|
@@ -6204,7 +5416,7 @@ function NoDataState({
|
|
|
6204
5416
|
{
|
|
6205
5417
|
initial: { scale: 0.8, opacity: 0 },
|
|
6206
5418
|
animate: { scale: 1, opacity: 1 },
|
|
6207
|
-
transition: getTransition(springPresets.bouncy),
|
|
5419
|
+
transition: chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.bouncy),
|
|
6208
5420
|
className: "mx-auto mb-4",
|
|
6209
5421
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex h-16 w-16 items-center justify-center rounded-full border border-white/60 bg-white/75 shadow-sm backdrop-blur-xl dark:border-white/12 dark:bg-white/8", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-8 w-8 text-slate-600 dark:text-slate-300" }) })
|
|
6210
5422
|
}
|
|
@@ -6214,7 +5426,7 @@ function NoDataState({
|
|
|
6214
5426
|
{
|
|
6215
5427
|
initial: { y: 10, opacity: 0 },
|
|
6216
5428
|
animate: { y: 0, opacity: 1 },
|
|
6217
|
-
transition: { ...getTransition(springPresets.default), delay: 0.1 },
|
|
5429
|
+
transition: { ...chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.default), delay: 0.1 },
|
|
6218
5430
|
children: [
|
|
6219
5431
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base font-semibold text-slate-900 dark:text-white", children: resolvedTitle }),
|
|
6220
5432
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-slate-500 dark:text-slate-400 max-w-sm mx-auto", children: resolvedMessage })
|
|
@@ -6226,10 +5438,10 @@ function NoDataState({
|
|
|
6226
5438
|
{
|
|
6227
5439
|
initial: { y: 10, opacity: 0 },
|
|
6228
5440
|
animate: { y: 0, opacity: 1 },
|
|
6229
|
-
transition: { ...getTransition(springPresets.default), delay: 0.2 },
|
|
5441
|
+
transition: { ...chunkBHOT22QL_js.getTransition(chunkBHOT22QL_js.springPresets.default), delay: 0.2 },
|
|
6230
5442
|
className: "mt-6",
|
|
6231
5443
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6232
|
-
Button,
|
|
5444
|
+
chunkBHOT22QL_js.Button,
|
|
6233
5445
|
{
|
|
6234
5446
|
color: "ios-glass-blue",
|
|
6235
5447
|
onClick: () => {
|
|
@@ -6274,11 +5486,11 @@ function DynamicIsland({
|
|
|
6274
5486
|
onStateChange,
|
|
6275
5487
|
position = "center"
|
|
6276
5488
|
}) {
|
|
6277
|
-
const [internalState, setInternalState] =
|
|
6278
|
-
|
|
5489
|
+
const [internalState, setInternalState] = React9.useState(state);
|
|
5490
|
+
React9.useEffect(() => {
|
|
6279
5491
|
setInternalState(state);
|
|
6280
5492
|
}, [state]);
|
|
6281
|
-
|
|
5493
|
+
React9.useEffect(() => {
|
|
6282
5494
|
if (autoCollapseDelay && internalState !== "idle") {
|
|
6283
5495
|
const timer = setTimeout(() => {
|
|
6284
5496
|
setInternalState("idle");
|
|
@@ -6302,7 +5514,7 @@ function DynamicIsland({
|
|
|
6302
5514
|
layout: true,
|
|
6303
5515
|
initial: false,
|
|
6304
5516
|
animate: sizeVariants[internalState],
|
|
6305
|
-
transition: springPresets.bouncy,
|
|
5517
|
+
transition: chunkBHOT22QL_js.springPresets.bouncy,
|
|
6306
5518
|
onClick: handleTap,
|
|
6307
5519
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full w-full overflow-hidden bg-black rounded-[inherit]", children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6308
5520
|
framerMotion.motion.div,
|
|
@@ -6352,9 +5564,9 @@ function DynamicIslandNotification({
|
|
|
6352
5564
|
onDismiss,
|
|
6353
5565
|
position = "right"
|
|
6354
5566
|
}) {
|
|
6355
|
-
const [state, setState] =
|
|
6356
|
-
const
|
|
6357
|
-
|
|
5567
|
+
const [state, setState] = React9.useState("idle");
|
|
5568
|
+
const styles = variantStyles[variant];
|
|
5569
|
+
React9.useEffect(() => {
|
|
6358
5570
|
if (show) {
|
|
6359
5571
|
setState("expanded");
|
|
6360
5572
|
chunkUZ3CMNUJ_js.triggerHaptic("light");
|
|
@@ -6378,12 +5590,12 @@ function DynamicIslandNotification({
|
|
|
6378
5590
|
position,
|
|
6379
5591
|
idleContent: (
|
|
6380
5592
|
// Idle: Colored icon pill
|
|
6381
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-6 w-6 rounded-full ${
|
|
5593
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-6 w-6 rounded-full ${styles.iconBg} flex items-center justify-center`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4 text-white", children: icon }) }) })
|
|
6382
5594
|
),
|
|
6383
5595
|
compactContent: (
|
|
6384
5596
|
// Compact: Colored icon + title + message preview
|
|
6385
5597
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 px-4 w-full", children: [
|
|
6386
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-8 w-8 rounded-full ${
|
|
5598
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-8 w-8 rounded-full ${styles.iconBg} flex items-center justify-center shrink-0`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-5 w-5 text-white", children: icon }) }),
|
|
6387
5599
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
6388
5600
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-semibold truncate", children: title }),
|
|
6389
5601
|
message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-gray-500 truncate", children: message })
|
|
@@ -6393,9 +5605,9 @@ function DynamicIslandNotification({
|
|
|
6393
5605
|
expandedContent: (
|
|
6394
5606
|
// Expanded: Full notification with colored icon background
|
|
6395
5607
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex items-center gap-4 px-5 w-full h-full`, children: [
|
|
6396
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-14 w-14 rounded-2xl ${
|
|
5608
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-14 w-14 rounded-2xl ${styles.iconBg} flex items-center justify-center shrink-0 ${styles.glow}`, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-8 w-8 text-white", children: icon }) }),
|
|
6397
5609
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
6398
|
-
appName && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-[11px] uppercase tracking-wide font-medium ${
|
|
5610
|
+
appName && /* @__PURE__ */ jsxRuntime.jsx("p", { className: `text-[11px] uppercase tracking-wide font-medium ${styles.accentColor}`, children: appName }),
|
|
6399
5611
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[15px] font-semibold leading-tight", children: title }),
|
|
6400
5612
|
message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-gray-500 mt-0.5 truncate", children: message })
|
|
6401
5613
|
] })
|
|
@@ -6408,43 +5620,43 @@ function DynamicIslandNotification({
|
|
|
6408
5620
|
}
|
|
6409
5621
|
return content;
|
|
6410
5622
|
}
|
|
6411
|
-
var NotificationContext =
|
|
5623
|
+
var NotificationContext = React9.createContext(void 0);
|
|
6412
5624
|
function useNotifications() {
|
|
6413
|
-
const notificationContext =
|
|
5625
|
+
const notificationContext = React9.useContext(NotificationContext);
|
|
6414
5626
|
if (!notificationContext) {
|
|
6415
5627
|
throw new Error("useNotifications must be used within NotificationProvider");
|
|
6416
5628
|
}
|
|
6417
5629
|
return notificationContext;
|
|
6418
5630
|
}
|
|
6419
5631
|
function NotificationProvider({ children, appName = "Datatech" }) {
|
|
6420
|
-
const [history, setHistory] =
|
|
6421
|
-
const [pendingApprovals] =
|
|
6422
|
-
const [historyOpen, setHistoryOpen] =
|
|
6423
|
-
const [dynamicIslandNotification, setDynamicIslandNotification] =
|
|
6424
|
-
const addNotification =
|
|
5632
|
+
const [history, setHistory] = React9.useState([]);
|
|
5633
|
+
const [pendingApprovals] = React9.useState([]);
|
|
5634
|
+
const [historyOpen, setHistoryOpen] = React9.useState(false);
|
|
5635
|
+
const [dynamicIslandNotification, setDynamicIslandNotification] = React9.useState(null);
|
|
5636
|
+
const addNotification = React9.useCallback((notification) => {
|
|
6425
5637
|
const notificationId = Math.random().toString(36).substring(2, 9);
|
|
6426
5638
|
const newNotification = { ...notification, id: notificationId, timestamp: /* @__PURE__ */ new Date() };
|
|
6427
5639
|
setDynamicIslandNotification(newNotification);
|
|
6428
5640
|
setHistory((previousHistory) => [newNotification, ...previousHistory].slice(0, 50));
|
|
6429
5641
|
}, []);
|
|
6430
|
-
const clearHistory =
|
|
5642
|
+
const clearHistory = React9.useCallback(() => {
|
|
6431
5643
|
setHistory([]);
|
|
6432
5644
|
}, []);
|
|
6433
|
-
const removeFromHistory =
|
|
5645
|
+
const removeFromHistory = React9.useCallback((notificationId) => {
|
|
6434
5646
|
setHistory((previousHistory) => previousHistory.filter((historyItem) => historyItem.id !== notificationId));
|
|
6435
5647
|
}, []);
|
|
6436
|
-
const openHistory =
|
|
6437
|
-
const closeHistory =
|
|
6438
|
-
const success =
|
|
5648
|
+
const openHistory = React9.useCallback(() => setHistoryOpen(true), []);
|
|
5649
|
+
const closeHistory = React9.useCallback(() => setHistoryOpen(false), []);
|
|
5650
|
+
const success = React9.useCallback((title, message) => {
|
|
6439
5651
|
addNotification({ type: "success", title, message });
|
|
6440
5652
|
}, [addNotification]);
|
|
6441
|
-
const error =
|
|
5653
|
+
const error = React9.useCallback((title, message) => {
|
|
6442
5654
|
addNotification({ type: "error", title, message });
|
|
6443
5655
|
}, [addNotification]);
|
|
6444
|
-
const warning =
|
|
5656
|
+
const warning = React9.useCallback((title, message) => {
|
|
6445
5657
|
addNotification({ type: "warning", title, message });
|
|
6446
5658
|
}, [addNotification]);
|
|
6447
|
-
const info =
|
|
5659
|
+
const info = React9.useCallback((title, message) => {
|
|
6448
5660
|
addNotification({ type: "info", title, message });
|
|
6449
5661
|
}, [addNotification]);
|
|
6450
5662
|
const getDynamicIslandIcon = (type) => {
|
|
@@ -6642,13 +5854,13 @@ var CONTAINER_STYLES = {
|
|
|
6642
5854
|
glass: "bg-white/70 dark:bg-gray-800/70 backdrop-blur-xl border border-white/20 dark:border-gray-700/50 shadow-lg shadow-black/5",
|
|
6643
5855
|
minimal: "rounded-lg"
|
|
6644
5856
|
};
|
|
6645
|
-
var Container =
|
|
5857
|
+
var Container = React9__namespace.default.forwardRef(
|
|
6646
5858
|
({ variant = "card", className, children, ...props }, ref) => {
|
|
6647
5859
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6648
5860
|
"div",
|
|
6649
5861
|
{
|
|
6650
5862
|
ref,
|
|
6651
|
-
className:
|
|
5863
|
+
className: clsx4__default.default(CONTAINER_STYLES[variant], className),
|
|
6652
5864
|
...props,
|
|
6653
5865
|
children
|
|
6654
5866
|
}
|
|
@@ -6656,9 +5868,9 @@ var Container = React12__namespace.default.forwardRef(
|
|
|
6656
5868
|
}
|
|
6657
5869
|
);
|
|
6658
5870
|
Container.displayName = "Container";
|
|
6659
|
-
var FormField =
|
|
5871
|
+
var FormField = React9__namespace.default.forwardRef(
|
|
6660
5872
|
({ label, error, required, helperText, children, htmlFor, className, ...props }, ref) => {
|
|
6661
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className:
|
|
5873
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: clsx4__default.default("space-y-1.5", className), ...props, children: [
|
|
6662
5874
|
label && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6663
5875
|
"label",
|
|
6664
5876
|
{
|
|
@@ -6677,9 +5889,9 @@ var FormField = React12__namespace.default.forwardRef(
|
|
|
6677
5889
|
}
|
|
6678
5890
|
);
|
|
6679
5891
|
FormField.displayName = "FormField";
|
|
6680
|
-
var FormSection =
|
|
5892
|
+
var FormSection = React9__namespace.default.forwardRef(
|
|
6681
5893
|
({ title, description, children, className, ...props }, ref) => {
|
|
6682
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className:
|
|
5894
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: clsx4__default.default("space-y-4", className), ...props, children: [
|
|
6683
5895
|
(title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
6684
5896
|
title && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base font-semibold text-gray-900 dark:text-white", children: title }),
|
|
6685
5897
|
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-gray-600 dark:text-gray-400", children: description })
|
|
@@ -6701,7 +5913,7 @@ var SPACING_STYLES = {
|
|
|
6701
5913
|
card: "p-4",
|
|
6702
5914
|
highlighted: "p-4"
|
|
6703
5915
|
};
|
|
6704
|
-
var ListItem =
|
|
5916
|
+
var ListItem = React9__namespace.default.forwardRef(
|
|
6705
5917
|
({
|
|
6706
5918
|
icon,
|
|
6707
5919
|
title,
|
|
@@ -6716,7 +5928,7 @@ var ListItem = React12__namespace.default.forwardRef(
|
|
|
6716
5928
|
"div",
|
|
6717
5929
|
{
|
|
6718
5930
|
ref,
|
|
6719
|
-
className:
|
|
5931
|
+
className: clsx4__default.default(
|
|
6720
5932
|
"flex items-start justify-between gap-4 rounded-lg transition-all duration-200",
|
|
6721
5933
|
CONTAINER_STYLES2[variant],
|
|
6722
5934
|
SPACING_STYLES[variant],
|
|
@@ -6738,7 +5950,7 @@ var ListItem = React12__namespace.default.forwardRef(
|
|
|
6738
5950
|
{
|
|
6739
5951
|
onClick: action.onClick,
|
|
6740
5952
|
disabled: action.disabled,
|
|
6741
|
-
className:
|
|
5953
|
+
className: clsx4__default.default(
|
|
6742
5954
|
"px-3 py-1.5 rounded-lg text-xs font-medium transition-colors duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-indigo-500/70 dark:ring-offset-gray-900",
|
|
6743
5955
|
action.variant === "danger" ? "text-red-700 dark:text-red-300 hover:bg-red-500/15 dark:hover:bg-red-500/20 disabled:opacity-50" : "text-indigo-700 dark:text-indigo-300 hover:bg-indigo-500/15 dark:hover:bg-indigo-500/20 disabled:opacity-50"
|
|
6744
5956
|
),
|
|
@@ -6772,7 +5984,7 @@ function ProfileIdentityCard({
|
|
|
6772
5984
|
] })
|
|
6773
5985
|
] }) });
|
|
6774
5986
|
}
|
|
6775
|
-
var SidebarContext =
|
|
5987
|
+
var SidebarContext = React9.createContext(null);
|
|
6776
5988
|
var SIDEBAR_TYPE = /* @__PURE__ */ Symbol("GlassModal.Sidebar");
|
|
6777
5989
|
var SECTION_TYPE = /* @__PURE__ */ Symbol("GlassModal.Section");
|
|
6778
5990
|
var GROUP_TYPE = /* @__PURE__ */ Symbol("GlassModal.Group");
|
|
@@ -6807,12 +6019,12 @@ function isSlotType(child, type) {
|
|
|
6807
6019
|
return child.type?.__type === type;
|
|
6808
6020
|
}
|
|
6809
6021
|
function findSlot(children, type) {
|
|
6810
|
-
const arr =
|
|
6811
|
-
return arr.find((c) =>
|
|
6022
|
+
const arr = React9.Children.toArray(children);
|
|
6023
|
+
return arr.find((c) => React9.isValidElement(c) && isSlotType(c, type));
|
|
6812
6024
|
}
|
|
6813
6025
|
function filterNonSlots(children) {
|
|
6814
|
-
return
|
|
6815
|
-
(c) => !(
|
|
6026
|
+
return React9.Children.toArray(children).filter(
|
|
6027
|
+
(c) => !(React9.isValidElement(c) && c.type?.__type)
|
|
6816
6028
|
);
|
|
6817
6029
|
}
|
|
6818
6030
|
var SIZE_CLASSES = {
|
|
@@ -6861,8 +6073,8 @@ function SidebarLayout({
|
|
|
6861
6073
|
const sidebarFooterEl = findSlot(sidebarChildren, SIDEBAR_FOOTER_TYPE);
|
|
6862
6074
|
const sections = [];
|
|
6863
6075
|
function collectSections(node, group) {
|
|
6864
|
-
|
|
6865
|
-
if (!
|
|
6076
|
+
React9.Children.forEach(node, (child) => {
|
|
6077
|
+
if (!React9.isValidElement(child)) return;
|
|
6866
6078
|
if (isSlotType(child, GROUP_TYPE)) {
|
|
6867
6079
|
const groupProps = child.props;
|
|
6868
6080
|
collectSections(groupProps.children, groupProps.label);
|
|
@@ -6880,7 +6092,7 @@ function SidebarLayout({
|
|
|
6880
6092
|
});
|
|
6881
6093
|
}
|
|
6882
6094
|
collectSections(sidebarChildren);
|
|
6883
|
-
const [activeSectionId, setActiveSectionId] =
|
|
6095
|
+
const [activeSectionId, setActiveSectionId] = React9.useState(defaultSection ?? sections[0]?.id ?? "");
|
|
6884
6096
|
const groups = [];
|
|
6885
6097
|
for (const section of sections) {
|
|
6886
6098
|
const lastGroup = groups.at(-1);
|
|
@@ -7055,29 +6267,29 @@ function GlassModal({
|
|
|
7055
6267
|
panelTestId
|
|
7056
6268
|
}) {
|
|
7057
6269
|
const hasTitle = !!title;
|
|
7058
|
-
const sidebarElement =
|
|
7059
|
-
(c) =>
|
|
6270
|
+
const sidebarElement = React9.Children.toArray(children).find(
|
|
6271
|
+
(c) => React9.isValidElement(c) && isSlotType(c, SIDEBAR_TYPE)
|
|
7060
6272
|
);
|
|
7061
6273
|
const footerElement = findSlot(children, FOOTER_TYPE);
|
|
7062
6274
|
const nonSlotChildren = filterNonSlots(children);
|
|
7063
6275
|
const resolvedFooter = footer ?? (footerElement ? footerElement.props.children : void 0) ?? (showFormFooter ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row justify-end gap-2 sm:gap-3", children: [
|
|
7064
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { type: "button", onClick: onClose, disabled: isLoading, outline: true, className: "w-full sm:w-auto", "data-testid": "form-modal-cancel", children: cancelLabel ?? "Cancel" }),
|
|
7065
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { type: "submit", disabled: submitDisabled, loading: isLoading, loadingText: submitLabel, color: "ios-glass-blue", className: "w-full sm:w-auto", "data-testid": "form-modal-submit", children: submitLabel ?? "Save" })
|
|
6276
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", onClick: onClose, disabled: isLoading, outline: true, className: "w-full sm:w-auto", "data-testid": "form-modal-cancel", children: cancelLabel ?? "Cancel" }),
|
|
6277
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "submit", disabled: submitDisabled, loading: isLoading, loadingText: submitLabel, color: "ios-glass-blue", className: "w-full sm:w-auto", "data-testid": "form-modal-submit", children: submitLabel ?? "Save" })
|
|
7066
6278
|
] }) : void 0);
|
|
7067
|
-
const handleSubmit =
|
|
6279
|
+
const handleSubmit = React9.useCallback((event) => {
|
|
7068
6280
|
event.preventDefault();
|
|
7069
6281
|
onSubmit?.(event);
|
|
7070
6282
|
}, [onSubmit]);
|
|
7071
6283
|
if (!hasTitle) {
|
|
7072
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7073
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7074
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: contentClassName ?? "fixed inset-0 flex items-center justify-center overflow-y-auto p-3 sm:p-5 lg:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6284
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Headless3.Dialog, { open, onClose, className: `relative ${zIndex}`, children: [
|
|
6285
|
+
/* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogBackdrop, { className: "fixed inset-0 bg-slate-900/40 backdrop-blur-md dark:bg-black/50", "data-testid": overlayTestId }),
|
|
6286
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: contentClassName ?? "fixed inset-0 flex items-center justify-center overflow-y-auto p-3 sm:p-5 lg:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogPanel, { className: panelClassName ?? "rounded-2xl", "data-testid": panelTestId, children }) })
|
|
7075
6287
|
] });
|
|
7076
6288
|
}
|
|
7077
6289
|
if (sidebar && !sidebarElement) {
|
|
7078
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7079
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7080
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 flex items-center justify-center overflow-y-auto p-2 sm:p-4 lg:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6290
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Headless3.Dialog, { open, onClose, className: `relative ${zIndex}`, "aria-labelledby": "modal-title", children: [
|
|
6291
|
+
/* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogBackdrop, { className: "fixed inset-0 bg-slate-900/40 backdrop-blur-md dark:bg-black/50", "data-testid": overlayTestId }),
|
|
6292
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 flex items-center justify-center overflow-y-auto p-2 sm:p-4 lg:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogPanel, { className: `w-full max-w-[90vw] xl:max-w-[1400px] overflow-hidden rounded-2xl liquid-surface-strong shadow-[0_40px_100px_-30px_rgba(0,0,0,0.55)] ${className}`, "data-testid": panelTestId, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7081
6293
|
PropBasedSidebarLayout,
|
|
7082
6294
|
{
|
|
7083
6295
|
sidebar,
|
|
@@ -7095,9 +6307,9 @@ function GlassModal({
|
|
|
7095
6307
|
] });
|
|
7096
6308
|
}
|
|
7097
6309
|
if (sidebarElement) {
|
|
7098
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7099
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7100
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 flex items-center justify-center overflow-y-auto p-2 sm:p-4 lg:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6310
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Headless3.Dialog, { open, onClose, className: `relative ${zIndex}`, "aria-labelledby": "modal-title", children: [
|
|
6311
|
+
/* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogBackdrop, { className: "fixed inset-0 bg-slate-900/40 backdrop-blur-md dark:bg-black/50", "data-testid": overlayTestId }),
|
|
6312
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 flex items-center justify-center overflow-y-auto p-2 sm:p-4 lg:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogPanel, { className: `w-full max-w-[90vw] xl:max-w-[1400px] overflow-hidden rounded-2xl liquid-surface-strong shadow-[0_40px_100px_-30px_rgba(0,0,0,0.55)] ${className}`, "data-testid": panelTestId, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7101
6313
|
SidebarLayout,
|
|
7102
6314
|
{
|
|
7103
6315
|
sidebarElement,
|
|
@@ -7133,9 +6345,9 @@ function GlassModal({
|
|
|
7133
6345
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-[72vh] overflow-y-auto px-5 pb-5 sm:px-8 sm:pb-8", children: nonSlotChildren }),
|
|
7134
6346
|
resolvedFooter && /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": "modal-footer", className: "border-t border-white/20 px-5 py-4 dark:border-white/10 sm:px-8", children: resolvedFooter })
|
|
7135
6347
|
] });
|
|
7136
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7137
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7138
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 overflow-y-auto p-3 sm:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6348
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Headless3.Dialog, { open, onClose, className: `relative ${zIndex}`, "aria-labelledby": "modal-title", children: [
|
|
6349
|
+
/* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogBackdrop, { className: "fixed inset-0 bg-slate-900/40 backdrop-blur-md dark:bg-black/50", "data-testid": overlayTestId }),
|
|
6350
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 overflow-y-auto p-3 sm:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogPanel, { className: `liquid-surface-strong w-full overflow-hidden rounded-2xl mx-auto mt-[4vh] sm:mt-[8vh] ${SIZE_CLASSES[maxWidth]} ${className}`, "data-testid": panelTestId, children: onSubmit ? /* @__PURE__ */ jsxRuntime.jsx("form", { onSubmit: handleSubmit, children: inner }) : inner }) })
|
|
7139
6351
|
] });
|
|
7140
6352
|
}
|
|
7141
6353
|
GlassModal.Sidebar = Sidebar;
|
|
@@ -7150,16 +6362,16 @@ function Text({ className, ...props }) {
|
|
|
7150
6362
|
{
|
|
7151
6363
|
"data-slot": "text",
|
|
7152
6364
|
...props,
|
|
7153
|
-
className:
|
|
6365
|
+
className: clsx4__default.default(className, "text-base/6 text-zinc-500 sm:text-sm/6 dark:text-zinc-400")
|
|
7154
6366
|
}
|
|
7155
6367
|
);
|
|
7156
6368
|
}
|
|
7157
6369
|
function TextLink({ className, ...props }) {
|
|
7158
6370
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7159
|
-
Link,
|
|
6371
|
+
chunkBHOT22QL_js.Link,
|
|
7160
6372
|
{
|
|
7161
6373
|
...props,
|
|
7162
|
-
className:
|
|
6374
|
+
className: clsx4__default.default(
|
|
7163
6375
|
className,
|
|
7164
6376
|
"text-zinc-950 underline decoration-zinc-950/50 data-hover:decoration-zinc-950 dark:text-white dark:decoration-white/50 dark:data-hover:decoration-white"
|
|
7165
6377
|
)
|
|
@@ -7167,14 +6379,14 @@ function TextLink({ className, ...props }) {
|
|
|
7167
6379
|
);
|
|
7168
6380
|
}
|
|
7169
6381
|
function Strong({ className, ...props }) {
|
|
7170
|
-
return /* @__PURE__ */ jsxRuntime.jsx("strong", { ...props, className:
|
|
6382
|
+
return /* @__PURE__ */ jsxRuntime.jsx("strong", { ...props, className: clsx4__default.default(className, "font-medium text-zinc-950 dark:text-white") });
|
|
7171
6383
|
}
|
|
7172
6384
|
function Code({ className, ...props }) {
|
|
7173
6385
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7174
6386
|
"code",
|
|
7175
6387
|
{
|
|
7176
6388
|
...props,
|
|
7177
|
-
className:
|
|
6389
|
+
className: clsx4__default.default(
|
|
7178
6390
|
className,
|
|
7179
6391
|
"rounded-xs border border-zinc-950/10 bg-zinc-950/2.5 px-0.5 text-sm font-medium text-zinc-950 sm:text-[0.8125rem] dark:border-white/20 dark:bg-white/5 dark:text-white"
|
|
7180
6392
|
)
|
|
@@ -7198,19 +6410,19 @@ function Dialog4({
|
|
|
7198
6410
|
children,
|
|
7199
6411
|
...props
|
|
7200
6412
|
}) {
|
|
7201
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6413
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Headless3__namespace.Dialog, { ...props, children: [
|
|
7202
6414
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7203
|
-
|
|
6415
|
+
Headless3__namespace.DialogBackdrop,
|
|
7204
6416
|
{
|
|
7205
6417
|
transition: true,
|
|
7206
6418
|
className: "fixed inset-0 flex w-screen justify-center overflow-y-auto bg-slate-950/25 backdrop-blur-sm px-2 py-2 transition duration-100 focus:outline-0 data-closed:opacity-0 data-enter:ease-out data-leave:ease-in sm:px-6 sm:py-8 lg:px-8 lg:py-16 dark:bg-slate-950/50"
|
|
7207
6419
|
}
|
|
7208
6420
|
),
|
|
7209
6421
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 w-screen overflow-y-auto pt-6 sm:pt-0", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid min-h-full grid-rows-[1fr_auto] justify-items-center sm:grid-rows-[1fr_auto_3fr] sm:p-4", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7210
|
-
|
|
6422
|
+
Headless3__namespace.DialogPanel,
|
|
7211
6423
|
{
|
|
7212
6424
|
transition: true,
|
|
7213
|
-
className:
|
|
6425
|
+
className: clsx4__default.default(
|
|
7214
6426
|
className,
|
|
7215
6427
|
sizes2[size],
|
|
7216
6428
|
"row-start-2 w-full min-w-0 rounded-t-3xl bg-white/80 backdrop-blur-2xl p-(--gutter) shadow-lg ring-1 ring-white/30 [--gutter:--spacing(8)] sm:mb-auto sm:rounded-2xl dark:bg-slate-900/80 dark:ring-white/10 forced-colors:outline",
|
|
@@ -7226,10 +6438,10 @@ function DialogTitle3({
|
|
|
7226
6438
|
...props
|
|
7227
6439
|
}) {
|
|
7228
6440
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7229
|
-
|
|
6441
|
+
Headless3__namespace.DialogTitle,
|
|
7230
6442
|
{
|
|
7231
6443
|
...props,
|
|
7232
|
-
className:
|
|
6444
|
+
className: clsx4__default.default(
|
|
7233
6445
|
className,
|
|
7234
6446
|
"text-lg/6 font-semibold text-balance text-slate-950 sm:text-base/6 dark:text-white"
|
|
7235
6447
|
)
|
|
@@ -7241,11 +6453,11 @@ function DialogDescription({
|
|
|
7241
6453
|
...props
|
|
7242
6454
|
}) {
|
|
7243
6455
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7244
|
-
|
|
6456
|
+
Headless3__namespace.Description,
|
|
7245
6457
|
{
|
|
7246
6458
|
as: Text,
|
|
7247
6459
|
...props,
|
|
7248
|
-
className:
|
|
6460
|
+
className: clsx4__default.default(className, "mt-2 text-pretty")
|
|
7249
6461
|
}
|
|
7250
6462
|
);
|
|
7251
6463
|
}
|
|
@@ -7253,7 +6465,7 @@ function DialogBody({
|
|
|
7253
6465
|
className,
|
|
7254
6466
|
...props
|
|
7255
6467
|
}) {
|
|
7256
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className:
|
|
6468
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...props, className: clsx4__default.default(className, "mt-6") });
|
|
7257
6469
|
}
|
|
7258
6470
|
function DialogActions({
|
|
7259
6471
|
className,
|
|
@@ -7263,7 +6475,7 @@ function DialogActions({
|
|
|
7263
6475
|
"div",
|
|
7264
6476
|
{
|
|
7265
6477
|
...props,
|
|
7266
|
-
className:
|
|
6478
|
+
className: clsx4__default.default(
|
|
7267
6479
|
className,
|
|
7268
6480
|
"mt-8 flex flex-col-reverse items-center justify-end gap-3 *:w-full sm:flex-row sm:*:w-auto"
|
|
7269
6481
|
)
|
|
@@ -7357,7 +6569,7 @@ function ChipPicker({
|
|
|
7357
6569
|
var DEFAULT_COPYABLE_CLASSNAME = "liquid-surface-strong text-gray-500 dark:text-gray-400";
|
|
7358
6570
|
function CopyableId({ id, copyValue, label, className }) {
|
|
7359
6571
|
const t = chunkYXN2K77G_js.useTranslations();
|
|
7360
|
-
const [copied, setCopied] =
|
|
6572
|
+
const [copied, setCopied] = React9.useState(false);
|
|
7361
6573
|
const valueToCopy = copyValue ?? id;
|
|
7362
6574
|
const handleCopy = async (e) => {
|
|
7363
6575
|
e.stopPropagation();
|
|
@@ -7402,8 +6614,8 @@ function ContextMenu({
|
|
|
7402
6614
|
minWidthClass = "min-w-[180px]",
|
|
7403
6615
|
testId
|
|
7404
6616
|
}) {
|
|
7405
|
-
const menuRef =
|
|
7406
|
-
|
|
6617
|
+
const menuRef = React9.useRef(null);
|
|
6618
|
+
React9.useEffect(() => {
|
|
7407
6619
|
function handleClickOutside(event) {
|
|
7408
6620
|
if (menuRef.current && !menuRef.current.contains(event.target)) {
|
|
7409
6621
|
onClose();
|
|
@@ -7485,13 +6697,13 @@ function DatePicker({
|
|
|
7485
6697
|
const appLocale = chunkYXN2K77G_js.useLocale();
|
|
7486
6698
|
const t = chunkYXN2K77G_js.useTranslations("datePicker");
|
|
7487
6699
|
const dateFnsLocale = dateFnsLocales[appLocale] ?? locale.ptBR;
|
|
7488
|
-
const [open, setOpen] =
|
|
7489
|
-
const [viewMode, setViewMode] =
|
|
7490
|
-
const [viewDate, setViewDate] =
|
|
7491
|
-
const today =
|
|
7492
|
-
const dayNames =
|
|
7493
|
-
const monthNames =
|
|
7494
|
-
const calendarDays =
|
|
6700
|
+
const [open, setOpen] = React9.useState(false);
|
|
6701
|
+
const [viewMode, setViewMode] = React9.useState("days");
|
|
6702
|
+
const [viewDate, setViewDate] = React9.useState(() => value ?? /* @__PURE__ */ new Date());
|
|
6703
|
+
const today = React9.useMemo(() => dateFns.startOfDay(/* @__PURE__ */ new Date()), []);
|
|
6704
|
+
const dayNames = React9.useMemo(() => getLocalizedDayNames(dateFnsLocale), [dateFnsLocale]);
|
|
6705
|
+
const monthNames = React9.useMemo(() => getLocalizedMonthNames(dateFnsLocale), [dateFnsLocale]);
|
|
6706
|
+
const calendarDays = React9.useMemo(() => {
|
|
7495
6707
|
const monthStart = dateFns.startOfMonth(viewDate);
|
|
7496
6708
|
const monthEnd = dateFns.endOfMonth(viewDate);
|
|
7497
6709
|
const days = dateFns.eachDayOfInterval({ start: monthStart, end: monthEnd });
|
|
@@ -7499,20 +6711,20 @@ function DatePicker({
|
|
|
7499
6711
|
const blanks = Array.from({ length: startDow }).fill(null);
|
|
7500
6712
|
return [...blanks, ...days];
|
|
7501
6713
|
}, [viewDate]);
|
|
7502
|
-
const handlePrevMonth =
|
|
6714
|
+
const handlePrevMonth = React9.useCallback(() => {
|
|
7503
6715
|
setViewDate((d) => dateFns.subMonths(d, 1));
|
|
7504
6716
|
}, []);
|
|
7505
|
-
const handleNextMonth =
|
|
6717
|
+
const handleNextMonth = React9.useCallback(() => {
|
|
7506
6718
|
setViewDate((d) => dateFns.addMonths(d, 1));
|
|
7507
6719
|
}, []);
|
|
7508
|
-
const handleSelectDay =
|
|
6720
|
+
const handleSelectDay = React9.useCallback(
|
|
7509
6721
|
(day) => {
|
|
7510
6722
|
onChange(day);
|
|
7511
6723
|
setOpen(false);
|
|
7512
6724
|
},
|
|
7513
6725
|
[onChange]
|
|
7514
6726
|
);
|
|
7515
|
-
const handleSelectMonth =
|
|
6727
|
+
const handleSelectMonth = React9.useCallback((monthIndex) => {
|
|
7516
6728
|
setViewDate((d) => {
|
|
7517
6729
|
const next = new Date(d);
|
|
7518
6730
|
next.setMonth(monthIndex);
|
|
@@ -7520,35 +6732,35 @@ function DatePicker({
|
|
|
7520
6732
|
});
|
|
7521
6733
|
setViewMode("days");
|
|
7522
6734
|
}, []);
|
|
7523
|
-
const handleSelectYear =
|
|
6735
|
+
const handleSelectYear = React9.useCallback((year) => {
|
|
7524
6736
|
setViewDate((d) => {
|
|
7525
6737
|
const next = new Date(d);
|
|
7526
6738
|
next.setFullYear(year);
|
|
7527
6739
|
return next;
|
|
7528
6740
|
});
|
|
7529
6741
|
}, []);
|
|
7530
|
-
const isDayDisabled =
|
|
6742
|
+
const isDayDisabled = React9.useCallback(
|
|
7531
6743
|
(day) => {
|
|
7532
6744
|
if (!disableFuture) return false;
|
|
7533
6745
|
return dateFns.isAfter(dateFns.startOfDay(day), today);
|
|
7534
6746
|
},
|
|
7535
6747
|
[disableFuture, today]
|
|
7536
6748
|
);
|
|
7537
|
-
const yearRange =
|
|
6749
|
+
const yearRange = React9.useMemo(() => {
|
|
7538
6750
|
const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
|
|
7539
6751
|
const start = currentYear - 10;
|
|
7540
6752
|
const end = disableFuture ? currentYear : currentYear + 5;
|
|
7541
6753
|
return Array.from({ length: end - start + 1 }, (_, i) => start + i);
|
|
7542
6754
|
}, [disableFuture]);
|
|
7543
|
-
const displayText =
|
|
6755
|
+
const displayText = React9.useMemo(() => {
|
|
7544
6756
|
if (!value) return placeholder ?? t("selectDate");
|
|
7545
6757
|
return dateFns.format(value, "PPP", { locale: dateFnsLocale });
|
|
7546
6758
|
}, [value, placeholder, t, dateFnsLocale]);
|
|
7547
|
-
const monthYearLabel =
|
|
6759
|
+
const monthYearLabel = React9.useMemo(
|
|
7548
6760
|
() => dateFns.format(viewDate, "MMMM yyyy", { locale: dateFnsLocale }),
|
|
7549
6761
|
[viewDate, dateFnsLocale]
|
|
7550
6762
|
);
|
|
7551
|
-
const handleOpenChange =
|
|
6763
|
+
const handleOpenChange = React9.useCallback(
|
|
7552
6764
|
(nextOpen) => {
|
|
7553
6765
|
if (nextOpen) {
|
|
7554
6766
|
setViewDate(value ?? /* @__PURE__ */ new Date());
|
|
@@ -7750,23 +6962,23 @@ function TimePicker({
|
|
|
7750
6962
|
className = ""
|
|
7751
6963
|
}) {
|
|
7752
6964
|
const t = chunkYXN2K77G_js.useTranslations("timePicker");
|
|
7753
|
-
const [open, setOpen] =
|
|
7754
|
-
const [draftHours, setDraftHours] =
|
|
7755
|
-
const [draftMinutes, setDraftMinutes] =
|
|
7756
|
-
const hoursRef =
|
|
7757
|
-
const isToday =
|
|
6965
|
+
const [open, setOpen] = React9.useState(false);
|
|
6966
|
+
const [draftHours, setDraftHours] = React9.useState(value ? value.hours : 0);
|
|
6967
|
+
const [draftMinutes, setDraftMinutes] = React9.useState(value ? value.minutes : 0);
|
|
6968
|
+
const hoursRef = React9.useRef(null);
|
|
6969
|
+
const isToday = React9.useMemo(() => {
|
|
7758
6970
|
if (!selectedDate) return false;
|
|
7759
6971
|
return dateFns.isSameDay(dateFns.startOfDay(selectedDate), dateFns.startOfDay(/* @__PURE__ */ new Date()));
|
|
7760
6972
|
}, [selectedDate]);
|
|
7761
|
-
const isFuture =
|
|
6973
|
+
const isFuture = React9.useMemo(() => {
|
|
7762
6974
|
if (!isToday) return false;
|
|
7763
6975
|
return isFutureTime(draftHours, draftMinutes);
|
|
7764
6976
|
}, [isToday, draftHours, draftMinutes]);
|
|
7765
|
-
const displayText =
|
|
6977
|
+
const displayText = React9.useMemo(() => {
|
|
7766
6978
|
if (!value) return placeholder ?? t("selectTime");
|
|
7767
6979
|
return `${padTwo(value.hours)}:${padTwo(value.minutes)}`;
|
|
7768
6980
|
}, [value, placeholder, t]);
|
|
7769
|
-
const handleOpenChange =
|
|
6981
|
+
const handleOpenChange = React9.useCallback(
|
|
7770
6982
|
(nextOpen) => {
|
|
7771
6983
|
if (nextOpen) {
|
|
7772
6984
|
setDraftHours(value ? value.hours : 0);
|
|
@@ -7777,12 +6989,12 @@ function TimePicker({
|
|
|
7777
6989
|
},
|
|
7778
6990
|
[value]
|
|
7779
6991
|
);
|
|
7780
|
-
|
|
6992
|
+
React9.useEffect(() => {
|
|
7781
6993
|
if (open) {
|
|
7782
6994
|
setTimeout(() => hoursRef.current?.select(), 80);
|
|
7783
6995
|
}
|
|
7784
6996
|
}, [open]);
|
|
7785
|
-
const handleHoursChange =
|
|
6997
|
+
const handleHoursChange = React9.useCallback((e) => {
|
|
7786
6998
|
const raw = e.target.value.replace(/\D/g, "");
|
|
7787
6999
|
if (raw === "") {
|
|
7788
7000
|
setDraftHours(0);
|
|
@@ -7790,7 +7002,7 @@ function TimePicker({
|
|
|
7790
7002
|
}
|
|
7791
7003
|
setDraftHours(clamp(parseInt(raw, 10), 0, 23));
|
|
7792
7004
|
}, []);
|
|
7793
|
-
const handleMinutesChange =
|
|
7005
|
+
const handleMinutesChange = React9.useCallback((e) => {
|
|
7794
7006
|
const raw = e.target.value.replace(/\D/g, "");
|
|
7795
7007
|
if (raw === "") {
|
|
7796
7008
|
setDraftMinutes(0);
|
|
@@ -7798,12 +7010,12 @@ function TimePicker({
|
|
|
7798
7010
|
}
|
|
7799
7011
|
setDraftMinutes(clamp(parseInt(raw, 10), 0, 59));
|
|
7800
7012
|
}, []);
|
|
7801
|
-
const handleConfirm =
|
|
7013
|
+
const handleConfirm = React9.useCallback(() => {
|
|
7802
7014
|
if (isFuture) return;
|
|
7803
7015
|
onChange({ hours: draftHours, minutes: draftMinutes });
|
|
7804
7016
|
setOpen(false);
|
|
7805
7017
|
}, [draftHours, draftMinutes, isFuture, onChange]);
|
|
7806
|
-
const handleKeyDown =
|
|
7018
|
+
const handleKeyDown = React9.useCallback(
|
|
7807
7019
|
(e) => {
|
|
7808
7020
|
if (e.key === "Enter") {
|
|
7809
7021
|
handleConfirm();
|
|
@@ -7921,7 +7133,7 @@ function PageHeading({
|
|
|
7921
7133
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
7922
7134
|
breadcrumbs?.length ? /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": t("breadcrumb"), className: "mb-2", children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400", children: breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-2", children: [
|
|
7923
7135
|
index > 0 ? /* @__PURE__ */ jsxRuntime.jsx(solid.ChevronRightIcon, { className: "h-4 w-4", "aria-hidden": "true" }) : null,
|
|
7924
|
-
/* @__PURE__ */ jsxRuntime.jsx(Link, { href: crumb.href, className: "hover:text-gray-800 dark:hover:text-white", children: crumb.name })
|
|
7136
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Link, { href: crumb.href, className: "hover:text-gray-800 dark:hover:text-white", children: crumb.name })
|
|
7925
7137
|
] }, `${crumb.href}-${crumb.name}`)) }) }) : null,
|
|
7926
7138
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7927
7139
|
HeroBlock,
|
|
@@ -7981,7 +7193,7 @@ function FormInput({
|
|
|
7981
7193
|
onValueChange,
|
|
7982
7194
|
...props
|
|
7983
7195
|
}) {
|
|
7984
|
-
const autoId =
|
|
7196
|
+
const autoId = React9.useId();
|
|
7985
7197
|
const inputId = props.id ?? autoId;
|
|
7986
7198
|
const errorId = `${inputId}-error`;
|
|
7987
7199
|
const hintId = `${inputId}-hint`;
|
|
@@ -8019,7 +7231,7 @@ function FormTextarea({
|
|
|
8019
7231
|
onValueChange,
|
|
8020
7232
|
...props
|
|
8021
7233
|
}) {
|
|
8022
|
-
const autoId =
|
|
7234
|
+
const autoId = React9.useId();
|
|
8023
7235
|
const inputId = props.id ?? autoId;
|
|
8024
7236
|
const errorId = `${inputId}-error`;
|
|
8025
7237
|
const hintId = `${inputId}-hint`;
|
|
@@ -8073,12 +7285,12 @@ function FormPriceInput({
|
|
|
8073
7285
|
max,
|
|
8074
7286
|
className = ""
|
|
8075
7287
|
}) {
|
|
8076
|
-
const autoId =
|
|
7288
|
+
const autoId = React9.useId();
|
|
8077
7289
|
const inputId = autoId;
|
|
8078
7290
|
const errorId = `${inputId}-error`;
|
|
8079
7291
|
const hintId = `${inputId}-hint`;
|
|
8080
7292
|
const describedBy = error ? errorId : hint ? hintId : void 0;
|
|
8081
|
-
const
|
|
7293
|
+
const sizes3 = priceSizeConfig[priceSize ?? defaultPriceSize(inputSize)];
|
|
8082
7294
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": label ? `field-${label.toLowerCase().replace(/\s+/g, "-")}` : "form-field", children: [
|
|
8083
7295
|
label ? /* @__PURE__ */ jsxRuntime.jsxs("label", { htmlFor: inputId, className: `mb-1.5 block font-medium text-slate-700 dark:text-slate-300 ${labelClasses[inputSize]}`, children: [
|
|
8084
7296
|
label,
|
|
@@ -8088,7 +7300,7 @@ function FormPriceInput({
|
|
|
8088
7300
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8089
7301
|
"span",
|
|
8090
7302
|
{
|
|
8091
|
-
className: `absolute top-1/2 -translate-y-1/2 text-gray-400 dark:text-gray-500 pointer-events-none select-none ${
|
|
7303
|
+
className: `absolute top-1/2 -translate-y-1/2 text-gray-400 dark:text-gray-500 pointer-events-none select-none ${sizes3.symbol}`,
|
|
8092
7304
|
"aria-hidden": "true",
|
|
8093
7305
|
children: currencySymbol
|
|
8094
7306
|
}
|
|
@@ -8109,7 +7321,7 @@ function FormPriceInput({
|
|
|
8109
7321
|
"aria-invalid": error ? true : false,
|
|
8110
7322
|
"aria-describedby": describedBy,
|
|
8111
7323
|
"aria-label": label ? `${label} in ${currencySymbol}` : void 0,
|
|
8112
|
-
className: `w-full bg-transparent tabular-nums ${
|
|
7324
|
+
className: `w-full bg-transparent tabular-nums ${sizes3.input} ${sizes3.padding} text-gray-900 placeholder:text-slate-500 focus:outline-none dark:text-white dark:placeholder:text-gray-500 ${colorClass ?? ""} ${className}`
|
|
8113
7325
|
}
|
|
8114
7326
|
)
|
|
8115
7327
|
] }) }),
|
|
@@ -8127,7 +7339,7 @@ function FormSelect({
|
|
|
8127
7339
|
options,
|
|
8128
7340
|
...props
|
|
8129
7341
|
}) {
|
|
8130
|
-
const autoId =
|
|
7342
|
+
const autoId = React9.useId();
|
|
8131
7343
|
const inputId = props.id ?? autoId;
|
|
8132
7344
|
const errorId = `${inputId}-error`;
|
|
8133
7345
|
const hintId = `${inputId}-hint`;
|
|
@@ -8153,27 +7365,27 @@ function FormSelect({
|
|
|
8153
7365
|
/* @__PURE__ */ jsxRuntime.jsx(FieldMeta, { hint, error, errorId, hintId })
|
|
8154
7366
|
] });
|
|
8155
7367
|
}
|
|
8156
|
-
var Form =
|
|
7368
|
+
var Form = React9__namespace.default.forwardRef(
|
|
8157
7369
|
({ children, className, ...props }, ref) => {
|
|
8158
|
-
return /* @__PURE__ */ jsxRuntime.jsx("form", { ref, className:
|
|
7370
|
+
return /* @__PURE__ */ jsxRuntime.jsx("form", { ref, className: clsx4__default.default(className), ...props, children });
|
|
8159
7371
|
}
|
|
8160
7372
|
);
|
|
8161
7373
|
Form.displayName = "Form";
|
|
8162
|
-
var FormGrid =
|
|
7374
|
+
var FormGrid = React9__namespace.default.forwardRef(
|
|
8163
7375
|
({ children, className, ...props }, ref) => {
|
|
8164
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className:
|
|
7376
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx4__default.default("platform-form-grid", className), ...props, children });
|
|
8165
7377
|
}
|
|
8166
7378
|
);
|
|
8167
7379
|
FormGrid.displayName = "FormGrid";
|
|
8168
|
-
var InlineForm =
|
|
7380
|
+
var InlineForm = React9__namespace.default.forwardRef(
|
|
8169
7381
|
({ children, className, ...props }, ref) => {
|
|
8170
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className:
|
|
7382
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx4__default.default("platform-inline-form", className), ...props, children });
|
|
8171
7383
|
}
|
|
8172
7384
|
);
|
|
8173
7385
|
InlineForm.displayName = "InlineForm";
|
|
8174
|
-
var FormActionsRow =
|
|
7386
|
+
var FormActionsRow = React9__namespace.default.forwardRef(
|
|
8175
7387
|
({ children, className, ...props }, ref) => {
|
|
8176
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className:
|
|
7388
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx4__default.default("platform-form-actions", className), ...props, children });
|
|
8177
7389
|
}
|
|
8178
7390
|
);
|
|
8179
7391
|
FormActionsRow.displayName = "FormActionsRow";
|
|
@@ -8185,9 +7397,9 @@ function FormActions({
|
|
|
8185
7397
|
saveDisabled = false,
|
|
8186
7398
|
className
|
|
8187
7399
|
}) {
|
|
8188
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
8189
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { type: "button", outline: true, onClick: onCancel, children: cancelLabel }),
|
|
8190
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { type: "button", onClick: onSave, disabled: saveDisabled, children: saveLabel })
|
|
7400
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx4__default.default("flex justify-end gap-2 border-t border-gray-200 pt-4 dark:border-gray-700", className), children: [
|
|
7401
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", outline: true, onClick: onCancel, children: cancelLabel }),
|
|
7402
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { type: "button", onClick: onSave, disabled: saveDisabled, children: saveLabel })
|
|
8191
7403
|
] });
|
|
8192
7404
|
}
|
|
8193
7405
|
function FormToggle({
|
|
@@ -8329,7 +7541,7 @@ function BaseForm({
|
|
|
8329
7541
|
children,
|
|
8330
7542
|
showFooter && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2 pt-4", children: [
|
|
8331
7543
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8332
|
-
Button,
|
|
7544
|
+
chunkBHOT22QL_js.Button,
|
|
8333
7545
|
{
|
|
8334
7546
|
type: "submit",
|
|
8335
7547
|
color: "ios-glass-blue",
|
|
@@ -8341,7 +7553,7 @@ function BaseForm({
|
|
|
8341
7553
|
}
|
|
8342
7554
|
),
|
|
8343
7555
|
onCancel && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8344
|
-
Button,
|
|
7556
|
+
chunkBHOT22QL_js.Button,
|
|
8345
7557
|
{
|
|
8346
7558
|
type: "button",
|
|
8347
7559
|
outline: true,
|
|
@@ -8361,7 +7573,7 @@ function ExpandableHistoryList({
|
|
|
8361
7573
|
isLoading = false,
|
|
8362
7574
|
className = "space-y-3"
|
|
8363
7575
|
}) {
|
|
8364
|
-
const [expandedItemId, setExpandedItemId] =
|
|
7576
|
+
const [expandedItemId, setExpandedItemId] = React9.useState(null);
|
|
8365
7577
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className, children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-6 text-center text-sm text-gray-500 dark:text-gray-400", children: loadingLabel }) : items.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-6 text-center text-sm text-gray-500 dark:text-gray-400", children: emptyLabel }) : items.map((item) => {
|
|
8366
7578
|
const isExpanded = expandedItemId === item.id;
|
|
8367
7579
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-gray-200/80 dark:border-gray-700/80", children: [
|
|
@@ -8600,7 +7812,7 @@ function StepFormPage({
|
|
|
8600
7812
|
) }),
|
|
8601
7813
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6 flex items-center justify-between border-t border-white/30 pt-5 dark:border-white/10", children: [
|
|
8602
7814
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8603
|
-
Button,
|
|
7815
|
+
chunkBHOT22QL_js.Button,
|
|
8604
7816
|
{
|
|
8605
7817
|
type: "button",
|
|
8606
7818
|
onClick: handleBack,
|
|
@@ -8609,7 +7821,7 @@ function StepFormPage({
|
|
|
8609
7821
|
}
|
|
8610
7822
|
),
|
|
8611
7823
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8612
|
-
Button,
|
|
7824
|
+
chunkBHOT22QL_js.Button,
|
|
8613
7825
|
{
|
|
8614
7826
|
type: "button",
|
|
8615
7827
|
onClick: handleNext,
|
|
@@ -8705,7 +7917,7 @@ function SearchFilterToolbar({
|
|
|
8705
7917
|
)
|
|
8706
7918
|
] }),
|
|
8707
7919
|
!!children && onOpenFilters && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8708
|
-
Button,
|
|
7920
|
+
chunkBHOT22QL_js.Button,
|
|
8709
7921
|
{
|
|
8710
7922
|
type: "button",
|
|
8711
7923
|
onClick: onOpenFilters,
|
|
@@ -8720,31 +7932,31 @@ function SearchFilterToolbar({
|
|
|
8720
7932
|
),
|
|
8721
7933
|
actions
|
|
8722
7934
|
] }),
|
|
8723
|
-
!!children && onCloseFilters && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7935
|
+
!!children && onCloseFilters && /* @__PURE__ */ jsxRuntime.jsx(Headless3.Transition, { show: filtersOpen, as: React9.Fragment, children: /* @__PURE__ */ jsxRuntime.jsxs(Headless3.Dialog, { as: "div", className: "relative z-50", onClose: onCloseFilters, children: [
|
|
8724
7936
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8725
|
-
|
|
7937
|
+
Headless3.TransitionChild,
|
|
8726
7938
|
{
|
|
8727
|
-
as:
|
|
7939
|
+
as: React9.Fragment,
|
|
8728
7940
|
enter: "ease-out duration-200",
|
|
8729
7941
|
enterFrom: "opacity-0",
|
|
8730
7942
|
enterTo: "opacity-100",
|
|
8731
7943
|
leave: "ease-in duration-150",
|
|
8732
7944
|
leaveFrom: "opacity-100",
|
|
8733
7945
|
leaveTo: "opacity-0",
|
|
8734
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7946
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogBackdrop, { className: "fixed inset-0 bg-slate-900/35 backdrop-blur-md" })
|
|
8735
7947
|
}
|
|
8736
7948
|
),
|
|
8737
7949
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 overflow-y-auto p-3 sm:p-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto flex min-h-full max-w-2xl items-start justify-center pt-[8vh]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8738
|
-
|
|
7950
|
+
Headless3.TransitionChild,
|
|
8739
7951
|
{
|
|
8740
|
-
as:
|
|
7952
|
+
as: React9.Fragment,
|
|
8741
7953
|
enter: "ease-out duration-250",
|
|
8742
7954
|
enterFrom: "opacity-0 scale-95",
|
|
8743
7955
|
enterTo: "opacity-100 scale-100",
|
|
8744
7956
|
leave: "ease-in duration-180",
|
|
8745
7957
|
leaveFrom: "opacity-100 scale-100",
|
|
8746
7958
|
leaveTo: "opacity-0 scale-95",
|
|
8747
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7959
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(Headless3.DialogPanel, { className: "liquid-surface-strong w-full overflow-hidden rounded-2xl", children: [
|
|
8748
7960
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-white/30 px-5 py-4 dark:border-white/10", children: [
|
|
8749
7961
|
resolvedFiltersContext ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-center gap-2 text-slate-600 dark:text-white/70", children: [
|
|
8750
7962
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: resolvedFiltersContext.icon }),
|
|
@@ -8759,7 +7971,7 @@ function SearchFilterToolbar({
|
|
|
8759
7971
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-[72vh] overflow-y-auto p-4 sm:p-5", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-6", children }) }),
|
|
8760
7972
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-2 border-t border-white/30 p-4 dark:border-white/10", children: [
|
|
8761
7973
|
onClearFilters && activeFiltersCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8762
|
-
Button,
|
|
7974
|
+
chunkBHOT22QL_js.Button,
|
|
8763
7975
|
{
|
|
8764
7976
|
type: "button",
|
|
8765
7977
|
onClick: onClearFilters,
|
|
@@ -8769,7 +7981,7 @@ function SearchFilterToolbar({
|
|
|
8769
7981
|
}
|
|
8770
7982
|
),
|
|
8771
7983
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8772
|
-
Button,
|
|
7984
|
+
chunkBHOT22QL_js.Button,
|
|
8773
7985
|
{
|
|
8774
7986
|
type: "button",
|
|
8775
7987
|
onClick: onCloseFilters,
|
|
@@ -9023,18 +8235,18 @@ function ForceTouchMenu({
|
|
|
9023
8235
|
className = ""
|
|
9024
8236
|
}) {
|
|
9025
8237
|
const router = chunkS7KHTUHA_js.useRouter();
|
|
9026
|
-
const [isOpen, setIsOpen] =
|
|
9027
|
-
const [isPressed, setIsPressed] =
|
|
9028
|
-
const longPressTimer =
|
|
9029
|
-
const containerRef =
|
|
8238
|
+
const [isOpen, setIsOpen] = React9.useState(false);
|
|
8239
|
+
const [isPressed, setIsPressed] = React9.useState(false);
|
|
8240
|
+
const longPressTimer = React9.useRef(null);
|
|
8241
|
+
const containerRef = React9.useRef(null);
|
|
9030
8242
|
const LONG_PRESS_DURATION = 500;
|
|
9031
|
-
const clearTimer =
|
|
8243
|
+
const clearTimer = React9.useCallback(() => {
|
|
9032
8244
|
if (longPressTimer.current) {
|
|
9033
8245
|
clearTimeout(longPressTimer.current);
|
|
9034
8246
|
longPressTimer.current = null;
|
|
9035
8247
|
}
|
|
9036
8248
|
}, []);
|
|
9037
|
-
const handlePressStart =
|
|
8249
|
+
const handlePressStart = React9.useCallback(() => {
|
|
9038
8250
|
setIsPressed(true);
|
|
9039
8251
|
longPressTimer.current = setTimeout(() => {
|
|
9040
8252
|
setIsOpen(true);
|
|
@@ -9044,7 +8256,7 @@ function ForceTouchMenu({
|
|
|
9044
8256
|
}
|
|
9045
8257
|
}, LONG_PRESS_DURATION);
|
|
9046
8258
|
}, []);
|
|
9047
|
-
const handlePressEnd =
|
|
8259
|
+
const handlePressEnd = React9.useCallback((e) => {
|
|
9048
8260
|
clearTimer();
|
|
9049
8261
|
if (!isOpen && isPressed) {
|
|
9050
8262
|
setIsPressed(false);
|
|
@@ -9063,11 +8275,11 @@ function ForceTouchMenu({
|
|
|
9063
8275
|
}
|
|
9064
8276
|
setIsPressed(false);
|
|
9065
8277
|
}, [clearTimer, isOpen, isPressed, openOnClick, onTap, router, href]);
|
|
9066
|
-
const handlePressCancel =
|
|
8278
|
+
const handlePressCancel = React9.useCallback(() => {
|
|
9067
8279
|
clearTimer();
|
|
9068
8280
|
setIsPressed(false);
|
|
9069
8281
|
}, [clearTimer]);
|
|
9070
|
-
const handleContainerClick =
|
|
8282
|
+
const handleContainerClick = React9.useCallback((e) => {
|
|
9071
8283
|
if (!openOnClick) return;
|
|
9072
8284
|
e.preventDefault();
|
|
9073
8285
|
e.stopPropagation();
|
|
@@ -9081,7 +8293,7 @@ function ForceTouchMenu({
|
|
|
9081
8293
|
router.push(item.href);
|
|
9082
8294
|
}
|
|
9083
8295
|
};
|
|
9084
|
-
|
|
8296
|
+
React9.useEffect(() => {
|
|
9085
8297
|
if (!isOpen) return;
|
|
9086
8298
|
const handlePointerDown = (event) => {
|
|
9087
8299
|
if (!containerRef.current) return;
|
|
@@ -9167,11 +8379,11 @@ function LaunchpadGrid({
|
|
|
9167
8379
|
onItemClick,
|
|
9168
8380
|
className
|
|
9169
8381
|
}) {
|
|
9170
|
-
const orderIndex =
|
|
8382
|
+
const orderIndex = React9.useMemo(
|
|
9171
8383
|
() => new Map(pageOrder.map((id, index) => [id, index])),
|
|
9172
8384
|
[pageOrder]
|
|
9173
8385
|
);
|
|
9174
|
-
const orderedItems =
|
|
8386
|
+
const orderedItems = React9.useMemo(() => {
|
|
9175
8387
|
const sortedPages = [...pageItems].sort(
|
|
9176
8388
|
(a, b) => (orderIndex.get(a.id) ?? 999) - (orderIndex.get(b.id) ?? 999)
|
|
9177
8389
|
);
|
|
@@ -9182,7 +8394,7 @@ function LaunchpadGrid({
|
|
|
9182
8394
|
const allGroupedItems = [...groupedPageItems, ...groupedActionItems];
|
|
9183
8395
|
groupedActionItems.length > 0 ? groupedPageItems.length : -1;
|
|
9184
8396
|
const tileClass = "group relative flex flex-col items-center text-center transition-transform duration-200 hover:-translate-y-0.5";
|
|
9185
|
-
const getForceTouchItems =
|
|
8397
|
+
const getForceTouchItems = React9.useCallback((item) => {
|
|
9186
8398
|
if (item.menuItems.length > 0) return item.menuItems;
|
|
9187
8399
|
return [
|
|
9188
8400
|
{
|
|
@@ -9192,7 +8404,7 @@ function LaunchpadGrid({
|
|
|
9192
8404
|
}
|
|
9193
8405
|
];
|
|
9194
8406
|
}, []);
|
|
9195
|
-
const renderTile =
|
|
8407
|
+
const renderTile = React9.useCallback((item) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col items-center", children: !actionItemIds.has(item.id) && item.href.startsWith("/") && !item.onClick ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
9196
8408
|
ForceTouchMenu,
|
|
9197
8409
|
{
|
|
9198
8410
|
href: item.href,
|
|
@@ -9239,7 +8451,7 @@ function LaunchpadGrid({
|
|
|
9239
8451
|
] })
|
|
9240
8452
|
) });
|
|
9241
8453
|
}
|
|
9242
|
-
var LaunchpadIcon =
|
|
8454
|
+
var LaunchpadIcon = React9.memo(function LaunchpadIcon2({
|
|
9243
8455
|
item,
|
|
9244
8456
|
userProfile,
|
|
9245
8457
|
isHydrated
|
|
@@ -9388,8 +8600,8 @@ function CookieConsent({
|
|
|
9388
8600
|
onReject
|
|
9389
8601
|
} = {}) {
|
|
9390
8602
|
const t = chunkYXN2K77G_js.useTranslations("common.cookieConsent");
|
|
9391
|
-
const [visible, setVisible] =
|
|
9392
|
-
|
|
8603
|
+
const [visible, setVisible] = React9.useState(false);
|
|
8604
|
+
React9.useEffect(() => {
|
|
9393
8605
|
const consent = localStorage.getItem(storageKey);
|
|
9394
8606
|
if (!consent) {
|
|
9395
8607
|
setVisible(true);
|
|
@@ -9428,8 +8640,8 @@ function CookieConsent({
|
|
|
9428
8640
|
children: t("learnMore")
|
|
9429
8641
|
}
|
|
9430
8642
|
),
|
|
9431
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: handleReject, outline: true, children: t("reject") }),
|
|
9432
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: handleAccept, color: "ios-glass-blue", children: t("accept") })
|
|
8643
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { onClick: handleReject, outline: true, children: t("reject") }),
|
|
8644
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { onClick: handleAccept, color: "ios-glass-blue", children: t("accept") })
|
|
9433
8645
|
] })
|
|
9434
8646
|
] }) })
|
|
9435
8647
|
}
|
|
@@ -9493,18 +8705,18 @@ function Dock({
|
|
|
9493
8705
|
}) {
|
|
9494
8706
|
const router = chunkS7KHTUHA_js.useRouter();
|
|
9495
8707
|
const pathname = chunkS7KHTUHA_js.usePathname();
|
|
9496
|
-
const [isAutoHidden, setIsAutoHidden] =
|
|
9497
|
-
const autoHideTimerRef =
|
|
9498
|
-
const [hoveredIndex, setHoveredIndex] =
|
|
9499
|
-
const [focusedIndex, setFocusedIndex] =
|
|
9500
|
-
const [openClickMenuId, setOpenClickMenuId] =
|
|
9501
|
-
const [isTabletViewport, setIsTabletViewport] =
|
|
9502
|
-
const dockRef =
|
|
9503
|
-
const actions =
|
|
8708
|
+
const [isAutoHidden, setIsAutoHidden] = React9.useState(false);
|
|
8709
|
+
const autoHideTimerRef = React9.useRef(null);
|
|
8710
|
+
const [hoveredIndex, setHoveredIndex] = React9.useState(null);
|
|
8711
|
+
const [focusedIndex, setFocusedIndex] = React9.useState(null);
|
|
8712
|
+
const [openClickMenuId, setOpenClickMenuId] = React9.useState(null);
|
|
8713
|
+
const [isTabletViewport, setIsTabletViewport] = React9.useState(false);
|
|
8714
|
+
const dockRef = React9.useRef(null);
|
|
8715
|
+
const actions = React9.useMemo(
|
|
9504
8716
|
() => [...navigationActions, ...contextualActions],
|
|
9505
8717
|
[navigationActions, contextualActions]
|
|
9506
8718
|
);
|
|
9507
|
-
const resetAutoHideTimer =
|
|
8719
|
+
const resetAutoHideTimer = React9.useCallback(() => {
|
|
9508
8720
|
if (!autoHide) return;
|
|
9509
8721
|
if (autoHideTimerRef.current) {
|
|
9510
8722
|
clearTimeout(autoHideTimerRef.current);
|
|
@@ -9514,7 +8726,7 @@ function Dock({
|
|
|
9514
8726
|
setIsAutoHidden(true);
|
|
9515
8727
|
}, AUTO_HIDE_DELAY);
|
|
9516
8728
|
}, [autoHide]);
|
|
9517
|
-
|
|
8729
|
+
React9.useEffect(() => {
|
|
9518
8730
|
if (!autoHide) {
|
|
9519
8731
|
setIsAutoHidden(false);
|
|
9520
8732
|
return;
|
|
@@ -9526,7 +8738,7 @@ function Dock({
|
|
|
9526
8738
|
}
|
|
9527
8739
|
};
|
|
9528
8740
|
}, [autoHide, resetAutoHideTimer]);
|
|
9529
|
-
|
|
8741
|
+
React9.useEffect(() => {
|
|
9530
8742
|
if (typeof window === "undefined") return;
|
|
9531
8743
|
const media = window.matchMedia("(min-width: 768px) and (max-width: 1024px)");
|
|
9532
8744
|
const syncViewport = () => setIsTabletViewport(media.matches);
|
|
@@ -9534,7 +8746,7 @@ function Dock({
|
|
|
9534
8746
|
media.addEventListener("change", syncViewport);
|
|
9535
8747
|
return () => media.removeEventListener("change", syncViewport);
|
|
9536
8748
|
}, []);
|
|
9537
|
-
|
|
8749
|
+
React9.useEffect(() => {
|
|
9538
8750
|
const handlePointerDown = (event) => {
|
|
9539
8751
|
if (!dockRef.current) return;
|
|
9540
8752
|
const target = event.target;
|
|
@@ -9546,7 +8758,7 @@ function Dock({
|
|
|
9546
8758
|
document.addEventListener("mousedown", handlePointerDown);
|
|
9547
8759
|
return () => document.removeEventListener("mousedown", handlePointerDown);
|
|
9548
8760
|
}, []);
|
|
9549
|
-
|
|
8761
|
+
React9.useEffect(() => {
|
|
9550
8762
|
setFocusedIndex(null);
|
|
9551
8763
|
setHoveredIndex(null);
|
|
9552
8764
|
setOpenClickMenuId(null);
|
|
@@ -9738,7 +8950,7 @@ function Dock({
|
|
|
9738
8950
|
}
|
|
9739
8951
|
);
|
|
9740
8952
|
}
|
|
9741
|
-
var DockItem =
|
|
8953
|
+
var DockItem = React9.memo(function DockItem2({
|
|
9742
8954
|
action,
|
|
9743
8955
|
index,
|
|
9744
8956
|
hoveredIndex,
|
|
@@ -9799,15 +9011,15 @@ function DockContainer({
|
|
|
9799
9011
|
tabletBreakpoint = 1024,
|
|
9800
9012
|
className = "hidden md:flex"
|
|
9801
9013
|
}) {
|
|
9802
|
-
const [isTabletViewport, setIsTabletViewport] =
|
|
9803
|
-
const [isReady, setIsReady] =
|
|
9014
|
+
const [isTabletViewport, setIsTabletViewport] = React9.useState(false);
|
|
9015
|
+
const [isReady, setIsReady] = React9.useState(false);
|
|
9804
9016
|
const hasActions = navigationActions.length > 0 || contextualActions.length > 0;
|
|
9805
|
-
|
|
9017
|
+
React9.useEffect(() => {
|
|
9806
9018
|
if (hasActions) {
|
|
9807
9019
|
setIsReady(true);
|
|
9808
9020
|
}
|
|
9809
9021
|
}, [hasActions]);
|
|
9810
|
-
|
|
9022
|
+
React9.useEffect(() => {
|
|
9811
9023
|
if (typeof window === "undefined") return;
|
|
9812
9024
|
const media = window.matchMedia(`(max-width: ${tabletBreakpoint}px)`);
|
|
9813
9025
|
const syncViewport = () => setIsTabletViewport(media.matches);
|
|
@@ -9839,14 +9051,14 @@ function PageLoadingState({ label, compact = false }) {
|
|
|
9839
9051
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9840
9052
|
"div",
|
|
9841
9053
|
{
|
|
9842
|
-
className:
|
|
9054
|
+
className: clsx4__default.default(
|
|
9843
9055
|
"flex w-full items-center justify-center",
|
|
9844
9056
|
compact ? "py-6" : "min-h-[calc(100dvh-9rem)] py-0"
|
|
9845
9057
|
),
|
|
9846
9058
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9847
9059
|
"div",
|
|
9848
9060
|
{
|
|
9849
|
-
className:
|
|
9061
|
+
className: clsx4__default.default(
|
|
9850
9062
|
"liquid-surface relative overflow-hidden rounded-2xl",
|
|
9851
9063
|
compact ? "px-6 py-5" : "px-10 py-8"
|
|
9852
9064
|
),
|
|
@@ -9877,7 +9089,7 @@ function AppShell({
|
|
|
9877
9089
|
initializers,
|
|
9878
9090
|
/* @__PURE__ */ jsxRuntime.jsx(NavigationProgress, {}),
|
|
9879
9091
|
navigation,
|
|
9880
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9092
|
+
/* @__PURE__ */ jsxRuntime.jsx(React9.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(PageLoadingState, { label: loadingLabel }), children }),
|
|
9881
9093
|
dock,
|
|
9882
9094
|
profileDrawer
|
|
9883
9095
|
] });
|
|
@@ -9912,7 +9124,7 @@ function Avatar({
|
|
|
9912
9124
|
"data-slot": "avatar",
|
|
9913
9125
|
...props,
|
|
9914
9126
|
style: toneCfg ? { "--avatar-glow": toneCfg.glow } : void 0,
|
|
9915
|
-
className:
|
|
9127
|
+
className: clsx4__default.default(
|
|
9916
9128
|
className,
|
|
9917
9129
|
"liquid-avatar transition-colors duration-200",
|
|
9918
9130
|
// Tone tint at rest + intensified fill on hover ("cristal
|
|
@@ -9944,7 +9156,7 @@ function Avatar({
|
|
|
9944
9156
|
}
|
|
9945
9157
|
);
|
|
9946
9158
|
}
|
|
9947
|
-
var AvatarButton =
|
|
9159
|
+
var AvatarButton = React9.forwardRef(function AvatarButton2({
|
|
9948
9160
|
src,
|
|
9949
9161
|
square = false,
|
|
9950
9162
|
initials,
|
|
@@ -9953,16 +9165,16 @@ var AvatarButton = React12.forwardRef(function AvatarButton2({
|
|
|
9953
9165
|
className,
|
|
9954
9166
|
...props
|
|
9955
9167
|
}, ref) {
|
|
9956
|
-
let classes =
|
|
9168
|
+
let classes = clsx4__default.default(
|
|
9957
9169
|
className,
|
|
9958
9170
|
"liquid-avatar-interactive relative inline-grid",
|
|
9959
9171
|
square ? "rounded-[20%]" : "rounded-full",
|
|
9960
9172
|
"focus:not-data-focus:outline-hidden data-focus:outline-2 data-focus:outline-offset-2 data-focus:outline-indigo-500/70"
|
|
9961
9173
|
);
|
|
9962
9174
|
if (typeof props.href === "string") {
|
|
9963
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Link, { ...props, className: classes, ref, children: /* @__PURE__ */ jsxRuntime.jsx(TouchTarget, { children: /* @__PURE__ */ jsxRuntime.jsx(Avatar, { src, square, initials, alt, tone }) }) });
|
|
9175
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Link, { ...props, className: classes, ref, children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.TouchTarget, { children: /* @__PURE__ */ jsxRuntime.jsx(Avatar, { src, square, initials, alt, tone }) }) });
|
|
9964
9176
|
}
|
|
9965
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9177
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Headless3__namespace.Button, { ...props, className: classes, ref, children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.TouchTarget, { children: /* @__PURE__ */ jsxRuntime.jsx(Avatar, { src, square, initials, alt, tone }) }) });
|
|
9966
9178
|
});
|
|
9967
9179
|
function ImageUpload({
|
|
9968
9180
|
src,
|
|
@@ -9979,12 +9191,12 @@ function ImageUpload({
|
|
|
9979
9191
|
tooLargeMessage = "File too large",
|
|
9980
9192
|
disabled = false
|
|
9981
9193
|
}) {
|
|
9982
|
-
const [preview, setPreview] =
|
|
9983
|
-
const [isUploading, setIsUploading] =
|
|
9984
|
-
const [error, setError] =
|
|
9985
|
-
const fileInputRef =
|
|
9194
|
+
const [preview, setPreview] = React9.useState(null);
|
|
9195
|
+
const [isUploading, setIsUploading] = React9.useState(false);
|
|
9196
|
+
const [error, setError] = React9.useState(null);
|
|
9197
|
+
const fileInputRef = React9.useRef(null);
|
|
9986
9198
|
const acceptSet = new Set(accept.split(",").map((t) => t.trim()));
|
|
9987
|
-
const handleChange =
|
|
9199
|
+
const handleChange = React9.useCallback(async (event) => {
|
|
9988
9200
|
const file = event.target.files?.[0];
|
|
9989
9201
|
if (!file) return;
|
|
9990
9202
|
setError(null);
|
|
@@ -10056,137 +9268,6 @@ function ImageUpload({
|
|
|
10056
9268
|
hint && !error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: hint })
|
|
10057
9269
|
] });
|
|
10058
9270
|
}
|
|
10059
|
-
var colors = {
|
|
10060
|
-
red: "bg-red-500/15 text-red-700 group-data-hover:bg-red-500/25 dark:bg-red-500/10 dark:text-red-300 dark:group-data-hover:bg-red-500/20",
|
|
10061
|
-
orange: "bg-orange-500/15 text-orange-700 group-data-hover:bg-orange-500/25 dark:bg-orange-500/10 dark:text-orange-300 dark:group-data-hover:bg-orange-500/20",
|
|
10062
|
-
amber: "bg-amber-400/20 text-amber-800 group-data-hover:bg-amber-400/30 dark:bg-amber-400/10 dark:text-amber-300 dark:group-data-hover:bg-amber-400/15",
|
|
10063
|
-
yellow: "bg-yellow-400/20 text-yellow-800 group-data-hover:bg-yellow-400/30 dark:bg-yellow-400/10 dark:text-yellow-200 dark:group-data-hover:bg-yellow-400/15",
|
|
10064
|
-
lime: "bg-lime-400/20 text-lime-800 group-data-hover:bg-lime-400/30 dark:bg-lime-400/10 dark:text-lime-200 dark:group-data-hover:bg-lime-400/15",
|
|
10065
|
-
green: "bg-green-500/15 text-green-700 group-data-hover:bg-green-500/25 dark:bg-green-500/10 dark:text-green-300 dark:group-data-hover:bg-green-500/20",
|
|
10066
|
-
emerald: "bg-emerald-500/15 text-emerald-700 group-data-hover:bg-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-300 dark:group-data-hover:bg-emerald-500/20",
|
|
10067
|
-
teal: "bg-teal-500/15 text-teal-700 group-data-hover:bg-teal-500/25 dark:bg-teal-500/10 dark:text-teal-300 dark:group-data-hover:bg-teal-500/20",
|
|
10068
|
-
cyan: "bg-cyan-400/20 text-cyan-800 group-data-hover:bg-cyan-400/30 dark:bg-cyan-400/10 dark:text-cyan-200 dark:group-data-hover:bg-cyan-400/15",
|
|
10069
|
-
sky: "bg-sky-500/15 text-sky-700 group-data-hover:bg-sky-500/25 dark:bg-sky-500/10 dark:text-sky-300 dark:group-data-hover:bg-sky-500/20",
|
|
10070
|
-
blue: "bg-blue-500/15 text-blue-700 group-data-hover:bg-blue-500/25 dark:text-blue-300 dark:group-data-hover:bg-blue-500/25",
|
|
10071
|
-
indigo: "bg-indigo-500/15 text-indigo-700 group-data-hover:bg-indigo-500/25 dark:text-indigo-300 dark:group-data-hover:bg-indigo-500/20",
|
|
10072
|
-
violet: "bg-violet-500/15 text-violet-700 group-data-hover:bg-violet-500/25 dark:text-violet-300 dark:group-data-hover:bg-violet-500/20",
|
|
10073
|
-
purple: "bg-purple-500/15 text-purple-700 group-data-hover:bg-purple-500/25 dark:text-purple-300 dark:group-data-hover:bg-purple-500/20",
|
|
10074
|
-
fuchsia: "bg-fuchsia-400/20 text-fuchsia-700 group-data-hover:bg-fuchsia-400/30 dark:bg-fuchsia-400/10 dark:text-fuchsia-300 dark:group-data-hover:bg-fuchsia-400/20",
|
|
10075
|
-
pink: "bg-pink-400/20 text-pink-700 group-data-hover:bg-pink-400/30 dark:bg-pink-400/10 dark:text-pink-300 dark:group-data-hover:bg-pink-400/20",
|
|
10076
|
-
rose: "bg-rose-400/20 text-rose-700 group-data-hover:bg-rose-400/30 dark:bg-rose-400/10 dark:text-rose-300 dark:group-data-hover:bg-rose-400/20",
|
|
10077
|
-
zinc: "bg-slate-500/15 text-slate-700 group-data-hover:bg-slate-500/25 dark:bg-white/5 dark:text-slate-200 dark:group-data-hover:bg-white/10"
|
|
10078
|
-
};
|
|
10079
|
-
var sizes3 = {
|
|
10080
|
-
xs: { container: "px-2 py-0.5 text-[11px] gap-1", icon: "h-3 w-3", remove: "h-3 w-3 -mr-0.5" },
|
|
10081
|
-
sm: { container: "px-2.5 py-0.5 text-xs gap-1.5", icon: "h-3.5 w-3.5", remove: "h-3.5 w-3.5 -mr-1" },
|
|
10082
|
-
md: { container: "px-3 py-1 text-sm gap-1.5", icon: "h-4 w-4", remove: "h-4 w-4 -mr-1" },
|
|
10083
|
-
lg: { container: "px-3.5 py-1.5 text-sm gap-2", icon: "h-4 w-4", remove: "h-4 w-4 -mr-1" }
|
|
10084
|
-
};
|
|
10085
|
-
var CRYSTAL_STYLE2 = {
|
|
10086
|
-
backdropFilter: "blur(12px) saturate(1.5)",
|
|
10087
|
-
WebkitBackdropFilter: "blur(12px) saturate(1.5)",
|
|
10088
|
-
boxShadow: "inset 0 1px 1.5px rgba(255,255,255,0.45), 0 1px 3px -1px rgba(15,23,42,0.12)"
|
|
10089
|
-
};
|
|
10090
|
-
function Badge({
|
|
10091
|
-
color = "zinc",
|
|
10092
|
-
size = "sm",
|
|
10093
|
-
icon,
|
|
10094
|
-
removable = false,
|
|
10095
|
-
onRemove,
|
|
10096
|
-
removeLabel = "Remove",
|
|
10097
|
-
onClick,
|
|
10098
|
-
live = false,
|
|
10099
|
-
className,
|
|
10100
|
-
children,
|
|
10101
|
-
...props
|
|
10102
|
-
}) {
|
|
10103
|
-
const sz = sizes3[size];
|
|
10104
|
-
const base = clsx__default.default(
|
|
10105
|
-
"inline-flex items-center rounded-full border font-semibold forced-colors:outline",
|
|
10106
|
-
"border-current/20",
|
|
10107
|
-
// hair-line border in the badge's own hue
|
|
10108
|
-
sz.container,
|
|
10109
|
-
colors[color],
|
|
10110
|
-
className
|
|
10111
|
-
);
|
|
10112
|
-
const liveProps = live ? { role: "status", "aria-live": "polite" } : {};
|
|
10113
|
-
if (onClick) {
|
|
10114
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10115
|
-
"button",
|
|
10116
|
-
{
|
|
10117
|
-
type: "button",
|
|
10118
|
-
"data-testid": "badge",
|
|
10119
|
-
onClick,
|
|
10120
|
-
style: CRYSTAL_STYLE2,
|
|
10121
|
-
...liveProps,
|
|
10122
|
-
className: clsx__default.default(
|
|
10123
|
-
base,
|
|
10124
|
-
"cursor-pointer transition-colors",
|
|
10125
|
-
"focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1"
|
|
10126
|
-
),
|
|
10127
|
-
children: [
|
|
10128
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: clsx__default.default("shrink-0", sz.icon), "aria-hidden": true, children: icon }),
|
|
10129
|
-
children
|
|
10130
|
-
]
|
|
10131
|
-
}
|
|
10132
|
-
);
|
|
10133
|
-
}
|
|
10134
|
-
if (removable) {
|
|
10135
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10136
|
-
"span",
|
|
10137
|
-
{
|
|
10138
|
-
"data-testid": "badge",
|
|
10139
|
-
...props,
|
|
10140
|
-
...liveProps,
|
|
10141
|
-
style: CRYSTAL_STYLE2,
|
|
10142
|
-
className: clsx__default.default(base, "pr-1"),
|
|
10143
|
-
children: [
|
|
10144
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: clsx__default.default("shrink-0", sz.icon), "aria-hidden": true, children: icon }),
|
|
10145
|
-
children,
|
|
10146
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10147
|
-
"button",
|
|
10148
|
-
{
|
|
10149
|
-
type: "button",
|
|
10150
|
-
"aria-label": removeLabel,
|
|
10151
|
-
onClick: (event) => {
|
|
10152
|
-
event.stopPropagation();
|
|
10153
|
-
onRemove?.();
|
|
10154
|
-
},
|
|
10155
|
-
className: clsx__default.default(
|
|
10156
|
-
"ml-0.5 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full",
|
|
10157
|
-
"opacity-70 hover:opacity-100 transition-opacity",
|
|
10158
|
-
"focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70"
|
|
10159
|
-
),
|
|
10160
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(solid.XMarkIcon, { className: sz.remove })
|
|
10161
|
-
}
|
|
10162
|
-
)
|
|
10163
|
-
]
|
|
10164
|
-
}
|
|
10165
|
-
);
|
|
10166
|
-
}
|
|
10167
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("span", { "data-testid": "badge", ...props, ...liveProps, style: CRYSTAL_STYLE2, className: base, children: [
|
|
10168
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: clsx__default.default("shrink-0", sz.icon), "aria-hidden": true, children: icon }),
|
|
10169
|
-
children
|
|
10170
|
-
] });
|
|
10171
|
-
}
|
|
10172
|
-
React12.forwardRef(function BadgeButton2({
|
|
10173
|
-
color = "zinc",
|
|
10174
|
-
size = "sm",
|
|
10175
|
-
icon,
|
|
10176
|
-
className,
|
|
10177
|
-
children,
|
|
10178
|
-
...props
|
|
10179
|
-
}, ref) {
|
|
10180
|
-
let classes = clsx__default.default(
|
|
10181
|
-
className,
|
|
10182
|
-
"group relative inline-flex rounded-full",
|
|
10183
|
-
"focus:not-data-focus:outline-hidden data-focus:outline-2 data-focus:outline-offset-2 data-focus:outline-indigo-500/70"
|
|
10184
|
-
);
|
|
10185
|
-
if (typeof props.href === "string") {
|
|
10186
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Link, { ...props, className: classes, ref, children: /* @__PURE__ */ jsxRuntime.jsx(TouchTarget, { children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { color, size, icon, children }) }) });
|
|
10187
|
-
}
|
|
10188
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Headless5__namespace.Button, { ...props, className: classes, ref, children: /* @__PURE__ */ jsxRuntime.jsx(TouchTarget, { children: /* @__PURE__ */ jsxRuntime.jsx(Badge, { color, size, icon, children }) }) });
|
|
10189
|
-
});
|
|
10190
9271
|
function Breadcrumb({ pages, actions, centerContent, dashboardPath = "/dashboard" }) {
|
|
10191
9272
|
const t = chunkYXN2K77G_js.useTranslations("common");
|
|
10192
9273
|
const currentPage = pages.find((page) => page.current) || pages[pages.length - 1];
|
|
@@ -10198,7 +9279,7 @@ function Breadcrumb({ pages, actions, centerContent, dashboardPath = "/dashboard
|
|
|
10198
9279
|
className: "liquid-surface-strong sticky top-2 z-30 mx-4 rounded-2xl sm:mx-6 lg:mx-8",
|
|
10199
9280
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-full grid-cols-[1fr_auto_1fr] items-center gap-3 px-4 py-2.5 sm:px-6 lg:px-8", children: [
|
|
10200
9281
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: parentPage ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10201
|
-
Link,
|
|
9282
|
+
chunkBHOT22QL_js.Link,
|
|
10202
9283
|
{
|
|
10203
9284
|
href: parentPage.href,
|
|
10204
9285
|
className: "inline-flex max-w-full items-center gap-1 rounded-full px-2 py-1 text-sm font-medium text-slate-600 hover:bg-white/60 dark:text-slate-300 dark:hover:bg-white/10",
|
|
@@ -10208,7 +9289,7 @@ function Breadcrumb({ pages, actions, centerContent, dashboardPath = "/dashboard
|
|
|
10208
9289
|
]
|
|
10209
9290
|
}
|
|
10210
9291
|
) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10211
|
-
Link,
|
|
9292
|
+
chunkBHOT22QL_js.Link,
|
|
10212
9293
|
{
|
|
10213
9294
|
href: dashboardPath,
|
|
10214
9295
|
className: "inline-flex items-center gap-1 rounded-full px-2 py-1 text-sm font-medium text-slate-600 hover:bg-white/60 dark:text-slate-300 dark:hover:bg-white/10",
|
|
@@ -10231,7 +9312,7 @@ function CreateActionButton({
|
|
|
10231
9312
|
mode = "responsive"
|
|
10232
9313
|
}) {
|
|
10233
9314
|
const buttonContent = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10234
|
-
Button,
|
|
9315
|
+
chunkBHOT22QL_js.Button,
|
|
10235
9316
|
{
|
|
10236
9317
|
type: "button",
|
|
10237
9318
|
onClick,
|
|
@@ -10269,8 +9350,8 @@ function DevModeBanner({
|
|
|
10269
9350
|
devModeLabel = "DEV",
|
|
10270
9351
|
devModeMessage = "Local development mode"
|
|
10271
9352
|
}) {
|
|
10272
|
-
const [glassTest, setGlassTest] =
|
|
10273
|
-
const toggleGlassTest =
|
|
9353
|
+
const [glassTest, setGlassTest] = React9.useState(false);
|
|
9354
|
+
const toggleGlassTest = React9.useCallback(() => {
|
|
10274
9355
|
const html = document.documentElement;
|
|
10275
9356
|
const next = !glassTest;
|
|
10276
9357
|
html.classList.toggle("glass-test", next);
|
|
@@ -10350,7 +9431,7 @@ function Divider({
|
|
|
10350
9431
|
{
|
|
10351
9432
|
role: "presentation",
|
|
10352
9433
|
...props,
|
|
10353
|
-
className:
|
|
9434
|
+
className: clsx4__default.default(
|
|
10354
9435
|
className,
|
|
10355
9436
|
"w-full border-t",
|
|
10356
9437
|
soft && "border-zinc-950/5 dark:border-white/5",
|
|
@@ -10372,14 +9453,14 @@ function DynamicIslandConfirm({
|
|
|
10372
9453
|
}) {
|
|
10373
9454
|
const resolvedConfirmLabel = confirmLabel ?? "Confirm";
|
|
10374
9455
|
const resolvedCancelLabel = cancelLabel ?? "Cancel";
|
|
10375
|
-
|
|
9456
|
+
React9.useEffect(() => {
|
|
10376
9457
|
if (open) {
|
|
10377
9458
|
chunkUZ3CMNUJ_js.triggerHaptic("warning");
|
|
10378
9459
|
}
|
|
10379
9460
|
}, [open]);
|
|
10380
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9461
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Headless3.Dialog, { open, onClose, className: "relative z-[120]", "aria-labelledby": "dynamic-island-title", children: [
|
|
10381
9462
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 bg-black/10 backdrop-blur-[2px]" }),
|
|
10382
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 flex items-start justify-center pt-3 px-4", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9463
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 flex items-start justify-center pt-3 px-4", children: /* @__PURE__ */ jsxRuntime.jsxs(Headless3.DialogPanel, { className: "w-full max-w-sm rounded-[28px] bg-black/95 p-3 text-white shadow-2xl", children: [
|
|
10383
9464
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 px-2 py-1", children: [
|
|
10384
9465
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-9 w-9 shrink-0 rounded-xl ${iconBackground} flex items-center justify-center`, children: icon ?? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.TrashIcon, { className: "h-5 w-5 text-white" }) }),
|
|
10385
9466
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
@@ -10419,9 +9500,9 @@ function FlyoutMenu({
|
|
|
10419
9500
|
maxWidthClassName = "max-w-4xl",
|
|
10420
9501
|
panelClassName
|
|
10421
9502
|
}) {
|
|
10422
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10423
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10424
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 flex items-start justify-center p-2 pt-[max(2.75rem,env(safe-area-inset-top))] sm:p-4 sm:pt-20", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9503
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Headless3.Dialog, { open, onClose, className: "relative z-50", children: [
|
|
9504
|
+
/* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogBackdrop, { className: "fixed inset-0 bg-slate-900/35 backdrop-blur-sm dark:bg-black/45" }),
|
|
9505
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 flex items-start justify-center p-2 pt-[max(2.75rem,env(safe-area-inset-top))] sm:p-4 sm:pt-20", children: /* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogPanel, { className: `w-screen ${maxWidthClassName} ${panelClassName ?? defaultPanelClassName}`, children: title ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4", children: [
|
|
10425
9506
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-3 flex items-center justify-center", children: title }),
|
|
10426
9507
|
children
|
|
10427
9508
|
] }) : children }) })
|
|
@@ -10522,10 +9603,10 @@ function FlyoutNavGrid({
|
|
|
10522
9603
|
searchFocusRingClass = "focus-ring-indigo"
|
|
10523
9604
|
}) {
|
|
10524
9605
|
const t = chunkYXN2K77G_js.useTranslations("common");
|
|
10525
|
-
const [query, setQuery] =
|
|
9606
|
+
const [query, setQuery] = React9.useState("");
|
|
10526
9607
|
const isCurrentPath = (href) => href === "/dashboard" ? currentPath === "/dashboard" : currentPath.startsWith(href);
|
|
10527
9608
|
const normalizedQuery = query.trim().toLowerCase();
|
|
10528
|
-
const filteredItems =
|
|
9609
|
+
const filteredItems = React9.useMemo(
|
|
10529
9610
|
() => normalizedQuery ? items.filter(
|
|
10530
9611
|
(item) => `${item.label} ${item.subtitle ?? ""}`.toLowerCase().includes(normalizedQuery)
|
|
10531
9612
|
) : items,
|
|
@@ -10589,7 +9670,7 @@ function Heading({ className, level = 1, ...props }) {
|
|
|
10589
9670
|
Element,
|
|
10590
9671
|
{
|
|
10591
9672
|
...props,
|
|
10592
|
-
className:
|
|
9673
|
+
className: clsx4__default.default(className, "text-2xl/8 font-semibold text-zinc-950 sm:text-xl/8 dark:text-white")
|
|
10593
9674
|
}
|
|
10594
9675
|
);
|
|
10595
9676
|
}
|
|
@@ -10599,7 +9680,7 @@ function Subheading({ className, level = 2, ...props }) {
|
|
|
10599
9680
|
Element,
|
|
10600
9681
|
{
|
|
10601
9682
|
...props,
|
|
10602
|
-
className:
|
|
9683
|
+
className: clsx4__default.default(className, "text-base/7 font-semibold text-zinc-950 sm:text-sm/6 dark:text-white")
|
|
10603
9684
|
}
|
|
10604
9685
|
);
|
|
10605
9686
|
}
|
|
@@ -10609,7 +9690,7 @@ function LanguageSwitcher({
|
|
|
10609
9690
|
onLocaleChange,
|
|
10610
9691
|
changeLanguageLabel = "Change language"
|
|
10611
9692
|
}) {
|
|
10612
|
-
const [open, setOpen] =
|
|
9693
|
+
const [open, setOpen] = React9.useState(false);
|
|
10613
9694
|
const handleLanguageChange = (code) => {
|
|
10614
9695
|
onLocaleChange(code);
|
|
10615
9696
|
setOpen(false);
|
|
@@ -10628,9 +9709,9 @@ function LanguageSwitcher({
|
|
|
10628
9709
|
]
|
|
10629
9710
|
}
|
|
10630
9711
|
),
|
|
10631
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
10632
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10633
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 z-50 grid place-items-center p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9712
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Headless3.Dialog, { className: "relative z-50", open, onClose: setOpen, children: [
|
|
9713
|
+
/* @__PURE__ */ jsxRuntime.jsx(Headless3.DialogBackdrop, { className: "fixed inset-0 bg-slate-900/35 backdrop-blur-sm" }),
|
|
9714
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 z-50 grid place-items-center p-4", children: /* @__PURE__ */ jsxRuntime.jsxs(Headless3.DialogPanel, { className: "w-full max-w-md liquid-surface rounded-2xl border border-white/45 p-4 dark:border-white/12", children: [
|
|
10634
9715
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-3 text-sm font-semibold uppercase tracking-wide text-slate-600 dark:text-slate-300", children: changeLanguageLabel }),
|
|
10635
9716
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-2", children: languages.map((language) => {
|
|
10636
9717
|
const selected = currentLocale === language.code;
|
|
@@ -10730,23 +9811,23 @@ function MonthPicker({
|
|
|
10730
9811
|
const locale$1 = chunkYXN2K77G_js.useLocale();
|
|
10731
9812
|
const t = chunkYXN2K77G_js.useTranslations("common");
|
|
10732
9813
|
const dateFnsLocale = dateFnsLocales2[locale$1] || locale.ptBR;
|
|
10733
|
-
const months =
|
|
9814
|
+
const months = React9__namespace.useMemo(() => getLocalizedMonths(dateFnsLocale), [dateFnsLocale]);
|
|
10734
9815
|
const defaultPlaceholder = t("selectMonth");
|
|
10735
|
-
const [open, setOpen] =
|
|
10736
|
-
const availableYears =
|
|
9816
|
+
const [open, setOpen] = React9__namespace.useState(false);
|
|
9817
|
+
const availableYears = React9__namespace.useMemo(() => {
|
|
10737
9818
|
const years = new Set(availableMonths.map((m) => parseInt(m.split("-")[0])));
|
|
10738
9819
|
return Array.from(years).sort((a, b) => b - a);
|
|
10739
9820
|
}, [availableMonths]);
|
|
10740
|
-
const [viewYear, setViewYear] =
|
|
9821
|
+
const [viewYear, setViewYear] = React9__namespace.useState(() => {
|
|
10741
9822
|
if (value) return parseInt(value.split("-")[0]);
|
|
10742
9823
|
if (availableYears.length > 0) return availableYears[0];
|
|
10743
9824
|
return (/* @__PURE__ */ new Date()).getFullYear();
|
|
10744
9825
|
});
|
|
10745
|
-
const isMonthAvailable =
|
|
9826
|
+
const isMonthAvailable = React9__namespace.useCallback((year, monthIndex) => {
|
|
10746
9827
|
const monthStr = `${year}-${String(monthIndex + 1).padStart(2, "0")}`;
|
|
10747
9828
|
return availableMonths.includes(monthStr);
|
|
10748
9829
|
}, [availableMonths]);
|
|
10749
|
-
const displayValue =
|
|
9830
|
+
const displayValue = React9__namespace.useMemo(() => {
|
|
10750
9831
|
if (!value) return placeholder || defaultPlaceholder;
|
|
10751
9832
|
try {
|
|
10752
9833
|
const date = dateFns.parse(value, "yyyy-MM", /* @__PURE__ */ new Date());
|
|
@@ -10974,7 +10055,7 @@ function PageEmptyState({ title, message, iconName, customIcon }) {
|
|
|
10974
10055
|
{
|
|
10975
10056
|
initial: prefersReducedMotion2 ? false : { opacity: 0, scale: 0.95 },
|
|
10976
10057
|
animate: prefersReducedMotion2 ? noMotion : { opacity: 1, scale: 1 },
|
|
10977
|
-
transition: prefersReducedMotion2 ? noTransition : springPresets.gentle,
|
|
10058
|
+
transition: prefersReducedMotion2 ? noTransition : chunkBHOT22QL_js.springPresets.gentle,
|
|
10978
10059
|
className: "liquid-surface w-full max-w-lg rounded-2xl px-8 py-14 text-center",
|
|
10979
10060
|
children: [
|
|
10980
10061
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -10982,7 +10063,7 @@ function PageEmptyState({ title, message, iconName, customIcon }) {
|
|
|
10982
10063
|
{
|
|
10983
10064
|
initial: prefersReducedMotion2 ? false : { scale: 0.6, opacity: 0 },
|
|
10984
10065
|
animate: prefersReducedMotion2 ? noMotion : { scale: 1, opacity: 1 },
|
|
10985
|
-
transition: prefersReducedMotion2 ? noTransition : springPresets.bouncy,
|
|
10066
|
+
transition: prefersReducedMotion2 ? noTransition : chunkBHOT22QL_js.springPresets.bouncy,
|
|
10986
10067
|
className: "mx-auto mb-6",
|
|
10987
10068
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: `inline-flex h-20 w-20 items-center justify-center rounded-full backdrop-blur-md border ${accent.container}`, children: customIcon ?? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: `h-10 w-10 ${accent.icon}` }) })
|
|
10988
10069
|
}
|
|
@@ -10993,7 +10074,7 @@ function PageEmptyState({ title, message, iconName, customIcon }) {
|
|
|
10993
10074
|
"data-testid": "empty-state-title",
|
|
10994
10075
|
initial: prefersReducedMotion2 ? false : { y: 12, opacity: 0 },
|
|
10995
10076
|
animate: prefersReducedMotion2 ? noMotion : { y: 0, opacity: 1 },
|
|
10996
|
-
transition: prefersReducedMotion2 ? noTransition : { ...springPresets.default, delay: 0.1 },
|
|
10077
|
+
transition: prefersReducedMotion2 ? noTransition : { ...chunkBHOT22QL_js.springPresets.default, delay: 0.1 },
|
|
10997
10078
|
className: "text-xl font-semibold text-gray-900 dark:text-white",
|
|
10998
10079
|
children: title
|
|
10999
10080
|
}
|
|
@@ -11004,7 +10085,7 @@ function PageEmptyState({ title, message, iconName, customIcon }) {
|
|
|
11004
10085
|
"data-testid": "empty-state-message",
|
|
11005
10086
|
initial: prefersReducedMotion2 ? false : { y: 12, opacity: 0 },
|
|
11006
10087
|
animate: prefersReducedMotion2 ? noMotion : { y: 0, opacity: 1 },
|
|
11007
|
-
transition: prefersReducedMotion2 ? noTransition : { ...springPresets.default, delay: 0.15 },
|
|
10088
|
+
transition: prefersReducedMotion2 ? noTransition : { ...chunkBHOT22QL_js.springPresets.default, delay: 0.15 },
|
|
11008
10089
|
className: "mt-3 text-sm text-gray-500 dark:text-gray-400 max-w-sm mx-auto leading-relaxed",
|
|
11009
10090
|
children: message
|
|
11010
10091
|
}
|
|
@@ -11021,7 +10102,7 @@ function PageEmptyState({ title, message, iconName, customIcon }) {
|
|
|
11021
10102
|
{
|
|
11022
10103
|
initial: prefersReducedMotion2 ? false : { scale: 0 },
|
|
11023
10104
|
animate: prefersReducedMotion2 ? noMotion : { scale: 1 },
|
|
11024
|
-
transition: prefersReducedMotion2 ? noTransition : { ...springPresets.bouncy, delay: 0.35 + i * 0.08 },
|
|
10105
|
+
transition: prefersReducedMotion2 ? noTransition : { ...chunkBHOT22QL_js.springPresets.bouncy, delay: 0.35 + i * 0.08 },
|
|
11025
10106
|
className: "h-1.5 w-1.5 rounded-full bg-gray-300 dark:bg-gray-600"
|
|
11026
10107
|
},
|
|
11027
10108
|
i
|
|
@@ -11057,7 +10138,7 @@ function PageErrorState({
|
|
|
11057
10138
|
{
|
|
11058
10139
|
initial: prefersReducedMotion2 ? false : { opacity: 0, scale: 0.95 },
|
|
11059
10140
|
animate: prefersReducedMotion2 ? noMotion : { opacity: 1, scale: 1 },
|
|
11060
|
-
transition: prefersReducedMotion2 ? noTransition : springPresets.gentle,
|
|
10141
|
+
transition: prefersReducedMotion2 ? noTransition : chunkBHOT22QL_js.springPresets.gentle,
|
|
11061
10142
|
className: "liquid-surface w-full max-w-2xl rounded-2xl px-12 py-14 text-center",
|
|
11062
10143
|
children: [
|
|
11063
10144
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -11065,7 +10146,7 @@ function PageErrorState({
|
|
|
11065
10146
|
{
|
|
11066
10147
|
initial: prefersReducedMotion2 ? false : { scale: 0.6, opacity: 0 },
|
|
11067
10148
|
animate: prefersReducedMotion2 ? noMotion : { scale: 1, opacity: 1 },
|
|
11068
|
-
transition: prefersReducedMotion2 ? noTransition : springPresets.bouncy,
|
|
10149
|
+
transition: prefersReducedMotion2 ? noTransition : chunkBHOT22QL_js.springPresets.bouncy,
|
|
11069
10150
|
className: "mx-auto mb-6",
|
|
11070
10151
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex h-20 w-20 items-center justify-center rounded-full backdrop-blur-md border bg-red-50/80 dark:bg-red-900/30 border-red-100/50 dark:border-red-800/30", children: customIcon ?? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.ExclamationTriangleIcon, { className: "h-10 w-10 text-red-500 dark:text-red-400" }) })
|
|
11071
10152
|
}
|
|
@@ -11075,7 +10156,7 @@ function PageErrorState({
|
|
|
11075
10156
|
{
|
|
11076
10157
|
initial: prefersReducedMotion2 ? false : { y: 12, opacity: 0 },
|
|
11077
10158
|
animate: prefersReducedMotion2 ? noMotion : { y: 0, opacity: 1 },
|
|
11078
|
-
transition: prefersReducedMotion2 ? noTransition : { ...springPresets.default, delay: 0.05 },
|
|
10159
|
+
transition: prefersReducedMotion2 ? noTransition : { ...chunkBHOT22QL_js.springPresets.default, delay: 0.05 },
|
|
11079
10160
|
className: "mb-1 text-sm font-semibold tracking-widest text-red-500 dark:text-red-400",
|
|
11080
10161
|
children: statusCode
|
|
11081
10162
|
}
|
|
@@ -11086,7 +10167,7 @@ function PageErrorState({
|
|
|
11086
10167
|
"data-testid": "error-state-title",
|
|
11087
10168
|
initial: prefersReducedMotion2 ? false : { y: 12, opacity: 0 },
|
|
11088
10169
|
animate: prefersReducedMotion2 ? noMotion : { y: 0, opacity: 1 },
|
|
11089
|
-
transition: prefersReducedMotion2 ? noTransition : { ...springPresets.default, delay: 0.1 },
|
|
10170
|
+
transition: prefersReducedMotion2 ? noTransition : { ...chunkBHOT22QL_js.springPresets.default, delay: 0.1 },
|
|
11090
10171
|
className: "text-xl font-semibold text-gray-900 dark:text-white",
|
|
11091
10172
|
children: title
|
|
11092
10173
|
}
|
|
@@ -11097,7 +10178,7 @@ function PageErrorState({
|
|
|
11097
10178
|
"data-testid": "error-state-message",
|
|
11098
10179
|
initial: prefersReducedMotion2 ? false : { y: 12, opacity: 0 },
|
|
11099
10180
|
animate: prefersReducedMotion2 ? noMotion : { y: 0, opacity: 1 },
|
|
11100
|
-
transition: prefersReducedMotion2 ? noTransition : { ...springPresets.default, delay: 0.15 },
|
|
10181
|
+
transition: prefersReducedMotion2 ? noTransition : { ...chunkBHOT22QL_js.springPresets.default, delay: 0.15 },
|
|
11101
10182
|
className: "mt-3 text-sm text-gray-500 dark:text-gray-400 max-w-sm mx-auto leading-relaxed",
|
|
11102
10183
|
children: message
|
|
11103
10184
|
}
|
|
@@ -11107,7 +10188,7 @@ function PageErrorState({
|
|
|
11107
10188
|
{
|
|
11108
10189
|
initial: prefersReducedMotion2 ? false : { y: 12, opacity: 0 },
|
|
11109
10190
|
animate: prefersReducedMotion2 ? noMotion : { y: 0, opacity: 1 },
|
|
11110
|
-
transition: prefersReducedMotion2 ? noTransition : { ...springPresets.default, delay: 0.25 },
|
|
10191
|
+
transition: prefersReducedMotion2 ? noTransition : { ...chunkBHOT22QL_js.springPresets.default, delay: 0.25 },
|
|
11111
10192
|
className: "mt-8",
|
|
11112
10193
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
11113
10194
|
"button",
|
|
@@ -11133,7 +10214,7 @@ function PageErrorState({
|
|
|
11133
10214
|
{
|
|
11134
10215
|
initial: prefersReducedMotion2 ? false : { scale: 0 },
|
|
11135
10216
|
animate: prefersReducedMotion2 ? noMotion : { scale: 1 },
|
|
11136
|
-
transition: prefersReducedMotion2 ? noTransition : { ...springPresets.bouncy, delay: 0.35 + i * 0.08 },
|
|
10217
|
+
transition: prefersReducedMotion2 ? noTransition : { ...chunkBHOT22QL_js.springPresets.bouncy, delay: 0.35 + i * 0.08 },
|
|
11137
10218
|
className: "h-1.5 w-1.5 rounded-full bg-red-300 dark:bg-red-700"
|
|
11138
10219
|
},
|
|
11139
10220
|
i
|
|
@@ -11162,7 +10243,7 @@ function BrandedLoader({
|
|
|
11162
10243
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11163
10244
|
"div",
|
|
11164
10245
|
{
|
|
11165
|
-
className:
|
|
10246
|
+
className: clsx4__default.default(
|
|
11166
10247
|
"flex items-center justify-center",
|
|
11167
10248
|
compact ? "w-full py-8" : "fixed inset-0 z-[9999] h-dvh w-dvw bg-gray-50 dark:bg-[#0b1120]",
|
|
11168
10249
|
className
|
|
@@ -11172,7 +10253,7 @@ function BrandedLoader({
|
|
|
11172
10253
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11173
10254
|
"div",
|
|
11174
10255
|
{
|
|
11175
|
-
className:
|
|
10256
|
+
className: clsx4__default.default(
|
|
11176
10257
|
"absolute -inset-3 animate-ping motion-reduce:animate-none rounded-3xl opacity-20",
|
|
11177
10258
|
`bg-gradient-to-br ${gradient}`
|
|
11178
10259
|
),
|
|
@@ -11182,7 +10263,7 @@ function BrandedLoader({
|
|
|
11182
10263
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11183
10264
|
"div",
|
|
11184
10265
|
{
|
|
11185
|
-
className:
|
|
10266
|
+
className: clsx4__default.default(
|
|
11186
10267
|
"absolute -inset-1.5 rounded-[22px] ring-2",
|
|
11187
10268
|
accentRing,
|
|
11188
10269
|
"animate-pulse motion-reduce:animate-none"
|
|
@@ -11198,7 +10279,7 @@ function BrandedLoader({
|
|
|
11198
10279
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
11199
10280
|
"div",
|
|
11200
10281
|
{
|
|
11201
|
-
className:
|
|
10282
|
+
className: clsx4__default.default(
|
|
11202
10283
|
"relative flex h-24 w-24 items-center justify-center rounded-[20px]",
|
|
11203
10284
|
`bg-gradient-to-br ${gradient}`,
|
|
11204
10285
|
"shadow-lg shadow-black/20"
|
|
@@ -11214,7 +10295,7 @@ function BrandedLoader({
|
|
|
11214
10295
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11215
10296
|
"h2",
|
|
11216
10297
|
{
|
|
11217
|
-
className:
|
|
10298
|
+
className: clsx4__default.default(
|
|
11218
10299
|
"bg-clip-text text-xl font-bold tracking-tight text-transparent",
|
|
11219
10300
|
`bg-gradient-to-r ${gradient}`
|
|
11220
10301
|
),
|
|
@@ -11225,7 +10306,7 @@ function BrandedLoader({
|
|
|
11225
10306
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11226
10307
|
"div",
|
|
11227
10308
|
{
|
|
11228
|
-
className:
|
|
10309
|
+
className: clsx4__default.default(
|
|
11229
10310
|
"h-1.5 w-1.5 rounded-full",
|
|
11230
10311
|
`bg-gradient-to-br ${gradient}`,
|
|
11231
10312
|
"animate-bounce motion-reduce:animate-none"
|
|
@@ -11240,7 +10321,7 @@ function BrandedLoader({
|
|
|
11240
10321
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1.5", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11241
10322
|
"div",
|
|
11242
10323
|
{
|
|
11243
|
-
className:
|
|
10324
|
+
className: clsx4__default.default(
|
|
11244
10325
|
"h-2 w-2 rounded-full",
|
|
11245
10326
|
`bg-gradient-to-br ${gradient}`,
|
|
11246
10327
|
"animate-bounce motion-reduce:animate-none"
|
|
@@ -11268,11 +10349,11 @@ function AppLogo({
|
|
|
11268
10349
|
wordmark
|
|
11269
10350
|
}) {
|
|
11270
10351
|
const s = SIZES[size];
|
|
11271
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
10352
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx4__default.default("inline-flex items-center", s.gap, className), children: [
|
|
11272
10353
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
11273
10354
|
"div",
|
|
11274
10355
|
{
|
|
11275
|
-
className:
|
|
10356
|
+
className: clsx4__default.default(
|
|
11276
10357
|
"relative flex flex-none items-center justify-center",
|
|
11277
10358
|
s.container,
|
|
11278
10359
|
`bg-gradient-to-br ${gradient}`,
|
|
@@ -11280,14 +10361,14 @@ function AppLogo({
|
|
|
11280
10361
|
),
|
|
11281
10362
|
children: [
|
|
11282
10363
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0 rounded-[inherit] bg-[linear-gradient(145deg,rgba(255,255,255,0.35)_0%,rgba(255,255,255,0.08)_45%,rgba(255,255,255,0)_100%)]" }),
|
|
11283
|
-
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className:
|
|
10364
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: clsx4__default.default("relative text-white", s.icon) })
|
|
11284
10365
|
]
|
|
11285
10366
|
}
|
|
11286
10367
|
),
|
|
11287
10368
|
wordmark ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
11288
10369
|
"span",
|
|
11289
10370
|
{
|
|
11290
|
-
className:
|
|
10371
|
+
className: clsx4__default.default(
|
|
11291
10372
|
"font-bold tracking-tight bg-clip-text text-transparent whitespace-nowrap",
|
|
11292
10373
|
`bg-gradient-to-r ${gradient}`,
|
|
11293
10374
|
s.text
|
|
@@ -11421,10 +10502,10 @@ function Fieldset2({
|
|
|
11421
10502
|
...props
|
|
11422
10503
|
}) {
|
|
11423
10504
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11424
|
-
|
|
10505
|
+
Headless3__namespace.Fieldset,
|
|
11425
10506
|
{
|
|
11426
10507
|
...props,
|
|
11427
|
-
className:
|
|
10508
|
+
className: clsx4__default.default(
|
|
11428
10509
|
className,
|
|
11429
10510
|
"*:data-[slot=text]:mt-1 [&>*+[data-slot=control]]:mt-6"
|
|
11430
10511
|
)
|
|
@@ -11436,11 +10517,11 @@ function Legend2({
|
|
|
11436
10517
|
...props
|
|
11437
10518
|
}) {
|
|
11438
10519
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11439
|
-
|
|
10520
|
+
Headless3__namespace.Legend,
|
|
11440
10521
|
{
|
|
11441
10522
|
"data-slot": "legend",
|
|
11442
10523
|
...props,
|
|
11443
|
-
className:
|
|
10524
|
+
className: clsx4__default.default(
|
|
11444
10525
|
className,
|
|
11445
10526
|
"text-base/6 font-semibold text-zinc-950 data-disabled:opacity-50 sm:text-sm/6 dark:text-white"
|
|
11446
10527
|
)
|
|
@@ -11456,7 +10537,7 @@ function FieldGroup({
|
|
|
11456
10537
|
{
|
|
11457
10538
|
"data-slot": "control",
|
|
11458
10539
|
...props,
|
|
11459
|
-
className:
|
|
10540
|
+
className: clsx4__default.default(className, "space-y-8")
|
|
11460
10541
|
}
|
|
11461
10542
|
);
|
|
11462
10543
|
}
|
|
@@ -11465,10 +10546,10 @@ function Field2({
|
|
|
11465
10546
|
...props
|
|
11466
10547
|
}) {
|
|
11467
10548
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11468
|
-
|
|
10549
|
+
Headless3__namespace.Field,
|
|
11469
10550
|
{
|
|
11470
10551
|
...props,
|
|
11471
|
-
className:
|
|
10552
|
+
className: clsx4__default.default(
|
|
11472
10553
|
className,
|
|
11473
10554
|
"[&>[data-slot=label]+[data-slot=control]]:mt-3",
|
|
11474
10555
|
"[&>[data-slot=label]+[data-slot=description]]:mt-1",
|
|
@@ -11485,11 +10566,11 @@ function Label2({
|
|
|
11485
10566
|
...props
|
|
11486
10567
|
}) {
|
|
11487
10568
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11488
|
-
|
|
10569
|
+
Headless3__namespace.Label,
|
|
11489
10570
|
{
|
|
11490
10571
|
"data-slot": "label",
|
|
11491
10572
|
...props,
|
|
11492
|
-
className:
|
|
10573
|
+
className: clsx4__default.default(
|
|
11493
10574
|
className,
|
|
11494
10575
|
"text-base/6 text-zinc-950 select-none data-disabled:opacity-50 sm:text-sm/6 dark:text-white"
|
|
11495
10576
|
)
|
|
@@ -11501,11 +10582,11 @@ function Description3({
|
|
|
11501
10582
|
...props
|
|
11502
10583
|
}) {
|
|
11503
10584
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11504
|
-
|
|
10585
|
+
Headless3__namespace.Description,
|
|
11505
10586
|
{
|
|
11506
10587
|
"data-slot": "description",
|
|
11507
10588
|
...props,
|
|
11508
|
-
className:
|
|
10589
|
+
className: clsx4__default.default(
|
|
11509
10590
|
className,
|
|
11510
10591
|
"text-base/6 text-zinc-500 data-disabled:opacity-50 sm:text-sm/6 dark:text-zinc-400"
|
|
11511
10592
|
)
|
|
@@ -11517,22 +10598,22 @@ function ErrorMessage({
|
|
|
11517
10598
|
...props
|
|
11518
10599
|
}) {
|
|
11519
10600
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11520
|
-
|
|
10601
|
+
Headless3__namespace.Description,
|
|
11521
10602
|
{
|
|
11522
10603
|
"data-slot": "error",
|
|
11523
10604
|
...props,
|
|
11524
|
-
className:
|
|
10605
|
+
className: clsx4__default.default(
|
|
11525
10606
|
className,
|
|
11526
10607
|
"text-base/6 text-red-600 data-disabled:opacity-50 sm:text-sm/6 dark:text-red-500"
|
|
11527
10608
|
)
|
|
11528
10609
|
}
|
|
11529
10610
|
);
|
|
11530
10611
|
}
|
|
11531
|
-
var Textarea =
|
|
10612
|
+
var Textarea = React9__namespace.forwardRef(({ className, ...props }, ref) => {
|
|
11532
10613
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11533
10614
|
"textarea",
|
|
11534
10615
|
{
|
|
11535
|
-
className:
|
|
10616
|
+
className: clsx4__default.default(
|
|
11536
10617
|
"liquid-surface flex min-h-[80px] w-full rounded-xl px-3 py-2.5 text-sm",
|
|
11537
10618
|
"text-slate-900 dark:text-white outline-none",
|
|
11538
10619
|
"placeholder:text-slate-500 dark:placeholder:text-slate-400",
|
|
@@ -11698,9 +10779,9 @@ function WorkspaceContent({ config }) {
|
|
|
11698
10779
|
] });
|
|
11699
10780
|
}
|
|
11700
10781
|
function ProfileContent({ config }) {
|
|
11701
|
-
const [currentPassword, setCurrentPassword] =
|
|
11702
|
-
const [newPassword, setNewPassword] =
|
|
11703
|
-
const [confirmPassword, setConfirmPassword] =
|
|
10782
|
+
const [currentPassword, setCurrentPassword] = React9.useState("");
|
|
10783
|
+
const [newPassword, setNewPassword] = React9.useState("");
|
|
10784
|
+
const [confirmPassword, setConfirmPassword] = React9.useState("");
|
|
11704
10785
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
11705
10786
|
/* @__PURE__ */ jsxRuntime.jsx(SectionHeading, { title: config.title }),
|
|
11706
10787
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [
|
|
@@ -11717,7 +10798,7 @@ function ProfileContent({ config }) {
|
|
|
11717
10798
|
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl font-bold text-white", children: config.initials })
|
|
11718
10799
|
}
|
|
11719
10800
|
),
|
|
11720
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Button, { color: "zinc", onClick: config.onChangeAvatar, className: "flex items-center gap-2", children: [
|
|
10801
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { color: "zinc", onClick: config.onChangeAvatar, className: "flex items-center gap-2", children: [
|
|
11721
10802
|
/* @__PURE__ */ jsxRuntime.jsx(HeroIcons.UserIcon, { className: "h-4 w-4" }),
|
|
11722
10803
|
config.changeAvatarLabel
|
|
11723
10804
|
] })
|
|
@@ -11766,7 +10847,7 @@ function ProfileContent({ config }) {
|
|
|
11766
10847
|
)
|
|
11767
10848
|
] }),
|
|
11768
10849
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11769
|
-
Button,
|
|
10850
|
+
chunkBHOT22QL_js.Button,
|
|
11770
10851
|
{
|
|
11771
10852
|
color: "blue",
|
|
11772
10853
|
className: "mt-2",
|
|
@@ -11929,15 +11010,15 @@ function SettingsModal({
|
|
|
11929
11010
|
accessDenied,
|
|
11930
11011
|
signOut
|
|
11931
11012
|
}) {
|
|
11932
|
-
const [activeSectionId, setActiveSectionId] =
|
|
11013
|
+
const [activeSectionId, setActiveSectionId] = React9.useState(
|
|
11933
11014
|
() => initialSection ?? sections[0]?.id ?? ""
|
|
11934
11015
|
);
|
|
11935
|
-
|
|
11016
|
+
React9.useEffect(() => {
|
|
11936
11017
|
if (open) {
|
|
11937
11018
|
setActiveSectionId(initialSection ?? sections[0]?.id ?? "");
|
|
11938
11019
|
}
|
|
11939
11020
|
}, [open, initialSection, sections]);
|
|
11940
|
-
const handleSectionChange =
|
|
11021
|
+
const handleSectionChange = React9.useCallback((sectionId) => {
|
|
11941
11022
|
setActiveSectionId(sectionId);
|
|
11942
11023
|
}, []);
|
|
11943
11024
|
const dialogSections = sections.map((section) => ({
|
|
@@ -11967,7 +11048,7 @@ function SettingsModal({
|
|
|
11967
11048
|
}
|
|
11968
11049
|
return /* @__PURE__ */ jsxRuntime.jsx(PlaceholderContent, { message: placeholderMessage });
|
|
11969
11050
|
};
|
|
11970
|
-
const footer = signOut ? /* @__PURE__ */ jsxRuntime.jsxs(Button, { type: "button", onClick: signOut.onClick, color: "ios-glass-red", fullWidth: true, children: [
|
|
11051
|
+
const footer = signOut ? /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { type: "button", onClick: signOut.onClick, color: "ios-glass-red", fullWidth: true, children: [
|
|
11971
11052
|
signOut.icon,
|
|
11972
11053
|
signOut.label
|
|
11973
11054
|
] }) : sidebarFooter;
|
|
@@ -12049,14 +11130,14 @@ function OtpInput({
|
|
|
12049
11130
|
inputMode = "numeric"
|
|
12050
11131
|
}) {
|
|
12051
11132
|
const t = chunkYXN2K77G_js.useTranslations("auth");
|
|
12052
|
-
const groupId =
|
|
12053
|
-
const inputsRef =
|
|
11133
|
+
const groupId = React9.useId();
|
|
11134
|
+
const inputsRef = React9.useRef([]);
|
|
12054
11135
|
const digits = value.split("").concat(Array(length).fill("")).slice(0, length);
|
|
12055
|
-
const focusInput =
|
|
11136
|
+
const focusInput = React9.useCallback((index) => {
|
|
12056
11137
|
const clamped = Math.max(0, Math.min(index, length - 1));
|
|
12057
11138
|
inputsRef.current[clamped]?.focus();
|
|
12058
11139
|
}, [length]);
|
|
12059
|
-
const handleChange =
|
|
11140
|
+
const handleChange = React9.useCallback(
|
|
12060
11141
|
(index, digit) => {
|
|
12061
11142
|
if (disabled) return;
|
|
12062
11143
|
const char = digit.slice(-1);
|
|
@@ -12076,7 +11157,7 @@ function OtpInput({
|
|
|
12076
11157
|
},
|
|
12077
11158
|
[disabled, inputMode, value, length, onChange, focusInput, onComplete]
|
|
12078
11159
|
);
|
|
12079
|
-
const handleKeyDown =
|
|
11160
|
+
const handleKeyDown = React9.useCallback(
|
|
12080
11161
|
(index, event) => {
|
|
12081
11162
|
if (event.key === "Backspace") {
|
|
12082
11163
|
event.preventDefault();
|
|
@@ -12100,7 +11181,7 @@ function OtpInput({
|
|
|
12100
11181
|
},
|
|
12101
11182
|
[value, length, onChange, focusInput]
|
|
12102
11183
|
);
|
|
12103
|
-
const handlePaste =
|
|
11184
|
+
const handlePaste = React9.useCallback(
|
|
12104
11185
|
(event) => {
|
|
12105
11186
|
event.preventDefault();
|
|
12106
11187
|
const pasted = event.clipboardData.getData("text").trim();
|
|
@@ -12224,11 +11305,11 @@ function PasswordStrengthMeter({
|
|
|
12224
11305
|
showRequirements = false
|
|
12225
11306
|
}) {
|
|
12226
11307
|
const t = chunkYXN2K77G_js.useTranslations("auth");
|
|
12227
|
-
const requirements =
|
|
11308
|
+
const requirements = React9.useMemo(
|
|
12228
11309
|
() => evaluateRequirements(password, policy),
|
|
12229
11310
|
[password, policy]
|
|
12230
11311
|
);
|
|
12231
|
-
const strength =
|
|
11312
|
+
const strength = React9.useMemo(
|
|
12232
11313
|
() => computeStrength(password, requirements),
|
|
12233
11314
|
[password, requirements]
|
|
12234
11315
|
);
|
|
@@ -12247,7 +11328,7 @@ function PasswordStrengthMeter({
|
|
|
12247
11328
|
className: `h-1.5 flex-1 rounded-full ${index < strength ? STRENGTH_COLORS[strength - 1] : "bg-gray-200 dark:bg-gray-700"}`,
|
|
12248
11329
|
initial: { scaleX: 0 },
|
|
12249
11330
|
animate: { scaleX: index < strength ? 1 : 0.5 },
|
|
12250
|
-
transition: springPresets.stiff,
|
|
11331
|
+
transition: chunkBHOT22QL_js.springPresets.stiff,
|
|
12251
11332
|
style: { transformOrigin: "left" }
|
|
12252
11333
|
},
|
|
12253
11334
|
index
|
|
@@ -12277,13 +11358,13 @@ function BackupCodeGrid({
|
|
|
12277
11358
|
onReveal
|
|
12278
11359
|
}) {
|
|
12279
11360
|
const t = chunkYXN2K77G_js.useTranslations("auth");
|
|
12280
|
-
const handleCopyAll =
|
|
11361
|
+
const handleCopyAll = React9.useCallback(async () => {
|
|
12281
11362
|
const text = codes.join("\n");
|
|
12282
11363
|
await navigator.clipboard.writeText(text);
|
|
12283
11364
|
chunkUZ3CMNUJ_js.triggerHaptic("success");
|
|
12284
11365
|
onCopyAll?.();
|
|
12285
11366
|
}, [codes, onCopyAll]);
|
|
12286
|
-
const handleDownload =
|
|
11367
|
+
const handleDownload = React9.useCallback(() => {
|
|
12287
11368
|
const text = [
|
|
12288
11369
|
t("backupCodesFileTitle"),
|
|
12289
11370
|
"=====================",
|
|
@@ -12305,7 +11386,7 @@ function BackupCodeGrid({
|
|
|
12305
11386
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
12306
11387
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-surface-strong rounded-xl p-4", children: !revealed ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center py-8 gap-3", children: [
|
|
12307
11388
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-gray-500 dark:text-gray-400", children: t("backupCodesHidden") }),
|
|
12308
|
-
onReveal && /* @__PURE__ */ jsxRuntime.jsx(Button, { outline: true, onClick: onReveal, children: t("backupCodesReveal") })
|
|
11389
|
+
onReveal && /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Button, { outline: true, onClick: onReveal, children: t("backupCodesReveal") })
|
|
12309
11390
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: codes.map((code, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12310
11391
|
"div",
|
|
12311
11392
|
{
|
|
@@ -12321,11 +11402,11 @@ function BackupCodeGrid({
|
|
|
12321
11402
|
index
|
|
12322
11403
|
)) }) }),
|
|
12323
11404
|
revealed && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
12324
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Button, { outline: true, size: "sm", onClick: handleCopyAll, children: [
|
|
11405
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { outline: true, size: "sm", onClick: handleCopyAll, children: [
|
|
12325
11406
|
/* @__PURE__ */ jsxRuntime.jsx(solid.ClipboardDocumentIcon, { className: "h-4 w-4" }),
|
|
12326
11407
|
t("backupCodesCopyAll")
|
|
12327
11408
|
] }),
|
|
12328
|
-
showDownload && /* @__PURE__ */ jsxRuntime.jsxs(Button, { outline: true, size: "sm", onClick: handleDownload, children: [
|
|
11409
|
+
showDownload && /* @__PURE__ */ jsxRuntime.jsxs(chunkBHOT22QL_js.Button, { outline: true, size: "sm", onClick: handleDownload, children: [
|
|
12329
11410
|
/* @__PURE__ */ jsxRuntime.jsx(solid.ArrowDownTrayIcon, { className: "h-4 w-4" }),
|
|
12330
11411
|
t("backupCodesDownload")
|
|
12331
11412
|
] })
|
|
@@ -12364,7 +11445,7 @@ function SocialLoginButtons({
|
|
|
12364
11445
|
const t = chunkYXN2K77G_js.useTranslations("auth");
|
|
12365
11446
|
const isColumn = layout === "column";
|
|
12366
11447
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex ${isColumn ? "flex-col" : "flex-row"} gap-2`, children: providers.map((provider) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12367
|
-
Button,
|
|
11448
|
+
chunkBHOT22QL_js.Button,
|
|
12368
11449
|
{
|
|
12369
11450
|
outline: true,
|
|
12370
11451
|
fullWidth: isColumn,
|
|
@@ -12673,7 +11754,7 @@ function RadiantHeading({
|
|
|
12673
11754
|
Element,
|
|
12674
11755
|
{
|
|
12675
11756
|
...props,
|
|
12676
|
-
className:
|
|
11757
|
+
className: clsx4.clsx(
|
|
12677
11758
|
className,
|
|
12678
11759
|
"text-4xl font-bold tracking-tight text-gray-900 dark:text-white sm:text-5xl lg:text-6xl"
|
|
12679
11760
|
)
|
|
@@ -12690,7 +11771,7 @@ function RadiantSubheading({
|
|
|
12690
11771
|
Element,
|
|
12691
11772
|
{
|
|
12692
11773
|
...props,
|
|
12693
|
-
className:
|
|
11774
|
+
className: clsx4.clsx(
|
|
12694
11775
|
className,
|
|
12695
11776
|
"font-semibold text-blue-600 dark:text-blue-400 uppercase tracking-wider text-sm mb-4"
|
|
12696
11777
|
)
|
|
@@ -12704,7 +11785,7 @@ function Lead({
|
|
|
12704
11785
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12705
11786
|
"p",
|
|
12706
11787
|
{
|
|
12707
|
-
className:
|
|
11788
|
+
className: clsx4.clsx(className, "text-xl text-gray-600 dark:text-gray-400 leading-relaxed"),
|
|
12708
11789
|
...props
|
|
12709
11790
|
}
|
|
12710
11791
|
);
|
|
@@ -12715,12 +11796,12 @@ function AnimatedNumber({
|
|
|
12715
11796
|
decimals = 0,
|
|
12716
11797
|
suffix = ""
|
|
12717
11798
|
}) {
|
|
12718
|
-
const ref =
|
|
11799
|
+
const ref = React9.useRef(null);
|
|
12719
11800
|
const isInView = framerMotion.useInView(ref, { once: true, amount: 0.5 });
|
|
12720
11801
|
const value = framerMotion.useMotionValue(start);
|
|
12721
11802
|
const spring2 = framerMotion.useSpring(value, { damping: 30, stiffness: 100 });
|
|
12722
11803
|
const display = framerMotion.useTransform(spring2, (num) => `${num.toFixed(decimals)}${suffix}`);
|
|
12723
|
-
|
|
11804
|
+
React9.useEffect(() => {
|
|
12724
11805
|
value.set(isInView ? end : start);
|
|
12725
11806
|
}, [start, end, isInView, value]);
|
|
12726
11807
|
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.motion.span, { ref, children: display });
|
|
@@ -12733,7 +11814,7 @@ function Gradient({
|
|
|
12733
11814
|
"div",
|
|
12734
11815
|
{
|
|
12735
11816
|
...props,
|
|
12736
|
-
className:
|
|
11817
|
+
className: clsx4.clsx(
|
|
12737
11818
|
className,
|
|
12738
11819
|
"bg-gradient-to-r from-blue-400 via-purple-400 to-pink-400 dark:from-blue-600 dark:via-purple-600 dark:to-pink-600"
|
|
12739
11820
|
)
|
|
@@ -12745,7 +11826,7 @@ function GradientBackground() {
|
|
|
12745
11826
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12746
11827
|
"div",
|
|
12747
11828
|
{
|
|
12748
|
-
className:
|
|
11829
|
+
className: clsx4.clsx(
|
|
12749
11830
|
"absolute -top-40 -right-40 h-80 w-80",
|
|
12750
11831
|
"bg-gradient-to-br from-blue-400 to-transparent",
|
|
12751
11832
|
"rounded-full blur-3xl opacity-20 dark:opacity-10"
|
|
@@ -12755,7 +11836,7 @@ function GradientBackground() {
|
|
|
12755
11836
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12756
11837
|
"div",
|
|
12757
11838
|
{
|
|
12758
|
-
className:
|
|
11839
|
+
className: clsx4.clsx(
|
|
12759
11840
|
"absolute -bottom-40 -left-40 h-80 w-80",
|
|
12760
11841
|
"bg-gradient-to-tr from-purple-400 to-transparent",
|
|
12761
11842
|
"rounded-full blur-3xl opacity-20 dark:opacity-10"
|
|
@@ -12779,7 +11860,7 @@ function BentoCard({
|
|
|
12779
11860
|
initial: "idle",
|
|
12780
11861
|
whileHover: "active",
|
|
12781
11862
|
variants: { idle: {}, active: {} },
|
|
12782
|
-
className:
|
|
11863
|
+
className: clsx4.clsx(
|
|
12783
11864
|
className,
|
|
12784
11865
|
"group relative flex flex-col overflow-hidden rounded-2xl",
|
|
12785
11866
|
"bg-white dark:bg-gray-800 shadow-lg hover:shadow-xl transition-shadow",
|
|
@@ -12804,7 +11885,7 @@ function PlusGrid({
|
|
|
12804
11885
|
className = "",
|
|
12805
11886
|
children
|
|
12806
11887
|
}) {
|
|
12807
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
11888
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx4.clsx(className, "space-y-px"), children });
|
|
12808
11889
|
}
|
|
12809
11890
|
function PlusGridRow({
|
|
12810
11891
|
className = "",
|
|
@@ -12813,7 +11894,7 @@ function PlusGridRow({
|
|
|
12813
11894
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12814
11895
|
"div",
|
|
12815
11896
|
{
|
|
12816
|
-
className:
|
|
11897
|
+
className: clsx4.clsx(
|
|
12817
11898
|
className,
|
|
12818
11899
|
"group/row relative isolate grid gap-px"
|
|
12819
11900
|
),
|
|
@@ -12825,7 +11906,7 @@ function PlusGridItem({
|
|
|
12825
11906
|
className = "",
|
|
12826
11907
|
children
|
|
12827
11908
|
}) {
|
|
12828
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
11909
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx4.clsx(className, "group/item relative"), children });
|
|
12829
11910
|
}
|
|
12830
11911
|
function RadiantStatCard({
|
|
12831
11912
|
value,
|
|
@@ -12838,7 +11919,7 @@ function RadiantStatCard({
|
|
|
12838
11919
|
initial: { opacity: 0, y: 20 },
|
|
12839
11920
|
whileInView: { opacity: 1, y: 0 },
|
|
12840
11921
|
transition: { duration: 0.5 },
|
|
12841
|
-
className:
|
|
11922
|
+
className: clsx4.clsx(
|
|
12842
11923
|
"group relative rounded-2xl overflow-hidden p-8 sm:p-12",
|
|
12843
11924
|
`bg-gradient-to-br ${gradient}`,
|
|
12844
11925
|
"shadow-lg hover:shadow-xl transition-all duration-300 hover:scale-105"
|
|
@@ -12867,7 +11948,7 @@ function FeatureCard({
|
|
|
12867
11948
|
transition: { duration: 0.5 },
|
|
12868
11949
|
className: "group relative rounded-2xl overflow-hidden bg-white dark:bg-gray-800 p-8 shadow-md hover:shadow-xl transition-all duration-300 border border-gray-200 dark:border-gray-700",
|
|
12869
11950
|
children: [
|
|
12870
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
11951
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx4.clsx(
|
|
12871
11952
|
"inline-flex rounded-xl p-3 mb-6",
|
|
12872
11953
|
`bg-gradient-to-br ${gradient}`
|
|
12873
11954
|
), children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-6 w-6 text-white" }) }),
|
|
@@ -12982,7 +12063,7 @@ function CollapsibleGroupedList({
|
|
|
12982
12063
|
className,
|
|
12983
12064
|
groupClassName
|
|
12984
12065
|
}) {
|
|
12985
|
-
const [collapsedGroups, setCollapsedGroups] =
|
|
12066
|
+
const [collapsedGroups, setCollapsedGroups] = React9.useState(/* @__PURE__ */ new Set());
|
|
12986
12067
|
const toggleCollapse = (groupKey) => {
|
|
12987
12068
|
setCollapsedGroups((previousCollapsedGroups) => {
|
|
12988
12069
|
const nextCollapsedGroups = new Set(previousCollapsedGroups);
|
|
@@ -13041,28 +12122,28 @@ function useGeoMapState({
|
|
|
13041
12122
|
regionCoordinates,
|
|
13042
12123
|
defaultCenter = [0, 0]
|
|
13043
12124
|
}) {
|
|
13044
|
-
const [zoom, setZoom] =
|
|
13045
|
-
const [center, setCenter] =
|
|
13046
|
-
const [hoveredRegion, setHoveredRegion] =
|
|
13047
|
-
const [animatedRegions, setAnimatedRegions] =
|
|
13048
|
-
const [panOffset, setPanOffset] =
|
|
13049
|
-
const handleZoomIn =
|
|
12125
|
+
const [zoom, setZoom] = React9.useState(1);
|
|
12126
|
+
const [center, setCenter] = React9.useState(defaultCenter);
|
|
12127
|
+
const [hoveredRegion, setHoveredRegion] = React9.useState(null);
|
|
12128
|
+
const [animatedRegions, setAnimatedRegions] = React9.useState(/* @__PURE__ */ new Set());
|
|
12129
|
+
const [panOffset, setPanOffset] = React9.useState([0, 0]);
|
|
12130
|
+
const handleZoomIn = React9.useCallback(() => {
|
|
13050
12131
|
setZoom((previous) => Math.min(previous + ZOOM_STEP, MAX_ZOOM));
|
|
13051
12132
|
}, []);
|
|
13052
|
-
const handleZoomOut =
|
|
12133
|
+
const handleZoomOut = React9.useCallback(() => {
|
|
13053
12134
|
setZoom((previous) => Math.max(previous - ZOOM_STEP, MIN_ZOOM));
|
|
13054
12135
|
}, []);
|
|
13055
|
-
const handleMoveEnd =
|
|
12136
|
+
const handleMoveEnd = React9.useCallback(
|
|
13056
12137
|
(position) => {
|
|
13057
12138
|
setCenter(position.coordinates);
|
|
13058
12139
|
setZoom(position.zoom);
|
|
13059
12140
|
},
|
|
13060
12141
|
[]
|
|
13061
12142
|
);
|
|
13062
|
-
const handlePan =
|
|
12143
|
+
const handlePan = React9.useCallback((dx, dy) => {
|
|
13063
12144
|
setPanOffset((previous) => [previous[0] + dx, previous[1] + dy]);
|
|
13064
12145
|
}, []);
|
|
13065
|
-
const regionGroups =
|
|
12146
|
+
const regionGroups = React9.useMemo(() => {
|
|
13066
12147
|
const grouped = /* @__PURE__ */ new Map();
|
|
13067
12148
|
items.forEach((item) => {
|
|
13068
12149
|
const code = getRegionCode(item);
|
|
@@ -13077,15 +12158,15 @@ function useGeoMapState({
|
|
|
13077
12158
|
coordinates: regionCoordinates[code]
|
|
13078
12159
|
})).sort((a, b) => b.items.length - a.items.length);
|
|
13079
12160
|
}, [items, getRegionCode, regionCoordinates]);
|
|
13080
|
-
const animationCodes =
|
|
12161
|
+
const animationCodes = React9.useMemo(
|
|
13081
12162
|
() => regionGroups.map((regionData) => regionData.code),
|
|
13082
12163
|
[regionGroups]
|
|
13083
12164
|
);
|
|
13084
|
-
const animationSignature =
|
|
12165
|
+
const animationSignature = React9.useMemo(
|
|
13085
12166
|
() => animationCodes.join("|"),
|
|
13086
12167
|
[animationCodes]
|
|
13087
12168
|
);
|
|
13088
|
-
|
|
12169
|
+
React9.useEffect(() => {
|
|
13089
12170
|
if (animationCodes.length === 0) return;
|
|
13090
12171
|
setAnimatedRegions(/* @__PURE__ */ new Set());
|
|
13091
12172
|
const timers = [];
|
|
@@ -13097,14 +12178,14 @@ function useGeoMapState({
|
|
|
13097
12178
|
});
|
|
13098
12179
|
return () => timers.forEach(clearTimeout);
|
|
13099
12180
|
}, [animationSignature]);
|
|
13100
|
-
const getMarkerSize =
|
|
12181
|
+
const getMarkerSize = React9.useCallback(
|
|
13101
12182
|
(count) => {
|
|
13102
12183
|
const baseSize = count >= 10 ? 14 : count >= 5 ? 11 : count >= 2 ? 8 : 6;
|
|
13103
12184
|
return baseSize / Math.sqrt(zoom);
|
|
13104
12185
|
},
|
|
13105
12186
|
[zoom]
|
|
13106
12187
|
);
|
|
13107
|
-
const getFontSize =
|
|
12188
|
+
const getFontSize = React9.useCallback(
|
|
13108
12189
|
(markerSize) => {
|
|
13109
12190
|
const baseSize = markerSize > 10 ? 10 : 8;
|
|
13110
12191
|
const scaledSize = baseSize / Math.sqrt(zoom);
|
|
@@ -13156,10 +12237,10 @@ function GeoMapCanvasInner({
|
|
|
13156
12237
|
projectionType = "mercator",
|
|
13157
12238
|
ariaLabel = "Interactive map"
|
|
13158
12239
|
}, ref) {
|
|
13159
|
-
const [geoData, setGeoData] =
|
|
13160
|
-
const svgRef =
|
|
13161
|
-
const dragState =
|
|
13162
|
-
|
|
12240
|
+
const [geoData, setGeoData] = React9.useState(null);
|
|
12241
|
+
const svgRef = React9.useRef(null);
|
|
12242
|
+
const dragState = React9.useRef(null);
|
|
12243
|
+
React9.useEffect(() => {
|
|
13163
12244
|
let cancelled = false;
|
|
13164
12245
|
async function loadGeoData() {
|
|
13165
12246
|
try {
|
|
@@ -13175,7 +12256,7 @@ function GeoMapCanvasInner({
|
|
|
13175
12256
|
cancelled = true;
|
|
13176
12257
|
};
|
|
13177
12258
|
}, [geoJsonUrl]);
|
|
13178
|
-
const handleMouseDown =
|
|
12259
|
+
const handleMouseDown = React9.useCallback(
|
|
13179
12260
|
(event) => {
|
|
13180
12261
|
if (event.button !== 0) return;
|
|
13181
12262
|
dragState.current = {
|
|
@@ -13189,7 +12270,7 @@ function GeoMapCanvasInner({
|
|
|
13189
12270
|
},
|
|
13190
12271
|
[]
|
|
13191
12272
|
);
|
|
13192
|
-
const handleMouseMove =
|
|
12273
|
+
const handleMouseMove = React9.useCallback(
|
|
13193
12274
|
(event) => {
|
|
13194
12275
|
if (!dragState.current?.active || !svgRef.current) return;
|
|
13195
12276
|
const totalDx = event.clientX - dragState.current.startX;
|
|
@@ -13209,12 +12290,12 @@ function GeoMapCanvasInner({
|
|
|
13209
12290
|
},
|
|
13210
12291
|
[zoom, onPan]
|
|
13211
12292
|
);
|
|
13212
|
-
const handleMouseUp =
|
|
12293
|
+
const handleMouseUp = React9.useCallback(() => {
|
|
13213
12294
|
if (dragState.current) {
|
|
13214
12295
|
dragState.current.active = false;
|
|
13215
12296
|
}
|
|
13216
12297
|
}, []);
|
|
13217
|
-
const wasDragAction =
|
|
12298
|
+
const wasDragAction = React9.useCallback(() => {
|
|
13218
12299
|
return dragState.current?.didDrag === true;
|
|
13219
12300
|
}, []);
|
|
13220
12301
|
const getLighterColor = (hexColor) => {
|
|
@@ -13223,38 +12304,38 @@ function GeoMapCanvasInner({
|
|
|
13223
12304
|
const b = parseInt(hexColor.slice(5, 7), 16);
|
|
13224
12305
|
return `rgba(${r}, ${g}, ${b}, 0.15)`;
|
|
13225
12306
|
};
|
|
13226
|
-
const lighterColors =
|
|
13227
|
-
const
|
|
12307
|
+
const lighterColors = React9.useMemo(() => {
|
|
12308
|
+
const colors2 = /* @__PURE__ */ new Map();
|
|
13228
12309
|
regionColorMap.forEach((color, code) => {
|
|
13229
|
-
|
|
12310
|
+
colors2.set(code, getLighterColor(color));
|
|
13230
12311
|
});
|
|
13231
|
-
return
|
|
12312
|
+
return colors2;
|
|
13232
12313
|
}, [regionColorMap]);
|
|
13233
|
-
const featureCollection =
|
|
12314
|
+
const featureCollection = React9.useMemo(() => {
|
|
13234
12315
|
if (!geoData) return null;
|
|
13235
12316
|
return {
|
|
13236
12317
|
type: "FeatureCollection",
|
|
13237
12318
|
features: geoData.features
|
|
13238
12319
|
};
|
|
13239
12320
|
}, [geoData]);
|
|
13240
|
-
const projection =
|
|
12321
|
+
const projection = React9.useMemo(() => {
|
|
13241
12322
|
if (!featureCollection) return null;
|
|
13242
12323
|
if (projectionType === "albersUsa") {
|
|
13243
12324
|
return d3Geo.geoAlbersUsa();
|
|
13244
12325
|
}
|
|
13245
12326
|
return d3Geo.geoMercator().fitSize([VIEWBOX_WIDTH, VIEWBOX_HEIGHT], featureCollection);
|
|
13246
12327
|
}, [featureCollection, projectionType]);
|
|
13247
|
-
const pathGenerator =
|
|
12328
|
+
const pathGenerator = React9.useMemo(() => {
|
|
13248
12329
|
if (!projection) return null;
|
|
13249
12330
|
return d3Geo.geoPath(projection);
|
|
13250
12331
|
}, [projection]);
|
|
13251
|
-
const regionsWithItems =
|
|
12332
|
+
const regionsWithItems = React9.useMemo(() => {
|
|
13252
12333
|
return new Set(regionGroups.map((regionData) => regionData.code));
|
|
13253
12334
|
}, [regionGroups]);
|
|
13254
|
-
const hasAnyActiveFilter =
|
|
12335
|
+
const hasAnyActiveFilter = React9.useMemo(() => {
|
|
13255
12336
|
return regionGroups.some((regionData) => isRegionActive?.(regionData.code));
|
|
13256
12337
|
}, [regionGroups, isRegionActive]);
|
|
13257
|
-
const featureBounds =
|
|
12338
|
+
const featureBounds = React9.useMemo(() => {
|
|
13258
12339
|
if (!pathGenerator || !geoData) return null;
|
|
13259
12340
|
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
13260
12341
|
for (const feature of geoData.features) {
|
|
@@ -13273,7 +12354,7 @@ function GeoMapCanvasInner({
|
|
|
13273
12354
|
const effectiveHeight = featureBounds?.height ?? (projectionType === "albersUsa" ? ALBERS_HEIGHT : VIEWBOX_HEIGHT);
|
|
13274
12355
|
const baseX = featureBounds?.x ?? 0;
|
|
13275
12356
|
const baseY = featureBounds?.y ?? 0;
|
|
13276
|
-
const viewBoxParts =
|
|
12357
|
+
const viewBoxParts = React9.useMemo(() => {
|
|
13277
12358
|
const width = effectiveWidth / zoom;
|
|
13278
12359
|
const height = effectiveHeight / zoom;
|
|
13279
12360
|
const x = baseX + (effectiveWidth - width) / 2 - panOffset[0];
|
|
@@ -13460,8 +12541,8 @@ function GeoMapCanvasInner({
|
|
|
13460
12541
|
}
|
|
13461
12542
|
);
|
|
13462
12543
|
}
|
|
13463
|
-
var GeoMapCanvas =
|
|
13464
|
-
var MapZoomControls =
|
|
12544
|
+
var GeoMapCanvas = React9__namespace.default.forwardRef(GeoMapCanvasInner);
|
|
12545
|
+
var MapZoomControls = React9__namespace.default.forwardRef(
|
|
13465
12546
|
({ zoom, minZoom, maxZoom, onZoomIn, onZoomOut, labels }, ref) => {
|
|
13466
12547
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13467
12548
|
"div",
|
|
@@ -13533,7 +12614,7 @@ function InteractiveGeoMapInner({
|
|
|
13533
12614
|
defaultCenter
|
|
13534
12615
|
};
|
|
13535
12616
|
const mapState = useGeoMapState(mapStateOptions);
|
|
13536
|
-
const regionColorMap =
|
|
12617
|
+
const regionColorMap = React9.useMemo(() => {
|
|
13537
12618
|
const colorMap = /* @__PURE__ */ new Map();
|
|
13538
12619
|
for (const code of Object.keys(regionCoordinates)) {
|
|
13539
12620
|
colorMap.set(code, getRegionColor(code));
|
|
@@ -13548,13 +12629,13 @@ function InteractiveGeoMapInner({
|
|
|
13548
12629
|
const handleRegionClick = (code) => {
|
|
13549
12630
|
onRegionToggle?.(code);
|
|
13550
12631
|
};
|
|
13551
|
-
const hoveredRegionData =
|
|
12632
|
+
const hoveredRegionData = React9.useMemo(() => {
|
|
13552
12633
|
if (!mapState.hoveredRegion) return null;
|
|
13553
12634
|
return mapState.regionGroups.find(
|
|
13554
12635
|
(regionData) => regionData.code === mapState.hoveredRegion
|
|
13555
12636
|
) ?? null;
|
|
13556
12637
|
}, [mapState.hoveredRegion, mapState.regionGroups]);
|
|
13557
|
-
const counterText =
|
|
12638
|
+
const counterText = React9.useMemo(() => {
|
|
13558
12639
|
if (!formatCounter) return null;
|
|
13559
12640
|
const hasActiveFilter = isRegionActive && mapState.regionGroups.some(
|
|
13560
12641
|
(regionData) => isRegionActive(regionData.code)
|
|
@@ -13616,9 +12697,9 @@ function InteractiveGeoMapInner({
|
|
|
13616
12697
|
}
|
|
13617
12698
|
);
|
|
13618
12699
|
}
|
|
13619
|
-
var InteractiveGeoMap =
|
|
12700
|
+
var InteractiveGeoMap = React9__namespace.default.forwardRef(InteractiveGeoMapInner);
|
|
13620
12701
|
var DEFAULT_LEGEND_COLOR = "#6366f1";
|
|
13621
|
-
var GeoMapLegend =
|
|
12702
|
+
var GeoMapLegend = React9__namespace.default.forwardRef(
|
|
13622
12703
|
({ items, colorMap, getFlagUrl, getLabel, labels, maxItems = 5 }, ref) => {
|
|
13623
12704
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13624
12705
|
"div",
|
|
@@ -19802,7 +18883,7 @@ function getPageNumbers(currentPage, totalPages) {
|
|
|
19802
18883
|
}
|
|
19803
18884
|
return pages;
|
|
19804
18885
|
}
|
|
19805
|
-
var PageHeader =
|
|
18886
|
+
var PageHeader = React9.memo(function PageHeader2({
|
|
19806
18887
|
title,
|
|
19807
18888
|
subtitle,
|
|
19808
18889
|
size = "default",
|
|
@@ -19810,13 +18891,13 @@ var PageHeader = React12.memo(function PageHeader2({
|
|
|
19810
18891
|
className,
|
|
19811
18892
|
children
|
|
19812
18893
|
}) {
|
|
19813
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
18894
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx4__default.default("mb-6 sm:mb-8", className), children: [
|
|
19814
18895
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4", children: [
|
|
19815
18896
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
19816
18897
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19817
18898
|
"h1",
|
|
19818
18899
|
{
|
|
19819
|
-
className:
|
|
18900
|
+
className: clsx4__default.default(
|
|
19820
18901
|
"font-bold text-slate-900 dark:text-slate-100 truncate",
|
|
19821
18902
|
size === "large" ? "text-3xl" : "text-2xl"
|
|
19822
18903
|
),
|
|
@@ -19830,14 +18911,14 @@ var PageHeader = React12.memo(function PageHeader2({
|
|
|
19830
18911
|
children && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children })
|
|
19831
18912
|
] });
|
|
19832
18913
|
});
|
|
19833
|
-
var PageSectionHeader =
|
|
18914
|
+
var PageSectionHeader = React9.memo(function PageSectionHeader2({
|
|
19834
18915
|
title,
|
|
19835
18916
|
subtitle,
|
|
19836
18917
|
actions,
|
|
19837
18918
|
className,
|
|
19838
18919
|
children
|
|
19839
18920
|
}) {
|
|
19840
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
18921
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx4__default.default("mb-4", className), children: [
|
|
19841
18922
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3", children: [
|
|
19842
18923
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
19843
18924
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg sm:text-xl font-semibold text-slate-900 dark:text-slate-100", children: title }),
|
|
@@ -19848,14 +18929,14 @@ var PageSectionHeader = React12.memo(function PageSectionHeader2({
|
|
|
19848
18929
|
children && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children })
|
|
19849
18930
|
] });
|
|
19850
18931
|
});
|
|
19851
|
-
var CardSectionHeader =
|
|
18932
|
+
var CardSectionHeader = React9.memo(function CardSectionHeader2({
|
|
19852
18933
|
title,
|
|
19853
18934
|
subtitle,
|
|
19854
18935
|
actions,
|
|
19855
18936
|
className,
|
|
19856
18937
|
children
|
|
19857
18938
|
}) {
|
|
19858
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
18939
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx4__default.default("mb-3", className), children: [
|
|
19859
18940
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2", children: [
|
|
19860
18941
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
19861
18942
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base sm:text-lg font-medium text-slate-900 dark:text-slate-100", children: title }),
|
|
@@ -19867,11 +18948,11 @@ var CardSectionHeader = React12.memo(function CardSectionHeader2({
|
|
|
19867
18948
|
] });
|
|
19868
18949
|
});
|
|
19869
18950
|
var Tabs = TabsPrimitive__namespace.Root;
|
|
19870
|
-
var TabsList =
|
|
18951
|
+
var TabsList = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19871
18952
|
TabsPrimitive__namespace.List,
|
|
19872
18953
|
{
|
|
19873
18954
|
ref,
|
|
19874
|
-
className:
|
|
18955
|
+
className: clsx4__default.default(
|
|
19875
18956
|
"inline-flex h-9 items-center justify-center rounded-lg bg-muted/50 p-0.5 text-muted-foreground",
|
|
19876
18957
|
className
|
|
19877
18958
|
),
|
|
@@ -19879,11 +18960,11 @@ var TabsList = React12__namespace.forwardRef(({ className, ...props }, ref) => /
|
|
|
19879
18960
|
}
|
|
19880
18961
|
));
|
|
19881
18962
|
TabsList.displayName = TabsPrimitive__namespace.List.displayName;
|
|
19882
|
-
var TabsTrigger =
|
|
18963
|
+
var TabsTrigger = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19883
18964
|
TabsPrimitive__namespace.Trigger,
|
|
19884
18965
|
{
|
|
19885
18966
|
ref,
|
|
19886
|
-
className:
|
|
18967
|
+
className: clsx4__default.default(
|
|
19887
18968
|
"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
19888
18969
|
className
|
|
19889
18970
|
),
|
|
@@ -19891,11 +18972,11 @@ var TabsTrigger = React12__namespace.forwardRef(({ className, ...props }, ref) =
|
|
|
19891
18972
|
}
|
|
19892
18973
|
));
|
|
19893
18974
|
TabsTrigger.displayName = TabsPrimitive__namespace.Trigger.displayName;
|
|
19894
|
-
var TabsContent =
|
|
18975
|
+
var TabsContent = React9__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19895
18976
|
TabsPrimitive__namespace.Content,
|
|
19896
18977
|
{
|
|
19897
18978
|
ref,
|
|
19898
|
-
className:
|
|
18979
|
+
className: clsx4__default.default(
|
|
19899
18980
|
"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
19900
18981
|
className
|
|
19901
18982
|
),
|
|
@@ -19903,7 +18984,7 @@ var TabsContent = React12__namespace.forwardRef(({ className, ...props }, ref) =
|
|
|
19903
18984
|
}
|
|
19904
18985
|
));
|
|
19905
18986
|
TabsContent.displayName = TabsPrimitive__namespace.Content.displayName;
|
|
19906
|
-
var ContactCard =
|
|
18987
|
+
var ContactCard = React9__namespace.default.memo(function ContactCard2({
|
|
19907
18988
|
type,
|
|
19908
18989
|
email,
|
|
19909
18990
|
phone
|
|
@@ -19923,7 +19004,7 @@ var ContactCard = React12__namespace.default.memo(function ContactCard2({
|
|
|
19923
19004
|
] })
|
|
19924
19005
|
] });
|
|
19925
19006
|
});
|
|
19926
|
-
var OfficeCard =
|
|
19007
|
+
var OfficeCard = React9__namespace.default.memo(function OfficeCard2({
|
|
19927
19008
|
city,
|
|
19928
19009
|
address,
|
|
19929
19010
|
postalCode
|
|
@@ -19936,7 +19017,7 @@ var OfficeCard = React12__namespace.default.memo(function OfficeCard2({
|
|
|
19936
19017
|
] })
|
|
19937
19018
|
] });
|
|
19938
19019
|
});
|
|
19939
|
-
var ContactSection =
|
|
19020
|
+
var ContactSection = React9__namespace.default.memo(
|
|
19940
19021
|
function ContactSection2({ title, subtitle, children }) {
|
|
19941
19022
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-10 py-16 lg:grid-cols-3", children: [
|
|
19942
19023
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -19947,11 +19028,11 @@ var ContactSection = React12__namespace.default.memo(
|
|
|
19947
19028
|
] });
|
|
19948
19029
|
}
|
|
19949
19030
|
);
|
|
19950
|
-
var Progress =
|
|
19031
|
+
var Progress = React9__namespace.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
19951
19032
|
ProgressPrimitive__namespace.Root,
|
|
19952
19033
|
{
|
|
19953
19034
|
ref,
|
|
19954
|
-
className:
|
|
19035
|
+
className: clsx4__default.default(
|
|
19955
19036
|
"relative h-4 w-full overflow-hidden rounded-full bg-secondary",
|
|
19956
19037
|
className
|
|
19957
19038
|
),
|
|
@@ -19966,7 +19047,7 @@ var Progress = React12__namespace.forwardRef(({ className, value, ...props }, re
|
|
|
19966
19047
|
}
|
|
19967
19048
|
));
|
|
19968
19049
|
Progress.displayName = ProgressPrimitive__namespace.Root.displayName;
|
|
19969
|
-
var
|
|
19050
|
+
var colors = {
|
|
19970
19051
|
"dark/zinc": [
|
|
19971
19052
|
"[--switch-bg-ring:var(--color-slate-950)]/90 [--switch-bg:var(--color-slate-900)] dark:[--switch-bg-ring:transparent] dark:[--switch-bg:var(--color-white)]/25",
|
|
19972
19053
|
"[--switch-ring:var(--color-slate-950)]/90 [--switch-shadow:var(--color-black)]/10 [--switch:white] dark:[--switch-ring:var(--color-slate-700)]/90"
|
|
@@ -20062,11 +19143,11 @@ function Switch2({
|
|
|
20062
19143
|
...props
|
|
20063
19144
|
}) {
|
|
20064
19145
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20065
|
-
|
|
19146
|
+
Headless3__namespace.Switch,
|
|
20066
19147
|
{
|
|
20067
19148
|
"data-slot": "control",
|
|
20068
19149
|
...props,
|
|
20069
|
-
className:
|
|
19150
|
+
className: clsx4__default.default(
|
|
20070
19151
|
className,
|
|
20071
19152
|
// Base styles
|
|
20072
19153
|
"group relative isolate inline-flex h-6 w-10 cursor-default rounded-full p-[3px] sm:h-5 sm:w-8",
|
|
@@ -20087,13 +19168,13 @@ function Switch2({
|
|
|
20087
19168
|
"data-disabled:bg-slate-200 data-disabled:opacity-50 data-disabled:data-checked:bg-slate-200 data-disabled:data-checked:ring-black/5",
|
|
20088
19169
|
"dark:data-disabled:bg-white/15 dark:data-disabled:data-checked:bg-white/15 dark:data-disabled:data-checked:ring-white/15",
|
|
20089
19170
|
// Color specific styles
|
|
20090
|
-
|
|
19171
|
+
colors[color]
|
|
20091
19172
|
),
|
|
20092
19173
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20093
19174
|
"span",
|
|
20094
19175
|
{
|
|
20095
19176
|
"aria-hidden": "true",
|
|
20096
|
-
className:
|
|
19177
|
+
className: clsx4__default.default(
|
|
20097
19178
|
// Basic layout
|
|
20098
19179
|
"pointer-events-none relative inline-block size-4.5 rounded-full sm:size-3.5",
|
|
20099
19180
|
// Transition
|
|
@@ -20263,7 +19344,7 @@ function AppNavigation({
|
|
|
20263
19344
|
signOut: signOutLabel = "Sign Out",
|
|
20264
19345
|
actions: actionsLabel = "Actions"
|
|
20265
19346
|
} = labels;
|
|
20266
|
-
const dockResult =
|
|
19347
|
+
const dockResult = React9.useMemo(
|
|
20267
19348
|
() => buildDockActions(items, pathname, { navigate: onNavigate, openProfile: onOpenProfile, onSignOut }, {
|
|
20268
19349
|
showDashboard: !!dashboardIcon,
|
|
20269
19350
|
dashboardPath,
|
|
@@ -20291,30 +19372,30 @@ function AppNavigation({
|
|
|
20291
19372
|
signOutLabel
|
|
20292
19373
|
]
|
|
20293
19374
|
);
|
|
20294
|
-
const launchpadItems =
|
|
19375
|
+
const launchpadItems = React9.useMemo(
|
|
20295
19376
|
() => buildLaunchpadItems(items, launchpadActionItems),
|
|
20296
19377
|
[items, launchpadActionItems]
|
|
20297
19378
|
);
|
|
20298
|
-
const actionItemIds =
|
|
19379
|
+
const actionItemIds = React9.useMemo(
|
|
20299
19380
|
() => new Set((launchpadActionItems ?? []).map((item) => item.id)),
|
|
20300
19381
|
[launchpadActionItems]
|
|
20301
19382
|
);
|
|
20302
|
-
const pageOrder =
|
|
19383
|
+
const pageOrder = React9.useMemo(
|
|
20303
19384
|
() => launchpadPageOrder ?? items.map((item) => item.id),
|
|
20304
19385
|
[launchpadPageOrder, items]
|
|
20305
19386
|
);
|
|
20306
|
-
const flyoutNavItems =
|
|
20307
|
-
const getAccentRgb =
|
|
19387
|
+
const flyoutNavItems = React9.useMemo(() => buildFlyoutNavItems(items), [items]);
|
|
19388
|
+
const getAccentRgb = React9.useMemo(() => {
|
|
20308
19389
|
const map = new Map(items.map((item) => [item.href, item.accentRgb]));
|
|
20309
19390
|
return (href) => map.get(href) ?? "99, 102, 241";
|
|
20310
19391
|
}, [items]);
|
|
20311
|
-
const handleLaunchpadItemClick =
|
|
19392
|
+
const handleLaunchpadItemClick = React9.useMemo(
|
|
20312
19393
|
() => externalLaunchpadItemClick ?? ((item) => {
|
|
20313
19394
|
onNavigate(item.href);
|
|
20314
19395
|
}),
|
|
20315
19396
|
[externalLaunchpadItemClick, onNavigate]
|
|
20316
19397
|
);
|
|
20317
|
-
const handleFlyoutNavigate =
|
|
19398
|
+
const handleFlyoutNavigate = React9.useMemo(
|
|
20318
19399
|
() => (href) => {
|
|
20319
19400
|
onFlyoutClose?.();
|
|
20320
19401
|
onNavigate(href);
|
|
@@ -20485,9 +19566,9 @@ function PlatformShell({
|
|
|
20485
19566
|
onLanguage
|
|
20486
19567
|
}) {
|
|
20487
19568
|
const store = usePlatformShellStore();
|
|
20488
|
-
const callbacksRef =
|
|
19569
|
+
const callbacksRef = React9.useRef({ onSignOut, onToggleTheme, onNavigate, onNotifications, onLanguage });
|
|
20489
19570
|
callbacksRef.current = { onSignOut, onToggleTheme, onNavigate, onNotifications, onLanguage };
|
|
20490
|
-
|
|
19571
|
+
React9.useEffect(() => {
|
|
20491
19572
|
store.registerCallbacks({
|
|
20492
19573
|
onSignOut: () => callbacksRef.current.onSignOut(),
|
|
20493
19574
|
onToggleTheme: () => callbacksRef.current.onToggleTheme?.(),
|
|
@@ -20496,11 +19577,11 @@ function PlatformShell({
|
|
|
20496
19577
|
onLanguageChange: callbacksRef.current.onLanguage ? () => callbacksRef.current.onLanguage() : void 0
|
|
20497
19578
|
});
|
|
20498
19579
|
}, []);
|
|
20499
|
-
|
|
19580
|
+
React9.useEffect(() => {
|
|
20500
19581
|
store.setUser(user);
|
|
20501
19582
|
store.setAuthStatus(authStatus);
|
|
20502
19583
|
}, [user?.email, user?.role, authStatus]);
|
|
20503
|
-
|
|
19584
|
+
React9.useEffect(() => {
|
|
20504
19585
|
store.setPreferences({
|
|
20505
19586
|
locale: labels.currentLocale ?? "en",
|
|
20506
19587
|
localeFlag: labels.localeFlag,
|
|
@@ -20511,10 +19592,10 @@ function PlatformShell({
|
|
|
20511
19592
|
dockEnabled: dockEnabled ?? true
|
|
20512
19593
|
});
|
|
20513
19594
|
}, [resolvedTheme, dockPosition, dockAutoHide, dockEnabled, labels.currentLocale]);
|
|
20514
|
-
|
|
19595
|
+
React9.useEffect(() => {
|
|
20515
19596
|
store.setNotificationCount(notificationCount ?? 0);
|
|
20516
19597
|
}, [notificationCount]);
|
|
20517
|
-
|
|
19598
|
+
React9.useEffect(() => {
|
|
20518
19599
|
store.setLabels(labels);
|
|
20519
19600
|
store.setBranding(appName, appGradient);
|
|
20520
19601
|
}, [appName, appGradient]);
|
|
@@ -20527,13 +19608,13 @@ function PlatformShell({
|
|
|
20527
19608
|
const requestSignOut = store.requestSignOut;
|
|
20528
19609
|
const cancelSignOut = store.cancelSignOut;
|
|
20529
19610
|
const confirmSignOut = store.confirmSignOut;
|
|
20530
|
-
const filteredItems =
|
|
19611
|
+
const filteredItems = React9.useMemo(
|
|
20531
19612
|
() => filterByPermission(items, user?.permissions ?? []),
|
|
20532
19613
|
[items, user?.permissions]
|
|
20533
19614
|
);
|
|
20534
19615
|
const userName = usePlatformShellStore(selectUserName);
|
|
20535
19616
|
const userInitial = usePlatformShellStore(selectUserInitial);
|
|
20536
|
-
const launchpadUserProfile =
|
|
19617
|
+
const launchpadUserProfile = React9.useMemo(() => {
|
|
20537
19618
|
if (!user) return null;
|
|
20538
19619
|
return {
|
|
20539
19620
|
name: user.name ?? void 0,
|
|
@@ -20546,7 +19627,7 @@ function PlatformShell({
|
|
|
20546
19627
|
const storeNotifications = store.notificationCount;
|
|
20547
19628
|
const storePrefs = store.preferences;
|
|
20548
19629
|
const storeUser = store.user;
|
|
20549
|
-
const builtInActionItems =
|
|
19630
|
+
const builtInActionItems = React9.useMemo(() => {
|
|
20550
19631
|
const actions = [];
|
|
20551
19632
|
actions.push({
|
|
20552
19633
|
id: "__notifications",
|
|
@@ -20608,7 +19689,7 @@ function PlatformShell({
|
|
|
20608
19689
|
});
|
|
20609
19690
|
return actions;
|
|
20610
19691
|
}, [storeLabels, storeNotifications, storePrefs.localeFlag, storePrefs.localeName, storePrefs.resolvedTheme, storeUser?.name, storeUser?.email]);
|
|
20611
|
-
const allLaunchpadItems =
|
|
19692
|
+
const allLaunchpadItems = React9.useMemo(
|
|
20612
19693
|
() => [
|
|
20613
19694
|
...filteredItems.map((item) => ({ ...item, subtitle: "" })),
|
|
20614
19695
|
...launchpadActionItems ?? [],
|
|
@@ -20616,7 +19697,7 @@ function PlatformShell({
|
|
|
20616
19697
|
],
|
|
20617
19698
|
[filteredItems, launchpadActionItems, builtInActionItems]
|
|
20618
19699
|
);
|
|
20619
|
-
const handleLaunchpadItemClick =
|
|
19700
|
+
const handleLaunchpadItemClick = React9.useCallback((item) => {
|
|
20620
19701
|
switch (item.id) {
|
|
20621
19702
|
case "__notifications":
|
|
20622
19703
|
store.openNotifications();
|
|
@@ -20637,12 +19718,12 @@ function PlatformShell({
|
|
|
20637
19718
|
onNavigate(item.href);
|
|
20638
19719
|
}
|
|
20639
19720
|
}, [onNotifications, onLanguage, onToggleTheme, openProfile, requestSignOut, onNavigate]);
|
|
20640
|
-
const flyoutNavItems =
|
|
20641
|
-
const getAccentRgb =
|
|
19721
|
+
const flyoutNavItems = React9.useMemo(() => buildFlyoutNavItems(filteredItems), [filteredItems]);
|
|
19722
|
+
const getAccentRgb = React9.useMemo(() => {
|
|
20642
19723
|
const map = new Map(filteredItems.map((item) => [item.href, item.accentRgb]));
|
|
20643
19724
|
return (href) => map.get(href) ?? "99, 102, 241";
|
|
20644
19725
|
}, [filteredItems]);
|
|
20645
|
-
const breadcrumbPages =
|
|
19726
|
+
const breadcrumbPages = React9.useMemo(() => {
|
|
20646
19727
|
const segments = pathname.split("/").filter(Boolean);
|
|
20647
19728
|
return segments.map((segment, index) => ({
|
|
20648
19729
|
name: segment.charAt(0).toUpperCase() + segment.slice(1).replace(/-/g, " "),
|
|
@@ -20774,13 +19855,11 @@ function PlatformShell({
|
|
|
20774
19855
|
) })
|
|
20775
19856
|
] })
|
|
20776
19857
|
) : (
|
|
20777
|
-
/* Non-dashboard:
|
|
20778
|
-
|
|
20779
|
-
|
|
20780
|
-
|
|
20781
|
-
|
|
20782
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 py-6 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto w-full max-w-7xl", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20783
|
-
React12.Suspense,
|
|
19858
|
+
/* Non-dashboard: padded content, full-width. Pages own their
|
|
19859
|
+
own max-width if they need one (the workflow canvas, for
|
|
19860
|
+
example, needs 100vw — so we don't cap here at the shell). */
|
|
19861
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 py-6 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19862
|
+
React9.Suspense,
|
|
20784
19863
|
{
|
|
20785
19864
|
fallback: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20786
19865
|
BrandedLoader,
|
|
@@ -20878,10 +19957,10 @@ function createStubClient() {
|
|
|
20878
19957
|
}
|
|
20879
19958
|
);
|
|
20880
19959
|
}
|
|
20881
|
-
var UiAuthContext =
|
|
19960
|
+
var UiAuthContext = React9.createContext(null);
|
|
20882
19961
|
var UiAuthProvider = UiAuthContext.Provider;
|
|
20883
19962
|
function useAuth() {
|
|
20884
|
-
const ctx =
|
|
19963
|
+
const ctx = React9.useContext(UiAuthContext);
|
|
20885
19964
|
if (ctx) return ctx;
|
|
20886
19965
|
return {
|
|
20887
19966
|
user: null,
|
|
@@ -20898,10 +19977,10 @@ function useAuth() {
|
|
|
20898
19977
|
logoutInFlight: false
|
|
20899
19978
|
};
|
|
20900
19979
|
}
|
|
20901
|
-
var UiPrefsContext =
|
|
19980
|
+
var UiPrefsContext = React9.createContext(null);
|
|
20902
19981
|
var UiPrefsProvider = UiPrefsContext.Provider;
|
|
20903
19982
|
function usePlatformPreferences() {
|
|
20904
|
-
const ctx =
|
|
19983
|
+
const ctx = React9.useContext(UiPrefsContext);
|
|
20905
19984
|
return ctx ?? {
|
|
20906
19985
|
theme: "dark",
|
|
20907
19986
|
resolvedTheme: "dark",
|
|
@@ -20928,13 +20007,13 @@ function useImpersonation() {
|
|
|
20928
20007
|
}
|
|
20929
20008
|
};
|
|
20930
20009
|
}
|
|
20931
|
-
var UiSocialProvidersContext =
|
|
20010
|
+
var UiSocialProvidersContext = React9.createContext({
|
|
20932
20011
|
providers: [],
|
|
20933
20012
|
loading: false
|
|
20934
20013
|
});
|
|
20935
20014
|
UiSocialProvidersContext.Provider;
|
|
20936
20015
|
function useSocialProviders() {
|
|
20937
|
-
return
|
|
20016
|
+
return React9.useContext(UiSocialProvidersContext);
|
|
20938
20017
|
}
|
|
20939
20018
|
|
|
20940
20019
|
exports.ARGENTINA_ACCENT_MAP = ARGENTINA_ACCENT_MAP;
|
|
@@ -20969,7 +20048,6 @@ exports.BRAZIL_STATE_PALETTES = BRAZIL_STATE_PALETTES;
|
|
|
20969
20048
|
exports.BR_THEME_CONFIG = BR_THEME_CONFIG;
|
|
20970
20049
|
exports.BackupCodeGrid = BackupCodeGrid;
|
|
20971
20050
|
exports.BadRequestPage = BadRequestPage;
|
|
20972
|
-
exports.Badge = Badge;
|
|
20973
20051
|
exports.BaseForm = BaseForm;
|
|
20974
20052
|
exports.BentoCard = BentoCard;
|
|
20975
20053
|
exports.BooleanFlagsPicker = BooleanFlagsPicker;
|
|
@@ -20977,7 +20055,6 @@ exports.BottomSafeArea = BottomSafeArea;
|
|
|
20977
20055
|
exports.BrandFilterSkeleton = BrandFilterSkeleton;
|
|
20978
20056
|
exports.BrandedLoader = BrandedLoader;
|
|
20979
20057
|
exports.Breadcrumb = Breadcrumb;
|
|
20980
|
-
exports.Button = Button;
|
|
20981
20058
|
exports.CANADA_ACCENT_MAP = CANADA_ACCENT_MAP;
|
|
20982
20059
|
exports.CANADA_MACRO_REGIONS = CANADA_MACRO_REGIONS;
|
|
20983
20060
|
exports.CANADA_MAP_CENTER = CANADA_MAP_CENTER;
|
|
@@ -21073,7 +20150,6 @@ exports.FieldGroup = FieldGroup;
|
|
|
21073
20150
|
exports.Fieldset = Fieldset2;
|
|
21074
20151
|
exports.FilterSectionHeader = FilterSectionHeader;
|
|
21075
20152
|
exports.FilterTileButton = FilterTileButton;
|
|
21076
|
-
exports.FloatingActionButton = FloatingActionButton;
|
|
21077
20153
|
exports.FlyoutMenu = FlyoutMenu;
|
|
21078
20154
|
exports.FlyoutNavGrid = FlyoutNavGrid;
|
|
21079
20155
|
exports.FlyoutQuickActions = FlyoutQuickActions;
|
|
@@ -21124,7 +20200,6 @@ exports.ITALY_MAP_CENTER = ITALY_MAP_CENTER;
|
|
|
21124
20200
|
exports.ITALY_REGION_COORDINATES = ITALY_REGION_COORDINATES;
|
|
21125
20201
|
exports.ITALY_REGION_PALETTES = ITALY_REGION_PALETTES;
|
|
21126
20202
|
exports.IT_THEME_CONFIG = IT_THEME_CONFIG;
|
|
21127
|
-
exports.IconButton = IconButton;
|
|
21128
20203
|
exports.ImageUpload = ImageUpload;
|
|
21129
20204
|
exports.InfoPopover = InfoPopover;
|
|
21130
20205
|
exports.InlineForm = InlineForm;
|
|
@@ -21337,7 +20412,6 @@ exports.ThemeToggle = ThemeToggle;
|
|
|
21337
20412
|
exports.ThemeToggleCompact = ThemeToggleCompact;
|
|
21338
20413
|
exports.TimePicker = TimePicker;
|
|
21339
20414
|
exports.ToggleSwitch = ToggleSwitch;
|
|
21340
|
-
exports.TouchTarget = TouchTarget;
|
|
21341
20415
|
exports.UK_ACCENT_MAP = UK_ACCENT_MAP;
|
|
21342
20416
|
exports.UK_MACRO_REGIONS = UK_MACRO_REGIONS;
|
|
21343
20417
|
exports.UK_MAP_CENTER = UK_MAP_CENTER;
|
|
@@ -21359,24 +20433,8 @@ exports.ZA_THEME_CONFIG = ZA_THEME_CONFIG;
|
|
|
21359
20433
|
exports.buildDockActions = buildDockActions;
|
|
21360
20434
|
exports.buildFlyoutNavItems = buildFlyoutNavItems;
|
|
21361
20435
|
exports.buildLaunchpadItems = buildLaunchpadItems;
|
|
21362
|
-
exports.buttonPress = buttonPress;
|
|
21363
|
-
exports.buttonPressReduced = buttonPressReduced;
|
|
21364
|
-
exports.buttonTap = buttonTap;
|
|
21365
|
-
exports.cardHover = cardHover;
|
|
21366
|
-
exports.cardHoverReduced = cardHoverReduced;
|
|
21367
|
-
exports.cardPress = cardPress;
|
|
21368
20436
|
exports.computeDomain = computeDomain;
|
|
21369
20437
|
exports.computeSeries = computeSeries;
|
|
21370
|
-
exports.createMotionProps = createMotionProps;
|
|
21371
|
-
exports.duration = duration;
|
|
21372
|
-
exports.durationSeconds = durationSeconds;
|
|
21373
|
-
exports.durations = durations;
|
|
21374
|
-
exports.durationsReduced = durationsReduced;
|
|
21375
|
-
exports.ease = ease;
|
|
21376
|
-
exports.easeCss = easeCss;
|
|
21377
|
-
exports.easings = easings;
|
|
21378
|
-
exports.fadeOnly = fadeOnly;
|
|
21379
|
-
exports.fadeScale = fadeScale;
|
|
21380
20438
|
exports.filterByPermission = filterByPermission;
|
|
21381
20439
|
exports.formatAddress = formatAddress;
|
|
21382
20440
|
exports.formatCurrency = formatCurrency;
|
|
@@ -21554,7 +20612,6 @@ exports.getThailandFlagUrl = getThailandFlagUrl;
|
|
|
21554
20612
|
exports.getThailandGradient = getThailandGradient;
|
|
21555
20613
|
exports.getThailandHexColor = getThailandHexColor;
|
|
21556
20614
|
exports.getThailandPalette = getThailandPalette;
|
|
21557
|
-
exports.getTransition = getTransition;
|
|
21558
20615
|
exports.getTurkeyAccent = getTurkeyAccent;
|
|
21559
20616
|
exports.getTurkeyColors = getTurkeyColors;
|
|
21560
20617
|
exports.getTurkeyFlagUrl = getTurkeyFlagUrl;
|
|
@@ -21573,8 +20630,6 @@ exports.getUsFlagUrl = getUsFlagUrl;
|
|
|
21573
20630
|
exports.getUsGradient = getUsGradient;
|
|
21574
20631
|
exports.getUsHexColor = getUsHexColor;
|
|
21575
20632
|
exports.getUsPalette = getUsPalette;
|
|
21576
|
-
exports.getVariants = getVariants;
|
|
21577
|
-
exports.iosColors = iosColors;
|
|
21578
20633
|
exports.isValidArgentinaProvince = isValidArgentinaProvince;
|
|
21579
20634
|
exports.isValidAustraliaState = isValidAustraliaState;
|
|
21580
20635
|
exports.isValidBrazilState = isValidBrazilState;
|
|
@@ -21606,13 +20661,6 @@ exports.isValidThailandProvince = isValidThailandProvince;
|
|
|
21606
20661
|
exports.isValidTurkeyProvince = isValidTurkeyProvince;
|
|
21607
20662
|
exports.isValidUKNation = isValidUKNation;
|
|
21608
20663
|
exports.isValidUsState = isValidUsState;
|
|
21609
|
-
exports.listItem = listItem;
|
|
21610
|
-
exports.listItemReduced = listItemReduced;
|
|
21611
|
-
exports.motionTokens = motionTokens;
|
|
21612
|
-
exports.notificationBanner = notificationBanner;
|
|
21613
|
-
exports.notificationBannerReduced = notificationBannerReduced;
|
|
21614
|
-
exports.pageControlDot = pageControlDot;
|
|
21615
|
-
exports.prefersReducedMotion = prefersReducedMotion;
|
|
21616
20664
|
exports.registerCountry = registerCountry;
|
|
21617
20665
|
exports.registerSubdivisionTheme = registerSubdivisionTheme;
|
|
21618
20666
|
exports.resolveGlassAccentRgb = resolveGlassAccentRgb;
|
|
@@ -21622,15 +20670,6 @@ exports.selectUserInitial = selectUserInitial;
|
|
|
21622
20670
|
exports.selectUserName = selectUserName;
|
|
21623
20671
|
exports.shimmerClass = shimmerClass;
|
|
21624
20672
|
exports.shimmerWhiteClass = shimmerWhiteClass;
|
|
21625
|
-
exports.slideDown = slideDown;
|
|
21626
|
-
exports.slideRight = slideRight;
|
|
21627
|
-
exports.slideUp = slideUp;
|
|
21628
|
-
exports.spring = spring;
|
|
21629
|
-
exports.springPresets = springPresets;
|
|
21630
|
-
exports.springPresetsReduced = springPresetsReduced;
|
|
21631
|
-
exports.staggerContainer = staggerContainer;
|
|
21632
|
-
exports.swipeActionThreshold = swipeActionThreshold;
|
|
21633
|
-
exports.swipeConstraints = swipeConstraints;
|
|
21634
20673
|
exports.useAuth = useAuth;
|
|
21635
20674
|
exports.useGeoMapState = useGeoMapState;
|
|
21636
20675
|
exports.useImpersonation = useImpersonation;
|
|
@@ -21642,5 +20681,5 @@ exports.useSocialProviders = useSocialProviders;
|
|
|
21642
20681
|
exports.validateDashboardSpec = validateDashboardSpec;
|
|
21643
20682
|
exports.xScale = xScale;
|
|
21644
20683
|
exports.yScale = yScale;
|
|
21645
|
-
//# sourceMappingURL=chunk-
|
|
21646
|
-
//# sourceMappingURL=chunk-
|
|
20684
|
+
//# sourceMappingURL=chunk-R4EKPXX3.js.map
|
|
20685
|
+
//# sourceMappingURL=chunk-R4EKPXX3.js.map
|