@mieweb/ui 0.6.1-dev.132 → 0.6.1-dev.133

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