@strands.gg/accui 2.10.0 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js CHANGED
@@ -8,7 +8,7 @@ const _hoisted_2$M = {
8
8
  class: "ui-app-loading-overlay"
9
9
  };
10
10
  const _hoisted_3$J = { class: "ui-app-loading-content" };
11
- const _hoisted_4$G = {
11
+ const _hoisted_4$H = {
12
12
  key: 0,
13
13
  class: "ui-app-loading-message"
14
14
  };
@@ -67,7 +67,7 @@ const _sfc_main$10 = /* @__PURE__ */ defineComponent({
67
67
  isGlobalLoading.value ? (openBlock(), createElementBlock("div", _hoisted_2$M, [
68
68
  createElementVNode("div", _hoisted_3$J, [
69
69
  _cache[1] || (_cache[1] = createElementVNode("div", { class: "ui-app-loading-spinner" }, null, -1)),
70
- _ctx.loadingMessage ? (openBlock(), createElementBlock("p", _hoisted_4$G, toDisplayString(_ctx.loadingMessage), 1)) : createCommentVNode("", true)
70
+ _ctx.loadingMessage ? (openBlock(), createElementBlock("p", _hoisted_4$H, toDisplayString(_ctx.loadingMessage), 1)) : createCommentVNode("", true)
71
71
  ])
72
72
  ])) : createCommentVNode("", true)
73
73
  ]))
@@ -86,14 +86,14 @@ const UiApp = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["__scopeId", "data-v-f
86
86
  const _hoisted_1$T = { class: "accui-component-scope" };
87
87
  const _hoisted_2$L = { class: "alert-content" };
88
88
  const _hoisted_3$I = { class: "alert-icon-container" };
89
- const _hoisted_4$F = {
89
+ const _hoisted_4$G = {
90
90
  class: "alert-main-icon",
91
91
  fill: "currentColor",
92
92
  viewBox: "0 0 20 20",
93
93
  "aria-hidden": "true"
94
94
  };
95
- const _hoisted_5$A = ["d"];
96
- const _hoisted_6$u = { class: "alert-text-container" };
95
+ const _hoisted_5$B = ["d"];
96
+ const _hoisted_6$v = { class: "alert-text-container" };
97
97
  const _hoisted_7$s = {
98
98
  key: 0,
99
99
  class: "alert-dismiss-container"
@@ -141,15 +141,15 @@ const _sfc_main$$ = /* @__PURE__ */ defineComponent({
141
141
  }, [
142
142
  createElementVNode("div", _hoisted_2$L, [
143
143
  createElementVNode("div", _hoisted_3$I, [
144
- (openBlock(), createElementBlock("svg", _hoisted_4$F, [
144
+ (openBlock(), createElementBlock("svg", _hoisted_4$G, [
145
145
  createElementVNode("path", {
146
146
  "fill-rule": "evenodd",
147
147
  d: iconPath.value,
148
148
  "clip-rule": "evenodd"
149
- }, null, 8, _hoisted_5$A)
149
+ }, null, 8, _hoisted_5$B)
150
150
  ]))
151
151
  ]),
152
- createElementVNode("div", _hoisted_6$u, [
152
+ createElementVNode("div", _hoisted_6$v, [
153
153
  _ctx.title ? (openBlock(), createElementBlock("h3", {
154
154
  key: 0,
155
155
  class: normalizeClass(titleClasses.value)
@@ -196,9 +196,9 @@ const _hoisted_1$S = {
196
196
  };
197
197
  const _hoisted_2$K = ["width", "height"];
198
198
  const _hoisted_3$H = ["d"];
199
- const _hoisted_4$E = ["stroke-width"];
200
- const _hoisted_5$z = ["stroke-width"];
201
- const _hoisted_6$t = ["width", "height"];
199
+ const _hoisted_4$F = ["stroke-width"];
200
+ const _hoisted_5$A = ["stroke-width"];
201
+ const _hoisted_6$u = ["width", "height"];
202
202
  const _hoisted_7$r = {
203
203
  key: 3,
204
204
  class: "loader-text"
@@ -257,7 +257,7 @@ const _sfc_main$_ = /* @__PURE__ */ defineComponent({
257
257
  "stroke-width": _ctx.weight,
258
258
  "stroke-linecap": "round",
259
259
  "stroke-linejoin": "round"
260
- }, null, 8, _hoisted_4$E),
260
+ }, null, 8, _hoisted_4$F),
261
261
  createElementVNode("use", {
262
262
  href: "#logo-path",
263
263
  fill: "none",
@@ -266,7 +266,7 @@ const _sfc_main$_ = /* @__PURE__ */ defineComponent({
266
266
  "stroke-linecap": "round",
267
267
  "stroke-linejoin": "round",
268
268
  class: "loader-animated-path"
269
- }, null, 8, _hoisted_5$z)
269
+ }, null, 8, _hoisted_5$A)
270
270
  ], 8, _hoisted_2$K))
271
271
  ])) : _ctx.variant === "circle" ? (openBlock(), createElementBlock("div", {
272
272
  key: 1,
@@ -288,7 +288,7 @@ const _sfc_main$_ = /* @__PURE__ */ defineComponent({
288
288
  "stroke-linecap": "round",
289
289
  class: "loader-circle-path"
290
290
  }, null, -1)
291
- ])], 8, _hoisted_6$t))
291
+ ])], 8, _hoisted_6$u))
292
292
  ], 4)) : _ctx.variant === "bar" ? (openBlock(), createElementBlock("div", {
293
293
  key: 2,
294
294
  class: "loader-bar",
@@ -316,7 +316,7 @@ const _hoisted_3$G = {
316
316
  key: 0,
317
317
  class: "leading-icon"
318
318
  };
319
- const _hoisted_4$D = {
319
+ const _hoisted_4$E = {
320
320
  key: 1,
321
321
  class: "trailing-icon"
322
322
  };
@@ -380,7 +380,7 @@ const _sfc_main$Z = /* @__PURE__ */ defineComponent({
380
380
  ])) : createCommentVNode("", true),
381
381
  renderSlot(_ctx.$slots, "icon", {}, void 0, true),
382
382
  renderSlot(_ctx.$slots, "default", {}, void 0, true),
383
- hasTrailingIconSlot.value ? (openBlock(), createElementBlock("span", _hoisted_4$D, [
383
+ hasTrailingIconSlot.value ? (openBlock(), createElementBlock("span", _hoisted_4$E, [
384
384
  renderSlot(_ctx.$slots, "trailing-icon", {}, void 0, true)
385
385
  ])) : createCommentVNode("", true)
386
386
  ], 64))
@@ -795,8 +795,20 @@ const _hoisted_1$O = {
795
795
  key: 0,
796
796
  class: "ui-card-header"
797
797
  };
798
- const _hoisted_2$I = { class: "ui-card-content" };
798
+ const _hoisted_2$I = {
799
+ key: 0,
800
+ class: "ui-card-title-wrapper"
801
+ };
799
802
  const _hoisted_3$F = {
803
+ key: 0,
804
+ class: "ui-card-title"
805
+ };
806
+ const _hoisted_4$D = {
807
+ key: 0,
808
+ class: "ui-card-subtitle"
809
+ };
810
+ const _hoisted_5$z = { class: "ui-card-content" };
811
+ const _hoisted_6$t = {
800
812
  key: 1,
801
813
  class: "ui-card-footer"
802
814
  };
@@ -809,7 +821,9 @@ const _sfc_main$U = /* @__PURE__ */ defineComponent({
809
821
  variant: { default: "default" },
810
822
  padding: { default: "md" },
811
823
  shadow: { default: "sm" },
812
- color: { default: "default" }
824
+ color: { default: "default" },
825
+ title: {},
826
+ subtitle: {}
813
827
  },
814
828
  setup(__props) {
815
829
  const attrs = useAttrs();
@@ -823,20 +837,30 @@ const _sfc_main$U = /* @__PURE__ */ defineComponent({
823
837
  unref(attrs)["class"]
824
838
  ]])
825
839
  }, [
826
- _ctx.$slots["header"] ? (openBlock(), createElementBlock("div", _hoisted_1$O, [
827
- renderSlot(_ctx.$slots, "header", {}, void 0, true)
840
+ _ctx.$slots["header"] || _ctx.title || _ctx.subtitle ? (openBlock(), createElementBlock("div", _hoisted_1$O, [
841
+ renderSlot(_ctx.$slots, "header", {}, () => [
842
+ _ctx.title || _ctx.$slots["title"] || _ctx.subtitle || _ctx.$slots["subtitle"] ? (openBlock(), createElementBlock("div", _hoisted_2$I, [
843
+ _ctx.title || _ctx.$slots["title"] ? renderSlot(_ctx.$slots, "title", { key: 0 }, () => [
844
+ _ctx.title ? (openBlock(), createElementBlock("h2", _hoisted_3$F, toDisplayString(_ctx.title), 1)) : createCommentVNode("", true)
845
+ ], true) : createCommentVNode("", true),
846
+ _ctx.subtitle || _ctx.$slots["subtitle"] ? renderSlot(_ctx.$slots, "subtitle", { key: 1 }, () => [
847
+ _ctx.subtitle ? (openBlock(), createElementBlock("p", _hoisted_4$D, toDisplayString(_ctx.subtitle), 1)) : createCommentVNode("", true)
848
+ ], true) : createCommentVNode("", true)
849
+ ])) : createCommentVNode("", true),
850
+ renderSlot(_ctx.$slots, "actions", {}, void 0, true)
851
+ ], true)
828
852
  ])) : createCommentVNode("", true),
829
- createElementVNode("div", _hoisted_2$I, [
853
+ createElementVNode("div", _hoisted_5$z, [
830
854
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
831
855
  ]),
832
- _ctx.$slots["footer"] ? (openBlock(), createElementBlock("div", _hoisted_3$F, [
856
+ _ctx.$slots["footer"] ? (openBlock(), createElementBlock("div", _hoisted_6$t, [
833
857
  renderSlot(_ctx.$slots, "footer", {}, void 0, true)
834
858
  ])) : createCommentVNode("", true)
835
859
  ], 2);
836
860
  };
837
861
  }
838
862
  });
839
- const StrandsUiCard = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["__scopeId", "data-v-261f3012"]]);
863
+ const StrandsUiCard = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["__scopeId", "data-v-cc3144c9"]]);
840
864
  /**
841
865
  * @license lucide-vue-next v0.542.0 - ISC
842
866
  *
@@ -2596,6 +2620,13 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
2596
2620
  },
2597
2621
  emits: ["update:modelValue"],
2598
2622
  setup(__props, { emit: __emit }) {
2623
+ const isDevToolsOpen = () => {
2624
+ try {
2625
+ return window.outerHeight - window.innerHeight > 160 || window.outerWidth - window.innerWidth > 160;
2626
+ } catch {
2627
+ return false;
2628
+ }
2629
+ };
2599
2630
  const props = __props;
2600
2631
  const emit = __emit;
2601
2632
  const slots = useSlots();
@@ -2622,195 +2653,226 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
2622
2653
  let currentTabIndex = -1;
2623
2654
  let isAnimating = false;
2624
2655
  const calculateUnderlineDimensions = (tabElement, containerElement) => {
2625
- const tabRect = tabElement.getBoundingClientRect();
2626
- const containerRect = containerElement.getBoundingClientRect();
2627
- const computedStyle = getComputedStyle(containerElement);
2628
- const underlineThickness = parseFloat(computedStyle.getPropertyValue("--underline-thickness") || "5");
2629
- let actualPadding = 5;
2630
- if (props.size === "sm") {
2631
- actualPadding = 4;
2632
- } else if (props.size === "lg") {
2633
- actualPadding = 6;
2634
- }
2635
- const containerHeight = containerRect.height;
2636
- if (props.orientation === "vertical") {
2637
- const tabTop = tabRect.top - containerRect.top;
2638
- const tabHeight = tabRect.height;
2656
+ if (isDevToolsOpen()) {
2639
2657
  return {
2640
- height: tabHeight - actualPadding * 4,
2641
- // More padding for shorter underline
2642
- top: tabTop + actualPadding * 2,
2643
- // Better centering with more offset
2644
- width: underlineThickness,
2645
- // Use dynamic thickness
2646
- left: actualPadding - underlineThickness / 2
2647
- // Position at container left edge
2658
+ width: 100,
2659
+ left: 0,
2660
+ height: 3,
2661
+ top: 0
2648
2662
  };
2649
- } else {
2650
- const tabLeft = tabRect.left - containerRect.left;
2651
- const tabWidth = tabRect.width;
2652
- if (props.underlineWidth === "full") {
2663
+ }
2664
+ try {
2665
+ const tabRect = tabElement.getBoundingClientRect();
2666
+ const containerRect = containerElement.getBoundingClientRect();
2667
+ const computedStyle = getComputedStyle(containerElement);
2668
+ const underlineThickness = parseFloat(computedStyle.getPropertyValue("--underline-thickness") || "5");
2669
+ let actualPadding = 5;
2670
+ if (props.size === "sm") {
2671
+ actualPadding = 4;
2672
+ } else if (props.size === "lg") {
2673
+ actualPadding = 6;
2674
+ }
2675
+ const containerHeight = containerRect.height;
2676
+ if (props.orientation === "vertical") {
2677
+ const tabTop = tabRect.top - containerRect.top;
2678
+ const tabHeight = tabRect.height;
2653
2679
  return {
2654
- width: tabWidth - 30,
2655
- // Fixed 15px margin on each side for horizontal tabs
2656
- left: tabLeft + 15,
2680
+ height: tabHeight - actualPadding * 4,
2681
+ // More padding for shorter underline
2682
+ top: tabTop + actualPadding * 2,
2683
+ // Better centering with more offset
2684
+ width: underlineThickness,
2685
+ // Use dynamic thickness
2686
+ left: actualPadding - underlineThickness / 2
2687
+ // Position at container left edge
2688
+ };
2689
+ } else {
2690
+ const tabLeft = tabRect.left - containerRect.left;
2691
+ const tabWidth = tabRect.width;
2692
+ if (props.underlineWidth === "full") {
2693
+ return {
2694
+ width: tabWidth - 30,
2695
+ // Fixed 15px margin on each side for horizontal tabs
2696
+ left: tabLeft + 15,
2697
+ height: underlineThickness,
2698
+ top: containerHeight - actualPadding - underlineThickness / 2
2699
+ // Position near bottom of container
2700
+ };
2701
+ }
2702
+ let underlineWidth;
2703
+ if (props.underlineWidth.endsWith("%")) {
2704
+ const percentage = parseFloat(props.underlineWidth) / 100;
2705
+ underlineWidth = tabWidth * percentage;
2706
+ } else if (props.underlineWidth.endsWith("px")) {
2707
+ underlineWidth = parseFloat(props.underlineWidth);
2708
+ } else if (props.underlineWidth.endsWith("rem")) {
2709
+ const remValue = parseFloat(props.underlineWidth);
2710
+ const fontSize = parseFloat(getComputedStyle(document.documentElement).fontSize);
2711
+ underlineWidth = remValue * fontSize;
2712
+ } else {
2713
+ underlineWidth = parseFloat(props.underlineWidth) || tabWidth;
2714
+ }
2715
+ const offset = (tabWidth - underlineWidth) / 2;
2716
+ return {
2717
+ width: underlineWidth,
2718
+ left: tabLeft + offset,
2657
2719
  height: underlineThickness,
2658
2720
  top: containerHeight - actualPadding - underlineThickness / 2
2659
2721
  // Position near bottom of container
2660
2722
  };
2661
2723
  }
2662
- let underlineWidth;
2663
- if (props.underlineWidth.endsWith("%")) {
2664
- const percentage = parseFloat(props.underlineWidth) / 100;
2665
- underlineWidth = tabWidth * percentage;
2666
- } else if (props.underlineWidth.endsWith("px")) {
2667
- underlineWidth = parseFloat(props.underlineWidth);
2668
- } else if (props.underlineWidth.endsWith("rem")) {
2669
- const remValue = parseFloat(props.underlineWidth);
2670
- const fontSize = parseFloat(getComputedStyle(document.documentElement).fontSize);
2671
- underlineWidth = remValue * fontSize;
2672
- } else {
2673
- underlineWidth = parseFloat(props.underlineWidth) || tabWidth;
2674
- }
2675
- const offset = (tabWidth - underlineWidth) / 2;
2724
+ } catch (error) {
2725
+ console.warn("Tab dimension calculation failed, using fallback values:", error);
2676
2726
  return {
2677
- width: underlineWidth,
2678
- left: tabLeft + offset,
2679
- height: underlineThickness,
2680
- top: containerHeight - actualPadding - underlineThickness / 2
2681
- // Position near bottom of container
2727
+ width: 100,
2728
+ left: 0,
2729
+ height: 3,
2730
+ top: 0
2682
2731
  };
2683
2732
  }
2684
2733
  };
2685
2734
  const handleTabClick = async (value, index) => {
2686
2735
  if (isAnimating) return;
2687
2736
  emit("update:modelValue", value);
2737
+ if (isDevToolsOpen()) {
2738
+ currentTabIndex = index;
2739
+ return;
2740
+ }
2688
2741
  await nextTick();
2689
2742
  animateUnderlineStretch(index);
2690
2743
  };
2691
2744
  const animateUnderlineStretch = async (newIndex) => {
2745
+ if (isDevToolsOpen()) {
2746
+ currentTabIndex = newIndex;
2747
+ return;
2748
+ }
2692
2749
  if (!tabButtons.value[newIndex] || newIndex === currentTabIndex) return;
2693
2750
  isAnimating = true;
2694
2751
  const newTab = tabButtons.value[newIndex];
2695
2752
  const container = newTab.parentElement;
2696
2753
  if (!container) return;
2697
2754
  const newDimensions = calculateUnderlineDimensions(newTab, container);
2698
- const newTabRect = newTab.getBoundingClientRect();
2699
- const containerRect = container.getBoundingClientRect();
2700
- let newTabPos, newTabSize;
2701
- if (props.orientation === "vertical") {
2702
- newTabPos = newTabRect.top - containerRect.top;
2703
- newTabSize = newTabRect.height;
2704
- } else {
2705
- newTabPos = newTabRect.left - containerRect.left;
2706
- newTabSize = newTabRect.width;
2707
- }
2708
- if (currentTabIndex === -1) {
2755
+ try {
2756
+ const newTabRect = newTab.getBoundingClientRect();
2757
+ const containerRect = container.getBoundingClientRect();
2758
+ let newTabPos, newTabSize;
2709
2759
  if (props.orientation === "vertical") {
2710
- underlineStyle.value = {
2711
- height: `${newDimensions.height}px`,
2712
- top: `${newDimensions.top}px`,
2713
- width: `${newDimensions.width}px`,
2714
- left: `${newDimensions.left}px`,
2715
- opacity: "1"
2716
- };
2717
- backgroundStyle.value = {
2718
- height: `${newTabSize}px`,
2719
- top: `${newTabPos}px`,
2720
- width: `${newTabRect.width}px`,
2721
- left: "0",
2722
- opacity: "1"
2723
- };
2760
+ newTabPos = newTabRect.top - containerRect.top;
2761
+ newTabSize = newTabRect.height;
2724
2762
  } else {
2725
- underlineStyle.value = {
2726
- width: `${newDimensions.width}px`,
2727
- left: `${newDimensions.left}px`,
2728
- height: `${newDimensions.height}px`,
2729
- top: `${newDimensions.top}px`,
2730
- opacity: "1"
2731
- };
2732
- backgroundStyle.value = {
2733
- width: `${newTabSize}px`,
2734
- left: `${newTabPos}px`,
2735
- height: "100%",
2736
- top: "0",
2737
- opacity: "1"
2738
- };
2763
+ newTabPos = newTabRect.left - containerRect.left;
2764
+ newTabSize = newTabRect.width;
2739
2765
  }
2740
- currentTabIndex = newIndex;
2741
- isAnimating = false;
2742
- return;
2743
- }
2744
- const currentTab = tabButtons.value[currentTabIndex];
2745
- calculateUnderlineDimensions(currentTab, container);
2746
- currentTab.getBoundingClientRect();
2747
- const prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
2748
- if (prefersReducedMotion) {
2749
- underlineStyle.value = {
2750
- width: `${newDimensions.width || 0}px`,
2751
- left: `${newDimensions.left || 0}px`,
2752
- height: `${newDimensions.height || 7}px`,
2753
- top: `${newDimensions.top}px`,
2754
- opacity: "1"
2755
- };
2756
- if (props.orientation === "vertical") {
2757
- backgroundStyle.value = {
2758
- height: `${newTabSize}px`,
2759
- top: `${newTabPos}px`,
2760
- width: "100%",
2761
- left: "0",
2762
- opacity: "1"
2763
- };
2764
- } else {
2765
- backgroundStyle.value = {
2766
- width: `${newTabSize}px`,
2767
- left: `${newTabPos}px`,
2768
- height: "100%",
2769
- top: "0",
2770
- opacity: "1"
2771
- };
2766
+ if (currentTabIndex === -1) {
2767
+ if (props.orientation === "vertical") {
2768
+ underlineStyle.value = {
2769
+ height: `${newDimensions.height}px`,
2770
+ top: `${newDimensions.top}px`,
2771
+ width: `${newDimensions.width}px`,
2772
+ left: `${newDimensions.left}px`,
2773
+ opacity: "1"
2774
+ };
2775
+ backgroundStyle.value = {
2776
+ height: `${newTabSize}px`,
2777
+ top: `${newTabPos}px`,
2778
+ width: `${newTabRect.width}px`,
2779
+ left: "0",
2780
+ opacity: "1"
2781
+ };
2782
+ } else {
2783
+ underlineStyle.value = {
2784
+ width: `${newDimensions.width}px`,
2785
+ left: `${newDimensions.left}px`,
2786
+ height: `${newDimensions.height}px`,
2787
+ top: `${newDimensions.top}px`,
2788
+ opacity: "1"
2789
+ };
2790
+ backgroundStyle.value = {
2791
+ width: `${newTabSize}px`,
2792
+ left: `${newTabPos}px`,
2793
+ height: "100%",
2794
+ top: "0",
2795
+ opacity: "1"
2796
+ };
2797
+ }
2798
+ currentTabIndex = newIndex;
2799
+ isAnimating = false;
2800
+ return;
2772
2801
  }
2773
- currentTabIndex = newIndex;
2774
- isAnimating = false;
2775
- return;
2776
- }
2777
- requestAnimationFrame(() => {
2778
- if (props.orientation === "vertical") {
2802
+ const currentTab = tabButtons.value[currentTabIndex];
2803
+ calculateUnderlineDimensions(currentTab, container);
2804
+ currentTab.getBoundingClientRect();
2805
+ const prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
2806
+ if (prefersReducedMotion) {
2779
2807
  underlineStyle.value = {
2780
- height: `${newDimensions.height}px`,
2781
- top: `${newDimensions.top}px`,
2782
- width: `${newDimensions.width || 7}px`,
2783
- left: `${newDimensions.left}px`,
2784
- opacity: "1"
2785
- };
2786
- backgroundStyle.value = {
2787
- height: `${newTabSize}px`,
2788
- top: `${newTabPos}px`,
2789
- width: "100%",
2790
- left: "0",
2791
- opacity: "1"
2792
- };
2793
- } else {
2794
- underlineStyle.value = {
2795
- width: `${newDimensions.width}px`,
2796
- left: `${newDimensions.left}px`,
2808
+ width: `${newDimensions.width || 0}px`,
2809
+ left: `${newDimensions.left || 0}px`,
2797
2810
  height: `${newDimensions.height || 7}px`,
2798
2811
  top: `${newDimensions.top}px`,
2799
2812
  opacity: "1"
2800
2813
  };
2801
- backgroundStyle.value = {
2802
- width: `${newTabSize}px`,
2803
- left: `${newTabPos}px`,
2804
- height: "100%",
2805
- top: "0",
2806
- opacity: "1"
2807
- };
2808
- }
2809
- currentTabIndex = newIndex;
2810
- setTimeout(() => {
2814
+ if (props.orientation === "vertical") {
2815
+ backgroundStyle.value = {
2816
+ height: `${newTabSize}px`,
2817
+ top: `${newTabPos}px`,
2818
+ width: "100%",
2819
+ left: "0",
2820
+ opacity: "1"
2821
+ };
2822
+ } else {
2823
+ backgroundStyle.value = {
2824
+ width: `${newTabSize}px`,
2825
+ left: `${newTabPos}px`,
2826
+ height: "100%",
2827
+ top: "0",
2828
+ opacity: "1"
2829
+ };
2830
+ }
2831
+ currentTabIndex = newIndex;
2811
2832
  isAnimating = false;
2812
- }, 200);
2813
- });
2833
+ return;
2834
+ }
2835
+ requestAnimationFrame(() => {
2836
+ if (props.orientation === "vertical") {
2837
+ underlineStyle.value = {
2838
+ height: `${newDimensions.height}px`,
2839
+ top: `${newDimensions.top}px`,
2840
+ width: `${newDimensions.width || 7}px`,
2841
+ left: `${newDimensions.left}px`,
2842
+ opacity: "1"
2843
+ };
2844
+ backgroundStyle.value = {
2845
+ height: `${newTabSize}px`,
2846
+ top: `${newTabPos}px`,
2847
+ width: "100%",
2848
+ left: "0",
2849
+ opacity: "1"
2850
+ };
2851
+ } else {
2852
+ underlineStyle.value = {
2853
+ width: `${newDimensions.width}px`,
2854
+ left: `${newDimensions.left}px`,
2855
+ height: `${newDimensions.height || 7}px`,
2856
+ top: `${newDimensions.top}px`,
2857
+ opacity: "1"
2858
+ };
2859
+ backgroundStyle.value = {
2860
+ width: `${newTabSize}px`,
2861
+ left: `${newTabPos}px`,
2862
+ height: "100%",
2863
+ top: "0",
2864
+ opacity: "1"
2865
+ };
2866
+ }
2867
+ currentTabIndex = newIndex;
2868
+ setTimeout(() => {
2869
+ isAnimating = false;
2870
+ }, 200);
2871
+ });
2872
+ } catch (error) {
2873
+ console.warn("Tab animation calculation failed:", error);
2874
+ isAnimating = false;
2875
+ }
2814
2876
  };
2815
2877
  let resizeTimeout = null;
2816
2878
  const handleResize = () => {
@@ -2876,6 +2938,10 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
2876
2938
  };
2877
2939
  onMounted(async () => {
2878
2940
  await nextTick();
2941
+ if (isDevToolsOpen()) {
2942
+ enableTransitions.value = true;
2943
+ return;
2944
+ }
2879
2945
  const activeIndex = props.tabs.findIndex((tab) => tab.value === props.modelValue);
2880
2946
  if (activeIndex !== -1) {
2881
2947
  animateUnderlineStretch(activeIndex);
@@ -2895,6 +2961,9 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
2895
2961
  const { modelValue } = toRefs(props);
2896
2962
  watch(modelValue, async () => {
2897
2963
  await nextTick();
2964
+ if (isDevToolsOpen()) {
2965
+ return;
2966
+ }
2898
2967
  const activeIndex = props.tabs.findIndex((tab) => tab.value === props.modelValue);
2899
2968
  if (activeIndex !== -1) {
2900
2969
  animateUnderlineStretch(activeIndex);
@@ -2971,7 +3040,7 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
2971
3040
  };
2972
3041
  }
2973
3042
  });
2974
- const StrandsUiTabs = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["__scopeId", "data-v-edff91a5"]]);
3043
+ const StrandsUiTabs = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["__scopeId", "data-v-8e8f1aec"]]);
2975
3044
  const _hoisted_1$I = {
2976
3045
  key: 0,
2977
3046
  class: "ui-divider-text"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strands.gg/accui",
3
- "version": "2.10.0",
3
+ "version": "2.10.1",
4
4
  "description": "Strands Authentication UI Components",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs.js",