@j3m-quantum/ui 0.1.0 → 0.3.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/index.cjs +566 -246
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +82 -27
- package/dist/index.d.ts +82 -27
- package/dist/index.js +558 -245
- package/dist/index.js.map +1 -1
- package/dist/styles/index.css +23 -7
- package/dist/styles/j3m-overrides.css +115 -0
- package/package.json +31 -11
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var React10 = require('react');
|
|
4
4
|
var reactSlot = require('@radix-ui/react-slot');
|
|
5
5
|
var classVarianceAuthority = require('class-variance-authority');
|
|
6
6
|
var clsx = require('clsx');
|
|
@@ -62,7 +62,7 @@ function _interopNamespace(e) {
|
|
|
62
62
|
return Object.freeze(n);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
var
|
|
65
|
+
var React10__namespace = /*#__PURE__*/_interopNamespace(React10);
|
|
66
66
|
var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
|
|
67
67
|
var CheckboxPrimitive__namespace = /*#__PURE__*/_interopNamespace(CheckboxPrimitive);
|
|
68
68
|
var RadioGroupPrimitive__namespace = /*#__PURE__*/_interopNamespace(RadioGroupPrimitive);
|
|
@@ -95,8 +95,8 @@ var ResizablePrimitive__namespace = /*#__PURE__*/_interopNamespace(ResizablePrim
|
|
|
95
95
|
// src/hooks/use-mobile.ts
|
|
96
96
|
var MOBILE_BREAKPOINT = 768;
|
|
97
97
|
function useIsMobile() {
|
|
98
|
-
const [isMobile, setIsMobile] =
|
|
99
|
-
|
|
98
|
+
const [isMobile, setIsMobile] = React10__namespace.useState(void 0);
|
|
99
|
+
React10__namespace.useEffect(() => {
|
|
100
100
|
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
101
101
|
const onChange = () => {
|
|
102
102
|
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
@@ -111,24 +111,73 @@ function cn(...inputs) {
|
|
|
111
111
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
112
112
|
}
|
|
113
113
|
var buttonVariants = classVarianceAuthority.cva(
|
|
114
|
-
|
|
114
|
+
// Base styles - shared across all variants
|
|
115
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
115
116
|
{
|
|
116
117
|
variants: {
|
|
117
118
|
variant: {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
119
|
+
// Primary CTA - J3M Orange
|
|
120
|
+
default: [
|
|
121
|
+
"text-[var(--color-text-on-accent)]",
|
|
122
|
+
"bg-[var(--j3m-primary-300)]",
|
|
123
|
+
"hover:bg-[var(--j3m-primary-400)]",
|
|
124
|
+
"active:bg-[var(--j3m-primary-500)]",
|
|
125
|
+
"focus-visible:ring-[var(--j3m-primary-300)]",
|
|
126
|
+
"rounded-[var(--j3m-radius-2xs)]",
|
|
127
|
+
"shadow-sm"
|
|
128
|
+
].join(" "),
|
|
129
|
+
// Secondary - Neutral surface
|
|
130
|
+
secondary: [
|
|
131
|
+
"text-[var(--color-text-main)]",
|
|
132
|
+
"bg-[var(--j3m-neutral-200)]",
|
|
133
|
+
"hover:bg-[var(--j3m-neutral-300)]",
|
|
134
|
+
"active:bg-[var(--j3m-neutral-400)]",
|
|
135
|
+
"focus-visible:ring-[var(--j3m-neutral-400)]",
|
|
136
|
+
"rounded-[var(--j3m-radius-2xs)]"
|
|
137
|
+
].join(" "),
|
|
138
|
+
// Outline - Border only
|
|
139
|
+
outline: [
|
|
140
|
+
"text-[var(--color-text-main)]",
|
|
141
|
+
"bg-transparent",
|
|
142
|
+
"border border-[var(--color-border-strong)]",
|
|
143
|
+
"hover:bg-[var(--j3m-neutral-200)]",
|
|
144
|
+
"active:bg-[var(--j3m-neutral-300)]",
|
|
145
|
+
"focus-visible:ring-[var(--j3m-neutral-400)]",
|
|
146
|
+
"rounded-[var(--j3m-radius-2xs)]"
|
|
147
|
+
].join(" "),
|
|
148
|
+
// Ghost - Minimal
|
|
149
|
+
ghost: [
|
|
150
|
+
"text-[var(--color-text-muted)]",
|
|
151
|
+
"bg-transparent",
|
|
152
|
+
"hover:bg-[var(--j3m-neutral-200)]",
|
|
153
|
+
"hover:text-[var(--color-text-main)]",
|
|
154
|
+
"active:bg-[var(--j3m-neutral-300)]",
|
|
155
|
+
"focus-visible:ring-[var(--j3m-neutral-400)]",
|
|
156
|
+
"rounded-[var(--j3m-radius-2xs)]"
|
|
157
|
+
].join(" "),
|
|
158
|
+
// Destructive - Error/danger actions
|
|
159
|
+
destructive: [
|
|
160
|
+
"text-[var(--color-text-on-accent)]",
|
|
161
|
+
"bg-[var(--j3m-red-100)]",
|
|
162
|
+
"hover:bg-[var(--j3m-red-200)]",
|
|
163
|
+
"active:bg-[var(--j3m-red-200)]",
|
|
164
|
+
"focus-visible:ring-[var(--j3m-red-100)]",
|
|
165
|
+
"rounded-[var(--j3m-radius-2xs)]",
|
|
166
|
+
"shadow-sm"
|
|
167
|
+
].join(" "),
|
|
168
|
+
// Link - Text only
|
|
169
|
+
link: [
|
|
170
|
+
"text-[var(--j3m-primary-300)]",
|
|
171
|
+
"underline-offset-4",
|
|
172
|
+
"hover:underline",
|
|
173
|
+
"hover:text-[var(--j3m-primary-400)]"
|
|
174
|
+
].join(" ")
|
|
124
175
|
},
|
|
125
176
|
size: {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
lg: "h-
|
|
129
|
-
icon: "
|
|
130
|
-
"icon-sm": "size-8",
|
|
131
|
-
"icon-lg": "size-10"
|
|
177
|
+
sm: "h-8 px-[var(--j3m-spacing-s)] text-xs",
|
|
178
|
+
default: "h-10 px-[var(--j3m-spacing-m)] py-[var(--j3m-spacing-xs)] text-sm",
|
|
179
|
+
lg: "h-12 px-[var(--j3m-spacing-xl)] text-base",
|
|
180
|
+
icon: "h-10 w-10"
|
|
132
181
|
}
|
|
133
182
|
},
|
|
134
183
|
defaultVariants: {
|
|
@@ -137,23 +186,20 @@ var buttonVariants = classVarianceAuthority.cva(
|
|
|
137
186
|
}
|
|
138
187
|
}
|
|
139
188
|
);
|
|
140
|
-
|
|
141
|
-
className,
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
})
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
);
|
|
156
|
-
}
|
|
189
|
+
var Button = React10__namespace.forwardRef(
|
|
190
|
+
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
191
|
+
const Comp = asChild ? reactSlot.Slot : "button";
|
|
192
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
193
|
+
Comp,
|
|
194
|
+
{
|
|
195
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
196
|
+
ref,
|
|
197
|
+
...props
|
|
198
|
+
}
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
);
|
|
202
|
+
Button.displayName = "Button";
|
|
157
203
|
function Separator({
|
|
158
204
|
className,
|
|
159
205
|
orientation = "horizontal",
|
|
@@ -239,22 +285,59 @@ function ButtonGroupSeparator({
|
|
|
239
285
|
}
|
|
240
286
|
);
|
|
241
287
|
}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
288
|
+
var Input = React10__namespace.forwardRef(
|
|
289
|
+
({ className, type, ...props }, ref) => {
|
|
290
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
291
|
+
"input",
|
|
292
|
+
{
|
|
293
|
+
type,
|
|
294
|
+
"data-slot": "input",
|
|
295
|
+
className: cn(
|
|
296
|
+
// Base
|
|
297
|
+
"flex h-10 w-full min-w-0 text-sm",
|
|
298
|
+
"px-[var(--j3m-spacing-s)] py-[var(--j3m-spacing-xs)]",
|
|
299
|
+
"rounded-[var(--j3m-radius-2xs)]",
|
|
300
|
+
// Colors
|
|
301
|
+
"bg-[var(--color-bg-surface)]",
|
|
302
|
+
"text-[var(--color-text-main)]",
|
|
303
|
+
"border border-[var(--color-border-subtle)]",
|
|
304
|
+
// Placeholder
|
|
305
|
+
"placeholder:text-[var(--color-text-soft)]",
|
|
306
|
+
// Focus state
|
|
307
|
+
"focus-visible:outline-none",
|
|
308
|
+
"focus-visible:ring-2",
|
|
309
|
+
"focus-visible:ring-[var(--j3m-primary-300)]",
|
|
310
|
+
"focus-visible:ring-offset-1",
|
|
311
|
+
"focus-visible:border-[var(--j3m-primary-300)]",
|
|
312
|
+
// Hover state
|
|
313
|
+
"hover:border-[var(--color-border-strong)]",
|
|
314
|
+
// Disabled state
|
|
315
|
+
"disabled:cursor-not-allowed",
|
|
316
|
+
"disabled:opacity-50",
|
|
317
|
+
"disabled:bg-[var(--color-bg-subtle)]",
|
|
318
|
+
// Error state (via aria-invalid)
|
|
319
|
+
"aria-invalid:border-[var(--j3m-red-100)]",
|
|
320
|
+
"aria-invalid:focus-visible:ring-[var(--j3m-red-100)]",
|
|
321
|
+
// File input
|
|
322
|
+
"file:border-0",
|
|
323
|
+
"file:bg-transparent",
|
|
324
|
+
"file:text-sm",
|
|
325
|
+
"file:font-medium",
|
|
326
|
+
"file:text-[var(--color-text-main)]",
|
|
327
|
+
// Selection
|
|
328
|
+
"selection:bg-[var(--j3m-primary-100)]",
|
|
329
|
+
"selection:text-[var(--color-text-main)]",
|
|
330
|
+
// Transition
|
|
331
|
+
"transition-colors duration-150",
|
|
332
|
+
className
|
|
333
|
+
),
|
|
334
|
+
ref,
|
|
335
|
+
...props
|
|
336
|
+
}
|
|
337
|
+
);
|
|
338
|
+
}
|
|
339
|
+
);
|
|
340
|
+
Input.displayName = "Input";
|
|
258
341
|
function Textarea({ className, ...props }) {
|
|
259
342
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
260
343
|
"textarea",
|
|
@@ -502,7 +585,7 @@ function Slider({
|
|
|
502
585
|
max = 100,
|
|
503
586
|
...props
|
|
504
587
|
}) {
|
|
505
|
-
const _values =
|
|
588
|
+
const _values = React10__namespace.useMemo(
|
|
506
589
|
() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
|
|
507
590
|
[value, defaultValue, min, max]
|
|
508
591
|
);
|
|
@@ -788,7 +871,7 @@ function Toggle({
|
|
|
788
871
|
}
|
|
789
872
|
);
|
|
790
873
|
}
|
|
791
|
-
var ToggleGroupContext =
|
|
874
|
+
var ToggleGroupContext = React10__namespace.createContext({
|
|
792
875
|
size: "default",
|
|
793
876
|
variant: "default",
|
|
794
877
|
spacing: 0
|
|
@@ -825,7 +908,7 @@ function ToggleGroupItem({
|
|
|
825
908
|
size,
|
|
826
909
|
...props
|
|
827
910
|
}) {
|
|
828
|
-
const context =
|
|
911
|
+
const context = React10__namespace.useContext(ToggleGroupContext);
|
|
829
912
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
830
913
|
ToggleGroupPrimitive__namespace.Item,
|
|
831
914
|
{
|
|
@@ -880,7 +963,7 @@ function InputOTPSlot({
|
|
|
880
963
|
className,
|
|
881
964
|
...props
|
|
882
965
|
}) {
|
|
883
|
-
const inputOTPContext =
|
|
966
|
+
const inputOTPContext = React10__namespace.useContext(inputOtp.OTPInputContext);
|
|
884
967
|
const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
|
|
885
968
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
886
969
|
"div",
|
|
@@ -919,7 +1002,7 @@ function Label2({
|
|
|
919
1002
|
);
|
|
920
1003
|
}
|
|
921
1004
|
var Form = reactHookForm.FormProvider;
|
|
922
|
-
var FormFieldContext =
|
|
1005
|
+
var FormFieldContext = React10__namespace.createContext(
|
|
923
1006
|
{}
|
|
924
1007
|
);
|
|
925
1008
|
var FormField = ({
|
|
@@ -928,8 +1011,8 @@ var FormField = ({
|
|
|
928
1011
|
return /* @__PURE__ */ jsxRuntime.jsx(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsxRuntime.jsx(reactHookForm.Controller, { ...props }) });
|
|
929
1012
|
};
|
|
930
1013
|
var useFormField = () => {
|
|
931
|
-
const fieldContext =
|
|
932
|
-
const itemContext =
|
|
1014
|
+
const fieldContext = React10__namespace.useContext(FormFieldContext);
|
|
1015
|
+
const itemContext = React10__namespace.useContext(FormItemContext);
|
|
933
1016
|
const { getFieldState } = reactHookForm.useFormContext();
|
|
934
1017
|
const formState = reactHookForm.useFormState({ name: fieldContext.name });
|
|
935
1018
|
const fieldState = getFieldState(fieldContext.name, formState);
|
|
@@ -946,11 +1029,11 @@ var useFormField = () => {
|
|
|
946
1029
|
...fieldState
|
|
947
1030
|
};
|
|
948
1031
|
};
|
|
949
|
-
var FormItemContext =
|
|
1032
|
+
var FormItemContext = React10__namespace.createContext(
|
|
950
1033
|
{}
|
|
951
1034
|
);
|
|
952
1035
|
function FormItem({ className, ...props }) {
|
|
953
|
-
const id =
|
|
1036
|
+
const id = React10__namespace.useId();
|
|
954
1037
|
return /* @__PURE__ */ jsxRuntime.jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
955
1038
|
"div",
|
|
956
1039
|
{
|
|
@@ -1198,7 +1281,7 @@ function FieldError({
|
|
|
1198
1281
|
errors,
|
|
1199
1282
|
...props
|
|
1200
1283
|
}) {
|
|
1201
|
-
const content =
|
|
1284
|
+
const content = React10.useMemo(() => {
|
|
1202
1285
|
if (children) {
|
|
1203
1286
|
return children;
|
|
1204
1287
|
}
|
|
@@ -1229,85 +1312,148 @@ function FieldError({
|
|
|
1229
1312
|
}
|
|
1230
1313
|
);
|
|
1231
1314
|
}
|
|
1232
|
-
|
|
1233
|
-
|
|
1315
|
+
var cardVariants = classVarianceAuthority.cva(
|
|
1316
|
+
// Base styles
|
|
1317
|
+
"flex flex-col rounded-[var(--j3m-radius-2xs)]",
|
|
1318
|
+
{
|
|
1319
|
+
variants: {
|
|
1320
|
+
variant: {
|
|
1321
|
+
// Default solid card
|
|
1322
|
+
default: [
|
|
1323
|
+
"bg-[var(--color-bg-surface)]",
|
|
1324
|
+
"border border-[var(--color-border-subtle)]",
|
|
1325
|
+
"text-[var(--color-text-main)]",
|
|
1326
|
+
"shadow-sm"
|
|
1327
|
+
].join(" "),
|
|
1328
|
+
// Glass Light - for light backgrounds or over images
|
|
1329
|
+
"glass-light": [
|
|
1330
|
+
"bg-[var(--j3m-glass-light)]",
|
|
1331
|
+
"backdrop-blur-[var(--j3m-blur-md)]",
|
|
1332
|
+
"border border-[var(--j3m-glass-border-light)]",
|
|
1333
|
+
"text-[var(--color-text-main)]",
|
|
1334
|
+
"shadow-[var(--j3m-glass-shadow-md)]"
|
|
1335
|
+
].join(" "),
|
|
1336
|
+
// Glass Dark - for light backgrounds, dark card
|
|
1337
|
+
"glass-dark": [
|
|
1338
|
+
"bg-[var(--j3m-glass-dark)]",
|
|
1339
|
+
"backdrop-blur-[var(--j3m-blur-md)]",
|
|
1340
|
+
"border border-[var(--j3m-glass-border-dark)]",
|
|
1341
|
+
"text-white",
|
|
1342
|
+
"shadow-[var(--j3m-glass-shadow-lg)]"
|
|
1343
|
+
].join(" "),
|
|
1344
|
+
// Glass Neutral - subtle frosted effect
|
|
1345
|
+
"glass-neutral": [
|
|
1346
|
+
"bg-[var(--j3m-glass-neutral)]",
|
|
1347
|
+
"backdrop-blur-[var(--j3m-blur-lg)]",
|
|
1348
|
+
"border border-[var(--j3m-glass-border-subtle)]",
|
|
1349
|
+
"text-[var(--color-text-main)]",
|
|
1350
|
+
"shadow-[var(--j3m-glass-shadow-sm)]"
|
|
1351
|
+
].join(" "),
|
|
1352
|
+
// Glass Primary - with orange tint
|
|
1353
|
+
"glass-primary": [
|
|
1354
|
+
"bg-[var(--j3m-glass-primary)]",
|
|
1355
|
+
"backdrop-blur-[var(--j3m-blur-lg)]",
|
|
1356
|
+
"border border-[var(--j3m-glass-border-light)]",
|
|
1357
|
+
"text-[var(--color-text-main)]",
|
|
1358
|
+
"shadow-[var(--j3m-glass-shadow-glow)]"
|
|
1359
|
+
].join(" ")
|
|
1360
|
+
}
|
|
1361
|
+
},
|
|
1362
|
+
defaultVariants: {
|
|
1363
|
+
variant: "default"
|
|
1364
|
+
}
|
|
1365
|
+
}
|
|
1366
|
+
);
|
|
1367
|
+
var Card = React10__namespace.forwardRef(
|
|
1368
|
+
({ className, variant, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1234
1369
|
"div",
|
|
1235
1370
|
{
|
|
1371
|
+
ref,
|
|
1236
1372
|
"data-slot": "card",
|
|
1237
|
-
className: cn(
|
|
1238
|
-
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
|
|
1239
|
-
className
|
|
1240
|
-
),
|
|
1373
|
+
className: cn(cardVariants({ variant, className })),
|
|
1241
1374
|
...props
|
|
1242
1375
|
}
|
|
1243
|
-
)
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1376
|
+
)
|
|
1377
|
+
);
|
|
1378
|
+
Card.displayName = "Card";
|
|
1379
|
+
var CardHeader = React10__namespace.forwardRef(
|
|
1380
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1247
1381
|
"div",
|
|
1248
1382
|
{
|
|
1383
|
+
ref,
|
|
1249
1384
|
"data-slot": "card-header",
|
|
1250
1385
|
className: cn(
|
|
1251
|
-
"
|
|
1386
|
+
"flex flex-col gap-[var(--j3m-spacing-2xs)]",
|
|
1387
|
+
"px-[var(--j3m-spacing-l)] py-[var(--j3m-spacing-m)]",
|
|
1252
1388
|
className
|
|
1253
1389
|
),
|
|
1254
1390
|
...props
|
|
1255
1391
|
}
|
|
1256
|
-
)
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1392
|
+
)
|
|
1393
|
+
);
|
|
1394
|
+
CardHeader.displayName = "CardHeader";
|
|
1395
|
+
var CardTitle = React10__namespace.forwardRef(
|
|
1396
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1397
|
+
"h3",
|
|
1261
1398
|
{
|
|
1399
|
+
ref,
|
|
1262
1400
|
"data-slot": "card-title",
|
|
1263
|
-
className: cn(
|
|
1401
|
+
className: cn(
|
|
1402
|
+
"text-lg font-semibold leading-none tracking-tight",
|
|
1403
|
+
className
|
|
1404
|
+
),
|
|
1264
1405
|
...props
|
|
1265
1406
|
}
|
|
1266
|
-
)
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1407
|
+
)
|
|
1408
|
+
);
|
|
1409
|
+
CardTitle.displayName = "CardTitle";
|
|
1410
|
+
var CardDescription = React10__namespace.forwardRef(
|
|
1411
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1412
|
+
"p",
|
|
1271
1413
|
{
|
|
1414
|
+
ref,
|
|
1272
1415
|
"data-slot": "card-description",
|
|
1273
|
-
className: cn("text-muted-foreground text-sm", className),
|
|
1274
|
-
...props
|
|
1275
|
-
}
|
|
1276
|
-
);
|
|
1277
|
-
}
|
|
1278
|
-
function CardAction({ className, ...props }) {
|
|
1279
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1280
|
-
"div",
|
|
1281
|
-
{
|
|
1282
|
-
"data-slot": "card-action",
|
|
1283
1416
|
className: cn(
|
|
1284
|
-
"
|
|
1417
|
+
"text-sm opacity-80",
|
|
1285
1418
|
className
|
|
1286
1419
|
),
|
|
1287
1420
|
...props
|
|
1288
1421
|
}
|
|
1289
|
-
)
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1422
|
+
)
|
|
1423
|
+
);
|
|
1424
|
+
CardDescription.displayName = "CardDescription";
|
|
1425
|
+
var CardContent = React10__namespace.forwardRef(
|
|
1426
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1293
1427
|
"div",
|
|
1294
1428
|
{
|
|
1429
|
+
ref,
|
|
1295
1430
|
"data-slot": "card-content",
|
|
1296
|
-
className: cn(
|
|
1431
|
+
className: cn(
|
|
1432
|
+
"px-[var(--j3m-spacing-l)] pb-[var(--j3m-spacing-m)]",
|
|
1433
|
+
className
|
|
1434
|
+
),
|
|
1297
1435
|
...props
|
|
1298
1436
|
}
|
|
1299
|
-
)
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1437
|
+
)
|
|
1438
|
+
);
|
|
1439
|
+
CardContent.displayName = "CardContent";
|
|
1440
|
+
var CardFooter = React10__namespace.forwardRef(
|
|
1441
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1303
1442
|
"div",
|
|
1304
1443
|
{
|
|
1444
|
+
ref,
|
|
1305
1445
|
"data-slot": "card-footer",
|
|
1306
|
-
className: cn(
|
|
1446
|
+
className: cn(
|
|
1447
|
+
"flex items-center",
|
|
1448
|
+
"px-[var(--j3m-spacing-l)] py-[var(--j3m-spacing-m)]",
|
|
1449
|
+
"border-t border-[inherit]",
|
|
1450
|
+
className
|
|
1451
|
+
),
|
|
1307
1452
|
...props
|
|
1308
1453
|
}
|
|
1309
|
-
)
|
|
1310
|
-
|
|
1454
|
+
)
|
|
1455
|
+
);
|
|
1456
|
+
CardFooter.displayName = "CardFooter";
|
|
1311
1457
|
function Table({ className, ...props }) {
|
|
1312
1458
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1313
1459
|
"div",
|
|
@@ -1762,8 +1908,8 @@ function CalendarDayButton({
|
|
|
1762
1908
|
...props
|
|
1763
1909
|
}) {
|
|
1764
1910
|
const defaultClassNames = reactDayPicker.getDefaultClassNames();
|
|
1765
|
-
const ref =
|
|
1766
|
-
|
|
1911
|
+
const ref = React10__namespace.useRef(null);
|
|
1912
|
+
React10__namespace.useEffect(() => {
|
|
1767
1913
|
if (modifiers.focused) ref.current?.focus();
|
|
1768
1914
|
}, [modifiers.focused]);
|
|
1769
1915
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1786,9 +1932,9 @@ function CalendarDayButton({
|
|
|
1786
1932
|
}
|
|
1787
1933
|
);
|
|
1788
1934
|
}
|
|
1789
|
-
var CarouselContext =
|
|
1935
|
+
var CarouselContext = React10__namespace.createContext(null);
|
|
1790
1936
|
function useCarousel() {
|
|
1791
|
-
const context =
|
|
1937
|
+
const context = React10__namespace.useContext(CarouselContext);
|
|
1792
1938
|
if (!context) {
|
|
1793
1939
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
1794
1940
|
}
|
|
@@ -1810,20 +1956,20 @@ function Carousel({
|
|
|
1810
1956
|
},
|
|
1811
1957
|
plugins
|
|
1812
1958
|
);
|
|
1813
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
1814
|
-
const [canScrollNext, setCanScrollNext] =
|
|
1815
|
-
const onSelect =
|
|
1959
|
+
const [canScrollPrev, setCanScrollPrev] = React10__namespace.useState(false);
|
|
1960
|
+
const [canScrollNext, setCanScrollNext] = React10__namespace.useState(false);
|
|
1961
|
+
const onSelect = React10__namespace.useCallback((api2) => {
|
|
1816
1962
|
if (!api2) return;
|
|
1817
1963
|
setCanScrollPrev(api2.canScrollPrev());
|
|
1818
1964
|
setCanScrollNext(api2.canScrollNext());
|
|
1819
1965
|
}, []);
|
|
1820
|
-
const scrollPrev =
|
|
1966
|
+
const scrollPrev = React10__namespace.useCallback(() => {
|
|
1821
1967
|
api?.scrollPrev();
|
|
1822
1968
|
}, [api]);
|
|
1823
|
-
const scrollNext =
|
|
1969
|
+
const scrollNext = React10__namespace.useCallback(() => {
|
|
1824
1970
|
api?.scrollNext();
|
|
1825
1971
|
}, [api]);
|
|
1826
|
-
const handleKeyDown =
|
|
1972
|
+
const handleKeyDown = React10__namespace.useCallback(
|
|
1827
1973
|
(event) => {
|
|
1828
1974
|
if (event.key === "ArrowLeft") {
|
|
1829
1975
|
event.preventDefault();
|
|
@@ -1835,11 +1981,11 @@ function Carousel({
|
|
|
1835
1981
|
},
|
|
1836
1982
|
[scrollPrev, scrollNext]
|
|
1837
1983
|
);
|
|
1838
|
-
|
|
1984
|
+
React10__namespace.useEffect(() => {
|
|
1839
1985
|
if (!api || !setApi) return;
|
|
1840
1986
|
setApi(api);
|
|
1841
1987
|
}, [api, setApi]);
|
|
1842
|
-
|
|
1988
|
+
React10__namespace.useEffect(() => {
|
|
1843
1989
|
if (!api) return;
|
|
1844
1990
|
onSelect(api);
|
|
1845
1991
|
api.on("reInit", onSelect);
|
|
@@ -1972,9 +2118,9 @@ function CarouselNext({
|
|
|
1972
2118
|
);
|
|
1973
2119
|
}
|
|
1974
2120
|
var THEMES = { light: "", dark: ".dark" };
|
|
1975
|
-
var ChartContext =
|
|
2121
|
+
var ChartContext = React10__namespace.createContext(null);
|
|
1976
2122
|
function useChart() {
|
|
1977
|
-
const context =
|
|
2123
|
+
const context = React10__namespace.useContext(ChartContext);
|
|
1978
2124
|
if (!context) {
|
|
1979
2125
|
throw new Error("useChart must be used within a <ChartContainer />");
|
|
1980
2126
|
}
|
|
@@ -1987,7 +2133,7 @@ function ChartContainer({
|
|
|
1987
2133
|
config,
|
|
1988
2134
|
...props
|
|
1989
2135
|
}) {
|
|
1990
|
-
const uniqueId =
|
|
2136
|
+
const uniqueId = React10__namespace.useId();
|
|
1991
2137
|
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
1992
2138
|
return /* @__PURE__ */ jsxRuntime.jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1993
2139
|
"div",
|
|
@@ -2048,7 +2194,7 @@ function ChartTooltipContent({
|
|
|
2048
2194
|
labelKey
|
|
2049
2195
|
}) {
|
|
2050
2196
|
const { config } = useChart();
|
|
2051
|
-
const tooltipLabel =
|
|
2197
|
+
const tooltipLabel = React10__namespace.useMemo(() => {
|
|
2052
2198
|
if (hideLabel || !payload?.length) {
|
|
2053
2199
|
return null;
|
|
2054
2200
|
}
|
|
@@ -2771,16 +2917,16 @@ var M = (e, i, s, u, m, a, l, h) => {
|
|
|
2771
2917
|
} catch (n) {
|
|
2772
2918
|
}
|
|
2773
2919
|
};
|
|
2774
|
-
var x =
|
|
2920
|
+
var x = React10__namespace.createContext(void 0);
|
|
2775
2921
|
var U = { setTheme: (e) => {
|
|
2776
2922
|
}, themes: [] };
|
|
2777
2923
|
var z = () => {
|
|
2778
2924
|
var e;
|
|
2779
|
-
return (e =
|
|
2925
|
+
return (e = React10__namespace.useContext(x)) != null ? e : U;
|
|
2780
2926
|
};
|
|
2781
|
-
|
|
2927
|
+
React10__namespace.memo(({ forcedTheme: e, storageKey: i, attribute: s, enableSystem: u, enableColorScheme: m, defaultTheme: a, value: l, themes: h, nonce: d, scriptProps: w }) => {
|
|
2782
2928
|
let p = JSON.stringify([s, i, a, e, h, l, u, m]).slice(1, -1);
|
|
2783
|
-
return
|
|
2929
|
+
return React10__namespace.createElement("script", { ...w, suppressHydrationWarning: true, nonce: typeof window == "undefined" ? d : "", dangerouslySetInnerHTML: { __html: `(${M.toString()})(${p})` } });
|
|
2784
2930
|
});
|
|
2785
2931
|
var Toaster = ({ ...props }) => {
|
|
2786
2932
|
const { theme = "system" } = z();
|
|
@@ -3012,126 +3158,153 @@ function PaginationEllipsis({
|
|
|
3012
3158
|
}
|
|
3013
3159
|
);
|
|
3014
3160
|
}
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
}
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3028
|
-
|
|
3029
|
-
|
|
3030
|
-
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3036
|
-
|
|
3037
|
-
|
|
3038
|
-
}) {
|
|
3039
|
-
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
"data-slot": "dialog-overlay",
|
|
3043
|
-
className: cn(
|
|
3044
|
-
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
|
|
3045
|
-
className
|
|
3046
|
-
),
|
|
3047
|
-
...props
|
|
3048
|
-
}
|
|
3049
|
-
);
|
|
3050
|
-
}
|
|
3051
|
-
function DialogContent({
|
|
3052
|
-
className,
|
|
3053
|
-
children,
|
|
3054
|
-
showCloseButton = true,
|
|
3055
|
-
...props
|
|
3056
|
-
}) {
|
|
3057
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
|
|
3058
|
-
/* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, {}),
|
|
3059
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3060
|
-
DialogPrimitive__namespace.Content,
|
|
3061
|
-
{
|
|
3062
|
-
"data-slot": "dialog-content",
|
|
3063
|
-
className: cn(
|
|
3064
|
-
"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",
|
|
3065
|
-
className
|
|
3066
|
-
),
|
|
3067
|
-
...props,
|
|
3068
|
-
children: [
|
|
3069
|
-
children,
|
|
3070
|
-
showCloseButton && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3071
|
-
DialogPrimitive__namespace.Close,
|
|
3072
|
-
{
|
|
3073
|
-
"data-slot": "dialog-close",
|
|
3074
|
-
className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
3075
|
-
children: [
|
|
3076
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.XIcon, {}),
|
|
3077
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
|
|
3078
|
-
]
|
|
3079
|
-
}
|
|
3080
|
-
)
|
|
3081
|
-
]
|
|
3082
|
-
}
|
|
3083
|
-
)
|
|
3084
|
-
] });
|
|
3085
|
-
}
|
|
3086
|
-
function DialogHeader({ className, ...props }) {
|
|
3087
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3088
|
-
"div",
|
|
3089
|
-
{
|
|
3090
|
-
"data-slot": "dialog-header",
|
|
3091
|
-
className: cn("flex flex-col gap-2 text-center sm:text-left", className),
|
|
3092
|
-
...props
|
|
3093
|
-
}
|
|
3094
|
-
);
|
|
3095
|
-
}
|
|
3096
|
-
function DialogFooter({ className, ...props }) {
|
|
3097
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3098
|
-
"div",
|
|
3161
|
+
var Dialog = DialogPrimitive__namespace.Root;
|
|
3162
|
+
var DialogTrigger = DialogPrimitive__namespace.Trigger;
|
|
3163
|
+
var DialogPortal = DialogPrimitive__namespace.Portal;
|
|
3164
|
+
var DialogClose = DialogPrimitive__namespace.Close;
|
|
3165
|
+
var DialogOverlay = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3166
|
+
DialogPrimitive__namespace.Overlay,
|
|
3167
|
+
{
|
|
3168
|
+
ref,
|
|
3169
|
+
className: cn(
|
|
3170
|
+
"fixed inset-0 z-50",
|
|
3171
|
+
"bg-[var(--j3m-neutral-1000)]/50",
|
|
3172
|
+
"backdrop-blur-sm",
|
|
3173
|
+
// Animations
|
|
3174
|
+
"data-[state=open]:animate-in",
|
|
3175
|
+
"data-[state=closed]:animate-out",
|
|
3176
|
+
"data-[state=closed]:fade-out-0",
|
|
3177
|
+
"data-[state=open]:fade-in-0",
|
|
3178
|
+
className
|
|
3179
|
+
),
|
|
3180
|
+
...props
|
|
3181
|
+
}
|
|
3182
|
+
));
|
|
3183
|
+
DialogOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
|
|
3184
|
+
var DialogContent = React10__namespace.forwardRef(({ className, children, showCloseButton = true, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(DialogPortal, { children: [
|
|
3185
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogOverlay, {}),
|
|
3186
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3187
|
+
DialogPrimitive__namespace.Content,
|
|
3099
3188
|
{
|
|
3100
|
-
|
|
3189
|
+
ref,
|
|
3101
3190
|
className: cn(
|
|
3102
|
-
|
|
3191
|
+
// Positioning
|
|
3192
|
+
"fixed left-[50%] top-[50%] z-50",
|
|
3193
|
+
"translate-x-[-50%] translate-y-[-50%]",
|
|
3194
|
+
"w-full max-w-lg",
|
|
3195
|
+
"max-h-[90vh] overflow-y-auto",
|
|
3196
|
+
// Card-like styling
|
|
3197
|
+
"rounded-[var(--j3m-radius-2xs)]",
|
|
3198
|
+
"border border-[var(--color-border-subtle)]",
|
|
3199
|
+
"bg-[var(--color-bg-surface)]",
|
|
3200
|
+
"shadow-lg",
|
|
3201
|
+
// Padding
|
|
3202
|
+
"p-[var(--j3m-spacing-l)]",
|
|
3203
|
+
// Animations
|
|
3204
|
+
"duration-200",
|
|
3205
|
+
"data-[state=open]:animate-in",
|
|
3206
|
+
"data-[state=closed]:animate-out",
|
|
3207
|
+
"data-[state=closed]:fade-out-0",
|
|
3208
|
+
"data-[state=open]:fade-in-0",
|
|
3209
|
+
"data-[state=closed]:zoom-out-95",
|
|
3210
|
+
"data-[state=open]:zoom-in-95",
|
|
3211
|
+
"data-[state=closed]:slide-out-to-left-1/2",
|
|
3212
|
+
"data-[state=closed]:slide-out-to-top-[48%]",
|
|
3213
|
+
"data-[state=open]:slide-in-from-left-1/2",
|
|
3214
|
+
"data-[state=open]:slide-in-from-top-[48%]",
|
|
3103
3215
|
className
|
|
3104
3216
|
),
|
|
3105
|
-
...props
|
|
3217
|
+
...props,
|
|
3218
|
+
children: [
|
|
3219
|
+
children,
|
|
3220
|
+
showCloseButton && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3221
|
+
DialogPrimitive__namespace.Close,
|
|
3222
|
+
{
|
|
3223
|
+
className: cn(
|
|
3224
|
+
"absolute right-[var(--j3m-spacing-m)] top-[var(--j3m-spacing-m)]",
|
|
3225
|
+
"rounded-[var(--j3m-radius-2xs)]",
|
|
3226
|
+
"p-1",
|
|
3227
|
+
"text-[var(--color-text-muted)]",
|
|
3228
|
+
"opacity-70",
|
|
3229
|
+
"ring-offset-background",
|
|
3230
|
+
"transition-opacity",
|
|
3231
|
+
"hover:opacity-100",
|
|
3232
|
+
"hover:bg-[var(--j3m-neutral-200)]",
|
|
3233
|
+
"focus:outline-none",
|
|
3234
|
+
"focus:ring-2",
|
|
3235
|
+
"focus:ring-[var(--j3m-primary-300)]",
|
|
3236
|
+
"focus:ring-offset-2",
|
|
3237
|
+
"disabled:pointer-events-none"
|
|
3238
|
+
),
|
|
3239
|
+
children: [
|
|
3240
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
|
|
3241
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
|
|
3242
|
+
]
|
|
3243
|
+
}
|
|
3244
|
+
)
|
|
3245
|
+
]
|
|
3106
3246
|
}
|
|
3107
|
-
)
|
|
3108
|
-
}
|
|
3109
|
-
|
|
3247
|
+
)
|
|
3248
|
+
] }));
|
|
3249
|
+
DialogContent.displayName = DialogPrimitive__namespace.Content.displayName;
|
|
3250
|
+
var DialogHeader = ({
|
|
3110
3251
|
className,
|
|
3111
3252
|
...props
|
|
3112
|
-
})
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
"
|
|
3117
|
-
|
|
3118
|
-
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3253
|
+
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3254
|
+
"div",
|
|
3255
|
+
{
|
|
3256
|
+
className: cn(
|
|
3257
|
+
"flex flex-col gap-[var(--j3m-spacing-2xs)]",
|
|
3258
|
+
"mb-[var(--j3m-spacing-m)]",
|
|
3259
|
+
"text-center sm:text-left",
|
|
3260
|
+
className
|
|
3261
|
+
),
|
|
3262
|
+
...props
|
|
3263
|
+
}
|
|
3264
|
+
);
|
|
3265
|
+
DialogHeader.displayName = "DialogHeader";
|
|
3266
|
+
var DialogFooter = ({
|
|
3123
3267
|
className,
|
|
3124
3268
|
...props
|
|
3125
|
-
})
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
"
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
|
|
3269
|
+
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3270
|
+
"div",
|
|
3271
|
+
{
|
|
3272
|
+
className: cn(
|
|
3273
|
+
"flex flex-col-reverse sm:flex-row sm:justify-end",
|
|
3274
|
+
"gap-[var(--j3m-spacing-s)]",
|
|
3275
|
+
"mt-[var(--j3m-spacing-l)]",
|
|
3276
|
+
className
|
|
3277
|
+
),
|
|
3278
|
+
...props
|
|
3279
|
+
}
|
|
3280
|
+
);
|
|
3281
|
+
DialogFooter.displayName = "DialogFooter";
|
|
3282
|
+
var DialogTitle = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3283
|
+
DialogPrimitive__namespace.Title,
|
|
3284
|
+
{
|
|
3285
|
+
ref,
|
|
3286
|
+
className: cn(
|
|
3287
|
+
"text-lg font-semibold leading-none tracking-tight",
|
|
3288
|
+
"text-[var(--color-text-main)]",
|
|
3289
|
+
className
|
|
3290
|
+
),
|
|
3291
|
+
...props
|
|
3292
|
+
}
|
|
3293
|
+
));
|
|
3294
|
+
DialogTitle.displayName = DialogPrimitive__namespace.Title.displayName;
|
|
3295
|
+
var DialogDescription = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3296
|
+
DialogPrimitive__namespace.Description,
|
|
3297
|
+
{
|
|
3298
|
+
ref,
|
|
3299
|
+
className: cn(
|
|
3300
|
+
"text-sm",
|
|
3301
|
+
"text-[var(--color-text-muted)]",
|
|
3302
|
+
className
|
|
3303
|
+
),
|
|
3304
|
+
...props
|
|
3305
|
+
}
|
|
3306
|
+
));
|
|
3307
|
+
DialogDescription.displayName = DialogPrimitive__namespace.Description.displayName;
|
|
3135
3308
|
function Command({
|
|
3136
3309
|
className,
|
|
3137
3310
|
...props
|
|
@@ -4496,9 +4669,9 @@ var SIDEBAR_WIDTH = "16rem";
|
|
|
4496
4669
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
4497
4670
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
4498
4671
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
4499
|
-
var SidebarContext =
|
|
4672
|
+
var SidebarContext = React10__namespace.createContext(null);
|
|
4500
4673
|
function useSidebar() {
|
|
4501
|
-
const context =
|
|
4674
|
+
const context = React10__namespace.useContext(SidebarContext);
|
|
4502
4675
|
if (!context) {
|
|
4503
4676
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
4504
4677
|
}
|
|
@@ -4514,10 +4687,10 @@ function SidebarProvider({
|
|
|
4514
4687
|
...props
|
|
4515
4688
|
}) {
|
|
4516
4689
|
const isMobile = useIsMobile();
|
|
4517
|
-
const [openMobile, setOpenMobile] =
|
|
4518
|
-
const [_open, _setOpen] =
|
|
4690
|
+
const [openMobile, setOpenMobile] = React10__namespace.useState(false);
|
|
4691
|
+
const [_open, _setOpen] = React10__namespace.useState(defaultOpen);
|
|
4519
4692
|
const open = openProp ?? _open;
|
|
4520
|
-
const setOpen =
|
|
4693
|
+
const setOpen = React10__namespace.useCallback(
|
|
4521
4694
|
(value) => {
|
|
4522
4695
|
const openState = typeof value === "function" ? value(open) : value;
|
|
4523
4696
|
if (setOpenProp) {
|
|
@@ -4529,10 +4702,10 @@ function SidebarProvider({
|
|
|
4529
4702
|
},
|
|
4530
4703
|
[setOpenProp, open]
|
|
4531
4704
|
);
|
|
4532
|
-
const toggleSidebar =
|
|
4705
|
+
const toggleSidebar = React10__namespace.useCallback(() => {
|
|
4533
4706
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
4534
4707
|
}, [isMobile, setOpen, setOpenMobile]);
|
|
4535
|
-
|
|
4708
|
+
React10__namespace.useEffect(() => {
|
|
4536
4709
|
const handleKeyDown = (event) => {
|
|
4537
4710
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
4538
4711
|
event.preventDefault();
|
|
@@ -4543,7 +4716,7 @@ function SidebarProvider({
|
|
|
4543
4716
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
4544
4717
|
}, [toggleSidebar]);
|
|
4545
4718
|
const state = open ? "expanded" : "collapsed";
|
|
4546
|
-
const contextValue =
|
|
4719
|
+
const contextValue = React10__namespace.useMemo(
|
|
4547
4720
|
() => ({
|
|
4548
4721
|
state,
|
|
4549
4722
|
open,
|
|
@@ -5001,7 +5174,7 @@ function SidebarMenuSkeleton({
|
|
|
5001
5174
|
showIcon = false,
|
|
5002
5175
|
...props
|
|
5003
5176
|
}) {
|
|
5004
|
-
const width =
|
|
5177
|
+
const width = React10__namespace.useMemo(() => {
|
|
5005
5178
|
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
5006
5179
|
}, []);
|
|
5007
5180
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -5089,6 +5262,146 @@ function SidebarMenuSubButton({
|
|
|
5089
5262
|
}
|
|
5090
5263
|
);
|
|
5091
5264
|
}
|
|
5265
|
+
var sectionVariants = classVarianceAuthority.cva(
|
|
5266
|
+
// Base styles - larger padding than Card for section grouping
|
|
5267
|
+
"flex flex-col rounded-[var(--j3m-radius-l)]",
|
|
5268
|
+
{
|
|
5269
|
+
variants: {
|
|
5270
|
+
variant: {
|
|
5271
|
+
// Default solid section
|
|
5272
|
+
default: [
|
|
5273
|
+
"bg-[var(--color-bg-surface)]",
|
|
5274
|
+
"border border-[var(--color-border-subtle)]",
|
|
5275
|
+
"text-[var(--color-text-main)]",
|
|
5276
|
+
"shadow-sm"
|
|
5277
|
+
].join(" "),
|
|
5278
|
+
// Glass Light - for dark or image backgrounds
|
|
5279
|
+
"glass-light": [
|
|
5280
|
+
"glass-context",
|
|
5281
|
+
// Enables glass semantic token overrides
|
|
5282
|
+
"bg-[var(--j3m-glass-light-20)]",
|
|
5283
|
+
"backdrop-blur-[var(--j3m-blur-2xl)]",
|
|
5284
|
+
"border border-[var(--j3m-glass-border-light)]",
|
|
5285
|
+
"text-[var(--color-text-main)]",
|
|
5286
|
+
"shadow-[var(--j3m-glass-shadow-md)]"
|
|
5287
|
+
].join(" "),
|
|
5288
|
+
// Glass Dark - dark frosted glass
|
|
5289
|
+
"glass-dark": [
|
|
5290
|
+
"bg-[var(--j3m-glass-dark)]",
|
|
5291
|
+
"backdrop-blur-[var(--j3m-blur-md)]",
|
|
5292
|
+
"border border-[var(--j3m-glass-border-dark)]",
|
|
5293
|
+
"text-white",
|
|
5294
|
+
"shadow-[var(--j3m-glass-shadow-lg)]"
|
|
5295
|
+
].join(" "),
|
|
5296
|
+
// Glass Neutral - subtle frosted effect (most common)
|
|
5297
|
+
"glass-neutral": [
|
|
5298
|
+
"bg-[var(--j3m-glass-neutral)]",
|
|
5299
|
+
"backdrop-blur-[var(--j3m-blur-lg)]",
|
|
5300
|
+
"border border-[var(--j3m-glass-border-subtle)]",
|
|
5301
|
+
"text-[var(--color-text-main)]",
|
|
5302
|
+
"shadow-[var(--j3m-glass-shadow-sm)]"
|
|
5303
|
+
].join(" "),
|
|
5304
|
+
// Glass Primary - with orange tint
|
|
5305
|
+
"glass-primary": [
|
|
5306
|
+
"bg-[var(--j3m-glass-primary)]",
|
|
5307
|
+
"backdrop-blur-[var(--j3m-blur-lg)]",
|
|
5308
|
+
"border border-[var(--j3m-glass-border-light)]",
|
|
5309
|
+
"text-[var(--color-text-main)]",
|
|
5310
|
+
"shadow-[var(--j3m-glass-shadow-glow)]"
|
|
5311
|
+
].join(" ")
|
|
5312
|
+
}
|
|
5313
|
+
},
|
|
5314
|
+
defaultVariants: {
|
|
5315
|
+
variant: "default"
|
|
5316
|
+
}
|
|
5317
|
+
}
|
|
5318
|
+
);
|
|
5319
|
+
var isGlassVariant = (variant) => variant?.startsWith("glass-") ?? false;
|
|
5320
|
+
var Section = React10__namespace.forwardRef(
|
|
5321
|
+
({ className, variant, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5322
|
+
"section",
|
|
5323
|
+
{
|
|
5324
|
+
ref,
|
|
5325
|
+
className: cn(sectionVariants({ variant, className })),
|
|
5326
|
+
"data-glass-context": isGlassVariant(variant) ? "true" : void 0,
|
|
5327
|
+
...props
|
|
5328
|
+
}
|
|
5329
|
+
)
|
|
5330
|
+
);
|
|
5331
|
+
Section.displayName = "Section";
|
|
5332
|
+
var SectionHeader = React10__namespace.forwardRef(
|
|
5333
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5334
|
+
"div",
|
|
5335
|
+
{
|
|
5336
|
+
ref,
|
|
5337
|
+
className: cn(
|
|
5338
|
+
"flex flex-col gap-[var(--j3m-spacing-xs)]",
|
|
5339
|
+
"px-[var(--j3m-spacing-xl)] pt-[var(--j3m-spacing-xl)] pb-[var(--j3m-spacing-m)]",
|
|
5340
|
+
className
|
|
5341
|
+
),
|
|
5342
|
+
...props
|
|
5343
|
+
}
|
|
5344
|
+
)
|
|
5345
|
+
);
|
|
5346
|
+
SectionHeader.displayName = "SectionHeader";
|
|
5347
|
+
var SectionTitle = React10__namespace.forwardRef(
|
|
5348
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5349
|
+
"h2",
|
|
5350
|
+
{
|
|
5351
|
+
ref,
|
|
5352
|
+
className: cn(
|
|
5353
|
+
"text-xl font-semibold leading-none tracking-tight",
|
|
5354
|
+
className
|
|
5355
|
+
),
|
|
5356
|
+
...props
|
|
5357
|
+
}
|
|
5358
|
+
)
|
|
5359
|
+
);
|
|
5360
|
+
SectionTitle.displayName = "SectionTitle";
|
|
5361
|
+
var SectionDescription = React10__namespace.forwardRef(
|
|
5362
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5363
|
+
"p",
|
|
5364
|
+
{
|
|
5365
|
+
ref,
|
|
5366
|
+
className: cn(
|
|
5367
|
+
"text-sm opacity-70",
|
|
5368
|
+
className
|
|
5369
|
+
),
|
|
5370
|
+
...props
|
|
5371
|
+
}
|
|
5372
|
+
)
|
|
5373
|
+
);
|
|
5374
|
+
SectionDescription.displayName = "SectionDescription";
|
|
5375
|
+
var SectionContent = React10__namespace.forwardRef(
|
|
5376
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5377
|
+
"div",
|
|
5378
|
+
{
|
|
5379
|
+
ref,
|
|
5380
|
+
className: cn(
|
|
5381
|
+
"px-[var(--j3m-spacing-xl)] py-[var(--j3m-spacing-l)]",
|
|
5382
|
+
className
|
|
5383
|
+
),
|
|
5384
|
+
...props
|
|
5385
|
+
}
|
|
5386
|
+
)
|
|
5387
|
+
);
|
|
5388
|
+
SectionContent.displayName = "SectionContent";
|
|
5389
|
+
var SectionFooter = React10__namespace.forwardRef(
|
|
5390
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5391
|
+
"div",
|
|
5392
|
+
{
|
|
5393
|
+
ref,
|
|
5394
|
+
className: cn(
|
|
5395
|
+
"flex items-center",
|
|
5396
|
+
"px-[var(--j3m-spacing-xl)] py-[var(--j3m-spacing-l)]",
|
|
5397
|
+
"border-t border-[inherit]",
|
|
5398
|
+
className
|
|
5399
|
+
),
|
|
5400
|
+
...props
|
|
5401
|
+
}
|
|
5402
|
+
)
|
|
5403
|
+
);
|
|
5404
|
+
SectionFooter.displayName = "SectionFooter";
|
|
5092
5405
|
|
|
5093
5406
|
exports.Accordion = Accordion;
|
|
5094
5407
|
exports.AccordionContent = AccordionContent;
|
|
@@ -5127,7 +5440,6 @@ exports.ButtonGroupText = ButtonGroupText;
|
|
|
5127
5440
|
exports.Calendar = Calendar;
|
|
5128
5441
|
exports.CalendarDayButton = CalendarDayButton;
|
|
5129
5442
|
exports.Card = Card;
|
|
5130
|
-
exports.CardAction = CardAction;
|
|
5131
5443
|
exports.CardContent = CardContent;
|
|
5132
5444
|
exports.CardDescription = CardDescription;
|
|
5133
5445
|
exports.CardFooter = CardFooter;
|
|
@@ -5303,6 +5615,12 @@ exports.ResizablePanel = ResizablePanel;
|
|
|
5303
5615
|
exports.ResizablePanelGroup = ResizablePanelGroup;
|
|
5304
5616
|
exports.ScrollArea = ScrollArea;
|
|
5305
5617
|
exports.ScrollBar = ScrollBar;
|
|
5618
|
+
exports.Section = Section;
|
|
5619
|
+
exports.SectionContent = SectionContent;
|
|
5620
|
+
exports.SectionDescription = SectionDescription;
|
|
5621
|
+
exports.SectionFooter = SectionFooter;
|
|
5622
|
+
exports.SectionHeader = SectionHeader;
|
|
5623
|
+
exports.SectionTitle = SectionTitle;
|
|
5306
5624
|
exports.Select = Select;
|
|
5307
5625
|
exports.SelectContent = SelectContent;
|
|
5308
5626
|
exports.SelectGroup = SelectGroup;
|
|
@@ -5373,7 +5691,9 @@ exports.TooltipTrigger = TooltipTrigger;
|
|
|
5373
5691
|
exports.badgeVariants = badgeVariants;
|
|
5374
5692
|
exports.buttonGroupVariants = buttonGroupVariants;
|
|
5375
5693
|
exports.buttonVariants = buttonVariants;
|
|
5694
|
+
exports.cardVariants = cardVariants;
|
|
5376
5695
|
exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle;
|
|
5696
|
+
exports.sectionVariants = sectionVariants;
|
|
5377
5697
|
exports.toggleVariants = toggleVariants;
|
|
5378
5698
|
exports.useFormField = useFormField;
|
|
5379
5699
|
exports.useIsMobile = useIsMobile;
|