@octaviaflow/core 3.0.10 → 3.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -195,7 +195,7 @@ function AgentCard({
195
195
  }
196
196
 
197
197
  // src/components/AuthCard/AuthCard.tsx
198
- import { useState } from "react";
198
+ import { useId, useRef as useRef2, useState } from "react";
199
199
  import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
200
200
  function AuthCard({
201
201
  logo,
@@ -245,24 +245,61 @@ function AuthTabs({ tabs, defaultTab, value, onChange, className }) {
245
245
  onChange?.(id);
246
246
  };
247
247
  const activeTab = tabs.find((t) => t.id === active) ?? tabs[0];
248
+ const scopeId = useId();
249
+ const tabRefs = useRef2({});
250
+ const handleKeyDown = (e) => {
251
+ const ids = tabs.map((t) => t.id);
252
+ const currentIdx = ids.indexOf(active);
253
+ if (currentIdx === -1) return;
254
+ let nextIdx = null;
255
+ if (e.key === "ArrowRight") nextIdx = (currentIdx + 1) % ids.length;
256
+ else if (e.key === "ArrowLeft") nextIdx = (currentIdx - 1 + ids.length) % ids.length;
257
+ else if (e.key === "Home") nextIdx = 0;
258
+ else if (e.key === "End") nextIdx = ids.length - 1;
259
+ if (nextIdx === null) return;
260
+ e.preventDefault();
261
+ const nextId = ids[nextIdx];
262
+ select(nextId);
263
+ tabRefs.current[nextId]?.focus();
264
+ };
248
265
  return /* @__PURE__ */ jsxs3("div", { className: cn("ods-auth-tabs", className), children: [
249
- /* @__PURE__ */ jsx3("div", { className: "ods-auth-tabs__list", role: "tablist", children: tabs.map((t) => /* @__PURE__ */ jsxs3(
250
- "button",
266
+ /* @__PURE__ */ jsx3("div", { className: "ods-auth-tabs__list", role: "tablist", children: tabs.map((t) => {
267
+ const isActive2 = t.id === active;
268
+ return /* @__PURE__ */ jsxs3(
269
+ "button",
270
+ {
271
+ ref: (el) => {
272
+ tabRefs.current[t.id] = el;
273
+ },
274
+ type: "button",
275
+ role: "tab",
276
+ id: `${scopeId}-tab-${t.id}`,
277
+ "aria-selected": isActive2,
278
+ "aria-controls": `${scopeId}-panel-${t.id}`,
279
+ tabIndex: isActive2 ? 0 : -1,
280
+ className: cn("ods-auth-tabs__tab", isActive2 && "ods-auth-tabs__tab--active"),
281
+ onClick: () => select(t.id),
282
+ onKeyDown: handleKeyDown,
283
+ children: [
284
+ t.icon && /* @__PURE__ */ jsx3("span", { className: "ods-auth-tabs__icon", children: t.icon }),
285
+ /* @__PURE__ */ jsx3("span", { className: "ods-auth-tabs__label", children: t.label }),
286
+ t.description && /* @__PURE__ */ jsx3("span", { className: "ods-auth-tabs__desc", children: t.description })
287
+ ]
288
+ },
289
+ t.id
290
+ );
291
+ }) }),
292
+ activeTab && /* @__PURE__ */ jsx3(
293
+ "div",
251
294
  {
252
- type: "button",
253
- role: "tab",
254
- "aria-selected": t.id === active,
255
- className: cn("ods-auth-tabs__tab", t.id === active && "ods-auth-tabs__tab--active"),
256
- onClick: () => select(t.id),
257
- children: [
258
- t.icon && /* @__PURE__ */ jsx3("span", { className: "ods-auth-tabs__icon", children: t.icon }),
259
- /* @__PURE__ */ jsx3("span", { className: "ods-auth-tabs__label", children: t.label }),
260
- t.description && /* @__PURE__ */ jsx3("span", { className: "ods-auth-tabs__desc", children: t.description })
261
- ]
262
- },
263
- t.id
264
- )) }),
265
- activeTab && /* @__PURE__ */ jsx3("div", { className: "ods-auth-tabs__panel", children: activeTab.content })
295
+ role: "tabpanel",
296
+ id: `${scopeId}-panel-${activeTab.id}`,
297
+ "aria-labelledby": `${scopeId}-tab-${activeTab.id}`,
298
+ tabIndex: 0,
299
+ className: "ods-auth-tabs__panel",
300
+ children: activeTab.content
301
+ }
302
+ )
266
303
  ] });
267
304
  }
268
305
  function AuthBadge({ tone = "neutral", children, className }) {
@@ -546,11 +583,11 @@ function BlogCard({
546
583
  }
547
584
 
548
585
  // src/components/Breadcrumb/Breadcrumb.tsx
549
- import { useRef as useRef2 } from "react";
586
+ import { useRef as useRef3 } from "react";
550
587
  import { useBreadcrumbItem, useBreadcrumbs } from "react-aria";
551
588
  import { Fragment, jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
552
589
  function BreadcrumbItem({ item, isCurrent }) {
553
- const ref = useRef2(null);
590
+ const ref = useRef3(null);
554
591
  const { itemProps } = useBreadcrumbItem(
555
592
  { children: item.label, isCurrent, elementType: item.href ? "a" : "span" },
556
593
  ref
@@ -605,7 +642,7 @@ function Breadcrumb({
605
642
 
606
643
  // src/components/Button/Button.tsx
607
644
  import { motion as motion2 } from "framer-motion";
608
- import { useRef as useRef3 } from "react";
645
+ import { useRef as useRef4 } from "react";
609
646
  import { useButton } from "react-aria";
610
647
 
611
648
  // src/utils/a11y.ts
@@ -649,7 +686,7 @@ function Button({
649
686
  style,
650
687
  ...props
651
688
  }) {
652
- const ref = useRef3(null);
689
+ const ref = useRef4(null);
653
690
  const isDisabled = disabled || loading;
654
691
  const hasAction = Boolean(props.onClick) || type === "submit" || type === "reset" || Boolean(props.href);
655
692
  const resolvedCursor = cursor ?? (disabled ? "not-allowed" : loading ? "progress" : hasAction ? "pointer" : "default");
@@ -962,7 +999,7 @@ function ChatBubble({
962
999
  }
963
1000
 
964
1001
  // src/components/Checkbox/Checkbox.tsx
965
- import { useRef as useRef4 } from "react";
1002
+ import { useRef as useRef5 } from "react";
966
1003
  import { useCheckbox } from "react-aria";
967
1004
 
968
1005
  // ../../node_modules/react-stately/dist/private/utils/useControlledState.mjs
@@ -2492,7 +2529,7 @@ function Checkbox({
2492
2529
  className,
2493
2530
  ...props
2494
2531
  }) {
2495
- const ref = useRef4(null);
2532
+ const ref = useRef5(null);
2496
2533
  const state = $fd3c5e01e837dc20$export$8042c6c013fd5226({
2497
2534
  isSelected: checked,
2498
2535
  defaultSelected: defaultChecked,
@@ -2711,7 +2748,7 @@ function ChoiceCard({
2711
2748
  }
2712
2749
 
2713
2750
  // src/components/CodeEditor/CodeEditor.tsx
2714
- import { useEffect, useMemo as useMemo3, useRef as useRef5, useState as useState3 } from "react";
2751
+ import { useEffect, useMemo as useMemo3, useRef as useRef6, useState as useState3 } from "react";
2715
2752
  import { Fragment as Fragment2, jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
2716
2753
  var COMMENT_PREFIX = {
2717
2754
  sql: "-- ",
@@ -2763,8 +2800,8 @@ function CodeEditor({
2763
2800
  showCounter = true,
2764
2801
  searchable = true
2765
2802
  }) {
2766
- const taRef = useRef5(null);
2767
- const gutterRef = useRef5(null);
2803
+ const taRef = useRef6(null);
2804
+ const gutterRef = useRef6(null);
2768
2805
  const [activeLine, setActiveLine] = useState3(1);
2769
2806
  const [copied, setCopied] = useState3(false);
2770
2807
  const [internalWrap, setInternalWrap] = useState3(wordWrapProp ?? false);
@@ -2774,7 +2811,7 @@ function CodeEditor({
2774
2811
  const [findOpen, setFindOpen] = useState3(false);
2775
2812
  const [findQuery, setFindQuery] = useState3("");
2776
2813
  const [findIndex, setFindIndex] = useState3(0);
2777
- const findInputRef = useRef5(null);
2814
+ const findInputRef = useRef6(null);
2778
2815
  const lines = value.split("\n");
2779
2816
  const lineCount = lines.length;
2780
2817
  const matches = useMemo3(() => {
@@ -3370,9 +3407,9 @@ function ColorPicker({
3370
3407
  import {
3371
3408
  useCallback,
3372
3409
  useEffect as useEffect2,
3373
- useId,
3410
+ useId as useId2,
3374
3411
  useMemo as useMemo4,
3375
- useRef as useRef6,
3412
+ useRef as useRef7,
3376
3413
  useState as useState5
3377
3414
  } from "react";
3378
3415
  import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
@@ -3388,10 +3425,10 @@ function OptionDropdown({
3388
3425
  const [open, setOpen] = useState5(false);
3389
3426
  const [query, setQuery] = useState5("");
3390
3427
  const [activeIdx, setActiveIdx] = useState5(0);
3391
- const triggerRef = useRef6(null);
3392
- const panelRef = useRef6(null);
3393
- const inputRef = useRef6(null);
3394
- const listboxId = useId();
3428
+ const triggerRef = useRef7(null);
3429
+ const panelRef = useRef7(null);
3430
+ const inputRef = useRef7(null);
3431
+ const listboxId = useId2();
3395
3432
  const showSearch = searchable === true || searchable === "auto" && options.length > 8;
3396
3433
  const selected = options.find((o) => o.value === value);
3397
3434
  const filtered = useMemo4(() => {
@@ -3696,7 +3733,7 @@ function ConditionBuilder({
3696
3733
 
3697
3734
  // src/components/ConfigPanel/ConfigPanel.tsx
3698
3735
  import { AnimatePresence as AnimatePresence2, motion as motion4 } from "framer-motion";
3699
- import { useRef as useRef7 } from "react";
3736
+ import { useRef as useRef8 } from "react";
3700
3737
  import { useButton as useButton2 } from "react-aria";
3701
3738
  import { jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
3702
3739
  function ConfigPanel({
@@ -3709,9 +3746,9 @@ function ConfigPanel({
3709
3746
  onCancel,
3710
3747
  className
3711
3748
  }) {
3712
- const closeRef = useRef7(null);
3713
- const saveRef = useRef7(null);
3714
- const cancelRef = useRef7(null);
3749
+ const closeRef = useRef8(null);
3750
+ const saveRef = useRef8(null);
3751
+ const cancelRef = useRef8(null);
3715
3752
  const { buttonProps: closeProps } = useButton2(
3716
3753
  { onPress: onClose, "aria-label": "Close panel" },
3717
3754
  closeRef
@@ -3786,7 +3823,7 @@ import {
3786
3823
  useCallback as useCallback2,
3787
3824
  useEffect as useEffect3,
3788
3825
  useMemo as useMemo5,
3789
- useRef as useRef8,
3826
+ useRef as useRef9,
3790
3827
  useState as useState6
3791
3828
  } from "react";
3792
3829
  import { Fragment as Fragment3, jsx as jsx22, jsxs as jsxs21 } from "react/jsx-runtime";
@@ -4139,8 +4176,8 @@ function DataMapper({
4139
4176
  const [display, setDisplay] = useState6(defaultDisplay);
4140
4177
  const [sidebarOpen, setSidebarOpen] = useState6(defaultSidebarOpen);
4141
4178
  const [sidebarTab, setSidebarTab] = useState6("schema");
4142
- const editorRef = useRef8(null);
4143
- const rootRef = useRef8(null);
4179
+ const editorRef = useRef9(null);
4180
+ const rootRef = useRef9(null);
4144
4181
  useEffect3(() => {
4145
4182
  if (!selectedTarget) return;
4146
4183
  const handler = (e) => {
@@ -4864,8 +4901,8 @@ function ExpressionEditor({
4864
4901
  readDragSnippet,
4865
4902
  editorRef
4866
4903
  }) {
4867
- const lastEmittedRef = useRef8(value);
4868
- const isMountedRef = useRef8(false);
4904
+ const lastEmittedRef = useRef9(value);
4905
+ const isMountedRef = useRef9(false);
4869
4906
  useEffect3(() => {
4870
4907
  const el = editorRef.current;
4871
4908
  if (!el || isMountedRef.current) return;
@@ -5108,7 +5145,7 @@ import {
5108
5145
  useCallback as useCallback3,
5109
5146
  useEffect as useEffect4,
5110
5147
  useMemo as useMemo6,
5111
- useRef as useRef9,
5148
+ useRef as useRef10,
5112
5149
  useState as useState7
5113
5150
  } from "react";
5114
5151
  import { Fragment as Fragment4, jsx as jsx23, jsxs as jsxs22 } from "react/jsx-runtime";
@@ -5760,7 +5797,7 @@ function Row({
5760
5797
  clickable
5761
5798
  }) {
5762
5799
  const [menuOpen, setMenuOpen] = useState7(false);
5763
- const menuRef = useRef9(null);
5800
+ const menuRef = useRef10(null);
5764
5801
  useEffect4(() => {
5765
5802
  if (!menuOpen) return;
5766
5803
  const close = (e) => {
@@ -5899,7 +5936,7 @@ function ChevronRightSmall() {
5899
5936
  }
5900
5937
 
5901
5938
  // src/components/DatePicker/DatePicker.tsx
5902
- import { useEffect as useEffect5, useRef as useRef10, useState as useState8 } from "react";
5939
+ import { useEffect as useEffect5, useRef as useRef11, useState as useState8 } from "react";
5903
5940
  import { jsx as jsx24, jsxs as jsxs23 } from "react/jsx-runtime";
5904
5941
  var defaultFormat = (d) => d.toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" });
5905
5942
  function DatePicker({
@@ -5917,7 +5954,7 @@ function DatePicker({
5917
5954
  className
5918
5955
  }) {
5919
5956
  const [open, setOpen] = useState8(false);
5920
- const wrapRef = useRef10(null);
5957
+ const wrapRef = useRef11(null);
5921
5958
  useEffect5(() => {
5922
5959
  if (!open) return;
5923
5960
  const onDoc = (e) => {
@@ -6059,7 +6096,7 @@ function DescriptionList({
6059
6096
 
6060
6097
  // src/components/Dialog/Dialog.tsx
6061
6098
  import { AnimatePresence as AnimatePresence3, motion as motion5 } from "framer-motion";
6062
- import { useRef as useRef11 } from "react";
6099
+ import { useRef as useRef12 } from "react";
6063
6100
  import { FocusScope, OverlayProvider, useDialog, useModal, useOverlay } from "react-aria";
6064
6101
  import { createPortal } from "react-dom";
6065
6102
 
@@ -6113,8 +6150,8 @@ function DialogContent({
6113
6150
  footer,
6114
6151
  className
6115
6152
  }) {
6116
- const overlayRef = useRef11(null);
6117
- const dialogRef = useRef11(null);
6153
+ const overlayRef = useRef12(null);
6154
+ const dialogRef = useRef12(null);
6118
6155
  const { overlayProps, underlayProps } = useOverlay(
6119
6156
  {
6120
6157
  isOpen: open,
@@ -6306,12 +6343,12 @@ function Drawer({
6306
6343
 
6307
6344
  // src/components/DropdownMenu/DropdownMenu.tsx
6308
6345
  import { AnimatePresence as AnimatePresence4, motion as motion6 } from "framer-motion";
6309
- import { useRef as useRef12 } from "react";
6346
+ import { useRef as useRef13 } from "react";
6310
6347
  import { useButton as useButton3, useMenu, useMenuItem, useMenuTrigger } from "react-aria";
6311
6348
  import { createPortal as createPortal2 } from "react-dom";
6312
6349
  import { Fragment as Fragment6, jsx as jsx29, jsxs as jsxs28 } from "react/jsx-runtime";
6313
6350
  function MenuItemComponent({ item, state, onAction }) {
6314
- const ref = useRef12(null);
6351
+ const ref = useRef13(null);
6315
6352
  const { menuItemProps } = useMenuItem({ key: item.key, onAction }, state, ref);
6316
6353
  const menuItem = item.value;
6317
6354
  const isDisabled = state.disabledKeys.has(item.key);
@@ -6339,7 +6376,7 @@ function MenuPopup({
6339
6376
  align,
6340
6377
  className
6341
6378
  }) {
6342
- const menuRef = useRef12(null);
6379
+ const menuRef = useRef13(null);
6343
6380
  const nonSepItems = menuItems.filter((i) => !i.separator);
6344
6381
  const children = nonSepItems.map((item, idx) => /* @__PURE__ */ jsx29($05678f3aee5e7d1a$export$6d08773d2e66f8f2, { textValue: item.label, children: item.label }, idx));
6345
6382
  const treeState = $6b915bde6cd300dd$export$728d6ba534403756({
@@ -6422,7 +6459,7 @@ function DropdownMenu({
6422
6459
  "aria-label": ariaLabel,
6423
6460
  "aria-labelledby": ariaLabelledby
6424
6461
  }) {
6425
- const triggerRef = useRef12(null);
6462
+ const triggerRef = useRef13(null);
6426
6463
  const state = $e3403870bfb691da$export$79fefeb1c2091ac3({});
6427
6464
  const { menuTriggerProps } = useMenuTrigger({}, state, triggerRef);
6428
6465
  const ariaNameProps = resolveAccessibleName({
@@ -6472,7 +6509,7 @@ function EmptyState({ icon, title, description, action, className }) {
6472
6509
 
6473
6510
  // src/components/ExecutionConsole/ExecutionConsole.tsx
6474
6511
  import { motion as motion7 } from "framer-motion";
6475
- import { useEffect as useEffect6, useRef as useRef13 } from "react";
6512
+ import { useEffect as useEffect6, useRef as useRef14 } from "react";
6476
6513
  import { Fragment as Fragment7, jsx as jsx31, jsxs as jsxs30 } from "react/jsx-runtime";
6477
6514
  var iconProps = {
6478
6515
  xmlns: "http://www.w3.org/2000/svg",
@@ -6508,7 +6545,7 @@ function ExecutionConsole({
6508
6545
  toolbar,
6509
6546
  className
6510
6547
  }) {
6511
- const logEndRef = useRef13(null);
6548
+ const logEndRef = useRef14(null);
6512
6549
  const handleCopy = () => {
6513
6550
  if (onCopy) {
6514
6551
  onCopy();
@@ -6686,8 +6723,8 @@ function FeatureCard({
6686
6723
  import {
6687
6724
  useCallback as useCallback4,
6688
6725
  useEffect as useEffect7,
6689
- useId as useId2,
6690
- useRef as useRef14,
6726
+ useId as useId3,
6727
+ useRef as useRef15,
6691
6728
  useState as useState9
6692
6729
  } from "react";
6693
6730
 
@@ -6827,9 +6864,9 @@ function FileDropzone({
6827
6864
  compact = false,
6828
6865
  className
6829
6866
  }) {
6830
- const inputRef = useRef14(null);
6831
- const dropzoneRef = useRef14(null);
6832
- const inputId = useId2();
6867
+ const inputRef = useRef15(null);
6868
+ const dropzoneRef = useRef15(null);
6869
+ const inputId = useId3();
6833
6870
  const [isOver, setOver] = useState9(false);
6834
6871
  const [error, setError] = useState9(null);
6835
6872
  const [autoPreviews, setAutoPreviews] = useState9({});
@@ -7129,7 +7166,7 @@ function FileDropzone({
7129
7166
 
7130
7167
  // src/components/FlowCanvas/FlowCanvas.tsx
7131
7168
  import { AnimatePresence as AnimatePresence5 } from "framer-motion";
7132
- import { useCallback as useCallback6, useRef as useRef16 } from "react";
7169
+ import { useCallback as useCallback6, useRef as useRef17 } from "react";
7133
7170
 
7134
7171
  // src/components/FlowEdge/FlowEdge.tsx
7135
7172
  import { jsx as jsx34, jsxs as jsxs33 } from "react/jsx-runtime";
@@ -7174,7 +7211,7 @@ import {
7174
7211
  forwardRef,
7175
7212
  useCallback as useCallback5,
7176
7213
  useEffect as useEffect8,
7177
- useRef as useRef15,
7214
+ useRef as useRef16,
7178
7215
  useState as useState10
7179
7216
  } from "react";
7180
7217
  import { jsx as jsx35, jsxs as jsxs34 } from "react/jsx-runtime";
@@ -7238,7 +7275,7 @@ var FlowNode = forwardRef(function FlowNode2({
7238
7275
  }, ref) {
7239
7276
  const [isDragging, setIsDragging] = useState10(false);
7240
7277
  const [wasDragged, setWasDragged] = useState10(false);
7241
- const dragStartRef = useRef15(null);
7278
+ const dragStartRef = useRef16(null);
7242
7279
  const zoom = viewport?.zoom ?? 1;
7243
7280
  const handleClick = useCallback5(
7244
7281
  (e) => {
@@ -7586,7 +7623,7 @@ function FlowCanvas({
7586
7623
  className,
7587
7624
  ...props
7588
7625
  }) {
7589
- const canvasRef = useRef16(null);
7626
+ const canvasRef = useRef17(null);
7590
7627
  const isEmpty = nodes.length === 0 && edges.length === 0;
7591
7628
  const handleCanvasClick = useCallback6(
7592
7629
  (e) => {
@@ -8030,7 +8067,7 @@ function FormSection({
8030
8067
  }
8031
8068
 
8032
8069
  // src/components/HoverCard/HoverCard.tsx
8033
- import { useCallback as useCallback8, useEffect as useEffect9, useLayoutEffect, useRef as useRef17, useState as useState11 } from "react";
8070
+ import { useCallback as useCallback8, useEffect as useEffect9, useLayoutEffect, useRef as useRef18, useState as useState11 } from "react";
8034
8071
  import { createPortal as createPortal3 } from "react-dom";
8035
8072
  import { Fragment as Fragment10, jsx as jsx40, jsxs as jsxs39 } from "react/jsx-runtime";
8036
8073
  function computePosition(rect, panelRect, placement, offset) {
@@ -8057,10 +8094,10 @@ function HoverCard({
8057
8094
  className
8058
8095
  }) {
8059
8096
  const [open, setOpen] = useState11(false);
8060
- const triggerRef = useRef17(null);
8061
- const panelRef = useRef17(null);
8062
- const openTimer = useRef17(null);
8063
- const closeTimer = useRef17(null);
8097
+ const triggerRef = useRef18(null);
8098
+ const panelRef = useRef18(null);
8099
+ const openTimer = useRef18(null);
8100
+ const closeTimer = useRef18(null);
8064
8101
  const [coords, setCoords] = useState11(null);
8065
8102
  const clearTimers = () => {
8066
8103
  if (openTimer.current) {
@@ -8182,9 +8219,9 @@ function IconCard({
8182
8219
  // src/components/Input/Input.tsx
8183
8220
  import {
8184
8221
  forwardRef as forwardRef2,
8185
- useId as useId3,
8222
+ useId as useId4,
8186
8223
  useImperativeHandle,
8187
- useRef as useRef18
8224
+ useRef as useRef19
8188
8225
  } from "react";
8189
8226
  import { jsx as jsx42, jsxs as jsxs41 } from "react/jsx-runtime";
8190
8227
  var CLEAR_GLYPH = /* @__PURE__ */ jsx42("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsx42("path", { d: "m3 3 6 6M9 3l-6 6", stroke: "currentColor", strokeWidth: "1.4", strokeLinecap: "round" }) });
@@ -8209,9 +8246,9 @@ var Input = forwardRef2(
8209
8246
  onChange,
8210
8247
  ...props
8211
8248
  }, forwardedRef) => {
8212
- const innerRef = useRef18(null);
8249
+ const innerRef = useRef19(null);
8213
8250
  useImperativeHandle(forwardedRef, () => innerRef.current);
8214
- const reactId = useId3();
8251
+ const reactId = useId4();
8215
8252
  const inputId = id ?? `${reactId}-input`;
8216
8253
  const errorId = `${reactId}-err`;
8217
8254
  const helperId = `${reactId}-help`;
@@ -8707,7 +8744,7 @@ import {
8707
8744
  useEffect as useEffect10,
8708
8745
  useLayoutEffect as useLayoutEffect2,
8709
8746
  useMemo as useMemo9,
8710
- useRef as useRef19,
8747
+ useRef as useRef20,
8711
8748
  useState as useState13
8712
8749
  } from "react";
8713
8750
  import { createPortal as createPortal4 } from "react-dom";
@@ -8737,11 +8774,11 @@ function MultiSelect({
8737
8774
  const [query, setQuery] = useState13("");
8738
8775
  const [activeIdx, setActiveIdx] = useState13(0);
8739
8776
  const [dropdownPos, setDropdownPos] = useState13({ top: 0, left: 0, width: 0 });
8740
- const wrapRef = useRef19(null);
8741
- const tagsRowRef = useRef19(null);
8742
- const searchRef = useRef19(null);
8743
- const dropdownRef = useRef19(null);
8744
- const chipRefs = useRef19([]);
8777
+ const wrapRef = useRef20(null);
8778
+ const tagsRowRef = useRef20(null);
8779
+ const searchRef = useRef20(null);
8780
+ const dropdownRef = useRef20(null);
8781
+ const chipRefs = useRef20([]);
8745
8782
  const commit = useCallback9(
8746
8783
  (next) => {
8747
8784
  if (controlledValue === void 0) setInternalValue(next);
@@ -9174,7 +9211,7 @@ function NumberInput({
9174
9211
  // src/components/OTPInput/OTPInput.tsx
9175
9212
  import {
9176
9213
  useCallback as useCallback11,
9177
- useRef as useRef20
9214
+ useRef as useRef21
9178
9215
  } from "react";
9179
9216
  import { jsx as jsx50, jsxs as jsxs49 } from "react/jsx-runtime";
9180
9217
  function OTPInput({
@@ -9190,7 +9227,7 @@ function OTPInput({
9190
9227
  autoFocus = false,
9191
9228
  className
9192
9229
  }) {
9193
- const refs = useRef20([]);
9230
+ const refs = useRef21([]);
9194
9231
  const pattern = type === "numeric" ? /[^0-9]/g : /[^a-zA-Z0-9]/g;
9195
9232
  const setCharAt = useCallback11(
9196
9233
  (idx, ch) => {
@@ -9505,7 +9542,7 @@ function PhoneInput({
9505
9542
  }
9506
9543
 
9507
9544
  // src/components/Popover/Popover.tsx
9508
- import { useCallback as useCallback12, useEffect as useEffect11, useLayoutEffect as useLayoutEffect3, useRef as useRef21, useState as useState16 } from "react";
9545
+ import { useCallback as useCallback12, useEffect as useEffect11, useLayoutEffect as useLayoutEffect3, useRef as useRef22, useState as useState16 } from "react";
9509
9546
  import { createPortal as createPortal5 } from "react-dom";
9510
9547
  import { Fragment as Fragment12, jsx as jsx54, jsxs as jsxs53 } from "react/jsx-runtime";
9511
9548
  function computePosition2(rect, popRect, placement, offset) {
@@ -9545,8 +9582,8 @@ function Popover({
9545
9582
  },
9546
9583
  [openProp, onOpenChange]
9547
9584
  );
9548
- const triggerRef = useRef21(null);
9549
- const popRef = useRef21(null);
9585
+ const triggerRef = useRef22(null);
9586
+ const popRef = useRef22(null);
9550
9587
  const [coords, setCoords] = useState16(null);
9551
9588
  const reposition = useCallback12(() => {
9552
9589
  if (!triggerRef.current || !popRef.current) return;
@@ -9783,7 +9820,7 @@ function ProgressRing({
9783
9820
  import {
9784
9821
  useCallback as useCallback13,
9785
9822
  useEffect as useEffect12,
9786
- useRef as useRef22,
9823
+ useRef as useRef23,
9787
9824
  useState as useState17
9788
9825
  } from "react";
9789
9826
  import { jsx as jsx58, jsxs as jsxs57 } from "react/jsx-runtime";
@@ -9836,7 +9873,7 @@ function PromptInput({
9836
9873
  className,
9837
9874
  ariaLabel = "Prompt"
9838
9875
  }) {
9839
- const taRef = useRef22(null);
9876
+ const taRef = useRef23(null);
9840
9877
  const [internal, setInternal] = useState17(defaultValue);
9841
9878
  const v = value ?? internal;
9842
9879
  const isControlled = value !== void 0;
@@ -10178,11 +10215,11 @@ function Quote({
10178
10215
  }
10179
10216
 
10180
10217
  // src/components/Radio/Radio.tsx
10181
- import { useRef as useRef24 } from "react";
10218
+ import { useRef as useRef25 } from "react";
10182
10219
  import { useRadio } from "react-aria";
10183
10220
 
10184
10221
  // src/components/Radio/RadioGroup.tsx
10185
- import { createContext, useContext, useRef as useRef23 } from "react";
10222
+ import { createContext, useContext, useRef as useRef24 } from "react";
10186
10223
  import { useRadioGroup } from "react-aria";
10187
10224
  import { jsx as jsx60, jsxs as jsxs59 } from "react/jsx-runtime";
10188
10225
  var RadioGroupContext = createContext(null);
@@ -10223,7 +10260,7 @@ function RadioGroup({
10223
10260
  "aria-describedby": ariaDescribedBy
10224
10261
  };
10225
10262
  const state = $384704861d32dbed$export$bca9d026f8e704eb(ariaProps);
10226
- const ref = useRef23(null);
10263
+ const ref = useRef24(null);
10227
10264
  const { radioGroupProps, labelProps } = useRadioGroup(ariaProps, state);
10228
10265
  return /* @__PURE__ */ jsxs59(
10229
10266
  "div",
@@ -10255,7 +10292,7 @@ function Radio({
10255
10292
  ...props
10256
10293
  }) {
10257
10294
  const state = useRadioGroupContext();
10258
- const ref = useRef24(null);
10295
+ const ref = useRef25(null);
10259
10296
  const ariaNameProps = resolveAccessibleName({
10260
10297
  label,
10261
10298
  ariaLabel: props["aria-label"],
@@ -10515,7 +10552,7 @@ function Rating({
10515
10552
  import {
10516
10553
  useCallback as useCallback14,
10517
10554
  useEffect as useEffect13,
10518
- useRef as useRef25,
10555
+ useRef as useRef26,
10519
10556
  useState as useState19
10520
10557
  } from "react";
10521
10558
  import { jsx as jsx64, jsxs as jsxs63 } from "react/jsx-runtime";
@@ -10532,7 +10569,7 @@ function Resizable({
10532
10569
  className,
10533
10570
  ariaLabel = "Resize panels"
10534
10571
  }) {
10535
- const wrapRef = useRef25(null);
10572
+ const wrapRef = useRef26(null);
10536
10573
  const [internalSplit, setInternalSplit] = useState19(() => {
10537
10574
  if (typeof window === "undefined" || !storageKey) return null;
10538
10575
  const stored = window.localStorage.getItem(storageKey);
@@ -10542,7 +10579,7 @@ function Resizable({
10542
10579
  }
10543
10580
  return null;
10544
10581
  });
10545
- const draggingRef = useRef25(false);
10582
+ const draggingRef = useRef26(false);
10546
10583
  const [isDragging, setDragging] = useState19(false);
10547
10584
  const computeFromDefault = useCallback14(() => {
10548
10585
  const el = wrapRef.current;
@@ -10686,9 +10723,9 @@ function ResizablePanel({
10686
10723
  }) {
10687
10724
  const [internal, setInternal] = useState19(sizeProp ?? defaultSize);
10688
10725
  const size = sizeProp ?? internal;
10689
- const draggingRef = useRef25(false);
10726
+ const draggingRef = useRef26(false);
10690
10727
  const [isDragging, setDragging] = useState19(false);
10691
- const startRef = useRef25({ x: 0, size });
10728
+ const startRef = useRef26({ x: 0, size });
10692
10729
  const onMouseDown = (e) => {
10693
10730
  e.preventDefault();
10694
10731
  draggingRef.current = true;
@@ -10758,18 +10795,18 @@ function Ribbon({
10758
10795
 
10759
10796
  // src/components/Select/Select.tsx
10760
10797
  import { AnimatePresence as AnimatePresence7, motion as motion10 } from "framer-motion";
10761
- import { useCallback as useCallback15, useEffect as useEffect14, useMemo as useMemo10, useRef as useRef26, useState as useState20 } from "react";
10798
+ import { useCallback as useCallback15, useEffect as useEffect14, useMemo as useMemo10, useRef as useRef27, useState as useState20 } from "react";
10762
10799
  import { HiddenSelect, useButton as useButton4, useListBox, useOption, useSelect } from "react-aria";
10763
10800
  import { createPortal as createPortal6 } from "react-dom";
10764
10801
  import { Fragment as Fragment13, jsx as jsx66, jsxs as jsxs65 } from "react/jsx-runtime";
10765
10802
  function ListBox(props) {
10766
- const ref = useRef26(null);
10803
+ const ref = useRef27(null);
10767
10804
  const { listBoxRef = ref, state } = props;
10768
10805
  const { listBoxProps } = useListBox(props, state, listBoxRef);
10769
10806
  return /* @__PURE__ */ jsx66("ul", { ...listBoxProps, ref: listBoxRef, className: "ods-select__options", children: [...state.collection].map((item) => /* @__PURE__ */ jsx66(Option, { item, state }, item.key)) });
10770
10807
  }
10771
10808
  function Option({ item, state }) {
10772
- const ref = useRef26(null);
10809
+ const ref = useRef27(null);
10773
10810
  const { optionProps, isSelected, isFocused, isDisabled } = useOption(
10774
10811
  { key: item.key },
10775
10812
  state,
@@ -10853,9 +10890,9 @@ function Select({
10853
10890
  "aria-labelledby": ariaLabelledBy,
10854
10891
  "aria-describedby": ariaDescribedBy
10855
10892
  }) {
10856
- const triggerRef = useRef26(null);
10857
- const listBoxRef = useRef26(null);
10858
- const searchRef = useRef26(null);
10893
+ const triggerRef = useRef27(null);
10894
+ const listBoxRef = useRef27(null);
10895
+ const searchRef = useRef27(null);
10859
10896
  const [searchQuery, setSearchQuery] = useState20("");
10860
10897
  const [dropdownPos, setDropdownPos] = useState20({ top: 0, left: 0, width: 0 });
10861
10898
  const filteredOptions = useMemo10(() => {
@@ -11126,7 +11163,7 @@ function Sheet({
11126
11163
  }
11127
11164
 
11128
11165
  // src/components/Sidebar/Sidebar.tsx
11129
- import { useCallback as useCallback16, useEffect as useEffect16, useRef as useRef27, useState as useState21 } from "react";
11166
+ import { useCallback as useCallback16, useEffect as useEffect16, useRef as useRef28, useState as useState21 } from "react";
11130
11167
  import { Fragment as Fragment15, jsx as jsx69, jsxs as jsxs68 } from "react/jsx-runtime";
11131
11168
  function Sidebar({
11132
11169
  variant = "expanded",
@@ -11172,8 +11209,8 @@ function Sidebar({
11172
11209
  [pinnedProp, pinStorageKey, onPinnedChange]
11173
11210
  );
11174
11211
  const [hoverOpen, setHoverOpen] = useState21(false);
11175
- const openTimer = useRef27(null);
11176
- const closeTimer = useRef27(null);
11212
+ const openTimer = useRef28(null);
11213
+ const closeTimer = useRef28(null);
11177
11214
  const clearTimers = () => {
11178
11215
  if (openTimer.current) {
11179
11216
  clearTimeout(openTimer.current);
@@ -11347,7 +11384,7 @@ function RailItem({
11347
11384
  suppressTooltip
11348
11385
  }) {
11349
11386
  const [tipOpen, setTipOpen] = useState21(false);
11350
- const timerRef = useRef27(null);
11387
+ const timerRef = useRef28(null);
11351
11388
  const clear = () => {
11352
11389
  if (timerRef.current) {
11353
11390
  clearTimeout(timerRef.current);
@@ -11619,7 +11656,7 @@ function Skeleton({ variant = "text", width, height, lines = 1, className }) {
11619
11656
 
11620
11657
  // src/components/SlideoutPanel/SlideoutPanel.tsx
11621
11658
  import { AnimatePresence as AnimatePresence9, motion as motion12 } from "framer-motion";
11622
- import { useRef as useRef28 } from "react";
11659
+ import { useRef as useRef29 } from "react";
11623
11660
  import { FocusScope as FocusScope2, OverlayProvider as OverlayProvider2, useDialog as useDialog2, useModal as useModal2, useOverlay as useOverlay2 } from "react-aria";
11624
11661
  import { createPortal as createPortal8 } from "react-dom";
11625
11662
  import { Fragment as Fragment16, jsx as jsx71, jsxs as jsxs69 } from "react/jsx-runtime";
@@ -11645,8 +11682,8 @@ function SlideoutContent({
11645
11682
  footer,
11646
11683
  className
11647
11684
  }) {
11648
- const overlayRef = useRef28(null);
11649
- const panelRef = useRef28(null);
11685
+ const overlayRef = useRef29(null);
11686
+ const panelRef = useRef29(null);
11650
11687
  const { overlayProps } = useOverlay2(
11651
11688
  {
11652
11689
  isOpen: open,
@@ -11877,7 +11914,7 @@ function SocialButton({
11877
11914
  import {
11878
11915
  useCallback as useCallback17,
11879
11916
  useEffect as useEffect17,
11880
- useRef as useRef29,
11917
+ useRef as useRef30,
11881
11918
  useState as useState22
11882
11919
  } from "react";
11883
11920
  import { jsx as jsx74, jsxs as jsxs72 } from "react/jsx-runtime";
@@ -11892,10 +11929,10 @@ function Sortable({
11892
11929
  autoScrollEdge = 48,
11893
11930
  className
11894
11931
  }) {
11895
- const containerRef = useRef29(null);
11896
- const itemRefs = useRef29(/* @__PURE__ */ new Map());
11897
- const originalOrderRef = useRef29(null);
11898
- const scrollTimerRef = useRef29(null);
11932
+ const containerRef = useRef30(null);
11933
+ const itemRefs = useRef30(/* @__PURE__ */ new Map());
11934
+ const originalOrderRef = useRef30(null);
11935
+ const scrollTimerRef = useRef30(null);
11899
11936
  const [draggingId, setDraggingId] = useState22(null);
11900
11937
  const [dropPos, setDropPos] = useState22(null);
11901
11938
  const [kbActiveId, setKbActiveId] = useState22(null);
@@ -12288,7 +12325,7 @@ function Stat({
12288
12325
  }
12289
12326
 
12290
12327
  // src/components/Switch/Switch.tsx
12291
- import { useRef as useRef30 } from "react";
12328
+ import { useRef as useRef31 } from "react";
12292
12329
  import { useSwitch } from "react-aria";
12293
12330
  import { jsx as jsx78, jsxs as jsxs75 } from "react/jsx-runtime";
12294
12331
  function Switch({
@@ -12301,7 +12338,7 @@ function Switch({
12301
12338
  className,
12302
12339
  ...props
12303
12340
  }) {
12304
- const ref = useRef30(null);
12341
+ const ref = useRef31(null);
12305
12342
  const state = $fd3c5e01e837dc20$export$8042c6c013fd5226({
12306
12343
  isSelected: checked,
12307
12344
  defaultSelected: defaultChecked,
@@ -12519,11 +12556,11 @@ function TableRow({
12519
12556
 
12520
12557
  // src/components/Tabs/Tabs.tsx
12521
12558
  import { motion as motion13 } from "framer-motion";
12522
- import { useMemo as useMemo11, useRef as useRef31, useState as useState24 } from "react";
12559
+ import { useMemo as useMemo11, useRef as useRef32, useState as useState24 } from "react";
12523
12560
  import { useTab, useTabList, useTabPanel } from "react-aria";
12524
12561
  import { jsx as jsx80, jsxs as jsxs77 } from "react/jsx-runtime";
12525
12562
  function TabButton({ item, state }) {
12526
- const ref = useRef31(null);
12563
+ const ref = useRef32(null);
12527
12564
  const { tabProps } = useTab({ key: item.key }, state, ref);
12528
12565
  const isSelected = state.selectedKey === item.key;
12529
12566
  const isDisabled = state.disabledKeys.has(item.key);
@@ -12553,7 +12590,7 @@ function TabButton({ item, state }) {
12553
12590
  );
12554
12591
  }
12555
12592
  function TabPanelContent({ state, panelContent, ...props }) {
12556
- const ref = useRef31(null);
12593
+ const ref = useRef32(null);
12557
12594
  const { tabPanelProps } = useTabPanel(props, state, ref);
12558
12595
  return /* @__PURE__ */ jsx80("div", { ...tabPanelProps, ref, className: "ods-tabs__panel", children: panelContent });
12559
12596
  }
@@ -12589,7 +12626,7 @@ function Tabs({
12589
12626
  disabledKeys: items.filter((i) => i.disabled).map((i) => i.value)
12590
12627
  };
12591
12628
  const state = $caeb030f09a278a1$export$4ba071daf4e486(stateProps);
12592
- const ref = useRef31(null);
12629
+ const ref = useRef32(null);
12593
12630
  const { tabListProps } = useTabList({ ...stateProps, orientation }, state, ref);
12594
12631
  const currentPanelContent = panelContentMap.get(String(selectedKey));
12595
12632
  return /* @__PURE__ */ jsxs77("div", { className: cn("ods-tabs", `ods-tabs--${orientation}`, className), children: [
@@ -12743,7 +12780,7 @@ function TestimonialCard({
12743
12780
  }
12744
12781
 
12745
12782
  // src/components/Textarea/Textarea.tsx
12746
- import { useId as useId4, useRef as useRef32, useState as useState26 } from "react";
12783
+ import { useId as useId5, useRef as useRef33, useState as useState26 } from "react";
12747
12784
  import { useTextField as useTextField2 } from "react-aria";
12748
12785
  import { jsx as jsx83, jsxs as jsxs80 } from "react/jsx-runtime";
12749
12786
  function Textarea({
@@ -12761,8 +12798,8 @@ function Textarea({
12761
12798
  onChange,
12762
12799
  ...props
12763
12800
  }) {
12764
- const ref = useRef32(null);
12765
- const errorId = useId4();
12801
+ const ref = useRef33(null);
12802
+ const errorId = useId5();
12766
12803
  const [charCount, setCharCount] = useState26(() => String(value ?? defaultValue ?? "").length);
12767
12804
  const ariaNameProps = resolveAccessibleName({
12768
12805
  label,
@@ -12863,7 +12900,7 @@ import {
12863
12900
  Fragment as Fragment18,
12864
12901
  useCallback as useCallback19,
12865
12902
  useEffect as useEffect18,
12866
- useRef as useRef33,
12903
+ useRef as useRef34,
12867
12904
  useState as useState27
12868
12905
  } from "react";
12869
12906
  import { Fragment as Fragment19, jsx as jsx85, jsxs as jsxs82 } from "react/jsx-runtime";
@@ -12895,11 +12932,11 @@ function TimePicker({
12895
12932
  }) {
12896
12933
  const [open, setOpen] = useState27(false);
12897
12934
  const [activeSeg, setActiveSeg] = useState27(null);
12898
- const draftRef = useRef33("");
12899
- const wrapRef = useRef33(null);
12900
- const hoursRef = useRef33(null);
12901
- const minutesRef = useRef33(null);
12902
- const secondsRef = useRef33(null);
12935
+ const draftRef = useRef34("");
12936
+ const wrapRef = useRef34(null);
12937
+ const hoursRef = useRef34(null);
12938
+ const minutesRef = useRef34(null);
12939
+ const secondsRef = useRef34(null);
12903
12940
  const refOf = (s) => s === "hours" ? hoursRef : s === "minutes" ? minutesRef : secondsRef;
12904
12941
  useEffect18(() => {
12905
12942
  if (!open) return;
@@ -13162,7 +13199,7 @@ function TimePicker({
13162
13199
  }
13163
13200
 
13164
13201
  // src/components/TimezonePicker/TimezonePicker.tsx
13165
- import { useEffect as useEffect19, useMemo as useMemo12, useRef as useRef34, useState as useState28 } from "react";
13202
+ import { useEffect as useEffect19, useMemo as useMemo12, useRef as useRef35, useState as useState28 } from "react";
13166
13203
  import { Fragment as Fragment20, jsx as jsx86, jsxs as jsxs83 } from "react/jsx-runtime";
13167
13204
  var DEFAULT_TZS = [
13168
13205
  { iana: "America/Los_Angeles", label: "Pacific Time", offset: "UTC\u22128" },
@@ -13192,8 +13229,8 @@ function TimezonePicker({
13192
13229
  }) {
13193
13230
  const [open, setOpen] = useState28(false);
13194
13231
  const [query, setQuery] = useState28("");
13195
- const wrapRef = useRef34(null);
13196
- const inputRef = useRef34(null);
13232
+ const wrapRef = useRef35(null);
13233
+ const inputRef = useRef35(null);
13197
13234
  const selected = options.find((o) => o.iana === value);
13198
13235
  const filtered = useMemo12(() => {
13199
13236
  if (!query.trim()) return options;
@@ -13371,7 +13408,7 @@ import {
13371
13408
  useCallback as useCallback20,
13372
13409
  useContext as useContext2,
13373
13410
  useMemo as useMemo13,
13374
- useRef as useRef35,
13411
+ useRef as useRef36,
13375
13412
  useState as useState29
13376
13413
  } from "react";
13377
13414
  import { createPortal as createPortal9 } from "react-dom";
@@ -13565,8 +13602,8 @@ function ToastProvider({
13565
13602
  maxStack = 3
13566
13603
  }) {
13567
13604
  const [toasts, setToasts] = useState29([]);
13568
- const timers = useRef35(/* @__PURE__ */ new Map());
13569
- const idCounter2 = useRef35(0);
13605
+ const timers = useRef36(/* @__PURE__ */ new Map());
13606
+ const idCounter2 = useRef36(0);
13570
13607
  const dismiss = useCallback20((id) => {
13571
13608
  setToasts((prev) => prev.filter((t) => t.id !== id));
13572
13609
  const timer = timers.current.get(id);
@@ -13836,7 +13873,7 @@ import {
13836
13873
  useCallback as useCallback21,
13837
13874
  useEffect as useEffect20,
13838
13875
  useLayoutEffect as useLayoutEffect4,
13839
- useRef as useRef36,
13876
+ useRef as useRef37,
13840
13877
  useState as useState30
13841
13878
  } from "react";
13842
13879
  import { useTooltip, useTooltipTrigger } from "react-aria";
@@ -13871,7 +13908,7 @@ function TooltipContent({
13871
13908
  offset
13872
13909
  }) {
13873
13910
  const { tooltipProps } = useTooltip({ isOpen: state.isOpen }, state);
13874
- const tipRef = useRef36(null);
13911
+ const tipRef = useRef37(null);
13875
13912
  const [coords, setCoords] = useState30(null);
13876
13913
  const reposition = useCallback21(() => {
13877
13914
  if (!triggerRef.current || !tipRef.current) return;
@@ -13941,7 +13978,7 @@ function Tooltip({
13941
13978
  children,
13942
13979
  className
13943
13980
  }) {
13944
- const triggerRef = useRef36(null);
13981
+ const triggerRef = useRef37(null);
13945
13982
  const state = $3834487504f4fc00$export$4d40659c25ecb50b({ delay });
13946
13983
  const { triggerProps } = useTooltipTrigger({ delay }, state, triggerRef);
13947
13984
  return /* @__PURE__ */ jsxs88(Fragment22, { children: [