@skewedaspect/sleekspace-ui 0.5.1 → 0.6.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.
Files changed (35) hide show
  1. package/dist/components/Card/SkCard.vue.d.ts +13 -1
  2. package/dist/components/Panel/SkPanel.vue.d.ts +15 -1
  3. package/dist/components/Panel/types.d.ts +1 -0
  4. package/dist/components/Select/SkSelect.vue.d.ts +61 -0
  5. package/dist/components/Select/SkSelectItem.vue.d.ts +134 -0
  6. package/dist/components/Select/SkSelectSeparator.vue.d.ts +2 -0
  7. package/dist/components/Select/index.d.ts +4 -0
  8. package/dist/components/Select/types.d.ts +3 -0
  9. package/dist/components/Sidebar/SkSidebar.vue.d.ts +8 -1
  10. package/dist/components/Sidebar/types.d.ts +1 -0
  11. package/dist/components/Skeleton/SkSkeleton.vue.d.ts +1 -1
  12. package/dist/index.d.ts +7 -0
  13. package/dist/sleekspace-ui.css +444 -34
  14. package/dist/sleekspace-ui.es.js +2014 -283
  15. package/dist/sleekspace-ui.umd.js +2013 -282
  16. package/package.json +1 -1
  17. package/src/components/Card/SkCard.vue +17 -1
  18. package/src/components/Panel/SkPanel.vue +29 -4
  19. package/src/components/Panel/types.ts +3 -0
  20. package/src/components/Select/SkSelect.vue +210 -0
  21. package/src/components/Select/SkSelectItem.vue +112 -0
  22. package/src/components/Select/SkSelectSeparator.vue +40 -0
  23. package/src/components/Select/index.ts +10 -0
  24. package/src/components/Select/types.ts +10 -0
  25. package/src/components/Sidebar/SkSidebar.vue +39 -2
  26. package/src/components/Sidebar/types.ts +2 -0
  27. package/src/global.d.ts +2 -0
  28. package/src/index.ts +10 -0
  29. package/src/styles/components/_card.scss +45 -9
  30. package/src/styles/components/_index.scss +1 -0
  31. package/src/styles/components/_listbox.scss +1 -0
  32. package/src/styles/components/_panel.scss +119 -13
  33. package/src/styles/components/_select.scss +439 -0
  34. package/src/styles/components/_sidebar.scss +83 -4
  35. package/web-types.json +148 -1
@@ -1,5 +1,5 @@
1
1
  import * as vue from "vue";
2
- import { inject, provide, Fragment, toValue as toValue$2, shallowRef, readonly, watch, getCurrentScope, onScopeDispose, effectScope, computed, customRef, onBeforeUnmount, watchEffect, isRef, reactive, unref, toRefs, getCurrentInstance, ref, nextTick, onMounted, toHandlerKey, camelize, toRef, onUnmounted, defineComponent, h, Comment, mergeProps, cloneVNode, createBlock, openBlock, withCtx, renderSlot, createVNode, createCommentVNode, withKeys, normalizeStyle, Teleport, normalizeProps, guardReactiveProps, markRaw, createElementBlock, renderList, resolveDynamicComponent, withModifiers, watchPostEffect, shallowReadonly, mergeDefaults, watchSyncEffect, withMemo, createTextVNode, toDisplayString, toRaw, useSlots, toHandlers, normalizeClass, createElementVNode, useCssVars, mergeModels, useModel, withDirectives, vModelDynamic, Transition, vModelText } from "vue";
2
+ import { inject, provide, Fragment, toValue as toValue$2, shallowRef, readonly, watch, getCurrentScope, onScopeDispose, effectScope, computed, customRef, onBeforeUnmount, watchEffect, isRef, reactive, unref, toRefs, getCurrentInstance, ref, nextTick, onMounted, toHandlerKey, camelize, toRef, onUnmounted, defineComponent, h, Comment, mergeProps, cloneVNode, createBlock, openBlock, withCtx, renderSlot, createVNode, createCommentVNode, withKeys, normalizeStyle, Teleport, normalizeProps, guardReactiveProps, markRaw, createElementBlock, renderList, resolveDynamicComponent, withModifiers, watchPostEffect, shallowReadonly, mergeDefaults, watchSyncEffect, withMemo, createTextVNode, toDisplayString, createElementVNode, toRaw, useSlots, toHandlers, normalizeClass, useCssVars, mergeModels, useModel, withDirectives, vModelDynamic, useTemplateRef, Transition, vModelText } from "vue";
3
3
  function serialize(o) {
4
4
  return typeof o == "string" ? `'${o}'` : new c().serialize(o);
5
5
  }
@@ -762,6 +762,44 @@ function useRafFn(fn, options = {}) {
762
762
  function cloneFnJSON(source) {
763
763
  return JSON.parse(JSON.stringify(source));
764
764
  }
765
+ function useResizeObserver(target, callback, options = {}) {
766
+ const { window: window2 = defaultWindow, ...observerOptions } = options;
767
+ let observer;
768
+ const isSupported = useSupported(() => window2 && "ResizeObserver" in window2);
769
+ const cleanup = () => {
770
+ if (observer) {
771
+ observer.disconnect();
772
+ observer = void 0;
773
+ }
774
+ };
775
+ const targets = computed(() => {
776
+ const _targets = toValue$2(target);
777
+ return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];
778
+ });
779
+ const stopWatch = watch(
780
+ targets,
781
+ (els) => {
782
+ cleanup();
783
+ if (isSupported.value && window2) {
784
+ observer = new ResizeObserver(callback);
785
+ for (const _el of els) {
786
+ if (_el)
787
+ observer.observe(_el, observerOptions);
788
+ }
789
+ }
790
+ },
791
+ { immediate: true, flush: "post" }
792
+ );
793
+ const stop = () => {
794
+ cleanup();
795
+ stopWatch();
796
+ };
797
+ tryOnScopeDispose(stop);
798
+ return {
799
+ isSupported,
800
+ stop
801
+ };
802
+ }
765
803
  const EVENT_FOCUS_IN = "focusin";
766
804
  const EVENT_FOCUS_OUT = "focusout";
767
805
  const PSEUDO_CLASS_FOCUS_WITHIN = ":focus-within";
@@ -2906,7 +2944,7 @@ var FocusScope_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
2906
2944
  });
2907
2945
  var FocusScope_default = FocusScope_vue_vue_type_script_setup_true_lang_default;
2908
2946
  const ITEM_SELECT = "menu.itemSelect";
2909
- const SELECTION_KEYS = ["Enter", " "];
2947
+ const SELECTION_KEYS$1 = ["Enter", " "];
2910
2948
  const FIRST_KEYS = [
2911
2949
  "ArrowDown",
2912
2950
  "PageUp",
@@ -2919,8 +2957,8 @@ const LAST_KEYS = [
2919
2957
  ];
2920
2958
  const FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];
2921
2959
  const SUB_OPEN_KEYS = {
2922
- ltr: [...SELECTION_KEYS, "ArrowRight"],
2923
- rtl: [...SELECTION_KEYS, "ArrowLeft"]
2960
+ ltr: [...SELECTION_KEYS$1, "ArrowRight"],
2961
+ rtl: [...SELECTION_KEYS$1, "ArrowLeft"]
2924
2962
  };
2925
2963
  const SUB_CLOSE_KEYS = {
2926
2964
  ltr: ["ArrowLeft"],
@@ -4246,7 +4284,7 @@ var PopperAnchor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
4246
4284
  }
4247
4285
  });
4248
4286
  var PopperAnchor_default = PopperAnchor_vue_vue_type_script_setup_true_lang_default;
4249
- const _hoisted_1$y = {
4287
+ const _hoisted_1$C = {
4250
4288
  key: 0,
4251
4289
  d: "M0 0L6 6L12 0"
4252
4290
  };
@@ -4291,7 +4329,7 @@ var Arrow_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
4291
4329
  viewBox: _ctx.asChild ? void 0 : "0 0 12 6",
4292
4330
  preserveAspectRatio: _ctx.asChild ? void 0 : "none"
4293
4331
  }), {
4294
- default: withCtx(() => [renderSlot(_ctx.$slots, "default", {}, () => [!_ctx.rounded ? (openBlock(), createElementBlock("path", _hoisted_1$y)) : (openBlock(), createElementBlock("path", _hoisted_2$i))])]),
4332
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", {}, () => [!_ctx.rounded ? (openBlock(), createElementBlock("path", _hoisted_1$C)) : (openBlock(), createElementBlock("path", _hoisted_2$i))])]),
4295
4333
  _: 3
4296
4334
  }, 16, [
4297
4335
  "width",
@@ -6475,12 +6513,12 @@ var ComboboxAnchor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
6475
6513
  }
6476
6514
  });
6477
6515
  var ComboboxAnchor_default = ComboboxAnchor_vue_vue_type_script_setup_true_lang_default;
6478
- function valueComparator(value, currentValue, comparator) {
6516
+ function valueComparator$1(value, currentValue, comparator) {
6479
6517
  if (value === void 0) return false;
6480
- else if (Array.isArray(value)) return value.some((val) => compare(val, currentValue, comparator));
6481
- else return compare(value, currentValue, comparator);
6518
+ else if (Array.isArray(value)) return value.some((val) => compare$1(val, currentValue, comparator));
6519
+ else return compare$1(value, currentValue, comparator);
6482
6520
  }
6483
- function compare(value, currentValue, comparator) {
6521
+ function compare$1(value, currentValue, comparator) {
6484
6522
  if (value === void 0 || currentValue === void 0) return false;
6485
6523
  if (typeof value === "string") return value === currentValue;
6486
6524
  if (typeof comparator === "function") return comparator(value, currentValue);
@@ -6574,7 +6612,7 @@ var ListboxRoot_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
6574
6612
  isUserAction.value = true;
6575
6613
  if (props.multiple) {
6576
6614
  const modelArray = Array.isArray(modelValue.value) ? [...modelValue.value] : [];
6577
- const index = modelArray.findIndex((i) => compare(i, val, props.by));
6615
+ const index = modelArray.findIndex((i) => compare$1(i, val, props.by));
6578
6616
  if (props.selectionBehavior === "toggle") {
6579
6617
  index === -1 ? modelArray.push(val) : modelArray.splice(index, 1);
6580
6618
  modelValue.value = modelArray;
@@ -6582,7 +6620,7 @@ var ListboxRoot_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
6582
6620
  modelValue.value = [val];
6583
6621
  firstValue.value = val;
6584
6622
  }
6585
- } else if (props.selectionBehavior === "toggle") if (compare(modelValue.value, val, props.by)) modelValue.value = void 0;
6623
+ } else if (props.selectionBehavior === "toggle") if (compare$1(modelValue.value, val, props.by)) modelValue.value = void 0;
6586
6624
  else modelValue.value = val;
6587
6625
  else modelValue.value = val;
6588
6626
  setTimeout(() => {
@@ -6610,7 +6648,7 @@ var ListboxRoot_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
6610
6648
  function highlightItem(value) {
6611
6649
  if (isVirtual.value) virtualHighlightHook.trigger(value);
6612
6650
  else {
6613
- const item = getItems().find((i) => compare(i.value, value, props.by));
6651
+ const item = getItems().find((i) => compare$1(i.value, value, props.by));
6614
6652
  if (item) {
6615
6653
  highlightedElement.value = item.ref;
6616
6654
  changeHighlight(item.ref);
@@ -6989,7 +7027,7 @@ var ListboxItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
6989
7027
  const { forwardRef, currentElement } = useForwardExpose();
6990
7028
  const rootContext = injectListboxRootContext();
6991
7029
  const isHighlighted = computed(() => currentElement.value === rootContext.highlightedElement.value);
6992
- const isSelected = computed(() => valueComparator(rootContext.modelValue.value, props.value, rootContext.by));
7030
+ const isSelected = computed(() => valueComparator$1(rootContext.modelValue.value, props.value, rootContext.by));
6993
7031
  const disabled = computed(() => rootContext.disabled.value || props.disabled);
6994
7032
  async function handleSelect2(ev) {
6995
7033
  emits("select", ev);
@@ -8539,7 +8577,7 @@ var MenuItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
8539
8577
  onKeydown: _cache[2] || (_cache[2] = async (event) => {
8540
8578
  const isTypingAhead = unref(contentContext).searchRef.value !== "";
8541
8579
  if (_ctx.disabled || isTypingAhead && event.key === " ") return;
8542
- if (unref(SELECTION_KEYS).includes(event.key)) {
8580
+ if (unref(SELECTION_KEYS$1).includes(event.key)) {
8543
8581
  event.currentTarget.click();
8544
8582
  event.preventDefault();
8545
8583
  }
@@ -11952,167 +11990,1626 @@ var RadioGroupIndicator_vue_vue_type_script_setup_true_lang_default = /* @__PURE
11952
11990
  }
11953
11991
  });
11954
11992
  var RadioGroupIndicator_default = RadioGroupIndicator_vue_vue_type_script_setup_true_lang_default;
11955
- function getNextSortedValues(prevValues = [], nextValue, atIndex) {
11956
- const nextValues = [...prevValues];
11957
- nextValues[atIndex] = nextValue;
11958
- return nextValues.sort((a, b) => a - b);
11959
- }
11960
- function convertValueToPercentage(value, min2, max2) {
11961
- const maxSteps = max2 - min2;
11962
- const percentPerStep = 100 / maxSteps;
11963
- const percentage = percentPerStep * (value - min2);
11964
- return clamp$1(percentage, 0, 100);
11965
- }
11966
- function getLabel(index, totalValues) {
11967
- if (totalValues > 2) return `Value ${index + 1} of ${totalValues}`;
11968
- else if (totalValues === 2) return ["Minimum", "Maximum"][index];
11969
- else return void 0;
11970
- }
11971
- function getClosestValueIndex(values, nextValue) {
11972
- if (values.length === 1) return 0;
11973
- const distances = values.map((value) => Math.abs(value - nextValue));
11974
- const closestDistance = Math.min(...distances);
11975
- return distances.indexOf(closestDistance);
11976
- }
11977
- function getThumbInBoundsOffset(width, left, direction) {
11978
- const halfWidth = width / 2;
11979
- const halfPercent = 50;
11980
- const offset2 = linearScale([0, halfPercent], [0, halfWidth]);
11981
- return (halfWidth - offset2(left) * direction) * direction;
11982
- }
11983
- function getStepsBetweenValues(values) {
11984
- return values.slice(0, -1).map((value, index) => values[index + 1] - value);
11985
- }
11986
- function hasMinStepsBetweenValues(values, minStepsBetweenValues) {
11987
- if (minStepsBetweenValues > 0) {
11988
- const stepsBetweenValues = getStepsBetweenValues(values);
11989
- const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);
11990
- return actualMinStepsBetweenValues >= minStepsBetweenValues;
11991
- }
11992
- return true;
11993
- }
11994
- function linearScale(input, output) {
11995
- return (value) => {
11996
- if (input[0] === input[1] || output[0] === output[1]) return output[0];
11997
- const ratio = (output[1] - output[0]) / (input[1] - input[0]);
11998
- return output[0] + ratio * (value - input[0]);
11999
- };
11993
+ const OPEN_KEYS = [
11994
+ " ",
11995
+ "Enter",
11996
+ "ArrowUp",
11997
+ "ArrowDown"
11998
+ ];
11999
+ const SELECTION_KEYS = [" ", "Enter"];
12000
+ const CONTENT_MARGIN = 10;
12001
+ function valueComparator(value, currentValue, comparator) {
12002
+ if (value === void 0) return false;
12003
+ else if (Array.isArray(value)) return value.some((val) => compare(val, currentValue, comparator));
12004
+ else return compare(value, currentValue, comparator);
12000
12005
  }
12001
- function getDecimalCount(value) {
12002
- return (String(value).split(".")[1] || "").length;
12006
+ function compare(value, currentValue, comparator) {
12007
+ if (value === void 0 || currentValue === void 0) return false;
12008
+ if (typeof value === "string") return value === currentValue;
12009
+ if (typeof comparator === "function") return comparator(value, currentValue);
12010
+ if (typeof comparator === "string") return value?.[comparator] === currentValue?.[comparator];
12011
+ return isEqual(value, currentValue);
12003
12012
  }
12004
- function roundValue(value, decimalCount) {
12005
- const rounder = 10 ** decimalCount;
12006
- return Math.round(value * rounder) / rounder;
12013
+ function shouldShowPlaceholder(value) {
12014
+ return value === void 0 || value === null || value === "" || Array.isArray(value) && value.length === 0;
12007
12015
  }
12008
- const PAGE_KEYS = ["PageUp", "PageDown"];
12009
- const ARROW_KEYS = [
12010
- "ArrowUp",
12011
- "ArrowDown",
12012
- "ArrowLeft",
12013
- "ArrowRight"
12014
- ];
12015
- const BACK_KEYS = {
12016
- "from-left": [
12017
- "Home",
12018
- "PageDown",
12019
- "ArrowDown",
12020
- "ArrowLeft"
12021
- ],
12022
- "from-right": [
12023
- "Home",
12024
- "PageDown",
12025
- "ArrowDown",
12026
- "ArrowRight"
12027
- ],
12028
- "from-bottom": [
12029
- "Home",
12030
- "PageDown",
12031
- "ArrowDown",
12032
- "ArrowLeft"
12033
- ],
12034
- "from-top": [
12035
- "Home",
12036
- "PageUp",
12037
- "ArrowUp",
12038
- "ArrowLeft"
12039
- ]
12016
+ const _hoisted_1$B = {
12017
+ key: 0,
12018
+ value: ""
12040
12019
  };
12041
- const [injectSliderOrientationContext, provideSliderOrientationContext] = createContext(["SliderVertical", "SliderHorizontal"]);
12042
- var SliderHorizontal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12043
- __name: "SliderHorizontal",
12020
+ const [injectSelectRootContext, provideSelectRootContext] = createContext("SelectRoot");
12021
+ var SelectRoot_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12022
+ inheritAttrs: false,
12023
+ __name: "SelectRoot",
12044
12024
  props: {
12025
+ open: {
12026
+ type: Boolean,
12027
+ required: false,
12028
+ default: void 0
12029
+ },
12030
+ defaultOpen: {
12031
+ type: Boolean,
12032
+ required: false
12033
+ },
12034
+ defaultValue: {
12035
+ type: null,
12036
+ required: false
12037
+ },
12038
+ modelValue: {
12039
+ type: null,
12040
+ required: false,
12041
+ default: void 0
12042
+ },
12043
+ by: {
12044
+ type: [String, Function],
12045
+ required: false
12046
+ },
12045
12047
  dir: {
12046
12048
  type: String,
12047
12049
  required: false
12048
12050
  },
12049
- min: {
12050
- type: Number,
12051
- required: true
12051
+ multiple: {
12052
+ type: Boolean,
12053
+ required: false
12052
12054
  },
12053
- max: {
12054
- type: Number,
12055
- required: true
12055
+ autocomplete: {
12056
+ type: String,
12057
+ required: false
12056
12058
  },
12057
- inverted: {
12059
+ disabled: {
12058
12060
  type: Boolean,
12059
- required: true
12061
+ required: false
12062
+ },
12063
+ name: {
12064
+ type: String,
12065
+ required: false
12066
+ },
12067
+ required: {
12068
+ type: Boolean,
12069
+ required: false
12060
12070
  }
12061
12071
  },
12062
- emits: [
12063
- "slideEnd",
12064
- "slideStart",
12065
- "slideMove",
12066
- "homeKeyDown",
12067
- "endKeyDown",
12068
- "stepKeyDown"
12069
- ],
12072
+ emits: ["update:modelValue", "update:open"],
12070
12073
  setup(__props, { emit: __emit }) {
12071
12074
  const props = __props;
12072
12075
  const emits = __emit;
12073
- const { max: max2, min: min2, dir, inverted } = toRefs(props);
12074
- const { forwardRef, currentElement: sliderElement } = useForwardExpose();
12075
- const rootContext = injectSliderRootContext();
12076
- const offsetPosition = ref();
12077
- const rectRef = ref();
12078
- const isSlidingFromLeft = computed(() => dir?.value !== "rtl" && !inverted.value || dir?.value !== "ltr" && inverted.value);
12079
- function getValueFromPointerEvent(event, slideStart) {
12080
- const rect = rectRef.value || sliderElement.value.getBoundingClientRect();
12081
- const thumb = [...rootContext.thumbElements.value][rootContext.valueIndexToChangeRef.value];
12082
- const thumbWidth = rootContext.thumbAlignment.value === "contain" ? thumb.clientWidth : 0;
12083
- if (!offsetPosition.value && !slideStart && rootContext.thumbAlignment.value === "contain") offsetPosition.value = event.clientX - thumb.getBoundingClientRect().left;
12084
- const input = [0, rect.width - thumbWidth];
12085
- const output = isSlidingFromLeft.value ? [min2.value, max2.value] : [max2.value, min2.value];
12086
- const value = linearScale(input, output);
12087
- rectRef.value = rect;
12088
- const position = slideStart ? event.clientX - rect.left - thumbWidth / 2 : event.clientX - rect.left - (offsetPosition.value ?? 0);
12089
- return value(position);
12090
- }
12091
- const startEdge = computed(() => isSlidingFromLeft.value ? "left" : "right");
12092
- const endEdge = computed(() => isSlidingFromLeft.value ? "right" : "left");
12093
- const direction = computed(() => isSlidingFromLeft.value ? 1 : -1);
12094
- provideSliderOrientationContext({
12095
- startEdge,
12096
- endEdge,
12097
- direction,
12098
- size: "width"
12076
+ const { required, disabled, multiple, dir: propDir } = toRefs(props);
12077
+ const modelValue = useVModel(props, "modelValue", emits, {
12078
+ defaultValue: props.defaultValue ?? (multiple.value ? [] : void 0),
12079
+ passive: props.modelValue === void 0,
12080
+ deep: true
12081
+ });
12082
+ const open = useVModel(props, "open", emits, {
12083
+ defaultValue: props.defaultOpen,
12084
+ passive: props.open === void 0
12085
+ });
12086
+ const triggerElement = ref();
12087
+ const valueElement = ref();
12088
+ const triggerPointerDownPosRef = ref({
12089
+ x: 0,
12090
+ y: 0
12091
+ });
12092
+ const isEmptyModelValue = computed(() => {
12093
+ if (multiple.value && Array.isArray(modelValue.value)) return modelValue.value?.length === 0;
12094
+ else return isNullish(modelValue.value);
12095
+ });
12096
+ useCollection({ isProvider: true });
12097
+ const dir = useDirection(propDir);
12098
+ const isFormControl = useFormControl(triggerElement);
12099
+ const optionsSet = ref(/* @__PURE__ */ new Set());
12100
+ const nativeSelectKey = computed(() => {
12101
+ return Array.from(optionsSet.value).map((option) => option.value).join(";");
12102
+ });
12103
+ function handleValueChange(value) {
12104
+ if (multiple.value) {
12105
+ const array = Array.isArray(modelValue.value) ? [...modelValue.value] : [];
12106
+ const index = array.findIndex((i) => compare(i, value, props.by));
12107
+ index === -1 ? array.push(value) : array.splice(index, 1);
12108
+ modelValue.value = [...array];
12109
+ } else modelValue.value = value;
12110
+ }
12111
+ function getOption(value) {
12112
+ return Array.from(optionsSet.value).find((option) => valueComparator(value, option.value, props.by));
12113
+ }
12114
+ provideSelectRootContext({
12115
+ triggerElement,
12116
+ onTriggerChange: (node) => {
12117
+ triggerElement.value = node;
12118
+ },
12119
+ valueElement,
12120
+ onValueElementChange: (node) => {
12121
+ valueElement.value = node;
12122
+ },
12123
+ contentId: "",
12124
+ modelValue,
12125
+ onValueChange: handleValueChange,
12126
+ by: props.by,
12127
+ open,
12128
+ multiple,
12129
+ required,
12130
+ onOpenChange: (value) => {
12131
+ open.value = value;
12132
+ },
12133
+ dir,
12134
+ triggerPointerDownPosRef,
12135
+ disabled,
12136
+ isEmptyModelValue,
12137
+ optionsSet,
12138
+ onOptionAdd: (option) => {
12139
+ const existingOption = getOption(option.value);
12140
+ if (existingOption) optionsSet.value.delete(existingOption);
12141
+ optionsSet.value.add(option);
12142
+ },
12143
+ onOptionRemove: (option) => {
12144
+ const existingOption = getOption(option.value);
12145
+ if (existingOption) optionsSet.value.delete(existingOption);
12146
+ }
12099
12147
  });
12100
12148
  return (_ctx, _cache) => {
12101
- return openBlock(), createBlock(SliderImpl_default, {
12102
- ref: unref(forwardRef),
12103
- dir: unref(dir),
12104
- "data-orientation": "horizontal",
12105
- style: normalizeStyle({ ["--reka-slider-thumb-transform"]: !isSlidingFromLeft.value && unref(rootContext).thumbAlignment.value === "overflow" ? "translateX(50%)" : "translateX(-50%)" }),
12106
- onSlideStart: _cache[0] || (_cache[0] = (event) => {
12107
- const value = getValueFromPointerEvent(event, true);
12108
- emits("slideStart", value);
12109
- }),
12110
- onSlideMove: _cache[1] || (_cache[1] = (event) => {
12111
- const value = getValueFromPointerEvent(event);
12112
- emits("slideMove", value);
12113
- }),
12114
- onSlideEnd: _cache[2] || (_cache[2] = () => {
12115
- rectRef.value = void 0;
12149
+ return openBlock(), createBlock(unref(PopperRoot_default), null, {
12150
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", {
12151
+ modelValue: unref(modelValue),
12152
+ open: unref(open)
12153
+ }), unref(isFormControl) ? (openBlock(), createBlock(BubbleSelect_default, {
12154
+ key: nativeSelectKey.value,
12155
+ "aria-hidden": "true",
12156
+ tabindex: "-1",
12157
+ multiple: unref(multiple),
12158
+ required: unref(required),
12159
+ name: _ctx.name,
12160
+ autocomplete: _ctx.autocomplete,
12161
+ disabled: unref(disabled),
12162
+ value: unref(modelValue)
12163
+ }, {
12164
+ default: withCtx(() => [unref(isNullish)(unref(modelValue)) ? (openBlock(), createElementBlock("option", _hoisted_1$B)) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(Array.from(optionsSet.value), (option) => {
12165
+ return openBlock(), createElementBlock("option", mergeProps({ key: option.value ?? "" }, { ref_for: true }, option), null, 16);
12166
+ }), 128))]),
12167
+ _: 1
12168
+ }, 8, [
12169
+ "multiple",
12170
+ "required",
12171
+ "name",
12172
+ "autocomplete",
12173
+ "disabled",
12174
+ "value"
12175
+ ])) : createCommentVNode("v-if", true)]),
12176
+ _: 3
12177
+ });
12178
+ };
12179
+ }
12180
+ });
12181
+ var SelectRoot_default = SelectRoot_vue_vue_type_script_setup_true_lang_default;
12182
+ var BubbleSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12183
+ __name: "BubbleSelect",
12184
+ props: {
12185
+ autocomplete: {
12186
+ type: String,
12187
+ required: false
12188
+ },
12189
+ autofocus: {
12190
+ type: Boolean,
12191
+ required: false
12192
+ },
12193
+ disabled: {
12194
+ type: Boolean,
12195
+ required: false
12196
+ },
12197
+ form: {
12198
+ type: String,
12199
+ required: false
12200
+ },
12201
+ multiple: {
12202
+ type: Boolean,
12203
+ required: false
12204
+ },
12205
+ name: {
12206
+ type: String,
12207
+ required: false
12208
+ },
12209
+ required: {
12210
+ type: Boolean,
12211
+ required: false
12212
+ },
12213
+ size: {
12214
+ type: Number,
12215
+ required: false
12216
+ },
12217
+ value: {
12218
+ type: null,
12219
+ required: false
12220
+ }
12221
+ },
12222
+ setup(__props) {
12223
+ const props = __props;
12224
+ const selectElement = ref();
12225
+ const rootContext = injectSelectRootContext();
12226
+ watch(() => props.value, (cur, prev) => {
12227
+ const selectProto = window.HTMLSelectElement.prototype;
12228
+ const descriptor = Object.getOwnPropertyDescriptor(selectProto, "value");
12229
+ const setValue = descriptor.set;
12230
+ if (cur !== prev && setValue && selectElement.value) {
12231
+ const event = new Event("change", { bubbles: true });
12232
+ setValue.call(selectElement.value, cur);
12233
+ selectElement.value.dispatchEvent(event);
12234
+ }
12235
+ });
12236
+ function handleInput(event) {
12237
+ rootContext.onValueChange(event.target.value);
12238
+ }
12239
+ return (_ctx, _cache) => {
12240
+ return openBlock(), createBlock(unref(VisuallyHidden_default), { "as-child": "" }, {
12241
+ default: withCtx(() => [createElementVNode("select", mergeProps({
12242
+ ref_key: "selectElement",
12243
+ ref: selectElement
12244
+ }, props, { onInput: handleInput }), [renderSlot(_ctx.$slots, "default")], 16)]),
12245
+ _: 3
12246
+ });
12247
+ };
12248
+ }
12249
+ });
12250
+ var BubbleSelect_default = BubbleSelect_vue_vue_type_script_setup_true_lang_default;
12251
+ var SelectPopperPosition_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12252
+ __name: "SelectPopperPosition",
12253
+ props: {
12254
+ side: {
12255
+ type: null,
12256
+ required: false
12257
+ },
12258
+ sideOffset: {
12259
+ type: Number,
12260
+ required: false
12261
+ },
12262
+ sideFlip: {
12263
+ type: Boolean,
12264
+ required: false
12265
+ },
12266
+ align: {
12267
+ type: null,
12268
+ required: false,
12269
+ default: "start"
12270
+ },
12271
+ alignOffset: {
12272
+ type: Number,
12273
+ required: false
12274
+ },
12275
+ alignFlip: {
12276
+ type: Boolean,
12277
+ required: false
12278
+ },
12279
+ avoidCollisions: {
12280
+ type: Boolean,
12281
+ required: false
12282
+ },
12283
+ collisionBoundary: {
12284
+ type: null,
12285
+ required: false
12286
+ },
12287
+ collisionPadding: {
12288
+ type: [Number, Object],
12289
+ required: false,
12290
+ default: CONTENT_MARGIN
12291
+ },
12292
+ arrowPadding: {
12293
+ type: Number,
12294
+ required: false
12295
+ },
12296
+ sticky: {
12297
+ type: String,
12298
+ required: false
12299
+ },
12300
+ hideWhenDetached: {
12301
+ type: Boolean,
12302
+ required: false
12303
+ },
12304
+ positionStrategy: {
12305
+ type: String,
12306
+ required: false
12307
+ },
12308
+ updatePositionStrategy: {
12309
+ type: String,
12310
+ required: false
12311
+ },
12312
+ disableUpdateOnLayoutShift: {
12313
+ type: Boolean,
12314
+ required: false
12315
+ },
12316
+ prioritizePosition: {
12317
+ type: Boolean,
12318
+ required: false
12319
+ },
12320
+ reference: {
12321
+ type: null,
12322
+ required: false
12323
+ },
12324
+ asChild: {
12325
+ type: Boolean,
12326
+ required: false
12327
+ },
12328
+ as: {
12329
+ type: null,
12330
+ required: false
12331
+ }
12332
+ },
12333
+ setup(__props) {
12334
+ const props = __props;
12335
+ const forwarded = useForwardProps(props);
12336
+ return (_ctx, _cache) => {
12337
+ return openBlock(), createBlock(unref(PopperContent_default), mergeProps(unref(forwarded), { style: {
12338
+ "boxSizing": "border-box",
12339
+ "--reka-select-content-transform-origin": "var(--reka-popper-transform-origin)",
12340
+ "--reka-select-content-available-width": "var(--reka-popper-available-width)",
12341
+ "--reka-select-content-available-height": "var(--reka-popper-available-height)",
12342
+ "--reka-select-trigger-width": "var(--reka-popper-anchor-width)",
12343
+ "--reka-select-trigger-height": "var(--reka-popper-anchor-height)"
12344
+ } }), {
12345
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
12346
+ _: 3
12347
+ }, 16);
12348
+ };
12349
+ }
12350
+ });
12351
+ var SelectPopperPosition_default = SelectPopperPosition_vue_vue_type_script_setup_true_lang_default;
12352
+ const SelectContentDefaultContextValue = {
12353
+ onViewportChange: () => {
12354
+ },
12355
+ itemTextRefCallback: () => {
12356
+ },
12357
+ itemRefCallback: () => {
12358
+ }
12359
+ };
12360
+ const [injectSelectContentContext, provideSelectContentContext] = createContext("SelectContent");
12361
+ var SelectContentImpl_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12362
+ __name: "SelectContentImpl",
12363
+ props: {
12364
+ position: {
12365
+ type: String,
12366
+ required: false,
12367
+ default: "item-aligned"
12368
+ },
12369
+ bodyLock: {
12370
+ type: Boolean,
12371
+ required: false,
12372
+ default: true
12373
+ },
12374
+ side: {
12375
+ type: null,
12376
+ required: false
12377
+ },
12378
+ sideOffset: {
12379
+ type: Number,
12380
+ required: false
12381
+ },
12382
+ sideFlip: {
12383
+ type: Boolean,
12384
+ required: false
12385
+ },
12386
+ align: {
12387
+ type: null,
12388
+ required: false,
12389
+ default: "start"
12390
+ },
12391
+ alignOffset: {
12392
+ type: Number,
12393
+ required: false
12394
+ },
12395
+ alignFlip: {
12396
+ type: Boolean,
12397
+ required: false
12398
+ },
12399
+ avoidCollisions: {
12400
+ type: Boolean,
12401
+ required: false
12402
+ },
12403
+ collisionBoundary: {
12404
+ type: null,
12405
+ required: false
12406
+ },
12407
+ collisionPadding: {
12408
+ type: [Number, Object],
12409
+ required: false
12410
+ },
12411
+ arrowPadding: {
12412
+ type: Number,
12413
+ required: false
12414
+ },
12415
+ sticky: {
12416
+ type: String,
12417
+ required: false
12418
+ },
12419
+ hideWhenDetached: {
12420
+ type: Boolean,
12421
+ required: false
12422
+ },
12423
+ positionStrategy: {
12424
+ type: String,
12425
+ required: false
12426
+ },
12427
+ updatePositionStrategy: {
12428
+ type: String,
12429
+ required: false
12430
+ },
12431
+ disableUpdateOnLayoutShift: {
12432
+ type: Boolean,
12433
+ required: false
12434
+ },
12435
+ prioritizePosition: {
12436
+ type: Boolean,
12437
+ required: false
12438
+ },
12439
+ reference: {
12440
+ type: null,
12441
+ required: false
12442
+ },
12443
+ asChild: {
12444
+ type: Boolean,
12445
+ required: false
12446
+ },
12447
+ as: {
12448
+ type: null,
12449
+ required: false
12450
+ }
12451
+ },
12452
+ emits: [
12453
+ "closeAutoFocus",
12454
+ "escapeKeyDown",
12455
+ "pointerDownOutside"
12456
+ ],
12457
+ setup(__props, { emit: __emit }) {
12458
+ const props = __props;
12459
+ const emits = __emit;
12460
+ const rootContext = injectSelectRootContext();
12461
+ useFocusGuards();
12462
+ useBodyScrollLock(props.bodyLock);
12463
+ const { CollectionSlot, getItems } = useCollection();
12464
+ const content = ref();
12465
+ useHideOthers(content);
12466
+ const { search, handleTypeaheadSearch } = useTypeahead();
12467
+ const viewport = ref();
12468
+ const selectedItem = ref();
12469
+ const selectedItemText = ref();
12470
+ const isPositioned = ref(false);
12471
+ const firstValidItemFoundRef = ref(false);
12472
+ const firstSelectedItemInArrayFoundRef = ref(false);
12473
+ function focusSelectedItem() {
12474
+ if (selectedItem.value && content.value) focusFirst$1([selectedItem.value, content.value]);
12475
+ }
12476
+ watch(isPositioned, () => {
12477
+ focusSelectedItem();
12478
+ });
12479
+ const { onOpenChange, triggerPointerDownPosRef } = rootContext;
12480
+ watchEffect((cleanupFn) => {
12481
+ if (!content.value) return;
12482
+ let pointerMoveDelta = {
12483
+ x: 0,
12484
+ y: 0
12485
+ };
12486
+ const handlePointerMove = (event) => {
12487
+ pointerMoveDelta = {
12488
+ x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.value?.x ?? 0)),
12489
+ y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.value?.y ?? 0))
12490
+ };
12491
+ };
12492
+ const handlePointerUp = (event) => {
12493
+ if (event.pointerType === "touch") return;
12494
+ if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) event.preventDefault();
12495
+ else if (!content.value?.contains(event.target)) onOpenChange(false);
12496
+ document.removeEventListener("pointermove", handlePointerMove);
12497
+ triggerPointerDownPosRef.value = null;
12498
+ };
12499
+ if (triggerPointerDownPosRef.value !== null) {
12500
+ document.addEventListener("pointermove", handlePointerMove);
12501
+ document.addEventListener("pointerup", handlePointerUp, {
12502
+ capture: true,
12503
+ once: true
12504
+ });
12505
+ }
12506
+ cleanupFn(() => {
12507
+ document.removeEventListener("pointermove", handlePointerMove);
12508
+ document.removeEventListener("pointerup", handlePointerUp, { capture: true });
12509
+ });
12510
+ });
12511
+ function handleKeyDown(event) {
12512
+ const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
12513
+ if (event.key === "Tab") event.preventDefault();
12514
+ if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key, getItems());
12515
+ if ([
12516
+ "ArrowUp",
12517
+ "ArrowDown",
12518
+ "Home",
12519
+ "End"
12520
+ ].includes(event.key)) {
12521
+ const collectionItems = getItems().map((i) => i.ref);
12522
+ let candidateNodes = [...collectionItems];
12523
+ if (["ArrowUp", "End"].includes(event.key)) candidateNodes = candidateNodes.slice().reverse();
12524
+ if (["ArrowUp", "ArrowDown"].includes(event.key)) {
12525
+ const currentElement = event.target;
12526
+ const currentIndex = candidateNodes.indexOf(currentElement);
12527
+ candidateNodes = candidateNodes.slice(currentIndex + 1);
12528
+ }
12529
+ setTimeout(() => focusFirst$1(candidateNodes));
12530
+ event.preventDefault();
12531
+ }
12532
+ }
12533
+ const pickedProps = computed(() => {
12534
+ if (props.position === "popper") return props;
12535
+ else return {};
12536
+ });
12537
+ const forwardedProps = useForwardProps(pickedProps.value);
12538
+ provideSelectContentContext({
12539
+ content,
12540
+ viewport,
12541
+ onViewportChange: (node) => {
12542
+ viewport.value = node;
12543
+ },
12544
+ itemRefCallback: (node, value, disabled) => {
12545
+ const isFirstValidItem = !firstValidItemFoundRef.value && !disabled;
12546
+ const isSelectedItem = valueComparator(rootContext.modelValue.value, value, rootContext.by);
12547
+ if (rootContext.multiple.value) {
12548
+ if (firstSelectedItemInArrayFoundRef.value) return;
12549
+ if (isSelectedItem || isFirstValidItem) {
12550
+ selectedItem.value = node;
12551
+ if (isSelectedItem) firstSelectedItemInArrayFoundRef.value = true;
12552
+ }
12553
+ } else if (isSelectedItem || isFirstValidItem) selectedItem.value = node;
12554
+ if (isFirstValidItem) firstValidItemFoundRef.value = true;
12555
+ },
12556
+ selectedItem,
12557
+ selectedItemText,
12558
+ onItemLeave: () => {
12559
+ content.value?.focus();
12560
+ },
12561
+ itemTextRefCallback: (node, value, disabled) => {
12562
+ const isFirstValidItem = !firstValidItemFoundRef.value && !disabled;
12563
+ const isSelectedItem = valueComparator(rootContext.modelValue.value, value, rootContext.by);
12564
+ if (isSelectedItem || isFirstValidItem) selectedItemText.value = node;
12565
+ },
12566
+ focusSelectedItem,
12567
+ position: props.position,
12568
+ isPositioned,
12569
+ searchRef: search
12570
+ });
12571
+ return (_ctx, _cache) => {
12572
+ return openBlock(), createBlock(unref(CollectionSlot), null, {
12573
+ default: withCtx(() => [createVNode(unref(FocusScope_default), {
12574
+ "as-child": "",
12575
+ onMountAutoFocus: _cache[6] || (_cache[6] = withModifiers(() => {
12576
+ }, ["prevent"])),
12577
+ onUnmountAutoFocus: _cache[7] || (_cache[7] = (event) => {
12578
+ emits("closeAutoFocus", event);
12579
+ if (event.defaultPrevented) return;
12580
+ unref(rootContext).triggerElement.value?.focus({ preventScroll: true });
12581
+ event.preventDefault();
12582
+ })
12583
+ }, {
12584
+ default: withCtx(() => [createVNode(unref(DismissableLayer_default), {
12585
+ "as-child": "",
12586
+ "disable-outside-pointer-events": "",
12587
+ onFocusOutside: _cache[2] || (_cache[2] = withModifiers(() => {
12588
+ }, ["prevent"])),
12589
+ onDismiss: _cache[3] || (_cache[3] = ($event) => unref(rootContext).onOpenChange(false)),
12590
+ onEscapeKeyDown: _cache[4] || (_cache[4] = ($event) => emits("escapeKeyDown", $event)),
12591
+ onPointerDownOutside: _cache[5] || (_cache[5] = ($event) => emits("pointerDownOutside", $event))
12592
+ }, {
12593
+ default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(_ctx.position === "popper" ? SelectPopperPosition_default : SelectItemAlignedPosition_default), mergeProps({
12594
+ ..._ctx.$attrs,
12595
+ ...unref(forwardedProps)
12596
+ }, {
12597
+ id: unref(rootContext).contentId,
12598
+ ref: (vnode) => {
12599
+ const el = unref(unrefElement)(vnode);
12600
+ if (el?.hasAttribute("data-reka-popper-content-wrapper")) content.value = el.firstElementChild;
12601
+ else content.value = el;
12602
+ return void 0;
12603
+ },
12604
+ role: "listbox",
12605
+ "data-state": unref(rootContext).open.value ? "open" : "closed",
12606
+ dir: unref(rootContext).dir.value,
12607
+ style: {
12608
+ display: "flex",
12609
+ flexDirection: "column",
12610
+ outline: "none"
12611
+ },
12612
+ onContextmenu: _cache[0] || (_cache[0] = withModifiers(() => {
12613
+ }, ["prevent"])),
12614
+ onPlaced: _cache[1] || (_cache[1] = ($event) => isPositioned.value = true),
12615
+ onKeydown: handleKeyDown
12616
+ }), {
12617
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
12618
+ _: 3
12619
+ }, 16, [
12620
+ "id",
12621
+ "data-state",
12622
+ "dir",
12623
+ "onKeydown"
12624
+ ]))]),
12625
+ _: 3
12626
+ })]),
12627
+ _: 3
12628
+ })]),
12629
+ _: 3
12630
+ });
12631
+ };
12632
+ }
12633
+ });
12634
+ var SelectContentImpl_default = SelectContentImpl_vue_vue_type_script_setup_true_lang_default;
12635
+ const [injectSelectItemAlignedPositionContext, provideSelectItemAlignedPositionContext] = createContext("SelectItemAlignedPosition");
12636
+ var SelectItemAlignedPosition_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12637
+ inheritAttrs: false,
12638
+ __name: "SelectItemAlignedPosition",
12639
+ props: {
12640
+ asChild: {
12641
+ type: Boolean,
12642
+ required: false
12643
+ },
12644
+ as: {
12645
+ type: null,
12646
+ required: false
12647
+ }
12648
+ },
12649
+ emits: ["placed"],
12650
+ setup(__props, { emit: __emit }) {
12651
+ const props = __props;
12652
+ const emits = __emit;
12653
+ const { getItems } = useCollection();
12654
+ const rootContext = injectSelectRootContext();
12655
+ const contentContext = injectSelectContentContext();
12656
+ const shouldExpandOnScrollRef = ref(false);
12657
+ const shouldRepositionRef = ref(true);
12658
+ const contentWrapperElement = ref();
12659
+ const { forwardRef, currentElement: contentElement } = useForwardExpose();
12660
+ const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;
12661
+ function position() {
12662
+ if (rootContext.triggerElement.value && rootContext.valueElement.value && contentWrapperElement.value && contentElement.value && viewport?.value && selectedItem?.value && selectedItemText?.value) {
12663
+ const triggerRect = rootContext.triggerElement.value.getBoundingClientRect();
12664
+ const contentRect = contentElement.value.getBoundingClientRect();
12665
+ const valueNodeRect = rootContext.valueElement.value.getBoundingClientRect();
12666
+ const itemTextRect = selectedItemText.value.getBoundingClientRect();
12667
+ if (rootContext.dir.value !== "rtl") {
12668
+ const itemTextOffset = itemTextRect.left - contentRect.left;
12669
+ const left = valueNodeRect.left - itemTextOffset;
12670
+ const leftDelta = triggerRect.left - left;
12671
+ const minContentWidth = triggerRect.width + leftDelta;
12672
+ const contentWidth = Math.max(minContentWidth, contentRect.width);
12673
+ const rightEdge = window.innerWidth - CONTENT_MARGIN;
12674
+ const clampedLeft = clamp$1(left, CONTENT_MARGIN, Math.max(CONTENT_MARGIN, rightEdge - contentWidth));
12675
+ contentWrapperElement.value.style.minWidth = `${minContentWidth}px`;
12676
+ contentWrapperElement.value.style.left = `${clampedLeft}px`;
12677
+ } else {
12678
+ const itemTextOffset = contentRect.right - itemTextRect.right;
12679
+ const right = window.innerWidth - valueNodeRect.right - itemTextOffset;
12680
+ const rightDelta = window.innerWidth - triggerRect.right - right;
12681
+ const minContentWidth = triggerRect.width + rightDelta;
12682
+ const contentWidth = Math.max(minContentWidth, contentRect.width);
12683
+ const leftEdge = window.innerWidth - CONTENT_MARGIN;
12684
+ const clampedRight = clamp$1(right, CONTENT_MARGIN, Math.max(CONTENT_MARGIN, leftEdge - contentWidth));
12685
+ contentWrapperElement.value.style.minWidth = `${minContentWidth}px`;
12686
+ contentWrapperElement.value.style.right = `${clampedRight}px`;
12687
+ }
12688
+ const items = getItems().map((i) => i.ref);
12689
+ const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;
12690
+ const itemsHeight = viewport.value.scrollHeight;
12691
+ const contentStyles = window.getComputedStyle(contentElement.value);
12692
+ const contentBorderTopWidth = Number.parseInt(contentStyles.borderTopWidth, 10);
12693
+ const contentPaddingTop = Number.parseInt(contentStyles.paddingTop, 10);
12694
+ const contentBorderBottomWidth = Number.parseInt(contentStyles.borderBottomWidth, 10);
12695
+ const contentPaddingBottom = Number.parseInt(contentStyles.paddingBottom, 10);
12696
+ const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;
12697
+ const minContentHeight = Math.min(selectedItem.value.offsetHeight * 5, fullContentHeight);
12698
+ const viewportStyles = window.getComputedStyle(viewport.value);
12699
+ const viewportPaddingTop = Number.parseInt(viewportStyles.paddingTop, 10);
12700
+ const viewportPaddingBottom = Number.parseInt(viewportStyles.paddingBottom, 10);
12701
+ const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;
12702
+ const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;
12703
+ const selectedItemHalfHeight = selectedItem.value.offsetHeight / 2;
12704
+ const itemOffsetMiddle = selectedItem.value.offsetTop + selectedItemHalfHeight;
12705
+ const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;
12706
+ const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;
12707
+ const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;
12708
+ if (willAlignWithoutTopOverflow) {
12709
+ const isLastItem = selectedItem.value === items[items.length - 1];
12710
+ contentWrapperElement.value.style.bottom = `0px`;
12711
+ const viewportOffsetBottom = contentElement.value.clientHeight - viewport.value.offsetTop - viewport.value.offsetHeight;
12712
+ const clampedTriggerMiddleToBottomEdge = Math.max(triggerMiddleToBottomEdge, selectedItemHalfHeight + (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth);
12713
+ const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;
12714
+ contentWrapperElement.value.style.height = `${height}px`;
12715
+ } else {
12716
+ const isFirstItem = selectedItem.value === items[0];
12717
+ contentWrapperElement.value.style.top = `0px`;
12718
+ const clampedTopEdgeToTriggerMiddle = Math.max(topEdgeToTriggerMiddle, contentBorderTopWidth + viewport.value.offsetTop + (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight);
12719
+ const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;
12720
+ contentWrapperElement.value.style.height = `${height}px`;
12721
+ viewport.value.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.value.offsetTop;
12722
+ }
12723
+ contentWrapperElement.value.style.margin = `${CONTENT_MARGIN}px 0`;
12724
+ contentWrapperElement.value.style.minHeight = `${minContentHeight}px`;
12725
+ contentWrapperElement.value.style.maxHeight = `${availableHeight}px`;
12726
+ emits("placed");
12727
+ requestAnimationFrame(() => shouldExpandOnScrollRef.value = true);
12728
+ }
12729
+ }
12730
+ const contentZIndex = ref("");
12731
+ onMounted(async () => {
12732
+ await nextTick();
12733
+ position();
12734
+ if (contentElement.value) contentZIndex.value = window.getComputedStyle(contentElement.value).zIndex;
12735
+ });
12736
+ function handleScrollButtonChange(node) {
12737
+ if (node && shouldRepositionRef.value === true) {
12738
+ position();
12739
+ focusSelectedItem?.();
12740
+ shouldRepositionRef.value = false;
12741
+ }
12742
+ }
12743
+ useResizeObserver(rootContext.triggerElement, () => {
12744
+ position();
12745
+ });
12746
+ provideSelectItemAlignedPositionContext({
12747
+ contentWrapper: contentWrapperElement,
12748
+ shouldExpandOnScrollRef,
12749
+ onScrollButtonChange: handleScrollButtonChange
12750
+ });
12751
+ return (_ctx, _cache) => {
12752
+ return openBlock(), createElementBlock("div", {
12753
+ ref_key: "contentWrapperElement",
12754
+ ref: contentWrapperElement,
12755
+ style: normalizeStyle({
12756
+ display: "flex",
12757
+ flexDirection: "column",
12758
+ position: "fixed",
12759
+ zIndex: contentZIndex.value
12760
+ })
12761
+ }, [createVNode(unref(Primitive), mergeProps({
12762
+ ref: unref(forwardRef),
12763
+ style: {
12764
+ boxSizing: "border-box",
12765
+ maxHeight: "100%"
12766
+ }
12767
+ }, {
12768
+ ..._ctx.$attrs,
12769
+ ...props
12770
+ }), {
12771
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
12772
+ _: 3
12773
+ }, 16)], 4);
12774
+ };
12775
+ }
12776
+ });
12777
+ var SelectItemAlignedPosition_default = SelectItemAlignedPosition_vue_vue_type_script_setup_true_lang_default;
12778
+ var SelectProvider_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12779
+ inheritAttrs: false,
12780
+ __name: "SelectProvider",
12781
+ props: { context: {
12782
+ type: Object,
12783
+ required: true
12784
+ } },
12785
+ setup(__props) {
12786
+ const props = __props;
12787
+ provideSelectRootContext(props.context);
12788
+ provideSelectContentContext(SelectContentDefaultContextValue);
12789
+ return (_ctx, _cache) => {
12790
+ return renderSlot(_ctx.$slots, "default");
12791
+ };
12792
+ }
12793
+ });
12794
+ var SelectProvider_default = SelectProvider_vue_vue_type_script_setup_true_lang_default;
12795
+ const _hoisted_1$A = { key: 1 };
12796
+ var SelectContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12797
+ inheritAttrs: false,
12798
+ __name: "SelectContent",
12799
+ props: {
12800
+ forceMount: {
12801
+ type: Boolean,
12802
+ required: false
12803
+ },
12804
+ position: {
12805
+ type: String,
12806
+ required: false
12807
+ },
12808
+ bodyLock: {
12809
+ type: Boolean,
12810
+ required: false
12811
+ },
12812
+ side: {
12813
+ type: null,
12814
+ required: false
12815
+ },
12816
+ sideOffset: {
12817
+ type: Number,
12818
+ required: false
12819
+ },
12820
+ sideFlip: {
12821
+ type: Boolean,
12822
+ required: false
12823
+ },
12824
+ align: {
12825
+ type: null,
12826
+ required: false
12827
+ },
12828
+ alignOffset: {
12829
+ type: Number,
12830
+ required: false
12831
+ },
12832
+ alignFlip: {
12833
+ type: Boolean,
12834
+ required: false
12835
+ },
12836
+ avoidCollisions: {
12837
+ type: Boolean,
12838
+ required: false
12839
+ },
12840
+ collisionBoundary: {
12841
+ type: null,
12842
+ required: false
12843
+ },
12844
+ collisionPadding: {
12845
+ type: [Number, Object],
12846
+ required: false
12847
+ },
12848
+ arrowPadding: {
12849
+ type: Number,
12850
+ required: false
12851
+ },
12852
+ sticky: {
12853
+ type: String,
12854
+ required: false
12855
+ },
12856
+ hideWhenDetached: {
12857
+ type: Boolean,
12858
+ required: false
12859
+ },
12860
+ positionStrategy: {
12861
+ type: String,
12862
+ required: false
12863
+ },
12864
+ updatePositionStrategy: {
12865
+ type: String,
12866
+ required: false
12867
+ },
12868
+ disableUpdateOnLayoutShift: {
12869
+ type: Boolean,
12870
+ required: false
12871
+ },
12872
+ prioritizePosition: {
12873
+ type: Boolean,
12874
+ required: false
12875
+ },
12876
+ reference: {
12877
+ type: null,
12878
+ required: false
12879
+ },
12880
+ asChild: {
12881
+ type: Boolean,
12882
+ required: false
12883
+ },
12884
+ as: {
12885
+ type: null,
12886
+ required: false
12887
+ }
12888
+ },
12889
+ emits: [
12890
+ "closeAutoFocus",
12891
+ "escapeKeyDown",
12892
+ "pointerDownOutside"
12893
+ ],
12894
+ setup(__props, { emit: __emit }) {
12895
+ const props = __props;
12896
+ const emits = __emit;
12897
+ const forwarded = useForwardPropsEmits(props, emits);
12898
+ const rootContext = injectSelectRootContext();
12899
+ const fragment = ref();
12900
+ onMounted(() => {
12901
+ fragment.value = new DocumentFragment();
12902
+ });
12903
+ const presenceRef = ref();
12904
+ const present = computed(() => props.forceMount || rootContext.open.value);
12905
+ const renderPresence = ref(present.value);
12906
+ watch(present, () => {
12907
+ setTimeout(() => renderPresence.value = present.value);
12908
+ });
12909
+ return (_ctx, _cache) => {
12910
+ return present.value || renderPresence.value || presenceRef.value?.present ? (openBlock(), createBlock(unref(Presence_default), {
12911
+ key: 0,
12912
+ ref_key: "presenceRef",
12913
+ ref: presenceRef,
12914
+ present: present.value
12915
+ }, {
12916
+ default: withCtx(() => [createVNode(SelectContentImpl_default, normalizeProps(guardReactiveProps({
12917
+ ...unref(forwarded),
12918
+ ..._ctx.$attrs
12919
+ })), {
12920
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
12921
+ _: 3
12922
+ }, 16)]),
12923
+ _: 3
12924
+ }, 8, ["present"])) : fragment.value ? (openBlock(), createElementBlock("div", _hoisted_1$A, [(openBlock(), createBlock(Teleport, { to: fragment.value }, [createVNode(SelectProvider_default, { context: unref(rootContext) }, {
12925
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
12926
+ _: 3
12927
+ }, 8, ["context"])], 8, ["to"]))])) : createCommentVNode("v-if", true);
12928
+ };
12929
+ }
12930
+ });
12931
+ var SelectContent_default = SelectContent_vue_vue_type_script_setup_true_lang_default;
12932
+ const [injectSelectItemContext, provideSelectItemContext] = createContext("SelectItem");
12933
+ var SelectItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12934
+ __name: "SelectItem",
12935
+ props: {
12936
+ value: {
12937
+ type: null,
12938
+ required: true
12939
+ },
12940
+ disabled: {
12941
+ type: Boolean,
12942
+ required: false
12943
+ },
12944
+ textValue: {
12945
+ type: String,
12946
+ required: false
12947
+ },
12948
+ asChild: {
12949
+ type: Boolean,
12950
+ required: false
12951
+ },
12952
+ as: {
12953
+ type: null,
12954
+ required: false
12955
+ }
12956
+ },
12957
+ emits: ["select"],
12958
+ setup(__props, { emit: __emit }) {
12959
+ const props = __props;
12960
+ const emits = __emit;
12961
+ const { disabled } = toRefs(props);
12962
+ const rootContext = injectSelectRootContext();
12963
+ const contentContext = injectSelectContentContext();
12964
+ const { forwardRef, currentElement } = useForwardExpose();
12965
+ const { CollectionItem } = useCollection();
12966
+ const isSelected = computed(() => valueComparator(rootContext.modelValue?.value, props.value, rootContext.by));
12967
+ const isFocused = ref(false);
12968
+ const textValue = ref(props.textValue ?? "");
12969
+ const textId = useId(void 0, "reka-select-item-text");
12970
+ const SELECT_SELECT = "select.select";
12971
+ async function handleSelectCustomEvent(ev) {
12972
+ if (ev.defaultPrevented) return;
12973
+ const eventDetail = {
12974
+ originalEvent: ev,
12975
+ value: props.value
12976
+ };
12977
+ handleAndDispatchCustomEvent$1(SELECT_SELECT, handleSelect2, eventDetail);
12978
+ }
12979
+ async function handleSelect2(ev) {
12980
+ await nextTick();
12981
+ emits("select", ev);
12982
+ if (ev.defaultPrevented) return;
12983
+ if (!disabled.value) {
12984
+ rootContext.onValueChange(props.value);
12985
+ if (!rootContext.multiple.value) rootContext.onOpenChange(false);
12986
+ }
12987
+ }
12988
+ async function handlePointerMove(event) {
12989
+ await nextTick();
12990
+ if (event.defaultPrevented) return;
12991
+ if (disabled.value) contentContext.onItemLeave?.();
12992
+ else event.currentTarget?.focus({ preventScroll: true });
12993
+ }
12994
+ async function handlePointerLeave(event) {
12995
+ await nextTick();
12996
+ if (event.defaultPrevented) return;
12997
+ if (event.currentTarget === getActiveElement()) contentContext.onItemLeave?.();
12998
+ }
12999
+ async function handleKeyDown(event) {
13000
+ await nextTick();
13001
+ if (event.defaultPrevented) return;
13002
+ const isTypingAhead = contentContext.searchRef?.value !== "";
13003
+ if (isTypingAhead && event.key === " ") return;
13004
+ if (SELECTION_KEYS.includes(event.key)) handleSelectCustomEvent(event);
13005
+ if (event.key === " ") event.preventDefault();
13006
+ }
13007
+ if (props.value === "") throw new Error("A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");
13008
+ onMounted(() => {
13009
+ if (!currentElement.value) return;
13010
+ contentContext.itemRefCallback(currentElement.value, props.value, props.disabled);
13011
+ });
13012
+ provideSelectItemContext({
13013
+ value: props.value,
13014
+ disabled,
13015
+ textId,
13016
+ isSelected,
13017
+ onItemTextChange: (node) => {
13018
+ textValue.value = ((textValue.value || node?.textContent) ?? "").trim();
13019
+ }
13020
+ });
13021
+ return (_ctx, _cache) => {
13022
+ return openBlock(), createBlock(unref(CollectionItem), { value: { textValue: textValue.value } }, {
13023
+ default: withCtx(() => [createVNode(unref(Primitive), {
13024
+ ref: unref(forwardRef),
13025
+ role: "option",
13026
+ "aria-labelledby": unref(textId),
13027
+ "data-highlighted": isFocused.value ? "" : void 0,
13028
+ "aria-selected": isSelected.value,
13029
+ "data-state": isSelected.value ? "checked" : "unchecked",
13030
+ "aria-disabled": unref(disabled) || void 0,
13031
+ "data-disabled": unref(disabled) ? "" : void 0,
13032
+ tabindex: unref(disabled) ? void 0 : -1,
13033
+ as: _ctx.as,
13034
+ "as-child": _ctx.asChild,
13035
+ onFocus: _cache[0] || (_cache[0] = ($event) => isFocused.value = true),
13036
+ onBlur: _cache[1] || (_cache[1] = ($event) => isFocused.value = false),
13037
+ onPointerup: handleSelectCustomEvent,
13038
+ onPointerdown: _cache[2] || (_cache[2] = (event) => {
13039
+ event.currentTarget.focus({ preventScroll: true });
13040
+ }),
13041
+ onTouchend: _cache[3] || (_cache[3] = withModifiers(() => {
13042
+ }, ["prevent", "stop"])),
13043
+ onPointermove: handlePointerMove,
13044
+ onPointerleave: handlePointerLeave,
13045
+ onKeydown: handleKeyDown
13046
+ }, {
13047
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
13048
+ _: 3
13049
+ }, 8, [
13050
+ "aria-labelledby",
13051
+ "data-highlighted",
13052
+ "aria-selected",
13053
+ "data-state",
13054
+ "aria-disabled",
13055
+ "data-disabled",
13056
+ "tabindex",
13057
+ "as",
13058
+ "as-child"
13059
+ ])]),
13060
+ _: 3
13061
+ }, 8, ["value"]);
13062
+ };
13063
+ }
13064
+ });
13065
+ var SelectItem_default = SelectItem_vue_vue_type_script_setup_true_lang_default;
13066
+ var SelectItemIndicator_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13067
+ __name: "SelectItemIndicator",
13068
+ props: {
13069
+ asChild: {
13070
+ type: Boolean,
13071
+ required: false
13072
+ },
13073
+ as: {
13074
+ type: null,
13075
+ required: false,
13076
+ default: "span"
13077
+ }
13078
+ },
13079
+ setup(__props) {
13080
+ const props = __props;
13081
+ const itemContext = injectSelectItemContext();
13082
+ return (_ctx, _cache) => {
13083
+ return unref(itemContext).isSelected.value ? (openBlock(), createBlock(unref(Primitive), mergeProps({
13084
+ key: 0,
13085
+ "aria-hidden": "true"
13086
+ }, props), {
13087
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
13088
+ _: 3
13089
+ }, 16)) : createCommentVNode("v-if", true);
13090
+ };
13091
+ }
13092
+ });
13093
+ var SelectItemIndicator_default = SelectItemIndicator_vue_vue_type_script_setup_true_lang_default;
13094
+ var SelectItemText_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13095
+ inheritAttrs: false,
13096
+ __name: "SelectItemText",
13097
+ props: {
13098
+ asChild: {
13099
+ type: Boolean,
13100
+ required: false
13101
+ },
13102
+ as: {
13103
+ type: null,
13104
+ required: false,
13105
+ default: "span"
13106
+ }
13107
+ },
13108
+ setup(__props) {
13109
+ const props = __props;
13110
+ const rootContext = injectSelectRootContext();
13111
+ const contentContext = injectSelectContentContext();
13112
+ const itemContext = injectSelectItemContext();
13113
+ const { forwardRef, currentElement: itemTextElement } = useForwardExpose();
13114
+ const optionProps = computed(() => {
13115
+ return {
13116
+ value: itemContext.value,
13117
+ disabled: itemContext.disabled.value,
13118
+ textContent: itemTextElement.value?.textContent ?? itemContext.value?.toString() ?? ""
13119
+ };
13120
+ });
13121
+ onMounted(() => {
13122
+ if (!itemTextElement.value) return;
13123
+ itemContext.onItemTextChange(itemTextElement.value);
13124
+ contentContext.itemTextRefCallback(itemTextElement.value, itemContext.value, itemContext.disabled.value);
13125
+ rootContext.onOptionAdd(optionProps.value);
13126
+ });
13127
+ onUnmounted(() => {
13128
+ rootContext.onOptionRemove(optionProps.value);
13129
+ });
13130
+ return (_ctx, _cache) => {
13131
+ return openBlock(), createBlock(unref(Primitive), mergeProps({
13132
+ id: unref(itemContext).textId,
13133
+ ref: unref(forwardRef)
13134
+ }, {
13135
+ ...props,
13136
+ ..._ctx.$attrs
13137
+ }), {
13138
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
13139
+ _: 3
13140
+ }, 16, ["id"]);
13141
+ };
13142
+ }
13143
+ });
13144
+ var SelectItemText_default = SelectItemText_vue_vue_type_script_setup_true_lang_default;
13145
+ var SelectPortal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13146
+ __name: "SelectPortal",
13147
+ props: {
13148
+ to: {
13149
+ type: null,
13150
+ required: false
13151
+ },
13152
+ disabled: {
13153
+ type: Boolean,
13154
+ required: false
13155
+ },
13156
+ defer: {
13157
+ type: Boolean,
13158
+ required: false
13159
+ },
13160
+ forceMount: {
13161
+ type: Boolean,
13162
+ required: false
13163
+ }
13164
+ },
13165
+ setup(__props) {
13166
+ const props = __props;
13167
+ return (_ctx, _cache) => {
13168
+ return openBlock(), createBlock(unref(Teleport_default), normalizeProps(guardReactiveProps(props)), {
13169
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
13170
+ _: 3
13171
+ }, 16);
13172
+ };
13173
+ }
13174
+ });
13175
+ var SelectPortal_default = SelectPortal_vue_vue_type_script_setup_true_lang_default;
13176
+ var SelectSeparator_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13177
+ __name: "SelectSeparator",
13178
+ props: {
13179
+ asChild: {
13180
+ type: Boolean,
13181
+ required: false
13182
+ },
13183
+ as: {
13184
+ type: null,
13185
+ required: false
13186
+ }
13187
+ },
13188
+ setup(__props) {
13189
+ const props = __props;
13190
+ return (_ctx, _cache) => {
13191
+ return openBlock(), createBlock(unref(Primitive), mergeProps({ "aria-hidden": "true" }, props), {
13192
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
13193
+ _: 3
13194
+ }, 16);
13195
+ };
13196
+ }
13197
+ });
13198
+ var SelectSeparator_default = SelectSeparator_vue_vue_type_script_setup_true_lang_default;
13199
+ var SelectTrigger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13200
+ __name: "SelectTrigger",
13201
+ props: {
13202
+ disabled: {
13203
+ type: Boolean,
13204
+ required: false
13205
+ },
13206
+ reference: {
13207
+ type: null,
13208
+ required: false
13209
+ },
13210
+ asChild: {
13211
+ type: Boolean,
13212
+ required: false
13213
+ },
13214
+ as: {
13215
+ type: null,
13216
+ required: false,
13217
+ default: "button"
13218
+ }
13219
+ },
13220
+ setup(__props) {
13221
+ const props = __props;
13222
+ const rootContext = injectSelectRootContext();
13223
+ const { forwardRef, currentElement: triggerElement } = useForwardExpose();
13224
+ const isDisabled = computed(() => rootContext.disabled?.value || props.disabled);
13225
+ rootContext.contentId ||= useId(void 0, "reka-select-content");
13226
+ onMounted(() => {
13227
+ rootContext.onTriggerChange(triggerElement.value);
13228
+ });
13229
+ const { getItems } = useCollection();
13230
+ const { search, handleTypeaheadSearch, resetTypeahead } = useTypeahead();
13231
+ function handleOpen() {
13232
+ if (!isDisabled.value) {
13233
+ rootContext.onOpenChange(true);
13234
+ resetTypeahead();
13235
+ }
13236
+ }
13237
+ function handlePointerOpen(event) {
13238
+ handleOpen();
13239
+ rootContext.triggerPointerDownPosRef.value = {
13240
+ x: Math.round(event.pageX),
13241
+ y: Math.round(event.pageY)
13242
+ };
13243
+ }
13244
+ return (_ctx, _cache) => {
13245
+ return openBlock(), createBlock(unref(PopperAnchor_default), {
13246
+ "as-child": "",
13247
+ reference: _ctx.reference
13248
+ }, {
13249
+ default: withCtx(() => [createVNode(unref(Primitive), {
13250
+ ref: unref(forwardRef),
13251
+ role: "combobox",
13252
+ type: _ctx.as === "button" ? "button" : void 0,
13253
+ "aria-controls": unref(rootContext).contentId,
13254
+ "aria-expanded": unref(rootContext).open.value || false,
13255
+ "aria-required": unref(rootContext).required?.value,
13256
+ "aria-autocomplete": "none",
13257
+ disabled: isDisabled.value,
13258
+ dir: unref(rootContext)?.dir.value,
13259
+ "data-state": unref(rootContext)?.open.value ? "open" : "closed",
13260
+ "data-disabled": isDisabled.value ? "" : void 0,
13261
+ "data-placeholder": unref(shouldShowPlaceholder)(unref(rootContext).modelValue?.value) ? "" : void 0,
13262
+ "as-child": _ctx.asChild,
13263
+ as: _ctx.as,
13264
+ onClick: _cache[0] || (_cache[0] = (event) => {
13265
+ event?.currentTarget?.focus();
13266
+ }),
13267
+ onPointerdown: _cache[1] || (_cache[1] = (event) => {
13268
+ if (event.pointerType === "touch") return event.preventDefault();
13269
+ const target = event.target;
13270
+ if (target.hasPointerCapture(event.pointerId)) target.releasePointerCapture(event.pointerId);
13271
+ if (event.button === 0 && event.ctrlKey === false) {
13272
+ handlePointerOpen(event);
13273
+ event.preventDefault();
13274
+ }
13275
+ }),
13276
+ onPointerup: _cache[2] || (_cache[2] = withModifiers((event) => {
13277
+ if (event.pointerType === "touch") handlePointerOpen(event);
13278
+ }, ["prevent"])),
13279
+ onKeydown: _cache[3] || (_cache[3] = (event) => {
13280
+ const isTypingAhead = unref(search) !== "";
13281
+ const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
13282
+ if (!isModifierKey && event.key.length === 1) {
13283
+ if (isTypingAhead && event.key === " ") return;
13284
+ }
13285
+ unref(handleTypeaheadSearch)(event.key, unref(getItems)());
13286
+ if (unref(OPEN_KEYS).includes(event.key)) {
13287
+ handleOpen();
13288
+ event.preventDefault();
13289
+ }
13290
+ })
13291
+ }, {
13292
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
13293
+ _: 3
13294
+ }, 8, [
13295
+ "type",
13296
+ "aria-controls",
13297
+ "aria-expanded",
13298
+ "aria-required",
13299
+ "disabled",
13300
+ "dir",
13301
+ "data-state",
13302
+ "data-disabled",
13303
+ "data-placeholder",
13304
+ "as-child",
13305
+ "as"
13306
+ ])]),
13307
+ _: 3
13308
+ }, 8, ["reference"]);
13309
+ };
13310
+ }
13311
+ });
13312
+ var SelectTrigger_default = SelectTrigger_vue_vue_type_script_setup_true_lang_default;
13313
+ var SelectValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13314
+ __name: "SelectValue",
13315
+ props: {
13316
+ placeholder: {
13317
+ type: String,
13318
+ required: false,
13319
+ default: ""
13320
+ },
13321
+ asChild: {
13322
+ type: Boolean,
13323
+ required: false
13324
+ },
13325
+ as: {
13326
+ type: null,
13327
+ required: false,
13328
+ default: "span"
13329
+ }
13330
+ },
13331
+ setup(__props) {
13332
+ const props = __props;
13333
+ const { forwardRef, currentElement } = useForwardExpose();
13334
+ const rootContext = injectSelectRootContext();
13335
+ onMounted(() => {
13336
+ rootContext.valueElement = currentElement;
13337
+ });
13338
+ const selectedLabel = computed(() => {
13339
+ let list = [];
13340
+ const options = Array.from(rootContext.optionsSet.value);
13341
+ const getOption = (value) => options.find((option) => valueComparator(value, option.value, rootContext.by));
13342
+ if (Array.isArray(rootContext.modelValue.value)) list = rootContext.modelValue.value.map((value) => getOption(value)?.textContent ?? "");
13343
+ else list = [getOption(rootContext.modelValue.value)?.textContent ?? ""];
13344
+ return list.filter(Boolean);
13345
+ });
13346
+ const slotText = computed(() => {
13347
+ return selectedLabel.value.length ? selectedLabel.value.join(", ") : props.placeholder;
13348
+ });
13349
+ return (_ctx, _cache) => {
13350
+ return openBlock(), createBlock(unref(Primitive), {
13351
+ ref: unref(forwardRef),
13352
+ as: _ctx.as,
13353
+ "as-child": _ctx.asChild,
13354
+ style: { pointerEvents: "none" },
13355
+ "data-placeholder": selectedLabel.value.length ? void 0 : props.placeholder
13356
+ }, {
13357
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default", {
13358
+ selectedLabel: selectedLabel.value,
13359
+ modelValue: unref(rootContext).modelValue.value
13360
+ }, () => [createTextVNode(toDisplayString(slotText.value), 1)])]),
13361
+ _: 3
13362
+ }, 8, [
13363
+ "as",
13364
+ "as-child",
13365
+ "data-placeholder"
13366
+ ]);
13367
+ };
13368
+ }
13369
+ });
13370
+ var SelectValue_default = SelectValue_vue_vue_type_script_setup_true_lang_default;
13371
+ var SelectViewport_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13372
+ __name: "SelectViewport",
13373
+ props: {
13374
+ nonce: {
13375
+ type: String,
13376
+ required: false
13377
+ },
13378
+ asChild: {
13379
+ type: Boolean,
13380
+ required: false
13381
+ },
13382
+ as: {
13383
+ type: null,
13384
+ required: false
13385
+ }
13386
+ },
13387
+ setup(__props) {
13388
+ const props = __props;
13389
+ const { nonce: propNonce } = toRefs(props);
13390
+ const nonce = useNonce(propNonce);
13391
+ const contentContext = injectSelectContentContext();
13392
+ const alignedPositionContext = contentContext.position === "item-aligned" ? injectSelectItemAlignedPositionContext() : void 0;
13393
+ const { forwardRef, currentElement } = useForwardExpose();
13394
+ onMounted(() => {
13395
+ contentContext?.onViewportChange(currentElement.value);
13396
+ });
13397
+ const prevScrollTopRef = ref(0);
13398
+ function handleScroll(event) {
13399
+ const viewport = event.currentTarget;
13400
+ const { shouldExpandOnScrollRef, contentWrapper } = alignedPositionContext ?? {};
13401
+ if (shouldExpandOnScrollRef?.value && contentWrapper?.value) {
13402
+ const scrolledBy = Math.abs(prevScrollTopRef.value - viewport.scrollTop);
13403
+ if (scrolledBy > 0) {
13404
+ const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;
13405
+ const cssMinHeight = Number.parseFloat(contentWrapper.value.style.minHeight);
13406
+ const cssHeight = Number.parseFloat(contentWrapper.value.style.height);
13407
+ const prevHeight = Math.max(cssMinHeight, cssHeight);
13408
+ if (prevHeight < availableHeight) {
13409
+ const nextHeight = prevHeight + scrolledBy;
13410
+ const clampedNextHeight = Math.min(availableHeight, nextHeight);
13411
+ const heightDiff = nextHeight - clampedNextHeight;
13412
+ contentWrapper.value.style.height = `${clampedNextHeight}px`;
13413
+ if (contentWrapper.value.style.bottom === "0px") {
13414
+ viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;
13415
+ contentWrapper.value.style.justifyContent = "flex-end";
13416
+ }
13417
+ }
13418
+ }
13419
+ }
13420
+ prevScrollTopRef.value = viewport.scrollTop;
13421
+ }
13422
+ return (_ctx, _cache) => {
13423
+ return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(Primitive), mergeProps({
13424
+ ref: unref(forwardRef),
13425
+ "data-reka-select-viewport": "",
13426
+ role: "presentation"
13427
+ }, {
13428
+ ..._ctx.$attrs,
13429
+ ...props
13430
+ }, {
13431
+ style: {
13432
+ position: "relative",
13433
+ flex: 1,
13434
+ overflow: "hidden auto"
13435
+ },
13436
+ onScroll: handleScroll
13437
+ }), {
13438
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
13439
+ _: 3
13440
+ }, 16), createVNode(unref(Primitive), {
13441
+ as: "style",
13442
+ nonce: unref(nonce)
13443
+ }, {
13444
+ default: withCtx(() => _cache[0] || (_cache[0] = [createTextVNode(" /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } ")])),
13445
+ _: 1,
13446
+ __: [0]
13447
+ }, 8, ["nonce"])], 64);
13448
+ };
13449
+ }
13450
+ });
13451
+ var SelectViewport_default = SelectViewport_vue_vue_type_script_setup_true_lang_default;
13452
+ function getNextSortedValues(prevValues = [], nextValue, atIndex) {
13453
+ const nextValues = [...prevValues];
13454
+ nextValues[atIndex] = nextValue;
13455
+ return nextValues.sort((a, b) => a - b);
13456
+ }
13457
+ function convertValueToPercentage(value, min2, max2) {
13458
+ const maxSteps = max2 - min2;
13459
+ const percentPerStep = 100 / maxSteps;
13460
+ const percentage = percentPerStep * (value - min2);
13461
+ return clamp$1(percentage, 0, 100);
13462
+ }
13463
+ function getLabel(index, totalValues) {
13464
+ if (totalValues > 2) return `Value ${index + 1} of ${totalValues}`;
13465
+ else if (totalValues === 2) return ["Minimum", "Maximum"][index];
13466
+ else return void 0;
13467
+ }
13468
+ function getClosestValueIndex(values, nextValue) {
13469
+ if (values.length === 1) return 0;
13470
+ const distances = values.map((value) => Math.abs(value - nextValue));
13471
+ const closestDistance = Math.min(...distances);
13472
+ return distances.indexOf(closestDistance);
13473
+ }
13474
+ function getThumbInBoundsOffset(width, left, direction) {
13475
+ const halfWidth = width / 2;
13476
+ const halfPercent = 50;
13477
+ const offset2 = linearScale([0, halfPercent], [0, halfWidth]);
13478
+ return (halfWidth - offset2(left) * direction) * direction;
13479
+ }
13480
+ function getStepsBetweenValues(values) {
13481
+ return values.slice(0, -1).map((value, index) => values[index + 1] - value);
13482
+ }
13483
+ function hasMinStepsBetweenValues(values, minStepsBetweenValues) {
13484
+ if (minStepsBetweenValues > 0) {
13485
+ const stepsBetweenValues = getStepsBetweenValues(values);
13486
+ const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);
13487
+ return actualMinStepsBetweenValues >= minStepsBetweenValues;
13488
+ }
13489
+ return true;
13490
+ }
13491
+ function linearScale(input, output) {
13492
+ return (value) => {
13493
+ if (input[0] === input[1] || output[0] === output[1]) return output[0];
13494
+ const ratio = (output[1] - output[0]) / (input[1] - input[0]);
13495
+ return output[0] + ratio * (value - input[0]);
13496
+ };
13497
+ }
13498
+ function getDecimalCount(value) {
13499
+ return (String(value).split(".")[1] || "").length;
13500
+ }
13501
+ function roundValue(value, decimalCount) {
13502
+ const rounder = 10 ** decimalCount;
13503
+ return Math.round(value * rounder) / rounder;
13504
+ }
13505
+ const PAGE_KEYS = ["PageUp", "PageDown"];
13506
+ const ARROW_KEYS = [
13507
+ "ArrowUp",
13508
+ "ArrowDown",
13509
+ "ArrowLeft",
13510
+ "ArrowRight"
13511
+ ];
13512
+ const BACK_KEYS = {
13513
+ "from-left": [
13514
+ "Home",
13515
+ "PageDown",
13516
+ "ArrowDown",
13517
+ "ArrowLeft"
13518
+ ],
13519
+ "from-right": [
13520
+ "Home",
13521
+ "PageDown",
13522
+ "ArrowDown",
13523
+ "ArrowRight"
13524
+ ],
13525
+ "from-bottom": [
13526
+ "Home",
13527
+ "PageDown",
13528
+ "ArrowDown",
13529
+ "ArrowLeft"
13530
+ ],
13531
+ "from-top": [
13532
+ "Home",
13533
+ "PageUp",
13534
+ "ArrowUp",
13535
+ "ArrowLeft"
13536
+ ]
13537
+ };
13538
+ const [injectSliderOrientationContext, provideSliderOrientationContext] = createContext(["SliderVertical", "SliderHorizontal"]);
13539
+ var SliderHorizontal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13540
+ __name: "SliderHorizontal",
13541
+ props: {
13542
+ dir: {
13543
+ type: String,
13544
+ required: false
13545
+ },
13546
+ min: {
13547
+ type: Number,
13548
+ required: true
13549
+ },
13550
+ max: {
13551
+ type: Number,
13552
+ required: true
13553
+ },
13554
+ inverted: {
13555
+ type: Boolean,
13556
+ required: true
13557
+ }
13558
+ },
13559
+ emits: [
13560
+ "slideEnd",
13561
+ "slideStart",
13562
+ "slideMove",
13563
+ "homeKeyDown",
13564
+ "endKeyDown",
13565
+ "stepKeyDown"
13566
+ ],
13567
+ setup(__props, { emit: __emit }) {
13568
+ const props = __props;
13569
+ const emits = __emit;
13570
+ const { max: max2, min: min2, dir, inverted } = toRefs(props);
13571
+ const { forwardRef, currentElement: sliderElement } = useForwardExpose();
13572
+ const rootContext = injectSliderRootContext();
13573
+ const offsetPosition = ref();
13574
+ const rectRef = ref();
13575
+ const isSlidingFromLeft = computed(() => dir?.value !== "rtl" && !inverted.value || dir?.value !== "ltr" && inverted.value);
13576
+ function getValueFromPointerEvent(event, slideStart) {
13577
+ const rect = rectRef.value || sliderElement.value.getBoundingClientRect();
13578
+ const thumb = [...rootContext.thumbElements.value][rootContext.valueIndexToChangeRef.value];
13579
+ const thumbWidth = rootContext.thumbAlignment.value === "contain" ? thumb.clientWidth : 0;
13580
+ if (!offsetPosition.value && !slideStart && rootContext.thumbAlignment.value === "contain") offsetPosition.value = event.clientX - thumb.getBoundingClientRect().left;
13581
+ const input = [0, rect.width - thumbWidth];
13582
+ const output = isSlidingFromLeft.value ? [min2.value, max2.value] : [max2.value, min2.value];
13583
+ const value = linearScale(input, output);
13584
+ rectRef.value = rect;
13585
+ const position = slideStart ? event.clientX - rect.left - thumbWidth / 2 : event.clientX - rect.left - (offsetPosition.value ?? 0);
13586
+ return value(position);
13587
+ }
13588
+ const startEdge = computed(() => isSlidingFromLeft.value ? "left" : "right");
13589
+ const endEdge = computed(() => isSlidingFromLeft.value ? "right" : "left");
13590
+ const direction = computed(() => isSlidingFromLeft.value ? 1 : -1);
13591
+ provideSliderOrientationContext({
13592
+ startEdge,
13593
+ endEdge,
13594
+ direction,
13595
+ size: "width"
13596
+ });
13597
+ return (_ctx, _cache) => {
13598
+ return openBlock(), createBlock(SliderImpl_default, {
13599
+ ref: unref(forwardRef),
13600
+ dir: unref(dir),
13601
+ "data-orientation": "horizontal",
13602
+ style: normalizeStyle({ ["--reka-slider-thumb-transform"]: !isSlidingFromLeft.value && unref(rootContext).thumbAlignment.value === "overflow" ? "translateX(50%)" : "translateX(-50%)" }),
13603
+ onSlideStart: _cache[0] || (_cache[0] = (event) => {
13604
+ const value = getValueFromPointerEvent(event, true);
13605
+ emits("slideStart", value);
13606
+ }),
13607
+ onSlideMove: _cache[1] || (_cache[1] = (event) => {
13608
+ const value = getValueFromPointerEvent(event);
13609
+ emits("slideMove", value);
13610
+ }),
13611
+ onSlideEnd: _cache[2] || (_cache[2] = () => {
13612
+ rectRef.value = void 0;
12116
13613
  offsetPosition.value = void 0;
12117
13614
  emits("slideEnd");
12118
13615
  }),
@@ -15071,7 +16568,7 @@ function useCustomColors(componentName, baseColor, textColor) {
15071
16568
  return styles;
15072
16569
  });
15073
16570
  }
15074
- const _sfc_main$R = /* @__PURE__ */ defineComponent({
16571
+ const _sfc_main$U = /* @__PURE__ */ defineComponent({
15075
16572
  __name: "SkAccordion",
15076
16573
  props: {
15077
16574
  type: { default: "single" },
@@ -15127,9 +16624,9 @@ const _export_sfc = (sfc, props) => {
15127
16624
  }
15128
16625
  return target;
15129
16626
  };
15130
- const SkAccordion = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["__scopeId", "data-v-85c35809"]]);
15131
- const _hoisted_1$x = { class: "sk-accordion-content-inner" };
15132
- const _sfc_main$Q = /* @__PURE__ */ defineComponent({
16627
+ const SkAccordion = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["__scopeId", "data-v-85c35809"]]);
16628
+ const _hoisted_1$z = { class: "sk-accordion-content-inner" };
16629
+ const _sfc_main$T = /* @__PURE__ */ defineComponent({
15133
16630
  __name: "SkAccordionItem",
15134
16631
  props: {
15135
16632
  value: {},
@@ -15192,7 +16689,7 @@ const _sfc_main$Q = /* @__PURE__ */ defineComponent({
15192
16689
  }),
15193
16690
  createVNode(unref(AccordionContent_default), { class: "sk-accordion-content" }, {
15194
16691
  default: withCtx(() => [
15195
- createElementVNode("div", _hoisted_1$x, [
16692
+ createElementVNode("div", _hoisted_1$z, [
15196
16693
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
15197
16694
  ])
15198
16695
  ]),
@@ -15204,8 +16701,8 @@ const _sfc_main$Q = /* @__PURE__ */ defineComponent({
15204
16701
  };
15205
16702
  }
15206
16703
  });
15207
- const SkAccordionItem = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["__scopeId", "data-v-5e73d91f"]]);
15208
- const _hoisted_1$w = {
16704
+ const SkAccordionItem = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["__scopeId", "data-v-5e73d91f"]]);
16705
+ const _hoisted_1$y = {
15209
16706
  key: 0,
15210
16707
  class: "sk-alert-icon"
15211
16708
  };
@@ -15238,7 +16735,7 @@ const _hoisted_5$6 = {
15238
16735
  "stroke-width": "2"
15239
16736
  };
15240
16737
  const _hoisted_6$4 = { class: "sk-alert-content" };
15241
- const _sfc_main$P = /* @__PURE__ */ defineComponent({
16738
+ const _sfc_main$S = /* @__PURE__ */ defineComponent({
15242
16739
  __name: "SkAlert",
15243
16740
  props: {
15244
16741
  kind: { default: "info" },
@@ -15277,7 +16774,7 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
15277
16774
  style: normalizeStyle(unref(customColorStyles)),
15278
16775
  role: "alert"
15279
16776
  }, [
15280
- shouldShowIcon.value ? (openBlock(), createElementBlock("div", _hoisted_1$w, [
16777
+ shouldShowIcon.value ? (openBlock(), createElementBlock("div", _hoisted_1$y, [
15281
16778
  renderSlot(_ctx.$slots, "icon", {}, () => [
15282
16779
  __props.kind === "info" ? (openBlock(), createElementBlock("svg", _hoisted_2$h, [..._cache[0] || (_cache[0] = [
15283
16780
  createElementVNode("circle", {
@@ -15342,12 +16839,12 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
15342
16839
  };
15343
16840
  }
15344
16841
  });
15345
- const _hoisted_1$v = ["src", "alt"];
16842
+ const _hoisted_1$x = ["src", "alt"];
15346
16843
  const _hoisted_2$g = {
15347
16844
  key: 1,
15348
16845
  class: "sk-avatar-initials"
15349
16846
  };
15350
- const _sfc_main$O = /* @__PURE__ */ defineComponent({
16847
+ const _sfc_main$R = /* @__PURE__ */ defineComponent({
15351
16848
  __name: "SkAvatar",
15352
16849
  props: {
15353
16850
  src: { default: void 0 },
@@ -15396,7 +16893,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
15396
16893
  alt: __props.alt,
15397
16894
  class: "sk-avatar-image",
15398
16895
  onError: handleImageError
15399
- }, null, 40, _hoisted_1$v)) : __props.initials ? (openBlock(), createElementBlock("span", _hoisted_2$g, toDisplayString(displayInitials.value), 1)) : renderSlot(_ctx.$slots, "icon", { key: 2 }, () => [
16896
+ }, null, 40, _hoisted_1$x)) : __props.initials ? (openBlock(), createElementBlock("span", _hoisted_2$g, toDisplayString(displayInitials.value), 1)) : renderSlot(_ctx.$slots, "icon", { key: 2 }, () => [
15400
16897
  _cache[0] || (_cache[0] = createElementVNode("svg", {
15401
16898
  class: "sk-avatar-icon",
15402
16899
  viewBox: "0 0 24 24",
@@ -15409,7 +16906,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
15409
16906
  };
15410
16907
  }
15411
16908
  });
15412
- const SkAvatar = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["__scopeId", "data-v-07c208b7"]]);
16909
+ const SkAvatar = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["__scopeId", "data-v-07c208b7"]]);
15413
16910
  /*!
15414
16911
  * vue-router v4.6.3
15415
16912
  * (c) 2025 Eduardo San Martin Morote
@@ -15585,8 +17082,8 @@ function getOriginalPath(record) {
15585
17082
  return record ? record.aliasOf ? record.aliasOf.path : record.path : "";
15586
17083
  }
15587
17084
  const getLinkClass = (propClass, globalClass, defaultClass) => propClass != null ? propClass : globalClass != null ? globalClass : defaultClass;
15588
- const _hoisted_1$u = { class: "sk-breadcrumb-item" };
15589
- const _sfc_main$N = /* @__PURE__ */ defineComponent({
17085
+ const _hoisted_1$w = { class: "sk-breadcrumb-item" };
17086
+ const _sfc_main$Q = /* @__PURE__ */ defineComponent({
15590
17087
  __name: "SkBreadcrumbItem",
15591
17088
  props: {
15592
17089
  to: { default: void 0 },
@@ -15614,7 +17111,7 @@ const _sfc_main$N = /* @__PURE__ */ defineComponent({
15614
17111
  [`sk-${kind}`]: true
15615
17112
  }));
15616
17113
  return (_ctx, _cache) => {
15617
- return openBlock(), createElementBlock("li", _hoisted_1$u, [
17114
+ return openBlock(), createElementBlock("li", _hoisted_1$w, [
15618
17115
  (openBlock(), createBlock(resolveDynamicComponent(componentTag.value), {
15619
17116
  class: normalizeClass(linkClasses.value),
15620
17117
  to: __props.to,
@@ -15632,12 +17129,12 @@ const _sfc_main$N = /* @__PURE__ */ defineComponent({
15632
17129
  };
15633
17130
  }
15634
17131
  });
15635
- const SkBreadcrumbItem = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__scopeId", "data-v-83066af5"]]);
15636
- const _hoisted_1$t = {
17132
+ const SkBreadcrumbItem = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["__scopeId", "data-v-83066af5"]]);
17133
+ const _hoisted_1$v = {
15637
17134
  class: "sk-breadcrumb-separator",
15638
17135
  "aria-hidden": "true"
15639
17136
  };
15640
- const _sfc_main$M = /* @__PURE__ */ defineComponent({
17137
+ const _sfc_main$P = /* @__PURE__ */ defineComponent({
15641
17138
  __name: "SkBreadcrumbSeparator",
15642
17139
  props: {
15643
17140
  separator: { default: void 0 }
@@ -15647,13 +17144,13 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
15647
17144
  const parentSeparator = inject("breadcrumbs-separator", "/");
15648
17145
  const displaySeparator = computed(() => props.separator ?? parentSeparator);
15649
17146
  return (_ctx, _cache) => {
15650
- return openBlock(), createElementBlock("span", _hoisted_1$t, toDisplayString(displaySeparator.value), 1);
17147
+ return openBlock(), createElementBlock("span", _hoisted_1$v, toDisplayString(displaySeparator.value), 1);
15651
17148
  };
15652
17149
  }
15653
17150
  });
15654
- const SkBreadcrumbSeparator = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["__scopeId", "data-v-fab30e8b"]]);
15655
- const _hoisted_1$s = { class: "sk-breadcrumbs-list" };
15656
- const _sfc_main$L = /* @__PURE__ */ defineComponent({
17151
+ const SkBreadcrumbSeparator = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["__scopeId", "data-v-fab30e8b"]]);
17152
+ const _hoisted_1$u = { class: "sk-breadcrumbs-list" };
17153
+ const _sfc_main$O = /* @__PURE__ */ defineComponent({
15657
17154
  __name: "SkBreadcrumbs",
15658
17155
  props: {
15659
17156
  kind: { default: "neutral" },
@@ -15691,7 +17188,7 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
15691
17188
  style: normalizeStyle(unref(customColorStyles)),
15692
17189
  "aria-label": "Breadcrumb"
15693
17190
  }, [
15694
- createElementVNode("ol", _hoisted_1$s, [
17191
+ createElementVNode("ol", _hoisted_1$u, [
15695
17192
  (openBlock(true), createElementBlock(Fragment, null, renderList(processedItems.value, (item, index) => {
15696
17193
  return openBlock(), createElementBlock(Fragment, { key: index }, [
15697
17194
  (openBlock(), createBlock(resolveDynamicComponent(item))),
@@ -15703,8 +17200,8 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
15703
17200
  };
15704
17201
  }
15705
17202
  });
15706
- const SkBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["__scopeId", "data-v-f7fec0fe"]]);
15707
- const _hoisted_1$r = {
17203
+ const SkBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["__scopeId", "data-v-f7fec0fe"]]);
17204
+ const _hoisted_1$t = {
15708
17205
  key: 0,
15709
17206
  class: "sk-button-loader",
15710
17207
  "aria-hidden": "true"
@@ -15725,7 +17222,7 @@ const _hoisted_5$5 = {
15725
17222
  key: 3,
15726
17223
  class: "sk-button-icon sk-button-icon-trailing"
15727
17224
  };
15728
- const _sfc_main$K = /* @__PURE__ */ defineComponent({
17225
+ const _sfc_main$N = /* @__PURE__ */ defineComponent({
15729
17226
  __name: "SkButton",
15730
17227
  props: {
15731
17228
  type: { default: "button" },
@@ -15782,7 +17279,7 @@ const _sfc_main$K = /* @__PURE__ */ defineComponent({
15782
17279
  role: "button"
15783
17280
  }, {
15784
17281
  default: withCtx(() => [
15785
- __props.loading ? (openBlock(), createElementBlock("span", _hoisted_1$r)) : createCommentVNode("", true),
17282
+ __props.loading ? (openBlock(), createElementBlock("span", _hoisted_1$t)) : createCommentVNode("", true),
15786
17283
  createElementVNode("span", {
15787
17284
  class: normalizeClass({ "sk-button-content": true, "loading": __props.loading })
15788
17285
  }, [
@@ -15805,20 +17302,22 @@ const _sfc_main$K = /* @__PURE__ */ defineComponent({
15805
17302
  };
15806
17303
  }
15807
17304
  });
15808
- const SkButton = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["__scopeId", "data-v-543676d6"]]);
15809
- const _sfc_main$J = /* @__PURE__ */ defineComponent({
17305
+ const SkButton = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["__scopeId", "data-v-543676d6"]]);
17306
+ const _sfc_main$M = /* @__PURE__ */ defineComponent({
15810
17307
  __name: "SkPanel",
15811
17308
  props: {
15812
17309
  kind: { default: "neutral" },
15813
17310
  size: { default: "md" },
15814
17311
  showDecoration: { type: Boolean, default: true },
15815
17312
  noBorder: { type: Boolean, default: false },
17313
+ corners: { default: () => ["bottom-right"] },
17314
+ decorationCorner: { default: "bottom-right" },
15816
17315
  baseColor: {},
15817
17316
  textColor: {}
15818
17317
  },
15819
17318
  setup(__props) {
15820
17319
  useCssVars((_ctx) => ({
15821
- "v29b35e9c": decorationDisplay.value
17320
+ "v42b18398": decorationDisplay.value
15822
17321
  }));
15823
17322
  const props = __props;
15824
17323
  const classes = computed(() => {
@@ -15826,7 +17325,12 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
15826
17325
  "sk-panel": true,
15827
17326
  [`sk-${props.kind}`]: true,
15828
17327
  [`sk-${props.size}`]: true,
15829
- "sk-no-border": props.noBorder
17328
+ "sk-no-border": props.noBorder,
17329
+ "sk-cut-top-left": props.corners.includes("top-left"),
17330
+ "sk-cut-top-right": props.corners.includes("top-right"),
17331
+ "sk-cut-bottom-right": props.corners.includes("bottom-right"),
17332
+ "sk-cut-bottom-left": props.corners.includes("bottom-left"),
17333
+ [`sk-decoration-${props.decorationCorner}`]: true
15830
17334
  };
15831
17335
  });
15832
17336
  const customColorStyles = useCustomColors(
@@ -15835,10 +17339,13 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
15835
17339
  toRef(() => props.textColor)
15836
17340
  );
15837
17341
  const decorationDisplay = computed(() => {
15838
- if (props.noBorder) {
17342
+ if (props.noBorder || !props.showDecoration) {
15839
17343
  return "none";
15840
17344
  }
15841
- return props.showDecoration ? "block" : "none";
17345
+ if (!props.corners.includes(props.decorationCorner)) {
17346
+ return "none";
17347
+ }
17348
+ return "block";
15842
17349
  });
15843
17350
  return (_ctx, _cache) => {
15844
17351
  return openBlock(), createElementBlock("div", {
@@ -15850,8 +17357,8 @@ const _sfc_main$J = /* @__PURE__ */ defineComponent({
15850
17357
  };
15851
17358
  }
15852
17359
  });
15853
- const SkPanel = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__scopeId", "data-v-1a397f27"]]);
15854
- const _hoisted_1$q = {
17360
+ const SkPanel = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["__scopeId", "data-v-07c1642c"]]);
17361
+ const _hoisted_1$s = {
15855
17362
  key: 0,
15856
17363
  class: "sk-card-title"
15857
17364
  };
@@ -15863,7 +17370,7 @@ const _hoisted_3$b = {
15863
17370
  key: 3,
15864
17371
  class: "sk-card-footer"
15865
17372
  };
15866
- const _sfc_main$I = /* @__PURE__ */ defineComponent({
17373
+ const _sfc_main$L = /* @__PURE__ */ defineComponent({
15867
17374
  __name: "SkCard",
15868
17375
  props: {
15869
17376
  kind: { default: "neutral" },
@@ -15874,6 +17381,8 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
15874
17381
  title: { default: void 0 },
15875
17382
  headerColor: { default: void 0 },
15876
17383
  scrollable: { type: Boolean, default: false },
17384
+ corners: { default: () => ["bottom-right"] },
17385
+ decorationCorner: { default: "bottom-right" },
15877
17386
  baseColor: {},
15878
17387
  textColor: {}
15879
17388
  },
@@ -15917,6 +17426,8 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
15917
17426
  "no-border": __props.noBorder,
15918
17427
  "base-color": __props.baseColor,
15919
17428
  "text-color": __props.textColor,
17429
+ corners: __props.corners,
17430
+ "decoration-corner": __props.decorationCorner,
15920
17431
  class: normalizeClass(classes.value)
15921
17432
  }, {
15922
17433
  default: withCtx(() => [
@@ -15925,7 +17436,7 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
15925
17436
  class: "sk-card-header",
15926
17437
  style: normalizeStyle(headerStyles.value)
15927
17438
  }, [
15928
- __props.title ? (openBlock(), createElementBlock("h3", _hoisted_1$q, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
17439
+ __props.title ? (openBlock(), createElementBlock("h3", _hoisted_1$s, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
15929
17440
  renderSlot(_ctx.$slots, "header")
15930
17441
  ], 4)) : createCommentVNode("", true),
15931
17442
  _ctx.$slots.media ? (openBlock(), createElementBlock("div", _hoisted_2$e, [
@@ -15942,11 +17453,11 @@ const _sfc_main$I = /* @__PURE__ */ defineComponent({
15942
17453
  ])) : createCommentVNode("", true)
15943
17454
  ]),
15944
17455
  _: 3
15945
- }, 8, ["kind", "size", "show-decoration", "no-border", "base-color", "text-color", "class"]);
17456
+ }, 8, ["kind", "size", "show-decoration", "no-border", "base-color", "text-color", "corners", "decoration-corner", "class"]);
15946
17457
  };
15947
17458
  }
15948
17459
  });
15949
- const _hoisted_1$p = {
17460
+ const _hoisted_1$r = {
15950
17461
  key: 0,
15951
17462
  xmlns: "http://www.w3.org/2000/svg",
15952
17463
  viewBox: "0 0 24 24",
@@ -15971,7 +17482,7 @@ const _hoisted_3$a = {
15971
17482
  key: 0,
15972
17483
  class: "sk-checkbox-label"
15973
17484
  };
15974
- const _sfc_main$H = /* @__PURE__ */ defineComponent({
17485
+ const _sfc_main$K = /* @__PURE__ */ defineComponent({
15975
17486
  __name: "SkCheckbox",
15976
17487
  props: /* @__PURE__ */ mergeModels({
15977
17488
  kind: { default: "neutral" },
@@ -16020,7 +17531,7 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
16020
17531
  default: withCtx(() => [
16021
17532
  createVNode(unref(CheckboxIndicator_default), { class: "sk-checkbox-indicator" }, {
16022
17533
  default: withCtx(() => [
16023
- checked.value === true ? (openBlock(), createElementBlock("svg", _hoisted_1$p, [..._cache[1] || (_cache[1] = [
17534
+ checked.value === true ? (openBlock(), createElementBlock("svg", _hoisted_1$r, [..._cache[1] || (_cache[1] = [
16024
17535
  createElementVNode("polyline", { points: "20 6 9 17 4 12" }, null, -1)
16025
17536
  ])])) : checked.value === "indeterminate" ? (openBlock(), createElementBlock("svg", _hoisted_2$d, [..._cache[2] || (_cache[2] = [
16026
17537
  createElementVNode("line", {
@@ -16045,9 +17556,9 @@ const _sfc_main$H = /* @__PURE__ */ defineComponent({
16045
17556
  };
16046
17557
  }
16047
17558
  });
16048
- const SkCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__scopeId", "data-v-073d7038"]]);
16049
- const _hoisted_1$o = { class: "sk-collapsible-content-inner" };
16050
- const _sfc_main$G = /* @__PURE__ */ defineComponent({
17559
+ const SkCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["__scopeId", "data-v-073d7038"]]);
17560
+ const _hoisted_1$q = { class: "sk-collapsible-content-inner" };
17561
+ const _sfc_main$J = /* @__PURE__ */ defineComponent({
16051
17562
  __name: "SkCollapsible",
16052
17563
  props: {
16053
17564
  open: { type: Boolean, default: void 0 },
@@ -16125,7 +17636,7 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
16125
17636
  }),
16126
17637
  createVNode(unref(CollapsibleContent_default), { class: "sk-collapsible-content" }, {
16127
17638
  default: withCtx(() => [
16128
- createElementVNode("div", _hoisted_1$o, [
17639
+ createElementVNode("div", _hoisted_1$q, [
16129
17640
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
16130
17641
  ])
16131
17642
  ]),
@@ -16137,9 +17648,9 @@ const _sfc_main$G = /* @__PURE__ */ defineComponent({
16137
17648
  };
16138
17649
  }
16139
17650
  });
16140
- const SkCollapsible = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["__scopeId", "data-v-dc60530b"]]);
16141
- const _hoisted_1$n = ["aria-orientation"];
16142
- const _sfc_main$F = /* @__PURE__ */ defineComponent({
17651
+ const SkCollapsible = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__scopeId", "data-v-dc60530b"]]);
17652
+ const _hoisted_1$p = ["aria-orientation"];
17653
+ const _sfc_main$I = /* @__PURE__ */ defineComponent({
16143
17654
  __name: "SkDivider",
16144
17655
  props: {
16145
17656
  orientation: { default: "horizontal" },
@@ -16163,7 +17674,7 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
16163
17674
  class: normalizeClass(classes.value),
16164
17675
  role: "separator",
16165
17676
  "aria-orientation": __props.orientation
16166
- }, null, 10, _hoisted_1$n);
17677
+ }, null, 10, _hoisted_1$p);
16167
17678
  };
16168
17679
  }
16169
17680
  });
@@ -16174,7 +17685,7 @@ function usePortalContext() {
16174
17685
  theme: currentTheme
16175
17686
  };
16176
17687
  }
16177
- const _hoisted_1$m = {
17688
+ const _hoisted_1$o = {
16178
17689
  xmlns: "http://www.w3.org/2000/svg",
16179
17690
  viewBox: "0 0 24 24",
16180
17691
  fill: "none",
@@ -16185,7 +17696,7 @@ const _hoisted_1$m = {
16185
17696
  style: { "width": "1rem", "height": "1rem" }
16186
17697
  };
16187
17698
  const _hoisted_2$c = ["points"];
16188
- const _sfc_main$E = /* @__PURE__ */ defineComponent({
17699
+ const _sfc_main$H = /* @__PURE__ */ defineComponent({
16189
17700
  __name: "SkDropdown",
16190
17701
  props: {
16191
17702
  kind: { default: "neutral" },
@@ -16233,7 +17744,7 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
16233
17744
  renderSlot(_ctx.$slots, "trigger", {}, () => [
16234
17745
  createVNode(SkButton, { kind: __props.kind }, {
16235
17746
  trailing: withCtx(() => [
16236
- (openBlock(), createElementBlock("svg", _hoisted_1$m, [
17747
+ (openBlock(), createElementBlock("svg", _hoisted_1$o, [
16237
17748
  createElementVNode("polyline", { points: caretPoints.value }, null, 8, _hoisted_2$c)
16238
17749
  ]))
16239
17750
  ]),
@@ -16270,8 +17781,8 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
16270
17781
  };
16271
17782
  }
16272
17783
  });
16273
- const SkDropdown = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__scopeId", "data-v-a5cb1061"]]);
16274
- const _sfc_main$D = /* @__PURE__ */ defineComponent({
17784
+ const SkDropdown = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["__scopeId", "data-v-a5cb1061"]]);
17785
+ const _sfc_main$G = /* @__PURE__ */ defineComponent({
16275
17786
  __name: "SkDropdownMenuItem",
16276
17787
  props: {
16277
17788
  disabled: { type: Boolean, default: false }
@@ -16295,8 +17806,8 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
16295
17806
  };
16296
17807
  }
16297
17808
  });
16298
- const SkDropdownMenuItem = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["__scopeId", "data-v-63d43580"]]);
16299
- const _sfc_main$C = /* @__PURE__ */ defineComponent({
17809
+ const SkDropdownMenuItem = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["__scopeId", "data-v-63d43580"]]);
17810
+ const _sfc_main$F = /* @__PURE__ */ defineComponent({
16300
17811
  __name: "SkDropdownMenuSeparator",
16301
17812
  setup(__props) {
16302
17813
  return (_ctx, _cache) => {
@@ -16304,8 +17815,8 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
16304
17815
  };
16305
17816
  }
16306
17817
  });
16307
- const SkDropdownMenuSeparator = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["__scopeId", "data-v-8d03fb68"]]);
16308
- const _sfc_main$B = /* @__PURE__ */ defineComponent({
17818
+ const SkDropdownMenuSeparator = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["__scopeId", "data-v-8d03fb68"]]);
17819
+ const _sfc_main$E = /* @__PURE__ */ defineComponent({
16309
17820
  __name: "SkDropdownSubmenu",
16310
17821
  props: {
16311
17822
  triggerText: {},
@@ -16366,8 +17877,8 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
16366
17877
  };
16367
17878
  }
16368
17879
  });
16369
- const SkDropdownSubmenu = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["__scopeId", "data-v-63bf4e4d"]]);
16370
- const _hoisted_1$l = ["for"];
17880
+ const SkDropdownSubmenu = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["__scopeId", "data-v-63bf4e4d"]]);
17881
+ const _hoisted_1$n = ["for"];
16371
17882
  const _hoisted_2$b = {
16372
17883
  key: 0,
16373
17884
  class: "sk-field-required"
@@ -16375,7 +17886,7 @@ const _hoisted_2$b = {
16375
17886
  const _hoisted_3$9 = { class: "sk-field-input-wrapper" };
16376
17887
  const _hoisted_4$7 = ["id"];
16377
17888
  const _hoisted_5$4 = ["id"];
16378
- const _sfc_main$A = /* @__PURE__ */ defineComponent({
17889
+ const _sfc_main$D = /* @__PURE__ */ defineComponent({
16379
17890
  __name: "SkField",
16380
17891
  props: {
16381
17892
  label: { default: void 0 },
@@ -16431,7 +17942,7 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
16431
17942
  }, [
16432
17943
  createTextVNode(toDisplayString(__props.label) + " ", 1),
16433
17944
  __props.required ? (openBlock(), createElementBlock("span", _hoisted_2$b, "*")) : createCommentVNode("", true)
16434
- ], 8, _hoisted_1$l)) : createCommentVNode("", true),
17945
+ ], 8, _hoisted_1$n)) : createCommentVNode("", true),
16435
17946
  createElementVNode("div", _hoisted_3$9, [
16436
17947
  renderSlot(_ctx.$slots, "default", {
16437
17948
  id: fieldId.value,
@@ -16454,8 +17965,8 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
16454
17965
  };
16455
17966
  }
16456
17967
  });
16457
- const SkField = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["__scopeId", "data-v-e19bf08c"]]);
16458
- const _sfc_main$z = /* @__PURE__ */ defineComponent({
17968
+ const SkField = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["__scopeId", "data-v-e19bf08c"]]);
17969
+ const _sfc_main$C = /* @__PURE__ */ defineComponent({
16459
17970
  __name: "SkGroup",
16460
17971
  props: {
16461
17972
  orientation: { default: "horizontal" }
@@ -16477,8 +17988,8 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
16477
17988
  };
16478
17989
  }
16479
17990
  });
16480
- const _hoisted_1$k = ["type", "disabled", "readonly", "placeholder", "required", "name", "autocomplete"];
16481
- const _sfc_main$y = /* @__PURE__ */ defineComponent({
17991
+ const _hoisted_1$m = ["type", "disabled", "readonly", "placeholder", "required", "name", "autocomplete"];
17992
+ const _sfc_main$B = /* @__PURE__ */ defineComponent({
16482
17993
  __name: "SkInput",
16483
17994
  props: /* @__PURE__ */ mergeModels({
16484
17995
  type: { default: "text" },
@@ -16525,14 +18036,14 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
16525
18036
  required: __props.required,
16526
18037
  name: __props.name,
16527
18038
  autocomplete: __props.autocomplete
16528
- }, _ctx.$attrs), null, 16, _hoisted_1$k)), [
18039
+ }, _ctx.$attrs), null, 16, _hoisted_1$m)), [
16529
18040
  [vModelDynamic, modelValue.value]
16530
18041
  ]);
16531
18042
  };
16532
18043
  }
16533
18044
  });
16534
- const SkInput = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["__scopeId", "data-v-c6012675"]]);
16535
- const _hoisted_1$j = {
18045
+ const SkInput = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["__scopeId", "data-v-c6012675"]]);
18046
+ const _hoisted_1$l = {
16536
18047
  xmlns: "http://www.w3.org/2000/svg",
16537
18048
  viewBox: "0 0 24 24",
16538
18049
  fill: "none",
@@ -16542,7 +18053,7 @@ const _hoisted_1$j = {
16542
18053
  "stroke-linejoin": "miter",
16543
18054
  style: { "width": "1rem", "height": "1rem" }
16544
18055
  };
16545
- const _sfc_main$x = /* @__PURE__ */ defineComponent({
18056
+ const _sfc_main$A = /* @__PURE__ */ defineComponent({
16546
18057
  __name: "SkListbox",
16547
18058
  props: /* @__PURE__ */ mergeModels({
16548
18059
  kind: { default: void 0 },
@@ -16606,7 +18117,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
16606
18117
  class: normalizeClass(triggerClasses.value)
16607
18118
  }, {
16608
18119
  default: withCtx(() => [
16609
- (openBlock(), createElementBlock("svg", _hoisted_1$j, [..._cache[1] || (_cache[1] = [
18120
+ (openBlock(), createElementBlock("svg", _hoisted_1$l, [..._cache[1] || (_cache[1] = [
16610
18121
  createElementVNode("polyline", { points: "6 9 12 15 18 9" }, null, -1)
16611
18122
  ])]))
16612
18123
  ]),
@@ -16645,8 +18156,8 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
16645
18156
  };
16646
18157
  }
16647
18158
  });
16648
- const SkListbox = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-fbc1f022"]]);
16649
- const _hoisted_1$i = {
18159
+ const SkListbox = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["__scopeId", "data-v-fbc1f022"]]);
18160
+ const _hoisted_1$k = {
16650
18161
  xmlns: "http://www.w3.org/2000/svg",
16651
18162
  viewBox: "0 0 24 24",
16652
18163
  fill: "none",
@@ -16656,7 +18167,7 @@ const _hoisted_1$i = {
16656
18167
  "stroke-linejoin": "miter",
16657
18168
  style: { "width": "1rem", "height": "1rem" }
16658
18169
  };
16659
- const _sfc_main$w = /* @__PURE__ */ defineComponent({
18170
+ const _sfc_main$z = /* @__PURE__ */ defineComponent({
16660
18171
  __name: "SkListboxItem",
16661
18172
  props: {
16662
18173
  value: {},
@@ -16676,7 +18187,7 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
16676
18187
  renderSlot(_ctx.$slots, "default", {}, void 0, true),
16677
18188
  createVNode(unref(ComboboxItemIndicator_default), { class: "sk-listbox-item-indicator" }, {
16678
18189
  default: withCtx(() => [
16679
- (openBlock(), createElementBlock("svg", _hoisted_1$i, [..._cache[0] || (_cache[0] = [
18190
+ (openBlock(), createElementBlock("svg", _hoisted_1$k, [..._cache[0] || (_cache[0] = [
16680
18191
  createElementVNode("polyline", { points: "20 6 9 17 4 12" }, null, -1)
16681
18192
  ])]))
16682
18193
  ]),
@@ -16688,8 +18199,8 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
16688
18199
  };
16689
18200
  }
16690
18201
  });
16691
- const SkListboxItem = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["__scopeId", "data-v-fcf3fe85"]]);
16692
- const _sfc_main$v = /* @__PURE__ */ defineComponent({
18202
+ const SkListboxItem = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["__scopeId", "data-v-fcf3fe85"]]);
18203
+ const _sfc_main$y = /* @__PURE__ */ defineComponent({
16693
18204
  __name: "SkListboxSeparator",
16694
18205
  setup(__props) {
16695
18206
  return (_ctx, _cache) => {
@@ -16697,8 +18208,8 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
16697
18208
  };
16698
18209
  }
16699
18210
  });
16700
- const SkListboxSeparator = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["__scopeId", "data-v-12046626"]]);
16701
- const _hoisted_1$h = {
18211
+ const SkListboxSeparator = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["__scopeId", "data-v-12046626"]]);
18212
+ const _hoisted_1$j = {
16702
18213
  key: 0,
16703
18214
  class: "sk-modal-header"
16704
18215
  };
@@ -16707,7 +18218,7 @@ const _hoisted_3$8 = {
16707
18218
  key: 1,
16708
18219
  class: "sk-modal-footer"
16709
18220
  };
16710
- const _sfc_main$u = /* @__PURE__ */ defineComponent({
18221
+ const _sfc_main$x = /* @__PURE__ */ defineComponent({
16711
18222
  __name: "SkModal",
16712
18223
  props: {
16713
18224
  kind: { default: "neutral" },
@@ -16798,7 +18309,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
16798
18309
  onInteractOutside: handleOverlayClick
16799
18310
  }, {
16800
18311
  default: withCtx(() => [
16801
- _ctx.$slots.title || __props.title ? (openBlock(), createElementBlock("div", _hoisted_1$h, [
18312
+ _ctx.$slots.title || __props.title ? (openBlock(), createElementBlock("div", _hoisted_1$j, [
16802
18313
  createVNode(unref(DialogTitle_default), { class: "sk-modal-title" }, {
16803
18314
  default: withCtx(() => [
16804
18315
  renderSlot(_ctx.$slots, "title", { close }, () => [
@@ -16845,8 +18356,8 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
16845
18356
  };
16846
18357
  }
16847
18358
  });
16848
- const SkModal = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-d5c13c78"]]);
16849
- const _hoisted_1$g = { class: "sk-navbar-content" };
18359
+ const SkModal = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["__scopeId", "data-v-d5c13c78"]]);
18360
+ const _hoisted_1$i = { class: "sk-navbar-content" };
16850
18361
  const _hoisted_2$9 = {
16851
18362
  key: 0,
16852
18363
  class: "sk-navbar-brand"
@@ -16859,7 +18370,7 @@ const _hoisted_4$6 = {
16859
18370
  key: 2,
16860
18371
  class: "sk-navbar-actions"
16861
18372
  };
16862
- const _sfc_main$t = /* @__PURE__ */ defineComponent({
18373
+ const _sfc_main$w = /* @__PURE__ */ defineComponent({
16863
18374
  __name: "SkNavBar",
16864
18375
  props: {
16865
18376
  kind: { default: "neutral" },
@@ -16887,7 +18398,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
16887
18398
  class: normalizeClass(classes.value),
16888
18399
  style: normalizeStyle(unref(customColorStyles))
16889
18400
  }, [
16890
- createElementVNode("div", _hoisted_1$g, [
18401
+ createElementVNode("div", _hoisted_1$i, [
16891
18402
  unref(slots).brand ? (openBlock(), createElementBlock("div", _hoisted_2$9, [
16892
18403
  renderSlot(_ctx.$slots, "brand")
16893
18404
  ])) : createCommentVNode("", true),
@@ -16902,8 +18413,8 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
16902
18413
  };
16903
18414
  }
16904
18415
  });
16905
- const _hoisted_1$f = { class: "sk-number-input-steppers" };
16906
- const _sfc_main$s = /* @__PURE__ */ defineComponent({
18416
+ const _hoisted_1$h = { class: "sk-number-input-steppers" };
18417
+ const _sfc_main$v = /* @__PURE__ */ defineComponent({
16907
18418
  __name: "SkNumberInput",
16908
18419
  props: /* @__PURE__ */ mergeModels({
16909
18420
  kind: { default: void 0 },
@@ -16966,7 +18477,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
16966
18477
  class: normalizeClass(inputClasses.value),
16967
18478
  placeholder: __props.placeholder
16968
18479
  }, null, 8, ["class", "placeholder"]),
16969
- createElementVNode("div", _hoisted_1$f, [
18480
+ createElementVNode("div", _hoisted_1$h, [
16970
18481
  createVNode(unref(NumberFieldIncrement_default), { class: "sk-number-input-increment" }, {
16971
18482
  default: withCtx(() => [..._cache[1] || (_cache[1] = [
16972
18483
  createElementVNode("svg", {
@@ -17007,7 +18518,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
17007
18518
  };
17008
18519
  }
17009
18520
  });
17010
- const SkNumberInput = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-b589687f"]]);
18521
+ const SkNumberInput = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["__scopeId", "data-v-b589687f"]]);
17011
18522
  const ThemeSymbol = Symbol("SkTheme");
17012
18523
  function provideTheme(initialTheme = "greyscale") {
17013
18524
  const currentTheme = ref(initialTheme);
@@ -17028,7 +18539,7 @@ function useTheme() {
17028
18539
  }
17029
18540
  return context2;
17030
18541
  }
17031
- const _hoisted_1$e = ["data-scheme"];
18542
+ const _hoisted_1$g = ["data-scheme"];
17032
18543
  const _hoisted_2$8 = {
17033
18544
  key: 0,
17034
18545
  class: "sk-page-header"
@@ -17043,7 +18554,7 @@ const _hoisted_6$3 = {
17043
18554
  key: 1,
17044
18555
  class: "sk-page-footer"
17045
18556
  };
17046
- const _sfc_main$r = /* @__PURE__ */ defineComponent({
18557
+ const _sfc_main$u = /* @__PURE__ */ defineComponent({
17047
18558
  __name: "SkPage",
17048
18559
  props: {
17049
18560
  sidebarPosition: { default: "left" },
@@ -17097,19 +18608,19 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
17097
18608
  _ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_6$3, [
17098
18609
  renderSlot(_ctx.$slots, "footer", {}, void 0, true)
17099
18610
  ])) : createCommentVNode("", true)
17100
- ], 14, _hoisted_1$e);
18611
+ ], 14, _hoisted_1$g);
17101
18612
  };
17102
18613
  }
17103
18614
  });
17104
- const SkPage = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-ad672949"]]);
17105
- const _hoisted_1$d = ["disabled", "aria-label", "aria-current"];
18615
+ const SkPage = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-ad672949"]]);
18616
+ const _hoisted_1$f = ["disabled", "aria-label", "aria-current"];
17106
18617
  const _hoisted_2$7 = { key: 0 };
17107
18618
  const _hoisted_3$5 = { key: 1 };
17108
18619
  const _hoisted_4$4 = { key: 2 };
17109
18620
  const _hoisted_5$2 = { key: 3 };
17110
18621
  const _hoisted_6$2 = { key: 4 };
17111
18622
  const _hoisted_7 = { key: 5 };
17112
- const _sfc_main$q = /* @__PURE__ */ defineComponent({
18623
+ const _sfc_main$t = /* @__PURE__ */ defineComponent({
17113
18624
  __name: "SkPaginationItem",
17114
18625
  props: {
17115
18626
  page: { default: void 0 },
@@ -17168,12 +18679,12 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
17168
18679
  onClick: handleClick
17169
18680
  }, [
17170
18681
  __props.type === "prev" ? (openBlock(), createElementBlock("span", _hoisted_2$7, "‹")) : __props.type === "next" ? (openBlock(), createElementBlock("span", _hoisted_3$5, "›")) : __props.type === "first" ? (openBlock(), createElementBlock("span", _hoisted_4$4, "‹‹")) : __props.type === "last" ? (openBlock(), createElementBlock("span", _hoisted_5$2, "››")) : __props.type === "ellipsis" ? (openBlock(), createElementBlock("span", _hoisted_6$2, "...")) : (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(__props.page), 1))
17171
- ], 10, _hoisted_1$d);
18682
+ ], 10, _hoisted_1$f);
17172
18683
  };
17173
18684
  }
17174
18685
  });
17175
- const SkPaginationItem = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["__scopeId", "data-v-1eea3ced"]]);
17176
- const _sfc_main$p = /* @__PURE__ */ defineComponent({
18686
+ const SkPaginationItem = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-1eea3ced"]]);
18687
+ const _sfc_main$s = /* @__PURE__ */ defineComponent({
17177
18688
  __name: "SkPagination",
17178
18689
  props: {
17179
18690
  total: {},
@@ -17287,8 +18798,8 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
17287
18798
  };
17288
18799
  }
17289
18800
  });
17290
- const SkPagination = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["__scopeId", "data-v-e7fb9357"]]);
17291
- const _hoisted_1$c = {
18801
+ const SkPagination = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-e7fb9357"]]);
18802
+ const _hoisted_1$e = {
17292
18803
  key: 0,
17293
18804
  class: "sk-popover-header"
17294
18805
  };
@@ -17304,7 +18815,7 @@ const _hoisted_4$3 = {
17304
18815
  key: 2,
17305
18816
  class: "sk-popover-footer"
17306
18817
  };
17307
- const _sfc_main$o = /* @__PURE__ */ defineComponent({
18818
+ const _sfc_main$r = /* @__PURE__ */ defineComponent({
17308
18819
  __name: "SkPopover",
17309
18820
  props: {
17310
18821
  kind: { default: "neutral" },
@@ -17360,7 +18871,7 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
17360
18871
  "collision-padding": 8
17361
18872
  }, {
17362
18873
  default: withCtx(() => [
17363
- __props.title || _ctx.$slots.header ? (openBlock(), createElementBlock("div", _hoisted_1$c, [
18874
+ __props.title || _ctx.$slots.header ? (openBlock(), createElementBlock("div", _hoisted_1$e, [
17364
18875
  __props.title ? (openBlock(), createElementBlock("h3", _hoisted_2$6, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
17365
18876
  renderSlot(_ctx.$slots, "header", {}, void 0, true),
17366
18877
  __props.closable ? (openBlock(), createBlock(unref(PopoverClose_default), {
@@ -17419,8 +18930,8 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
17419
18930
  };
17420
18931
  }
17421
18932
  });
17422
- const SkPopover = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["__scopeId", "data-v-679c4935"]]);
17423
- const _sfc_main$n = /* @__PURE__ */ defineComponent({
18933
+ const SkPopover = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-679c4935"]]);
18934
+ const _sfc_main$q = /* @__PURE__ */ defineComponent({
17424
18935
  __name: "SkProgress",
17425
18936
  props: {
17426
18937
  value: { default: null },
@@ -17493,12 +19004,12 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
17493
19004
  };
17494
19005
  }
17495
19006
  });
17496
- const SkProgress = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-4b68e83d"]]);
17497
- const _hoisted_1$b = {
19007
+ const SkProgress = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["__scopeId", "data-v-4b68e83d"]]);
19008
+ const _hoisted_1$d = {
17498
19009
  key: 0,
17499
19010
  class: "sk-radio-label"
17500
19011
  };
17501
- const _sfc_main$m = /* @__PURE__ */ defineComponent({
19012
+ const _sfc_main$p = /* @__PURE__ */ defineComponent({
17502
19013
  __name: "SkRadio",
17503
19014
  props: {
17504
19015
  value: {},
@@ -17544,7 +19055,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
17544
19055
  ]),
17545
19056
  _: 1
17546
19057
  }, 8, ["class", "style", "value", "disabled"]),
17547
- __props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("span", _hoisted_1$b, [
19058
+ __props.label || _ctx.$slots.default ? (openBlock(), createElementBlock("span", _hoisted_1$d, [
17548
19059
  renderSlot(_ctx.$slots, "default", {}, () => [
17549
19060
  createTextVNode(toDisplayString(__props.label), 1)
17550
19061
  ], true)
@@ -17553,8 +19064,8 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
17553
19064
  };
17554
19065
  }
17555
19066
  });
17556
- const SkRadio = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-c88f9c3f"]]);
17557
- const _sfc_main$l = /* @__PURE__ */ defineComponent({
19067
+ const SkRadio = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["__scopeId", "data-v-c88f9c3f"]]);
19068
+ const _sfc_main$o = /* @__PURE__ */ defineComponent({
17558
19069
  __name: "SkRadioGroup",
17559
19070
  props: /* @__PURE__ */ mergeModels({
17560
19071
  orientation: { default: "vertical" },
@@ -17596,7 +19107,203 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
17596
19107
  };
17597
19108
  }
17598
19109
  });
17599
- const SkRadioGroup = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["__scopeId", "data-v-7f5bc9cb"]]);
19110
+ const SkRadioGroup = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["__scopeId", "data-v-7f5bc9cb"]]);
19111
+ const _hoisted_1$c = {
19112
+ xmlns: "http://www.w3.org/2000/svg",
19113
+ viewBox: "0 0 24 24",
19114
+ fill: "none",
19115
+ stroke: "currentColor",
19116
+ "stroke-width": "2",
19117
+ "stroke-linecap": "square",
19118
+ "stroke-linejoin": "miter",
19119
+ style: { "width": "1rem", "height": "1rem", "flex-shrink": "0" }
19120
+ };
19121
+ const _sfc_main$n = /* @__PURE__ */ defineComponent({
19122
+ __name: "SkSelect",
19123
+ props: /* @__PURE__ */ mergeModels({
19124
+ kind: { default: void 0 },
19125
+ size: { default: "md" },
19126
+ placeholder: { default: "Select..." },
19127
+ disabled: { type: Boolean, default: false },
19128
+ baseColor: {},
19129
+ textColor: {}
19130
+ }, {
19131
+ "modelValue": {},
19132
+ "modelModifiers": {}
19133
+ }),
19134
+ emits: ["update:modelValue"],
19135
+ setup(__props) {
19136
+ const props = __props;
19137
+ const modelValue = useModel(__props, "modelValue");
19138
+ const { theme } = usePortalContext();
19139
+ const fieldKind = inject("field-kind", computed(() => void 0));
19140
+ const itemLabels = reactive(/* @__PURE__ */ new Map());
19141
+ provide("sk-select-register", (value, label) => {
19142
+ itemLabels.set(value, label);
19143
+ });
19144
+ provide("sk-select-unregister", (value) => {
19145
+ itemLabels.delete(value);
19146
+ });
19147
+ const displayText = computed(() => {
19148
+ if (!modelValue.value) {
19149
+ return "";
19150
+ }
19151
+ return itemLabels.get(modelValue.value) || modelValue.value;
19152
+ });
19153
+ const effectiveKind = computed(() => fieldKind.value || props.kind || "neutral");
19154
+ const wrapperClasses = computed(() => ({
19155
+ "sk-select": true,
19156
+ [`sk-${effectiveKind.value}`]: true,
19157
+ [`sk-${props.size}`]: true
19158
+ }));
19159
+ const triggerClasses = computed(() => ({
19160
+ "sk-select-trigger": true
19161
+ }));
19162
+ const contentClasses = computed(() => ({
19163
+ "sk-select-content": true,
19164
+ [`sk-${effectiveKind.value}`]: true
19165
+ }));
19166
+ const customColorStyles = useCustomColors(
19167
+ "select",
19168
+ toRef(() => props.baseColor),
19169
+ toRef(() => props.textColor)
19170
+ );
19171
+ return (_ctx, _cache) => {
19172
+ return openBlock(), createElementBlock("div", {
19173
+ class: normalizeClass(wrapperClasses.value),
19174
+ style: normalizeStyle(unref(customColorStyles))
19175
+ }, [
19176
+ createVNode(unref(SelectRoot_default), {
19177
+ modelValue: modelValue.value,
19178
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
19179
+ disabled: __props.disabled
19180
+ }, {
19181
+ default: withCtx(() => [
19182
+ createVNode(unref(SelectTrigger_default), {
19183
+ class: normalizeClass(triggerClasses.value)
19184
+ }, {
19185
+ default: withCtx(() => [
19186
+ createVNode(unref(SelectValue_default), { placeholder: __props.placeholder }, {
19187
+ default: withCtx(() => [
19188
+ displayText.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
19189
+ createTextVNode(toDisplayString(displayText.value), 1)
19190
+ ], 64)) : createCommentVNode("", true)
19191
+ ]),
19192
+ _: 1
19193
+ }, 8, ["placeholder"]),
19194
+ (openBlock(), createElementBlock("svg", _hoisted_1$c, [..._cache[1] || (_cache[1] = [
19195
+ createElementVNode("polyline", { points: "6 9 12 15 18 9" }, null, -1)
19196
+ ])]))
19197
+ ]),
19198
+ _: 1
19199
+ }, 8, ["class"]),
19200
+ createVNode(unref(SelectPortal_default), null, {
19201
+ default: withCtx(() => [
19202
+ createVNode(unref(SelectContent_default), {
19203
+ "data-scheme": unref(theme),
19204
+ class: normalizeClass(contentClasses.value),
19205
+ style: normalizeStyle(unref(customColorStyles)),
19206
+ position: "popper",
19207
+ side: "bottom",
19208
+ align: "start",
19209
+ "side-offset": 4
19210
+ }, {
19211
+ default: withCtx(() => [
19212
+ createVNode(unref(SelectViewport_default), null, {
19213
+ default: withCtx(() => [
19214
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
19215
+ ]),
19216
+ _: 3
19217
+ })
19218
+ ]),
19219
+ _: 3
19220
+ }, 8, ["data-scheme", "class", "style"])
19221
+ ]),
19222
+ _: 3
19223
+ })
19224
+ ]),
19225
+ _: 3
19226
+ }, 8, ["modelValue", "disabled"])
19227
+ ], 6);
19228
+ };
19229
+ }
19230
+ });
19231
+ const SkSelect = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-c39367b7"]]);
19232
+ const _hoisted_1$b = {
19233
+ xmlns: "http://www.w3.org/2000/svg",
19234
+ viewBox: "0 0 24 24",
19235
+ fill: "none",
19236
+ stroke: "currentColor",
19237
+ "stroke-width": "3",
19238
+ "stroke-linecap": "square",
19239
+ "stroke-linejoin": "miter",
19240
+ style: { "width": "1rem", "height": "1rem" }
19241
+ };
19242
+ const _sfc_main$m = /* @__PURE__ */ defineComponent({
19243
+ __name: "SkSelectItem",
19244
+ props: {
19245
+ value: {},
19246
+ disabled: { type: Boolean, default: false }
19247
+ },
19248
+ setup(__props) {
19249
+ const props = __props;
19250
+ const textEl = useTemplateRef("textEl");
19251
+ const register = inject("sk-select-register", void 0);
19252
+ const unregister = inject("sk-select-unregister", void 0);
19253
+ onMounted(() => {
19254
+ const el = textEl.value?.$el;
19255
+ if (register) {
19256
+ register(props.value, el?.textContent?.trim() || props.value);
19257
+ }
19258
+ });
19259
+ onUnmounted(() => {
19260
+ if (unregister) {
19261
+ unregister(props.value);
19262
+ }
19263
+ });
19264
+ const classes = computed(() => ({
19265
+ "sk-select-item": true
19266
+ }));
19267
+ return (_ctx, _cache) => {
19268
+ return openBlock(), createBlock(unref(SelectItem_default), {
19269
+ class: normalizeClass(classes.value),
19270
+ value: __props.value,
19271
+ disabled: __props.disabled
19272
+ }, {
19273
+ default: withCtx(() => [
19274
+ createVNode(unref(SelectItemText_default), {
19275
+ ref_key: "textEl",
19276
+ ref: textEl
19277
+ }, {
19278
+ default: withCtx(() => [
19279
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
19280
+ ]),
19281
+ _: 3
19282
+ }, 512),
19283
+ createVNode(unref(SelectItemIndicator_default), { class: "sk-select-item-indicator" }, {
19284
+ default: withCtx(() => [
19285
+ (openBlock(), createElementBlock("svg", _hoisted_1$b, [..._cache[0] || (_cache[0] = [
19286
+ createElementVNode("polyline", { points: "20 6 9 17 4 12" }, null, -1)
19287
+ ])]))
19288
+ ]),
19289
+ _: 1
19290
+ })
19291
+ ]),
19292
+ _: 3
19293
+ }, 8, ["class", "value", "disabled"]);
19294
+ };
19295
+ }
19296
+ });
19297
+ const SkSelectItem = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-7d12d89e"]]);
19298
+ const _sfc_main$l = /* @__PURE__ */ defineComponent({
19299
+ __name: "SkSelectSeparator",
19300
+ setup(__props) {
19301
+ return (_ctx, _cache) => {
19302
+ return openBlock(), createBlock(unref(SelectSeparator_default), { class: "sk-select-separator" });
19303
+ };
19304
+ }
19305
+ });
19306
+ const SkSelectSeparator = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["__scopeId", "data-v-4f7c0be0"]]);
17600
19307
  const _hoisted_1$a = { class: "sk-panel-scroll-content" };
17601
19308
  const _hoisted_2$5 = { class: "sk-sidebar-nav" };
17602
19309
  const _sfc_main$k = /* @__PURE__ */ defineComponent({
@@ -17604,25 +19311,43 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
17604
19311
  props: {
17605
19312
  kind: { default: "neutral" },
17606
19313
  width: { default: "180px" },
19314
+ side: { default: "left" },
17607
19315
  baseColor: {},
17608
19316
  textColor: {}
17609
19317
  },
17610
19318
  setup(__props) {
17611
19319
  const props = __props;
19320
+ const panelCorners = computed(() => {
19321
+ return props.side === "right" ? ["bottom-left"] : ["bottom-right"];
19322
+ });
19323
+ const panelDecorationCorner = computed(() => {
19324
+ return props.side === "right" ? "bottom-left" : "bottom-right";
19325
+ });
17612
19326
  const classes = computed(() => {
17613
19327
  return {
17614
19328
  "sk-sidebar": true,
17615
- [`sk-${props.kind}`]: true
19329
+ [`sk-${props.kind}`]: true,
19330
+ "sk-sidebar-right": props.side === "right"
17616
19331
  };
17617
19332
  });
19333
+ const sidebarStyles = computed(() => {
19334
+ const styles = {};
19335
+ if (props.baseColor) {
19336
+ styles["--sk-sidebar-color-base"] = props.baseColor;
19337
+ }
19338
+ return styles;
19339
+ });
17618
19340
  return (_ctx, _cache) => {
17619
19341
  return openBlock(), createElementBlock("aside", {
17620
- class: normalizeClass(classes.value)
19342
+ class: normalizeClass(classes.value),
19343
+ style: normalizeStyle(sidebarStyles.value)
17621
19344
  }, [
17622
19345
  createVNode(SkPanel, {
17623
19346
  kind: __props.kind,
17624
19347
  "base-color": __props.baseColor,
17625
19348
  "text-color": __props.textColor,
19349
+ corners: panelCorners.value,
19350
+ "decoration-corner": panelDecorationCorner.value,
17626
19351
  class: "sk-sidebar-panel"
17627
19352
  }, {
17628
19353
  default: withCtx(() => [
@@ -17633,8 +19358,8 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
17633
19358
  ])
17634
19359
  ]),
17635
19360
  _: 3
17636
- }, 8, ["kind", "base-color", "text-color"])
17637
- ], 2);
19361
+ }, 8, ["kind", "base-color", "text-color", "corners", "decoration-corner"])
19362
+ ], 6);
17638
19363
  };
17639
19364
  }
17640
19365
  });
@@ -18935,28 +20660,28 @@ const SleekSpaceUI = {
18935
20660
  install(app) {
18936
20661
  app.component("SkAccordion", SkAccordion);
18937
20662
  app.component("SkAccordionItem", SkAccordionItem);
18938
- app.component("SkAlert", _sfc_main$P);
20663
+ app.component("SkAlert", _sfc_main$S);
18939
20664
  app.component("SkAvatar", SkAvatar);
18940
20665
  app.component("SkBreadcrumbItem", SkBreadcrumbItem);
18941
20666
  app.component("SkBreadcrumbs", SkBreadcrumbs);
18942
20667
  app.component("SkBreadcrumbSeparator", SkBreadcrumbSeparator);
18943
20668
  app.component("SkButton", SkButton);
18944
- app.component("SkCard", _sfc_main$I);
20669
+ app.component("SkCard", _sfc_main$L);
18945
20670
  app.component("SkCheckbox", SkCheckbox);
18946
20671
  app.component("SkCollapsible", SkCollapsible);
18947
- app.component("SkDivider", _sfc_main$F);
20672
+ app.component("SkDivider", _sfc_main$I);
18948
20673
  app.component("SkDropdown", SkDropdown);
18949
20674
  app.component("SkDropdownMenuItem", SkDropdownMenuItem);
18950
20675
  app.component("SkDropdownMenuSeparator", SkDropdownMenuSeparator);
18951
20676
  app.component("SkDropdownSubmenu", SkDropdownSubmenu);
18952
20677
  app.component("SkField", SkField);
18953
- app.component("SkGroup", _sfc_main$z);
20678
+ app.component("SkGroup", _sfc_main$C);
18954
20679
  app.component("SkInput", SkInput);
18955
20680
  app.component("SkListbox", SkListbox);
18956
20681
  app.component("SkListboxItem", SkListboxItem);
18957
20682
  app.component("SkListboxSeparator", SkListboxSeparator);
18958
20683
  app.component("SkModal", SkModal);
18959
- app.component("SkNavBar", _sfc_main$t);
20684
+ app.component("SkNavBar", _sfc_main$w);
18960
20685
  app.component("SkNumberInput", SkNumberInput);
18961
20686
  app.component("SkPage", SkPage);
18962
20687
  app.component("SkPagination", SkPagination);
@@ -18966,6 +20691,9 @@ const SleekSpaceUI = {
18966
20691
  app.component("SkProgress", SkProgress);
18967
20692
  app.component("SkRadio", SkRadio);
18968
20693
  app.component("SkRadioGroup", SkRadioGroup);
20694
+ app.component("SkSelect", SkSelect);
20695
+ app.component("SkSelectItem", SkSelectItem);
20696
+ app.component("SkSelectSeparator", SkSelectSeparator);
18969
20697
  app.component("SkSidebar", _sfc_main$k);
18970
20698
  app.component("SkSidebarItem", _sfc_main$j);
18971
20699
  app.component("SkSidebarSection", _sfc_main$i);
@@ -18991,28 +20719,28 @@ const SleekSpaceUI = {
18991
20719
  export {
18992
20720
  SkAccordion,
18993
20721
  SkAccordionItem,
18994
- _sfc_main$P as SkAlert,
20722
+ _sfc_main$S as SkAlert,
18995
20723
  SkAvatar,
18996
20724
  SkBreadcrumbItem,
18997
20725
  SkBreadcrumbSeparator,
18998
20726
  SkBreadcrumbs,
18999
20727
  SkButton,
19000
- _sfc_main$I as SkCard,
20728
+ _sfc_main$L as SkCard,
19001
20729
  SkCheckbox,
19002
20730
  SkCollapsible,
19003
- _sfc_main$F as SkDivider,
20731
+ _sfc_main$I as SkDivider,
19004
20732
  SkDropdown,
19005
20733
  SkDropdownMenuItem,
19006
20734
  SkDropdownMenuSeparator,
19007
20735
  SkDropdownSubmenu,
19008
20736
  SkField,
19009
- _sfc_main$z as SkGroup,
20737
+ _sfc_main$C as SkGroup,
19010
20738
  SkInput,
19011
20739
  SkListbox,
19012
20740
  SkListboxItem,
19013
20741
  SkListboxSeparator,
19014
20742
  SkModal,
19015
- _sfc_main$t as SkNavBar,
20743
+ _sfc_main$w as SkNavBar,
19016
20744
  SkNumberInput,
19017
20745
  SkPage,
19018
20746
  SkPagination,
@@ -19022,6 +20750,9 @@ export {
19022
20750
  SkProgress,
19023
20751
  SkRadio,
19024
20752
  SkRadioGroup,
20753
+ SkSelect,
20754
+ SkSelectItem,
20755
+ SkSelectSeparator,
19025
20756
  _sfc_main$k as SkSidebar,
19026
20757
  _sfc_main$j as SkSidebarItem,
19027
20758
  _sfc_main$i as SkSidebarSection,