hazo_ui 4.9.0 → 5.1.1
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/CHANGE_LOG.md +138 -0
- package/README.md +8 -1
- package/dist/index.cjs +1125 -628
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +129 -77
- package/dist/index.d.ts +129 -77
- package/dist/index.js +991 -517
- package/dist/index.js.map +1 -1
- package/dist/index.utils-DZVbQXFR.d.cts +20 -0
- package/dist/index.utils-DZVbQXFR.d.ts +20 -0
- package/dist/index.utils.cjs.map +1 -1
- package/dist/index.utils.d.cts +2 -10
- package/dist/index.utils.d.ts +2 -10
- package/dist/index.utils.js.map +1 -1
- package/dist/test-harness/index.cjs.map +1 -1
- package/dist/test-harness/index.js.map +1 -1
- package/package.json +4 -10
- package/dist/styles.css +0 -156
- package/tailwind.preset.d.ts +0 -8
- package/tailwind.preset.js +0 -91
package/dist/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { clsx } from 'clsx';
|
|
3
3
|
import { twMerge } from 'tailwind-merge';
|
|
4
|
-
import * as
|
|
5
|
-
import
|
|
4
|
+
import * as React27 from 'react';
|
|
5
|
+
import React27__default, { lazy, useRef, useState, useCallback, useEffect, useMemo, Fragment, Suspense } from 'react';
|
|
6
6
|
import { generateRequestId } from 'hazo_core';
|
|
7
7
|
import { withContext, setBrowserCorrelationId } from 'hazo_core/client';
|
|
8
8
|
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
9
9
|
import { Slot } from '@radix-ui/react-slot';
|
|
10
10
|
import { cva } from 'class-variance-authority';
|
|
11
11
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
12
|
-
import { X, ChevronDown, ChevronUp, Check, Circle, ChevronRight,
|
|
12
|
+
import { X, ChevronDown, ChevronUp, Check, Circle, ChevronRight, ChevronLeft, Filter, Plus, ArrowUpDown, icons, Loader2, AlertTriangle, OctagonAlert, CheckCircle2, ChevronsUpDown, Download, Share2, Copy, GripVertical, ArrowUp, ArrowDown, Pencil, Calendar as Calendar$1 } from 'lucide-react';
|
|
13
13
|
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
14
14
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
15
15
|
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
@@ -30,6 +30,7 @@ import * as IoIcons from 'react-icons/io5';
|
|
|
30
30
|
import * as RiIcons from 'react-icons/ri';
|
|
31
31
|
import * as TbIcons from 'react-icons/tb';
|
|
32
32
|
import * as CiIcons from 'react-icons/ci';
|
|
33
|
+
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
33
34
|
import { ReactNodeViewRenderer, NodeViewWrapper, useEditor, EditorContent } from '@tiptap/react';
|
|
34
35
|
import StarterKit from '@tiptap/starter-kit';
|
|
35
36
|
import { TextStyle } from '@tiptap/extension-text-style';
|
|
@@ -53,7 +54,6 @@ import TaskItem from '@tiptap/extension-task-item';
|
|
|
53
54
|
import { LuBold, LuItalic, LuUnderline, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignVerticalJustifyStart, LuAlignVerticalJustifyCenter, LuAlignVerticalJustifyEnd, LuList, LuUndo2, LuRedo2, LuMinus, LuPlus, LuStrikethrough, LuSubscript, LuSuperscript, LuLink, LuRemoveFormatting, LuPalette, LuHighlighter, LuAlignJustify, LuListOrdered, LuListChecks, LuIndentDecrease, LuIndentIncrease, LuTable, LuTableRowsSplit, LuTableColumnsSplit, LuTrash2, LuGrid3X3, LuVariable, LuPaperclip, LuX, LuImage, LuFileText, LuFileCode, LuFile } from 'react-icons/lu';
|
|
54
55
|
import { RxDividerHorizontal } from 'react-icons/rx';
|
|
55
56
|
import { Extension, Node, mergeAttributes } from '@tiptap/core';
|
|
56
|
-
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
57
57
|
import { commands } from '@uiw/react-md-editor';
|
|
58
58
|
import '@uiw/react-md-editor/markdown-editor.css';
|
|
59
59
|
import '@uiw/react-markdown-preview/markdown.css';
|
|
@@ -77,6 +77,7 @@ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
|
77
77
|
import { Toaster, toast } from 'sonner';
|
|
78
78
|
export { toast as rawToast } from 'sonner';
|
|
79
79
|
import { useHazoState } from 'hazo_state/client';
|
|
80
|
+
export { HazoThemeProvider, ThemeScript, ThemeSetPicker, ThemeToggle, useTheme } from 'hazo_theme/client';
|
|
80
81
|
|
|
81
82
|
var __create = Object.create;
|
|
82
83
|
var __defProp = Object.defineProperty;
|
|
@@ -138,16 +139,28 @@ var require_objectWithoutPropertiesLoose = __commonJS({
|
|
|
138
139
|
function cn(...inputs) {
|
|
139
140
|
return twMerge(clsx(inputs));
|
|
140
141
|
}
|
|
142
|
+
function safeHref(url) {
|
|
143
|
+
if (!url) return void 0;
|
|
144
|
+
const trimmed = url.trim();
|
|
145
|
+
const lower = trimmed.toLowerCase();
|
|
146
|
+
if (lower.startsWith("http://") || lower.startsWith("https://") || lower.startsWith("mailto:")) {
|
|
147
|
+
return trimmed;
|
|
148
|
+
}
|
|
149
|
+
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
150
|
+
return trimmed;
|
|
151
|
+
}
|
|
152
|
+
return void 0;
|
|
153
|
+
}
|
|
141
154
|
function HazoContextProvider({
|
|
142
155
|
correlationId,
|
|
143
156
|
userId,
|
|
144
157
|
children
|
|
145
158
|
}) {
|
|
146
|
-
const id =
|
|
159
|
+
const id = React27.useMemo(
|
|
147
160
|
() => correlationId ?? generateRequestId(),
|
|
148
161
|
[correlationId]
|
|
149
162
|
);
|
|
150
|
-
|
|
163
|
+
React27.useEffect(() => {
|
|
151
164
|
withContext({ correlationId: id, userId }, () => {
|
|
152
165
|
setBrowserCorrelationId(id);
|
|
153
166
|
});
|
|
@@ -231,7 +244,7 @@ var buttonVariants = cva(
|
|
|
231
244
|
}
|
|
232
245
|
}
|
|
233
246
|
);
|
|
234
|
-
var Button =
|
|
247
|
+
var Button = React27.forwardRef(
|
|
235
248
|
({ className, variant, size, asChild = false, style, ...props }, ref) => {
|
|
236
249
|
const Comp = asChild ? Slot : "button";
|
|
237
250
|
return /* @__PURE__ */ jsx(
|
|
@@ -250,7 +263,7 @@ var Dialog = DialogPrimitive.Root;
|
|
|
250
263
|
var DialogTrigger = DialogPrimitive.Trigger;
|
|
251
264
|
var DialogPortal = DialogPrimitive.Portal;
|
|
252
265
|
var DialogClose = DialogPrimitive.Close;
|
|
253
|
-
var DialogOverlay =
|
|
266
|
+
var DialogOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
254
267
|
DialogPrimitive.Overlay,
|
|
255
268
|
{
|
|
256
269
|
ref,
|
|
@@ -262,7 +275,7 @@ var DialogOverlay = React26.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
262
275
|
}
|
|
263
276
|
));
|
|
264
277
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
265
|
-
var DialogContent =
|
|
278
|
+
var DialogContent = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
266
279
|
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
267
280
|
/* @__PURE__ */ jsxs(
|
|
268
281
|
DialogPrimitive.Content,
|
|
@@ -312,7 +325,7 @@ var DialogFooter = ({
|
|
|
312
325
|
}
|
|
313
326
|
);
|
|
314
327
|
DialogFooter.displayName = "DialogFooter";
|
|
315
|
-
var DialogTitle =
|
|
328
|
+
var DialogTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
316
329
|
DialogPrimitive.Title,
|
|
317
330
|
{
|
|
318
331
|
ref,
|
|
@@ -325,7 +338,7 @@ var DialogTitle = React26.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
325
338
|
}
|
|
326
339
|
));
|
|
327
340
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
328
|
-
var DialogDescription =
|
|
341
|
+
var DialogDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
329
342
|
DialogPrimitive.Description,
|
|
330
343
|
{
|
|
331
344
|
ref,
|
|
@@ -334,7 +347,7 @@ var DialogDescription = React26.forwardRef(({ className, ...props }, ref) => /*
|
|
|
334
347
|
}
|
|
335
348
|
));
|
|
336
349
|
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
337
|
-
var Command =
|
|
350
|
+
var Command = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
338
351
|
"div",
|
|
339
352
|
{
|
|
340
353
|
ref,
|
|
@@ -346,7 +359,7 @@ var Command = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
346
359
|
}
|
|
347
360
|
));
|
|
348
361
|
Command.displayName = "Command";
|
|
349
|
-
var CommandInput =
|
|
362
|
+
var CommandInput = React27.forwardRef(({ className, onValueChange, onChange, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
350
363
|
"input",
|
|
351
364
|
{
|
|
352
365
|
ref,
|
|
@@ -362,7 +375,7 @@ var CommandInput = React26.forwardRef(({ className, onValueChange, onChange, ...
|
|
|
362
375
|
}
|
|
363
376
|
));
|
|
364
377
|
CommandInput.displayName = "CommandInput";
|
|
365
|
-
var CommandList =
|
|
378
|
+
var CommandList = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
366
379
|
"div",
|
|
367
380
|
{
|
|
368
381
|
ref,
|
|
@@ -371,7 +384,7 @@ var CommandList = React26.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
371
384
|
}
|
|
372
385
|
));
|
|
373
386
|
CommandList.displayName = "CommandList";
|
|
374
|
-
var CommandEmpty =
|
|
387
|
+
var CommandEmpty = React27.forwardRef((props, ref) => /* @__PURE__ */ jsx(
|
|
375
388
|
"div",
|
|
376
389
|
{
|
|
377
390
|
ref,
|
|
@@ -380,7 +393,7 @@ var CommandEmpty = React26.forwardRef((props, ref) => /* @__PURE__ */ jsx(
|
|
|
380
393
|
}
|
|
381
394
|
));
|
|
382
395
|
CommandEmpty.displayName = "CommandEmpty";
|
|
383
|
-
var CommandGroup =
|
|
396
|
+
var CommandGroup = React27.forwardRef(({ className, heading, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
384
397
|
"div",
|
|
385
398
|
{
|
|
386
399
|
ref,
|
|
@@ -396,7 +409,7 @@ var CommandGroup = React26.forwardRef(({ className, heading, children, ...props
|
|
|
396
409
|
}
|
|
397
410
|
));
|
|
398
411
|
CommandGroup.displayName = "CommandGroup";
|
|
399
|
-
var CommandItem =
|
|
412
|
+
var CommandItem = React27.forwardRef(({ className, onSelect, value, selected, style, ...props }, ref) => {
|
|
400
413
|
const handleClick = () => {
|
|
401
414
|
if (onSelect && value) {
|
|
402
415
|
onSelect(value);
|
|
@@ -427,7 +440,7 @@ var CommandItem = React26.forwardRef(({ className, onSelect, value, selected, st
|
|
|
427
440
|
CommandItem.displayName = "CommandItem";
|
|
428
441
|
var Popover = PopoverPrimitive.Root;
|
|
429
442
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
430
|
-
var PopoverContent =
|
|
443
|
+
var PopoverContent = React27.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
431
444
|
PopoverPrimitive.Content,
|
|
432
445
|
{
|
|
433
446
|
ref,
|
|
@@ -441,7 +454,7 @@ var PopoverContent = React26.forwardRef(({ className, align = "center", sideOffs
|
|
|
441
454
|
}
|
|
442
455
|
) }));
|
|
443
456
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
444
|
-
var Input =
|
|
457
|
+
var Input = React27.forwardRef(
|
|
445
458
|
({ className, type, ...props }, ref) => {
|
|
446
459
|
return /* @__PURE__ */ jsx(
|
|
447
460
|
"input",
|
|
@@ -461,7 +474,7 @@ Input.displayName = "Input";
|
|
|
461
474
|
var Select = SelectPrimitive.Root;
|
|
462
475
|
var SelectGroup = SelectPrimitive.Group;
|
|
463
476
|
var SelectValue = SelectPrimitive.Value;
|
|
464
|
-
var SelectTrigger =
|
|
477
|
+
var SelectTrigger = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
465
478
|
SelectPrimitive.Trigger,
|
|
466
479
|
{
|
|
467
480
|
ref,
|
|
@@ -477,7 +490,7 @@ var SelectTrigger = React26.forwardRef(({ className, children, ...props }, ref)
|
|
|
477
490
|
}
|
|
478
491
|
));
|
|
479
492
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
480
|
-
var SelectScrollUpButton =
|
|
493
|
+
var SelectScrollUpButton = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
481
494
|
SelectPrimitive.ScrollUpButton,
|
|
482
495
|
{
|
|
483
496
|
ref,
|
|
@@ -490,7 +503,7 @@ var SelectScrollUpButton = React26.forwardRef(({ className, ...props }, ref) =>
|
|
|
490
503
|
}
|
|
491
504
|
));
|
|
492
505
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
493
|
-
var SelectScrollDownButton =
|
|
506
|
+
var SelectScrollDownButton = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
494
507
|
SelectPrimitive.ScrollDownButton,
|
|
495
508
|
{
|
|
496
509
|
ref,
|
|
@@ -503,7 +516,7 @@ var SelectScrollDownButton = React26.forwardRef(({ className, ...props }, ref) =
|
|
|
503
516
|
}
|
|
504
517
|
));
|
|
505
518
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
506
|
-
var SelectContent =
|
|
519
|
+
var SelectContent = React27.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
|
|
507
520
|
SelectPrimitive.Content,
|
|
508
521
|
{
|
|
509
522
|
ref,
|
|
@@ -531,7 +544,7 @@ var SelectContent = React26.forwardRef(({ className, children, position = "poppe
|
|
|
531
544
|
}
|
|
532
545
|
) }));
|
|
533
546
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
534
|
-
var SelectLabel =
|
|
547
|
+
var SelectLabel = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
535
548
|
SelectPrimitive.Label,
|
|
536
549
|
{
|
|
537
550
|
ref,
|
|
@@ -540,7 +553,7 @@ var SelectLabel = React26.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
540
553
|
}
|
|
541
554
|
));
|
|
542
555
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
543
|
-
var SelectItem =
|
|
556
|
+
var SelectItem = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
544
557
|
SelectPrimitive.Item,
|
|
545
558
|
{
|
|
546
559
|
ref,
|
|
@@ -556,7 +569,7 @@ var SelectItem = React26.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
556
569
|
}
|
|
557
570
|
));
|
|
558
571
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
559
|
-
var SelectSeparator =
|
|
572
|
+
var SelectSeparator = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
560
573
|
SelectPrimitive.Separator,
|
|
561
574
|
{
|
|
562
575
|
ref,
|
|
@@ -568,7 +581,7 @@ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
|
568
581
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
569
582
|
var Tooltip = TooltipPrimitive.Root;
|
|
570
583
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
571
|
-
var TooltipContent =
|
|
584
|
+
var TooltipContent = React27.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
572
585
|
TooltipPrimitive.Content,
|
|
573
586
|
{
|
|
574
587
|
ref,
|
|
@@ -1430,7 +1443,7 @@ function HazoUiMultiSortDialog({
|
|
|
1430
1443
|
] })
|
|
1431
1444
|
] });
|
|
1432
1445
|
}
|
|
1433
|
-
var RadioGroup =
|
|
1446
|
+
var RadioGroup = React27.forwardRef(({ className, ...props }, ref) => {
|
|
1434
1447
|
return /* @__PURE__ */ jsx(
|
|
1435
1448
|
RadioGroupPrimitive.Root,
|
|
1436
1449
|
{
|
|
@@ -1441,7 +1454,7 @@ var RadioGroup = React26.forwardRef(({ className, ...props }, ref) => {
|
|
|
1441
1454
|
);
|
|
1442
1455
|
});
|
|
1443
1456
|
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
1444
|
-
var RadioGroupItem =
|
|
1457
|
+
var RadioGroupItem = React27.forwardRef(({ className, ...props }, ref) => {
|
|
1445
1458
|
return /* @__PURE__ */ jsx(
|
|
1446
1459
|
RadioGroupPrimitive.Item,
|
|
1447
1460
|
{
|
|
@@ -1804,6 +1817,368 @@ function HazoUiPillRadio({
|
|
|
1804
1817
|
}
|
|
1805
1818
|
) });
|
|
1806
1819
|
}
|
|
1820
|
+
var Tabs = TabsPrimitive.Root;
|
|
1821
|
+
var TabsList = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1822
|
+
TabsPrimitive.List,
|
|
1823
|
+
{
|
|
1824
|
+
ref,
|
|
1825
|
+
className: cn(
|
|
1826
|
+
"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
|
|
1827
|
+
className
|
|
1828
|
+
),
|
|
1829
|
+
...props
|
|
1830
|
+
}
|
|
1831
|
+
));
|
|
1832
|
+
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
1833
|
+
var TabsTrigger = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1834
|
+
TabsPrimitive.Trigger,
|
|
1835
|
+
{
|
|
1836
|
+
ref,
|
|
1837
|
+
className: cn(
|
|
1838
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",
|
|
1839
|
+
className
|
|
1840
|
+
),
|
|
1841
|
+
...props
|
|
1842
|
+
}
|
|
1843
|
+
));
|
|
1844
|
+
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
1845
|
+
var TabsContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1846
|
+
TabsPrimitive.Content,
|
|
1847
|
+
{
|
|
1848
|
+
ref,
|
|
1849
|
+
className: cn(
|
|
1850
|
+
"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
1851
|
+
className
|
|
1852
|
+
),
|
|
1853
|
+
...props
|
|
1854
|
+
}
|
|
1855
|
+
));
|
|
1856
|
+
TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
1857
|
+
function isLucideValue(value) {
|
|
1858
|
+
return value.startsWith("lucide:");
|
|
1859
|
+
}
|
|
1860
|
+
function get_lucide_component(name) {
|
|
1861
|
+
return icons[name] || null;
|
|
1862
|
+
}
|
|
1863
|
+
function HazoUiIcon({ value, size = 18, className }) {
|
|
1864
|
+
if (isLucideValue(value)) {
|
|
1865
|
+
const name = value.slice("lucide:".length);
|
|
1866
|
+
const Cmp = get_lucide_component(name);
|
|
1867
|
+
if (!Cmp) return null;
|
|
1868
|
+
return /* @__PURE__ */ jsx(Cmp, { size, className });
|
|
1869
|
+
}
|
|
1870
|
+
return /* @__PURE__ */ jsx("span", { className: cn("cls_hazo_ui_icon_emoji", className), style: { fontSize: size }, children: value });
|
|
1871
|
+
}
|
|
1872
|
+
var TOOLS_ICONS = [
|
|
1873
|
+
"Wrench",
|
|
1874
|
+
"Hammer",
|
|
1875
|
+
"Drill",
|
|
1876
|
+
"ToolCase",
|
|
1877
|
+
"PaintRoller",
|
|
1878
|
+
"PaintBucket",
|
|
1879
|
+
"Ruler",
|
|
1880
|
+
"Cog",
|
|
1881
|
+
"Bolt",
|
|
1882
|
+
"Pipette",
|
|
1883
|
+
"Wind",
|
|
1884
|
+
"Plug",
|
|
1885
|
+
"Lightbulb",
|
|
1886
|
+
"Axe",
|
|
1887
|
+
"Shovel"
|
|
1888
|
+
];
|
|
1889
|
+
var HOME_ICONS = [
|
|
1890
|
+
"House",
|
|
1891
|
+
"DoorOpen",
|
|
1892
|
+
"Bath",
|
|
1893
|
+
"ShowerHead",
|
|
1894
|
+
"Sofa",
|
|
1895
|
+
"Bed",
|
|
1896
|
+
"Refrigerator",
|
|
1897
|
+
"WashingMachine",
|
|
1898
|
+
"Fence",
|
|
1899
|
+
"Key",
|
|
1900
|
+
"Lock",
|
|
1901
|
+
"Warehouse"
|
|
1902
|
+
];
|
|
1903
|
+
var WEATHER_ICONS = [
|
|
1904
|
+
"Sun",
|
|
1905
|
+
"CloudRain",
|
|
1906
|
+
"Snowflake",
|
|
1907
|
+
"Thermometer",
|
|
1908
|
+
"Wind",
|
|
1909
|
+
"Droplet",
|
|
1910
|
+
"Flame",
|
|
1911
|
+
"CloudSnow",
|
|
1912
|
+
"Zap"
|
|
1913
|
+
];
|
|
1914
|
+
var NATURE_ICONS = ["Leaf", "TreePine", "Trees", "Flower", "Sprout", "Bug", "Sun", "Droplets"];
|
|
1915
|
+
var SYMBOLS_ICONS = [
|
|
1916
|
+
"Star",
|
|
1917
|
+
"Heart",
|
|
1918
|
+
"Check",
|
|
1919
|
+
"Circle",
|
|
1920
|
+
"Square",
|
|
1921
|
+
"Triangle",
|
|
1922
|
+
"Hexagon",
|
|
1923
|
+
"Tag",
|
|
1924
|
+
"Bell",
|
|
1925
|
+
"Settings",
|
|
1926
|
+
"Wrench"
|
|
1927
|
+
];
|
|
1928
|
+
var LUCIDE_GROUPS = [
|
|
1929
|
+
{ key: "tools", label: "Tools", icons: TOOLS_ICONS },
|
|
1930
|
+
{ key: "home", label: "Home", icons: HOME_ICONS },
|
|
1931
|
+
{ key: "weather", label: "Weather", icons: WEATHER_ICONS },
|
|
1932
|
+
{ key: "nature", label: "Nature", icons: NATURE_ICONS },
|
|
1933
|
+
{ key: "symbols", label: "Symbols", icons: SYMBOLS_ICONS }
|
|
1934
|
+
];
|
|
1935
|
+
var EMOJI_ITEMS = [
|
|
1936
|
+
// Faces
|
|
1937
|
+
"\u{1F600}",
|
|
1938
|
+
"\u{1F603}",
|
|
1939
|
+
"\u{1F604}",
|
|
1940
|
+
"\u{1F601}",
|
|
1941
|
+
"\u{1F606}",
|
|
1942
|
+
"\u{1F605}",
|
|
1943
|
+
"\u{1F642}",
|
|
1944
|
+
"\u{1F609}",
|
|
1945
|
+
"\u{1F60A}",
|
|
1946
|
+
"\u{1F60D}",
|
|
1947
|
+
"\u{1F914}",
|
|
1948
|
+
"\u{1F610}",
|
|
1949
|
+
"\u{1F634}",
|
|
1950
|
+
"\u{1F60E}",
|
|
1951
|
+
"\u{1F917}",
|
|
1952
|
+
"\u{1F973}",
|
|
1953
|
+
"\u{1F607}",
|
|
1954
|
+
"\u{1F643}",
|
|
1955
|
+
"\u{1F62C}",
|
|
1956
|
+
"\u{1F929}",
|
|
1957
|
+
// People / hands
|
|
1958
|
+
"\u{1F44D}",
|
|
1959
|
+
"\u{1F44E}",
|
|
1960
|
+
"\u{1F44F}",
|
|
1961
|
+
"\u{1F64C}",
|
|
1962
|
+
"\u{1F91D}",
|
|
1963
|
+
"\u{1F44B}",
|
|
1964
|
+
"\u{1F4AA}",
|
|
1965
|
+
"\u{1F64F}",
|
|
1966
|
+
"\u{1F440}",
|
|
1967
|
+
"\u{1F9D1}\u200D\u{1F527}",
|
|
1968
|
+
// Objects / tools
|
|
1969
|
+
"\u{1F527}",
|
|
1970
|
+
"\u{1F528}",
|
|
1971
|
+
"\u{1F6E0}\uFE0F",
|
|
1972
|
+
"\u2699\uFE0F",
|
|
1973
|
+
"\u{1FA9B}",
|
|
1974
|
+
"\u{1FA9A}",
|
|
1975
|
+
"\u{1F9F0}",
|
|
1976
|
+
"\u{1F529}",
|
|
1977
|
+
"\u26CF\uFE0F",
|
|
1978
|
+
"\u{1F9F1}",
|
|
1979
|
+
"\u{1F511}",
|
|
1980
|
+
"\u{1F512}",
|
|
1981
|
+
"\u{1F50B}",
|
|
1982
|
+
"\u{1F4A1}",
|
|
1983
|
+
"\u{1F50C}",
|
|
1984
|
+
"\u{1F9EF}",
|
|
1985
|
+
"\u{1FA9C}",
|
|
1986
|
+
"\u{1F9F2}",
|
|
1987
|
+
"\u{1F4CF}",
|
|
1988
|
+
"\u{1F4D0}",
|
|
1989
|
+
// Home
|
|
1990
|
+
"\u{1F3E0}",
|
|
1991
|
+
"\u{1F3E1}",
|
|
1992
|
+
"\u{1F3E2}",
|
|
1993
|
+
"\u{1F3ED}",
|
|
1994
|
+
"\u{1F6AA}",
|
|
1995
|
+
"\u{1F6CB}\uFE0F",
|
|
1996
|
+
"\u{1F6C1}",
|
|
1997
|
+
"\u{1F6BF}",
|
|
1998
|
+
"\u{1F6CF}\uFE0F",
|
|
1999
|
+
"\u{1FA9F}",
|
|
2000
|
+
// Weather / nature
|
|
2001
|
+
"\u2600\uFE0F",
|
|
2002
|
+
"\u{1F324}\uFE0F",
|
|
2003
|
+
"\u26C5",
|
|
2004
|
+
"\u{1F327}\uFE0F",
|
|
2005
|
+
"\u26C8\uFE0F",
|
|
2006
|
+
"\u{1F329}\uFE0F",
|
|
2007
|
+
"\u2744\uFE0F",
|
|
2008
|
+
"\u{1F32C}\uFE0F",
|
|
2009
|
+
"\u{1F4A7}",
|
|
2010
|
+
"\u{1F525}",
|
|
2011
|
+
"\u{1F308}",
|
|
2012
|
+
"\u{1F30A}",
|
|
2013
|
+
"\u{1F331}",
|
|
2014
|
+
"\u{1F333}",
|
|
2015
|
+
"\u{1F332}",
|
|
2016
|
+
"\u{1F343}",
|
|
2017
|
+
"\u{1F338}",
|
|
2018
|
+
"\u{1F33B}",
|
|
2019
|
+
"\u{1F342}",
|
|
2020
|
+
"\u{1F335}",
|
|
2021
|
+
// Transport
|
|
2022
|
+
"\u{1F697}",
|
|
2023
|
+
"\u{1F69A}",
|
|
2024
|
+
"\u{1F69B}",
|
|
2025
|
+
"\u{1F69C}",
|
|
2026
|
+
"\u{1F6B2}",
|
|
2027
|
+
"\u2708\uFE0F",
|
|
2028
|
+
"\u{1F680}",
|
|
2029
|
+
"\u26F5",
|
|
2030
|
+
// Symbols
|
|
2031
|
+
"\u2B50",
|
|
2032
|
+
"\u2764\uFE0F",
|
|
2033
|
+
"\u2705",
|
|
2034
|
+
"\u274C",
|
|
2035
|
+
"\u26A0\uFE0F",
|
|
2036
|
+
"\u{1F534}",
|
|
2037
|
+
"\u{1F7E2}",
|
|
2038
|
+
"\u{1F535}",
|
|
2039
|
+
"\u{1F7E1}",
|
|
2040
|
+
"\u2B1B",
|
|
2041
|
+
"\u2B1C",
|
|
2042
|
+
"\u{1F53A}",
|
|
2043
|
+
"\u{1F536}",
|
|
2044
|
+
"\u{1F537}",
|
|
2045
|
+
"\u{1F4AF}",
|
|
2046
|
+
"\u{1F514}",
|
|
2047
|
+
"\u{1F4CC}",
|
|
2048
|
+
"\u{1F4CD}",
|
|
2049
|
+
"\u{1F3F7}\uFE0F",
|
|
2050
|
+
"\u{1F3AF}",
|
|
2051
|
+
// Misc
|
|
2052
|
+
"\u{1F4E6}",
|
|
2053
|
+
"\u{1F4C5}",
|
|
2054
|
+
"\u{1F4C8}",
|
|
2055
|
+
"\u{1F4DD}",
|
|
2056
|
+
"\u{1F4B0}",
|
|
2057
|
+
"\u{1F4B3}",
|
|
2058
|
+
"\u{1F389}",
|
|
2059
|
+
"\u{1F381}",
|
|
2060
|
+
"\u2615",
|
|
2061
|
+
"\u{1F37D}\uFE0F",
|
|
2062
|
+
"\u{1F9FE}",
|
|
2063
|
+
"\u{1F4DE}",
|
|
2064
|
+
"\u2709\uFE0F",
|
|
2065
|
+
"\u{1F310}"
|
|
2066
|
+
];
|
|
2067
|
+
function HazoUiIconPicker({
|
|
2068
|
+
value,
|
|
2069
|
+
onChange,
|
|
2070
|
+
disabled,
|
|
2071
|
+
className,
|
|
2072
|
+
triggerClassName,
|
|
2073
|
+
align = "start"
|
|
2074
|
+
}) {
|
|
2075
|
+
const [open, set_open] = React27.useState(false);
|
|
2076
|
+
const [search, set_search] = React27.useState("");
|
|
2077
|
+
const handle_select = React27.useCallback(
|
|
2078
|
+
(next_value) => {
|
|
2079
|
+
onChange(next_value);
|
|
2080
|
+
set_open(false);
|
|
2081
|
+
},
|
|
2082
|
+
[onChange]
|
|
2083
|
+
);
|
|
2084
|
+
const filtered_search_results = React27.useMemo(() => {
|
|
2085
|
+
const query = search.trim().toLowerCase();
|
|
2086
|
+
if (!query) return [];
|
|
2087
|
+
return Object.keys(icons).filter((name) => name.toLowerCase().includes(query)).slice(0, 60);
|
|
2088
|
+
}, [search]);
|
|
2089
|
+
const has_search = search.trim().length > 0;
|
|
2090
|
+
return /* @__PURE__ */ jsx("div", { className: cn("cls_hazo_ui_icon_picker", className), children: /* @__PURE__ */ jsxs(
|
|
2091
|
+
Popover,
|
|
2092
|
+
{
|
|
2093
|
+
open,
|
|
2094
|
+
onOpenChange: (next_open) => {
|
|
2095
|
+
set_open(next_open);
|
|
2096
|
+
if (!next_open) set_search("");
|
|
2097
|
+
},
|
|
2098
|
+
children: [
|
|
2099
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
2100
|
+
"button",
|
|
2101
|
+
{
|
|
2102
|
+
type: "button",
|
|
2103
|
+
disabled,
|
|
2104
|
+
className: cn(
|
|
2105
|
+
"cls_hazo_ui_icon_picker_trigger",
|
|
2106
|
+
"flex h-9 w-9 items-center justify-center rounded-md border border-input bg-card",
|
|
2107
|
+
"text-foreground transition-colors hover:bg-accent/50",
|
|
2108
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
2109
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
2110
|
+
triggerClassName
|
|
2111
|
+
),
|
|
2112
|
+
children: /* @__PURE__ */ jsx(HazoUiIcon, { value })
|
|
2113
|
+
}
|
|
2114
|
+
) }),
|
|
2115
|
+
/* @__PURE__ */ jsxs(PopoverContent, { align, className: "w-72 p-2", children: [
|
|
2116
|
+
/* @__PURE__ */ jsx(
|
|
2117
|
+
"input",
|
|
2118
|
+
{
|
|
2119
|
+
type: "text",
|
|
2120
|
+
value: search,
|
|
2121
|
+
onChange: (e) => set_search(e.target.value),
|
|
2122
|
+
placeholder: "Search icons...",
|
|
2123
|
+
className: cn(
|
|
2124
|
+
"cls_hazo_ui_icon_picker_search",
|
|
2125
|
+
"mb-2 flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm",
|
|
2126
|
+
"placeholder:text-muted-foreground",
|
|
2127
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
|
2128
|
+
)
|
|
2129
|
+
}
|
|
2130
|
+
),
|
|
2131
|
+
has_search ? /* @__PURE__ */ jsxs("div", { className: "cls_hazo_ui_icon_picker_search_results grid max-h-56 grid-cols-8 gap-1 overflow-y-auto", children: [
|
|
2132
|
+
filtered_search_results.map((name) => {
|
|
2133
|
+
const Cmp = icons[name];
|
|
2134
|
+
return /* @__PURE__ */ jsx(
|
|
2135
|
+
"button",
|
|
2136
|
+
{
|
|
2137
|
+
type: "button",
|
|
2138
|
+
title: name,
|
|
2139
|
+
onClick: () => handle_select(`lucide:${name}`),
|
|
2140
|
+
className: "flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
2141
|
+
children: /* @__PURE__ */ jsx(Cmp, { size: 16 })
|
|
2142
|
+
},
|
|
2143
|
+
name
|
|
2144
|
+
);
|
|
2145
|
+
}),
|
|
2146
|
+
filtered_search_results.length === 0 && /* @__PURE__ */ jsx("p", { className: "col-span-8 py-4 text-center text-sm text-muted-foreground", children: "No icons found" })
|
|
2147
|
+
] }) : /* @__PURE__ */ jsxs(Tabs, { defaultValue: "emoji", children: [
|
|
2148
|
+
/* @__PURE__ */ jsxs(TabsList, { className: "grid w-full grid-cols-6", children: [
|
|
2149
|
+
/* @__PURE__ */ jsx(TabsTrigger, { value: "emoji", children: "Emoji" }),
|
|
2150
|
+
LUCIDE_GROUPS.map((group) => /* @__PURE__ */ jsx(TabsTrigger, { value: group.key, children: group.label }, group.key))
|
|
2151
|
+
] }),
|
|
2152
|
+
/* @__PURE__ */ jsx(TabsContent, { value: "emoji", children: /* @__PURE__ */ jsx("div", { className: "grid max-h-56 grid-cols-8 gap-1 overflow-y-auto", children: EMOJI_ITEMS.map((emoji, index) => /* @__PURE__ */ jsx(
|
|
2153
|
+
"button",
|
|
2154
|
+
{
|
|
2155
|
+
type: "button",
|
|
2156
|
+
onClick: () => handle_select(emoji),
|
|
2157
|
+
className: "flex h-8 w-8 items-center justify-center rounded-md text-lg hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
2158
|
+
children: emoji
|
|
2159
|
+
},
|
|
2160
|
+
`${emoji}-${index}`
|
|
2161
|
+
)) }) }),
|
|
2162
|
+
LUCIDE_GROUPS.map((group) => /* @__PURE__ */ jsx(TabsContent, { value: group.key, children: /* @__PURE__ */ jsx("div", { className: "grid max-h-56 grid-cols-8 gap-1 overflow-y-auto", children: group.icons.map((name) => {
|
|
2163
|
+
const Cmp = icons[name];
|
|
2164
|
+
return /* @__PURE__ */ jsx(
|
|
2165
|
+
"button",
|
|
2166
|
+
{
|
|
2167
|
+
type: "button",
|
|
2168
|
+
title: name,
|
|
2169
|
+
onClick: () => handle_select(`lucide:${name}`),
|
|
2170
|
+
className: "flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
2171
|
+
children: /* @__PURE__ */ jsx(Cmp, { size: 16 })
|
|
2172
|
+
},
|
|
2173
|
+
name
|
|
2174
|
+
);
|
|
2175
|
+
}) }) }, group.key))
|
|
2176
|
+
] })
|
|
2177
|
+
] })
|
|
2178
|
+
]
|
|
2179
|
+
}
|
|
2180
|
+
) });
|
|
2181
|
+
}
|
|
1807
2182
|
function validateInput(value, input_type, text_len_min, text_len_max, num_min, num_max, regex, num_decimals) {
|
|
1808
2183
|
if (value === "") {
|
|
1809
2184
|
return { isValid: true };
|
|
@@ -1898,7 +2273,7 @@ function filterInputValue(value, input_type, num_decimals) {
|
|
|
1898
2273
|
}
|
|
1899
2274
|
}
|
|
1900
2275
|
}
|
|
1901
|
-
var HazoUiFlexInput =
|
|
2276
|
+
var HazoUiFlexInput = React27.forwardRef(
|
|
1902
2277
|
({
|
|
1903
2278
|
className,
|
|
1904
2279
|
input_type = "mixed",
|
|
@@ -1915,13 +2290,13 @@ var HazoUiFlexInput = React26.forwardRef(
|
|
|
1915
2290
|
onBlur,
|
|
1916
2291
|
...props
|
|
1917
2292
|
}, ref) => {
|
|
1918
|
-
const [internalValue, setInternalValue] =
|
|
2293
|
+
const [internalValue, setInternalValue] = React27.useState(
|
|
1919
2294
|
typeof controlledValue === "string" ? controlledValue : typeof controlledValue === "number" ? String(controlledValue) : ""
|
|
1920
2295
|
);
|
|
1921
|
-
const [errorMessage, setErrorMessage] =
|
|
2296
|
+
const [errorMessage, setErrorMessage] = React27.useState();
|
|
1922
2297
|
const isControlled = controlledValue !== void 0;
|
|
1923
2298
|
const currentValue = isControlled ? typeof controlledValue === "string" ? controlledValue : String(controlledValue || "") : internalValue;
|
|
1924
|
-
|
|
2299
|
+
React27.useEffect(() => {
|
|
1925
2300
|
if (isControlled) {
|
|
1926
2301
|
const newValue = typeof controlledValue === "string" ? controlledValue : String(controlledValue || "");
|
|
1927
2302
|
if (newValue !== internalValue) {
|
|
@@ -2001,7 +2376,7 @@ var HazoUiFlexInput = React26.forwardRef(
|
|
|
2001
2376
|
}
|
|
2002
2377
|
);
|
|
2003
2378
|
HazoUiFlexInput.displayName = "HazoUiFlexInput";
|
|
2004
|
-
var ToolbarButton =
|
|
2379
|
+
var ToolbarButton = React27.forwardRef(
|
|
2005
2380
|
({ onClick, is_active = false, disabled = false, tooltip, className, children }, ref) => {
|
|
2006
2381
|
const button = /* @__PURE__ */ jsx(
|
|
2007
2382
|
"button",
|
|
@@ -2270,7 +2645,7 @@ var getRelativePosition = (node, event) => {
|
|
|
2270
2645
|
};
|
|
2271
2646
|
};
|
|
2272
2647
|
var _excluded = ["prefixCls", "className", "onMove", "onDown"];
|
|
2273
|
-
var Interactive = /* @__PURE__ */
|
|
2648
|
+
var Interactive = /* @__PURE__ */ React27__default.forwardRef((props, ref) => {
|
|
2274
2649
|
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "w-color-interactive" : _props$prefixCls, className = props.className, onMove = props.onMove, onDown = props.onDown, reset = (0, import_objectWithoutPropertiesLoose.default)(props, _excluded);
|
|
2275
2650
|
var container = useRef(null);
|
|
2276
2651
|
var hasTouched = useRef(false);
|
|
@@ -2358,7 +2733,7 @@ var Pointer = (_ref) => {
|
|
|
2358
2733
|
}), [top, left, color2, className, prefixCls]);
|
|
2359
2734
|
};
|
|
2360
2735
|
var _excluded2 = ["prefixCls", "radius", "pointer", "className", "hue", "style", "hsva", "onChange"];
|
|
2361
|
-
var Saturation = /* @__PURE__ */
|
|
2736
|
+
var Saturation = /* @__PURE__ */ React27__default.forwardRef((props, ref) => {
|
|
2362
2737
|
var _hsva$h;
|
|
2363
2738
|
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "w-color-saturation" : _props$prefixCls, _props$radius = props.radius, radius = _props$radius === void 0 ? 0 : _props$radius, pointer = props.pointer, className = props.className, _props$hue = props.hue, hue = _props$hue === void 0 ? 0 : _props$hue, style = props.style, hsva = props.hsva, onChange = props.onChange, other = (0, import_objectWithoutPropertiesLoose2.default)(props, _excluded2);
|
|
2364
2739
|
var containerStyle = (0, import_extends3.default)({
|
|
@@ -2507,7 +2882,7 @@ var Pointer2 = (_ref) => {
|
|
|
2507
2882
|
};
|
|
2508
2883
|
var _excluded4 = ["prefixCls", "className", "hsva", "background", "bgProps", "innerProps", "pointerProps", "radius", "width", "height", "direction", "reverse", "style", "onChange", "pointer"];
|
|
2509
2884
|
var BACKGROUND_IMG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==";
|
|
2510
|
-
var Alpha = /* @__PURE__ */
|
|
2885
|
+
var Alpha = /* @__PURE__ */ React27__default.forwardRef((props, ref) => {
|
|
2511
2886
|
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "w-color-alpha" : _props$prefixCls, className = props.className, hsva = props.hsva, background = props.background, _props$bgProps = props.bgProps, bgProps = _props$bgProps === void 0 ? {} : _props$bgProps, _props$innerProps = props.innerProps, innerProps = _props$innerProps === void 0 ? {} : _props$innerProps, _props$pointerProps = props.pointerProps, pointerProps = _props$pointerProps === void 0 ? {} : _props$pointerProps, _props$radius = props.radius, radius = _props$radius === void 0 ? 0 : _props$radius, width = props.width, _props$height = props.height, height = _props$height === void 0 ? 16 : _props$height, _props$direction = props.direction, direction = _props$direction === void 0 ? "horizontal" : _props$direction, _props$reverse = props.reverse, reverse = _props$reverse === void 0 ? false : _props$reverse, style = props.style, onChange = props.onChange, pointer = props.pointer, other = (0, import_objectWithoutPropertiesLoose4.default)(props, _excluded4);
|
|
2512
2887
|
var offsetToAlpha = useCallback((offset) => {
|
|
2513
2888
|
var value = direction === "horizontal" ? offset.left : offset.top;
|
|
@@ -2643,7 +3018,7 @@ var import_objectWithoutPropertiesLoose5 = __toESM(require_objectWithoutProperti
|
|
|
2643
3018
|
var _excluded5 = ["prefixCls", "placement", "label", "value", "className", "style", "labelStyle", "inputStyle", "onChange", "onBlur", "renderInput"];
|
|
2644
3019
|
var validHex2 = (hex) => /^#?([A-Fa-f0-9]{3,4}){1,2}$/.test(hex);
|
|
2645
3020
|
var getNumberValue = (value) => Number(String(value).replace(/%/g, ""));
|
|
2646
|
-
var EditableInput = /* @__PURE__ */
|
|
3021
|
+
var EditableInput = /* @__PURE__ */ React27__default.forwardRef((props, ref) => {
|
|
2647
3022
|
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "w-color-editable-input" : _props$prefixCls, _props$placement = props.placement, placement = _props$placement === void 0 ? "bottom" : _props$placement, label = props.label, initValue = props.value, className = props.className, style = props.style, labelStyle = props.labelStyle, inputStyle = props.inputStyle, onChange = props.onChange, onBlur = props.onBlur, renderInput = props.renderInput, other = (0, import_objectWithoutPropertiesLoose5.default)(props, _excluded5);
|
|
2648
3023
|
var _useState = useState(initValue), value = _useState[0], setValue = _useState[1];
|
|
2649
3024
|
var isFocus = useRef(false);
|
|
@@ -2740,7 +3115,7 @@ var esm_default4 = EditableInput;
|
|
|
2740
3115
|
var import_extends7 = __toESM(require_extends());
|
|
2741
3116
|
var import_objectWithoutPropertiesLoose6 = __toESM(require_objectWithoutPropertiesLoose());
|
|
2742
3117
|
var _excluded6 = ["prefixCls", "hsva", "placement", "rProps", "gProps", "bProps", "aProps", "className", "style", "onChange"];
|
|
2743
|
-
var EditableInputRGBA = /* @__PURE__ */
|
|
3118
|
+
var EditableInputRGBA = /* @__PURE__ */ React27__default.forwardRef((props, ref) => {
|
|
2744
3119
|
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "w-color-editable-input-rgba" : _props$prefixCls, hsva = props.hsva, _props$placement = props.placement, placement = _props$placement === void 0 ? "bottom" : _props$placement, _props$rProps = props.rProps, rProps = _props$rProps === void 0 ? {} : _props$rProps, _props$gProps = props.gProps, gProps = _props$gProps === void 0 ? {} : _props$gProps, _props$bProps = props.bProps, bProps = _props$bProps === void 0 ? {} : _props$bProps, _props$aProps = props.aProps, aProps = _props$aProps === void 0 ? {} : _props$aProps, className = props.className, style = props.style, onChange = props.onChange, other = (0, import_objectWithoutPropertiesLoose6.default)(props, _excluded6);
|
|
2745
3120
|
var rgba = hsva ? hsvaToRgba(hsva) : {};
|
|
2746
3121
|
function handleBlur(evn) {
|
|
@@ -2854,7 +3229,7 @@ var import_objectWithoutPropertiesLoose7 = __toESM(require_objectWithoutProperti
|
|
|
2854
3229
|
var _excluded7 = ["prefixCls", "className", "hue", "onChange", "direction", "reverse"];
|
|
2855
3230
|
var NORMAL_COLORS = "rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%";
|
|
2856
3231
|
var REVERSED_COLORS = "rgb(255, 0, 0) 0%, rgb(255, 0, 255) 17%, rgb(0, 0, 255) 33%, rgb(0, 255, 255) 50%, rgb(0, 255, 0) 67%, rgb(255, 255, 0) 83%, rgb(255, 0, 0) 100%";
|
|
2857
|
-
var Hue = /* @__PURE__ */
|
|
3232
|
+
var Hue = /* @__PURE__ */ React27__default.forwardRef((props, ref) => {
|
|
2858
3233
|
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "w-color-hue" : _props$prefixCls, className = props.className, _props$hue = props.hue, hue = _props$hue === void 0 ? 0 : _props$hue, _onChange = props.onChange, _props$direction = props.direction, direction = _props$direction === void 0 ? "horizontal" : _props$direction, _props$reverse = props.reverse, reverse = _props$reverse === void 0 ? false : _props$reverse, other = (0, import_objectWithoutPropertiesLoose7.default)(props, _excluded7);
|
|
2859
3234
|
var getGradientBackground = useCallback(() => {
|
|
2860
3235
|
if (direction === "horizontal") {
|
|
@@ -2905,7 +3280,7 @@ var esm_default6 = Hue;
|
|
|
2905
3280
|
var import_extends9 = __toESM(require_extends());
|
|
2906
3281
|
var import_objectWithoutPropertiesLoose8 = __toESM(require_objectWithoutPropertiesLoose());
|
|
2907
3282
|
var _excluded8 = ["prefixCls", "className", "color", "colors", "style", "rectProps", "onChange", "addonAfter", "addonBefore", "rectRender"];
|
|
2908
|
-
var Swatch = /* @__PURE__ */
|
|
3283
|
+
var Swatch = /* @__PURE__ */ React27__default.forwardRef((props, ref) => {
|
|
2909
3284
|
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "w-color-swatch" : _props$prefixCls, className = props.className, color2 = props.color, _props$colors = props.colors, colors = _props$colors === void 0 ? [] : _props$colors, style = props.style, _props$rectProps = props.rectProps, rectProps = _props$rectProps === void 0 ? {} : _props$rectProps, onChange = props.onChange, addonAfter = props.addonAfter, addonBefore = props.addonBefore, rectRender = props.rectRender, other = (0, import_objectWithoutPropertiesLoose8.default)(props, _excluded8);
|
|
2910
3285
|
var rectStyle = (0, import_extends9.default)({
|
|
2911
3286
|
"--swatch-background-color": "rgb(144, 19, 254)",
|
|
@@ -2931,7 +3306,7 @@ var Swatch = /* @__PURE__ */ React26__default.forwardRef((props, ref) => {
|
|
|
2931
3306
|
flexWrap: "wrap",
|
|
2932
3307
|
position: "relative"
|
|
2933
3308
|
}, style),
|
|
2934
|
-
children: [addonBefore && /* @__PURE__ */
|
|
3309
|
+
children: [addonBefore && /* @__PURE__ */ React27__default.isValidElement(addonBefore) && addonBefore, colors && Array.isArray(colors) && colors.map((item, idx) => {
|
|
2935
3310
|
var title = "";
|
|
2936
3311
|
var background = "";
|
|
2937
3312
|
if (typeof item === "string") {
|
|
@@ -2957,7 +3332,7 @@ var Swatch = /* @__PURE__ */ React26__default.forwardRef((props, ref) => {
|
|
|
2957
3332
|
children: render
|
|
2958
3333
|
}, idx);
|
|
2959
3334
|
}
|
|
2960
|
-
var child = rectProps.children && /* @__PURE__ */
|
|
3335
|
+
var child = rectProps.children && /* @__PURE__ */ React27__default.isValidElement(rectProps.children) ? /* @__PURE__ */ React27__default.cloneElement(rectProps.children, {
|
|
2961
3336
|
color: background,
|
|
2962
3337
|
checked
|
|
2963
3338
|
}) : null;
|
|
@@ -2971,7 +3346,7 @@ var Swatch = /* @__PURE__ */ React26__default.forwardRef((props, ref) => {
|
|
|
2971
3346
|
background
|
|
2972
3347
|
})
|
|
2973
3348
|
}), idx);
|
|
2974
|
-
}), addonAfter && /* @__PURE__ */
|
|
3349
|
+
}), addonAfter && /* @__PURE__ */ React27__default.isValidElement(addonAfter) && addonAfter]
|
|
2975
3350
|
}));
|
|
2976
3351
|
});
|
|
2977
3352
|
Swatch.displayName = "Swatch";
|
|
@@ -2990,7 +3365,7 @@ var Bar = (props) => /* @__PURE__ */ jsx("div", {
|
|
|
2990
3365
|
backgroundColor: "#fff"
|
|
2991
3366
|
}
|
|
2992
3367
|
});
|
|
2993
|
-
var Sketch = /* @__PURE__ */
|
|
3368
|
+
var Sketch = /* @__PURE__ */ React27__default.forwardRef((props, ref) => {
|
|
2994
3369
|
var _props$prefixCls = props.prefixCls, prefixCls = _props$prefixCls === void 0 ? "w-color-sketch" : _props$prefixCls, className = props.className, onChange = props.onChange, _props$width = props.width, width = _props$width === void 0 ? 218 : _props$width, _props$presetColors = props.presetColors, presetColors = _props$presetColors === void 0 ? PRESET_COLORS : _props$presetColors, color2 = props.color, _props$editableDisabl = props.editableDisable, editableDisable = _props$editableDisabl === void 0 ? true : _props$editableDisabl, _props$disableAlpha = props.disableAlpha, disableAlpha = _props$disableAlpha === void 0 ? false : _props$disableAlpha, style = props.style, other = (0, import_objectWithoutPropertiesLoose9.default)(props, _excluded9);
|
|
2995
3370
|
var _useState = useState({
|
|
2996
3371
|
h: 209,
|
|
@@ -3259,19 +3634,19 @@ var Toolbar = ({
|
|
|
3259
3634
|
toolbar,
|
|
3260
3635
|
font_families
|
|
3261
3636
|
}) => {
|
|
3262
|
-
const [link_url, set_link_url] =
|
|
3263
|
-
const [link_popover_open, set_link_popover_open] =
|
|
3264
|
-
const [text_color_open, set_text_color_open] =
|
|
3265
|
-
const [highlight_color_open, set_highlight_color_open] =
|
|
3266
|
-
const [variables_menu_open, set_variables_menu_open] =
|
|
3267
|
-
const [table_menu_open, set_table_menu_open] =
|
|
3268
|
-
const [text_color, set_text_color] =
|
|
3269
|
-
const [highlight_color, set_highlight_color] =
|
|
3270
|
-
const [table_rows, set_table_rows] =
|
|
3271
|
-
const [table_cols, set_table_cols] =
|
|
3272
|
-
const [hovered_cell, set_hovered_cell] =
|
|
3273
|
-
const file_input_ref =
|
|
3274
|
-
const image_input_ref =
|
|
3637
|
+
const [link_url, set_link_url] = React27.useState("https://");
|
|
3638
|
+
const [link_popover_open, set_link_popover_open] = React27.useState(false);
|
|
3639
|
+
const [text_color_open, set_text_color_open] = React27.useState(false);
|
|
3640
|
+
const [highlight_color_open, set_highlight_color_open] = React27.useState(false);
|
|
3641
|
+
const [variables_menu_open, set_variables_menu_open] = React27.useState(false);
|
|
3642
|
+
const [table_menu_open, set_table_menu_open] = React27.useState(false);
|
|
3643
|
+
const [text_color, set_text_color] = React27.useState("#000000");
|
|
3644
|
+
const [highlight_color, set_highlight_color] = React27.useState("#ffff00");
|
|
3645
|
+
const [table_rows, set_table_rows] = React27.useState(3);
|
|
3646
|
+
const [table_cols, set_table_cols] = React27.useState(3);
|
|
3647
|
+
const [hovered_cell, set_hovered_cell] = React27.useState(null);
|
|
3648
|
+
const file_input_ref = React27.useRef(null);
|
|
3649
|
+
const image_input_ref = React27.useRef(null);
|
|
3275
3650
|
if (!editor) {
|
|
3276
3651
|
return null;
|
|
3277
3652
|
}
|
|
@@ -4085,7 +4460,7 @@ var Toolbar = ({
|
|
|
4085
4460
|
disabled && "opacity-50 pointer-events-none"
|
|
4086
4461
|
),
|
|
4087
4462
|
children: [
|
|
4088
|
-
sections.map((items, i) => /* @__PURE__ */ jsxs(
|
|
4463
|
+
sections.map((items, i) => /* @__PURE__ */ jsxs(React27.Fragment, { children: [
|
|
4089
4464
|
i > 0 && /* @__PURE__ */ jsx(ToolbarSeparator, {}),
|
|
4090
4465
|
items
|
|
4091
4466
|
] }, i)),
|
|
@@ -4337,43 +4712,6 @@ var VariableExtension = Node.create({
|
|
|
4337
4712
|
};
|
|
4338
4713
|
}
|
|
4339
4714
|
});
|
|
4340
|
-
var Tabs = TabsPrimitive.Root;
|
|
4341
|
-
var TabsList = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4342
|
-
TabsPrimitive.List,
|
|
4343
|
-
{
|
|
4344
|
-
ref,
|
|
4345
|
-
className: cn(
|
|
4346
|
-
"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
|
|
4347
|
-
className
|
|
4348
|
-
),
|
|
4349
|
-
...props
|
|
4350
|
-
}
|
|
4351
|
-
));
|
|
4352
|
-
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
4353
|
-
var TabsTrigger = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4354
|
-
TabsPrimitive.Trigger,
|
|
4355
|
-
{
|
|
4356
|
-
ref,
|
|
4357
|
-
className: cn(
|
|
4358
|
-
"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",
|
|
4359
|
-
className
|
|
4360
|
-
),
|
|
4361
|
-
...props
|
|
4362
|
-
}
|
|
4363
|
-
));
|
|
4364
|
-
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
4365
|
-
var TabsContent = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4366
|
-
TabsPrimitive.Content,
|
|
4367
|
-
{
|
|
4368
|
-
ref,
|
|
4369
|
-
className: cn(
|
|
4370
|
-
"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
4371
|
-
className
|
|
4372
|
-
),
|
|
4373
|
-
...props
|
|
4374
|
-
}
|
|
4375
|
-
));
|
|
4376
|
-
TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
4377
4715
|
function debounce_fn(func, wait) {
|
|
4378
4716
|
let timeout_id = null;
|
|
4379
4717
|
return (output) => {
|
|
@@ -4399,14 +4737,14 @@ var HazoUiRte = ({
|
|
|
4399
4737
|
toolbar,
|
|
4400
4738
|
font_families
|
|
4401
4739
|
}) => {
|
|
4402
|
-
const [attachments, set_attachments] =
|
|
4740
|
+
const [attachments, set_attachments] = React27.useState(
|
|
4403
4741
|
initial_attachments
|
|
4404
4742
|
);
|
|
4405
|
-
const [active_tab, set_active_tab] =
|
|
4743
|
+
const [active_tab, set_active_tab] = React27.useState("html");
|
|
4406
4744
|
const is_view_only = active_tab !== "html";
|
|
4407
|
-
const attachments_ref =
|
|
4745
|
+
const attachments_ref = React27.useRef(attachments);
|
|
4408
4746
|
attachments_ref.current = attachments;
|
|
4409
|
-
const debounced_on_change =
|
|
4747
|
+
const debounced_on_change = React27.useMemo(
|
|
4410
4748
|
() => debounce_fn((output) => {
|
|
4411
4749
|
if (on_change) {
|
|
4412
4750
|
on_change(output);
|
|
@@ -4505,7 +4843,7 @@ var HazoUiRte = ({
|
|
|
4505
4843
|
debounced_on_change(output);
|
|
4506
4844
|
}
|
|
4507
4845
|
});
|
|
4508
|
-
|
|
4846
|
+
React27.useEffect(() => {
|
|
4509
4847
|
if (editor && html !== void 0) {
|
|
4510
4848
|
const current_html = editor.getHTML();
|
|
4511
4849
|
if (html !== current_html && !editor.isFocused) {
|
|
@@ -4513,21 +4851,21 @@ var HazoUiRte = ({
|
|
|
4513
4851
|
}
|
|
4514
4852
|
}
|
|
4515
4853
|
}, [html, editor]);
|
|
4516
|
-
|
|
4854
|
+
React27.useEffect(() => {
|
|
4517
4855
|
if (editor) {
|
|
4518
4856
|
editor.setEditable(!disabled);
|
|
4519
4857
|
}
|
|
4520
4858
|
}, [disabled, editor]);
|
|
4521
|
-
const attachments_from_props_ref =
|
|
4522
|
-
const prev_initial_attachments_ref =
|
|
4523
|
-
|
|
4859
|
+
const attachments_from_props_ref = React27.useRef(false);
|
|
4860
|
+
const prev_initial_attachments_ref = React27.useRef(initial_attachments);
|
|
4861
|
+
React27.useEffect(() => {
|
|
4524
4862
|
if (JSON.stringify(initial_attachments) !== JSON.stringify(prev_initial_attachments_ref.current)) {
|
|
4525
4863
|
prev_initial_attachments_ref.current = initial_attachments;
|
|
4526
4864
|
attachments_from_props_ref.current = true;
|
|
4527
4865
|
set_attachments(initial_attachments);
|
|
4528
4866
|
}
|
|
4529
4867
|
}, [initial_attachments]);
|
|
4530
|
-
|
|
4868
|
+
React27.useEffect(() => {
|
|
4531
4869
|
if (attachments_from_props_ref.current) {
|
|
4532
4870
|
attachments_from_props_ref.current = false;
|
|
4533
4871
|
return;
|
|
@@ -5340,12 +5678,12 @@ var CommandPopover = ({
|
|
|
5340
5678
|
on_selection_change: _on_selection_change,
|
|
5341
5679
|
prefix_color
|
|
5342
5680
|
}) => {
|
|
5343
|
-
const container_ref =
|
|
5344
|
-
const grouped_commands =
|
|
5681
|
+
const container_ref = React27.useRef(null);
|
|
5682
|
+
const grouped_commands = React27.useMemo(
|
|
5345
5683
|
() => group_commands(commands),
|
|
5346
5684
|
[commands]
|
|
5347
5685
|
);
|
|
5348
|
-
|
|
5686
|
+
React27.useEffect(() => {
|
|
5349
5687
|
const handle_click_outside = (e) => {
|
|
5350
5688
|
if (container_ref.current && !container_ref.current.contains(e.target)) {
|
|
5351
5689
|
on_close();
|
|
@@ -5358,8 +5696,8 @@ var CommandPopover = ({
|
|
|
5358
5696
|
};
|
|
5359
5697
|
}
|
|
5360
5698
|
}, [is_open, on_close]);
|
|
5361
|
-
const [mounted, set_mounted] =
|
|
5362
|
-
|
|
5699
|
+
const [mounted, set_mounted] = React27.useState(false);
|
|
5700
|
+
React27.useEffect(() => {
|
|
5363
5701
|
set_mounted(true);
|
|
5364
5702
|
}, []);
|
|
5365
5703
|
if (!is_open || !mounted) return null;
|
|
@@ -5669,21 +6007,21 @@ var HazoUiTextbox = ({
|
|
|
5669
6007
|
on_command_change,
|
|
5670
6008
|
on_command_remove
|
|
5671
6009
|
}) => {
|
|
5672
|
-
const generated_instance_id =
|
|
6010
|
+
const generated_instance_id = React27.useId();
|
|
5673
6011
|
const instance_id = provided_instance_id || generated_instance_id;
|
|
5674
|
-
const [suggestion_state, set_suggestion_state] =
|
|
5675
|
-
const [selected_index, set_selected_index] =
|
|
5676
|
-
const [popover_position, set_popover_position] =
|
|
5677
|
-
const [edit_context, set_edit_context] =
|
|
5678
|
-
const [edit_selected_index, set_edit_selected_index] =
|
|
6012
|
+
const [suggestion_state, set_suggestion_state] = React27.useState(null);
|
|
6013
|
+
const [selected_index, set_selected_index] = React27.useState(0);
|
|
6014
|
+
const [popover_position, set_popover_position] = React27.useState({ top: 0, left: 0 });
|
|
6015
|
+
const [edit_context, set_edit_context] = React27.useState(null);
|
|
6016
|
+
const [edit_selected_index, set_edit_selected_index] = React27.useState(0);
|
|
5679
6017
|
const is_controlled = value !== void 0;
|
|
5680
|
-
const editor_container_ref =
|
|
5681
|
-
const edit_popover_ref =
|
|
5682
|
-
const [mounted, set_mounted] =
|
|
5683
|
-
|
|
6018
|
+
const editor_container_ref = React27.useRef(null);
|
|
6019
|
+
const edit_popover_ref = React27.useRef(null);
|
|
6020
|
+
const [mounted, set_mounted] = React27.useState(false);
|
|
6021
|
+
React27.useEffect(() => {
|
|
5684
6022
|
set_mounted(true);
|
|
5685
6023
|
}, []);
|
|
5686
|
-
const suggestion_extensions =
|
|
6024
|
+
const suggestion_extensions = React27.useMemo(() => {
|
|
5687
6025
|
return create_command_suggestion_extension({
|
|
5688
6026
|
prefixes,
|
|
5689
6027
|
instance_id,
|
|
@@ -5734,7 +6072,7 @@ var HazoUiTextbox = ({
|
|
|
5734
6072
|
}
|
|
5735
6073
|
}
|
|
5736
6074
|
});
|
|
5737
|
-
|
|
6075
|
+
React27.useEffect(() => {
|
|
5738
6076
|
if (suggestion_state?.is_active && editor) {
|
|
5739
6077
|
requestAnimationFrame(() => {
|
|
5740
6078
|
const { from } = suggestion_state.range;
|
|
@@ -5758,7 +6096,7 @@ var HazoUiTextbox = ({
|
|
|
5758
6096
|
});
|
|
5759
6097
|
}
|
|
5760
6098
|
}, [suggestion_state, editor]);
|
|
5761
|
-
|
|
6099
|
+
React27.useEffect(() => {
|
|
5762
6100
|
if (is_controlled && editor && !editor.isFocused) {
|
|
5763
6101
|
const current_text = editor.getText();
|
|
5764
6102
|
if (value !== current_text) {
|
|
@@ -5767,12 +6105,12 @@ var HazoUiTextbox = ({
|
|
|
5767
6105
|
}
|
|
5768
6106
|
}
|
|
5769
6107
|
}, [value, editor, is_controlled, prefixes, pill_variant]);
|
|
5770
|
-
|
|
6108
|
+
React27.useEffect(() => {
|
|
5771
6109
|
if (editor) {
|
|
5772
6110
|
editor.setEditable(!disabled);
|
|
5773
6111
|
}
|
|
5774
6112
|
}, [disabled, editor]);
|
|
5775
|
-
const handle_command_select =
|
|
6113
|
+
const handle_command_select = React27.useCallback(
|
|
5776
6114
|
(command) => {
|
|
5777
6115
|
if (!editor || !suggestion_state) return;
|
|
5778
6116
|
const prefix_config = prefixes.find((p) => p.char === suggestion_state.prefix);
|
|
@@ -5792,15 +6130,15 @@ var HazoUiTextbox = ({
|
|
|
5792
6130
|
},
|
|
5793
6131
|
[editor, suggestion_state, pill_variant, on_command_insert, prefixes]
|
|
5794
6132
|
);
|
|
5795
|
-
const handle_popover_close =
|
|
6133
|
+
const handle_popover_close = React27.useCallback(() => {
|
|
5796
6134
|
set_suggestion_state(null);
|
|
5797
6135
|
editor?.commands.focus();
|
|
5798
6136
|
}, [editor]);
|
|
5799
|
-
const handle_edit_close =
|
|
6137
|
+
const handle_edit_close = React27.useCallback(() => {
|
|
5800
6138
|
set_edit_context(null);
|
|
5801
6139
|
editor?.commands.focus();
|
|
5802
6140
|
}, [editor]);
|
|
5803
|
-
const handle_command_update =
|
|
6141
|
+
const handle_command_update = React27.useCallback(
|
|
5804
6142
|
(new_command) => {
|
|
5805
6143
|
if (!editor || !edit_context) return;
|
|
5806
6144
|
const old_command = edit_context.command;
|
|
@@ -5816,7 +6154,7 @@ var HazoUiTextbox = ({
|
|
|
5816
6154
|
},
|
|
5817
6155
|
[editor, edit_context, on_command_change]
|
|
5818
6156
|
);
|
|
5819
|
-
const handle_command_remove =
|
|
6157
|
+
const handle_command_remove = React27.useCallback(() => {
|
|
5820
6158
|
if (!editor || !edit_context) return;
|
|
5821
6159
|
const command = edit_context.command;
|
|
5822
6160
|
editor.state.doc.descendants((node, pos) => {
|
|
@@ -5830,7 +6168,7 @@ var HazoUiTextbox = ({
|
|
|
5830
6168
|
}
|
|
5831
6169
|
set_edit_context(null);
|
|
5832
6170
|
}, [editor, edit_context, on_command_remove]);
|
|
5833
|
-
const filtered_commands =
|
|
6171
|
+
const filtered_commands = React27.useMemo(() => {
|
|
5834
6172
|
if (!suggestion_state) return [];
|
|
5835
6173
|
const query = suggestion_state.query.toLowerCase();
|
|
5836
6174
|
if (!query) return suggestion_state.commands;
|
|
@@ -5838,7 +6176,7 @@ var HazoUiTextbox = ({
|
|
|
5838
6176
|
(cmd) => cmd.action_label.toLowerCase().includes(query) || cmd.action.toLowerCase().includes(query) || cmd.action_description?.toLowerCase().includes(query)
|
|
5839
6177
|
);
|
|
5840
6178
|
}, [suggestion_state]);
|
|
5841
|
-
|
|
6179
|
+
React27.useEffect(() => {
|
|
5842
6180
|
if (!suggestion_state?.is_active) return;
|
|
5843
6181
|
const handle_keydown = (e) => {
|
|
5844
6182
|
switch (e.key) {
|
|
@@ -5873,7 +6211,7 @@ var HazoUiTextbox = ({
|
|
|
5873
6211
|
handle_command_select,
|
|
5874
6212
|
handle_popover_close
|
|
5875
6213
|
]);
|
|
5876
|
-
|
|
6214
|
+
React27.useEffect(() => {
|
|
5877
6215
|
if (!edit_context) return;
|
|
5878
6216
|
const handle_click_outside = (e) => {
|
|
5879
6217
|
if (edit_popover_ref.current && !edit_popover_ref.current.contains(e.target)) {
|
|
@@ -5888,12 +6226,12 @@ var HazoUiTextbox = ({
|
|
|
5888
6226
|
document.removeEventListener("mousedown", handle_click_outside);
|
|
5889
6227
|
};
|
|
5890
6228
|
}, [edit_context]);
|
|
5891
|
-
const edit_commands =
|
|
6229
|
+
const edit_commands = React27.useMemo(() => {
|
|
5892
6230
|
if (!edit_context) return [];
|
|
5893
6231
|
const prefix_config = prefixes.find((p) => p.char === edit_context.command.prefix);
|
|
5894
6232
|
return prefix_config?.commands || [];
|
|
5895
6233
|
}, [edit_context, prefixes]);
|
|
5896
|
-
|
|
6234
|
+
React27.useEffect(() => {
|
|
5897
6235
|
if (!edit_context) return;
|
|
5898
6236
|
const handle_keydown = (e) => {
|
|
5899
6237
|
switch (e.key) {
|
|
@@ -5931,7 +6269,7 @@ var HazoUiTextbox = ({
|
|
|
5931
6269
|
handle_command_remove,
|
|
5932
6270
|
handle_edit_close
|
|
5933
6271
|
]);
|
|
5934
|
-
|
|
6272
|
+
React27.useEffect(() => {
|
|
5935
6273
|
const handle_pill_click = (e) => {
|
|
5936
6274
|
const detail = e.detail;
|
|
5937
6275
|
const { id, prefix, action, action_label, node_pos } = detail;
|
|
@@ -6216,22 +6554,22 @@ var HazoUiTextarea = ({
|
|
|
6216
6554
|
on_command_change,
|
|
6217
6555
|
on_command_remove
|
|
6218
6556
|
}) => {
|
|
6219
|
-
const generated_instance_id =
|
|
6557
|
+
const generated_instance_id = React27.useId();
|
|
6220
6558
|
const instance_id = provided_instance_id || generated_instance_id;
|
|
6221
|
-
const [suggestion_state, set_suggestion_state] =
|
|
6222
|
-
const [selected_index, set_selected_index] =
|
|
6223
|
-
const [popover_position, set_popover_position] =
|
|
6224
|
-
const [edit_context, set_edit_context] =
|
|
6225
|
-
const [edit_selected_index, set_edit_selected_index] =
|
|
6559
|
+
const [suggestion_state, set_suggestion_state] = React27.useState(null);
|
|
6560
|
+
const [selected_index, set_selected_index] = React27.useState(0);
|
|
6561
|
+
const [popover_position, set_popover_position] = React27.useState({ top: 0, left: 0 });
|
|
6562
|
+
const [edit_context, set_edit_context] = React27.useState(null);
|
|
6563
|
+
const [edit_selected_index, set_edit_selected_index] = React27.useState(0);
|
|
6226
6564
|
const is_controlled = value !== void 0;
|
|
6227
|
-
const editor_container_ref =
|
|
6228
|
-
const edit_popover_ref =
|
|
6229
|
-
const [mounted, set_mounted] =
|
|
6230
|
-
|
|
6565
|
+
const editor_container_ref = React27.useRef(null);
|
|
6566
|
+
const edit_popover_ref = React27.useRef(null);
|
|
6567
|
+
const [mounted, set_mounted] = React27.useState(false);
|
|
6568
|
+
React27.useEffect(() => {
|
|
6231
6569
|
set_mounted(true);
|
|
6232
6570
|
}, []);
|
|
6233
6571
|
const calculated_min_height = rows ? `${rows * 1.5}em` : min_height;
|
|
6234
|
-
const suggestion_extensions =
|
|
6572
|
+
const suggestion_extensions = React27.useMemo(() => {
|
|
6235
6573
|
return create_command_suggestion_extension({
|
|
6236
6574
|
prefixes,
|
|
6237
6575
|
instance_id,
|
|
@@ -6280,7 +6618,7 @@ var HazoUiTextarea = ({
|
|
|
6280
6618
|
}
|
|
6281
6619
|
}
|
|
6282
6620
|
});
|
|
6283
|
-
|
|
6621
|
+
React27.useEffect(() => {
|
|
6284
6622
|
if (suggestion_state?.is_active && editor) {
|
|
6285
6623
|
requestAnimationFrame(() => {
|
|
6286
6624
|
const { from } = suggestion_state.range;
|
|
@@ -6304,7 +6642,7 @@ var HazoUiTextarea = ({
|
|
|
6304
6642
|
});
|
|
6305
6643
|
}
|
|
6306
6644
|
}, [suggestion_state, editor]);
|
|
6307
|
-
|
|
6645
|
+
React27.useEffect(() => {
|
|
6308
6646
|
if (is_controlled && editor && !editor.isFocused) {
|
|
6309
6647
|
const current_text = editor.getText();
|
|
6310
6648
|
if (value !== current_text) {
|
|
@@ -6317,12 +6655,12 @@ var HazoUiTextarea = ({
|
|
|
6317
6655
|
}
|
|
6318
6656
|
}
|
|
6319
6657
|
}, [value, editor, is_controlled, prefixes, pill_variant]);
|
|
6320
|
-
|
|
6658
|
+
React27.useEffect(() => {
|
|
6321
6659
|
if (editor) {
|
|
6322
6660
|
editor.setEditable(!disabled);
|
|
6323
6661
|
}
|
|
6324
6662
|
}, [disabled, editor]);
|
|
6325
|
-
const handle_command_select =
|
|
6663
|
+
const handle_command_select = React27.useCallback(
|
|
6326
6664
|
(command) => {
|
|
6327
6665
|
if (!editor || !suggestion_state) return;
|
|
6328
6666
|
const prefix_config = prefixes.find((p) => p.char === suggestion_state.prefix);
|
|
@@ -6342,15 +6680,15 @@ var HazoUiTextarea = ({
|
|
|
6342
6680
|
},
|
|
6343
6681
|
[editor, suggestion_state, pill_variant, on_command_insert, prefixes]
|
|
6344
6682
|
);
|
|
6345
|
-
const handle_popover_close =
|
|
6683
|
+
const handle_popover_close = React27.useCallback(() => {
|
|
6346
6684
|
set_suggestion_state(null);
|
|
6347
6685
|
editor?.commands.focus();
|
|
6348
6686
|
}, [editor]);
|
|
6349
|
-
const handle_edit_close =
|
|
6687
|
+
const handle_edit_close = React27.useCallback(() => {
|
|
6350
6688
|
set_edit_context(null);
|
|
6351
6689
|
editor?.commands.focus();
|
|
6352
6690
|
}, [editor]);
|
|
6353
|
-
const handle_command_update =
|
|
6691
|
+
const handle_command_update = React27.useCallback(
|
|
6354
6692
|
(new_command) => {
|
|
6355
6693
|
if (!editor || !edit_context) return;
|
|
6356
6694
|
const old_command = edit_context.command;
|
|
@@ -6366,7 +6704,7 @@ var HazoUiTextarea = ({
|
|
|
6366
6704
|
},
|
|
6367
6705
|
[editor, edit_context, on_command_change]
|
|
6368
6706
|
);
|
|
6369
|
-
const handle_command_remove =
|
|
6707
|
+
const handle_command_remove = React27.useCallback(() => {
|
|
6370
6708
|
if (!editor || !edit_context) return;
|
|
6371
6709
|
const command = edit_context.command;
|
|
6372
6710
|
editor.state.doc.descendants((node, pos) => {
|
|
@@ -6380,7 +6718,7 @@ var HazoUiTextarea = ({
|
|
|
6380
6718
|
}
|
|
6381
6719
|
set_edit_context(null);
|
|
6382
6720
|
}, [editor, edit_context, on_command_remove]);
|
|
6383
|
-
const filtered_commands =
|
|
6721
|
+
const filtered_commands = React27.useMemo(() => {
|
|
6384
6722
|
if (!suggestion_state) return [];
|
|
6385
6723
|
const query = suggestion_state.query.toLowerCase();
|
|
6386
6724
|
if (!query) return suggestion_state.commands;
|
|
@@ -6388,7 +6726,7 @@ var HazoUiTextarea = ({
|
|
|
6388
6726
|
(cmd) => cmd.action_label.toLowerCase().includes(query) || cmd.action.toLowerCase().includes(query) || cmd.action_description?.toLowerCase().includes(query)
|
|
6389
6727
|
);
|
|
6390
6728
|
}, [suggestion_state]);
|
|
6391
|
-
|
|
6729
|
+
React27.useEffect(() => {
|
|
6392
6730
|
if (!suggestion_state?.is_active) return;
|
|
6393
6731
|
const handle_keydown = (e) => {
|
|
6394
6732
|
switch (e.key) {
|
|
@@ -6423,7 +6761,7 @@ var HazoUiTextarea = ({
|
|
|
6423
6761
|
handle_command_select,
|
|
6424
6762
|
handle_popover_close
|
|
6425
6763
|
]);
|
|
6426
|
-
|
|
6764
|
+
React27.useEffect(() => {
|
|
6427
6765
|
if (!edit_context) return;
|
|
6428
6766
|
const handle_click_outside = (e) => {
|
|
6429
6767
|
if (edit_popover_ref.current && !edit_popover_ref.current.contains(e.target)) {
|
|
@@ -6438,12 +6776,12 @@ var HazoUiTextarea = ({
|
|
|
6438
6776
|
document.removeEventListener("mousedown", handle_click_outside);
|
|
6439
6777
|
};
|
|
6440
6778
|
}, [edit_context]);
|
|
6441
|
-
const edit_commands =
|
|
6779
|
+
const edit_commands = React27.useMemo(() => {
|
|
6442
6780
|
if (!edit_context) return [];
|
|
6443
6781
|
const prefix_config = prefixes.find((p) => p.char === edit_context.command.prefix);
|
|
6444
6782
|
return prefix_config?.commands || [];
|
|
6445
6783
|
}, [edit_context, prefixes]);
|
|
6446
|
-
|
|
6784
|
+
React27.useEffect(() => {
|
|
6447
6785
|
if (!edit_context) return;
|
|
6448
6786
|
const handle_keydown = (e) => {
|
|
6449
6787
|
switch (e.key) {
|
|
@@ -6481,7 +6819,7 @@ var HazoUiTextarea = ({
|
|
|
6481
6819
|
handle_command_remove,
|
|
6482
6820
|
handle_edit_close
|
|
6483
6821
|
]);
|
|
6484
|
-
|
|
6822
|
+
React27.useEffect(() => {
|
|
6485
6823
|
const handle_pill_click = (e) => {
|
|
6486
6824
|
const detail = e.detail;
|
|
6487
6825
|
const { id, prefix, action, action_label, node_pos } = detail;
|
|
@@ -6697,39 +7035,47 @@ function resolve_animation_classes(open_anim = "zoom", close_anim = "zoom") {
|
|
|
6697
7035
|
}
|
|
6698
7036
|
var VARIANT_PRESETS = {
|
|
6699
7037
|
info: {
|
|
6700
|
-
header_background_color: "
|
|
6701
|
-
description_background_color: "
|
|
6702
|
-
header_text_color: "
|
|
6703
|
-
border_color: "
|
|
6704
|
-
accent_color: "
|
|
7038
|
+
header_background_color: "var(--dialog-info-bg)",
|
|
7039
|
+
description_background_color: "var(--dialog-info-bg)",
|
|
7040
|
+
header_text_color: "var(--dialog-info-fg)",
|
|
7041
|
+
border_color: "var(--dialog-info-fg)",
|
|
7042
|
+
accent_color: "var(--dialog-info-fg)",
|
|
6705
7043
|
overlay_class_name: "bg-blue-950/50"
|
|
6706
7044
|
},
|
|
6707
7045
|
success: {
|
|
6708
|
-
header_background_color: "
|
|
6709
|
-
description_background_color: "
|
|
6710
|
-
header_text_color: "
|
|
6711
|
-
border_color: "
|
|
6712
|
-
accent_color: "
|
|
7046
|
+
header_background_color: "var(--dialog-success-bg)",
|
|
7047
|
+
description_background_color: "var(--dialog-success-bg)",
|
|
7048
|
+
header_text_color: "var(--dialog-success-fg)",
|
|
7049
|
+
border_color: "var(--dialog-success-fg)",
|
|
7050
|
+
accent_color: "var(--dialog-success-fg)",
|
|
6713
7051
|
overlay_class_name: "bg-green-950/50"
|
|
6714
7052
|
},
|
|
6715
7053
|
warning: {
|
|
6716
|
-
header_background_color: "
|
|
6717
|
-
description_background_color: "
|
|
6718
|
-
header_text_color: "
|
|
6719
|
-
border_color: "
|
|
6720
|
-
accent_color: "
|
|
7054
|
+
header_background_color: "var(--dialog-warning-bg)",
|
|
7055
|
+
description_background_color: "var(--dialog-warning-bg)",
|
|
7056
|
+
header_text_color: "var(--dialog-warning-fg)",
|
|
7057
|
+
border_color: "var(--dialog-warning-fg)",
|
|
7058
|
+
accent_color: "var(--dialog-warning-fg)",
|
|
6721
7059
|
overlay_class_name: "bg-yellow-950/50"
|
|
6722
7060
|
},
|
|
6723
7061
|
destructive: {
|
|
6724
|
-
header_background_color: "
|
|
6725
|
-
description_background_color: "
|
|
6726
|
-
header_text_color: "
|
|
6727
|
-
border_color: "
|
|
6728
|
-
accent_color: "
|
|
7062
|
+
header_background_color: "var(--dialog-destructive-bg)",
|
|
7063
|
+
description_background_color: "var(--dialog-destructive-bg)",
|
|
7064
|
+
header_text_color: "var(--dialog-destructive-fg)",
|
|
7065
|
+
border_color: "var(--dialog-destructive-fg)",
|
|
7066
|
+
accent_color: "var(--dialog-destructive-fg)",
|
|
6729
7067
|
overlay_class_name: "bg-red-950/50",
|
|
6730
7068
|
action_button_variant: "destructive"
|
|
6731
7069
|
}
|
|
6732
7070
|
};
|
|
7071
|
+
var NEUTRAL_VARIANT_PRESET = {
|
|
7072
|
+
header_background_color: "hsl(var(--dialog-border) / 0.12)",
|
|
7073
|
+
description_background_color: "hsl(var(--dialog-border) / 0.12)",
|
|
7074
|
+
header_text_color: "hsl(var(--dialog-fg))",
|
|
7075
|
+
border_color: "hsl(var(--dialog-border))",
|
|
7076
|
+
accent_color: "hsl(var(--dialog-border))",
|
|
7077
|
+
overlay_class_name: "bg-black/50"
|
|
7078
|
+
};
|
|
6733
7079
|
function HazoUiDialog({
|
|
6734
7080
|
open,
|
|
6735
7081
|
onOpenChange,
|
|
@@ -6738,13 +7084,13 @@ function HazoUiDialog({
|
|
|
6738
7084
|
onCancel,
|
|
6739
7085
|
title = "Action required",
|
|
6740
7086
|
description,
|
|
6741
|
-
actionButtonText
|
|
7087
|
+
actionButtonText: actionButtonTextProp,
|
|
6742
7088
|
actionButtonVariant,
|
|
6743
7089
|
cancelButtonText = "Cancel",
|
|
6744
|
-
showCancelButton
|
|
7090
|
+
showCancelButton: showCancelButtonProp,
|
|
6745
7091
|
showActionButton = true,
|
|
6746
|
-
closeOnConfirm
|
|
6747
|
-
actionButtonLoading
|
|
7092
|
+
closeOnConfirm: closeOnConfirmProp,
|
|
7093
|
+
actionButtonLoading: actionButtonLoadingProp,
|
|
6748
7094
|
actionButtonDisabled = false,
|
|
6749
7095
|
actionButtonIcon,
|
|
6750
7096
|
footerContent,
|
|
@@ -6764,18 +7110,46 @@ function HazoUiDialog({
|
|
|
6764
7110
|
borderColor,
|
|
6765
7111
|
accentColor,
|
|
6766
7112
|
headerBar = false,
|
|
6767
|
-
headerBarColor
|
|
7113
|
+
headerBarColor,
|
|
6768
7114
|
className,
|
|
6769
7115
|
contentClassName,
|
|
6770
7116
|
overlayClassName,
|
|
6771
7117
|
headerClassName,
|
|
6772
7118
|
footerClassName,
|
|
6773
|
-
showCloseButton = true
|
|
7119
|
+
showCloseButton = true,
|
|
7120
|
+
kind
|
|
6774
7121
|
}) {
|
|
6775
7122
|
const config = get_hazo_ui_config();
|
|
6776
|
-
const
|
|
7123
|
+
const is_confirm_kind = kind === "confirm";
|
|
7124
|
+
const is_status_kind = kind === "status";
|
|
7125
|
+
const [internal_confirm_loading, set_internal_confirm_loading] = React27.useState(false);
|
|
7126
|
+
const cancel_ref = React27.useRef(null);
|
|
7127
|
+
const variant_preset = variant !== "default" ? VARIANT_PRESETS[variant] : is_status_kind || is_confirm_kind ? NEUTRAL_VARIANT_PRESET : void 0;
|
|
6777
7128
|
const resolved_action_button_variant = actionButtonVariant ?? variant_preset?.action_button_variant ?? "default";
|
|
7129
|
+
const showCancelButton = showCancelButtonProp ?? (is_status_kind ? false : true);
|
|
7130
|
+
const closeOnConfirm = closeOnConfirmProp ?? (is_status_kind || is_confirm_kind ? true : false);
|
|
7131
|
+
const actionButtonText = actionButtonTextProp ?? (is_status_kind ? "OK" : is_confirm_kind ? showCancelButton ? "Confirm" : "OK" : "Confirm");
|
|
7132
|
+
const actionButtonLoading = actionButtonLoadingProp ?? (is_confirm_kind ? internal_confirm_loading : false);
|
|
6778
7133
|
const handleConfirm = () => {
|
|
7134
|
+
if (is_confirm_kind) {
|
|
7135
|
+
try {
|
|
7136
|
+
const result = onConfirm?.();
|
|
7137
|
+
if (result instanceof Promise) {
|
|
7138
|
+
if (actionButtonLoadingProp === void 0) set_internal_confirm_loading(true);
|
|
7139
|
+
result.then(() => {
|
|
7140
|
+
if (closeOnConfirm) onOpenChange?.(false);
|
|
7141
|
+
}).catch(() => {
|
|
7142
|
+
}).finally(() => {
|
|
7143
|
+
if (actionButtonLoadingProp === void 0) set_internal_confirm_loading(false);
|
|
7144
|
+
});
|
|
7145
|
+
return;
|
|
7146
|
+
}
|
|
7147
|
+
} catch {
|
|
7148
|
+
return;
|
|
7149
|
+
}
|
|
7150
|
+
if (closeOnConfirm) onOpenChange?.(false);
|
|
7151
|
+
return;
|
|
7152
|
+
}
|
|
6779
7153
|
onConfirm?.();
|
|
6780
7154
|
if (closeOnConfirm) {
|
|
6781
7155
|
onOpenChange?.(false);
|
|
@@ -6795,12 +7169,14 @@ function HazoUiDialog({
|
|
|
6795
7169
|
const finalHeaderBackgroundColor = headerBackgroundColor ?? variant_preset?.header_background_color ?? config.header_background_color;
|
|
6796
7170
|
const finalDescriptionBgColor = descriptionBackgroundColor ?? variant_preset?.description_background_color;
|
|
6797
7171
|
const finalHeaderTextColor = headerTextColor ?? variant_preset?.header_text_color ?? config.header_text_color;
|
|
6798
|
-
const is_variant_active = variant !== "default";
|
|
7172
|
+
const is_variant_active = variant !== "default" || is_status_kind;
|
|
6799
7173
|
const has_split_header = splitHeader && !headerBar && !!finalDescriptionBgColor && !!description;
|
|
6800
7174
|
const has_merged_variant_header = !splitHeader && is_variant_active && !headerBar && !!description;
|
|
7175
|
+
const resolvedHeaderBarColor = headerBarColor ?? (variant !== "default" && variant_preset ? variant_preset.header_text_color : "var(--dialog-header-bar-bg)");
|
|
6801
7176
|
const headerStyles = {
|
|
6802
7177
|
...headerBar && {
|
|
6803
|
-
backgroundColor:
|
|
7178
|
+
backgroundColor: resolvedHeaderBarColor,
|
|
7179
|
+
color: "var(--dialog-header-bar-fg)",
|
|
6804
7180
|
paddingTop: compact ? "0.625rem" : "1.5rem",
|
|
6805
7181
|
paddingBottom: compact ? "0.625rem" : "1.5rem",
|
|
6806
7182
|
paddingLeft: "1.5rem",
|
|
@@ -6810,15 +7186,19 @@ function HazoUiDialog({
|
|
|
6810
7186
|
...!has_split_header && finalHeaderTextColor && { color: finalHeaderTextColor }
|
|
6811
7187
|
};
|
|
6812
7188
|
const titleClassName = cn(
|
|
6813
|
-
"cls_dialog_title"
|
|
6814
|
-
headerBar && "!text-white"
|
|
7189
|
+
"cls_dialog_title"
|
|
6815
7190
|
);
|
|
6816
7191
|
const descriptionClassName = cn(
|
|
6817
|
-
"cls_dialog_description"
|
|
6818
|
-
headerBar && "!text-white/80"
|
|
7192
|
+
"cls_dialog_description"
|
|
6819
7193
|
);
|
|
6820
7194
|
const bodyStyles = {
|
|
6821
|
-
...bodyBackgroundColor && { backgroundColor: bodyBackgroundColor }
|
|
7195
|
+
...bodyBackgroundColor && { backgroundColor: bodyBackgroundColor },
|
|
7196
|
+
// kind="form" gets a comfortable body/label typography scale via the
|
|
7197
|
+
// hazo_theme --dialog-body-size token. --dialog-label-size is intentionally
|
|
7198
|
+
// not re-applied here: CSS custom properties inherit, so a consumer's own
|
|
7199
|
+
// <label> elements inside `children` can reference var(--dialog-label-size)
|
|
7200
|
+
// directly without any extra plumbing from this component.
|
|
7201
|
+
...kind === "form" && { fontSize: "var(--dialog-body-size)" }
|
|
6822
7202
|
};
|
|
6823
7203
|
const footerStyles = {
|
|
6824
7204
|
...footerBackgroundColor && { backgroundColor: footerBackgroundColor }
|
|
@@ -6842,6 +7222,86 @@ function HazoUiDialog({
|
|
|
6842
7222
|
...finalCancelTextColor && { color: finalCancelTextColor },
|
|
6843
7223
|
...finalCancelBorderColor && { borderColor: finalCancelBorderColor }
|
|
6844
7224
|
};
|
|
7225
|
+
if (is_confirm_kind) {
|
|
7226
|
+
const top_border_color = resolved_border_color ?? "hsl(var(--dialog-border))";
|
|
7227
|
+
return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
7228
|
+
/* @__PURE__ */ jsx(
|
|
7229
|
+
DialogOverlay,
|
|
7230
|
+
{
|
|
7231
|
+
className: cn(
|
|
7232
|
+
"cls_confirm_dialog_overlay",
|
|
7233
|
+
overlayClassName ?? variant_preset?.overlay_class_name
|
|
7234
|
+
),
|
|
7235
|
+
style: { backdropFilter: "blur(4px)" }
|
|
7236
|
+
}
|
|
7237
|
+
),
|
|
7238
|
+
/* @__PURE__ */ jsxs(
|
|
7239
|
+
DialogPrimitive.Content,
|
|
7240
|
+
{
|
|
7241
|
+
className: cn(
|
|
7242
|
+
"cls_confirm_dialog_content",
|
|
7243
|
+
"fixed left-[50%] top-[50%] z-50",
|
|
7244
|
+
"translate-x-[-50%] translate-y-[-50%]",
|
|
7245
|
+
"bg-background shadow-lg",
|
|
7246
|
+
"duration-200",
|
|
7247
|
+
animationClasses,
|
|
7248
|
+
"overflow-hidden",
|
|
7249
|
+
className
|
|
7250
|
+
),
|
|
7251
|
+
style: {
|
|
7252
|
+
width: "min(90vw, 420px)",
|
|
7253
|
+
borderRadius: "12px",
|
|
7254
|
+
borderTop: `4px solid ${top_border_color}`,
|
|
7255
|
+
boxShadow: "0 20px 60px rgba(0,0,0,0.15)",
|
|
7256
|
+
outline: "none"
|
|
7257
|
+
},
|
|
7258
|
+
onOpenAutoFocus: (e) => {
|
|
7259
|
+
if ((variant === "destructive" || variant === "warning") && showCancelButton && cancel_ref.current) {
|
|
7260
|
+
e.preventDefault();
|
|
7261
|
+
cancel_ref.current.focus();
|
|
7262
|
+
}
|
|
7263
|
+
},
|
|
7264
|
+
children: [
|
|
7265
|
+
/* @__PURE__ */ jsxs("div", { className: "cls_confirm_dialog_body px-6 pt-7 pb-5", children: [
|
|
7266
|
+
/* @__PURE__ */ jsx(DialogPrimitive.Title, { className: "cls_confirm_dialog_title text-[17px] font-semibold text-foreground mb-2.5", children: title }),
|
|
7267
|
+
children ? /* @__PURE__ */ jsx(DialogPrimitive.Description, { asChild: true, children: /* @__PURE__ */ jsx("div", { className: "cls_confirm_dialog_children text-sm text-muted-foreground leading-relaxed", children }) }) : description ? /* @__PURE__ */ jsx(DialogPrimitive.Description, { className: "cls_confirm_dialog_description text-sm text-muted-foreground leading-relaxed", children: description }) : null
|
|
7268
|
+
] }),
|
|
7269
|
+
/* @__PURE__ */ jsx("div", { className: "cls_confirm_dialog_separator border-t border-border" }),
|
|
7270
|
+
/* @__PURE__ */ jsxs("div", { className: "cls_confirm_dialog_actions px-6 py-4 flex justify-end gap-3", children: [
|
|
7271
|
+
showCancelButton && /* @__PURE__ */ jsx(
|
|
7272
|
+
Button,
|
|
7273
|
+
{
|
|
7274
|
+
ref: cancel_ref,
|
|
7275
|
+
type: "button",
|
|
7276
|
+
className: "cls_confirm_cancel_button focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
7277
|
+
variant: "outline",
|
|
7278
|
+
onClick: handleCancel,
|
|
7279
|
+
disabled: actionButtonLoading,
|
|
7280
|
+
style: cancelButtonStyles,
|
|
7281
|
+
children: cancelButtonText
|
|
7282
|
+
}
|
|
7283
|
+
),
|
|
7284
|
+
showActionButton && /* @__PURE__ */ jsxs(
|
|
7285
|
+
Button,
|
|
7286
|
+
{
|
|
7287
|
+
type: "button",
|
|
7288
|
+
className: "cls_confirm_action_button",
|
|
7289
|
+
variant: resolved_action_button_variant,
|
|
7290
|
+
onClick: handleConfirm,
|
|
7291
|
+
disabled: actionButtonLoading || actionButtonDisabled,
|
|
7292
|
+
style: actionButtonStyles,
|
|
7293
|
+
children: [
|
|
7294
|
+
actionButtonLoading && /* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 mr-2 animate-spin" }),
|
|
7295
|
+
actionButtonText
|
|
7296
|
+
]
|
|
7297
|
+
}
|
|
7298
|
+
)
|
|
7299
|
+
] })
|
|
7300
|
+
]
|
|
7301
|
+
}
|
|
7302
|
+
)
|
|
7303
|
+
] }) });
|
|
7304
|
+
}
|
|
6845
7305
|
return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
6846
7306
|
/* @__PURE__ */ jsx(
|
|
6847
7307
|
DialogOverlay,
|
|
@@ -6916,10 +7376,17 @@ function HazoUiDialog({
|
|
|
6916
7376
|
style: headerStyles,
|
|
6917
7377
|
children: [
|
|
6918
7378
|
/* @__PURE__ */ jsx(DialogTitle, { className: titleClassName, children: title }),
|
|
6919
|
-
description && /* @__PURE__ */ jsx(
|
|
6920
|
-
|
|
6921
|
-
|
|
6922
|
-
|
|
7379
|
+
description && /* @__PURE__ */ jsx(
|
|
7380
|
+
DialogDescription,
|
|
7381
|
+
{
|
|
7382
|
+
className: cn(
|
|
7383
|
+
descriptionClassName,
|
|
7384
|
+
has_merged_variant_header && "italic text-xs mt-1"
|
|
7385
|
+
),
|
|
7386
|
+
style: headerBar ? { opacity: 0.8 } : void 0,
|
|
7387
|
+
children: description
|
|
7388
|
+
}
|
|
7389
|
+
)
|
|
6923
7390
|
]
|
|
6924
7391
|
}
|
|
6925
7392
|
)
|
|
@@ -6985,7 +7452,7 @@ function HazoUiDialog({
|
|
|
6985
7452
|
DialogPrimitive.Close,
|
|
6986
7453
|
{
|
|
6987
7454
|
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-accent data-[state=open]:text-muted-foreground",
|
|
6988
|
-
style: headerBar ? { color: "
|
|
7455
|
+
style: headerBar ? { color: "var(--dialog-header-bar-fg)" } : finalHeaderTextColor ? { color: finalHeaderTextColor } : void 0,
|
|
6989
7456
|
children: [
|
|
6990
7457
|
/* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
|
|
6991
7458
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
@@ -6997,28 +7464,6 @@ function HazoUiDialog({
|
|
|
6997
7464
|
)
|
|
6998
7465
|
] }) });
|
|
6999
7466
|
}
|
|
7000
|
-
var CONFIRM_VARIANT_PRESETS = {
|
|
7001
|
-
destructive: {
|
|
7002
|
-
accent_color: "rgb(220, 38, 38)",
|
|
7003
|
-
confirm_button_color: "rgb(220, 38, 38)",
|
|
7004
|
-
overlay_class_name: "bg-red-950/50"
|
|
7005
|
-
},
|
|
7006
|
-
warning: {
|
|
7007
|
-
accent_color: "rgb(245, 158, 11)",
|
|
7008
|
-
confirm_button_color: "rgb(245, 158, 11)",
|
|
7009
|
-
overlay_class_name: "bg-yellow-950/50"
|
|
7010
|
-
},
|
|
7011
|
-
info: {
|
|
7012
|
-
accent_color: "rgb(37, 99, 235)",
|
|
7013
|
-
confirm_button_color: "rgb(37, 99, 235)",
|
|
7014
|
-
overlay_class_name: "bg-blue-950/50"
|
|
7015
|
-
},
|
|
7016
|
-
success: {
|
|
7017
|
-
accent_color: "rgb(22, 163, 74)",
|
|
7018
|
-
confirm_button_color: "rgb(22, 163, 74)",
|
|
7019
|
-
overlay_class_name: "bg-green-950/50"
|
|
7020
|
-
}
|
|
7021
|
-
};
|
|
7022
7467
|
function HazoUiConfirmDialog({
|
|
7023
7468
|
open,
|
|
7024
7469
|
onOpenChange,
|
|
@@ -7031,128 +7476,39 @@ function HazoUiConfirmDialog({
|
|
|
7031
7476
|
showCancelButton = true,
|
|
7032
7477
|
onConfirm,
|
|
7033
7478
|
onCancel,
|
|
7034
|
-
loading
|
|
7479
|
+
loading,
|
|
7035
7480
|
disabled = false,
|
|
7036
7481
|
accentColor,
|
|
7037
7482
|
confirmButtonColor,
|
|
7038
7483
|
openAnimation = "zoom",
|
|
7039
7484
|
closeAnimation = "zoom"
|
|
7040
7485
|
}) {
|
|
7041
|
-
const
|
|
7042
|
-
|
|
7043
|
-
|
|
7044
|
-
|
|
7045
|
-
|
|
7046
|
-
|
|
7047
|
-
|
|
7048
|
-
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
|
|
7053
|
-
|
|
7054
|
-
|
|
7055
|
-
|
|
7056
|
-
|
|
7057
|
-
|
|
7058
|
-
|
|
7059
|
-
|
|
7060
|
-
|
|
7061
|
-
|
|
7062
|
-
|
|
7063
|
-
const result = onConfirm();
|
|
7064
|
-
if (result instanceof Promise) {
|
|
7065
|
-
set_internal_loading(true);
|
|
7066
|
-
await result;
|
|
7067
|
-
}
|
|
7068
|
-
onOpenChange(false);
|
|
7069
|
-
} catch {
|
|
7070
|
-
} finally {
|
|
7071
|
-
set_internal_loading(false);
|
|
7486
|
+
const resolved_accent_color = confirmButtonColor ?? accentColor;
|
|
7487
|
+
return /* @__PURE__ */ jsx(
|
|
7488
|
+
HazoUiDialog,
|
|
7489
|
+
{
|
|
7490
|
+
kind: "confirm",
|
|
7491
|
+
open,
|
|
7492
|
+
onOpenChange,
|
|
7493
|
+
title,
|
|
7494
|
+
description,
|
|
7495
|
+
variant,
|
|
7496
|
+
actionButtonText: confirmLabel,
|
|
7497
|
+
cancelButtonText: cancelLabel,
|
|
7498
|
+
showCancelButton,
|
|
7499
|
+
onConfirm,
|
|
7500
|
+
onCancel,
|
|
7501
|
+
actionButtonLoading: loading,
|
|
7502
|
+
actionButtonDisabled: disabled,
|
|
7503
|
+
accentColor: resolved_accent_color,
|
|
7504
|
+
openAnimation,
|
|
7505
|
+
closeAnimation,
|
|
7506
|
+
closeOnConfirm: true,
|
|
7507
|
+
children
|
|
7072
7508
|
}
|
|
7073
|
-
|
|
7074
|
-
const handle_cancel = () => {
|
|
7075
|
-
onCancel?.();
|
|
7076
|
-
onOpenChange(false);
|
|
7077
|
-
};
|
|
7078
|
-
const cancel_ref = React26.useRef(null);
|
|
7079
|
-
return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
7080
|
-
/* @__PURE__ */ jsx(
|
|
7081
|
-
DialogOverlay,
|
|
7082
|
-
{
|
|
7083
|
-
className: cn(
|
|
7084
|
-
"cls_confirm_dialog_overlay",
|
|
7085
|
-
variant_preset?.overlay_class_name
|
|
7086
|
-
),
|
|
7087
|
-
style: { backdropFilter: "blur(4px)" }
|
|
7088
|
-
}
|
|
7089
|
-
),
|
|
7090
|
-
/* @__PURE__ */ jsxs(
|
|
7091
|
-
DialogPrimitive.Content,
|
|
7092
|
-
{
|
|
7093
|
-
className: cn(
|
|
7094
|
-
"cls_confirm_dialog_content",
|
|
7095
|
-
"fixed left-[50%] top-[50%] z-50",
|
|
7096
|
-
"translate-x-[-50%] translate-y-[-50%]",
|
|
7097
|
-
"bg-background shadow-lg",
|
|
7098
|
-
"duration-200",
|
|
7099
|
-
animation_classes,
|
|
7100
|
-
"overflow-hidden"
|
|
7101
|
-
),
|
|
7102
|
-
style: {
|
|
7103
|
-
width: "min(90vw, 420px)",
|
|
7104
|
-
borderRadius: "12px",
|
|
7105
|
-
borderTop: `4px solid ${resolved_accent_color}`,
|
|
7106
|
-
boxShadow: "0 20px 60px rgba(0,0,0,0.15)",
|
|
7107
|
-
outline: "none"
|
|
7108
|
-
},
|
|
7109
|
-
onOpenAutoFocus: (e) => {
|
|
7110
|
-
if ((variant === "destructive" || variant === "warning") && showCancelButton && cancel_ref.current) {
|
|
7111
|
-
e.preventDefault();
|
|
7112
|
-
cancel_ref.current.focus();
|
|
7113
|
-
}
|
|
7114
|
-
},
|
|
7115
|
-
children: [
|
|
7116
|
-
/* @__PURE__ */ jsxs("div", { className: "cls_confirm_dialog_body px-6 pt-7 pb-5", children: [
|
|
7117
|
-
/* @__PURE__ */ jsx(DialogPrimitive.Title, { className: "cls_confirm_dialog_title text-[17px] font-semibold text-foreground mb-2.5", children: title }),
|
|
7118
|
-
children ? /* @__PURE__ */ jsx(DialogPrimitive.Description, { asChild: true, children: /* @__PURE__ */ jsx("div", { className: "cls_confirm_dialog_children text-sm text-muted-foreground leading-relaxed", children }) }) : description ? /* @__PURE__ */ jsx(DialogPrimitive.Description, { className: "cls_confirm_dialog_description text-sm text-muted-foreground leading-relaxed", children: description }) : null
|
|
7119
|
-
] }),
|
|
7120
|
-
/* @__PURE__ */ jsx("div", { className: "cls_confirm_dialog_separator border-t border-border" }),
|
|
7121
|
-
/* @__PURE__ */ jsxs("div", { className: "cls_confirm_dialog_actions px-6 py-4 flex justify-end gap-3", children: [
|
|
7122
|
-
showCancelButton && /* @__PURE__ */ jsx(
|
|
7123
|
-
Button,
|
|
7124
|
-
{
|
|
7125
|
-
ref: cancel_ref,
|
|
7126
|
-
type: "button",
|
|
7127
|
-
className: "cls_confirm_cancel_button focus-visible:ring-0 focus-visible:ring-offset-0",
|
|
7128
|
-
variant: "outline",
|
|
7129
|
-
onClick: handle_cancel,
|
|
7130
|
-
disabled: is_loading,
|
|
7131
|
-
style: cancel_button_styles,
|
|
7132
|
-
children: cancelLabel
|
|
7133
|
-
}
|
|
7134
|
-
),
|
|
7135
|
-
/* @__PURE__ */ jsxs(
|
|
7136
|
-
Button,
|
|
7137
|
-
{
|
|
7138
|
-
type: "button",
|
|
7139
|
-
className: "cls_confirm_action_button",
|
|
7140
|
-
onClick: handle_confirm,
|
|
7141
|
-
disabled: is_loading || disabled,
|
|
7142
|
-
style: confirm_button_styles,
|
|
7143
|
-
children: [
|
|
7144
|
-
is_loading && /* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 mr-2 animate-spin" }),
|
|
7145
|
-
resolved_confirm_label
|
|
7146
|
-
]
|
|
7147
|
-
}
|
|
7148
|
-
)
|
|
7149
|
-
] })
|
|
7150
|
-
]
|
|
7151
|
-
}
|
|
7152
|
-
)
|
|
7153
|
-
] }) });
|
|
7509
|
+
);
|
|
7154
7510
|
}
|
|
7155
|
-
var Slider =
|
|
7511
|
+
var Slider = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
7156
7512
|
SliderPrimitive.Root,
|
|
7157
7513
|
{
|
|
7158
7514
|
ref,
|
|
@@ -7205,7 +7561,7 @@ async function getCroppedImg(imageSrc, areaPixels, outputSize, quality) {
|
|
|
7205
7561
|
);
|
|
7206
7562
|
});
|
|
7207
7563
|
}
|
|
7208
|
-
var HazoUiImageCropper =
|
|
7564
|
+
var HazoUiImageCropper = React27.forwardRef(function HazoUiImageCropper2({
|
|
7209
7565
|
imageSrc,
|
|
7210
7566
|
onCropped,
|
|
7211
7567
|
outputSize = 512,
|
|
@@ -7213,19 +7569,19 @@ var HazoUiImageCropper = React26.forwardRef(function HazoUiImageCropper2({
|
|
|
7213
7569
|
zoomLabel = "Zoom",
|
|
7214
7570
|
className
|
|
7215
7571
|
}, ref) {
|
|
7216
|
-
const [crop, set_crop] =
|
|
7572
|
+
const [crop, set_crop] = React27.useState({
|
|
7217
7573
|
x: 0,
|
|
7218
7574
|
y: 0
|
|
7219
7575
|
});
|
|
7220
|
-
const [zoom, set_zoom] =
|
|
7221
|
-
const cropped_area_pixels_ref =
|
|
7222
|
-
const handle_crop_complete =
|
|
7576
|
+
const [zoom, set_zoom] = React27.useState(1);
|
|
7577
|
+
const cropped_area_pixels_ref = React27.useRef(null);
|
|
7578
|
+
const handle_crop_complete = React27.useCallback(
|
|
7223
7579
|
(_croppedArea, croppedAreaPixels) => {
|
|
7224
7580
|
cropped_area_pixels_ref.current = croppedAreaPixels;
|
|
7225
7581
|
},
|
|
7226
7582
|
[]
|
|
7227
7583
|
);
|
|
7228
|
-
|
|
7584
|
+
React27.useImperativeHandle(
|
|
7229
7585
|
ref,
|
|
7230
7586
|
() => ({
|
|
7231
7587
|
getCroppedBlob: async () => {
|
|
@@ -7305,10 +7661,10 @@ function HazoUiImageCropperDialog({
|
|
|
7305
7661
|
outputSize = 512,
|
|
7306
7662
|
quality = 0.9
|
|
7307
7663
|
}) {
|
|
7308
|
-
const cropper_ref =
|
|
7309
|
-
const [image_src, set_image_src] =
|
|
7310
|
-
const [is_confirming, set_is_confirming] =
|
|
7311
|
-
|
|
7664
|
+
const cropper_ref = React27.useRef(null);
|
|
7665
|
+
const [image_src, set_image_src] = React27.useState(null);
|
|
7666
|
+
const [is_confirming, set_is_confirming] = React27.useState(false);
|
|
7667
|
+
React27.useEffect(() => {
|
|
7312
7668
|
if (!file) {
|
|
7313
7669
|
set_image_src(null);
|
|
7314
7670
|
return;
|
|
@@ -7364,7 +7720,7 @@ Drawer.displayName = "Drawer";
|
|
|
7364
7720
|
var DrawerTrigger = Drawer$1.Trigger;
|
|
7365
7721
|
var DrawerPortal = Drawer$1.Portal;
|
|
7366
7722
|
var DrawerClose = Drawer$1.Close;
|
|
7367
|
-
var DrawerOverlay =
|
|
7723
|
+
var DrawerOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7368
7724
|
Drawer$1.Overlay,
|
|
7369
7725
|
{
|
|
7370
7726
|
ref,
|
|
@@ -7376,7 +7732,7 @@ var DrawerOverlay = React26.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
7376
7732
|
}
|
|
7377
7733
|
));
|
|
7378
7734
|
DrawerOverlay.displayName = "DrawerOverlay";
|
|
7379
|
-
var DrawerContent =
|
|
7735
|
+
var DrawerContent = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DrawerPortal, { children: [
|
|
7380
7736
|
/* @__PURE__ */ jsx(DrawerOverlay, {}),
|
|
7381
7737
|
/* @__PURE__ */ jsxs(
|
|
7382
7738
|
Drawer$1.Content,
|
|
@@ -7417,7 +7773,7 @@ var DrawerFooter = ({
|
|
|
7417
7773
|
}
|
|
7418
7774
|
);
|
|
7419
7775
|
DrawerFooter.displayName = "DrawerFooter";
|
|
7420
|
-
var DrawerTitle =
|
|
7776
|
+
var DrawerTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7421
7777
|
Drawer$1.Title,
|
|
7422
7778
|
{
|
|
7423
7779
|
ref,
|
|
@@ -7429,7 +7785,7 @@ var DrawerTitle = React26.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
7429
7785
|
}
|
|
7430
7786
|
));
|
|
7431
7787
|
DrawerTitle.displayName = "DrawerTitle";
|
|
7432
|
-
var DrawerDescription =
|
|
7788
|
+
var DrawerDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7433
7789
|
Drawer$1.Description,
|
|
7434
7790
|
{
|
|
7435
7791
|
ref,
|
|
@@ -7439,14 +7795,14 @@ var DrawerDescription = React26.forwardRef(({ className, ...props }, ref) => /*
|
|
|
7439
7795
|
));
|
|
7440
7796
|
DrawerDescription.displayName = "DrawerDescription";
|
|
7441
7797
|
function useMediaQuery(query) {
|
|
7442
|
-
const get_match =
|
|
7798
|
+
const get_match = React27.useCallback(() => {
|
|
7443
7799
|
if (typeof window === "undefined" || typeof window.matchMedia !== "function") {
|
|
7444
7800
|
return false;
|
|
7445
7801
|
}
|
|
7446
7802
|
return window.matchMedia(query).matches;
|
|
7447
7803
|
}, [query]);
|
|
7448
|
-
const [matches, set_matches] =
|
|
7449
|
-
|
|
7804
|
+
const [matches, set_matches] = React27.useState(false);
|
|
7805
|
+
React27.useEffect(() => {
|
|
7450
7806
|
if (typeof window === "undefined" || typeof window.matchMedia !== "function") {
|
|
7451
7807
|
return;
|
|
7452
7808
|
}
|
|
@@ -7463,7 +7819,7 @@ function useMediaQuery(query) {
|
|
|
7463
7819
|
return matches;
|
|
7464
7820
|
}
|
|
7465
7821
|
var Accordion = AccordionPrimitive.Root;
|
|
7466
|
-
var AccordionItem =
|
|
7822
|
+
var AccordionItem = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7467
7823
|
AccordionPrimitive.Item,
|
|
7468
7824
|
{
|
|
7469
7825
|
ref,
|
|
@@ -7472,7 +7828,7 @@ var AccordionItem = React26.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
7472
7828
|
}
|
|
7473
7829
|
));
|
|
7474
7830
|
AccordionItem.displayName = "AccordionItem";
|
|
7475
|
-
var AccordionTrigger =
|
|
7831
|
+
var AccordionTrigger = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
7476
7832
|
AccordionPrimitive.Trigger,
|
|
7477
7833
|
{
|
|
7478
7834
|
ref,
|
|
@@ -7488,7 +7844,7 @@ var AccordionTrigger = React26.forwardRef(({ className, children, ...props }, re
|
|
|
7488
7844
|
}
|
|
7489
7845
|
) }));
|
|
7490
7846
|
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
|
7491
|
-
var AccordionContent =
|
|
7847
|
+
var AccordionContent = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7492
7848
|
AccordionPrimitive.Content,
|
|
7493
7849
|
{
|
|
7494
7850
|
ref,
|
|
@@ -7498,7 +7854,7 @@ var AccordionContent = React26.forwardRef(({ className, children, ...props }, re
|
|
|
7498
7854
|
}
|
|
7499
7855
|
));
|
|
7500
7856
|
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
|
|
7501
|
-
var Checkbox =
|
|
7857
|
+
var Checkbox = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7502
7858
|
CheckboxPrimitive.Root,
|
|
7503
7859
|
{
|
|
7504
7860
|
ref,
|
|
@@ -7523,7 +7879,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
|
7523
7879
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
7524
7880
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
7525
7881
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
7526
|
-
var DropdownMenuSubTrigger =
|
|
7882
|
+
var DropdownMenuSubTrigger = React27.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
7527
7883
|
DropdownMenuPrimitive.SubTrigger,
|
|
7528
7884
|
{
|
|
7529
7885
|
ref,
|
|
@@ -7540,7 +7896,7 @@ var DropdownMenuSubTrigger = React26.forwardRef(({ className, inset, children, .
|
|
|
7540
7896
|
}
|
|
7541
7897
|
));
|
|
7542
7898
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
7543
|
-
var DropdownMenuSubContent =
|
|
7899
|
+
var DropdownMenuSubContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7544
7900
|
DropdownMenuPrimitive.SubContent,
|
|
7545
7901
|
{
|
|
7546
7902
|
ref,
|
|
@@ -7552,7 +7908,7 @@ var DropdownMenuSubContent = React26.forwardRef(({ className, ...props }, ref) =
|
|
|
7552
7908
|
}
|
|
7553
7909
|
));
|
|
7554
7910
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
7555
|
-
var DropdownMenuContent =
|
|
7911
|
+
var DropdownMenuContent = React27.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
7556
7912
|
DropdownMenuPrimitive.Content,
|
|
7557
7913
|
{
|
|
7558
7914
|
ref,
|
|
@@ -7565,7 +7921,7 @@ var DropdownMenuContent = React26.forwardRef(({ className, sideOffset = 4, ...pr
|
|
|
7565
7921
|
}
|
|
7566
7922
|
) }));
|
|
7567
7923
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
7568
|
-
var DropdownMenuItem =
|
|
7924
|
+
var DropdownMenuItem = React27.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7569
7925
|
DropdownMenuPrimitive.Item,
|
|
7570
7926
|
{
|
|
7571
7927
|
ref,
|
|
@@ -7578,7 +7934,7 @@ var DropdownMenuItem = React26.forwardRef(({ className, inset, ...props }, ref)
|
|
|
7578
7934
|
}
|
|
7579
7935
|
));
|
|
7580
7936
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
7581
|
-
var DropdownMenuCheckboxItem =
|
|
7937
|
+
var DropdownMenuCheckboxItem = React27.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
7582
7938
|
DropdownMenuPrimitive.CheckboxItem,
|
|
7583
7939
|
{
|
|
7584
7940
|
ref,
|
|
@@ -7595,7 +7951,7 @@ var DropdownMenuCheckboxItem = React26.forwardRef(({ className, children, checke
|
|
|
7595
7951
|
}
|
|
7596
7952
|
));
|
|
7597
7953
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
7598
|
-
var DropdownMenuRadioItem =
|
|
7954
|
+
var DropdownMenuRadioItem = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
7599
7955
|
DropdownMenuPrimitive.RadioItem,
|
|
7600
7956
|
{
|
|
7601
7957
|
ref,
|
|
@@ -7611,7 +7967,7 @@ var DropdownMenuRadioItem = React26.forwardRef(({ className, children, ...props
|
|
|
7611
7967
|
}
|
|
7612
7968
|
));
|
|
7613
7969
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
7614
|
-
var DropdownMenuLabel =
|
|
7970
|
+
var DropdownMenuLabel = React27.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7615
7971
|
DropdownMenuPrimitive.Label,
|
|
7616
7972
|
{
|
|
7617
7973
|
ref,
|
|
@@ -7624,7 +7980,7 @@ var DropdownMenuLabel = React26.forwardRef(({ className, inset, ...props }, ref)
|
|
|
7624
7980
|
}
|
|
7625
7981
|
));
|
|
7626
7982
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
7627
|
-
var DropdownMenuSeparator =
|
|
7983
|
+
var DropdownMenuSeparator = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7628
7984
|
DropdownMenuPrimitive.Separator,
|
|
7629
7985
|
{
|
|
7630
7986
|
ref,
|
|
@@ -7648,7 +8004,7 @@ var DropdownMenuShortcut = ({
|
|
|
7648
8004
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
7649
8005
|
var HoverCard = HoverCardPrimitive.Root;
|
|
7650
8006
|
var HoverCardTrigger = HoverCardPrimitive.Trigger;
|
|
7651
|
-
var HoverCardContent =
|
|
8007
|
+
var HoverCardContent = React27.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7652
8008
|
HoverCardPrimitive.Content,
|
|
7653
8009
|
{
|
|
7654
8010
|
ref,
|
|
@@ -7662,7 +8018,7 @@ var HoverCardContent = React26.forwardRef(({ className, align = "center", sideOf
|
|
|
7662
8018
|
}
|
|
7663
8019
|
));
|
|
7664
8020
|
HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
|
|
7665
|
-
var Label3 =
|
|
8021
|
+
var Label3 = React27.forwardRef(
|
|
7666
8022
|
({ className, ...props }, ref) => {
|
|
7667
8023
|
return /* @__PURE__ */ jsx(
|
|
7668
8024
|
"label",
|
|
@@ -7678,7 +8034,7 @@ var Label3 = React26.forwardRef(
|
|
|
7678
8034
|
}
|
|
7679
8035
|
);
|
|
7680
8036
|
Label3.displayName = "Label";
|
|
7681
|
-
var Switch =
|
|
8037
|
+
var Switch = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7682
8038
|
SwitchPrimitives.Root,
|
|
7683
8039
|
{
|
|
7684
8040
|
className: cn(
|
|
@@ -7698,7 +8054,7 @@ var Switch = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
|
|
|
7698
8054
|
}
|
|
7699
8055
|
));
|
|
7700
8056
|
Switch.displayName = SwitchPrimitives.Root.displayName;
|
|
7701
|
-
var Textarea =
|
|
8057
|
+
var Textarea = React27.forwardRef(
|
|
7702
8058
|
({ className, ...props }, ref) => {
|
|
7703
8059
|
return /* @__PURE__ */ jsx(
|
|
7704
8060
|
"textarea",
|
|
@@ -7718,7 +8074,7 @@ var Textarea = React26.forwardRef(
|
|
|
7718
8074
|
}
|
|
7719
8075
|
);
|
|
7720
8076
|
Textarea.displayName = "Textarea";
|
|
7721
|
-
var Separator3 =
|
|
8077
|
+
var Separator3 = React27.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7722
8078
|
SeparatorPrimitive.Root,
|
|
7723
8079
|
{
|
|
7724
8080
|
ref,
|
|
@@ -7736,7 +8092,7 @@ Separator3.displayName = SeparatorPrimitive.Root.displayName;
|
|
|
7736
8092
|
var Collapsible = CollapsiblePrimitive.Root;
|
|
7737
8093
|
var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
|
|
7738
8094
|
var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
|
|
7739
|
-
var ScrollArea =
|
|
8095
|
+
var ScrollArea = React27.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
7740
8096
|
ScrollAreaPrimitive.Root,
|
|
7741
8097
|
{
|
|
7742
8098
|
ref,
|
|
@@ -7750,7 +8106,7 @@ var ScrollArea = React26.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
7750
8106
|
}
|
|
7751
8107
|
));
|
|
7752
8108
|
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
7753
|
-
var ScrollBar =
|
|
8109
|
+
var ScrollBar = React27.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7754
8110
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
7755
8111
|
{
|
|
7756
8112
|
ref,
|
|
@@ -7766,27 +8122,27 @@ var ScrollBar = React26.forwardRef(({ className, orientation = "vertical", ...pr
|
|
|
7766
8122
|
}
|
|
7767
8123
|
));
|
|
7768
8124
|
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
|
|
7769
|
-
var Card =
|
|
8125
|
+
var Card = React27.forwardRef(
|
|
7770
8126
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("rounded-lg border bg-card text-card-foreground shadow-sm", className), ...props })
|
|
7771
8127
|
);
|
|
7772
8128
|
Card.displayName = "Card";
|
|
7773
|
-
var CardHeader =
|
|
8129
|
+
var CardHeader = React27.forwardRef(
|
|
7774
8130
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })
|
|
7775
8131
|
);
|
|
7776
8132
|
CardHeader.displayName = "CardHeader";
|
|
7777
|
-
var CardTitle =
|
|
8133
|
+
var CardTitle = React27.forwardRef(
|
|
7778
8134
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx("h3", { ref, className: cn("text-2xl font-semibold leading-none tracking-tight", className), ...props })
|
|
7779
8135
|
);
|
|
7780
8136
|
CardTitle.displayName = "CardTitle";
|
|
7781
|
-
var CardDescription =
|
|
8137
|
+
var CardDescription = React27.forwardRef(
|
|
7782
8138
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx("p", { ref, className: cn("text-sm text-muted-foreground", className), ...props })
|
|
7783
8139
|
);
|
|
7784
8140
|
CardDescription.displayName = "CardDescription";
|
|
7785
|
-
var CardContent =
|
|
8141
|
+
var CardContent = React27.forwardRef(
|
|
7786
8142
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props })
|
|
7787
8143
|
);
|
|
7788
8144
|
CardContent.displayName = "CardContent";
|
|
7789
|
-
var CardFooter =
|
|
8145
|
+
var CardFooter = React27.forwardRef(
|
|
7790
8146
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center p-6 pt-0", className), ...props })
|
|
7791
8147
|
);
|
|
7792
8148
|
CardFooter.displayName = "CardFooter";
|
|
@@ -7819,16 +8175,16 @@ var toggleVariants = cva(
|
|
|
7819
8175
|
defaultVariants: { variant: "default", size: "default" }
|
|
7820
8176
|
}
|
|
7821
8177
|
);
|
|
7822
|
-
var Toggle =
|
|
8178
|
+
var Toggle = React27.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx(TogglePrimitive.Root, { ref, className: cn(toggleVariants({ variant, size, className })), ...props }));
|
|
7823
8179
|
Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
7824
|
-
var ToggleGroupContext =
|
|
8180
|
+
var ToggleGroupContext = React27.createContext({
|
|
7825
8181
|
size: "default",
|
|
7826
8182
|
variant: "default"
|
|
7827
8183
|
});
|
|
7828
|
-
var ToggleGroup =
|
|
8184
|
+
var ToggleGroup = React27.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx(ToggleGroupPrimitive.Root, { ref, className: cn("flex items-center justify-center gap-1", className), ...props, children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: { variant, size }, children }) }));
|
|
7829
8185
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
7830
|
-
var ToggleGroupItem =
|
|
7831
|
-
const context =
|
|
8186
|
+
var ToggleGroupItem = React27.forwardRef(({ className, children, variant, size, ...props }, ref) => {
|
|
8187
|
+
const context = React27.useContext(ToggleGroupContext);
|
|
7832
8188
|
return /* @__PURE__ */ jsx(
|
|
7833
8189
|
ToggleGroupPrimitive.Item,
|
|
7834
8190
|
{
|
|
@@ -7843,7 +8199,7 @@ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
|
7843
8199
|
var AlertDialog = AlertDialogPrimitive.Root;
|
|
7844
8200
|
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
7845
8201
|
var AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
7846
|
-
var AlertDialogOverlay =
|
|
8202
|
+
var AlertDialogOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7847
8203
|
AlertDialogPrimitive.Overlay,
|
|
7848
8204
|
{
|
|
7849
8205
|
ref,
|
|
@@ -7852,7 +8208,7 @@ var AlertDialogOverlay = React26.forwardRef(({ className, ...props }, ref) => /*
|
|
|
7852
8208
|
}
|
|
7853
8209
|
));
|
|
7854
8210
|
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
|
7855
|
-
var AlertDialogContent =
|
|
8211
|
+
var AlertDialogContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
|
|
7856
8212
|
/* @__PURE__ */ jsx(AlertDialogOverlay, {}),
|
|
7857
8213
|
/* @__PURE__ */ jsx(
|
|
7858
8214
|
AlertDialogPrimitive.Content,
|
|
@@ -7868,13 +8224,13 @@ var AlertDialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("div",
|
|
|
7868
8224
|
AlertDialogHeader.displayName = "AlertDialogHeader";
|
|
7869
8225
|
var AlertDialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
|
|
7870
8226
|
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
7871
|
-
var AlertDialogTitle =
|
|
8227
|
+
var AlertDialogTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Title, { ref, className: cn("text-lg font-semibold", className), ...props }));
|
|
7872
8228
|
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
|
7873
|
-
var AlertDialogDescription =
|
|
8229
|
+
var AlertDialogDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
|
|
7874
8230
|
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
|
7875
|
-
var AlertDialogAction =
|
|
8231
|
+
var AlertDialogAction = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Action, { ref, className: cn(buttonVariants(), className), ...props }));
|
|
7876
8232
|
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
|
7877
|
-
var AlertDialogCancel =
|
|
8233
|
+
var AlertDialogCancel = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Cancel, { ref, className: cn(buttonVariants({ variant: "outline" }), "mt-2 sm:mt-0", className), ...props }));
|
|
7878
8234
|
AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
|
|
7879
8235
|
var buttonGroupVariants = cva(
|
|
7880
8236
|
"flex w-fit items-stretch [&>*]:focus-visible:relative [&>*]:focus-visible:z-10",
|
|
@@ -7902,7 +8258,7 @@ function ButtonGroupText({ className, asChild = false, ...props }) {
|
|
|
7902
8258
|
function ButtonGroupSeparator({ className, orientation = "vertical", ...props }) {
|
|
7903
8259
|
return /* @__PURE__ */ jsx(Separator3, { orientation, className: cn("bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto", className), ...props });
|
|
7904
8260
|
}
|
|
7905
|
-
var InputAffix =
|
|
8261
|
+
var InputAffix = React27.forwardRef(
|
|
7906
8262
|
({ className, containerClassName, prefix, suffix, type = "text", ...props }, ref) => {
|
|
7907
8263
|
return /* @__PURE__ */ jsxs(
|
|
7908
8264
|
"div",
|
|
@@ -7934,7 +8290,7 @@ var InputAffix = React26.forwardRef(
|
|
|
7934
8290
|
}
|
|
7935
8291
|
);
|
|
7936
8292
|
InputAffix.displayName = "InputAffix";
|
|
7937
|
-
var SkeletonBase =
|
|
8293
|
+
var SkeletonBase = React27.forwardRef(
|
|
7938
8294
|
({ className, ...rest }, ref) => /* @__PURE__ */ jsx(
|
|
7939
8295
|
"div",
|
|
7940
8296
|
{
|
|
@@ -8110,8 +8466,8 @@ function LoadingTimeout({
|
|
|
8110
8466
|
firm: thresholds?.firm ?? 15e3,
|
|
8111
8467
|
expired: thresholds?.expired ?? 3e4
|
|
8112
8468
|
};
|
|
8113
|
-
const [phase, setPhase] =
|
|
8114
|
-
|
|
8469
|
+
const [phase, setPhase] = React27.useState(active ? "silent" : "idle");
|
|
8470
|
+
React27.useEffect(() => {
|
|
8115
8471
|
if (!active) {
|
|
8116
8472
|
setPhase("idle");
|
|
8117
8473
|
return;
|
|
@@ -8170,7 +8526,7 @@ function ProgressiveImage({
|
|
|
8170
8526
|
onLoad,
|
|
8171
8527
|
onError
|
|
8172
8528
|
}) {
|
|
8173
|
-
const [loaded, setLoaded] =
|
|
8529
|
+
const [loaded, setLoaded] = React27.useState(false);
|
|
8174
8530
|
return /* @__PURE__ */ jsxs(
|
|
8175
8531
|
"div",
|
|
8176
8532
|
{
|
|
@@ -8323,7 +8679,7 @@ function NotificationPanel({
|
|
|
8323
8679
|
loading = false,
|
|
8324
8680
|
className
|
|
8325
8681
|
}) {
|
|
8326
|
-
const hasChildren =
|
|
8682
|
+
const hasChildren = React27.Children.count(children) > 0 && children !== null && children !== void 0;
|
|
8327
8683
|
return /* @__PURE__ */ jsxs(
|
|
8328
8684
|
"div",
|
|
8329
8685
|
{
|
|
@@ -8674,6 +9030,9 @@ function KanbanCard({
|
|
|
8674
9030
|
tabIndex: 0,
|
|
8675
9031
|
"aria-roledescription": "draggable card",
|
|
8676
9032
|
"aria-grabbed": isDragging,
|
|
9033
|
+
onDoubleClick: () => {
|
|
9034
|
+
if (showEdit && onEditRequest && !dragging) onEditRequest(item);
|
|
9035
|
+
},
|
|
8677
9036
|
children: [
|
|
8678
9037
|
showEdit && onEditRequest && !dragging && /* @__PURE__ */ jsx(
|
|
8679
9038
|
"button",
|
|
@@ -8780,29 +9139,29 @@ function KanbanEditor({
|
|
|
8780
9139
|
onSave,
|
|
8781
9140
|
onClose
|
|
8782
9141
|
}) {
|
|
8783
|
-
const [draft, set_draft] =
|
|
8784
|
-
const [saving, set_saving] =
|
|
8785
|
-
const [error, set_error] =
|
|
9142
|
+
const [draft, set_draft] = React27.useState(item);
|
|
9143
|
+
const [saving, set_saving] = React27.useState(false);
|
|
9144
|
+
const [error, set_error] = React27.useState(null);
|
|
8786
9145
|
const item_id = item?.id ?? null;
|
|
8787
|
-
|
|
9146
|
+
React27.useEffect(() => {
|
|
8788
9147
|
set_draft(item);
|
|
8789
9148
|
set_error(null);
|
|
8790
9149
|
set_saving(false);
|
|
8791
9150
|
}, [item_id]);
|
|
8792
9151
|
const resolved_columns = columns ?? [];
|
|
8793
9152
|
const resolved_priorities = priorities ?? DEFAULT_PRIORITIES;
|
|
8794
|
-
const resolved_fields =
|
|
9153
|
+
const resolved_fields = React27.useMemo(() => {
|
|
8795
9154
|
if (fields) return fields;
|
|
8796
9155
|
if (!item) return [];
|
|
8797
9156
|
return auto_detect_fields(item, resolved_columns);
|
|
8798
9157
|
}, [fields, item, resolved_columns]);
|
|
8799
|
-
const required_keys =
|
|
9158
|
+
const required_keys = React27.useMemo(
|
|
8800
9159
|
() => resolved_fields.filter(
|
|
8801
9160
|
(f) => f.required && (f.type === "text" || f.type === "textarea" || f.type === "number")
|
|
8802
9161
|
).map((f) => f.key),
|
|
8803
9162
|
[resolved_fields]
|
|
8804
9163
|
);
|
|
8805
|
-
const all_required_filled =
|
|
9164
|
+
const all_required_filled = React27.useMemo(() => {
|
|
8806
9165
|
if (!draft) return false;
|
|
8807
9166
|
for (const key of required_keys) {
|
|
8808
9167
|
const v = draft[key];
|
|
@@ -8811,7 +9170,7 @@ function KanbanEditor({
|
|
|
8811
9170
|
}
|
|
8812
9171
|
return true;
|
|
8813
9172
|
}, [draft, required_keys]);
|
|
8814
|
-
const is_dirty =
|
|
9173
|
+
const is_dirty = React27.useMemo(() => {
|
|
8815
9174
|
if (!draft || !item) return false;
|
|
8816
9175
|
try {
|
|
8817
9176
|
return JSON.stringify(draft) !== JSON.stringify(item);
|
|
@@ -8819,7 +9178,7 @@ function KanbanEditor({
|
|
|
8819
9178
|
return draft !== item;
|
|
8820
9179
|
}
|
|
8821
9180
|
}, [draft, item]);
|
|
8822
|
-
const handle_save =
|
|
9181
|
+
const handle_save = React27.useCallback(async () => {
|
|
8823
9182
|
if (!draft || !item) return;
|
|
8824
9183
|
if (saving) return;
|
|
8825
9184
|
set_error(null);
|
|
@@ -8944,6 +9303,15 @@ function KanbanEditorFieldRow({
|
|
|
8944
9303
|
onChange: (e) => set_value(e.target.value)
|
|
8945
9304
|
}
|
|
8946
9305
|
),
|
|
9306
|
+
field.type === "richtext" && /* @__PURE__ */ jsx(
|
|
9307
|
+
HazoUiRte,
|
|
9308
|
+
{
|
|
9309
|
+
html: typeof value === "string" ? value : "",
|
|
9310
|
+
min_height: "180px",
|
|
9311
|
+
placeholder: field.placeholder,
|
|
9312
|
+
on_change: (out) => set_value(out.html)
|
|
9313
|
+
}
|
|
9314
|
+
),
|
|
8947
9315
|
field.type === "textarea" && /* @__PURE__ */ jsx(
|
|
8948
9316
|
Textarea,
|
|
8949
9317
|
{
|
|
@@ -9038,11 +9406,11 @@ function HazoUiKanbanFilter({
|
|
|
9038
9406
|
className
|
|
9039
9407
|
}) {
|
|
9040
9408
|
const is_controlled = value !== void 0;
|
|
9041
|
-
const [internal, set_internal] =
|
|
9409
|
+
const [internal, set_internal] = React27.useState(
|
|
9042
9410
|
defaultValue ?? EMPTY_FILTER
|
|
9043
9411
|
);
|
|
9044
9412
|
const current = is_controlled ? value : internal;
|
|
9045
|
-
const update =
|
|
9413
|
+
const update = React27.useCallback(
|
|
9046
9414
|
(next) => {
|
|
9047
9415
|
if (!is_controlled) set_internal(next);
|
|
9048
9416
|
onChange?.(next);
|
|
@@ -9205,29 +9573,29 @@ function HazoUiKanban({
|
|
|
9205
9573
|
onCardSave,
|
|
9206
9574
|
disableEdit = false
|
|
9207
9575
|
}) {
|
|
9208
|
-
const label_fn =
|
|
9576
|
+
const label_fn = React27.useCallback(
|
|
9209
9577
|
(item) => itemLabel ? itemLabel(item) : item.id,
|
|
9210
9578
|
[itemLabel]
|
|
9211
9579
|
);
|
|
9212
|
-
const dnd_context_id =
|
|
9213
|
-
const [overlay, set_overlay] =
|
|
9580
|
+
const dnd_context_id = React27.useId();
|
|
9581
|
+
const [overlay, set_overlay] = React27.useState(
|
|
9214
9582
|
/* @__PURE__ */ new Map()
|
|
9215
9583
|
);
|
|
9216
|
-
const [active_id, set_active_id] =
|
|
9217
|
-
const [active_tab, set_active_tab] =
|
|
9218
|
-
const [editing_item, set_editing_item] =
|
|
9584
|
+
const [active_id, set_active_id] = React27.useState(null);
|
|
9585
|
+
const [active_tab, set_active_tab] = React27.useState(columns[0]?.key ?? "");
|
|
9586
|
+
const [editing_item, set_editing_item] = React27.useState(null);
|
|
9219
9587
|
const show_edit = !disableEdit && typeof onCardSave === "function";
|
|
9220
|
-
const handle_edit_request =
|
|
9588
|
+
const handle_edit_request = React27.useCallback(
|
|
9221
9589
|
(it) => {
|
|
9222
9590
|
const typed = items.find((x) => x.id === it.id);
|
|
9223
9591
|
if (typed) set_editing_item(typed);
|
|
9224
9592
|
},
|
|
9225
9593
|
[items]
|
|
9226
9594
|
);
|
|
9227
|
-
const handle_editor_close =
|
|
9595
|
+
const handle_editor_close = React27.useCallback(() => {
|
|
9228
9596
|
set_editing_item(null);
|
|
9229
9597
|
}, []);
|
|
9230
|
-
|
|
9598
|
+
React27.useEffect(() => {
|
|
9231
9599
|
if (overlay.size === 0) return;
|
|
9232
9600
|
set_overlay((prev) => {
|
|
9233
9601
|
let changed = false;
|
|
@@ -9242,11 +9610,11 @@ function HazoUiKanban({
|
|
|
9242
9610
|
return changed ? next : prev;
|
|
9243
9611
|
});
|
|
9244
9612
|
}, [items, overlay]);
|
|
9245
|
-
const grouped =
|
|
9613
|
+
const grouped = React27.useMemo(
|
|
9246
9614
|
() => group_items_by_column(items, overlay, columns),
|
|
9247
9615
|
[items, overlay, columns]
|
|
9248
9616
|
);
|
|
9249
|
-
const find_item =
|
|
9617
|
+
const find_item = React27.useCallback(
|
|
9250
9618
|
(id) => items.find((i) => i.id === id),
|
|
9251
9619
|
[items]
|
|
9252
9620
|
);
|
|
@@ -9254,7 +9622,7 @@ function HazoUiKanban({
|
|
|
9254
9622
|
useSensor(PointerSensor, { activationConstraint: { distance: 5 } }),
|
|
9255
9623
|
useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })
|
|
9256
9624
|
);
|
|
9257
|
-
const merged_announcements =
|
|
9625
|
+
const merged_announcements = React27.useMemo(() => {
|
|
9258
9626
|
const defaults = default_announcements(label_fn);
|
|
9259
9627
|
return {
|
|
9260
9628
|
onDragStart: announcements?.onDragStart ?? defaults.onDragStart,
|
|
@@ -9263,7 +9631,7 @@ function HazoUiKanban({
|
|
|
9263
9631
|
onDragCancel: announcements?.onDragCancel ?? defaults.onDragCancel
|
|
9264
9632
|
};
|
|
9265
9633
|
}, [announcements, label_fn]);
|
|
9266
|
-
const dnd_announcements =
|
|
9634
|
+
const dnd_announcements = React27.useMemo(
|
|
9267
9635
|
() => ({
|
|
9268
9636
|
onDragStart({ active }) {
|
|
9269
9637
|
const id = String(active.id);
|
|
@@ -9321,10 +9689,10 @@ function HazoUiKanban({
|
|
|
9321
9689
|
}),
|
|
9322
9690
|
[find_item, columns, grouped, merged_announcements]
|
|
9323
9691
|
);
|
|
9324
|
-
const handle_drag_start =
|
|
9692
|
+
const handle_drag_start = React27.useCallback((event) => {
|
|
9325
9693
|
set_active_id(String(event.active.id));
|
|
9326
9694
|
}, []);
|
|
9327
|
-
const make_revert_handle =
|
|
9695
|
+
const make_revert_handle = React27.useCallback(
|
|
9328
9696
|
(item_id) => ({
|
|
9329
9697
|
revert: () => {
|
|
9330
9698
|
set_overlay((prev) => {
|
|
@@ -9337,7 +9705,7 @@ function HazoUiKanban({
|
|
|
9337
9705
|
}),
|
|
9338
9706
|
[]
|
|
9339
9707
|
);
|
|
9340
|
-
const handle_drag_end =
|
|
9708
|
+
const handle_drag_end = React27.useCallback(
|
|
9341
9709
|
(event) => {
|
|
9342
9710
|
const active_id_str = String(event.active.id);
|
|
9343
9711
|
set_active_id(null);
|
|
@@ -9399,7 +9767,7 @@ function HazoUiKanban({
|
|
|
9399
9767
|
},
|
|
9400
9768
|
[find_item, columns, grouped, onMove, onReorder, make_revert_handle]
|
|
9401
9769
|
);
|
|
9402
|
-
const handle_drag_cancel =
|
|
9770
|
+
const handle_drag_cancel = React27.useCallback(() => {
|
|
9403
9771
|
set_active_id(null);
|
|
9404
9772
|
}, []);
|
|
9405
9773
|
const active_item = active_id ? find_item(active_id) : null;
|
|
@@ -9490,7 +9858,7 @@ function HazoUiKanban({
|
|
|
9490
9858
|
}
|
|
9491
9859
|
);
|
|
9492
9860
|
}
|
|
9493
|
-
var Table2 =
|
|
9861
|
+
var Table2 = React27.forwardRef(
|
|
9494
9862
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "cls_table_wrap relative w-full overflow-auto", children: /* @__PURE__ */ jsx(
|
|
9495
9863
|
"table",
|
|
9496
9864
|
{
|
|
@@ -9501,11 +9869,11 @@ var Table2 = React26.forwardRef(
|
|
|
9501
9869
|
) })
|
|
9502
9870
|
);
|
|
9503
9871
|
Table2.displayName = "Table";
|
|
9504
|
-
var TableHeader2 =
|
|
9872
|
+
var TableHeader2 = React27.forwardRef(
|
|
9505
9873
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props })
|
|
9506
9874
|
);
|
|
9507
9875
|
TableHeader2.displayName = "TableHeader";
|
|
9508
|
-
var TableBody =
|
|
9876
|
+
var TableBody = React27.forwardRef(
|
|
9509
9877
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9510
9878
|
"tbody",
|
|
9511
9879
|
{
|
|
@@ -9516,7 +9884,7 @@ var TableBody = React26.forwardRef(
|
|
|
9516
9884
|
)
|
|
9517
9885
|
);
|
|
9518
9886
|
TableBody.displayName = "TableBody";
|
|
9519
|
-
var TableFooter =
|
|
9887
|
+
var TableFooter = React27.forwardRef(
|
|
9520
9888
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9521
9889
|
"tfoot",
|
|
9522
9890
|
{
|
|
@@ -9527,7 +9895,7 @@ var TableFooter = React26.forwardRef(
|
|
|
9527
9895
|
)
|
|
9528
9896
|
);
|
|
9529
9897
|
TableFooter.displayName = "TableFooter";
|
|
9530
|
-
var TableRow2 =
|
|
9898
|
+
var TableRow2 = React27.forwardRef(
|
|
9531
9899
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9532
9900
|
"tr",
|
|
9533
9901
|
{
|
|
@@ -9541,7 +9909,7 @@ var TableRow2 = React26.forwardRef(
|
|
|
9541
9909
|
)
|
|
9542
9910
|
);
|
|
9543
9911
|
TableRow2.displayName = "TableRow";
|
|
9544
|
-
var TableHead =
|
|
9912
|
+
var TableHead = React27.forwardRef(
|
|
9545
9913
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9546
9914
|
"th",
|
|
9547
9915
|
{
|
|
@@ -9555,7 +9923,7 @@ var TableHead = React26.forwardRef(
|
|
|
9555
9923
|
)
|
|
9556
9924
|
);
|
|
9557
9925
|
TableHead.displayName = "TableHead";
|
|
9558
|
-
var TableCell2 =
|
|
9926
|
+
var TableCell2 = React27.forwardRef(
|
|
9559
9927
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9560
9928
|
"td",
|
|
9561
9929
|
{
|
|
@@ -9566,7 +9934,7 @@ var TableCell2 = React26.forwardRef(
|
|
|
9566
9934
|
)
|
|
9567
9935
|
);
|
|
9568
9936
|
TableCell2.displayName = "TableCell";
|
|
9569
|
-
var TableCaption =
|
|
9937
|
+
var TableCaption = React27.forwardRef(
|
|
9570
9938
|
({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9571
9939
|
"caption",
|
|
9572
9940
|
{
|
|
@@ -10138,18 +10506,18 @@ function Toolbar2(props) {
|
|
|
10138
10506
|
enableFilterDialog,
|
|
10139
10507
|
searchPlaceholder
|
|
10140
10508
|
} = props;
|
|
10141
|
-
const sortFields =
|
|
10509
|
+
const sortFields = React27.useMemo(
|
|
10142
10510
|
() => deriveSortFields(columns),
|
|
10143
10511
|
[columns]
|
|
10144
10512
|
);
|
|
10145
|
-
const filterFields =
|
|
10513
|
+
const filterFields = React27.useMemo(
|
|
10146
10514
|
() => deriveFilterFields(columns),
|
|
10147
10515
|
[columns]
|
|
10148
10516
|
);
|
|
10149
|
-
const [searchValue, setSearchValue] =
|
|
10517
|
+
const [searchValue, setSearchValue] = React27.useState(
|
|
10150
10518
|
filter.search ?? ""
|
|
10151
10519
|
);
|
|
10152
|
-
|
|
10520
|
+
React27.useEffect(() => {
|
|
10153
10521
|
setSearchValue(filter.search ?? "");
|
|
10154
10522
|
}, [filter.search]);
|
|
10155
10523
|
return /* @__PURE__ */ jsxs("div", { className: "cls_hazo_ui_table_toolbar flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between", children: [
|
|
@@ -10510,13 +10878,13 @@ function FunnelChart({
|
|
|
10510
10878
|
showTooltip = true,
|
|
10511
10879
|
className
|
|
10512
10880
|
}) {
|
|
10513
|
-
const [hover_idx, set_hover_idx] =
|
|
10881
|
+
const [hover_idx, set_hover_idx] = React27.useState(null);
|
|
10514
10882
|
const fmt = valueFormat ?? format_num;
|
|
10515
10883
|
const totals = steps.map(step_total);
|
|
10516
10884
|
const value_max = Math.max(1, ...totals);
|
|
10517
10885
|
const plot_w = width - PAD_LEFT2 - PAD_RIGHT2;
|
|
10518
10886
|
const vbox_h = height ?? PAD_TOP2 + steps.length * ROW_H + PAD_BOTTOM2;
|
|
10519
|
-
const handle_mouse_move =
|
|
10887
|
+
const handle_mouse_move = React27.useCallback(
|
|
10520
10888
|
(e) => {
|
|
10521
10889
|
if (steps.length === 0) return;
|
|
10522
10890
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
@@ -10531,7 +10899,7 @@ function FunnelChart({
|
|
|
10531
10899
|
},
|
|
10532
10900
|
[steps.length, vbox_h]
|
|
10533
10901
|
);
|
|
10534
|
-
const handle_mouse_leave =
|
|
10902
|
+
const handle_mouse_leave = React27.useCallback(() => set_hover_idx(null), []);
|
|
10535
10903
|
return /* @__PURE__ */ jsxs(
|
|
10536
10904
|
"svg",
|
|
10537
10905
|
{
|
|
@@ -10719,21 +11087,21 @@ function celebrate(payload) {
|
|
|
10719
11087
|
_enqueue(payload);
|
|
10720
11088
|
}
|
|
10721
11089
|
function CelebrationProvider({ children }) {
|
|
10722
|
-
const [queue, set_queue] =
|
|
10723
|
-
const enqueue =
|
|
11090
|
+
const [queue, set_queue] = React27.useState([]);
|
|
11091
|
+
const enqueue = React27.useCallback((payload) => {
|
|
10724
11092
|
const storage_key = `hazo_ui_celebration_${payload.id}`;
|
|
10725
11093
|
if (typeof window !== "undefined" && sessionStorage.getItem(storage_key)) {
|
|
10726
11094
|
return;
|
|
10727
11095
|
}
|
|
10728
11096
|
set_queue((q) => [...q, payload]);
|
|
10729
11097
|
}, []);
|
|
10730
|
-
|
|
11098
|
+
React27.useEffect(() => {
|
|
10731
11099
|
_enqueue = enqueue;
|
|
10732
11100
|
return () => {
|
|
10733
11101
|
_enqueue = null;
|
|
10734
11102
|
};
|
|
10735
11103
|
}, [enqueue]);
|
|
10736
|
-
const handle_close =
|
|
11104
|
+
const handle_close = React27.useCallback(() => {
|
|
10737
11105
|
set_queue((q) => q.slice(1));
|
|
10738
11106
|
}, []);
|
|
10739
11107
|
const current = queue[0] ?? null;
|
|
@@ -10762,14 +11130,14 @@ function CelebrationModalInner({
|
|
|
10762
11130
|
autoDismissDelay = 8e3,
|
|
10763
11131
|
audioChime = false
|
|
10764
11132
|
} = payload;
|
|
10765
|
-
const [visible, set_visible] =
|
|
10766
|
-
const [is_downloading, set_is_downloading] =
|
|
10767
|
-
const canvas_ref =
|
|
10768
|
-
const card_ref =
|
|
10769
|
-
|
|
11133
|
+
const [visible, set_visible] = React27.useState(true);
|
|
11134
|
+
const [is_downloading, set_is_downloading] = React27.useState(false);
|
|
11135
|
+
const canvas_ref = React27.useRef(null);
|
|
11136
|
+
const card_ref = React27.useRef(null);
|
|
11137
|
+
React27.useEffect(() => {
|
|
10770
11138
|
sessionStorage.setItem(`hazo_ui_celebration_${id}`, "1");
|
|
10771
11139
|
}, [id]);
|
|
10772
|
-
|
|
11140
|
+
React27.useEffect(() => {
|
|
10773
11141
|
if (!canvas_ref.current) return;
|
|
10774
11142
|
let confetti_instance = null;
|
|
10775
11143
|
import('canvas-confetti').then(({ default: confetti }) => {
|
|
@@ -10786,18 +11154,18 @@ function CelebrationModalInner({
|
|
|
10786
11154
|
confetti_instance?.reset();
|
|
10787
11155
|
};
|
|
10788
11156
|
}, []);
|
|
10789
|
-
|
|
11157
|
+
React27.useEffect(() => {
|
|
10790
11158
|
if (!audioChime) return;
|
|
10791
11159
|
const audio = new Audio(celebration_chime_default);
|
|
10792
11160
|
audio.play().catch(() => {
|
|
10793
11161
|
});
|
|
10794
11162
|
}, [audioChime]);
|
|
10795
|
-
|
|
11163
|
+
React27.useEffect(() => {
|
|
10796
11164
|
if (!autoDismiss) return;
|
|
10797
11165
|
const timer = window.setTimeout(close_modal, autoDismissDelay);
|
|
10798
11166
|
return () => window.clearTimeout(timer);
|
|
10799
11167
|
}, [autoDismiss, autoDismissDelay]);
|
|
10800
|
-
|
|
11168
|
+
React27.useEffect(() => {
|
|
10801
11169
|
const on_key = (e) => {
|
|
10802
11170
|
if (e.key === "Escape") close_modal();
|
|
10803
11171
|
};
|
|
@@ -11046,8 +11414,8 @@ function useEtaProgress(opts) {
|
|
|
11046
11414
|
loadDurations,
|
|
11047
11415
|
appendDuration
|
|
11048
11416
|
} = opts;
|
|
11049
|
-
const [value, setValue] =
|
|
11050
|
-
const stateRef =
|
|
11417
|
+
const [value, setValue] = React27.useState(0);
|
|
11418
|
+
const stateRef = React27.useRef({
|
|
11051
11419
|
started: false,
|
|
11052
11420
|
finished: false,
|
|
11053
11421
|
startTime: 0,
|
|
@@ -11057,14 +11425,14 @@ function useEtaProgress(opts) {
|
|
|
11057
11425
|
eta: 0,
|
|
11058
11426
|
rafId: 0
|
|
11059
11427
|
});
|
|
11060
|
-
const stop =
|
|
11428
|
+
const stop = React27.useCallback(() => {
|
|
11061
11429
|
if (stateRef.current.rafId) {
|
|
11062
11430
|
cancelAnimationFrame(stateRef.current.rafId);
|
|
11063
11431
|
stateRef.current.rafId = 0;
|
|
11064
11432
|
}
|
|
11065
11433
|
}, []);
|
|
11066
|
-
|
|
11067
|
-
const tick =
|
|
11434
|
+
React27.useEffect(() => stop, [stop]);
|
|
11435
|
+
const tick = React27.useCallback(() => {
|
|
11068
11436
|
const s = stateRef.current;
|
|
11069
11437
|
if (s.finished || !s.started) return;
|
|
11070
11438
|
const elapsed = Date.now() - s.startTime;
|
|
@@ -11073,7 +11441,7 @@ function useEtaProgress(opts) {
|
|
|
11073
11441
|
setValue(Math.max(timeValue, unitValue));
|
|
11074
11442
|
s.rafId = requestAnimationFrame(tick);
|
|
11075
11443
|
}, [unitCount]);
|
|
11076
|
-
const start =
|
|
11444
|
+
const start = React27.useCallback(() => {
|
|
11077
11445
|
const s = stateRef.current;
|
|
11078
11446
|
if (s.started) return;
|
|
11079
11447
|
const window2 = loadDurations();
|
|
@@ -11087,13 +11455,13 @@ function useEtaProgress(opts) {
|
|
|
11087
11455
|
stop();
|
|
11088
11456
|
s.rafId = requestAnimationFrame(tick);
|
|
11089
11457
|
}, [loadDurations, unitCount, concurrency, fallbackUnitMs, stop, tick]);
|
|
11090
|
-
const unitDone =
|
|
11458
|
+
const unitDone = React27.useCallback(() => {
|
|
11091
11459
|
const s = stateRef.current;
|
|
11092
11460
|
if (!s.started || s.finished) return;
|
|
11093
11461
|
s.unitsDone = Math.min(s.unitsDone + 1, unitCount);
|
|
11094
11462
|
s.unitTimestamps.push(Date.now());
|
|
11095
11463
|
}, [unitCount]);
|
|
11096
|
-
const finish =
|
|
11464
|
+
const finish = React27.useCallback(() => {
|
|
11097
11465
|
const s = stateRef.current;
|
|
11098
11466
|
if (s.finished) return;
|
|
11099
11467
|
s.finished = true;
|
|
@@ -11127,8 +11495,8 @@ function HazoUiEtaProgress({
|
|
|
11127
11495
|
...endpoint ? { endpoint } : {}
|
|
11128
11496
|
});
|
|
11129
11497
|
const durationWindow = Array.isArray(stored) ? stored : [];
|
|
11130
|
-
const loadDurations =
|
|
11131
|
-
const appendDuration =
|
|
11498
|
+
const loadDurations = React27.useCallback(() => durationWindow, [durationWindow]);
|
|
11499
|
+
const appendDuration = React27.useCallback(
|
|
11132
11500
|
(ms) => {
|
|
11133
11501
|
append(ms, windowSize);
|
|
11134
11502
|
},
|
|
@@ -11141,7 +11509,7 @@ function HazoUiEtaProgress({
|
|
|
11141
11509
|
loadDurations,
|
|
11142
11510
|
appendDuration
|
|
11143
11511
|
});
|
|
11144
|
-
|
|
11512
|
+
React27.useEffect(() => {
|
|
11145
11513
|
if (handleRef) {
|
|
11146
11514
|
handleRef.current = handle;
|
|
11147
11515
|
}
|
|
@@ -11183,8 +11551,8 @@ function HazoUiMemoryDropdown({
|
|
|
11183
11551
|
fallback: []
|
|
11184
11552
|
});
|
|
11185
11553
|
const storedEntries = Array.isArray(stored) ? stored : [];
|
|
11186
|
-
const [query, setQuery] =
|
|
11187
|
-
|
|
11554
|
+
const [query, setQuery] = React27.useState("");
|
|
11555
|
+
React27.useEffect(() => {
|
|
11188
11556
|
if (!add_entry) return;
|
|
11189
11557
|
const updated = upsertEntry(storedEntries, add_entry);
|
|
11190
11558
|
setValue(updated);
|
|
@@ -11263,8 +11631,8 @@ function HazoUiMemoryDropdown({
|
|
|
11263
11631
|
);
|
|
11264
11632
|
}
|
|
11265
11633
|
function EntryRow({ entry, on_select, onDelete }) {
|
|
11266
|
-
const [deleteHovered, setDeleteHovered] =
|
|
11267
|
-
const [rowHovered, setRowHovered] =
|
|
11634
|
+
const [deleteHovered, setDeleteHovered] = React27.useState(false);
|
|
11635
|
+
const [rowHovered, setRowHovered] = React27.useState(false);
|
|
11268
11636
|
return /* @__PURE__ */ jsxs(
|
|
11269
11637
|
"div",
|
|
11270
11638
|
{
|
|
@@ -11321,68 +11689,174 @@ function EntryRow({ entry, on_select, onDelete }) {
|
|
|
11321
11689
|
}
|
|
11322
11690
|
);
|
|
11323
11691
|
}
|
|
11324
|
-
|
|
11325
|
-
|
|
11326
|
-
|
|
11327
|
-
|
|
11328
|
-
|
|
11692
|
+
function Logo({
|
|
11693
|
+
logoUrl,
|
|
11694
|
+
logoUrlDark,
|
|
11695
|
+
appTitle,
|
|
11696
|
+
href,
|
|
11697
|
+
height = 28,
|
|
11698
|
+
className,
|
|
11699
|
+
imgClassName
|
|
11329
11700
|
}) {
|
|
11330
|
-
const
|
|
11331
|
-
|
|
11332
|
-
|
|
11333
|
-
|
|
11334
|
-
|
|
11335
|
-
|
|
11336
|
-
|
|
11337
|
-
|
|
11338
|
-
|
|
11339
|
-
|
|
11340
|
-
|
|
11341
|
-
|
|
11342
|
-
|
|
11343
|
-
|
|
11344
|
-
|
|
11345
|
-
|
|
11346
|
-
|
|
11347
|
-
|
|
11348
|
-
|
|
11701
|
+
const alt = appTitle ?? "Logo";
|
|
11702
|
+
let content = null;
|
|
11703
|
+
if (logoUrl) {
|
|
11704
|
+
content = /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
11705
|
+
/* @__PURE__ */ jsx(
|
|
11706
|
+
"img",
|
|
11707
|
+
{
|
|
11708
|
+
src: logoUrl,
|
|
11709
|
+
alt,
|
|
11710
|
+
height,
|
|
11711
|
+
style: { height },
|
|
11712
|
+
className: cn("object-contain", logoUrlDark && "dark:hidden", imgClassName)
|
|
11713
|
+
}
|
|
11714
|
+
),
|
|
11715
|
+
logoUrlDark ? /* @__PURE__ */ jsx(
|
|
11716
|
+
"img",
|
|
11717
|
+
{
|
|
11718
|
+
src: logoUrlDark,
|
|
11719
|
+
alt,
|
|
11720
|
+
height,
|
|
11721
|
+
style: { height },
|
|
11722
|
+
className: cn("hidden object-contain dark:block", imgClassName)
|
|
11723
|
+
}
|
|
11724
|
+
) : null
|
|
11725
|
+
] });
|
|
11726
|
+
} else if (appTitle) {
|
|
11727
|
+
content = /* @__PURE__ */ jsx("span", { className: "font-semibold text-navbar-fg", children: appTitle });
|
|
11728
|
+
}
|
|
11729
|
+
if (content === null) return /* @__PURE__ */ jsx(Fragment$1, {});
|
|
11730
|
+
const resolvedHref = safeHref(href);
|
|
11731
|
+
if (resolvedHref) {
|
|
11732
|
+
return /* @__PURE__ */ jsx("a", { href: resolvedHref, className: cn("inline-flex items-center gap-2", className), children: content });
|
|
11349
11733
|
}
|
|
11350
|
-
return
|
|
11734
|
+
return /* @__PURE__ */ jsx("div", { className: cn("inline-flex items-center gap-2", className), children: content });
|
|
11351
11735
|
}
|
|
11352
|
-
function
|
|
11353
|
-
|
|
11354
|
-
|
|
11355
|
-
|
|
11356
|
-
|
|
11736
|
+
function AppHeader({ identity, homeHref, navItems, actions, className }) {
|
|
11737
|
+
return /* @__PURE__ */ jsxs(
|
|
11738
|
+
"header",
|
|
11739
|
+
{
|
|
11740
|
+
"aria-label": "Application header",
|
|
11741
|
+
className: cn(
|
|
11742
|
+
"flex w-full items-center justify-between gap-4 border-b bg-navbar text-navbar-fg border-navbar-border px-4 py-2.5",
|
|
11743
|
+
className
|
|
11744
|
+
),
|
|
11745
|
+
children: [
|
|
11746
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
|
|
11747
|
+
/* @__PURE__ */ jsx(
|
|
11748
|
+
Logo,
|
|
11749
|
+
{
|
|
11750
|
+
logoUrl: identity?.logoUrl,
|
|
11751
|
+
logoUrlDark: identity?.logoUrlDark,
|
|
11752
|
+
appTitle: identity?.appTitle,
|
|
11753
|
+
href: homeHref
|
|
11754
|
+
}
|
|
11755
|
+
),
|
|
11756
|
+
navItems
|
|
11757
|
+
] }),
|
|
11758
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-4", children: actions })
|
|
11759
|
+
]
|
|
11760
|
+
}
|
|
11761
|
+
);
|
|
11357
11762
|
}
|
|
11358
|
-
|
|
11359
|
-
|
|
11360
|
-
|
|
11361
|
-
const
|
|
11362
|
-
|
|
11363
|
-
|
|
11364
|
-
}, []);
|
|
11365
|
-
const isDark = mounted && resolvedTheme === "dark";
|
|
11366
|
-
const label = isDark ? "Switch to light theme" : "Switch to dark theme";
|
|
11367
|
-
return /* @__PURE__ */ jsx(
|
|
11368
|
-
"button",
|
|
11763
|
+
function AppFooter({ variant, footer, identity, className }) {
|
|
11764
|
+
const cfg = footer ?? identity?.footer?.[variant];
|
|
11765
|
+
if (variant === "app") {
|
|
11766
|
+
const links = cfg?.columns?.[0]?.links;
|
|
11767
|
+
return /* @__PURE__ */ jsxs(
|
|
11768
|
+
"footer",
|
|
11369
11769
|
{
|
|
11370
|
-
type: "button",
|
|
11371
|
-
ref,
|
|
11372
|
-
onClick: toggleTheme,
|
|
11373
|
-
"aria-label": label,
|
|
11374
11770
|
className: cn(
|
|
11375
|
-
"
|
|
11771
|
+
"flex w-full items-center justify-between gap-4 border-t bg-footer-app text-footer-app-fg border-footer-app-border px-4 py-2 text-sm",
|
|
11376
11772
|
className
|
|
11377
11773
|
),
|
|
11378
|
-
|
|
11379
|
-
|
|
11774
|
+
children: [
|
|
11775
|
+
/* @__PURE__ */ jsx("div", { className: "text-footer-app-fg-muted", children: cfg?.copyright }),
|
|
11776
|
+
links && links.length > 0 ? /* @__PURE__ */ jsx("div", { className: "flex items-center gap-4", children: links.map((link, i) => /* @__PURE__ */ jsx(
|
|
11777
|
+
"a",
|
|
11778
|
+
{
|
|
11779
|
+
href: safeHref(link.href),
|
|
11780
|
+
className: "text-footer-app-fg-muted hover:text-footer-app-fg",
|
|
11781
|
+
children: link.label
|
|
11782
|
+
},
|
|
11783
|
+
`${link.href}-${i}`
|
|
11784
|
+
)) }) : null
|
|
11785
|
+
]
|
|
11380
11786
|
}
|
|
11381
11787
|
);
|
|
11382
11788
|
}
|
|
11383
|
-
);
|
|
11384
|
-
|
|
11789
|
+
const showBrandRow = Boolean(identity?.logoUrl || identity?.appTitle);
|
|
11790
|
+
return /* @__PURE__ */ jsxs(
|
|
11791
|
+
"footer",
|
|
11792
|
+
{
|
|
11793
|
+
className: cn(
|
|
11794
|
+
"w-full border-t bg-footer-public text-footer-public-fg border-footer-public-border px-6 py-10",
|
|
11795
|
+
className
|
|
11796
|
+
),
|
|
11797
|
+
children: [
|
|
11798
|
+
showBrandRow ? /* @__PURE__ */ jsx("div", { className: "mb-8", children: /* @__PURE__ */ jsx(
|
|
11799
|
+
Logo,
|
|
11800
|
+
{
|
|
11801
|
+
logoUrl: identity?.logoUrl,
|
|
11802
|
+
logoUrlDark: identity?.logoUrlDark,
|
|
11803
|
+
appTitle: identity?.appTitle
|
|
11804
|
+
}
|
|
11805
|
+
) }) : null,
|
|
11806
|
+
cfg?.columns && cfg.columns.length > 0 ? /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-8 md:grid-cols-4", children: cfg.columns.map((column, idx) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
11807
|
+
column.heading ? /* @__PURE__ */ jsx("div", { className: "font-medium text-footer-public-fg", children: column.heading }) : null,
|
|
11808
|
+
column.links.map((link, i) => /* @__PURE__ */ jsx(
|
|
11809
|
+
"a",
|
|
11810
|
+
{
|
|
11811
|
+
href: safeHref(link.href),
|
|
11812
|
+
className: "text-footer-public-fg-muted hover:text-footer-public-fg",
|
|
11813
|
+
children: link.label
|
|
11814
|
+
},
|
|
11815
|
+
`${link.href}-${i}`
|
|
11816
|
+
))
|
|
11817
|
+
] }, column.heading ?? idx)) }) : null,
|
|
11818
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-8 flex flex-wrap items-center justify-between gap-4", children: [
|
|
11819
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm text-footer-public-fg-muted", children: cfg?.copyright }),
|
|
11820
|
+
cfg?.social ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
|
|
11821
|
+
cfg.social.github ? /* @__PURE__ */ jsx(
|
|
11822
|
+
"a",
|
|
11823
|
+
{
|
|
11824
|
+
href: safeHref(cfg.social.github),
|
|
11825
|
+
className: "text-footer-public-fg-muted hover:text-footer-public-fg",
|
|
11826
|
+
children: "GitHub"
|
|
11827
|
+
}
|
|
11828
|
+
) : null,
|
|
11829
|
+
cfg.social.twitter ? /* @__PURE__ */ jsx(
|
|
11830
|
+
"a",
|
|
11831
|
+
{
|
|
11832
|
+
href: safeHref(cfg.social.twitter),
|
|
11833
|
+
className: "text-footer-public-fg-muted hover:text-footer-public-fg",
|
|
11834
|
+
children: "Twitter"
|
|
11835
|
+
}
|
|
11836
|
+
) : null,
|
|
11837
|
+
cfg.social.linkedin ? /* @__PURE__ */ jsx(
|
|
11838
|
+
"a",
|
|
11839
|
+
{
|
|
11840
|
+
href: safeHref(cfg.social.linkedin),
|
|
11841
|
+
className: "text-footer-public-fg-muted hover:text-footer-public-fg",
|
|
11842
|
+
children: "LinkedIn"
|
|
11843
|
+
}
|
|
11844
|
+
) : null,
|
|
11845
|
+
cfg.social.website ? /* @__PURE__ */ jsx(
|
|
11846
|
+
"a",
|
|
11847
|
+
{
|
|
11848
|
+
href: safeHref(cfg.social.website),
|
|
11849
|
+
className: "text-footer-public-fg-muted hover:text-footer-public-fg",
|
|
11850
|
+
children: "Website"
|
|
11851
|
+
}
|
|
11852
|
+
) : null
|
|
11853
|
+
] }) : null
|
|
11854
|
+
] })
|
|
11855
|
+
]
|
|
11856
|
+
}
|
|
11857
|
+
);
|
|
11858
|
+
}
|
|
11385
11859
|
|
|
11386
|
-
export { ANIMATION_PRESETS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CELEBRATION_GRADIENT, Calendar, CanvasTextToolbar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CelebrationProvider, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, CommandNodeExtension, CommandPill, CommandPopover, DateRangeSelector, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, ErrorBanner, ErrorPage, FunnelChart, HazoContextProvider,
|
|
11860
|
+
export { ANIMATION_PRESETS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AppFooter, AppHeader, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CELEBRATION_GRADIENT, Calendar, CanvasTextToolbar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CelebrationProvider, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, CommandNodeExtension, CommandPill, CommandPopover, DateRangeSelector, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, ErrorBanner, ErrorPage, FunnelChart, HazoContextProvider, HazoUiConfirmDialog, HazoUiDialog, DialogClose as HazoUiDialogClose, DialogContent as HazoUiDialogContent, DialogDescription as HazoUiDialogDescription, DialogFooter as HazoUiDialogFooter, DialogHeader as HazoUiDialogHeader, DialogOverlay as HazoUiDialogOverlay, DialogPortal as HazoUiDialogPortal, Dialog as HazoUiDialogRoot, DialogTitle as HazoUiDialogTitle, DialogTrigger as HazoUiDialogTrigger, HazoUiEtaProgress, HazoUiFlexInput, HazoUiFlexRadio, HazoUiIcon, HazoUiIconPicker, HazoUiImageCropper, HazoUiImageCropperDialog, HazoUiKanban, HazoUiKanbanFilter, HazoUiMemoryDropdown, HazoUiMultiFilterDialog, HazoUiMultiSortDialog, HazoUiPillRadio, HazoUiProgressBar, HazoUiRte, HazoUiTable, HazoUiTextarea, HazoUiTextbox, HazoUiToaster, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputAffix, InverseSparkline, Label3 as Label, LoadingTimeout, Logo, MarkdownEditor, NotificationCountBadge, NotificationItem, NotificationPanel, Popover, PopoverContent, PopoverTrigger, ProgressiveImage, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator3 as Separator, Command as ShadcnCommand, CommandEmpty as ShadcnCommandEmpty, CommandGroup as ShadcnCommandGroup, CommandInput as ShadcnCommandInput, CommandItem as ShadcnCommandItem, CommandList as ShadcnCommandList, Skeleton, SkeletonBar, SkeletonCircle, SkeletonGroup, SkeletonRect, Slider, Sparkline, Spinner, StackedBars, Switch, Table2 as Table, TableBody, TableCaption, TableCell2 as TableCell, TableFooter, TableHead, TableHeader2 as TableHeader, TableRow2 as TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, applyKanbanFilter, buttonGroupVariants, celebrate, cn, computeEta, create_command_suggestion_extension, easeToward, errorToast, format_num, generateUUID, get_hazo_ui_config, get_logger, isLucideValue, median, parse_commands_from_text, pick_x_label_indices, reset_hazo_ui_config, resolve_animation_classes, safeHref, set_hazo_ui_config, set_logger, successToast, text_to_tiptap_content, toggleVariants, upsertEntry as upsertMemoryEntry, useClickOutside, useCopyToClipboard, useDebounce, useErrorDisplay, useEtaProgress, useFullscreen, useIsMobile, useLoadingState, useLocalStorage, useMediaQuery, useSessionStorage, useViewport, useWakeLock, use_fullscreen, use_wake_lock };
|
|
11387
11861
|
//# sourceMappingURL=index.js.map
|
|
11388
11862
|
//# sourceMappingURL=index.js.map
|