@mlw-packages/react-components 1.5.8 → 1.5.9
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.css +88 -38
- package/dist/index.d.mts +18 -2
- package/dist/index.d.ts +18 -2
- package/dist/index.js +433 -230
- package/dist/index.mjs +444 -241
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -493,19 +493,19 @@ import { Slot } from "@radix-ui/react-slot";
|
|
|
493
493
|
import { cva } from "class-variance-authority";
|
|
494
494
|
import { jsx } from "react/jsx-runtime";
|
|
495
495
|
var buttonVariantsBase = cva(
|
|
496
|
-
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
496
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive active:scale-95",
|
|
497
497
|
{
|
|
498
498
|
variants: {
|
|
499
499
|
variant: {
|
|
500
500
|
default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
|
|
501
501
|
destructive: "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
|
|
502
|
-
outline: "bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-
|
|
502
|
+
outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-background dark:border-input dark:hover:bg-background/95",
|
|
503
503
|
secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
|
|
504
504
|
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
505
505
|
link: "text-primary underline-offset-4 hover:underline"
|
|
506
506
|
},
|
|
507
507
|
size: {
|
|
508
|
-
default: "
|
|
508
|
+
default: "h-9 py-2 px-4 has-[>svg]:px-3",
|
|
509
509
|
sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
|
|
510
510
|
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
511
511
|
icon: "size-9"
|
|
@@ -2131,7 +2131,7 @@ var InputBase = React12.forwardRef(
|
|
|
2131
2131
|
"div",
|
|
2132
2132
|
{
|
|
2133
2133
|
className: cn(
|
|
2134
|
-
"flex items-center rounded-md transition focus-within:ring-1 focus-within:ring-ring focus-within:border-ring bg-background overflow-hidden",
|
|
2134
|
+
"flex items-center rounded-md transition h-9 focus-within:ring-1 focus-within:ring-ring focus-within:border-ring bg-background overflow-hidden",
|
|
2135
2135
|
type !== "file" && "border border-input"
|
|
2136
2136
|
),
|
|
2137
2137
|
children: [
|
|
@@ -2141,7 +2141,7 @@ var InputBase = React12.forwardRef(
|
|
|
2141
2141
|
{
|
|
2142
2142
|
type,
|
|
2143
2143
|
className: cn(
|
|
2144
|
-
"w-full flex-1 text-sm
|
|
2144
|
+
"w-full flex-1 text-sm p-1.5 px-3 focus:outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 bg-background text-foreground",
|
|
2145
2145
|
className
|
|
2146
2146
|
),
|
|
2147
2147
|
ref,
|
|
@@ -2216,7 +2216,7 @@ function ComboboxBase({
|
|
|
2216
2216
|
role: "combobox",
|
|
2217
2217
|
"aria-expanded": open,
|
|
2218
2218
|
className: cn(
|
|
2219
|
-
"flex items-start gap-2 justify-between
|
|
2219
|
+
"flex items-start gap-2 justify-between",
|
|
2220
2220
|
errorMessage && "border-red-500"
|
|
2221
2221
|
),
|
|
2222
2222
|
"data-testid": testIds.trigger ?? "combobox-trigger",
|
|
@@ -2887,34 +2887,78 @@ function NavigationMenuIndicatorBase({
|
|
|
2887
2887
|
import * as React17 from "react";
|
|
2888
2888
|
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
2889
2889
|
import { jsx as jsx28, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2890
|
-
var ProgressBase = React17.forwardRef(
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2890
|
+
var ProgressBase = React17.forwardRef(
|
|
2891
|
+
({
|
|
2892
|
+
className,
|
|
2893
|
+
value,
|
|
2894
|
+
label,
|
|
2895
|
+
leftIcon,
|
|
2896
|
+
rightIcon,
|
|
2897
|
+
variant = "bar",
|
|
2898
|
+
segments = 5,
|
|
2899
|
+
steps = [],
|
|
2900
|
+
currentStep = 0,
|
|
2901
|
+
...props
|
|
2902
|
+
}, ref) => {
|
|
2903
|
+
switch (variant) {
|
|
2904
|
+
case "segments":
|
|
2905
|
+
return /* @__PURE__ */ jsx28(
|
|
2906
|
+
ProgressSegmentsBase,
|
|
2907
|
+
{
|
|
2908
|
+
label,
|
|
2909
|
+
segments,
|
|
2910
|
+
value: value || 0
|
|
2911
|
+
}
|
|
2912
|
+
);
|
|
2913
|
+
case "panels":
|
|
2914
|
+
return /* @__PURE__ */ jsx28(
|
|
2915
|
+
ProgressPanelsBase,
|
|
2916
|
+
{
|
|
2917
|
+
label,
|
|
2918
|
+
steps,
|
|
2919
|
+
currentStep
|
|
2920
|
+
}
|
|
2921
|
+
);
|
|
2922
|
+
case "circles":
|
|
2923
|
+
return /* @__PURE__ */ jsx28(
|
|
2924
|
+
ProgressCirclesBase,
|
|
2925
|
+
{
|
|
2926
|
+
label,
|
|
2927
|
+
steps,
|
|
2928
|
+
currentStep
|
|
2929
|
+
}
|
|
2930
|
+
);
|
|
2931
|
+
case "bar":
|
|
2932
|
+
default:
|
|
2933
|
+
return /* @__PURE__ */ jsxs18("div", { className: "flex flex-col gap-1 w-full min-w-[150px]", children: [
|
|
2934
|
+
label && /* @__PURE__ */ jsx28(LabelBase_default, { className: "py-2", children: label }),
|
|
2935
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2", children: [
|
|
2936
|
+
leftIcon && /* @__PURE__ */ jsx28("div", { className: "flex items-center justify-center", children: leftIcon }),
|
|
2937
|
+
/* @__PURE__ */ jsx28(
|
|
2938
|
+
ProgressPrimitive.Root,
|
|
2939
|
+
{
|
|
2940
|
+
ref,
|
|
2941
|
+
className: cn(
|
|
2942
|
+
"relative h-3 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800 shadow-inner transition-all",
|
|
2943
|
+
className
|
|
2944
|
+
),
|
|
2945
|
+
value,
|
|
2946
|
+
...props,
|
|
2947
|
+
children: /* @__PURE__ */ jsx28(
|
|
2948
|
+
ProgressPrimitive.Indicator,
|
|
2949
|
+
{
|
|
2950
|
+
className: "h-full w-full flex-1 bg-primary transition-all duration-500 ease-in-out",
|
|
2951
|
+
style: { transform: `translateX(-${100 - (value || 0)}%)` }
|
|
2952
|
+
}
|
|
2953
|
+
)
|
|
2954
|
+
}
|
|
2955
|
+
),
|
|
2956
|
+
rightIcon && /* @__PURE__ */ jsx28("div", { className: "flex items-center justify-center", children: rightIcon })
|
|
2957
|
+
] })
|
|
2958
|
+
] });
|
|
2959
|
+
}
|
|
2960
|
+
}
|
|
2961
|
+
);
|
|
2918
2962
|
ProgressBase.displayName = "ProgressBase";
|
|
2919
2963
|
var ProgressSegmentsBase = ({
|
|
2920
2964
|
label,
|
|
@@ -4223,7 +4267,8 @@ var TabsListBase = React27.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
4223
4267
|
{
|
|
4224
4268
|
ref,
|
|
4225
4269
|
className: cn(
|
|
4226
|
-
"relative flex w-full items-center justify-start gap-
|
|
4270
|
+
"relative flex w-full items-center justify-start gap-2 border-b border-border",
|
|
4271
|
+
"bg-transparent",
|
|
4227
4272
|
className
|
|
4228
4273
|
),
|
|
4229
4274
|
...props
|
|
@@ -4235,13 +4280,15 @@ var TabsTriggerBase = React27.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
4235
4280
|
{
|
|
4236
4281
|
ref,
|
|
4237
4282
|
className: cn(
|
|
4238
|
-
"relative inline-flex items-center justify-center whitespace-nowrap px-
|
|
4239
|
-
"
|
|
4283
|
+
"relative inline-flex items-center justify-center whitespace-nowrap px-4 py-2 text-sm font-medium",
|
|
4284
|
+
"text-muted-foreground hover:text-foreground",
|
|
4285
|
+
"transition-colors duration-300 ease-in-out",
|
|
4286
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
4240
4287
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
4241
4288
|
"data-[state=active]:text-primary",
|
|
4242
|
-
"after:absolute after:bottom-0 after:left-0 after:h-[
|
|
4289
|
+
"after:absolute after:bottom-0 after:left-0 after:h-[2px] after:w-full",
|
|
4243
4290
|
"after:scale-x-0 after:bg-primary after:origin-left",
|
|
4244
|
-
"after:transition-transform after:duration-
|
|
4291
|
+
"after:transition-transform after:duration-500 after:ease-[cubic-bezier(0.34,1.56,0.64,1)]",
|
|
4245
4292
|
"data-[state=active]:after:scale-x-100",
|
|
4246
4293
|
className
|
|
4247
4294
|
),
|
|
@@ -4253,8 +4300,8 @@ var TabsContentBase = React27.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
4253
4300
|
{
|
|
4254
4301
|
ref,
|
|
4255
4302
|
className: cn(
|
|
4256
|
-
"mt-
|
|
4257
|
-
"animate-fade-in",
|
|
4303
|
+
"mt-4 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
4304
|
+
"animate-in fade-in-0 duration-500 ease-in-out",
|
|
4258
4305
|
className
|
|
4259
4306
|
),
|
|
4260
4307
|
...props
|
|
@@ -4264,27 +4311,184 @@ TabsContentBase.displayName = TabsPrimitive.Content.displayName;
|
|
|
4264
4311
|
|
|
4265
4312
|
// src/components/ui/TextAreaBase.tsx
|
|
4266
4313
|
import * as React28 from "react";
|
|
4267
|
-
import {
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4314
|
+
import { motion as motion6 } from "framer-motion";
|
|
4315
|
+
import { TrashIcon as TrashIcon2 } from "@phosphor-icons/react";
|
|
4316
|
+
import { jsx as jsx40, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
4317
|
+
var TextAreaBase = React28.forwardRef(
|
|
4318
|
+
({ className, clearable = false, onClear, ...props }, ref) => {
|
|
4319
|
+
const [isFocused, setIsFocused] = React28.useState(false);
|
|
4320
|
+
const [hasContent, setHasContent] = React28.useState(
|
|
4321
|
+
!!props.value || !!props.defaultValue
|
|
4322
|
+
);
|
|
4323
|
+
const [showConfirmTooltip, setShowConfirmTooltip] = React28.useState(false);
|
|
4324
|
+
const textareaRef = React28.useRef(null);
|
|
4325
|
+
const handleFocus = (e) => {
|
|
4326
|
+
setIsFocused(true);
|
|
4327
|
+
props.onFocus?.(e);
|
|
4328
|
+
};
|
|
4329
|
+
const handleBlur = (e) => {
|
|
4330
|
+
setIsFocused(false);
|
|
4331
|
+
props.onBlur?.(e);
|
|
4332
|
+
};
|
|
4333
|
+
const handleChange = (e) => {
|
|
4334
|
+
setHasContent(e.target.value.length > 0);
|
|
4335
|
+
props.onChange?.(e);
|
|
4336
|
+
};
|
|
4337
|
+
const handleClearClick = () => {
|
|
4338
|
+
setShowConfirmTooltip(true);
|
|
4339
|
+
};
|
|
4340
|
+
const handleConfirmClear = () => {
|
|
4341
|
+
if (textareaRef.current) {
|
|
4342
|
+
const nativeInputValueSetter = Object.getOwnPropertyDescriptor(
|
|
4343
|
+
window.HTMLTextAreaElement.prototype,
|
|
4344
|
+
"value"
|
|
4345
|
+
)?.set;
|
|
4346
|
+
if (nativeInputValueSetter) {
|
|
4347
|
+
nativeInputValueSetter.call(textareaRef.current, "");
|
|
4348
|
+
const event = new Event("input", { bubbles: true });
|
|
4349
|
+
textareaRef.current.dispatchEvent(event);
|
|
4350
|
+
}
|
|
4351
|
+
setHasContent(false);
|
|
4352
|
+
setShowConfirmTooltip(false);
|
|
4353
|
+
textareaRef.current.focus();
|
|
4354
|
+
onClear?.();
|
|
4355
|
+
}
|
|
4356
|
+
};
|
|
4357
|
+
const handleCancelClear = () => {
|
|
4358
|
+
setShowConfirmTooltip(false);
|
|
4359
|
+
};
|
|
4360
|
+
React28.useImperativeHandle(ref, () => textareaRef.current);
|
|
4361
|
+
React28.useEffect(() => {
|
|
4362
|
+
setHasContent(!!props.value || !!props.defaultValue);
|
|
4363
|
+
}, [props.value, props.defaultValue]);
|
|
4364
|
+
return /* @__PURE__ */ jsxs24("div", { className: "relative", children: [
|
|
4365
|
+
/* @__PURE__ */ jsx40(
|
|
4366
|
+
"textarea",
|
|
4367
|
+
{
|
|
4368
|
+
className: cn(
|
|
4369
|
+
"peer flex min-h-[80px] min-w-[200px] w-full rounded-lg border border-input bg-background/50 backdrop-blur-sm",
|
|
4370
|
+
"px-4 py-3 text-base shadow-sm placeholder:text-muted-foreground/60",
|
|
4371
|
+
"transition-all duration-300 ease-out",
|
|
4372
|
+
"hover:border-input/80 hover:shadow-md",
|
|
4373
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30 focus-visible:border-ring",
|
|
4374
|
+
"focus-visible:shadow-lg focus-visible:bg-background",
|
|
4375
|
+
"disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted/30",
|
|
4376
|
+
"resize",
|
|
4377
|
+
"md:text-sm",
|
|
4378
|
+
clearable && hasContent && "pr-10",
|
|
4379
|
+
className
|
|
4380
|
+
),
|
|
4381
|
+
ref: textareaRef,
|
|
4382
|
+
onFocus: handleFocus,
|
|
4383
|
+
onBlur: handleBlur,
|
|
4384
|
+
onChange: handleChange,
|
|
4385
|
+
...props
|
|
4386
|
+
}
|
|
4275
4387
|
),
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4388
|
+
clearable && hasContent && /* @__PURE__ */ jsx40(TooltipProviderBase, { children: /* @__PURE__ */ jsxs24(
|
|
4389
|
+
TooltipBase,
|
|
4390
|
+
{
|
|
4391
|
+
open: showConfirmTooltip,
|
|
4392
|
+
onOpenChange: setShowConfirmTooltip,
|
|
4393
|
+
children: [
|
|
4394
|
+
/* @__PURE__ */ jsx40(TooltipTriggerBase, { asChild: true, children: /* @__PURE__ */ jsx40(
|
|
4395
|
+
motion6.button,
|
|
4396
|
+
{
|
|
4397
|
+
type: "button",
|
|
4398
|
+
initial: { opacity: 0, scale: 0.8 },
|
|
4399
|
+
animate: { opacity: 1, scale: 1 },
|
|
4400
|
+
exit: { opacity: 0, scale: 0.8 },
|
|
4401
|
+
transition: { duration: 0.2 },
|
|
4402
|
+
onClick: handleClearClick,
|
|
4403
|
+
className: cn(
|
|
4404
|
+
"absolute top-3 right-3 p-1.5 rounded-md",
|
|
4405
|
+
"text-muted-foreground/50 hover:text-destructive hover:bg-destructive/10",
|
|
4406
|
+
"transition-all duration-200",
|
|
4407
|
+
"focus:outline-none focus:ring-2 focus:ring-destructive/30",
|
|
4408
|
+
"disabled:opacity-50 disabled:cursor-not-allowed"
|
|
4409
|
+
),
|
|
4410
|
+
disabled: props.disabled,
|
|
4411
|
+
"aria-label": "Limpar texto",
|
|
4412
|
+
children: /* @__PURE__ */ jsx40(TrashIcon2, { size: 16, weight: "regular" })
|
|
4413
|
+
}
|
|
4414
|
+
) }),
|
|
4415
|
+
/* @__PURE__ */ jsxs24(
|
|
4416
|
+
TooltipContentBase,
|
|
4417
|
+
{
|
|
4418
|
+
side: "left",
|
|
4419
|
+
className: "bg-background border border-border shadow-lg p-3 flex flex-col gap-2",
|
|
4420
|
+
children: [
|
|
4421
|
+
/* @__PURE__ */ jsx40("p", { className: "text-sm text-foreground font-medium mb-1", children: "Limpar todo o texto?" }),
|
|
4422
|
+
/* @__PURE__ */ jsxs24("div", { className: "flex gap-2", children: [
|
|
4423
|
+
/* @__PURE__ */ jsx40(
|
|
4424
|
+
"button",
|
|
4425
|
+
{
|
|
4426
|
+
type: "button",
|
|
4427
|
+
onClick: handleConfirmClear,
|
|
4428
|
+
className: cn(
|
|
4429
|
+
"px-3 py-1.5 text-xs rounded-md font-medium",
|
|
4430
|
+
"bg-destructive text-destructive-foreground",
|
|
4431
|
+
"hover:bg-destructive/90",
|
|
4432
|
+
"transition-colors"
|
|
4433
|
+
),
|
|
4434
|
+
children: "Confirmar"
|
|
4435
|
+
}
|
|
4436
|
+
),
|
|
4437
|
+
/* @__PURE__ */ jsx40(
|
|
4438
|
+
"button",
|
|
4439
|
+
{
|
|
4440
|
+
type: "button",
|
|
4441
|
+
onClick: handleCancelClear,
|
|
4442
|
+
className: cn(
|
|
4443
|
+
"px-3 py-1.5 text-xs rounded-md font-medium",
|
|
4444
|
+
"bg-secondary text-secondary-foreground",
|
|
4445
|
+
"hover:bg-secondary/80",
|
|
4446
|
+
"transition-colors"
|
|
4447
|
+
),
|
|
4448
|
+
children: "Cancelar"
|
|
4449
|
+
}
|
|
4450
|
+
)
|
|
4451
|
+
] })
|
|
4452
|
+
]
|
|
4453
|
+
}
|
|
4454
|
+
)
|
|
4455
|
+
]
|
|
4456
|
+
}
|
|
4457
|
+
) }),
|
|
4458
|
+
/* @__PURE__ */ jsx40(
|
|
4459
|
+
motion6.div,
|
|
4460
|
+
{
|
|
4461
|
+
className: "pointer-events-none absolute inset-0 rounded-lg",
|
|
4462
|
+
initial: { opacity: 0 },
|
|
4463
|
+
animate: { opacity: isFocused ? 1 : 0 },
|
|
4464
|
+
transition: { duration: 0.3 },
|
|
4465
|
+
children: /* @__PURE__ */ jsx40("div", { className: "absolute inset-0 rounded-lg bg-gradient-to-r from-ring/20 via-ring/10 to-ring/20 blur-sm" })
|
|
4466
|
+
}
|
|
4467
|
+
),
|
|
4468
|
+
isFocused && hasContent && props.maxLength && /* @__PURE__ */ jsxs24(
|
|
4469
|
+
motion6.div,
|
|
4470
|
+
{
|
|
4471
|
+
initial: { opacity: 0, y: -10 },
|
|
4472
|
+
animate: { opacity: 1, y: 0 },
|
|
4473
|
+
exit: { opacity: 0, y: -10 },
|
|
4474
|
+
className: "absolute bottom-2 right-3 text-xs text-muted-foreground/70 font-medium",
|
|
4475
|
+
children: [
|
|
4476
|
+
props.value?.length || 0,
|
|
4477
|
+
" / ",
|
|
4478
|
+
props.maxLength
|
|
4479
|
+
]
|
|
4480
|
+
}
|
|
4481
|
+
)
|
|
4482
|
+
] });
|
|
4483
|
+
}
|
|
4484
|
+
);
|
|
4281
4485
|
TextAreaBase.displayName = "TextAreaBase";
|
|
4282
4486
|
|
|
4283
4487
|
// src/components/mode-toggle.tsx
|
|
4284
4488
|
import { CheckIcon as CheckIcon6, MoonIcon, SunIcon } from "@phosphor-icons/react";
|
|
4285
4489
|
|
|
4286
4490
|
// src/components/theme-provider.tsx
|
|
4287
|
-
import { createContext as createContext3, useContext as useContext4, useEffect as
|
|
4491
|
+
import { createContext as createContext3, useContext as useContext4, useEffect as useEffect7, useState as useState7 } from "react";
|
|
4288
4492
|
import { jsx as jsx41 } from "react/jsx-runtime";
|
|
4289
4493
|
var initialState = {
|
|
4290
4494
|
theme: "system",
|
|
@@ -4297,8 +4501,8 @@ function ThemeProviderBase({
|
|
|
4297
4501
|
storageKey = "app-ui-theme",
|
|
4298
4502
|
...props
|
|
4299
4503
|
}) {
|
|
4300
|
-
const [theme, setThemeState] =
|
|
4301
|
-
|
|
4504
|
+
const [theme, setThemeState] = useState7(defaultTheme);
|
|
4505
|
+
useEffect7(() => {
|
|
4302
4506
|
const root = window.document.documentElement;
|
|
4303
4507
|
root.classList.remove(
|
|
4304
4508
|
"light",
|
|
@@ -4324,7 +4528,7 @@ function ThemeProviderBase({
|
|
|
4324
4528
|
document.body.style.color = "";
|
|
4325
4529
|
}
|
|
4326
4530
|
}, [theme]);
|
|
4327
|
-
|
|
4531
|
+
useEffect7(() => {
|
|
4328
4532
|
const stored = localStorage.getItem(storageKey);
|
|
4329
4533
|
if (stored) setThemeState(stored);
|
|
4330
4534
|
}, [storageKey]);
|
|
@@ -4345,7 +4549,7 @@ var useTheme = () => {
|
|
|
4345
4549
|
};
|
|
4346
4550
|
|
|
4347
4551
|
// src/components/mode-toggle.tsx
|
|
4348
|
-
import { Fragment as Fragment3, jsx as jsx42, jsxs as
|
|
4552
|
+
import { Fragment as Fragment3, jsx as jsx42, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
4349
4553
|
var themeLabels = {
|
|
4350
4554
|
light: "Light",
|
|
4351
4555
|
dark: "Dark",
|
|
@@ -4362,15 +4566,15 @@ function ModeToggleBase({
|
|
|
4362
4566
|
}) {
|
|
4363
4567
|
const { setTheme, theme: currentTheme } = useTheme();
|
|
4364
4568
|
const isDark = currentTheme?.includes("dark") || currentTheme === "system" && typeof window !== "undefined" && window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
4365
|
-
return /* @__PURE__ */
|
|
4366
|
-
/* @__PURE__ */ jsx42(DropDownMenuTriggerBase, { asChild: true, children: /* @__PURE__ */
|
|
4569
|
+
return /* @__PURE__ */ jsxs25(DropDownMenuBase, { children: [
|
|
4570
|
+
/* @__PURE__ */ jsx42(DropDownMenuTriggerBase, { asChild: true, children: /* @__PURE__ */ jsxs25(
|
|
4367
4571
|
ButtonBase,
|
|
4368
4572
|
{
|
|
4369
4573
|
variant: "ghost",
|
|
4370
4574
|
size: "icon",
|
|
4371
4575
|
className: "relative overflow-hidden border-transparent",
|
|
4372
4576
|
children: [
|
|
4373
|
-
/* @__PURE__ */
|
|
4577
|
+
/* @__PURE__ */ jsxs25(Fragment3, { children: [
|
|
4374
4578
|
/* @__PURE__ */ jsx42(SunIcon, { className: `h-[1.2rem] w-[1.2rem] transition-transform duration-300 ${isDark ? "rotate-90 scale-0" : "rotate-0 scale-100"}` }),
|
|
4375
4579
|
/* @__PURE__ */ jsx42(MoonIcon, { className: `absolute h-[1.2rem] w-[1.2rem] transition-transform duration-300 ${isDark ? "rotate-0 scale-100" : "rotate-90 scale-0"}` })
|
|
4376
4580
|
] }),
|
|
@@ -4378,7 +4582,7 @@ function ModeToggleBase({
|
|
|
4378
4582
|
]
|
|
4379
4583
|
}
|
|
4380
4584
|
) }),
|
|
4381
|
-
/* @__PURE__ */ jsx42(DropDownMenuContentBase, { align: "end", className: "border-border bg-popover text-popover-foreground", children: themes.map((theme) => /* @__PURE__ */
|
|
4585
|
+
/* @__PURE__ */ jsx42(DropDownMenuContentBase, { align: "end", className: "border-border bg-popover text-popover-foreground", children: themes.map((theme) => /* @__PURE__ */ jsxs25(
|
|
4382
4586
|
DropDownMenuItemBase,
|
|
4383
4587
|
{
|
|
4384
4588
|
onClick: () => setTheme(theme),
|
|
@@ -4396,7 +4600,7 @@ function ModeToggleBase({
|
|
|
4396
4600
|
// src/components/ui/DestructiveDialog.tsx
|
|
4397
4601
|
import * as React29 from "react";
|
|
4398
4602
|
import { XCircleIcon as XCircleIcon2 } from "@phosphor-icons/react";
|
|
4399
|
-
import { jsx as jsx43, jsxs as
|
|
4603
|
+
import { jsx as jsx43, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
4400
4604
|
var DestructiveDialog = ({
|
|
4401
4605
|
title,
|
|
4402
4606
|
description,
|
|
@@ -4408,9 +4612,9 @@ var DestructiveDialog = ({
|
|
|
4408
4612
|
const titleId = "destructive-dialog-title";
|
|
4409
4613
|
const descriptionId = "destructive-dialog-description";
|
|
4410
4614
|
const triggerEl = React29.isValidElement(children) ? /* @__PURE__ */ jsx43(AlertDialogTriggerBase, { asChild: true, children }) : /* @__PURE__ */ jsx43(AlertDialogTriggerBase, { children: /* @__PURE__ */ jsx43(ButtonBase, { variant: "destructive", children: triggerContent ?? "Excluir" }) });
|
|
4411
|
-
return /* @__PURE__ */
|
|
4615
|
+
return /* @__PURE__ */ jsxs26(AlertDialogBase, { children: [
|
|
4412
4616
|
triggerEl,
|
|
4413
|
-
/* @__PURE__ */
|
|
4617
|
+
/* @__PURE__ */ jsxs26(
|
|
4414
4618
|
AlertDialogContentBase,
|
|
4415
4619
|
{
|
|
4416
4620
|
role: "alertdialog",
|
|
@@ -4419,9 +4623,9 @@ var DestructiveDialog = ({
|
|
|
4419
4623
|
"aria-describedby": descriptionId,
|
|
4420
4624
|
className: cn("border border-destructive bg-background"),
|
|
4421
4625
|
children: [
|
|
4422
|
-
/* @__PURE__ */
|
|
4626
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex items-start gap-4", children: [
|
|
4423
4627
|
/* @__PURE__ */ jsx43("div", { className: "flex items-center justify-center w-10 h-10 rounded-full ring-1 ring-destructive/30", children: /* @__PURE__ */ jsx43(XCircleIcon2, { className: "w-6 h-6 text-destructive" }) }),
|
|
4424
|
-
/* @__PURE__ */
|
|
4628
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex-1", children: [
|
|
4425
4629
|
/* @__PURE__ */ jsx43(
|
|
4426
4630
|
AlertDialogTitleBase,
|
|
4427
4631
|
{
|
|
@@ -4440,7 +4644,7 @@ var DestructiveDialog = ({
|
|
|
4440
4644
|
)
|
|
4441
4645
|
] })
|
|
4442
4646
|
] }),
|
|
4443
|
-
/* @__PURE__ */
|
|
4647
|
+
/* @__PURE__ */ jsxs26(AlertDialogFooterBase, { className: "mt-2 flex justify-end gap-3", children: [
|
|
4444
4648
|
/* @__PURE__ */ jsx43(
|
|
4445
4649
|
AlertDialogCancelBase,
|
|
4446
4650
|
{
|
|
@@ -4482,7 +4686,7 @@ import {
|
|
|
4482
4686
|
CalendarIcon
|
|
4483
4687
|
} from "@phosphor-icons/react";
|
|
4484
4688
|
import { AnimatePresence as AnimatePresence4 } from "framer-motion";
|
|
4485
|
-
import { jsx as jsx44, jsxs as
|
|
4689
|
+
import { jsx as jsx44, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
4486
4690
|
function CalendarBase2({
|
|
4487
4691
|
className,
|
|
4488
4692
|
classNames,
|
|
@@ -4503,7 +4707,7 @@ function CalendarBase2({
|
|
|
4503
4707
|
"div",
|
|
4504
4708
|
{
|
|
4505
4709
|
className: cn(
|
|
4506
|
-
"rounded-
|
|
4710
|
+
"rounded-md border bg-background p-4 shadow-lg overflow-hidden w-full h-full flex flex-col",
|
|
4507
4711
|
className
|
|
4508
4712
|
),
|
|
4509
4713
|
children: /* @__PURE__ */ jsx44("div", { className: "relative flex-1 flex flex-col min-h-0", children: /* @__PURE__ */ jsx44(AnimatePresence4, { initial: false, mode: "wait", custom: direction, children: /* @__PURE__ */ jsx44(
|
|
@@ -4575,10 +4779,10 @@ CalendarBase2.displayName = "CalendarBase";
|
|
|
4575
4779
|
|
|
4576
4780
|
// src/components/date-time-picker/DateTimePicker.tsx
|
|
4577
4781
|
import { ptBR } from "date-fns/locale";
|
|
4578
|
-
import { useEffect as
|
|
4782
|
+
import { useEffect as useEffect8, useState as useState9 } from "react";
|
|
4579
4783
|
|
|
4580
4784
|
// src/components/date-time-picker/TimePicker.tsx
|
|
4581
|
-
import { motion as
|
|
4785
|
+
import { motion as motion7, AnimatePresence as AnimatePresence5 } from "framer-motion";
|
|
4582
4786
|
import * as React32 from "react";
|
|
4583
4787
|
|
|
4584
4788
|
// src/components/date-time-picker/TimePickerInput.tsx
|
|
@@ -4725,7 +4929,7 @@ function display12HourValue(hours) {
|
|
|
4725
4929
|
}
|
|
4726
4930
|
|
|
4727
4931
|
// src/components/date-time-picker/TimePickerInput.tsx
|
|
4728
|
-
import { jsx as jsx45, jsxs as
|
|
4932
|
+
import { jsx as jsx45, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
4729
4933
|
var TimePickerInput = React31.forwardRef(
|
|
4730
4934
|
({
|
|
4731
4935
|
className,
|
|
@@ -4812,7 +5016,7 @@ var TimePickerInput = React31.forwardRef(
|
|
|
4812
5016
|
const baseLabel = getPickerLabel();
|
|
4813
5017
|
return `${baseLabel}, valor atual: ${calculatedValue}.`;
|
|
4814
5018
|
};
|
|
4815
|
-
return /* @__PURE__ */
|
|
5019
|
+
return /* @__PURE__ */ jsxs28("div", { className: "relative group flex flex-col items-center", children: [
|
|
4816
5020
|
getPickerLabel() && /* @__PURE__ */ jsx45(
|
|
4817
5021
|
"label",
|
|
4818
5022
|
{
|
|
@@ -4821,7 +5025,7 @@ var TimePickerInput = React31.forwardRef(
|
|
|
4821
5025
|
children: getPickerLabel()
|
|
4822
5026
|
}
|
|
4823
5027
|
),
|
|
4824
|
-
/* @__PURE__ */
|
|
5028
|
+
/* @__PURE__ */ jsxs28(
|
|
4825
5029
|
"div",
|
|
4826
5030
|
{
|
|
4827
5031
|
className: cn(
|
|
@@ -4848,7 +5052,7 @@ var TimePickerInput = React31.forwardRef(
|
|
|
4848
5052
|
children: /* @__PURE__ */ jsx45(CaretUpIcon2, { size: 14, className: "sm:w-4 sm:h-4" })
|
|
4849
5053
|
}
|
|
4850
5054
|
),
|
|
4851
|
-
/* @__PURE__ */
|
|
5055
|
+
/* @__PURE__ */ jsxs28("div", { className: "relative", children: [
|
|
4852
5056
|
/* @__PURE__ */ jsx45(
|
|
4853
5057
|
"input",
|
|
4854
5058
|
{
|
|
@@ -4924,7 +5128,7 @@ var TimePickerInput = React31.forwardRef(
|
|
|
4924
5128
|
TimePickerInput.displayName = "TimePickerInput";
|
|
4925
5129
|
|
|
4926
5130
|
// src/components/date-time-picker/TimePicker.tsx
|
|
4927
|
-
import { Fragment as Fragment4, jsx as jsx46, jsxs as
|
|
5131
|
+
import { Fragment as Fragment4, jsx as jsx46, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
4928
5132
|
function TimePicker({
|
|
4929
5133
|
date,
|
|
4930
5134
|
setDate,
|
|
@@ -4949,8 +5153,8 @@ function TimePicker({
|
|
|
4949
5153
|
hidden: { opacity: 0, y: 10 },
|
|
4950
5154
|
visible: { opacity: 1, y: 0 }
|
|
4951
5155
|
};
|
|
4952
|
-
return /* @__PURE__ */
|
|
4953
|
-
|
|
5156
|
+
return /* @__PURE__ */ jsxs29(
|
|
5157
|
+
motion7.div,
|
|
4954
5158
|
{
|
|
4955
5159
|
variants: containerVariants,
|
|
4956
5160
|
initial: "hidden",
|
|
@@ -4958,7 +5162,7 @@ function TimePicker({
|
|
|
4958
5162
|
className: "flex items-end justify-center gap-2 sm:gap-3 p-2 sm:p-3 md:p-4 rounded-lg bg-muted/20 border border-border/50 w-full max-w-full overflow-hidden",
|
|
4959
5163
|
children: [
|
|
4960
5164
|
/* @__PURE__ */ jsx46(
|
|
4961
|
-
|
|
5165
|
+
motion7.div,
|
|
4962
5166
|
{
|
|
4963
5167
|
variants: itemVariants2,
|
|
4964
5168
|
className: "grid gap-1 sm:gap-2 text-center flex-shrink-0 min-w-0",
|
|
@@ -4976,7 +5180,7 @@ function TimePicker({
|
|
|
4976
5180
|
}
|
|
4977
5181
|
),
|
|
4978
5182
|
/* @__PURE__ */ jsx46(
|
|
4979
|
-
|
|
5183
|
+
motion7.div,
|
|
4980
5184
|
{
|
|
4981
5185
|
variants: itemVariants2,
|
|
4982
5186
|
className: "grid gap-1 sm:gap-2 text-center flex-shrink-0 min-w-0",
|
|
@@ -4995,7 +5199,7 @@ function TimePicker({
|
|
|
4995
5199
|
}
|
|
4996
5200
|
),
|
|
4997
5201
|
/* @__PURE__ */ jsx46(AnimatePresence5, { children: !hideSeconds && /* @__PURE__ */ jsx46(Fragment4, { children: /* @__PURE__ */ jsx46(
|
|
4998
|
-
|
|
5202
|
+
motion7.div,
|
|
4999
5203
|
{
|
|
5000
5204
|
variants: itemVariants2,
|
|
5001
5205
|
initial: "hidden",
|
|
@@ -5022,7 +5226,7 @@ function TimePicker({
|
|
|
5022
5226
|
|
|
5023
5227
|
// src/components/date-time-picker/DateTimePicker.tsx
|
|
5024
5228
|
import { CalendarBlankIcon, ClockIcon } from "@phosphor-icons/react";
|
|
5025
|
-
import { jsx as jsx47, jsxs as
|
|
5229
|
+
import { jsx as jsx47, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
5026
5230
|
function DateTimePicker({
|
|
5027
5231
|
label,
|
|
5028
5232
|
date,
|
|
@@ -5035,9 +5239,9 @@ function DateTimePicker({
|
|
|
5035
5239
|
disabled,
|
|
5036
5240
|
className
|
|
5037
5241
|
}) {
|
|
5038
|
-
const [internalDate, setInternalDate] =
|
|
5039
|
-
const [open, setOpen] =
|
|
5040
|
-
const [timePickerOpen, setTimePickerOpen] =
|
|
5242
|
+
const [internalDate, setInternalDate] = useState9(date);
|
|
5243
|
+
const [open, setOpen] = useState9(false);
|
|
5244
|
+
const [timePickerOpen, setTimePickerOpen] = useState9(false);
|
|
5041
5245
|
const handleSelect = (newDay) => {
|
|
5042
5246
|
if (!newDay) return;
|
|
5043
5247
|
if (!internalDate) {
|
|
@@ -5066,22 +5270,21 @@ function DateTimePicker({
|
|
|
5066
5270
|
if (!timeFormat) return "PPP";
|
|
5067
5271
|
return `PPP - ${timeFormat}`;
|
|
5068
5272
|
};
|
|
5069
|
-
|
|
5273
|
+
useEffect8(() => {
|
|
5070
5274
|
if (date) {
|
|
5071
5275
|
setInternalDate(date);
|
|
5072
5276
|
}
|
|
5073
5277
|
}, [date, open]);
|
|
5074
|
-
return /* @__PURE__ */
|
|
5278
|
+
return /* @__PURE__ */ jsxs30("div", { className: cn("space-y-2 w-full sm:w-auto", className), children: [
|
|
5075
5279
|
label && /* @__PURE__ */ jsx47(LabelBase_default, { children: label }),
|
|
5076
|
-
/* @__PURE__ */
|
|
5077
|
-
/* @__PURE__ */ jsx47(PopoverTriggerBase, { disabled, asChild: true, children: /* @__PURE__ */
|
|
5280
|
+
/* @__PURE__ */ jsxs30(PopoverBase, { open, onOpenChange: setOpen, children: [
|
|
5281
|
+
/* @__PURE__ */ jsx47(PopoverTriggerBase, { disabled, asChild: true, children: /* @__PURE__ */ jsxs30(
|
|
5078
5282
|
ButtonBase,
|
|
5079
5283
|
{
|
|
5080
5284
|
variant: "outline",
|
|
5081
|
-
size: "lg",
|
|
5082
5285
|
className: cn(
|
|
5083
5286
|
"w-full justify-start text-left min-w-0 overflow-hidden",
|
|
5084
|
-
"
|
|
5287
|
+
"",
|
|
5085
5288
|
"text-sm sm:text-base",
|
|
5086
5289
|
!date && "text-muted-foreground"
|
|
5087
5290
|
),
|
|
@@ -5100,7 +5303,7 @@ function DateTimePicker({
|
|
|
5100
5303
|
side: "bottom",
|
|
5101
5304
|
avoidCollisions: true,
|
|
5102
5305
|
collisionPadding: 8,
|
|
5103
|
-
children: /* @__PURE__ */
|
|
5306
|
+
children: /* @__PURE__ */ jsxs30("div", { className: "flex flex-col space-y-2 sm:space-y-3 p-2 sm:p-3 md:p-4 max-h-[calc(100vh-4rem)] overflow-y-auto", children: [
|
|
5104
5307
|
/* @__PURE__ */ jsx47(
|
|
5105
5308
|
CalendarBase2,
|
|
5106
5309
|
{
|
|
@@ -5114,13 +5317,13 @@ function DateTimePicker({
|
|
|
5114
5317
|
className: "w-full"
|
|
5115
5318
|
}
|
|
5116
5319
|
),
|
|
5117
|
-
!(hideHour && hideMinute) && /* @__PURE__ */ jsx47("div", { className: "flex justify-center w-full px-2", children: /* @__PURE__ */
|
|
5320
|
+
!(hideHour && hideMinute) && /* @__PURE__ */ jsx47("div", { className: "flex justify-center w-full px-2", children: /* @__PURE__ */ jsxs30(
|
|
5118
5321
|
PopoverBase,
|
|
5119
5322
|
{
|
|
5120
5323
|
open: timePickerOpen,
|
|
5121
5324
|
onOpenChange: setTimePickerOpen,
|
|
5122
5325
|
children: [
|
|
5123
|
-
/* @__PURE__ */ jsx47(PopoverTriggerBase, { asChild: true, children: /* @__PURE__ */
|
|
5326
|
+
/* @__PURE__ */ jsx47(PopoverTriggerBase, { asChild: true, children: /* @__PURE__ */ jsxs30(
|
|
5124
5327
|
ButtonBase,
|
|
5125
5328
|
{
|
|
5126
5329
|
variant: "outline",
|
|
@@ -5130,13 +5333,13 @@ function DateTimePicker({
|
|
|
5130
5333
|
"px-2 sm:px-3 py-1.5 sm:py-2",
|
|
5131
5334
|
"text-sm sm:text-base font-semibold w-full max-w-xs",
|
|
5132
5335
|
"border-2 border-primary/20 rounded-lg",
|
|
5133
|
-
"bg-
|
|
5336
|
+
"bg-background hover:bg-primary/10 hover:border-primary/30",
|
|
5134
5337
|
"transition-all duration-200",
|
|
5135
5338
|
"shadow-sm hover:shadow-md active:scale-[0.98]",
|
|
5136
5339
|
"min-h-[36px] sm:min-h-[40px]"
|
|
5137
5340
|
),
|
|
5138
5341
|
children: [
|
|
5139
|
-
/* @__PURE__ */ jsx47(ClockIcon, { className: "text-primary
|
|
5342
|
+
/* @__PURE__ */ jsx47(ClockIcon, { className: "text-primary flex-shrink-0 w-4 h-4 sm:w-5 sm:h-5" }),
|
|
5140
5343
|
/* @__PURE__ */ jsx47("span", { className: "text-foreground truncate", children: internalDate ? format(internalDate, getTimeFormat() || "HH:mm", {
|
|
5141
5344
|
locale: ptBR
|
|
5142
5345
|
}) : "00:00" })
|
|
@@ -5152,7 +5355,7 @@ function DateTimePicker({
|
|
|
5152
5355
|
sideOffset: 8,
|
|
5153
5356
|
avoidCollisions: true,
|
|
5154
5357
|
collisionPadding: 8,
|
|
5155
|
-
children: /* @__PURE__ */
|
|
5358
|
+
children: /* @__PURE__ */ jsxs30("div", { className: "flex flex-col items-center space-y-2 sm:space-y-3", children: [
|
|
5156
5359
|
/* @__PURE__ */ jsx47("h4", { className: "text-sm sm:text-base font-medium text-center", children: "Alterar Hor\xE1rio" }),
|
|
5157
5360
|
/* @__PURE__ */ jsx47(
|
|
5158
5361
|
TimePicker,
|
|
@@ -5186,7 +5389,7 @@ function DateTimePicker({
|
|
|
5186
5389
|
}
|
|
5187
5390
|
|
|
5188
5391
|
// src/components/selects/Select.tsx
|
|
5189
|
-
import { Fragment as Fragment5, jsx as jsx48, jsxs as
|
|
5392
|
+
import { Fragment as Fragment5, jsx as jsx48, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
5190
5393
|
function Select({
|
|
5191
5394
|
items,
|
|
5192
5395
|
groupItems,
|
|
@@ -5195,8 +5398,8 @@ function Select({
|
|
|
5195
5398
|
errorMessage,
|
|
5196
5399
|
testIds = {}
|
|
5197
5400
|
}) {
|
|
5198
|
-
return /* @__PURE__ */
|
|
5199
|
-
/* @__PURE__ */
|
|
5401
|
+
return /* @__PURE__ */ jsxs31("div", { "data-testid": testIds.root ?? "select-root", children: [
|
|
5402
|
+
/* @__PURE__ */ jsxs31(SelectBase, { onValueChange: onChange, "data-testid": testIds.base ?? "select-base", children: [
|
|
5200
5403
|
/* @__PURE__ */ jsx48(
|
|
5201
5404
|
SelectTriggerBase,
|
|
5202
5405
|
{
|
|
@@ -5214,7 +5417,7 @@ function Select({
|
|
|
5214
5417
|
)
|
|
5215
5418
|
}
|
|
5216
5419
|
),
|
|
5217
|
-
/* @__PURE__ */ jsx48(ScrollAreaBase, { "data-testid": testIds.scrollarea ?? "select-scrollarea", children: /* @__PURE__ */ jsx48(SelectContentBase, { "data-testid": testIds.content ?? "select-content", children: groupItems ? /* @__PURE__ */ jsx48(Fragment5, { children: Object.keys(groupItems).map((key) => /* @__PURE__ */
|
|
5420
|
+
/* @__PURE__ */ jsx48(ScrollAreaBase, { "data-testid": testIds.scrollarea ?? "select-scrollarea", children: /* @__PURE__ */ jsx48(SelectContentBase, { "data-testid": testIds.content ?? "select-content", children: groupItems ? /* @__PURE__ */ jsx48(Fragment5, { children: Object.keys(groupItems).map((key) => /* @__PURE__ */ jsxs31(SelectGroupBase, { "data-testid": testIds.group ?? "select-group", children: [
|
|
5218
5421
|
/* @__PURE__ */ jsx48(SelectLabelBase, { "data-testid": testIds.label ?? "select-label", children: key }),
|
|
5219
5422
|
groupItems[key].map((item) => /* @__PURE__ */ jsx48(
|
|
5220
5423
|
SelectItemBase,
|
|
@@ -5248,11 +5451,11 @@ function Select({
|
|
|
5248
5451
|
|
|
5249
5452
|
// src/components/charts/Chart.tsx
|
|
5250
5453
|
import {
|
|
5251
|
-
useState as
|
|
5252
|
-
useEffect as
|
|
5454
|
+
useState as useState12,
|
|
5455
|
+
useEffect as useEffect11,
|
|
5253
5456
|
useCallback as useCallback7,
|
|
5254
5457
|
useMemo as useMemo6,
|
|
5255
|
-
useRef as
|
|
5458
|
+
useRef as useRef5,
|
|
5256
5459
|
useLayoutEffect
|
|
5257
5460
|
} from "react";
|
|
5258
5461
|
import {
|
|
@@ -5415,11 +5618,11 @@ var resolveChartMargins = (margins, chartMargins, showLabels) => {
|
|
|
5415
5618
|
import { toast as toast2 } from "sonner";
|
|
5416
5619
|
|
|
5417
5620
|
// src/components/charts/components/controls/PeriodsDropdown.tsx
|
|
5418
|
-
import { useState as
|
|
5419
|
-
import { motion as
|
|
5621
|
+
import { useState as useState10, useRef as useRef3, useEffect as useEffect9 } from "react";
|
|
5622
|
+
import { motion as motion8, AnimatePresence as AnimatePresence6 } from "framer-motion";
|
|
5420
5623
|
import { DotsThreeIcon as DotsThreeIcon2 } from "@phosphor-icons/react/dist/ssr";
|
|
5421
5624
|
import { Check } from "@phosphor-icons/react/dist/ssr";
|
|
5422
|
-
import { jsx as jsx49, jsxs as
|
|
5625
|
+
import { jsx as jsx49, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
5423
5626
|
var menuVariants = {
|
|
5424
5627
|
hidden: { opacity: 0, y: -6, scale: 0.98 },
|
|
5425
5628
|
visible: { opacity: 1, y: 0, scale: 1 },
|
|
@@ -5438,11 +5641,11 @@ function PeriodsDropdown({
|
|
|
5438
5641
|
activePeriods
|
|
5439
5642
|
}) {
|
|
5440
5643
|
const periods = processedData.map((d) => String(d.name));
|
|
5441
|
-
const [open, setOpen] =
|
|
5442
|
-
const wrapperRef =
|
|
5443
|
-
const firstItemRef =
|
|
5444
|
-
const listRef =
|
|
5445
|
-
|
|
5644
|
+
const [open, setOpen] = useState10(false);
|
|
5645
|
+
const wrapperRef = useRef3(null);
|
|
5646
|
+
const firstItemRef = useRef3(null);
|
|
5647
|
+
const listRef = useRef3(null);
|
|
5648
|
+
useEffect9(() => {
|
|
5446
5649
|
const handleClickOutside = (e) => {
|
|
5447
5650
|
if (!wrapperRef.current) return;
|
|
5448
5651
|
if (!wrapperRef.current.contains(e.target)) setOpen(false);
|
|
@@ -5457,7 +5660,7 @@ function PeriodsDropdown({
|
|
|
5457
5660
|
document.removeEventListener("keydown", handleEscape);
|
|
5458
5661
|
};
|
|
5459
5662
|
}, []);
|
|
5460
|
-
|
|
5663
|
+
useEffect9(() => {
|
|
5461
5664
|
if (open && firstItemRef.current) {
|
|
5462
5665
|
firstItemRef.current.focus();
|
|
5463
5666
|
}
|
|
@@ -5467,8 +5670,8 @@ function PeriodsDropdown({
|
|
|
5467
5670
|
setOpen(false);
|
|
5468
5671
|
}
|
|
5469
5672
|
const containerStyle = typeof rightOffset === "number" ? { position: "relative", zIndex: 30 } : { position: "relative", zIndex: 30 };
|
|
5470
|
-
return /* @__PURE__ */
|
|
5471
|
-
/* @__PURE__ */
|
|
5673
|
+
return /* @__PURE__ */ jsxs32("div", { ref: wrapperRef, style: containerStyle, className: "mr-4", children: [
|
|
5674
|
+
/* @__PURE__ */ jsxs32(
|
|
5472
5675
|
"button",
|
|
5473
5676
|
{
|
|
5474
5677
|
className: "relative p-2.5 rounded-md hover:bg-accent/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-accent/50 transition flex items-center justify-center",
|
|
@@ -5491,8 +5694,8 @@ function PeriodsDropdown({
|
|
|
5491
5694
|
]
|
|
5492
5695
|
}
|
|
5493
5696
|
),
|
|
5494
|
-
/* @__PURE__ */ jsx49(AnimatePresence6, { children: open && /* @__PURE__ */
|
|
5495
|
-
|
|
5697
|
+
/* @__PURE__ */ jsx49(AnimatePresence6, { children: open && /* @__PURE__ */ jsxs32(
|
|
5698
|
+
motion8.div,
|
|
5496
5699
|
{
|
|
5497
5700
|
initial: "hidden",
|
|
5498
5701
|
animate: "visible",
|
|
@@ -5520,8 +5723,8 @@ function PeriodsDropdown({
|
|
|
5520
5723
|
ref: listRef,
|
|
5521
5724
|
className: "flex flex-col p-2 gap-1",
|
|
5522
5725
|
style: { maxHeight: 200, overflowY: "auto" },
|
|
5523
|
-
children: periods.map((p, idx) => /* @__PURE__ */
|
|
5524
|
-
|
|
5726
|
+
children: periods.map((p, idx) => /* @__PURE__ */ jsxs32(
|
|
5727
|
+
motion8.button,
|
|
5525
5728
|
{
|
|
5526
5729
|
className: "flex items-center justify-between w-full text-left px-3 py-2.5 rounded focus:outline-none transition-colors " + (activePeriods && activePeriods.includes(p) || p === activePeriod ? "bg-accent/10 font-medium" : "hover:bg-accent/15 focus-visible:ring-2 focus-visible:ring-accent/30"),
|
|
5527
5730
|
variants: itemVariants,
|
|
@@ -5549,9 +5752,9 @@ function PeriodsDropdown({
|
|
|
5549
5752
|
var PeriodsDropdown_default = PeriodsDropdown;
|
|
5550
5753
|
|
|
5551
5754
|
// src/components/charts/components/controls/ShowOnly.tsx
|
|
5552
|
-
import { motion as
|
|
5755
|
+
import { motion as motion9 } from "framer-motion";
|
|
5553
5756
|
import { Eye, EyeSlash } from "@phosphor-icons/react";
|
|
5554
|
-
import { Fragment as Fragment6, jsx as jsx50, jsxs as
|
|
5757
|
+
import { Fragment as Fragment6, jsx as jsx50, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
5555
5758
|
var ShowOnly = ({
|
|
5556
5759
|
showOnlyHighlighted,
|
|
5557
5760
|
setShowOnlyHighlighted,
|
|
@@ -5560,7 +5763,7 @@ var ShowOnly = ({
|
|
|
5560
5763
|
const hasHighlights = highlightedSeriesSize > 0;
|
|
5561
5764
|
if (!hasHighlights) return null;
|
|
5562
5765
|
return /* @__PURE__ */ jsx50("div", { className: "ml-auto flex items-center gap-2", children: /* @__PURE__ */ jsx50(
|
|
5563
|
-
|
|
5766
|
+
motion9.div,
|
|
5564
5767
|
{
|
|
5565
5768
|
whileTap: { scale: hasHighlights ? 0.985 : 1 },
|
|
5566
5769
|
whileHover: { y: hasHighlights ? -2 : 0 },
|
|
@@ -5578,10 +5781,10 @@ var ShowOnly = ({
|
|
|
5578
5781
|
"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-primary/60",
|
|
5579
5782
|
!hasHighlights ? "opacity-60 cursor-not-allowed pointer-events-none" : showOnlyHighlighted ? "bg-primary/10 text-primary shadow-sm border border-primary/20" : "bg-transparent text-muted-foreground border border-transparent hover:bg-muted/10 hover:text-foreground"
|
|
5580
5783
|
),
|
|
5581
|
-
children: showOnlyHighlighted ? /* @__PURE__ */
|
|
5784
|
+
children: showOnlyHighlighted ? /* @__PURE__ */ jsxs33(Fragment6, { children: [
|
|
5582
5785
|
/* @__PURE__ */ jsx50(EyeSlash, { size: 16, weight: "regular" }),
|
|
5583
5786
|
/* @__PURE__ */ jsx50("span", { className: "sr-only", children: "Exibir todos" })
|
|
5584
|
-
] }) : /* @__PURE__ */
|
|
5787
|
+
] }) : /* @__PURE__ */ jsxs33(Fragment6, { children: [
|
|
5585
5788
|
/* @__PURE__ */ jsx50(Eye, { size: 16, weight: "bold" }),
|
|
5586
5789
|
/* @__PURE__ */ jsx50("span", { className: "sr-only", children: "Mostrar somente destacados" })
|
|
5587
5790
|
] })
|
|
@@ -5593,9 +5796,9 @@ var ShowOnly = ({
|
|
|
5593
5796
|
var ShowOnly_default = ShowOnly;
|
|
5594
5797
|
|
|
5595
5798
|
// src/components/charts/components/controls/Highlights.tsx
|
|
5596
|
-
import { motion as
|
|
5799
|
+
import { motion as motion10, AnimatePresence as AnimatePresence7 } from "framer-motion";
|
|
5597
5800
|
import { CheckIcon as CheckIcon7 } from "@phosphor-icons/react/dist/ssr";
|
|
5598
|
-
import { jsx as jsx51, jsxs as
|
|
5801
|
+
import { jsx as jsx51, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
5599
5802
|
var Highlights = ({
|
|
5600
5803
|
allKeys,
|
|
5601
5804
|
mapperConfig,
|
|
@@ -5614,7 +5817,7 @@ var Highlights = ({
|
|
|
5614
5817
|
visible: { opacity: 1, transition: { staggerChildren: 0.03 } }
|
|
5615
5818
|
};
|
|
5616
5819
|
return /* @__PURE__ */ jsx51(
|
|
5617
|
-
|
|
5820
|
+
motion10.div,
|
|
5618
5821
|
{
|
|
5619
5822
|
className: "flex-1 flex items-center gap-2 flex-wrap",
|
|
5620
5823
|
initial: "hidden",
|
|
@@ -5630,7 +5833,7 @@ var Highlights = ({
|
|
|
5630
5833
|
isHighlighted ? "bg-card/95 border-2 text-foreground shadow-[0_6px_18px_rgba(0,0,0,0.12)]" : "bg-muted/10 border-border text-muted-foreground hover:bg-muted/5"
|
|
5631
5834
|
);
|
|
5632
5835
|
return /* @__PURE__ */ jsx51(
|
|
5633
|
-
|
|
5836
|
+
motion10.div,
|
|
5634
5837
|
{
|
|
5635
5838
|
layout: true,
|
|
5636
5839
|
initial: "hidden",
|
|
@@ -5646,8 +5849,8 @@ var Highlights = ({
|
|
|
5646
5849
|
className: pillClasses,
|
|
5647
5850
|
style: { minWidth: showFullLabel ? void 0 : 36 },
|
|
5648
5851
|
"aria-pressed": isHighlighted,
|
|
5649
|
-
children: /* @__PURE__ */
|
|
5650
|
-
|
|
5852
|
+
children: /* @__PURE__ */ jsxs34(
|
|
5853
|
+
motion10.button,
|
|
5651
5854
|
{
|
|
5652
5855
|
whileHover: { scale: isHighlighted ? 1.04 : 1.03 },
|
|
5653
5856
|
whileTap: { scale: 0.96 },
|
|
@@ -5655,7 +5858,7 @@ var Highlights = ({
|
|
|
5655
5858
|
className: "flex items-center gap-2 min-w-0 pr-2",
|
|
5656
5859
|
children: [
|
|
5657
5860
|
/* @__PURE__ */ jsx51(
|
|
5658
|
-
|
|
5861
|
+
motion10.span,
|
|
5659
5862
|
{
|
|
5660
5863
|
className: cn("w-3 h-3 rounded-sm flex-shrink-0 border"),
|
|
5661
5864
|
style: {
|
|
@@ -5669,8 +5872,8 @@ var Highlights = ({
|
|
|
5669
5872
|
transition: { type: "spring", stiffness: 400, damping: 30 }
|
|
5670
5873
|
}
|
|
5671
5874
|
),
|
|
5672
|
-
showFullLabel ? /* @__PURE__ */ jsx51(
|
|
5673
|
-
|
|
5875
|
+
showFullLabel ? /* @__PURE__ */ jsx51(motion10.span, { className: "truncate max-w-[10rem] pr-2", layout: true, children: label }) : showShortLabel ? /* @__PURE__ */ jsx51(
|
|
5876
|
+
motion10.span,
|
|
5674
5877
|
{
|
|
5675
5878
|
className: "truncate max-w-[6rem] text-xs pr-2",
|
|
5676
5879
|
layout: true,
|
|
@@ -5678,7 +5881,7 @@ var Highlights = ({
|
|
|
5678
5881
|
}
|
|
5679
5882
|
) : null,
|
|
5680
5883
|
/* @__PURE__ */ jsx51(
|
|
5681
|
-
|
|
5884
|
+
motion10.span,
|
|
5682
5885
|
{
|
|
5683
5886
|
"aria-hidden": true,
|
|
5684
5887
|
initial: { opacity: 0, scale: 0.6 },
|
|
@@ -5708,7 +5911,7 @@ var Highlights_default = Highlights;
|
|
|
5708
5911
|
|
|
5709
5912
|
// src/components/charts/components/controls/CloseAllButton.tsx
|
|
5710
5913
|
import { XIcon as XIcon5 } from "@phosphor-icons/react/dist/ssr";
|
|
5711
|
-
import { jsx as jsx52, jsxs as
|
|
5914
|
+
import { jsx as jsx52, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
5712
5915
|
var CloseAllButton = ({
|
|
5713
5916
|
count,
|
|
5714
5917
|
onCloseAll,
|
|
@@ -5744,7 +5947,7 @@ var CloseAllButton = ({
|
|
|
5744
5947
|
`;
|
|
5745
5948
|
};
|
|
5746
5949
|
if (variant === "inline") {
|
|
5747
|
-
return /* @__PURE__ */ jsx52("div", { className: "absolute top-4 right-4 z-30", children: /* @__PURE__ */
|
|
5950
|
+
return /* @__PURE__ */ jsx52("div", { className: "absolute top-4 right-4 z-30", children: /* @__PURE__ */ jsxs35(
|
|
5748
5951
|
ButtonBase,
|
|
5749
5952
|
{
|
|
5750
5953
|
variant: "ghost",
|
|
@@ -5762,7 +5965,7 @@ var CloseAllButton = ({
|
|
|
5762
5965
|
"div",
|
|
5763
5966
|
{
|
|
5764
5967
|
className: `${getPositionClasses()} animate-in fade-in slide-in-from-top-2 duration-300`,
|
|
5765
|
-
children: /* @__PURE__ */ jsx52("div", { children: /* @__PURE__ */
|
|
5968
|
+
children: /* @__PURE__ */ jsx52("div", { children: /* @__PURE__ */ jsxs35(
|
|
5766
5969
|
ButtonBase,
|
|
5767
5970
|
{
|
|
5768
5971
|
onClick: onCloseAll,
|
|
@@ -5788,16 +5991,16 @@ var CloseAllButton_default = CloseAllButton;
|
|
|
5788
5991
|
|
|
5789
5992
|
// src/components/charts/components/tooltips/DraggableTooltip.tsx
|
|
5790
5993
|
import React34, {
|
|
5791
|
-
useEffect as
|
|
5792
|
-
useRef as
|
|
5793
|
-
useState as
|
|
5994
|
+
useEffect as useEffect10,
|
|
5995
|
+
useRef as useRef4,
|
|
5996
|
+
useState as useState11,
|
|
5794
5997
|
useCallback as useCallback6,
|
|
5795
5998
|
useMemo as useMemo5
|
|
5796
5999
|
} from "react";
|
|
5797
|
-
import { motion as
|
|
6000
|
+
import { motion as motion11, AnimatePresence as AnimatePresence8 } from "framer-motion";
|
|
5798
6001
|
import { DotsSixVerticalIcon } from "@phosphor-icons/react";
|
|
5799
6002
|
import { XIcon as XIcon6 } from "@phosphor-icons/react/dist/ssr";
|
|
5800
|
-
import { Fragment as Fragment7, jsx as jsx53, jsxs as
|
|
6003
|
+
import { Fragment as Fragment7, jsx as jsx53, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
5801
6004
|
var ALIGNMENT_THRESHOLD = 25;
|
|
5802
6005
|
var GUIDE_THRESHOLD = 60;
|
|
5803
6006
|
var STRONG_SNAP_THRESHOLD = 35;
|
|
@@ -5882,7 +6085,7 @@ var DraggableTooltipComponent = ({
|
|
|
5882
6085
|
const numeric = visibleKeys2.map((k) => data2[k]).filter((v) => typeof v === "number");
|
|
5883
6086
|
return numeric.reduce((s, v) => s + (v || 0), 0);
|
|
5884
6087
|
}, [data2, visibleKeys2]);
|
|
5885
|
-
return /* @__PURE__ */
|
|
6088
|
+
return /* @__PURE__ */ jsxs36("div", { className: "text-sm", children: [
|
|
5886
6089
|
/* @__PURE__ */ jsx53("div", { className: "text-sm text-muted-foreground", children: "Total" }),
|
|
5887
6090
|
/* @__PURE__ */ jsx53(
|
|
5888
6091
|
"div",
|
|
@@ -5894,13 +6097,13 @@ var DraggableTooltipComponent = ({
|
|
|
5894
6097
|
] });
|
|
5895
6098
|
}
|
|
5896
6099
|
);
|
|
5897
|
-
const [localPos, setLocalPos] =
|
|
5898
|
-
const [dragging, setDragging] =
|
|
5899
|
-
const offsetRef =
|
|
5900
|
-
const lastMouse =
|
|
5901
|
-
const [alignmentGuides, setAlignmentGuides] =
|
|
5902
|
-
const [globalTooltipCountLocal, setGlobalTooltipCountLocal] =
|
|
5903
|
-
|
|
6100
|
+
const [localPos, setLocalPos] = useState11(position);
|
|
6101
|
+
const [dragging, setDragging] = useState11(false);
|
|
6102
|
+
const offsetRef = useRef4({ x: 0, y: 0 });
|
|
6103
|
+
const lastMouse = useRef4({ x: 0, y: 0 });
|
|
6104
|
+
const [alignmentGuides, setAlignmentGuides] = useState11([]);
|
|
6105
|
+
const [globalTooltipCountLocal, setGlobalTooltipCountLocal] = useState11(0);
|
|
6106
|
+
useEffect10(() => setLocalPos(position), [position]);
|
|
5904
6107
|
const getAllTooltips = useCallback6(() => {
|
|
5905
6108
|
const response = [];
|
|
5906
6109
|
const ev = new CustomEvent("requestGlobalTooltips", {
|
|
@@ -6005,7 +6208,7 @@ var DraggableTooltipComponent = ({
|
|
|
6005
6208
|
},
|
|
6006
6209
|
[alignmentGuides]
|
|
6007
6210
|
);
|
|
6008
|
-
|
|
6211
|
+
useEffect10(() => {
|
|
6009
6212
|
let rafId = null;
|
|
6010
6213
|
const handleMouseMove = (e) => {
|
|
6011
6214
|
if (!dragging) return;
|
|
@@ -6047,7 +6250,7 @@ var DraggableTooltipComponent = ({
|
|
|
6047
6250
|
document.body.style.userSelect = "";
|
|
6048
6251
|
};
|
|
6049
6252
|
}, [dragging, snapToGuides, updateAlignmentGuides, id, onPositionChange]);
|
|
6050
|
-
|
|
6253
|
+
useEffect10(() => {
|
|
6051
6254
|
const handleCloseAll = () => onClose(id);
|
|
6052
6255
|
const handleRequestTooltipCount = () => {
|
|
6053
6256
|
window.dispatchEvent(
|
|
@@ -6078,7 +6281,7 @@ var DraggableTooltipComponent = ({
|
|
|
6078
6281
|
});
|
|
6079
6282
|
};
|
|
6080
6283
|
}, [id, localPos, onClose]);
|
|
6081
|
-
|
|
6284
|
+
useEffect10(() => {
|
|
6082
6285
|
if (dragging) return;
|
|
6083
6286
|
let total = 0;
|
|
6084
6287
|
const timeoutId = setTimeout(() => {
|
|
@@ -6096,7 +6299,7 @@ var DraggableTooltipComponent = ({
|
|
|
6096
6299
|
}, 0);
|
|
6097
6300
|
return () => clearTimeout(timeoutId);
|
|
6098
6301
|
}, [localPos, dragging]);
|
|
6099
|
-
|
|
6302
|
+
useEffect10(() => {
|
|
6100
6303
|
const recount = () => {
|
|
6101
6304
|
if (dragging) return;
|
|
6102
6305
|
let total = 0;
|
|
@@ -6147,7 +6350,7 @@ var DraggableTooltipComponent = ({
|
|
|
6147
6350
|
},
|
|
6148
6351
|
[id, onClose]
|
|
6149
6352
|
);
|
|
6150
|
-
return /* @__PURE__ */
|
|
6353
|
+
return /* @__PURE__ */ jsxs36(Fragment7, { children: [
|
|
6151
6354
|
dragging && alignmentGuides.map((guide, index) => {
|
|
6152
6355
|
const isHorizontal = guide.type === "horizontal";
|
|
6153
6356
|
const color = isHorizontal ? "#3b82f6" : "#ef4444";
|
|
@@ -6167,9 +6370,9 @@ var DraggableTooltipComponent = ({
|
|
|
6167
6370
|
guide.sourceTooltip.top + guide.sourceTooltip.height / 2,
|
|
6168
6371
|
guide.targetTooltip.top + guide.targetTooltip.height / 2
|
|
6169
6372
|
);
|
|
6170
|
-
return /* @__PURE__ */
|
|
6373
|
+
return /* @__PURE__ */ jsxs36("div", { children: [
|
|
6171
6374
|
/* @__PURE__ */ jsx53(
|
|
6172
|
-
|
|
6375
|
+
motion11.div,
|
|
6173
6376
|
{
|
|
6174
6377
|
className: "fixed pointer-events-none z-30",
|
|
6175
6378
|
variants: guideVariants,
|
|
@@ -6191,7 +6394,7 @@ var DraggableTooltipComponent = ({
|
|
|
6191
6394
|
}
|
|
6192
6395
|
),
|
|
6193
6396
|
/* @__PURE__ */ jsx53(
|
|
6194
|
-
|
|
6397
|
+
motion11.div,
|
|
6195
6398
|
{
|
|
6196
6399
|
className: "fixed pointer-events-none z-31",
|
|
6197
6400
|
variants: guideDotVariants,
|
|
@@ -6210,7 +6413,7 @@ var DraggableTooltipComponent = ({
|
|
|
6210
6413
|
}
|
|
6211
6414
|
),
|
|
6212
6415
|
/* @__PURE__ */ jsx53(
|
|
6213
|
-
|
|
6416
|
+
motion11.div,
|
|
6214
6417
|
{
|
|
6215
6418
|
className: "fixed pointer-events-none z-31",
|
|
6216
6419
|
variants: guideDotVariants,
|
|
@@ -6230,8 +6433,8 @@ var DraggableTooltipComponent = ({
|
|
|
6230
6433
|
)
|
|
6231
6434
|
] }, index);
|
|
6232
6435
|
}),
|
|
6233
|
-
/* @__PURE__ */ jsx53(AnimatePresence8, { children: /* @__PURE__ */
|
|
6234
|
-
|
|
6436
|
+
/* @__PURE__ */ jsx53(AnimatePresence8, { children: /* @__PURE__ */ jsxs36(
|
|
6437
|
+
motion11.div,
|
|
6235
6438
|
{
|
|
6236
6439
|
className: "fixed bg-card border border-border rounded-lg shadow-lg z-50 min-w-80 select-none",
|
|
6237
6440
|
variants: tooltipVariants,
|
|
@@ -6248,7 +6451,7 @@ var DraggableTooltipComponent = ({
|
|
|
6248
6451
|
role: "dialog",
|
|
6249
6452
|
"aria-label": title ? `Tooltip ${title}` : `Tooltip ${data.name}`,
|
|
6250
6453
|
children: [
|
|
6251
|
-
/* @__PURE__ */
|
|
6454
|
+
/* @__PURE__ */ jsxs36(
|
|
6252
6455
|
"div",
|
|
6253
6456
|
{
|
|
6254
6457
|
className: "flex items-center justify-between p-3 pb-2 border-b bg-muted/20 rounded-t-lg",
|
|
@@ -6270,14 +6473,14 @@ var DraggableTooltipComponent = ({
|
|
|
6270
6473
|
]
|
|
6271
6474
|
}
|
|
6272
6475
|
),
|
|
6273
|
-
/* @__PURE__ */ jsx53("div", { className: "px-3 py-2 bg-accent/5 border-l-4 border-primary", children: /* @__PURE__ */
|
|
6274
|
-
/* @__PURE__ */
|
|
6476
|
+
/* @__PURE__ */ jsx53("div", { className: "px-3 py-2 bg-accent/5 border-l-4 border-primary", children: /* @__PURE__ */ jsxs36("div", { className: "flex items-center justify-between gap-2", children: [
|
|
6477
|
+
/* @__PURE__ */ jsxs36("div", { children: [
|
|
6275
6478
|
/* @__PURE__ */ jsx53("span", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide", children: periodLabel }),
|
|
6276
6479
|
/* @__PURE__ */ jsx53("p", { className: "font-bold text-lg text-foreground mt-1 truncate", children: data.name })
|
|
6277
6480
|
] }),
|
|
6278
6481
|
/* @__PURE__ */ jsx53("div", { className: "text-right", children: /* @__PURE__ */ jsx53(TotalDisplay, { data, visibleKeys }) })
|
|
6279
6482
|
] }) }),
|
|
6280
|
-
/* @__PURE__ */
|
|
6483
|
+
/* @__PURE__ */ jsxs36("div", { className: "p-3 pt-2 space-y-2", children: [
|
|
6281
6484
|
/* @__PURE__ */ jsx53("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-2", children: dataLabel }),
|
|
6282
6485
|
useMemo5(
|
|
6283
6486
|
() => visibleKeys.map((key) => {
|
|
@@ -6294,7 +6497,7 @@ var DraggableTooltipComponent = ({
|
|
|
6294
6497
|
const pct = absDenominator > 0 ? Math.abs(val) / absDenominator * 100 : 0;
|
|
6295
6498
|
const isDimmed = highlightedSeries && highlightedSeries.size > 0 && !highlightedSeries.has(key);
|
|
6296
6499
|
const isHighlighted = highlightedSeries && highlightedSeries.has(key);
|
|
6297
|
-
return /* @__PURE__ */
|
|
6500
|
+
return /* @__PURE__ */ jsxs36(
|
|
6298
6501
|
"div",
|
|
6299
6502
|
{
|
|
6300
6503
|
role: "button",
|
|
@@ -6312,8 +6515,8 @@ var DraggableTooltipComponent = ({
|
|
|
6312
6515
|
border: isHighlighted ? `1px solid ${finalColors[key] || "#666"}22` : void 0
|
|
6313
6516
|
},
|
|
6314
6517
|
children: [
|
|
6315
|
-
/* @__PURE__ */
|
|
6316
|
-
/* @__PURE__ */
|
|
6518
|
+
/* @__PURE__ */ jsxs36("div", { className: "flex items-center justify-between", children: [
|
|
6519
|
+
/* @__PURE__ */ jsxs36("div", { className: "flex items-center gap-2", children: [
|
|
6317
6520
|
/* @__PURE__ */ jsx53(
|
|
6318
6521
|
"div",
|
|
6319
6522
|
{
|
|
@@ -6331,7 +6534,7 @@ var DraggableTooltipComponent = ({
|
|
|
6331
6534
|
}
|
|
6332
6535
|
)
|
|
6333
6536
|
] }),
|
|
6334
|
-
/* @__PURE__ */
|
|
6537
|
+
/* @__PURE__ */ jsxs36("div", { className: "flex items-baseline gap-2", children: [
|
|
6335
6538
|
/* @__PURE__ */ jsx53(
|
|
6336
6539
|
"span",
|
|
6337
6540
|
{
|
|
@@ -6368,7 +6571,7 @@ var DraggableTooltipComponent = ({
|
|
|
6368
6571
|
finalColors
|
|
6369
6572
|
]
|
|
6370
6573
|
),
|
|
6371
|
-
/* @__PURE__ */ jsx53("div", { className: "mt-3 pt-2 border-t", children: /* @__PURE__ */
|
|
6574
|
+
/* @__PURE__ */ jsx53("div", { className: "mt-3 pt-2 border-t", children: /* @__PURE__ */ jsxs36("p", { className: "text-xs text-muted-foreground flex items-center gap-1", children: [
|
|
6372
6575
|
"Clique no ",
|
|
6373
6576
|
/* @__PURE__ */ jsx53(XIcon6, { size: 12 }),
|
|
6374
6577
|
" para remover"
|
|
@@ -6394,7 +6597,7 @@ DraggableTooltip.displayName = "DraggableTooltip";
|
|
|
6394
6597
|
var DraggableTooltip_default = DraggableTooltip;
|
|
6395
6598
|
|
|
6396
6599
|
// src/components/charts/components/tooltips/TooltipWithTotal.tsx
|
|
6397
|
-
import { jsx as jsx54, jsxs as
|
|
6600
|
+
import { jsx as jsx54, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
6398
6601
|
var RechartTooltipWithTotal = ({
|
|
6399
6602
|
active,
|
|
6400
6603
|
payload,
|
|
@@ -6413,7 +6616,7 @@ var RechartTooltipWithTotal = ({
|
|
|
6413
6616
|
(sum, p) => sum + Math.abs(typeof p.value === "number" ? p.value : 0),
|
|
6414
6617
|
0
|
|
6415
6618
|
);
|
|
6416
|
-
return /* @__PURE__ */
|
|
6619
|
+
return /* @__PURE__ */ jsxs37(
|
|
6417
6620
|
"div",
|
|
6418
6621
|
{
|
|
6419
6622
|
role: "dialog",
|
|
@@ -6421,12 +6624,12 @@ var RechartTooltipWithTotal = ({
|
|
|
6421
6624
|
className: "bg-card border border-border rounded-lg p-3 shadow-2xl max-w-xs",
|
|
6422
6625
|
style: { minWidth: 220 },
|
|
6423
6626
|
children: [
|
|
6424
|
-
/* @__PURE__ */
|
|
6425
|
-
/* @__PURE__ */
|
|
6627
|
+
/* @__PURE__ */ jsxs37("div", { className: "flex items-start justify-between mb-2", children: [
|
|
6628
|
+
/* @__PURE__ */ jsxs37("div", { className: "pr-2", children: [
|
|
6426
6629
|
/* @__PURE__ */ jsx54("p", { className: "text-xs text-muted-foreground", children: periodLabel }),
|
|
6427
6630
|
/* @__PURE__ */ jsx54("p", { className: "font-medium text-foreground truncate", children: label })
|
|
6428
6631
|
] }),
|
|
6429
|
-
/* @__PURE__ */
|
|
6632
|
+
/* @__PURE__ */ jsxs37("div", { className: "text-right ml-3", children: [
|
|
6430
6633
|
/* @__PURE__ */ jsx54("p", { className: "text-xs text-muted-foreground", children: totalLabel }),
|
|
6431
6634
|
/* @__PURE__ */ jsx54(
|
|
6432
6635
|
"p",
|
|
@@ -6442,9 +6645,9 @@ var RechartTooltipWithTotal = ({
|
|
|
6442
6645
|
const pct = absDenominator > 0 ? Math.abs(value) / absDenominator * 100 : 0;
|
|
6443
6646
|
const baseColor = finalColors[entry.dataKey] || entry.color || "#999";
|
|
6444
6647
|
const isNeg = value < 0;
|
|
6445
|
-
return /* @__PURE__ */
|
|
6446
|
-
/* @__PURE__ */
|
|
6447
|
-
/* @__PURE__ */
|
|
6648
|
+
return /* @__PURE__ */ jsxs37("div", { className: "flex flex-col gap-1", children: [
|
|
6649
|
+
/* @__PURE__ */ jsxs37("div", { className: "flex items-center justify-between text-sm", children: [
|
|
6650
|
+
/* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-2 truncate", children: [
|
|
6448
6651
|
/* @__PURE__ */ jsx54(
|
|
6449
6652
|
"span",
|
|
6450
6653
|
{
|
|
@@ -6455,7 +6658,7 @@ var RechartTooltipWithTotal = ({
|
|
|
6455
6658
|
),
|
|
6456
6659
|
/* @__PURE__ */ jsx54("span", { className: "text-muted-foreground truncate", children: entry.name })
|
|
6457
6660
|
] }),
|
|
6458
|
-
/* @__PURE__ */
|
|
6661
|
+
/* @__PURE__ */ jsxs37("div", { className: "flex items-baseline gap-3 ml-3", children: [
|
|
6459
6662
|
/* @__PURE__ */ jsx54(
|
|
6460
6663
|
"span",
|
|
6461
6664
|
{
|
|
@@ -6485,7 +6688,7 @@ var RechartTooltipWithTotal = ({
|
|
|
6485
6688
|
var TooltipWithTotal_default = RechartTooltipWithTotal;
|
|
6486
6689
|
|
|
6487
6690
|
// src/components/charts/components/tooltips/TooltipSimple.tsx
|
|
6488
|
-
import { jsx as jsx55, jsxs as
|
|
6691
|
+
import { jsx as jsx55, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
6489
6692
|
var TooltipSimple = ({
|
|
6490
6693
|
active,
|
|
6491
6694
|
payload,
|
|
@@ -6494,7 +6697,7 @@ var TooltipSimple = ({
|
|
|
6494
6697
|
periodLabel = "Per\xEDodo"
|
|
6495
6698
|
}) => {
|
|
6496
6699
|
if (!active || !payload || payload.length === 0) return null;
|
|
6497
|
-
return /* @__PURE__ */
|
|
6700
|
+
return /* @__PURE__ */ jsxs38(
|
|
6498
6701
|
"div",
|
|
6499
6702
|
{
|
|
6500
6703
|
role: "dialog",
|
|
@@ -6502,19 +6705,19 @@ var TooltipSimple = ({
|
|
|
6502
6705
|
className: "bg-card border border-border rounded-lg p-3 shadow-2xl max-w-[280px]",
|
|
6503
6706
|
style: { minWidth: 220 },
|
|
6504
6707
|
children: [
|
|
6505
|
-
/* @__PURE__ */ jsx55("div", { className: "mb-2", children: /* @__PURE__ */ jsx55("div", { className: "flex items-center justify-between gap-3", children: /* @__PURE__ */
|
|
6708
|
+
/* @__PURE__ */ jsx55("div", { className: "mb-2", children: /* @__PURE__ */ jsx55("div", { className: "flex items-center justify-between gap-3", children: /* @__PURE__ */ jsxs38("div", { className: "min-w-0", children: [
|
|
6506
6709
|
/* @__PURE__ */ jsx55("p", { className: "text-xs text-muted-foreground", children: periodLabel }),
|
|
6507
6710
|
/* @__PURE__ */ jsx55("p", { className: "font-medium text-foreground truncate", children: label })
|
|
6508
6711
|
] }) }) }),
|
|
6509
6712
|
/* @__PURE__ */ jsx55("div", { className: "divide-y divide-border rounded-md overflow-hidden", children: payload.map((entry, index) => {
|
|
6510
6713
|
const value = typeof entry.value === "number" ? entry.value : 0;
|
|
6511
6714
|
const color = finalColors[entry.dataKey] || entry.color || "#999";
|
|
6512
|
-
return /* @__PURE__ */
|
|
6715
|
+
return /* @__PURE__ */ jsxs38(
|
|
6513
6716
|
"div",
|
|
6514
6717
|
{
|
|
6515
6718
|
className: "flex items-center justify-between text-sm px-2 py-2 bg-card/0 hover:bg-muted transition-colors",
|
|
6516
6719
|
children: [
|
|
6517
|
-
/* @__PURE__ */
|
|
6720
|
+
/* @__PURE__ */ jsxs38("div", { className: "flex items-center gap-3 min-w-0", children: [
|
|
6518
6721
|
/* @__PURE__ */ jsx55(
|
|
6519
6722
|
"span",
|
|
6520
6723
|
{
|
|
@@ -6544,7 +6747,7 @@ var TooltipSimple = ({
|
|
|
6544
6747
|
var TooltipSimple_default = TooltipSimple;
|
|
6545
6748
|
|
|
6546
6749
|
// src/components/charts/utils/pillLabelRenderer.tsx
|
|
6547
|
-
import { jsx as jsx56, jsxs as
|
|
6750
|
+
import { jsx as jsx56, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
6548
6751
|
var formatCompactNumber = (value) => {
|
|
6549
6752
|
const isNegative = value < 0;
|
|
6550
6753
|
const absValue = Math.abs(value);
|
|
@@ -6625,7 +6828,7 @@ var renderPillLabel = (color, variant) => {
|
|
|
6625
6828
|
textColor = "#374151";
|
|
6626
6829
|
}
|
|
6627
6830
|
}
|
|
6628
|
-
return /* @__PURE__ */
|
|
6831
|
+
return /* @__PURE__ */ jsxs39("g", { children: [
|
|
6629
6832
|
/* @__PURE__ */ jsx56(
|
|
6630
6833
|
"rect",
|
|
6631
6834
|
{
|
|
@@ -6659,7 +6862,7 @@ var renderPillLabel = (color, variant) => {
|
|
|
6659
6862
|
var pillLabelRenderer_default = renderPillLabel;
|
|
6660
6863
|
|
|
6661
6864
|
// src/components/charts/Chart.tsx
|
|
6662
|
-
import { jsx as jsx57, jsxs as
|
|
6865
|
+
import { jsx as jsx57, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
6663
6866
|
var DEFAULT_COLORS = ["#55af7d", "#8e68ff", "#2273e1"];
|
|
6664
6867
|
var Chart = ({
|
|
6665
6868
|
data,
|
|
@@ -6709,12 +6912,12 @@ var Chart = ({
|
|
|
6709
6912
|
return { xAxisConfig: xAxisConfig2, mapperConfig: mapperConfig2 };
|
|
6710
6913
|
}, [data, xAxis, labelMap]);
|
|
6711
6914
|
const { xAxisConfig, mapperConfig } = smartConfig;
|
|
6712
|
-
const [activeTooltips, setActiveTooltips] =
|
|
6713
|
-
const [highlightedSeries, setHighlightedSeries] =
|
|
6915
|
+
const [activeTooltips, setActiveTooltips] = useState12([]);
|
|
6916
|
+
const [highlightedSeries, setHighlightedSeries] = useState12(
|
|
6714
6917
|
/* @__PURE__ */ new Set()
|
|
6715
6918
|
);
|
|
6716
|
-
const [showOnlyHighlighted, setShowOnlyHighlighted] =
|
|
6717
|
-
|
|
6919
|
+
const [showOnlyHighlighted, setShowOnlyHighlighted] = useState12(false);
|
|
6920
|
+
useEffect11(() => {
|
|
6718
6921
|
if (highlightedSeries.size === 0 && showOnlyHighlighted) {
|
|
6719
6922
|
setShowOnlyHighlighted(false);
|
|
6720
6923
|
}
|
|
@@ -6723,8 +6926,8 @@ var Chart = ({
|
|
|
6723
6926
|
...item,
|
|
6724
6927
|
name: String(item[xAxisConfig.dataKey] || "N/A")
|
|
6725
6928
|
}));
|
|
6726
|
-
const wrapperRef =
|
|
6727
|
-
const [measuredWidth, setMeasuredWidth] =
|
|
6929
|
+
const wrapperRef = useRef5(null);
|
|
6930
|
+
const [measuredWidth, setMeasuredWidth] = useState12(null);
|
|
6728
6931
|
useLayoutEffect(() => {
|
|
6729
6932
|
const el = wrapperRef.current;
|
|
6730
6933
|
if (!el) return;
|
|
@@ -6778,7 +6981,7 @@ var Chart = ({
|
|
|
6778
6981
|
() => activeTooltips.map((t) => adaptDataForTooltip(t.data).name),
|
|
6779
6982
|
[activeTooltips, adaptDataForTooltip]
|
|
6780
6983
|
);
|
|
6781
|
-
|
|
6984
|
+
useEffect11(() => {
|
|
6782
6985
|
window.dispatchEvent(new Event("recountTooltips"));
|
|
6783
6986
|
}, [activeTooltips.length]);
|
|
6784
6987
|
const toggleHighlight = useCallback7((key) => {
|
|
@@ -7021,7 +7224,7 @@ var Chart = ({
|
|
|
7021
7224
|
overflowY: "hidden",
|
|
7022
7225
|
minWidth: 0
|
|
7023
7226
|
},
|
|
7024
|
-
children: /* @__PURE__ */
|
|
7227
|
+
children: /* @__PURE__ */ jsxs40(
|
|
7025
7228
|
"div",
|
|
7026
7229
|
{
|
|
7027
7230
|
className: cn("rounded-lg bg-card p-2 relative", className),
|
|
@@ -7042,7 +7245,7 @@ var Chart = ({
|
|
|
7042
7245
|
children: /* @__PURE__ */ jsx57("h3", { className: titleClassName, children: title })
|
|
7043
7246
|
}
|
|
7044
7247
|
),
|
|
7045
|
-
allKeys.length > 0 && (finalEnableHighlights || finalEnableShowOnly) && /* @__PURE__ */
|
|
7248
|
+
allKeys.length > 0 && (finalEnableHighlights || finalEnableShowOnly) && /* @__PURE__ */ jsxs40(
|
|
7046
7249
|
"div",
|
|
7047
7250
|
{
|
|
7048
7251
|
className: "flex items-center w-full",
|
|
@@ -7117,7 +7320,7 @@ var Chart = ({
|
|
|
7117
7320
|
)
|
|
7118
7321
|
}
|
|
7119
7322
|
),
|
|
7120
|
-
/* @__PURE__ */ jsx57(ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */
|
|
7323
|
+
/* @__PURE__ */ jsx57(ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxs40(
|
|
7121
7324
|
ComposedChart,
|
|
7122
7325
|
{
|
|
7123
7326
|
data: processedData,
|
|
@@ -7331,7 +7534,7 @@ var Chart = ({
|
|
|
7331
7534
|
var Chart_default = Chart;
|
|
7332
7535
|
|
|
7333
7536
|
// src/components/charts/BarChart.tsx
|
|
7334
|
-
import { useState as
|
|
7537
|
+
import { useState as useState13, useEffect as useEffect12, useCallback as useCallback8, useMemo as useMemo7 } from "react";
|
|
7335
7538
|
import {
|
|
7336
7539
|
BarChart as RechartsBarChart,
|
|
7337
7540
|
Bar as Bar2,
|
|
@@ -7343,7 +7546,7 @@ import {
|
|
|
7343
7546
|
Legend as Legend2,
|
|
7344
7547
|
LabelList as LabelList2
|
|
7345
7548
|
} from "recharts";
|
|
7346
|
-
import { jsx as jsx58, jsxs as
|
|
7549
|
+
import { jsx as jsx58, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
7347
7550
|
var DEFAULT_COLORS2 = ["#55af7d", "#8e68ff", "#2273e1"];
|
|
7348
7551
|
var BarChart = ({
|
|
7349
7552
|
data,
|
|
@@ -7423,14 +7626,14 @@ var BarChart = ({
|
|
|
7423
7626
|
return { xAxisConfig: xAxisConfig2, mapperConfig: mapperConfig2 };
|
|
7424
7627
|
}, [data, xAxis, mapper, yAxis, autoDetect, labelMap]);
|
|
7425
7628
|
const { xAxisConfig, mapperConfig } = smartConfig;
|
|
7426
|
-
const [activeTooltips, setActiveTooltips] =
|
|
7427
|
-
const [isDragging, setIsDragging] =
|
|
7428
|
-
const [dragOffset, setDragOffset] =
|
|
7629
|
+
const [activeTooltips, setActiveTooltips] = useState13([]);
|
|
7630
|
+
const [isDragging, setIsDragging] = useState13(null);
|
|
7631
|
+
const [dragOffset, setDragOffset] = useState13({
|
|
7429
7632
|
x: 0,
|
|
7430
7633
|
y: 0
|
|
7431
7634
|
});
|
|
7432
|
-
const [globalTooltipCount, setGlobalTooltipCount] =
|
|
7433
|
-
const [alignmentGuides, setAlignmentGuides] =
|
|
7635
|
+
const [globalTooltipCount, setGlobalTooltipCount] = useState13(0);
|
|
7636
|
+
const [alignmentGuides, setAlignmentGuides] = useState13([]);
|
|
7434
7637
|
const processedData = data.map((item) => ({
|
|
7435
7638
|
...item,
|
|
7436
7639
|
name: String(item[xAxisConfig.dataKey] || "N/A")
|
|
@@ -7633,7 +7836,7 @@ var BarChart = ({
|
|
|
7633
7836
|
setIsDragging(tooltipId);
|
|
7634
7837
|
setDragOffset({ x: offsetX, y: offsetY });
|
|
7635
7838
|
};
|
|
7636
|
-
|
|
7839
|
+
useEffect12(() => {
|
|
7637
7840
|
let rafId;
|
|
7638
7841
|
let lastMousePosition = { x: 0, y: 0 };
|
|
7639
7842
|
const handleGlobalMouseMove = (e) => {
|
|
@@ -7691,7 +7894,7 @@ var BarChart = ({
|
|
|
7691
7894
|
updateAlignmentGuides,
|
|
7692
7895
|
snapToGuides
|
|
7693
7896
|
]);
|
|
7694
|
-
|
|
7897
|
+
useEffect12(() => {
|
|
7695
7898
|
const handleCloseAllTooltips = () => {
|
|
7696
7899
|
setActiveTooltips([]);
|
|
7697
7900
|
setGlobalTooltipCount(0);
|
|
@@ -7701,7 +7904,7 @@ var BarChart = ({
|
|
|
7701
7904
|
window.removeEventListener("closeAllTooltips", handleCloseAllTooltips);
|
|
7702
7905
|
};
|
|
7703
7906
|
}, []);
|
|
7704
|
-
|
|
7907
|
+
useEffect12(() => {
|
|
7705
7908
|
const handleTooltipCountRequest = () => {
|
|
7706
7909
|
window.dispatchEvent(
|
|
7707
7910
|
new CustomEvent("tooltipCountResponse", {
|
|
@@ -7740,7 +7943,7 @@ var BarChart = ({
|
|
|
7740
7943
|
);
|
|
7741
7944
|
};
|
|
7742
7945
|
}, [activeTooltips]);
|
|
7743
|
-
|
|
7946
|
+
useEffect12(() => {
|
|
7744
7947
|
if (isDragging) return;
|
|
7745
7948
|
let totalCount = 0;
|
|
7746
7949
|
const handleCountResponse = (event) => {
|
|
@@ -7764,10 +7967,10 @@ var BarChart = ({
|
|
|
7764
7967
|
label
|
|
7765
7968
|
}) => {
|
|
7766
7969
|
if (!active || !payload) return null;
|
|
7767
|
-
return /* @__PURE__ */
|
|
7970
|
+
return /* @__PURE__ */ jsxs41("div", { className: "bg-card border border-border rounded-lg p-3 shadow-lg", children: [
|
|
7768
7971
|
/* @__PURE__ */ jsx58("p", { className: "font-medium text-foreground mb-2", children: label }),
|
|
7769
7972
|
payload.map(
|
|
7770
|
-
(entry, index) => /* @__PURE__ */
|
|
7973
|
+
(entry, index) => /* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-2 text-sm", children: [
|
|
7771
7974
|
/* @__PURE__ */ jsx58(
|
|
7772
7975
|
"div",
|
|
7773
7976
|
{
|
|
@@ -7775,7 +7978,7 @@ var BarChart = ({
|
|
|
7775
7978
|
style: { backgroundColor: entry.color }
|
|
7776
7979
|
}
|
|
7777
7980
|
),
|
|
7778
|
-
/* @__PURE__ */
|
|
7981
|
+
/* @__PURE__ */ jsxs41("span", { className: "text-muted-foreground", children: [
|
|
7779
7982
|
entry.name,
|
|
7780
7983
|
":"
|
|
7781
7984
|
] }),
|
|
@@ -7796,7 +7999,7 @@ var BarChart = ({
|
|
|
7796
7999
|
return `${baseClasses} text-left`;
|
|
7797
8000
|
}
|
|
7798
8001
|
};
|
|
7799
|
-
return /* @__PURE__ */
|
|
8002
|
+
return /* @__PURE__ */ jsxs41(
|
|
7800
8003
|
"div",
|
|
7801
8004
|
{
|
|
7802
8005
|
className: cn("rounded-lg bg-card p-4 relative", className),
|
|
@@ -7806,7 +8009,7 @@ var BarChart = ({
|
|
|
7806
8009
|
},
|
|
7807
8010
|
children: [
|
|
7808
8011
|
title && /* @__PURE__ */ jsx58("div", { style: { paddingLeft: `${resolvedContainerPaddingLeft}px` }, children: /* @__PURE__ */ jsx58("h3", { className: getTitleClassName(titlePosition), children: title }) }),
|
|
7809
|
-
/* @__PURE__ */
|
|
8012
|
+
/* @__PURE__ */ jsxs41(
|
|
7810
8013
|
RechartsBarChart,
|
|
7811
8014
|
{
|
|
7812
8015
|
data: processedData,
|
|
@@ -7919,7 +8122,7 @@ var BarChart = ({
|
|
|
7919
8122
|
guide.sourceTooltip.top + guide.sourceTooltip.height / 2,
|
|
7920
8123
|
guide.targetTooltip.top + guide.targetTooltip.height / 2
|
|
7921
8124
|
);
|
|
7922
|
-
return /* @__PURE__ */
|
|
8125
|
+
return /* @__PURE__ */ jsxs41("div", { children: [
|
|
7923
8126
|
/* @__PURE__ */ jsx58(
|
|
7924
8127
|
"div",
|
|
7925
8128
|
{
|
|
@@ -8006,7 +8209,7 @@ var BarChart = ({
|
|
|
8006
8209
|
var BarChart_default = BarChart;
|
|
8007
8210
|
|
|
8008
8211
|
// src/components/charts/LineChart.tsx
|
|
8009
|
-
import { useState as
|
|
8212
|
+
import { useState as useState14, useEffect as useEffect13, useCallback as useCallback9, useMemo as useMemo8 } from "react";
|
|
8010
8213
|
import {
|
|
8011
8214
|
LineChart as RechartsLineChart,
|
|
8012
8215
|
Line as Line2,
|
|
@@ -8017,7 +8220,7 @@ import {
|
|
|
8017
8220
|
Legend as Legend3,
|
|
8018
8221
|
LabelList as LabelList3
|
|
8019
8222
|
} from "recharts";
|
|
8020
|
-
import { jsx as jsx59, jsxs as
|
|
8223
|
+
import { jsx as jsx59, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
8021
8224
|
var defaultData = [
|
|
8022
8225
|
{ name: "A", value: 100 },
|
|
8023
8226
|
{ name: "B", value: 200 },
|
|
@@ -8049,14 +8252,14 @@ var CustomLineChart = ({
|
|
|
8049
8252
|
containerPaddingLeft,
|
|
8050
8253
|
16
|
|
8051
8254
|
);
|
|
8052
|
-
const [activeTooltips, setActiveTooltips] =
|
|
8053
|
-
const [isDragging, setIsDragging] =
|
|
8054
|
-
const [dragOffset, setDragOffset] =
|
|
8255
|
+
const [activeTooltips, setActiveTooltips] = useState14([]);
|
|
8256
|
+
const [isDragging, setIsDragging] = useState14(null);
|
|
8257
|
+
const [dragOffset, setDragOffset] = useState14({
|
|
8055
8258
|
x: 0,
|
|
8056
8259
|
y: 0
|
|
8057
8260
|
});
|
|
8058
|
-
const [globalTooltipCount, setGlobalTooltipCount] =
|
|
8059
|
-
const [alignmentGuides, setAlignmentGuides] =
|
|
8261
|
+
const [globalTooltipCount, setGlobalTooltipCount] = useState14(0);
|
|
8262
|
+
const [alignmentGuides, setAlignmentGuides] = useState14([]);
|
|
8060
8263
|
const generateColors = (dataKeys2) => {
|
|
8061
8264
|
const colorMap = {};
|
|
8062
8265
|
const allColors = generateAdditionalColors(colors2, dataKeys2.length);
|
|
@@ -8270,7 +8473,7 @@ var CustomLineChart = ({
|
|
|
8270
8473
|
setIsDragging(tooltipId);
|
|
8271
8474
|
setDragOffset({ x: offsetX, y: offsetY });
|
|
8272
8475
|
};
|
|
8273
|
-
|
|
8476
|
+
useEffect13(() => {
|
|
8274
8477
|
let rafId;
|
|
8275
8478
|
let lastMousePosition = { x: 0, y: 0 };
|
|
8276
8479
|
const handleGlobalMouseMove = (e) => {
|
|
@@ -8317,7 +8520,7 @@ var CustomLineChart = ({
|
|
|
8317
8520
|
updateAlignmentGuides,
|
|
8318
8521
|
snapToGuides
|
|
8319
8522
|
]);
|
|
8320
|
-
|
|
8523
|
+
useEffect13(() => {
|
|
8321
8524
|
const handleCloseAllTooltips2 = () => {
|
|
8322
8525
|
setActiveTooltips([]);
|
|
8323
8526
|
setGlobalTooltipCount(0);
|
|
@@ -8327,7 +8530,7 @@ var CustomLineChart = ({
|
|
|
8327
8530
|
window.removeEventListener("closeAllTooltips", handleCloseAllTooltips2);
|
|
8328
8531
|
};
|
|
8329
8532
|
}, []);
|
|
8330
|
-
|
|
8533
|
+
useEffect13(() => {
|
|
8331
8534
|
const handleTooltipCountRequest = () => {
|
|
8332
8535
|
window.dispatchEvent(
|
|
8333
8536
|
new CustomEvent("tooltipCountResponse", {
|
|
@@ -8371,7 +8574,7 @@ var CustomLineChart = ({
|
|
|
8371
8574
|
);
|
|
8372
8575
|
};
|
|
8373
8576
|
}, [activeTooltips]);
|
|
8374
|
-
|
|
8577
|
+
useEffect13(() => {
|
|
8375
8578
|
if (isDragging) return;
|
|
8376
8579
|
let totalCount = 0;
|
|
8377
8580
|
const handleCountResponse = (event) => {
|
|
@@ -8399,7 +8602,7 @@ var CustomLineChart = ({
|
|
|
8399
8602
|
return "text-left";
|
|
8400
8603
|
}
|
|
8401
8604
|
};
|
|
8402
|
-
return /* @__PURE__ */ jsx59("div", { className: cn("relative", className), children: /* @__PURE__ */
|
|
8605
|
+
return /* @__PURE__ */ jsx59("div", { className: cn("relative", className), children: /* @__PURE__ */ jsxs42(
|
|
8403
8606
|
"div",
|
|
8404
8607
|
{
|
|
8405
8608
|
className: "rounded-lg bg-card p-4 relative border border-border",
|
|
@@ -8410,7 +8613,7 @@ var CustomLineChart = ({
|
|
|
8410
8613
|
onClick: handleChartBackgroundClick,
|
|
8411
8614
|
children: [
|
|
8412
8615
|
title && /* @__PURE__ */ jsx59("div", { style: { paddingLeft: `${resolvedContainerPaddingLeft}px` }, children: /* @__PURE__ */ jsx59("div", { className: cn("mb-4", getTitleClass()), children: /* @__PURE__ */ jsx59("h3", { className: "text-lg font-semibold text-foreground", children: title }) }) }),
|
|
8413
|
-
/* @__PURE__ */
|
|
8616
|
+
/* @__PURE__ */ jsxs42(
|
|
8414
8617
|
RechartsLineChart,
|
|
8415
8618
|
{
|
|
8416
8619
|
data,
|
|
@@ -8501,7 +8704,7 @@ var CustomLineChart = ({
|
|
|
8501
8704
|
guide.sourceTooltip.top + guide.sourceTooltip.height / 2,
|
|
8502
8705
|
guide.targetTooltip.top + guide.targetTooltip.height / 2
|
|
8503
8706
|
);
|
|
8504
|
-
return /* @__PURE__ */
|
|
8707
|
+
return /* @__PURE__ */ jsxs42("div", { children: [
|
|
8505
8708
|
/* @__PURE__ */ jsx59(
|
|
8506
8709
|
"div",
|
|
8507
8710
|
{
|
|
@@ -8594,7 +8797,7 @@ import {
|
|
|
8594
8797
|
Tooltip as Tooltip4,
|
|
8595
8798
|
Legend as Legend4
|
|
8596
8799
|
} from "recharts";
|
|
8597
|
-
import { jsx as jsx60, jsxs as
|
|
8800
|
+
import { jsx as jsx60, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
8598
8801
|
var defaultData2 = [
|
|
8599
8802
|
{ name: "Vendas", value: 4e3 },
|
|
8600
8803
|
{ name: "Marketing", value: 3e3 },
|
|
@@ -8661,7 +8864,7 @@ var CustomPieChart = ({
|
|
|
8661
8864
|
centerY = "50%"
|
|
8662
8865
|
}) => {
|
|
8663
8866
|
const finalColors = colors2 || DEFAULT_COLORS4;
|
|
8664
|
-
return /* @__PURE__ */ jsx60("div", { className: cn("w-full rounded-lg bg-card p-4", className), children: /* @__PURE__ */ jsx60(ResponsiveContainer2, { width, height, children: /* @__PURE__ */
|
|
8867
|
+
return /* @__PURE__ */ jsx60("div", { className: cn("w-full rounded-lg bg-card p-4", className), children: /* @__PURE__ */ jsx60(ResponsiveContainer2, { width, height, children: /* @__PURE__ */ jsxs43(RechartsPieChart, { children: [
|
|
8665
8868
|
/* @__PURE__ */ jsx60(
|
|
8666
8869
|
Pie,
|
|
8667
8870
|
{
|
|
@@ -8700,12 +8903,12 @@ var CustomPieChart = ({
|
|
|
8700
8903
|
var PieChart_default = CustomPieChart;
|
|
8701
8904
|
|
|
8702
8905
|
// src/components/charts/hooks/useChartHighlights.tsx
|
|
8703
|
-
import { useState as
|
|
8906
|
+
import { useState as useState15, useCallback as useCallback10 } from "react";
|
|
8704
8907
|
var useChartHighlights = () => {
|
|
8705
|
-
const [highlightedSeries, setHighlightedSeries] =
|
|
8908
|
+
const [highlightedSeries, setHighlightedSeries] = useState15(
|
|
8706
8909
|
/* @__PURE__ */ new Set()
|
|
8707
8910
|
);
|
|
8708
|
-
const [showOnlyHighlighted, setShowOnlyHighlighted] =
|
|
8911
|
+
const [showOnlyHighlighted, setShowOnlyHighlighted] = useState15(false);
|
|
8709
8912
|
const toggleHighlight = useCallback10((key) => {
|
|
8710
8913
|
setHighlightedSeries((prev) => {
|
|
8711
8914
|
const next = new Set(prev);
|
|
@@ -8773,12 +8976,12 @@ var useChartHighlights = () => {
|
|
|
8773
8976
|
};
|
|
8774
8977
|
|
|
8775
8978
|
// src/hooks/use-drag.tsx
|
|
8776
|
-
import { useState as
|
|
8979
|
+
import { useState as useState16, useCallback as useCallback11, useRef as useRef6, useEffect as useEffect14 } from "react";
|
|
8777
8980
|
var useDrag = (options = {}) => {
|
|
8778
|
-
const [isDragging, setIsDragging] =
|
|
8779
|
-
const [positions, setPositions] =
|
|
8780
|
-
const dragStartPos =
|
|
8781
|
-
const dragId =
|
|
8981
|
+
const [isDragging, setIsDragging] = useState16(null);
|
|
8982
|
+
const [positions, setPositions] = useState16({});
|
|
8983
|
+
const dragStartPos = useRef6(null);
|
|
8984
|
+
const dragId = useRef6(null);
|
|
8782
8985
|
const handleMouseDown = useCallback11((id, e) => {
|
|
8783
8986
|
e.preventDefault();
|
|
8784
8987
|
const currentPosition = positions[id] || { top: 0, left: 0 };
|
|
@@ -8816,7 +9019,7 @@ var useDrag = (options = {}) => {
|
|
|
8816
9019
|
dragStartPos.current = null;
|
|
8817
9020
|
dragId.current = null;
|
|
8818
9021
|
}, [options]);
|
|
8819
|
-
|
|
9022
|
+
useEffect14(() => {
|
|
8820
9023
|
if (isDragging) {
|
|
8821
9024
|
document.addEventListener("mousemove", handleMouseMove);
|
|
8822
9025
|
document.addEventListener("mouseup", handleMouseUp);
|