@mieweb/ui 0.6.1-dev.132 → 0.6.1-dev.133
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/README.md +46 -10
- package/dist/{chunk-IBZXDX4L.cjs → chunk-3CFB4TVQ.cjs} +33 -3
- package/dist/chunk-3CFB4TVQ.cjs.map +1 -0
- package/dist/{chunk-2DS3RJ2D.js → chunk-Q577IUE5.js} +33 -3
- package/dist/chunk-Q577IUE5.js.map +1 -0
- package/dist/index.cjs +1161 -529
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +136 -1
- package/dist/index.d.ts +136 -1
- package/dist/index.js +1078 -449
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-2DS3RJ2D.js.map +0 -1
- package/dist/chunk-IBZXDX4L.cjs.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -64,10 +64,10 @@ var chunkC7RVKV25_cjs = require('./chunk-C7RVKV25.cjs');
|
|
|
64
64
|
var chunkL7YQBSEL_cjs = require('./chunk-L7YQBSEL.cjs');
|
|
65
65
|
var chunkCW75IKA6_cjs = require('./chunk-CW75IKA6.cjs');
|
|
66
66
|
var chunkSCV7C55E_cjs = require('./chunk-SCV7C55E.cjs');
|
|
67
|
-
var
|
|
67
|
+
var chunk3CFB4TVQ_cjs = require('./chunk-3CFB4TVQ.cjs');
|
|
68
68
|
var chunkWGPMTW36_cjs = require('./chunk-WGPMTW36.cjs');
|
|
69
69
|
var chunkOR5DRJCW_cjs = require('./chunk-OR5DRJCW.cjs');
|
|
70
|
-
var
|
|
70
|
+
var React49 = require('react');
|
|
71
71
|
var jsxRuntime = require('react/jsx-runtime');
|
|
72
72
|
var classVarianceAuthority = require('class-variance-authority');
|
|
73
73
|
var ReactDOM = require('react-dom');
|
|
@@ -91,7 +91,7 @@ function _interopNamespace(e) {
|
|
|
91
91
|
return Object.freeze(n);
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
var
|
|
94
|
+
var React49__namespace = /*#__PURE__*/_interopNamespace(React49);
|
|
95
95
|
var ReactDOM__namespace = /*#__PURE__*/_interopNamespace(ReactDOM);
|
|
96
96
|
|
|
97
97
|
var SEX_OPTIONS = [
|
|
@@ -129,9 +129,9 @@ function AddContactModal({
|
|
|
129
129
|
showCustomFields = true,
|
|
130
130
|
showPhone = true
|
|
131
131
|
}) {
|
|
132
|
-
const [formData, setFormData] =
|
|
133
|
-
const [errors, setErrors] =
|
|
134
|
-
|
|
132
|
+
const [formData, setFormData] = React49.useState(defaultContact);
|
|
133
|
+
const [errors, setErrors] = React49.useState({});
|
|
134
|
+
React49.useEffect(() => {
|
|
135
135
|
if (open) {
|
|
136
136
|
setFormData(contact ? { ...defaultContact, ...contact } : defaultContact);
|
|
137
137
|
setErrors({});
|
|
@@ -561,8 +561,8 @@ function AdditionalFields({
|
|
|
561
561
|
className,
|
|
562
562
|
collapsible = true
|
|
563
563
|
}) {
|
|
564
|
-
const [isExpanded, setIsExpanded] =
|
|
565
|
-
const contentId =
|
|
564
|
+
const [isExpanded, setIsExpanded] = React49__namespace.useState(defaultExpanded);
|
|
565
|
+
const contentId = React49__namespace.useId();
|
|
566
566
|
const handleNameChange = (id, name) => {
|
|
567
567
|
const updated = value.map(
|
|
568
568
|
(entry) => entry.id === id ? { ...entry, name } : entry
|
|
@@ -1000,10 +1000,10 @@ function AddressForm({
|
|
|
1000
1000
|
className,
|
|
1001
1001
|
googlePlaces
|
|
1002
1002
|
}) {
|
|
1003
|
-
const generatedId =
|
|
1003
|
+
const generatedId = React49__namespace.useId();
|
|
1004
1004
|
const idPrefix = id || generatedId;
|
|
1005
|
-
const autocompleteRef =
|
|
1006
|
-
const inputRef =
|
|
1005
|
+
const autocompleteRef = React49__namespace.useRef(null);
|
|
1006
|
+
const inputRef = React49__namespace.useRef(null);
|
|
1007
1007
|
const mergedLabels = { ...DEFAULT_LABELS, ...labels };
|
|
1008
1008
|
const mergedPlaceholders = { ...DEFAULT_PLACEHOLDERS, ...placeholders };
|
|
1009
1009
|
const handleChange = (field, fieldValue) => {
|
|
@@ -1012,7 +1012,7 @@ function AddressForm({
|
|
|
1012
1012
|
[field]: fieldValue
|
|
1013
1013
|
});
|
|
1014
1014
|
};
|
|
1015
|
-
|
|
1015
|
+
React49__namespace.useEffect(() => {
|
|
1016
1016
|
if (!googlePlaces?.enabled || !inputRef.current) return;
|
|
1017
1017
|
const googleMaps = globalThis.window?.google;
|
|
1018
1018
|
if (!googleMaps?.maps?.places?.Autocomplete) {
|
|
@@ -1873,7 +1873,7 @@ function ToolResultDisplay({
|
|
|
1873
1873
|
showRawData = false,
|
|
1874
1874
|
className
|
|
1875
1875
|
}) {
|
|
1876
|
-
const [showJson, setShowJson] =
|
|
1876
|
+
const [showJson, setShowJson] = React49__namespace.useState(false);
|
|
1877
1877
|
if (result.type === "error") {
|
|
1878
1878
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1879
1879
|
"div",
|
|
@@ -2035,7 +2035,7 @@ function MCPToolCallDisplay({
|
|
|
2035
2035
|
onLinkClick,
|
|
2036
2036
|
className
|
|
2037
2037
|
}) {
|
|
2038
|
-
const [showDetails, setShowDetails] =
|
|
2038
|
+
const [showDetails, setShowDetails] = React49__namespace.useState(!defaultCollapsed);
|
|
2039
2039
|
const formatDuration2 = (ms) => {
|
|
2040
2040
|
if (!ms) return null;
|
|
2041
2041
|
if (ms < 1e3) return `${ms}ms`;
|
|
@@ -2282,7 +2282,7 @@ function ContentBlock({
|
|
|
2282
2282
|
role,
|
|
2283
2283
|
renderTextContent
|
|
2284
2284
|
}) {
|
|
2285
|
-
const [isCollapsed, setIsCollapsed] =
|
|
2285
|
+
const [isCollapsed, setIsCollapsed] = React49__namespace.useState(
|
|
2286
2286
|
content.collapsed ?? false
|
|
2287
2287
|
);
|
|
2288
2288
|
if (content.type === "text" && content.text) {
|
|
@@ -2717,7 +2717,7 @@ function AttachmentPreviewItem({
|
|
|
2717
2717
|
);
|
|
2718
2718
|
}
|
|
2719
2719
|
AttachmentPreviewItem.displayName = "AttachmentPreviewItem";
|
|
2720
|
-
var AttachmentPicker =
|
|
2720
|
+
var AttachmentPicker = React49__namespace.forwardRef(
|
|
2721
2721
|
({
|
|
2722
2722
|
onFilesSelected,
|
|
2723
2723
|
acceptedTypes = ["image/*", "video/*", ".pdf", ".doc", ".docx"],
|
|
@@ -2730,8 +2730,8 @@ var AttachmentPicker = React48__namespace.forwardRef(
|
|
|
2730
2730
|
className,
|
|
2731
2731
|
children
|
|
2732
2732
|
}, ref) => {
|
|
2733
|
-
const inputRef =
|
|
2734
|
-
|
|
2733
|
+
const inputRef = React49__namespace.useRef(null);
|
|
2734
|
+
React49__namespace.useImperativeHandle(ref, () => inputRef.current);
|
|
2735
2735
|
const handleClick = () => {
|
|
2736
2736
|
inputRef.current?.click();
|
|
2737
2737
|
};
|
|
@@ -2823,8 +2823,8 @@ function DragDropZone({
|
|
|
2823
2823
|
children,
|
|
2824
2824
|
className
|
|
2825
2825
|
}) {
|
|
2826
|
-
const [isDragging, setIsDragging] =
|
|
2827
|
-
const dragCounterRef =
|
|
2826
|
+
const [isDragging, setIsDragging] = React49__namespace.useState(false);
|
|
2827
|
+
const dragCounterRef = React49__namespace.useRef(0);
|
|
2828
2828
|
const handleDragEnter = (event) => {
|
|
2829
2829
|
event.preventDefault();
|
|
2830
2830
|
event.stopPropagation();
|
|
@@ -2926,7 +2926,7 @@ function CameraButton({
|
|
|
2926
2926
|
disabled = false,
|
|
2927
2927
|
className
|
|
2928
2928
|
}) {
|
|
2929
|
-
const inputRef =
|
|
2929
|
+
const inputRef = React49__namespace.useRef(null);
|
|
2930
2930
|
const handleClick = () => {
|
|
2931
2931
|
inputRef.current?.click();
|
|
2932
2932
|
};
|
|
@@ -3064,7 +3064,7 @@ var sendButtonVariants = classVarianceAuthority.cva(
|
|
|
3064
3064
|
}
|
|
3065
3065
|
}
|
|
3066
3066
|
);
|
|
3067
|
-
var SendButton =
|
|
3067
|
+
var SendButton = React49__namespace.forwardRef(
|
|
3068
3068
|
({ className, variant, canSend, isLoading, disabled, ...props }, ref) => {
|
|
3069
3069
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3070
3070
|
"button",
|
|
@@ -3129,7 +3129,7 @@ var SendButton = React48__namespace.forwardRef(
|
|
|
3129
3129
|
}
|
|
3130
3130
|
);
|
|
3131
3131
|
SendButton.displayName = "SendButton";
|
|
3132
|
-
var MessageComposer =
|
|
3132
|
+
var MessageComposer = React49__namespace.forwardRef(
|
|
3133
3133
|
({
|
|
3134
3134
|
onSend,
|
|
3135
3135
|
onTypingStart,
|
|
@@ -3154,11 +3154,11 @@ var MessageComposer = React48__namespace.forwardRef(
|
|
|
3154
3154
|
inputTrailing,
|
|
3155
3155
|
className
|
|
3156
3156
|
}, ref) => {
|
|
3157
|
-
const textareaRef =
|
|
3158
|
-
const [internalContent, setInternalContent] =
|
|
3157
|
+
const textareaRef = React49__namespace.useRef(null);
|
|
3158
|
+
const [internalContent, setInternalContent] = React49__namespace.useState("");
|
|
3159
3159
|
const isControlled = controlledValue !== void 0;
|
|
3160
3160
|
const content = isControlled ? controlledValue : internalContent;
|
|
3161
|
-
const setContent =
|
|
3161
|
+
const setContent = React49__namespace.useCallback(
|
|
3162
3162
|
(val) => {
|
|
3163
3163
|
if (isControlled) {
|
|
3164
3164
|
const newVal = typeof val === "function" ? val(controlledValue) : val;
|
|
@@ -3169,20 +3169,20 @@ var MessageComposer = React48__namespace.forwardRef(
|
|
|
3169
3169
|
},
|
|
3170
3170
|
[isControlled, controlledValue, onValueChange]
|
|
3171
3171
|
);
|
|
3172
|
-
const [attachments, setAttachments] =
|
|
3172
|
+
const [attachments, setAttachments] = React49__namespace.useState(
|
|
3173
3173
|
[]
|
|
3174
3174
|
);
|
|
3175
|
-
const [isTyping, setIsTyping] =
|
|
3176
|
-
const typingTimeoutRef =
|
|
3177
|
-
|
|
3178
|
-
|
|
3175
|
+
const [isTyping, setIsTyping] = React49__namespace.useState(false);
|
|
3176
|
+
const typingTimeoutRef = React49__namespace.useRef(null);
|
|
3177
|
+
React49__namespace.useImperativeHandle(ref, () => textareaRef.current);
|
|
3178
|
+
React49__namespace.useEffect(() => {
|
|
3179
3179
|
const textarea = textareaRef.current;
|
|
3180
3180
|
if (textarea) {
|
|
3181
3181
|
textarea.style.height = "auto";
|
|
3182
3182
|
textarea.style.height = `${Math.min(textarea.scrollHeight, 150)}px`;
|
|
3183
3183
|
}
|
|
3184
3184
|
}, [content]);
|
|
3185
|
-
|
|
3185
|
+
React49__namespace.useEffect(() => {
|
|
3186
3186
|
if (content.length > 0 && !isTyping) {
|
|
3187
3187
|
setIsTyping(true);
|
|
3188
3188
|
onTypingStart?.();
|
|
@@ -3202,12 +3202,12 @@ var MessageComposer = React48__namespace.forwardRef(
|
|
|
3202
3202
|
}
|
|
3203
3203
|
};
|
|
3204
3204
|
}, [content, isTyping, onTypingStart, onTypingStop]);
|
|
3205
|
-
|
|
3205
|
+
React49__namespace.useEffect(() => {
|
|
3206
3206
|
if (autoFocus) {
|
|
3207
3207
|
textareaRef.current?.focus();
|
|
3208
3208
|
}
|
|
3209
3209
|
}, [autoFocus]);
|
|
3210
|
-
|
|
3210
|
+
React49__namespace.useEffect(() => {
|
|
3211
3211
|
if (replyTo) {
|
|
3212
3212
|
textareaRef.current?.focus();
|
|
3213
3213
|
}
|
|
@@ -3271,7 +3271,7 @@ var MessageComposer = React48__namespace.forwardRef(
|
|
|
3271
3271
|
return prev.filter((a) => a.id !== attachmentId);
|
|
3272
3272
|
});
|
|
3273
3273
|
};
|
|
3274
|
-
|
|
3274
|
+
React49__namespace.useEffect(() => {
|
|
3275
3275
|
const currentAttachments = attachments;
|
|
3276
3276
|
return () => {
|
|
3277
3277
|
currentAttachments.forEach((a) => {
|
|
@@ -3838,7 +3838,7 @@ function defaultFormatTimestamp(timestamp) {
|
|
|
3838
3838
|
minute: "2-digit"
|
|
3839
3839
|
});
|
|
3840
3840
|
}
|
|
3841
|
-
var MessageBubble =
|
|
3841
|
+
var MessageBubble = React49__namespace.forwardRef(
|
|
3842
3842
|
({
|
|
3843
3843
|
className,
|
|
3844
3844
|
message,
|
|
@@ -4313,7 +4313,7 @@ function LoadMoreButton({
|
|
|
4313
4313
|
);
|
|
4314
4314
|
}
|
|
4315
4315
|
LoadMoreButton.displayName = "LoadMoreButton";
|
|
4316
|
-
var MessageList =
|
|
4316
|
+
var MessageList = React49__namespace.forwardRef(
|
|
4317
4317
|
({
|
|
4318
4318
|
messages,
|
|
4319
4319
|
currentUser,
|
|
@@ -4332,19 +4332,19 @@ var MessageList = React48__namespace.forwardRef(
|
|
|
4332
4332
|
className,
|
|
4333
4333
|
autoScroll = "onNewMessage"
|
|
4334
4334
|
}, ref) => {
|
|
4335
|
-
const scrollContainerRef =
|
|
4336
|
-
const bottomRef =
|
|
4337
|
-
const [isUserScrolled, setIsUserScrolled] =
|
|
4338
|
-
const prevMessageCountRef =
|
|
4339
|
-
|
|
4340
|
-
const handleScroll =
|
|
4335
|
+
const scrollContainerRef = React49__namespace.useRef(null);
|
|
4336
|
+
const bottomRef = React49__namespace.useRef(null);
|
|
4337
|
+
const [isUserScrolled, setIsUserScrolled] = React49__namespace.useState(false);
|
|
4338
|
+
const prevMessageCountRef = React49__namespace.useRef(messages.length);
|
|
4339
|
+
React49__namespace.useImperativeHandle(ref, () => scrollContainerRef.current);
|
|
4340
|
+
const handleScroll = React49__namespace.useCallback(() => {
|
|
4341
4341
|
const container = scrollContainerRef.current;
|
|
4342
4342
|
if (!container) return;
|
|
4343
4343
|
const { scrollTop, scrollHeight, clientHeight } = container;
|
|
4344
4344
|
const isAtBottom = scrollHeight - scrollTop - clientHeight < 100;
|
|
4345
4345
|
setIsUserScrolled(!isAtBottom);
|
|
4346
4346
|
}, []);
|
|
4347
|
-
|
|
4347
|
+
React49__namespace.useEffect(() => {
|
|
4348
4348
|
const container = scrollContainerRef.current;
|
|
4349
4349
|
const bottom = bottomRef.current;
|
|
4350
4350
|
if (!container || !bottom) return;
|
|
@@ -4360,7 +4360,7 @@ var MessageList = React48__namespace.forwardRef(
|
|
|
4360
4360
|
}
|
|
4361
4361
|
}
|
|
4362
4362
|
}, [messages, currentUser.id, autoScroll, isUserScrolled]);
|
|
4363
|
-
|
|
4363
|
+
React49__namespace.useEffect(() => {
|
|
4364
4364
|
const bottom = bottomRef.current;
|
|
4365
4365
|
if (bottom && !isLoading) {
|
|
4366
4366
|
bottom.scrollIntoView();
|
|
@@ -4413,7 +4413,7 @@ var MessageList = React48__namespace.forwardRef(
|
|
|
4413
4413
|
{
|
|
4414
4414
|
"data-slot": "message-list-content",
|
|
4415
4415
|
className: "flex flex-col gap-1 p-4",
|
|
4416
|
-
children: messageGroups.map((group) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4416
|
+
children: messageGroups.map((group) => /* @__PURE__ */ jsxRuntime.jsxs(React49__namespace.Fragment, { children: [
|
|
4417
4417
|
groupByDate && group.label && /* @__PURE__ */ jsxRuntime.jsx(DateSeparator, { label: group.label }),
|
|
4418
4418
|
group.messages.map((message, index) => {
|
|
4419
4419
|
const prevMessage = group.messages[index - 1];
|
|
@@ -4720,13 +4720,13 @@ function AIChat({
|
|
|
4720
4720
|
onClose,
|
|
4721
4721
|
renderTextContent
|
|
4722
4722
|
}) {
|
|
4723
|
-
const messagesEndRef =
|
|
4724
|
-
const messages =
|
|
4723
|
+
const messagesEndRef = React49__namespace.useRef(null);
|
|
4724
|
+
const messages = React49__namespace.useMemo(
|
|
4725
4725
|
() => session?.messages || messagesProp || [],
|
|
4726
4726
|
[session?.messages, messagesProp]
|
|
4727
4727
|
);
|
|
4728
4728
|
const isGenerating = session?.isGenerating || isGeneratingProp || false;
|
|
4729
|
-
|
|
4729
|
+
React49__namespace.useEffect(() => {
|
|
4730
4730
|
messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
4731
4731
|
}, [messages]);
|
|
4732
4732
|
const handleSend = async (message) => {
|
|
@@ -5006,7 +5006,7 @@ function FloatingAIChat({
|
|
|
5006
5006
|
pulse = false,
|
|
5007
5007
|
...chatProps
|
|
5008
5008
|
}) {
|
|
5009
|
-
const [internalOpen, setInternalOpen] =
|
|
5009
|
+
const [internalOpen, setInternalOpen] = React49__namespace.useState(defaultOpen);
|
|
5010
5010
|
const isControlled = controlledOpen !== void 0;
|
|
5011
5011
|
const isOpen = isControlled ? controlledOpen : internalOpen;
|
|
5012
5012
|
const handleOpenChange = (open) => {
|
|
@@ -5036,6 +5036,635 @@ function FloatingAIChat({
|
|
|
5036
5036
|
)
|
|
5037
5037
|
] });
|
|
5038
5038
|
}
|
|
5039
|
+
function normalizeString(value) {
|
|
5040
|
+
return value.trim().replace(/\s+/g, " ").toLowerCase();
|
|
5041
|
+
}
|
|
5042
|
+
function stableStringify(value, seen = /* @__PURE__ */ new WeakSet()) {
|
|
5043
|
+
if (value === null || typeof value !== "object") return JSON.stringify(value);
|
|
5044
|
+
if (seen.has(value)) return '"[Circular]"';
|
|
5045
|
+
seen.add(value);
|
|
5046
|
+
if (Array.isArray(value))
|
|
5047
|
+
return "[" + value.map((v) => stableStringify(v, seen)).join(",") + "]";
|
|
5048
|
+
const keys = Object.keys(value).sort();
|
|
5049
|
+
return "{" + keys.map(
|
|
5050
|
+
(k) => JSON.stringify(k) + ":" + stableStringify(value[k], seen)
|
|
5051
|
+
).join(",") + "}";
|
|
5052
|
+
}
|
|
5053
|
+
function safeStableStringify(value) {
|
|
5054
|
+
try {
|
|
5055
|
+
return stableStringify(value);
|
|
5056
|
+
} catch {
|
|
5057
|
+
return '"[Unserializable]"';
|
|
5058
|
+
}
|
|
5059
|
+
}
|
|
5060
|
+
function defaultReconciliationIsEqual(current, proposed) {
|
|
5061
|
+
const a = current ?? "";
|
|
5062
|
+
const b = proposed ?? "";
|
|
5063
|
+
if (a === b) return true;
|
|
5064
|
+
if (typeof a === "string" && typeof b === "string") {
|
|
5065
|
+
return normalizeString(a) === normalizeString(b);
|
|
5066
|
+
}
|
|
5067
|
+
if (a instanceof Date && b instanceof Date) {
|
|
5068
|
+
return a.getTime() === b.getTime();
|
|
5069
|
+
}
|
|
5070
|
+
if (typeof a === "object" && typeof b === "object" && a && b) {
|
|
5071
|
+
try {
|
|
5072
|
+
return stableStringify(a) === stableStringify(b);
|
|
5073
|
+
} catch {
|
|
5074
|
+
return false;
|
|
5075
|
+
}
|
|
5076
|
+
}
|
|
5077
|
+
return false;
|
|
5078
|
+
}
|
|
5079
|
+
function resolveConfidenceLevel(p) {
|
|
5080
|
+
if (p.confidenceLevel) return p.confidenceLevel;
|
|
5081
|
+
if (typeof p.confidence !== "number") return void 0;
|
|
5082
|
+
if (p.confidence >= 0.85) return "high";
|
|
5083
|
+
if (p.confidence >= 0.6) return "medium";
|
|
5084
|
+
return "low";
|
|
5085
|
+
}
|
|
5086
|
+
function defaultAcceptedFor(p) {
|
|
5087
|
+
if (typeof p.defaultAccepted === "boolean") return p.defaultAccepted;
|
|
5088
|
+
if (p.required) return true;
|
|
5089
|
+
return resolveConfidenceLevel(p) !== "low";
|
|
5090
|
+
}
|
|
5091
|
+
var panelVariants = classVarianceAuthority.cva(
|
|
5092
|
+
[
|
|
5093
|
+
"rounded-xl bg-card text-card-foreground",
|
|
5094
|
+
"border border-border shadow-sm",
|
|
5095
|
+
"flex flex-col overflow-hidden"
|
|
5096
|
+
],
|
|
5097
|
+
{
|
|
5098
|
+
variants: {
|
|
5099
|
+
tone: {
|
|
5100
|
+
default: "",
|
|
5101
|
+
accent: "ring-1 ring-primary-200 dark:ring-primary-900"
|
|
5102
|
+
}
|
|
5103
|
+
},
|
|
5104
|
+
defaultVariants: {
|
|
5105
|
+
tone: "default"
|
|
5106
|
+
}
|
|
5107
|
+
}
|
|
5108
|
+
);
|
|
5109
|
+
var confidenceBadgeVariants = classVarianceAuthority.cva(
|
|
5110
|
+
"inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium",
|
|
5111
|
+
{
|
|
5112
|
+
variants: {
|
|
5113
|
+
level: {
|
|
5114
|
+
high: "bg-success-100 text-success dark:bg-success-900/30 dark:text-success-300",
|
|
5115
|
+
medium: "bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300",
|
|
5116
|
+
low: "bg-amber-200 text-amber-800 dark:bg-amber-900/40 dark:text-amber-200"
|
|
5117
|
+
}
|
|
5118
|
+
},
|
|
5119
|
+
defaultVariants: { level: "high" }
|
|
5120
|
+
}
|
|
5121
|
+
);
|
|
5122
|
+
function formatValueDefault(value) {
|
|
5123
|
+
if (value === null || value === void 0 || value === "") {
|
|
5124
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground italic", "aria-label": "empty", children: "\u2014" });
|
|
5125
|
+
}
|
|
5126
|
+
if (value instanceof Date) return value.toLocaleDateString();
|
|
5127
|
+
if (typeof value === "object") {
|
|
5128
|
+
try {
|
|
5129
|
+
return JSON.stringify(value);
|
|
5130
|
+
} catch {
|
|
5131
|
+
return String(value);
|
|
5132
|
+
}
|
|
5133
|
+
}
|
|
5134
|
+
return String(value);
|
|
5135
|
+
}
|
|
5136
|
+
function ConfidenceBadge({ level }) {
|
|
5137
|
+
const labels = {
|
|
5138
|
+
high: "High confidence",
|
|
5139
|
+
medium: "Medium confidence",
|
|
5140
|
+
low: "Low confidence"
|
|
5141
|
+
};
|
|
5142
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5143
|
+
"span",
|
|
5144
|
+
{
|
|
5145
|
+
className: chunkOR5DRJCW_cjs.cn(confidenceBadgeVariants({ level })),
|
|
5146
|
+
"data-slot": "reconciliation-confidence",
|
|
5147
|
+
children: labels[level]
|
|
5148
|
+
}
|
|
5149
|
+
);
|
|
5150
|
+
}
|
|
5151
|
+
function ReconciliationProposalRow({
|
|
5152
|
+
proposal,
|
|
5153
|
+
state,
|
|
5154
|
+
onAcceptedChange,
|
|
5155
|
+
onValueChange,
|
|
5156
|
+
onToggleEditing
|
|
5157
|
+
}) {
|
|
5158
|
+
const safeState = state ?? {
|
|
5159
|
+
accepted: defaultAcceptedFor(proposal),
|
|
5160
|
+
editing: false,
|
|
5161
|
+
value: proposal.proposed
|
|
5162
|
+
};
|
|
5163
|
+
const rowId = React49__namespace.useId();
|
|
5164
|
+
const checkboxId = `${rowId}-accept`;
|
|
5165
|
+
const level = resolveConfidenceLevel(proposal);
|
|
5166
|
+
const render = proposal.renderValue ?? formatValueDefault;
|
|
5167
|
+
const canEdit = Boolean(proposal.renderEditor);
|
|
5168
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5169
|
+
"li",
|
|
5170
|
+
{
|
|
5171
|
+
"data-slot": "reconciliation-row",
|
|
5172
|
+
"data-accepted": safeState.accepted,
|
|
5173
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
5174
|
+
"flex gap-3 px-4 py-3 transition-colors",
|
|
5175
|
+
safeState.accepted ? "bg-background" : "bg-muted/40",
|
|
5176
|
+
"border-border border-b last:border-b-0"
|
|
5177
|
+
),
|
|
5178
|
+
children: [
|
|
5179
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5180
|
+
chunkDFCZPVG4_cjs.Checkbox,
|
|
5181
|
+
{
|
|
5182
|
+
id: checkboxId,
|
|
5183
|
+
checked: safeState.accepted,
|
|
5184
|
+
onChange: (e) => onAcceptedChange(e.target.checked),
|
|
5185
|
+
disabled: proposal.required,
|
|
5186
|
+
"aria-label": `Apply update for ${proposal.label}`
|
|
5187
|
+
}
|
|
5188
|
+
) }),
|
|
5189
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
5190
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-3", children: [
|
|
5191
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5192
|
+
"label",
|
|
5193
|
+
{
|
|
5194
|
+
htmlFor: checkboxId,
|
|
5195
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
5196
|
+
"text-foreground cursor-pointer text-sm font-medium",
|
|
5197
|
+
proposal.required && "cursor-default"
|
|
5198
|
+
),
|
|
5199
|
+
children: [
|
|
5200
|
+
proposal.label,
|
|
5201
|
+
proposal.required && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5202
|
+
"span",
|
|
5203
|
+
{
|
|
5204
|
+
className: "text-muted-foreground ml-1 text-xs font-normal",
|
|
5205
|
+
"aria-label": "required",
|
|
5206
|
+
children: "(required)"
|
|
5207
|
+
}
|
|
5208
|
+
)
|
|
5209
|
+
]
|
|
5210
|
+
}
|
|
5211
|
+
),
|
|
5212
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
5213
|
+
level && /* @__PURE__ */ jsxRuntime.jsx(ConfidenceBadge, { level }),
|
|
5214
|
+
canEdit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5215
|
+
"button",
|
|
5216
|
+
{
|
|
5217
|
+
type: "button",
|
|
5218
|
+
onClick: onToggleEditing,
|
|
5219
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
5220
|
+
"text-muted-foreground hover:text-foreground text-xs",
|
|
5221
|
+
"focus-visible:ring-ring rounded focus-visible:ring-2 focus-visible:outline-none",
|
|
5222
|
+
"hover:underline"
|
|
5223
|
+
),
|
|
5224
|
+
"aria-expanded": safeState.editing,
|
|
5225
|
+
"aria-controls": `${rowId}-editor`,
|
|
5226
|
+
children: safeState.editing ? "Done" : "Edit"
|
|
5227
|
+
}
|
|
5228
|
+
)
|
|
5229
|
+
] })
|
|
5230
|
+
] }),
|
|
5231
|
+
proposal.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mt-0.5 text-xs", children: proposal.description }),
|
|
5232
|
+
/* @__PURE__ */ jsxRuntime.jsxs("dl", { className: "mt-2 grid grid-cols-1 gap-2 text-sm sm:grid-cols-2", children: [
|
|
5233
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-border/60 rounded-md border border-dashed px-3 py-2", children: [
|
|
5234
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: "text-muted-foreground text-[11px] tracking-wide uppercase", children: "On file" }),
|
|
5235
|
+
/* @__PURE__ */ jsxRuntime.jsx("dd", { className: "text-foreground mt-0.5 break-words", children: render(proposal.current) })
|
|
5236
|
+
] }),
|
|
5237
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5238
|
+
"div",
|
|
5239
|
+
{
|
|
5240
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
5241
|
+
"rounded-md border px-3 py-2",
|
|
5242
|
+
safeState.accepted ? "border-primary-300 bg-primary-50/60 dark:border-primary-700 dark:bg-primary-950/30" : "border-border bg-background"
|
|
5243
|
+
),
|
|
5244
|
+
children: [
|
|
5245
|
+
/* @__PURE__ */ jsxRuntime.jsxs("dt", { className: "text-muted-foreground flex items-center gap-1 text-[11px] tracking-wide uppercase", children: [
|
|
5246
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5247
|
+
SparklesIcon,
|
|
5248
|
+
{
|
|
5249
|
+
size: "sm",
|
|
5250
|
+
className: "text-primary-700 dark:text-primary-400"
|
|
5251
|
+
}
|
|
5252
|
+
),
|
|
5253
|
+
"From AI",
|
|
5254
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "(AI-suggested value)" })
|
|
5255
|
+
] }),
|
|
5256
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5257
|
+
"dd",
|
|
5258
|
+
{
|
|
5259
|
+
id: `${rowId}-editor`,
|
|
5260
|
+
className: "text-foreground mt-0.5 break-words",
|
|
5261
|
+
children: safeState.editing && proposal.renderEditor ? proposal.renderEditor(safeState.value, onValueChange) : render(safeState.value)
|
|
5262
|
+
}
|
|
5263
|
+
)
|
|
5264
|
+
]
|
|
5265
|
+
}
|
|
5266
|
+
)
|
|
5267
|
+
] }),
|
|
5268
|
+
proposal.hint && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5269
|
+
"p",
|
|
5270
|
+
{
|
|
5271
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
5272
|
+
"mt-2 text-xs",
|
|
5273
|
+
level === "low" ? "text-amber-700 dark:text-amber-300" : "text-muted-foreground"
|
|
5274
|
+
),
|
|
5275
|
+
children: proposal.hint
|
|
5276
|
+
}
|
|
5277
|
+
)
|
|
5278
|
+
] })
|
|
5279
|
+
]
|
|
5280
|
+
}
|
|
5281
|
+
);
|
|
5282
|
+
}
|
|
5283
|
+
function relativeTimeLabel(date) {
|
|
5284
|
+
const seconds = Math.max(0, Math.round((Date.now() - date.getTime()) / 1e3));
|
|
5285
|
+
if (seconds < 45) return "just now";
|
|
5286
|
+
if (seconds < 90) return "1 minute ago";
|
|
5287
|
+
if (seconds < 3600) return `${Math.round(seconds / 60)} minutes ago`;
|
|
5288
|
+
if (seconds < 5400) return "1 hour ago";
|
|
5289
|
+
if (seconds < 86400) return `${Math.round(seconds / 3600)} hours ago`;
|
|
5290
|
+
return date.toLocaleString();
|
|
5291
|
+
}
|
|
5292
|
+
function SourcePill({ source }) {
|
|
5293
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5294
|
+
"div",
|
|
5295
|
+
{
|
|
5296
|
+
"data-slot": "reconciliation-source",
|
|
5297
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
5298
|
+
"inline-flex items-center gap-2 rounded-full",
|
|
5299
|
+
"border-border bg-muted/60 border px-3 py-1 text-xs font-medium",
|
|
5300
|
+
"text-muted-foreground"
|
|
5301
|
+
),
|
|
5302
|
+
children: [
|
|
5303
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary-700 dark:text-primary-400 flex items-center", children: source.icon ?? /* @__PURE__ */ jsxRuntime.jsx(SparklesIcon, { size: "sm" }) }),
|
|
5304
|
+
source.thumbnailUrl && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5305
|
+
"img",
|
|
5306
|
+
{
|
|
5307
|
+
src: source.thumbnailUrl,
|
|
5308
|
+
alt: "",
|
|
5309
|
+
className: "h-5 w-5 rounded object-cover",
|
|
5310
|
+
"aria-hidden": "true"
|
|
5311
|
+
}
|
|
5312
|
+
),
|
|
5313
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground", children: source.label }),
|
|
5314
|
+
source.generatedAt && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
|
|
5315
|
+
"\xB7 ",
|
|
5316
|
+
relativeTimeLabel(source.generatedAt)
|
|
5317
|
+
] })
|
|
5318
|
+
]
|
|
5319
|
+
}
|
|
5320
|
+
);
|
|
5321
|
+
}
|
|
5322
|
+
function AIReconciliationPanel({
|
|
5323
|
+
title,
|
|
5324
|
+
description,
|
|
5325
|
+
source,
|
|
5326
|
+
proposals,
|
|
5327
|
+
onApply,
|
|
5328
|
+
onSkip,
|
|
5329
|
+
variant = "panel",
|
|
5330
|
+
open,
|
|
5331
|
+
onOpenChange,
|
|
5332
|
+
tone,
|
|
5333
|
+
applyLabel,
|
|
5334
|
+
skipLabel = "Skip for now",
|
|
5335
|
+
acceptAllLabel = "Accept all",
|
|
5336
|
+
rejectAllLabel = "Reject all",
|
|
5337
|
+
hideBulkActions,
|
|
5338
|
+
isEqual = defaultReconciliationIsEqual,
|
|
5339
|
+
onNothingToReconcile,
|
|
5340
|
+
className
|
|
5341
|
+
}) {
|
|
5342
|
+
const effective = React49__namespace.useMemo(
|
|
5343
|
+
() => proposals.filter((p) => !isEqual(p.current, p.proposed)),
|
|
5344
|
+
[proposals, isEqual]
|
|
5345
|
+
);
|
|
5346
|
+
const stateSignature = React49__namespace.useMemo(
|
|
5347
|
+
() => effective.map(
|
|
5348
|
+
(p) => `${p.id}\u241F${safeStableStringify(p.proposed)}\u241F${p.defaultAccepted ?? ""}\u241F${p.required ?? ""}\u241F${p.confidence ?? ""}\u241F${p.confidenceLevel ?? ""}`
|
|
5349
|
+
).join("|"),
|
|
5350
|
+
[effective]
|
|
5351
|
+
);
|
|
5352
|
+
const [rowStates, setRowStates] = React49__namespace.useState(
|
|
5353
|
+
() => Object.fromEntries(
|
|
5354
|
+
effective.map((p) => [
|
|
5355
|
+
p.id,
|
|
5356
|
+
{
|
|
5357
|
+
accepted: defaultAcceptedFor(p),
|
|
5358
|
+
editing: false,
|
|
5359
|
+
value: p.proposed
|
|
5360
|
+
}
|
|
5361
|
+
])
|
|
5362
|
+
)
|
|
5363
|
+
);
|
|
5364
|
+
React49__namespace.useEffect(() => {
|
|
5365
|
+
setRowStates(
|
|
5366
|
+
Object.fromEntries(
|
|
5367
|
+
effective.map((p) => [
|
|
5368
|
+
p.id,
|
|
5369
|
+
{
|
|
5370
|
+
accepted: defaultAcceptedFor(p),
|
|
5371
|
+
editing: false,
|
|
5372
|
+
value: p.proposed
|
|
5373
|
+
}
|
|
5374
|
+
])
|
|
5375
|
+
)
|
|
5376
|
+
);
|
|
5377
|
+
}, [stateSignature]);
|
|
5378
|
+
const reportedEmpty = React49__namespace.useRef(false);
|
|
5379
|
+
React49__namespace.useEffect(() => {
|
|
5380
|
+
if (effective.length === 0 && !reportedEmpty.current) {
|
|
5381
|
+
reportedEmpty.current = true;
|
|
5382
|
+
onNothingToReconcile?.();
|
|
5383
|
+
}
|
|
5384
|
+
if (effective.length > 0) reportedEmpty.current = false;
|
|
5385
|
+
}, [effective.length, onNothingToReconcile]);
|
|
5386
|
+
const acceptedCount = React49__namespace.useMemo(
|
|
5387
|
+
() => Object.values(rowStates).filter((s) => s.accepted).length,
|
|
5388
|
+
[rowStates]
|
|
5389
|
+
);
|
|
5390
|
+
const [submitting, setSubmitting] = React49__namespace.useState(false);
|
|
5391
|
+
const setAllAccepted = React49__namespace.useCallback(
|
|
5392
|
+
(accepted) => {
|
|
5393
|
+
setRowStates((prev) => {
|
|
5394
|
+
const next = { ...prev };
|
|
5395
|
+
for (const p of effective) {
|
|
5396
|
+
if (p.required && !accepted) continue;
|
|
5397
|
+
const base = prev[p.id] ?? {
|
|
5398
|
+
accepted: defaultAcceptedFor(p),
|
|
5399
|
+
editing: false,
|
|
5400
|
+
value: p.proposed
|
|
5401
|
+
};
|
|
5402
|
+
next[p.id] = { ...base, accepted };
|
|
5403
|
+
}
|
|
5404
|
+
return next;
|
|
5405
|
+
});
|
|
5406
|
+
},
|
|
5407
|
+
[effective]
|
|
5408
|
+
);
|
|
5409
|
+
const setRowAccepted = React49__namespace.useCallback(
|
|
5410
|
+
(id, accepted) => {
|
|
5411
|
+
const proposal = effective.find((p) => p.id === id);
|
|
5412
|
+
setRowStates((prev) => {
|
|
5413
|
+
const base = prev[id] ?? {
|
|
5414
|
+
accepted: proposal ? defaultAcceptedFor(proposal) : false,
|
|
5415
|
+
editing: false,
|
|
5416
|
+
value: proposal?.proposed
|
|
5417
|
+
};
|
|
5418
|
+
return { ...prev, [id]: { ...base, accepted } };
|
|
5419
|
+
});
|
|
5420
|
+
},
|
|
5421
|
+
[effective]
|
|
5422
|
+
);
|
|
5423
|
+
const setRowValue = React49__namespace.useCallback(
|
|
5424
|
+
(id, value) => {
|
|
5425
|
+
const proposal = effective.find((p) => p.id === id);
|
|
5426
|
+
setRowStates((prev) => {
|
|
5427
|
+
const base = prev[id] ?? {
|
|
5428
|
+
accepted: proposal ? defaultAcceptedFor(proposal) : false,
|
|
5429
|
+
editing: false,
|
|
5430
|
+
value: proposal?.proposed
|
|
5431
|
+
};
|
|
5432
|
+
return { ...prev, [id]: { ...base, value } };
|
|
5433
|
+
});
|
|
5434
|
+
},
|
|
5435
|
+
[effective]
|
|
5436
|
+
);
|
|
5437
|
+
const toggleRowEditing = React49__namespace.useCallback(
|
|
5438
|
+
(id) => {
|
|
5439
|
+
const proposal = effective.find((p) => p.id === id);
|
|
5440
|
+
setRowStates((prev) => {
|
|
5441
|
+
const base = prev[id] ?? {
|
|
5442
|
+
accepted: proposal ? defaultAcceptedFor(proposal) : false,
|
|
5443
|
+
editing: false,
|
|
5444
|
+
value: proposal?.proposed
|
|
5445
|
+
};
|
|
5446
|
+
return { ...prev, [id]: { ...base, editing: !base.editing } };
|
|
5447
|
+
});
|
|
5448
|
+
},
|
|
5449
|
+
[effective]
|
|
5450
|
+
);
|
|
5451
|
+
const handleApply = React49__namespace.useCallback(async () => {
|
|
5452
|
+
const accepted = effective.filter((p) => rowStates[p.id]?.accepted).map((p) => ({
|
|
5453
|
+
id: p.id,
|
|
5454
|
+
value: rowStates[p.id]?.value ?? p.proposed
|
|
5455
|
+
}));
|
|
5456
|
+
if (accepted.length === 0) return;
|
|
5457
|
+
try {
|
|
5458
|
+
setSubmitting(true);
|
|
5459
|
+
await onApply(accepted);
|
|
5460
|
+
} finally {
|
|
5461
|
+
setSubmitting(false);
|
|
5462
|
+
}
|
|
5463
|
+
}, [effective, rowStates, onApply]);
|
|
5464
|
+
const containerRef = React49__namespace.useRef(null);
|
|
5465
|
+
React49__namespace.useEffect(() => {
|
|
5466
|
+
const el = containerRef.current;
|
|
5467
|
+
if (!el) return void 0;
|
|
5468
|
+
const handler = (e) => {
|
|
5469
|
+
if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
|
|
5470
|
+
if (acceptedCount === 0 || submitting) return;
|
|
5471
|
+
e.preventDefault();
|
|
5472
|
+
void handleApply();
|
|
5473
|
+
return;
|
|
5474
|
+
}
|
|
5475
|
+
if (e.key !== "a" && e.key !== "A") return;
|
|
5476
|
+
if (e.metaKey || e.ctrlKey || e.altKey) return;
|
|
5477
|
+
const target = e.target;
|
|
5478
|
+
const tag = target?.tagName?.toLowerCase();
|
|
5479
|
+
if (tag === "input" || tag === "textarea" || target?.isContentEditable) {
|
|
5480
|
+
return;
|
|
5481
|
+
}
|
|
5482
|
+
e.preventDefault();
|
|
5483
|
+
setAllAccepted(acceptedCount !== effective.length);
|
|
5484
|
+
};
|
|
5485
|
+
el.addEventListener("keydown", handler);
|
|
5486
|
+
return () => el.removeEventListener("keydown", handler);
|
|
5487
|
+
}, [
|
|
5488
|
+
acceptedCount,
|
|
5489
|
+
effective.length,
|
|
5490
|
+
setAllAccepted,
|
|
5491
|
+
handleApply,
|
|
5492
|
+
submitting
|
|
5493
|
+
]);
|
|
5494
|
+
const allAccepted = effective.length > 0 && acceptedCount === effective.length;
|
|
5495
|
+
const someAccepted = acceptedCount > 0 && !allAccepted;
|
|
5496
|
+
const resolvedApplyLabel = applyLabel ?? (acceptedCount === 1 ? "Apply 1 update" : `Apply ${acceptedCount} updates`);
|
|
5497
|
+
const grouped = React49__namespace.useMemo(() => {
|
|
5498
|
+
const map = /* @__PURE__ */ new Map();
|
|
5499
|
+
for (const p of effective) {
|
|
5500
|
+
const key = p.group;
|
|
5501
|
+
const arr = map.get(key) ?? [];
|
|
5502
|
+
arr.push(p);
|
|
5503
|
+
map.set(key, arr);
|
|
5504
|
+
}
|
|
5505
|
+
return Array.from(map.entries());
|
|
5506
|
+
}, [effective]);
|
|
5507
|
+
const bulkBar = !hideBulkActions && effective.length > 1 ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5508
|
+
"div",
|
|
5509
|
+
{
|
|
5510
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
5511
|
+
"border-border flex items-center justify-between gap-2 border-b",
|
|
5512
|
+
"bg-muted/40 px-4 py-2"
|
|
5513
|
+
),
|
|
5514
|
+
"data-slot": "reconciliation-bulk",
|
|
5515
|
+
children: [
|
|
5516
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5517
|
+
chunkDFCZPVG4_cjs.Checkbox,
|
|
5518
|
+
{
|
|
5519
|
+
checked: allAccepted,
|
|
5520
|
+
indeterminate: someAccepted,
|
|
5521
|
+
onChange: (e) => setAllAccepted(e.target.checked),
|
|
5522
|
+
"aria-label": allAccepted ? rejectAllLabel : acceptAllLabel,
|
|
5523
|
+
label: allAccepted ? rejectAllLabel : acceptAllLabel
|
|
5524
|
+
}
|
|
5525
|
+
),
|
|
5526
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
5527
|
+
"p",
|
|
5528
|
+
{
|
|
5529
|
+
className: "text-muted-foreground text-xs",
|
|
5530
|
+
role: "status",
|
|
5531
|
+
"aria-live": "polite",
|
|
5532
|
+
children: [
|
|
5533
|
+
acceptedCount,
|
|
5534
|
+
" of ",
|
|
5535
|
+
effective.length,
|
|
5536
|
+
" selected"
|
|
5537
|
+
]
|
|
5538
|
+
}
|
|
5539
|
+
)
|
|
5540
|
+
]
|
|
5541
|
+
}
|
|
5542
|
+
) : null;
|
|
5543
|
+
const rowList = /* @__PURE__ */ jsxRuntime.jsx(
|
|
5544
|
+
"ul",
|
|
5545
|
+
{
|
|
5546
|
+
"data-slot": "reconciliation-rows",
|
|
5547
|
+
className: "divide-border max-h-[60vh] overflow-y-auto",
|
|
5548
|
+
children: grouped.map(([groupKey, items]) => /* @__PURE__ */ jsxRuntime.jsxs(React49__namespace.Fragment, { children: [
|
|
5549
|
+
groupKey && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5550
|
+
"li",
|
|
5551
|
+
{
|
|
5552
|
+
"aria-hidden": "true",
|
|
5553
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
5554
|
+
"bg-muted/30 text-muted-foreground border-border",
|
|
5555
|
+
"border-b px-4 py-1.5 text-[11px] font-medium tracking-wide uppercase"
|
|
5556
|
+
),
|
|
5557
|
+
children: groupKey
|
|
5558
|
+
}
|
|
5559
|
+
),
|
|
5560
|
+
items.map((p) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5561
|
+
ReconciliationProposalRow,
|
|
5562
|
+
{
|
|
5563
|
+
proposal: p,
|
|
5564
|
+
state: rowStates[p.id],
|
|
5565
|
+
onAcceptedChange: (a) => setRowAccepted(p.id, a),
|
|
5566
|
+
onValueChange: (v) => setRowValue(p.id, v),
|
|
5567
|
+
onToggleEditing: () => toggleRowEditing(p.id)
|
|
5568
|
+
},
|
|
5569
|
+
p.id
|
|
5570
|
+
))
|
|
5571
|
+
] }, groupKey ?? "__nogroup"))
|
|
5572
|
+
}
|
|
5573
|
+
);
|
|
5574
|
+
const footerButtons = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5575
|
+
onSkip && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5576
|
+
chunkA2QVQF54_cjs.Button,
|
|
5577
|
+
{
|
|
5578
|
+
type: "button",
|
|
5579
|
+
variant: "ghost",
|
|
5580
|
+
onClick: onSkip,
|
|
5581
|
+
disabled: submitting,
|
|
5582
|
+
children: skipLabel
|
|
5583
|
+
}
|
|
5584
|
+
),
|
|
5585
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5586
|
+
chunkA2QVQF54_cjs.Button,
|
|
5587
|
+
{
|
|
5588
|
+
type: "button",
|
|
5589
|
+
onClick: handleApply,
|
|
5590
|
+
disabled: acceptedCount === 0 || submitting,
|
|
5591
|
+
isLoading: submitting,
|
|
5592
|
+
loadingText: "Applying\u2026",
|
|
5593
|
+
children: resolvedApplyLabel
|
|
5594
|
+
}
|
|
5595
|
+
)
|
|
5596
|
+
] });
|
|
5597
|
+
if (variant === "modal") {
|
|
5598
|
+
if (!onOpenChange) {
|
|
5599
|
+
throw new Error(
|
|
5600
|
+
'AIReconciliationPanel: `onOpenChange` is required when `variant="modal"`.'
|
|
5601
|
+
);
|
|
5602
|
+
}
|
|
5603
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkAWUADXYI_cjs.Modal, { open: Boolean(open), onOpenChange, size: "2xl", children: [
|
|
5604
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkAWUADXYI_cjs.ModalHeader, { children: [
|
|
5605
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkAWUADXYI_cjs.ModalTitle, { children: title }),
|
|
5606
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkAWUADXYI_cjs.ModalClose, {})
|
|
5607
|
+
] }),
|
|
5608
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkAWUADXYI_cjs.ModalBody, { className: "px-0 py-0", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5609
|
+
"div",
|
|
5610
|
+
{
|
|
5611
|
+
ref: containerRef,
|
|
5612
|
+
"data-slot": "reconciliation-panel",
|
|
5613
|
+
"data-variant": "modal",
|
|
5614
|
+
className: chunkOR5DRJCW_cjs.cn("flex flex-col", className),
|
|
5615
|
+
role: "group",
|
|
5616
|
+
"aria-label": title,
|
|
5617
|
+
children: [
|
|
5618
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-border border-b px-6 py-3", children: [
|
|
5619
|
+
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground text-sm", children: description }),
|
|
5620
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkOR5DRJCW_cjs.cn(description && "mt-3"), children: /* @__PURE__ */ jsxRuntime.jsx(SourcePill, { source }) })
|
|
5621
|
+
] }),
|
|
5622
|
+
effective.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground px-6 py-6 text-sm", children: "No updates to review \u2014 your profile already matches the scan." }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5623
|
+
bulkBar,
|
|
5624
|
+
rowList
|
|
5625
|
+
] })
|
|
5626
|
+
]
|
|
5627
|
+
}
|
|
5628
|
+
) }),
|
|
5629
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkAWUADXYI_cjs.ModalFooter, { children: effective.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkA2QVQF54_cjs.Button, { onClick: () => onOpenChange(false), children: "Close" }) : footerButtons })
|
|
5630
|
+
] });
|
|
5631
|
+
}
|
|
5632
|
+
if (effective.length === 0) return null;
|
|
5633
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5634
|
+
"div",
|
|
5635
|
+
{
|
|
5636
|
+
ref: containerRef,
|
|
5637
|
+
"data-slot": "reconciliation-panel",
|
|
5638
|
+
"data-variant": "panel",
|
|
5639
|
+
className: chunkOR5DRJCW_cjs.cn(panelVariants({ tone }), className),
|
|
5640
|
+
role: "group",
|
|
5641
|
+
"aria-label": title,
|
|
5642
|
+
children: [
|
|
5643
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-border border-b px-4 pt-4 pb-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
5644
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
5645
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-foreground text-base font-semibold", children: title }),
|
|
5646
|
+
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: description })
|
|
5647
|
+
] }),
|
|
5648
|
+
/* @__PURE__ */ jsxRuntime.jsx(SourcePill, { source })
|
|
5649
|
+
] }) }),
|
|
5650
|
+
bulkBar,
|
|
5651
|
+
rowList,
|
|
5652
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5653
|
+
"div",
|
|
5654
|
+
{
|
|
5655
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
5656
|
+
"border-border flex flex-col-reverse gap-2 border-t px-4 py-3",
|
|
5657
|
+
"sm:flex-row sm:items-center sm:justify-end sm:gap-3"
|
|
5658
|
+
),
|
|
5659
|
+
"data-slot": "reconciliation-footer",
|
|
5660
|
+
children: footerButtons
|
|
5661
|
+
}
|
|
5662
|
+
)
|
|
5663
|
+
]
|
|
5664
|
+
}
|
|
5665
|
+
);
|
|
5666
|
+
}
|
|
5667
|
+
AIReconciliationPanel.displayName = "AIReconciliationPanel";
|
|
5039
5668
|
function AppHeader({
|
|
5040
5669
|
children,
|
|
5041
5670
|
className,
|
|
@@ -5352,10 +5981,10 @@ function AuthDialog({
|
|
|
5352
5981
|
requireEmailVerification = false,
|
|
5353
5982
|
className
|
|
5354
5983
|
}) {
|
|
5355
|
-
const [internalMode, setInternalMode] =
|
|
5356
|
-
const [isLoading, setIsLoading] =
|
|
5357
|
-
const [error, setError] =
|
|
5358
|
-
const [success, setSuccess] =
|
|
5984
|
+
const [internalMode, setInternalMode] = React49__namespace.useState("login");
|
|
5985
|
+
const [isLoading, setIsLoading] = React49__namespace.useState(false);
|
|
5986
|
+
const [error, setError] = React49__namespace.useState(null);
|
|
5987
|
+
const [success, setSuccess] = React49__namespace.useState(null);
|
|
5359
5988
|
const mode = controlledMode ?? internalMode;
|
|
5360
5989
|
const setMode = (newMode) => {
|
|
5361
5990
|
setError(null);
|
|
@@ -5366,14 +5995,14 @@ function AuthDialog({
|
|
|
5366
5995
|
setInternalMode(newMode);
|
|
5367
5996
|
}
|
|
5368
5997
|
};
|
|
5369
|
-
|
|
5998
|
+
React49__namespace.useEffect(() => {
|
|
5370
5999
|
const handleEscape = (e) => {
|
|
5371
6000
|
if (e.key === "Escape" && isOpen) onClose();
|
|
5372
6001
|
};
|
|
5373
6002
|
document.addEventListener("keydown", handleEscape);
|
|
5374
6003
|
return () => document.removeEventListener("keydown", handleEscape);
|
|
5375
6004
|
}, [isOpen, onClose]);
|
|
5376
|
-
|
|
6005
|
+
React49__namespace.useEffect(() => {
|
|
5377
6006
|
if (isOpen) {
|
|
5378
6007
|
document.body.style.overflow = "hidden";
|
|
5379
6008
|
} else {
|
|
@@ -5599,9 +6228,9 @@ function AuthDialog({
|
|
|
5599
6228
|
);
|
|
5600
6229
|
}
|
|
5601
6230
|
function LoginForm({ onSubmit, isLoading, onForgotPassword }) {
|
|
5602
|
-
const [email, setEmail] =
|
|
5603
|
-
const [password, setPassword] =
|
|
5604
|
-
const [showPassword, setShowPassword] =
|
|
6231
|
+
const [email, setEmail] = React49__namespace.useState("");
|
|
6232
|
+
const [password, setPassword] = React49__namespace.useState("");
|
|
6233
|
+
const [showPassword, setShowPassword] = React49__namespace.useState(false);
|
|
5605
6234
|
const handleSubmit = (e) => {
|
|
5606
6235
|
e.preventDefault();
|
|
5607
6236
|
onSubmit(email, password);
|
|
@@ -5703,11 +6332,11 @@ function SignupForm({
|
|
|
5703
6332
|
termsUrl,
|
|
5704
6333
|
privacyUrl
|
|
5705
6334
|
}) {
|
|
5706
|
-
const [email, setEmail] =
|
|
5707
|
-
const [password, setPassword] =
|
|
5708
|
-
const [confirmPassword, setConfirmPassword] =
|
|
5709
|
-
const [acceptedTerms, setAcceptedTerms] =
|
|
5710
|
-
const [showPassword, setShowPassword] =
|
|
6335
|
+
const [email, setEmail] = React49__namespace.useState("");
|
|
6336
|
+
const [password, setPassword] = React49__namespace.useState("");
|
|
6337
|
+
const [confirmPassword, setConfirmPassword] = React49__namespace.useState("");
|
|
6338
|
+
const [acceptedTerms, setAcceptedTerms] = React49__namespace.useState(false);
|
|
6339
|
+
const [showPassword, setShowPassword] = React49__namespace.useState(false);
|
|
5711
6340
|
const passwordsMatch = password === confirmPassword;
|
|
5712
6341
|
const handleSubmit = (e) => {
|
|
5713
6342
|
e.preventDefault();
|
|
@@ -5856,7 +6485,7 @@ function ForgotPasswordForm({
|
|
|
5856
6485
|
isLoading,
|
|
5857
6486
|
onBack
|
|
5858
6487
|
}) {
|
|
5859
|
-
const [email, setEmail] =
|
|
6488
|
+
const [email, setEmail] = React49__namespace.useState("");
|
|
5860
6489
|
const handleSubmit = (e) => {
|
|
5861
6490
|
e.preventDefault();
|
|
5862
6491
|
onSubmit(email);
|
|
@@ -5907,9 +6536,9 @@ function ForgotPasswordForm({
|
|
|
5907
6536
|
] });
|
|
5908
6537
|
}
|
|
5909
6538
|
function ResetPasswordForm({ onSubmit, isLoading }) {
|
|
5910
|
-
const [password, setPassword] =
|
|
5911
|
-
const [confirmPassword, setConfirmPassword] =
|
|
5912
|
-
const [showPassword, setShowPassword] =
|
|
6539
|
+
const [password, setPassword] = React49__namespace.useState("");
|
|
6540
|
+
const [confirmPassword, setConfirmPassword] = React49__namespace.useState("");
|
|
6541
|
+
const [showPassword, setShowPassword] = React49__namespace.useState(false);
|
|
5913
6542
|
const passwordsMatch = password === confirmPassword;
|
|
5914
6543
|
const handleSubmit = (e) => {
|
|
5915
6544
|
e.preventDefault();
|
|
@@ -6275,9 +6904,9 @@ function ServiceSelect({
|
|
|
6275
6904
|
error,
|
|
6276
6905
|
className
|
|
6277
6906
|
}) {
|
|
6278
|
-
const [isOpen, setIsOpen] =
|
|
6279
|
-
const dropdownRef =
|
|
6280
|
-
|
|
6907
|
+
const [isOpen, setIsOpen] = React49__namespace.useState(false);
|
|
6908
|
+
const dropdownRef = React49__namespace.useRef(null);
|
|
6909
|
+
React49__namespace.useEffect(() => {
|
|
6281
6910
|
function handleClickOutside(event) {
|
|
6282
6911
|
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
6283
6912
|
setIsOpen(false);
|
|
@@ -6452,7 +7081,7 @@ function DialogOverlay({
|
|
|
6452
7081
|
className,
|
|
6453
7082
|
titleId
|
|
6454
7083
|
}) {
|
|
6455
|
-
|
|
7084
|
+
React49__namespace.useEffect(() => {
|
|
6456
7085
|
if (!isOpen || chunkSCV7C55E_cjs.isStorybookDocsMode()) {
|
|
6457
7086
|
return void 0;
|
|
6458
7087
|
}
|
|
@@ -6506,8 +7135,8 @@ function BookingDialog({
|
|
|
6506
7135
|
isLoading = false,
|
|
6507
7136
|
className
|
|
6508
7137
|
}) {
|
|
6509
|
-
const titleId =
|
|
6510
|
-
const [formData, setFormData] =
|
|
7138
|
+
const titleId = React49__namespace.useId();
|
|
7139
|
+
const [formData, setFormData] = React49__namespace.useState({
|
|
6511
7140
|
firstName: defaultValues?.firstName || "",
|
|
6512
7141
|
lastName: defaultValues?.lastName || "",
|
|
6513
7142
|
phoneNumber: defaultValues?.phoneNumber || "",
|
|
@@ -6516,7 +7145,7 @@ function BookingDialog({
|
|
|
6516
7145
|
consentEmail: defaultValues?.consentEmail ?? false,
|
|
6517
7146
|
consentSms: defaultValues?.consentSms ?? false
|
|
6518
7147
|
});
|
|
6519
|
-
const [errors, setErrors] =
|
|
7148
|
+
const [errors, setErrors] = React49__namespace.useState({});
|
|
6520
7149
|
const validate = () => {
|
|
6521
7150
|
const newErrors = {};
|
|
6522
7151
|
if (!formData.firstName.trim()) {
|
|
@@ -6784,7 +7413,7 @@ function InlineBookingForm({
|
|
|
6784
7413
|
isLoading = false,
|
|
6785
7414
|
className
|
|
6786
7415
|
}) {
|
|
6787
|
-
const [formData, setFormData] =
|
|
7416
|
+
const [formData, setFormData] = React49__namespace.useState({
|
|
6788
7417
|
firstName: defaultValues?.firstName || "",
|
|
6789
7418
|
lastName: defaultValues?.lastName || "",
|
|
6790
7419
|
phoneNumber: defaultValues?.phoneNumber || "",
|
|
@@ -6793,7 +7422,7 @@ function InlineBookingForm({
|
|
|
6793
7422
|
consentEmail: defaultValues?.consentEmail ?? false,
|
|
6794
7423
|
consentSms: defaultValues?.consentSms ?? false
|
|
6795
7424
|
});
|
|
6796
|
-
const [errors, setErrors] =
|
|
7425
|
+
const [errors, setErrors] = React49__namespace.useState({});
|
|
6797
7426
|
const validate = () => {
|
|
6798
7427
|
const newErrors = {};
|
|
6799
7428
|
if (!formData.firstName.trim()) {
|
|
@@ -7522,7 +8151,7 @@ function HoursSummary({
|
|
|
7522
8151
|
defaultExpanded = false,
|
|
7523
8152
|
className
|
|
7524
8153
|
}) {
|
|
7525
|
-
const [isExpanded, setIsExpanded] =
|
|
8154
|
+
const [isExpanded, setIsExpanded] = React49__namespace.useState(defaultExpanded);
|
|
7526
8155
|
const isOpen = isCurrentlyOpen(schedule.officeHours);
|
|
7527
8156
|
const todayHours = getTodayHours(schedule.officeHours, use24Hour);
|
|
7528
8157
|
const hasStructuredHours = schedule.officeHours && schedule.officeHours.length > 0;
|
|
@@ -7630,7 +8259,7 @@ function BusinessHoursEditor({
|
|
|
7630
8259
|
}) {
|
|
7631
8260
|
const schedule = ensureAllDays(value);
|
|
7632
8261
|
const orderedDays = getOrderedDays(weekStartsOn);
|
|
7633
|
-
const handleAddTimeSlot =
|
|
8262
|
+
const handleAddTimeSlot = React49.useCallback(
|
|
7634
8263
|
(dayIndex) => {
|
|
7635
8264
|
const newSchedule = [...schedule];
|
|
7636
8265
|
const daySchedule = newSchedule.find((d) => d.day === dayIndex);
|
|
@@ -7644,7 +8273,7 @@ function BusinessHoursEditor({
|
|
|
7644
8273
|
},
|
|
7645
8274
|
[schedule, onChange]
|
|
7646
8275
|
);
|
|
7647
|
-
const handleRemoveTimeSlot =
|
|
8276
|
+
const handleRemoveTimeSlot = React49.useCallback(
|
|
7648
8277
|
(dayIndex, slotIndex) => {
|
|
7649
8278
|
const newSchedule = [...schedule];
|
|
7650
8279
|
const daySchedule = newSchedule.find((d) => d.day === dayIndex);
|
|
@@ -7655,7 +8284,7 @@ function BusinessHoursEditor({
|
|
|
7655
8284
|
},
|
|
7656
8285
|
[schedule, onChange]
|
|
7657
8286
|
);
|
|
7658
|
-
const handleTimeChange =
|
|
8287
|
+
const handleTimeChange = React49.useCallback(
|
|
7659
8288
|
(dayIndex, slotIndex, field, value2) => {
|
|
7660
8289
|
const newSchedule = [...schedule];
|
|
7661
8290
|
const daySchedule = newSchedule.find((d) => d.day === dayIndex);
|
|
@@ -7669,7 +8298,7 @@ function BusinessHoursEditor({
|
|
|
7669
8298
|
},
|
|
7670
8299
|
[schedule, onChange]
|
|
7671
8300
|
);
|
|
7672
|
-
const handleCopyToAll =
|
|
8301
|
+
const handleCopyToAll = React49.useCallback(
|
|
7673
8302
|
(sourceDayIndex) => {
|
|
7674
8303
|
const sourceDay = schedule.find((d) => d.day === sourceDayIndex);
|
|
7675
8304
|
if (!sourceDay || sourceDay.hours.length === 0) return;
|
|
@@ -7687,7 +8316,7 @@ function BusinessHoursEditor({
|
|
|
7687
8316
|
},
|
|
7688
8317
|
[schedule, onChange]
|
|
7689
8318
|
);
|
|
7690
|
-
const handleCopyToWeekdays =
|
|
8319
|
+
const handleCopyToWeekdays = React49.useCallback(
|
|
7691
8320
|
(sourceDayIndex) => {
|
|
7692
8321
|
const sourceDay = schedule.find((d) => d.day === sourceDayIndex);
|
|
7693
8322
|
if (!sourceDay || sourceDay.hours.length === 0) return;
|
|
@@ -7997,17 +8626,17 @@ function CheckrIntegration({
|
|
|
7997
8626
|
viewDetails = "View Details",
|
|
7998
8627
|
noReportsSelected = "No reports selected"
|
|
7999
8628
|
} = labels;
|
|
8000
|
-
const [showInviteModal, setShowInviteModal] =
|
|
8001
|
-
const [candidateName, setCandidateName] =
|
|
8002
|
-
const [candidateEmail, setCandidateEmail] =
|
|
8003
|
-
const [candidatePhone, setCandidatePhone] =
|
|
8004
|
-
const [selectedPackage, setSelectedPackage] =
|
|
8629
|
+
const [showInviteModal, setShowInviteModal] = React49__namespace.useState(false);
|
|
8630
|
+
const [candidateName, setCandidateName] = React49__namespace.useState("");
|
|
8631
|
+
const [candidateEmail, setCandidateEmail] = React49__namespace.useState("");
|
|
8632
|
+
const [candidatePhone, setCandidatePhone] = React49__namespace.useState("");
|
|
8633
|
+
const [selectedPackage, setSelectedPackage] = React49__namespace.useState(
|
|
8005
8634
|
packages[0]?.id || ""
|
|
8006
8635
|
);
|
|
8007
|
-
const [selectedReports, setSelectedReports] =
|
|
8636
|
+
const [selectedReports, setSelectedReports] = React49__namespace.useState(
|
|
8008
8637
|
/* @__PURE__ */ new Set()
|
|
8009
8638
|
);
|
|
8010
|
-
|
|
8639
|
+
React49__namespace.useEffect(() => {
|
|
8011
8640
|
setSelectedReports((prev) => prev.size > 0 ? /* @__PURE__ */ new Set() : prev);
|
|
8012
8641
|
}, [reports, connected]);
|
|
8013
8642
|
const statusLabels = {
|
|
@@ -8041,7 +8670,7 @@ function CheckrIntegration({
|
|
|
8041
8670
|
failed: "bg-destructive",
|
|
8042
8671
|
expired: "bg-muted-foreground"
|
|
8043
8672
|
};
|
|
8044
|
-
const statusCounts =
|
|
8673
|
+
const statusCounts = React49__namespace.useMemo(() => {
|
|
8045
8674
|
const counts = {
|
|
8046
8675
|
pending: 0,
|
|
8047
8676
|
running: 0,
|
|
@@ -8547,7 +9176,7 @@ function CheckrIntegration({
|
|
|
8547
9176
|
}
|
|
8548
9177
|
);
|
|
8549
9178
|
}
|
|
8550
|
-
var CommandPaletteContext =
|
|
9179
|
+
var CommandPaletteContext = React49.createContext(
|
|
8551
9180
|
null
|
|
8552
9181
|
);
|
|
8553
9182
|
function CommandPaletteProvider({
|
|
@@ -8555,24 +9184,24 @@ function CommandPaletteProvider({
|
|
|
8555
9184
|
enableShortcut = true,
|
|
8556
9185
|
customEventName
|
|
8557
9186
|
}) {
|
|
8558
|
-
const [isOpen, setIsOpen] =
|
|
8559
|
-
const [query, setQuery] =
|
|
8560
|
-
const [selectedIndex, setSelectedIndex] =
|
|
8561
|
-
const [activeCategory, setActiveCategory] =
|
|
8562
|
-
const [items, setItems] =
|
|
8563
|
-
const [categories, setCategories] =
|
|
8564
|
-
const open =
|
|
9187
|
+
const [isOpen, setIsOpen] = React49.useState(false);
|
|
9188
|
+
const [query, setQuery] = React49.useState("");
|
|
9189
|
+
const [selectedIndex, setSelectedIndex] = React49.useState(-1);
|
|
9190
|
+
const [activeCategory, setActiveCategory] = React49.useState(null);
|
|
9191
|
+
const [items, setItems] = React49.useState([]);
|
|
9192
|
+
const [categories, setCategories] = React49.useState([]);
|
|
9193
|
+
const open = React49.useCallback(() => {
|
|
8565
9194
|
setIsOpen(true);
|
|
8566
9195
|
setQuery("");
|
|
8567
9196
|
setSelectedIndex(-1);
|
|
8568
9197
|
setActiveCategory(null);
|
|
8569
9198
|
}, []);
|
|
8570
|
-
const close =
|
|
9199
|
+
const close = React49.useCallback(() => {
|
|
8571
9200
|
setIsOpen(false);
|
|
8572
9201
|
setQuery("");
|
|
8573
9202
|
setSelectedIndex(-1);
|
|
8574
9203
|
}, []);
|
|
8575
|
-
const toggle =
|
|
9204
|
+
const toggle = React49.useCallback(() => {
|
|
8576
9205
|
if (isOpen) {
|
|
8577
9206
|
close();
|
|
8578
9207
|
} else {
|
|
@@ -8580,13 +9209,13 @@ function CommandPaletteProvider({
|
|
|
8580
9209
|
}
|
|
8581
9210
|
}, [isOpen, open, close]);
|
|
8582
9211
|
chunkFSBFQBNE_cjs.useCommandK(toggle, enableShortcut);
|
|
8583
|
-
|
|
9212
|
+
React49__namespace.default.useEffect(() => {
|
|
8584
9213
|
if (!customEventName) return;
|
|
8585
9214
|
const handler = () => open();
|
|
8586
9215
|
document.addEventListener(customEventName, handler);
|
|
8587
9216
|
return () => document.removeEventListener(customEventName, handler);
|
|
8588
9217
|
}, [customEventName, open]);
|
|
8589
|
-
const contextValue =
|
|
9218
|
+
const contextValue = React49.useMemo(
|
|
8590
9219
|
() => ({
|
|
8591
9220
|
isOpen,
|
|
8592
9221
|
open,
|
|
@@ -8618,7 +9247,7 @@ function CommandPaletteProvider({
|
|
|
8618
9247
|
return /* @__PURE__ */ jsxRuntime.jsx(CommandPaletteContext.Provider, { value: contextValue, children });
|
|
8619
9248
|
}
|
|
8620
9249
|
function useCommandPalette() {
|
|
8621
|
-
const context =
|
|
9250
|
+
const context = React49.useContext(CommandPaletteContext);
|
|
8622
9251
|
if (!context) {
|
|
8623
9252
|
throw new Error(
|
|
8624
9253
|
"useCommandPalette must be used within a CommandPaletteProvider"
|
|
@@ -8723,16 +9352,16 @@ function CommandPalette({
|
|
|
8723
9352
|
items,
|
|
8724
9353
|
categories
|
|
8725
9354
|
} = useCommandPalette();
|
|
8726
|
-
const inputRef =
|
|
8727
|
-
const containerRef =
|
|
8728
|
-
const listRef =
|
|
8729
|
-
|
|
9355
|
+
const inputRef = React49.useRef(null);
|
|
9356
|
+
const containerRef = React49.useRef(null);
|
|
9357
|
+
const listRef = React49.useRef(null);
|
|
9358
|
+
React49.useEffect(() => {
|
|
8730
9359
|
if (!isOpen) return;
|
|
8731
9360
|
onQueryChange?.(query);
|
|
8732
9361
|
}, [query, isOpen, onQueryChange]);
|
|
8733
9362
|
const PINNED_CATEGORY_ID = "__palette_pinned__";
|
|
8734
9363
|
const RECENT_CATEGORY_ID = "__palette_recent__";
|
|
8735
|
-
const filteredItems =
|
|
9364
|
+
const filteredItems = React49.useMemo(() => {
|
|
8736
9365
|
let result = items;
|
|
8737
9366
|
if (activeCategory) {
|
|
8738
9367
|
result = result.filter((item) => item.category === activeCategory);
|
|
@@ -8745,7 +9374,7 @@ function CommandPalette({
|
|
|
8745
9374
|
}
|
|
8746
9375
|
return result;
|
|
8747
9376
|
}, [items, query, activeCategory, serverFiltered]);
|
|
8748
|
-
const effectiveItems =
|
|
9377
|
+
const effectiveItems = React49.useMemo(() => {
|
|
8749
9378
|
const pinned = !activeCategory && pinnedItems?.length ? pinnedItems.map((it) => ({
|
|
8750
9379
|
...it,
|
|
8751
9380
|
category: it.category ?? PINNED_CATEGORY_ID
|
|
@@ -8757,7 +9386,7 @@ function CommandPalette({
|
|
|
8757
9386
|
})) : [];
|
|
8758
9387
|
return [...pinned, ...filteredItems, ...recents];
|
|
8759
9388
|
}, [pinnedItems, recentItems, filteredItems, activeCategory, query]);
|
|
8760
|
-
const groupedItems =
|
|
9389
|
+
const groupedItems = React49.useMemo(() => {
|
|
8761
9390
|
const groups = /* @__PURE__ */ new Map();
|
|
8762
9391
|
effectiveItems.forEach((item) => {
|
|
8763
9392
|
const category = item.category ?? "Other";
|
|
@@ -8769,15 +9398,15 @@ function CommandPalette({
|
|
|
8769
9398
|
}, [effectiveItems]);
|
|
8770
9399
|
chunkFHY3K6PL_cjs.useEscapeKey(close, isOpen);
|
|
8771
9400
|
chunkIKMR2ADM_cjs.useClickOutside(containerRef, close);
|
|
8772
|
-
|
|
9401
|
+
React49.useEffect(() => {
|
|
8773
9402
|
if (isOpen) {
|
|
8774
9403
|
setTimeout(() => inputRef.current?.focus(), 50);
|
|
8775
9404
|
}
|
|
8776
9405
|
}, [isOpen]);
|
|
8777
|
-
|
|
9406
|
+
React49.useEffect(() => {
|
|
8778
9407
|
setSelectedIndex(effectiveItems.length > 0 ? 0 : -1);
|
|
8779
9408
|
}, [effectiveItems.length, setSelectedIndex]);
|
|
8780
|
-
|
|
9409
|
+
React49.useEffect(() => {
|
|
8781
9410
|
if (selectedIndex >= 0 && listRef.current) {
|
|
8782
9411
|
const selectedElement = listRef.current.querySelector(
|
|
8783
9412
|
`[data-index="${selectedIndex}"]`
|
|
@@ -8785,7 +9414,7 @@ function CommandPalette({
|
|
|
8785
9414
|
selectedElement?.scrollIntoView({ block: "nearest" });
|
|
8786
9415
|
}
|
|
8787
9416
|
}, [selectedIndex]);
|
|
8788
|
-
const handleKeyDown =
|
|
9417
|
+
const handleKeyDown = React49.useCallback(
|
|
8789
9418
|
(e) => {
|
|
8790
9419
|
switch (e.key) {
|
|
8791
9420
|
case "ArrowDown":
|
|
@@ -8829,7 +9458,7 @@ function CommandPalette({
|
|
|
8829
9458
|
setActiveCategory
|
|
8830
9459
|
]
|
|
8831
9460
|
);
|
|
8832
|
-
const handleItemClick =
|
|
9461
|
+
const handleItemClick = React49.useCallback(
|
|
8833
9462
|
(item) => {
|
|
8834
9463
|
if (!item.disabled) {
|
|
8835
9464
|
onSelect?.(item);
|
|
@@ -8838,7 +9467,7 @@ function CommandPalette({
|
|
|
8838
9467
|
},
|
|
8839
9468
|
[onSelect, close]
|
|
8840
9469
|
);
|
|
8841
|
-
const getCategoryInfo =
|
|
9470
|
+
const getCategoryInfo = React49.useCallback(
|
|
8842
9471
|
(categoryId) => {
|
|
8843
9472
|
if (categoryId === PINNED_CATEGORY_ID) {
|
|
8844
9473
|
return { id: PINNED_CATEGORY_ID, label: pinnedCategoryLabel };
|
|
@@ -9492,11 +10121,11 @@ function formatRetryTime(time) {
|
|
|
9492
10121
|
}
|
|
9493
10122
|
function useConnectionStatus(options = {}) {
|
|
9494
10123
|
const { onDisconnect, onReconnect } = options;
|
|
9495
|
-
const [isOnline, setIsOnline] =
|
|
10124
|
+
const [isOnline, setIsOnline] = React49__namespace.useState(() => {
|
|
9496
10125
|
if (typeof window === "undefined") return true;
|
|
9497
10126
|
return navigator.onLine;
|
|
9498
10127
|
});
|
|
9499
|
-
|
|
10128
|
+
React49__namespace.useEffect(() => {
|
|
9500
10129
|
const handleOnline = () => {
|
|
9501
10130
|
setIsOnline(true);
|
|
9502
10131
|
onReconnect?.();
|
|
@@ -9615,10 +10244,10 @@ function RowActionMenu({
|
|
|
9615
10244
|
item,
|
|
9616
10245
|
actions
|
|
9617
10246
|
}) {
|
|
9618
|
-
const [open, setOpen] =
|
|
9619
|
-
const menuRef =
|
|
9620
|
-
const buttonRef =
|
|
9621
|
-
|
|
10247
|
+
const [open, setOpen] = React49__namespace.useState(false);
|
|
10248
|
+
const menuRef = React49__namespace.useRef(null);
|
|
10249
|
+
const buttonRef = React49__namespace.useRef(null);
|
|
10250
|
+
React49__namespace.useEffect(() => {
|
|
9622
10251
|
if (!open) return;
|
|
9623
10252
|
function handleClick(e) {
|
|
9624
10253
|
if (menuRef.current && !menuRef.current.contains(e.target) && buttonRef.current && !buttonRef.current.contains(e.target)) {
|
|
@@ -9628,7 +10257,7 @@ function RowActionMenu({
|
|
|
9628
10257
|
document.addEventListener("mousedown", handleClick);
|
|
9629
10258
|
return () => document.removeEventListener("mousedown", handleClick);
|
|
9630
10259
|
}, [open]);
|
|
9631
|
-
|
|
10260
|
+
React49__namespace.useEffect(() => {
|
|
9632
10261
|
if (!open) return;
|
|
9633
10262
|
function handleKey(e) {
|
|
9634
10263
|
if (e.key === "Escape") setOpen(false);
|
|
@@ -9636,8 +10265,8 @@ function RowActionMenu({
|
|
|
9636
10265
|
document.addEventListener("keydown", handleKey);
|
|
9637
10266
|
return () => document.removeEventListener("keydown", handleKey);
|
|
9638
10267
|
}, [open]);
|
|
9639
|
-
const [menuPos, setMenuPos] =
|
|
9640
|
-
|
|
10268
|
+
const [menuPos, setMenuPos] = React49__namespace.useState(null);
|
|
10269
|
+
React49__namespace.useLayoutEffect(() => {
|
|
9641
10270
|
if (!open || !buttonRef.current) return;
|
|
9642
10271
|
const rect = buttonRef.current.getBoundingClientRect();
|
|
9643
10272
|
setMenuPos({
|
|
@@ -9820,9 +10449,9 @@ function buildDefaultActions(onView, onEdit, onDelete) {
|
|
|
9820
10449
|
function ViewModalActions({
|
|
9821
10450
|
viewTarget
|
|
9822
10451
|
}) {
|
|
9823
|
-
const [shareOpen, setShareOpen] =
|
|
9824
|
-
const shareRef =
|
|
9825
|
-
|
|
10452
|
+
const [shareOpen, setShareOpen] = React49__namespace.useState(false);
|
|
10453
|
+
const shareRef = React49__namespace.useRef(null);
|
|
10454
|
+
React49__namespace.useEffect(() => {
|
|
9826
10455
|
if (!shareOpen) return;
|
|
9827
10456
|
const handleClick = (e) => {
|
|
9828
10457
|
if (shareRef.current && !shareRef.current.contains(e.target)) {
|
|
@@ -9959,7 +10588,7 @@ function ViewModalActions({
|
|
|
9959
10588
|
)
|
|
9960
10589
|
] });
|
|
9961
10590
|
}
|
|
9962
|
-
var CountBadge =
|
|
10591
|
+
var CountBadge = React49__namespace.forwardRef(
|
|
9963
10592
|
({
|
|
9964
10593
|
className,
|
|
9965
10594
|
variant,
|
|
@@ -9975,18 +10604,18 @@ var CountBadge = React48__namespace.forwardRef(
|
|
|
9975
10604
|
countVariant,
|
|
9976
10605
|
...props
|
|
9977
10606
|
}, ref) => {
|
|
9978
|
-
const [open, setOpen] =
|
|
9979
|
-
const containerRef =
|
|
9980
|
-
const [deleteTarget, setDeleteTarget] =
|
|
9981
|
-
const [editTarget, setEditTarget] =
|
|
10607
|
+
const [open, setOpen] = React49__namespace.useState(false);
|
|
10608
|
+
const containerRef = React49__namespace.useRef(null);
|
|
10609
|
+
const [deleteTarget, setDeleteTarget] = React49__namespace.useState(null);
|
|
10610
|
+
const [editTarget, setEditTarget] = React49__namespace.useState(
|
|
9982
10611
|
null
|
|
9983
10612
|
);
|
|
9984
|
-
const [editForm, setEditForm] =
|
|
9985
|
-
const [viewTarget, setViewTarget] =
|
|
10613
|
+
const [editForm, setEditForm] = React49__namespace.useState({});
|
|
10614
|
+
const [viewTarget, setViewTarget] = React49__namespace.useState(
|
|
9986
10615
|
null
|
|
9987
10616
|
);
|
|
9988
10617
|
const showMenu = items && items.length > 0;
|
|
9989
|
-
|
|
10618
|
+
React49__namespace.useEffect(() => {
|
|
9990
10619
|
if (!open) return;
|
|
9991
10620
|
const handleClickOutside = (e) => {
|
|
9992
10621
|
if (containerRef.current && !containerRef.current.contains(e.target)) {
|
|
@@ -9996,7 +10625,7 @@ var CountBadge = React48__namespace.forwardRef(
|
|
|
9996
10625
|
document.addEventListener("mousedown", handleClickOutside);
|
|
9997
10626
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
9998
10627
|
}, [open]);
|
|
9999
|
-
|
|
10628
|
+
React49__namespace.useEffect(() => {
|
|
10000
10629
|
if (!open) return;
|
|
10001
10630
|
const handleEscape = (e) => {
|
|
10002
10631
|
if (e.key === "Escape") setOpen(false);
|
|
@@ -10004,13 +10633,13 @@ var CountBadge = React48__namespace.forwardRef(
|
|
|
10004
10633
|
document.addEventListener("keydown", handleEscape);
|
|
10005
10634
|
return () => document.removeEventListener("keydown", handleEscape);
|
|
10006
10635
|
}, [open]);
|
|
10007
|
-
const handleDeleteRequest =
|
|
10636
|
+
const handleDeleteRequest = React49__namespace.useCallback((item) => {
|
|
10008
10637
|
setDeleteTarget(item);
|
|
10009
10638
|
}, []);
|
|
10010
|
-
const handleViewRequest =
|
|
10639
|
+
const handleViewRequest = React49__namespace.useCallback((item) => {
|
|
10011
10640
|
setViewTarget(item);
|
|
10012
10641
|
}, []);
|
|
10013
|
-
const handleEditRequest =
|
|
10642
|
+
const handleEditRequest = React49__namespace.useCallback((item) => {
|
|
10014
10643
|
setEditTarget(item);
|
|
10015
10644
|
setEditForm({
|
|
10016
10645
|
label: item.label,
|
|
@@ -10433,7 +11062,7 @@ function CookieConsentBanner({
|
|
|
10433
11062
|
isMobileApp = false,
|
|
10434
11063
|
className
|
|
10435
11064
|
}) {
|
|
10436
|
-
const [isAnimating, setIsAnimating] =
|
|
11065
|
+
const [isAnimating, setIsAnimating] = React49__namespace.useState(false);
|
|
10437
11066
|
const handleAccept = () => {
|
|
10438
11067
|
setIsAnimating(true);
|
|
10439
11068
|
setTimeout(() => {
|
|
@@ -10492,7 +11121,7 @@ function CookieConsentBanner({
|
|
|
10492
11121
|
appName,
|
|
10493
11122
|
" you are agreeing to our",
|
|
10494
11123
|
" ",
|
|
10495
|
-
legalLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11124
|
+
legalLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsxs(React49__namespace.Fragment, { children: [
|
|
10496
11125
|
index > 0 && (index === legalLinks.length - 1 ? " and " : ", "),
|
|
10497
11126
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10498
11127
|
"a",
|
|
@@ -10616,20 +11245,20 @@ function CompactCookieBanner({
|
|
|
10616
11245
|
var COOKIE_CONSENT_KEY = "cookie-consent-accepted";
|
|
10617
11246
|
function useCookieConsent(options = {}) {
|
|
10618
11247
|
const { storageKey = COOKIE_CONSENT_KEY, onConsent } = options;
|
|
10619
|
-
const [hasConsented, setHasConsented] =
|
|
11248
|
+
const [hasConsented, setHasConsented] = React49__namespace.useState(() => {
|
|
10620
11249
|
if (typeof window === "undefined") return false;
|
|
10621
11250
|
return localStorage.getItem(storageKey) === "true";
|
|
10622
11251
|
});
|
|
10623
|
-
const acceptCookies =
|
|
11252
|
+
const acceptCookies = React49__namespace.useCallback(() => {
|
|
10624
11253
|
localStorage.setItem(storageKey, "true");
|
|
10625
11254
|
setHasConsented(true);
|
|
10626
11255
|
onConsent?.();
|
|
10627
11256
|
}, [storageKey, onConsent]);
|
|
10628
|
-
const declineCookies =
|
|
11257
|
+
const declineCookies = React49__namespace.useCallback(() => {
|
|
10629
11258
|
localStorage.setItem(storageKey, "declined");
|
|
10630
11259
|
setHasConsented(true);
|
|
10631
11260
|
}, [storageKey]);
|
|
10632
|
-
const resetConsent =
|
|
11261
|
+
const resetConsent = React49__namespace.useCallback(() => {
|
|
10633
11262
|
localStorage.removeItem(storageKey);
|
|
10634
11263
|
setHasConsented(false);
|
|
10635
11264
|
}, [storageKey]);
|
|
@@ -11016,9 +11645,9 @@ function CSVFileUpload({
|
|
|
11016
11645
|
selectFile = "Select a file to upload or drag and drop",
|
|
11017
11646
|
selectButton = "Select File to Upload"
|
|
11018
11647
|
} = labels;
|
|
11019
|
-
const inputRef =
|
|
11020
|
-
const [isDragging, setIsDragging] =
|
|
11021
|
-
const handleDrop =
|
|
11648
|
+
const inputRef = React49__namespace.useRef(null);
|
|
11649
|
+
const [isDragging, setIsDragging] = React49__namespace.useState(false);
|
|
11650
|
+
const handleDrop = React49__namespace.useCallback(
|
|
11022
11651
|
(e) => {
|
|
11023
11652
|
e.preventDefault();
|
|
11024
11653
|
setIsDragging(false);
|
|
@@ -11029,14 +11658,14 @@ function CSVFileUpload({
|
|
|
11029
11658
|
},
|
|
11030
11659
|
[onFileSelect]
|
|
11031
11660
|
);
|
|
11032
|
-
const handleDragOver =
|
|
11661
|
+
const handleDragOver = React49__namespace.useCallback((e) => {
|
|
11033
11662
|
e.preventDefault();
|
|
11034
11663
|
setIsDragging(true);
|
|
11035
11664
|
}, []);
|
|
11036
|
-
const handleDragLeave =
|
|
11665
|
+
const handleDragLeave = React49__namespace.useCallback(() => {
|
|
11037
11666
|
setIsDragging(false);
|
|
11038
11667
|
}, []);
|
|
11039
|
-
const handleFileChange =
|
|
11668
|
+
const handleFileChange = React49__namespace.useCallback(
|
|
11040
11669
|
(e) => {
|
|
11041
11670
|
const file = e.target.files?.[0];
|
|
11042
11671
|
if (file) {
|
|
@@ -11101,7 +11730,7 @@ var widgetVariants = classVarianceAuthority.cva("", {
|
|
|
11101
11730
|
size: "md"
|
|
11102
11731
|
}
|
|
11103
11732
|
});
|
|
11104
|
-
var DashboardWidget =
|
|
11733
|
+
var DashboardWidget = React49__namespace.forwardRef(
|
|
11105
11734
|
({
|
|
11106
11735
|
className,
|
|
11107
11736
|
size,
|
|
@@ -11196,7 +11825,7 @@ var DashboardWidget = React48__namespace.forwardRef(
|
|
|
11196
11825
|
}
|
|
11197
11826
|
);
|
|
11198
11827
|
DashboardWidget.displayName = "DashboardWidget";
|
|
11199
|
-
var DashboardWidgetInfo =
|
|
11828
|
+
var DashboardWidgetInfo = React49__namespace.forwardRef(({ className, items, columns = 2, layout = "stacked", ...props }, ref) => {
|
|
11200
11829
|
const gridCols = {
|
|
11201
11830
|
1: "grid-cols-1",
|
|
11202
11831
|
2: "grid-cols-2",
|
|
@@ -11330,10 +11959,10 @@ function WidgetRowActionMenu({
|
|
|
11330
11959
|
rowIndex,
|
|
11331
11960
|
actions
|
|
11332
11961
|
}) {
|
|
11333
|
-
const [open, setOpen] =
|
|
11334
|
-
const menuRef =
|
|
11335
|
-
const buttonRef =
|
|
11336
|
-
|
|
11962
|
+
const [open, setOpen] = React49__namespace.useState(false);
|
|
11963
|
+
const menuRef = React49__namespace.useRef(null);
|
|
11964
|
+
const buttonRef = React49__namespace.useRef(null);
|
|
11965
|
+
React49__namespace.useEffect(() => {
|
|
11337
11966
|
if (!open) return;
|
|
11338
11967
|
function handleClick(e) {
|
|
11339
11968
|
if (menuRef.current && !menuRef.current.contains(e.target) && buttonRef.current && !buttonRef.current.contains(e.target)) {
|
|
@@ -11343,7 +11972,7 @@ function WidgetRowActionMenu({
|
|
|
11343
11972
|
document.addEventListener("mousedown", handleClick);
|
|
11344
11973
|
return () => document.removeEventListener("mousedown", handleClick);
|
|
11345
11974
|
}, [open]);
|
|
11346
|
-
|
|
11975
|
+
React49__namespace.useEffect(() => {
|
|
11347
11976
|
if (!open) return;
|
|
11348
11977
|
function handleKey(e) {
|
|
11349
11978
|
if (e.key === "Escape") setOpen(false);
|
|
@@ -11351,8 +11980,8 @@ function WidgetRowActionMenu({
|
|
|
11351
11980
|
document.addEventListener("keydown", handleKey);
|
|
11352
11981
|
return () => document.removeEventListener("keydown", handleKey);
|
|
11353
11982
|
}, [open]);
|
|
11354
|
-
const [menuPos, setMenuPos] =
|
|
11355
|
-
|
|
11983
|
+
const [menuPos, setMenuPos] = React49__namespace.useState(null);
|
|
11984
|
+
React49__namespace.useLayoutEffect(() => {
|
|
11356
11985
|
if (!open || !buttonRef.current) return;
|
|
11357
11986
|
const rect = buttonRef.current.getBoundingClientRect();
|
|
11358
11987
|
setMenuPos({
|
|
@@ -11433,7 +12062,7 @@ function WidgetRowActionMenu({
|
|
|
11433
12062
|
)
|
|
11434
12063
|
] });
|
|
11435
12064
|
}
|
|
11436
|
-
var DashboardWidgetTable =
|
|
12065
|
+
var DashboardWidgetTable = React49__namespace.forwardRef(DashboardWidgetTableInner);
|
|
11437
12066
|
var actionColorMap = {
|
|
11438
12067
|
primary: "bg-primary-100 text-primary-900 dark:bg-primary-900/40 dark:text-primary-300",
|
|
11439
12068
|
green: "bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300",
|
|
@@ -11444,7 +12073,7 @@ var actionColorMap = {
|
|
|
11444
12073
|
amber: "bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",
|
|
11445
12074
|
neutral: "bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300"
|
|
11446
12075
|
};
|
|
11447
|
-
var DashboardWidgetActions =
|
|
12076
|
+
var DashboardWidgetActions = React49__namespace.forwardRef(({ className, actions, columns = 2, ...props }, ref) => {
|
|
11448
12077
|
const gridCols = {
|
|
11449
12078
|
1: "grid-cols-1",
|
|
11450
12079
|
2: "grid-cols-2",
|
|
@@ -11497,7 +12126,7 @@ var DashboardWidgetActions = React48__namespace.forwardRef(({ className, actions
|
|
|
11497
12126
|
);
|
|
11498
12127
|
});
|
|
11499
12128
|
DashboardWidgetActions.displayName = "DashboardWidgetActions";
|
|
11500
|
-
var DashboardWidgetDataCards =
|
|
12129
|
+
var DashboardWidgetDataCards = React49__namespace.forwardRef(({ className, items, columns = 2, footer, ...props }, ref) => {
|
|
11501
12130
|
const gridCols = {
|
|
11502
12131
|
2: "grid-cols-2",
|
|
11503
12132
|
3: "grid-cols-3",
|
|
@@ -11699,24 +12328,24 @@ function DateRangePicker({
|
|
|
11699
12328
|
labels = {}
|
|
11700
12329
|
}) {
|
|
11701
12330
|
const finalPresets = presets || getDefaultPresets(labels);
|
|
11702
|
-
const [isCalendarOpen, setIsCalendarOpen] =
|
|
11703
|
-
const [leftMonth, setLeftMonth] =
|
|
12331
|
+
const [isCalendarOpen, setIsCalendarOpen] = React49__namespace.useState(false);
|
|
12332
|
+
const [leftMonth, setLeftMonth] = React49__namespace.useState(
|
|
11704
12333
|
() => value?.start?.getMonth() ?? (/* @__PURE__ */ new Date()).getMonth()
|
|
11705
12334
|
);
|
|
11706
|
-
const [leftYear, setLeftYear] =
|
|
12335
|
+
const [leftYear, setLeftYear] = React49__namespace.useState(
|
|
11707
12336
|
() => value?.start?.getFullYear() ?? (/* @__PURE__ */ new Date()).getFullYear()
|
|
11708
12337
|
);
|
|
11709
|
-
const [rangeStart, setRangeStart] =
|
|
12338
|
+
const [rangeStart, setRangeStart] = React49__namespace.useState(
|
|
11710
12339
|
value?.start ?? null
|
|
11711
12340
|
);
|
|
11712
|
-
const [rangeEnd, setRangeEnd] =
|
|
12341
|
+
const [rangeEnd, setRangeEnd] = React49__namespace.useState(
|
|
11713
12342
|
value?.end ?? null
|
|
11714
12343
|
);
|
|
11715
|
-
const [selectingEnd, setSelectingEnd] =
|
|
11716
|
-
const [hoverDate, setHoverDate] =
|
|
11717
|
-
const calendarRef =
|
|
11718
|
-
const triggerRef =
|
|
11719
|
-
const [resolvedAlign, setResolvedAlign] =
|
|
12344
|
+
const [selectingEnd, setSelectingEnd] = React49__namespace.useState(false);
|
|
12345
|
+
const [hoverDate, setHoverDate] = React49__namespace.useState(null);
|
|
12346
|
+
const calendarRef = React49__namespace.useRef(null);
|
|
12347
|
+
const triggerRef = React49__namespace.useRef(null);
|
|
12348
|
+
const [resolvedAlign, setResolvedAlign] = React49__namespace.useState(
|
|
11720
12349
|
align === "end" ? "end" : "start"
|
|
11721
12350
|
);
|
|
11722
12351
|
const isMobileVariant = variant === "mobile";
|
|
@@ -11726,7 +12355,7 @@ function DateRangePicker({
|
|
|
11726
12355
|
);
|
|
11727
12356
|
const rightMonth = leftMonth === 11 ? 0 : leftMonth + 1;
|
|
11728
12357
|
const rightYear = leftMonth === 11 ? leftYear + 1 : leftYear;
|
|
11729
|
-
|
|
12358
|
+
React49__namespace.useEffect(() => {
|
|
11730
12359
|
if (!value) {
|
|
11731
12360
|
setRangeStart(null);
|
|
11732
12361
|
setRangeEnd(null);
|
|
@@ -11735,7 +12364,7 @@ function DateRangePicker({
|
|
|
11735
12364
|
setRangeStart(value.start ?? null);
|
|
11736
12365
|
setRangeEnd(value.end ?? null);
|
|
11737
12366
|
}, [value]);
|
|
11738
|
-
const wrapperRef =
|
|
12367
|
+
const wrapperRef = React49__namespace.useRef(null);
|
|
11739
12368
|
chunkIKMR2ADM_cjs.useClickOutside(wrapperRef, () => {
|
|
11740
12369
|
if (isCalendarOpen) {
|
|
11741
12370
|
setIsCalendarOpen(false);
|
|
@@ -11747,7 +12376,7 @@ function DateRangePicker({
|
|
|
11747
12376
|
setSelectingEnd(false);
|
|
11748
12377
|
triggerRef.current?.focus();
|
|
11749
12378
|
}, isCalendarOpen);
|
|
11750
|
-
|
|
12379
|
+
React49__namespace.useEffect(() => {
|
|
11751
12380
|
if (chunkSCV7C55E_cjs.isStorybookDocsMode()) return;
|
|
11752
12381
|
if (isMobileVariant && isCalendarOpen) {
|
|
11753
12382
|
const prev = document.body.style.overflow;
|
|
@@ -11757,7 +12386,7 @@ function DateRangePicker({
|
|
|
11757
12386
|
};
|
|
11758
12387
|
}
|
|
11759
12388
|
}, [isMobileVariant, isCalendarOpen]);
|
|
11760
|
-
|
|
12389
|
+
React49__namespace.useLayoutEffect(() => {
|
|
11761
12390
|
if (isMobileVariant || !isCalendarOpen) return;
|
|
11762
12391
|
if (align === "start" || align === "end") {
|
|
11763
12392
|
setResolvedAlign(align);
|
|
@@ -11862,7 +12491,7 @@ function DateRangePicker({
|
|
|
11862
12491
|
return isSameDay(date, today);
|
|
11863
12492
|
};
|
|
11864
12493
|
const displayValue = value ? formatDateRange(value) : "";
|
|
11865
|
-
const monthNames =
|
|
12494
|
+
const monthNames = React49__namespace.useMemo(
|
|
11866
12495
|
() => Array.from(
|
|
11867
12496
|
{ length: 12 },
|
|
11868
12497
|
(_, i) => new Intl.DateTimeFormat(void 0, { month: "long" }).format(
|
|
@@ -11871,7 +12500,7 @@ function DateRangePicker({
|
|
|
11871
12500
|
),
|
|
11872
12501
|
[]
|
|
11873
12502
|
);
|
|
11874
|
-
const weekdayNames =
|
|
12503
|
+
const weekdayNames = React49__namespace.useMemo(
|
|
11875
12504
|
() => Array.from(
|
|
11876
12505
|
{ length: 7 },
|
|
11877
12506
|
(_, i) => new Intl.DateTimeFormat(void 0, { weekday: "short" }).format(
|
|
@@ -12300,11 +12929,11 @@ function DropZone({
|
|
|
12300
12929
|
className,
|
|
12301
12930
|
children
|
|
12302
12931
|
}) {
|
|
12303
|
-
const [isDragging, setIsDragging] =
|
|
12304
|
-
const inputRef =
|
|
12305
|
-
const dropZoneRef =
|
|
12306
|
-
const dragCounter =
|
|
12307
|
-
const handleDragEnter =
|
|
12932
|
+
const [isDragging, setIsDragging] = React49__namespace.useState(false);
|
|
12933
|
+
const inputRef = React49__namespace.useRef(null);
|
|
12934
|
+
const dropZoneRef = React49__namespace.useRef(null);
|
|
12935
|
+
const dragCounter = React49__namespace.useRef(0);
|
|
12936
|
+
const handleDragEnter = React49__namespace.useCallback(
|
|
12308
12937
|
(e) => {
|
|
12309
12938
|
e.preventDefault();
|
|
12310
12939
|
e.stopPropagation();
|
|
@@ -12316,7 +12945,7 @@ function DropZone({
|
|
|
12316
12945
|
},
|
|
12317
12946
|
[disabled]
|
|
12318
12947
|
);
|
|
12319
|
-
const handleDragLeave =
|
|
12948
|
+
const handleDragLeave = React49__namespace.useCallback(
|
|
12320
12949
|
(e) => {
|
|
12321
12950
|
e.preventDefault();
|
|
12322
12951
|
e.stopPropagation();
|
|
@@ -12328,11 +12957,11 @@ function DropZone({
|
|
|
12328
12957
|
},
|
|
12329
12958
|
[disabled]
|
|
12330
12959
|
);
|
|
12331
|
-
const handleDragOver =
|
|
12960
|
+
const handleDragOver = React49__namespace.useCallback((e) => {
|
|
12332
12961
|
e.preventDefault();
|
|
12333
12962
|
e.stopPropagation();
|
|
12334
12963
|
}, []);
|
|
12335
|
-
const handleDrop =
|
|
12964
|
+
const handleDrop = React49__namespace.useCallback(
|
|
12336
12965
|
(e) => {
|
|
12337
12966
|
e.preventDefault();
|
|
12338
12967
|
e.stopPropagation();
|
|
@@ -12345,12 +12974,12 @@ function DropZone({
|
|
|
12345
12974
|
},
|
|
12346
12975
|
[disabled, onFilesSelected]
|
|
12347
12976
|
);
|
|
12348
|
-
const handleClick =
|
|
12977
|
+
const handleClick = React49__namespace.useCallback(() => {
|
|
12349
12978
|
if (!disabled) {
|
|
12350
12979
|
inputRef.current?.click();
|
|
12351
12980
|
}
|
|
12352
12981
|
}, [disabled]);
|
|
12353
|
-
const handleKeyDown =
|
|
12982
|
+
const handleKeyDown = React49__namespace.useCallback(
|
|
12354
12983
|
(e) => {
|
|
12355
12984
|
if ((e.key === "Enter" || e.key === " ") && !disabled) {
|
|
12356
12985
|
e.preventDefault();
|
|
@@ -12359,7 +12988,7 @@ function DropZone({
|
|
|
12359
12988
|
},
|
|
12360
12989
|
[disabled]
|
|
12361
12990
|
);
|
|
12362
|
-
const handleInputChange =
|
|
12991
|
+
const handleInputChange = React49__namespace.useCallback(
|
|
12363
12992
|
(e) => {
|
|
12364
12993
|
if (e.target.files && e.target.files.length > 0) {
|
|
12365
12994
|
onFilesSelected(e.target.files);
|
|
@@ -12450,7 +13079,7 @@ DropZone.displayName = "DropZone";
|
|
|
12450
13079
|
function FilePreviewItem({ file, onRemove, disabled }) {
|
|
12451
13080
|
const isPdf = file.file.type === "application/pdf";
|
|
12452
13081
|
const isImage = file.file.type.startsWith("image/");
|
|
12453
|
-
const handleRemove =
|
|
13082
|
+
const handleRemove = React49__namespace.useCallback(() => {
|
|
12454
13083
|
onRemove(file.id);
|
|
12455
13084
|
}, [file.id, onRemove]);
|
|
12456
13085
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -12596,24 +13225,24 @@ function useCamera({
|
|
|
12596
13225
|
width = 1920,
|
|
12597
13226
|
height = 1080
|
|
12598
13227
|
} = {}) {
|
|
12599
|
-
const [permission, setPermission] =
|
|
12600
|
-
const [stream, setStream] =
|
|
12601
|
-
const [isReady, setIsReady] =
|
|
12602
|
-
const [error, setError] =
|
|
12603
|
-
const [currentFacingMode, setCurrentFacingMode] =
|
|
12604
|
-
const videoRef =
|
|
12605
|
-
const canvasRef =
|
|
12606
|
-
|
|
13228
|
+
const [permission, setPermission] = React49__namespace.useState("prompt");
|
|
13229
|
+
const [stream, setStream] = React49__namespace.useState(null);
|
|
13230
|
+
const [isReady, setIsReady] = React49__namespace.useState(false);
|
|
13231
|
+
const [error, setError] = React49__namespace.useState(null);
|
|
13232
|
+
const [currentFacingMode, setCurrentFacingMode] = React49__namespace.useState(initialFacingMode);
|
|
13233
|
+
const videoRef = React49__namespace.useRef(null);
|
|
13234
|
+
const canvasRef = React49__namespace.useRef(null);
|
|
13235
|
+
React49__namespace.useEffect(() => {
|
|
12607
13236
|
checkCameraPermission().then(setPermission);
|
|
12608
13237
|
}, []);
|
|
12609
|
-
|
|
13238
|
+
React49__namespace.useEffect(() => {
|
|
12610
13239
|
return () => {
|
|
12611
13240
|
if (stream) {
|
|
12612
13241
|
stream.getTracks().forEach((track) => track.stop());
|
|
12613
13242
|
}
|
|
12614
13243
|
};
|
|
12615
13244
|
}, [stream]);
|
|
12616
|
-
const startCamera =
|
|
13245
|
+
const startCamera = React49__namespace.useCallback(async () => {
|
|
12617
13246
|
if (!hasCameraSupport()) {
|
|
12618
13247
|
setPermission("unavailable");
|
|
12619
13248
|
setError(new Error("Camera is not supported on this device"));
|
|
@@ -12647,7 +13276,7 @@ function useCamera({
|
|
|
12647
13276
|
}
|
|
12648
13277
|
}
|
|
12649
13278
|
}, [currentFacingMode, width, height]);
|
|
12650
|
-
const stopCamera =
|
|
13279
|
+
const stopCamera = React49__namespace.useCallback(() => {
|
|
12651
13280
|
if (stream) {
|
|
12652
13281
|
stream.getTracks().forEach((track) => track.stop());
|
|
12653
13282
|
setStream(null);
|
|
@@ -12657,8 +13286,8 @@ function useCamera({
|
|
|
12657
13286
|
videoRef.current.srcObject = null;
|
|
12658
13287
|
}
|
|
12659
13288
|
}, [stream]);
|
|
12660
|
-
const shouldRestartRef =
|
|
12661
|
-
const switchCamera =
|
|
13289
|
+
const shouldRestartRef = React49__namespace.useRef(false);
|
|
13290
|
+
const switchCamera = React49__namespace.useCallback(() => {
|
|
12662
13291
|
const newFacingMode = currentFacingMode === "user" ? "environment" : "user";
|
|
12663
13292
|
if (stream) {
|
|
12664
13293
|
stream.getTracks().forEach((track) => track.stop());
|
|
@@ -12671,13 +13300,13 @@ function useCamera({
|
|
|
12671
13300
|
}
|
|
12672
13301
|
setCurrentFacingMode(newFacingMode);
|
|
12673
13302
|
}, [currentFacingMode, stream]);
|
|
12674
|
-
|
|
13303
|
+
React49__namespace.useEffect(() => {
|
|
12675
13304
|
if (shouldRestartRef.current && !stream) {
|
|
12676
13305
|
shouldRestartRef.current = false;
|
|
12677
13306
|
startCamera();
|
|
12678
13307
|
}
|
|
12679
13308
|
}, [currentFacingMode, stream, startCamera]);
|
|
12680
|
-
const capturePhoto =
|
|
13309
|
+
const capturePhoto = React49__namespace.useCallback(() => {
|
|
12681
13310
|
if (!videoRef.current || !isReady) {
|
|
12682
13311
|
return null;
|
|
12683
13312
|
}
|
|
@@ -12819,7 +13448,7 @@ function compareFingerprints(fp1, fp2) {
|
|
|
12819
13448
|
return Math.max(0, Math.min(100, (1 - avgDiff * 5) * 100));
|
|
12820
13449
|
}
|
|
12821
13450
|
function useDocumentDetection(videoRef, config = {}, onAutoCapture) {
|
|
12822
|
-
const mergedConfig =
|
|
13451
|
+
const mergedConfig = React49.useMemo(
|
|
12823
13452
|
() => ({ ...DEFAULT_CONFIG, ...config }),
|
|
12824
13453
|
// Intentionally depend on individual properties to avoid unnecessary re-renders
|
|
12825
13454
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -12835,16 +13464,16 @@ function useDocumentDetection(videoRef, config = {}, onAutoCapture) {
|
|
|
12835
13464
|
config.enableAutoCapture
|
|
12836
13465
|
]
|
|
12837
13466
|
);
|
|
12838
|
-
const [state, setState] =
|
|
12839
|
-
const canvasRef =
|
|
12840
|
-
const ctxRef =
|
|
12841
|
-
const animationFrameRef =
|
|
12842
|
-
const lastFingerprintRef =
|
|
12843
|
-
const stabilityStartRef =
|
|
12844
|
-
const countdownIntervalRef =
|
|
12845
|
-
const isDetectingRef =
|
|
13467
|
+
const [state, setState] = React49.useState(INITIAL_STATE);
|
|
13468
|
+
const canvasRef = React49.useRef(null);
|
|
13469
|
+
const ctxRef = React49.useRef(null);
|
|
13470
|
+
const animationFrameRef = React49.useRef(null);
|
|
13471
|
+
const lastFingerprintRef = React49.useRef([]);
|
|
13472
|
+
const stabilityStartRef = React49.useRef(null);
|
|
13473
|
+
const countdownIntervalRef = React49.useRef(null);
|
|
13474
|
+
const isDetectingRef = React49.useRef(false);
|
|
12846
13475
|
const STABILITY_THRESHOLD = 85;
|
|
12847
|
-
|
|
13476
|
+
React49.useEffect(() => {
|
|
12848
13477
|
canvasRef.current = document.createElement("canvas");
|
|
12849
13478
|
ctxRef.current = canvasRef.current.getContext("2d", {
|
|
12850
13479
|
willReadFrequently: true
|
|
@@ -12854,7 +13483,7 @@ function useDocumentDetection(videoRef, config = {}, onAutoCapture) {
|
|
|
12854
13483
|
ctxRef.current = null;
|
|
12855
13484
|
};
|
|
12856
13485
|
}, []);
|
|
12857
|
-
const processFrame =
|
|
13486
|
+
const processFrame = React49.useCallback(() => {
|
|
12858
13487
|
const video = videoRef.current;
|
|
12859
13488
|
const canvas = canvasRef.current;
|
|
12860
13489
|
const ctx = ctxRef.current;
|
|
@@ -12924,7 +13553,7 @@ function useDocumentDetection(videoRef, config = {}, onAutoCapture) {
|
|
|
12924
13553
|
}
|
|
12925
13554
|
}, frameDelay);
|
|
12926
13555
|
}, [videoRef, mergedConfig]);
|
|
12927
|
-
|
|
13556
|
+
React49.useEffect(() => {
|
|
12928
13557
|
if (state.isReadyForCapture && mergedConfig.enableAutoCapture && state.captureCountdown === 0 && !countdownIntervalRef.current) {
|
|
12929
13558
|
let countdown = mergedConfig.captureCountdown;
|
|
12930
13559
|
setState((prev) => ({ ...prev, captureCountdown: countdown }));
|
|
@@ -12953,7 +13582,7 @@ function useDocumentDetection(videoRef, config = {}, onAutoCapture) {
|
|
|
12953
13582
|
onAutoCapture,
|
|
12954
13583
|
state.captureCountdown
|
|
12955
13584
|
]);
|
|
12956
|
-
|
|
13585
|
+
React49.useEffect(() => {
|
|
12957
13586
|
return () => {
|
|
12958
13587
|
if (animationFrameRef.current) {
|
|
12959
13588
|
cancelAnimationFrame(animationFrameRef.current);
|
|
@@ -12963,12 +13592,12 @@ function useDocumentDetection(videoRef, config = {}, onAutoCapture) {
|
|
|
12963
13592
|
}
|
|
12964
13593
|
};
|
|
12965
13594
|
}, []);
|
|
12966
|
-
const startDetection =
|
|
13595
|
+
const startDetection = React49.useCallback(() => {
|
|
12967
13596
|
isDetectingRef.current = true;
|
|
12968
13597
|
setState((prev) => ({ ...prev, isDetecting: true, error: null }));
|
|
12969
13598
|
processFrame();
|
|
12970
13599
|
}, [processFrame]);
|
|
12971
|
-
const stopDetection =
|
|
13600
|
+
const stopDetection = React49.useCallback(() => {
|
|
12972
13601
|
isDetectingRef.current = false;
|
|
12973
13602
|
if (animationFrameRef.current) {
|
|
12974
13603
|
cancelAnimationFrame(animationFrameRef.current);
|
|
@@ -12980,7 +13609,7 @@ function useDocumentDetection(videoRef, config = {}, onAutoCapture) {
|
|
|
12980
13609
|
}
|
|
12981
13610
|
setState((prev) => ({ ...prev, isDetecting: false }));
|
|
12982
13611
|
}, []);
|
|
12983
|
-
const resetDetection =
|
|
13612
|
+
const resetDetection = React49.useCallback(() => {
|
|
12984
13613
|
stopDetection();
|
|
12985
13614
|
lastFingerprintRef.current = [];
|
|
12986
13615
|
stabilityStartRef.current = null;
|
|
@@ -13224,14 +13853,14 @@ function WebcamModal({
|
|
|
13224
13853
|
width: 1920,
|
|
13225
13854
|
height: 1080
|
|
13226
13855
|
});
|
|
13227
|
-
const [capturedFile, setCapturedFile] =
|
|
13228
|
-
const [previewUrl, setPreviewUrl] =
|
|
13229
|
-
const [autoDetectEnabled, setAutoDetectEnabled] =
|
|
13230
|
-
const [videoDimensions, setVideoDimensions] =
|
|
13856
|
+
const [capturedFile, setCapturedFile] = React49__namespace.useState(null);
|
|
13857
|
+
const [previewUrl, setPreviewUrl] = React49__namespace.useState(null);
|
|
13858
|
+
const [autoDetectEnabled, setAutoDetectEnabled] = React49__namespace.useState(enableAutoCapture);
|
|
13859
|
+
const [videoDimensions, setVideoDimensions] = React49__namespace.useState({
|
|
13231
13860
|
width: 0,
|
|
13232
13861
|
height: 0
|
|
13233
13862
|
});
|
|
13234
|
-
const handleAutoCapture =
|
|
13863
|
+
const handleAutoCapture = React49__namespace.useCallback(() => {
|
|
13235
13864
|
const file = capturePhoto();
|
|
13236
13865
|
if (file) {
|
|
13237
13866
|
setCapturedFile(file);
|
|
@@ -13252,8 +13881,8 @@ function WebcamModal({
|
|
|
13252
13881
|
},
|
|
13253
13882
|
handleAutoCapture
|
|
13254
13883
|
);
|
|
13255
|
-
const hasStartedRef =
|
|
13256
|
-
|
|
13884
|
+
const hasStartedRef = React49__namespace.useRef(false);
|
|
13885
|
+
React49__namespace.useEffect(() => {
|
|
13257
13886
|
const video = videoRef.current;
|
|
13258
13887
|
if (video && isReady) {
|
|
13259
13888
|
const updateDimensions = () => {
|
|
@@ -13267,7 +13896,7 @@ function WebcamModal({
|
|
|
13267
13896
|
return () => video.removeEventListener("resize", updateDimensions);
|
|
13268
13897
|
}
|
|
13269
13898
|
}, [isReady, videoRef]);
|
|
13270
|
-
|
|
13899
|
+
React49__namespace.useEffect(() => {
|
|
13271
13900
|
if (open && permission !== "denied" && permission !== "unavailable") {
|
|
13272
13901
|
if (!hasStartedRef.current) {
|
|
13273
13902
|
hasStartedRef.current = true;
|
|
@@ -13286,7 +13915,7 @@ function WebcamModal({
|
|
|
13286
13915
|
});
|
|
13287
13916
|
}
|
|
13288
13917
|
}, [open, permission]);
|
|
13289
|
-
|
|
13918
|
+
React49__namespace.useEffect(() => {
|
|
13290
13919
|
if (isReady && autoDetectEnabled && !capturedFile) {
|
|
13291
13920
|
detection.startDetection();
|
|
13292
13921
|
}
|
|
@@ -13294,7 +13923,7 @@ function WebcamModal({
|
|
|
13294
13923
|
detection.stopDetection();
|
|
13295
13924
|
};
|
|
13296
13925
|
}, [isReady, autoDetectEnabled, capturedFile]);
|
|
13297
|
-
const handleCapture =
|
|
13926
|
+
const handleCapture = React49__namespace.useCallback(() => {
|
|
13298
13927
|
const file = capturePhoto();
|
|
13299
13928
|
if (file) {
|
|
13300
13929
|
setCapturedFile(file);
|
|
@@ -13302,7 +13931,7 @@ function WebcamModal({
|
|
|
13302
13931
|
stopCamera();
|
|
13303
13932
|
}
|
|
13304
13933
|
}, [capturePhoto, stopCamera]);
|
|
13305
|
-
const handleRetake =
|
|
13934
|
+
const handleRetake = React49__namespace.useCallback(() => {
|
|
13306
13935
|
if (previewUrl) {
|
|
13307
13936
|
URL.revokeObjectURL(previewUrl);
|
|
13308
13937
|
}
|
|
@@ -13311,13 +13940,13 @@ function WebcamModal({
|
|
|
13311
13940
|
detection.resetDetection();
|
|
13312
13941
|
startCamera();
|
|
13313
13942
|
}, [previewUrl, startCamera, detection]);
|
|
13314
|
-
const handleConfirm =
|
|
13943
|
+
const handleConfirm = React49__namespace.useCallback(() => {
|
|
13315
13944
|
if (capturedFile) {
|
|
13316
13945
|
onCapture(capturedFile);
|
|
13317
13946
|
onOpenChange(false);
|
|
13318
13947
|
}
|
|
13319
13948
|
}, [capturedFile, onCapture, onOpenChange]);
|
|
13320
|
-
const handleClose =
|
|
13949
|
+
const handleClose = React49__namespace.useCallback(() => {
|
|
13321
13950
|
stopCamera();
|
|
13322
13951
|
detection.stopDetection();
|
|
13323
13952
|
if (previewUrl) {
|
|
@@ -13469,13 +14098,13 @@ function useFileUpload({
|
|
|
13469
14098
|
multiple = false,
|
|
13470
14099
|
onValidationError
|
|
13471
14100
|
} = {}) {
|
|
13472
|
-
const [files, setFiles] =
|
|
13473
|
-
|
|
14101
|
+
const [files, setFiles] = React49__namespace.useState([]);
|
|
14102
|
+
React49__namespace.useEffect(() => {
|
|
13474
14103
|
return () => {
|
|
13475
14104
|
files.forEach((f) => URL.revokeObjectURL(f.previewUrl));
|
|
13476
14105
|
};
|
|
13477
14106
|
}, []);
|
|
13478
|
-
const addFiles =
|
|
14107
|
+
const addFiles = React49__namespace.useCallback(
|
|
13479
14108
|
(fileList, source = "upload") => {
|
|
13480
14109
|
const newFiles = [];
|
|
13481
14110
|
const errors = [];
|
|
@@ -13507,7 +14136,7 @@ function useFileUpload({
|
|
|
13507
14136
|
},
|
|
13508
14137
|
[acceptedFileTypes, maxFileSizeMb, multiple, onValidationError]
|
|
13509
14138
|
);
|
|
13510
|
-
const addFile =
|
|
14139
|
+
const addFile = React49__namespace.useCallback(
|
|
13511
14140
|
(file, source = "upload") => {
|
|
13512
14141
|
const dataTransfer = new DataTransfer();
|
|
13513
14142
|
dataTransfer.items.add(file);
|
|
@@ -13515,7 +14144,7 @@ function useFileUpload({
|
|
|
13515
14144
|
},
|
|
13516
14145
|
[addFiles]
|
|
13517
14146
|
);
|
|
13518
|
-
const removeFile =
|
|
14147
|
+
const removeFile = React49__namespace.useCallback((id) => {
|
|
13519
14148
|
setFiles((prev) => {
|
|
13520
14149
|
const fileToRemove = prev.find((f) => f.id === id);
|
|
13521
14150
|
if (fileToRemove) {
|
|
@@ -13524,13 +14153,13 @@ function useFileUpload({
|
|
|
13524
14153
|
return prev.filter((f) => f.id !== id);
|
|
13525
14154
|
});
|
|
13526
14155
|
}, []);
|
|
13527
|
-
const clearFiles =
|
|
14156
|
+
const clearFiles = React49__namespace.useCallback(() => {
|
|
13528
14157
|
setFiles((prev) => {
|
|
13529
14158
|
prev.forEach((f) => URL.revokeObjectURL(f.previewUrl));
|
|
13530
14159
|
return [];
|
|
13531
14160
|
});
|
|
13532
14161
|
}, []);
|
|
13533
|
-
const getFiles =
|
|
14162
|
+
const getFiles = React49__namespace.useCallback(() => {
|
|
13534
14163
|
return files.map((f) => f.file);
|
|
13535
14164
|
}, [files]);
|
|
13536
14165
|
return {
|
|
@@ -13558,12 +14187,12 @@ function DocumentScanner({
|
|
|
13558
14187
|
onValidationError,
|
|
13559
14188
|
onStateChange
|
|
13560
14189
|
}) {
|
|
13561
|
-
const [state, setState] =
|
|
13562
|
-
const [error, setError] =
|
|
13563
|
-
const [isWebcamOpen, setIsWebcamOpen] =
|
|
13564
|
-
const [validationErrors, setValidationErrors] =
|
|
14190
|
+
const [state, setState] = React49__namespace.useState("idle");
|
|
14191
|
+
const [error, setError] = React49__namespace.useState(null);
|
|
14192
|
+
const [isWebcamOpen, setIsWebcamOpen] = React49__namespace.useState(false);
|
|
14193
|
+
const [validationErrors, setValidationErrors] = React49__namespace.useState([]);
|
|
13565
14194
|
const isMobile = chunkFSBFQBNE_cjs.useIsMobile();
|
|
13566
|
-
const cameraInputRef =
|
|
14195
|
+
const cameraInputRef = React49__namespace.useRef(null);
|
|
13567
14196
|
const {
|
|
13568
14197
|
files,
|
|
13569
14198
|
addFiles,
|
|
@@ -13581,17 +14210,17 @@ function DocumentScanner({
|
|
|
13581
14210
|
onValidationError?.(errors);
|
|
13582
14211
|
}
|
|
13583
14212
|
});
|
|
13584
|
-
|
|
14213
|
+
React49__namespace.useEffect(() => {
|
|
13585
14214
|
onStateChange?.(state);
|
|
13586
14215
|
}, [state, onStateChange]);
|
|
13587
|
-
|
|
14216
|
+
React49__namespace.useEffect(() => {
|
|
13588
14217
|
if (hasFiles && state === "idle") {
|
|
13589
14218
|
setState("preview");
|
|
13590
14219
|
} else if (!hasFiles && state === "preview") {
|
|
13591
14220
|
setState("idle");
|
|
13592
14221
|
}
|
|
13593
14222
|
}, [hasFiles, state]);
|
|
13594
|
-
const handleFilesSelected =
|
|
14223
|
+
const handleFilesSelected = React49__namespace.useCallback(
|
|
13595
14224
|
(fileList) => {
|
|
13596
14225
|
setError(null);
|
|
13597
14226
|
setValidationErrors([]);
|
|
@@ -13599,10 +14228,10 @@ function DocumentScanner({
|
|
|
13599
14228
|
},
|
|
13600
14229
|
[addFiles]
|
|
13601
14230
|
);
|
|
13602
|
-
const handleCameraCapture =
|
|
14231
|
+
const handleCameraCapture = React49__namespace.useCallback(() => {
|
|
13603
14232
|
cameraInputRef.current?.click();
|
|
13604
14233
|
}, []);
|
|
13605
|
-
const handleCameraInputChange =
|
|
14234
|
+
const handleCameraInputChange = React49__namespace.useCallback(
|
|
13606
14235
|
(e) => {
|
|
13607
14236
|
if (e.target.files && e.target.files.length > 0) {
|
|
13608
14237
|
setError(null);
|
|
@@ -13613,7 +14242,7 @@ function DocumentScanner({
|
|
|
13613
14242
|
},
|
|
13614
14243
|
[addFiles]
|
|
13615
14244
|
);
|
|
13616
|
-
const handleWebcamCapture =
|
|
14245
|
+
const handleWebcamCapture = React49__namespace.useCallback(
|
|
13617
14246
|
(file) => {
|
|
13618
14247
|
setError(null);
|
|
13619
14248
|
setValidationErrors([]);
|
|
@@ -13621,7 +14250,7 @@ function DocumentScanner({
|
|
|
13621
14250
|
},
|
|
13622
14251
|
[addFile]
|
|
13623
14252
|
);
|
|
13624
|
-
const handleScan =
|
|
14253
|
+
const handleScan = React49__namespace.useCallback(async () => {
|
|
13625
14254
|
if (!hasFiles) return;
|
|
13626
14255
|
try {
|
|
13627
14256
|
setState("processing");
|
|
@@ -13640,11 +14269,11 @@ function DocumentScanner({
|
|
|
13640
14269
|
setError(errorMessage);
|
|
13641
14270
|
}
|
|
13642
14271
|
}, [hasFiles, getFiles, onScan, onResult, clearFiles]);
|
|
13643
|
-
const handleRetry =
|
|
14272
|
+
const handleRetry = React49__namespace.useCallback(() => {
|
|
13644
14273
|
setState("preview");
|
|
13645
14274
|
setError(null);
|
|
13646
14275
|
}, []);
|
|
13647
|
-
const handleClearAll =
|
|
14276
|
+
const handleClearAll = React49__namespace.useCallback(() => {
|
|
13648
14277
|
clearFiles();
|
|
13649
14278
|
setError(null);
|
|
13650
14279
|
setValidationErrors([]);
|
|
@@ -13957,10 +14586,10 @@ function useDropzone({
|
|
|
13957
14586
|
multiple = false,
|
|
13958
14587
|
disabled = false
|
|
13959
14588
|
}) {
|
|
13960
|
-
const [isDragging, setIsDragging] =
|
|
13961
|
-
const inputRef =
|
|
13962
|
-
const dragCounter =
|
|
13963
|
-
const handleDragEnter =
|
|
14589
|
+
const [isDragging, setIsDragging] = React49__namespace.useState(false);
|
|
14590
|
+
const inputRef = React49__namespace.useRef(null);
|
|
14591
|
+
const dragCounter = React49__namespace.useRef(0);
|
|
14592
|
+
const handleDragEnter = React49__namespace.useCallback(
|
|
13964
14593
|
(e) => {
|
|
13965
14594
|
e.preventDefault();
|
|
13966
14595
|
e.stopPropagation();
|
|
@@ -13972,11 +14601,11 @@ function useDropzone({
|
|
|
13972
14601
|
},
|
|
13973
14602
|
[disabled]
|
|
13974
14603
|
);
|
|
13975
|
-
const handleDragOver =
|
|
14604
|
+
const handleDragOver = React49__namespace.useCallback((e) => {
|
|
13976
14605
|
e.preventDefault();
|
|
13977
14606
|
e.stopPropagation();
|
|
13978
14607
|
}, []);
|
|
13979
|
-
const handleDragLeave =
|
|
14608
|
+
const handleDragLeave = React49__namespace.useCallback((e) => {
|
|
13980
14609
|
e.preventDefault();
|
|
13981
14610
|
e.stopPropagation();
|
|
13982
14611
|
dragCounter.current--;
|
|
@@ -13984,7 +14613,7 @@ function useDropzone({
|
|
|
13984
14613
|
setIsDragging(false);
|
|
13985
14614
|
}
|
|
13986
14615
|
}, []);
|
|
13987
|
-
const handleDrop =
|
|
14616
|
+
const handleDrop = React49__namespace.useCallback(
|
|
13988
14617
|
(e) => {
|
|
13989
14618
|
e.preventDefault();
|
|
13990
14619
|
e.stopPropagation();
|
|
@@ -13998,7 +14627,7 @@ function useDropzone({
|
|
|
13998
14627
|
},
|
|
13999
14628
|
[disabled, multiple, onDrop]
|
|
14000
14629
|
);
|
|
14001
|
-
const handleInputChange =
|
|
14630
|
+
const handleInputChange = React49__namespace.useCallback(
|
|
14002
14631
|
(e) => {
|
|
14003
14632
|
const files = e.target.files ? Array.from(e.target.files) : [];
|
|
14004
14633
|
if (files.length > 0) {
|
|
@@ -14008,7 +14637,7 @@ function useDropzone({
|
|
|
14008
14637
|
},
|
|
14009
14638
|
[onDrop]
|
|
14010
14639
|
);
|
|
14011
|
-
const open =
|
|
14640
|
+
const open = React49__namespace.useCallback(() => {
|
|
14012
14641
|
if (!disabled) {
|
|
14013
14642
|
inputRef.current?.click();
|
|
14014
14643
|
}
|
|
@@ -14058,7 +14687,7 @@ function ClaimProviderForm({
|
|
|
14058
14687
|
termsUrl = "/terms",
|
|
14059
14688
|
className = ""
|
|
14060
14689
|
}) {
|
|
14061
|
-
const [formData, setFormData] =
|
|
14690
|
+
const [formData, setFormData] = React49__namespace.useState({
|
|
14062
14691
|
firstName: "",
|
|
14063
14692
|
lastName: "",
|
|
14064
14693
|
email: "",
|
|
@@ -14361,14 +14990,14 @@ function CreateInvoiceModal({
|
|
|
14361
14990
|
initialStep = 1,
|
|
14362
14991
|
initialEmployerId = ""
|
|
14363
14992
|
}) {
|
|
14364
|
-
const [step, setStep] =
|
|
14365
|
-
const [employerId, setEmployerId] =
|
|
14366
|
-
const [selectedOrders, setSelectedOrders] =
|
|
14993
|
+
const [step, setStep] = React49__namespace.useState(initialStep);
|
|
14994
|
+
const [employerId, setEmployerId] = React49__namespace.useState(initialEmployerId);
|
|
14995
|
+
const [selectedOrders, setSelectedOrders] = React49__namespace.useState(
|
|
14367
14996
|
/* @__PURE__ */ new Set()
|
|
14368
14997
|
);
|
|
14369
|
-
const [dueDate, setDueDate] =
|
|
14370
|
-
const [notes, setNotes] =
|
|
14371
|
-
|
|
14998
|
+
const [dueDate, setDueDate] = React49__namespace.useState("");
|
|
14999
|
+
const [notes, setNotes] = React49__namespace.useState("");
|
|
15000
|
+
React49__namespace.useEffect(() => {
|
|
14372
15001
|
if (!open) {
|
|
14373
15002
|
setStep(initialStep);
|
|
14374
15003
|
setEmployerId(initialEmployerId);
|
|
@@ -14377,7 +15006,7 @@ function CreateInvoiceModal({
|
|
|
14377
15006
|
setNotes("");
|
|
14378
15007
|
}
|
|
14379
15008
|
}, [open, initialStep, initialEmployerId]);
|
|
14380
|
-
|
|
15009
|
+
React49__namespace.useEffect(() => {
|
|
14381
15010
|
if (!dueDate && open) {
|
|
14382
15011
|
const date = /* @__PURE__ */ new Date();
|
|
14383
15012
|
date.setDate(date.getDate() + defaultDueDays);
|
|
@@ -14800,14 +15429,14 @@ function CreateReferralModal({
|
|
|
14800
15429
|
errorMessage,
|
|
14801
15430
|
currency = "$"
|
|
14802
15431
|
}) {
|
|
14803
|
-
const [selectedServices, setSelectedServices] =
|
|
15432
|
+
const [selectedServices, setSelectedServices] = React49__namespace.useState(
|
|
14804
15433
|
/* @__PURE__ */ new Set()
|
|
14805
15434
|
);
|
|
14806
|
-
const [notes, setNotes] =
|
|
14807
|
-
const [priority, setPriority] =
|
|
15435
|
+
const [notes, setNotes] = React49__namespace.useState("");
|
|
15436
|
+
const [priority, setPriority] = React49__namespace.useState(
|
|
14808
15437
|
"normal"
|
|
14809
15438
|
);
|
|
14810
|
-
|
|
15439
|
+
React49__namespace.useEffect(() => {
|
|
14811
15440
|
if (!open) {
|
|
14812
15441
|
setSelectedServices(/* @__PURE__ */ new Set());
|
|
14813
15442
|
setNotes("");
|
|
@@ -15108,15 +15737,15 @@ function EditUserRoleModal({
|
|
|
15108
15737
|
isSubmitting = false,
|
|
15109
15738
|
errorMessage
|
|
15110
15739
|
}) {
|
|
15111
|
-
const [selectedRoleId, setSelectedRoleId] =
|
|
15740
|
+
const [selectedRoleId, setSelectedRoleId] = React49__namespace.useState(
|
|
15112
15741
|
user?.currentRoleId || ""
|
|
15113
15742
|
);
|
|
15114
|
-
|
|
15743
|
+
React49__namespace.useEffect(() => {
|
|
15115
15744
|
if (user?.currentRoleId) {
|
|
15116
15745
|
setSelectedRoleId(user.currentRoleId);
|
|
15117
15746
|
}
|
|
15118
15747
|
}, [user?.currentRoleId]);
|
|
15119
|
-
|
|
15748
|
+
React49__namespace.useEffect(() => {
|
|
15120
15749
|
if (!open && user?.currentRoleId) {
|
|
15121
15750
|
setSelectedRoleId(user.currentRoleId);
|
|
15122
15751
|
}
|
|
@@ -15287,24 +15916,24 @@ function EmployeeForm({
|
|
|
15287
15916
|
emailRequired = "Email is required",
|
|
15288
15917
|
dobRequired = "Date of birth is required"
|
|
15289
15918
|
} = labels;
|
|
15290
|
-
const [firstName, setFirstName] =
|
|
15291
|
-
const [lastName, setLastName] =
|
|
15292
|
-
const [email, setEmail] =
|
|
15293
|
-
const [dob, setDob] =
|
|
15294
|
-
const [selectedDepartments, setSelectedDepartments] =
|
|
15295
|
-
const [title, setTitle] =
|
|
15296
|
-
const [address, setAddress] =
|
|
15919
|
+
const [firstName, setFirstName] = React49__namespace.useState(initialData.firstName ?? "");
|
|
15920
|
+
const [lastName, setLastName] = React49__namespace.useState(initialData.lastName ?? "");
|
|
15921
|
+
const [email, setEmail] = React49__namespace.useState(initialData.email ?? "");
|
|
15922
|
+
const [dob, setDob] = React49__namespace.useState(initialData.dob ?? "");
|
|
15923
|
+
const [selectedDepartments, setSelectedDepartments] = React49__namespace.useState(initialData.departments ?? []);
|
|
15924
|
+
const [title, setTitle] = React49__namespace.useState(initialData.title ?? "");
|
|
15925
|
+
const [address, setAddress] = React49__namespace.useState(
|
|
15297
15926
|
initialData.address ?? {}
|
|
15298
15927
|
);
|
|
15299
|
-
const [phones, setPhones] =
|
|
15928
|
+
const [phones, setPhones] = React49__namespace.useState(
|
|
15300
15929
|
initialData.phones ?? [{ number: "", type: "cell" }]
|
|
15301
15930
|
);
|
|
15302
|
-
const [isActive, setIsActive] =
|
|
15303
|
-
const [additionalInfo, setAdditionalInfo] =
|
|
15931
|
+
const [isActive, setIsActive] = React49__namespace.useState(initialData.isActive ?? true);
|
|
15932
|
+
const [additionalInfo, setAdditionalInfo] = React49__namespace.useState(
|
|
15304
15933
|
initialData.additionalInfo ?? ""
|
|
15305
15934
|
);
|
|
15306
|
-
const [sendInvite, setSendInvite] =
|
|
15307
|
-
const [errors, setErrors] =
|
|
15935
|
+
const [sendInvite, setSendInvite] = React49__namespace.useState(false);
|
|
15936
|
+
const [errors, setErrors] = React49__namespace.useState({});
|
|
15308
15937
|
const validate = () => {
|
|
15309
15938
|
const newErrors = {};
|
|
15310
15939
|
if (!firstName.trim()) newErrors.firstName = firstNameRequired;
|
|
@@ -15723,8 +16352,8 @@ function EmployeeProfileCard({
|
|
|
15723
16352
|
className,
|
|
15724
16353
|
labels = {}
|
|
15725
16354
|
}) {
|
|
15726
|
-
const [isExpanded, setIsExpanded] =
|
|
15727
|
-
const fileInputRef =
|
|
16355
|
+
const [isExpanded, setIsExpanded] = React49__namespace.useState(defaultExpanded);
|
|
16356
|
+
const fileInputRef = React49__namespace.useRef(null);
|
|
15728
16357
|
const {
|
|
15729
16358
|
moreDetails = "more details",
|
|
15730
16359
|
lessDetails = "less details",
|
|
@@ -16257,13 +16886,13 @@ function EmployerList({
|
|
|
16257
16886
|
emptyMessage = "No employers linked yet",
|
|
16258
16887
|
className = ""
|
|
16259
16888
|
}) {
|
|
16260
|
-
const [searchQuery, setSearchQuery] =
|
|
16889
|
+
const [searchQuery, setSearchQuery] = React49__namespace.useState("");
|
|
16261
16890
|
const handleSearch = (e) => {
|
|
16262
16891
|
const query = e.target.value;
|
|
16263
16892
|
setSearchQuery(query);
|
|
16264
16893
|
onSearch?.(query);
|
|
16265
16894
|
};
|
|
16266
|
-
const filteredEmployers =
|
|
16895
|
+
const filteredEmployers = React49__namespace.useMemo(() => {
|
|
16267
16896
|
if (!searchQuery.trim()) return employers;
|
|
16268
16897
|
const q = searchQuery.toLowerCase();
|
|
16269
16898
|
return employers.filter(
|
|
@@ -16912,7 +17541,7 @@ function EmployerServiceModal({
|
|
|
16912
17541
|
isSubmitting = false,
|
|
16913
17542
|
errorMessage
|
|
16914
17543
|
}) {
|
|
16915
|
-
const [config, setConfig] =
|
|
17544
|
+
const [config, setConfig] = React49__namespace.useState({
|
|
16916
17545
|
serviceId: service?.id || "",
|
|
16917
17546
|
employerId: employer?.id || "",
|
|
16918
17547
|
customPrice: existingConfig?.customPrice,
|
|
@@ -16924,7 +17553,7 @@ function EmployerServiceModal({
|
|
|
16924
17553
|
notes: existingConfig?.notes,
|
|
16925
17554
|
billingCode: existingConfig?.billingCode
|
|
16926
17555
|
});
|
|
16927
|
-
|
|
17556
|
+
React49__namespace.useEffect(() => {
|
|
16928
17557
|
setConfig({
|
|
16929
17558
|
serviceId: service?.id || "",
|
|
16930
17559
|
employerId: employer?.id || "",
|
|
@@ -17801,8 +18430,8 @@ function FileManager({
|
|
|
17801
18430
|
errorMessage,
|
|
17802
18431
|
className = ""
|
|
17803
18432
|
}) {
|
|
17804
|
-
const [isDragging, setIsDragging] =
|
|
17805
|
-
const fileInputRef =
|
|
18433
|
+
const [isDragging, setIsDragging] = React49__namespace.useState(false);
|
|
18434
|
+
const fileInputRef = React49__namespace.useRef(null);
|
|
17806
18435
|
const hasActions = !!(onPreview || onDownload || onDelete);
|
|
17807
18436
|
const handleDragOver = (e) => {
|
|
17808
18437
|
e.preventDefault();
|
|
@@ -17987,10 +18616,10 @@ function FileRowActionMenu({
|
|
|
17987
18616
|
onDownload,
|
|
17988
18617
|
onDelete
|
|
17989
18618
|
}) {
|
|
17990
|
-
const [open, setOpen] =
|
|
17991
|
-
const menuRef =
|
|
17992
|
-
const buttonRef =
|
|
17993
|
-
|
|
18619
|
+
const [open, setOpen] = React49__namespace.useState(false);
|
|
18620
|
+
const menuRef = React49__namespace.useRef(null);
|
|
18621
|
+
const buttonRef = React49__namespace.useRef(null);
|
|
18622
|
+
React49__namespace.useEffect(() => {
|
|
17994
18623
|
if (!open) return;
|
|
17995
18624
|
function handleClick(e) {
|
|
17996
18625
|
if (menuRef.current && !menuRef.current.contains(e.target) && buttonRef.current && !buttonRef.current.contains(e.target)) {
|
|
@@ -18000,7 +18629,7 @@ function FileRowActionMenu({
|
|
|
18000
18629
|
document.addEventListener("mousedown", handleClick);
|
|
18001
18630
|
return () => document.removeEventListener("mousedown", handleClick);
|
|
18002
18631
|
}, [open]);
|
|
18003
|
-
|
|
18632
|
+
React49__namespace.useEffect(() => {
|
|
18004
18633
|
if (!open) return;
|
|
18005
18634
|
function handleKey(e) {
|
|
18006
18635
|
if (e.key === "Escape") setOpen(false);
|
|
@@ -18008,8 +18637,8 @@ function FileRowActionMenu({
|
|
|
18008
18637
|
document.addEventListener("keydown", handleKey);
|
|
18009
18638
|
return () => document.removeEventListener("keydown", handleKey);
|
|
18010
18639
|
}, [open]);
|
|
18011
|
-
const [menuPos, setMenuPos] =
|
|
18012
|
-
|
|
18640
|
+
const [menuPos, setMenuPos] = React49__namespace.useState(null);
|
|
18641
|
+
React49__namespace.useLayoutEffect(() => {
|
|
18013
18642
|
if (!open || !buttonRef.current) return;
|
|
18014
18643
|
function updatePosition() {
|
|
18015
18644
|
if (!buttonRef.current) return;
|
|
@@ -18129,14 +18758,14 @@ function HelpSupportPanel({
|
|
|
18129
18758
|
successMessage,
|
|
18130
18759
|
className = ""
|
|
18131
18760
|
}) {
|
|
18132
|
-
const [searchTerm, setSearchTerm] =
|
|
18133
|
-
const [expandedFaq, setExpandedFaq] =
|
|
18134
|
-
const [formData, setFormData] =
|
|
18761
|
+
const [searchTerm, setSearchTerm] = React49__namespace.useState("");
|
|
18762
|
+
const [expandedFaq, setExpandedFaq] = React49__namespace.useState(null);
|
|
18763
|
+
const [formData, setFormData] = React49__namespace.useState({
|
|
18135
18764
|
subject: "",
|
|
18136
18765
|
message: "",
|
|
18137
18766
|
email: ""
|
|
18138
18767
|
});
|
|
18139
|
-
const [showSuccess, setShowSuccess] =
|
|
18768
|
+
const [showSuccess, setShowSuccess] = React49__namespace.useState(false);
|
|
18140
18769
|
const filteredFaqs = faqs.filter(
|
|
18141
18770
|
(faq) => faq.question.toLowerCase().includes(searchTerm.toLowerCase()) || faq.answer.toLowerCase().includes(searchTerm.toLowerCase())
|
|
18142
18771
|
);
|
|
@@ -18608,7 +19237,7 @@ function HRISProviderSelector({
|
|
|
18608
19237
|
syncPending = "We are still waiting on data from your HRIS Provider. Please check back later.",
|
|
18609
19238
|
supportEmail = "support@bluehive.com"
|
|
18610
19239
|
} = labels;
|
|
18611
|
-
const filteredProviders =
|
|
19240
|
+
const filteredProviders = React49__namespace.useMemo(() => {
|
|
18612
19241
|
if (!searchQuery.trim()) return providers;
|
|
18613
19242
|
const query = searchQuery.toLowerCase();
|
|
18614
19243
|
return providers.filter((p) => p.displayName.toLowerCase().includes(query));
|
|
@@ -18895,11 +19524,11 @@ function InventoryManager({
|
|
|
18895
19524
|
isLoading = false,
|
|
18896
19525
|
className = ""
|
|
18897
19526
|
}) {
|
|
18898
|
-
const [updateType, setUpdateType] =
|
|
19527
|
+
const [updateType, setUpdateType] = React49__namespace.useState(
|
|
18899
19528
|
"credit"
|
|
18900
19529
|
);
|
|
18901
|
-
const [updateAmount, setUpdateAmount] =
|
|
18902
|
-
const [updateMemo, setUpdateMemo] =
|
|
19530
|
+
const [updateAmount, setUpdateAmount] = React49__namespace.useState("");
|
|
19531
|
+
const [updateMemo, setUpdateMemo] = React49__namespace.useState("");
|
|
18903
19532
|
const handleSubmit = () => {
|
|
18904
19533
|
if (!updateAmount || !onUpdateSubmit) return;
|
|
18905
19534
|
const amount = parseInt(updateAmount, 10);
|
|
@@ -18965,7 +19594,7 @@ function InventoryManager({
|
|
|
18965
19594
|
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "text-muted-foreground py-2 text-left text-xs font-medium tracking-wider uppercase", children: "Change" }),
|
|
18966
19595
|
/* @__PURE__ */ jsxRuntime.jsx("th", { className: "text-muted-foreground py-2 text-right text-xs font-medium tracking-wider uppercase", children: "Quantity" })
|
|
18967
19596
|
] }) }),
|
|
18968
|
-
/* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-border/50 divide-y", children: logEntries.map((entry) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19597
|
+
/* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-border/50 divide-y", children: logEntries.map((entry) => /* @__PURE__ */ jsxRuntime.jsxs(React49__namespace.Fragment, { children: [
|
|
18969
19598
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
18970
19599
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18971
19600
|
"td",
|
|
@@ -19199,12 +19828,12 @@ function InviteUserModal({
|
|
|
19199
19828
|
errorMessage,
|
|
19200
19829
|
successMessage
|
|
19201
19830
|
}) {
|
|
19202
|
-
const [email, setEmail] =
|
|
19203
|
-
const [firstName, setFirstName] =
|
|
19204
|
-
const [lastName, setLastName] =
|
|
19205
|
-
const [roleId, setRoleId] =
|
|
19206
|
-
const [message, setMessage] =
|
|
19207
|
-
|
|
19831
|
+
const [email, setEmail] = React49__namespace.useState("");
|
|
19832
|
+
const [firstName, setFirstName] = React49__namespace.useState("");
|
|
19833
|
+
const [lastName, setLastName] = React49__namespace.useState("");
|
|
19834
|
+
const [roleId, setRoleId] = React49__namespace.useState(defaultRoleId || "");
|
|
19835
|
+
const [message, setMessage] = React49__namespace.useState("");
|
|
19836
|
+
React49__namespace.useEffect(() => {
|
|
19208
19837
|
if (!open) {
|
|
19209
19838
|
setEmail("");
|
|
19210
19839
|
setFirstName("");
|
|
@@ -19444,7 +20073,7 @@ function InvoiceList({
|
|
|
19444
20073
|
currency = "$",
|
|
19445
20074
|
className = ""
|
|
19446
20075
|
}) {
|
|
19447
|
-
const [searchQuery, setSearchQuery] =
|
|
20076
|
+
const [searchQuery, setSearchQuery] = React49__namespace.useState("");
|
|
19448
20077
|
const handleSearch = (e) => {
|
|
19449
20078
|
const query = e.target.value;
|
|
19450
20079
|
setSearchQuery(query);
|
|
@@ -19481,7 +20110,7 @@ function InvoiceList({
|
|
|
19481
20110
|
{ value: "overdue", label: "Overdue" },
|
|
19482
20111
|
{ value: "cancelled", label: "Cancelled" }
|
|
19483
20112
|
];
|
|
19484
|
-
const filteredInvoices =
|
|
20113
|
+
const filteredInvoices = React49__namespace.useMemo(() => {
|
|
19485
20114
|
let result = invoices;
|
|
19486
20115
|
if (statusFilter !== "all") {
|
|
19487
20116
|
result = result.filter((inv) => inv.status === statusFilter);
|
|
@@ -19494,7 +20123,7 @@ function InvoiceList({
|
|
|
19494
20123
|
}
|
|
19495
20124
|
return result;
|
|
19496
20125
|
}, [invoices, statusFilter, searchQuery]);
|
|
19497
|
-
const totals =
|
|
20126
|
+
const totals = React49__namespace.useMemo(() => {
|
|
19498
20127
|
return {
|
|
19499
20128
|
total: filteredInvoices.reduce((sum, inv) => sum + inv.amount, 0),
|
|
19500
20129
|
paid: filteredInvoices.filter((inv) => inv.status === "paid").reduce((sum, inv) => sum + inv.amount, 0),
|
|
@@ -19718,16 +20347,16 @@ function InvoicePaymentPage({
|
|
|
19718
20347
|
showStripeBranding = true,
|
|
19719
20348
|
className = ""
|
|
19720
20349
|
}) {
|
|
19721
|
-
const [paymentMethod, setPaymentMethod] =
|
|
20350
|
+
const [paymentMethod, setPaymentMethod] = React49__namespace.useState(
|
|
19722
20351
|
acceptedMethods[0] || "card"
|
|
19723
20352
|
);
|
|
19724
|
-
const [name, setName] =
|
|
19725
|
-
const [email, setEmail] =
|
|
19726
|
-
const [cardNumber, setCardNumber] =
|
|
19727
|
-
const [expiry, setExpiry] =
|
|
19728
|
-
const [cvc, setCvc] =
|
|
19729
|
-
const [routingNumber, setRoutingNumber] =
|
|
19730
|
-
const [accountNumber, setAccountNumber] =
|
|
20353
|
+
const [name, setName] = React49__namespace.useState("");
|
|
20354
|
+
const [email, setEmail] = React49__namespace.useState("");
|
|
20355
|
+
const [cardNumber, setCardNumber] = React49__namespace.useState("");
|
|
20356
|
+
const [expiry, setExpiry] = React49__namespace.useState("");
|
|
20357
|
+
const [cvc, setCvc] = React49__namespace.useState("");
|
|
20358
|
+
const [routingNumber, setRoutingNumber] = React49__namespace.useState("");
|
|
20359
|
+
const [accountNumber, setAccountNumber] = React49__namespace.useState("");
|
|
19731
20360
|
const formatCurrency3 = (amount) => {
|
|
19732
20361
|
return `${currency}${amount.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
|
|
19733
20362
|
};
|
|
@@ -20532,10 +21161,10 @@ function LanguageSelector({
|
|
|
20532
21161
|
disabled = false,
|
|
20533
21162
|
className
|
|
20534
21163
|
}) {
|
|
20535
|
-
const [isOpen, setIsOpen] =
|
|
20536
|
-
const containerRef =
|
|
21164
|
+
const [isOpen, setIsOpen] = React49__namespace.useState(false);
|
|
21165
|
+
const containerRef = React49__namespace.useRef(null);
|
|
20537
21166
|
const selectedLanguage = languages.find((l) => l.code === value);
|
|
20538
|
-
|
|
21167
|
+
React49__namespace.useEffect(() => {
|
|
20539
21168
|
const handleClickOutside = (e) => {
|
|
20540
21169
|
if (containerRef.current && !containerRef.current.contains(e.target)) {
|
|
20541
21170
|
setIsOpen(false);
|
|
@@ -20544,7 +21173,7 @@ function LanguageSelector({
|
|
|
20544
21173
|
document.addEventListener("mousedown", handleClickOutside);
|
|
20545
21174
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
20546
21175
|
}, []);
|
|
20547
|
-
|
|
21176
|
+
React49__namespace.useEffect(() => {
|
|
20548
21177
|
const handleEscape = (e) => {
|
|
20549
21178
|
if (e.key === "Escape") setIsOpen(false);
|
|
20550
21179
|
};
|
|
@@ -21076,7 +21705,7 @@ function formatLastSeen(date) {
|
|
|
21076
21705
|
if (diffDays < 7) return `${diffDays}d ago`;
|
|
21077
21706
|
return date.toLocaleDateString();
|
|
21078
21707
|
}
|
|
21079
|
-
var ConversationHeader =
|
|
21708
|
+
var ConversationHeader = React49__namespace.forwardRef(
|
|
21080
21709
|
({
|
|
21081
21710
|
className,
|
|
21082
21711
|
size,
|
|
@@ -21198,7 +21827,7 @@ var ConversationHeader = React48__namespace.forwardRef(
|
|
|
21198
21827
|
}
|
|
21199
21828
|
);
|
|
21200
21829
|
ConversationHeader.displayName = "ConversationHeader";
|
|
21201
|
-
var ConversationListItem =
|
|
21830
|
+
var ConversationListItem = React49__namespace.forwardRef(({ className, conversation, isSelected, onSelect, ...props }, ref) => {
|
|
21202
21831
|
const participant = conversation.participants.find((p) => !p.isCurrentUser);
|
|
21203
21832
|
const title = getConversationTitle(conversation, participant);
|
|
21204
21833
|
const avatarUrl = conversation.avatarUrl || participant?.avatarUrl;
|
|
@@ -21406,7 +22035,7 @@ function ConversationListSkeleton({
|
|
|
21406
22035
|
}
|
|
21407
22036
|
ConversationListSkeleton.displayName = "ConversationListSkeleton";
|
|
21408
22037
|
function LightboxModal({ attachment, onClose }) {
|
|
21409
|
-
|
|
22038
|
+
React49__namespace.useEffect(() => {
|
|
21410
22039
|
const handleKeyDown = (event) => {
|
|
21411
22040
|
if (event.key === "Escape") {
|
|
21412
22041
|
onClose();
|
|
@@ -21503,7 +22132,7 @@ function LightboxModal({ attachment, onClose }) {
|
|
|
21503
22132
|
);
|
|
21504
22133
|
}
|
|
21505
22134
|
LightboxModal.displayName = "LightboxModal";
|
|
21506
|
-
var MessageThread =
|
|
22135
|
+
var MessageThread = React49__namespace.forwardRef(
|
|
21507
22136
|
({
|
|
21508
22137
|
conversation,
|
|
21509
22138
|
messages,
|
|
@@ -21534,8 +22163,8 @@ var MessageThread = React48__namespace.forwardRef(
|
|
|
21534
22163
|
onError,
|
|
21535
22164
|
className
|
|
21536
22165
|
}, ref) => {
|
|
21537
|
-
const [lightboxAttachment, setLightboxAttachment] =
|
|
21538
|
-
const [replyTo, setReplyTo] =
|
|
22166
|
+
const [lightboxAttachment, setLightboxAttachment] = React49__namespace.useState(null);
|
|
22167
|
+
const [replyTo, setReplyTo] = React49__namespace.useState(null);
|
|
21539
22168
|
const participant = conversation?.type === "direct" ? conversation.participants.find((p) => p.id !== currentUser.id) : void 0;
|
|
21540
22169
|
const handleAttachmentClick = (attachment, message) => {
|
|
21541
22170
|
if (attachment.type === "image" || attachment.type === "video") {
|
|
@@ -21707,13 +22336,13 @@ function useMessages(options) {
|
|
|
21707
22336
|
onRetry,
|
|
21708
22337
|
onLoadMore
|
|
21709
22338
|
} = options;
|
|
21710
|
-
const [messages, setMessages] =
|
|
21711
|
-
const [isSending, setIsSending] =
|
|
21712
|
-
const [isLoadingMore, setIsLoadingMore] =
|
|
21713
|
-
|
|
22339
|
+
const [messages, setMessages] = React49__namespace.useState(initialMessages);
|
|
22340
|
+
const [isSending, setIsSending] = React49__namespace.useState(false);
|
|
22341
|
+
const [isLoadingMore, setIsLoadingMore] = React49__namespace.useState(false);
|
|
22342
|
+
React49__namespace.useEffect(() => {
|
|
21714
22343
|
setMessages(initialMessages);
|
|
21715
22344
|
}, [initialMessages]);
|
|
21716
|
-
const addMessage =
|
|
22345
|
+
const addMessage = React49__namespace.useCallback((message) => {
|
|
21717
22346
|
setMessages((prev) => {
|
|
21718
22347
|
if (prev.some((m) => m.id === message.id)) {
|
|
21719
22348
|
return prev;
|
|
@@ -21721,7 +22350,7 @@ function useMessages(options) {
|
|
|
21721
22350
|
return [...prev, message];
|
|
21722
22351
|
});
|
|
21723
22352
|
}, []);
|
|
21724
|
-
const updateMessage =
|
|
22353
|
+
const updateMessage = React49__namespace.useCallback(
|
|
21725
22354
|
(messageId, updates) => {
|
|
21726
22355
|
setMessages(
|
|
21727
22356
|
(prev) => prev.map((m) => m.id === messageId ? { ...m, ...updates } : m)
|
|
@@ -21729,22 +22358,22 @@ function useMessages(options) {
|
|
|
21729
22358
|
},
|
|
21730
22359
|
[]
|
|
21731
22360
|
);
|
|
21732
|
-
const removeMessage =
|
|
22361
|
+
const removeMessage = React49__namespace.useCallback((messageId) => {
|
|
21733
22362
|
setMessages((prev) => prev.filter((m) => m.id !== messageId));
|
|
21734
22363
|
}, []);
|
|
21735
|
-
const updateStatus =
|
|
22364
|
+
const updateStatus = React49__namespace.useCallback(
|
|
21736
22365
|
(messageId, status) => {
|
|
21737
22366
|
updateMessage(messageId, { status });
|
|
21738
22367
|
},
|
|
21739
22368
|
[updateMessage]
|
|
21740
22369
|
);
|
|
21741
|
-
const markAsRead =
|
|
22370
|
+
const markAsRead = React49__namespace.useCallback(
|
|
21742
22371
|
(messageId) => {
|
|
21743
22372
|
updateStatus(messageId, "read");
|
|
21744
22373
|
},
|
|
21745
22374
|
[updateStatus]
|
|
21746
22375
|
);
|
|
21747
|
-
const sendMessage =
|
|
22376
|
+
const sendMessage = React49__namespace.useCallback(
|
|
21748
22377
|
async (newMessage) => {
|
|
21749
22378
|
const optimisticId = `optimistic-${Date.now()}`;
|
|
21750
22379
|
const optimisticMessage = {
|
|
@@ -21776,7 +22405,7 @@ function useMessages(options) {
|
|
|
21776
22405
|
},
|
|
21777
22406
|
[currentUser, onSend, addMessage, updateStatus]
|
|
21778
22407
|
);
|
|
21779
|
-
const retryMessage =
|
|
22408
|
+
const retryMessage = React49__namespace.useCallback(
|
|
21780
22409
|
async (messageId) => {
|
|
21781
22410
|
updateStatus(messageId, "sending");
|
|
21782
22411
|
try {
|
|
@@ -21790,7 +22419,7 @@ function useMessages(options) {
|
|
|
21790
22419
|
},
|
|
21791
22420
|
[onRetry, updateStatus]
|
|
21792
22421
|
);
|
|
21793
|
-
const loadMore =
|
|
22422
|
+
const loadMore = React49__namespace.useCallback(async () => {
|
|
21794
22423
|
if (isLoadingMore || !onLoadMore) return;
|
|
21795
22424
|
setIsLoadingMore(true);
|
|
21796
22425
|
try {
|
|
@@ -21821,13 +22450,13 @@ function useTypingIndicator(options = {}) {
|
|
|
21821
22450
|
onTypingStart,
|
|
21822
22451
|
onTypingStop
|
|
21823
22452
|
} = options;
|
|
21824
|
-
const [participants, setParticipants] =
|
|
21825
|
-
const [isLocalTyping, setIsLocalTyping] =
|
|
21826
|
-
const typingTimeoutRef =
|
|
21827
|
-
|
|
22453
|
+
const [participants, setParticipants] = React49__namespace.useState(initialParticipants);
|
|
22454
|
+
const [isLocalTyping, setIsLocalTyping] = React49__namespace.useState(false);
|
|
22455
|
+
const typingTimeoutRef = React49__namespace.useRef(null);
|
|
22456
|
+
React49__namespace.useEffect(() => {
|
|
21828
22457
|
setParticipants(initialParticipants);
|
|
21829
22458
|
}, [initialParticipants]);
|
|
21830
|
-
const startTyping =
|
|
22459
|
+
const startTyping = React49__namespace.useCallback(() => {
|
|
21831
22460
|
if (!isLocalTyping) {
|
|
21832
22461
|
setIsLocalTyping(true);
|
|
21833
22462
|
onTypingStart?.();
|
|
@@ -21840,21 +22469,21 @@ function useTypingIndicator(options = {}) {
|
|
|
21840
22469
|
onTypingStop?.();
|
|
21841
22470
|
}, debounceTime);
|
|
21842
22471
|
}, [isLocalTyping, debounceTime, onTypingStart, onTypingStop]);
|
|
21843
|
-
const stopTyping =
|
|
22472
|
+
const stopTyping = React49__namespace.useCallback(() => {
|
|
21844
22473
|
if (typingTimeoutRef.current) {
|
|
21845
22474
|
clearTimeout(typingTimeoutRef.current);
|
|
21846
22475
|
}
|
|
21847
22476
|
setIsLocalTyping(false);
|
|
21848
22477
|
onTypingStop?.();
|
|
21849
22478
|
}, [onTypingStop]);
|
|
21850
|
-
|
|
22479
|
+
React49__namespace.useEffect(() => {
|
|
21851
22480
|
return () => {
|
|
21852
22481
|
if (typingTimeoutRef.current) {
|
|
21853
22482
|
clearTimeout(typingTimeoutRef.current);
|
|
21854
22483
|
}
|
|
21855
22484
|
};
|
|
21856
22485
|
}, []);
|
|
21857
|
-
const typingState =
|
|
22486
|
+
const typingState = React49__namespace.useMemo(
|
|
21858
22487
|
() => ({
|
|
21859
22488
|
participants,
|
|
21860
22489
|
lastUpdated: /* @__PURE__ */ new Date()
|
|
@@ -21870,11 +22499,11 @@ function useTypingIndicator(options = {}) {
|
|
|
21870
22499
|
}
|
|
21871
22500
|
function useMessageScroll(options) {
|
|
21872
22501
|
const { messages, currentUserId, threshold = 100 } = options;
|
|
21873
|
-
const scrollContainerRef =
|
|
21874
|
-
const bottomRef =
|
|
21875
|
-
const [isScrolledUp, setIsScrolledUp] =
|
|
21876
|
-
const prevMessageCountRef =
|
|
21877
|
-
|
|
22502
|
+
const scrollContainerRef = React49__namespace.useRef(null);
|
|
22503
|
+
const bottomRef = React49__namespace.useRef(null);
|
|
22504
|
+
const [isScrolledUp, setIsScrolledUp] = React49__namespace.useState(false);
|
|
22505
|
+
const prevMessageCountRef = React49__namespace.useRef(messages.length);
|
|
22506
|
+
React49__namespace.useEffect(() => {
|
|
21878
22507
|
const container = scrollContainerRef.current;
|
|
21879
22508
|
if (!container) return;
|
|
21880
22509
|
const handleScroll = () => {
|
|
@@ -21885,12 +22514,12 @@ function useMessageScroll(options) {
|
|
|
21885
22514
|
container.addEventListener("scroll", handleScroll);
|
|
21886
22515
|
return () => container.removeEventListener("scroll", handleScroll);
|
|
21887
22516
|
}, [threshold]);
|
|
21888
|
-
const scrollToBottom =
|
|
22517
|
+
const scrollToBottom = React49__namespace.useCallback((smooth = true) => {
|
|
21889
22518
|
bottomRef.current?.scrollIntoView({
|
|
21890
22519
|
behavior: smooth ? "smooth" : "auto"
|
|
21891
22520
|
});
|
|
21892
22521
|
}, []);
|
|
21893
|
-
|
|
22522
|
+
React49__namespace.useEffect(() => {
|
|
21894
22523
|
const messageCountChanged = messages.length !== prevMessageCountRef.current;
|
|
21895
22524
|
prevMessageCountRef.current = messages.length;
|
|
21896
22525
|
if (!messageCountChanged) return;
|
|
@@ -21909,9 +22538,9 @@ function useMessageScroll(options) {
|
|
|
21909
22538
|
}
|
|
21910
22539
|
function useReadReceipts(options) {
|
|
21911
22540
|
const { currentUserId, onMarkRead, threshold = 0.5 } = options;
|
|
21912
|
-
const observerRef =
|
|
21913
|
-
const observedMessagesRef =
|
|
21914
|
-
|
|
22541
|
+
const observerRef = React49__namespace.useRef(null);
|
|
22542
|
+
const observedMessagesRef = React49__namespace.useRef(/* @__PURE__ */ new Set());
|
|
22543
|
+
React49__namespace.useEffect(() => {
|
|
21915
22544
|
observerRef.current = new IntersectionObserver(
|
|
21916
22545
|
(entries) => {
|
|
21917
22546
|
entries.forEach((entry) => {
|
|
@@ -21930,7 +22559,7 @@ function useReadReceipts(options) {
|
|
|
21930
22559
|
observerRef.current?.disconnect();
|
|
21931
22560
|
};
|
|
21932
22561
|
}, [onMarkRead, threshold]);
|
|
21933
|
-
const observeMessage =
|
|
22562
|
+
const observeMessage = React49__namespace.useCallback(
|
|
21934
22563
|
(element, message) => {
|
|
21935
22564
|
if (!element || !observerRef.current) return;
|
|
21936
22565
|
if (message.sender.id !== currentUserId && message.status !== "read" && !observedMessagesRef.current.has(message.id)) {
|
|
@@ -22885,13 +23514,13 @@ function OrderConfirmationWizard({
|
|
|
22885
23514
|
stepTitles = ["Verify Employee", "Consent & ID", "Confirmation"],
|
|
22886
23515
|
className = ""
|
|
22887
23516
|
}) {
|
|
22888
|
-
const [step, setStep] =
|
|
22889
|
-
const [employeeVerified, setEmployeeVerified] =
|
|
22890
|
-
const [verificationNotes, setVerificationNotes] =
|
|
22891
|
-
const [consentObtained, setConsentObtained] =
|
|
22892
|
-
const [idVerified, setIdVerified] =
|
|
22893
|
-
const [idType, setIdType] =
|
|
22894
|
-
const [confirmationNotes, setConfirmationNotes] =
|
|
23517
|
+
const [step, setStep] = React49__namespace.useState(initialStep);
|
|
23518
|
+
const [employeeVerified, setEmployeeVerified] = React49__namespace.useState(false);
|
|
23519
|
+
const [verificationNotes, setVerificationNotes] = React49__namespace.useState("");
|
|
23520
|
+
const [consentObtained, setConsentObtained] = React49__namespace.useState(false);
|
|
23521
|
+
const [idVerified, setIdVerified] = React49__namespace.useState(false);
|
|
23522
|
+
const [idType, setIdType] = React49__namespace.useState("");
|
|
23523
|
+
const [confirmationNotes, setConfirmationNotes] = React49__namespace.useState("");
|
|
22895
23524
|
const handleStepChange = (newStep) => {
|
|
22896
23525
|
setStep(newStep);
|
|
22897
23526
|
onStepChange?.(newStep);
|
|
@@ -22919,7 +23548,7 @@ function OrderConfirmationWizard({
|
|
|
22919
23548
|
const stepNum = index + 1;
|
|
22920
23549
|
const isActive = step === stepNum;
|
|
22921
23550
|
const isComplete = step > stepNum;
|
|
22922
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23551
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React49__namespace.Fragment, { children: [
|
|
22923
23552
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center", children: [
|
|
22924
23553
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22925
23554
|
"div",
|
|
@@ -23504,7 +24133,7 @@ function OrderList({
|
|
|
23504
24133
|
actions,
|
|
23505
24134
|
className
|
|
23506
24135
|
}) {
|
|
23507
|
-
const filteredOrders =
|
|
24136
|
+
const filteredOrders = React49__namespace.useMemo(() => {
|
|
23508
24137
|
const activeTabConfig = tabs.find((t) => t.id === activeTab);
|
|
23509
24138
|
if (!activeTabConfig?.statuses || !getOrderStatus) {
|
|
23510
24139
|
return orders;
|
|
@@ -23513,7 +24142,7 @@ function OrderList({
|
|
|
23513
24142
|
(order) => activeTabConfig.statuses.includes(getOrderStatus(order))
|
|
23514
24143
|
);
|
|
23515
24144
|
}, [orders, activeTab, tabs, getOrderStatus]);
|
|
23516
|
-
const tabCounts =
|
|
24145
|
+
const tabCounts = React49__namespace.useMemo(() => {
|
|
23517
24146
|
if (!getOrderStatus) return {};
|
|
23518
24147
|
const counts = {};
|
|
23519
24148
|
tabs.forEach((tab) => {
|
|
@@ -23737,7 +24366,7 @@ function OrderLookupForm({
|
|
|
23737
24366
|
welcomeMessage = "Look up your order by entering the information below.",
|
|
23738
24367
|
className = ""
|
|
23739
24368
|
}) {
|
|
23740
|
-
const [formData, setFormData] =
|
|
24369
|
+
const [formData, setFormData] = React49__namespace.useState({
|
|
23741
24370
|
orderNumber: "",
|
|
23742
24371
|
dateOfBirth: "",
|
|
23743
24372
|
lastName: ""
|
|
@@ -24271,14 +24900,14 @@ function OverflowMenuItem({
|
|
|
24271
24900
|
function PatientOverflowMenu({
|
|
24272
24901
|
onAction
|
|
24273
24902
|
}) {
|
|
24274
|
-
const [open, setOpen] =
|
|
24275
|
-
const menuRef =
|
|
24903
|
+
const [open, setOpen] = React49__namespace.useState(false);
|
|
24904
|
+
const menuRef = React49__namespace.useRef(null);
|
|
24276
24905
|
chunkIKMR2ADM_cjs.useClickOutside(
|
|
24277
24906
|
menuRef,
|
|
24278
|
-
|
|
24907
|
+
React49__namespace.useCallback(() => setOpen(false), [])
|
|
24279
24908
|
);
|
|
24280
24909
|
chunkFHY3K6PL_cjs.useEscapeKey(
|
|
24281
|
-
|
|
24910
|
+
React49__namespace.useCallback(() => setOpen(false), []),
|
|
24282
24911
|
open
|
|
24283
24912
|
);
|
|
24284
24913
|
const handleAction = (action) => {
|
|
@@ -24463,7 +25092,7 @@ function AlertRow({ comments }) {
|
|
|
24463
25092
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground text-sm", children: comments.join("; ") })
|
|
24464
25093
|
] });
|
|
24465
25094
|
}
|
|
24466
|
-
var PatientHeader =
|
|
25095
|
+
var PatientHeader = React49__namespace.forwardRef(
|
|
24467
25096
|
({
|
|
24468
25097
|
patient,
|
|
24469
25098
|
allergies = [],
|
|
@@ -24492,13 +25121,13 @@ var PatientHeader = React48__namespace.forwardRef(
|
|
|
24492
25121
|
const hasComments = showCommentsBanner && comments.length > 0;
|
|
24493
25122
|
const hasProviders = showProviderBanner && !!(patient.attendingProvider || patient.familyProvider);
|
|
24494
25123
|
const hasInfoRows = hasAllergies || hasMedications || hasComments || hasProviders;
|
|
24495
|
-
const [addModalType, setAddModalType] =
|
|
24496
|
-
const [addForm, setAddForm] =
|
|
25124
|
+
const [addModalType, setAddModalType] = React49__namespace.useState(null);
|
|
25125
|
+
const [addForm, setAddForm] = React49__namespace.useState({});
|
|
24497
25126
|
const addEntityLabel = addModalType ? ADD_ENTITY_LABELS[addModalType] ?? "" : "";
|
|
24498
|
-
const [contactModalOpen, setContactModalOpen] =
|
|
24499
|
-
const [editPatientOpen, setEditPatientOpen] =
|
|
24500
|
-
const [editPatientForm, setEditPatientForm] =
|
|
24501
|
-
const handleOverflowAction =
|
|
25127
|
+
const [contactModalOpen, setContactModalOpen] = React49__namespace.useState(false);
|
|
25128
|
+
const [editPatientOpen, setEditPatientOpen] = React49__namespace.useState(false);
|
|
25129
|
+
const [editPatientForm, setEditPatientForm] = React49__namespace.useState({});
|
|
25130
|
+
const handleOverflowAction = React49__namespace.useCallback(
|
|
24502
25131
|
(action) => {
|
|
24503
25132
|
if (action === "contact") {
|
|
24504
25133
|
setContactModalOpen(true);
|
|
@@ -25979,7 +26608,7 @@ function PermissionItem({
|
|
|
25979
26608
|
parentChecked
|
|
25980
26609
|
}) {
|
|
25981
26610
|
const hasChildren = permission.children && permission.children.length > 0;
|
|
25982
|
-
const [isExpanded, setIsExpanded] =
|
|
26611
|
+
const [isExpanded, setIsExpanded] = React49__namespace.useState(true);
|
|
25983
26612
|
const handleChange = (checked) => {
|
|
25984
26613
|
onToggle(permission.id, checked);
|
|
25985
26614
|
if (!checked && hasChildren) {
|
|
@@ -26061,12 +26690,12 @@ function PermissionsEditor({
|
|
|
26061
26690
|
summary = "Summary",
|
|
26062
26691
|
all = "All"
|
|
26063
26692
|
} = labels;
|
|
26064
|
-
const [expandedGroups, setExpandedGroups] =
|
|
26693
|
+
const [expandedGroups, setExpandedGroups] = React49__namespace.useState(
|
|
26065
26694
|
() => new Set(
|
|
26066
26695
|
groups.filter((g) => g.defaultExpanded !== false).map((g) => g.id)
|
|
26067
26696
|
)
|
|
26068
26697
|
);
|
|
26069
|
-
const permissionMap =
|
|
26698
|
+
const permissionMap = React49__namespace.useMemo(() => {
|
|
26070
26699
|
const map = /* @__PURE__ */ new Map();
|
|
26071
26700
|
const processPermissions = (permissions) => {
|
|
26072
26701
|
permissions.forEach((perm) => {
|
|
@@ -26110,7 +26739,7 @@ function PermissionsEditor({
|
|
|
26110
26739
|
onEmployersChange([...selectedEmployers, employerId]);
|
|
26111
26740
|
}
|
|
26112
26741
|
};
|
|
26113
|
-
const assignedPermissionNames =
|
|
26742
|
+
const assignedPermissionNames = React49__namespace.useMemo(() => {
|
|
26114
26743
|
return assignedPermissions.map((id) => permissionMap.get(id)?.name).filter(Boolean);
|
|
26115
26744
|
}, [assignedPermissions, permissionMap]);
|
|
26116
26745
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkOR5DRJCW_cjs.cn("space-y-6", className), "data-slot": "perm-editor", children: [
|
|
@@ -26527,7 +27156,7 @@ var logoContainerVariants = classVarianceAuthority.cva(
|
|
|
26527
27156
|
}
|
|
26528
27157
|
);
|
|
26529
27158
|
var ProviderLogo = ({ logoURL, name, variant }) => {
|
|
26530
|
-
const [hasError, setHasError] =
|
|
27159
|
+
const [hasError, setHasError] = React49__namespace.useState(false);
|
|
26531
27160
|
if (!logoURL || hasError) {
|
|
26532
27161
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26533
27162
|
"div",
|
|
@@ -26662,7 +27291,7 @@ function formatAddressSingleLine2(address) {
|
|
|
26662
27291
|
parts.push(`${address.city}, ${address.state} ${address.postalCode}`);
|
|
26663
27292
|
return parts.join(", ");
|
|
26664
27293
|
}
|
|
26665
|
-
var ProviderCard =
|
|
27294
|
+
var ProviderCard = React49__namespace.forwardRef(
|
|
26666
27295
|
({
|
|
26667
27296
|
provider,
|
|
26668
27297
|
variant = "compact",
|
|
@@ -27147,7 +27776,7 @@ function ProviderLogo2({
|
|
|
27147
27776
|
size = "md",
|
|
27148
27777
|
className
|
|
27149
27778
|
}) {
|
|
27150
|
-
const [hasError, setHasError] =
|
|
27779
|
+
const [hasError, setHasError] = React49__namespace.useState(false);
|
|
27151
27780
|
const initials = name.split(" ").map((word) => word[0]).join("").toUpperCase().slice(0, 2);
|
|
27152
27781
|
if (!src || hasError) {
|
|
27153
27782
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -27585,7 +28214,7 @@ function ProviderDetailHeaderSkeleton({
|
|
|
27585
28214
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 w-12 rounded bg-gray-200 dark:bg-gray-700" })
|
|
27586
28215
|
] }, i)) }),
|
|
27587
28216
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "container mx-auto px-4 py-6", children: [
|
|
27588
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4 hidden items-center gap-2 sm:flex", children: [1, 2, 3, 4].map((i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
28217
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4 hidden items-center gap-2 sm:flex", children: [1, 2, 3, 4].map((i) => /* @__PURE__ */ jsxRuntime.jsxs(React49__namespace.Fragment, { children: [
|
|
27589
28218
|
i > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4 rounded-full bg-gray-200 dark:bg-gray-700" }),
|
|
27590
28219
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-16 rounded bg-gray-200 dark:bg-gray-700" })
|
|
27591
28220
|
] }, i)) }),
|
|
@@ -28511,7 +29140,7 @@ var SearchResultsMessage = ({
|
|
|
28511
29140
|
}
|
|
28512
29141
|
);
|
|
28513
29142
|
};
|
|
28514
|
-
var ProviderSearchBar =
|
|
29143
|
+
var ProviderSearchBar = React49__namespace.forwardRef(
|
|
28515
29144
|
({
|
|
28516
29145
|
onSearch,
|
|
28517
29146
|
onGeolocate,
|
|
@@ -28532,10 +29161,10 @@ var ProviderSearchBar = React48__namespace.forwardRef(
|
|
|
28532
29161
|
className,
|
|
28533
29162
|
...props
|
|
28534
29163
|
}, ref) => {
|
|
28535
|
-
const [internalValue, setInternalValue] =
|
|
29164
|
+
const [internalValue, setInternalValue] = React49__namespace.useState(
|
|
28536
29165
|
defaultValue || ""
|
|
28537
29166
|
);
|
|
28538
|
-
const [validationError, setValidationError] =
|
|
29167
|
+
const [validationError, setValidationError] = React49__namespace.useState(
|
|
28539
29168
|
null
|
|
28540
29169
|
);
|
|
28541
29170
|
const zipValue = value ?? internalValue;
|
|
@@ -28816,7 +29445,7 @@ function XMarkIcon({ className }) {
|
|
|
28816
29445
|
);
|
|
28817
29446
|
}
|
|
28818
29447
|
function InputField({ label, icon, className, id, ...props }) {
|
|
28819
|
-
const generatedId =
|
|
29448
|
+
const generatedId = React49__namespace.useId();
|
|
28820
29449
|
const inputId = id || generatedId;
|
|
28821
29450
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
28822
29451
|
label && /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: inputId, className: labelVariants2(), children: label }),
|
|
@@ -28840,7 +29469,7 @@ function SelectField({
|
|
|
28840
29469
|
id,
|
|
28841
29470
|
...props
|
|
28842
29471
|
}) {
|
|
28843
|
-
const generatedId =
|
|
29472
|
+
const generatedId = React49__namespace.useId();
|
|
28844
29473
|
const selectId = id || generatedId;
|
|
28845
29474
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
28846
29475
|
label && /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: selectId, className: labelVariants2(), children: label }),
|
|
@@ -28893,12 +29522,12 @@ function ServiceMultiSelect({
|
|
|
28893
29522
|
disabled = false,
|
|
28894
29523
|
showCounts = false
|
|
28895
29524
|
}) {
|
|
28896
|
-
const [isOpen, setIsOpen] =
|
|
28897
|
-
const [searchTerm, setSearchTerm] =
|
|
28898
|
-
const containerRef =
|
|
28899
|
-
const inputRef =
|
|
28900
|
-
const listboxId =
|
|
28901
|
-
|
|
29525
|
+
const [isOpen, setIsOpen] = React49__namespace.useState(false);
|
|
29526
|
+
const [searchTerm, setSearchTerm] = React49__namespace.useState("");
|
|
29527
|
+
const containerRef = React49__namespace.useRef(null);
|
|
29528
|
+
const inputRef = React49__namespace.useRef(null);
|
|
29529
|
+
const listboxId = React49__namespace.useId();
|
|
29530
|
+
React49__namespace.useEffect(() => {
|
|
28902
29531
|
function handleClickOutside(event) {
|
|
28903
29532
|
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
28904
29533
|
setIsOpen(false);
|
|
@@ -28907,14 +29536,14 @@ function ServiceMultiSelect({
|
|
|
28907
29536
|
document.addEventListener("mousedown", handleClickOutside);
|
|
28908
29537
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
28909
29538
|
}, []);
|
|
28910
|
-
const filteredServices =
|
|
29539
|
+
const filteredServices = React49__namespace.useMemo(() => {
|
|
28911
29540
|
if (!searchTerm) return services;
|
|
28912
29541
|
const lowerSearch = searchTerm.toLowerCase();
|
|
28913
29542
|
return services.filter(
|
|
28914
29543
|
(service) => service.label.toLowerCase().includes(lowerSearch) || service.category?.toLowerCase().includes(lowerSearch)
|
|
28915
29544
|
);
|
|
28916
29545
|
}, [services, searchTerm]);
|
|
28917
|
-
const groupedServices =
|
|
29546
|
+
const groupedServices = React49__namespace.useMemo(() => {
|
|
28918
29547
|
const groups = {};
|
|
28919
29548
|
filteredServices.forEach((service) => {
|
|
28920
29549
|
const category = service.category || "Other";
|
|
@@ -28923,7 +29552,7 @@ function ServiceMultiSelect({
|
|
|
28923
29552
|
});
|
|
28924
29553
|
return groups;
|
|
28925
29554
|
}, [filteredServices]);
|
|
28926
|
-
const selectedServiceObjects =
|
|
29555
|
+
const selectedServiceObjects = React49__namespace.useMemo(
|
|
28927
29556
|
() => services.filter((s) => selectedServices.includes(s.value)),
|
|
28928
29557
|
[services, selectedServices]
|
|
28929
29558
|
);
|
|
@@ -29429,10 +30058,10 @@ function ProviderSelector({
|
|
|
29429
30058
|
size = "md",
|
|
29430
30059
|
className
|
|
29431
30060
|
}) {
|
|
29432
|
-
const [isOpen, setIsOpen] =
|
|
29433
|
-
const [searchQuery, setSearchQuery] =
|
|
29434
|
-
const containerRef =
|
|
29435
|
-
|
|
30061
|
+
const [isOpen, setIsOpen] = React49__namespace.useState(false);
|
|
30062
|
+
const [searchQuery, setSearchQuery] = React49__namespace.useState("");
|
|
30063
|
+
const containerRef = React49__namespace.useRef(null);
|
|
30064
|
+
React49__namespace.useEffect(() => {
|
|
29436
30065
|
function handleClickOutside(event) {
|
|
29437
30066
|
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
29438
30067
|
setIsOpen(false);
|
|
@@ -29441,7 +30070,7 @@ function ProviderSelector({
|
|
|
29441
30070
|
document.addEventListener("mousedown", handleClickOutside);
|
|
29442
30071
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
29443
30072
|
}, []);
|
|
29444
|
-
|
|
30073
|
+
React49__namespace.useEffect(() => {
|
|
29445
30074
|
function handleEscape(event) {
|
|
29446
30075
|
if (event.key === "Escape") {
|
|
29447
30076
|
setIsOpen(false);
|
|
@@ -29450,12 +30079,12 @@ function ProviderSelector({
|
|
|
29450
30079
|
document.addEventListener("keydown", handleEscape);
|
|
29451
30080
|
return () => document.removeEventListener("keydown", handleEscape);
|
|
29452
30081
|
}, []);
|
|
29453
|
-
|
|
30082
|
+
React49__namespace.useEffect(() => {
|
|
29454
30083
|
if (!isOpen) {
|
|
29455
30084
|
setSearchQuery("");
|
|
29456
30085
|
}
|
|
29457
30086
|
}, [isOpen]);
|
|
29458
|
-
const filteredProviders =
|
|
30087
|
+
const filteredProviders = React49__namespace.useMemo(() => {
|
|
29459
30088
|
if (!searchQuery) return providers;
|
|
29460
30089
|
const query = searchQuery.toLowerCase();
|
|
29461
30090
|
return providers.filter(
|
|
@@ -29745,9 +30374,9 @@ function ProviderSettings({
|
|
|
29745
30374
|
defaultTab = "general",
|
|
29746
30375
|
className = ""
|
|
29747
30376
|
}) {
|
|
29748
|
-
const [settings, setSettings] =
|
|
29749
|
-
const [hasChanges, setHasChanges] =
|
|
29750
|
-
|
|
30377
|
+
const [settings, setSettings] = React49__namespace.useState(initialSettings);
|
|
30378
|
+
const [hasChanges, setHasChanges] = React49__namespace.useState(false);
|
|
30379
|
+
React49__namespace.useEffect(() => {
|
|
29751
30380
|
setSettings(initialSettings);
|
|
29752
30381
|
setHasChanges(false);
|
|
29753
30382
|
}, [initialSettings]);
|
|
@@ -30979,11 +31608,11 @@ function RecurringServiceSetupModal({
|
|
|
30979
31608
|
cancel = "Cancel",
|
|
30980
31609
|
save = "Save"
|
|
30981
31610
|
} = labels;
|
|
30982
|
-
const instanceId =
|
|
31611
|
+
const instanceId = React49__namespace.useId();
|
|
30983
31612
|
const providerSelectId = `${instanceId}-provider`;
|
|
30984
31613
|
const serviceSelectId = `${instanceId}-service`;
|
|
30985
31614
|
const occurrenceSelectId = `${instanceId}-occurrence`;
|
|
30986
|
-
const [formData, setFormData] =
|
|
31615
|
+
const [formData, setFormData] = React49__namespace.useState(
|
|
30987
31616
|
initialData || {
|
|
30988
31617
|
providerId: "",
|
|
30989
31618
|
serviceId: "",
|
|
@@ -30991,7 +31620,7 @@ function RecurringServiceSetupModal({
|
|
|
30991
31620
|
overrideConsent: false
|
|
30992
31621
|
}
|
|
30993
31622
|
);
|
|
30994
|
-
|
|
31623
|
+
React49__namespace.useEffect(() => {
|
|
30995
31624
|
if (initialData) {
|
|
30996
31625
|
setFormData(initialData);
|
|
30997
31626
|
} else {
|
|
@@ -31204,9 +31833,9 @@ function RejectionModal({
|
|
|
31204
31833
|
isSubmitting = false,
|
|
31205
31834
|
variant = "danger"
|
|
31206
31835
|
}) {
|
|
31207
|
-
const [selectedReasonId, setSelectedReasonId] =
|
|
31208
|
-
const [details, setDetails] =
|
|
31209
|
-
|
|
31836
|
+
const [selectedReasonId, setSelectedReasonId] = React49__namespace.useState("");
|
|
31837
|
+
const [details, setDetails] = React49__namespace.useState("");
|
|
31838
|
+
React49__namespace.useEffect(() => {
|
|
31210
31839
|
if (!open) {
|
|
31211
31840
|
setSelectedReasonId("");
|
|
31212
31841
|
setDetails("");
|
|
@@ -31663,7 +32292,7 @@ function ReportDashboard({
|
|
|
31663
32292
|
)
|
|
31664
32293
|
] });
|
|
31665
32294
|
}
|
|
31666
|
-
var ResultsEntryForm =
|
|
32295
|
+
var ResultsEntryForm = React49__namespace.forwardRef(function ResultsEntryForm2({
|
|
31667
32296
|
employeeFirstName,
|
|
31668
32297
|
employeeLastName,
|
|
31669
32298
|
initialData = {},
|
|
@@ -31691,30 +32320,30 @@ var ResultsEntryForm = React48__namespace.forwardRef(function ResultsEntryForm2(
|
|
|
31691
32320
|
addProviderContact = "Click here to add a provider contact",
|
|
31692
32321
|
pleaseSelectResult = "Please select a result"
|
|
31693
32322
|
} = labels;
|
|
31694
|
-
const [result, setResult] =
|
|
32323
|
+
const [result, setResult] = React49__namespace.useState(
|
|
31695
32324
|
initialData.result ?? null
|
|
31696
32325
|
);
|
|
31697
|
-
const [alternateText, setAlternateText] =
|
|
32326
|
+
const [alternateText, setAlternateText] = React49__namespace.useState(
|
|
31698
32327
|
initialData.alternateText ?? ""
|
|
31699
32328
|
);
|
|
31700
|
-
const [dateDrawnValue, setDateDrawnValue] =
|
|
32329
|
+
const [dateDrawnValue, setDateDrawnValue] = React49__namespace.useState(
|
|
31701
32330
|
initialData.dateDrawn ?? ""
|
|
31702
32331
|
);
|
|
31703
|
-
const [dateCompletedValue, setDateCompletedValue] =
|
|
32332
|
+
const [dateCompletedValue, setDateCompletedValue] = React49__namespace.useState(
|
|
31704
32333
|
initialData.dateCompleted ?? ""
|
|
31705
32334
|
);
|
|
31706
|
-
const [recommendations, setRecommendations] =
|
|
32335
|
+
const [recommendations, setRecommendations] = React49__namespace.useState(
|
|
31707
32336
|
initialData.recommendations ?? ""
|
|
31708
32337
|
);
|
|
31709
|
-
const [files, setFiles] =
|
|
31710
|
-
const [selectedContacts, setSelectedContacts] =
|
|
32338
|
+
const [files, setFiles] = React49__namespace.useState(initialData.files ?? []);
|
|
32339
|
+
const [selectedContacts, setSelectedContacts] = React49__namespace.useState(
|
|
31711
32340
|
initialData.providerContacts ?? []
|
|
31712
32341
|
);
|
|
31713
|
-
const [applyToAll, setApplyToAll] =
|
|
32342
|
+
const [applyToAll, setApplyToAll] = React49__namespace.useState(
|
|
31714
32343
|
initialData.applyToAllServices ?? false
|
|
31715
32344
|
);
|
|
31716
|
-
const [showError, setShowError] =
|
|
31717
|
-
const fileInputRef =
|
|
32345
|
+
const [showError, setShowError] = React49__namespace.useState(false);
|
|
32346
|
+
const fileInputRef = React49__namespace.useRef(null);
|
|
31718
32347
|
const handleFileSelect = (e) => {
|
|
31719
32348
|
const selectedFiles = Array.from(e.target.files || []);
|
|
31720
32349
|
setFiles((prev) => [...prev, ...selectedFiles]);
|
|
@@ -31730,7 +32359,7 @@ var ResultsEntryForm = React48__namespace.forwardRef(function ResultsEntryForm2(
|
|
|
31730
32359
|
(prev) => prev.includes(contactId) ? prev.filter((id) => id !== contactId) : [...prev, contactId]
|
|
31731
32360
|
);
|
|
31732
32361
|
};
|
|
31733
|
-
const validateAndSubmit =
|
|
32362
|
+
const validateAndSubmit = React49__namespace.useCallback(() => {
|
|
31734
32363
|
if (!result) {
|
|
31735
32364
|
setShowError(true);
|
|
31736
32365
|
return;
|
|
@@ -31757,7 +32386,7 @@ var ResultsEntryForm = React48__namespace.forwardRef(function ResultsEntryForm2(
|
|
|
31757
32386
|
applyToAll,
|
|
31758
32387
|
onSubmit
|
|
31759
32388
|
]);
|
|
31760
|
-
|
|
32389
|
+
React49__namespace.useImperativeHandle(
|
|
31761
32390
|
ref,
|
|
31762
32391
|
() => ({
|
|
31763
32392
|
submit: validateAndSubmit
|
|
@@ -32033,7 +32662,7 @@ function ResultsEntryModal({
|
|
|
32033
32662
|
...props
|
|
32034
32663
|
}) {
|
|
32035
32664
|
const { submit = "Submit", close = "Close" } = labels;
|
|
32036
|
-
const formRef =
|
|
32665
|
+
const formRef = React49__namespace.useRef(null);
|
|
32037
32666
|
const employeeName = employeeFirstName || employeeLastName ? `${employeeFirstName ?? ""} ${employeeLastName ?? ""}`.trim() : void 0;
|
|
32038
32667
|
const handleSubmitClick = () => {
|
|
32039
32668
|
formRef.current?.submit();
|
|
@@ -32163,7 +32792,7 @@ function ScheduleCalendar({
|
|
|
32163
32792
|
isLoading = false,
|
|
32164
32793
|
className = ""
|
|
32165
32794
|
}) {
|
|
32166
|
-
const [currentDate, setCurrentDate] =
|
|
32795
|
+
const [currentDate, setCurrentDate] = React49__namespace.useState(selectedDate);
|
|
32167
32796
|
const formatTime4 = (date) => {
|
|
32168
32797
|
const d = typeof date === "string" ? new Date(date) : date;
|
|
32169
32798
|
return d.toLocaleTimeString("en-US", {
|
|
@@ -32635,7 +33264,7 @@ function SubCategoryAccordion({
|
|
|
32635
33264
|
onServiceClick,
|
|
32636
33265
|
index
|
|
32637
33266
|
}) {
|
|
32638
|
-
const [isExpanded, setIsExpanded] =
|
|
33267
|
+
const [isExpanded, setIsExpanded] = React49__namespace.useState(
|
|
32639
33268
|
subCategory.defaultExpanded ?? false
|
|
32640
33269
|
);
|
|
32641
33270
|
const contentId = `sub-content-${index}`;
|
|
@@ -32702,7 +33331,7 @@ function CategoryAccordionItem({
|
|
|
32702
33331
|
onExpandChange
|
|
32703
33332
|
}) {
|
|
32704
33333
|
const isControlled = expandedCategories !== void 0;
|
|
32705
|
-
const [internalExpanded, setInternalExpanded] =
|
|
33334
|
+
const [internalExpanded, setInternalExpanded] = React49__namespace.useState(
|
|
32706
33335
|
category.defaultExpanded ?? false
|
|
32707
33336
|
);
|
|
32708
33337
|
const isExpanded = isControlled ? expandedCategories.includes(category.name) : internalExpanded;
|
|
@@ -32800,7 +33429,7 @@ function ServiceAccordion({
|
|
|
32800
33429
|
className,
|
|
32801
33430
|
"aria-label": ariaLabel = "Service categories"
|
|
32802
33431
|
}) {
|
|
32803
|
-
const [internalExpanded, setInternalExpanded] =
|
|
33432
|
+
const [internalExpanded, setInternalExpanded] = React49__namespace.useState([]);
|
|
32804
33433
|
const isControlled = controlledExpanded !== void 0;
|
|
32805
33434
|
const expanded = isControlled ? controlledExpanded : internalExpanded;
|
|
32806
33435
|
const handleExpandChange = (categoryName, isExpanded) => {
|
|
@@ -33092,7 +33721,7 @@ function ServiceBadgeGroup({
|
|
|
33092
33721
|
size = "md",
|
|
33093
33722
|
onShowMore
|
|
33094
33723
|
}) {
|
|
33095
|
-
const badges =
|
|
33724
|
+
const badges = React49__namespace.Children.toArray(children);
|
|
33096
33725
|
const visibleBadges = maxVisible ? badges.slice(0, maxVisible) : badges;
|
|
33097
33726
|
const hiddenCount = maxVisible ? badges.length - maxVisible : 0;
|
|
33098
33727
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -33945,15 +34574,15 @@ function ServicePicker({
|
|
|
33945
34574
|
fullWidth = false,
|
|
33946
34575
|
className
|
|
33947
34576
|
}) {
|
|
33948
|
-
const [searchQuery, setSearchQuery] =
|
|
33949
|
-
const [expandedGroups, setExpandedGroups] =
|
|
34577
|
+
const [searchQuery, setSearchQuery] = React49__namespace.useState("");
|
|
34578
|
+
const [expandedGroups, setExpandedGroups] = React49__namespace.useState(
|
|
33950
34579
|
/* @__PURE__ */ new Set()
|
|
33951
34580
|
);
|
|
33952
|
-
const filteredGroups =
|
|
34581
|
+
const filteredGroups = React49__namespace.useMemo(
|
|
33953
34582
|
() => filterServices(groups, searchQuery),
|
|
33954
34583
|
[groups, searchQuery]
|
|
33955
34584
|
);
|
|
33956
|
-
const searchResults =
|
|
34585
|
+
const searchResults = React49__namespace.useMemo(
|
|
33957
34586
|
() => searchQuery ? flattenServices(filteredGroups) : [],
|
|
33958
34587
|
[filteredGroups, searchQuery]
|
|
33959
34588
|
);
|
|
@@ -34402,16 +35031,16 @@ function ServicePricingManager({
|
|
|
34402
35031
|
categories: _categories = [],
|
|
34403
35032
|
className = ""
|
|
34404
35033
|
}) {
|
|
34405
|
-
const [searchTerm, setSearchTerm] =
|
|
34406
|
-
const [selectedCategory, setSelectedCategory] =
|
|
35034
|
+
const [searchTerm, setSearchTerm] = React49__namespace.useState("");
|
|
35035
|
+
const [selectedCategory, setSelectedCategory] = React49__namespace.useState(
|
|
34407
35036
|
null
|
|
34408
35037
|
);
|
|
34409
|
-
const [editingService, setEditingService] =
|
|
34410
|
-
const [editPrice, setEditPrice] =
|
|
34411
|
-
const [editEmployerPrice, setEditEmployerPrice] =
|
|
34412
|
-
const [showBulkModal, setShowBulkModal] =
|
|
34413
|
-
const [bulkAdjustment, setBulkAdjustment] =
|
|
34414
|
-
const [bulkAdjustmentType, setBulkAdjustmentType] =
|
|
35038
|
+
const [editingService, setEditingService] = React49__namespace.useState(null);
|
|
35039
|
+
const [editPrice, setEditPrice] = React49__namespace.useState("");
|
|
35040
|
+
const [editEmployerPrice, setEditEmployerPrice] = React49__namespace.useState("");
|
|
35041
|
+
const [showBulkModal, setShowBulkModal] = React49__namespace.useState(false);
|
|
35042
|
+
const [bulkAdjustment, setBulkAdjustment] = React49__namespace.useState("");
|
|
35043
|
+
const [bulkAdjustmentType, setBulkAdjustmentType] = React49__namespace.useState("percent");
|
|
34415
35044
|
const formatCurrency3 = (amount) => {
|
|
34416
35045
|
return new Intl.NumberFormat("en-US", {
|
|
34417
35046
|
style: "currency",
|
|
@@ -34802,7 +35431,7 @@ function ServiceShippingSettings({
|
|
|
34802
35431
|
isSaving = false,
|
|
34803
35432
|
className = ""
|
|
34804
35433
|
}) {
|
|
34805
|
-
const [address, setAddress] =
|
|
35434
|
+
const [address, setAddress] = React49__namespace.useState(
|
|
34806
35435
|
defaultAddress || {
|
|
34807
35436
|
name: "",
|
|
34808
35437
|
street1: "",
|
|
@@ -35004,7 +35633,7 @@ function SetupServiceModal({
|
|
|
35004
35633
|
errorMessage,
|
|
35005
35634
|
title = "Add New Service"
|
|
35006
35635
|
}) {
|
|
35007
|
-
const [formData, setFormData] =
|
|
35636
|
+
const [formData, setFormData] = React49__namespace.useState({
|
|
35008
35637
|
name: "",
|
|
35009
35638
|
description: "",
|
|
35010
35639
|
price: 0,
|
|
@@ -35014,7 +35643,7 @@ function SetupServiceModal({
|
|
|
35014
35643
|
initialInventory: void 0,
|
|
35015
35644
|
autoAcceptReferrals: false
|
|
35016
35645
|
});
|
|
35017
|
-
|
|
35646
|
+
React49__namespace.useEffect(() => {
|
|
35018
35647
|
if (!open) {
|
|
35019
35648
|
setFormData({
|
|
35020
35649
|
name: "",
|
|
@@ -35293,7 +35922,7 @@ function SetupServiceModal({
|
|
|
35293
35922
|
] })
|
|
35294
35923
|
] }) });
|
|
35295
35924
|
}
|
|
35296
|
-
var SidebarContext =
|
|
35925
|
+
var SidebarContext = React49.createContext(null);
|
|
35297
35926
|
function SidebarProvider({
|
|
35298
35927
|
children,
|
|
35299
35928
|
defaultCollapsed = false,
|
|
@@ -35303,7 +35932,7 @@ function SidebarProvider({
|
|
|
35303
35932
|
mobileBreakpoint = "(max-width: 1023px)"
|
|
35304
35933
|
}) {
|
|
35305
35934
|
const isMobileViewport = chunkFSBFQBNE_cjs.useMediaQuery(mobileBreakpoint);
|
|
35306
|
-
const [isCollapsed, setIsCollapsed] =
|
|
35935
|
+
const [isCollapsed, setIsCollapsed] = React49.useState(() => {
|
|
35307
35936
|
if (typeof window !== "undefined" && persistCollapsed) {
|
|
35308
35937
|
const stored = localStorage.getItem(storageKey);
|
|
35309
35938
|
if (stored !== null) {
|
|
@@ -35312,39 +35941,39 @@ function SidebarProvider({
|
|
|
35312
35941
|
}
|
|
35313
35942
|
return defaultCollapsed;
|
|
35314
35943
|
});
|
|
35315
|
-
const [isMobileOpen, setIsMobileOpen] =
|
|
35316
|
-
const [expandedGroup, setExpandedGroup] =
|
|
35944
|
+
const [isMobileOpen, setIsMobileOpen] = React49.useState(false);
|
|
35945
|
+
const [expandedGroup, setExpandedGroup] = React49.useState(
|
|
35317
35946
|
defaultExpandedGroup
|
|
35318
35947
|
);
|
|
35319
|
-
|
|
35948
|
+
React49.useEffect(() => {
|
|
35320
35949
|
if (persistCollapsed && typeof window !== "undefined") {
|
|
35321
35950
|
localStorage.setItem(storageKey, String(isCollapsed));
|
|
35322
35951
|
}
|
|
35323
35952
|
}, [isCollapsed, persistCollapsed, storageKey]);
|
|
35324
|
-
|
|
35953
|
+
React49.useEffect(() => {
|
|
35325
35954
|
if (!isMobileViewport && isMobileOpen) {
|
|
35326
35955
|
setIsMobileOpen(false);
|
|
35327
35956
|
}
|
|
35328
35957
|
}, [isMobileViewport, isMobileOpen]);
|
|
35329
|
-
const toggleCollapsed =
|
|
35958
|
+
const toggleCollapsed = React49.useCallback(() => {
|
|
35330
35959
|
setIsCollapsed((prev) => !prev);
|
|
35331
35960
|
}, []);
|
|
35332
|
-
const setCollapsed =
|
|
35961
|
+
const setCollapsed = React49.useCallback((collapsed) => {
|
|
35333
35962
|
setIsCollapsed(collapsed);
|
|
35334
35963
|
}, []);
|
|
35335
|
-
const openMobile =
|
|
35964
|
+
const openMobile = React49.useCallback(() => {
|
|
35336
35965
|
setIsMobileOpen(true);
|
|
35337
35966
|
}, []);
|
|
35338
|
-
const closeMobile =
|
|
35967
|
+
const closeMobile = React49.useCallback(() => {
|
|
35339
35968
|
setIsMobileOpen(false);
|
|
35340
35969
|
}, []);
|
|
35341
|
-
const toggleMobile =
|
|
35970
|
+
const toggleMobile = React49.useCallback(() => {
|
|
35342
35971
|
setIsMobileOpen((prev) => !prev);
|
|
35343
35972
|
}, []);
|
|
35344
|
-
const toggleGroup =
|
|
35973
|
+
const toggleGroup = React49.useCallback((group) => {
|
|
35345
35974
|
setExpandedGroup((prev) => prev === group ? null : group);
|
|
35346
35975
|
}, []);
|
|
35347
|
-
const contextValue =
|
|
35976
|
+
const contextValue = React49.useMemo(
|
|
35348
35977
|
() => ({
|
|
35349
35978
|
isCollapsed,
|
|
35350
35979
|
toggleCollapsed,
|
|
@@ -35374,7 +36003,7 @@ function SidebarProvider({
|
|
|
35374
36003
|
return /* @__PURE__ */ jsxRuntime.jsx(SidebarContext.Provider, { value: contextValue, children });
|
|
35375
36004
|
}
|
|
35376
36005
|
function useSidebar() {
|
|
35377
|
-
const context =
|
|
36006
|
+
const context = React49.useContext(SidebarContext);
|
|
35378
36007
|
if (!context) {
|
|
35379
36008
|
throw new Error("useSidebar must be used within a SidebarProvider");
|
|
35380
36009
|
}
|
|
@@ -35609,9 +36238,9 @@ function SidebarNavGroup({
|
|
|
35609
36238
|
const { isCollapsed, isMobileViewport, expandedGroup, toggleGroup } = useSidebar();
|
|
35610
36239
|
const showCollapsed = !isMobileViewport && isCollapsed;
|
|
35611
36240
|
const isExpanded = groupId ? expandedGroup === groupId : defaultExpanded;
|
|
35612
|
-
const [localExpanded, setLocalExpanded] =
|
|
36241
|
+
const [localExpanded, setLocalExpanded] = React49.useState(defaultExpanded);
|
|
35613
36242
|
const effectiveExpanded = groupId ? isExpanded : localExpanded;
|
|
35614
|
-
const handleToggle =
|
|
36243
|
+
const handleToggle = React49.useCallback(() => {
|
|
35615
36244
|
if (groupId) {
|
|
35616
36245
|
toggleGroup(groupId);
|
|
35617
36246
|
} else {
|
|
@@ -35684,7 +36313,7 @@ function SidebarNavItem({
|
|
|
35684
36313
|
}) {
|
|
35685
36314
|
const { isCollapsed, isMobileViewport, closeMobile } = useSidebar();
|
|
35686
36315
|
const showCollapsed = !isMobileViewport && isCollapsed;
|
|
35687
|
-
const handleClick =
|
|
36316
|
+
const handleClick = React49.useCallback(() => {
|
|
35688
36317
|
if (disabled) return;
|
|
35689
36318
|
onClick?.();
|
|
35690
36319
|
if (isMobileViewport) {
|
|
@@ -35808,9 +36437,9 @@ function SidebarSearch({
|
|
|
35808
36437
|
"data-testid": testId = "sidebar-search"
|
|
35809
36438
|
}) {
|
|
35810
36439
|
const { isCollapsed, isMobileViewport, setCollapsed } = useSidebar();
|
|
35811
|
-
const inputRef =
|
|
36440
|
+
const inputRef = React49.useRef(null);
|
|
35812
36441
|
const showCollapsed = !isMobileViewport && isCollapsed;
|
|
35813
|
-
|
|
36442
|
+
React49.useEffect(() => {
|
|
35814
36443
|
const handleKeyDown = (e) => {
|
|
35815
36444
|
const target = e.target;
|
|
35816
36445
|
if (target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.isContentEditable) {
|
|
@@ -36006,7 +36635,7 @@ function NewsletterForm({
|
|
|
36006
36635
|
isLoading = false,
|
|
36007
36636
|
className
|
|
36008
36637
|
}) {
|
|
36009
|
-
const [email, setEmail] =
|
|
36638
|
+
const [email, setEmail] = React49__namespace.useState("");
|
|
36010
36639
|
function handleSubmit(e) {
|
|
36011
36640
|
e.preventDefault();
|
|
36012
36641
|
if (email.trim()) {
|
|
@@ -36131,7 +36760,7 @@ function LegalLinks({
|
|
|
36131
36760
|
{
|
|
36132
36761
|
"data-slot": "site-footer-legal",
|
|
36133
36762
|
className: chunkOR5DRJCW_cjs.cn("flex flex-wrap items-center gap-x-4 gap-y-1", className),
|
|
36134
|
-
children: links.map((link, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
36763
|
+
children: links.map((link, index) => /* @__PURE__ */ jsxRuntime.jsxs(React49__namespace.Fragment, { children: [
|
|
36135
36764
|
index > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
36136
36765
|
"span",
|
|
36137
36766
|
{
|
|
@@ -36622,9 +37251,9 @@ function UserMenu({
|
|
|
36622
37251
|
menuItems = [],
|
|
36623
37252
|
className
|
|
36624
37253
|
}) {
|
|
36625
|
-
const [isOpen, setIsOpen] =
|
|
36626
|
-
const menuRef =
|
|
36627
|
-
|
|
37254
|
+
const [isOpen, setIsOpen] = React49__namespace.useState(false);
|
|
37255
|
+
const menuRef = React49__namespace.useRef(null);
|
|
37256
|
+
React49__namespace.useEffect(() => {
|
|
36628
37257
|
function handleClickOutside(event) {
|
|
36629
37258
|
if (menuRef.current && !menuRef.current.contains(event.target)) {
|
|
36630
37259
|
setIsOpen(false);
|
|
@@ -36920,7 +37549,7 @@ function SiteHeader({
|
|
|
36920
37549
|
userMenuItems,
|
|
36921
37550
|
className
|
|
36922
37551
|
}) {
|
|
36923
|
-
const [mobileMenuOpen, setMobileMenuOpen] =
|
|
37552
|
+
const [mobileMenuOpen, setMobileMenuOpen] = React49__namespace.useState(false);
|
|
36924
37553
|
const colorVariant = variant === "primary" || variant === "transparent" ? "light" : "dark";
|
|
36925
37554
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
36926
37555
|
/* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "site-header-spacer", className: "h-16", "aria-hidden": "true" }),
|
|
@@ -37292,29 +37921,29 @@ function SSOConfigForm({
|
|
|
37292
37921
|
delete: deleteLabel = "Delete SSO",
|
|
37293
37922
|
cancel = "Cancel"
|
|
37294
37923
|
} = labels;
|
|
37295
|
-
const [clientDomain, setClientDomain] =
|
|
37924
|
+
const [clientDomain, setClientDomain] = React49__namespace.useState(
|
|
37296
37925
|
initialData.clientDomain ?? ""
|
|
37297
37926
|
);
|
|
37298
|
-
const [ssoLoginUrl, setSsoLoginUrl] =
|
|
37927
|
+
const [ssoLoginUrl, setSsoLoginUrl] = React49__namespace.useState(
|
|
37299
37928
|
initialData.ssoLoginUrl ?? ""
|
|
37300
37929
|
);
|
|
37301
|
-
const [ssoLogoutUrl, setSsoLogoutUrl] =
|
|
37930
|
+
const [ssoLogoutUrl, setSsoLogoutUrl] = React49__namespace.useState(
|
|
37302
37931
|
initialData.ssoLogoutUrl ?? ""
|
|
37303
37932
|
);
|
|
37304
|
-
const [forceReauth, setForceReauth] =
|
|
37933
|
+
const [forceReauth, setForceReauth] = React49__namespace.useState(
|
|
37305
37934
|
initialData.forceReauthentication ?? false
|
|
37306
37935
|
);
|
|
37307
|
-
const [idpSigns, setIdpSigns] =
|
|
37936
|
+
const [idpSigns, setIdpSigns] = React49__namespace.useState(
|
|
37308
37937
|
initialData.idpSignsRequest ?? false
|
|
37309
37938
|
);
|
|
37310
|
-
const [allowUnencrypted, setAllowUnencrypted] =
|
|
37939
|
+
const [allowUnencrypted, setAllowUnencrypted] = React49__namespace.useState(
|
|
37311
37940
|
initialData.allowUnencryptedAssertion ?? false
|
|
37312
37941
|
);
|
|
37313
|
-
const [certificateFile, setCertificateFile] =
|
|
37942
|
+
const [certificateFile, setCertificateFile] = React49__namespace.useState(
|
|
37314
37943
|
null
|
|
37315
37944
|
);
|
|
37316
|
-
const fileInputRef =
|
|
37317
|
-
const [errors, setErrors] =
|
|
37945
|
+
const fileInputRef = React49__namespace.useRef(null);
|
|
37946
|
+
const [errors, setErrors] = React49__namespace.useState({});
|
|
37318
37947
|
const validate = () => {
|
|
37319
37948
|
const newErrors = {};
|
|
37320
37949
|
if (!clientDomain.trim()) {
|
|
@@ -37672,7 +38301,7 @@ function StepIndicator({
|
|
|
37672
38301
|
const status = getStepStatus(index);
|
|
37673
38302
|
const isLast = index === steps.length - 1;
|
|
37674
38303
|
const clickable = isClickable(index);
|
|
37675
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
38304
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React49__namespace.Fragment, { children: [
|
|
37676
38305
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex flex-row items-center ${sizes.gap}`, children: [
|
|
37677
38306
|
circleButton(step, index, status, clickable),
|
|
37678
38307
|
stepLabel(step, status, false)
|
|
@@ -37889,10 +38518,10 @@ function TableOfContents({
|
|
|
37889
38518
|
scrollSpyOptions,
|
|
37890
38519
|
className
|
|
37891
38520
|
}) {
|
|
37892
|
-
const [discoveredItems, setDiscoveredItems] =
|
|
38521
|
+
const [discoveredItems, setDiscoveredItems] = React49__namespace.useState([]);
|
|
37893
38522
|
const flatItems = manualItems ?? discoveredItems;
|
|
37894
38523
|
const contentEl = contentRef?.current ?? null;
|
|
37895
|
-
|
|
38524
|
+
React49__namespace.useEffect(() => {
|
|
37896
38525
|
if (manualItems) return;
|
|
37897
38526
|
const container = contentEl ?? document;
|
|
37898
38527
|
let frameId = null;
|
|
@@ -37923,7 +38552,7 @@ function TableOfContents({
|
|
|
37923
38552
|
if (frameId !== null) cancelAnimationFrame(frameId);
|
|
37924
38553
|
};
|
|
37925
38554
|
}, [manualItems, selector, maxDepth, contentEl]);
|
|
37926
|
-
const ids =
|
|
38555
|
+
const ids = React49__namespace.useMemo(() => flatItems.map((i) => i.id), [flatItems]);
|
|
37927
38556
|
const isControlled = controlledActiveId !== void 0;
|
|
37928
38557
|
const { activeId: spyActiveId } = chunkFSBFQBNE_cjs.useScrollSpy({
|
|
37929
38558
|
ids,
|
|
@@ -37932,12 +38561,12 @@ function TableOfContents({
|
|
|
37932
38561
|
...scrollSpyOptions
|
|
37933
38562
|
});
|
|
37934
38563
|
const activeId = isControlled ? controlledActiveId : spyActiveId;
|
|
37935
|
-
|
|
38564
|
+
React49__namespace.useEffect(() => {
|
|
37936
38565
|
if (!isControlled && onActiveChange) {
|
|
37937
38566
|
onActiveChange(spyActiveId);
|
|
37938
38567
|
}
|
|
37939
38568
|
}, [spyActiveId, isControlled, onActiveChange]);
|
|
37940
|
-
const handleClick =
|
|
38569
|
+
const handleClick = React49__namespace.useCallback(
|
|
37941
38570
|
(e, id) => {
|
|
37942
38571
|
if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) {
|
|
37943
38572
|
return;
|
|
@@ -37958,7 +38587,7 @@ function TableOfContents({
|
|
|
37958
38587
|
},
|
|
37959
38588
|
[contentEl, scrollOffset, smooth]
|
|
37960
38589
|
);
|
|
37961
|
-
const tree =
|
|
38590
|
+
const tree = React49__namespace.useMemo(() => nestItems(flatItems), [flatItems]);
|
|
37962
38591
|
if (hideWhenEmpty && tree.length === 0) return null;
|
|
37963
38592
|
return /* @__PURE__ */ jsxRuntime.jsxs("nav", { "aria-label": "Table of contents", className: chunkOR5DRJCW_cjs.cn("text-sm", className), children: [
|
|
37964
38593
|
title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-foreground mb-3 font-semibold", children: title }),
|
|
@@ -38726,7 +39355,7 @@ function ToastContainer({
|
|
|
38726
39355
|
}
|
|
38727
39356
|
);
|
|
38728
39357
|
}
|
|
38729
|
-
var ToastContext =
|
|
39358
|
+
var ToastContext = React49.createContext(null);
|
|
38730
39359
|
var toastIdCounter = 0;
|
|
38731
39360
|
function generateToastId() {
|
|
38732
39361
|
return `toast-${++toastIdCounter}-${Date.now()}`;
|
|
@@ -38736,8 +39365,8 @@ function ToastProvider({
|
|
|
38736
39365
|
maxToasts = 5,
|
|
38737
39366
|
defaultDuration = 5e3
|
|
38738
39367
|
}) {
|
|
38739
|
-
const [toasts, setToasts] =
|
|
38740
|
-
const dismiss =
|
|
39368
|
+
const [toasts, setToasts] = React49.useState([]);
|
|
39369
|
+
const dismiss = React49.useCallback((id) => {
|
|
38741
39370
|
setToasts((prev) => {
|
|
38742
39371
|
const toast2 = prev.find((t) => t.id === id);
|
|
38743
39372
|
if (toast2?.onDismiss) {
|
|
@@ -38746,13 +39375,13 @@ function ToastProvider({
|
|
|
38746
39375
|
return prev.filter((t) => t.id !== id);
|
|
38747
39376
|
});
|
|
38748
39377
|
}, []);
|
|
38749
|
-
const dismissAll =
|
|
39378
|
+
const dismissAll = React49.useCallback(() => {
|
|
38750
39379
|
setToasts((prev) => {
|
|
38751
39380
|
prev.forEach((t) => t.onDismiss?.());
|
|
38752
39381
|
return [];
|
|
38753
39382
|
});
|
|
38754
39383
|
}, []);
|
|
38755
|
-
const toast =
|
|
39384
|
+
const toast = React49.useCallback(
|
|
38756
39385
|
(options) => {
|
|
38757
39386
|
const id = generateToastId();
|
|
38758
39387
|
const duration = options.duration ?? defaultDuration;
|
|
@@ -38779,13 +39408,13 @@ function ToastProvider({
|
|
|
38779
39408
|
},
|
|
38780
39409
|
[maxToasts, defaultDuration, dismiss]
|
|
38781
39410
|
);
|
|
38782
|
-
const success =
|
|
39411
|
+
const success = React49.useCallback(
|
|
38783
39412
|
(message, options) => {
|
|
38784
39413
|
return toast({ ...options, message, variant: "success" });
|
|
38785
39414
|
},
|
|
38786
39415
|
[toast]
|
|
38787
39416
|
);
|
|
38788
|
-
const error =
|
|
39417
|
+
const error = React49.useCallback(
|
|
38789
39418
|
(message, options) => {
|
|
38790
39419
|
return toast({
|
|
38791
39420
|
...options,
|
|
@@ -38797,19 +39426,19 @@ function ToastProvider({
|
|
|
38797
39426
|
},
|
|
38798
39427
|
[toast]
|
|
38799
39428
|
);
|
|
38800
|
-
const warning =
|
|
39429
|
+
const warning = React49.useCallback(
|
|
38801
39430
|
(message, options) => {
|
|
38802
39431
|
return toast({ ...options, message, variant: "warning" });
|
|
38803
39432
|
},
|
|
38804
39433
|
[toast]
|
|
38805
39434
|
);
|
|
38806
|
-
const info =
|
|
39435
|
+
const info = React49.useCallback(
|
|
38807
39436
|
(message, options) => {
|
|
38808
39437
|
return toast({ ...options, message, variant: "info" });
|
|
38809
39438
|
},
|
|
38810
39439
|
[toast]
|
|
38811
39440
|
);
|
|
38812
|
-
const contextValue =
|
|
39441
|
+
const contextValue = React49.useMemo(
|
|
38813
39442
|
() => ({
|
|
38814
39443
|
toasts,
|
|
38815
39444
|
toast,
|
|
@@ -38825,7 +39454,7 @@ function ToastProvider({
|
|
|
38825
39454
|
return /* @__PURE__ */ jsxRuntime.jsx(ToastContext.Provider, { value: contextValue, children });
|
|
38826
39455
|
}
|
|
38827
39456
|
function useToast() {
|
|
38828
|
-
const context =
|
|
39457
|
+
const context = React49.useContext(ToastContext);
|
|
38829
39458
|
if (!context) {
|
|
38830
39459
|
throw new Error("useToast must be used within a ToastProvider");
|
|
38831
39460
|
}
|
|
@@ -38859,7 +39488,7 @@ function WebChartReportViewer({
|
|
|
38859
39488
|
dateFrom = "From",
|
|
38860
39489
|
dateTo = "To"
|
|
38861
39490
|
} = labels;
|
|
38862
|
-
const [modalOpen, setModalOpen] =
|
|
39491
|
+
const [modalOpen, setModalOpen] = React49__namespace.useState(false);
|
|
38863
39492
|
const handleReportClick = (report) => {
|
|
38864
39493
|
onReportSelect?.(report);
|
|
38865
39494
|
setModalOpen(true);
|
|
@@ -39097,7 +39726,7 @@ function ReportTimeRange({
|
|
|
39097
39726
|
],
|
|
39098
39727
|
className
|
|
39099
39728
|
}) {
|
|
39100
|
-
const [preset, setPreset] =
|
|
39729
|
+
const [preset, setPreset] = React49__namespace.useState("this-month");
|
|
39101
39730
|
const handlePresetChange = (value) => {
|
|
39102
39731
|
setPreset(value);
|
|
39103
39732
|
const now = /* @__PURE__ */ new Date();
|
|
@@ -39199,7 +39828,7 @@ function isValidUrl(url) {
|
|
|
39199
39828
|
}
|
|
39200
39829
|
}
|
|
39201
39830
|
}
|
|
39202
|
-
var WebsiteInput =
|
|
39831
|
+
var WebsiteInput = React49__namespace.forwardRef(
|
|
39203
39832
|
({
|
|
39204
39833
|
value = "",
|
|
39205
39834
|
onChange,
|
|
@@ -39210,7 +39839,7 @@ var WebsiteInput = React48__namespace.forwardRef(
|
|
|
39210
39839
|
error,
|
|
39211
39840
|
...props
|
|
39212
39841
|
}, ref) => {
|
|
39213
|
-
const [localError, setLocalError] =
|
|
39842
|
+
const [localError, setLocalError] = React49__namespace.useState();
|
|
39214
39843
|
const handleChange = (e) => {
|
|
39215
39844
|
onChange?.(e.target.value);
|
|
39216
39845
|
if (localError) {
|
|
@@ -39292,7 +39921,7 @@ function WebsiteInputGroup({
|
|
|
39292
39921
|
typeLabels,
|
|
39293
39922
|
className
|
|
39294
39923
|
}) {
|
|
39295
|
-
const websites =
|
|
39924
|
+
const websites = React49__namespace.useMemo(() => {
|
|
39296
39925
|
if (value.length >= minEntries) return value;
|
|
39297
39926
|
const padding = Array(minEntries - value.length).fill(null).map(() => ({ url: "", type: "website" }));
|
|
39298
39927
|
return [...value, ...padding];
|
|
@@ -40254,11 +40883,11 @@ Object.defineProperty(exports, "isStorybookDocsMode", {
|
|
|
40254
40883
|
});
|
|
40255
40884
|
Object.defineProperty(exports, "miewebUIPreset", {
|
|
40256
40885
|
enumerable: true,
|
|
40257
|
-
get: function () { return
|
|
40886
|
+
get: function () { return chunk3CFB4TVQ_cjs.miewebUIPreset; }
|
|
40258
40887
|
});
|
|
40259
40888
|
Object.defineProperty(exports, "miewebUISafelist", {
|
|
40260
40889
|
enumerable: true,
|
|
40261
|
-
get: function () { return
|
|
40890
|
+
get: function () { return chunk3CFB4TVQ_cjs.miewebUISafelist; }
|
|
40262
40891
|
});
|
|
40263
40892
|
Object.defineProperty(exports, "Alert", {
|
|
40264
40893
|
enumerable: true,
|
|
@@ -40285,6 +40914,7 @@ exports.AIChatModal = AIChatModal;
|
|
|
40285
40914
|
exports.AIChatTrigger = AIChatTrigger;
|
|
40286
40915
|
exports.AILogoIcon = AILogoIcon;
|
|
40287
40916
|
exports.AIMessageDisplay = AIMessageDisplay;
|
|
40917
|
+
exports.AIReconciliationPanel = AIReconciliationPanel;
|
|
40288
40918
|
exports.AITypingIndicator = AITypingIndicator;
|
|
40289
40919
|
exports.AccessDeniedPage = AccessDeniedPage;
|
|
40290
40920
|
exports.ActionButton = ActionButton2;
|
|
@@ -40544,6 +41174,7 @@ exports.create24HourSchedule = create24HourSchedule;
|
|
|
40544
41174
|
exports.createDefaultSchedule = createDefaultSchedule;
|
|
40545
41175
|
exports.createWeekdaySchedule = createWeekdaySchedule;
|
|
40546
41176
|
exports.defaultOrderTabs = defaultOrderTabs;
|
|
41177
|
+
exports.defaultReconciliationIsEqual = defaultReconciliationIsEqual;
|
|
40547
41178
|
exports.formatAddressLines = formatAddressLines;
|
|
40548
41179
|
exports.formatAddressSingleLine = formatAddressSingleLine;
|
|
40549
41180
|
exports.formatCityState = formatCityState;
|
|
@@ -40565,6 +41196,7 @@ exports.groupMessagesByDate = groupMessagesByDate;
|
|
|
40565
41196
|
exports.headerVariants = headerVariants;
|
|
40566
41197
|
exports.isSameSenderGroup = isSameSenderGroup;
|
|
40567
41198
|
exports.isValidUrl = isValidUrl;
|
|
41199
|
+
exports.reconciliationPanelVariants = panelVariants;
|
|
40568
41200
|
exports.sendButtonVariants = sendButtonVariants;
|
|
40569
41201
|
exports.useCamera = useCamera;
|
|
40570
41202
|
exports.useCommandPalette = useCommandPalette;
|