@strands.gg/accui 2.3.10 → 2.4.0

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.
@@ -1,4 +1,4 @@
1
- import { defineComponent, computed, provide, onMounted, onUnmounted, createElementBlock, openBlock, normalizeClass, renderSlot, createBlock, Teleport, createCommentVNode, unref, createElementVNode, toDisplayString, createTextVNode, h, useSlots, resolveDynamicComponent, mergeProps, withCtx, Fragment, ref, nextTick, toRefs, watch, normalizeStyle, renderList, reactive, withModifiers, createStaticVNode, createVNode, withDirectives, vModelText, Transition, createSlots, vModelSelect, inject, onBeforeUnmount, withKeys, isMemoSame, getCurrentInstance } from "vue";
1
+ import { defineComponent, computed, provide, onMounted, onUnmounted, createElementBlock, openBlock, normalizeClass, renderSlot, createBlock, Teleport, createCommentVNode, unref, createElementVNode, toDisplayString, createTextVNode, normalizeStyle, h, useSlots, createVNode, Fragment, resolveDynamicComponent, withCtx, resolveComponent, createSlots, ref, nextTick, toRefs, watch, renderList, reactive, withModifiers, createStaticVNode, withDirectives, vModelText, Transition, mergeProps, vModelSelect, inject, onBeforeUnmount, withKeys, isMemoSame, getCurrentInstance } from "vue";
2
2
  import { u as useStrandsConfig, p as provideStrandsConfig } from "./useStrandsConfig-C3gBJK6y.es.js";
3
3
  import { s } from "./useStrandsConfig-C3gBJK6y.es.js";
4
4
  import { u as useStrandsAuth } from "./useStrandsAuth-DoUupKb8.es.js";
@@ -49,11 +49,11 @@ if (typeof window !== "undefined") {
49
49
  modalStack.cleanup();
50
50
  });
51
51
  }
52
- const _hoisted_1$G = {
52
+ const _hoisted_1$J = {
53
53
  key: 0,
54
54
  class: "ui-app-modal-overlay"
55
55
  };
56
- const _hoisted_2$z = {
56
+ const _hoisted_2$A = {
57
57
  key: 0,
58
58
  class: "ui-app-loading-overlay"
59
59
  };
@@ -62,7 +62,7 @@ const _hoisted_4$u = {
62
62
  key: 0,
63
63
  class: "ui-app-loading-message"
64
64
  };
65
- const _sfc_main$K = /* @__PURE__ */ defineComponent({
65
+ const _sfc_main$O = /* @__PURE__ */ defineComponent({
66
66
  __name: "UiApp",
67
67
  props: {
68
68
  theme: { default: "auto" },
@@ -111,13 +111,13 @@ const _sfc_main$K = /* @__PURE__ */ defineComponent({
111
111
  }, [
112
112
  renderSlot(_ctx.$slots, "default", {}, void 0, true),
113
113
  (openBlock(), createBlock(Teleport, { to: "body" }, [
114
- unref(modalStack).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$G)) : createCommentVNode("", true)
114
+ unref(modalStack).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$J)) : createCommentVNode("", true)
115
115
  ])),
116
116
  (openBlock(), createBlock(Teleport, { to: "body" }, [
117
117
  _cache[0] || (_cache[0] = createElementVNode("div", { class: "ui-app-notifications" }, null, -1))
118
118
  ])),
119
119
  (openBlock(), createBlock(Teleport, { to: "body" }, [
120
- isGlobalLoading.value ? (openBlock(), createElementBlock("div", _hoisted_2$z, [
120
+ isGlobalLoading.value ? (openBlock(), createElementBlock("div", _hoisted_2$A, [
121
121
  createElementVNode("div", _hoisted_3$x, [
122
122
  _cache[1] || (_cache[1] = createElementVNode("div", { class: "ui-app-loading-spinner" }, null, -1)),
123
123
  _ctx.loadingMessage ? (openBlock(), createElementBlock("p", _hoisted_4$u, toDisplayString(_ctx.loadingMessage), 1)) : createCommentVNode("", true)
@@ -135,9 +135,9 @@ const _export_sfc = (sfc, props) => {
135
135
  }
136
136
  return target;
137
137
  };
138
- const UiApp = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["__scopeId", "data-v-942fd7a0"]]);
139
- const _hoisted_1$F = { class: "accui-component-scope" };
140
- const _hoisted_2$y = { class: "alert-content" };
138
+ const UiApp = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["__scopeId", "data-v-942fd7a0"]]);
139
+ const _hoisted_1$I = { class: "accui-component-scope" };
140
+ const _hoisted_2$z = { class: "alert-content" };
141
141
  const _hoisted_3$w = { class: "alert-icon-container" };
142
142
  const _hoisted_4$t = {
143
143
  class: "alert-main-icon",
@@ -146,12 +146,12 @@ const _hoisted_4$t = {
146
146
  "aria-hidden": "true"
147
147
  };
148
148
  const _hoisted_5$q = ["d"];
149
- const _hoisted_6$n = { class: "alert-text-container" };
149
+ const _hoisted_6$o = { class: "alert-text-container" };
150
150
  const _hoisted_7$m = {
151
151
  key: 0,
152
152
  class: "alert-dismiss-container"
153
153
  };
154
- const _sfc_main$J = /* @__PURE__ */ defineComponent({
154
+ const _sfc_main$N = /* @__PURE__ */ defineComponent({
155
155
  __name: "UiAlert",
156
156
  props: {
157
157
  variant: { default: "info" },
@@ -187,12 +187,12 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
187
187
  return icons[props.variant];
188
188
  });
189
189
  return (_ctx, _cache) => {
190
- return openBlock(), createElementBlock("div", _hoisted_1$F, [
190
+ return openBlock(), createElementBlock("div", _hoisted_1$I, [
191
191
  createElementVNode("div", {
192
192
  class: normalizeClass(alertClasses.value),
193
193
  role: "alert"
194
194
  }, [
195
- createElementVNode("div", _hoisted_2$y, [
195
+ createElementVNode("div", _hoisted_2$z, [
196
196
  createElementVNode("div", _hoisted_3$w, [
197
197
  (openBlock(), createElementBlock("svg", _hoisted_4$t, [
198
198
  createElementVNode("path", {
@@ -202,7 +202,7 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
202
202
  }, null, 8, _hoisted_5$q)
203
203
  ]))
204
204
  ]),
205
- createElementVNode("div", _hoisted_6$n, [
205
+ createElementVNode("div", _hoisted_6$o, [
206
206
  _ctx.title ? (openBlock(), createElementBlock("h3", {
207
207
  key: 0,
208
208
  class: normalizeClass(titleClasses.value)
@@ -241,7 +241,112 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
241
241
  };
242
242
  }
243
243
  });
244
- const StrandsUiAlert = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__scopeId", "data-v-1beb49ad"]]);
244
+ const StrandsUiAlert = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__scopeId", "data-v-1beb49ad"]]);
245
+ const logo = '<svg width="302" height="438" viewBox="0 0 302 438" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M71.5001 96C71.5001 96 132 106 137 61.5C142 17 117.5 3.50005 94.5001 1.50003C71.5001 -0.499996 16.0001 8.5 2.00014 72.5C-6.5 130.5 71.5003 227.5 165 218C258.5 208.5 280.758 148.5 283.5 121C286.242 93.5 277.5 61.5 238.5 61.5C153 61.5 150.501 185 170.5 235C190.5 285 199 279 213 314C227.001 349 217.296 411.458 183 427C129.456 450.65 92 426 78.5 407.5C65 389 68.0003 357 94.5001 344.5C121 332 212.41 393.5 301.5 361" stroke="black"/>\n</svg>\n';
246
+ const _hoisted_1$H = {
247
+ key: 0,
248
+ class: "loader-icon"
249
+ };
250
+ const _hoisted_2$y = ["width", "height"];
251
+ const _hoisted_3$v = ["d"];
252
+ const _hoisted_4$s = ["stroke-width"];
253
+ const _hoisted_5$p = ["stroke-width"];
254
+ const _hoisted_6$n = ["width", "height"];
255
+ const _hoisted_7$l = {
256
+ key: 3,
257
+ class: "loader-text"
258
+ };
259
+ const _sfc_main$M = /* @__PURE__ */ defineComponent({
260
+ __name: "UiLoader",
261
+ props: {
262
+ size: { default: 80 },
263
+ color: { default: "primary" },
264
+ variant: { default: "spinner" },
265
+ text: {},
266
+ centered: { type: Boolean, default: true },
267
+ weight: { default: 30 },
268
+ fullWidth: { type: Boolean, default: false }
269
+ },
270
+ setup(__props) {
271
+ const path = logo.replace(/<svg[^>]*>/, "").replace(/<\/svg>/, "").trim();
272
+ const d = path.match(/d="([^"]*)"/)?.[1] || "";
273
+ return (_ctx, _cache) => {
274
+ return openBlock(), createElementBlock("div", {
275
+ class: normalizeClass(["loader-container", [
276
+ { "loader-centered": _ctx.centered },
277
+ `loader-color-${_ctx.color}`
278
+ ]])
279
+ }, [
280
+ _ctx.variant === "spinner" ? (openBlock(), createElementBlock("div", _hoisted_1$H, [
281
+ (openBlock(), createElementBlock("svg", {
282
+ width: _ctx.size,
283
+ height: _ctx.size,
284
+ viewBox: "0 0 500 500"
285
+ }, [
286
+ createElementVNode("defs", null, [
287
+ createElementVNode("path", {
288
+ id: "logo-path",
289
+ d: unref(d),
290
+ transform: "translate(81, 13) scale(1.0)"
291
+ }, null, 8, _hoisted_3$v)
292
+ ]),
293
+ createElementVNode("use", {
294
+ href: "#logo-path",
295
+ fill: "none",
296
+ stroke: "var(--loader-semi-color)",
297
+ "stroke-width": _ctx.weight,
298
+ "stroke-linecap": "round",
299
+ "stroke-linejoin": "round"
300
+ }, null, 8, _hoisted_4$s),
301
+ createElementVNode("use", {
302
+ href: "#logo-path",
303
+ fill: "none",
304
+ stroke: "var(--loader-solid-color)",
305
+ "stroke-width": _ctx.weight,
306
+ "stroke-linecap": "round",
307
+ "stroke-linejoin": "round",
308
+ class: "loader-animated-path"
309
+ }, null, 8, _hoisted_5$p)
310
+ ], 8, _hoisted_2$y))
311
+ ])) : _ctx.variant === "circle" ? (openBlock(), createElementBlock("div", {
312
+ key: 1,
313
+ class: "loader-circle",
314
+ style: normalizeStyle({ width: `${_ctx.size}px`, height: `${_ctx.size}px` })
315
+ }, [
316
+ (openBlock(), createElementBlock("svg", {
317
+ width: _ctx.size,
318
+ height: _ctx.size,
319
+ viewBox: "0 0 50 50"
320
+ }, [..._cache[0] || (_cache[0] = [
321
+ createElementVNode("circle", {
322
+ cx: "25",
323
+ cy: "25",
324
+ r: "20",
325
+ fill: "none",
326
+ stroke: "var(--loader-solid-color)",
327
+ "stroke-width": "4",
328
+ "stroke-linecap": "round",
329
+ class: "loader-circle-path"
330
+ }, null, -1)
331
+ ])], 8, _hoisted_6$n))
332
+ ], 4)) : _ctx.variant === "bar" ? (openBlock(), createElementBlock("div", {
333
+ key: 2,
334
+ class: "loader-bar",
335
+ style: normalizeStyle({
336
+ width: _ctx.fullWidth ? "100%" : `${_ctx.size * 1.5}px`,
337
+ height: `${Math.max(_ctx.size * 0.1, 4)}px`
338
+ })
339
+ }, [..._cache[1] || (_cache[1] = [
340
+ createElementVNode("div", { class: "loader-bar-track" }, [
341
+ createElementVNode("div", { class: "loader-bar-fill" })
342
+ ], -1)
343
+ ])], 4)) : createCommentVNode("", true),
344
+ _ctx.text ? (openBlock(), createElementBlock("p", _hoisted_7$l, toDisplayString(_ctx.text), 1)) : createCommentVNode("", true)
345
+ ], 2);
346
+ };
347
+ }
348
+ });
349
+ const StrandsUiLoader = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["__scopeId", "data-v-ba3ffb77"]]);
245
350
  /**
246
351
  * @license lucide-vue-next v0.542.0 - ISC
247
352
  *
@@ -329,6 +434,16 @@ const createLucideIcon = (iconName, iconNode) => (props, { slots, attrs }) => h(
329
434
  },
330
435
  slots
331
436
  );
437
+ /**
438
+ * @license lucide-vue-next v0.542.0 - ISC
439
+ *
440
+ * This source code is licensed under the ISC license.
441
+ * See the LICENSE file in the root directory of this source tree.
442
+ */
443
+ const ArrowRight = createLucideIcon("arrow-right", [
444
+ ["path", { d: "M5 12h14", key: "1ays0h" }],
445
+ ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
446
+ ]);
332
447
  /**
333
448
  * @license lucide-vue-next v0.542.0 - ISC
334
449
  *
@@ -345,6 +460,31 @@ const Bell = createLucideIcon("bell", [
345
460
  }
346
461
  ]
347
462
  ]);
463
+ /**
464
+ * @license lucide-vue-next v0.542.0 - ISC
465
+ *
466
+ * This source code is licensed under the ISC license.
467
+ * See the LICENSE file in the root directory of this source tree.
468
+ */
469
+ const BookOpen = createLucideIcon("book-open", [
470
+ ["path", { d: "M12 7v14", key: "1akyts" }],
471
+ [
472
+ "path",
473
+ {
474
+ d: "M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",
475
+ key: "ruj8y"
476
+ }
477
+ ]
478
+ ]);
479
+ /**
480
+ * @license lucide-vue-next v0.542.0 - ISC
481
+ *
482
+ * This source code is licensed under the ISC license.
483
+ * See the LICENSE file in the root directory of this source tree.
484
+ */
485
+ const Bookmark = createLucideIcon("bookmark", [
486
+ ["path", { d: "m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z", key: "1fy3hk" }]
487
+ ]);
348
488
  /**
349
489
  * @license lucide-vue-next v0.542.0 - ISC
350
490
  *
@@ -389,6 +529,16 @@ const ChevronsUpDown = createLucideIcon("chevrons-up-down", [
389
529
  ["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
390
530
  ["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
391
531
  ]);
532
+ /**
533
+ * @license lucide-vue-next v0.542.0 - ISC
534
+ *
535
+ * This source code is licensed under the ISC license.
536
+ * See the LICENSE file in the root directory of this source tree.
537
+ */
538
+ const Contrast = createLucideIcon("contrast", [
539
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
540
+ ["path", { d: "M12 18a6 6 0 0 0 0-12v12z", key: "j4l70d" }]
541
+ ]);
392
542
  /**
393
543
  * @license lucide-vue-next v0.542.0 - ISC
394
544
  *
@@ -409,6 +559,17 @@ const DollarSign = createLucideIcon("dollar-sign", [
409
559
  ["line", { x1: "12", x2: "12", y1: "2", y2: "22", key: "7eqyqh" }],
410
560
  ["path", { d: "M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6", key: "1b0p4s" }]
411
561
  ]);
562
+ /**
563
+ * @license lucide-vue-next v0.542.0 - ISC
564
+ *
565
+ * This source code is licensed under the ISC license.
566
+ * See the LICENSE file in the root directory of this source tree.
567
+ */
568
+ const Download = createLucideIcon("download", [
569
+ ["path", { d: "M12 15V3", key: "m9g1x1" }],
570
+ ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
571
+ ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
572
+ ]);
412
573
  /**
413
574
  * @license lucide-vue-next v0.542.0 - ISC
414
575
  *
@@ -435,6 +596,22 @@ const Funnel = createLucideIcon("funnel", [
435
596
  }
436
597
  ]
437
598
  ]);
599
+ /**
600
+ * @license lucide-vue-next v0.542.0 - ISC
601
+ *
602
+ * This source code is licensed under the ISC license.
603
+ * See the LICENSE file in the root directory of this source tree.
604
+ */
605
+ const Github = createLucideIcon("github", [
606
+ [
607
+ "path",
608
+ {
609
+ d: "M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",
610
+ key: "tonef"
611
+ }
612
+ ],
613
+ ["path", { d: "M9 18c-4.51 2-5-2-7-2", key: "9comsn" }]
614
+ ]);
438
615
  /**
439
616
  * @license lucide-vue-next v0.542.0 - ISC
440
617
  *
@@ -449,6 +626,21 @@ const GripVertical = createLucideIcon("grip-vertical", [
449
626
  ["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }],
450
627
  ["circle", { cx: "15", cy: "19", r: "1", key: "f4zoj3" }]
451
628
  ]);
629
+ /**
630
+ * @license lucide-vue-next v0.542.0 - ISC
631
+ *
632
+ * This source code is licensed under the ISC license.
633
+ * See the LICENSE file in the root directory of this source tree.
634
+ */
635
+ const Heart = createLucideIcon("heart", [
636
+ [
637
+ "path",
638
+ {
639
+ d: "M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",
640
+ key: "mvr1a0"
641
+ }
642
+ ]
643
+ ]);
452
644
  /**
453
645
  * @license lucide-vue-next v0.542.0 - ISC
454
646
  *
@@ -561,6 +753,75 @@ const Search = createLucideIcon("search", [
561
753
  ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
562
754
  ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
563
755
  ]);
756
+ /**
757
+ * @license lucide-vue-next v0.542.0 - ISC
758
+ *
759
+ * This source code is licensed under the ISC license.
760
+ * See the LICENSE file in the root directory of this source tree.
761
+ */
762
+ const Share = createLucideIcon("share", [
763
+ ["path", { d: "M12 2v13", key: "1km8f5" }],
764
+ ["path", { d: "m16 6-4-4-4 4", key: "13yo43" }],
765
+ ["path", { d: "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8", key: "1b2hhj" }]
766
+ ]);
767
+ /**
768
+ * @license lucide-vue-next v0.542.0 - ISC
769
+ *
770
+ * This source code is licensed under the ISC license.
771
+ * See the LICENSE file in the root directory of this source tree.
772
+ */
773
+ const Shield = createLucideIcon("shield", [
774
+ [
775
+ "path",
776
+ {
777
+ d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",
778
+ key: "oel41y"
779
+ }
780
+ ]
781
+ ]);
782
+ /**
783
+ * @license lucide-vue-next v0.542.0 - ISC
784
+ *
785
+ * This source code is licensed under the ISC license.
786
+ * See the LICENSE file in the root directory of this source tree.
787
+ */
788
+ const Smile = createLucideIcon("smile", [
789
+ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
790
+ ["path", { d: "M8 14s1.5 2 4 2 4-2 4-2", key: "1y1vjs" }],
791
+ ["line", { x1: "9", x2: "9.01", y1: "9", y2: "9", key: "yxxnd0" }],
792
+ ["line", { x1: "15", x2: "15.01", y1: "9", y2: "9", key: "1p4y9e" }]
793
+ ]);
794
+ /**
795
+ * @license lucide-vue-next v0.542.0 - ISC
796
+ *
797
+ * This source code is licensed under the ISC license.
798
+ * See the LICENSE file in the root directory of this source tree.
799
+ */
800
+ const SquarePen = createLucideIcon("square-pen", [
801
+ ["path", { d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7", key: "1m0v6g" }],
802
+ [
803
+ "path",
804
+ {
805
+ d: "M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",
806
+ key: "ohrbg2"
807
+ }
808
+ ]
809
+ ]);
810
+ /**
811
+ * @license lucide-vue-next v0.542.0 - ISC
812
+ *
813
+ * This source code is licensed under the ISC license.
814
+ * See the LICENSE file in the root directory of this source tree.
815
+ */
816
+ const Star = createLucideIcon("star", [
817
+ [
818
+ "path",
819
+ {
820
+ d: "M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",
821
+ key: "r04s7s"
822
+ }
823
+ ]
824
+ ]);
564
825
  /**
565
826
  * @license lucide-vue-next v0.542.0 - ISC
566
827
  *
@@ -613,98 +874,436 @@ const Users = createLucideIcon("users", [
613
874
  ["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87", key: "kshegd" }],
614
875
  ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
615
876
  ]);
616
- const _hoisted_1$E = {
877
+ /**
878
+ * @license lucide-vue-next v0.542.0 - ISC
879
+ *
880
+ * This source code is licensed under the ISC license.
881
+ * See the LICENSE file in the root directory of this source tree.
882
+ */
883
+ const X = createLucideIcon("x", [
884
+ ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
885
+ ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
886
+ ]);
887
+ const _hoisted_1$G = {
617
888
  key: 0,
618
889
  class: "button-loading-content"
619
890
  };
620
891
  const _hoisted_2$x = { key: 0 };
621
- const _hoisted_3$v = {
622
- key: 1,
623
- class: "button-content"
624
- };
625
- const _hoisted_4$s = {
892
+ const _hoisted_3$u = {
626
893
  key: 0,
627
894
  class: "leading-icon"
628
895
  };
629
- const _hoisted_5$p = {
896
+ const _hoisted_4$r = {
630
897
  key: 1,
898
+ class: "leading-icon"
899
+ };
900
+ const _hoisted_5$o = {
901
+ key: 2,
631
902
  class: "trailing-icon"
632
903
  };
633
- const _sfc_main$I = /* @__PURE__ */ defineComponent({
634
- __name: "UiButton",
904
+ const _hoisted_6$m = {
905
+ key: 3,
906
+ class: "trailing-icon"
907
+ };
908
+ const _sfc_main$L = /* @__PURE__ */ defineComponent({
909
+ __name: "UiButton.Content",
635
910
  props: {
636
- variant: { default: "primary" },
637
- size: { default: "md" },
638
- type: { default: "button" },
639
- disabled: { type: Boolean, default: false },
640
911
  loading: { type: Boolean, default: false },
641
912
  loadingText: {},
642
- fullWidth: { type: Boolean, default: false },
643
- color: { default: "primary" },
644
- fontWeight: { default: 600 },
645
913
  icon: { type: Boolean, default: false },
646
914
  iconName: {},
647
915
  leadingIcon: {},
648
916
  trailingIcon: {},
649
- squircle: { type: Boolean, default: false },
650
- to: {}
917
+ size: {}
651
918
  },
652
- emits: ["click"],
653
919
  setup(__props) {
654
920
  const LucideIcons = {
655
- Plus,
656
- Trash2,
657
- ExternalLink,
921
+ ArrowRight,
922
+ Bell,
923
+ BookOpen,
924
+ Bookmark,
658
925
  Check,
659
926
  ChevronRight,
927
+ ChevronUp,
660
928
  ChevronDown,
661
- Sun,
662
- Moon,
663
- Monitor,
929
+ ChevronsUpDown,
930
+ Contrast,
931
+ DollarSign,
932
+ Download,
933
+ Edit: SquarePen,
934
+ ExternalLink,
935
+ Github,
936
+ Heart,
664
937
  Home: House,
938
+ Mail,
939
+ MapPin,
940
+ Monitor,
941
+ Moon,
942
+ Phone,
943
+ Plus,
944
+ Search,
945
+ Share,
946
+ Shield,
947
+ Smile,
948
+ Star,
949
+ Sun,
950
+ Trash2,
665
951
  User,
666
- Bell
952
+ X
667
953
  };
668
954
  const slots = useSlots();
955
+ const hasLeadingIconSlot = computed(() => {
956
+ return !!slots["leading-icon"];
957
+ });
958
+ const hasTrailingIconSlot = computed(() => {
959
+ return !!slots["trailing-icon"];
960
+ });
961
+ const props = __props;
962
+ const getLucideIcon = (iconName) => {
963
+ if (!iconName || iconName.trim() === "") return null;
964
+ const pascalCase = iconName.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join("");
965
+ const IconComponent2 = LucideIcons[pascalCase];
966
+ return IconComponent2 || null;
967
+ };
968
+ const LeadingIconComponent = computed(() => {
969
+ if (!props.leadingIcon || props.leadingIcon.trim() === "") {
970
+ return null;
971
+ }
972
+ return getLucideIcon(props.leadingIcon);
973
+ });
974
+ const TrailingIconComponent = computed(() => {
975
+ if (!props.trailingIcon || props.trailingIcon.trim() === "") {
976
+ return null;
977
+ }
978
+ return getLucideIcon(props.trailingIcon);
979
+ });
980
+ const IconComponent = computed(() => {
981
+ return props.iconName && props.iconName.trim() !== "" ? getLucideIcon(props.iconName) : null;
982
+ });
983
+ const iconSizeClass = computed(() => {
984
+ switch (props.size) {
985
+ case "xs":
986
+ return "button-icon-xs";
987
+ case "sm":
988
+ return "button-icon-sm";
989
+ case "md":
990
+ return "button-icon-md";
991
+ case "lg":
992
+ return "button-icon-lg";
993
+ case "xl":
994
+ return "button-icon-xl";
995
+ default:
996
+ return "button-icon-md";
997
+ }
998
+ });
999
+ const loaderSize = computed(() => {
1000
+ switch (props.size) {
1001
+ case "xs":
1002
+ return 16;
1003
+ // 1rem - 1.33x text
1004
+ case "sm":
1005
+ return 18;
1006
+ // 1.125rem - 1.28x text
1007
+ case "md":
1008
+ return 20;
1009
+ // 1.25rem - 1.4x text
1010
+ case "lg":
1011
+ return 24;
1012
+ // 1.5rem - 1.5x text
1013
+ case "xl":
1014
+ return 28;
1015
+ // 1.75rem - 1.55x text
1016
+ default:
1017
+ return 20;
1018
+ }
1019
+ });
1020
+ const sizeClass = computed(() => {
1021
+ return props.size ? `button-content-${props.size}` : "button-content-md";
1022
+ });
1023
+ return (_ctx, _cache) => {
1024
+ return _ctx.loading ? (openBlock(), createElementBlock("span", _hoisted_1$G, [
1025
+ createVNode(StrandsUiLoader, {
1026
+ variant: "circle",
1027
+ size: loaderSize.value,
1028
+ centered: false,
1029
+ color: "white"
1030
+ }, null, 8, ["size"]),
1031
+ !_ctx.icon ? (openBlock(), createElementBlock("span", _hoisted_2$x, toDisplayString(_ctx.loadingText || "Loading..."), 1)) : createCommentVNode("", true)
1032
+ ])) : (openBlock(), createElementBlock("span", {
1033
+ key: 1,
1034
+ class: normalizeClass(["button-content", sizeClass.value])
1035
+ }, [
1036
+ _ctx.icon ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
1037
+ IconComponent.value ? (openBlock(), createBlock(resolveDynamicComponent(IconComponent.value), {
1038
+ key: 0,
1039
+ class: normalizeClass(iconSizeClass.value)
1040
+ }, null, 8, ["class"])) : createCommentVNode("", true)
1041
+ ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
1042
+ LeadingIconComponent.value ? (openBlock(), createElementBlock("span", _hoisted_3$u, [
1043
+ (openBlock(), createBlock(resolveDynamicComponent(LeadingIconComponent.value), {
1044
+ class: normalizeClass(iconSizeClass.value)
1045
+ }, null, 8, ["class"]))
1046
+ ])) : createCommentVNode("", true),
1047
+ hasLeadingIconSlot.value ? (openBlock(), createElementBlock("span", _hoisted_4$r, [
1048
+ renderSlot(_ctx.$slots, "leading-icon", {}, void 0, true)
1049
+ ])) : createCommentVNode("", true),
1050
+ renderSlot(_ctx.$slots, "icon", {}, void 0, true),
1051
+ renderSlot(_ctx.$slots, "default", {}, void 0, true),
1052
+ TrailingIconComponent.value ? (openBlock(), createElementBlock("span", _hoisted_5$o, [
1053
+ (openBlock(), createBlock(resolveDynamicComponent(TrailingIconComponent.value), {
1054
+ class: normalizeClass(iconSizeClass.value)
1055
+ }, null, 8, ["class"]))
1056
+ ])) : createCommentVNode("", true),
1057
+ hasTrailingIconSlot.value ? (openBlock(), createElementBlock("span", _hoisted_6$m, [
1058
+ renderSlot(_ctx.$slots, "trailing-icon", {}, void 0, true)
1059
+ ])) : createCommentVNode("", true)
1060
+ ], 64))
1061
+ ], 2));
1062
+ };
1063
+ }
1064
+ });
1065
+ const UiButtonContent = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["__scopeId", "data-v-474060cc"]]);
1066
+ const _hoisted_1$F = ["href", "target", "rel"];
1067
+ const _sfc_main$K = /* @__PURE__ */ defineComponent({
1068
+ __name: "UiButton.Anchor",
1069
+ props: {
1070
+ to: {},
1071
+ href: {},
1072
+ external: { type: Boolean, default: false },
1073
+ disabled: { type: Boolean, default: false },
1074
+ loading: { type: Boolean, default: false },
1075
+ loadingText: {},
1076
+ icon: { type: Boolean, default: false },
1077
+ iconName: {},
1078
+ leadingIcon: {},
1079
+ trailingIcon: {},
1080
+ buttonClasses: {},
1081
+ buttonStyles: {}
1082
+ },
1083
+ emits: ["click"],
1084
+ setup(__props, { emit: __emit }) {
1085
+ const props = __props;
1086
+ const emit = __emit;
1087
+ const computedHref = computed(() => {
1088
+ if (props.href) {
1089
+ return props.href;
1090
+ } else if (props.to) {
1091
+ if (typeof props.to === "string") {
1092
+ return props.to;
1093
+ } else if (typeof props.to === "object" && props.to) {
1094
+ return "#route-object-not-supported";
1095
+ }
1096
+ }
1097
+ return "#";
1098
+ });
1099
+ const handleLinkClick = (event) => {
1100
+ if (props.disabled || props.loading) {
1101
+ event.preventDefault();
1102
+ return;
1103
+ }
1104
+ emit("click", event);
1105
+ };
1106
+ return (_ctx, _cache) => {
1107
+ return openBlock(), createElementBlock("a", {
1108
+ href: computedHref.value,
1109
+ target: _ctx.external ? "_blank" : void 0,
1110
+ rel: _ctx.external ? "noopener noreferrer" : void 0,
1111
+ class: normalizeClass(_ctx.buttonClasses),
1112
+ style: normalizeStyle(_ctx.buttonStyles),
1113
+ onClick: handleLinkClick
1114
+ }, [
1115
+ createVNode(UiButtonContent, {
1116
+ loading: _ctx.loading,
1117
+ "loading-text": _ctx.loadingText,
1118
+ icon: _ctx.icon,
1119
+ "icon-name": _ctx.iconName,
1120
+ "leading-icon": _ctx.leadingIcon,
1121
+ "trailing-icon": _ctx.trailingIcon
1122
+ }, {
1123
+ "leading-icon": withCtx(() => [
1124
+ renderSlot(_ctx.$slots, "leading-icon")
1125
+ ]),
1126
+ icon: withCtx(() => [
1127
+ renderSlot(_ctx.$slots, "icon")
1128
+ ]),
1129
+ default: withCtx(() => [
1130
+ renderSlot(_ctx.$slots, "default")
1131
+ ]),
1132
+ "trailing-icon": withCtx(() => [
1133
+ renderSlot(_ctx.$slots, "trailing-icon")
1134
+ ]),
1135
+ _: 3
1136
+ }, 8, ["loading", "loading-text", "icon", "icon-name", "leading-icon", "trailing-icon"])
1137
+ ], 14, _hoisted_1$F);
1138
+ };
1139
+ }
1140
+ });
1141
+ const _sfc_main$J = /* @__PURE__ */ defineComponent({
1142
+ __name: "UiButton.Nuxt",
1143
+ props: {
1144
+ to: {},
1145
+ disabled: { type: Boolean, default: false },
1146
+ loading: { type: Boolean, default: false },
1147
+ loadingText: {},
1148
+ icon: { type: Boolean, default: false },
1149
+ iconName: {},
1150
+ leadingIcon: {},
1151
+ trailingIcon: {},
1152
+ buttonClasses: {},
1153
+ buttonStyles: {}
1154
+ },
1155
+ emits: ["click"],
1156
+ setup(__props, { emit: __emit }) {
1157
+ const props = __props;
1158
+ const emit = __emit;
1159
+ const handleLinkClick = (event) => {
1160
+ if (props.disabled || props.loading) {
1161
+ event.preventDefault();
1162
+ return;
1163
+ }
1164
+ emit("click", event);
1165
+ };
1166
+ return (_ctx, _cache) => {
1167
+ const _component_nuxt_link = resolveComponent("nuxt-link");
1168
+ return openBlock(), createBlock(_component_nuxt_link, {
1169
+ to: _ctx.to,
1170
+ class: normalizeClass(_ctx.buttonClasses),
1171
+ style: normalizeStyle(_ctx.buttonStyles),
1172
+ onClick: handleLinkClick
1173
+ }, {
1174
+ default: withCtx(() => [
1175
+ createVNode(UiButtonContent, {
1176
+ loading: _ctx.loading,
1177
+ "loading-text": _ctx.loadingText,
1178
+ icon: _ctx.icon,
1179
+ "icon-name": _ctx.iconName,
1180
+ "leading-icon": _ctx.leadingIcon,
1181
+ "trailing-icon": _ctx.trailingIcon
1182
+ }, {
1183
+ "leading-icon": withCtx(() => [
1184
+ renderSlot(_ctx.$slots, "leading-icon")
1185
+ ]),
1186
+ icon: withCtx(() => [
1187
+ renderSlot(_ctx.$slots, "icon")
1188
+ ]),
1189
+ default: withCtx(() => [
1190
+ renderSlot(_ctx.$slots, "default")
1191
+ ]),
1192
+ "trailing-icon": withCtx(() => [
1193
+ renderSlot(_ctx.$slots, "trailing-icon")
1194
+ ]),
1195
+ _: 3
1196
+ }, 8, ["loading", "loading-text", "icon", "icon-name", "leading-icon", "trailing-icon"])
1197
+ ]),
1198
+ _: 3
1199
+ }, 8, ["to", "class", "style"]);
1200
+ };
1201
+ }
1202
+ });
1203
+ const _sfc_main$I = /* @__PURE__ */ defineComponent({
1204
+ __name: "UiButton.Vue",
1205
+ props: {
1206
+ to: {},
1207
+ disabled: { type: Boolean, default: false },
1208
+ loading: { type: Boolean, default: false },
1209
+ loadingText: {},
1210
+ icon: { type: Boolean, default: false },
1211
+ iconName: {},
1212
+ leadingIcon: {},
1213
+ trailingIcon: {},
1214
+ buttonClasses: {},
1215
+ buttonStyles: {}
1216
+ },
1217
+ emits: ["click"],
1218
+ setup(__props, { emit: __emit }) {
1219
+ const props = __props;
1220
+ const emit = __emit;
1221
+ const handleLinkClick = (event) => {
1222
+ if (props.disabled || props.loading) {
1223
+ event.preventDefault();
1224
+ return;
1225
+ }
1226
+ emit("click", event);
1227
+ };
1228
+ return (_ctx, _cache) => {
1229
+ const _component_router_link = resolveComponent("router-link");
1230
+ return openBlock(), createBlock(_component_router_link, {
1231
+ to: _ctx.to,
1232
+ class: normalizeClass(_ctx.buttonClasses),
1233
+ style: normalizeStyle(_ctx.buttonStyles),
1234
+ onClick: handleLinkClick
1235
+ }, {
1236
+ default: withCtx(() => [
1237
+ createVNode(UiButtonContent, {
1238
+ loading: _ctx.loading,
1239
+ "loading-text": _ctx.loadingText,
1240
+ icon: _ctx.icon,
1241
+ "icon-name": _ctx.iconName,
1242
+ "leading-icon": _ctx.leadingIcon,
1243
+ "trailing-icon": _ctx.trailingIcon
1244
+ }, {
1245
+ "leading-icon": withCtx(() => [
1246
+ renderSlot(_ctx.$slots, "leading-icon")
1247
+ ]),
1248
+ icon: withCtx(() => [
1249
+ renderSlot(_ctx.$slots, "icon")
1250
+ ]),
1251
+ default: withCtx(() => [
1252
+ renderSlot(_ctx.$slots, "default")
1253
+ ]),
1254
+ "trailing-icon": withCtx(() => [
1255
+ renderSlot(_ctx.$slots, "trailing-icon")
1256
+ ]),
1257
+ _: 3
1258
+ }, 8, ["loading", "loading-text", "icon", "icon-name", "leading-icon", "trailing-icon"])
1259
+ ]),
1260
+ _: 3
1261
+ }, 8, ["to", "class", "style"]);
1262
+ };
1263
+ }
1264
+ });
1265
+ const _hoisted_1$E = ["type", "disabled"];
1266
+ const _sfc_main$H = /* @__PURE__ */ defineComponent({
1267
+ __name: "UiButton",
1268
+ props: {
1269
+ variant: { default: "primary" },
1270
+ size: { default: "md" },
1271
+ type: { default: "button" },
1272
+ disabled: { type: Boolean, default: false },
1273
+ loading: { type: Boolean, default: false },
1274
+ loadingText: {},
1275
+ fullWidth: { type: Boolean, default: false },
1276
+ color: { default: "primary" },
1277
+ fontWeight: { default: 600 },
1278
+ icon: { type: Boolean, default: false },
1279
+ iconName: {},
1280
+ leadingIcon: {},
1281
+ trailingIcon: {},
1282
+ squircle: { type: Boolean, default: false },
1283
+ to: {},
1284
+ href: {},
1285
+ external: { type: Boolean, default: false }
1286
+ },
1287
+ emits: ["click"],
1288
+ setup(__props, { emit: __emit }) {
669
1289
  const props = __props;
670
- const getLucideIcon = (iconName) => {
671
- if (!iconName) return null;
672
- const pascalCase = iconName.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join("");
673
- const IconComponent2 = LucideIcons[pascalCase];
674
- return IconComponent2 || null;
675
- };
676
- const LeadingIconComponent = computed(() => props.leadingIcon ? getLucideIcon(props.leadingIcon) : null);
677
- const TrailingIconComponent = computed(() => props.trailingIcon ? getLucideIcon(props.trailingIcon) : null);
678
- const IconComponent = computed(() => props.iconName ? getLucideIcon(props.iconName) : null);
679
- const componentTag = computed(() => {
680
- if (!props.to) return "button";
1290
+ const isNuxtAvailable = computed(() => {
681
1291
  if (typeof process !== "undefined" && process.client !== void 0) {
682
- return "nuxt-link";
1292
+ return true;
683
1293
  }
684
1294
  if (typeof window !== "undefined" && (window.__NUXT__ || window.$nuxt)) {
685
- return "nuxt-link";
1295
+ return true;
686
1296
  }
1297
+ return false;
1298
+ });
1299
+ const isVueRouterAvailable = computed(() => {
687
1300
  try {
688
1301
  if (typeof window !== "undefined" && window.Vue?.Router) {
689
- return "router-link";
1302
+ return true;
690
1303
  }
691
1304
  } catch (e) {
692
1305
  }
693
- return "a";
694
- });
695
- const linkProps = computed(() => {
696
- if (!props.to) return {};
697
- const tag = componentTag.value;
698
- if (tag === "nuxt-link" || tag === "router-link") {
699
- return { to: props.to };
700
- }
701
- if (tag === "a") {
702
- if (typeof props.to === "object") {
703
- return { href: "#route-object-not-supported" };
704
- }
705
- return { href: props.to };
706
- }
707
- return {};
1306
+ return false;
708
1307
  });
709
1308
  const buttonClasses = computed(() => {
710
1309
  const classes = [
@@ -717,78 +1316,186 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
717
1316
  props.fullWidth ? "ui-button-full-width" : "",
718
1317
  props.icon ? "ui-button-icon" : "",
719
1318
  props.squircle ? "ui-button-squircle" : ""
720
- ].filter(Boolean).join(" ");
1319
+ ].filter(Boolean);
721
1320
  return classes;
722
1321
  });
1322
+ const buttonClassString = computed(() => buttonClasses.value.join(" "));
723
1323
  const buttonStyles = computed(() => {
724
1324
  return {
725
1325
  fontWeight: props.fontWeight
726
1326
  };
727
1327
  });
728
1328
  return (_ctx, _cache) => {
729
- return openBlock(), createBlock(resolveDynamicComponent(componentTag.value), mergeProps(linkProps.value, {
730
- type: componentTag.value === "button" ? _ctx.type : void 0,
1329
+ return !_ctx.to ? (openBlock(), createElementBlock("button", {
1330
+ key: 0,
1331
+ type: _ctx.type,
731
1332
  disabled: _ctx.disabled || _ctx.loading,
732
- class: buttonClasses.value,
733
- style: buttonStyles.value,
1333
+ class: normalizeClass(buttonClassString.value),
1334
+ style: normalizeStyle(buttonStyles.value),
734
1335
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click", $event))
735
- }), {
1336
+ }, [
1337
+ createVNode(UiButtonContent, {
1338
+ loading: _ctx.loading,
1339
+ "loading-text": _ctx.loadingText,
1340
+ icon: _ctx.icon,
1341
+ "icon-name": _ctx.iconName,
1342
+ "leading-icon": _ctx.leadingIcon,
1343
+ "trailing-icon": _ctx.trailingIcon,
1344
+ size: _ctx.size
1345
+ }, createSlots({
1346
+ icon: withCtx(() => [
1347
+ renderSlot(_ctx.$slots, "icon", {}, void 0, true)
1348
+ ]),
1349
+ default: withCtx(() => [
1350
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
1351
+ ]),
1352
+ _: 2
1353
+ }, [
1354
+ _ctx.$slots["leading-icon"] ? {
1355
+ name: "leading-icon",
1356
+ fn: withCtx(() => [
1357
+ renderSlot(_ctx.$slots, "leading-icon", {}, void 0, true)
1358
+ ]),
1359
+ key: "0"
1360
+ } : void 0,
1361
+ _ctx.$slots["trailing-icon"] ? {
1362
+ name: "trailing-icon",
1363
+ fn: withCtx(() => [
1364
+ renderSlot(_ctx.$slots, "trailing-icon", {}, void 0, true)
1365
+ ]),
1366
+ key: "1"
1367
+ } : void 0
1368
+ ]), 1032, ["loading", "loading-text", "icon", "icon-name", "leading-icon", "trailing-icon", "size"])
1369
+ ], 14, _hoisted_1$E)) : isNuxtAvailable.value && _ctx.to ? (openBlock(), createBlock(_sfc_main$J, {
1370
+ key: 1,
1371
+ to: _ctx.to,
1372
+ disabled: _ctx.disabled,
1373
+ loading: _ctx.loading,
1374
+ "loading-text": _ctx.loadingText,
1375
+ icon: _ctx.icon,
1376
+ "icon-name": _ctx.iconName,
1377
+ "leading-icon": _ctx.leadingIcon,
1378
+ "trailing-icon": _ctx.trailingIcon,
1379
+ "button-classes": buttonClasses.value,
1380
+ "button-styles": buttonStyles.value,
1381
+ onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("click", $event))
1382
+ }, createSlots({
1383
+ icon: withCtx(() => [
1384
+ renderSlot(_ctx.$slots, "icon", {}, void 0, true)
1385
+ ]),
736
1386
  default: withCtx(() => [
737
- _ctx.loading ? (openBlock(), createElementBlock("span", _hoisted_1$E, [
738
- _cache[1] || (_cache[1] = createElementVNode("svg", {
739
- class: "button-loading-icon",
740
- fill: "none",
741
- viewBox: "0 0 24 24"
742
- }, [
743
- createElementVNode("circle", {
744
- class: "button-loading-track",
745
- cx: "12",
746
- cy: "12",
747
- r: "10",
748
- stroke: "currentColor",
749
- "stroke-width": "4"
750
- }),
751
- createElementVNode("path", {
752
- class: "button-loading-spinner",
753
- fill: "currentColor",
754
- d: "m4 12a8 8 0 0 1 8-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 0 1 4 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
755
- })
756
- ], -1)),
757
- !_ctx.icon ? (openBlock(), createElementBlock("span", _hoisted_2$x, toDisplayString(_ctx.loadingText || "Loading..."), 1)) : createCommentVNode("", true)
758
- ])) : (openBlock(), createElementBlock("span", _hoisted_3$v, [
759
- _ctx.icon ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
760
- IconComponent.value && !unref(slots)["default"] ? (openBlock(), createBlock(resolveDynamicComponent(IconComponent.value), { key: 0 })) : renderSlot(_ctx.$slots, "default", { key: 1 }, void 0, true)
761
- ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
762
- IconComponent.value || LeadingIconComponent.value || unref(slots)["leading-icon"] ? (openBlock(), createElementBlock("span", _hoisted_4$s, [
763
- IconComponent.value && !LeadingIconComponent.value && !unref(slots)["leading-icon"] ? (openBlock(), createBlock(resolveDynamicComponent(IconComponent.value), { key: 0 })) : createCommentVNode("", true),
764
- LeadingIconComponent.value && !unref(slots)["leading-icon"] ? (openBlock(), createBlock(resolveDynamicComponent(LeadingIconComponent.value), { key: 1 })) : createCommentVNode("", true),
765
- unref(slots)["leading-icon"] ? renderSlot(_ctx.$slots, "leading-icon", { key: 2 }, void 0, true) : createCommentVNode("", true)
766
- ])) : createCommentVNode("", true),
767
- renderSlot(_ctx.$slots, "icon", {}, void 0, true),
768
- renderSlot(_ctx.$slots, "default", {}, void 0, true),
769
- TrailingIconComponent.value || unref(slots)["trailing-icon"] ? (openBlock(), createElementBlock("span", _hoisted_5$p, [
770
- TrailingIconComponent.value && !unref(slots)["trailing-icon"] ? (openBlock(), createBlock(resolveDynamicComponent(TrailingIconComponent.value), { key: 0 })) : createCommentVNode("", true),
771
- unref(slots)["trailing-icon"] ? renderSlot(_ctx.$slots, "trailing-icon", { key: 1 }, void 0, true) : createCommentVNode("", true)
772
- ])) : createCommentVNode("", true)
773
- ], 64))
774
- ]))
1387
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
775
1388
  ]),
776
- _: 3
777
- }, 16, ["type", "disabled", "class", "style"]);
1389
+ _: 2
1390
+ }, [
1391
+ _ctx.$slots["leading-icon"] ? {
1392
+ name: "leading-icon",
1393
+ fn: withCtx(() => [
1394
+ renderSlot(_ctx.$slots, "leading-icon", {}, void 0, true)
1395
+ ]),
1396
+ key: "0"
1397
+ } : void 0,
1398
+ _ctx.$slots["trailing-icon"] ? {
1399
+ name: "trailing-icon",
1400
+ fn: withCtx(() => [
1401
+ renderSlot(_ctx.$slots, "trailing-icon", {}, void 0, true)
1402
+ ]),
1403
+ key: "1"
1404
+ } : void 0
1405
+ ]), 1032, ["to", "disabled", "loading", "loading-text", "icon", "icon-name", "leading-icon", "trailing-icon", "button-classes", "button-styles"])) : isVueRouterAvailable.value && _ctx.to ? (openBlock(), createBlock(_sfc_main$I, {
1406
+ key: 2,
1407
+ to: _ctx.to,
1408
+ disabled: _ctx.disabled,
1409
+ loading: _ctx.loading,
1410
+ "loading-text": _ctx.loadingText,
1411
+ icon: _ctx.icon,
1412
+ "icon-name": _ctx.iconName,
1413
+ "leading-icon": _ctx.leadingIcon,
1414
+ "trailing-icon": _ctx.trailingIcon,
1415
+ "button-classes": buttonClasses.value,
1416
+ "button-styles": buttonStyles.value,
1417
+ onClick: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("click", $event))
1418
+ }, createSlots({
1419
+ icon: withCtx(() => [
1420
+ renderSlot(_ctx.$slots, "icon", {}, void 0, true)
1421
+ ]),
1422
+ default: withCtx(() => [
1423
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
1424
+ ]),
1425
+ _: 2
1426
+ }, [
1427
+ _ctx.$slots["leading-icon"] ? {
1428
+ name: "leading-icon",
1429
+ fn: withCtx(() => [
1430
+ renderSlot(_ctx.$slots, "leading-icon", {}, void 0, true)
1431
+ ]),
1432
+ key: "0"
1433
+ } : void 0,
1434
+ _ctx.$slots["trailing-icon"] ? {
1435
+ name: "trailing-icon",
1436
+ fn: withCtx(() => [
1437
+ renderSlot(_ctx.$slots, "trailing-icon", {}, void 0, true)
1438
+ ]),
1439
+ key: "1"
1440
+ } : void 0
1441
+ ]), 1032, ["to", "disabled", "loading", "loading-text", "icon", "icon-name", "leading-icon", "trailing-icon", "button-classes", "button-styles"])) : (openBlock(), createBlock(_sfc_main$K, {
1442
+ key: 3,
1443
+ to: _ctx.to,
1444
+ href: _ctx.href,
1445
+ external: _ctx.external,
1446
+ disabled: _ctx.disabled,
1447
+ loading: _ctx.loading,
1448
+ "loading-text": _ctx.loadingText,
1449
+ icon: _ctx.icon,
1450
+ "icon-name": _ctx.iconName,
1451
+ "leading-icon": _ctx.leadingIcon,
1452
+ "trailing-icon": _ctx.trailingIcon,
1453
+ "button-classes": buttonClasses.value,
1454
+ "button-styles": buttonStyles.value,
1455
+ onClick: _cache[3] || (_cache[3] = ($event) => _ctx.$emit("click", $event))
1456
+ }, createSlots({
1457
+ icon: withCtx(() => [
1458
+ renderSlot(_ctx.$slots, "icon", {}, void 0, true)
1459
+ ]),
1460
+ default: withCtx(() => [
1461
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
1462
+ ]),
1463
+ _: 2
1464
+ }, [
1465
+ _ctx.$slots["leading-icon"] ? {
1466
+ name: "leading-icon",
1467
+ fn: withCtx(() => [
1468
+ renderSlot(_ctx.$slots, "leading-icon", {}, void 0, true)
1469
+ ]),
1470
+ key: "0"
1471
+ } : void 0,
1472
+ _ctx.$slots["trailing-icon"] ? {
1473
+ name: "trailing-icon",
1474
+ fn: withCtx(() => [
1475
+ renderSlot(_ctx.$slots, "trailing-icon", {}, void 0, true)
1476
+ ]),
1477
+ key: "1"
1478
+ } : void 0
1479
+ ]), 1032, ["to", "href", "external", "disabled", "loading", "loading-text", "icon", "icon-name", "leading-icon", "trailing-icon", "button-classes", "button-styles"]));
778
1480
  };
779
1481
  }
780
1482
  });
781
- const StrandsUiButton = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["__scopeId", "data-v-0a40a982"]]);
1483
+ const StrandsUiButton = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__scopeId", "data-v-25067b15"]]);
1484
+ const CompoundUiButton = StrandsUiButton;
1485
+ CompoundUiButton.Content = UiButtonContent;
1486
+ CompoundUiButton.Anchor = _sfc_main$K;
1487
+ CompoundUiButton.Nuxt = _sfc_main$J;
1488
+ CompoundUiButton.Vue = _sfc_main$I;
782
1489
  const _hoisted_1$D = {
783
1490
  key: 0,
784
1491
  class: "ui-card-header"
785
1492
  };
786
1493
  const _hoisted_2$w = { class: "ui-card-content" };
787
- const _hoisted_3$u = {
1494
+ const _hoisted_3$t = {
788
1495
  key: 1,
789
1496
  class: "ui-card-footer"
790
1497
  };
791
- const _sfc_main$H = /* @__PURE__ */ defineComponent({
1498
+ const _sfc_main$G = /* @__PURE__ */ defineComponent({
792
1499
  __name: "UiCard",
793
1500
  props: {
794
1501
  variant: { default: "default" },
@@ -812,24 +1519,24 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
812
1519
  createElementVNode("div", _hoisted_2$w, [
813
1520
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
814
1521
  ]),
815
- _ctx.$slots["footer"] ? (openBlock(), createElementBlock("div", _hoisted_3$u, [
1522
+ _ctx.$slots["footer"] ? (openBlock(), createElementBlock("div", _hoisted_3$t, [
816
1523
  renderSlot(_ctx.$slots, "footer", {}, void 0, true)
817
1524
  ])) : createCommentVNode("", true)
818
1525
  ], 2);
819
1526
  };
820
1527
  }
821
1528
  });
822
- const StrandsUiCard = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__scopeId", "data-v-d4383926"]]);
1529
+ const StrandsUiCard = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["__scopeId", "data-v-e189c5aa"]]);
823
1530
  const _hoisted_1$C = { class: "accui-component-scope" };
824
1531
  const _hoisted_2$v = { class: "input-container" };
825
- const _hoisted_3$t = ["for"];
826
- const _hoisted_4$r = {
1532
+ const _hoisted_3$s = ["for"];
1533
+ const _hoisted_4$q = {
827
1534
  key: 0,
828
1535
  class: "input-required"
829
1536
  };
830
- const _hoisted_5$o = { class: "input-wrapper" };
831
- const _hoisted_6$m = ["id", "type", "value", "placeholder", "disabled", "required", "autocomplete", "name", "inputmode", "maxlength"];
832
- const _hoisted_7$l = ["aria-label"];
1537
+ const _hoisted_5$n = { class: "input-wrapper" };
1538
+ const _hoisted_6$l = ["id", "type", "value", "placeholder", "disabled", "required", "autocomplete", "name", "inputmode", "maxlength"];
1539
+ const _hoisted_7$k = ["aria-label"];
833
1540
  const _hoisted_8$k = {
834
1541
  key: 0,
835
1542
  class: "input-toggle-icon",
@@ -856,7 +1563,7 @@ const _hoisted_12$i = {
856
1563
  key: 2,
857
1564
  class: "input-help-text"
858
1565
  };
859
- const _sfc_main$G = /* @__PURE__ */ defineComponent({
1566
+ const _sfc_main$F = /* @__PURE__ */ defineComponent({
860
1567
  __name: "UiInput",
861
1568
  props: {
862
1569
  modelValue: {},
@@ -946,9 +1653,9 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
946
1653
  class: "input-label"
947
1654
  }, [
948
1655
  createTextVNode(toDisplayString(_ctx.label) + " ", 1),
949
- _ctx.required ? (openBlock(), createElementBlock("span", _hoisted_4$r, "*")) : createCommentVNode("", true)
950
- ], 8, _hoisted_3$t)) : createCommentVNode("", true),
951
- createElementVNode("div", _hoisted_5$o, [
1656
+ _ctx.required ? (openBlock(), createElementBlock("span", _hoisted_4$q, "*")) : createCommentVNode("", true)
1657
+ ], 8, _hoisted_3$s)) : createCommentVNode("", true),
1658
+ createElementVNode("div", _hoisted_5$n, [
952
1659
  createElementVNode("div", {
953
1660
  class: normalizeClass(["input-field-wrapper", [
954
1661
  { "input-error": _ctx.error },
@@ -978,7 +1685,7 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
978
1685
  onBlur: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("blur", $event)),
979
1686
  onFocus: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("focus", $event)),
980
1687
  onKeydown: _cache[3] || (_cache[3] = ($event) => _ctx.$emit("keydown", $event))
981
- }, null, 42, _hoisted_6$m),
1688
+ }, null, 42, _hoisted_6$l),
982
1689
  _ctx.type === "password" ? (openBlock(), createElementBlock("button", {
983
1690
  key: 1,
984
1691
  type: "button",
@@ -1007,7 +1714,7 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
1007
1714
  d: "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
1008
1715
  }, null, -1)
1009
1716
  ])]))
1010
- ], 8, _hoisted_7$l)) : createCommentVNode("", true),
1717
+ ], 8, _hoisted_7$k)) : createCommentVNode("", true),
1011
1718
  FollowingIconComponent.value || _ctx.$slots["following-icon"] ? (openBlock(), createElementBlock("div", {
1012
1719
  key: 2,
1013
1720
  class: normalizeClass(["input-following-icon", { "cursor-pointer": _ctx.$attrs["onTrailing-action"] }]),
@@ -1026,8 +1733,10 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
1026
1733
  };
1027
1734
  }
1028
1735
  });
1029
- const StrandsUiInput = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["__scopeId", "data-v-26b9fb0d"]]);
1030
- const _sfc_main$F = /* @__PURE__ */ defineComponent({
1736
+ const StrandsUiInput = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["__scopeId", "data-v-26b9fb0d"]]);
1737
+ const _hoisted_1$B = ["disabled", "aria-disabled"];
1738
+ const _hoisted_2$u = ["href", "target", "rel", "aria-disabled"];
1739
+ const _sfc_main$E = /* @__PURE__ */ defineComponent({
1031
1740
  __name: "UiLink",
1032
1741
  props: {
1033
1742
  href: {},
@@ -1042,56 +1751,17 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
1042
1751
  setup(__props, { emit: __emit }) {
1043
1752
  const props = __props;
1044
1753
  const emit = __emit;
1045
- const tag = computed(() => {
1046
- if (props.to) {
1047
- if (typeof process !== "undefined" && process.client !== void 0) {
1048
- return "nuxt-link";
1049
- }
1050
- if (typeof window !== "undefined" && (window.__NUXT__ || window.$nuxt)) {
1051
- return "nuxt-link";
1052
- }
1053
- try {
1054
- if (typeof window !== "undefined" && window.Vue?.Router) {
1055
- return "router-link";
1056
- }
1057
- } catch (e) {
1058
- }
1059
- return "a";
1060
- }
1061
- if (props.href) return "a";
1062
- return "button";
1063
- });
1064
- const linkProps = computed(() => {
1065
- const baseProps = {};
1066
- const currentTag = tag.value;
1067
- if (props.to) {
1068
- if (currentTag === "nuxt-link" || currentTag === "router-link") {
1069
- baseProps["to"] = props.to;
1070
- } else if (currentTag === "a") {
1071
- if (typeof props.to === "object") {
1072
- baseProps["href"] = "#route-object-not-supported";
1073
- } else {
1074
- baseProps["href"] = props.to;
1075
- if (props.external) {
1076
- baseProps["target"] = "_blank";
1077
- baseProps["rel"] = "noopener noreferrer";
1078
- }
1079
- }
1080
- }
1081
- } else if (props.href) {
1082
- baseProps["href"] = props.href;
1083
- if (props.external) {
1084
- baseProps["target"] = "_blank";
1085
- baseProps["rel"] = "noopener noreferrer";
1754
+ const computedHref = computed(() => {
1755
+ if (props.href) {
1756
+ return props.href;
1757
+ } else if (props.to) {
1758
+ if (typeof props.to === "string") {
1759
+ return props.to;
1760
+ } else if (typeof props.to === "object" && props.to) {
1761
+ return "#route-object-not-supported";
1086
1762
  }
1087
- } else {
1088
- baseProps["type"] = "button";
1089
1763
  }
1090
- if (props.disabled) {
1091
- baseProps["disabled"] = true;
1092
- baseProps["aria-disabled"] = true;
1093
- }
1094
- return baseProps;
1764
+ return "#";
1095
1765
  });
1096
1766
  function getCurrentAccentColor() {
1097
1767
  if (typeof window !== "undefined") {
@@ -1105,8 +1775,6 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
1105
1775
  const getColorValues = () => ({
1106
1776
  primary: getCurrentAccentColor(),
1107
1777
  // configurable strands accent
1108
- secondary: "#6b7280",
1109
- // gray-500
1110
1778
  success: "#059669",
1111
1779
  // emerald-600
1112
1780
  warning: "#d97706",
@@ -1143,36 +1811,54 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
1143
1811
  }
1144
1812
  };
1145
1813
  return (_ctx, _cache) => {
1146
- return openBlock(), createBlock(resolveDynamicComponent(tag.value), mergeProps({
1147
- class: ["ui-link", [
1814
+ return !_ctx.to && !_ctx.href ? (openBlock(), createElementBlock("button", {
1815
+ key: 0,
1816
+ type: "button",
1817
+ class: normalizeClass(["ui-link", [
1148
1818
  `ui-link-${_ctx.variant}`,
1149
1819
  `ui-link-${_ctx.size}`,
1150
1820
  { "ui-link-disabled": _ctx.disabled },
1151
1821
  { "ui-link-custom-color": _ctx.color }
1152
- ]],
1153
- style: linkStyles.value
1154
- }, linkProps.value, { onClick: handleClick }), {
1155
- default: withCtx(() => [
1156
- renderSlot(_ctx.$slots, "default", {}, void 0, true)
1157
- ]),
1158
- _: 3
1159
- }, 16, ["class", "style"]);
1822
+ ]]),
1823
+ style: normalizeStyle(linkStyles.value),
1824
+ disabled: _ctx.disabled,
1825
+ "aria-disabled": _ctx.disabled,
1826
+ onClick: handleClick
1827
+ }, [
1828
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
1829
+ ], 14, _hoisted_1$B)) : (openBlock(), createElementBlock("a", {
1830
+ key: 1,
1831
+ class: normalizeClass(["ui-link", [
1832
+ `ui-link-${_ctx.variant}`,
1833
+ `ui-link-${_ctx.size}`,
1834
+ { "ui-link-disabled": _ctx.disabled },
1835
+ { "ui-link-custom-color": _ctx.color }
1836
+ ]]),
1837
+ style: normalizeStyle(linkStyles.value),
1838
+ href: computedHref.value,
1839
+ target: _ctx.external ? "_blank" : void 0,
1840
+ rel: _ctx.external ? "noopener noreferrer" : void 0,
1841
+ "aria-disabled": _ctx.disabled,
1842
+ onClick: handleClick
1843
+ }, [
1844
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
1845
+ ], 14, _hoisted_2$u));
1160
1846
  };
1161
1847
  }
1162
1848
  });
1163
- const StrandsUiLink = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["__scopeId", "data-v-a9d22fbf"]]);
1164
- const _hoisted_1$B = { class: "tabs-wrapper" };
1165
- const _hoisted_2$u = {
1849
+ const StrandsUiLink = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__scopeId", "data-v-3bf99110"]]);
1850
+ const _hoisted_1$A = { class: "tabs-wrapper" };
1851
+ const _hoisted_2$t = {
1166
1852
  key: 0,
1167
1853
  class: "tabs-before"
1168
1854
  };
1169
- const _hoisted_3$s = ["aria-selected", "id", "onClick"];
1170
- const _hoisted_4$q = {
1855
+ const _hoisted_3$r = ["aria-selected", "id", "onClick"];
1856
+ const _hoisted_4$p = {
1171
1857
  key: 1,
1172
1858
  class: "tabs-after"
1173
1859
  };
1174
- const _hoisted_5$n = ["aria-labelledby"];
1175
- const _sfc_main$E = /* @__PURE__ */ defineComponent({
1860
+ const _hoisted_5$m = ["aria-labelledby"];
1861
+ const _sfc_main$D = /* @__PURE__ */ defineComponent({
1176
1862
  __name: "UiTabs",
1177
1863
  props: {
1178
1864
  modelValue: {},
@@ -1402,6 +2088,68 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
1402
2088
  }, 200);
1403
2089
  });
1404
2090
  };
2091
+ let resizeTimeout = null;
2092
+ const handleResize = () => {
2093
+ const activeIndex = props.tabs.findIndex((tab) => tab.value === props.modelValue);
2094
+ if (activeIndex !== -1 && tabButtons.value && tabButtons.value[activeIndex]) {
2095
+ const wasTransitionsEnabled = enableTransitions.value;
2096
+ enableTransitions.value = false;
2097
+ const newTab = tabButtons.value[activeIndex];
2098
+ const container = newTab.parentElement;
2099
+ if (container) {
2100
+ const newDimensions = calculateUnderlineDimensions(newTab, container);
2101
+ const newTabRect = newTab.getBoundingClientRect();
2102
+ const containerRect = container.getBoundingClientRect();
2103
+ let newTabPos, newTabSize;
2104
+ if (props.orientation === "vertical") {
2105
+ newTabPos = newTabRect.top - containerRect.top;
2106
+ newTabSize = newTabRect.height;
2107
+ underlineStyle.value = {
2108
+ height: `${newDimensions.height}px`,
2109
+ top: `${newDimensions.top}px`,
2110
+ width: `${newDimensions.width}px`,
2111
+ left: `${newDimensions.left}px`,
2112
+ opacity: "1"
2113
+ };
2114
+ backgroundStyle.value = {
2115
+ height: `${newTabSize}px`,
2116
+ top: `${newTabPos}px`,
2117
+ width: `${newTabRect.width}px`,
2118
+ left: "0",
2119
+ opacity: "1"
2120
+ };
2121
+ } else {
2122
+ newTabPos = newTabRect.left - containerRect.left;
2123
+ newTabSize = newTabRect.width;
2124
+ underlineStyle.value = {
2125
+ width: `${newDimensions.width}px`,
2126
+ left: `${newDimensions.left}px`,
2127
+ height: `${newDimensions.height}px`,
2128
+ top: `${newDimensions.top}px`,
2129
+ opacity: "1"
2130
+ };
2131
+ backgroundStyle.value = {
2132
+ width: `${newTabSize}px`,
2133
+ left: `${newTabPos}px`,
2134
+ height: "100%",
2135
+ top: "0",
2136
+ opacity: "1"
2137
+ };
2138
+ }
2139
+ }
2140
+ currentTabIndex = activeIndex;
2141
+ isAnimating = false;
2142
+ setTimeout(() => {
2143
+ enableTransitions.value = wasTransitionsEnabled;
2144
+ }, 10);
2145
+ }
2146
+ if (resizeTimeout) {
2147
+ clearTimeout(resizeTimeout);
2148
+ }
2149
+ resizeTimeout = setTimeout(() => {
2150
+ resizeTimeout = null;
2151
+ }, 50);
2152
+ };
1405
2153
  onMounted(async () => {
1406
2154
  await nextTick();
1407
2155
  const activeIndex = props.tabs.findIndex((tab) => tab.value === props.modelValue);
@@ -1411,6 +2159,14 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
1411
2159
  enableTransitions.value = true;
1412
2160
  }, 50);
1413
2161
  }
2162
+ window.addEventListener("resize", handleResize);
2163
+ });
2164
+ onUnmounted(() => {
2165
+ window.removeEventListener("resize", handleResize);
2166
+ if (resizeTimeout) {
2167
+ clearTimeout(resizeTimeout);
2168
+ resizeTimeout = null;
2169
+ }
1414
2170
  });
1415
2171
  const { modelValue } = toRefs(props);
1416
2172
  watch(modelValue, async () => {
@@ -1429,7 +2185,7 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
1429
2185
  { "tabs-container--with-content": hasContentSlot.value }
1430
2186
  ]])
1431
2187
  }, [
1432
- createElementVNode("div", _hoisted_1$B, [
2188
+ createElementVNode("div", _hoisted_1$A, [
1433
2189
  createElementVNode("div", {
1434
2190
  class: normalizeClass(["tabs-list", [
1435
2191
  `tabs-list--${_ctx.orientation}`,
@@ -1438,7 +2194,7 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
1438
2194
  ]]),
1439
2195
  style: normalizeStyle(_ctx.sticky ? { position: "sticky", [_ctx.sticky.side]: `${_ctx.sticky.offset}px`, zIndex: 10 } : {})
1440
2196
  }, [
1441
- _ctx.$slots["before"] ? (openBlock(), createElementBlock("div", _hoisted_2$u, [
2197
+ _ctx.$slots["before"] ? (openBlock(), createElementBlock("div", _hoisted_2$t, [
1442
2198
  renderSlot(_ctx.$slots, "before", {}, void 0, true)
1443
2199
  ])) : createCommentVNode("", true),
1444
2200
  createElementVNode("div", {
@@ -1462,141 +2218,36 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
1462
2218
  id: `tab-${tab.value}`,
1463
2219
  role: "tab",
1464
2220
  onClick: ($event) => handleTabClick(tab.value, index)
1465
- }, toDisplayString(tab.label), 11, _hoisted_3$s);
1466
- }), 128)),
1467
- createElementVNode("div", {
1468
- class: normalizeClass(["tab-background", { "no-transition": !enableTransitions.value }]),
1469
- style: normalizeStyle(backgroundStyle.value)
1470
- }, null, 6),
1471
- createElementVNode("div", {
1472
- class: normalizeClass(["tab-underline", { "no-transition": !enableTransitions.value }]),
1473
- style: normalizeStyle(underlineStyle.value)
1474
- }, null, 6)
1475
- ], 2),
1476
- _ctx.$slots["after"] ? (openBlock(), createElementBlock("div", _hoisted_4$q, [
1477
- renderSlot(_ctx.$slots, "after", {}, void 0, true)
1478
- ])) : createCommentVNode("", true)
1479
- ], 6)
1480
- ]),
1481
- hasContentSlot.value ? (openBlock(), createElementBlock("div", {
1482
- key: 0,
1483
- class: normalizeClass(["tabs-content", `tabs-content--${_ctx.orientation}`]),
1484
- role: "tabpanel",
1485
- "aria-labelledby": `tab-${unref(modelValue)}`,
1486
- id: "tabpanel"
1487
- }, [
1488
- renderSlot(_ctx.$slots, "content", { activeTab: activeTab.value }, void 0, true)
1489
- ], 10, _hoisted_5$n)) : createCommentVNode("", true)
1490
- ], 2);
1491
- };
1492
- }
1493
- });
1494
- const StrandsUiTabs = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__scopeId", "data-v-fcde7995"]]);
1495
- const logo = '<svg width="302" height="438" viewBox="0 0 302 438" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M71.5001 96C71.5001 96 132 106 137 61.5C142 17 117.5 3.50005 94.5001 1.50003C71.5001 -0.499996 16.0001 8.5 2.00014 72.5C-6.5 130.5 71.5003 227.5 165 218C258.5 208.5 280.758 148.5 283.5 121C286.242 93.5 277.5 61.5 238.5 61.5C153 61.5 150.501 185 170.5 235C190.5 285 199 279 213 314C227.001 349 217.296 411.458 183 427C129.456 450.65 92 426 78.5 407.5C65 389 68.0003 357 94.5001 344.5C121 332 212.41 393.5 301.5 361" stroke="black"/>\n</svg>\n';
1496
- const _hoisted_1$A = {
1497
- key: 0,
1498
- class: "loader-icon"
1499
- };
1500
- const _hoisted_2$t = ["width", "height"];
1501
- const _hoisted_3$r = ["d"];
1502
- const _hoisted_4$p = ["stroke-width"];
1503
- const _hoisted_5$m = ["stroke-width"];
1504
- const _hoisted_6$l = ["width", "height"];
1505
- const _hoisted_7$k = {
1506
- key: 3,
1507
- class: "loader-text"
1508
- };
1509
- const _sfc_main$D = /* @__PURE__ */ defineComponent({
1510
- __name: "UiLoader",
1511
- props: {
1512
- size: { default: 80 },
1513
- color: { default: "primary" },
1514
- variant: { default: "spinner" },
1515
- text: {},
1516
- centered: { type: Boolean, default: true },
1517
- weight: { default: 30 },
1518
- fullWidth: { type: Boolean, default: false }
1519
- },
1520
- setup(__props) {
1521
- const path = logo.replace(/<svg[^>]*>/, "").replace(/<\/svg>/, "").trim();
1522
- const d = path.match(/d="([^"]*)"/)?.[1] || "";
1523
- return (_ctx, _cache) => {
1524
- return openBlock(), createElementBlock("div", {
1525
- class: normalizeClass(["loader-container", [
1526
- { "loader-centered": _ctx.centered },
1527
- `loader-color-${_ctx.color}`
1528
- ]])
1529
- }, [
1530
- _ctx.variant === "spinner" ? (openBlock(), createElementBlock("div", _hoisted_1$A, [
1531
- (openBlock(), createElementBlock("svg", {
1532
- width: _ctx.size,
1533
- height: _ctx.size,
1534
- viewBox: "0 0 500 500"
1535
- }, [
1536
- createElementVNode("defs", null, [
1537
- createElementVNode("path", {
1538
- id: "logo-path",
1539
- d: unref(d),
1540
- transform: "translate(81, 13) scale(1.0)"
1541
- }, null, 8, _hoisted_3$r)
1542
- ]),
1543
- createElementVNode("use", {
1544
- href: "#logo-path",
1545
- fill: "none",
1546
- stroke: "var(--loader-semi-color)",
1547
- "stroke-width": _ctx.weight,
1548
- "stroke-linecap": "round",
1549
- "stroke-linejoin": "round"
1550
- }, null, 8, _hoisted_4$p),
1551
- createElementVNode("use", {
1552
- href: "#logo-path",
1553
- fill: "none",
1554
- stroke: "var(--loader-solid-color)",
1555
- "stroke-width": _ctx.weight,
1556
- "stroke-linecap": "round",
1557
- "stroke-linejoin": "round",
1558
- class: "loader-animated-path"
1559
- }, null, 8, _hoisted_5$m)
1560
- ], 8, _hoisted_2$t))
1561
- ])) : _ctx.variant === "circle" ? (openBlock(), createElementBlock("div", {
1562
- key: 1,
1563
- class: "loader-circle",
1564
- style: normalizeStyle({ width: `${_ctx.size}px`, height: `${_ctx.size}px` })
1565
- }, [
1566
- (openBlock(), createElementBlock("svg", {
1567
- width: _ctx.size,
1568
- height: _ctx.size,
1569
- viewBox: "0 0 50 50"
1570
- }, [..._cache[0] || (_cache[0] = [
1571
- createElementVNode("circle", {
1572
- cx: "25",
1573
- cy: "25",
1574
- r: "20",
1575
- fill: "none",
1576
- stroke: "var(--loader-solid-color)",
1577
- "stroke-width": "4",
1578
- "stroke-linecap": "round",
1579
- class: "loader-circle-path"
1580
- }, null, -1)
1581
- ])], 8, _hoisted_6$l))
1582
- ], 4)) : _ctx.variant === "bar" ? (openBlock(), createElementBlock("div", {
1583
- key: 2,
1584
- class: "loader-bar",
1585
- style: normalizeStyle({
1586
- width: _ctx.fullWidth ? "100%" : `${_ctx.size * 1.5}px`,
1587
- height: `${Math.max(_ctx.size * 0.1, 4)}px`
1588
- })
1589
- }, [..._cache[1] || (_cache[1] = [
1590
- createElementVNode("div", { class: "loader-bar-track" }, [
1591
- createElementVNode("div", { class: "loader-bar-fill" })
1592
- ], -1)
1593
- ])], 4)) : createCommentVNode("", true),
1594
- _ctx.text ? (openBlock(), createElementBlock("p", _hoisted_7$k, toDisplayString(_ctx.text), 1)) : createCommentVNode("", true)
2221
+ }, toDisplayString(tab.label), 11, _hoisted_3$r);
2222
+ }), 128)),
2223
+ createElementVNode("div", {
2224
+ class: normalizeClass(["tab-background", { "no-transition": !enableTransitions.value }]),
2225
+ style: normalizeStyle(backgroundStyle.value)
2226
+ }, null, 6),
2227
+ createElementVNode("div", {
2228
+ class: normalizeClass(["tab-underline", { "no-transition": !enableTransitions.value }]),
2229
+ style: normalizeStyle(underlineStyle.value)
2230
+ }, null, 6)
2231
+ ], 2),
2232
+ _ctx.$slots["after"] ? (openBlock(), createElementBlock("div", _hoisted_4$p, [
2233
+ renderSlot(_ctx.$slots, "after", {}, void 0, true)
2234
+ ])) : createCommentVNode("", true)
2235
+ ], 6)
2236
+ ]),
2237
+ hasContentSlot.value ? (openBlock(), createElementBlock("div", {
2238
+ key: 0,
2239
+ class: normalizeClass(["tabs-content", `tabs-content--${_ctx.orientation}`]),
2240
+ role: "tabpanel",
2241
+ "aria-labelledby": `tab-${unref(modelValue)}`,
2242
+ id: "tabpanel"
2243
+ }, [
2244
+ renderSlot(_ctx.$slots, "content", { activeTab: activeTab.value }, void 0, true)
2245
+ ], 10, _hoisted_5$m)) : createCommentVNode("", true)
1595
2246
  ], 2);
1596
2247
  };
1597
2248
  }
1598
2249
  });
1599
- const StrandsUiLoader = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["__scopeId", "data-v-ba3ffb77"]]);
2250
+ const StrandsUiTabs = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["__scopeId", "data-v-95268d49"]]);
1600
2251
  const _hoisted_1$z = ["aria-pressed", "aria-labelledby"];
1601
2252
  const _sfc_main$C = /* @__PURE__ */ defineComponent({
1602
2253
  __name: "UiToggle",
@@ -3584,37 +4235,75 @@ const _hoisted_20$9 = {
3584
4235
  };
3585
4236
  const _hoisted_21$8 = ["cx", "fill"];
3586
4237
  const _hoisted_22$8 = { class: "ui-color-picker-inputs" };
3587
- const _hoisted_23$7 = { class: "ui-color-picker-input-group" };
3588
- const _hoisted_24$6 = { class: "ui-color-picker-input-row" };
3589
- const _hoisted_25$6 = { class: "ui-color-picker-input-group" };
3590
- const _hoisted_26$5 = { class: "ui-color-picker-input-group" };
4238
+ const _hoisted_23$7 = {
4239
+ key: 0,
4240
+ class: "ui-color-picker-input-row"
4241
+ };
4242
+ const _hoisted_24$6 = { class: "ui-color-picker-input-group" };
4243
+ const _hoisted_25$6 = { class: "ui-color-picker-button-wrapper" };
4244
+ const _hoisted_26$5 = {
4245
+ key: 1,
4246
+ class: "ui-color-picker-input-row"
4247
+ };
3591
4248
  const _hoisted_27$5 = { class: "ui-color-picker-input-group" };
3592
- const _hoisted_28$5 = {
4249
+ const _hoisted_28$5 = { class: "ui-color-picker-input-group" };
4250
+ const _hoisted_29$5 = { class: "ui-color-picker-input-group" };
4251
+ const _hoisted_30$5 = {
4252
+ key: 0,
4253
+ class: "ui-color-picker-input-group"
4254
+ };
4255
+ const _hoisted_31$5 = { class: "ui-color-picker-button-wrapper" };
4256
+ const _hoisted_32$5 = {
4257
+ key: 2,
4258
+ class: "ui-color-picker-input-row"
4259
+ };
4260
+ const _hoisted_33$4 = { class: "ui-color-picker-input-group" };
4261
+ const _hoisted_34$3 = { class: "ui-color-picker-input-group" };
4262
+ const _hoisted_35$3 = { class: "ui-color-picker-input-group" };
4263
+ const _hoisted_36$3 = {
4264
+ key: 0,
4265
+ class: "ui-color-picker-input-group"
4266
+ };
4267
+ const _hoisted_37$2 = { class: "ui-color-picker-button-wrapper" };
4268
+ const _hoisted_38$1 = {
4269
+ key: 3,
4270
+ class: "ui-color-picker-input-row"
4271
+ };
4272
+ const _hoisted_39$1 = { class: "ui-color-picker-input-group" };
4273
+ const _hoisted_40$1 = { class: "ui-color-picker-input-group" };
4274
+ const _hoisted_41$1 = { class: "ui-color-picker-input-group" };
4275
+ const _hoisted_42$1 = {
3593
4276
  key: 0,
3594
4277
  class: "ui-color-picker-input-group"
3595
4278
  };
3596
- const _hoisted_29$5 = { class: "ui-color-picker-swatches" };
3597
- const _hoisted_30$5 = { class: "ui-color-picker-swatch-row ui-color-picker-swatch-row--additional" };
3598
- const _hoisted_31$5 = ["onClick"];
3599
- const _hoisted_32$5 = { class: "ui-color-picker-swatch-row" };
3600
- const _hoisted_33$4 = ["onClick"];
3601
- const _hoisted_34$3 = { class: "ui-color-picker-shades-inner" };
3602
- const _hoisted_35$3 = { class: "ui-color-picker-swatch-row ui-color-picker-swatch-row--shades" };
3603
- const _hoisted_36$3 = ["onClick"];
4279
+ const _hoisted_43$1 = { class: "ui-color-picker-button-wrapper" };
4280
+ const _hoisted_44$1 = {
4281
+ key: 1,
4282
+ class: "ui-color-picker-swatches"
4283
+ };
4284
+ const _hoisted_45$1 = { class: "ui-color-picker-swatch-row ui-color-picker-swatch-row--additional" };
4285
+ const _hoisted_46$1 = ["onClick"];
4286
+ const _hoisted_47$1 = { class: "ui-color-picker-swatch-row" };
4287
+ const _hoisted_48$1 = ["onClick"];
4288
+ const _hoisted_49$1 = { class: "ui-color-picker-shades-inner" };
4289
+ const _hoisted_50$1 = { class: "ui-color-picker-swatch-row ui-color-picker-swatch-row--shades" };
4290
+ const _hoisted_51$1 = ["onClick"];
3604
4291
  const GLOBAL_PICKER_WIDTH = 200;
3605
4292
  const GLOBAL_PICKER_HEIGHT = 150;
3606
4293
  const _sfc_main$y = /* @__PURE__ */ defineComponent({
3607
4294
  __name: "UiColorPicker.Picker",
3608
4295
  props: {
4296
+ contrastLabel: {},
3609
4297
  modelValue: {},
3610
4298
  disabled: { type: Boolean },
3611
4299
  showAlpha: { type: Boolean },
4300
+ defaultColorFormat: { default: "hex" },
3612
4301
  swatches: {},
3613
4302
  additionalSwatches: {},
3614
4303
  additionalSwatchesLabel: {},
4304
+ showSwatches: { type: Boolean, default: true },
3615
4305
  compareColor: {},
3616
- showContrast: { type: Boolean },
3617
- contrastLabel: {}
4306
+ showContrast: { type: Boolean }
3618
4307
  },
3619
4308
  emits: ["update:modelValue", "change"],
3620
4309
  setup(__props, { emit: __emit }) {
@@ -3636,9 +4325,12 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
3636
4325
  const saturation = ref(1);
3637
4326
  const brightness = ref(1);
3638
4327
  const alpha = ref(1);
3639
- const hexInput = ref(getCurrentAccentColor());
4328
+ const hexInput = ref(props.modelValue || getCurrentAccentColor());
3640
4329
  const rgbInputs = ref({ r: 234, g: 0, b: 168 });
3641
4330
  const alphaInput = ref(100);
4331
+ const currentColorFormat = ref(props.defaultColorFormat || "hex");
4332
+ const hslInputs = ref({ h: 0, s: 0, l: 0 });
4333
+ const oklchInputs = ref({ l: 0, c: 0, h: 0 });
3642
4334
  const isDraggingArea = ref(false);
3643
4335
  const isDraggingHue = ref(false);
3644
4336
  const isDraggingAlpha = ref(false);
@@ -3919,6 +4611,111 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
3919
4611
  const rgbToHex = (r, g, b) => {
3920
4612
  return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;
3921
4613
  };
4614
+ const rgbToHsl = (r, g, b) => {
4615
+ r /= 255;
4616
+ g /= 255;
4617
+ b /= 255;
4618
+ const max = Math.max(r, g, b);
4619
+ const min = Math.min(r, g, b);
4620
+ const diff = max - min;
4621
+ const sum = max + min;
4622
+ let h2 = 0;
4623
+ let s2 = 0;
4624
+ let l = sum / 2;
4625
+ if (diff !== 0) {
4626
+ s2 = l > 0.5 ? diff / (2 - sum) : diff / sum;
4627
+ switch (max) {
4628
+ case r:
4629
+ h2 = ((g - b) / diff + (g < b ? 6 : 0)) / 6;
4630
+ break;
4631
+ case g:
4632
+ h2 = ((b - r) / diff + 2) / 6;
4633
+ break;
4634
+ case b:
4635
+ h2 = ((r - g) / diff + 4) / 6;
4636
+ break;
4637
+ }
4638
+ }
4639
+ return {
4640
+ h: Math.round(h2 * 360),
4641
+ s: Math.round(s2 * 100),
4642
+ l: Math.round(l * 100)
4643
+ };
4644
+ };
4645
+ const hslToRgb = (h2, s2, l) => {
4646
+ h2 /= 360;
4647
+ s2 /= 100;
4648
+ l /= 100;
4649
+ const hue2rgb = (p2, q2, t) => {
4650
+ if (t < 0) t += 1;
4651
+ if (t > 1) t -= 1;
4652
+ if (t < 1 / 6) return p2 + (q2 - p2) * 6 * t;
4653
+ if (t < 1 / 2) return q2;
4654
+ if (t < 2 / 3) return p2 + (q2 - p2) * (2 / 3 - t) * 6;
4655
+ return p2;
4656
+ };
4657
+ if (s2 === 0) {
4658
+ return { r: Math.round(l * 255), g: Math.round(l * 255), b: Math.round(l * 255) };
4659
+ }
4660
+ const q = l < 0.5 ? l * (1 + s2) : l + s2 - l * s2;
4661
+ const p = 2 * l - q;
4662
+ return {
4663
+ r: Math.round(hue2rgb(p, q, h2 + 1 / 3) * 255),
4664
+ g: Math.round(hue2rgb(p, q, h2) * 255),
4665
+ b: Math.round(hue2rgb(p, q, h2 - 1 / 3) * 255)
4666
+ };
4667
+ };
4668
+ const rgbToOklch = (r, g, b) => {
4669
+ const toLinear = (c) => {
4670
+ c /= 255;
4671
+ return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
4672
+ };
4673
+ const rLinear = toLinear(r);
4674
+ const gLinear = toLinear(g);
4675
+ const bLinear = toLinear(b);
4676
+ const l = 0.4122214708 * rLinear + 0.5363325363 * gLinear + 0.0514459929 * bLinear;
4677
+ const m = 0.2119034982 * rLinear + 0.6806995451 * gLinear + 0.1073969566 * bLinear;
4678
+ const s2 = 0.0883024619 * rLinear + 0.2817188376 * gLinear + 0.6299787005 * bLinear;
4679
+ const lCube = Math.sign(l) * Math.pow(Math.abs(l), 1 / 3);
4680
+ const mCube = Math.sign(m) * Math.pow(Math.abs(m), 1 / 3);
4681
+ const sCube = Math.sign(s2) * Math.pow(Math.abs(s2), 1 / 3);
4682
+ const lOk = 0.2104542553 * lCube + 0.793617785 * mCube - 0.0040720468 * sCube;
4683
+ const aOk = 1.9779984951 * lCube - 2.428592205 * mCube + 0.4505937099 * sCube;
4684
+ const bOk = 0.0259040371 * lCube + 0.7827717662 * mCube - 0.808675766 * sCube;
4685
+ const lightness = lOk;
4686
+ const chroma = Math.sqrt(aOk * aOk + bOk * bOk);
4687
+ let hue2 = Math.atan2(bOk, aOk) * 180 / Math.PI;
4688
+ if (hue2 < 0) hue2 += 360;
4689
+ return {
4690
+ l: Math.round(lightness * 100),
4691
+ c: Math.round(chroma * 100),
4692
+ h: Math.round(hue2)
4693
+ };
4694
+ };
4695
+ const oklchToRgb = (l, c, h2) => {
4696
+ l /= 100;
4697
+ c /= 100;
4698
+ h2 = h2 * Math.PI / 180;
4699
+ const aOk = c * Math.cos(h2);
4700
+ const bOk = c * Math.sin(h2);
4701
+ const lCube = l + 0.3963377774 * aOk + 0.2158037573 * bOk;
4702
+ const mCube = l - 0.1055613458 * aOk - 0.0638541728 * bOk;
4703
+ const sCube = l - 0.0894841775 * aOk - 1.291485548 * bOk;
4704
+ const lLinear = lCube * lCube * lCube;
4705
+ const mLinear = mCube * mCube * mCube;
4706
+ const sLinear = sCube * sCube * sCube;
4707
+ const rLinear = 4.0767416621 * lLinear - 3.3077115913 * mLinear + 0.2309699292 * sLinear;
4708
+ const gLinear = -1.2684380046 * lLinear + 2.6097574011 * mLinear - 0.3413193965 * sLinear;
4709
+ const bLinear = -0.0041960863 * lLinear - 0.7034186147 * mLinear + 1.707614701 * sLinear;
4710
+ const fromLinear = (c2) => {
4711
+ return c2 <= 31308e-7 ? c2 * 12.92 : 1.055 * Math.pow(c2, 1 / 2.4) - 0.055;
4712
+ };
4713
+ return {
4714
+ r: Math.max(0, Math.min(255, Math.round(fromLinear(rLinear) * 255))),
4715
+ g: Math.max(0, Math.min(255, Math.round(fromLinear(gLinear) * 255))),
4716
+ b: Math.max(0, Math.min(255, Math.round(fromLinear(bLinear) * 255)))
4717
+ };
4718
+ };
3922
4719
  const normalizeColorString = (colorStr) => {
3923
4720
  if (!colorStr) return colorStr;
3924
4721
  const rgb = hexToRgb(colorStr);
@@ -3961,7 +4758,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
3961
4758
  const rgbString = computed(() => `rgb(${currentRgb.value.r}, ${currentRgb.value.g}, ${currentRgb.value.b})`);
3962
4759
  const currentColorString = computed(() => {
3963
4760
  const { r, g, b } = currentRgb.value;
3964
- return props.showAlpha && alpha.value < 1 ? `rgba(${r}, ${g}, ${b}, ${alpha.value})` : rgbToHex(r, g, b);
4761
+ return props.showAlpha && alpha.value < 0.99 ? `rgba(${r}, ${g}, ${b}, ${alpha.value})` : rgbToHex(r, g, b);
3965
4762
  });
3966
4763
  const updateContrastData = () => {
3967
4764
  if (!props.showContrast || !props.compareColor) {
@@ -4871,6 +5668,34 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
4871
5668
  saturation.value = hsv.s;
4872
5669
  brightness.value = hsv.v;
4873
5670
  updateHexInput();
5671
+ updateHslInputs();
5672
+ updateOklchInputs();
5673
+ }
5674
+ };
5675
+ const handleHslInput = () => {
5676
+ const { h: h2, s: s2, l } = hslInputs.value;
5677
+ if (h2 >= 0 && h2 <= 360 && s2 >= 0 && s2 <= 100 && l >= 0 && l <= 100) {
5678
+ const rgb = hslToRgb(h2, s2, l);
5679
+ const hsv = rgbToHsv(rgb.r, rgb.g, rgb.b);
5680
+ hue.value = hsv.h;
5681
+ saturation.value = hsv.s;
5682
+ brightness.value = hsv.v;
5683
+ updateHexInput();
5684
+ updateRgbInputs();
5685
+ updateOklchInputs();
5686
+ }
5687
+ };
5688
+ const handleOklchInput = () => {
5689
+ const { l, c, h: h2 } = oklchInputs.value;
5690
+ if (l >= 0 && l <= 100 && c >= 0 && c <= 100 && h2 >= 0 && h2 <= 360) {
5691
+ const rgb = oklchToRgb(l, c, h2);
5692
+ const hsv = rgbToHsv(rgb.r, rgb.g, rgb.b);
5693
+ hue.value = hsv.h;
5694
+ saturation.value = hsv.s;
5695
+ brightness.value = hsv.v;
5696
+ updateHexInput();
5697
+ updateRgbInputs();
5698
+ updateHslInputs();
4874
5699
  }
4875
5700
  };
4876
5701
  const handleAlphaInput = () => {
@@ -4878,6 +5703,12 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
4878
5703
  alpha.value = value / 100;
4879
5704
  alphaInput.value = value;
4880
5705
  };
5706
+ const cycleColorFormat = () => {
5707
+ const formats = ["hex", "rgb", "hsl", "oklch"];
5708
+ const currentIndex = formats.indexOf(currentColorFormat.value);
5709
+ const nextIndex = (currentIndex + 1) % formats.length;
5710
+ currentColorFormat.value = formats[nextIndex];
5711
+ };
4881
5712
  const updateHexInput = () => {
4882
5713
  const { r, g, b } = currentRgb.value;
4883
5714
  hexInput.value = rgbToHex(r, g, b);
@@ -4886,6 +5717,16 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
4886
5717
  const { r, g, b } = currentRgb.value;
4887
5718
  rgbInputs.value = { r, g, b };
4888
5719
  };
5720
+ const updateHslInputs = () => {
5721
+ const { r, g, b } = currentRgb.value;
5722
+ const hsl = rgbToHsl(r, g, b);
5723
+ hslInputs.value = hsl;
5724
+ };
5725
+ const updateOklchInputs = () => {
5726
+ const { r, g, b } = currentRgb.value;
5727
+ const oklch = rgbToOklch(r, g, b);
5728
+ oklchInputs.value = oklch;
5729
+ };
4889
5730
  const setColorFromSwatch = (swatchColor) => {
4890
5731
  if (props.disabled) return;
4891
5732
  const rgb = hexToRgb(swatchColor);
@@ -4903,7 +5744,21 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
4903
5744
  };
4904
5745
  const initializeFromProp = () => {
4905
5746
  if (!props.modelValue) return;
4906
- const rgb = hexToRgb(props.modelValue);
5747
+ let rgb;
5748
+ if (props.modelValue.startsWith("#")) {
5749
+ rgb = hexToRgb(props.modelValue);
5750
+ hexInput.value = props.modelValue;
5751
+ } else {
5752
+ const rgbMatch = props.modelValue.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/);
5753
+ if (rgbMatch) {
5754
+ rgb = {
5755
+ r: parseInt(rgbMatch[1]),
5756
+ g: parseInt(rgbMatch[2]),
5757
+ b: parseInt(rgbMatch[3])
5758
+ };
5759
+ hexInput.value = rgbToHex(rgb.r, rgb.g, rgb.b);
5760
+ }
5761
+ }
4907
5762
  if (rgb) {
4908
5763
  const hsv = rgbToHsv(rgb.r, rgb.g, rgb.b);
4909
5764
  hue.value = hsv.h;
@@ -4916,6 +5771,8 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
4916
5771
  watch([hue, saturation, brightness, alpha], () => {
4917
5772
  updateHexInput();
4918
5773
  updateRgbInputs();
5774
+ updateHslInputs();
5775
+ updateOklchInputs();
4919
5776
  const currentColor = normalizeColorString(currentColorString.value);
4920
5777
  if (currentColor === lastEmittedColor) {
4921
5778
  return;
@@ -4988,8 +5845,8 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
4988
5845
  onMousedown: handleAreaMouseDown,
4989
5846
  onTouchstart: handleAreaMouseDown
4990
5847
  }, [
4991
- _cache[8] || (_cache[8] = createElementVNode("div", { class: "ui-color-picker-saturation" }, null, -1)),
4992
- _cache[9] || (_cache[9] = createElementVNode("div", { class: "ui-color-picker-brightness" }, null, -1)),
5848
+ _cache[16] || (_cache[16] = createElementVNode("div", { class: "ui-color-picker-saturation" }, null, -1)),
5849
+ _cache[17] || (_cache[17] = createElementVNode("div", { class: "ui-color-picker-brightness" }, null, -1)),
4993
5850
  debouncedCompareColor.value ? (openBlock(), createElementBlock("div", {
4994
5851
  key: 0,
4995
5852
  class: normalizeClass(["ui-color-picker-contrast-overlay", { "contrast-overlay-visible": contrastEnabled.value }])
@@ -5008,7 +5865,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5008
5865
  height: GLOBAL_PICKER_HEIGHT
5009
5866
  })
5010
5867
  ]),
5011
- _cache[5] || (_cache[5] = createElementVNode("pattern", {
5868
+ _cache[13] || (_cache[13] = createElementVNode("pattern", {
5012
5869
  id: "orangeDotsPattern",
5013
5870
  x: "0",
5014
5871
  y: "0",
@@ -5024,7 +5881,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5024
5881
  opacity: "0.3"
5025
5882
  })
5026
5883
  ], -1)),
5027
- _cache[6] || (_cache[6] = createElementVNode("pattern", {
5884
+ _cache[14] || (_cache[14] = createElementVNode("pattern", {
5028
5885
  id: "redDotsPattern",
5029
5886
  x: "0",
5030
5887
  y: "0",
@@ -5110,7 +5967,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5110
5967
  top: `${(1 - brightness.value) * 100}%`,
5111
5968
  backgroundColor: currentColorString.value
5112
5969
  })
5113
- }, [..._cache[7] || (_cache[7] = [
5970
+ }, [..._cache[15] || (_cache[15] = [
5114
5971
  createElementVNode("div", { class: "ui-color-picker-cursor-inner" }, null, -1)
5115
5972
  ])], 4)
5116
5973
  ], 36),
@@ -5138,12 +5995,12 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5138
5995
  delay: 300
5139
5996
  }, {
5140
5997
  default: withCtx(() => [
5141
- createVNode(unref(StrandsUiButton), {
5998
+ createVNode(unref(CompoundUiButton), {
5142
5999
  onClick: toggleContrast,
5143
- icon: "",
5144
- squircle: "",
6000
+ icon: true,
6001
+ squircle: true,
5145
6002
  size: "xs",
5146
- variant: contrastEnabled.value ? "primary" : "secondary",
6003
+ variant: contrastEnabled.value ? "primary" : "ghost",
5147
6004
  "icon-name": "contrast"
5148
6005
  }, null, 8, ["variant"])
5149
6006
  ]),
@@ -5156,7 +6013,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5156
6013
  }, [
5157
6014
  contrastData.value ? (openBlock(), createElementBlock("div", _hoisted_11$f, [
5158
6015
  createElementVNode("div", _hoisted_12$f, [
5159
- _cache[10] || (_cache[10] = createElementVNode("h4", { class: "ui-color-picker-contrast-title" }, "Contrast Check", -1)),
6016
+ _cache[18] || (_cache[18] = createElementVNode("h4", { class: "ui-color-picker-contrast-title" }, "Contrast Check", -1)),
5160
6017
  createElementVNode("div", _hoisted_13$f, [
5161
6018
  createElementVNode("div", _hoisted_14$f, [
5162
6019
  createElementVNode("div", {
@@ -5177,7 +6034,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5177
6034
  "ui-color-picker-contrast-level--fail": contrastData.value.normalText === "FAIL"
5178
6035
  }])
5179
6036
  }, [
5180
- _cache[11] || (_cache[11] = createElementVNode("div", { class: "ui-color-picker-contrast-level-indicator" }, [
6037
+ _cache[19] || (_cache[19] = createElementVNode("div", { class: "ui-color-picker-contrast-level-indicator" }, [
5181
6038
  createElementVNode("div", { class: "ui-color-picker-contrast-level-line ui-color-picker-contrast-level-line--solid" }),
5182
6039
  createElementVNode("span", { class: "ui-color-picker-contrast-level-label" }, "Normal Text")
5183
6040
  ], -1)),
@@ -5189,7 +6046,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5189
6046
  "ui-color-picker-contrast-level--fail": contrastData.value.largeText === "FAIL"
5190
6047
  }])
5191
6048
  }, [
5192
- _cache[12] || (_cache[12] = createElementVNode("div", { class: "ui-color-picker-contrast-level-indicator" }, [
6049
+ _cache[20] || (_cache[20] = createElementVNode("div", { class: "ui-color-picker-contrast-level-indicator" }, [
5193
6050
  createElementVNode("div", { class: "ui-color-picker-contrast-level-line ui-color-picker-contrast-level-line--dashed" }),
5194
6051
  createElementVNode("span", { class: "ui-color-picker-contrast-level-label" }, "Large Text")
5195
6052
  ], -1)),
@@ -5198,7 +6055,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5198
6055
  ]),
5199
6056
  createElementVNode("div", _hoisted_19$a, [
5200
6057
  (openBlock(), createElementBlock("svg", _hoisted_20$9, [
5201
- _cache[13] || (_cache[13] = createStaticVNode('<defs data-v-e9e45931><linearGradient id="contrastGradientDefault" x1="0%" y1="0%" x2="100%" y2="0%" data-v-e9e45931><stop offset="0%" stop-color="#ef4444" data-v-e9e45931></stop><stop offset="21.4%" stop-color="#ef4444" data-v-e9e45931></stop><stop offset="21.4%" stop-color="#f59e0b" data-v-e9e45931></stop><stop offset="64.3%" stop-color="#f59e0b" data-v-e9e45931></stop><stop offset="64.3%" stop-color="#22c55e" data-v-e9e45931></stop><stop offset="100%" stop-color="#22c55e" data-v-e9e45931></stop></linearGradient></defs><rect x="0" y="15" width="280" height="10" fill="url(#contrastGradientDefault)" rx="5" data-v-e9e45931></rect><line x1="60" y1="10" x2="60" y2="30" stroke="#666" stroke-width="1" opacity="0.5" data-v-e9e45931></line><line x1="180" y1="10" x2="180" y2="30" stroke="#666" stroke-width="1" opacity="0.5" data-v-e9e45931></line>', 4)),
6058
+ _cache[21] || (_cache[21] = createStaticVNode('<defs data-v-3634b582><linearGradient id="contrastGradientDefault" x1="0%" y1="0%" x2="100%" y2="0%" data-v-3634b582><stop offset="0%" stop-color="#ef4444" data-v-3634b582></stop><stop offset="21.4%" stop-color="#ef4444" data-v-3634b582></stop><stop offset="21.4%" stop-color="#f59e0b" data-v-3634b582></stop><stop offset="64.3%" stop-color="#f59e0b" data-v-3634b582></stop><stop offset="64.3%" stop-color="#22c55e" data-v-3634b582></stop><stop offset="100%" stop-color="#22c55e" data-v-3634b582></stop></linearGradient></defs><rect x="0" y="15" width="280" height="10" fill="url(#contrastGradientDefault)" rx="5" data-v-3634b582></rect><line x1="60" y1="10" x2="60" y2="30" stroke="#666" stroke-width="1" opacity="0.5" data-v-3634b582></line><line x1="180" y1="10" x2="180" y2="30" stroke="#666" stroke-width="1" opacity="0.5" data-v-3634b582></line>', 4)),
5202
6059
  createElementVNode("circle", {
5203
6060
  cx: Math.min(270, Math.max(10, Math.min(contrastData.value.ratio, 14) / 14 * 260 + 10)),
5204
6061
  cy: "20",
@@ -5208,7 +6065,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5208
6065
  "stroke-width": "2"
5209
6066
  }, null, 8, _hoisted_21$8)
5210
6067
  ])),
5211
- _cache[14] || (_cache[14] = createStaticVNode('<div class="ui-color-picker-contrast-labels" data-v-e9e45931><span class="ui-color-picker-contrast-label" data-v-e9e45931>1:1</span><span class="ui-color-picker-contrast-label" style="left:60px;" data-v-e9e45931>3:1</span><span class="ui-color-picker-contrast-label" style="left:180px;" data-v-e9e45931>4.5:1</span><span class="ui-color-picker-contrast-label" style="right:0;" data-v-e9e45931>14:1+</span></div>', 1))
6068
+ _cache[22] || (_cache[22] = createStaticVNode('<div class="ui-color-picker-contrast-labels" data-v-3634b582><span class="ui-color-picker-contrast-label" data-v-3634b582>1:1</span><span class="ui-color-picker-contrast-label" style="left:60px;" data-v-3634b582>3:1</span><span class="ui-color-picker-contrast-label" style="left:180px;" data-v-3634b582>4.5:1</span><span class="ui-color-picker-contrast-label" style="right:0;" data-v-3634b582>14:1+</span></div>', 1))
5212
6069
  ])
5213
6070
  ])) : createCommentVNode("", true)
5214
6071
  ], 2),
@@ -5220,7 +6077,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5220
6077
  onMousedown: handleAlphaMouseDown,
5221
6078
  onTouchstart: handleAlphaMouseDown
5222
6079
  }, [
5223
- _cache[15] || (_cache[15] = createElementVNode("div", { class: "ui-color-picker-alpha-bg" }, null, -1)),
6080
+ _cache[23] || (_cache[23] = createElementVNode("div", { class: "ui-color-picker-alpha-bg" }, null, -1)),
5224
6081
  createElementVNode("div", {
5225
6082
  class: "ui-color-picker-alpha-gradient",
5226
6083
  style: normalizeStyle({
@@ -5233,22 +6090,35 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5233
6090
  }, null, 4)
5234
6091
  ], 544)) : createCommentVNode("", true),
5235
6092
  createElementVNode("div", _hoisted_22$8, [
5236
- createElementVNode("div", _hoisted_23$7, [
5237
- _cache[16] || (_cache[16] = createElementVNode("label", { class: "ui-color-picker-label" }, "Hex", -1)),
5238
- withDirectives(createElementVNode("input", {
5239
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => hexInput.value = $event),
5240
- onInput: handleHexInput,
5241
- onBlur: validateHexInput,
5242
- class: "ui-color-picker-input",
5243
- type: "text",
5244
- maxlength: "7"
5245
- }, null, 544), [
5246
- [vModelText, hexInput.value]
5247
- ])
5248
- ]),
5249
- createElementVNode("div", _hoisted_24$6, [
6093
+ currentColorFormat.value === "hex" ? (openBlock(), createElementBlock("div", _hoisted_23$7, [
6094
+ createElementVNode("div", _hoisted_24$6, [
6095
+ _cache[24] || (_cache[24] = createElementVNode("label", { class: "ui-color-picker-label" }, "Hex", -1)),
6096
+ withDirectives(createElementVNode("input", {
6097
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => hexInput.value = $event),
6098
+ onInput: handleHexInput,
6099
+ onBlur: validateHexInput,
6100
+ class: "ui-color-picker-input",
6101
+ type: "text",
6102
+ maxlength: "7",
6103
+ placeholder: "#000000"
6104
+ }, null, 544), [
6105
+ [vModelText, hexInput.value]
6106
+ ])
6107
+ ]),
5250
6108
  createElementVNode("div", _hoisted_25$6, [
5251
- _cache[17] || (_cache[17] = createElementVNode("label", { class: "ui-color-picker-label" }, "R", -1)),
6109
+ createVNode(unref(CompoundUiButton), {
6110
+ color: "secondary",
6111
+ size: "xs",
6112
+ icon: "",
6113
+ squircle: "",
6114
+ "icon-name": "chevrons-up-down",
6115
+ onClick: cycleColorFormat,
6116
+ "aria-label": "Switch color format"
6117
+ })
6118
+ ])
6119
+ ])) : currentColorFormat.value === "rgb" ? (openBlock(), createElementBlock("div", _hoisted_26$5, [
6120
+ createElementVNode("div", _hoisted_27$5, [
6121
+ _cache[25] || (_cache[25] = createElementVNode("label", { class: "ui-color-picker-label" }, "R", -1)),
5252
6122
  withDirectives(createElementVNode("input", {
5253
6123
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => rgbInputs.value.r = $event),
5254
6124
  onInput: handleRgbInput,
@@ -5265,8 +6135,8 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5265
6135
  ]
5266
6136
  ])
5267
6137
  ]),
5268
- createElementVNode("div", _hoisted_26$5, [
5269
- _cache[18] || (_cache[18] = createElementVNode("label", { class: "ui-color-picker-label" }, "G", -1)),
6138
+ createElementVNode("div", _hoisted_28$5, [
6139
+ _cache[26] || (_cache[26] = createElementVNode("label", { class: "ui-color-picker-label" }, "G", -1)),
5270
6140
  withDirectives(createElementVNode("input", {
5271
6141
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => rgbInputs.value.g = $event),
5272
6142
  onInput: handleRgbInput,
@@ -5283,8 +6153,8 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5283
6153
  ]
5284
6154
  ])
5285
6155
  ]),
5286
- createElementVNode("div", _hoisted_27$5, [
5287
- _cache[19] || (_cache[19] = createElementVNode("label", { class: "ui-color-picker-label" }, "B", -1)),
6156
+ createElementVNode("div", _hoisted_29$5, [
6157
+ _cache[27] || (_cache[27] = createElementVNode("label", { class: "ui-color-picker-label" }, "B", -1)),
5288
6158
  withDirectives(createElementVNode("input", {
5289
6159
  "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => rgbInputs.value.b = $event),
5290
6160
  onInput: handleRgbInput,
@@ -5301,8 +6171,8 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5301
6171
  ]
5302
6172
  ])
5303
6173
  ]),
5304
- props.showAlpha ? (openBlock(), createElementBlock("div", _hoisted_28$5, [
5305
- _cache[20] || (_cache[20] = createElementVNode("label", { class: "ui-color-picker-label" }, "A", -1)),
6174
+ props.showAlpha ? (openBlock(), createElementBlock("div", _hoisted_30$5, [
6175
+ _cache[28] || (_cache[28] = createElementVNode("label", { class: "ui-color-picker-label" }, "A", -1)),
5306
6176
  withDirectives(createElementVNode("input", {
5307
6177
  "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => alphaInput.value = $event),
5308
6178
  onInput: handleAlphaInput,
@@ -5318,10 +6188,189 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5318
6188
  { number: true }
5319
6189
  ]
5320
6190
  ])
5321
- ])) : createCommentVNode("", true)
5322
- ])
6191
+ ])) : createCommentVNode("", true),
6192
+ createElementVNode("div", _hoisted_31$5, [
6193
+ createVNode(unref(CompoundUiButton), {
6194
+ color: "secondary",
6195
+ size: "xs",
6196
+ icon: "",
6197
+ squircle: "",
6198
+ "icon-name": "chevrons-up-down",
6199
+ onClick: cycleColorFormat,
6200
+ "aria-label": "Switch color format"
6201
+ })
6202
+ ])
6203
+ ])) : currentColorFormat.value === "hsl" ? (openBlock(), createElementBlock("div", _hoisted_32$5, [
6204
+ createElementVNode("div", _hoisted_33$4, [
6205
+ _cache[29] || (_cache[29] = createElementVNode("label", { class: "ui-color-picker-label" }, "H", -1)),
6206
+ withDirectives(createElementVNode("input", {
6207
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => hslInputs.value.h = $event),
6208
+ onInput: handleHslInput,
6209
+ class: "ui-color-picker-input",
6210
+ type: "number",
6211
+ min: "0",
6212
+ max: "360"
6213
+ }, null, 544), [
6214
+ [
6215
+ vModelText,
6216
+ hslInputs.value.h,
6217
+ void 0,
6218
+ { number: true }
6219
+ ]
6220
+ ])
6221
+ ]),
6222
+ createElementVNode("div", _hoisted_34$3, [
6223
+ _cache[30] || (_cache[30] = createElementVNode("label", { class: "ui-color-picker-label" }, "S", -1)),
6224
+ withDirectives(createElementVNode("input", {
6225
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => hslInputs.value.s = $event),
6226
+ onInput: handleHslInput,
6227
+ class: "ui-color-picker-input",
6228
+ type: "number",
6229
+ min: "0",
6230
+ max: "100"
6231
+ }, null, 544), [
6232
+ [
6233
+ vModelText,
6234
+ hslInputs.value.s,
6235
+ void 0,
6236
+ { number: true }
6237
+ ]
6238
+ ])
6239
+ ]),
6240
+ createElementVNode("div", _hoisted_35$3, [
6241
+ _cache[31] || (_cache[31] = createElementVNode("label", { class: "ui-color-picker-label" }, "L", -1)),
6242
+ withDirectives(createElementVNode("input", {
6243
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => hslInputs.value.l = $event),
6244
+ onInput: handleHslInput,
6245
+ class: "ui-color-picker-input",
6246
+ type: "number",
6247
+ min: "0",
6248
+ max: "100"
6249
+ }, null, 544), [
6250
+ [
6251
+ vModelText,
6252
+ hslInputs.value.l,
6253
+ void 0,
6254
+ { number: true }
6255
+ ]
6256
+ ])
6257
+ ]),
6258
+ props.showAlpha ? (openBlock(), createElementBlock("div", _hoisted_36$3, [
6259
+ _cache[32] || (_cache[32] = createElementVNode("label", { class: "ui-color-picker-label" }, "A", -1)),
6260
+ withDirectives(createElementVNode("input", {
6261
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => alphaInput.value = $event),
6262
+ onInput: handleAlphaInput,
6263
+ class: "ui-color-picker-input",
6264
+ type: "number",
6265
+ min: "0",
6266
+ max: "100"
6267
+ }, null, 544), [
6268
+ [
6269
+ vModelText,
6270
+ alphaInput.value,
6271
+ void 0,
6272
+ { number: true }
6273
+ ]
6274
+ ])
6275
+ ])) : createCommentVNode("", true),
6276
+ createElementVNode("div", _hoisted_37$2, [
6277
+ createVNode(unref(CompoundUiButton), {
6278
+ color: "secondary",
6279
+ size: "xs",
6280
+ icon: "",
6281
+ squircle: "",
6282
+ "icon-name": "chevrons-up-down",
6283
+ onClick: cycleColorFormat,
6284
+ "aria-label": "Switch color format"
6285
+ })
6286
+ ])
6287
+ ])) : currentColorFormat.value === "oklch" ? (openBlock(), createElementBlock("div", _hoisted_38$1, [
6288
+ createElementVNode("div", _hoisted_39$1, [
6289
+ _cache[33] || (_cache[33] = createElementVNode("label", { class: "ui-color-picker-label" }, "L", -1)),
6290
+ withDirectives(createElementVNode("input", {
6291
+ "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => oklchInputs.value.l = $event),
6292
+ onInput: handleOklchInput,
6293
+ class: "ui-color-picker-input",
6294
+ type: "number",
6295
+ min: "0",
6296
+ max: "100"
6297
+ }, null, 544), [
6298
+ [
6299
+ vModelText,
6300
+ oklchInputs.value.l,
6301
+ void 0,
6302
+ { number: true }
6303
+ ]
6304
+ ])
6305
+ ]),
6306
+ createElementVNode("div", _hoisted_40$1, [
6307
+ _cache[34] || (_cache[34] = createElementVNode("label", { class: "ui-color-picker-label" }, "C", -1)),
6308
+ withDirectives(createElementVNode("input", {
6309
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => oklchInputs.value.c = $event),
6310
+ onInput: handleOklchInput,
6311
+ class: "ui-color-picker-input",
6312
+ type: "number",
6313
+ min: "0",
6314
+ max: "100"
6315
+ }, null, 544), [
6316
+ [
6317
+ vModelText,
6318
+ oklchInputs.value.c,
6319
+ void 0,
6320
+ { number: true }
6321
+ ]
6322
+ ])
6323
+ ]),
6324
+ createElementVNode("div", _hoisted_41$1, [
6325
+ _cache[35] || (_cache[35] = createElementVNode("label", { class: "ui-color-picker-label" }, "H", -1)),
6326
+ withDirectives(createElementVNode("input", {
6327
+ "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => oklchInputs.value.h = $event),
6328
+ onInput: handleOklchInput,
6329
+ class: "ui-color-picker-input",
6330
+ type: "number",
6331
+ min: "0",
6332
+ max: "360"
6333
+ }, null, 544), [
6334
+ [
6335
+ vModelText,
6336
+ oklchInputs.value.h,
6337
+ void 0,
6338
+ { number: true }
6339
+ ]
6340
+ ])
6341
+ ]),
6342
+ props.showAlpha ? (openBlock(), createElementBlock("div", _hoisted_42$1, [
6343
+ _cache[36] || (_cache[36] = createElementVNode("label", { class: "ui-color-picker-label" }, "A", -1)),
6344
+ withDirectives(createElementVNode("input", {
6345
+ "onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => alphaInput.value = $event),
6346
+ onInput: handleAlphaInput,
6347
+ class: "ui-color-picker-input",
6348
+ type: "number",
6349
+ min: "0",
6350
+ max: "100"
6351
+ }, null, 544), [
6352
+ [
6353
+ vModelText,
6354
+ alphaInput.value,
6355
+ void 0,
6356
+ { number: true }
6357
+ ]
6358
+ ])
6359
+ ])) : createCommentVNode("", true),
6360
+ createElementVNode("div", _hoisted_43$1, [
6361
+ createVNode(unref(CompoundUiButton), {
6362
+ color: "secondary",
6363
+ size: "xs",
6364
+ icon: "",
6365
+ squircle: "",
6366
+ "icon-name": "chevrons-up-down",
6367
+ onClick: cycleColorFormat,
6368
+ "aria-label": "Switch color format"
6369
+ })
6370
+ ])
6371
+ ])) : createCommentVNode("", true)
5323
6372
  ]),
5324
- createElementVNode("div", _hoisted_29$5, [
6373
+ props.showSwatches ? (openBlock(), createElementBlock("div", _hoisted_44$1, [
5325
6374
  additionalSwatches.value.length > 0 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
5326
6375
  createVNode(unref(UiDivider), {
5327
6376
  text: _ctx.additionalSwatchesLabel || "Custom Colors",
@@ -5329,7 +6378,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5329
6378
  color: "#d1d5db",
5330
6379
  margin: 12
5331
6380
  }, null, 8, ["text"]),
5332
- createElementVNode("div", _hoisted_30$5, [
6381
+ createElementVNode("div", _hoisted_45$1, [
5333
6382
  (openBlock(true), createElementBlock(Fragment, null, renderList(additionalSwatches.value, (swatch) => {
5334
6383
  return openBlock(), createBlock(unref(UiTooltip), {
5335
6384
  key: swatch,
@@ -5342,7 +6391,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5342
6391
  class: normalizeClass(["ui-color-picker-swatch", { "ui-color-picker-swatch--active": isSwatchActive(swatch) }]),
5343
6392
  style: normalizeStyle(getSwatchStyle(swatch)),
5344
6393
  onClick: ($event) => setColorFromSwatch(swatch)
5345
- }, null, 14, _hoisted_31$5)
6394
+ }, null, 14, _hoisted_46$1)
5346
6395
  ]),
5347
6396
  _: 2
5348
6397
  }, 1032, ["content"]);
@@ -5353,7 +6402,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5353
6402
  color: "#d1d5db",
5354
6403
  margin: 8
5355
6404
  }),
5356
- createElementVNode("div", _hoisted_32$5, [
6405
+ createElementVNode("div", _hoisted_47$1, [
5357
6406
  (openBlock(true), createElementBlock(Fragment, null, renderList(mainSwatches.value, (swatch) => {
5358
6407
  return openBlock(), createBlock(unref(UiTooltip), {
5359
6408
  key: swatch,
@@ -5366,7 +6415,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5366
6415
  class: normalizeClass(["ui-color-picker-swatch", { "ui-color-picker-swatch--active": isSwatchActive(swatch) }]),
5367
6416
  style: normalizeStyle(getSwatchStyle(swatch)),
5368
6417
  onClick: ($event) => setColorFromSwatch(swatch)
5369
- }, null, 14, _hoisted_33$4)
6418
+ }, null, 14, _hoisted_48$1)
5370
6419
  ]),
5371
6420
  _: 2
5372
6421
  }, 1032, ["content"]);
@@ -5375,14 +6424,14 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5375
6424
  createElementVNode("div", {
5376
6425
  class: normalizeClass(["ui-color-picker-shades-container", { "ui-color-picker-shades-container--expanded": shouldShowShades.value }])
5377
6426
  }, [
5378
- createElementVNode("div", _hoisted_34$3, [
6427
+ createElementVNode("div", _hoisted_49$1, [
5379
6428
  createVNode(unref(UiDivider), {
5380
6429
  text: `${selectedSwatchLabel.value} Shades`,
5381
6430
  "text-position": "left",
5382
6431
  color: "#d1d5db",
5383
6432
  margin: 8
5384
6433
  }, null, 8, ["text"]),
5385
- createElementVNode("div", _hoisted_35$3, [
6434
+ createElementVNode("div", _hoisted_50$1, [
5386
6435
  (openBlock(true), createElementBlock(Fragment, null, renderList(shadeSwatches.value, (shade) => {
5387
6436
  return openBlock(), createBlock(unref(UiTooltip), {
5388
6437
  key: shade,
@@ -5395,7 +6444,7 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5395
6444
  class: normalizeClass(["ui-color-picker-swatch ui-color-picker-swatch--shade", { "ui-color-picker-swatch--active": isSwatchActive(shade) }]),
5396
6445
  style: normalizeStyle(getSwatchStyle(shade)),
5397
6446
  onClick: ($event) => setColorFromSwatch(shade)
5398
- }, null, 14, _hoisted_36$3)
6447
+ }, null, 14, _hoisted_51$1)
5399
6448
  ]),
5400
6449
  _: 2
5401
6450
  }, 1032, ["content"]);
@@ -5403,12 +6452,12 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
5403
6452
  ])
5404
6453
  ])
5405
6454
  ], 2)
5406
- ])
6455
+ ])) : createCommentVNode("", true)
5407
6456
  ]);
5408
6457
  };
5409
6458
  }
5410
6459
  });
5411
- const UiColorPickerPicker = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["__scopeId", "data-v-e9e45931"]]);
6460
+ const UiColorPickerPicker = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["__scopeId", "data-v-3634b582"]]);
5412
6461
  const _hoisted_1$u = { class: "ui-color-picker-button-container" };
5413
6462
  const _hoisted_2$o = { class: "ui-color-picker-button-preview" };
5414
6463
  const _sfc_main$x = /* @__PURE__ */ defineComponent({
@@ -5417,9 +6466,13 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
5417
6466
  modelValue: {},
5418
6467
  disabled: { type: Boolean, default: false },
5419
6468
  showAlpha: { type: Boolean, default: false },
5420
- showContrast: { type: Boolean, default: false },
6469
+ defaultColorFormat: { default: "hex" },
6470
+ swatches: {},
6471
+ additionalSwatches: {},
6472
+ additionalSwatchesLabel: {},
6473
+ showSwatches: { type: Boolean, default: true },
5421
6474
  compareColor: {},
5422
- swatches: { default: () => [] }
6475
+ showContrast: { type: Boolean, default: false }
5423
6476
  },
5424
6477
  emits: ["update:modelValue"],
5425
6478
  setup(__props, { emit: __emit }) {
@@ -5457,11 +6510,13 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
5457
6510
  const updatePopoverPosition = () => {
5458
6511
  if (!buttonRef.value?.$el || !popoverRef.value) return;
5459
6512
  const button = buttonRef.value.$el;
6513
+ const popover = popoverRef.value;
5460
6514
  const buttonRect = button.getBoundingClientRect();
5461
6515
  const viewportWidth = window.innerWidth;
5462
6516
  const viewportHeight = window.innerHeight;
5463
- const popoverWidth = 312;
5464
- const popoverHeight = 450;
6517
+ const popoverRect = popover.getBoundingClientRect();
6518
+ const popoverWidth = popoverRect.width || 312;
6519
+ const popoverHeight = popoverRect.height || 450;
5465
6520
  let top = buttonRect.bottom + 8;
5466
6521
  let left = buttonRect.left;
5467
6522
  if (left + popoverWidth > viewportWidth - 16) {
@@ -5534,7 +6589,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
5534
6589
  ref_key: "buttonRef",
5535
6590
  ref: buttonRef,
5536
6591
  disabled: props.disabled,
5537
- variant: "secondary",
6592
+ color: "secondary",
5538
6593
  "trailing-icon": "chevron-down",
5539
6594
  onClick: togglePopover
5540
6595
  }, {
@@ -5559,25 +6614,19 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
5559
6614
  class: "ui-color-picker-popover",
5560
6615
  style: normalizeStyle(popoverStyle.value)
5561
6616
  }, [
5562
- createVNode(UiColorPickerPicker, {
6617
+ createVNode(UiColorPickerPicker, mergeProps({
5563
6618
  modelValue: internalValue.value,
5564
- "onUpdate:modelValue": [
5565
- _cache[0] || (_cache[0] = ($event) => internalValue.value = $event),
5566
- _cache[1] || (_cache[1] = ($event) => _ctx.$emit("update:modelValue", $event))
5567
- ],
5568
- "show-alpha": props.showAlpha,
5569
- "show-contrast": props.showContrast,
5570
- "compare-color": props.compareColor,
5571
- disabled: props.disabled,
5572
- swatches: props.swatches
5573
- }, null, 8, ["modelValue", "show-alpha", "show-contrast", "compare-color", "disabled", "swatches"])
6619
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => internalValue.value = $event)
6620
+ }, props, {
6621
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => _ctx.$emit("update:modelValue", $event))
6622
+ }), null, 16, ["modelValue"])
5574
6623
  ], 4)) : createCommentVNode("", true)
5575
6624
  ]))
5576
6625
  ]);
5577
6626
  };
5578
6627
  }
5579
6628
  });
5580
- const UiColorPickerButton = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-805ac404"]]);
6629
+ const UiColorPickerButton = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-5d8fef82"]]);
5581
6630
  const _sfc_main$w = /* @__PURE__ */ defineComponent({
5582
6631
  __name: "UiColorPicker",
5583
6632
  props: {
@@ -5587,7 +6636,12 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
5587
6636
  swatches: {},
5588
6637
  variant: { default: "default" },
5589
6638
  compareColor: {},
5590
- showContrast: { type: Boolean, default: false }
6639
+ showContrast: { type: Boolean, default: false },
6640
+ defaultColorFormat: { default: "hex" },
6641
+ additionalSwatches: {},
6642
+ additionalSwatchesLabel: {},
6643
+ showSwatches: { type: Boolean, default: true },
6644
+ contrastLabel: {}
5591
6645
  },
5592
6646
  emits: ["update:modelValue", "change"],
5593
6647
  setup(__props, { emit: __emit }) {
@@ -5615,25 +6669,15 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
5615
6669
  }
5616
6670
  });
5617
6671
  return (_ctx, _cache) => {
5618
- return props.variant === "button" ? (openBlock(), createBlock(UiColorPickerButton, {
6672
+ return props.variant === "button" ? (openBlock(), createBlock(UiColorPickerButton, mergeProps({
5619
6673
  key: 0,
5620
6674
  modelValue: internalValue.value,
5621
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => internalValue.value = $event),
5622
- disabled: props.disabled,
5623
- "show-alpha": props.showAlpha,
5624
- "show-contrast": props.showContrast,
5625
- "compare-color": props.compareColor,
5626
- swatches: props.swatches
5627
- }, null, 8, ["modelValue", "disabled", "show-alpha", "show-contrast", "compare-color", "swatches"])) : (openBlock(), createBlock(UiColorPickerPicker, {
6675
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => internalValue.value = $event)
6676
+ }, props), null, 16, ["modelValue"])) : (openBlock(), createBlock(UiColorPickerPicker, mergeProps({
5628
6677
  key: 1,
5629
6678
  modelValue: internalValue.value,
5630
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => internalValue.value = $event),
5631
- disabled: props.disabled,
5632
- "show-alpha": props.showAlpha,
5633
- "show-contrast": props.showContrast,
5634
- "compare-color": props.compareColor,
5635
- swatches: props.swatches
5636
- }, null, 8, ["modelValue", "disabled", "show-alpha", "show-contrast", "compare-color", "swatches"]));
6679
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => internalValue.value = $event)
6680
+ }, props), null, 16, ["modelValue"]));
5637
6681
  };
5638
6682
  }
5639
6683
  });
@@ -6734,19 +7778,19 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
6734
7778
  createElementVNode("div", _hoisted_2$l, [
6735
7779
  _ctx.variant === "button" ? (openBlock(), createBlock(StrandsUiButton, {
6736
7780
  key: 0,
6737
- icon: "",
6738
- squircle: "",
6739
- iconName: currentIcon.value,
7781
+ icon: true,
7782
+ squircle: true,
7783
+ "icon-name": currentIcon.value,
6740
7784
  variant: "ghost",
6741
7785
  size: _ctx.size,
6742
7786
  disabled: isDisabled.value,
6743
7787
  onClick: _cache[0] || (_cache[0] = ($event) => isDisabled.value ? null : toggleTheme),
6744
7788
  title: isDisabled.value ? "Theme is locked by app settings" : `Switch to ${nextThemeLabel.value.toLowerCase()} theme`,
6745
7789
  class: normalizeClass(["ui-theme-toggle-button", { "ui-theme-toggle--disabled": isDisabled.value }])
6746
- }, null, 8, ["iconName", "size", "disabled", "title", "class"])) : _ctx.variant === "dropdown" ? (openBlock(), createElementBlock("div", _hoisted_3$k, [
7790
+ }, null, 8, ["icon-name", "size", "disabled", "title", "class"])) : _ctx.variant === "dropdown" ? (openBlock(), createElementBlock("div", _hoisted_3$k, [
6747
7791
  createVNode(StrandsUiButton, {
6748
- squircle: "",
6749
- iconName: currentIcon.value,
7792
+ squircle: true,
7793
+ "leading-icon": currentIcon.value,
6750
7794
  "trailing-icon": showDropdown.value ? "chevron-up" : "chevron-down",
6751
7795
  variant: "ghost",
6752
7796
  size: _ctx.size,
@@ -6759,7 +7803,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
6759
7803
  createTextVNode(toDisplayString(unref(themeLabel)) + toDisplayString(isDisabled.value ? " (Locked)" : ""), 1)
6760
7804
  ]),
6761
7805
  _: 1
6762
- }, 8, ["iconName", "trailing-icon", "size", "disabled", "class", "title"]),
7806
+ }, 8, ["leading-icon", "trailing-icon", "size", "disabled", "class", "title"]),
6763
7807
  showDropdown.value ? (openBlock(), createElementBlock("div", {
6764
7808
  key: 0,
6765
7809
  class: "ui-theme-toggle-menu",
@@ -6789,8 +7833,9 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
6789
7833
  return openBlock(), createBlock(StrandsUiButton, {
6790
7834
  key: option.value,
6791
7835
  variant: unref(currentTheme2) === option.value ? "primary" : "ghost",
6792
- icon: "",
6793
- squircle: "",
7836
+ icon: true,
7837
+ squircle: true,
7838
+ "icon-name": option.icon,
6794
7839
  size: _ctx.size,
6795
7840
  class: normalizeClass([
6796
7841
  "ui-theme-toggle-segment",
@@ -6800,12 +7845,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
6800
7845
  "aria-label": `${option.label} theme`,
6801
7846
  onClick: ($event) => unref(setTheme)(option.value),
6802
7847
  title: `Switch to ${option.label.toLowerCase()} theme`
6803
- }, {
6804
- default: withCtx(() => [
6805
- (openBlock(), createBlock(resolveDynamicComponent(getIconComponent(option.icon))))
6806
- ]),
6807
- _: 2
6808
- }, 1032, ["variant", "size", "class", "aria-pressed", "aria-label", "onClick", "title"]);
7848
+ }, null, 8, ["variant", "icon-name", "size", "class", "aria-pressed", "aria-label", "onClick", "title"]);
6809
7849
  }), 128))
6810
7850
  ])) : createCommentVNode("", true)
6811
7851
  ])
@@ -6813,7 +7853,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
6813
7853
  };
6814
7854
  }
6815
7855
  });
6816
- const UiThemeToggle = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-b67c31fe"]]);
7856
+ const UiThemeToggle = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-8758f364"]]);
6817
7857
  const slotHasContent = (slotName, slots) => {
6818
7858
  const slot = slots[slotName];
6819
7859
  if (!slot) return false;
@@ -7534,7 +8574,7 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
7534
8574
  ])]),
7535
8575
  footer: withCtx(() => [
7536
8576
  createElementVNode("div", _hoisted_36$2, [
7537
- createVNode(unref(StrandsUiButton), {
8577
+ createVNode(unref(CompoundUiButton), {
7538
8578
  variant: "secondary",
7539
8579
  onClick: closeModal,
7540
8580
  disabled: loading2.value
@@ -7544,7 +8584,7 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
7544
8584
  ])]),
7545
8585
  _: 1
7546
8586
  }, 8, ["disabled"]),
7547
- selectedMethod.value && selectedMethod.value.device_type !== "hardware" && selectedMethod.value.device_type !== "passkey" && (selectedMethod.value.device_type !== "email" || emailCodeSent.value) || (selectedMethod.value?.device_type === "hardware" || selectedMethod.value?.device_type === "passkey") && showBackupCodeInput.value ? (openBlock(), createBlock(unref(StrandsUiButton), {
8587
+ selectedMethod.value && selectedMethod.value.device_type !== "hardware" && selectedMethod.value.device_type !== "passkey" && (selectedMethod.value.device_type !== "email" || emailCodeSent.value) || (selectedMethod.value?.device_type === "hardware" || selectedMethod.value?.device_type === "passkey") && showBackupCodeInput.value ? (openBlock(), createBlock(unref(CompoundUiButton), {
7548
8588
  key: 0,
7549
8589
  variant: "primary",
7550
8590
  onClick: _cache[5] || (_cache[5] = ($event) => showBackupCodeInput.value ? verifyBackupCode() : verify()),
@@ -7604,7 +8644,7 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
7604
8644
  ])) : createCommentVNode("", true),
7605
8645
  selectedMethod.value?.device_type === "email" && !emailCodeSent.value ? (openBlock(), createElementBlock("div", _hoisted_17$a, [
7606
8646
  _cache[10] || (_cache[10] = createElementVNode("p", { class: "mfa-email-request-text" }, "Click below to receive your verification code", -1)),
7607
- createVNode(unref(StrandsUiButton), {
8647
+ createVNode(unref(CompoundUiButton), {
7608
8648
  variant: "primary",
7609
8649
  onClick: sendEmailCode,
7610
8650
  disabled: loading2.value,
@@ -7631,7 +8671,7 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
7631
8671
  ])
7632
8672
  ])
7633
8673
  ]),
7634
- createVNode(unref(StrandsUiButton), {
8674
+ createVNode(unref(CompoundUiButton), {
7635
8675
  variant: "primary",
7636
8676
  onClick: authenticateHardwareKey,
7637
8677
  disabled: loading2.value,
@@ -7643,7 +8683,7 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
7643
8683
  _: 1
7644
8684
  }, 8, ["disabled", "loading"]),
7645
8685
  createElementVNode("div", _hoisted_25$4, [
7646
- createVNode(unref(StrandsUiButton), {
8686
+ createVNode(unref(CompoundUiButton), {
7647
8687
  variant: "ghost",
7648
8688
  size: "sm",
7649
8689
  onClick: _cache[0] || (_cache[0] = ($event) => showBackupCodeInput.value = !showBackupCodeInput.value),
@@ -7744,7 +8784,7 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
7744
8784
  createElementVNode("span", _hoisted_31$4, '"' + toDisplayString(selectedMethod.value.device_name) + '"', 1)
7745
8785
  ])) : createCommentVNode("", true),
7746
8786
  selectedMethod.value.device_type === "email" ? (openBlock(), createElementBlock("div", _hoisted_32$4, [
7747
- createVNode(unref(StrandsUiButton), {
8787
+ createVNode(unref(CompoundUiButton), {
7748
8788
  variant: "ghost",
7749
8789
  size: "sm",
7750
8790
  onClick: sendEmailCode,
@@ -7758,7 +8798,7 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
7758
8798
  }, 8, ["disabled"])
7759
8799
  ])) : createCommentVNode("", true),
7760
8800
  createElementVNode("div", _hoisted_33$3, [
7761
- createVNode(unref(StrandsUiButton), {
8801
+ createVNode(unref(CompoundUiButton), {
7762
8802
  variant: "ghost",
7763
8803
  size: "sm",
7764
8804
  onClick: _cache[3] || (_cache[3] = ($event) => showBackupCodeInput.value = !showBackupCodeInput.value),
@@ -8453,7 +9493,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
8453
9493
  default: withCtx(() => [
8454
9494
  !isPasswordReset.value && displayProviders.value?.length ? (openBlock(), createElementBlock("div", _hoisted_9$c, [
8455
9495
  (openBlock(true), createElementBlock(Fragment, null, renderList(displayProviders.value, (provider) => {
8456
- return openBlock(), createBlock(unref(StrandsUiButton), {
9496
+ return openBlock(), createBlock(unref(CompoundUiButton), {
8457
9497
  key: provider.id,
8458
9498
  variant: "outline",
8459
9499
  "full-width": "",
@@ -8574,7 +9614,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
8574
9614
  _: 1
8575
9615
  })
8576
9616
  ]),
8577
- createVNode(unref(StrandsUiButton), {
9617
+ createVNode(unref(CompoundUiButton), {
8578
9618
  type: "submit",
8579
9619
  variant: "primary",
8580
9620
  "full-width": "",
@@ -8869,7 +9909,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
8869
9909
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(enabledProviders), (provider, __, ___, _cached) => {
8870
9910
  const _memo = [provider.id, provider.name, provider.displayName, unref(oauthLoading)];
8871
9911
  if (_cached && _cached.key === provider.id && isMemoSame(_cached, _memo)) return _cached;
8872
- const _item = (openBlock(), createBlock(unref(StrandsUiButton), {
9912
+ const _item = (openBlock(), createBlock(unref(CompoundUiButton), {
8873
9913
  key: provider.id,
8874
9914
  variant: "outline",
8875
9915
  "full-width": "",
@@ -8957,7 +9997,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
8957
9997
  ])
8958
9998
  ])
8959
9999
  ]),
8960
- createVNode(unref(StrandsUiButton), {
10000
+ createVNode(unref(CompoundUiButton), {
8961
10001
  type: "submit",
8962
10002
  variant: "primary",
8963
10003
  "full-width": "",
@@ -9217,7 +10257,7 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
9217
10257
  createElementVNode("strong", null, toDisplayString(successEmail.value), 1)
9218
10258
  ])) : createCommentVNode("", true),
9219
10259
  _cache[5] || (_cache[5] = createElementVNode("p", { class: "signup-success-instructions" }, " Click the link in your email to complete your account setup. The link will expire in 24 hours. ", -1)),
9220
- createVNode(unref(StrandsUiButton), {
10260
+ createVNode(unref(CompoundUiButton), {
9221
10261
  variant: "outline",
9222
10262
  "full-width": "",
9223
10263
  onClick: resetToForm,
@@ -9246,7 +10286,7 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
9246
10286
  ], -1)),
9247
10287
  unref(enabledProviders)?.length ? (openBlock(), createElementBlock("div", _hoisted_13$a, [
9248
10288
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(enabledProviders), (provider) => {
9249
- return openBlock(), createBlock(unref(StrandsUiButton), {
10289
+ return openBlock(), createBlock(unref(CompoundUiButton), {
9250
10290
  key: provider.id,
9251
10291
  variant: "outline",
9252
10292
  "full-width": "",
@@ -9324,7 +10364,7 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
9324
10364
  ])
9325
10365
  ])
9326
10366
  ]),
9327
- createVNode(unref(StrandsUiButton), {
10367
+ createVNode(unref(CompoundUiButton), {
9328
10368
  type: "submit",
9329
10369
  variant: "primary",
9330
10370
  "full-width": "",
@@ -9566,7 +10606,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
9566
10606
  _cache[8] || (_cache[8] = createElementVNode("h1", { class: "complete-signup-success-title" }, "Welcome to Strands!", -1)),
9567
10607
  _cache[9] || (_cache[9] = createElementVNode("p", { class: "complete-signup-success-message" }, " Your account has been created successfully. ", -1)),
9568
10608
  _cache[10] || (_cache[10] = createElementVNode("p", { class: "complete-signup-success-instructions" }, " You are now signed in and can access your dashboard. ", -1)),
9569
- createVNode(unref(StrandsUiButton), {
10609
+ createVNode(unref(CompoundUiButton), {
9570
10610
  variant: "primary",
9571
10611
  "full-width": "",
9572
10612
  onClick: redirectToReferrer
@@ -9589,7 +10629,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
9589
10629
  _cache[13] || (_cache[13] = createElementVNode("h1", { class: "complete-signup-error-title" }, "Invalid Link", -1)),
9590
10630
  _cache[14] || (_cache[14] = createElementVNode("p", { class: "complete-signup-error-message" }, " This registration link is invalid or has expired. ", -1)),
9591
10631
  _cache[15] || (_cache[15] = createElementVNode("p", { class: "complete-signup-error-instructions" }, " Please request a new magic link to complete your registration. ", -1)),
9592
- createVNode(unref(StrandsUiButton), {
10632
+ createVNode(unref(CompoundUiButton), {
9593
10633
  variant: "primary",
9594
10634
  "full-width": "",
9595
10635
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("request-new-link"))
@@ -9660,7 +10700,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
9660
10700
  }, null, 8, ["modelValue", "error"]),
9661
10701
  _cache[19] || (_cache[19] = createElementVNode("div", { class: "complete-signup-password-hint" }, " Password must be at least 8 characters long ", -1))
9662
10702
  ]),
9663
- createVNode(unref(StrandsUiButton), {
10703
+ createVNode(unref(CompoundUiButton), {
9664
10704
  type: "submit",
9665
10705
  variant: "primary",
9666
10706
  "full-width": "",
@@ -9714,7 +10754,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
9714
10754
  _cache[25] || (_cache[25] = createElementVNode("h1", { class: "complete-signup-warning-title" }, "Missing Token", -1)),
9715
10755
  _cache[26] || (_cache[26] = createElementVNode("p", { class: "complete-signup-warning-message" }, " No registration token was provided. ", -1)),
9716
10756
  _cache[27] || (_cache[27] = createElementVNode("p", { class: "complete-signup-warning-instructions" }, " This page requires a valid registration token from the magic link in your email. ", -1)),
9717
- createVNode(unref(StrandsUiButton), {
10757
+ createVNode(unref(CompoundUiButton), {
9718
10758
  variant: "primary",
9719
10759
  "full-width": "",
9720
10760
  onClick: _cache[5] || (_cache[5] = ($event) => _ctx.$emit("start-registration"))
@@ -9892,7 +10932,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
9892
10932
  disabled: unref(loading2)
9893
10933
  }, null, 8, ["modelValue", "error", "disabled"]),
9894
10934
  createElementVNode("div", _hoisted_3$c, [
9895
- createVNode(unref(StrandsUiButton), {
10935
+ createVNode(unref(CompoundUiButton), {
9896
10936
  variant: "secondary",
9897
10937
  onClick: closeModal,
9898
10938
  disabled: unref(loading2)
@@ -9902,7 +10942,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
9902
10942
  ])]),
9903
10943
  _: 1
9904
10944
  }, 8, ["disabled"]),
9905
- createVNode(unref(StrandsUiButton), {
10945
+ createVNode(unref(CompoundUiButton), {
9906
10946
  variant: "primary",
9907
10947
  onClick: startSetup,
9908
10948
  disabled: !deviceName.value.trim() || unref(loading2),
@@ -9957,7 +10997,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
9957
10997
  ], -1)
9958
10998
  ])])) : createCommentVNode("", true),
9959
10999
  createElementVNode("div", _hoisted_12$8, [
9960
- createVNode(unref(StrandsUiButton), {
11000
+ createVNode(unref(CompoundUiButton), {
9961
11001
  variant: "secondary",
9962
11002
  onClick: _cache[1] || (_cache[1] = ($event) => step.value = 1),
9963
11003
  disabled: unref(loading2)
@@ -9967,7 +11007,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
9967
11007
  ])]),
9968
11008
  _: 1
9969
11009
  }, 8, ["disabled"]),
9970
- createVNode(unref(StrandsUiButton), {
11010
+ createVNode(unref(CompoundUiButton), {
9971
11011
  variant: "primary",
9972
11012
  onClick: _cache[2] || (_cache[2] = ($event) => step.value = 3),
9973
11013
  disabled: unref(loading2)
@@ -9995,7 +11035,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
9995
11035
  onInput: onVerificationCodeInput
9996
11036
  }, null, 8, ["modelValue", "error", "disabled"]),
9997
11037
  createElementVNode("div", _hoisted_14$8, [
9998
- createVNode(unref(StrandsUiButton), {
11038
+ createVNode(unref(CompoundUiButton), {
9999
11039
  variant: "secondary",
10000
11040
  onClick: _cache[4] || (_cache[4] = ($event) => step.value = 2),
10001
11041
  disabled: unref(loading2)
@@ -10005,7 +11045,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
10005
11045
  ])]),
10006
11046
  _: 1
10007
11047
  }, 8, ["disabled"]),
10008
- createVNode(unref(StrandsUiButton), {
11048
+ createVNode(unref(CompoundUiButton), {
10009
11049
  variant: "primary",
10010
11050
  onClick: verifySetup,
10011
11051
  disabled: verificationCode.value.length !== 6 || unref(loading2),
@@ -10067,7 +11107,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
10067
11107
  ])
10068
11108
  ]),
10069
11109
  createElementVNode("div", _hoisted_19$4, [
10070
- createVNode(unref(StrandsUiButton), {
11110
+ createVNode(unref(CompoundUiButton), {
10071
11111
  variant: "secondary",
10072
11112
  size: "sm",
10073
11113
  onClick: copyBackupCodes
@@ -10080,7 +11120,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
10080
11120
  ])
10081
11121
  ]),
10082
11122
  createElementVNode("div", _hoisted_20$4, [
10083
- createVNode(unref(StrandsUiButton), {
11123
+ createVNode(unref(CompoundUiButton), {
10084
11124
  variant: "primary",
10085
11125
  onClick: finish
10086
11126
  }, {
@@ -10265,7 +11305,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
10265
11305
  _: 1
10266
11306
  }),
10267
11307
  createElementVNode("div", _hoisted_3$b, [
10268
- createVNode(unref(StrandsUiButton), {
11308
+ createVNode(unref(CompoundUiButton), {
10269
11309
  variant: "secondary",
10270
11310
  onClick: closeModal,
10271
11311
  disabled: unref(loading2)
@@ -10275,7 +11315,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
10275
11315
  ])]),
10276
11316
  _: 1
10277
11317
  }, 8, ["disabled"]),
10278
- createVNode(unref(StrandsUiButton), {
11318
+ createVNode(unref(CompoundUiButton), {
10279
11319
  variant: "primary",
10280
11320
  onClick: startSetup,
10281
11321
  disabled: !deviceName.value.trim() || unref(loading2),
@@ -10323,7 +11363,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
10323
11363
  onInput: onVerificationCodeInput
10324
11364
  }, null, 8, ["modelValue", "error", "disabled"]),
10325
11365
  createElementVNode("div", _hoisted_5$9, [
10326
- createVNode(unref(StrandsUiButton), {
11366
+ createVNode(unref(CompoundUiButton), {
10327
11367
  variant: "secondary",
10328
11368
  size: "sm",
10329
11369
  onClick: resendCode,
@@ -10336,7 +11376,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
10336
11376
  }, 8, ["disabled"])
10337
11377
  ]),
10338
11378
  createElementVNode("div", _hoisted_6$8, [
10339
- createVNode(unref(StrandsUiButton), {
11379
+ createVNode(unref(CompoundUiButton), {
10340
11380
  variant: "secondary",
10341
11381
  onClick: _cache[2] || (_cache[2] = ($event) => step.value = 1),
10342
11382
  disabled: unref(loading2)
@@ -10346,7 +11386,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
10346
11386
  ])]),
10347
11387
  _: 1
10348
11388
  }, 8, ["disabled"]),
10349
- createVNode(unref(StrandsUiButton), {
11389
+ createVNode(unref(CompoundUiButton), {
10350
11390
  variant: "primary",
10351
11391
  onClick: verifySetup,
10352
11392
  disabled: verificationCode.value.length !== 6 || unref(loading2),
@@ -10399,7 +11439,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
10399
11439
  ])
10400
11440
  ], -1)),
10401
11441
  createElementVNode("div", _hoisted_8$8, [
10402
- createVNode(unref(StrandsUiButton), {
11442
+ createVNode(unref(CompoundUiButton), {
10403
11443
  variant: "primary",
10404
11444
  onClick: finish
10405
11445
  }, {
@@ -10725,7 +11765,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
10725
11765
  disabled: loading2.value
10726
11766
  }, null, 8, ["modelValue", "error", "disabled"]),
10727
11767
  createElementVNode("div", _hoisted_3$a, [
10728
- createVNode(unref(StrandsUiButton), {
11768
+ createVNode(unref(CompoundUiButton), {
10729
11769
  variant: "secondary",
10730
11770
  onClick: closeModal,
10731
11771
  disabled: loading2.value
@@ -10735,7 +11775,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
10735
11775
  ])]),
10736
11776
  _: 1
10737
11777
  }, 8, ["disabled"]),
10738
- createVNode(unref(StrandsUiButton), {
11778
+ createVNode(unref(CompoundUiButton), {
10739
11779
  variant: "primary",
10740
11780
  onClick: startSetup,
10741
11781
  disabled: !deviceName.value.trim() || loading2.value,
@@ -10804,7 +11844,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
10804
11844
  ])
10805
11845
  ]),
10806
11846
  createElementVNode("div", _hoisted_8$7, [
10807
- createVNode(unref(StrandsUiButton), {
11847
+ createVNode(unref(CompoundUiButton), {
10808
11848
  variant: "secondary",
10809
11849
  onClick: _cache[1] || (_cache[1] = ($event) => step.value = 1),
10810
11850
  disabled: loading2.value
@@ -10814,7 +11854,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
10814
11854
  ])]),
10815
11855
  _: 1
10816
11856
  }, 8, ["disabled"]),
10817
- createVNode(unref(StrandsUiButton), {
11857
+ createVNode(unref(CompoundUiButton), {
10818
11858
  variant: "primary",
10819
11859
  onClick: handleRegisterHardwareKey,
10820
11860
  disabled: loading2.value,
@@ -10910,7 +11950,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
10910
11950
  ])
10911
11951
  ]),
10912
11952
  createElementVNode("div", _hoisted_17$5, [
10913
- createVNode(unref(StrandsUiButton), {
11953
+ createVNode(unref(CompoundUiButton), {
10914
11954
  variant: "secondary",
10915
11955
  size: "sm",
10916
11956
  onClick: copyBackupCodes
@@ -10923,7 +11963,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
10923
11963
  ])
10924
11964
  ]),
10925
11965
  createElementVNode("div", _hoisted_18$4, [
10926
- createVNode(unref(StrandsUiButton), {
11966
+ createVNode(unref(CompoundUiButton), {
10927
11967
  variant: "primary",
10928
11968
  onClick: finish
10929
11969
  }, {
@@ -10955,7 +11995,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
10955
11995
  createElementVNode("p", _hoisted_21$3, toDisplayString(errorMessage.value), 1)
10956
11996
  ]),
10957
11997
  createElementVNode("div", _hoisted_22$3, [
10958
- createVNode(unref(StrandsUiButton), {
11998
+ createVNode(unref(CompoundUiButton), {
10959
11999
  variant: "secondary",
10960
12000
  onClick: _cache[2] || (_cache[2] = ($event) => step.value = 1)
10961
12001
  }, {
@@ -10964,7 +12004,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
10964
12004
  ])]),
10965
12005
  _: 1
10966
12006
  }),
10967
- createVNode(unref(StrandsUiButton), {
12007
+ createVNode(unref(CompoundUiButton), {
10968
12008
  variant: "primary",
10969
12009
  onClick: closeModal
10970
12010
  }, {
@@ -11159,7 +12199,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
11159
12199
  ])
11160
12200
  ]),
11161
12201
  createElementVNode("div", _hoisted_11$6, [
11162
- createVNode(unref(StrandsUiButton), {
12202
+ createVNode(unref(CompoundUiButton), {
11163
12203
  variant: "secondary",
11164
12204
  size: "sm",
11165
12205
  onClick: copyBackupCodes
@@ -11169,7 +12209,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
11169
12209
  ])]),
11170
12210
  _: 1
11171
12211
  }),
11172
- createVNode(unref(StrandsUiButton), {
12212
+ createVNode(unref(CompoundUiButton), {
11173
12213
  variant: "secondary",
11174
12214
  size: "sm",
11175
12215
  onClick: downloadBackupCodes
@@ -11183,7 +12223,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
11183
12223
  ])) : createCommentVNode("", true),
11184
12224
  createElementVNode("div", _hoisted_12$6, [
11185
12225
  createElementVNode("div", _hoisted_13$6, [
11186
- createVNode(unref(StrandsUiButton), {
12226
+ createVNode(unref(CompoundUiButton), {
11187
12227
  variant: "secondary",
11188
12228
  onClick: regenerateCodes,
11189
12229
  disabled: unref(loading2),
@@ -11194,7 +12234,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
11194
12234
  ])]),
11195
12235
  _: 1
11196
12236
  }, 8, ["disabled", "loading"]),
11197
- createVNode(unref(StrandsUiButton), {
12237
+ createVNode(unref(CompoundUiButton), {
11198
12238
  variant: "primary",
11199
12239
  onClick: closeModal
11200
12240
  }, {
@@ -11222,7 +12262,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
11222
12262
  _cache[11] || (_cache[11] = createElementVNode("p", { class: "backup-codes-regenerate-title" }, "Regenerate Backup Codes?", -1)),
11223
12263
  _cache[12] || (_cache[12] = createElementVNode("p", { class: "backup-codes-regenerate-description" }, " This will invalidate all current backup codes. Make sure to save the new ones. ", -1)),
11224
12264
  createElementVNode("div", _hoisted_16$5, [
11225
- createVNode(unref(StrandsUiButton), {
12265
+ createVNode(unref(CompoundUiButton), {
11226
12266
  variant: "primary",
11227
12267
  size: "sm",
11228
12268
  onClick: confirmRegenerate,
@@ -11234,7 +12274,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
11234
12274
  ])]),
11235
12275
  _: 1
11236
12276
  }, 8, ["disabled", "loading"]),
11237
- createVNode(unref(StrandsUiButton), {
12277
+ createVNode(unref(CompoundUiButton), {
11238
12278
  variant: "secondary",
11239
12279
  size: "sm",
11240
12280
  onClick: _cache[0] || (_cache[0] = ($event) => showRegenerateWarning.value = false)
@@ -11304,7 +12344,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
11304
12344
  default: withCtx(() => [
11305
12345
  createElementVNode("p", _hoisted_3$8, toDisplayString(_ctx.message), 1),
11306
12346
  createElementVNode("div", _hoisted_4$8, [
11307
- createVNode(unref(StrandsUiButton), {
12347
+ createVNode(unref(CompoundUiButton), {
11308
12348
  variant: "secondary",
11309
12349
  onClick: handleCancel,
11310
12350
  disabled: loading2.value
@@ -11314,7 +12354,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
11314
12354
  ]),
11315
12355
  _: 1
11316
12356
  }, 8, ["disabled"]),
11317
- createVNode(unref(StrandsUiButton), {
12357
+ createVNode(unref(CompoundUiButton), {
11318
12358
  variant: _ctx.variant,
11319
12359
  onClick: handleConfirm,
11320
12360
  disabled: loading2.value,
@@ -11461,7 +12501,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
11461
12501
  ]);
11462
12502
  }
11463
12503
  };
11464
- const Shield = {
12504
+ const Shield2 = {
11465
12505
  props: ["size"],
11466
12506
  render() {
11467
12507
  return h("svg", { width: this.size, height: this.size, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, [
@@ -11596,7 +12636,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
11596
12636
  ]),
11597
12637
  createElementVNode("div", _hoisted_7$5, [
11598
12638
  unref(mfaEnabled2) ? (openBlock(), createElementBlock("span", _hoisted_8$5, [
11599
- createVNode(Shield, {
12639
+ createVNode(Shield2, {
11600
12640
  size: 12,
11601
12641
  class: "mfa-badge-icon"
11602
12642
  }),
@@ -11626,7 +12666,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
11626
12666
  createElementVNode("p", { class: "mfa-device-option-description" }, "Use apps like Google Authenticator, or Authy")
11627
12667
  ], -1))
11628
12668
  ]),
11629
- createVNode(unref(StrandsUiButton), {
12669
+ createVNode(unref(CompoundUiButton), {
11630
12670
  variant: "outline",
11631
12671
  size: "sm",
11632
12672
  onClick: _cache[0] || (_cache[0] = ($event) => showTotpSetupModal.value = true)
@@ -11647,7 +12687,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
11647
12687
  createElementVNode("p", { class: "mfa-device-option-description" }, "Receive verification codes via email")
11648
12688
  ], -1))
11649
12689
  ]),
11650
- createVNode(unref(StrandsUiButton), {
12690
+ createVNode(unref(CompoundUiButton), {
11651
12691
  variant: "outline",
11652
12692
  size: "sm",
11653
12693
  onClick: _cache[1] || (_cache[1] = ($event) => showEmailMfaSetupModal.value = true)
@@ -11668,7 +12708,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
11668
12708
  createElementVNode("p", { class: "mfa-device-option-description" }, "Use a physical security key (YubiKey, etc.)")
11669
12709
  ], -1))
11670
12710
  ]),
11671
- createVNode(unref(StrandsUiButton), {
12711
+ createVNode(unref(CompoundUiButton), {
11672
12712
  variant: "outline",
11673
12713
  size: "sm",
11674
12714
  onClick: _cache[2] || (_cache[2] = ($event) => showHardwareKeySetupModal.value = true)
@@ -11689,7 +12729,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
11689
12729
  createElementVNode("p", { class: "mfa-device-option-description" }, "Use biometric authentication or device PIN")
11690
12730
  ], -1))
11691
12731
  ]),
11692
- createVNode(unref(StrandsUiButton), {
12732
+ createVNode(unref(CompoundUiButton), {
11693
12733
  variant: "outline",
11694
12734
  size: "sm",
11695
12735
  onClick: _cache[3] || (_cache[3] = ($event) => showPasskeySetupModal.value = true)
@@ -11705,11 +12745,11 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
11705
12745
  ])) : currentTab?.value === "manage" ? (openBlock(), createElementBlock("div", _hoisted_24$2, [
11706
12746
  unref(activeMfaDevices).length === 0 ? (openBlock(), createElementBlock("div", _hoisted_25$2, [
11707
12747
  createElementVNode("div", _hoisted_26$2, [
11708
- createVNode(Shield, { size: 48 })
12748
+ createVNode(Shield2, { size: 48 })
11709
12749
  ]),
11710
12750
  _cache[24] || (_cache[24] = createElementVNode("h3", { class: "mfa-empty-title" }, "No MFA Devices", -1)),
11711
12751
  _cache[25] || (_cache[25] = createElementVNode("p", { class: "mfa-empty-description" }, "You haven't set up any multi-factor authentication devices yet.", -1)),
11712
- createVNode(unref(StrandsUiButton), {
12752
+ createVNode(unref(CompoundUiButton), {
11713
12753
  onClick: _cache[4] || (_cache[4] = ($event) => activeTab.value = "add"),
11714
12754
  variant: "primary"
11715
12755
  }, {
@@ -11747,7 +12787,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
11747
12787
  ])
11748
12788
  ]),
11749
12789
  createElementVNode("div", _hoisted_33$2, [
11750
- device.device_type === "email" && !device.verified ? (openBlock(), createBlock(unref(StrandsUiButton), {
12790
+ device.device_type === "email" && !device.verified ? (openBlock(), createBlock(unref(CompoundUiButton), {
11751
12791
  key: 0,
11752
12792
  variant: "outline",
11753
12793
  size: "xs",
@@ -11767,7 +12807,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
11767
12807
  onConfirm: ($event) => handleRemoveDevice(device)
11768
12808
  }, {
11769
12809
  trigger: withCtx(() => [
11770
- createVNode(unref(StrandsUiButton), {
12810
+ createVNode(unref(CompoundUiButton), {
11771
12811
  variant: "ghost",
11772
12812
  size: "xs",
11773
12813
  disabled: disablingDevice[device.id]
@@ -11793,7 +12833,7 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
11793
12833
  device.backup_codes && device.backup_codes.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_37$1, [
11794
12834
  createVNode(StrandsBackupCodesModal, { device }, {
11795
12835
  trigger: withCtx(() => [
11796
- createVNode(unref(StrandsUiButton), {
12836
+ createVNode(unref(CompoundUiButton), {
11797
12837
  variant: "outline",
11798
12838
  size: "xs"
11799
12839
  }, {
@@ -12395,7 +13435,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
12395
13435
  ])
12396
13436
  ]),
12397
13437
  !session.is_current ? (openBlock(), createElementBlock("div", _hoisted_18$2, [
12398
- createVNode(unref(StrandsUiButton), {
13438
+ createVNode(unref(CompoundUiButton), {
12399
13439
  variant: "outline",
12400
13440
  size: "xs",
12401
13441
  onClick: ($event) => revokeSession(session.id),
@@ -12438,7 +13478,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
12438
13478
  }), 128))
12439
13479
  ]),
12440
13480
  sessions.value.length > 1 ? (openBlock(), createElementBlock("div", _hoisted_32$1, [
12441
- createVNode(unref(StrandsUiButton), {
13481
+ createVNode(unref(CompoundUiButton), {
12442
13482
  variant: "outline",
12443
13483
  onClick: handleRevokeAllOther,
12444
13484
  disabled: revokingAll.value
@@ -13312,7 +14352,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13312
14352
  _cache[15] || (_cache[15] = createElementVNode("h4", { class: "profile-setting-title" }, "Email Address", -1)),
13313
14353
  createElementVNode("p", _hoisted_15$2, toDisplayString(currentUser.value?.email), 1)
13314
14354
  ]),
13315
- createVNode(unref(StrandsUiButton), {
14355
+ createVNode(unref(CompoundUiButton), {
13316
14356
  variant: "secondary",
13317
14357
  size: "sm",
13318
14358
  onClick: _cache[2] || (_cache[2] = ($event) => showEmailChange.value = !showEmailChange.value)
@@ -13342,7 +14382,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13342
14382
  autocomplete: "current-password",
13343
14383
  error: emailChangeForm.errors.password
13344
14384
  }, null, 8, ["modelValue", "error"]),
13345
- createVNode(unref(StrandsUiButton), {
14385
+ createVNode(unref(CompoundUiButton), {
13346
14386
  variant: "primary",
13347
14387
  size: "sm",
13348
14388
  onClick: handleEmailChange,
@@ -13364,7 +14404,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13364
14404
  _cache[16] || (_cache[16] = createElementVNode("h4", { class: "profile-field-title" }, "Username", -1)),
13365
14405
  createElementVNode("p", _hoisted_19, toDisplayString(currentUser.value?.username || "No username set"), 1)
13366
14406
  ]),
13367
- createVNode(unref(StrandsUiButton), {
14407
+ createVNode(unref(CompoundUiButton), {
13368
14408
  variant: "secondary",
13369
14409
  size: "sm",
13370
14410
  disabled: !usernameChangeData.canChange || usernameChangeLoading.value,
@@ -13391,7 +14431,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13391
14431
  key: 0,
13392
14432
  class: normalizeClass(["profile-availability-message", usernameAvailability.available ? "success" : "error"])
13393
14433
  }, toDisplayString(usernameAvailability.message), 3)) : createCommentVNode("", true),
13394
- createVNode(unref(StrandsUiButton), {
14434
+ createVNode(unref(CompoundUiButton), {
13395
14435
  variant: "primary",
13396
14436
  size: "sm",
13397
14437
  onClick: handleUsernameChange,
@@ -13416,7 +14456,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13416
14456
  _cache[18] || (_cache[18] = createElementVNode("h4", { class: "profile-field-title" }, "Password", -1)),
13417
14457
  createElementVNode("p", _hoisted_24, "Last updated " + toDisplayString(passwordLastUpdated.value), 1)
13418
14458
  ]),
13419
- createVNode(unref(StrandsUiButton), {
14459
+ createVNode(unref(CompoundUiButton), {
13420
14460
  variant: "secondary",
13421
14461
  size: "sm",
13422
14462
  onClick: _cache[6] || (_cache[6] = ($event) => showPasswordChange.value = !showPasswordChange.value)
@@ -13451,7 +14491,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13451
14491
  placeholder: "Confirm new password",
13452
14492
  autocomplete: "new-password"
13453
14493
  }, null, 8, ["modelValue"]),
13454
- createVNode(unref(StrandsUiButton), {
14494
+ createVNode(unref(CompoundUiButton), {
13455
14495
  variant: "primary",
13456
14496
  size: "sm",
13457
14497
  onClick: handlePasswordChange,
@@ -13490,7 +14530,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13490
14530
  }), 128))
13491
14531
  ])) : createCommentVNode("", true)
13492
14532
  ]),
13493
- createVNode(unref(StrandsUiButton), {
14533
+ createVNode(unref(CompoundUiButton), {
13494
14534
  variant: "secondary",
13495
14535
  size: "sm",
13496
14536
  class: "profile-toggle-container",
@@ -13512,7 +14552,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13512
14552
  ])
13513
14553
  ]),
13514
14554
  createElementVNode("div", _hoisted_36, [
13515
- createVNode(unref(StrandsUiButton), {
14555
+ createVNode(unref(CompoundUiButton), {
13516
14556
  variant: "secondary",
13517
14557
  size: "sm",
13518
14558
  disabled: loadingSessions.value,
@@ -13529,7 +14569,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13529
14569
  ])
13530
14570
  ]),
13531
14571
  hasChanges.value ? (openBlock(), createElementBlock("div", _hoisted_37, [
13532
- createVNode(unref(StrandsUiButton), {
14572
+ createVNode(unref(CompoundUiButton), {
13533
14573
  type: "submit",
13534
14574
  variant: "primary",
13535
14575
  disabled: loading2.value,
@@ -13540,7 +14580,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13540
14580
  ]),
13541
14581
  _: 1
13542
14582
  }, 8, ["disabled", "loading"]),
13543
- createVNode(unref(StrandsUiButton), {
14583
+ createVNode(unref(CompoundUiButton), {
13544
14584
  variant: "secondary",
13545
14585
  onClick: handleCancel,
13546
14586
  disabled: loading2.value
@@ -13593,7 +14633,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13593
14633
  }, {
13594
14634
  default: withCtx(() => [
13595
14635
  createElementVNode("div", _hoisted_46, [
13596
- createVNode(unref(StrandsUiButton), {
14636
+ createVNode(unref(CompoundUiButton), {
13597
14637
  color: "danger",
13598
14638
  onClick: handleSignOut,
13599
14639
  disabled: signingOut.value,
@@ -13606,7 +14646,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
13606
14646
  }, 8, ["disabled"]),
13607
14647
  createVNode(StrandsSettingsModal, { onSettingsUpdated: handleSettingsUpdated }, {
13608
14648
  trigger: withCtx(() => [
13609
- createVNode(unref(StrandsUiButton), {
14649
+ createVNode(unref(CompoundUiButton), {
13610
14650
  variant: "secondary",
13611
14651
  class: "profile-sign-out-button"
13612
14652
  }, {
@@ -13773,7 +14813,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
13773
14813
  disabled: loading2.value || isSubmitted.value,
13774
14814
  error: error.value ? "Email address not found" : void 0
13775
14815
  }, null, 8, ["modelValue", "disabled", "error"]),
13776
- createVNode(unref(StrandsUiButton), {
14816
+ createVNode(unref(CompoundUiButton), {
13777
14817
  type: "submit",
13778
14818
  variant: "primary",
13779
14819
  "full-width": "",
@@ -14211,7 +15251,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
14211
15251
  invert: !!props.user
14212
15252
  }, {
14213
15253
  default: withCtx(() => [
14214
- createVNode(unref(StrandsUiButton), {
15254
+ createVNode(unref(CompoundUiButton), {
14215
15255
  color: "secondary",
14216
15256
  active: showDropdown.value,
14217
15257
  onClick: toggleDropdown,
@@ -14374,7 +15414,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
14374
15414
  }, 8, ["modelValue"])
14375
15415
  ]),
14376
15416
  fallback: withCtx(() => [
14377
- createVNode(unref(StrandsUiButton), {
15417
+ createVNode(unref(CompoundUiButton), {
14378
15418
  onClick: openSignIn,
14379
15419
  "aria-label": "Sign in"
14380
15420
  }, {
@@ -14552,7 +15592,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
14552
15592
  const getNavItemComponent = () => {
14553
15593
  const actualType = getActualType();
14554
15594
  if (actualType === "button" && props.type === "button") {
14555
- return StrandsUiButton;
15595
+ return CompoundUiButton;
14556
15596
  } else if (props.to) {
14557
15597
  return "router-link";
14558
15598
  } else {
@@ -14847,7 +15887,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14847
15887
  ]);
14848
15888
  }
14849
15889
  };
14850
- const Shield = {
15890
+ const Shield2 = {
14851
15891
  props: {
14852
15892
  size: {
14853
15893
  type: [String, Number],
@@ -14960,7 +16000,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14960
16000
  ]),
14961
16001
  footer: withCtx(() => [
14962
16002
  createElementVNode("div", _hoisted_18, [
14963
- createVNode(unref(StrandsUiButton), {
16003
+ createVNode(unref(CompoundUiButton), {
14964
16004
  variant: "secondary",
14965
16005
  onClick: closeModal,
14966
16006
  disabled: unref(loading2)
@@ -14981,7 +16021,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
14981
16021
  unref(mfaEnabled2) || unref(activeMfaDevices).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_7, [
14982
16022
  createElementVNode("div", _hoisted_8, [
14983
16023
  createElementVNode("div", _hoisted_9, [
14984
- createVNode(Shield, {
16024
+ createVNode(Shield2, {
14985
16025
  size: 20,
14986
16026
  class: "mfa-setup-shield-icon"
14987
16027
  })
@@ -15010,7 +16050,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15010
16050
  createElementVNode("h4", { class: "mfa-setup-method-title" }, "Authenticator App"),
15011
16051
  createElementVNode("p", { class: "mfa-setup-method-description" }, "Use Google Authenticator, Authy, or any TOTP-compatible app to generate secure codes")
15012
16052
  ], -1)),
15013
- createVNode(unref(StrandsUiButton), {
16053
+ createVNode(unref(CompoundUiButton), {
15014
16054
  variant: "primary",
15015
16055
  size: "md",
15016
16056
  onClick: withModifiers(startTotpSetup, ["stop"]),
@@ -15039,7 +16079,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15039
16079
  createElementVNode("h4", { class: "mfa-setup-method-title" }, "Email Verification"),
15040
16080
  createElementVNode("p", { class: "mfa-setup-method-description" }, "Receive verification codes directly in your email inbox for easy access")
15041
16081
  ], -1)),
15042
- createVNode(unref(StrandsUiButton), {
16082
+ createVNode(unref(CompoundUiButton), {
15043
16083
  variant: "primary",
15044
16084
  size: "md",
15045
16085
  onClick: withModifiers(startEmailMfaSetup, ["stop"]),
@@ -15061,7 +16101,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15061
16101
  _cache[13] || (_cache[13] = createElementVNode("h3", { class: "mfa-setup-manage-title" }, "Manage Existing Methods", -1)),
15062
16102
  createElementVNode("p", _hoisted_17, toDisplayString(unref(activeMfaDevices).length) + " device(s) currently active", 1)
15063
16103
  ]),
15064
- createVNode(unref(StrandsUiButton), {
16104
+ createVNode(unref(CompoundUiButton), {
15065
16105
  variant: "secondary",
15066
16106
  size: "md",
15067
16107
  onClick: openMfaModal,
@@ -15357,7 +16397,7 @@ export {
15357
16397
  StrandsUiAlert,
15358
16398
  UiApp as StrandsUiApp,
15359
16399
  _sfc_main$B as StrandsUiAvatarEditor,
15360
- StrandsUiButton,
16400
+ CompoundUiButton as StrandsUiButton,
15361
16401
  StrandsUiCard,
15362
16402
  _sfc_main$w as StrandsUiColorPicker,
15363
16403
  UiDivider as StrandsUiDivider,
@@ -15379,7 +16419,7 @@ export {
15379
16419
  UiApp,
15380
16420
  _sfc_main$B as UiAvatarEditor,
15381
16421
  _sfc_main$B as UiAvatarEditorSimple,
15382
- StrandsUiButton as UiButton,
16422
+ CompoundUiButton as UiButton,
15383
16423
  StrandsUiCard as UiCard,
15384
16424
  _sfc_main$w as UiColorPicker,
15385
16425
  UiDivider,