@mieweb/ui 0.6.1-dev.131 → 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/dist/index.js CHANGED
@@ -89,13 +89,13 @@ import { dateToDisplayFormat, isValidDate, displayFormatToDateString } from './c
89
89
  export { calculateAge, dateToDisplayFormat, displayFormatToDateString, formatDateValue, isDateEmpty, isDateInFuture, isDateInPast, isValidDate, isValidDrivingAge, parseDateValue } from './chunk-RC2YMOMS.js';
90
90
  import { isStorybookDocsMode } from './chunk-VSQF22GL.js';
91
91
  export { isStorybookDocsMode } from './chunk-VSQF22GL.js';
92
- export { miewebUIPreset, miewebUISafelist } from './chunk-2DS3RJ2D.js';
92
+ export { miewebUIPreset, miewebUISafelist } from './chunk-Q577IUE5.js';
93
93
  import { Alert, AlertTitle, AlertDescription } from './chunk-MV3MTHWQ.js';
94
94
  export { Alert, AlertDescription, AlertTitle, alertVariants } from './chunk-MV3MTHWQ.js';
95
95
  import { cn } from './chunk-F3SOEIN2.js';
96
96
  export { cn } from './chunk-F3SOEIN2.js';
97
- import * as React48 from 'react';
98
- import React48__default, { createContext, useState, useEffect, useCallback, useMemo, useContext, useRef } from 'react';
97
+ import * as React49 from 'react';
98
+ import React49__default, { createContext, useState, useEffect, useCallback, useMemo, useContext, useRef } from 'react';
99
99
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
100
100
  import { cva } from 'class-variance-authority';
101
101
  import * as ReactDOM from 'react-dom';
@@ -569,8 +569,8 @@ function AdditionalFields({
569
569
  className,
570
570
  collapsible = true
571
571
  }) {
572
- const [isExpanded, setIsExpanded] = React48.useState(defaultExpanded);
573
- const contentId = React48.useId();
572
+ const [isExpanded, setIsExpanded] = React49.useState(defaultExpanded);
573
+ const contentId = React49.useId();
574
574
  const handleNameChange = (id, name) => {
575
575
  const updated = value.map(
576
576
  (entry) => entry.id === id ? { ...entry, name } : entry
@@ -1008,10 +1008,10 @@ function AddressForm({
1008
1008
  className,
1009
1009
  googlePlaces
1010
1010
  }) {
1011
- const generatedId = React48.useId();
1011
+ const generatedId = React49.useId();
1012
1012
  const idPrefix = id || generatedId;
1013
- const autocompleteRef = React48.useRef(null);
1014
- const inputRef = React48.useRef(null);
1013
+ const autocompleteRef = React49.useRef(null);
1014
+ const inputRef = React49.useRef(null);
1015
1015
  const mergedLabels = { ...DEFAULT_LABELS, ...labels };
1016
1016
  const mergedPlaceholders = { ...DEFAULT_PLACEHOLDERS, ...placeholders };
1017
1017
  const handleChange = (field, fieldValue) => {
@@ -1020,7 +1020,7 @@ function AddressForm({
1020
1020
  [field]: fieldValue
1021
1021
  });
1022
1022
  };
1023
- React48.useEffect(() => {
1023
+ React49.useEffect(() => {
1024
1024
  if (!googlePlaces?.enabled || !inputRef.current) return;
1025
1025
  const googleMaps = globalThis.window?.google;
1026
1026
  if (!googleMaps?.maps?.places?.Autocomplete) {
@@ -1881,7 +1881,7 @@ function ToolResultDisplay({
1881
1881
  showRawData = false,
1882
1882
  className
1883
1883
  }) {
1884
- const [showJson, setShowJson] = React48.useState(false);
1884
+ const [showJson, setShowJson] = React49.useState(false);
1885
1885
  if (result.type === "error") {
1886
1886
  return /* @__PURE__ */ jsx(
1887
1887
  "div",
@@ -2043,7 +2043,7 @@ function MCPToolCallDisplay({
2043
2043
  onLinkClick,
2044
2044
  className
2045
2045
  }) {
2046
- const [showDetails, setShowDetails] = React48.useState(!defaultCollapsed);
2046
+ const [showDetails, setShowDetails] = React49.useState(!defaultCollapsed);
2047
2047
  const formatDuration2 = (ms) => {
2048
2048
  if (!ms) return null;
2049
2049
  if (ms < 1e3) return `${ms}ms`;
@@ -2290,7 +2290,7 @@ function ContentBlock({
2290
2290
  role,
2291
2291
  renderTextContent
2292
2292
  }) {
2293
- const [isCollapsed, setIsCollapsed] = React48.useState(
2293
+ const [isCollapsed, setIsCollapsed] = React49.useState(
2294
2294
  content.collapsed ?? false
2295
2295
  );
2296
2296
  if (content.type === "text" && content.text) {
@@ -2725,7 +2725,7 @@ function AttachmentPreviewItem({
2725
2725
  );
2726
2726
  }
2727
2727
  AttachmentPreviewItem.displayName = "AttachmentPreviewItem";
2728
- var AttachmentPicker = React48.forwardRef(
2728
+ var AttachmentPicker = React49.forwardRef(
2729
2729
  ({
2730
2730
  onFilesSelected,
2731
2731
  acceptedTypes = ["image/*", "video/*", ".pdf", ".doc", ".docx"],
@@ -2738,8 +2738,8 @@ var AttachmentPicker = React48.forwardRef(
2738
2738
  className,
2739
2739
  children
2740
2740
  }, ref) => {
2741
- const inputRef = React48.useRef(null);
2742
- React48.useImperativeHandle(ref, () => inputRef.current);
2741
+ const inputRef = React49.useRef(null);
2742
+ React49.useImperativeHandle(ref, () => inputRef.current);
2743
2743
  const handleClick = () => {
2744
2744
  inputRef.current?.click();
2745
2745
  };
@@ -2831,8 +2831,8 @@ function DragDropZone({
2831
2831
  children,
2832
2832
  className
2833
2833
  }) {
2834
- const [isDragging, setIsDragging] = React48.useState(false);
2835
- const dragCounterRef = React48.useRef(0);
2834
+ const [isDragging, setIsDragging] = React49.useState(false);
2835
+ const dragCounterRef = React49.useRef(0);
2836
2836
  const handleDragEnter = (event) => {
2837
2837
  event.preventDefault();
2838
2838
  event.stopPropagation();
@@ -2934,7 +2934,7 @@ function CameraButton({
2934
2934
  disabled = false,
2935
2935
  className
2936
2936
  }) {
2937
- const inputRef = React48.useRef(null);
2937
+ const inputRef = React49.useRef(null);
2938
2938
  const handleClick = () => {
2939
2939
  inputRef.current?.click();
2940
2940
  };
@@ -3072,7 +3072,7 @@ var sendButtonVariants = cva(
3072
3072
  }
3073
3073
  }
3074
3074
  );
3075
- var SendButton = React48.forwardRef(
3075
+ var SendButton = React49.forwardRef(
3076
3076
  ({ className, variant, canSend, isLoading, disabled, ...props }, ref) => {
3077
3077
  return /* @__PURE__ */ jsx(
3078
3078
  "button",
@@ -3137,7 +3137,7 @@ var SendButton = React48.forwardRef(
3137
3137
  }
3138
3138
  );
3139
3139
  SendButton.displayName = "SendButton";
3140
- var MessageComposer = React48.forwardRef(
3140
+ var MessageComposer = React49.forwardRef(
3141
3141
  ({
3142
3142
  onSend,
3143
3143
  onTypingStart,
@@ -3162,11 +3162,11 @@ var MessageComposer = React48.forwardRef(
3162
3162
  inputTrailing,
3163
3163
  className
3164
3164
  }, ref) => {
3165
- const textareaRef = React48.useRef(null);
3166
- const [internalContent, setInternalContent] = React48.useState("");
3165
+ const textareaRef = React49.useRef(null);
3166
+ const [internalContent, setInternalContent] = React49.useState("");
3167
3167
  const isControlled = controlledValue !== void 0;
3168
3168
  const content = isControlled ? controlledValue : internalContent;
3169
- const setContent = React48.useCallback(
3169
+ const setContent = React49.useCallback(
3170
3170
  (val) => {
3171
3171
  if (isControlled) {
3172
3172
  const newVal = typeof val === "function" ? val(controlledValue) : val;
@@ -3177,20 +3177,20 @@ var MessageComposer = React48.forwardRef(
3177
3177
  },
3178
3178
  [isControlled, controlledValue, onValueChange]
3179
3179
  );
3180
- const [attachments, setAttachments] = React48.useState(
3180
+ const [attachments, setAttachments] = React49.useState(
3181
3181
  []
3182
3182
  );
3183
- const [isTyping, setIsTyping] = React48.useState(false);
3184
- const typingTimeoutRef = React48.useRef(null);
3185
- React48.useImperativeHandle(ref, () => textareaRef.current);
3186
- React48.useEffect(() => {
3183
+ const [isTyping, setIsTyping] = React49.useState(false);
3184
+ const typingTimeoutRef = React49.useRef(null);
3185
+ React49.useImperativeHandle(ref, () => textareaRef.current);
3186
+ React49.useEffect(() => {
3187
3187
  const textarea = textareaRef.current;
3188
3188
  if (textarea) {
3189
3189
  textarea.style.height = "auto";
3190
3190
  textarea.style.height = `${Math.min(textarea.scrollHeight, 150)}px`;
3191
3191
  }
3192
3192
  }, [content]);
3193
- React48.useEffect(() => {
3193
+ React49.useEffect(() => {
3194
3194
  if (content.length > 0 && !isTyping) {
3195
3195
  setIsTyping(true);
3196
3196
  onTypingStart?.();
@@ -3210,12 +3210,12 @@ var MessageComposer = React48.forwardRef(
3210
3210
  }
3211
3211
  };
3212
3212
  }, [content, isTyping, onTypingStart, onTypingStop]);
3213
- React48.useEffect(() => {
3213
+ React49.useEffect(() => {
3214
3214
  if (autoFocus) {
3215
3215
  textareaRef.current?.focus();
3216
3216
  }
3217
3217
  }, [autoFocus]);
3218
- React48.useEffect(() => {
3218
+ React49.useEffect(() => {
3219
3219
  if (replyTo) {
3220
3220
  textareaRef.current?.focus();
3221
3221
  }
@@ -3279,7 +3279,7 @@ var MessageComposer = React48.forwardRef(
3279
3279
  return prev.filter((a) => a.id !== attachmentId);
3280
3280
  });
3281
3281
  };
3282
- React48.useEffect(() => {
3282
+ React49.useEffect(() => {
3283
3283
  const currentAttachments = attachments;
3284
3284
  return () => {
3285
3285
  currentAttachments.forEach((a) => {
@@ -3846,7 +3846,7 @@ function defaultFormatTimestamp(timestamp) {
3846
3846
  minute: "2-digit"
3847
3847
  });
3848
3848
  }
3849
- var MessageBubble = React48.forwardRef(
3849
+ var MessageBubble = React49.forwardRef(
3850
3850
  ({
3851
3851
  className,
3852
3852
  message,
@@ -4321,7 +4321,7 @@ function LoadMoreButton({
4321
4321
  );
4322
4322
  }
4323
4323
  LoadMoreButton.displayName = "LoadMoreButton";
4324
- var MessageList = React48.forwardRef(
4324
+ var MessageList = React49.forwardRef(
4325
4325
  ({
4326
4326
  messages,
4327
4327
  currentUser,
@@ -4340,19 +4340,19 @@ var MessageList = React48.forwardRef(
4340
4340
  className,
4341
4341
  autoScroll = "onNewMessage"
4342
4342
  }, ref) => {
4343
- const scrollContainerRef = React48.useRef(null);
4344
- const bottomRef = React48.useRef(null);
4345
- const [isUserScrolled, setIsUserScrolled] = React48.useState(false);
4346
- const prevMessageCountRef = React48.useRef(messages.length);
4347
- React48.useImperativeHandle(ref, () => scrollContainerRef.current);
4348
- const handleScroll = React48.useCallback(() => {
4343
+ const scrollContainerRef = React49.useRef(null);
4344
+ const bottomRef = React49.useRef(null);
4345
+ const [isUserScrolled, setIsUserScrolled] = React49.useState(false);
4346
+ const prevMessageCountRef = React49.useRef(messages.length);
4347
+ React49.useImperativeHandle(ref, () => scrollContainerRef.current);
4348
+ const handleScroll = React49.useCallback(() => {
4349
4349
  const container = scrollContainerRef.current;
4350
4350
  if (!container) return;
4351
4351
  const { scrollTop, scrollHeight, clientHeight } = container;
4352
4352
  const isAtBottom = scrollHeight - scrollTop - clientHeight < 100;
4353
4353
  setIsUserScrolled(!isAtBottom);
4354
4354
  }, []);
4355
- React48.useEffect(() => {
4355
+ React49.useEffect(() => {
4356
4356
  const container = scrollContainerRef.current;
4357
4357
  const bottom = bottomRef.current;
4358
4358
  if (!container || !bottom) return;
@@ -4368,7 +4368,7 @@ var MessageList = React48.forwardRef(
4368
4368
  }
4369
4369
  }
4370
4370
  }, [messages, currentUser.id, autoScroll, isUserScrolled]);
4371
- React48.useEffect(() => {
4371
+ React49.useEffect(() => {
4372
4372
  const bottom = bottomRef.current;
4373
4373
  if (bottom && !isLoading) {
4374
4374
  bottom.scrollIntoView();
@@ -4421,7 +4421,7 @@ var MessageList = React48.forwardRef(
4421
4421
  {
4422
4422
  "data-slot": "message-list-content",
4423
4423
  className: "flex flex-col gap-1 p-4",
4424
- children: messageGroups.map((group) => /* @__PURE__ */ jsxs(React48.Fragment, { children: [
4424
+ children: messageGroups.map((group) => /* @__PURE__ */ jsxs(React49.Fragment, { children: [
4425
4425
  groupByDate && group.label && /* @__PURE__ */ jsx(DateSeparator, { label: group.label }),
4426
4426
  group.messages.map((message, index) => {
4427
4427
  const prevMessage = group.messages[index - 1];
@@ -4728,13 +4728,13 @@ function AIChat({
4728
4728
  onClose,
4729
4729
  renderTextContent
4730
4730
  }) {
4731
- const messagesEndRef = React48.useRef(null);
4732
- const messages = React48.useMemo(
4731
+ const messagesEndRef = React49.useRef(null);
4732
+ const messages = React49.useMemo(
4733
4733
  () => session?.messages || messagesProp || [],
4734
4734
  [session?.messages, messagesProp]
4735
4735
  );
4736
4736
  const isGenerating = session?.isGenerating || isGeneratingProp || false;
4737
- React48.useEffect(() => {
4737
+ React49.useEffect(() => {
4738
4738
  messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
4739
4739
  }, [messages]);
4740
4740
  const handleSend = async (message) => {
@@ -5014,7 +5014,7 @@ function FloatingAIChat({
5014
5014
  pulse = false,
5015
5015
  ...chatProps
5016
5016
  }) {
5017
- const [internalOpen, setInternalOpen] = React48.useState(defaultOpen);
5017
+ const [internalOpen, setInternalOpen] = React49.useState(defaultOpen);
5018
5018
  const isControlled = controlledOpen !== void 0;
5019
5019
  const isOpen = isControlled ? controlledOpen : internalOpen;
5020
5020
  const handleOpenChange = (open) => {
@@ -5044,6 +5044,635 @@ function FloatingAIChat({
5044
5044
  )
5045
5045
  ] });
5046
5046
  }
5047
+ function normalizeString(value) {
5048
+ return value.trim().replace(/\s+/g, " ").toLowerCase();
5049
+ }
5050
+ function stableStringify(value, seen = /* @__PURE__ */ new WeakSet()) {
5051
+ if (value === null || typeof value !== "object") return JSON.stringify(value);
5052
+ if (seen.has(value)) return '"[Circular]"';
5053
+ seen.add(value);
5054
+ if (Array.isArray(value))
5055
+ return "[" + value.map((v) => stableStringify(v, seen)).join(",") + "]";
5056
+ const keys = Object.keys(value).sort();
5057
+ return "{" + keys.map(
5058
+ (k) => JSON.stringify(k) + ":" + stableStringify(value[k], seen)
5059
+ ).join(",") + "}";
5060
+ }
5061
+ function safeStableStringify(value) {
5062
+ try {
5063
+ return stableStringify(value);
5064
+ } catch {
5065
+ return '"[Unserializable]"';
5066
+ }
5067
+ }
5068
+ function defaultReconciliationIsEqual(current, proposed) {
5069
+ const a = current ?? "";
5070
+ const b = proposed ?? "";
5071
+ if (a === b) return true;
5072
+ if (typeof a === "string" && typeof b === "string") {
5073
+ return normalizeString(a) === normalizeString(b);
5074
+ }
5075
+ if (a instanceof Date && b instanceof Date) {
5076
+ return a.getTime() === b.getTime();
5077
+ }
5078
+ if (typeof a === "object" && typeof b === "object" && a && b) {
5079
+ try {
5080
+ return stableStringify(a) === stableStringify(b);
5081
+ } catch {
5082
+ return false;
5083
+ }
5084
+ }
5085
+ return false;
5086
+ }
5087
+ function resolveConfidenceLevel(p) {
5088
+ if (p.confidenceLevel) return p.confidenceLevel;
5089
+ if (typeof p.confidence !== "number") return void 0;
5090
+ if (p.confidence >= 0.85) return "high";
5091
+ if (p.confidence >= 0.6) return "medium";
5092
+ return "low";
5093
+ }
5094
+ function defaultAcceptedFor(p) {
5095
+ if (typeof p.defaultAccepted === "boolean") return p.defaultAccepted;
5096
+ if (p.required) return true;
5097
+ return resolveConfidenceLevel(p) !== "low";
5098
+ }
5099
+ var panelVariants = cva(
5100
+ [
5101
+ "rounded-xl bg-card text-card-foreground",
5102
+ "border border-border shadow-sm",
5103
+ "flex flex-col overflow-hidden"
5104
+ ],
5105
+ {
5106
+ variants: {
5107
+ tone: {
5108
+ default: "",
5109
+ accent: "ring-1 ring-primary-200 dark:ring-primary-900"
5110
+ }
5111
+ },
5112
+ defaultVariants: {
5113
+ tone: "default"
5114
+ }
5115
+ }
5116
+ );
5117
+ var confidenceBadgeVariants = cva(
5118
+ "inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium",
5119
+ {
5120
+ variants: {
5121
+ level: {
5122
+ high: "bg-success-100 text-success dark:bg-success-900/30 dark:text-success-300",
5123
+ medium: "bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300",
5124
+ low: "bg-amber-200 text-amber-800 dark:bg-amber-900/40 dark:text-amber-200"
5125
+ }
5126
+ },
5127
+ defaultVariants: { level: "high" }
5128
+ }
5129
+ );
5130
+ function formatValueDefault(value) {
5131
+ if (value === null || value === void 0 || value === "") {
5132
+ return /* @__PURE__ */ jsx("span", { className: "text-muted-foreground italic", "aria-label": "empty", children: "\u2014" });
5133
+ }
5134
+ if (value instanceof Date) return value.toLocaleDateString();
5135
+ if (typeof value === "object") {
5136
+ try {
5137
+ return JSON.stringify(value);
5138
+ } catch {
5139
+ return String(value);
5140
+ }
5141
+ }
5142
+ return String(value);
5143
+ }
5144
+ function ConfidenceBadge({ level }) {
5145
+ const labels = {
5146
+ high: "High confidence",
5147
+ medium: "Medium confidence",
5148
+ low: "Low confidence"
5149
+ };
5150
+ return /* @__PURE__ */ jsx(
5151
+ "span",
5152
+ {
5153
+ className: cn(confidenceBadgeVariants({ level })),
5154
+ "data-slot": "reconciliation-confidence",
5155
+ children: labels[level]
5156
+ }
5157
+ );
5158
+ }
5159
+ function ReconciliationProposalRow({
5160
+ proposal,
5161
+ state,
5162
+ onAcceptedChange,
5163
+ onValueChange,
5164
+ onToggleEditing
5165
+ }) {
5166
+ const safeState = state ?? {
5167
+ accepted: defaultAcceptedFor(proposal),
5168
+ editing: false,
5169
+ value: proposal.proposed
5170
+ };
5171
+ const rowId = React49.useId();
5172
+ const checkboxId = `${rowId}-accept`;
5173
+ const level = resolveConfidenceLevel(proposal);
5174
+ const render = proposal.renderValue ?? formatValueDefault;
5175
+ const canEdit = Boolean(proposal.renderEditor);
5176
+ return /* @__PURE__ */ jsxs(
5177
+ "li",
5178
+ {
5179
+ "data-slot": "reconciliation-row",
5180
+ "data-accepted": safeState.accepted,
5181
+ className: cn(
5182
+ "flex gap-3 px-4 py-3 transition-colors",
5183
+ safeState.accepted ? "bg-background" : "bg-muted/40",
5184
+ "border-border border-b last:border-b-0"
5185
+ ),
5186
+ children: [
5187
+ /* @__PURE__ */ jsx("div", { className: "pt-0.5", children: /* @__PURE__ */ jsx(
5188
+ Checkbox,
5189
+ {
5190
+ id: checkboxId,
5191
+ checked: safeState.accepted,
5192
+ onChange: (e) => onAcceptedChange(e.target.checked),
5193
+ disabled: proposal.required,
5194
+ "aria-label": `Apply update for ${proposal.label}`
5195
+ }
5196
+ ) }),
5197
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
5198
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3", children: [
5199
+ /* @__PURE__ */ jsxs(
5200
+ "label",
5201
+ {
5202
+ htmlFor: checkboxId,
5203
+ className: cn(
5204
+ "text-foreground cursor-pointer text-sm font-medium",
5205
+ proposal.required && "cursor-default"
5206
+ ),
5207
+ children: [
5208
+ proposal.label,
5209
+ proposal.required && /* @__PURE__ */ jsx(
5210
+ "span",
5211
+ {
5212
+ className: "text-muted-foreground ml-1 text-xs font-normal",
5213
+ "aria-label": "required",
5214
+ children: "(required)"
5215
+ }
5216
+ )
5217
+ ]
5218
+ }
5219
+ ),
5220
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
5221
+ level && /* @__PURE__ */ jsx(ConfidenceBadge, { level }),
5222
+ canEdit && /* @__PURE__ */ jsx(
5223
+ "button",
5224
+ {
5225
+ type: "button",
5226
+ onClick: onToggleEditing,
5227
+ className: cn(
5228
+ "text-muted-foreground hover:text-foreground text-xs",
5229
+ "focus-visible:ring-ring rounded focus-visible:ring-2 focus-visible:outline-none",
5230
+ "hover:underline"
5231
+ ),
5232
+ "aria-expanded": safeState.editing,
5233
+ "aria-controls": `${rowId}-editor`,
5234
+ children: safeState.editing ? "Done" : "Edit"
5235
+ }
5236
+ )
5237
+ ] })
5238
+ ] }),
5239
+ proposal.description && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground mt-0.5 text-xs", children: proposal.description }),
5240
+ /* @__PURE__ */ jsxs("dl", { className: "mt-2 grid grid-cols-1 gap-2 text-sm sm:grid-cols-2", children: [
5241
+ /* @__PURE__ */ jsxs("div", { className: "border-border/60 rounded-md border border-dashed px-3 py-2", children: [
5242
+ /* @__PURE__ */ jsx("dt", { className: "text-muted-foreground text-[11px] tracking-wide uppercase", children: "On file" }),
5243
+ /* @__PURE__ */ jsx("dd", { className: "text-foreground mt-0.5 break-words", children: render(proposal.current) })
5244
+ ] }),
5245
+ /* @__PURE__ */ jsxs(
5246
+ "div",
5247
+ {
5248
+ className: cn(
5249
+ "rounded-md border px-3 py-2",
5250
+ safeState.accepted ? "border-primary-300 bg-primary-50/60 dark:border-primary-700 dark:bg-primary-950/30" : "border-border bg-background"
5251
+ ),
5252
+ children: [
5253
+ /* @__PURE__ */ jsxs("dt", { className: "text-muted-foreground flex items-center gap-1 text-[11px] tracking-wide uppercase", children: [
5254
+ /* @__PURE__ */ jsx(
5255
+ SparklesIcon,
5256
+ {
5257
+ size: "sm",
5258
+ className: "text-primary-700 dark:text-primary-400"
5259
+ }
5260
+ ),
5261
+ "From AI",
5262
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "(AI-suggested value)" })
5263
+ ] }),
5264
+ /* @__PURE__ */ jsx(
5265
+ "dd",
5266
+ {
5267
+ id: `${rowId}-editor`,
5268
+ className: "text-foreground mt-0.5 break-words",
5269
+ children: safeState.editing && proposal.renderEditor ? proposal.renderEditor(safeState.value, onValueChange) : render(safeState.value)
5270
+ }
5271
+ )
5272
+ ]
5273
+ }
5274
+ )
5275
+ ] }),
5276
+ proposal.hint && /* @__PURE__ */ jsx(
5277
+ "p",
5278
+ {
5279
+ className: cn(
5280
+ "mt-2 text-xs",
5281
+ level === "low" ? "text-amber-700 dark:text-amber-300" : "text-muted-foreground"
5282
+ ),
5283
+ children: proposal.hint
5284
+ }
5285
+ )
5286
+ ] })
5287
+ ]
5288
+ }
5289
+ );
5290
+ }
5291
+ function relativeTimeLabel(date) {
5292
+ const seconds = Math.max(0, Math.round((Date.now() - date.getTime()) / 1e3));
5293
+ if (seconds < 45) return "just now";
5294
+ if (seconds < 90) return "1 minute ago";
5295
+ if (seconds < 3600) return `${Math.round(seconds / 60)} minutes ago`;
5296
+ if (seconds < 5400) return "1 hour ago";
5297
+ if (seconds < 86400) return `${Math.round(seconds / 3600)} hours ago`;
5298
+ return date.toLocaleString();
5299
+ }
5300
+ function SourcePill({ source }) {
5301
+ return /* @__PURE__ */ jsxs(
5302
+ "div",
5303
+ {
5304
+ "data-slot": "reconciliation-source",
5305
+ className: cn(
5306
+ "inline-flex items-center gap-2 rounded-full",
5307
+ "border-border bg-muted/60 border px-3 py-1 text-xs font-medium",
5308
+ "text-muted-foreground"
5309
+ ),
5310
+ children: [
5311
+ /* @__PURE__ */ jsx("span", { className: "text-primary-700 dark:text-primary-400 flex items-center", children: source.icon ?? /* @__PURE__ */ jsx(SparklesIcon, { size: "sm" }) }),
5312
+ source.thumbnailUrl && /* @__PURE__ */ jsx(
5313
+ "img",
5314
+ {
5315
+ src: source.thumbnailUrl,
5316
+ alt: "",
5317
+ className: "h-5 w-5 rounded object-cover",
5318
+ "aria-hidden": "true"
5319
+ }
5320
+ ),
5321
+ /* @__PURE__ */ jsx("span", { className: "text-foreground", children: source.label }),
5322
+ source.generatedAt && /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
5323
+ "\xB7 ",
5324
+ relativeTimeLabel(source.generatedAt)
5325
+ ] })
5326
+ ]
5327
+ }
5328
+ );
5329
+ }
5330
+ function AIReconciliationPanel({
5331
+ title,
5332
+ description,
5333
+ source,
5334
+ proposals,
5335
+ onApply,
5336
+ onSkip,
5337
+ variant = "panel",
5338
+ open,
5339
+ onOpenChange,
5340
+ tone,
5341
+ applyLabel,
5342
+ skipLabel = "Skip for now",
5343
+ acceptAllLabel = "Accept all",
5344
+ rejectAllLabel = "Reject all",
5345
+ hideBulkActions,
5346
+ isEqual = defaultReconciliationIsEqual,
5347
+ onNothingToReconcile,
5348
+ className
5349
+ }) {
5350
+ const effective = React49.useMemo(
5351
+ () => proposals.filter((p) => !isEqual(p.current, p.proposed)),
5352
+ [proposals, isEqual]
5353
+ );
5354
+ const stateSignature = React49.useMemo(
5355
+ () => effective.map(
5356
+ (p) => `${p.id}\u241F${safeStableStringify(p.proposed)}\u241F${p.defaultAccepted ?? ""}\u241F${p.required ?? ""}\u241F${p.confidence ?? ""}\u241F${p.confidenceLevel ?? ""}`
5357
+ ).join("|"),
5358
+ [effective]
5359
+ );
5360
+ const [rowStates, setRowStates] = React49.useState(
5361
+ () => Object.fromEntries(
5362
+ effective.map((p) => [
5363
+ p.id,
5364
+ {
5365
+ accepted: defaultAcceptedFor(p),
5366
+ editing: false,
5367
+ value: p.proposed
5368
+ }
5369
+ ])
5370
+ )
5371
+ );
5372
+ React49.useEffect(() => {
5373
+ setRowStates(
5374
+ Object.fromEntries(
5375
+ effective.map((p) => [
5376
+ p.id,
5377
+ {
5378
+ accepted: defaultAcceptedFor(p),
5379
+ editing: false,
5380
+ value: p.proposed
5381
+ }
5382
+ ])
5383
+ )
5384
+ );
5385
+ }, [stateSignature]);
5386
+ const reportedEmpty = React49.useRef(false);
5387
+ React49.useEffect(() => {
5388
+ if (effective.length === 0 && !reportedEmpty.current) {
5389
+ reportedEmpty.current = true;
5390
+ onNothingToReconcile?.();
5391
+ }
5392
+ if (effective.length > 0) reportedEmpty.current = false;
5393
+ }, [effective.length, onNothingToReconcile]);
5394
+ const acceptedCount = React49.useMemo(
5395
+ () => Object.values(rowStates).filter((s) => s.accepted).length,
5396
+ [rowStates]
5397
+ );
5398
+ const [submitting, setSubmitting] = React49.useState(false);
5399
+ const setAllAccepted = React49.useCallback(
5400
+ (accepted) => {
5401
+ setRowStates((prev) => {
5402
+ const next = { ...prev };
5403
+ for (const p of effective) {
5404
+ if (p.required && !accepted) continue;
5405
+ const base = prev[p.id] ?? {
5406
+ accepted: defaultAcceptedFor(p),
5407
+ editing: false,
5408
+ value: p.proposed
5409
+ };
5410
+ next[p.id] = { ...base, accepted };
5411
+ }
5412
+ return next;
5413
+ });
5414
+ },
5415
+ [effective]
5416
+ );
5417
+ const setRowAccepted = React49.useCallback(
5418
+ (id, accepted) => {
5419
+ const proposal = effective.find((p) => p.id === id);
5420
+ setRowStates((prev) => {
5421
+ const base = prev[id] ?? {
5422
+ accepted: proposal ? defaultAcceptedFor(proposal) : false,
5423
+ editing: false,
5424
+ value: proposal?.proposed
5425
+ };
5426
+ return { ...prev, [id]: { ...base, accepted } };
5427
+ });
5428
+ },
5429
+ [effective]
5430
+ );
5431
+ const setRowValue = React49.useCallback(
5432
+ (id, value) => {
5433
+ const proposal = effective.find((p) => p.id === id);
5434
+ setRowStates((prev) => {
5435
+ const base = prev[id] ?? {
5436
+ accepted: proposal ? defaultAcceptedFor(proposal) : false,
5437
+ editing: false,
5438
+ value: proposal?.proposed
5439
+ };
5440
+ return { ...prev, [id]: { ...base, value } };
5441
+ });
5442
+ },
5443
+ [effective]
5444
+ );
5445
+ const toggleRowEditing = React49.useCallback(
5446
+ (id) => {
5447
+ const proposal = effective.find((p) => p.id === id);
5448
+ setRowStates((prev) => {
5449
+ const base = prev[id] ?? {
5450
+ accepted: proposal ? defaultAcceptedFor(proposal) : false,
5451
+ editing: false,
5452
+ value: proposal?.proposed
5453
+ };
5454
+ return { ...prev, [id]: { ...base, editing: !base.editing } };
5455
+ });
5456
+ },
5457
+ [effective]
5458
+ );
5459
+ const handleApply = React49.useCallback(async () => {
5460
+ const accepted = effective.filter((p) => rowStates[p.id]?.accepted).map((p) => ({
5461
+ id: p.id,
5462
+ value: rowStates[p.id]?.value ?? p.proposed
5463
+ }));
5464
+ if (accepted.length === 0) return;
5465
+ try {
5466
+ setSubmitting(true);
5467
+ await onApply(accepted);
5468
+ } finally {
5469
+ setSubmitting(false);
5470
+ }
5471
+ }, [effective, rowStates, onApply]);
5472
+ const containerRef = React49.useRef(null);
5473
+ React49.useEffect(() => {
5474
+ const el = containerRef.current;
5475
+ if (!el) return void 0;
5476
+ const handler = (e) => {
5477
+ if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
5478
+ if (acceptedCount === 0 || submitting) return;
5479
+ e.preventDefault();
5480
+ void handleApply();
5481
+ return;
5482
+ }
5483
+ if (e.key !== "a" && e.key !== "A") return;
5484
+ if (e.metaKey || e.ctrlKey || e.altKey) return;
5485
+ const target = e.target;
5486
+ const tag = target?.tagName?.toLowerCase();
5487
+ if (tag === "input" || tag === "textarea" || target?.isContentEditable) {
5488
+ return;
5489
+ }
5490
+ e.preventDefault();
5491
+ setAllAccepted(acceptedCount !== effective.length);
5492
+ };
5493
+ el.addEventListener("keydown", handler);
5494
+ return () => el.removeEventListener("keydown", handler);
5495
+ }, [
5496
+ acceptedCount,
5497
+ effective.length,
5498
+ setAllAccepted,
5499
+ handleApply,
5500
+ submitting
5501
+ ]);
5502
+ const allAccepted = effective.length > 0 && acceptedCount === effective.length;
5503
+ const someAccepted = acceptedCount > 0 && !allAccepted;
5504
+ const resolvedApplyLabel = applyLabel ?? (acceptedCount === 1 ? "Apply 1 update" : `Apply ${acceptedCount} updates`);
5505
+ const grouped = React49.useMemo(() => {
5506
+ const map = /* @__PURE__ */ new Map();
5507
+ for (const p of effective) {
5508
+ const key = p.group;
5509
+ const arr = map.get(key) ?? [];
5510
+ arr.push(p);
5511
+ map.set(key, arr);
5512
+ }
5513
+ return Array.from(map.entries());
5514
+ }, [effective]);
5515
+ const bulkBar = !hideBulkActions && effective.length > 1 ? /* @__PURE__ */ jsxs(
5516
+ "div",
5517
+ {
5518
+ className: cn(
5519
+ "border-border flex items-center justify-between gap-2 border-b",
5520
+ "bg-muted/40 px-4 py-2"
5521
+ ),
5522
+ "data-slot": "reconciliation-bulk",
5523
+ children: [
5524
+ /* @__PURE__ */ jsx(
5525
+ Checkbox,
5526
+ {
5527
+ checked: allAccepted,
5528
+ indeterminate: someAccepted,
5529
+ onChange: (e) => setAllAccepted(e.target.checked),
5530
+ "aria-label": allAccepted ? rejectAllLabel : acceptAllLabel,
5531
+ label: allAccepted ? rejectAllLabel : acceptAllLabel
5532
+ }
5533
+ ),
5534
+ /* @__PURE__ */ jsxs(
5535
+ "p",
5536
+ {
5537
+ className: "text-muted-foreground text-xs",
5538
+ role: "status",
5539
+ "aria-live": "polite",
5540
+ children: [
5541
+ acceptedCount,
5542
+ " of ",
5543
+ effective.length,
5544
+ " selected"
5545
+ ]
5546
+ }
5547
+ )
5548
+ ]
5549
+ }
5550
+ ) : null;
5551
+ const rowList = /* @__PURE__ */ jsx(
5552
+ "ul",
5553
+ {
5554
+ "data-slot": "reconciliation-rows",
5555
+ className: "divide-border max-h-[60vh] overflow-y-auto",
5556
+ children: grouped.map(([groupKey, items]) => /* @__PURE__ */ jsxs(React49.Fragment, { children: [
5557
+ groupKey && /* @__PURE__ */ jsx(
5558
+ "li",
5559
+ {
5560
+ "aria-hidden": "true",
5561
+ className: cn(
5562
+ "bg-muted/30 text-muted-foreground border-border",
5563
+ "border-b px-4 py-1.5 text-[11px] font-medium tracking-wide uppercase"
5564
+ ),
5565
+ children: groupKey
5566
+ }
5567
+ ),
5568
+ items.map((p) => /* @__PURE__ */ jsx(
5569
+ ReconciliationProposalRow,
5570
+ {
5571
+ proposal: p,
5572
+ state: rowStates[p.id],
5573
+ onAcceptedChange: (a) => setRowAccepted(p.id, a),
5574
+ onValueChange: (v) => setRowValue(p.id, v),
5575
+ onToggleEditing: () => toggleRowEditing(p.id)
5576
+ },
5577
+ p.id
5578
+ ))
5579
+ ] }, groupKey ?? "__nogroup"))
5580
+ }
5581
+ );
5582
+ const footerButtons = /* @__PURE__ */ jsxs(Fragment, { children: [
5583
+ onSkip && /* @__PURE__ */ jsx(
5584
+ Button,
5585
+ {
5586
+ type: "button",
5587
+ variant: "ghost",
5588
+ onClick: onSkip,
5589
+ disabled: submitting,
5590
+ children: skipLabel
5591
+ }
5592
+ ),
5593
+ /* @__PURE__ */ jsx(
5594
+ Button,
5595
+ {
5596
+ type: "button",
5597
+ onClick: handleApply,
5598
+ disabled: acceptedCount === 0 || submitting,
5599
+ isLoading: submitting,
5600
+ loadingText: "Applying\u2026",
5601
+ children: resolvedApplyLabel
5602
+ }
5603
+ )
5604
+ ] });
5605
+ if (variant === "modal") {
5606
+ if (!onOpenChange) {
5607
+ throw new Error(
5608
+ 'AIReconciliationPanel: `onOpenChange` is required when `variant="modal"`.'
5609
+ );
5610
+ }
5611
+ return /* @__PURE__ */ jsxs(Modal, { open: Boolean(open), onOpenChange, size: "2xl", children: [
5612
+ /* @__PURE__ */ jsxs(ModalHeader, { children: [
5613
+ /* @__PURE__ */ jsx(ModalTitle, { children: title }),
5614
+ /* @__PURE__ */ jsx(ModalClose, {})
5615
+ ] }),
5616
+ /* @__PURE__ */ jsx(ModalBody, { className: "px-0 py-0", children: /* @__PURE__ */ jsxs(
5617
+ "div",
5618
+ {
5619
+ ref: containerRef,
5620
+ "data-slot": "reconciliation-panel",
5621
+ "data-variant": "modal",
5622
+ className: cn("flex flex-col", className),
5623
+ role: "group",
5624
+ "aria-label": title,
5625
+ children: [
5626
+ /* @__PURE__ */ jsxs("div", { className: "border-border border-b px-6 py-3", children: [
5627
+ description && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-sm", children: description }),
5628
+ /* @__PURE__ */ jsx("div", { className: cn(description && "mt-3"), children: /* @__PURE__ */ jsx(SourcePill, { source }) })
5629
+ ] }),
5630
+ effective.length === 0 ? /* @__PURE__ */ 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__ */ jsxs(Fragment, { children: [
5631
+ bulkBar,
5632
+ rowList
5633
+ ] })
5634
+ ]
5635
+ }
5636
+ ) }),
5637
+ /* @__PURE__ */ jsx(ModalFooter, { children: effective.length === 0 ? /* @__PURE__ */ jsx(Button, { onClick: () => onOpenChange(false), children: "Close" }) : footerButtons })
5638
+ ] });
5639
+ }
5640
+ if (effective.length === 0) return null;
5641
+ return /* @__PURE__ */ jsxs(
5642
+ "div",
5643
+ {
5644
+ ref: containerRef,
5645
+ "data-slot": "reconciliation-panel",
5646
+ "data-variant": "panel",
5647
+ className: cn(panelVariants({ tone }), className),
5648
+ role: "group",
5649
+ "aria-label": title,
5650
+ children: [
5651
+ /* @__PURE__ */ jsx("div", { className: "border-border border-b px-4 pt-4 pb-3", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
5652
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
5653
+ /* @__PURE__ */ jsx("h2", { className: "text-foreground text-base font-semibold", children: title }),
5654
+ description && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: description })
5655
+ ] }),
5656
+ /* @__PURE__ */ jsx(SourcePill, { source })
5657
+ ] }) }),
5658
+ bulkBar,
5659
+ rowList,
5660
+ /* @__PURE__ */ jsx(
5661
+ "div",
5662
+ {
5663
+ className: cn(
5664
+ "border-border flex flex-col-reverse gap-2 border-t px-4 py-3",
5665
+ "sm:flex-row sm:items-center sm:justify-end sm:gap-3"
5666
+ ),
5667
+ "data-slot": "reconciliation-footer",
5668
+ children: footerButtons
5669
+ }
5670
+ )
5671
+ ]
5672
+ }
5673
+ );
5674
+ }
5675
+ AIReconciliationPanel.displayName = "AIReconciliationPanel";
5047
5676
  function AppHeader({
5048
5677
  children,
5049
5678
  className,
@@ -5360,10 +5989,10 @@ function AuthDialog({
5360
5989
  requireEmailVerification = false,
5361
5990
  className
5362
5991
  }) {
5363
- const [internalMode, setInternalMode] = React48.useState("login");
5364
- const [isLoading, setIsLoading] = React48.useState(false);
5365
- const [error, setError] = React48.useState(null);
5366
- const [success, setSuccess] = React48.useState(null);
5992
+ const [internalMode, setInternalMode] = React49.useState("login");
5993
+ const [isLoading, setIsLoading] = React49.useState(false);
5994
+ const [error, setError] = React49.useState(null);
5995
+ const [success, setSuccess] = React49.useState(null);
5367
5996
  const mode = controlledMode ?? internalMode;
5368
5997
  const setMode = (newMode) => {
5369
5998
  setError(null);
@@ -5374,14 +6003,14 @@ function AuthDialog({
5374
6003
  setInternalMode(newMode);
5375
6004
  }
5376
6005
  };
5377
- React48.useEffect(() => {
6006
+ React49.useEffect(() => {
5378
6007
  const handleEscape = (e) => {
5379
6008
  if (e.key === "Escape" && isOpen) onClose();
5380
6009
  };
5381
6010
  document.addEventListener("keydown", handleEscape);
5382
6011
  return () => document.removeEventListener("keydown", handleEscape);
5383
6012
  }, [isOpen, onClose]);
5384
- React48.useEffect(() => {
6013
+ React49.useEffect(() => {
5385
6014
  if (isOpen) {
5386
6015
  document.body.style.overflow = "hidden";
5387
6016
  } else {
@@ -5607,9 +6236,9 @@ function AuthDialog({
5607
6236
  );
5608
6237
  }
5609
6238
  function LoginForm({ onSubmit, isLoading, onForgotPassword }) {
5610
- const [email, setEmail] = React48.useState("");
5611
- const [password, setPassword] = React48.useState("");
5612
- const [showPassword, setShowPassword] = React48.useState(false);
6239
+ const [email, setEmail] = React49.useState("");
6240
+ const [password, setPassword] = React49.useState("");
6241
+ const [showPassword, setShowPassword] = React49.useState(false);
5613
6242
  const handleSubmit = (e) => {
5614
6243
  e.preventDefault();
5615
6244
  onSubmit(email, password);
@@ -5711,11 +6340,11 @@ function SignupForm({
5711
6340
  termsUrl,
5712
6341
  privacyUrl
5713
6342
  }) {
5714
- const [email, setEmail] = React48.useState("");
5715
- const [password, setPassword] = React48.useState("");
5716
- const [confirmPassword, setConfirmPassword] = React48.useState("");
5717
- const [acceptedTerms, setAcceptedTerms] = React48.useState(false);
5718
- const [showPassword, setShowPassword] = React48.useState(false);
6343
+ const [email, setEmail] = React49.useState("");
6344
+ const [password, setPassword] = React49.useState("");
6345
+ const [confirmPassword, setConfirmPassword] = React49.useState("");
6346
+ const [acceptedTerms, setAcceptedTerms] = React49.useState(false);
6347
+ const [showPassword, setShowPassword] = React49.useState(false);
5719
6348
  const passwordsMatch = password === confirmPassword;
5720
6349
  const handleSubmit = (e) => {
5721
6350
  e.preventDefault();
@@ -5864,7 +6493,7 @@ function ForgotPasswordForm({
5864
6493
  isLoading,
5865
6494
  onBack
5866
6495
  }) {
5867
- const [email, setEmail] = React48.useState("");
6496
+ const [email, setEmail] = React49.useState("");
5868
6497
  const handleSubmit = (e) => {
5869
6498
  e.preventDefault();
5870
6499
  onSubmit(email);
@@ -5915,9 +6544,9 @@ function ForgotPasswordForm({
5915
6544
  ] });
5916
6545
  }
5917
6546
  function ResetPasswordForm({ onSubmit, isLoading }) {
5918
- const [password, setPassword] = React48.useState("");
5919
- const [confirmPassword, setConfirmPassword] = React48.useState("");
5920
- const [showPassword, setShowPassword] = React48.useState(false);
6547
+ const [password, setPassword] = React49.useState("");
6548
+ const [confirmPassword, setConfirmPassword] = React49.useState("");
6549
+ const [showPassword, setShowPassword] = React49.useState(false);
5921
6550
  const passwordsMatch = password === confirmPassword;
5922
6551
  const handleSubmit = (e) => {
5923
6552
  e.preventDefault();
@@ -6283,9 +6912,9 @@ function ServiceSelect({
6283
6912
  error,
6284
6913
  className
6285
6914
  }) {
6286
- const [isOpen, setIsOpen] = React48.useState(false);
6287
- const dropdownRef = React48.useRef(null);
6288
- React48.useEffect(() => {
6915
+ const [isOpen, setIsOpen] = React49.useState(false);
6916
+ const dropdownRef = React49.useRef(null);
6917
+ React49.useEffect(() => {
6289
6918
  function handleClickOutside(event) {
6290
6919
  if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
6291
6920
  setIsOpen(false);
@@ -6460,7 +7089,7 @@ function DialogOverlay({
6460
7089
  className,
6461
7090
  titleId
6462
7091
  }) {
6463
- React48.useEffect(() => {
7092
+ React49.useEffect(() => {
6464
7093
  if (!isOpen || isStorybookDocsMode()) {
6465
7094
  return void 0;
6466
7095
  }
@@ -6514,8 +7143,8 @@ function BookingDialog({
6514
7143
  isLoading = false,
6515
7144
  className
6516
7145
  }) {
6517
- const titleId = React48.useId();
6518
- const [formData, setFormData] = React48.useState({
7146
+ const titleId = React49.useId();
7147
+ const [formData, setFormData] = React49.useState({
6519
7148
  firstName: defaultValues?.firstName || "",
6520
7149
  lastName: defaultValues?.lastName || "",
6521
7150
  phoneNumber: defaultValues?.phoneNumber || "",
@@ -6524,7 +7153,7 @@ function BookingDialog({
6524
7153
  consentEmail: defaultValues?.consentEmail ?? false,
6525
7154
  consentSms: defaultValues?.consentSms ?? false
6526
7155
  });
6527
- const [errors, setErrors] = React48.useState({});
7156
+ const [errors, setErrors] = React49.useState({});
6528
7157
  const validate = () => {
6529
7158
  const newErrors = {};
6530
7159
  if (!formData.firstName.trim()) {
@@ -6792,7 +7421,7 @@ function InlineBookingForm({
6792
7421
  isLoading = false,
6793
7422
  className
6794
7423
  }) {
6795
- const [formData, setFormData] = React48.useState({
7424
+ const [formData, setFormData] = React49.useState({
6796
7425
  firstName: defaultValues?.firstName || "",
6797
7426
  lastName: defaultValues?.lastName || "",
6798
7427
  phoneNumber: defaultValues?.phoneNumber || "",
@@ -6801,7 +7430,7 @@ function InlineBookingForm({
6801
7430
  consentEmail: defaultValues?.consentEmail ?? false,
6802
7431
  consentSms: defaultValues?.consentSms ?? false
6803
7432
  });
6804
- const [errors, setErrors] = React48.useState({});
7433
+ const [errors, setErrors] = React49.useState({});
6805
7434
  const validate = () => {
6806
7435
  const newErrors = {};
6807
7436
  if (!formData.firstName.trim()) {
@@ -7530,7 +8159,7 @@ function HoursSummary({
7530
8159
  defaultExpanded = false,
7531
8160
  className
7532
8161
  }) {
7533
- const [isExpanded, setIsExpanded] = React48.useState(defaultExpanded);
8162
+ const [isExpanded, setIsExpanded] = React49.useState(defaultExpanded);
7534
8163
  const isOpen = isCurrentlyOpen(schedule.officeHours);
7535
8164
  const todayHours = getTodayHours(schedule.officeHours, use24Hour);
7536
8165
  const hasStructuredHours = schedule.officeHours && schedule.officeHours.length > 0;
@@ -8005,17 +8634,17 @@ function CheckrIntegration({
8005
8634
  viewDetails = "View Details",
8006
8635
  noReportsSelected = "No reports selected"
8007
8636
  } = labels;
8008
- const [showInviteModal, setShowInviteModal] = React48.useState(false);
8009
- const [candidateName, setCandidateName] = React48.useState("");
8010
- const [candidateEmail, setCandidateEmail] = React48.useState("");
8011
- const [candidatePhone, setCandidatePhone] = React48.useState("");
8012
- const [selectedPackage, setSelectedPackage] = React48.useState(
8637
+ const [showInviteModal, setShowInviteModal] = React49.useState(false);
8638
+ const [candidateName, setCandidateName] = React49.useState("");
8639
+ const [candidateEmail, setCandidateEmail] = React49.useState("");
8640
+ const [candidatePhone, setCandidatePhone] = React49.useState("");
8641
+ const [selectedPackage, setSelectedPackage] = React49.useState(
8013
8642
  packages[0]?.id || ""
8014
8643
  );
8015
- const [selectedReports, setSelectedReports] = React48.useState(
8644
+ const [selectedReports, setSelectedReports] = React49.useState(
8016
8645
  /* @__PURE__ */ new Set()
8017
8646
  );
8018
- React48.useEffect(() => {
8647
+ React49.useEffect(() => {
8019
8648
  setSelectedReports((prev) => prev.size > 0 ? /* @__PURE__ */ new Set() : prev);
8020
8649
  }, [reports, connected]);
8021
8650
  const statusLabels = {
@@ -8049,7 +8678,7 @@ function CheckrIntegration({
8049
8678
  failed: "bg-destructive",
8050
8679
  expired: "bg-muted-foreground"
8051
8680
  };
8052
- const statusCounts = React48.useMemo(() => {
8681
+ const statusCounts = React49.useMemo(() => {
8053
8682
  const counts = {
8054
8683
  pending: 0,
8055
8684
  running: 0,
@@ -8588,7 +9217,7 @@ function CommandPaletteProvider({
8588
9217
  }
8589
9218
  }, [isOpen, open, close]);
8590
9219
  useCommandK(toggle, enableShortcut);
8591
- React48__default.useEffect(() => {
9220
+ React49__default.useEffect(() => {
8592
9221
  if (!customEventName) return;
8593
9222
  const handler = () => open();
8594
9223
  document.addEventListener(customEventName, handler);
@@ -9500,11 +10129,11 @@ function formatRetryTime(time) {
9500
10129
  }
9501
10130
  function useConnectionStatus(options = {}) {
9502
10131
  const { onDisconnect, onReconnect } = options;
9503
- const [isOnline, setIsOnline] = React48.useState(() => {
10132
+ const [isOnline, setIsOnline] = React49.useState(() => {
9504
10133
  if (typeof window === "undefined") return true;
9505
10134
  return navigator.onLine;
9506
10135
  });
9507
- React48.useEffect(() => {
10136
+ React49.useEffect(() => {
9508
10137
  const handleOnline = () => {
9509
10138
  setIsOnline(true);
9510
10139
  onReconnect?.();
@@ -9623,10 +10252,10 @@ function RowActionMenu({
9623
10252
  item,
9624
10253
  actions
9625
10254
  }) {
9626
- const [open, setOpen] = React48.useState(false);
9627
- const menuRef = React48.useRef(null);
9628
- const buttonRef = React48.useRef(null);
9629
- React48.useEffect(() => {
10255
+ const [open, setOpen] = React49.useState(false);
10256
+ const menuRef = React49.useRef(null);
10257
+ const buttonRef = React49.useRef(null);
10258
+ React49.useEffect(() => {
9630
10259
  if (!open) return;
9631
10260
  function handleClick(e) {
9632
10261
  if (menuRef.current && !menuRef.current.contains(e.target) && buttonRef.current && !buttonRef.current.contains(e.target)) {
@@ -9636,7 +10265,7 @@ function RowActionMenu({
9636
10265
  document.addEventListener("mousedown", handleClick);
9637
10266
  return () => document.removeEventListener("mousedown", handleClick);
9638
10267
  }, [open]);
9639
- React48.useEffect(() => {
10268
+ React49.useEffect(() => {
9640
10269
  if (!open) return;
9641
10270
  function handleKey(e) {
9642
10271
  if (e.key === "Escape") setOpen(false);
@@ -9644,8 +10273,8 @@ function RowActionMenu({
9644
10273
  document.addEventListener("keydown", handleKey);
9645
10274
  return () => document.removeEventListener("keydown", handleKey);
9646
10275
  }, [open]);
9647
- const [menuPos, setMenuPos] = React48.useState(null);
9648
- React48.useLayoutEffect(() => {
10276
+ const [menuPos, setMenuPos] = React49.useState(null);
10277
+ React49.useLayoutEffect(() => {
9649
10278
  if (!open || !buttonRef.current) return;
9650
10279
  const rect = buttonRef.current.getBoundingClientRect();
9651
10280
  setMenuPos({
@@ -9828,9 +10457,9 @@ function buildDefaultActions(onView, onEdit, onDelete) {
9828
10457
  function ViewModalActions({
9829
10458
  viewTarget
9830
10459
  }) {
9831
- const [shareOpen, setShareOpen] = React48.useState(false);
9832
- const shareRef = React48.useRef(null);
9833
- React48.useEffect(() => {
10460
+ const [shareOpen, setShareOpen] = React49.useState(false);
10461
+ const shareRef = React49.useRef(null);
10462
+ React49.useEffect(() => {
9834
10463
  if (!shareOpen) return;
9835
10464
  const handleClick = (e) => {
9836
10465
  if (shareRef.current && !shareRef.current.contains(e.target)) {
@@ -9967,7 +10596,7 @@ function ViewModalActions({
9967
10596
  )
9968
10597
  ] });
9969
10598
  }
9970
- var CountBadge = React48.forwardRef(
10599
+ var CountBadge = React49.forwardRef(
9971
10600
  ({
9972
10601
  className,
9973
10602
  variant,
@@ -9983,18 +10612,18 @@ var CountBadge = React48.forwardRef(
9983
10612
  countVariant,
9984
10613
  ...props
9985
10614
  }, ref) => {
9986
- const [open, setOpen] = React48.useState(false);
9987
- const containerRef = React48.useRef(null);
9988
- const [deleteTarget, setDeleteTarget] = React48.useState(null);
9989
- const [editTarget, setEditTarget] = React48.useState(
10615
+ const [open, setOpen] = React49.useState(false);
10616
+ const containerRef = React49.useRef(null);
10617
+ const [deleteTarget, setDeleteTarget] = React49.useState(null);
10618
+ const [editTarget, setEditTarget] = React49.useState(
9990
10619
  null
9991
10620
  );
9992
- const [editForm, setEditForm] = React48.useState({});
9993
- const [viewTarget, setViewTarget] = React48.useState(
10621
+ const [editForm, setEditForm] = React49.useState({});
10622
+ const [viewTarget, setViewTarget] = React49.useState(
9994
10623
  null
9995
10624
  );
9996
10625
  const showMenu = items && items.length > 0;
9997
- React48.useEffect(() => {
10626
+ React49.useEffect(() => {
9998
10627
  if (!open) return;
9999
10628
  const handleClickOutside = (e) => {
10000
10629
  if (containerRef.current && !containerRef.current.contains(e.target)) {
@@ -10004,7 +10633,7 @@ var CountBadge = React48.forwardRef(
10004
10633
  document.addEventListener("mousedown", handleClickOutside);
10005
10634
  return () => document.removeEventListener("mousedown", handleClickOutside);
10006
10635
  }, [open]);
10007
- React48.useEffect(() => {
10636
+ React49.useEffect(() => {
10008
10637
  if (!open) return;
10009
10638
  const handleEscape = (e) => {
10010
10639
  if (e.key === "Escape") setOpen(false);
@@ -10012,13 +10641,13 @@ var CountBadge = React48.forwardRef(
10012
10641
  document.addEventListener("keydown", handleEscape);
10013
10642
  return () => document.removeEventListener("keydown", handleEscape);
10014
10643
  }, [open]);
10015
- const handleDeleteRequest = React48.useCallback((item) => {
10644
+ const handleDeleteRequest = React49.useCallback((item) => {
10016
10645
  setDeleteTarget(item);
10017
10646
  }, []);
10018
- const handleViewRequest = React48.useCallback((item) => {
10647
+ const handleViewRequest = React49.useCallback((item) => {
10019
10648
  setViewTarget(item);
10020
10649
  }, []);
10021
- const handleEditRequest = React48.useCallback((item) => {
10650
+ const handleEditRequest = React49.useCallback((item) => {
10022
10651
  setEditTarget(item);
10023
10652
  setEditForm({
10024
10653
  label: item.label,
@@ -10441,7 +11070,7 @@ function CookieConsentBanner({
10441
11070
  isMobileApp = false,
10442
11071
  className
10443
11072
  }) {
10444
- const [isAnimating, setIsAnimating] = React48.useState(false);
11073
+ const [isAnimating, setIsAnimating] = React49.useState(false);
10445
11074
  const handleAccept = () => {
10446
11075
  setIsAnimating(true);
10447
11076
  setTimeout(() => {
@@ -10500,7 +11129,7 @@ function CookieConsentBanner({
10500
11129
  appName,
10501
11130
  " you are agreeing to our",
10502
11131
  " ",
10503
- legalLinks.map((link, index) => /* @__PURE__ */ jsxs(React48.Fragment, { children: [
11132
+ legalLinks.map((link, index) => /* @__PURE__ */ jsxs(React49.Fragment, { children: [
10504
11133
  index > 0 && (index === legalLinks.length - 1 ? " and " : ", "),
10505
11134
  /* @__PURE__ */ jsx(
10506
11135
  "a",
@@ -10624,20 +11253,20 @@ function CompactCookieBanner({
10624
11253
  var COOKIE_CONSENT_KEY = "cookie-consent-accepted";
10625
11254
  function useCookieConsent(options = {}) {
10626
11255
  const { storageKey = COOKIE_CONSENT_KEY, onConsent } = options;
10627
- const [hasConsented, setHasConsented] = React48.useState(() => {
11256
+ const [hasConsented, setHasConsented] = React49.useState(() => {
10628
11257
  if (typeof window === "undefined") return false;
10629
11258
  return localStorage.getItem(storageKey) === "true";
10630
11259
  });
10631
- const acceptCookies = React48.useCallback(() => {
11260
+ const acceptCookies = React49.useCallback(() => {
10632
11261
  localStorage.setItem(storageKey, "true");
10633
11262
  setHasConsented(true);
10634
11263
  onConsent?.();
10635
11264
  }, [storageKey, onConsent]);
10636
- const declineCookies = React48.useCallback(() => {
11265
+ const declineCookies = React49.useCallback(() => {
10637
11266
  localStorage.setItem(storageKey, "declined");
10638
11267
  setHasConsented(true);
10639
11268
  }, [storageKey]);
10640
- const resetConsent = React48.useCallback(() => {
11269
+ const resetConsent = React49.useCallback(() => {
10641
11270
  localStorage.removeItem(storageKey);
10642
11271
  setHasConsented(false);
10643
11272
  }, [storageKey]);
@@ -11024,9 +11653,9 @@ function CSVFileUpload({
11024
11653
  selectFile = "Select a file to upload or drag and drop",
11025
11654
  selectButton = "Select File to Upload"
11026
11655
  } = labels;
11027
- const inputRef = React48.useRef(null);
11028
- const [isDragging, setIsDragging] = React48.useState(false);
11029
- const handleDrop = React48.useCallback(
11656
+ const inputRef = React49.useRef(null);
11657
+ const [isDragging, setIsDragging] = React49.useState(false);
11658
+ const handleDrop = React49.useCallback(
11030
11659
  (e) => {
11031
11660
  e.preventDefault();
11032
11661
  setIsDragging(false);
@@ -11037,14 +11666,14 @@ function CSVFileUpload({
11037
11666
  },
11038
11667
  [onFileSelect]
11039
11668
  );
11040
- const handleDragOver = React48.useCallback((e) => {
11669
+ const handleDragOver = React49.useCallback((e) => {
11041
11670
  e.preventDefault();
11042
11671
  setIsDragging(true);
11043
11672
  }, []);
11044
- const handleDragLeave = React48.useCallback(() => {
11673
+ const handleDragLeave = React49.useCallback(() => {
11045
11674
  setIsDragging(false);
11046
11675
  }, []);
11047
- const handleFileChange = React48.useCallback(
11676
+ const handleFileChange = React49.useCallback(
11048
11677
  (e) => {
11049
11678
  const file = e.target.files?.[0];
11050
11679
  if (file) {
@@ -11109,7 +11738,7 @@ var widgetVariants = cva("", {
11109
11738
  size: "md"
11110
11739
  }
11111
11740
  });
11112
- var DashboardWidget = React48.forwardRef(
11741
+ var DashboardWidget = React49.forwardRef(
11113
11742
  ({
11114
11743
  className,
11115
11744
  size,
@@ -11204,7 +11833,7 @@ var DashboardWidget = React48.forwardRef(
11204
11833
  }
11205
11834
  );
11206
11835
  DashboardWidget.displayName = "DashboardWidget";
11207
- var DashboardWidgetInfo = React48.forwardRef(({ className, items, columns = 2, layout = "stacked", ...props }, ref) => {
11836
+ var DashboardWidgetInfo = React49.forwardRef(({ className, items, columns = 2, layout = "stacked", ...props }, ref) => {
11208
11837
  const gridCols = {
11209
11838
  1: "grid-cols-1",
11210
11839
  2: "grid-cols-2",
@@ -11338,10 +11967,10 @@ function WidgetRowActionMenu({
11338
11967
  rowIndex,
11339
11968
  actions
11340
11969
  }) {
11341
- const [open, setOpen] = React48.useState(false);
11342
- const menuRef = React48.useRef(null);
11343
- const buttonRef = React48.useRef(null);
11344
- React48.useEffect(() => {
11970
+ const [open, setOpen] = React49.useState(false);
11971
+ const menuRef = React49.useRef(null);
11972
+ const buttonRef = React49.useRef(null);
11973
+ React49.useEffect(() => {
11345
11974
  if (!open) return;
11346
11975
  function handleClick(e) {
11347
11976
  if (menuRef.current && !menuRef.current.contains(e.target) && buttonRef.current && !buttonRef.current.contains(e.target)) {
@@ -11351,7 +11980,7 @@ function WidgetRowActionMenu({
11351
11980
  document.addEventListener("mousedown", handleClick);
11352
11981
  return () => document.removeEventListener("mousedown", handleClick);
11353
11982
  }, [open]);
11354
- React48.useEffect(() => {
11983
+ React49.useEffect(() => {
11355
11984
  if (!open) return;
11356
11985
  function handleKey(e) {
11357
11986
  if (e.key === "Escape") setOpen(false);
@@ -11359,8 +11988,8 @@ function WidgetRowActionMenu({
11359
11988
  document.addEventListener("keydown", handleKey);
11360
11989
  return () => document.removeEventListener("keydown", handleKey);
11361
11990
  }, [open]);
11362
- const [menuPos, setMenuPos] = React48.useState(null);
11363
- React48.useLayoutEffect(() => {
11991
+ const [menuPos, setMenuPos] = React49.useState(null);
11992
+ React49.useLayoutEffect(() => {
11364
11993
  if (!open || !buttonRef.current) return;
11365
11994
  const rect = buttonRef.current.getBoundingClientRect();
11366
11995
  setMenuPos({
@@ -11441,7 +12070,7 @@ function WidgetRowActionMenu({
11441
12070
  )
11442
12071
  ] });
11443
12072
  }
11444
- var DashboardWidgetTable = React48.forwardRef(DashboardWidgetTableInner);
12073
+ var DashboardWidgetTable = React49.forwardRef(DashboardWidgetTableInner);
11445
12074
  var actionColorMap = {
11446
12075
  primary: "bg-primary-100 text-primary-900 dark:bg-primary-900/40 dark:text-primary-300",
11447
12076
  green: "bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300",
@@ -11452,7 +12081,7 @@ var actionColorMap = {
11452
12081
  amber: "bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300",
11453
12082
  neutral: "bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300"
11454
12083
  };
11455
- var DashboardWidgetActions = React48.forwardRef(({ className, actions, columns = 2, ...props }, ref) => {
12084
+ var DashboardWidgetActions = React49.forwardRef(({ className, actions, columns = 2, ...props }, ref) => {
11456
12085
  const gridCols = {
11457
12086
  1: "grid-cols-1",
11458
12087
  2: "grid-cols-2",
@@ -11505,7 +12134,7 @@ var DashboardWidgetActions = React48.forwardRef(({ className, actions, columns =
11505
12134
  );
11506
12135
  });
11507
12136
  DashboardWidgetActions.displayName = "DashboardWidgetActions";
11508
- var DashboardWidgetDataCards = React48.forwardRef(({ className, items, columns = 2, footer, ...props }, ref) => {
12137
+ var DashboardWidgetDataCards = React49.forwardRef(({ className, items, columns = 2, footer, ...props }, ref) => {
11509
12138
  const gridCols = {
11510
12139
  2: "grid-cols-2",
11511
12140
  3: "grid-cols-3",
@@ -11707,24 +12336,24 @@ function DateRangePicker({
11707
12336
  labels = {}
11708
12337
  }) {
11709
12338
  const finalPresets = presets || getDefaultPresets(labels);
11710
- const [isCalendarOpen, setIsCalendarOpen] = React48.useState(false);
11711
- const [leftMonth, setLeftMonth] = React48.useState(
12339
+ const [isCalendarOpen, setIsCalendarOpen] = React49.useState(false);
12340
+ const [leftMonth, setLeftMonth] = React49.useState(
11712
12341
  () => value?.start?.getMonth() ?? (/* @__PURE__ */ new Date()).getMonth()
11713
12342
  );
11714
- const [leftYear, setLeftYear] = React48.useState(
12343
+ const [leftYear, setLeftYear] = React49.useState(
11715
12344
  () => value?.start?.getFullYear() ?? (/* @__PURE__ */ new Date()).getFullYear()
11716
12345
  );
11717
- const [rangeStart, setRangeStart] = React48.useState(
12346
+ const [rangeStart, setRangeStart] = React49.useState(
11718
12347
  value?.start ?? null
11719
12348
  );
11720
- const [rangeEnd, setRangeEnd] = React48.useState(
12349
+ const [rangeEnd, setRangeEnd] = React49.useState(
11721
12350
  value?.end ?? null
11722
12351
  );
11723
- const [selectingEnd, setSelectingEnd] = React48.useState(false);
11724
- const [hoverDate, setHoverDate] = React48.useState(null);
11725
- const calendarRef = React48.useRef(null);
11726
- const triggerRef = React48.useRef(null);
11727
- const [resolvedAlign, setResolvedAlign] = React48.useState(
12352
+ const [selectingEnd, setSelectingEnd] = React49.useState(false);
12353
+ const [hoverDate, setHoverDate] = React49.useState(null);
12354
+ const calendarRef = React49.useRef(null);
12355
+ const triggerRef = React49.useRef(null);
12356
+ const [resolvedAlign, setResolvedAlign] = React49.useState(
11728
12357
  align === "end" ? "end" : "start"
11729
12358
  );
11730
12359
  const isMobileVariant = variant === "mobile";
@@ -11734,7 +12363,7 @@ function DateRangePicker({
11734
12363
  );
11735
12364
  const rightMonth = leftMonth === 11 ? 0 : leftMonth + 1;
11736
12365
  const rightYear = leftMonth === 11 ? leftYear + 1 : leftYear;
11737
- React48.useEffect(() => {
12366
+ React49.useEffect(() => {
11738
12367
  if (!value) {
11739
12368
  setRangeStart(null);
11740
12369
  setRangeEnd(null);
@@ -11743,7 +12372,7 @@ function DateRangePicker({
11743
12372
  setRangeStart(value.start ?? null);
11744
12373
  setRangeEnd(value.end ?? null);
11745
12374
  }, [value]);
11746
- const wrapperRef = React48.useRef(null);
12375
+ const wrapperRef = React49.useRef(null);
11747
12376
  useClickOutside(wrapperRef, () => {
11748
12377
  if (isCalendarOpen) {
11749
12378
  setIsCalendarOpen(false);
@@ -11755,7 +12384,7 @@ function DateRangePicker({
11755
12384
  setSelectingEnd(false);
11756
12385
  triggerRef.current?.focus();
11757
12386
  }, isCalendarOpen);
11758
- React48.useEffect(() => {
12387
+ React49.useEffect(() => {
11759
12388
  if (isStorybookDocsMode()) return;
11760
12389
  if (isMobileVariant && isCalendarOpen) {
11761
12390
  const prev = document.body.style.overflow;
@@ -11765,7 +12394,7 @@ function DateRangePicker({
11765
12394
  };
11766
12395
  }
11767
12396
  }, [isMobileVariant, isCalendarOpen]);
11768
- React48.useLayoutEffect(() => {
12397
+ React49.useLayoutEffect(() => {
11769
12398
  if (isMobileVariant || !isCalendarOpen) return;
11770
12399
  if (align === "start" || align === "end") {
11771
12400
  setResolvedAlign(align);
@@ -11870,7 +12499,7 @@ function DateRangePicker({
11870
12499
  return isSameDay(date, today);
11871
12500
  };
11872
12501
  const displayValue = value ? formatDateRange(value) : "";
11873
- const monthNames = React48.useMemo(
12502
+ const monthNames = React49.useMemo(
11874
12503
  () => Array.from(
11875
12504
  { length: 12 },
11876
12505
  (_, i) => new Intl.DateTimeFormat(void 0, { month: "long" }).format(
@@ -11879,7 +12508,7 @@ function DateRangePicker({
11879
12508
  ),
11880
12509
  []
11881
12510
  );
11882
- const weekdayNames = React48.useMemo(
12511
+ const weekdayNames = React49.useMemo(
11883
12512
  () => Array.from(
11884
12513
  { length: 7 },
11885
12514
  (_, i) => new Intl.DateTimeFormat(void 0, { weekday: "short" }).format(
@@ -12308,11 +12937,11 @@ function DropZone({
12308
12937
  className,
12309
12938
  children
12310
12939
  }) {
12311
- const [isDragging, setIsDragging] = React48.useState(false);
12312
- const inputRef = React48.useRef(null);
12313
- const dropZoneRef = React48.useRef(null);
12314
- const dragCounter = React48.useRef(0);
12315
- const handleDragEnter = React48.useCallback(
12940
+ const [isDragging, setIsDragging] = React49.useState(false);
12941
+ const inputRef = React49.useRef(null);
12942
+ const dropZoneRef = React49.useRef(null);
12943
+ const dragCounter = React49.useRef(0);
12944
+ const handleDragEnter = React49.useCallback(
12316
12945
  (e) => {
12317
12946
  e.preventDefault();
12318
12947
  e.stopPropagation();
@@ -12324,7 +12953,7 @@ function DropZone({
12324
12953
  },
12325
12954
  [disabled]
12326
12955
  );
12327
- const handleDragLeave = React48.useCallback(
12956
+ const handleDragLeave = React49.useCallback(
12328
12957
  (e) => {
12329
12958
  e.preventDefault();
12330
12959
  e.stopPropagation();
@@ -12336,11 +12965,11 @@ function DropZone({
12336
12965
  },
12337
12966
  [disabled]
12338
12967
  );
12339
- const handleDragOver = React48.useCallback((e) => {
12968
+ const handleDragOver = React49.useCallback((e) => {
12340
12969
  e.preventDefault();
12341
12970
  e.stopPropagation();
12342
12971
  }, []);
12343
- const handleDrop = React48.useCallback(
12972
+ const handleDrop = React49.useCallback(
12344
12973
  (e) => {
12345
12974
  e.preventDefault();
12346
12975
  e.stopPropagation();
@@ -12353,12 +12982,12 @@ function DropZone({
12353
12982
  },
12354
12983
  [disabled, onFilesSelected]
12355
12984
  );
12356
- const handleClick = React48.useCallback(() => {
12985
+ const handleClick = React49.useCallback(() => {
12357
12986
  if (!disabled) {
12358
12987
  inputRef.current?.click();
12359
12988
  }
12360
12989
  }, [disabled]);
12361
- const handleKeyDown = React48.useCallback(
12990
+ const handleKeyDown = React49.useCallback(
12362
12991
  (e) => {
12363
12992
  if ((e.key === "Enter" || e.key === " ") && !disabled) {
12364
12993
  e.preventDefault();
@@ -12367,7 +12996,7 @@ function DropZone({
12367
12996
  },
12368
12997
  [disabled]
12369
12998
  );
12370
- const handleInputChange = React48.useCallback(
12999
+ const handleInputChange = React49.useCallback(
12371
13000
  (e) => {
12372
13001
  if (e.target.files && e.target.files.length > 0) {
12373
13002
  onFilesSelected(e.target.files);
@@ -12458,7 +13087,7 @@ DropZone.displayName = "DropZone";
12458
13087
  function FilePreviewItem({ file, onRemove, disabled }) {
12459
13088
  const isPdf = file.file.type === "application/pdf";
12460
13089
  const isImage = file.file.type.startsWith("image/");
12461
- const handleRemove = React48.useCallback(() => {
13090
+ const handleRemove = React49.useCallback(() => {
12462
13091
  onRemove(file.id);
12463
13092
  }, [file.id, onRemove]);
12464
13093
  return /* @__PURE__ */ jsxs(
@@ -12604,24 +13233,24 @@ function useCamera({
12604
13233
  width = 1920,
12605
13234
  height = 1080
12606
13235
  } = {}) {
12607
- const [permission, setPermission] = React48.useState("prompt");
12608
- const [stream, setStream] = React48.useState(null);
12609
- const [isReady, setIsReady] = React48.useState(false);
12610
- const [error, setError] = React48.useState(null);
12611
- const [currentFacingMode, setCurrentFacingMode] = React48.useState(initialFacingMode);
12612
- const videoRef = React48.useRef(null);
12613
- const canvasRef = React48.useRef(null);
12614
- React48.useEffect(() => {
13236
+ const [permission, setPermission] = React49.useState("prompt");
13237
+ const [stream, setStream] = React49.useState(null);
13238
+ const [isReady, setIsReady] = React49.useState(false);
13239
+ const [error, setError] = React49.useState(null);
13240
+ const [currentFacingMode, setCurrentFacingMode] = React49.useState(initialFacingMode);
13241
+ const videoRef = React49.useRef(null);
13242
+ const canvasRef = React49.useRef(null);
13243
+ React49.useEffect(() => {
12615
13244
  checkCameraPermission().then(setPermission);
12616
13245
  }, []);
12617
- React48.useEffect(() => {
13246
+ React49.useEffect(() => {
12618
13247
  return () => {
12619
13248
  if (stream) {
12620
13249
  stream.getTracks().forEach((track) => track.stop());
12621
13250
  }
12622
13251
  };
12623
13252
  }, [stream]);
12624
- const startCamera = React48.useCallback(async () => {
13253
+ const startCamera = React49.useCallback(async () => {
12625
13254
  if (!hasCameraSupport()) {
12626
13255
  setPermission("unavailable");
12627
13256
  setError(new Error("Camera is not supported on this device"));
@@ -12655,7 +13284,7 @@ function useCamera({
12655
13284
  }
12656
13285
  }
12657
13286
  }, [currentFacingMode, width, height]);
12658
- const stopCamera = React48.useCallback(() => {
13287
+ const stopCamera = React49.useCallback(() => {
12659
13288
  if (stream) {
12660
13289
  stream.getTracks().forEach((track) => track.stop());
12661
13290
  setStream(null);
@@ -12665,8 +13294,8 @@ function useCamera({
12665
13294
  videoRef.current.srcObject = null;
12666
13295
  }
12667
13296
  }, [stream]);
12668
- const shouldRestartRef = React48.useRef(false);
12669
- const switchCamera = React48.useCallback(() => {
13297
+ const shouldRestartRef = React49.useRef(false);
13298
+ const switchCamera = React49.useCallback(() => {
12670
13299
  const newFacingMode = currentFacingMode === "user" ? "environment" : "user";
12671
13300
  if (stream) {
12672
13301
  stream.getTracks().forEach((track) => track.stop());
@@ -12679,13 +13308,13 @@ function useCamera({
12679
13308
  }
12680
13309
  setCurrentFacingMode(newFacingMode);
12681
13310
  }, [currentFacingMode, stream]);
12682
- React48.useEffect(() => {
13311
+ React49.useEffect(() => {
12683
13312
  if (shouldRestartRef.current && !stream) {
12684
13313
  shouldRestartRef.current = false;
12685
13314
  startCamera();
12686
13315
  }
12687
13316
  }, [currentFacingMode, stream, startCamera]);
12688
- const capturePhoto = React48.useCallback(() => {
13317
+ const capturePhoto = React49.useCallback(() => {
12689
13318
  if (!videoRef.current || !isReady) {
12690
13319
  return null;
12691
13320
  }
@@ -13232,14 +13861,14 @@ function WebcamModal({
13232
13861
  width: 1920,
13233
13862
  height: 1080
13234
13863
  });
13235
- const [capturedFile, setCapturedFile] = React48.useState(null);
13236
- const [previewUrl, setPreviewUrl] = React48.useState(null);
13237
- const [autoDetectEnabled, setAutoDetectEnabled] = React48.useState(enableAutoCapture);
13238
- const [videoDimensions, setVideoDimensions] = React48.useState({
13864
+ const [capturedFile, setCapturedFile] = React49.useState(null);
13865
+ const [previewUrl, setPreviewUrl] = React49.useState(null);
13866
+ const [autoDetectEnabled, setAutoDetectEnabled] = React49.useState(enableAutoCapture);
13867
+ const [videoDimensions, setVideoDimensions] = React49.useState({
13239
13868
  width: 0,
13240
13869
  height: 0
13241
13870
  });
13242
- const handleAutoCapture = React48.useCallback(() => {
13871
+ const handleAutoCapture = React49.useCallback(() => {
13243
13872
  const file = capturePhoto();
13244
13873
  if (file) {
13245
13874
  setCapturedFile(file);
@@ -13260,8 +13889,8 @@ function WebcamModal({
13260
13889
  },
13261
13890
  handleAutoCapture
13262
13891
  );
13263
- const hasStartedRef = React48.useRef(false);
13264
- React48.useEffect(() => {
13892
+ const hasStartedRef = React49.useRef(false);
13893
+ React49.useEffect(() => {
13265
13894
  const video = videoRef.current;
13266
13895
  if (video && isReady) {
13267
13896
  const updateDimensions = () => {
@@ -13275,7 +13904,7 @@ function WebcamModal({
13275
13904
  return () => video.removeEventListener("resize", updateDimensions);
13276
13905
  }
13277
13906
  }, [isReady, videoRef]);
13278
- React48.useEffect(() => {
13907
+ React49.useEffect(() => {
13279
13908
  if (open && permission !== "denied" && permission !== "unavailable") {
13280
13909
  if (!hasStartedRef.current) {
13281
13910
  hasStartedRef.current = true;
@@ -13294,7 +13923,7 @@ function WebcamModal({
13294
13923
  });
13295
13924
  }
13296
13925
  }, [open, permission]);
13297
- React48.useEffect(() => {
13926
+ React49.useEffect(() => {
13298
13927
  if (isReady && autoDetectEnabled && !capturedFile) {
13299
13928
  detection.startDetection();
13300
13929
  }
@@ -13302,7 +13931,7 @@ function WebcamModal({
13302
13931
  detection.stopDetection();
13303
13932
  };
13304
13933
  }, [isReady, autoDetectEnabled, capturedFile]);
13305
- const handleCapture = React48.useCallback(() => {
13934
+ const handleCapture = React49.useCallback(() => {
13306
13935
  const file = capturePhoto();
13307
13936
  if (file) {
13308
13937
  setCapturedFile(file);
@@ -13310,7 +13939,7 @@ function WebcamModal({
13310
13939
  stopCamera();
13311
13940
  }
13312
13941
  }, [capturePhoto, stopCamera]);
13313
- const handleRetake = React48.useCallback(() => {
13942
+ const handleRetake = React49.useCallback(() => {
13314
13943
  if (previewUrl) {
13315
13944
  URL.revokeObjectURL(previewUrl);
13316
13945
  }
@@ -13319,13 +13948,13 @@ function WebcamModal({
13319
13948
  detection.resetDetection();
13320
13949
  startCamera();
13321
13950
  }, [previewUrl, startCamera, detection]);
13322
- const handleConfirm = React48.useCallback(() => {
13951
+ const handleConfirm = React49.useCallback(() => {
13323
13952
  if (capturedFile) {
13324
13953
  onCapture(capturedFile);
13325
13954
  onOpenChange(false);
13326
13955
  }
13327
13956
  }, [capturedFile, onCapture, onOpenChange]);
13328
- const handleClose = React48.useCallback(() => {
13957
+ const handleClose = React49.useCallback(() => {
13329
13958
  stopCamera();
13330
13959
  detection.stopDetection();
13331
13960
  if (previewUrl) {
@@ -13477,13 +14106,13 @@ function useFileUpload({
13477
14106
  multiple = false,
13478
14107
  onValidationError
13479
14108
  } = {}) {
13480
- const [files, setFiles] = React48.useState([]);
13481
- React48.useEffect(() => {
14109
+ const [files, setFiles] = React49.useState([]);
14110
+ React49.useEffect(() => {
13482
14111
  return () => {
13483
14112
  files.forEach((f) => URL.revokeObjectURL(f.previewUrl));
13484
14113
  };
13485
14114
  }, []);
13486
- const addFiles = React48.useCallback(
14115
+ const addFiles = React49.useCallback(
13487
14116
  (fileList, source = "upload") => {
13488
14117
  const newFiles = [];
13489
14118
  const errors = [];
@@ -13515,7 +14144,7 @@ function useFileUpload({
13515
14144
  },
13516
14145
  [acceptedFileTypes, maxFileSizeMb, multiple, onValidationError]
13517
14146
  );
13518
- const addFile = React48.useCallback(
14147
+ const addFile = React49.useCallback(
13519
14148
  (file, source = "upload") => {
13520
14149
  const dataTransfer = new DataTransfer();
13521
14150
  dataTransfer.items.add(file);
@@ -13523,7 +14152,7 @@ function useFileUpload({
13523
14152
  },
13524
14153
  [addFiles]
13525
14154
  );
13526
- const removeFile = React48.useCallback((id) => {
14155
+ const removeFile = React49.useCallback((id) => {
13527
14156
  setFiles((prev) => {
13528
14157
  const fileToRemove = prev.find((f) => f.id === id);
13529
14158
  if (fileToRemove) {
@@ -13532,13 +14161,13 @@ function useFileUpload({
13532
14161
  return prev.filter((f) => f.id !== id);
13533
14162
  });
13534
14163
  }, []);
13535
- const clearFiles = React48.useCallback(() => {
14164
+ const clearFiles = React49.useCallback(() => {
13536
14165
  setFiles((prev) => {
13537
14166
  prev.forEach((f) => URL.revokeObjectURL(f.previewUrl));
13538
14167
  return [];
13539
14168
  });
13540
14169
  }, []);
13541
- const getFiles = React48.useCallback(() => {
14170
+ const getFiles = React49.useCallback(() => {
13542
14171
  return files.map((f) => f.file);
13543
14172
  }, [files]);
13544
14173
  return {
@@ -13566,12 +14195,12 @@ function DocumentScanner({
13566
14195
  onValidationError,
13567
14196
  onStateChange
13568
14197
  }) {
13569
- const [state, setState] = React48.useState("idle");
13570
- const [error, setError] = React48.useState(null);
13571
- const [isWebcamOpen, setIsWebcamOpen] = React48.useState(false);
13572
- const [validationErrors, setValidationErrors] = React48.useState([]);
14198
+ const [state, setState] = React49.useState("idle");
14199
+ const [error, setError] = React49.useState(null);
14200
+ const [isWebcamOpen, setIsWebcamOpen] = React49.useState(false);
14201
+ const [validationErrors, setValidationErrors] = React49.useState([]);
13573
14202
  const isMobile = useIsMobile();
13574
- const cameraInputRef = React48.useRef(null);
14203
+ const cameraInputRef = React49.useRef(null);
13575
14204
  const {
13576
14205
  files,
13577
14206
  addFiles,
@@ -13589,17 +14218,17 @@ function DocumentScanner({
13589
14218
  onValidationError?.(errors);
13590
14219
  }
13591
14220
  });
13592
- React48.useEffect(() => {
14221
+ React49.useEffect(() => {
13593
14222
  onStateChange?.(state);
13594
14223
  }, [state, onStateChange]);
13595
- React48.useEffect(() => {
14224
+ React49.useEffect(() => {
13596
14225
  if (hasFiles && state === "idle") {
13597
14226
  setState("preview");
13598
14227
  } else if (!hasFiles && state === "preview") {
13599
14228
  setState("idle");
13600
14229
  }
13601
14230
  }, [hasFiles, state]);
13602
- const handleFilesSelected = React48.useCallback(
14231
+ const handleFilesSelected = React49.useCallback(
13603
14232
  (fileList) => {
13604
14233
  setError(null);
13605
14234
  setValidationErrors([]);
@@ -13607,10 +14236,10 @@ function DocumentScanner({
13607
14236
  },
13608
14237
  [addFiles]
13609
14238
  );
13610
- const handleCameraCapture = React48.useCallback(() => {
14239
+ const handleCameraCapture = React49.useCallback(() => {
13611
14240
  cameraInputRef.current?.click();
13612
14241
  }, []);
13613
- const handleCameraInputChange = React48.useCallback(
14242
+ const handleCameraInputChange = React49.useCallback(
13614
14243
  (e) => {
13615
14244
  if (e.target.files && e.target.files.length > 0) {
13616
14245
  setError(null);
@@ -13621,7 +14250,7 @@ function DocumentScanner({
13621
14250
  },
13622
14251
  [addFiles]
13623
14252
  );
13624
- const handleWebcamCapture = React48.useCallback(
14253
+ const handleWebcamCapture = React49.useCallback(
13625
14254
  (file) => {
13626
14255
  setError(null);
13627
14256
  setValidationErrors([]);
@@ -13629,7 +14258,7 @@ function DocumentScanner({
13629
14258
  },
13630
14259
  [addFile]
13631
14260
  );
13632
- const handleScan = React48.useCallback(async () => {
14261
+ const handleScan = React49.useCallback(async () => {
13633
14262
  if (!hasFiles) return;
13634
14263
  try {
13635
14264
  setState("processing");
@@ -13648,11 +14277,11 @@ function DocumentScanner({
13648
14277
  setError(errorMessage);
13649
14278
  }
13650
14279
  }, [hasFiles, getFiles, onScan, onResult, clearFiles]);
13651
- const handleRetry = React48.useCallback(() => {
14280
+ const handleRetry = React49.useCallback(() => {
13652
14281
  setState("preview");
13653
14282
  setError(null);
13654
14283
  }, []);
13655
- const handleClearAll = React48.useCallback(() => {
14284
+ const handleClearAll = React49.useCallback(() => {
13656
14285
  clearFiles();
13657
14286
  setError(null);
13658
14287
  setValidationErrors([]);
@@ -13965,10 +14594,10 @@ function useDropzone({
13965
14594
  multiple = false,
13966
14595
  disabled = false
13967
14596
  }) {
13968
- const [isDragging, setIsDragging] = React48.useState(false);
13969
- const inputRef = React48.useRef(null);
13970
- const dragCounter = React48.useRef(0);
13971
- const handleDragEnter = React48.useCallback(
14597
+ const [isDragging, setIsDragging] = React49.useState(false);
14598
+ const inputRef = React49.useRef(null);
14599
+ const dragCounter = React49.useRef(0);
14600
+ const handleDragEnter = React49.useCallback(
13972
14601
  (e) => {
13973
14602
  e.preventDefault();
13974
14603
  e.stopPropagation();
@@ -13980,11 +14609,11 @@ function useDropzone({
13980
14609
  },
13981
14610
  [disabled]
13982
14611
  );
13983
- const handleDragOver = React48.useCallback((e) => {
14612
+ const handleDragOver = React49.useCallback((e) => {
13984
14613
  e.preventDefault();
13985
14614
  e.stopPropagation();
13986
14615
  }, []);
13987
- const handleDragLeave = React48.useCallback((e) => {
14616
+ const handleDragLeave = React49.useCallback((e) => {
13988
14617
  e.preventDefault();
13989
14618
  e.stopPropagation();
13990
14619
  dragCounter.current--;
@@ -13992,7 +14621,7 @@ function useDropzone({
13992
14621
  setIsDragging(false);
13993
14622
  }
13994
14623
  }, []);
13995
- const handleDrop = React48.useCallback(
14624
+ const handleDrop = React49.useCallback(
13996
14625
  (e) => {
13997
14626
  e.preventDefault();
13998
14627
  e.stopPropagation();
@@ -14006,7 +14635,7 @@ function useDropzone({
14006
14635
  },
14007
14636
  [disabled, multiple, onDrop]
14008
14637
  );
14009
- const handleInputChange = React48.useCallback(
14638
+ const handleInputChange = React49.useCallback(
14010
14639
  (e) => {
14011
14640
  const files = e.target.files ? Array.from(e.target.files) : [];
14012
14641
  if (files.length > 0) {
@@ -14016,7 +14645,7 @@ function useDropzone({
14016
14645
  },
14017
14646
  [onDrop]
14018
14647
  );
14019
- const open = React48.useCallback(() => {
14648
+ const open = React49.useCallback(() => {
14020
14649
  if (!disabled) {
14021
14650
  inputRef.current?.click();
14022
14651
  }
@@ -14066,7 +14695,7 @@ function ClaimProviderForm({
14066
14695
  termsUrl = "/terms",
14067
14696
  className = ""
14068
14697
  }) {
14069
- const [formData, setFormData] = React48.useState({
14698
+ const [formData, setFormData] = React49.useState({
14070
14699
  firstName: "",
14071
14700
  lastName: "",
14072
14701
  email: "",
@@ -14369,14 +14998,14 @@ function CreateInvoiceModal({
14369
14998
  initialStep = 1,
14370
14999
  initialEmployerId = ""
14371
15000
  }) {
14372
- const [step, setStep] = React48.useState(initialStep);
14373
- const [employerId, setEmployerId] = React48.useState(initialEmployerId);
14374
- const [selectedOrders, setSelectedOrders] = React48.useState(
15001
+ const [step, setStep] = React49.useState(initialStep);
15002
+ const [employerId, setEmployerId] = React49.useState(initialEmployerId);
15003
+ const [selectedOrders, setSelectedOrders] = React49.useState(
14375
15004
  /* @__PURE__ */ new Set()
14376
15005
  );
14377
- const [dueDate, setDueDate] = React48.useState("");
14378
- const [notes, setNotes] = React48.useState("");
14379
- React48.useEffect(() => {
15006
+ const [dueDate, setDueDate] = React49.useState("");
15007
+ const [notes, setNotes] = React49.useState("");
15008
+ React49.useEffect(() => {
14380
15009
  if (!open) {
14381
15010
  setStep(initialStep);
14382
15011
  setEmployerId(initialEmployerId);
@@ -14385,7 +15014,7 @@ function CreateInvoiceModal({
14385
15014
  setNotes("");
14386
15015
  }
14387
15016
  }, [open, initialStep, initialEmployerId]);
14388
- React48.useEffect(() => {
15017
+ React49.useEffect(() => {
14389
15018
  if (!dueDate && open) {
14390
15019
  const date = /* @__PURE__ */ new Date();
14391
15020
  date.setDate(date.getDate() + defaultDueDays);
@@ -14808,14 +15437,14 @@ function CreateReferralModal({
14808
15437
  errorMessage,
14809
15438
  currency = "$"
14810
15439
  }) {
14811
- const [selectedServices, setSelectedServices] = React48.useState(
15440
+ const [selectedServices, setSelectedServices] = React49.useState(
14812
15441
  /* @__PURE__ */ new Set()
14813
15442
  );
14814
- const [notes, setNotes] = React48.useState("");
14815
- const [priority, setPriority] = React48.useState(
15443
+ const [notes, setNotes] = React49.useState("");
15444
+ const [priority, setPriority] = React49.useState(
14816
15445
  "normal"
14817
15446
  );
14818
- React48.useEffect(() => {
15447
+ React49.useEffect(() => {
14819
15448
  if (!open) {
14820
15449
  setSelectedServices(/* @__PURE__ */ new Set());
14821
15450
  setNotes("");
@@ -15116,15 +15745,15 @@ function EditUserRoleModal({
15116
15745
  isSubmitting = false,
15117
15746
  errorMessage
15118
15747
  }) {
15119
- const [selectedRoleId, setSelectedRoleId] = React48.useState(
15748
+ const [selectedRoleId, setSelectedRoleId] = React49.useState(
15120
15749
  user?.currentRoleId || ""
15121
15750
  );
15122
- React48.useEffect(() => {
15751
+ React49.useEffect(() => {
15123
15752
  if (user?.currentRoleId) {
15124
15753
  setSelectedRoleId(user.currentRoleId);
15125
15754
  }
15126
15755
  }, [user?.currentRoleId]);
15127
- React48.useEffect(() => {
15756
+ React49.useEffect(() => {
15128
15757
  if (!open && user?.currentRoleId) {
15129
15758
  setSelectedRoleId(user.currentRoleId);
15130
15759
  }
@@ -15295,24 +15924,24 @@ function EmployeeForm({
15295
15924
  emailRequired = "Email is required",
15296
15925
  dobRequired = "Date of birth is required"
15297
15926
  } = labels;
15298
- const [firstName, setFirstName] = React48.useState(initialData.firstName ?? "");
15299
- const [lastName, setLastName] = React48.useState(initialData.lastName ?? "");
15300
- const [email, setEmail] = React48.useState(initialData.email ?? "");
15301
- const [dob, setDob] = React48.useState(initialData.dob ?? "");
15302
- const [selectedDepartments, setSelectedDepartments] = React48.useState(initialData.departments ?? []);
15303
- const [title, setTitle] = React48.useState(initialData.title ?? "");
15304
- const [address, setAddress] = React48.useState(
15927
+ const [firstName, setFirstName] = React49.useState(initialData.firstName ?? "");
15928
+ const [lastName, setLastName] = React49.useState(initialData.lastName ?? "");
15929
+ const [email, setEmail] = React49.useState(initialData.email ?? "");
15930
+ const [dob, setDob] = React49.useState(initialData.dob ?? "");
15931
+ const [selectedDepartments, setSelectedDepartments] = React49.useState(initialData.departments ?? []);
15932
+ const [title, setTitle] = React49.useState(initialData.title ?? "");
15933
+ const [address, setAddress] = React49.useState(
15305
15934
  initialData.address ?? {}
15306
15935
  );
15307
- const [phones, setPhones] = React48.useState(
15936
+ const [phones, setPhones] = React49.useState(
15308
15937
  initialData.phones ?? [{ number: "", type: "cell" }]
15309
15938
  );
15310
- const [isActive, setIsActive] = React48.useState(initialData.isActive ?? true);
15311
- const [additionalInfo, setAdditionalInfo] = React48.useState(
15939
+ const [isActive, setIsActive] = React49.useState(initialData.isActive ?? true);
15940
+ const [additionalInfo, setAdditionalInfo] = React49.useState(
15312
15941
  initialData.additionalInfo ?? ""
15313
15942
  );
15314
- const [sendInvite, setSendInvite] = React48.useState(false);
15315
- const [errors, setErrors] = React48.useState({});
15943
+ const [sendInvite, setSendInvite] = React49.useState(false);
15944
+ const [errors, setErrors] = React49.useState({});
15316
15945
  const validate = () => {
15317
15946
  const newErrors = {};
15318
15947
  if (!firstName.trim()) newErrors.firstName = firstNameRequired;
@@ -15731,8 +16360,8 @@ function EmployeeProfileCard({
15731
16360
  className,
15732
16361
  labels = {}
15733
16362
  }) {
15734
- const [isExpanded, setIsExpanded] = React48.useState(defaultExpanded);
15735
- const fileInputRef = React48.useRef(null);
16363
+ const [isExpanded, setIsExpanded] = React49.useState(defaultExpanded);
16364
+ const fileInputRef = React49.useRef(null);
15736
16365
  const {
15737
16366
  moreDetails = "more details",
15738
16367
  lessDetails = "less details",
@@ -16265,13 +16894,13 @@ function EmployerList({
16265
16894
  emptyMessage = "No employers linked yet",
16266
16895
  className = ""
16267
16896
  }) {
16268
- const [searchQuery, setSearchQuery] = React48.useState("");
16897
+ const [searchQuery, setSearchQuery] = React49.useState("");
16269
16898
  const handleSearch = (e) => {
16270
16899
  const query = e.target.value;
16271
16900
  setSearchQuery(query);
16272
16901
  onSearch?.(query);
16273
16902
  };
16274
- const filteredEmployers = React48.useMemo(() => {
16903
+ const filteredEmployers = React49.useMemo(() => {
16275
16904
  if (!searchQuery.trim()) return employers;
16276
16905
  const q = searchQuery.toLowerCase();
16277
16906
  return employers.filter(
@@ -16920,7 +17549,7 @@ function EmployerServiceModal({
16920
17549
  isSubmitting = false,
16921
17550
  errorMessage
16922
17551
  }) {
16923
- const [config, setConfig] = React48.useState({
17552
+ const [config, setConfig] = React49.useState({
16924
17553
  serviceId: service?.id || "",
16925
17554
  employerId: employer?.id || "",
16926
17555
  customPrice: existingConfig?.customPrice,
@@ -16932,7 +17561,7 @@ function EmployerServiceModal({
16932
17561
  notes: existingConfig?.notes,
16933
17562
  billingCode: existingConfig?.billingCode
16934
17563
  });
16935
- React48.useEffect(() => {
17564
+ React49.useEffect(() => {
16936
17565
  setConfig({
16937
17566
  serviceId: service?.id || "",
16938
17567
  employerId: employer?.id || "",
@@ -17809,8 +18438,8 @@ function FileManager({
17809
18438
  errorMessage,
17810
18439
  className = ""
17811
18440
  }) {
17812
- const [isDragging, setIsDragging] = React48.useState(false);
17813
- const fileInputRef = React48.useRef(null);
18441
+ const [isDragging, setIsDragging] = React49.useState(false);
18442
+ const fileInputRef = React49.useRef(null);
17814
18443
  const hasActions = !!(onPreview || onDownload || onDelete);
17815
18444
  const handleDragOver = (e) => {
17816
18445
  e.preventDefault();
@@ -17995,10 +18624,10 @@ function FileRowActionMenu({
17995
18624
  onDownload,
17996
18625
  onDelete
17997
18626
  }) {
17998
- const [open, setOpen] = React48.useState(false);
17999
- const menuRef = React48.useRef(null);
18000
- const buttonRef = React48.useRef(null);
18001
- React48.useEffect(() => {
18627
+ const [open, setOpen] = React49.useState(false);
18628
+ const menuRef = React49.useRef(null);
18629
+ const buttonRef = React49.useRef(null);
18630
+ React49.useEffect(() => {
18002
18631
  if (!open) return;
18003
18632
  function handleClick(e) {
18004
18633
  if (menuRef.current && !menuRef.current.contains(e.target) && buttonRef.current && !buttonRef.current.contains(e.target)) {
@@ -18008,7 +18637,7 @@ function FileRowActionMenu({
18008
18637
  document.addEventListener("mousedown", handleClick);
18009
18638
  return () => document.removeEventListener("mousedown", handleClick);
18010
18639
  }, [open]);
18011
- React48.useEffect(() => {
18640
+ React49.useEffect(() => {
18012
18641
  if (!open) return;
18013
18642
  function handleKey(e) {
18014
18643
  if (e.key === "Escape") setOpen(false);
@@ -18016,8 +18645,8 @@ function FileRowActionMenu({
18016
18645
  document.addEventListener("keydown", handleKey);
18017
18646
  return () => document.removeEventListener("keydown", handleKey);
18018
18647
  }, [open]);
18019
- const [menuPos, setMenuPos] = React48.useState(null);
18020
- React48.useLayoutEffect(() => {
18648
+ const [menuPos, setMenuPos] = React49.useState(null);
18649
+ React49.useLayoutEffect(() => {
18021
18650
  if (!open || !buttonRef.current) return;
18022
18651
  function updatePosition() {
18023
18652
  if (!buttonRef.current) return;
@@ -18137,14 +18766,14 @@ function HelpSupportPanel({
18137
18766
  successMessage,
18138
18767
  className = ""
18139
18768
  }) {
18140
- const [searchTerm, setSearchTerm] = React48.useState("");
18141
- const [expandedFaq, setExpandedFaq] = React48.useState(null);
18142
- const [formData, setFormData] = React48.useState({
18769
+ const [searchTerm, setSearchTerm] = React49.useState("");
18770
+ const [expandedFaq, setExpandedFaq] = React49.useState(null);
18771
+ const [formData, setFormData] = React49.useState({
18143
18772
  subject: "",
18144
18773
  message: "",
18145
18774
  email: ""
18146
18775
  });
18147
- const [showSuccess, setShowSuccess] = React48.useState(false);
18776
+ const [showSuccess, setShowSuccess] = React49.useState(false);
18148
18777
  const filteredFaqs = faqs.filter(
18149
18778
  (faq) => faq.question.toLowerCase().includes(searchTerm.toLowerCase()) || faq.answer.toLowerCase().includes(searchTerm.toLowerCase())
18150
18779
  );
@@ -18616,7 +19245,7 @@ function HRISProviderSelector({
18616
19245
  syncPending = "We are still waiting on data from your HRIS Provider. Please check back later.",
18617
19246
  supportEmail = "support@bluehive.com"
18618
19247
  } = labels;
18619
- const filteredProviders = React48.useMemo(() => {
19248
+ const filteredProviders = React49.useMemo(() => {
18620
19249
  if (!searchQuery.trim()) return providers;
18621
19250
  const query = searchQuery.toLowerCase();
18622
19251
  return providers.filter((p) => p.displayName.toLowerCase().includes(query));
@@ -18903,11 +19532,11 @@ function InventoryManager({
18903
19532
  isLoading = false,
18904
19533
  className = ""
18905
19534
  }) {
18906
- const [updateType, setUpdateType] = React48.useState(
19535
+ const [updateType, setUpdateType] = React49.useState(
18907
19536
  "credit"
18908
19537
  );
18909
- const [updateAmount, setUpdateAmount] = React48.useState("");
18910
- const [updateMemo, setUpdateMemo] = React48.useState("");
19538
+ const [updateAmount, setUpdateAmount] = React49.useState("");
19539
+ const [updateMemo, setUpdateMemo] = React49.useState("");
18911
19540
  const handleSubmit = () => {
18912
19541
  if (!updateAmount || !onUpdateSubmit) return;
18913
19542
  const amount = parseInt(updateAmount, 10);
@@ -18973,7 +19602,7 @@ function InventoryManager({
18973
19602
  /* @__PURE__ */ jsx("th", { className: "text-muted-foreground py-2 text-left text-xs font-medium tracking-wider uppercase", children: "Change" }),
18974
19603
  /* @__PURE__ */ jsx("th", { className: "text-muted-foreground py-2 text-right text-xs font-medium tracking-wider uppercase", children: "Quantity" })
18975
19604
  ] }) }),
18976
- /* @__PURE__ */ jsx("tbody", { className: "divide-border/50 divide-y", children: logEntries.map((entry) => /* @__PURE__ */ jsxs(React48.Fragment, { children: [
19605
+ /* @__PURE__ */ jsx("tbody", { className: "divide-border/50 divide-y", children: logEntries.map((entry) => /* @__PURE__ */ jsxs(React49.Fragment, { children: [
18977
19606
  /* @__PURE__ */ jsxs("tr", { children: [
18978
19607
  /* @__PURE__ */ jsx(
18979
19608
  "td",
@@ -19207,12 +19836,12 @@ function InviteUserModal({
19207
19836
  errorMessage,
19208
19837
  successMessage
19209
19838
  }) {
19210
- const [email, setEmail] = React48.useState("");
19211
- const [firstName, setFirstName] = React48.useState("");
19212
- const [lastName, setLastName] = React48.useState("");
19213
- const [roleId, setRoleId] = React48.useState(defaultRoleId || "");
19214
- const [message, setMessage] = React48.useState("");
19215
- React48.useEffect(() => {
19839
+ const [email, setEmail] = React49.useState("");
19840
+ const [firstName, setFirstName] = React49.useState("");
19841
+ const [lastName, setLastName] = React49.useState("");
19842
+ const [roleId, setRoleId] = React49.useState(defaultRoleId || "");
19843
+ const [message, setMessage] = React49.useState("");
19844
+ React49.useEffect(() => {
19216
19845
  if (!open) {
19217
19846
  setEmail("");
19218
19847
  setFirstName("");
@@ -19452,7 +20081,7 @@ function InvoiceList({
19452
20081
  currency = "$",
19453
20082
  className = ""
19454
20083
  }) {
19455
- const [searchQuery, setSearchQuery] = React48.useState("");
20084
+ const [searchQuery, setSearchQuery] = React49.useState("");
19456
20085
  const handleSearch = (e) => {
19457
20086
  const query = e.target.value;
19458
20087
  setSearchQuery(query);
@@ -19489,7 +20118,7 @@ function InvoiceList({
19489
20118
  { value: "overdue", label: "Overdue" },
19490
20119
  { value: "cancelled", label: "Cancelled" }
19491
20120
  ];
19492
- const filteredInvoices = React48.useMemo(() => {
20121
+ const filteredInvoices = React49.useMemo(() => {
19493
20122
  let result = invoices;
19494
20123
  if (statusFilter !== "all") {
19495
20124
  result = result.filter((inv) => inv.status === statusFilter);
@@ -19502,7 +20131,7 @@ function InvoiceList({
19502
20131
  }
19503
20132
  return result;
19504
20133
  }, [invoices, statusFilter, searchQuery]);
19505
- const totals = React48.useMemo(() => {
20134
+ const totals = React49.useMemo(() => {
19506
20135
  return {
19507
20136
  total: filteredInvoices.reduce((sum, inv) => sum + inv.amount, 0),
19508
20137
  paid: filteredInvoices.filter((inv) => inv.status === "paid").reduce((sum, inv) => sum + inv.amount, 0),
@@ -19726,16 +20355,16 @@ function InvoicePaymentPage({
19726
20355
  showStripeBranding = true,
19727
20356
  className = ""
19728
20357
  }) {
19729
- const [paymentMethod, setPaymentMethod] = React48.useState(
20358
+ const [paymentMethod, setPaymentMethod] = React49.useState(
19730
20359
  acceptedMethods[0] || "card"
19731
20360
  );
19732
- const [name, setName] = React48.useState("");
19733
- const [email, setEmail] = React48.useState("");
19734
- const [cardNumber, setCardNumber] = React48.useState("");
19735
- const [expiry, setExpiry] = React48.useState("");
19736
- const [cvc, setCvc] = React48.useState("");
19737
- const [routingNumber, setRoutingNumber] = React48.useState("");
19738
- const [accountNumber, setAccountNumber] = React48.useState("");
20361
+ const [name, setName] = React49.useState("");
20362
+ const [email, setEmail] = React49.useState("");
20363
+ const [cardNumber, setCardNumber] = React49.useState("");
20364
+ const [expiry, setExpiry] = React49.useState("");
20365
+ const [cvc, setCvc] = React49.useState("");
20366
+ const [routingNumber, setRoutingNumber] = React49.useState("");
20367
+ const [accountNumber, setAccountNumber] = React49.useState("");
19739
20368
  const formatCurrency3 = (amount) => {
19740
20369
  return `${currency}${amount.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
19741
20370
  };
@@ -20540,10 +21169,10 @@ function LanguageSelector({
20540
21169
  disabled = false,
20541
21170
  className
20542
21171
  }) {
20543
- const [isOpen, setIsOpen] = React48.useState(false);
20544
- const containerRef = React48.useRef(null);
21172
+ const [isOpen, setIsOpen] = React49.useState(false);
21173
+ const containerRef = React49.useRef(null);
20545
21174
  const selectedLanguage = languages.find((l) => l.code === value);
20546
- React48.useEffect(() => {
21175
+ React49.useEffect(() => {
20547
21176
  const handleClickOutside = (e) => {
20548
21177
  if (containerRef.current && !containerRef.current.contains(e.target)) {
20549
21178
  setIsOpen(false);
@@ -20552,7 +21181,7 @@ function LanguageSelector({
20552
21181
  document.addEventListener("mousedown", handleClickOutside);
20553
21182
  return () => document.removeEventListener("mousedown", handleClickOutside);
20554
21183
  }, []);
20555
- React48.useEffect(() => {
21184
+ React49.useEffect(() => {
20556
21185
  const handleEscape = (e) => {
20557
21186
  if (e.key === "Escape") setIsOpen(false);
20558
21187
  };
@@ -21084,7 +21713,7 @@ function formatLastSeen(date) {
21084
21713
  if (diffDays < 7) return `${diffDays}d ago`;
21085
21714
  return date.toLocaleDateString();
21086
21715
  }
21087
- var ConversationHeader = React48.forwardRef(
21716
+ var ConversationHeader = React49.forwardRef(
21088
21717
  ({
21089
21718
  className,
21090
21719
  size,
@@ -21206,7 +21835,7 @@ var ConversationHeader = React48.forwardRef(
21206
21835
  }
21207
21836
  );
21208
21837
  ConversationHeader.displayName = "ConversationHeader";
21209
- var ConversationListItem = React48.forwardRef(({ className, conversation, isSelected, onSelect, ...props }, ref) => {
21838
+ var ConversationListItem = React49.forwardRef(({ className, conversation, isSelected, onSelect, ...props }, ref) => {
21210
21839
  const participant = conversation.participants.find((p) => !p.isCurrentUser);
21211
21840
  const title = getConversationTitle(conversation, participant);
21212
21841
  const avatarUrl = conversation.avatarUrl || participant?.avatarUrl;
@@ -21414,7 +22043,7 @@ function ConversationListSkeleton({
21414
22043
  }
21415
22044
  ConversationListSkeleton.displayName = "ConversationListSkeleton";
21416
22045
  function LightboxModal({ attachment, onClose }) {
21417
- React48.useEffect(() => {
22046
+ React49.useEffect(() => {
21418
22047
  const handleKeyDown = (event) => {
21419
22048
  if (event.key === "Escape") {
21420
22049
  onClose();
@@ -21511,7 +22140,7 @@ function LightboxModal({ attachment, onClose }) {
21511
22140
  );
21512
22141
  }
21513
22142
  LightboxModal.displayName = "LightboxModal";
21514
- var MessageThread = React48.forwardRef(
22143
+ var MessageThread = React49.forwardRef(
21515
22144
  ({
21516
22145
  conversation,
21517
22146
  messages,
@@ -21542,8 +22171,8 @@ var MessageThread = React48.forwardRef(
21542
22171
  onError,
21543
22172
  className
21544
22173
  }, ref) => {
21545
- const [lightboxAttachment, setLightboxAttachment] = React48.useState(null);
21546
- const [replyTo, setReplyTo] = React48.useState(null);
22174
+ const [lightboxAttachment, setLightboxAttachment] = React49.useState(null);
22175
+ const [replyTo, setReplyTo] = React49.useState(null);
21547
22176
  const participant = conversation?.type === "direct" ? conversation.participants.find((p) => p.id !== currentUser.id) : void 0;
21548
22177
  const handleAttachmentClick = (attachment, message) => {
21549
22178
  if (attachment.type === "image" || attachment.type === "video") {
@@ -21715,13 +22344,13 @@ function useMessages(options) {
21715
22344
  onRetry,
21716
22345
  onLoadMore
21717
22346
  } = options;
21718
- const [messages, setMessages] = React48.useState(initialMessages);
21719
- const [isSending, setIsSending] = React48.useState(false);
21720
- const [isLoadingMore, setIsLoadingMore] = React48.useState(false);
21721
- React48.useEffect(() => {
22347
+ const [messages, setMessages] = React49.useState(initialMessages);
22348
+ const [isSending, setIsSending] = React49.useState(false);
22349
+ const [isLoadingMore, setIsLoadingMore] = React49.useState(false);
22350
+ React49.useEffect(() => {
21722
22351
  setMessages(initialMessages);
21723
22352
  }, [initialMessages]);
21724
- const addMessage = React48.useCallback((message) => {
22353
+ const addMessage = React49.useCallback((message) => {
21725
22354
  setMessages((prev) => {
21726
22355
  if (prev.some((m) => m.id === message.id)) {
21727
22356
  return prev;
@@ -21729,7 +22358,7 @@ function useMessages(options) {
21729
22358
  return [...prev, message];
21730
22359
  });
21731
22360
  }, []);
21732
- const updateMessage = React48.useCallback(
22361
+ const updateMessage = React49.useCallback(
21733
22362
  (messageId, updates) => {
21734
22363
  setMessages(
21735
22364
  (prev) => prev.map((m) => m.id === messageId ? { ...m, ...updates } : m)
@@ -21737,22 +22366,22 @@ function useMessages(options) {
21737
22366
  },
21738
22367
  []
21739
22368
  );
21740
- const removeMessage = React48.useCallback((messageId) => {
22369
+ const removeMessage = React49.useCallback((messageId) => {
21741
22370
  setMessages((prev) => prev.filter((m) => m.id !== messageId));
21742
22371
  }, []);
21743
- const updateStatus = React48.useCallback(
22372
+ const updateStatus = React49.useCallback(
21744
22373
  (messageId, status) => {
21745
22374
  updateMessage(messageId, { status });
21746
22375
  },
21747
22376
  [updateMessage]
21748
22377
  );
21749
- const markAsRead = React48.useCallback(
22378
+ const markAsRead = React49.useCallback(
21750
22379
  (messageId) => {
21751
22380
  updateStatus(messageId, "read");
21752
22381
  },
21753
22382
  [updateStatus]
21754
22383
  );
21755
- const sendMessage = React48.useCallback(
22384
+ const sendMessage = React49.useCallback(
21756
22385
  async (newMessage) => {
21757
22386
  const optimisticId = `optimistic-${Date.now()}`;
21758
22387
  const optimisticMessage = {
@@ -21784,7 +22413,7 @@ function useMessages(options) {
21784
22413
  },
21785
22414
  [currentUser, onSend, addMessage, updateStatus]
21786
22415
  );
21787
- const retryMessage = React48.useCallback(
22416
+ const retryMessage = React49.useCallback(
21788
22417
  async (messageId) => {
21789
22418
  updateStatus(messageId, "sending");
21790
22419
  try {
@@ -21798,7 +22427,7 @@ function useMessages(options) {
21798
22427
  },
21799
22428
  [onRetry, updateStatus]
21800
22429
  );
21801
- const loadMore = React48.useCallback(async () => {
22430
+ const loadMore = React49.useCallback(async () => {
21802
22431
  if (isLoadingMore || !onLoadMore) return;
21803
22432
  setIsLoadingMore(true);
21804
22433
  try {
@@ -21829,13 +22458,13 @@ function useTypingIndicator(options = {}) {
21829
22458
  onTypingStart,
21830
22459
  onTypingStop
21831
22460
  } = options;
21832
- const [participants, setParticipants] = React48.useState(initialParticipants);
21833
- const [isLocalTyping, setIsLocalTyping] = React48.useState(false);
21834
- const typingTimeoutRef = React48.useRef(null);
21835
- React48.useEffect(() => {
22461
+ const [participants, setParticipants] = React49.useState(initialParticipants);
22462
+ const [isLocalTyping, setIsLocalTyping] = React49.useState(false);
22463
+ const typingTimeoutRef = React49.useRef(null);
22464
+ React49.useEffect(() => {
21836
22465
  setParticipants(initialParticipants);
21837
22466
  }, [initialParticipants]);
21838
- const startTyping = React48.useCallback(() => {
22467
+ const startTyping = React49.useCallback(() => {
21839
22468
  if (!isLocalTyping) {
21840
22469
  setIsLocalTyping(true);
21841
22470
  onTypingStart?.();
@@ -21848,21 +22477,21 @@ function useTypingIndicator(options = {}) {
21848
22477
  onTypingStop?.();
21849
22478
  }, debounceTime);
21850
22479
  }, [isLocalTyping, debounceTime, onTypingStart, onTypingStop]);
21851
- const stopTyping = React48.useCallback(() => {
22480
+ const stopTyping = React49.useCallback(() => {
21852
22481
  if (typingTimeoutRef.current) {
21853
22482
  clearTimeout(typingTimeoutRef.current);
21854
22483
  }
21855
22484
  setIsLocalTyping(false);
21856
22485
  onTypingStop?.();
21857
22486
  }, [onTypingStop]);
21858
- React48.useEffect(() => {
22487
+ React49.useEffect(() => {
21859
22488
  return () => {
21860
22489
  if (typingTimeoutRef.current) {
21861
22490
  clearTimeout(typingTimeoutRef.current);
21862
22491
  }
21863
22492
  };
21864
22493
  }, []);
21865
- const typingState = React48.useMemo(
22494
+ const typingState = React49.useMemo(
21866
22495
  () => ({
21867
22496
  participants,
21868
22497
  lastUpdated: /* @__PURE__ */ new Date()
@@ -21878,11 +22507,11 @@ function useTypingIndicator(options = {}) {
21878
22507
  }
21879
22508
  function useMessageScroll(options) {
21880
22509
  const { messages, currentUserId, threshold = 100 } = options;
21881
- const scrollContainerRef = React48.useRef(null);
21882
- const bottomRef = React48.useRef(null);
21883
- const [isScrolledUp, setIsScrolledUp] = React48.useState(false);
21884
- const prevMessageCountRef = React48.useRef(messages.length);
21885
- React48.useEffect(() => {
22510
+ const scrollContainerRef = React49.useRef(null);
22511
+ const bottomRef = React49.useRef(null);
22512
+ const [isScrolledUp, setIsScrolledUp] = React49.useState(false);
22513
+ const prevMessageCountRef = React49.useRef(messages.length);
22514
+ React49.useEffect(() => {
21886
22515
  const container = scrollContainerRef.current;
21887
22516
  if (!container) return;
21888
22517
  const handleScroll = () => {
@@ -21893,12 +22522,12 @@ function useMessageScroll(options) {
21893
22522
  container.addEventListener("scroll", handleScroll);
21894
22523
  return () => container.removeEventListener("scroll", handleScroll);
21895
22524
  }, [threshold]);
21896
- const scrollToBottom = React48.useCallback((smooth = true) => {
22525
+ const scrollToBottom = React49.useCallback((smooth = true) => {
21897
22526
  bottomRef.current?.scrollIntoView({
21898
22527
  behavior: smooth ? "smooth" : "auto"
21899
22528
  });
21900
22529
  }, []);
21901
- React48.useEffect(() => {
22530
+ React49.useEffect(() => {
21902
22531
  const messageCountChanged = messages.length !== prevMessageCountRef.current;
21903
22532
  prevMessageCountRef.current = messages.length;
21904
22533
  if (!messageCountChanged) return;
@@ -21917,9 +22546,9 @@ function useMessageScroll(options) {
21917
22546
  }
21918
22547
  function useReadReceipts(options) {
21919
22548
  const { currentUserId, onMarkRead, threshold = 0.5 } = options;
21920
- const observerRef = React48.useRef(null);
21921
- const observedMessagesRef = React48.useRef(/* @__PURE__ */ new Set());
21922
- React48.useEffect(() => {
22549
+ const observerRef = React49.useRef(null);
22550
+ const observedMessagesRef = React49.useRef(/* @__PURE__ */ new Set());
22551
+ React49.useEffect(() => {
21923
22552
  observerRef.current = new IntersectionObserver(
21924
22553
  (entries) => {
21925
22554
  entries.forEach((entry) => {
@@ -21938,7 +22567,7 @@ function useReadReceipts(options) {
21938
22567
  observerRef.current?.disconnect();
21939
22568
  };
21940
22569
  }, [onMarkRead, threshold]);
21941
- const observeMessage = React48.useCallback(
22570
+ const observeMessage = React49.useCallback(
21942
22571
  (element, message) => {
21943
22572
  if (!element || !observerRef.current) return;
21944
22573
  if (message.sender.id !== currentUserId && message.status !== "read" && !observedMessagesRef.current.has(message.id)) {
@@ -22893,13 +23522,13 @@ function OrderConfirmationWizard({
22893
23522
  stepTitles = ["Verify Employee", "Consent & ID", "Confirmation"],
22894
23523
  className = ""
22895
23524
  }) {
22896
- const [step, setStep] = React48.useState(initialStep);
22897
- const [employeeVerified, setEmployeeVerified] = React48.useState(false);
22898
- const [verificationNotes, setVerificationNotes] = React48.useState("");
22899
- const [consentObtained, setConsentObtained] = React48.useState(false);
22900
- const [idVerified, setIdVerified] = React48.useState(false);
22901
- const [idType, setIdType] = React48.useState("");
22902
- const [confirmationNotes, setConfirmationNotes] = React48.useState("");
23525
+ const [step, setStep] = React49.useState(initialStep);
23526
+ const [employeeVerified, setEmployeeVerified] = React49.useState(false);
23527
+ const [verificationNotes, setVerificationNotes] = React49.useState("");
23528
+ const [consentObtained, setConsentObtained] = React49.useState(false);
23529
+ const [idVerified, setIdVerified] = React49.useState(false);
23530
+ const [idType, setIdType] = React49.useState("");
23531
+ const [confirmationNotes, setConfirmationNotes] = React49.useState("");
22903
23532
  const handleStepChange = (newStep) => {
22904
23533
  setStep(newStep);
22905
23534
  onStepChange?.(newStep);
@@ -22927,7 +23556,7 @@ function OrderConfirmationWizard({
22927
23556
  const stepNum = index + 1;
22928
23557
  const isActive = step === stepNum;
22929
23558
  const isComplete = step > stepNum;
22930
- return /* @__PURE__ */ jsxs(React48.Fragment, { children: [
23559
+ return /* @__PURE__ */ jsxs(React49.Fragment, { children: [
22931
23560
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
22932
23561
  /* @__PURE__ */ jsx(
22933
23562
  "div",
@@ -23512,7 +24141,7 @@ function OrderList({
23512
24141
  actions,
23513
24142
  className
23514
24143
  }) {
23515
- const filteredOrders = React48.useMemo(() => {
24144
+ const filteredOrders = React49.useMemo(() => {
23516
24145
  const activeTabConfig = tabs.find((t) => t.id === activeTab);
23517
24146
  if (!activeTabConfig?.statuses || !getOrderStatus) {
23518
24147
  return orders;
@@ -23521,7 +24150,7 @@ function OrderList({
23521
24150
  (order) => activeTabConfig.statuses.includes(getOrderStatus(order))
23522
24151
  );
23523
24152
  }, [orders, activeTab, tabs, getOrderStatus]);
23524
- const tabCounts = React48.useMemo(() => {
24153
+ const tabCounts = React49.useMemo(() => {
23525
24154
  if (!getOrderStatus) return {};
23526
24155
  const counts = {};
23527
24156
  tabs.forEach((tab) => {
@@ -23745,7 +24374,7 @@ function OrderLookupForm({
23745
24374
  welcomeMessage = "Look up your order by entering the information below.",
23746
24375
  className = ""
23747
24376
  }) {
23748
- const [formData, setFormData] = React48.useState({
24377
+ const [formData, setFormData] = React49.useState({
23749
24378
  orderNumber: "",
23750
24379
  dateOfBirth: "",
23751
24380
  lastName: ""
@@ -24279,14 +24908,14 @@ function OverflowMenuItem({
24279
24908
  function PatientOverflowMenu({
24280
24909
  onAction
24281
24910
  }) {
24282
- const [open, setOpen] = React48.useState(false);
24283
- const menuRef = React48.useRef(null);
24911
+ const [open, setOpen] = React49.useState(false);
24912
+ const menuRef = React49.useRef(null);
24284
24913
  useClickOutside(
24285
24914
  menuRef,
24286
- React48.useCallback(() => setOpen(false), [])
24915
+ React49.useCallback(() => setOpen(false), [])
24287
24916
  );
24288
24917
  useEscapeKey(
24289
- React48.useCallback(() => setOpen(false), []),
24918
+ React49.useCallback(() => setOpen(false), []),
24290
24919
  open
24291
24920
  );
24292
24921
  const handleAction = (action) => {
@@ -24471,7 +25100,7 @@ function AlertRow({ comments }) {
24471
25100
  /* @__PURE__ */ jsx("span", { className: "text-foreground text-sm", children: comments.join("; ") })
24472
25101
  ] });
24473
25102
  }
24474
- var PatientHeader = React48.forwardRef(
25103
+ var PatientHeader = React49.forwardRef(
24475
25104
  ({
24476
25105
  patient,
24477
25106
  allergies = [],
@@ -24500,13 +25129,13 @@ var PatientHeader = React48.forwardRef(
24500
25129
  const hasComments = showCommentsBanner && comments.length > 0;
24501
25130
  const hasProviders = showProviderBanner && !!(patient.attendingProvider || patient.familyProvider);
24502
25131
  const hasInfoRows = hasAllergies || hasMedications || hasComments || hasProviders;
24503
- const [addModalType, setAddModalType] = React48.useState(null);
24504
- const [addForm, setAddForm] = React48.useState({});
25132
+ const [addModalType, setAddModalType] = React49.useState(null);
25133
+ const [addForm, setAddForm] = React49.useState({});
24505
25134
  const addEntityLabel = addModalType ? ADD_ENTITY_LABELS[addModalType] ?? "" : "";
24506
- const [contactModalOpen, setContactModalOpen] = React48.useState(false);
24507
- const [editPatientOpen, setEditPatientOpen] = React48.useState(false);
24508
- const [editPatientForm, setEditPatientForm] = React48.useState({});
24509
- const handleOverflowAction = React48.useCallback(
25135
+ const [contactModalOpen, setContactModalOpen] = React49.useState(false);
25136
+ const [editPatientOpen, setEditPatientOpen] = React49.useState(false);
25137
+ const [editPatientForm, setEditPatientForm] = React49.useState({});
25138
+ const handleOverflowAction = React49.useCallback(
24510
25139
  (action) => {
24511
25140
  if (action === "contact") {
24512
25141
  setContactModalOpen(true);
@@ -25987,7 +26616,7 @@ function PermissionItem({
25987
26616
  parentChecked
25988
26617
  }) {
25989
26618
  const hasChildren = permission.children && permission.children.length > 0;
25990
- const [isExpanded, setIsExpanded] = React48.useState(true);
26619
+ const [isExpanded, setIsExpanded] = React49.useState(true);
25991
26620
  const handleChange = (checked) => {
25992
26621
  onToggle(permission.id, checked);
25993
26622
  if (!checked && hasChildren) {
@@ -26069,12 +26698,12 @@ function PermissionsEditor({
26069
26698
  summary = "Summary",
26070
26699
  all = "All"
26071
26700
  } = labels;
26072
- const [expandedGroups, setExpandedGroups] = React48.useState(
26701
+ const [expandedGroups, setExpandedGroups] = React49.useState(
26073
26702
  () => new Set(
26074
26703
  groups.filter((g) => g.defaultExpanded !== false).map((g) => g.id)
26075
26704
  )
26076
26705
  );
26077
- const permissionMap = React48.useMemo(() => {
26706
+ const permissionMap = React49.useMemo(() => {
26078
26707
  const map = /* @__PURE__ */ new Map();
26079
26708
  const processPermissions = (permissions) => {
26080
26709
  permissions.forEach((perm) => {
@@ -26118,7 +26747,7 @@ function PermissionsEditor({
26118
26747
  onEmployersChange([...selectedEmployers, employerId]);
26119
26748
  }
26120
26749
  };
26121
- const assignedPermissionNames = React48.useMemo(() => {
26750
+ const assignedPermissionNames = React49.useMemo(() => {
26122
26751
  return assignedPermissions.map((id) => permissionMap.get(id)?.name).filter(Boolean);
26123
26752
  }, [assignedPermissions, permissionMap]);
26124
26753
  return /* @__PURE__ */ jsxs("div", { className: cn("space-y-6", className), "data-slot": "perm-editor", children: [
@@ -26535,7 +27164,7 @@ var logoContainerVariants = cva(
26535
27164
  }
26536
27165
  );
26537
27166
  var ProviderLogo = ({ logoURL, name, variant }) => {
26538
- const [hasError, setHasError] = React48.useState(false);
27167
+ const [hasError, setHasError] = React49.useState(false);
26539
27168
  if (!logoURL || hasError) {
26540
27169
  return /* @__PURE__ */ jsx(
26541
27170
  "div",
@@ -26670,7 +27299,7 @@ function formatAddressSingleLine2(address) {
26670
27299
  parts.push(`${address.city}, ${address.state} ${address.postalCode}`);
26671
27300
  return parts.join(", ");
26672
27301
  }
26673
- var ProviderCard = React48.forwardRef(
27302
+ var ProviderCard = React49.forwardRef(
26674
27303
  ({
26675
27304
  provider,
26676
27305
  variant = "compact",
@@ -27155,7 +27784,7 @@ function ProviderLogo2({
27155
27784
  size = "md",
27156
27785
  className
27157
27786
  }) {
27158
- const [hasError, setHasError] = React48.useState(false);
27787
+ const [hasError, setHasError] = React49.useState(false);
27159
27788
  const initials = name.split(" ").map((word) => word[0]).join("").toUpperCase().slice(0, 2);
27160
27789
  if (!src || hasError) {
27161
27790
  return /* @__PURE__ */ jsx(
@@ -27593,7 +28222,7 @@ function ProviderDetailHeaderSkeleton({
27593
28222
  /* @__PURE__ */ jsx("div", { className: "h-3 w-12 rounded bg-gray-200 dark:bg-gray-700" })
27594
28223
  ] }, i)) }),
27595
28224
  /* @__PURE__ */ jsxs("div", { className: "container mx-auto px-4 py-6", children: [
27596
- /* @__PURE__ */ jsx("div", { className: "mb-4 hidden items-center gap-2 sm:flex", children: [1, 2, 3, 4].map((i) => /* @__PURE__ */ jsxs(React48.Fragment, { children: [
28225
+ /* @__PURE__ */ jsx("div", { className: "mb-4 hidden items-center gap-2 sm:flex", children: [1, 2, 3, 4].map((i) => /* @__PURE__ */ jsxs(React49.Fragment, { children: [
27597
28226
  i > 1 && /* @__PURE__ */ jsx("div", { className: "h-4 w-4 rounded-full bg-gray-200 dark:bg-gray-700" }),
27598
28227
  /* @__PURE__ */ jsx("div", { className: "h-4 w-16 rounded bg-gray-200 dark:bg-gray-700" })
27599
28228
  ] }, i)) }),
@@ -28519,7 +29148,7 @@ var SearchResultsMessage = ({
28519
29148
  }
28520
29149
  );
28521
29150
  };
28522
- var ProviderSearchBar = React48.forwardRef(
29151
+ var ProviderSearchBar = React49.forwardRef(
28523
29152
  ({
28524
29153
  onSearch,
28525
29154
  onGeolocate,
@@ -28540,10 +29169,10 @@ var ProviderSearchBar = React48.forwardRef(
28540
29169
  className,
28541
29170
  ...props
28542
29171
  }, ref) => {
28543
- const [internalValue, setInternalValue] = React48.useState(
29172
+ const [internalValue, setInternalValue] = React49.useState(
28544
29173
  defaultValue || ""
28545
29174
  );
28546
- const [validationError, setValidationError] = React48.useState(
29175
+ const [validationError, setValidationError] = React49.useState(
28547
29176
  null
28548
29177
  );
28549
29178
  const zipValue = value ?? internalValue;
@@ -28824,7 +29453,7 @@ function XMarkIcon({ className }) {
28824
29453
  );
28825
29454
  }
28826
29455
  function InputField({ label, icon, className, id, ...props }) {
28827
- const generatedId = React48.useId();
29456
+ const generatedId = React49.useId();
28828
29457
  const inputId = id || generatedId;
28829
29458
  return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
28830
29459
  label && /* @__PURE__ */ jsx("label", { htmlFor: inputId, className: labelVariants2(), children: label }),
@@ -28848,7 +29477,7 @@ function SelectField({
28848
29477
  id,
28849
29478
  ...props
28850
29479
  }) {
28851
- const generatedId = React48.useId();
29480
+ const generatedId = React49.useId();
28852
29481
  const selectId = id || generatedId;
28853
29482
  return /* @__PURE__ */ jsxs("div", { children: [
28854
29483
  label && /* @__PURE__ */ jsx("label", { htmlFor: selectId, className: labelVariants2(), children: label }),
@@ -28901,12 +29530,12 @@ function ServiceMultiSelect({
28901
29530
  disabled = false,
28902
29531
  showCounts = false
28903
29532
  }) {
28904
- const [isOpen, setIsOpen] = React48.useState(false);
28905
- const [searchTerm, setSearchTerm] = React48.useState("");
28906
- const containerRef = React48.useRef(null);
28907
- const inputRef = React48.useRef(null);
28908
- const listboxId = React48.useId();
28909
- React48.useEffect(() => {
29533
+ const [isOpen, setIsOpen] = React49.useState(false);
29534
+ const [searchTerm, setSearchTerm] = React49.useState("");
29535
+ const containerRef = React49.useRef(null);
29536
+ const inputRef = React49.useRef(null);
29537
+ const listboxId = React49.useId();
29538
+ React49.useEffect(() => {
28910
29539
  function handleClickOutside(event) {
28911
29540
  if (containerRef.current && !containerRef.current.contains(event.target)) {
28912
29541
  setIsOpen(false);
@@ -28915,14 +29544,14 @@ function ServiceMultiSelect({
28915
29544
  document.addEventListener("mousedown", handleClickOutside);
28916
29545
  return () => document.removeEventListener("mousedown", handleClickOutside);
28917
29546
  }, []);
28918
- const filteredServices = React48.useMemo(() => {
29547
+ const filteredServices = React49.useMemo(() => {
28919
29548
  if (!searchTerm) return services;
28920
29549
  const lowerSearch = searchTerm.toLowerCase();
28921
29550
  return services.filter(
28922
29551
  (service) => service.label.toLowerCase().includes(lowerSearch) || service.category?.toLowerCase().includes(lowerSearch)
28923
29552
  );
28924
29553
  }, [services, searchTerm]);
28925
- const groupedServices = React48.useMemo(() => {
29554
+ const groupedServices = React49.useMemo(() => {
28926
29555
  const groups = {};
28927
29556
  filteredServices.forEach((service) => {
28928
29557
  const category = service.category || "Other";
@@ -28931,7 +29560,7 @@ function ServiceMultiSelect({
28931
29560
  });
28932
29561
  return groups;
28933
29562
  }, [filteredServices]);
28934
- const selectedServiceObjects = React48.useMemo(
29563
+ const selectedServiceObjects = React49.useMemo(
28935
29564
  () => services.filter((s) => selectedServices.includes(s.value)),
28936
29565
  [services, selectedServices]
28937
29566
  );
@@ -29437,10 +30066,10 @@ function ProviderSelector({
29437
30066
  size = "md",
29438
30067
  className
29439
30068
  }) {
29440
- const [isOpen, setIsOpen] = React48.useState(false);
29441
- const [searchQuery, setSearchQuery] = React48.useState("");
29442
- const containerRef = React48.useRef(null);
29443
- React48.useEffect(() => {
30069
+ const [isOpen, setIsOpen] = React49.useState(false);
30070
+ const [searchQuery, setSearchQuery] = React49.useState("");
30071
+ const containerRef = React49.useRef(null);
30072
+ React49.useEffect(() => {
29444
30073
  function handleClickOutside(event) {
29445
30074
  if (containerRef.current && !containerRef.current.contains(event.target)) {
29446
30075
  setIsOpen(false);
@@ -29449,7 +30078,7 @@ function ProviderSelector({
29449
30078
  document.addEventListener("mousedown", handleClickOutside);
29450
30079
  return () => document.removeEventListener("mousedown", handleClickOutside);
29451
30080
  }, []);
29452
- React48.useEffect(() => {
30081
+ React49.useEffect(() => {
29453
30082
  function handleEscape(event) {
29454
30083
  if (event.key === "Escape") {
29455
30084
  setIsOpen(false);
@@ -29458,12 +30087,12 @@ function ProviderSelector({
29458
30087
  document.addEventListener("keydown", handleEscape);
29459
30088
  return () => document.removeEventListener("keydown", handleEscape);
29460
30089
  }, []);
29461
- React48.useEffect(() => {
30090
+ React49.useEffect(() => {
29462
30091
  if (!isOpen) {
29463
30092
  setSearchQuery("");
29464
30093
  }
29465
30094
  }, [isOpen]);
29466
- const filteredProviders = React48.useMemo(() => {
30095
+ const filteredProviders = React49.useMemo(() => {
29467
30096
  if (!searchQuery) return providers;
29468
30097
  const query = searchQuery.toLowerCase();
29469
30098
  return providers.filter(
@@ -29753,9 +30382,9 @@ function ProviderSettings({
29753
30382
  defaultTab = "general",
29754
30383
  className = ""
29755
30384
  }) {
29756
- const [settings, setSettings] = React48.useState(initialSettings);
29757
- const [hasChanges, setHasChanges] = React48.useState(false);
29758
- React48.useEffect(() => {
30385
+ const [settings, setSettings] = React49.useState(initialSettings);
30386
+ const [hasChanges, setHasChanges] = React49.useState(false);
30387
+ React49.useEffect(() => {
29759
30388
  setSettings(initialSettings);
29760
30389
  setHasChanges(false);
29761
30390
  }, [initialSettings]);
@@ -30987,11 +31616,11 @@ function RecurringServiceSetupModal({
30987
31616
  cancel = "Cancel",
30988
31617
  save = "Save"
30989
31618
  } = labels;
30990
- const instanceId = React48.useId();
31619
+ const instanceId = React49.useId();
30991
31620
  const providerSelectId = `${instanceId}-provider`;
30992
31621
  const serviceSelectId = `${instanceId}-service`;
30993
31622
  const occurrenceSelectId = `${instanceId}-occurrence`;
30994
- const [formData, setFormData] = React48.useState(
31623
+ const [formData, setFormData] = React49.useState(
30995
31624
  initialData || {
30996
31625
  providerId: "",
30997
31626
  serviceId: "",
@@ -30999,7 +31628,7 @@ function RecurringServiceSetupModal({
30999
31628
  overrideConsent: false
31000
31629
  }
31001
31630
  );
31002
- React48.useEffect(() => {
31631
+ React49.useEffect(() => {
31003
31632
  if (initialData) {
31004
31633
  setFormData(initialData);
31005
31634
  } else {
@@ -31212,9 +31841,9 @@ function RejectionModal({
31212
31841
  isSubmitting = false,
31213
31842
  variant = "danger"
31214
31843
  }) {
31215
- const [selectedReasonId, setSelectedReasonId] = React48.useState("");
31216
- const [details, setDetails] = React48.useState("");
31217
- React48.useEffect(() => {
31844
+ const [selectedReasonId, setSelectedReasonId] = React49.useState("");
31845
+ const [details, setDetails] = React49.useState("");
31846
+ React49.useEffect(() => {
31218
31847
  if (!open) {
31219
31848
  setSelectedReasonId("");
31220
31849
  setDetails("");
@@ -31671,7 +32300,7 @@ function ReportDashboard({
31671
32300
  )
31672
32301
  ] });
31673
32302
  }
31674
- var ResultsEntryForm = React48.forwardRef(function ResultsEntryForm2({
32303
+ var ResultsEntryForm = React49.forwardRef(function ResultsEntryForm2({
31675
32304
  employeeFirstName,
31676
32305
  employeeLastName,
31677
32306
  initialData = {},
@@ -31699,30 +32328,30 @@ var ResultsEntryForm = React48.forwardRef(function ResultsEntryForm2({
31699
32328
  addProviderContact = "Click here to add a provider contact",
31700
32329
  pleaseSelectResult = "Please select a result"
31701
32330
  } = labels;
31702
- const [result, setResult] = React48.useState(
32331
+ const [result, setResult] = React49.useState(
31703
32332
  initialData.result ?? null
31704
32333
  );
31705
- const [alternateText, setAlternateText] = React48.useState(
32334
+ const [alternateText, setAlternateText] = React49.useState(
31706
32335
  initialData.alternateText ?? ""
31707
32336
  );
31708
- const [dateDrawnValue, setDateDrawnValue] = React48.useState(
32337
+ const [dateDrawnValue, setDateDrawnValue] = React49.useState(
31709
32338
  initialData.dateDrawn ?? ""
31710
32339
  );
31711
- const [dateCompletedValue, setDateCompletedValue] = React48.useState(
32340
+ const [dateCompletedValue, setDateCompletedValue] = React49.useState(
31712
32341
  initialData.dateCompleted ?? ""
31713
32342
  );
31714
- const [recommendations, setRecommendations] = React48.useState(
32343
+ const [recommendations, setRecommendations] = React49.useState(
31715
32344
  initialData.recommendations ?? ""
31716
32345
  );
31717
- const [files, setFiles] = React48.useState(initialData.files ?? []);
31718
- const [selectedContacts, setSelectedContacts] = React48.useState(
32346
+ const [files, setFiles] = React49.useState(initialData.files ?? []);
32347
+ const [selectedContacts, setSelectedContacts] = React49.useState(
31719
32348
  initialData.providerContacts ?? []
31720
32349
  );
31721
- const [applyToAll, setApplyToAll] = React48.useState(
32350
+ const [applyToAll, setApplyToAll] = React49.useState(
31722
32351
  initialData.applyToAllServices ?? false
31723
32352
  );
31724
- const [showError, setShowError] = React48.useState(false);
31725
- const fileInputRef = React48.useRef(null);
32353
+ const [showError, setShowError] = React49.useState(false);
32354
+ const fileInputRef = React49.useRef(null);
31726
32355
  const handleFileSelect = (e) => {
31727
32356
  const selectedFiles = Array.from(e.target.files || []);
31728
32357
  setFiles((prev) => [...prev, ...selectedFiles]);
@@ -31738,7 +32367,7 @@ var ResultsEntryForm = React48.forwardRef(function ResultsEntryForm2({
31738
32367
  (prev) => prev.includes(contactId) ? prev.filter((id) => id !== contactId) : [...prev, contactId]
31739
32368
  );
31740
32369
  };
31741
- const validateAndSubmit = React48.useCallback(() => {
32370
+ const validateAndSubmit = React49.useCallback(() => {
31742
32371
  if (!result) {
31743
32372
  setShowError(true);
31744
32373
  return;
@@ -31765,7 +32394,7 @@ var ResultsEntryForm = React48.forwardRef(function ResultsEntryForm2({
31765
32394
  applyToAll,
31766
32395
  onSubmit
31767
32396
  ]);
31768
- React48.useImperativeHandle(
32397
+ React49.useImperativeHandle(
31769
32398
  ref,
31770
32399
  () => ({
31771
32400
  submit: validateAndSubmit
@@ -32041,7 +32670,7 @@ function ResultsEntryModal({
32041
32670
  ...props
32042
32671
  }) {
32043
32672
  const { submit = "Submit", close = "Close" } = labels;
32044
- const formRef = React48.useRef(null);
32673
+ const formRef = React49.useRef(null);
32045
32674
  const employeeName = employeeFirstName || employeeLastName ? `${employeeFirstName ?? ""} ${employeeLastName ?? ""}`.trim() : void 0;
32046
32675
  const handleSubmitClick = () => {
32047
32676
  formRef.current?.submit();
@@ -32171,7 +32800,7 @@ function ScheduleCalendar({
32171
32800
  isLoading = false,
32172
32801
  className = ""
32173
32802
  }) {
32174
- const [currentDate, setCurrentDate] = React48.useState(selectedDate);
32803
+ const [currentDate, setCurrentDate] = React49.useState(selectedDate);
32175
32804
  const formatTime4 = (date) => {
32176
32805
  const d = typeof date === "string" ? new Date(date) : date;
32177
32806
  return d.toLocaleTimeString("en-US", {
@@ -32643,7 +33272,7 @@ function SubCategoryAccordion({
32643
33272
  onServiceClick,
32644
33273
  index
32645
33274
  }) {
32646
- const [isExpanded, setIsExpanded] = React48.useState(
33275
+ const [isExpanded, setIsExpanded] = React49.useState(
32647
33276
  subCategory.defaultExpanded ?? false
32648
33277
  );
32649
33278
  const contentId = `sub-content-${index}`;
@@ -32710,7 +33339,7 @@ function CategoryAccordionItem({
32710
33339
  onExpandChange
32711
33340
  }) {
32712
33341
  const isControlled = expandedCategories !== void 0;
32713
- const [internalExpanded, setInternalExpanded] = React48.useState(
33342
+ const [internalExpanded, setInternalExpanded] = React49.useState(
32714
33343
  category.defaultExpanded ?? false
32715
33344
  );
32716
33345
  const isExpanded = isControlled ? expandedCategories.includes(category.name) : internalExpanded;
@@ -32808,7 +33437,7 @@ function ServiceAccordion({
32808
33437
  className,
32809
33438
  "aria-label": ariaLabel = "Service categories"
32810
33439
  }) {
32811
- const [internalExpanded, setInternalExpanded] = React48.useState([]);
33440
+ const [internalExpanded, setInternalExpanded] = React49.useState([]);
32812
33441
  const isControlled = controlledExpanded !== void 0;
32813
33442
  const expanded = isControlled ? controlledExpanded : internalExpanded;
32814
33443
  const handleExpandChange = (categoryName, isExpanded) => {
@@ -33100,7 +33729,7 @@ function ServiceBadgeGroup({
33100
33729
  size = "md",
33101
33730
  onShowMore
33102
33731
  }) {
33103
- const badges = React48.Children.toArray(children);
33732
+ const badges = React49.Children.toArray(children);
33104
33733
  const visibleBadges = maxVisible ? badges.slice(0, maxVisible) : badges;
33105
33734
  const hiddenCount = maxVisible ? badges.length - maxVisible : 0;
33106
33735
  return /* @__PURE__ */ jsxs(
@@ -33953,15 +34582,15 @@ function ServicePicker({
33953
34582
  fullWidth = false,
33954
34583
  className
33955
34584
  }) {
33956
- const [searchQuery, setSearchQuery] = React48.useState("");
33957
- const [expandedGroups, setExpandedGroups] = React48.useState(
34585
+ const [searchQuery, setSearchQuery] = React49.useState("");
34586
+ const [expandedGroups, setExpandedGroups] = React49.useState(
33958
34587
  /* @__PURE__ */ new Set()
33959
34588
  );
33960
- const filteredGroups = React48.useMemo(
34589
+ const filteredGroups = React49.useMemo(
33961
34590
  () => filterServices(groups, searchQuery),
33962
34591
  [groups, searchQuery]
33963
34592
  );
33964
- const searchResults = React48.useMemo(
34593
+ const searchResults = React49.useMemo(
33965
34594
  () => searchQuery ? flattenServices(filteredGroups) : [],
33966
34595
  [filteredGroups, searchQuery]
33967
34596
  );
@@ -34410,16 +35039,16 @@ function ServicePricingManager({
34410
35039
  categories: _categories = [],
34411
35040
  className = ""
34412
35041
  }) {
34413
- const [searchTerm, setSearchTerm] = React48.useState("");
34414
- const [selectedCategory, setSelectedCategory] = React48.useState(
35042
+ const [searchTerm, setSearchTerm] = React49.useState("");
35043
+ const [selectedCategory, setSelectedCategory] = React49.useState(
34415
35044
  null
34416
35045
  );
34417
- const [editingService, setEditingService] = React48.useState(null);
34418
- const [editPrice, setEditPrice] = React48.useState("");
34419
- const [editEmployerPrice, setEditEmployerPrice] = React48.useState("");
34420
- const [showBulkModal, setShowBulkModal] = React48.useState(false);
34421
- const [bulkAdjustment, setBulkAdjustment] = React48.useState("");
34422
- const [bulkAdjustmentType, setBulkAdjustmentType] = React48.useState("percent");
35046
+ const [editingService, setEditingService] = React49.useState(null);
35047
+ const [editPrice, setEditPrice] = React49.useState("");
35048
+ const [editEmployerPrice, setEditEmployerPrice] = React49.useState("");
35049
+ const [showBulkModal, setShowBulkModal] = React49.useState(false);
35050
+ const [bulkAdjustment, setBulkAdjustment] = React49.useState("");
35051
+ const [bulkAdjustmentType, setBulkAdjustmentType] = React49.useState("percent");
34423
35052
  const formatCurrency3 = (amount) => {
34424
35053
  return new Intl.NumberFormat("en-US", {
34425
35054
  style: "currency",
@@ -34810,7 +35439,7 @@ function ServiceShippingSettings({
34810
35439
  isSaving = false,
34811
35440
  className = ""
34812
35441
  }) {
34813
- const [address, setAddress] = React48.useState(
35442
+ const [address, setAddress] = React49.useState(
34814
35443
  defaultAddress || {
34815
35444
  name: "",
34816
35445
  street1: "",
@@ -35012,7 +35641,7 @@ function SetupServiceModal({
35012
35641
  errorMessage,
35013
35642
  title = "Add New Service"
35014
35643
  }) {
35015
- const [formData, setFormData] = React48.useState({
35644
+ const [formData, setFormData] = React49.useState({
35016
35645
  name: "",
35017
35646
  description: "",
35018
35647
  price: 0,
@@ -35022,7 +35651,7 @@ function SetupServiceModal({
35022
35651
  initialInventory: void 0,
35023
35652
  autoAcceptReferrals: false
35024
35653
  });
35025
- React48.useEffect(() => {
35654
+ React49.useEffect(() => {
35026
35655
  if (!open) {
35027
35656
  setFormData({
35028
35657
  name: "",
@@ -36014,7 +36643,7 @@ function NewsletterForm({
36014
36643
  isLoading = false,
36015
36644
  className
36016
36645
  }) {
36017
- const [email, setEmail] = React48.useState("");
36646
+ const [email, setEmail] = React49.useState("");
36018
36647
  function handleSubmit(e) {
36019
36648
  e.preventDefault();
36020
36649
  if (email.trim()) {
@@ -36139,7 +36768,7 @@ function LegalLinks({
36139
36768
  {
36140
36769
  "data-slot": "site-footer-legal",
36141
36770
  className: cn("flex flex-wrap items-center gap-x-4 gap-y-1", className),
36142
- children: links.map((link, index) => /* @__PURE__ */ jsxs(React48.Fragment, { children: [
36771
+ children: links.map((link, index) => /* @__PURE__ */ jsxs(React49.Fragment, { children: [
36143
36772
  index > 0 && /* @__PURE__ */ jsx(
36144
36773
  "span",
36145
36774
  {
@@ -36630,9 +37259,9 @@ function UserMenu({
36630
37259
  menuItems = [],
36631
37260
  className
36632
37261
  }) {
36633
- const [isOpen, setIsOpen] = React48.useState(false);
36634
- const menuRef = React48.useRef(null);
36635
- React48.useEffect(() => {
37262
+ const [isOpen, setIsOpen] = React49.useState(false);
37263
+ const menuRef = React49.useRef(null);
37264
+ React49.useEffect(() => {
36636
37265
  function handleClickOutside(event) {
36637
37266
  if (menuRef.current && !menuRef.current.contains(event.target)) {
36638
37267
  setIsOpen(false);
@@ -36928,7 +37557,7 @@ function SiteHeader({
36928
37557
  userMenuItems,
36929
37558
  className
36930
37559
  }) {
36931
- const [mobileMenuOpen, setMobileMenuOpen] = React48.useState(false);
37560
+ const [mobileMenuOpen, setMobileMenuOpen] = React49.useState(false);
36932
37561
  const colorVariant = variant === "primary" || variant === "transparent" ? "light" : "dark";
36933
37562
  return /* @__PURE__ */ jsxs(Fragment, { children: [
36934
37563
  /* @__PURE__ */ jsx("div", { "data-slot": "site-header-spacer", className: "h-16", "aria-hidden": "true" }),
@@ -37300,29 +37929,29 @@ function SSOConfigForm({
37300
37929
  delete: deleteLabel = "Delete SSO",
37301
37930
  cancel = "Cancel"
37302
37931
  } = labels;
37303
- const [clientDomain, setClientDomain] = React48.useState(
37932
+ const [clientDomain, setClientDomain] = React49.useState(
37304
37933
  initialData.clientDomain ?? ""
37305
37934
  );
37306
- const [ssoLoginUrl, setSsoLoginUrl] = React48.useState(
37935
+ const [ssoLoginUrl, setSsoLoginUrl] = React49.useState(
37307
37936
  initialData.ssoLoginUrl ?? ""
37308
37937
  );
37309
- const [ssoLogoutUrl, setSsoLogoutUrl] = React48.useState(
37938
+ const [ssoLogoutUrl, setSsoLogoutUrl] = React49.useState(
37310
37939
  initialData.ssoLogoutUrl ?? ""
37311
37940
  );
37312
- const [forceReauth, setForceReauth] = React48.useState(
37941
+ const [forceReauth, setForceReauth] = React49.useState(
37313
37942
  initialData.forceReauthentication ?? false
37314
37943
  );
37315
- const [idpSigns, setIdpSigns] = React48.useState(
37944
+ const [idpSigns, setIdpSigns] = React49.useState(
37316
37945
  initialData.idpSignsRequest ?? false
37317
37946
  );
37318
- const [allowUnencrypted, setAllowUnencrypted] = React48.useState(
37947
+ const [allowUnencrypted, setAllowUnencrypted] = React49.useState(
37319
37948
  initialData.allowUnencryptedAssertion ?? false
37320
37949
  );
37321
- const [certificateFile, setCertificateFile] = React48.useState(
37950
+ const [certificateFile, setCertificateFile] = React49.useState(
37322
37951
  null
37323
37952
  );
37324
- const fileInputRef = React48.useRef(null);
37325
- const [errors, setErrors] = React48.useState({});
37953
+ const fileInputRef = React49.useRef(null);
37954
+ const [errors, setErrors] = React49.useState({});
37326
37955
  const validate = () => {
37327
37956
  const newErrors = {};
37328
37957
  if (!clientDomain.trim()) {
@@ -37680,7 +38309,7 @@ function StepIndicator({
37680
38309
  const status = getStepStatus(index);
37681
38310
  const isLast = index === steps.length - 1;
37682
38311
  const clickable = isClickable(index);
37683
- return /* @__PURE__ */ jsxs(React48.Fragment, { children: [
38312
+ return /* @__PURE__ */ jsxs(React49.Fragment, { children: [
37684
38313
  /* @__PURE__ */ jsxs("div", { className: `flex flex-row items-center ${sizes.gap}`, children: [
37685
38314
  circleButton(step, index, status, clickable),
37686
38315
  stepLabel(step, status, false)
@@ -37897,10 +38526,10 @@ function TableOfContents({
37897
38526
  scrollSpyOptions,
37898
38527
  className
37899
38528
  }) {
37900
- const [discoveredItems, setDiscoveredItems] = React48.useState([]);
38529
+ const [discoveredItems, setDiscoveredItems] = React49.useState([]);
37901
38530
  const flatItems = manualItems ?? discoveredItems;
37902
38531
  const contentEl = contentRef?.current ?? null;
37903
- React48.useEffect(() => {
38532
+ React49.useEffect(() => {
37904
38533
  if (manualItems) return;
37905
38534
  const container = contentEl ?? document;
37906
38535
  let frameId = null;
@@ -37931,7 +38560,7 @@ function TableOfContents({
37931
38560
  if (frameId !== null) cancelAnimationFrame(frameId);
37932
38561
  };
37933
38562
  }, [manualItems, selector, maxDepth, contentEl]);
37934
- const ids = React48.useMemo(() => flatItems.map((i) => i.id), [flatItems]);
38563
+ const ids = React49.useMemo(() => flatItems.map((i) => i.id), [flatItems]);
37935
38564
  const isControlled = controlledActiveId !== void 0;
37936
38565
  const { activeId: spyActiveId } = useScrollSpy({
37937
38566
  ids,
@@ -37940,12 +38569,12 @@ function TableOfContents({
37940
38569
  ...scrollSpyOptions
37941
38570
  });
37942
38571
  const activeId = isControlled ? controlledActiveId : spyActiveId;
37943
- React48.useEffect(() => {
38572
+ React49.useEffect(() => {
37944
38573
  if (!isControlled && onActiveChange) {
37945
38574
  onActiveChange(spyActiveId);
37946
38575
  }
37947
38576
  }, [spyActiveId, isControlled, onActiveChange]);
37948
- const handleClick = React48.useCallback(
38577
+ const handleClick = React49.useCallback(
37949
38578
  (e, id) => {
37950
38579
  if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) {
37951
38580
  return;
@@ -37966,7 +38595,7 @@ function TableOfContents({
37966
38595
  },
37967
38596
  [contentEl, scrollOffset, smooth]
37968
38597
  );
37969
- const tree = React48.useMemo(() => nestItems(flatItems), [flatItems]);
38598
+ const tree = React49.useMemo(() => nestItems(flatItems), [flatItems]);
37970
38599
  if (hideWhenEmpty && tree.length === 0) return null;
37971
38600
  return /* @__PURE__ */ jsxs("nav", { "aria-label": "Table of contents", className: cn("text-sm", className), children: [
37972
38601
  title && /* @__PURE__ */ jsx("p", { className: "text-foreground mb-3 font-semibold", children: title }),
@@ -38867,7 +39496,7 @@ function WebChartReportViewer({
38867
39496
  dateFrom = "From",
38868
39497
  dateTo = "To"
38869
39498
  } = labels;
38870
- const [modalOpen, setModalOpen] = React48.useState(false);
39499
+ const [modalOpen, setModalOpen] = React49.useState(false);
38871
39500
  const handleReportClick = (report) => {
38872
39501
  onReportSelect?.(report);
38873
39502
  setModalOpen(true);
@@ -39105,7 +39734,7 @@ function ReportTimeRange({
39105
39734
  ],
39106
39735
  className
39107
39736
  }) {
39108
- const [preset, setPreset] = React48.useState("this-month");
39737
+ const [preset, setPreset] = React49.useState("this-month");
39109
39738
  const handlePresetChange = (value) => {
39110
39739
  setPreset(value);
39111
39740
  const now = /* @__PURE__ */ new Date();
@@ -39207,7 +39836,7 @@ function isValidUrl(url) {
39207
39836
  }
39208
39837
  }
39209
39838
  }
39210
- var WebsiteInput = React48.forwardRef(
39839
+ var WebsiteInput = React49.forwardRef(
39211
39840
  ({
39212
39841
  value = "",
39213
39842
  onChange,
@@ -39218,7 +39847,7 @@ var WebsiteInput = React48.forwardRef(
39218
39847
  error,
39219
39848
  ...props
39220
39849
  }, ref) => {
39221
- const [localError, setLocalError] = React48.useState();
39850
+ const [localError, setLocalError] = React49.useState();
39222
39851
  const handleChange = (e) => {
39223
39852
  onChange?.(e.target.value);
39224
39853
  if (localError) {
@@ -39300,7 +39929,7 @@ function WebsiteInputGroup({
39300
39929
  typeLabels,
39301
39930
  className
39302
39931
  }) {
39303
- const websites = React48.useMemo(() => {
39932
+ const websites = React49.useMemo(() => {
39304
39933
  if (value.length >= minEntries) return value;
39305
39934
  const padding = Array(minEntries - value.length).fill(null).map(() => ({ url: "", type: "website" }));
39306
39935
  return [...value, ...padding];
@@ -39448,6 +40077,6 @@ function WebsiteInputGroup({
39448
40077
  }
39449
40078
  WebsiteInputGroup.displayName = "WebsiteInputGroup";
39450
40079
 
39451
- export { AIChat, AIChatModal, AIChatTrigger, AILogoIcon, AIMessageDisplay, AITypingIndicator, AccessDeniedPage, ActionButton2 as ActionButton, ActionButtonsBar, ActiveFilters, AddContactModal, AddServiceCard, AdditionalFields, Address, AddressCard, AddressCompact, AddressDisplay, AddressForm, AddressInline, AppHeader, AppHeaderActions, AppHeaderBrand, AppHeaderDivider, AppHeaderIconButton, AppHeaderSearch, AppHeaderSection, AppHeaderTitle, AppHeaderUserMenu, AttachmentPicker, AttachmentPreview, AttachmentPreviewItem, AuthButtons, AuthDialog, BookAppointmentButton, BookingDialog, BusinessHours, BusinessHoursEditor, CSVColumnMapper, CSVFileUpload, CameraButton, CardSkeleton, CharacterCounter, CheckrIntegration, ChevronIcon, ClaimListingButton, ClaimProviderForm, CloseIcon, CommandPalette, CommandPaletteProvider, CommandPaletteTrigger, CompactCookieBanner, CompactFilterBar, CompactHeader, CompactHours, CompactProviderHeader, ConnectionStatusBadge, ConnectionStatusBar, ConnectionStatusOverlay, ConsentSwitch, ConversationHeader, ConversationListItem, ConversationListSkeleton, CookieConsentBanner, CopyrightText, CountBadge, CreateInvoiceModal, CreateReferralModal, DEFAULT_ERROR_CONFIGS, DEFAULT_LANGUAGES, DEFAULT_RADIUS_OPTIONS, DEFAULT_SOCIAL_PROVIDERS, DOTBadge, DashboardWidget, DashboardWidgetActions, DashboardWidgetDataCards, DashboardWidgetInfo, DashboardWidgetTable, DateRangeFilter, DateRangePicker, DateSeparator, DialogOverlay, DisclaimerText, DocumentDetectionOverlay, DocumentScanner, DragDropZone, DropZone, DropzoneOverlay, EditUserRoleModal, EmployeeForm, EmployeeProfileCard, EmployerContactCard, EmployerList, EmployerPricingCard, EmployerServiceModal, EmployerView, EmptyState, ErrorPage, FileManager, FilePreview, FloatingAIChat, FloatingInput, FooterLinkSection, SocialMediaLinks2 as FooterSocialLinks, HRISProviderSelector, HelpSupportPanel, HeroSearchBar, HoursSummary, InlineBookingForm, InventoryManager, InviteUserModal, InvoiceList, InvoicePaymentPage, InvoiceView, LanguageSelector, LanguageSelectorInline, LanguageSelectorNative, LegalLinks, LightboxModal, LoadMoreButton, LoadingBar, LoadingDots, LoadingOverlay, LoadingPage, LoadingSkeleton, MCPToolCallDisplay, MaintenancePage, MessageAvatar, MessageBubble, MessageComposer, MessageList, MessageStatusIcon, MessageThread, MessagingSplitView, MobileBackButton, MobileMenuButton, MobileMenuPanel, NavLinks, NewsletterForm, NotFoundPage, NotificationCenter, OfflinePage, OnboardingCompletion, OnboardingStepQuestion, OnboardingWizard, OpenStatusBadge, OrderCard, OrderConfirmation, OrderConfirmationWizard, OrderDetailSidebar, OrderList, OrderLookupForm, OrderSidebar, OrderSidebarTabs, PageHeader, PatientHeader, PaymentHistoryTable, PaymentMethodBank, PaymentMethodCard, PaymentMethodList, PendingClaimsTable, PermissionsEditor, ProductVersion, ProductVersionBadge, Breadcrumb2 as ProviderBreadcrumb, ProviderCard, ProviderCardGrid, ProviderCardSkeleton, ProviderDetailHeader, ProviderDetailHeaderSkeleton, ProviderLogo2 as ProviderLogo, ProviderOverview, ProviderSearchBar, ProviderSearchFilters, ProviderSelector, ProviderSettings, SocialMediaLinks as ProviderSocialLinks, ProviderUsersTable, QuickBookCard, QuickLinksCard, ReadReceiptIndicator, RecurringServiceAddCard, RecurringServiceCard, RecurringServiceGrid, RecurringServiceSetupModal, RefreshIcon, RejectionModal, ReportDashboard, ReportDatePicker, ReportLink, ReportTimeRange, ResourceLink, ResultsEntryCard, ResultsEntryForm, ResultsEntryModal, SSOConfigForm, ScheduleCalendar, SearchResultsMessage, SelectedServicesBadges, SendButton, SendIcon, ServerErrorPage, ServiceAccordion, ServiceBadge, ServiceBadgeGroup, ServiceCard, ServiceCategoryBadge, ServiceGeneralSettings, ServiceGrid, ServiceLink, ServiceList, ServiceMultiSelect, ServicePicker, ServicePricingManager, ServiceSelect, ServiceShippingSettings, ServiceTagCloud, ServiceTagCloudBadges, SetupServiceModal, Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMobileToggle, SidebarNav, SidebarNavGroup, SidebarNavItem, SidebarProvider, SidebarSearch, SidebarToggle, SimpleFooter, SiteFooter, SiteHeader, SiteLogo, SkeletonMessage, SparklesIcon, SpinnerIcon2 as SpinnerIcon, StepIndicator, StripeBadge, StripeSecureBadge, SuggestedActions, TableOfContents, TimelineEventList, TimelineProgress, Toast, ToastContainer, ToastProvider, ToolStatusIcon, TypingIndicator, UpdateAvailableOverlay, UserMenu, VerifiedBadge2 as VerifiedBadge, WEBSITE_TYPES, WebChartReportViewer, WebcamModal, WebsiteInput, WebsiteInputGroup, bubbleVariants2 as bubbleVariants, calculateDateRange, countBadgeVariants, countChipVariants, create24HourSchedule, createDefaultSchedule, createWeekdaySchedule, defaultOrderTabs, formatAddressLines, formatAddressSingleLine, formatCityState, formatCityStateZip, formatDateLabel, formatFileSize2 as formatFileSize, formatLastSeen, generateAttachmentId, generateId, getConversationSubtitle, getConversationTitle, getDefaultPresets, getExtendedPresets, getFileType, getGoogleMapsSearchUrl, getGoogleMapsUrl, getToolIcon, groupMessagesByDate, headerVariants, isSameSenderGroup, isValidUrl, sendButtonVariants, useCamera, useCommandPalette, useConnectionStatus, useCookieConsent, useDocumentDetection, useDropzone, useFileUpload, useMessageScroll, useMessages, useReadReceipts, useSidebar, useToast, useTypingIndicator, validateFile, widgetVariants };
40080
+ export { AIChat, AIChatModal, AIChatTrigger, AILogoIcon, AIMessageDisplay, AIReconciliationPanel, AITypingIndicator, AccessDeniedPage, ActionButton2 as ActionButton, ActionButtonsBar, ActiveFilters, AddContactModal, AddServiceCard, AdditionalFields, Address, AddressCard, AddressCompact, AddressDisplay, AddressForm, AddressInline, AppHeader, AppHeaderActions, AppHeaderBrand, AppHeaderDivider, AppHeaderIconButton, AppHeaderSearch, AppHeaderSection, AppHeaderTitle, AppHeaderUserMenu, AttachmentPicker, AttachmentPreview, AttachmentPreviewItem, AuthButtons, AuthDialog, BookAppointmentButton, BookingDialog, BusinessHours, BusinessHoursEditor, CSVColumnMapper, CSVFileUpload, CameraButton, CardSkeleton, CharacterCounter, CheckrIntegration, ChevronIcon, ClaimListingButton, ClaimProviderForm, CloseIcon, CommandPalette, CommandPaletteProvider, CommandPaletteTrigger, CompactCookieBanner, CompactFilterBar, CompactHeader, CompactHours, CompactProviderHeader, ConnectionStatusBadge, ConnectionStatusBar, ConnectionStatusOverlay, ConsentSwitch, ConversationHeader, ConversationListItem, ConversationListSkeleton, CookieConsentBanner, CopyrightText, CountBadge, CreateInvoiceModal, CreateReferralModal, DEFAULT_ERROR_CONFIGS, DEFAULT_LANGUAGES, DEFAULT_RADIUS_OPTIONS, DEFAULT_SOCIAL_PROVIDERS, DOTBadge, DashboardWidget, DashboardWidgetActions, DashboardWidgetDataCards, DashboardWidgetInfo, DashboardWidgetTable, DateRangeFilter, DateRangePicker, DateSeparator, DialogOverlay, DisclaimerText, DocumentDetectionOverlay, DocumentScanner, DragDropZone, DropZone, DropzoneOverlay, EditUserRoleModal, EmployeeForm, EmployeeProfileCard, EmployerContactCard, EmployerList, EmployerPricingCard, EmployerServiceModal, EmployerView, EmptyState, ErrorPage, FileManager, FilePreview, FloatingAIChat, FloatingInput, FooterLinkSection, SocialMediaLinks2 as FooterSocialLinks, HRISProviderSelector, HelpSupportPanel, HeroSearchBar, HoursSummary, InlineBookingForm, InventoryManager, InviteUserModal, InvoiceList, InvoicePaymentPage, InvoiceView, LanguageSelector, LanguageSelectorInline, LanguageSelectorNative, LegalLinks, LightboxModal, LoadMoreButton, LoadingBar, LoadingDots, LoadingOverlay, LoadingPage, LoadingSkeleton, MCPToolCallDisplay, MaintenancePage, MessageAvatar, MessageBubble, MessageComposer, MessageList, MessageStatusIcon, MessageThread, MessagingSplitView, MobileBackButton, MobileMenuButton, MobileMenuPanel, NavLinks, NewsletterForm, NotFoundPage, NotificationCenter, OfflinePage, OnboardingCompletion, OnboardingStepQuestion, OnboardingWizard, OpenStatusBadge, OrderCard, OrderConfirmation, OrderConfirmationWizard, OrderDetailSidebar, OrderList, OrderLookupForm, OrderSidebar, OrderSidebarTabs, PageHeader, PatientHeader, PaymentHistoryTable, PaymentMethodBank, PaymentMethodCard, PaymentMethodList, PendingClaimsTable, PermissionsEditor, ProductVersion, ProductVersionBadge, Breadcrumb2 as ProviderBreadcrumb, ProviderCard, ProviderCardGrid, ProviderCardSkeleton, ProviderDetailHeader, ProviderDetailHeaderSkeleton, ProviderLogo2 as ProviderLogo, ProviderOverview, ProviderSearchBar, ProviderSearchFilters, ProviderSelector, ProviderSettings, SocialMediaLinks as ProviderSocialLinks, ProviderUsersTable, QuickBookCard, QuickLinksCard, ReadReceiptIndicator, RecurringServiceAddCard, RecurringServiceCard, RecurringServiceGrid, RecurringServiceSetupModal, RefreshIcon, RejectionModal, ReportDashboard, ReportDatePicker, ReportLink, ReportTimeRange, ResourceLink, ResultsEntryCard, ResultsEntryForm, ResultsEntryModal, SSOConfigForm, ScheduleCalendar, SearchResultsMessage, SelectedServicesBadges, SendButton, SendIcon, ServerErrorPage, ServiceAccordion, ServiceBadge, ServiceBadgeGroup, ServiceCard, ServiceCategoryBadge, ServiceGeneralSettings, ServiceGrid, ServiceLink, ServiceList, ServiceMultiSelect, ServicePicker, ServicePricingManager, ServiceSelect, ServiceShippingSettings, ServiceTagCloud, ServiceTagCloudBadges, SetupServiceModal, Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMobileToggle, SidebarNav, SidebarNavGroup, SidebarNavItem, SidebarProvider, SidebarSearch, SidebarToggle, SimpleFooter, SiteFooter, SiteHeader, SiteLogo, SkeletonMessage, SparklesIcon, SpinnerIcon2 as SpinnerIcon, StepIndicator, StripeBadge, StripeSecureBadge, SuggestedActions, TableOfContents, TimelineEventList, TimelineProgress, Toast, ToastContainer, ToastProvider, ToolStatusIcon, TypingIndicator, UpdateAvailableOverlay, UserMenu, VerifiedBadge2 as VerifiedBadge, WEBSITE_TYPES, WebChartReportViewer, WebcamModal, WebsiteInput, WebsiteInputGroup, bubbleVariants2 as bubbleVariants, calculateDateRange, countBadgeVariants, countChipVariants, create24HourSchedule, createDefaultSchedule, createWeekdaySchedule, defaultOrderTabs, defaultReconciliationIsEqual, formatAddressLines, formatAddressSingleLine, formatCityState, formatCityStateZip, formatDateLabel, formatFileSize2 as formatFileSize, formatLastSeen, generateAttachmentId, generateId, getConversationSubtitle, getConversationTitle, getDefaultPresets, getExtendedPresets, getFileType, getGoogleMapsSearchUrl, getGoogleMapsUrl, getToolIcon, groupMessagesByDate, headerVariants, isSameSenderGroup, isValidUrl, panelVariants as reconciliationPanelVariants, sendButtonVariants, useCamera, useCommandPalette, useConnectionStatus, useCookieConsent, useDocumentDetection, useDropzone, useFileUpload, useMessageScroll, useMessages, useReadReceipts, useSidebar, useToast, useTypingIndicator, validateFile, widgetVariants };
39452
40081
  //# sourceMappingURL=index.js.map
39453
40082
  //# sourceMappingURL=index.js.map