@mlw-packages/react-components 1.7.8 → 1.7.10
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 +52 -52
- package/dist/index.d.mts +16 -10
- package/dist/index.d.ts +16 -10
- package/dist/index.js +561 -460
- package/dist/index.mjs +492 -391
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -566,6 +566,7 @@ __export(index_exports, {
|
|
|
566
566
|
CopyButton: () => CopyButton,
|
|
567
567
|
DateTimePicker: () => DateTimePicker,
|
|
568
568
|
DayView: () => DayView,
|
|
569
|
+
DebouncedInput: () => DebouncedInput,
|
|
569
570
|
DefaultEndHour: () => DefaultEndHour,
|
|
570
571
|
DefaultStartHour: () => DefaultStartHour,
|
|
571
572
|
DestructiveDialog: () => DestructiveDialog,
|
|
@@ -2121,21 +2122,28 @@ function Select({
|
|
|
2121
2122
|
onChange,
|
|
2122
2123
|
error,
|
|
2123
2124
|
testIds = {},
|
|
2124
|
-
disabled
|
|
2125
|
+
disabled,
|
|
2126
|
+
selected,
|
|
2127
|
+
label,
|
|
2128
|
+
labelClassname,
|
|
2129
|
+
className
|
|
2125
2130
|
}) {
|
|
2126
2131
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { "data-testid": testIds.root ?? "select-root", children: [
|
|
2132
|
+
label ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("label", { className: cn("mb-1 block text-sm font-medium", labelClassname), children: label }) : null,
|
|
2127
2133
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
2128
2134
|
SelectBase,
|
|
2129
2135
|
{
|
|
2130
|
-
|
|
2136
|
+
value: selected ?? void 0,
|
|
2137
|
+
onValueChange: (v) => onChange(v),
|
|
2131
2138
|
"data-testid": testIds.base ?? "select-base",
|
|
2132
2139
|
children: [
|
|
2133
2140
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
2134
2141
|
SelectTriggerBase,
|
|
2135
2142
|
{
|
|
2136
2143
|
className: cn(
|
|
2137
|
-
"flex
|
|
2138
|
-
error && "border-red-500"
|
|
2144
|
+
"flex items-center gap-2 justify-between [&>div]:line-clamp-1 [&>span]:line-clamp-1 ",
|
|
2145
|
+
error && "border-red-500",
|
|
2146
|
+
className
|
|
2139
2147
|
),
|
|
2140
2148
|
"data-testid": testIds.trigger ?? "select-trigger",
|
|
2141
2149
|
disabled,
|
|
@@ -2164,7 +2172,7 @@ function Select({
|
|
|
2164
2172
|
SelectItemBase,
|
|
2165
2173
|
{
|
|
2166
2174
|
value: item.value,
|
|
2167
|
-
"data-testid": testIds.item?.(item.value) ?? `select-item-${item.value}`,
|
|
2175
|
+
"data-testid": testIds.item?.(String(item.value)) ?? `select-item-${item.value}`,
|
|
2168
2176
|
children: item.label
|
|
2169
2177
|
},
|
|
2170
2178
|
item.value
|
|
@@ -2176,7 +2184,7 @@ function Select({
|
|
|
2176
2184
|
SelectItemBase,
|
|
2177
2185
|
{
|
|
2178
2186
|
value: item.value,
|
|
2179
|
-
"data-testid": testIds.item?.(item.value) ?? `select-item-${item.value}`,
|
|
2187
|
+
"data-testid": testIds.item?.(String(item.value)) ?? `select-item-${item.value}`,
|
|
2180
2188
|
children: item.label
|
|
2181
2189
|
},
|
|
2182
2190
|
item.value
|
|
@@ -2190,7 +2198,21 @@ function Select({
|
|
|
2190
2198
|
|
|
2191
2199
|
// src/components/selects/AvatarSelect.tsx
|
|
2192
2200
|
var import_react15 = require("react");
|
|
2201
|
+
var import_react16 = require("@phosphor-icons/react");
|
|
2193
2202
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
2203
|
+
var DEFAULT_COLORS = [
|
|
2204
|
+
"bg-purple-100 text-purple-700",
|
|
2205
|
+
"bg-green-100 text-green-700",
|
|
2206
|
+
"bg-blue-100 text-blue-700"
|
|
2207
|
+
];
|
|
2208
|
+
var getColor = (value, colors2 = DEFAULT_COLORS) => {
|
|
2209
|
+
let hash = 0;
|
|
2210
|
+
for (let i = 0; i < value.length; i++) {
|
|
2211
|
+
hash = value.charCodeAt(i) + ((hash << 5) - hash);
|
|
2212
|
+
}
|
|
2213
|
+
const index = Math.abs(hash) % colors2.length;
|
|
2214
|
+
return colors2[index];
|
|
2215
|
+
};
|
|
2194
2216
|
var Square = ({
|
|
2195
2217
|
className,
|
|
2196
2218
|
children
|
|
@@ -2217,13 +2239,18 @@ function AvatarSelect({
|
|
|
2217
2239
|
selected,
|
|
2218
2240
|
label,
|
|
2219
2241
|
labelClassname,
|
|
2220
|
-
className
|
|
2242
|
+
className,
|
|
2243
|
+
colors: colors2
|
|
2221
2244
|
}) {
|
|
2245
|
+
const [open, setOpen] = (0, import_react15.useState)(false);
|
|
2222
2246
|
const id = (0, import_react15.useId)();
|
|
2247
|
+
const allItems = items || (groupItems ? Object.values(groupItems).flat() : []);
|
|
2248
|
+
const selectedItem = allItems.find((item) => item.value === selected);
|
|
2223
2249
|
const renderItem = (item) => {
|
|
2224
2250
|
const avatarContent = item.avatar ?? item.label.charAt(0).toUpperCase();
|
|
2251
|
+
const colorClass = item.avatarClassName ?? getColor(item.value, colors2);
|
|
2225
2252
|
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
|
|
2226
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Square, { className:
|
|
2253
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Square, { className: colorClass, children: avatarContent }),
|
|
2227
2254
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "truncate", children: item.label })
|
|
2228
2255
|
] });
|
|
2229
2256
|
};
|
|
@@ -2236,95 +2263,95 @@ function AvatarSelect({
|
|
|
2236
2263
|
children: label
|
|
2237
2264
|
}
|
|
2238
2265
|
) : null,
|
|
2239
|
-
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
" [&>span]:flex [&>span]:items-center [&>span]:gap-2 [&>span_[data-square]]:shrink-0",
|
|
2252
|
-
error && "border-red-500",
|
|
2253
|
-
className
|
|
2254
|
-
),
|
|
2255
|
-
"data-testid": testIds.trigger ?? "avatar-select-trigger",
|
|
2256
|
-
disabled,
|
|
2257
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2258
|
-
SelectValueBase,
|
|
2259
|
-
{
|
|
2260
|
-
placeholder,
|
|
2261
|
-
"data-testid": testIds.value ?? "avatar-select-value"
|
|
2262
|
-
}
|
|
2263
|
-
)
|
|
2264
|
-
}
|
|
2266
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(PopoverBase, { open, onOpenChange: setOpen, children: [
|
|
2267
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(PopoverTriggerBase, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
2268
|
+
ButtonBase,
|
|
2269
|
+
{
|
|
2270
|
+
id,
|
|
2271
|
+
variant: "select",
|
|
2272
|
+
role: "combobox",
|
|
2273
|
+
"aria-expanded": open,
|
|
2274
|
+
className: cn(
|
|
2275
|
+
"w-full justify-between px-3 font-normal",
|
|
2276
|
+
error && "border-red-500",
|
|
2277
|
+
className
|
|
2265
2278
|
),
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2279
|
+
disabled,
|
|
2280
|
+
"data-testid": testIds.trigger ?? "avatar-select-trigger",
|
|
2281
|
+
children: [
|
|
2282
|
+
selectedItem ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "flex items-center gap-2 truncate", children: renderItem(selectedItem) }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-muted-foreground", children: placeholder }),
|
|
2283
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react16.CaretDownIcon, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })
|
|
2284
|
+
]
|
|
2285
|
+
}
|
|
2286
|
+
) }),
|
|
2287
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2288
|
+
PopoverContentBase,
|
|
2289
|
+
{
|
|
2290
|
+
className: "w-[--radix-popover-trigger-width] p-0",
|
|
2291
|
+
align: "start",
|
|
2292
|
+
"data-testid": testIds.content ?? "avatar-select-content",
|
|
2293
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(CommandBase, { children: [
|
|
2294
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandInputBase, { placeholder: "Search..." }),
|
|
2295
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(CommandListBase, { children: [
|
|
2296
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandEmptyBase, { children: "No results found." }),
|
|
2297
|
+
groupItems ? Object.keys(groupItems).map((key) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandGroupBase, { heading: key, children: groupItems[key].map((item) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
2298
|
+
CommandItemBase,
|
|
2272
2299
|
{
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
)
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
"
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
)
|
|
2317
|
-
}
|
|
2318
|
-
)
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
),
|
|
2300
|
+
value: item.label,
|
|
2301
|
+
onSelect: () => {
|
|
2302
|
+
onChange(item.value);
|
|
2303
|
+
setOpen(false);
|
|
2304
|
+
},
|
|
2305
|
+
"data-testid": testIds.item?.(String(item.value)) ?? `avatar-select-item-${item.value}`,
|
|
2306
|
+
children: [
|
|
2307
|
+
renderItem(item),
|
|
2308
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2309
|
+
import_react16.CheckIcon,
|
|
2310
|
+
{
|
|
2311
|
+
className: cn(
|
|
2312
|
+
"ml-auto h-4 w-4",
|
|
2313
|
+
selected === item.value ? "opacity-100" : "opacity-0"
|
|
2314
|
+
)
|
|
2315
|
+
}
|
|
2316
|
+
)
|
|
2317
|
+
]
|
|
2318
|
+
},
|
|
2319
|
+
item.value
|
|
2320
|
+
)) }, key)) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandGroupBase, { children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
2321
|
+
CommandItemBase,
|
|
2322
|
+
{
|
|
2323
|
+
value: item.label,
|
|
2324
|
+
onSelect: () => {
|
|
2325
|
+
onChange(item.value);
|
|
2326
|
+
setOpen(false);
|
|
2327
|
+
},
|
|
2328
|
+
"data-testid": testIds.item?.(String(item.value)) ?? `avatar-select-item-${item.value}`,
|
|
2329
|
+
children: [
|
|
2330
|
+
renderItem(item),
|
|
2331
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
2332
|
+
import_react16.CheckIcon,
|
|
2333
|
+
{
|
|
2334
|
+
className: cn(
|
|
2335
|
+
"ml-auto h-4 w-4",
|
|
2336
|
+
selected === item.value ? "opacity-100" : "opacity-0"
|
|
2337
|
+
)
|
|
2338
|
+
}
|
|
2339
|
+
)
|
|
2340
|
+
]
|
|
2341
|
+
},
|
|
2342
|
+
item.value
|
|
2343
|
+
)) })
|
|
2344
|
+
] })
|
|
2345
|
+
] })
|
|
2346
|
+
}
|
|
2347
|
+
)
|
|
2348
|
+
] }),
|
|
2322
2349
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ErrorMessage_default, { error })
|
|
2323
2350
|
] });
|
|
2324
2351
|
}
|
|
2325
2352
|
|
|
2326
2353
|
// src/components/charts/Chart.tsx
|
|
2327
|
-
var
|
|
2354
|
+
var import_react21 = require("react");
|
|
2328
2355
|
var import_recharts = require("recharts");
|
|
2329
2356
|
|
|
2330
2357
|
// src/components/charts/utils/helpers.ts
|
|
@@ -2471,7 +2498,7 @@ var resolveChartMargins = (margins, chartMargins, showLabels) => {
|
|
|
2471
2498
|
var import_sonner = require("sonner");
|
|
2472
2499
|
|
|
2473
2500
|
// src/components/charts/components/controls/PeriodsDropdown.tsx
|
|
2474
|
-
var
|
|
2501
|
+
var import_react17 = require("react");
|
|
2475
2502
|
var import_framer_motion6 = require("framer-motion");
|
|
2476
2503
|
var import_ssr = require("@phosphor-icons/react/dist/ssr");
|
|
2477
2504
|
var import_ssr2 = require("@phosphor-icons/react/dist/ssr");
|
|
@@ -2494,11 +2521,11 @@ function PeriodsDropdown({
|
|
|
2494
2521
|
activePeriods
|
|
2495
2522
|
}) {
|
|
2496
2523
|
const periods = processedData.map((d) => String(d.name));
|
|
2497
|
-
const [open, setOpen] = (0,
|
|
2498
|
-
const wrapperRef = (0,
|
|
2499
|
-
const firstItemRef = (0,
|
|
2500
|
-
const listRef = (0,
|
|
2501
|
-
(0,
|
|
2524
|
+
const [open, setOpen] = (0, import_react17.useState)(false);
|
|
2525
|
+
const wrapperRef = (0, import_react17.useRef)(null);
|
|
2526
|
+
const firstItemRef = (0, import_react17.useRef)(null);
|
|
2527
|
+
const listRef = (0, import_react17.useRef)(null);
|
|
2528
|
+
(0, import_react17.useEffect)(() => {
|
|
2502
2529
|
const handleClickOutside = (e) => {
|
|
2503
2530
|
if (!wrapperRef.current) return;
|
|
2504
2531
|
if (!wrapperRef.current.contains(e.target)) setOpen(false);
|
|
@@ -2513,7 +2540,7 @@ function PeriodsDropdown({
|
|
|
2513
2540
|
document.removeEventListener("keydown", handleEscape);
|
|
2514
2541
|
};
|
|
2515
2542
|
}, []);
|
|
2516
|
-
(0,
|
|
2543
|
+
(0, import_react17.useEffect)(() => {
|
|
2517
2544
|
if (open && firstItemRef.current) {
|
|
2518
2545
|
firstItemRef.current.focus();
|
|
2519
2546
|
}
|
|
@@ -2606,7 +2633,7 @@ var PeriodsDropdown_default = PeriodsDropdown;
|
|
|
2606
2633
|
|
|
2607
2634
|
// src/components/charts/components/controls/ShowOnly.tsx
|
|
2608
2635
|
var import_framer_motion7 = require("framer-motion");
|
|
2609
|
-
var
|
|
2636
|
+
var import_react18 = require("@phosphor-icons/react");
|
|
2610
2637
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2611
2638
|
var ShowOnly = ({
|
|
2612
2639
|
showOnlyHighlighted,
|
|
@@ -2635,10 +2662,10 @@ var ShowOnly = ({
|
|
|
2635
2662
|
!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"
|
|
2636
2663
|
),
|
|
2637
2664
|
children: showOnlyHighlighted ? /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
|
|
2638
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2665
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react18.EyeSlash, { size: 16, weight: "regular" }),
|
|
2639
2666
|
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "sr-only", children: "Exibir todos" })
|
|
2640
2667
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
|
|
2641
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
2668
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react18.Eye, { size: 16, weight: "bold" }),
|
|
2642
2669
|
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "sr-only", children: "Mostrar somente destacados" })
|
|
2643
2670
|
] })
|
|
2644
2671
|
}
|
|
@@ -2856,9 +2883,9 @@ var CloseAllButton = ({
|
|
|
2856
2883
|
var CloseAllButton_default = CloseAllButton;
|
|
2857
2884
|
|
|
2858
2885
|
// src/components/charts/components/tooltips/DraggableTooltip.tsx
|
|
2859
|
-
var
|
|
2886
|
+
var import_react19 = __toESM(require("react"));
|
|
2860
2887
|
var import_framer_motion9 = require("framer-motion");
|
|
2861
|
-
var
|
|
2888
|
+
var import_react20 = require("@phosphor-icons/react");
|
|
2862
2889
|
var import_ssr5 = require("@phosphor-icons/react/dist/ssr");
|
|
2863
2890
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2864
2891
|
var ALIGNMENT_THRESHOLD = 25;
|
|
@@ -2937,12 +2964,12 @@ var DraggableTooltipComponent = ({
|
|
|
2937
2964
|
valueFormatter: valueFormatter2,
|
|
2938
2965
|
categoryFormatter
|
|
2939
2966
|
}) => {
|
|
2940
|
-
const visibleKeys = (0,
|
|
2967
|
+
const visibleKeys = (0, import_react19.useMemo)(
|
|
2941
2968
|
() => showOnlyHighlighted && highlightedSeries && highlightedSeries.size > 0 ? dataKeys.filter((k) => highlightedSeries.has(k)) : dataKeys,
|
|
2942
2969
|
[showOnlyHighlighted, highlightedSeries, dataKeys]
|
|
2943
2970
|
);
|
|
2944
|
-
const TotalDisplay =
|
|
2945
|
-
const total = (0,
|
|
2971
|
+
const TotalDisplay = import_react19.default.memo(({ data: data2, visibleKeys: visibleKeys2, valueFormatter: localformatter }) => {
|
|
2972
|
+
const total = (0, import_react19.useMemo)(() => {
|
|
2946
2973
|
const numeric = visibleKeys2.map((k) => data2[k]).filter((v) => typeof v === "number");
|
|
2947
2974
|
return numeric.reduce((s, v) => s + (v || 0), 0);
|
|
2948
2975
|
}, [data2, visibleKeys2]);
|
|
@@ -2964,14 +2991,14 @@ var DraggableTooltipComponent = ({
|
|
|
2964
2991
|
)
|
|
2965
2992
|
] });
|
|
2966
2993
|
});
|
|
2967
|
-
const [localPos, setLocalPos] = (0,
|
|
2968
|
-
const [dragging, setDragging] = (0,
|
|
2969
|
-
const offsetRef = (0,
|
|
2970
|
-
const lastMouse = (0,
|
|
2971
|
-
const [alignmentGuides, setAlignmentGuides] = (0,
|
|
2972
|
-
const [globalTooltipCountLocal, setGlobalTooltipCountLocal] = (0,
|
|
2973
|
-
(0,
|
|
2974
|
-
const getAllTooltips = (0,
|
|
2994
|
+
const [localPos, setLocalPos] = (0, import_react19.useState)(position);
|
|
2995
|
+
const [dragging, setDragging] = (0, import_react19.useState)(false);
|
|
2996
|
+
const offsetRef = (0, import_react19.useRef)({ x: 0, y: 0 });
|
|
2997
|
+
const lastMouse = (0, import_react19.useRef)({ x: 0, y: 0 });
|
|
2998
|
+
const [alignmentGuides, setAlignmentGuides] = (0, import_react19.useState)([]);
|
|
2999
|
+
const [globalTooltipCountLocal, setGlobalTooltipCountLocal] = (0, import_react19.useState)(0);
|
|
3000
|
+
(0, import_react19.useEffect)(() => setLocalPos(position), [position]);
|
|
3001
|
+
const getAllTooltips = (0, import_react19.useCallback)(() => {
|
|
2975
3002
|
const response = [];
|
|
2976
3003
|
const ev = new CustomEvent("requestGlobalTooltips", {
|
|
2977
3004
|
detail: { requesterId: id, response }
|
|
@@ -2979,7 +3006,7 @@ var DraggableTooltipComponent = ({
|
|
|
2979
3006
|
window.dispatchEvent(ev);
|
|
2980
3007
|
return response;
|
|
2981
3008
|
}, [id]);
|
|
2982
|
-
const updateAlignmentGuides = (0,
|
|
3009
|
+
const updateAlignmentGuides = (0, import_react19.useCallback)(
|
|
2983
3010
|
(currentPosition) => {
|
|
2984
3011
|
const allTooltips = getAllTooltips();
|
|
2985
3012
|
const otherTooltips = allTooltips.filter((t) => t.id !== id);
|
|
@@ -3028,7 +3055,7 @@ var DraggableTooltipComponent = ({
|
|
|
3028
3055
|
},
|
|
3029
3056
|
[getAllTooltips, id]
|
|
3030
3057
|
);
|
|
3031
|
-
const snapToGuides = (0,
|
|
3058
|
+
const snapToGuides = (0, import_react19.useCallback)(
|
|
3032
3059
|
(position2) => {
|
|
3033
3060
|
const snappedPosition = { ...position2 };
|
|
3034
3061
|
let hasSnapped = false;
|
|
@@ -3075,7 +3102,7 @@ var DraggableTooltipComponent = ({
|
|
|
3075
3102
|
},
|
|
3076
3103
|
[alignmentGuides]
|
|
3077
3104
|
);
|
|
3078
|
-
(0,
|
|
3105
|
+
(0, import_react19.useEffect)(() => {
|
|
3079
3106
|
let rafId = null;
|
|
3080
3107
|
const handleMouseMove = (e) => {
|
|
3081
3108
|
if (!dragging) return;
|
|
@@ -3117,7 +3144,7 @@ var DraggableTooltipComponent = ({
|
|
|
3117
3144
|
document.body.style.userSelect = "";
|
|
3118
3145
|
};
|
|
3119
3146
|
}, [dragging, snapToGuides, updateAlignmentGuides, id, onPositionChange]);
|
|
3120
|
-
(0,
|
|
3147
|
+
(0, import_react19.useEffect)(() => {
|
|
3121
3148
|
const handleCloseAll = () => onClose(id);
|
|
3122
3149
|
const handleRequestTooltipCount = () => {
|
|
3123
3150
|
window.dispatchEvent(
|
|
@@ -3148,7 +3175,7 @@ var DraggableTooltipComponent = ({
|
|
|
3148
3175
|
});
|
|
3149
3176
|
};
|
|
3150
3177
|
}, [id, localPos, onClose]);
|
|
3151
|
-
(0,
|
|
3178
|
+
(0, import_react19.useEffect)(() => {
|
|
3152
3179
|
if (dragging) return;
|
|
3153
3180
|
let total = 0;
|
|
3154
3181
|
const timeoutId = setTimeout(() => {
|
|
@@ -3166,7 +3193,7 @@ var DraggableTooltipComponent = ({
|
|
|
3166
3193
|
}, 0);
|
|
3167
3194
|
return () => clearTimeout(timeoutId);
|
|
3168
3195
|
}, [localPos, dragging]);
|
|
3169
|
-
(0,
|
|
3196
|
+
(0, import_react19.useEffect)(() => {
|
|
3170
3197
|
const recount = () => {
|
|
3171
3198
|
if (dragging) return;
|
|
3172
3199
|
let total = 0;
|
|
@@ -3184,7 +3211,7 @@ var DraggableTooltipComponent = ({
|
|
|
3184
3211
|
window.addEventListener("recountTooltips", recount);
|
|
3185
3212
|
return () => window.removeEventListener("recountTooltips", recount);
|
|
3186
3213
|
}, [dragging]);
|
|
3187
|
-
const handleMouseDownLocal = (0,
|
|
3214
|
+
const handleMouseDownLocal = (0, import_react19.useCallback)(
|
|
3188
3215
|
(e) => {
|
|
3189
3216
|
e.preventDefault();
|
|
3190
3217
|
e.stopPropagation();
|
|
@@ -3195,7 +3222,7 @@ var DraggableTooltipComponent = ({
|
|
|
3195
3222
|
},
|
|
3196
3223
|
[id, onMouseDown]
|
|
3197
3224
|
);
|
|
3198
|
-
const handleTouchStartLocal = (0,
|
|
3225
|
+
const handleTouchStartLocal = (0, import_react19.useCallback)(
|
|
3199
3226
|
(e) => {
|
|
3200
3227
|
e.stopPropagation();
|
|
3201
3228
|
const touch = e.touches[0];
|
|
@@ -3210,7 +3237,7 @@ var DraggableTooltipComponent = ({
|
|
|
3210
3237
|
},
|
|
3211
3238
|
[id, onMouseDown]
|
|
3212
3239
|
);
|
|
3213
|
-
const handleCloseClick = (0,
|
|
3240
|
+
const handleCloseClick = (0, import_react19.useCallback)(
|
|
3214
3241
|
(e) => {
|
|
3215
3242
|
e.stopPropagation();
|
|
3216
3243
|
onClose(id);
|
|
@@ -3326,7 +3353,7 @@ var DraggableTooltipComponent = ({
|
|
|
3326
3353
|
onTouchStart: handleTouchStartLocal,
|
|
3327
3354
|
style: { touchAction: "none" },
|
|
3328
3355
|
children: [
|
|
3329
|
-
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
3356
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react20.DotsSixVerticalIcon, { size: 16 }),
|
|
3330
3357
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex flex-col gap-1", children: title && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "flex items-center gap-2 pb-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "font-bold text-foreground text-base", children: title }) }) }),
|
|
3331
3358
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
3332
3359
|
"button",
|
|
@@ -3356,7 +3383,7 @@ var DraggableTooltipComponent = ({
|
|
|
3356
3383
|
] }) }),
|
|
3357
3384
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "p-3 pt-2 space-y-2", children: [
|
|
3358
3385
|
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide mb-2", children: dataLabel }),
|
|
3359
|
-
(0,
|
|
3386
|
+
(0, import_react19.useMemo)(
|
|
3360
3387
|
() => visibleKeys.map((key) => {
|
|
3361
3388
|
const value = data[key];
|
|
3362
3389
|
if (value === void 0) return null;
|
|
@@ -3474,7 +3501,7 @@ var DraggableTooltipComponent = ({
|
|
|
3474
3501
|
)
|
|
3475
3502
|
] });
|
|
3476
3503
|
};
|
|
3477
|
-
var DraggableTooltip =
|
|
3504
|
+
var DraggableTooltip = import_react19.default.memo(DraggableTooltipComponent);
|
|
3478
3505
|
DraggableTooltip.displayName = "DraggableTooltip";
|
|
3479
3506
|
var DraggableTooltip_default = DraggableTooltip;
|
|
3480
3507
|
|
|
@@ -3818,14 +3845,14 @@ var pillLabelRenderer_default = renderPillLabel;
|
|
|
3818
3845
|
|
|
3819
3846
|
// src/components/charts/Chart.tsx
|
|
3820
3847
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
3821
|
-
var
|
|
3848
|
+
var DEFAULT_COLORS2 = ["#55af7d", "#8e68ff", "#2273e1"];
|
|
3822
3849
|
var Chart = ({
|
|
3823
3850
|
data,
|
|
3824
3851
|
series,
|
|
3825
3852
|
className,
|
|
3826
3853
|
height = 350,
|
|
3827
3854
|
width = "100%",
|
|
3828
|
-
colors: colors2 =
|
|
3855
|
+
colors: colors2 = DEFAULT_COLORS2,
|
|
3829
3856
|
gridColor,
|
|
3830
3857
|
showGrid = true,
|
|
3831
3858
|
showTooltip = true,
|
|
@@ -3848,7 +3875,7 @@ var Chart = ({
|
|
|
3848
3875
|
formatBR = false,
|
|
3849
3876
|
chartMargin
|
|
3850
3877
|
}) => {
|
|
3851
|
-
const smartConfig = (0,
|
|
3878
|
+
const smartConfig = (0, import_react21.useMemo)(() => {
|
|
3852
3879
|
const resolvedXAxisKey = typeof xAxis === "string" ? xAxis : xAxis && xAxis.dataKey || detectXAxis(data);
|
|
3853
3880
|
const xAxisConfig2 = typeof xAxis === "string" ? {
|
|
3854
3881
|
dataKey: resolvedXAxisKey,
|
|
@@ -3872,12 +3899,12 @@ var Chart = ({
|
|
|
3872
3899
|
return { xAxisConfig: xAxisConfig2, mapperConfig: mapperConfig2 };
|
|
3873
3900
|
}, [data, xAxis, labelMap]);
|
|
3874
3901
|
const { xAxisConfig, mapperConfig } = smartConfig;
|
|
3875
|
-
const [activeTooltips, setActiveTooltips] = (0,
|
|
3876
|
-
const [highlightedSeries, setHighlightedSeries] = (0,
|
|
3902
|
+
const [activeTooltips, setActiveTooltips] = (0, import_react21.useState)([]);
|
|
3903
|
+
const [highlightedSeries, setHighlightedSeries] = (0, import_react21.useState)(
|
|
3877
3904
|
/* @__PURE__ */ new Set()
|
|
3878
3905
|
);
|
|
3879
|
-
const [showOnlyHighlighted, setShowOnlyHighlighted] = (0,
|
|
3880
|
-
(0,
|
|
3906
|
+
const [showOnlyHighlighted, setShowOnlyHighlighted] = (0, import_react21.useState)(false);
|
|
3907
|
+
(0, import_react21.useEffect)(() => {
|
|
3881
3908
|
if (highlightedSeries.size === 0 && showOnlyHighlighted) {
|
|
3882
3909
|
setShowOnlyHighlighted(false);
|
|
3883
3910
|
}
|
|
@@ -3886,9 +3913,9 @@ var Chart = ({
|
|
|
3886
3913
|
...item,
|
|
3887
3914
|
name: String(item[xAxisConfig.dataKey] || "N/A")
|
|
3888
3915
|
}));
|
|
3889
|
-
const wrapperRef = (0,
|
|
3890
|
-
const [measuredWidth, setMeasuredWidth] = (0,
|
|
3891
|
-
(0,
|
|
3916
|
+
const wrapperRef = (0, import_react21.useRef)(null);
|
|
3917
|
+
const [measuredWidth, setMeasuredWidth] = (0, import_react21.useState)(null);
|
|
3918
|
+
(0, import_react21.useLayoutEffect)(() => {
|
|
3892
3919
|
const el = wrapperRef.current;
|
|
3893
3920
|
if (!el) return;
|
|
3894
3921
|
const ro = new ResizeObserver((entries) => {
|
|
@@ -3915,7 +3942,7 @@ var Chart = ({
|
|
|
3915
3942
|
);
|
|
3916
3943
|
}
|
|
3917
3944
|
const allKeys = seriesOrder.map((s) => s.key).filter(Boolean);
|
|
3918
|
-
const generateColors = (0,
|
|
3945
|
+
const generateColors = (0, import_react21.useCallback)(
|
|
3919
3946
|
(dataKeys) => {
|
|
3920
3947
|
const colorMap = {};
|
|
3921
3948
|
const allColors = generateAdditionalColors(colors2, dataKeys.length);
|
|
@@ -3926,25 +3953,25 @@ var Chart = ({
|
|
|
3926
3953
|
},
|
|
3927
3954
|
[colors2, mapperConfig]
|
|
3928
3955
|
);
|
|
3929
|
-
const finalColors = (0,
|
|
3956
|
+
const finalColors = (0, import_react21.useMemo)(
|
|
3930
3957
|
() => generateColors(allKeys),
|
|
3931
3958
|
[generateColors, allKeys]
|
|
3932
3959
|
);
|
|
3933
|
-
const adaptDataForTooltip = (0,
|
|
3960
|
+
const adaptDataForTooltip = (0, import_react21.useCallback)(
|
|
3934
3961
|
(universalData) => ({
|
|
3935
3962
|
...universalData,
|
|
3936
3963
|
name: String(universalData[xAxisConfig.dataKey] || "N/A")
|
|
3937
3964
|
}),
|
|
3938
3965
|
[xAxisConfig.dataKey]
|
|
3939
3966
|
);
|
|
3940
|
-
const activePeriods = (0,
|
|
3967
|
+
const activePeriods = (0, import_react21.useMemo)(
|
|
3941
3968
|
() => activeTooltips.map((t) => adaptDataForTooltip(t.data).name),
|
|
3942
3969
|
[activeTooltips, adaptDataForTooltip]
|
|
3943
3970
|
);
|
|
3944
|
-
(0,
|
|
3971
|
+
(0, import_react21.useEffect)(() => {
|
|
3945
3972
|
window.dispatchEvent(new Event("recountTooltips"));
|
|
3946
3973
|
}, [activeTooltips.length]);
|
|
3947
|
-
const toggleHighlight = (0,
|
|
3974
|
+
const toggleHighlight = (0, import_react21.useCallback)((key) => {
|
|
3948
3975
|
setHighlightedSeries((prev) => {
|
|
3949
3976
|
const next = new Set(prev);
|
|
3950
3977
|
if (next.has(key)) next.delete(key);
|
|
@@ -3952,7 +3979,7 @@ var Chart = ({
|
|
|
3952
3979
|
return next;
|
|
3953
3980
|
});
|
|
3954
3981
|
}, []);
|
|
3955
|
-
const maxDataValue = (0,
|
|
3982
|
+
const maxDataValue = (0, import_react21.useMemo)(() => {
|
|
3956
3983
|
let max = 0;
|
|
3957
3984
|
const numericKeys = allKeys;
|
|
3958
3985
|
for (const row of processedData) {
|
|
@@ -3964,7 +3991,7 @@ var Chart = ({
|
|
|
3964
3991
|
}
|
|
3965
3992
|
return max;
|
|
3966
3993
|
}, [processedData, allKeys]);
|
|
3967
|
-
const minDataValue = (0,
|
|
3994
|
+
const minDataValue = (0, import_react21.useMemo)(() => {
|
|
3968
3995
|
let min = 0;
|
|
3969
3996
|
const numericKeys = allKeys;
|
|
3970
3997
|
for (const row of processedData) {
|
|
@@ -3977,7 +4004,7 @@ var Chart = ({
|
|
|
3977
4004
|
}
|
|
3978
4005
|
return min;
|
|
3979
4006
|
}, [processedData, allKeys]);
|
|
3980
|
-
const niceMax = (0,
|
|
4007
|
+
const niceMax = (0, import_react21.useMemo)(() => {
|
|
3981
4008
|
let padding = 0.08;
|
|
3982
4009
|
if (maxDataValue > 1e6) padding = 0.05;
|
|
3983
4010
|
if (maxDataValue > 1e7) padding = 0.03;
|
|
@@ -3985,7 +4012,7 @@ var Chart = ({
|
|
|
3985
4012
|
const padded = maxDataValue * (1 + padding);
|
|
3986
4013
|
return niceCeil(padded);
|
|
3987
4014
|
}, [maxDataValue]);
|
|
3988
|
-
const computedWidth = (0,
|
|
4015
|
+
const computedWidth = (0, import_react21.useMemo)(() => {
|
|
3989
4016
|
if (typeof width === "number") return width;
|
|
3990
4017
|
const points = Math.max(1, processedData.length);
|
|
3991
4018
|
const barCount = series?.bar?.length ?? 0;
|
|
@@ -4014,7 +4041,7 @@ var Chart = ({
|
|
|
4014
4041
|
series?.area?.length,
|
|
4015
4042
|
niceMax
|
|
4016
4043
|
]);
|
|
4017
|
-
const toggleTooltip = (0,
|
|
4044
|
+
const toggleTooltip = (0, import_react21.useCallback)(
|
|
4018
4045
|
(tooltipId, data2, basePosition) => {
|
|
4019
4046
|
const existingIndex = activeTooltips.findIndex((t) => t.id === tooltipId);
|
|
4020
4047
|
if (existingIndex !== -1) {
|
|
@@ -4043,7 +4070,7 @@ var Chart = ({
|
|
|
4043
4070
|
},
|
|
4044
4071
|
[activeTooltips, maxTooltips]
|
|
4045
4072
|
);
|
|
4046
|
-
const handleChartClick = (0,
|
|
4073
|
+
const handleChartClick = (0, import_react21.useCallback)(
|
|
4047
4074
|
(e) => {
|
|
4048
4075
|
if (!enableDraggableTooltips) return;
|
|
4049
4076
|
const ev = e;
|
|
@@ -4061,7 +4088,7 @@ var Chart = ({
|
|
|
4061
4088
|
},
|
|
4062
4089
|
[enableDraggableTooltips, xAxisConfig.dataKey, toggleTooltip]
|
|
4063
4090
|
);
|
|
4064
|
-
const handleBarClick = (0,
|
|
4091
|
+
const handleBarClick = (0, import_react21.useCallback)(
|
|
4065
4092
|
(data2, index, event) => {
|
|
4066
4093
|
if (!enableDraggableTooltips) return;
|
|
4067
4094
|
event.stopPropagation();
|
|
@@ -4075,7 +4102,7 @@ var Chart = ({
|
|
|
4075
4102
|
},
|
|
4076
4103
|
[enableDraggableTooltips, xAxisConfig.dataKey, toggleTooltip]
|
|
4077
4104
|
);
|
|
4078
|
-
const handleSeriesClick = (0,
|
|
4105
|
+
const handleSeriesClick = (0, import_react21.useCallback)(
|
|
4079
4106
|
(...args) => {
|
|
4080
4107
|
if (args.length >= 3) {
|
|
4081
4108
|
const [data2, index, event] = args;
|
|
@@ -4086,7 +4113,7 @@ var Chart = ({
|
|
|
4086
4113
|
},
|
|
4087
4114
|
[handleBarClick, handleChartClick]
|
|
4088
4115
|
);
|
|
4089
|
-
const onTooltipPositionChange = (0,
|
|
4116
|
+
const onTooltipPositionChange = (0, import_react21.useCallback)(
|
|
4090
4117
|
(id, position) => {
|
|
4091
4118
|
setActiveTooltips(
|
|
4092
4119
|
(prev) => prev.map((t) => t.id === id ? { ...t, position } : t)
|
|
@@ -4094,11 +4121,11 @@ var Chart = ({
|
|
|
4094
4121
|
},
|
|
4095
4122
|
[]
|
|
4096
4123
|
);
|
|
4097
|
-
const titleClassName = (0,
|
|
4124
|
+
const titleClassName = (0, import_react21.useMemo)(
|
|
4098
4125
|
() => "text-xl font-semibold text-foreground mb-3",
|
|
4099
4126
|
[]
|
|
4100
4127
|
);
|
|
4101
|
-
const finalValueFormatter = (0,
|
|
4128
|
+
const finalValueFormatter = (0, import_react21.useMemo)(() => {
|
|
4102
4129
|
const nf = new Intl.NumberFormat("pt-BR", {
|
|
4103
4130
|
minimumFractionDigits: 2,
|
|
4104
4131
|
maximumFractionDigits: 2
|
|
@@ -4138,7 +4165,7 @@ var Chart = ({
|
|
|
4138
4165
|
};
|
|
4139
4166
|
return builtIn;
|
|
4140
4167
|
}, [valueFormatter2, formatBR]);
|
|
4141
|
-
const yTickFormatter = (0,
|
|
4168
|
+
const yTickFormatter = (0, import_react21.useMemo)(() => {
|
|
4142
4169
|
const nf = new Intl.NumberFormat("pt-BR", {
|
|
4143
4170
|
minimumFractionDigits: 2,
|
|
4144
4171
|
maximumFractionDigits: 2
|
|
@@ -4176,7 +4203,7 @@ var Chart = ({
|
|
|
4176
4203
|
const measuredInner = measuredWidth ? Math.max(0, measuredWidth - 32) : void 0;
|
|
4177
4204
|
const effectiveChartWidth = typeof width === "number" ? width : measuredInner ?? computedWidth;
|
|
4178
4205
|
const chartInnerWidth = effectiveChartWidth - finalChartLeftMargin - finalChartRightMargin;
|
|
4179
|
-
const openTooltipForPeriod = (0,
|
|
4206
|
+
const openTooltipForPeriod = (0, import_react21.useCallback)(
|
|
4180
4207
|
(periodName) => {
|
|
4181
4208
|
if (!enableDraggableTooltips) return;
|
|
4182
4209
|
const row = processedData.find((r) => String(r.name) === periodName);
|
|
@@ -4615,16 +4642,16 @@ var Chart = ({
|
|
|
4615
4642
|
var Chart_default = Chart;
|
|
4616
4643
|
|
|
4617
4644
|
// src/components/charts/BarChart.tsx
|
|
4618
|
-
var
|
|
4645
|
+
var import_react22 = require("react");
|
|
4619
4646
|
var import_recharts2 = require("recharts");
|
|
4620
4647
|
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
4621
|
-
var
|
|
4648
|
+
var DEFAULT_COLORS3 = ["#55af7d", "#8e68ff", "#2273e1"];
|
|
4622
4649
|
var BarChart = ({
|
|
4623
4650
|
data,
|
|
4624
4651
|
className,
|
|
4625
4652
|
height = 350,
|
|
4626
4653
|
width = 900,
|
|
4627
|
-
colors: colors2 =
|
|
4654
|
+
colors: colors2 = DEFAULT_COLORS3,
|
|
4628
4655
|
gridColor,
|
|
4629
4656
|
showGrid = true,
|
|
4630
4657
|
showTooltip = true,
|
|
@@ -4647,7 +4674,7 @@ var BarChart = ({
|
|
|
4647
4674
|
containerPaddingLeft,
|
|
4648
4675
|
16
|
|
4649
4676
|
);
|
|
4650
|
-
const smartConfig = (0,
|
|
4677
|
+
const smartConfig = (0, import_react22.useMemo)(() => {
|
|
4651
4678
|
const providedMapper = yAxis ?? mapper;
|
|
4652
4679
|
if (autoDetect === true || xAxis == null || providedMapper == null) {
|
|
4653
4680
|
const detectedXAxis = detectXAxis(data);
|
|
@@ -4697,14 +4724,14 @@ var BarChart = ({
|
|
|
4697
4724
|
return { xAxisConfig: xAxisConfig2, mapperConfig: mapperConfig2 };
|
|
4698
4725
|
}, [data, xAxis, mapper, yAxis, autoDetect, labelMap]);
|
|
4699
4726
|
const { xAxisConfig, mapperConfig } = smartConfig;
|
|
4700
|
-
const [activeTooltips, setActiveTooltips] = (0,
|
|
4701
|
-
const [isDragging, setIsDragging] = (0,
|
|
4702
|
-
const [dragOffset, setDragOffset] = (0,
|
|
4727
|
+
const [activeTooltips, setActiveTooltips] = (0, import_react22.useState)([]);
|
|
4728
|
+
const [isDragging, setIsDragging] = (0, import_react22.useState)(null);
|
|
4729
|
+
const [dragOffset, setDragOffset] = (0, import_react22.useState)({
|
|
4703
4730
|
x: 0,
|
|
4704
4731
|
y: 0
|
|
4705
4732
|
});
|
|
4706
|
-
const [globalTooltipCount, setGlobalTooltipCount] = (0,
|
|
4707
|
-
const [alignmentGuides, setAlignmentGuides] = (0,
|
|
4733
|
+
const [globalTooltipCount, setGlobalTooltipCount] = (0, import_react22.useState)(0);
|
|
4734
|
+
const [alignmentGuides, setAlignmentGuides] = (0, import_react22.useState)([]);
|
|
4708
4735
|
const processedData = data.map((item) => ({
|
|
4709
4736
|
...item,
|
|
4710
4737
|
name: String(item[xAxisConfig.dataKey] || "N/A")
|
|
@@ -4727,7 +4754,7 @@ var BarChart = ({
|
|
|
4727
4754
|
// Garantir que tem a propriedade 'name'
|
|
4728
4755
|
};
|
|
4729
4756
|
};
|
|
4730
|
-
const maxDataValue = (0,
|
|
4757
|
+
const maxDataValue = (0, import_react22.useMemo)(() => {
|
|
4731
4758
|
let max = 0;
|
|
4732
4759
|
const keys = Object.keys(mapperConfig);
|
|
4733
4760
|
for (const row of processedData) {
|
|
@@ -4740,7 +4767,7 @@ var BarChart = ({
|
|
|
4740
4767
|
}
|
|
4741
4768
|
return max;
|
|
4742
4769
|
}, [processedData, mapperConfig]);
|
|
4743
|
-
const niceMax = (0,
|
|
4770
|
+
const niceMax = (0, import_react22.useMemo)(() => {
|
|
4744
4771
|
let padding2 = 0.08;
|
|
4745
4772
|
if (maxDataValue > 1e6) padding2 = 0.05;
|
|
4746
4773
|
if (maxDataValue > 1e7) padding2 = 0.03;
|
|
@@ -4781,7 +4808,7 @@ var BarChart = ({
|
|
|
4781
4808
|
const GUIDE_THRESHOLD2 = 60;
|
|
4782
4809
|
const STRONG_SNAP_THRESHOLD2 = 35;
|
|
4783
4810
|
const PRECISION_SNAP_THRESHOLD2 = 8;
|
|
4784
|
-
const updateAlignmentGuides = (0,
|
|
4811
|
+
const updateAlignmentGuides = (0, import_react22.useCallback)(
|
|
4785
4812
|
(draggedTooltipId, currentPosition) => {
|
|
4786
4813
|
if (!isDragging) return;
|
|
4787
4814
|
const getAllTooltips = () => {
|
|
@@ -4845,7 +4872,7 @@ var BarChart = ({
|
|
|
4845
4872
|
},
|
|
4846
4873
|
[isDragging, activeTooltips]
|
|
4847
4874
|
);
|
|
4848
|
-
const snapToGuides = (0,
|
|
4875
|
+
const snapToGuides = (0, import_react22.useCallback)(
|
|
4849
4876
|
(position) => {
|
|
4850
4877
|
const snappedPosition = { ...position };
|
|
4851
4878
|
let hasSnapped = false;
|
|
@@ -4907,7 +4934,7 @@ var BarChart = ({
|
|
|
4907
4934
|
setIsDragging(tooltipId);
|
|
4908
4935
|
setDragOffset({ x: offsetX, y: offsetY });
|
|
4909
4936
|
};
|
|
4910
|
-
(0,
|
|
4937
|
+
(0, import_react22.useEffect)(() => {
|
|
4911
4938
|
let rafId;
|
|
4912
4939
|
let lastMousePosition = { x: 0, y: 0 };
|
|
4913
4940
|
const handleGlobalMouseMove = (e) => {
|
|
@@ -4965,7 +4992,7 @@ var BarChart = ({
|
|
|
4965
4992
|
updateAlignmentGuides,
|
|
4966
4993
|
snapToGuides
|
|
4967
4994
|
]);
|
|
4968
|
-
(0,
|
|
4995
|
+
(0, import_react22.useEffect)(() => {
|
|
4969
4996
|
const handleCloseAllTooltips = () => {
|
|
4970
4997
|
setActiveTooltips([]);
|
|
4971
4998
|
setGlobalTooltipCount(0);
|
|
@@ -4975,7 +5002,7 @@ var BarChart = ({
|
|
|
4975
5002
|
window.removeEventListener("closeAllTooltips", handleCloseAllTooltips);
|
|
4976
5003
|
};
|
|
4977
5004
|
}, []);
|
|
4978
|
-
(0,
|
|
5005
|
+
(0, import_react22.useEffect)(() => {
|
|
4979
5006
|
const handleTooltipCountRequest = () => {
|
|
4980
5007
|
window.dispatchEvent(
|
|
4981
5008
|
new CustomEvent("tooltipCountResponse", {
|
|
@@ -5014,7 +5041,7 @@ var BarChart = ({
|
|
|
5014
5041
|
);
|
|
5015
5042
|
};
|
|
5016
5043
|
}, [activeTooltips]);
|
|
5017
|
-
(0,
|
|
5044
|
+
(0, import_react22.useEffect)(() => {
|
|
5018
5045
|
if (isDragging) return;
|
|
5019
5046
|
let totalCount = 0;
|
|
5020
5047
|
const handleCountResponse = (event) => {
|
|
@@ -5280,7 +5307,7 @@ var BarChart = ({
|
|
|
5280
5307
|
var BarChart_default = BarChart;
|
|
5281
5308
|
|
|
5282
5309
|
// src/components/charts/LineChart.tsx
|
|
5283
|
-
var
|
|
5310
|
+
var import_react23 = require("react");
|
|
5284
5311
|
var import_recharts3 = require("recharts");
|
|
5285
5312
|
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
5286
5313
|
var defaultData = [
|
|
@@ -5288,13 +5315,13 @@ var defaultData = [
|
|
|
5288
5315
|
{ name: "B", value: 200 },
|
|
5289
5316
|
{ name: "C", value: 150 }
|
|
5290
5317
|
];
|
|
5291
|
-
var
|
|
5318
|
+
var DEFAULT_COLORS4 = ["#55af7d", "#8e68ff", "#2273e1"];
|
|
5292
5319
|
var CustomLineChart = ({
|
|
5293
5320
|
data = defaultData,
|
|
5294
5321
|
className,
|
|
5295
5322
|
height = 300,
|
|
5296
5323
|
width = "100%",
|
|
5297
|
-
colors: colors2 =
|
|
5324
|
+
colors: colors2 = DEFAULT_COLORS4,
|
|
5298
5325
|
gridColor,
|
|
5299
5326
|
showGrid = true,
|
|
5300
5327
|
showTooltip = true,
|
|
@@ -5314,14 +5341,14 @@ var CustomLineChart = ({
|
|
|
5314
5341
|
containerPaddingLeft,
|
|
5315
5342
|
16
|
|
5316
5343
|
);
|
|
5317
|
-
const [activeTooltips, setActiveTooltips] = (0,
|
|
5318
|
-
const [isDragging, setIsDragging] = (0,
|
|
5319
|
-
const [dragOffset, setDragOffset] = (0,
|
|
5344
|
+
const [activeTooltips, setActiveTooltips] = (0, import_react23.useState)([]);
|
|
5345
|
+
const [isDragging, setIsDragging] = (0, import_react23.useState)(null);
|
|
5346
|
+
const [dragOffset, setDragOffset] = (0, import_react23.useState)({
|
|
5320
5347
|
x: 0,
|
|
5321
5348
|
y: 0
|
|
5322
5349
|
});
|
|
5323
|
-
const [globalTooltipCount, setGlobalTooltipCount] = (0,
|
|
5324
|
-
const [alignmentGuides, setAlignmentGuides] = (0,
|
|
5350
|
+
const [globalTooltipCount, setGlobalTooltipCount] = (0, import_react23.useState)(0);
|
|
5351
|
+
const [alignmentGuides, setAlignmentGuides] = (0, import_react23.useState)([]);
|
|
5325
5352
|
const generateColors = (dataKeys2) => {
|
|
5326
5353
|
const colorMap = {};
|
|
5327
5354
|
const allColors = generateAdditionalColors(colors2, dataKeys2.length);
|
|
@@ -5330,12 +5357,12 @@ var CustomLineChart = ({
|
|
|
5330
5357
|
});
|
|
5331
5358
|
return colorMap;
|
|
5332
5359
|
};
|
|
5333
|
-
const dataKeys = (0,
|
|
5360
|
+
const dataKeys = (0, import_react23.useMemo)(
|
|
5334
5361
|
() => data.length > 0 ? Object.keys(data[0]).filter((key) => key !== "name") : [],
|
|
5335
5362
|
[data]
|
|
5336
5363
|
);
|
|
5337
5364
|
const finalColors = generateColors(dataKeys);
|
|
5338
|
-
const maxDataValue = (0,
|
|
5365
|
+
const maxDataValue = (0, import_react23.useMemo)(() => {
|
|
5339
5366
|
let max = 0;
|
|
5340
5367
|
for (const row of data) {
|
|
5341
5368
|
const r = row;
|
|
@@ -5347,7 +5374,7 @@ var CustomLineChart = ({
|
|
|
5347
5374
|
}
|
|
5348
5375
|
return max;
|
|
5349
5376
|
}, [data, dataKeys]);
|
|
5350
|
-
const niceMax = (0,
|
|
5377
|
+
const niceMax = (0, import_react23.useMemo)(() => {
|
|
5351
5378
|
let padding2 = 0.08;
|
|
5352
5379
|
if (maxDataValue > 1e6) padding2 = 0.05;
|
|
5353
5380
|
if (maxDataValue > 1e7) padding2 = 0.03;
|
|
@@ -5423,10 +5450,10 @@ var CustomLineChart = ({
|
|
|
5423
5450
|
const handleChartBackgroundClick = () => {
|
|
5424
5451
|
setActiveTooltips([]);
|
|
5425
5452
|
};
|
|
5426
|
-
const handleCloseAllTooltips = (0,
|
|
5453
|
+
const handleCloseAllTooltips = (0, import_react23.useCallback)(() => {
|
|
5427
5454
|
window.dispatchEvent(new CustomEvent("closeAllTooltips"));
|
|
5428
5455
|
}, []);
|
|
5429
|
-
const updateAlignmentGuides = (0,
|
|
5456
|
+
const updateAlignmentGuides = (0, import_react23.useCallback)(
|
|
5430
5457
|
(draggedTooltipId, draggedPosition) => {
|
|
5431
5458
|
const SNAP_THRESHOLD = 15;
|
|
5432
5459
|
const draggedTooltip = activeTooltips.find(
|
|
@@ -5507,7 +5534,7 @@ var CustomLineChart = ({
|
|
|
5507
5534
|
},
|
|
5508
5535
|
[activeTooltips]
|
|
5509
5536
|
);
|
|
5510
|
-
const snapToGuides = (0,
|
|
5537
|
+
const snapToGuides = (0, import_react23.useCallback)(
|
|
5511
5538
|
(position) => {
|
|
5512
5539
|
const SNAP_DISTANCE = 10;
|
|
5513
5540
|
const snappedPosition = { ...position };
|
|
@@ -5535,7 +5562,7 @@ var CustomLineChart = ({
|
|
|
5535
5562
|
setIsDragging(tooltipId);
|
|
5536
5563
|
setDragOffset({ x: offsetX, y: offsetY });
|
|
5537
5564
|
};
|
|
5538
|
-
(0,
|
|
5565
|
+
(0, import_react23.useEffect)(() => {
|
|
5539
5566
|
let rafId;
|
|
5540
5567
|
let lastMousePosition = { x: 0, y: 0 };
|
|
5541
5568
|
const handleGlobalMouseMove = (e) => {
|
|
@@ -5582,7 +5609,7 @@ var CustomLineChart = ({
|
|
|
5582
5609
|
updateAlignmentGuides,
|
|
5583
5610
|
snapToGuides
|
|
5584
5611
|
]);
|
|
5585
|
-
(0,
|
|
5612
|
+
(0, import_react23.useEffect)(() => {
|
|
5586
5613
|
const handleCloseAllTooltips2 = () => {
|
|
5587
5614
|
setActiveTooltips([]);
|
|
5588
5615
|
setGlobalTooltipCount(0);
|
|
@@ -5592,7 +5619,7 @@ var CustomLineChart = ({
|
|
|
5592
5619
|
window.removeEventListener("closeAllTooltips", handleCloseAllTooltips2);
|
|
5593
5620
|
};
|
|
5594
5621
|
}, []);
|
|
5595
|
-
(0,
|
|
5622
|
+
(0, import_react23.useEffect)(() => {
|
|
5596
5623
|
const handleTooltipCountRequest = () => {
|
|
5597
5624
|
window.dispatchEvent(
|
|
5598
5625
|
new CustomEvent("tooltipCountResponse", {
|
|
@@ -5636,7 +5663,7 @@ var CustomLineChart = ({
|
|
|
5636
5663
|
);
|
|
5637
5664
|
};
|
|
5638
5665
|
}, [activeTooltips]);
|
|
5639
|
-
(0,
|
|
5666
|
+
(0, import_react23.useEffect)(() => {
|
|
5640
5667
|
if (isDragging) return;
|
|
5641
5668
|
let totalCount = 0;
|
|
5642
5669
|
const handleCountResponse = (event) => {
|
|
@@ -5860,7 +5887,7 @@ var defaultData2 = [
|
|
|
5860
5887
|
{ name: "Suporte", value: 1e3 },
|
|
5861
5888
|
{ name: "Outros", value: 800 }
|
|
5862
5889
|
];
|
|
5863
|
-
var
|
|
5890
|
+
var DEFAULT_COLORS5 = [
|
|
5864
5891
|
"#55af7d",
|
|
5865
5892
|
// verde do projeto
|
|
5866
5893
|
"#8e68ff",
|
|
@@ -5918,7 +5945,7 @@ var CustomPieChart = ({
|
|
|
5918
5945
|
centerX = "50%",
|
|
5919
5946
|
centerY = "50%"
|
|
5920
5947
|
}) => {
|
|
5921
|
-
const finalColors = colors2 ||
|
|
5948
|
+
const finalColors = colors2 || DEFAULT_COLORS5;
|
|
5922
5949
|
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: cn("w-full rounded-lg bg-card p-4", className), children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_recharts4.ResponsiveContainer, { width, height, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_recharts4.PieChart, { children: [
|
|
5923
5950
|
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
5924
5951
|
import_recharts4.Pie,
|
|
@@ -5958,13 +5985,13 @@ var CustomPieChart = ({
|
|
|
5958
5985
|
var PieChart_default = CustomPieChart;
|
|
5959
5986
|
|
|
5960
5987
|
// src/components/charts/hooks/useChartHighlights.tsx
|
|
5961
|
-
var
|
|
5988
|
+
var import_react24 = require("react");
|
|
5962
5989
|
var useChartHighlights = () => {
|
|
5963
|
-
const [highlightedSeries, setHighlightedSeries] = (0,
|
|
5990
|
+
const [highlightedSeries, setHighlightedSeries] = (0, import_react24.useState)(
|
|
5964
5991
|
/* @__PURE__ */ new Set()
|
|
5965
5992
|
);
|
|
5966
|
-
const [showOnlyHighlighted, setShowOnlyHighlighted] = (0,
|
|
5967
|
-
const toggleHighlight = (0,
|
|
5993
|
+
const [showOnlyHighlighted, setShowOnlyHighlighted] = (0, import_react24.useState)(false);
|
|
5994
|
+
const toggleHighlight = (0, import_react24.useCallback)((key) => {
|
|
5968
5995
|
setHighlightedSeries((prev) => {
|
|
5969
5996
|
const next = new Set(prev);
|
|
5970
5997
|
if (next.has(key)) {
|
|
@@ -5975,17 +6002,17 @@ var useChartHighlights = () => {
|
|
|
5975
6002
|
return next;
|
|
5976
6003
|
});
|
|
5977
6004
|
}, []);
|
|
5978
|
-
const clearHighlights = (0,
|
|
6005
|
+
const clearHighlights = (0, import_react24.useCallback)(() => {
|
|
5979
6006
|
setHighlightedSeries(/* @__PURE__ */ new Set());
|
|
5980
6007
|
setShowOnlyHighlighted(false);
|
|
5981
6008
|
}, []);
|
|
5982
|
-
const isHighlighted = (0,
|
|
6009
|
+
const isHighlighted = (0, import_react24.useCallback)(
|
|
5983
6010
|
(key) => {
|
|
5984
6011
|
return highlightedSeries.has(key);
|
|
5985
6012
|
},
|
|
5986
6013
|
[highlightedSeries]
|
|
5987
6014
|
);
|
|
5988
|
-
const getSeriesStyle = (0,
|
|
6015
|
+
const getSeriesStyle = (0, import_react24.useCallback)(
|
|
5989
6016
|
(key) => {
|
|
5990
6017
|
const hasHighlights = highlightedSeries.size > 0;
|
|
5991
6018
|
const isSeriesHighlighted = highlightedSeries.has(key);
|
|
@@ -6123,7 +6150,7 @@ function Badge({
|
|
|
6123
6150
|
}
|
|
6124
6151
|
|
|
6125
6152
|
// src/components/ui/data/CalendarBase.tsx
|
|
6126
|
-
var
|
|
6153
|
+
var import_react25 = require("@phosphor-icons/react");
|
|
6127
6154
|
var import_react_day_picker = require("react-day-picker");
|
|
6128
6155
|
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
6129
6156
|
function CalendarBase({
|
|
@@ -6168,8 +6195,8 @@ function CalendarBase({
|
|
|
6168
6195
|
...classNames
|
|
6169
6196
|
},
|
|
6170
6197
|
components: {
|
|
6171
|
-
IconLeft: () => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
6172
|
-
IconRight: () => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
6198
|
+
IconLeft: () => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_react25.CaretLeftIcon, { className: "h-4 w-4" }),
|
|
6199
|
+
IconRight: () => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_react25.CaretRightIcon, { className: "h-4 w-4" })
|
|
6173
6200
|
},
|
|
6174
6201
|
...props
|
|
6175
6202
|
}
|
|
@@ -6247,7 +6274,7 @@ CardFooterBase.displayName = "CardFooter";
|
|
|
6247
6274
|
// src/components/ui/data/FileUploader.tsx
|
|
6248
6275
|
var React18 = __toESM(require("react"));
|
|
6249
6276
|
var import_framer_motion10 = require("framer-motion");
|
|
6250
|
-
var
|
|
6277
|
+
var import_react26 = require("@phosphor-icons/react");
|
|
6251
6278
|
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
6252
6279
|
var formatFileSize = (bytes) => {
|
|
6253
6280
|
if (bytes === 0) return "0 Bytes";
|
|
@@ -6263,38 +6290,38 @@ var getFileTypeIcon = (file) => {
|
|
|
6263
6290
|
const extension = getFileExtension(file.name).toLowerCase();
|
|
6264
6291
|
const mimeType = file.type.toLowerCase();
|
|
6265
6292
|
if (extension === "pdf" || mimeType === "application/pdf") {
|
|
6266
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6293
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.FilePdfIcon, { size: 20, className: "text-red-500" });
|
|
6267
6294
|
}
|
|
6268
6295
|
if (["doc", "docx"].includes(extension) || mimeType.includes("word")) {
|
|
6269
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6296
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.FileDocIcon, { size: 20, className: "text-blue-500" });
|
|
6270
6297
|
}
|
|
6271
6298
|
if (["xls", "xlsx"].includes(extension) || mimeType.includes("sheet")) {
|
|
6272
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6299
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.FileXlsIcon, { size: 20, className: "text-green-500" });
|
|
6273
6300
|
}
|
|
6274
6301
|
if (["ppt", "pptx"].includes(extension) || mimeType.includes("presentation")) {
|
|
6275
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6302
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.FilePptIcon, { size: 20, className: "text-orange-500" });
|
|
6276
6303
|
}
|
|
6277
6304
|
if (extension === "csv" || mimeType === "text/csv") {
|
|
6278
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6305
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.FileCsvIcon, { size: 20, className: "text-green-600" });
|
|
6279
6306
|
}
|
|
6280
6307
|
if (["txt", "md", "json", "xml", "js", "ts", "html", "css"].includes(
|
|
6281
6308
|
extension
|
|
6282
6309
|
) || mimeType.includes("text")) {
|
|
6283
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6310
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.FileTextIcon, { size: 20, className: "text-gray-500" });
|
|
6284
6311
|
}
|
|
6285
6312
|
if (mimeType.startsWith("image/")) {
|
|
6286
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6313
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.FileImageIcon, { size: 20, className: "text-purple-500" });
|
|
6287
6314
|
}
|
|
6288
6315
|
if (mimeType.startsWith("video/")) {
|
|
6289
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6316
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.FileVideoIcon, { size: 20, className: "text-pink-500" });
|
|
6290
6317
|
}
|
|
6291
6318
|
if (mimeType.startsWith("audio/")) {
|
|
6292
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6319
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.FileAudioIcon, { size: 20, className: "text-indigo-500" });
|
|
6293
6320
|
}
|
|
6294
6321
|
if (["zip", "rar", "7z", "tar", "gz"].includes(extension)) {
|
|
6295
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6322
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.FileZipIcon, { size: 20, className: "text-yellow-600" });
|
|
6296
6323
|
}
|
|
6297
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6324
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.FileIcon, { size: 20, className: "text-muted-foreground" });
|
|
6298
6325
|
};
|
|
6299
6326
|
var createImagePreview = (file) => {
|
|
6300
6327
|
return new Promise((resolve) => {
|
|
@@ -6524,7 +6551,7 @@ var FileUploader = React18.forwardRef(
|
|
|
6524
6551
|
color: isDragging ? `hsl(var(--primary))` : `hsl(var(--muted-foreground))`
|
|
6525
6552
|
},
|
|
6526
6553
|
transition: { duration: 0.3 },
|
|
6527
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6554
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.CloudArrowUpIcon, { size: 64 })
|
|
6528
6555
|
}
|
|
6529
6556
|
)
|
|
6530
6557
|
}
|
|
@@ -6566,7 +6593,7 @@ var FileUploader = React18.forwardRef(
|
|
|
6566
6593
|
),
|
|
6567
6594
|
transition: { duration: 0.3 },
|
|
6568
6595
|
children: [
|
|
6569
|
-
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "h-4 w-4 text-primary flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6596
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "h-4 w-4 text-primary flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.CheckIcon, { size: 16, className: "text-emerald-500" }) }),
|
|
6570
6597
|
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
6571
6598
|
import_framer_motion10.motion.span,
|
|
6572
6599
|
{
|
|
@@ -6668,7 +6695,7 @@ var FileUploader = React18.forwardRef(
|
|
|
6668
6695
|
handleRemoveFile(file.id);
|
|
6669
6696
|
},
|
|
6670
6697
|
className: "",
|
|
6671
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
6698
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_react26.XIcon, { size: 12 })
|
|
6672
6699
|
}
|
|
6673
6700
|
)
|
|
6674
6701
|
]
|
|
@@ -6792,7 +6819,7 @@ AlertDialogCancelBase.displayName = AlertDialogPrimitive.Cancel.displayName;
|
|
|
6792
6819
|
|
|
6793
6820
|
// src/components/ui/feedback/DestructiveDialog.tsx
|
|
6794
6821
|
var React20 = __toESM(require("react"));
|
|
6795
|
-
var
|
|
6822
|
+
var import_react27 = require("@phosphor-icons/react");
|
|
6796
6823
|
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
6797
6824
|
var DestructiveDialog = ({
|
|
6798
6825
|
title,
|
|
@@ -6812,7 +6839,7 @@ var DestructiveDialog = ({
|
|
|
6812
6839
|
className: cn("border border-destructive bg-background", className),
|
|
6813
6840
|
children: [
|
|
6814
6841
|
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex items-start gap-4", children: [
|
|
6815
|
-
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex items-center justify-center w-10 h-10 rounded-full ring-1 ring-destructive/30", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
6842
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "flex items-center justify-center w-10 h-10 rounded-full ring-1 ring-destructive/30", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_react27.XCircleIcon, { className: "w-6 h-6 text-destructive" }) }),
|
|
6816
6843
|
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex-1", children: [
|
|
6817
6844
|
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(AlertDialogTitleBase, { className: "text-lg sm:text-xl font-semibold text-destructive", children: title }),
|
|
6818
6845
|
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(AlertDialogDescriptionBase, { className: "mt-2 text-sm text-muted-foreground", children: description })
|
|
@@ -7021,7 +7048,7 @@ LoadingBase.displayName = "LoadingBase";
|
|
|
7021
7048
|
// src/components/ui/feedback/ModalBase.tsx
|
|
7022
7049
|
var React22 = __toESM(require("react"));
|
|
7023
7050
|
var DialogPrimitive2 = __toESM(require("@radix-ui/react-dialog"));
|
|
7024
|
-
var
|
|
7051
|
+
var import_react28 = require("@phosphor-icons/react");
|
|
7025
7052
|
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
7026
7053
|
var ModalBase = DialogPrimitive2.Root;
|
|
7027
7054
|
var ModalTriggerBase = DialogPrimitive2.Trigger;
|
|
@@ -7094,7 +7121,7 @@ var ModalContentBase = React22.forwardRef(
|
|
|
7094
7121
|
children: [
|
|
7095
7122
|
children,
|
|
7096
7123
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(DialogPrimitive2.Close, { className: "absolute right-3 top-3 sm:right-4 sm:top-4 rounded-md bg-muted/10 p-1.5 opacity-80 hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none z-10 hover:bg-muted/20 transition-colors", children: [
|
|
7097
|
-
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
7124
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_react28.XIcon, { className: "h-5 w-5 sm:h-4 sm:w-4 text-foreground" }),
|
|
7098
7125
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "sr-only", children: "Close" })
|
|
7099
7126
|
] })
|
|
7100
7127
|
]
|
|
@@ -7418,7 +7445,7 @@ function SkeletonBase({
|
|
|
7418
7445
|
}
|
|
7419
7446
|
|
|
7420
7447
|
// src/components/ui/feedback/SonnerBase.tsx
|
|
7421
|
-
var
|
|
7448
|
+
var import_react29 = require("@phosphor-icons/react");
|
|
7422
7449
|
var import_sonner2 = require("sonner");
|
|
7423
7450
|
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
7424
7451
|
var iconBaseClass = "w-5 h-auto";
|
|
@@ -7470,23 +7497,23 @@ var Toaster = ({ testId, ...props }) => {
|
|
|
7470
7497
|
};
|
|
7471
7498
|
var toast2 = {
|
|
7472
7499
|
success: (message) => import_sonner2.toast.success(message, {
|
|
7473
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
7500
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react29.CheckCircleIcon, { className: `${iconBaseClass} text-green-600`, weight: "fill" }),
|
|
7474
7501
|
className: "sonner-success"
|
|
7475
7502
|
}),
|
|
7476
7503
|
error: (message) => import_sonner2.toast.error(message, {
|
|
7477
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
7504
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react29.XCircleIcon, { className: `${iconBaseClass} text-red-600`, weight: "fill" }),
|
|
7478
7505
|
className: "sonner-error"
|
|
7479
7506
|
}),
|
|
7480
7507
|
warning: (message) => import_sonner2.toast.warning(message, {
|
|
7481
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
7508
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react29.WarningIcon, { className: `${iconBaseClass} text-yellow-600`, weight: "fill" }),
|
|
7482
7509
|
className: "sonner-WarningIcon"
|
|
7483
7510
|
}),
|
|
7484
7511
|
info: (message) => import_sonner2.toast.info(message, {
|
|
7485
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
7512
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react29.InfoIcon, { className: `${iconBaseClass} text-blue-600`, weight: "fill" }),
|
|
7486
7513
|
className: "sonner-InfoIcon"
|
|
7487
7514
|
}),
|
|
7488
7515
|
loading: (message) => (0, import_sonner2.toast)(message, {
|
|
7489
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
7516
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react29.SpinnerIcon, { className: `${iconBaseClass} animate-spin text-neutral-500`, weight: "fill" }),
|
|
7490
7517
|
className: "sonner-loading"
|
|
7491
7518
|
})
|
|
7492
7519
|
};
|
|
@@ -7494,7 +7521,7 @@ var toast2 = {
|
|
|
7494
7521
|
// src/components/ui/form/CheckBoxBase.tsx
|
|
7495
7522
|
var React24 = __toESM(require("react"));
|
|
7496
7523
|
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"));
|
|
7497
|
-
var
|
|
7524
|
+
var import_react30 = require("@phosphor-icons/react");
|
|
7498
7525
|
var import_framer_motion11 = require("framer-motion");
|
|
7499
7526
|
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
7500
7527
|
var CheckboxBase = React24.forwardRef(({ className, testid: dataTestId = "checkbox-base", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
@@ -7502,20 +7529,35 @@ var CheckboxBase = React24.forwardRef(({ className, testid: dataTestId = "checkb
|
|
|
7502
7529
|
{
|
|
7503
7530
|
ref,
|
|
7504
7531
|
className: cn(
|
|
7505
|
-
"peer h-4 w-4 shrink-0 rounded-md border border-primary shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground transition-colors",
|
|
7532
|
+
"peer h-4 w-4 shrink-0 rounded-md border border-primary shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground transition-colors",
|
|
7506
7533
|
className
|
|
7507
7534
|
),
|
|
7508
7535
|
"data-testid": dataTestId,
|
|
7509
7536
|
...props,
|
|
7510
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(CheckboxPrimitive.Indicator, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime44.
|
|
7537
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(CheckboxPrimitive.Indicator, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
7511
7538
|
import_framer_motion11.motion.div,
|
|
7512
7539
|
{
|
|
7513
7540
|
initial: { scale: 0, opacity: 0, rotate: -90 },
|
|
7514
7541
|
animate: { scale: 1, opacity: 1, rotate: 0 },
|
|
7515
7542
|
exit: { scale: 0, opacity: 0, rotate: 90 },
|
|
7516
7543
|
transition: { type: "spring", stiffness: 500, damping: 30 },
|
|
7517
|
-
className: "flex items-center justify-center text-current",
|
|
7518
|
-
children:
|
|
7544
|
+
className: "flex items-center justify-center text-current group",
|
|
7545
|
+
children: [
|
|
7546
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7547
|
+
import_react30.CheckIcon,
|
|
7548
|
+
{
|
|
7549
|
+
className: "h-4 w-4 hidden group-data-[state=checked]:block",
|
|
7550
|
+
weight: "bold"
|
|
7551
|
+
}
|
|
7552
|
+
),
|
|
7553
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
7554
|
+
import_react30.MinusIcon,
|
|
7555
|
+
{
|
|
7556
|
+
className: "h-4 w-4 hidden group-data-[state=indeterminate]:block",
|
|
7557
|
+
weight: "bold"
|
|
7558
|
+
}
|
|
7559
|
+
)
|
|
7560
|
+
]
|
|
7519
7561
|
}
|
|
7520
7562
|
) })
|
|
7521
7563
|
}
|
|
@@ -7525,7 +7567,7 @@ CheckboxBase.displayName = CheckboxPrimitive.Root.displayName;
|
|
|
7525
7567
|
// src/components/ui/form/CollapsibleBase.tsx
|
|
7526
7568
|
var React25 = __toESM(require("react"));
|
|
7527
7569
|
var CollapsiblePrimitive = __toESM(require("@radix-ui/react-collapsible"));
|
|
7528
|
-
var
|
|
7570
|
+
var import_react31 = require("@phosphor-icons/react");
|
|
7529
7571
|
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
7530
7572
|
var CollapsibleBase = React25.forwardRef(({ ...props }, ref) => {
|
|
7531
7573
|
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(CollapsiblePrimitive.Root, { ref, "data-slot": "collapsible", ...props });
|
|
@@ -7547,7 +7589,7 @@ var CollapsibleTriggerBase = React25.forwardRef(({ className, children, leftIcon
|
|
|
7547
7589
|
leftIcon && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "flex-shrink-0 [&>svg]:size-4", children: leftIcon }),
|
|
7548
7590
|
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { children })
|
|
7549
7591
|
] }),
|
|
7550
|
-
showCaret && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "caret-icon flex-shrink-0 transition-transform duration-500 ease-[cubic-bezier(0.4,0,0.2,1)]", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
7592
|
+
showCaret && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "caret-icon flex-shrink-0 transition-transform duration-500 ease-[cubic-bezier(0.4,0,0.2,1)]", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_react31.CaretUpDownIcon, { className: "h-4 w-4" }) })
|
|
7551
7593
|
]
|
|
7552
7594
|
}
|
|
7553
7595
|
);
|
|
@@ -7628,7 +7670,7 @@ HoverCardContentBase.displayName = HoverCardPrimitive.Content.displayName;
|
|
|
7628
7670
|
// src/components/ui/form/Input-OTP-Base.tsx
|
|
7629
7671
|
var React27 = __toESM(require("react"));
|
|
7630
7672
|
var import_input_otp = require("input-otp");
|
|
7631
|
-
var
|
|
7673
|
+
var import_react32 = require("@phosphor-icons/react");
|
|
7632
7674
|
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
7633
7675
|
function InputOTPBase({
|
|
7634
7676
|
className,
|
|
@@ -7683,7 +7725,7 @@ function InputOTPSlotBase({
|
|
|
7683
7725
|
);
|
|
7684
7726
|
}
|
|
7685
7727
|
function InputOTPSeparatorBase({ ...props }) {
|
|
7686
|
-
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
7728
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react32.MinusIcon, {}) });
|
|
7687
7729
|
}
|
|
7688
7730
|
|
|
7689
7731
|
// src/components/ui/form/SliderBase.tsx
|
|
@@ -7771,7 +7813,7 @@ SlideBase.displayName = "SlideBase";
|
|
|
7771
7813
|
|
|
7772
7814
|
// src/components/ui/form/SmallButtons.tsx
|
|
7773
7815
|
var React29 = __toESM(require("react"));
|
|
7774
|
-
var
|
|
7816
|
+
var import_react33 = require("@phosphor-icons/react");
|
|
7775
7817
|
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
7776
7818
|
var EditButton = React29.forwardRef(
|
|
7777
7819
|
({
|
|
@@ -7802,7 +7844,7 @@ var EditButton = React29.forwardRef(
|
|
|
7802
7844
|
),
|
|
7803
7845
|
...props,
|
|
7804
7846
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
7805
|
-
|
|
7847
|
+
import_react33.PencilSimpleIcon,
|
|
7806
7848
|
{
|
|
7807
7849
|
size: iconSize,
|
|
7808
7850
|
color: iconColor,
|
|
@@ -7842,7 +7884,7 @@ var ChangeButton = React29.forwardRef(
|
|
|
7842
7884
|
),
|
|
7843
7885
|
...props,
|
|
7844
7886
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
7845
|
-
|
|
7887
|
+
import_react33.ArrowsLeftRightIcon,
|
|
7846
7888
|
{
|
|
7847
7889
|
size: iconSize,
|
|
7848
7890
|
color: iconColor,
|
|
@@ -7882,7 +7924,7 @@ var SaveButton = React29.forwardRef(
|
|
|
7882
7924
|
),
|
|
7883
7925
|
...props,
|
|
7884
7926
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
7885
|
-
|
|
7927
|
+
import_react33.FloppyDiskIcon,
|
|
7886
7928
|
{
|
|
7887
7929
|
size: iconSize,
|
|
7888
7930
|
color: iconColor,
|
|
@@ -7922,7 +7964,7 @@ var AddButton = React29.forwardRef(
|
|
|
7922
7964
|
),
|
|
7923
7965
|
...props,
|
|
7924
7966
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
7925
|
-
|
|
7967
|
+
import_react33.PlusIcon,
|
|
7926
7968
|
{
|
|
7927
7969
|
size: iconSize,
|
|
7928
7970
|
color: iconColor,
|
|
@@ -7962,7 +8004,7 @@ var CloseButton = React29.forwardRef(
|
|
|
7962
8004
|
),
|
|
7963
8005
|
...props,
|
|
7964
8006
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
7965
|
-
|
|
8007
|
+
import_react33.XIcon,
|
|
7966
8008
|
{
|
|
7967
8009
|
size: iconSize,
|
|
7968
8010
|
color: iconColor,
|
|
@@ -7994,7 +8036,7 @@ var DownloadButton = ({
|
|
|
7994
8036
|
),
|
|
7995
8037
|
...props,
|
|
7996
8038
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
7997
|
-
|
|
8039
|
+
import_react33.DownloadSimpleIcon,
|
|
7998
8040
|
{
|
|
7999
8041
|
size: 18,
|
|
8000
8042
|
className: "transition-transform duration-300 group-hover:translate-y-0.5"
|
|
@@ -8023,7 +8065,7 @@ var UploadButton = ({
|
|
|
8023
8065
|
),
|
|
8024
8066
|
...props,
|
|
8025
8067
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8026
|
-
|
|
8068
|
+
import_react33.UploadSimpleIcon,
|
|
8027
8069
|
{
|
|
8028
8070
|
size: 18,
|
|
8029
8071
|
className: "transition-transform duration-300 group-hover:-translate-y-0.5"
|
|
@@ -8052,7 +8094,7 @@ var CopyButton = ({
|
|
|
8052
8094
|
),
|
|
8053
8095
|
...props,
|
|
8054
8096
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8055
|
-
|
|
8097
|
+
import_react33.CopyIcon,
|
|
8056
8098
|
{
|
|
8057
8099
|
size: 18,
|
|
8058
8100
|
className: "transition-transform duration-200 group-hover:scale-110"
|
|
@@ -8081,7 +8123,7 @@ var RefreshButton = ({
|
|
|
8081
8123
|
),
|
|
8082
8124
|
...props,
|
|
8083
8125
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8084
|
-
|
|
8126
|
+
import_react33.ArrowClockwiseIcon,
|
|
8085
8127
|
{
|
|
8086
8128
|
size: 18,
|
|
8087
8129
|
className: "transition-transform duration-500 group-hover:rotate-180"
|
|
@@ -8110,7 +8152,7 @@ var SearchButton = ({
|
|
|
8110
8152
|
),
|
|
8111
8153
|
...props,
|
|
8112
8154
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8113
|
-
|
|
8155
|
+
import_react33.MagnifyingGlassIcon,
|
|
8114
8156
|
{
|
|
8115
8157
|
size: 18,
|
|
8116
8158
|
className: "transition-transform duration-200 group-hover:scale-110 group-hover:-rotate-12"
|
|
@@ -8139,7 +8181,7 @@ var BackButton = ({
|
|
|
8139
8181
|
),
|
|
8140
8182
|
...props,
|
|
8141
8183
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8142
|
-
|
|
8184
|
+
import_react33.ArrowLeftIcon,
|
|
8143
8185
|
{
|
|
8144
8186
|
size: 18,
|
|
8145
8187
|
className: "transition-transform duration-300 group-hover:-translate-x-1"
|
|
@@ -8168,7 +8210,7 @@ var SettingsButton = ({
|
|
|
8168
8210
|
),
|
|
8169
8211
|
...props,
|
|
8170
8212
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8171
|
-
|
|
8213
|
+
import_react33.GearIcon,
|
|
8172
8214
|
{
|
|
8173
8215
|
size: 18,
|
|
8174
8216
|
className: "transition-transform duration-500 group-hover:rotate-90"
|
|
@@ -8197,7 +8239,7 @@ var NotificationButton = ({
|
|
|
8197
8239
|
),
|
|
8198
8240
|
...props,
|
|
8199
8241
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8200
|
-
|
|
8242
|
+
import_react33.BellIcon,
|
|
8201
8243
|
{
|
|
8202
8244
|
size: 18,
|
|
8203
8245
|
className: "transition-transform duration-300 group-hover:scale-110 group-hover:-rotate-12"
|
|
@@ -8226,7 +8268,7 @@ var MoreButton = ({
|
|
|
8226
8268
|
),
|
|
8227
8269
|
...props,
|
|
8228
8270
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8229
|
-
|
|
8271
|
+
import_react33.DotsThreeIcon,
|
|
8230
8272
|
{
|
|
8231
8273
|
size: 18,
|
|
8232
8274
|
className: "transition-transform duration-200 group-hover:scale-110"
|
|
@@ -8255,7 +8297,7 @@ var CheckButton = ({
|
|
|
8255
8297
|
),
|
|
8256
8298
|
...props,
|
|
8257
8299
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8258
|
-
|
|
8300
|
+
import_react33.CheckIcon,
|
|
8259
8301
|
{
|
|
8260
8302
|
size: 18,
|
|
8261
8303
|
className: "transition-transform duration-200 group-hover:scale-110"
|
|
@@ -8291,7 +8333,7 @@ var FilterButton = ({
|
|
|
8291
8333
|
),
|
|
8292
8334
|
...props,
|
|
8293
8335
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8294
|
-
|
|
8336
|
+
import_react33.FunnelIcon,
|
|
8295
8337
|
{
|
|
8296
8338
|
size: iconSize,
|
|
8297
8339
|
color: iconColor,
|
|
@@ -8330,7 +8372,7 @@ var LikeButton = ({
|
|
|
8330
8372
|
),
|
|
8331
8373
|
...props,
|
|
8332
8374
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8333
|
-
|
|
8375
|
+
import_react33.HeartIcon,
|
|
8334
8376
|
{
|
|
8335
8377
|
size: iconSize,
|
|
8336
8378
|
color: iconColor,
|
|
@@ -8369,7 +8411,7 @@ var FavoriteButton = ({
|
|
|
8369
8411
|
),
|
|
8370
8412
|
...props,
|
|
8371
8413
|
children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8372
|
-
|
|
8414
|
+
import_react33.StarIcon,
|
|
8373
8415
|
{
|
|
8374
8416
|
size: iconSize,
|
|
8375
8417
|
color: iconColor,
|
|
@@ -8407,14 +8449,14 @@ var VisibilityButton = ({
|
|
|
8407
8449
|
),
|
|
8408
8450
|
...props,
|
|
8409
8451
|
children: isVisible ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8410
|
-
|
|
8452
|
+
import_react33.EyeIcon,
|
|
8411
8453
|
{
|
|
8412
8454
|
size: iconSize,
|
|
8413
8455
|
color: iconColor,
|
|
8414
8456
|
className: "transition-opacity duration-200"
|
|
8415
8457
|
}
|
|
8416
8458
|
) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8417
|
-
|
|
8459
|
+
import_react33.EyeSlashIcon,
|
|
8418
8460
|
{
|
|
8419
8461
|
size: iconSize,
|
|
8420
8462
|
color: iconColor,
|
|
@@ -8454,14 +8496,14 @@ var LockButton = ({
|
|
|
8454
8496
|
),
|
|
8455
8497
|
...props,
|
|
8456
8498
|
children: isLocked ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8457
|
-
|
|
8499
|
+
import_react33.LockIcon,
|
|
8458
8500
|
{
|
|
8459
8501
|
size: iconSize,
|
|
8460
8502
|
color: iconColor,
|
|
8461
8503
|
className: "transition-all duration-200 group-hover:scale-110"
|
|
8462
8504
|
}
|
|
8463
8505
|
) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
8464
|
-
|
|
8506
|
+
import_react33.LockOpenIcon,
|
|
8465
8507
|
{
|
|
8466
8508
|
size: iconSize,
|
|
8467
8509
|
color: iconColor,
|
|
@@ -8507,7 +8549,7 @@ SwitchBase.displayName = SwitchPrimitives.Root.displayName;
|
|
|
8507
8549
|
// src/components/ui/form/TextAreaBase.tsx
|
|
8508
8550
|
var React31 = __toESM(require("react"));
|
|
8509
8551
|
var import_framer_motion12 = require("framer-motion");
|
|
8510
|
-
var
|
|
8552
|
+
var import_react34 = require("@phosphor-icons/react");
|
|
8511
8553
|
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
8512
8554
|
var TextAreaBase = React31.forwardRef(
|
|
8513
8555
|
({ className, clearable = false, onClear, ...props }, ref) => {
|
|
@@ -8604,7 +8646,7 @@ var TextAreaBase = React31.forwardRef(
|
|
|
8604
8646
|
),
|
|
8605
8647
|
disabled: props.disabled,
|
|
8606
8648
|
"aria-label": "Limpar texto",
|
|
8607
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
8649
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react34.TrashIcon, { size: 16, weight: "regular" })
|
|
8608
8650
|
}
|
|
8609
8651
|
) }),
|
|
8610
8652
|
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
@@ -8682,7 +8724,7 @@ TextAreaBase.displayName = "TextAreaBase";
|
|
|
8682
8724
|
// src/components/ui/layout/CarouselBase.tsx
|
|
8683
8725
|
var React32 = __toESM(require("react"));
|
|
8684
8726
|
var import_embla_carousel_react = __toESM(require("embla-carousel-react"));
|
|
8685
|
-
var
|
|
8727
|
+
var import_react35 = require("@phosphor-icons/react");
|
|
8686
8728
|
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
8687
8729
|
var CarouselContext = React32.createContext(null);
|
|
8688
8730
|
function useCarousel() {
|
|
@@ -8843,7 +8885,7 @@ function CarouselPreviousBase({
|
|
|
8843
8885
|
onClick: scrollPrev,
|
|
8844
8886
|
...props,
|
|
8845
8887
|
children: [
|
|
8846
|
-
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
8888
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react35.ArrowLeftIcon, {}),
|
|
8847
8889
|
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "sr-only", children: "Previous slide" })
|
|
8848
8890
|
]
|
|
8849
8891
|
}
|
|
@@ -8873,7 +8915,7 @@ function CarouselNextBase({
|
|
|
8873
8915
|
onClick: scrollNext,
|
|
8874
8916
|
...props,
|
|
8875
8917
|
children: [
|
|
8876
|
-
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
8918
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react35.ArrowRightIcon, {}),
|
|
8877
8919
|
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "sr-only", children: "Next slide" })
|
|
8878
8920
|
]
|
|
8879
8921
|
}
|
|
@@ -9056,7 +9098,7 @@ TabsContentBase.displayName = TabsPrimitive.Content.displayName;
|
|
|
9056
9098
|
|
|
9057
9099
|
// src/components/ui/navigation/BreadcrumbBase.tsx
|
|
9058
9100
|
var import_react_slot4 = require("@radix-ui/react-slot");
|
|
9059
|
-
var
|
|
9101
|
+
var import_react36 = require("@phosphor-icons/react");
|
|
9060
9102
|
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
9061
9103
|
function BreadcrumbBase({ ...props }) {
|
|
9062
9104
|
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
|
|
@@ -9125,7 +9167,7 @@ function BreadcrumbSeparatorBase({
|
|
|
9125
9167
|
"aria-hidden": "true",
|
|
9126
9168
|
className: cn("[&>svg]:size-3.5", className),
|
|
9127
9169
|
...props,
|
|
9128
|
-
children: children ?? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
9170
|
+
children: children ?? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react36.CaretRightIcon, {})
|
|
9129
9171
|
}
|
|
9130
9172
|
);
|
|
9131
9173
|
}
|
|
@@ -9142,7 +9184,7 @@ function BreadcrumbEllipsisBase({
|
|
|
9142
9184
|
className: cn("flex size-9 items-center justify-center", className),
|
|
9143
9185
|
...props,
|
|
9144
9186
|
children: [
|
|
9145
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
9187
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react36.DotsThreeIcon, { className: "size-4" }),
|
|
9146
9188
|
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "sr-only", children: "More" })
|
|
9147
9189
|
]
|
|
9148
9190
|
}
|
|
@@ -9151,7 +9193,7 @@ function BreadcrumbEllipsisBase({
|
|
|
9151
9193
|
|
|
9152
9194
|
// src/components/ui/navigation/NavigationMenuBase.tsx
|
|
9153
9195
|
var NavigationMenuPrimitive = __toESM(require("@radix-ui/react-navigation-menu"));
|
|
9154
|
-
var
|
|
9196
|
+
var import_react37 = require("@phosphor-icons/react");
|
|
9155
9197
|
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
9156
9198
|
function NavigationMenuBase({
|
|
9157
9199
|
className,
|
|
@@ -9219,7 +9261,7 @@ function NavigationMenuTriggerBase({
|
|
|
9219
9261
|
children: [
|
|
9220
9262
|
children,
|
|
9221
9263
|
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
9222
|
-
|
|
9264
|
+
import_react37.CaretDownIcon,
|
|
9223
9265
|
{
|
|
9224
9266
|
className: "relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
|
|
9225
9267
|
"aria-hidden": "true"
|
|
@@ -9322,7 +9364,7 @@ function useIsMobile() {
|
|
|
9322
9364
|
var React37 = __toESM(require("react"));
|
|
9323
9365
|
var SheetPrimitive = __toESM(require("@radix-ui/react-dialog"));
|
|
9324
9366
|
var import_class_variance_authority4 = require("class-variance-authority");
|
|
9325
|
-
var
|
|
9367
|
+
var import_react38 = require("@phosphor-icons/react");
|
|
9326
9368
|
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
9327
9369
|
var SheetBase = SheetPrimitive.Root;
|
|
9328
9370
|
var SheetTriggerBase = SheetPrimitive.Trigger;
|
|
@@ -9366,7 +9408,7 @@ var SheetContentBase = React37.forwardRef(({ side = "right", className, children
|
|
|
9366
9408
|
...props,
|
|
9367
9409
|
children: [
|
|
9368
9410
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
|
|
9369
|
-
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
9411
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react38.XIcon, { className: "h-4 w-4" }),
|
|
9370
9412
|
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "sr-only", children: "Close" })
|
|
9371
9413
|
] }),
|
|
9372
9414
|
children
|
|
@@ -9423,7 +9465,7 @@ var SheetDescriptionBase = React37.forwardRef(({ className, ...props }, ref) =>
|
|
|
9423
9465
|
SheetDescriptionBase.displayName = SheetPrimitive.Description.displayName;
|
|
9424
9466
|
|
|
9425
9467
|
// src/components/ui/navigation/SidebarBase.tsx
|
|
9426
|
-
var
|
|
9468
|
+
var import_react39 = require("@phosphor-icons/react");
|
|
9427
9469
|
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
9428
9470
|
var SIDEBAR_COOKIE_NAME = "sidebar:state";
|
|
9429
9471
|
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
@@ -9617,7 +9659,7 @@ var SidebarTriggerBase = React38.forwardRef(({ className, onClick, ...props }, r
|
|
|
9617
9659
|
...props,
|
|
9618
9660
|
children: [
|
|
9619
9661
|
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "sr-only", children: "Toggle SidebarBase" }),
|
|
9620
|
-
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
9662
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react39.SidebarSimpleIcon, {})
|
|
9621
9663
|
]
|
|
9622
9664
|
}
|
|
9623
9665
|
) });
|
|
@@ -10111,11 +10153,11 @@ function DrawerDescriptionBase({
|
|
|
10111
10153
|
}
|
|
10112
10154
|
|
|
10113
10155
|
// src/hooks/use-universal-tooltip.tsx
|
|
10114
|
-
var
|
|
10156
|
+
var import_react40 = require("react");
|
|
10115
10157
|
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
10116
|
-
var UniversalTooltipContext = (0,
|
|
10158
|
+
var UniversalTooltipContext = (0, import_react40.createContext)(null);
|
|
10117
10159
|
var useUniversalTooltip = () => {
|
|
10118
|
-
const context = (0,
|
|
10160
|
+
const context = (0, import_react40.useContext)(UniversalTooltipContext);
|
|
10119
10161
|
if (!context) {
|
|
10120
10162
|
throw new Error("useUniversalTooltip deve ser usado dentro de UniversalTooltipProvider");
|
|
10121
10163
|
}
|
|
@@ -10123,7 +10165,7 @@ var useUniversalTooltip = () => {
|
|
|
10123
10165
|
};
|
|
10124
10166
|
var useTooltip = () => {
|
|
10125
10167
|
const { addTooltip, removeTooltip, startDrag } = useUniversalTooltip();
|
|
10126
|
-
const createTooltip = (0,
|
|
10168
|
+
const createTooltip = (0, import_react40.useCallback)((element, content, options) => {
|
|
10127
10169
|
const rect = element.getBoundingClientRect();
|
|
10128
10170
|
let position;
|
|
10129
10171
|
switch (options?.position || "auto") {
|
|
@@ -10153,7 +10195,7 @@ var useTooltip = () => {
|
|
|
10153
10195
|
metadata: options?.metadata
|
|
10154
10196
|
});
|
|
10155
10197
|
}, [addTooltip]);
|
|
10156
|
-
const handleElementMouseDown = (0,
|
|
10198
|
+
const handleElementMouseDown = (0, import_react40.useCallback)((tooltipId, event) => {
|
|
10157
10199
|
const rect = event.target.getBoundingClientRect();
|
|
10158
10200
|
const offset = {
|
|
10159
10201
|
x: event.clientX - rect.left,
|
|
@@ -10312,7 +10354,7 @@ var import_date_fns = require("date-fns");
|
|
|
10312
10354
|
// src/components/picker/calendar.tsx
|
|
10313
10355
|
var React40 = __toESM(require("react"));
|
|
10314
10356
|
var import_react_day_picker2 = require("react-day-picker");
|
|
10315
|
-
var
|
|
10357
|
+
var import_react41 = require("@phosphor-icons/react");
|
|
10316
10358
|
var import_framer_motion14 = require("framer-motion");
|
|
10317
10359
|
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
10318
10360
|
function CalendarBase2({
|
|
@@ -10386,8 +10428,8 @@ function CalendarBase2({
|
|
|
10386
10428
|
...classNames
|
|
10387
10429
|
},
|
|
10388
10430
|
components: {
|
|
10389
|
-
IconLeft: () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
10390
|
-
IconRight: () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
10431
|
+
IconLeft: () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react41.CaretLeftIcon, { className: "h-4 w-4" }),
|
|
10432
|
+
IconRight: () => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react41.CaretRightIcon, { className: "h-4 w-4" })
|
|
10391
10433
|
},
|
|
10392
10434
|
...props
|
|
10393
10435
|
}
|
|
@@ -10402,15 +10444,15 @@ CalendarBase2.displayName = "CalendarBase";
|
|
|
10402
10444
|
|
|
10403
10445
|
// src/components/picker/DateTimePicker.tsx
|
|
10404
10446
|
var import_locale = require("date-fns/locale");
|
|
10405
|
-
var
|
|
10447
|
+
var import_react44 = require("react");
|
|
10406
10448
|
|
|
10407
10449
|
// src/components/picker/TimePicker.tsx
|
|
10408
10450
|
var import_framer_motion15 = require("framer-motion");
|
|
10409
10451
|
var React42 = __toESM(require("react"));
|
|
10410
10452
|
|
|
10411
10453
|
// src/components/picker/TimePickerInput.tsx
|
|
10412
|
-
var
|
|
10413
|
-
var
|
|
10454
|
+
var import_react42 = require("@phosphor-icons/react");
|
|
10455
|
+
var import_react43 = __toESM(require("react"));
|
|
10414
10456
|
|
|
10415
10457
|
// src/components/picker/utils/time-picker-utils.ts
|
|
10416
10458
|
function isValidHour(value) {
|
|
@@ -10553,7 +10595,7 @@ function display12HourValue(hours) {
|
|
|
10553
10595
|
|
|
10554
10596
|
// src/components/picker/TimePickerInput.tsx
|
|
10555
10597
|
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
10556
|
-
var TimePickerInput =
|
|
10598
|
+
var TimePickerInput = import_react43.default.forwardRef(
|
|
10557
10599
|
({
|
|
10558
10600
|
className,
|
|
10559
10601
|
type = "tel",
|
|
@@ -10572,10 +10614,10 @@ var TimePickerInput = import_react42.default.forwardRef(
|
|
|
10572
10614
|
label,
|
|
10573
10615
|
...props
|
|
10574
10616
|
}, ref) => {
|
|
10575
|
-
const [flag, setFlag] =
|
|
10576
|
-
const [prevIntKey, setPrevIntKey] =
|
|
10577
|
-
const [isFocused, setIsFocused] =
|
|
10578
|
-
|
|
10617
|
+
const [flag, setFlag] = import_react43.default.useState(false);
|
|
10618
|
+
const [prevIntKey, setPrevIntKey] = import_react43.default.useState("0");
|
|
10619
|
+
const [isFocused, setIsFocused] = import_react43.default.useState(false);
|
|
10620
|
+
import_react43.default.useEffect(() => {
|
|
10579
10621
|
if (flag) {
|
|
10580
10622
|
const timer = setTimeout(() => {
|
|
10581
10623
|
setFlag(false);
|
|
@@ -10583,7 +10625,7 @@ var TimePickerInput = import_react42.default.forwardRef(
|
|
|
10583
10625
|
return () => clearTimeout(timer);
|
|
10584
10626
|
}
|
|
10585
10627
|
}, [flag]);
|
|
10586
|
-
const calculatedValue =
|
|
10628
|
+
const calculatedValue = import_react43.default.useMemo(() => {
|
|
10587
10629
|
return getDateByType(date, picker);
|
|
10588
10630
|
}, [date, picker]);
|
|
10589
10631
|
const calculateNewValue = (key) => {
|
|
@@ -10672,7 +10714,7 @@ var TimePickerInput = import_react42.default.forwardRef(
|
|
|
10672
10714
|
),
|
|
10673
10715
|
tabIndex: -1,
|
|
10674
10716
|
"aria-label": `Incrementar ${getPickerLabel().toLowerCase()}`,
|
|
10675
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
10717
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_react42.CaretUpIcon, { size: 14, className: "sm:w-4 sm:h-4" })
|
|
10676
10718
|
}
|
|
10677
10719
|
),
|
|
10678
10720
|
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "relative", children: [
|
|
@@ -10739,7 +10781,7 @@ var TimePickerInput = import_react42.default.forwardRef(
|
|
|
10739
10781
|
),
|
|
10740
10782
|
tabIndex: -1,
|
|
10741
10783
|
"aria-label": `Decrementar ${getPickerLabel().toLowerCase()}`,
|
|
10742
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
10784
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_react42.CaretDownIcon, { size: 14, className: "sm:w-4 sm:h-4" })
|
|
10743
10785
|
}
|
|
10744
10786
|
)
|
|
10745
10787
|
]
|
|
@@ -10848,7 +10890,7 @@ function TimePicker({
|
|
|
10848
10890
|
}
|
|
10849
10891
|
|
|
10850
10892
|
// src/components/picker/DateTimePicker.tsx
|
|
10851
|
-
var
|
|
10893
|
+
var import_react45 = require("@phosphor-icons/react");
|
|
10852
10894
|
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
10853
10895
|
function DateTimePicker({
|
|
10854
10896
|
label,
|
|
@@ -10863,9 +10905,9 @@ function DateTimePicker({
|
|
|
10863
10905
|
className,
|
|
10864
10906
|
error
|
|
10865
10907
|
}) {
|
|
10866
|
-
const [internalDate, setInternalDate] = (0,
|
|
10867
|
-
const [open, setOpen] = (0,
|
|
10868
|
-
const [timePickerOpen, setTimePickerOpen] = (0,
|
|
10908
|
+
const [internalDate, setInternalDate] = (0, import_react44.useState)(date);
|
|
10909
|
+
const [open, setOpen] = (0, import_react44.useState)(false);
|
|
10910
|
+
const [timePickerOpen, setTimePickerOpen] = (0, import_react44.useState)(false);
|
|
10869
10911
|
const handleSelect = (newDay) => {
|
|
10870
10912
|
if (!newDay) return;
|
|
10871
10913
|
if (!internalDate) {
|
|
@@ -10896,10 +10938,10 @@ function DateTimePicker({
|
|
|
10896
10938
|
if (!timeFormat) return "dd MMMM yyyy";
|
|
10897
10939
|
return `dd MMMM yyyy - ${timeFormat}`;
|
|
10898
10940
|
};
|
|
10899
|
-
(0,
|
|
10941
|
+
(0, import_react44.useEffect)(() => {
|
|
10900
10942
|
setInternalDate(date);
|
|
10901
10943
|
}, [date, open]);
|
|
10902
|
-
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: cn("
|
|
10944
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: cn("w-full sm:w-auto", className), children: [
|
|
10903
10945
|
label && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(LabelBase_default, { children: label }),
|
|
10904
10946
|
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(PopoverBase, { open, onOpenChange: setOpen, children: [
|
|
10905
10947
|
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
@@ -10927,7 +10969,7 @@ function DateTimePicker({
|
|
|
10927
10969
|
children: date ? (0, import_date_fns.format)(date, getDisplayFormat(), { locale: import_locale.ptBR }) : "Selecione uma data"
|
|
10928
10970
|
}
|
|
10929
10971
|
),
|
|
10930
|
-
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
10972
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react45.CalendarBlankIcon, { className: "flex-shrink-0 w-5 h-5 sm:w-6 sm:h-6" })
|
|
10931
10973
|
]
|
|
10932
10974
|
}
|
|
10933
10975
|
)
|
|
@@ -10977,7 +11019,7 @@ function DateTimePicker({
|
|
|
10977
11019
|
"shadow-sm hover:shadow-md active:scale-[0.98]"
|
|
10978
11020
|
),
|
|
10979
11021
|
children: [
|
|
10980
|
-
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
11022
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react45.ClockIcon, { className: "text-primary flex-shrink-0 w-4 h-4 sm:w-5 sm:h-5" }),
|
|
10981
11023
|
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "text-black truncate", children: internalDate ? (0, import_date_fns.format)(internalDate, getTimeFormat() || "HH:mm", {
|
|
10982
11024
|
locale: import_locale.ptBR
|
|
10983
11025
|
}) : "00:00" })
|
|
@@ -11031,7 +11073,7 @@ var React43 = __toESM(require("react"));
|
|
|
11031
11073
|
var import_react_day_picker3 = require("react-day-picker");
|
|
11032
11074
|
var import_pt_BR = __toESM(require("date-fns/locale/pt-BR"));
|
|
11033
11075
|
var import_date_fns2 = require("date-fns");
|
|
11034
|
-
var
|
|
11076
|
+
var import_react46 = require("@phosphor-icons/react");
|
|
11035
11077
|
var import_framer_motion16 = require("framer-motion");
|
|
11036
11078
|
var import_ssr7 = require("@phosphor-icons/react/dist/ssr");
|
|
11037
11079
|
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
@@ -11059,7 +11101,7 @@ function RangePicker({
|
|
|
11059
11101
|
onChange?.(void 0);
|
|
11060
11102
|
};
|
|
11061
11103
|
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(PopoverBase, { open, onOpenChange: setOpen, children: [
|
|
11062
|
-
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(PopoverTriggerBase, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
11104
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(PopoverTriggerBase, { asChild: true, className: cn(error && "border-red-500"), children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
11063
11105
|
import_framer_motion16.motion.div,
|
|
11064
11106
|
{
|
|
11065
11107
|
whileTap: { scale: 0.97 },
|
|
@@ -11069,12 +11111,18 @@ function RangePicker({
|
|
|
11069
11111
|
ButtonBase,
|
|
11070
11112
|
{
|
|
11071
11113
|
variant: "outline",
|
|
11072
|
-
className:
|
|
11114
|
+
className: cn(
|
|
11115
|
+
"w-full justify-start text-left min-w-0 overflow-hidden",
|
|
11116
|
+
!range && "text-muted-foreground"
|
|
11117
|
+
),
|
|
11073
11118
|
children: [
|
|
11074
11119
|
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
11075
11120
|
import_framer_motion16.motion.span,
|
|
11076
11121
|
{
|
|
11077
|
-
className:
|
|
11122
|
+
className: cn(
|
|
11123
|
+
"truncate flex-1",
|
|
11124
|
+
!range && "text-muted-foreground"
|
|
11125
|
+
),
|
|
11078
11126
|
transition: { duration: 0.2 },
|
|
11079
11127
|
animate: controls,
|
|
11080
11128
|
children: range?.from && range?.to ? `${(0, import_date_fns2.format)(range.from, "P", {
|
|
@@ -11087,7 +11135,7 @@ function RangePicker({
|
|
|
11087
11135
|
{
|
|
11088
11136
|
animate: open ? { rotate: 8, scale: 1.15 } : { rotate: 0, scale: 1 },
|
|
11089
11137
|
transition: { type: "spring", stiffness: 300, damping: 18 },
|
|
11090
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
11138
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react46.CalendarBlankIcon, { className: "flex-shrink-0 w-5 h-5 sm:w-6 sm:h-6" })
|
|
11091
11139
|
}
|
|
11092
11140
|
)
|
|
11093
11141
|
]
|
|
@@ -11164,8 +11212,8 @@ function RangePicker({
|
|
|
11164
11212
|
day_hidden: "invisible"
|
|
11165
11213
|
},
|
|
11166
11214
|
components: {
|
|
11167
|
-
IconLeft: () => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
11168
|
-
IconRight: () => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
11215
|
+
IconLeft: () => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react46.CaretLeftIcon, { className: "h-4 w-4" }),
|
|
11216
|
+
IconRight: () => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react46.CaretRightIcon, { className: "h-4 w-4" })
|
|
11169
11217
|
}
|
|
11170
11218
|
}
|
|
11171
11219
|
)
|
|
@@ -11237,7 +11285,7 @@ RangePicker.displayName = "RangePicker";
|
|
|
11237
11285
|
|
|
11238
11286
|
// src/components/ui/navigation/ContextMenuBase.tsx
|
|
11239
11287
|
var ContextMenuPrimitive = __toESM(require("@radix-ui/react-context-menu"));
|
|
11240
|
-
var
|
|
11288
|
+
var import_react47 = require("@phosphor-icons/react");
|
|
11241
11289
|
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
11242
11290
|
function ContextMenuBase(props) {
|
|
11243
11291
|
return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ContextMenuPrimitive.Root, { "data-slot": "context-menu", ...props });
|
|
@@ -11279,7 +11327,7 @@ function ContextMenuSubTriggerBase({
|
|
|
11279
11327
|
...props,
|
|
11280
11328
|
children: [
|
|
11281
11329
|
children,
|
|
11282
|
-
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
11330
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react47.CaretRightIcon, { className: "ml-auto" })
|
|
11283
11331
|
]
|
|
11284
11332
|
}
|
|
11285
11333
|
);
|
|
@@ -11374,7 +11422,7 @@ function ContextMenuCheckboxItemBase({
|
|
|
11374
11422
|
checked,
|
|
11375
11423
|
...props,
|
|
11376
11424
|
children: [
|
|
11377
|
-
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
11425
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react47.CheckIcon, { className: "size-4" }) }) }),
|
|
11378
11426
|
children
|
|
11379
11427
|
]
|
|
11380
11428
|
}
|
|
@@ -11399,7 +11447,7 @@ function ContextMenuRadioItemBase({
|
|
|
11399
11447
|
),
|
|
11400
11448
|
...props,
|
|
11401
11449
|
children: [
|
|
11402
|
-
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
11450
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react47.CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
11403
11451
|
children
|
|
11404
11452
|
]
|
|
11405
11453
|
}
|
|
@@ -11448,8 +11496,8 @@ function ContextMenuShortcutBase({
|
|
|
11448
11496
|
}
|
|
11449
11497
|
|
|
11450
11498
|
// src/components/ui/CodeBlock.tsx
|
|
11451
|
-
var
|
|
11452
|
-
var
|
|
11499
|
+
var import_react48 = require("@phosphor-icons/react");
|
|
11500
|
+
var import_react49 = __toESM(require("react"));
|
|
11453
11501
|
var import_react_syntax_highlighter = require("react-syntax-highlighter");
|
|
11454
11502
|
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
11455
11503
|
var CodeBlock = ({
|
|
@@ -11461,11 +11509,11 @@ var CodeBlock = ({
|
|
|
11461
11509
|
breadcrumb = [],
|
|
11462
11510
|
showStats = true
|
|
11463
11511
|
}) => {
|
|
11464
|
-
const [copied, setCopied] =
|
|
11465
|
-
const [activeTab, setActiveTab] =
|
|
11466
|
-
const [isExpanded, setIsExpanded] =
|
|
11512
|
+
const [copied, setCopied] = import_react49.default.useState(false);
|
|
11513
|
+
const [activeTab, setActiveTab] = import_react49.default.useState(0);
|
|
11514
|
+
const [isExpanded, setIsExpanded] = import_react49.default.useState(false);
|
|
11467
11515
|
const tabsExist = tabs.length > 0;
|
|
11468
|
-
const cssVars =
|
|
11516
|
+
const cssVars = import_react49.default.useMemo(
|
|
11469
11517
|
() => ({
|
|
11470
11518
|
container: {
|
|
11471
11519
|
backgroundColor: "hsl(var(--card))",
|
|
@@ -11530,12 +11578,12 @@ var CodeBlock = ({
|
|
|
11530
11578
|
case "jsx":
|
|
11531
11579
|
case "typescript":
|
|
11532
11580
|
case "tsx":
|
|
11533
|
-
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11581
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react48.CodeIcon, { size: "1em", className: "text-yellow-400" });
|
|
11534
11582
|
case "bash":
|
|
11535
11583
|
case "shell":
|
|
11536
|
-
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11584
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react48.TerminalIcon, { size: "1em", className: "text-green-400" });
|
|
11537
11585
|
default:
|
|
11538
|
-
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11586
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react48.FileArchiveIcon, { size: "1em", className: "text-blue-400" });
|
|
11539
11587
|
}
|
|
11540
11588
|
};
|
|
11541
11589
|
const getCodeStats = (source) => {
|
|
@@ -11560,8 +11608,8 @@ var CodeBlock = ({
|
|
|
11560
11608
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "w-3 h-3 rounded-full bg-green-500" })
|
|
11561
11609
|
] }),
|
|
11562
11610
|
breadcrumb.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "flex items-center min-w-0", children: [
|
|
11563
|
-
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11564
|
-
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "flex items-center min-w-0 ml-2", children: breadcrumb.map((crumb, index) => /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
11611
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react48.FolderIcon, { size: "1em", style: cssVars.icon }),
|
|
11612
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "flex items-center min-w-0 ml-2", children: breadcrumb.map((crumb, index) => /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react49.default.Fragment, { children: [
|
|
11565
11613
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11566
11614
|
"span",
|
|
11567
11615
|
{
|
|
@@ -11571,7 +11619,7 @@ var CodeBlock = ({
|
|
|
11571
11619
|
}
|
|
11572
11620
|
),
|
|
11573
11621
|
index < breadcrumb.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11574
|
-
|
|
11622
|
+
import_react48.ArrowRightIcon,
|
|
11575
11623
|
{
|
|
11576
11624
|
size: "0.75em",
|
|
11577
11625
|
style: cssVars.icon,
|
|
@@ -11602,7 +11650,7 @@ var CodeBlock = ({
|
|
|
11602
11650
|
onClick: () => setIsExpanded(!isExpanded),
|
|
11603
11651
|
className: `p-2 transition-colors hover:bg-gray-200 dark:hover:bg-slate-700`,
|
|
11604
11652
|
title: "Toggle fullscreen",
|
|
11605
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11653
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react48.ArrowsOutIcon, { size: "1em", style: cssVars.icon })
|
|
11606
11654
|
}
|
|
11607
11655
|
),
|
|
11608
11656
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
@@ -11611,7 +11659,7 @@ var CodeBlock = ({
|
|
|
11611
11659
|
onClick: downloadCode,
|
|
11612
11660
|
className: `p-2 transition-colors hover:bg-gray-200 dark:hover:bg-slate-700`,
|
|
11613
11661
|
title: "Download code",
|
|
11614
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11662
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react48.DownloadIcon, { size: "1em", style: cssVars.icon })
|
|
11615
11663
|
}
|
|
11616
11664
|
),
|
|
11617
11665
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
@@ -11621,12 +11669,12 @@ var CodeBlock = ({
|
|
|
11621
11669
|
className: `p-2 transition-colors hover:bg-gray-200 dark:hover:bg-slate-700`,
|
|
11622
11670
|
title: "Copy code",
|
|
11623
11671
|
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11624
|
-
|
|
11672
|
+
import_react48.CheckIcon,
|
|
11625
11673
|
{
|
|
11626
11674
|
size: "1em",
|
|
11627
11675
|
style: { color: "hsl(var(--primary))" }
|
|
11628
11676
|
}
|
|
11629
|
-
) : /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11677
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react48.CopyIcon, { size: "1em", style: cssVars.icon })
|
|
11630
11678
|
}
|
|
11631
11679
|
)
|
|
11632
11680
|
] })
|
|
@@ -11739,7 +11787,7 @@ var CodeBlock = ({
|
|
|
11739
11787
|
] })
|
|
11740
11788
|
] }),
|
|
11741
11789
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "flex items-center gap-1 shrink-0", children: [
|
|
11742
|
-
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11790
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react48.GearIcon, { size: "0.75em", style: cssVars.icon }),
|
|
11743
11791
|
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { children: "UTF-8" })
|
|
11744
11792
|
] })
|
|
11745
11793
|
]
|
|
@@ -11818,22 +11866,74 @@ function StatusIndicator({
|
|
|
11818
11866
|
}
|
|
11819
11867
|
|
|
11820
11868
|
// src/components/ui/form/DebouncedInput.tsx
|
|
11821
|
-
var
|
|
11822
|
-
var
|
|
11869
|
+
var import_react50 = require("react");
|
|
11870
|
+
var import_react51 = require("@phosphor-icons/react");
|
|
11823
11871
|
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
11872
|
+
function DebouncedInput({
|
|
11873
|
+
value: initialValue,
|
|
11874
|
+
onChange,
|
|
11875
|
+
debounce = 500,
|
|
11876
|
+
label,
|
|
11877
|
+
labelClassname,
|
|
11878
|
+
leftIcon,
|
|
11879
|
+
rightIcon,
|
|
11880
|
+
showLoadingIndicator = false,
|
|
11881
|
+
className,
|
|
11882
|
+
error,
|
|
11883
|
+
...props
|
|
11884
|
+
}) {
|
|
11885
|
+
const [value, setValue] = (0, import_react50.useState)(initialValue);
|
|
11886
|
+
const [isDebouncing, setIsDebouncing] = (0, import_react50.useState)(false);
|
|
11887
|
+
(0, import_react50.useEffect)(() => {
|
|
11888
|
+
setValue(initialValue);
|
|
11889
|
+
}, [initialValue]);
|
|
11890
|
+
(0, import_react50.useEffect)(() => {
|
|
11891
|
+
if (value !== initialValue) {
|
|
11892
|
+
setIsDebouncing(true);
|
|
11893
|
+
}
|
|
11894
|
+
const timeout = setTimeout(() => {
|
|
11895
|
+
onChange(value);
|
|
11896
|
+
setIsDebouncing(false);
|
|
11897
|
+
}, debounce);
|
|
11898
|
+
return () => {
|
|
11899
|
+
clearTimeout(timeout);
|
|
11900
|
+
setIsDebouncing(false);
|
|
11901
|
+
};
|
|
11902
|
+
}, [debounce, initialValue, onChange, value]);
|
|
11903
|
+
const renderRightIcon = () => {
|
|
11904
|
+
if (showLoadingIndicator && isDebouncing) {
|
|
11905
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react51.CircleNotchIcon, { className: "h-4 w-4 animate-spin text-muted-foreground" });
|
|
11906
|
+
}
|
|
11907
|
+
return rightIcon;
|
|
11908
|
+
};
|
|
11909
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
11910
|
+
InputBase,
|
|
11911
|
+
{
|
|
11912
|
+
...props,
|
|
11913
|
+
label,
|
|
11914
|
+
labelClassname,
|
|
11915
|
+
leftIcon,
|
|
11916
|
+
rightIcon: renderRightIcon(),
|
|
11917
|
+
className: cn("transition-all duration-200", className),
|
|
11918
|
+
value,
|
|
11919
|
+
onChange: (e) => setValue(e.target.value),
|
|
11920
|
+
error
|
|
11921
|
+
}
|
|
11922
|
+
);
|
|
11923
|
+
}
|
|
11824
11924
|
|
|
11825
11925
|
// src/components/event-calendar/AgendaView.tsx
|
|
11826
11926
|
var import_date_fns3 = require("date-fns");
|
|
11827
11927
|
var import_locale2 = require("date-fns/locale");
|
|
11828
|
-
var
|
|
11829
|
-
var
|
|
11928
|
+
var import_react52 = require("react");
|
|
11929
|
+
var import_react53 = require("@phosphor-icons/react");
|
|
11830
11930
|
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
11831
11931
|
function AgendaView({
|
|
11832
11932
|
currentDate,
|
|
11833
11933
|
events,
|
|
11834
11934
|
onEventSelect
|
|
11835
11935
|
}) {
|
|
11836
|
-
const days = (0,
|
|
11936
|
+
const days = (0, import_react52.useMemo)(() => {
|
|
11837
11937
|
console.log("Agenda view updating with date:", currentDate.toISOString());
|
|
11838
11938
|
return Array.from(
|
|
11839
11939
|
{ length: AgendaDaysToShow },
|
|
@@ -11849,9 +11949,9 @@ function AgendaView({
|
|
|
11849
11949
|
(day) => getAgendaEventsForDay(events, day).length > 0
|
|
11850
11950
|
);
|
|
11851
11951
|
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "border-border/70 border-t px-4", children: !hasEvents ? /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "flex min-h-[70svh] flex-col items-center justify-center py-16 text-center", children: [
|
|
11852
|
-
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
11853
|
-
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)("h3", { className: "font-medium text-lg", children: "
|
|
11854
|
-
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)("p", { className: "text-muted-foreground", children: "
|
|
11952
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_react53.CalendarIcon, { className: "mb-2 text-muted-foreground/50", size: 32 }),
|
|
11953
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)("h3", { className: "font-medium text-lg", children: "Nenhum evento encontrado" }),
|
|
11954
|
+
/* @__PURE__ */ (0, import_jsx_runtime72.jsx)("p", { className: "text-muted-foreground", children: "N\xE3o h\xE1 eventos agendados para este per\xEDodo." })
|
|
11855
11955
|
] }) : days.map((day) => {
|
|
11856
11956
|
const dayEvents = getAgendaEventsForDay(events, day);
|
|
11857
11957
|
if (dayEvents.length === 0) return null;
|
|
@@ -11890,11 +11990,11 @@ function AgendaView({
|
|
|
11890
11990
|
// src/components/event-calendar/CalendarDND.tsx
|
|
11891
11991
|
var import_core = require("@dnd-kit/core");
|
|
11892
11992
|
var import_date_fns4 = require("date-fns");
|
|
11893
|
-
var
|
|
11993
|
+
var import_react55 = require("react");
|
|
11894
11994
|
|
|
11895
11995
|
// src/components/event-calendar/hooks.ts
|
|
11896
|
-
var
|
|
11897
|
-
var CalendarDndContext = (0,
|
|
11996
|
+
var import_react54 = require("react");
|
|
11997
|
+
var CalendarDndContext = (0, import_react54.createContext)({
|
|
11898
11998
|
activeEvent: null,
|
|
11899
11999
|
activeId: null,
|
|
11900
12000
|
activeView: null,
|
|
@@ -11904,7 +12004,7 @@ var CalendarDndContext = (0, import_react53.createContext)({
|
|
|
11904
12004
|
isMultiDay: false,
|
|
11905
12005
|
multiDayWidth: null
|
|
11906
12006
|
});
|
|
11907
|
-
var useCalendarDnd = () => (0,
|
|
12007
|
+
var useCalendarDnd = () => (0, import_react54.useContext)(CalendarDndContext);
|
|
11908
12008
|
|
|
11909
12009
|
// src/components/event-calendar/CalendarDND.tsx
|
|
11910
12010
|
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
@@ -11912,17 +12012,17 @@ function CalendarDndProvider({
|
|
|
11912
12012
|
children,
|
|
11913
12013
|
onEventUpdate
|
|
11914
12014
|
}) {
|
|
11915
|
-
const [activeEvent, setActiveEvent] = (0,
|
|
11916
|
-
const [activeId, setActiveId] = (0,
|
|
11917
|
-
const [activeView, setActiveView] = (0,
|
|
12015
|
+
const [activeEvent, setActiveEvent] = (0, import_react55.useState)(null);
|
|
12016
|
+
const [activeId, setActiveId] = (0, import_react55.useState)(null);
|
|
12017
|
+
const [activeView, setActiveView] = (0, import_react55.useState)(
|
|
11918
12018
|
null
|
|
11919
12019
|
);
|
|
11920
|
-
const [currentTime, setCurrentTime] = (0,
|
|
11921
|
-
const [eventHeight, setEventHeight] = (0,
|
|
11922
|
-
const [isMultiDay, setIsMultiDay] = (0,
|
|
11923
|
-
const [multiDayWidth, setMultiDayWidth] = (0,
|
|
11924
|
-
const [dragHandlePosition, setDragHandlePosition] = (0,
|
|
11925
|
-
const eventDimensions = (0,
|
|
12020
|
+
const [currentTime, setCurrentTime] = (0, import_react55.useState)(null);
|
|
12021
|
+
const [eventHeight, setEventHeight] = (0, import_react55.useState)(null);
|
|
12022
|
+
const [isMultiDay, setIsMultiDay] = (0, import_react55.useState)(false);
|
|
12023
|
+
const [multiDayWidth, setMultiDayWidth] = (0, import_react55.useState)(null);
|
|
12024
|
+
const [dragHandlePosition, setDragHandlePosition] = (0, import_react55.useState)(null);
|
|
12025
|
+
const eventDimensions = (0, import_react55.useRef)({ height: 0 });
|
|
11926
12026
|
const sensors = (0, import_core.useSensors)(
|
|
11927
12027
|
(0, import_core.useSensor)(import_core.MouseSensor, {
|
|
11928
12028
|
// Require the mouse to move by 5px before activating
|
|
@@ -11944,7 +12044,7 @@ function CalendarDndProvider({
|
|
|
11944
12044
|
}
|
|
11945
12045
|
})
|
|
11946
12046
|
);
|
|
11947
|
-
const dndContextId = (0,
|
|
12047
|
+
const dndContextId = (0, import_react55.useId)();
|
|
11948
12048
|
const handleDragStart = (event) => {
|
|
11949
12049
|
const { active } = event;
|
|
11950
12050
|
if (!active.data.current) {
|
|
@@ -12136,7 +12236,7 @@ var DefaultEndHour = 10;
|
|
|
12136
12236
|
|
|
12137
12237
|
// src/components/event-calendar/DayView.tsx
|
|
12138
12238
|
var import_date_fns5 = require("date-fns");
|
|
12139
|
-
var
|
|
12239
|
+
var import_react56 = require("react");
|
|
12140
12240
|
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
12141
12241
|
function DayView({
|
|
12142
12242
|
currentDate,
|
|
@@ -12144,14 +12244,14 @@ function DayView({
|
|
|
12144
12244
|
onEventSelect,
|
|
12145
12245
|
onEventCreate
|
|
12146
12246
|
}) {
|
|
12147
|
-
const hours = (0,
|
|
12247
|
+
const hours = (0, import_react56.useMemo)(() => {
|
|
12148
12248
|
const dayStart = (0, import_date_fns5.startOfDay)(currentDate);
|
|
12149
12249
|
return (0, import_date_fns5.eachHourOfInterval)({
|
|
12150
12250
|
end: (0, import_date_fns5.addHours)(dayStart, EndHour - 1),
|
|
12151
12251
|
start: (0, import_date_fns5.addHours)(dayStart, StartHour)
|
|
12152
12252
|
});
|
|
12153
12253
|
}, [currentDate]);
|
|
12154
|
-
const dayEvents = (0,
|
|
12254
|
+
const dayEvents = (0, import_react56.useMemo)(() => {
|
|
12155
12255
|
return events.filter((event) => {
|
|
12156
12256
|
const eventStart = new Date(event.start);
|
|
12157
12257
|
const eventEnd = new Date(event.end);
|
|
@@ -12160,17 +12260,17 @@ function DayView({
|
|
|
12160
12260
|
(a, b) => new Date(a.start).getTime() - new Date(b.start).getTime()
|
|
12161
12261
|
);
|
|
12162
12262
|
}, [currentDate, events]);
|
|
12163
|
-
const allDayEvents = (0,
|
|
12263
|
+
const allDayEvents = (0, import_react56.useMemo)(() => {
|
|
12164
12264
|
return dayEvents.filter((event) => {
|
|
12165
12265
|
return event.allDay || isMultiDayEvent(event);
|
|
12166
12266
|
});
|
|
12167
12267
|
}, [dayEvents]);
|
|
12168
|
-
const timeEvents = (0,
|
|
12268
|
+
const timeEvents = (0, import_react56.useMemo)(() => {
|
|
12169
12269
|
return dayEvents.filter((event) => {
|
|
12170
12270
|
return !event.allDay && !isMultiDayEvent(event);
|
|
12171
12271
|
});
|
|
12172
12272
|
}, [dayEvents]);
|
|
12173
|
-
const positionedEvents = (0,
|
|
12273
|
+
const positionedEvents = (0, import_react56.useMemo)(() => {
|
|
12174
12274
|
const result = [];
|
|
12175
12275
|
const dayStart = (0, import_date_fns5.startOfDay)(currentDate);
|
|
12176
12276
|
const sortedEvents = [...timeEvents].sort((a, b) => {
|
|
@@ -12267,7 +12367,7 @@ function DayView({
|
|
|
12267
12367
|
"div",
|
|
12268
12368
|
{
|
|
12269
12369
|
className: "relative h-[var(--week-cells-height)] border-border/70 border-b last:border-b-0",
|
|
12270
|
-
children: index > 0 && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "-top-3 absolute left-0 flex h-6 w-16 max-w-full items-center justify-end bg-background pe-2 text-[10px] text-muted-foreground/70 sm:pe-4 sm:text-xs", children: (0, import_date_fns5.format)(hour, "
|
|
12370
|
+
children: index > 0 && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "-top-3 absolute left-0 flex h-6 w-16 max-w-full items-center justify-end bg-background pe-2 text-[10px] text-muted-foreground/70 sm:pe-4 sm:text-xs", children: (0, import_date_fns5.format)(hour, "HH:mm") })
|
|
12271
12371
|
},
|
|
12272
12372
|
hour.toString()
|
|
12273
12373
|
)) }),
|
|
@@ -12351,7 +12451,7 @@ function DayView({
|
|
|
12351
12451
|
var import_core2 = require("@dnd-kit/core");
|
|
12352
12452
|
var import_utilities = require("@dnd-kit/utilities");
|
|
12353
12453
|
var import_date_fns6 = require("date-fns");
|
|
12354
|
-
var
|
|
12454
|
+
var import_react57 = require("react");
|
|
12355
12455
|
var import_jsx_runtime75 = require("react/jsx-runtime");
|
|
12356
12456
|
function DraggableEvent({
|
|
12357
12457
|
event,
|
|
@@ -12366,8 +12466,8 @@ function DraggableEvent({
|
|
|
12366
12466
|
"aria-hidden": ariaHidden
|
|
12367
12467
|
}) {
|
|
12368
12468
|
const { activeId } = useCalendarDnd();
|
|
12369
|
-
const elementRef = (0,
|
|
12370
|
-
const [dragHandlePosition, setDragHandlePosition] = (0,
|
|
12469
|
+
const elementRef = (0, import_react57.useRef)(null);
|
|
12470
|
+
const [dragHandlePosition, setDragHandlePosition] = (0, import_react57.useState)(null);
|
|
12371
12471
|
const eventStart = new Date(event.start);
|
|
12372
12472
|
const eventEnd = new Date(event.end);
|
|
12373
12473
|
const isMultiDayEvent2 = isMultiDay || event.allDay || (0, import_date_fns6.differenceInDays)(eventEnd, eventStart) >= 1;
|
|
@@ -12492,9 +12592,9 @@ function DroppableCell({
|
|
|
12492
12592
|
// src/components/event-calendar/EventCalendar.tsx
|
|
12493
12593
|
var import_date_fns7 = require("date-fns");
|
|
12494
12594
|
var import_locale3 = require("date-fns/locale");
|
|
12495
|
-
var
|
|
12595
|
+
var import_react58 = require("react");
|
|
12496
12596
|
var import_sonner3 = require("sonner");
|
|
12497
|
-
var
|
|
12597
|
+
var import_react59 = require("@phosphor-icons/react");
|
|
12498
12598
|
var import_jsx_runtime77 = require("react/jsx-runtime");
|
|
12499
12599
|
function EventCalendar({
|
|
12500
12600
|
events = [],
|
|
@@ -12504,11 +12604,11 @@ function EventCalendar({
|
|
|
12504
12604
|
className,
|
|
12505
12605
|
initialView = "month"
|
|
12506
12606
|
}) {
|
|
12507
|
-
const [currentDate, setCurrentDate] = (0,
|
|
12508
|
-
const [view, setView] = (0,
|
|
12509
|
-
const [isFading, setIsFading] = (0,
|
|
12607
|
+
const [currentDate, setCurrentDate] = (0, import_react58.useState)(/* @__PURE__ */ new Date());
|
|
12608
|
+
const [view, setView] = (0, import_react58.useState)(initialView);
|
|
12609
|
+
const [isFading, setIsFading] = (0, import_react58.useState)(false);
|
|
12510
12610
|
const FADE_DURATION = 220;
|
|
12511
|
-
const changeView = (0,
|
|
12611
|
+
const changeView = (0, import_react58.useCallback)(
|
|
12512
12612
|
(next) => {
|
|
12513
12613
|
if (next === view) return;
|
|
12514
12614
|
setIsFading(true);
|
|
@@ -12519,12 +12619,12 @@ function EventCalendar({
|
|
|
12519
12619
|
},
|
|
12520
12620
|
[view]
|
|
12521
12621
|
);
|
|
12522
|
-
const [isPaging, setIsPaging] = (0,
|
|
12523
|
-
const [pageDirection, setPageDirection] = (0,
|
|
12622
|
+
const [isPaging, setIsPaging] = (0, import_react58.useState)(false);
|
|
12623
|
+
const [pageDirection, setPageDirection] = (0, import_react58.useState)(
|
|
12524
12624
|
null
|
|
12525
12625
|
);
|
|
12526
12626
|
const PAGE_DURATION = 200;
|
|
12527
|
-
const pageTransition = (0,
|
|
12627
|
+
const pageTransition = (0, import_react58.useCallback)(
|
|
12528
12628
|
(applyDateChange, direction) => {
|
|
12529
12629
|
setIsPaging(true);
|
|
12530
12630
|
setPageDirection(direction);
|
|
@@ -12538,11 +12638,11 @@ function EventCalendar({
|
|
|
12538
12638
|
},
|
|
12539
12639
|
[]
|
|
12540
12640
|
);
|
|
12541
|
-
const [isEventDialogOpen, setIsEventDialogOpen] = (0,
|
|
12542
|
-
const [selectedEvent, setSelectedEvent] = (0,
|
|
12641
|
+
const [isEventDialogOpen, setIsEventDialogOpen] = (0, import_react58.useState)(false);
|
|
12642
|
+
const [selectedEvent, setSelectedEvent] = (0, import_react58.useState)(
|
|
12543
12643
|
null
|
|
12544
12644
|
);
|
|
12545
|
-
(0,
|
|
12645
|
+
(0, import_react58.useEffect)(() => {
|
|
12546
12646
|
const handleKeyDown = (e) => {
|
|
12547
12647
|
if (isEventDialogOpen || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLElement && e.target.isContentEditable) {
|
|
12548
12648
|
return;
|
|
@@ -12677,7 +12777,7 @@ function EventCalendar({
|
|
|
12677
12777
|
position: "bottom-left"
|
|
12678
12778
|
});
|
|
12679
12779
|
};
|
|
12680
|
-
const viewTitle = (0,
|
|
12780
|
+
const viewTitle = (0, import_react58.useMemo)(() => {
|
|
12681
12781
|
const capitalize = (s) => s && s.length > 0 ? s.charAt(0).toUpperCase() + s.slice(1) : s;
|
|
12682
12782
|
if (view === "month") {
|
|
12683
12783
|
return capitalize((0, import_date_fns7.format)(currentDate, "MMMM yyyy", { locale: import_locale3.ptBR }));
|
|
@@ -12743,7 +12843,7 @@ function EventCalendar({
|
|
|
12743
12843
|
variant: "outline",
|
|
12744
12844
|
children: [
|
|
12745
12845
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
12746
|
-
|
|
12846
|
+
import_react59.CalendarIcon,
|
|
12747
12847
|
{
|
|
12748
12848
|
"aria-hidden": "true",
|
|
12749
12849
|
className: "min-[480px]:hidden",
|
|
@@ -12762,7 +12862,7 @@ function EventCalendar({
|
|
|
12762
12862
|
onClick: handlePrevious,
|
|
12763
12863
|
size: "icon",
|
|
12764
12864
|
variant: "ghost",
|
|
12765
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
12865
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_react59.CaretLeft, { "aria-hidden": "true", size: 16 })
|
|
12766
12866
|
}
|
|
12767
12867
|
),
|
|
12768
12868
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
@@ -12772,7 +12872,7 @@ function EventCalendar({
|
|
|
12772
12872
|
onClick: handleNext,
|
|
12773
12873
|
size: "icon",
|
|
12774
12874
|
variant: "ghost",
|
|
12775
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
12875
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_react59.CaretRight, { "aria-hidden": "true", size: 16 })
|
|
12776
12876
|
}
|
|
12777
12877
|
)
|
|
12778
12878
|
] }),
|
|
@@ -12807,7 +12907,7 @@ function EventCalendar({
|
|
|
12807
12907
|
})() })
|
|
12808
12908
|
] }),
|
|
12809
12909
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
12810
|
-
|
|
12910
|
+
import_react59.ArrowDownIcon,
|
|
12811
12911
|
{
|
|
12812
12912
|
"aria-hidden": "true",
|
|
12813
12913
|
className: "-me-1 opacity-60",
|
|
@@ -12847,7 +12947,7 @@ function EventCalendar({
|
|
|
12847
12947
|
size: "sm",
|
|
12848
12948
|
children: [
|
|
12849
12949
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|
|
12850
|
-
|
|
12950
|
+
import_react59.PlusIcon,
|
|
12851
12951
|
{
|
|
12852
12952
|
"aria-hidden": "true",
|
|
12853
12953
|
className: "sm:-ms-1 opacity-60",
|
|
@@ -12929,11 +13029,11 @@ function EventCalendar({
|
|
|
12929
13029
|
|
|
12930
13030
|
// src/components/event-calendar/EventDialog.tsx
|
|
12931
13031
|
var import_date_fns8 = require("date-fns");
|
|
12932
|
-
var
|
|
13032
|
+
var import_react60 = require("react");
|
|
12933
13033
|
var import_react_radio_group = require("@radix-ui/react-radio-group");
|
|
12934
13034
|
var import_framer_motion17 = require("framer-motion");
|
|
12935
13035
|
var import_locale4 = require("date-fns/locale");
|
|
12936
|
-
var
|
|
13036
|
+
var import_react61 = require("@phosphor-icons/react");
|
|
12937
13037
|
var import_jsx_runtime78 = require("react/jsx-runtime");
|
|
12938
13038
|
function EventDialog({
|
|
12939
13039
|
event,
|
|
@@ -12942,21 +13042,21 @@ function EventDialog({
|
|
|
12942
13042
|
onSave,
|
|
12943
13043
|
onDelete
|
|
12944
13044
|
}) {
|
|
12945
|
-
const [title, setTitle] = (0,
|
|
12946
|
-
const [description, setDescription] = (0,
|
|
12947
|
-
const [startDate, setStartDate] = (0,
|
|
12948
|
-
const [endDate, setEndDate] = (0,
|
|
12949
|
-
const [startTime, setStartTime] = (0,
|
|
12950
|
-
const [endTime, setEndTime] = (0,
|
|
12951
|
-
const [allDay, setAllDay] = (0,
|
|
12952
|
-
const [location, setLocation] = (0,
|
|
12953
|
-
const [color, setColor] = (0,
|
|
12954
|
-
const [error, setError] = (0,
|
|
12955
|
-
const [startDateOpen, setStartDateOpen] = (0,
|
|
12956
|
-
const [endDateOpen, setEndDateOpen] = (0,
|
|
12957
|
-
(0,
|
|
13045
|
+
const [title, setTitle] = (0, import_react60.useState)("");
|
|
13046
|
+
const [description, setDescription] = (0, import_react60.useState)("");
|
|
13047
|
+
const [startDate, setStartDate] = (0, import_react60.useState)(/* @__PURE__ */ new Date());
|
|
13048
|
+
const [endDate, setEndDate] = (0, import_react60.useState)(/* @__PURE__ */ new Date());
|
|
13049
|
+
const [startTime, setStartTime] = (0, import_react60.useState)(`${DefaultStartHour}:00`);
|
|
13050
|
+
const [endTime, setEndTime] = (0, import_react60.useState)(`${DefaultEndHour}:00`);
|
|
13051
|
+
const [allDay, setAllDay] = (0, import_react60.useState)(false);
|
|
13052
|
+
const [location, setLocation] = (0, import_react60.useState)("");
|
|
13053
|
+
const [color, setColor] = (0, import_react60.useState)("sky");
|
|
13054
|
+
const [error, setError] = (0, import_react60.useState)(null);
|
|
13055
|
+
const [startDateOpen, setStartDateOpen] = (0, import_react60.useState)(false);
|
|
13056
|
+
const [endDateOpen, setEndDateOpen] = (0, import_react60.useState)(false);
|
|
13057
|
+
(0, import_react60.useEffect)(() => {
|
|
12958
13058
|
}, [event]);
|
|
12959
|
-
const resetForm = (0,
|
|
13059
|
+
const resetForm = (0, import_react60.useCallback)(() => {
|
|
12960
13060
|
setTitle("");
|
|
12961
13061
|
setDescription("");
|
|
12962
13062
|
setStartDate(/* @__PURE__ */ new Date());
|
|
@@ -12968,12 +13068,12 @@ function EventDialog({
|
|
|
12968
13068
|
setColor("sky");
|
|
12969
13069
|
setError(null);
|
|
12970
13070
|
}, []);
|
|
12971
|
-
const formatTimeForInput = (0,
|
|
13071
|
+
const formatTimeForInput = (0, import_react60.useCallback)((date) => {
|
|
12972
13072
|
const hours = date.getHours().toString().padStart(2, "0");
|
|
12973
13073
|
const minutes = Math.floor(date.getMinutes() / 15) * 15;
|
|
12974
13074
|
return `${hours}:${minutes.toString().padStart(2, "0")}`;
|
|
12975
13075
|
}, []);
|
|
12976
|
-
(0,
|
|
13076
|
+
(0, import_react60.useEffect)(() => {
|
|
12977
13077
|
if (event) {
|
|
12978
13078
|
setTitle(event.title || "");
|
|
12979
13079
|
setDescription(event.description || "");
|
|
@@ -12991,7 +13091,7 @@ function EventDialog({
|
|
|
12991
13091
|
resetForm();
|
|
12992
13092
|
}
|
|
12993
13093
|
}, [event, formatTimeForInput, resetForm]);
|
|
12994
|
-
const timeOptions = (0,
|
|
13094
|
+
const timeOptions = (0, import_react60.useMemo)(() => {
|
|
12995
13095
|
const options = [];
|
|
12996
13096
|
for (let hour = StartHour; hour <= EndHour; hour++) {
|
|
12997
13097
|
for (let minute = 0; minute < 60; minute += 15) {
|
|
@@ -13180,7 +13280,7 @@ function EventDialog({
|
|
|
13180
13280
|
}
|
|
13181
13281
|
),
|
|
13182
13282
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
13183
|
-
|
|
13283
|
+
import_react61.CalendarIcon,
|
|
13184
13284
|
{
|
|
13185
13285
|
"aria-hidden": "true",
|
|
13186
13286
|
className: "shrink-0 text-muted-foreground/80",
|
|
@@ -13259,7 +13359,7 @@ function EventDialog({
|
|
|
13259
13359
|
}
|
|
13260
13360
|
),
|
|
13261
13361
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
13262
|
-
|
|
13362
|
+
import_react61.CalendarIcon,
|
|
13263
13363
|
{
|
|
13264
13364
|
"aria-hidden": "true",
|
|
13265
13365
|
className: "shrink-0 text-muted-foreground/80",
|
|
@@ -13317,7 +13417,7 @@ function EventDialog({
|
|
|
13317
13417
|
allDay ? "bg-primary border-transparent text-white" : " border border-input"
|
|
13318
13418
|
),
|
|
13319
13419
|
children: [
|
|
13320
|
-
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
13420
|
+
/* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_react61.CalendarIcon, { size: 14, "aria-hidden": "true" }),
|
|
13321
13421
|
"Dia inteiro"
|
|
13322
13422
|
]
|
|
13323
13423
|
}
|
|
@@ -13376,7 +13476,7 @@ function EventDialog({
|
|
|
13376
13476
|
onClick: handleDelete,
|
|
13377
13477
|
size: "icon",
|
|
13378
13478
|
variant: "outline",
|
|
13379
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
|
|
13479
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_react61.TrashIcon, { "aria-hidden": "true", size: 16 })
|
|
13380
13480
|
}
|
|
13381
13481
|
),
|
|
13382
13482
|
/* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: "flex flex-1 justify-end gap-2", children: [
|
|
@@ -13391,10 +13491,10 @@ function EventDialog({
|
|
|
13391
13491
|
|
|
13392
13492
|
// src/components/event-calendar/EventItem.tsx
|
|
13393
13493
|
var import_date_fns9 = require("date-fns");
|
|
13394
|
-
var
|
|
13494
|
+
var import_react62 = require("react");
|
|
13395
13495
|
var import_jsx_runtime79 = require("react/jsx-runtime");
|
|
13396
13496
|
var formatTimeWithOptionalMinutes = (date) => {
|
|
13397
|
-
return (0, import_date_fns9.format)(date,
|
|
13497
|
+
return (0, import_date_fns9.format)(date, "HH:mm");
|
|
13398
13498
|
};
|
|
13399
13499
|
function EventWrapper({
|
|
13400
13500
|
event,
|
|
@@ -13454,15 +13554,15 @@ function EventItem({
|
|
|
13454
13554
|
onTouchStart
|
|
13455
13555
|
}) {
|
|
13456
13556
|
const eventColor = event.color;
|
|
13457
|
-
const displayStart = (0,
|
|
13557
|
+
const displayStart = (0, import_react62.useMemo)(() => {
|
|
13458
13558
|
return currentTime || new Date(event.start);
|
|
13459
13559
|
}, [currentTime, event.start]);
|
|
13460
|
-
const displayEnd = (0,
|
|
13560
|
+
const displayEnd = (0, import_react62.useMemo)(() => {
|
|
13461
13561
|
return currentTime ? new Date(
|
|
13462
13562
|
new Date(currentTime).getTime() + (new Date(event.end).getTime() - new Date(event.start).getTime())
|
|
13463
13563
|
) : new Date(event.end);
|
|
13464
13564
|
}, [currentTime, event.start, event.end]);
|
|
13465
|
-
const durationMinutes = (0,
|
|
13565
|
+
const durationMinutes = (0, import_react62.useMemo)(() => {
|
|
13466
13566
|
return (0, import_date_fns9.differenceInMinutes)(displayEnd, displayStart);
|
|
13467
13567
|
}, [displayStart, displayEnd]);
|
|
13468
13568
|
const getEventTime = () => {
|
|
@@ -13585,9 +13685,9 @@ function EventItem({
|
|
|
13585
13685
|
// src/components/event-calendar/EventsPopUp.tsx
|
|
13586
13686
|
var import_date_fns10 = require("date-fns");
|
|
13587
13687
|
var import_locale5 = require("date-fns/locale");
|
|
13588
|
-
var
|
|
13688
|
+
var import_react63 = require("react");
|
|
13589
13689
|
var import_framer_motion18 = require("framer-motion");
|
|
13590
|
-
var
|
|
13690
|
+
var import_react64 = require("@phosphor-icons/react");
|
|
13591
13691
|
var import_jsx_runtime80 = require("react/jsx-runtime");
|
|
13592
13692
|
function EventsPopup({
|
|
13593
13693
|
date,
|
|
@@ -13596,8 +13696,8 @@ function EventsPopup({
|
|
|
13596
13696
|
onClose,
|
|
13597
13697
|
onEventSelect
|
|
13598
13698
|
}) {
|
|
13599
|
-
const popupRef = (0,
|
|
13600
|
-
(0,
|
|
13699
|
+
const popupRef = (0, import_react63.useRef)(null);
|
|
13700
|
+
(0, import_react63.useEffect)(() => {
|
|
13601
13701
|
const handleClickOutside = (event) => {
|
|
13602
13702
|
if (popupRef.current && !popupRef.current.contains(event.target)) {
|
|
13603
13703
|
onClose();
|
|
@@ -13608,7 +13708,7 @@ function EventsPopup({
|
|
|
13608
13708
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
13609
13709
|
};
|
|
13610
13710
|
}, [onClose]);
|
|
13611
|
-
(0,
|
|
13711
|
+
(0, import_react63.useEffect)(() => {
|
|
13612
13712
|
const handleEscKey = (event) => {
|
|
13613
13713
|
if (event.key === "Escape") {
|
|
13614
13714
|
onClose();
|
|
@@ -13623,7 +13723,7 @@ function EventsPopup({
|
|
|
13623
13723
|
onEventSelect(event);
|
|
13624
13724
|
onClose();
|
|
13625
13725
|
};
|
|
13626
|
-
const adjustedPosition = (0,
|
|
13726
|
+
const adjustedPosition = (0, import_react63.useMemo)(() => {
|
|
13627
13727
|
const positionCopy = { ...position };
|
|
13628
13728
|
if (popupRef.current) {
|
|
13629
13729
|
const rect = popupRef.current.getBoundingClientRect();
|
|
@@ -13663,15 +13763,15 @@ function EventsPopup({
|
|
|
13663
13763
|
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
13664
13764
|
"button",
|
|
13665
13765
|
{
|
|
13666
|
-
"aria-label": "
|
|
13766
|
+
"aria-label": "Fechar",
|
|
13667
13767
|
className: "rounded-full p-1 hover:bg-muted",
|
|
13668
13768
|
onClick: onClose,
|
|
13669
13769
|
type: "button",
|
|
13670
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
|
|
13770
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_react64.XIcon, { className: "h-4 w-4" })
|
|
13671
13771
|
}
|
|
13672
13772
|
)
|
|
13673
13773
|
] }),
|
|
13674
|
-
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "space-y-2 p-3", children: events.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "py-2 text-muted-foreground text-sm", children: "
|
|
13774
|
+
/* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "space-y-2 p-3", children: events.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime80.jsx)("div", { className: "py-2 text-muted-foreground text-sm", children: "Nenhum evento" }) : events.map((event) => {
|
|
13675
13775
|
const eventStart = new Date(event.start);
|
|
13676
13776
|
const eventEnd = new Date(event.end);
|
|
13677
13777
|
const isFirstDay = (0, import_date_fns10.isSameDay)(date, eventStart);
|
|
@@ -13701,11 +13801,12 @@ function EventsPopup({
|
|
|
13701
13801
|
|
|
13702
13802
|
// src/components/event-calendar/hooks/use-current-time-indicator.ts
|
|
13703
13803
|
var import_date_fns11 = require("date-fns");
|
|
13704
|
-
var
|
|
13804
|
+
var import_locale6 = require("date-fns/locale");
|
|
13805
|
+
var import_react65 = require("react");
|
|
13705
13806
|
function useCurrentTimeIndicator(currentDate, view) {
|
|
13706
|
-
const [currentTimePosition, setCurrentTimePosition] = (0,
|
|
13707
|
-
const [currentTimeVisible, setCurrentTimeVisible] = (0,
|
|
13708
|
-
(0,
|
|
13807
|
+
const [currentTimePosition, setCurrentTimePosition] = (0, import_react65.useState)(0);
|
|
13808
|
+
const [currentTimeVisible, setCurrentTimeVisible] = (0, import_react65.useState)(false);
|
|
13809
|
+
(0, import_react65.useEffect)(() => {
|
|
13709
13810
|
const calculateTimePosition = () => {
|
|
13710
13811
|
const now = /* @__PURE__ */ new Date();
|
|
13711
13812
|
const hours = now.getHours();
|
|
@@ -13718,8 +13819,8 @@ function useCurrentTimeIndicator(currentDate, view) {
|
|
|
13718
13819
|
if (view === "day") {
|
|
13719
13820
|
isCurrentTimeVisible = (0, import_date_fns11.isSameDay)(now, currentDate);
|
|
13720
13821
|
} else if (view === "week") {
|
|
13721
|
-
const startOfWeekDate = (0, import_date_fns11.startOfWeek)(currentDate, {
|
|
13722
|
-
const endOfWeekDate = (0, import_date_fns11.endOfWeek)(currentDate, {
|
|
13822
|
+
const startOfWeekDate = (0, import_date_fns11.startOfWeek)(currentDate, { locale: import_locale6.ptBR });
|
|
13823
|
+
const endOfWeekDate = (0, import_date_fns11.endOfWeek)(currentDate, { locale: import_locale6.ptBR });
|
|
13723
13824
|
isCurrentTimeVisible = (0, import_date_fns11.isWithinInterval)(now, {
|
|
13724
13825
|
end: endOfWeekDate,
|
|
13725
13826
|
start: startOfWeekDate
|
|
@@ -13736,15 +13837,15 @@ function useCurrentTimeIndicator(currentDate, view) {
|
|
|
13736
13837
|
}
|
|
13737
13838
|
|
|
13738
13839
|
// src/components/event-calendar/hooks/use-event-visibility.ts
|
|
13739
|
-
var
|
|
13840
|
+
var import_react66 = require("react");
|
|
13740
13841
|
function useEventVisibility({
|
|
13741
13842
|
eventHeight,
|
|
13742
13843
|
eventGap
|
|
13743
13844
|
}) {
|
|
13744
|
-
const contentRef = (0,
|
|
13745
|
-
const observerRef = (0,
|
|
13746
|
-
const [contentHeight, setContentHeight] = (0,
|
|
13747
|
-
(0,
|
|
13845
|
+
const contentRef = (0, import_react66.useRef)(null);
|
|
13846
|
+
const observerRef = (0, import_react66.useRef)(null);
|
|
13847
|
+
const [contentHeight, setContentHeight] = (0, import_react66.useState)(null);
|
|
13848
|
+
(0, import_react66.useLayoutEffect)(() => {
|
|
13748
13849
|
if (!contentRef.current) return;
|
|
13749
13850
|
const updateHeight = () => {
|
|
13750
13851
|
if (contentRef.current) {
|
|
@@ -13764,7 +13865,7 @@ function useEventVisibility({
|
|
|
13764
13865
|
}
|
|
13765
13866
|
};
|
|
13766
13867
|
}, []);
|
|
13767
|
-
const getVisibleEventCount = (0,
|
|
13868
|
+
const getVisibleEventCount = (0, import_react66.useMemo)(() => {
|
|
13768
13869
|
return (totalEvents) => {
|
|
13769
13870
|
if (!contentHeight) return totalEvents;
|
|
13770
13871
|
const maxEvents = Math.floor(contentHeight / (eventHeight + eventGap));
|
|
@@ -13783,8 +13884,8 @@ function useEventVisibility({
|
|
|
13783
13884
|
|
|
13784
13885
|
// src/components/event-calendar/MonthView.tsx
|
|
13785
13886
|
var import_date_fns12 = require("date-fns");
|
|
13786
|
-
var
|
|
13787
|
-
var
|
|
13887
|
+
var import_locale7 = require("date-fns/locale");
|
|
13888
|
+
var import_react67 = require("react");
|
|
13788
13889
|
var import_jsx_runtime81 = require("react/jsx-runtime");
|
|
13789
13890
|
function MonthView({
|
|
13790
13891
|
currentDate,
|
|
@@ -13792,21 +13893,21 @@ function MonthView({
|
|
|
13792
13893
|
onEventSelect,
|
|
13793
13894
|
onEventCreate
|
|
13794
13895
|
}) {
|
|
13795
|
-
const days = (0,
|
|
13896
|
+
const days = (0, import_react67.useMemo)(() => {
|
|
13796
13897
|
const monthStart = (0, import_date_fns12.startOfMonth)(currentDate);
|
|
13797
13898
|
const monthEnd = (0, import_date_fns12.endOfMonth)(monthStart);
|
|
13798
13899
|
const calendarStart = (0, import_date_fns12.startOfWeek)(monthStart, { weekStartsOn: 0 });
|
|
13799
13900
|
const calendarEnd = (0, import_date_fns12.endOfWeek)(monthEnd, { weekStartsOn: 0 });
|
|
13800
13901
|
return (0, import_date_fns12.eachDayOfInterval)({ end: calendarEnd, start: calendarStart });
|
|
13801
13902
|
}, [currentDate]);
|
|
13802
|
-
const weekdays = (0,
|
|
13903
|
+
const weekdays = (0, import_react67.useMemo)(() => {
|
|
13803
13904
|
return Array.from({ length: 7 }).map((_, i) => {
|
|
13804
13905
|
const date = (0, import_date_fns12.addDays)((0, import_date_fns12.startOfWeek)(/* @__PURE__ */ new Date(), { weekStartsOn: 0 }), i);
|
|
13805
|
-
const short = (0, import_date_fns12.format)(date, "EEE", { locale:
|
|
13906
|
+
const short = (0, import_date_fns12.format)(date, "EEE", { locale: import_locale7.ptBR });
|
|
13806
13907
|
return short.charAt(0).toUpperCase() + short.slice(1);
|
|
13807
13908
|
});
|
|
13808
13909
|
}, []);
|
|
13809
|
-
const weeks = (0,
|
|
13910
|
+
const weeks = (0, import_react67.useMemo)(() => {
|
|
13810
13911
|
const result = [];
|
|
13811
13912
|
let week = [];
|
|
13812
13913
|
for (let i = 0; i < days.length; i++) {
|
|
@@ -13822,12 +13923,12 @@ function MonthView({
|
|
|
13822
13923
|
e.stopPropagation();
|
|
13823
13924
|
onEventSelect(event);
|
|
13824
13925
|
};
|
|
13825
|
-
const [isMounted, setIsMounted] = (0,
|
|
13926
|
+
const [isMounted, setIsMounted] = (0, import_react67.useState)(false);
|
|
13826
13927
|
const { contentRef, getVisibleEventCount } = useEventVisibility({
|
|
13827
13928
|
eventGap: EventGap,
|
|
13828
13929
|
eventHeight: EventHeight
|
|
13829
13930
|
});
|
|
13830
|
-
(0,
|
|
13931
|
+
(0, import_react67.useEffect)(() => {
|
|
13831
13932
|
setIsMounted(true);
|
|
13832
13933
|
}, []);
|
|
13833
13934
|
return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "contents", "data-slot": "month-view", children: [
|
|
@@ -13902,7 +14003,7 @@ function MonthView({
|
|
|
13902
14003
|
view: "month",
|
|
13903
14004
|
children: /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { "aria-hidden": true, className: "invisible", children: [
|
|
13904
14005
|
!event.allDay && /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("span", { children: [
|
|
13905
|
-
(0, import_date_fns12.format)(new Date(event.start), "
|
|
14006
|
+
(0, import_date_fns12.format)(new Date(event.start), "HH:mm"),
|
|
13906
14007
|
" "
|
|
13907
14008
|
] }),
|
|
13908
14009
|
event.title
|
|
@@ -13942,7 +14043,7 @@ function MonthView({
|
|
|
13942
14043
|
"aria-label": `Show ${remainingCount} more events on ${(0, import_date_fns12.format)(
|
|
13943
14044
|
day,
|
|
13944
14045
|
"PPP",
|
|
13945
|
-
{ locale:
|
|
14046
|
+
{ locale: import_locale7.ptBR }
|
|
13946
14047
|
)}`,
|
|
13947
14048
|
children: [
|
|
13948
14049
|
/* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("span", { className: "font-medium", children: [
|
|
@@ -13962,7 +14063,7 @@ function MonthView({
|
|
|
13962
14063
|
"--event-height": `${EventHeight}px`
|
|
13963
14064
|
},
|
|
13964
14065
|
children: /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "space-y-2", children: [
|
|
13965
|
-
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: "font-medium text-sm", children: (0, import_date_fns12.format)(day, "EEE d", { locale:
|
|
14066
|
+
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: "font-medium text-sm", children: (0, import_date_fns12.format)(day, "EEE d", { locale: import_locale7.ptBR }) }),
|
|
13966
14067
|
/* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: "space-y-1", children: sortEvents(allEvents).map((event) => {
|
|
13967
14068
|
const eventStart = new Date(event.start);
|
|
13968
14069
|
const eventEnd = new Date(event.end);
|
|
@@ -14083,8 +14184,8 @@ function addHoursToDate(date, hours) {
|
|
|
14083
14184
|
|
|
14084
14185
|
// src/components/event-calendar/WeekView.tsx
|
|
14085
14186
|
var import_date_fns14 = require("date-fns");
|
|
14086
|
-
var
|
|
14087
|
-
var
|
|
14187
|
+
var import_locale8 = require("date-fns/locale");
|
|
14188
|
+
var import_react68 = require("react");
|
|
14088
14189
|
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
14089
14190
|
function WeekView({
|
|
14090
14191
|
currentDate,
|
|
@@ -14092,23 +14193,23 @@ function WeekView({
|
|
|
14092
14193
|
onEventSelect,
|
|
14093
14194
|
onEventCreate
|
|
14094
14195
|
}) {
|
|
14095
|
-
const days = (0,
|
|
14196
|
+
const days = (0, import_react68.useMemo)(() => {
|
|
14096
14197
|
const weekStart2 = (0, import_date_fns14.startOfWeek)(currentDate, { weekStartsOn: 0 });
|
|
14097
14198
|
const weekEnd = (0, import_date_fns14.endOfWeek)(currentDate, { weekStartsOn: 0 });
|
|
14098
14199
|
return (0, import_date_fns14.eachDayOfInterval)({ end: weekEnd, start: weekStart2 });
|
|
14099
14200
|
}, [currentDate]);
|
|
14100
|
-
const weekStart = (0,
|
|
14201
|
+
const weekStart = (0, import_react68.useMemo)(
|
|
14101
14202
|
() => (0, import_date_fns14.startOfWeek)(currentDate, { weekStartsOn: 0 }),
|
|
14102
14203
|
[currentDate]
|
|
14103
14204
|
);
|
|
14104
|
-
const hours = (0,
|
|
14205
|
+
const hours = (0, import_react68.useMemo)(() => {
|
|
14105
14206
|
const dayStart = (0, import_date_fns14.startOfDay)(currentDate);
|
|
14106
14207
|
return (0, import_date_fns14.eachHourOfInterval)({
|
|
14107
14208
|
end: (0, import_date_fns14.addHours)(dayStart, EndHour - 1),
|
|
14108
14209
|
start: (0, import_date_fns14.addHours)(dayStart, StartHour)
|
|
14109
14210
|
});
|
|
14110
14211
|
}, [currentDate]);
|
|
14111
|
-
const allDayEvents = (0,
|
|
14212
|
+
const allDayEvents = (0, import_react68.useMemo)(() => {
|
|
14112
14213
|
return events.filter((event) => {
|
|
14113
14214
|
return event.allDay || isMultiDayEvent(event);
|
|
14114
14215
|
}).filter((event) => {
|
|
@@ -14119,7 +14220,7 @@ function WeekView({
|
|
|
14119
14220
|
);
|
|
14120
14221
|
});
|
|
14121
14222
|
}, [events, days]);
|
|
14122
|
-
const processedDayEvents = (0,
|
|
14223
|
+
const processedDayEvents = (0, import_react68.useMemo)(() => {
|
|
14123
14224
|
const result = days.map((day) => {
|
|
14124
14225
|
const dayEvents = events.filter((event) => {
|
|
14125
14226
|
if (event.allDay || isMultiDayEvent(event)) return false;
|
|
@@ -14212,11 +14313,11 @@ function WeekView({
|
|
|
14212
14313
|
"data-today": (0, import_date_fns14.isToday)(day) || void 0,
|
|
14213
14314
|
children: [
|
|
14214
14315
|
/* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("span", { "aria-hidden": "true", className: "sm:hidden", children: [
|
|
14215
|
-
(0, import_date_fns14.format)(day, "EEE", { locale:
|
|
14316
|
+
(0, import_date_fns14.format)(day, "EEE", { locale: import_locale8.ptBR })[0],
|
|
14216
14317
|
" ",
|
|
14217
|
-
(0, import_date_fns14.format)(day, "d", { locale:
|
|
14318
|
+
(0, import_date_fns14.format)(day, "d", { locale: import_locale8.ptBR })
|
|
14218
14319
|
] }),
|
|
14219
|
-
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "max-sm:hidden", children: (0, import_date_fns14.format)(day, "EEE dd", { locale:
|
|
14320
|
+
/* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "max-sm:hidden", children: (0, import_date_fns14.format)(day, "EEE dd", { locale: import_locale8.ptBR }) })
|
|
14220
14321
|
]
|
|
14221
14322
|
},
|
|
14222
14323
|
day.toString()
|
|
@@ -14275,7 +14376,7 @@ function WeekView({
|
|
|
14275
14376
|
"div",
|
|
14276
14377
|
{
|
|
14277
14378
|
className: "relative min-h-[var(--week-cells-height)] border-border/70 border-b last:border-b-0",
|
|
14278
|
-
children: index > 0 && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "-top-3 absolute left-0 flex h-6 w-16 max-w-full items-center justify-end bg-background pe-2 text-[10px] text-muted-foreground/70 sm:pe-4 sm:text-xs", children: (0, import_date_fns14.format)(hour, "
|
|
14379
|
+
children: index > 0 && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "-top-3 absolute left-0 flex h-6 w-16 max-w-full items-center justify-end bg-background pe-2 text-[10px] text-muted-foreground/70 sm:pe-4 sm:text-xs", children: (0, import_date_fns14.format)(hour, "HH:mm") })
|
|
14279
14380
|
},
|
|
14280
14381
|
hour.toString()
|
|
14281
14382
|
)) }),
|
|
@@ -14365,13 +14466,13 @@ function WeekView({
|
|
|
14365
14466
|
}
|
|
14366
14467
|
|
|
14367
14468
|
// src/hooks/use-drag.tsx
|
|
14368
|
-
var
|
|
14469
|
+
var import_react69 = require("react");
|
|
14369
14470
|
var useDrag = (options = {}) => {
|
|
14370
|
-
const [isDragging, setIsDragging] = (0,
|
|
14371
|
-
const [positions, setPositions] = (0,
|
|
14372
|
-
const dragStartPos = (0,
|
|
14373
|
-
const dragId = (0,
|
|
14374
|
-
const handleMouseDown = (0,
|
|
14471
|
+
const [isDragging, setIsDragging] = (0, import_react69.useState)(null);
|
|
14472
|
+
const [positions, setPositions] = (0, import_react69.useState)({});
|
|
14473
|
+
const dragStartPos = (0, import_react69.useRef)(null);
|
|
14474
|
+
const dragId = (0, import_react69.useRef)(null);
|
|
14475
|
+
const handleMouseDown = (0, import_react69.useCallback)((id, e) => {
|
|
14375
14476
|
e.preventDefault();
|
|
14376
14477
|
const currentPosition = positions[id] || { top: 0, left: 0 };
|
|
14377
14478
|
dragStartPos.current = {
|
|
@@ -14384,7 +14485,7 @@ var useDrag = (options = {}) => {
|
|
|
14384
14485
|
setIsDragging(id);
|
|
14385
14486
|
options.onDragStart?.(id);
|
|
14386
14487
|
}, [positions, options]);
|
|
14387
|
-
const handleMouseMove = (0,
|
|
14488
|
+
const handleMouseMove = (0, import_react69.useCallback)((e) => {
|
|
14388
14489
|
if (!isDragging || !dragStartPos.current || !dragId.current) return;
|
|
14389
14490
|
const deltaX = e.clientX - dragStartPos.current.x;
|
|
14390
14491
|
const deltaY = e.clientY - dragStartPos.current.y;
|
|
@@ -14400,7 +14501,7 @@ var useDrag = (options = {}) => {
|
|
|
14400
14501
|
}));
|
|
14401
14502
|
options.onDrag?.(dragId.current, newPosition);
|
|
14402
14503
|
}, [isDragging, options]);
|
|
14403
|
-
const handleMouseUp = (0,
|
|
14504
|
+
const handleMouseUp = (0, import_react69.useCallback)(() => {
|
|
14404
14505
|
if (dragId.current) {
|
|
14405
14506
|
options.onDragEnd?.(dragId.current);
|
|
14406
14507
|
}
|
|
@@ -14408,7 +14509,7 @@ var useDrag = (options = {}) => {
|
|
|
14408
14509
|
dragStartPos.current = null;
|
|
14409
14510
|
dragId.current = null;
|
|
14410
14511
|
}, [options]);
|
|
14411
|
-
(0,
|
|
14512
|
+
(0, import_react69.useEffect)(() => {
|
|
14412
14513
|
if (isDragging) {
|
|
14413
14514
|
document.addEventListener("mousemove", handleMouseMove);
|
|
14414
14515
|
document.addEventListener("mouseup", handleMouseUp);
|
|
@@ -14420,16 +14521,16 @@ var useDrag = (options = {}) => {
|
|
|
14420
14521
|
};
|
|
14421
14522
|
}
|
|
14422
14523
|
}, [isDragging, handleMouseMove, handleMouseUp]);
|
|
14423
|
-
const setPosition = (0,
|
|
14524
|
+
const setPosition = (0, import_react69.useCallback)((id, position) => {
|
|
14424
14525
|
setPositions((prev) => ({
|
|
14425
14526
|
...prev,
|
|
14426
14527
|
[id]: position
|
|
14427
14528
|
}));
|
|
14428
14529
|
}, []);
|
|
14429
|
-
const getPosition = (0,
|
|
14530
|
+
const getPosition = (0, import_react69.useCallback)((id) => {
|
|
14430
14531
|
return positions[id] || { top: 0, left: 0 };
|
|
14431
14532
|
}, [positions]);
|
|
14432
|
-
const isElementDragging = (0,
|
|
14533
|
+
const isElementDragging = (0, import_react69.useCallback)((id) => {
|
|
14433
14534
|
return isDragging === id;
|
|
14434
14535
|
}, [isDragging]);
|
|
14435
14536
|
return {
|