@skewedaspect/sleekspace-ui 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22244,6 +22244,31 @@ Defaulting to \`null\`.`);
22244
22244
  }
22245
22245
  }), [["__scopeId", "data-v-5e73d91f"]]);
22246
22246
  //#endregion
22247
+ //#region src/utils/slots.ts
22248
+ function hasRenderableContent(vnodes) {
22249
+ return vnodes.some((vnode) => {
22250
+ if (vnode.type === vue.Comment) return false;
22251
+ if (vnode.type === vue.Text) return typeof vnode.children === "string" && vnode.children.trim().length > 0;
22252
+ if (vnode.type === vue.Fragment && Array.isArray(vnode.children)) return hasRenderableContent(vnode.children);
22253
+ return true;
22254
+ });
22255
+ }
22256
+ function hasSlotContent(slot, props) {
22257
+ if (!slot) return false;
22258
+ return hasRenderableContent(slot(props));
22259
+ }
22260
+ function filterRenderableVNodes(vnodes) {
22261
+ return vnodes.flatMap((vnode) => {
22262
+ if (vnode.type === vue.Comment) return [];
22263
+ if (vnode.type === vue.Text) {
22264
+ if (typeof vnode.children === "string" && vnode.children.trim().length > 0) return [vnode];
22265
+ return [];
22266
+ }
22267
+ if (vnode.type === vue.Fragment && Array.isArray(vnode.children)) return filterRenderableVNodes(vnode.children);
22268
+ return [vnode];
22269
+ });
22270
+ }
22271
+ //#endregion
22247
22272
  //#region src/components/Alert/SkAlert.vue?vue&type=script&setup=true&lang.ts
22248
22273
  var _hoisted_1$39 = {
22249
22274
  key: 0,
@@ -22335,9 +22360,7 @@ Defaulting to \`null\`.`);
22335
22360
  });
22336
22361
  const shouldShowIcon = (0, vue.computed)(() => {
22337
22362
  if (props.showIcon !== void 0) return props.showIcon;
22338
- const hasDefaultIcon = FEEDBACK_KINDS.includes(props.kind);
22339
- const hasSlotContent = !!slots.icon;
22340
- return hasDefaultIcon || hasSlotContent;
22363
+ return FEEDBACK_KINDS.includes(props.kind) || hasSlotContent(slots.icon);
22341
22364
  });
22342
22365
  const customColorStyles = useCustomColors("alert", (0, vue.toRef)(() => props.baseColor), (0, vue.toRef)(() => props.textColor));
22343
22366
  return (_ctx, _cache) => {
@@ -22891,9 +22914,7 @@ Defaulting to \`null\`.`);
22891
22914
  }));
22892
22915
  const processedItems = (0, vue.computed)(() => {
22893
22916
  if (!slots.default) return [];
22894
- const defaultSlot = slots.default();
22895
- if (!defaultSlot || defaultSlot.length === 0) return [];
22896
- return defaultSlot;
22917
+ return filterRenderableVNodes(slots.default());
22897
22918
  });
22898
22919
  return (_ctx, _cache) => {
22899
22920
  return (0, vue.openBlock)(), (0, vue.createElementBlock)("nav", {
@@ -22905,7 +22926,7 @@ Defaulting to \`null\`.`);
22905
22926
  }), 128))])], 6);
22906
22927
  };
22907
22928
  }
22908
- }), [["__scopeId", "data-v-f7fec0fe"]]);
22929
+ }), [["__scopeId", "data-v-6d108335"]]);
22909
22930
  //#endregion
22910
22931
  //#region src/components/Button/SkButton.vue?vue&type=script&setup=true&lang.ts
22911
22932
  var _hoisted_1$34 = { class: "sk-button-chrome" };
@@ -22988,7 +23009,7 @@ Defaulting to \`null\`.`);
22988
23009
  else return "button";
22989
23010
  });
22990
23011
  const classes = (0, vue.computed)(() => {
22991
- const isIconOnly = !!(slots.icon && !slots.default);
23012
+ const isIconOnly = hasSlotContent(slots.icon) && !hasSlotContent(slots.default);
22992
23013
  return {
22993
23014
  "sk-button": true,
22994
23015
  [`sk-${props.kind}`]: true,
@@ -23017,10 +23038,10 @@ Defaulting to \`null\`.`);
23017
23038
  "sk-button-content": true,
23018
23039
  "loading": __props.loading
23019
23040
  }) }, [
23020
- _ctx.$slots.leading ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$14, [(0, vue.renderSlot)(_ctx.$slots, "leading", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
23021
- _ctx.$slots.icon ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_4$10, [(0, vue.renderSlot)(_ctx.$slots, "icon", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
23022
- _ctx.$slots.default ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_5$8, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
23023
- _ctx.$slots.trailing ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_6$5, [(0, vue.renderSlot)(_ctx.$slots, "trailing", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true)
23041
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).leading) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$14, [(0, vue.renderSlot)(_ctx.$slots, "leading", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
23042
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).icon) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_4$10, [(0, vue.renderSlot)(_ctx.$slots, "icon", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
23043
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).default) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_5$8, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
23044
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).trailing) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_6$5, [(0, vue.renderSlot)(_ctx.$slots, "trailing", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true)
23024
23045
  ], 2)])]),
23025
23046
  _: 3
23026
23047
  }, 8, [
@@ -23035,7 +23056,7 @@ Defaulting to \`null\`.`);
23035
23056
  ]);
23036
23057
  };
23037
23058
  }
23038
- }), [["__scopeId", "data-v-fb63ef15"]]);
23059
+ }), [["__scopeId", "data-v-b276bf6c"]]);
23039
23060
  //#endregion
23040
23061
  //#region src/components/Panel/SkPanel.vue
23041
23062
  var SkPanel_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ (0, vue.defineComponent)({
@@ -23176,6 +23197,7 @@ Defaulting to \`null\`.`);
23176
23197
  * appropriate spacing.
23177
23198
  */
23178
23199
  const props = __props;
23200
+ const slots = (0, vue.useSlots)();
23179
23201
  const classes = (0, vue.computed)(() => {
23180
23202
  return { "sk-card": true };
23181
23203
  });
@@ -23210,17 +23232,17 @@ Defaulting to \`null\`.`);
23210
23232
  class: (0, vue.normalizeClass)(classes.value)
23211
23233
  }, {
23212
23234
  default: (0, vue.withCtx)(() => [
23213
- __props.title || _ctx.$slots.header ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
23235
+ __props.title || (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).header) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
23214
23236
  key: 0,
23215
23237
  class: "sk-card-header",
23216
23238
  style: (0, vue.normalizeStyle)(headerStyles.value)
23217
23239
  }, [__props.title ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("h3", _hoisted_1$33, (0, vue.toDisplayString)(__props.title), 1)) : (0, vue.createCommentVNode)("", true), (0, vue.renderSlot)(_ctx.$slots, "header")], 4)) : (0, vue.createCommentVNode)("", true),
23218
- _ctx.$slots.media ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2$17, [(0, vue.renderSlot)(_ctx.$slots, "media")])) : (0, vue.createCommentVNode)("", true),
23219
- _ctx.$slots.default ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
23240
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).media) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2$17, [(0, vue.renderSlot)(_ctx.$slots, "media")])) : (0, vue.createCommentVNode)("", true),
23241
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).default) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
23220
23242
  key: 2,
23221
23243
  class: (0, vue.normalizeClass)(contentClasses.value)
23222
23244
  }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2)) : (0, vue.createCommentVNode)("", true),
23223
- _ctx.$slots.footer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3$13, [(0, vue.renderSlot)(_ctx.$slots, "footer")])) : (0, vue.createCommentVNode)("", true)
23245
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).footer) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3$13, [(0, vue.renderSlot)(_ctx.$slots, "footer")])) : (0, vue.createCommentVNode)("", true)
23224
23246
  ]),
23225
23247
  _: 3
23226
23248
  }, 8, [
@@ -23316,6 +23338,7 @@ Defaulting to \`null\`.`);
23316
23338
  * @default false
23317
23339
  */
23318
23340
  const checked = (0, vue.useModel)(__props, "modelValue");
23341
+ const slots = (0, vue.useSlots)();
23319
23342
  const classes = (0, vue.computed)(() => ({
23320
23343
  "sk-checkbox": true,
23321
23344
  [`sk-${props.kind}`]: true,
@@ -23353,10 +23376,10 @@ Defaulting to \`null\`.`);
23353
23376
  "disabled",
23354
23377
  "required",
23355
23378
  "name"
23356
- ]), __props.label || _ctx.$slots.default ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$12, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)], true)])) : (0, vue.createCommentVNode)("", true)], 2);
23379
+ ]), __props.label || (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).default) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$12, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)], true)])) : (0, vue.createCommentVNode)("", true)], 2);
23357
23380
  };
23358
23381
  }
23359
- }), [["__scopeId", "data-v-073d7038"]]);
23382
+ }), [["__scopeId", "data-v-8e0fd27f"]]);
23360
23383
  //#endregion
23361
23384
  //#region src/components/Collapsible/SkCollapsible.vue?vue&type=script&setup=true&lang.ts
23362
23385
  var _hoisted_1$31 = { class: "sk-collapsible-content-inner" };
@@ -27900,6 +27923,7 @@ Defaulting to \`null\`.`);
27900
27923
  const props = __props;
27901
27924
  const emit = __emit;
27902
27925
  const { theme } = usePortalContext();
27926
+ const slots = (0, vue.useSlots)();
27903
27927
  const isOpen = (0, vue.ref)(props.open);
27904
27928
  (0, vue.watch)(() => props.open, (newValue) => {
27905
27929
  isOpen.value = newValue;
@@ -27939,7 +27963,7 @@ Defaulting to \`null\`.`);
27939
27963
  open: isOpen.value,
27940
27964
  "onUpdate:open": _cache[0] || (_cache[0] = ($event) => isOpen.value = $event)
27941
27965
  }, {
27942
- default: (0, vue.withCtx)(() => [_ctx.$slots.trigger || __props.triggerText ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(DialogTrigger_default), {
27966
+ default: (0, vue.withCtx)(() => [(0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).trigger) || __props.triggerText ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(DialogTrigger_default), {
27943
27967
  key: 0,
27944
27968
  "as-child": ""
27945
27969
  }, {
@@ -27961,7 +27985,7 @@ Defaulting to \`null\`.`);
27961
27985
  onInteractOutside: handleOverlayClick
27962
27986
  }, {
27963
27987
  default: (0, vue.withCtx)(() => [
27964
- _ctx.$slots.title || __props.title ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$21, [(0, vue.createVNode)((0, vue.unref)(DialogTitle_default), { class: "sk-modal-title" }, {
27988
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).title) || __props.title ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$21, [(0, vue.createVNode)((0, vue.unref)(DialogTitle_default), { class: "sk-modal-title" }, {
27965
27989
  default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "title", { close }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.title), 1)], true)]),
27966
27990
  _: 3
27967
27991
  }), (0, vue.createVNode)((0, vue.unref)(DialogClose_default), { "as-child": "" }, {
@@ -27984,7 +28008,7 @@ Defaulting to \`null\`.`);
27984
28008
  _: 1
27985
28009
  })])) : (0, vue.createCommentVNode)("", true),
27986
28010
  (0, vue.createElementVNode)("div", _hoisted_2$12, [(0, vue.renderSlot)(_ctx.$slots, "default", { close }, void 0, true)]),
27987
- _ctx.$slots.footer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3$9, [(0, vue.renderSlot)(_ctx.$slots, "footer", { close }, void 0, true)])) : (0, vue.createCommentVNode)("", true)
28011
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).footer) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3$9, [(0, vue.renderSlot)(_ctx.$slots, "footer", { close }, void 0, true)])) : (0, vue.createCommentVNode)("", true)
27988
28012
  ]),
27989
28013
  _: 3
27990
28014
  }, 8, [
@@ -27998,7 +28022,7 @@ Defaulting to \`null\`.`);
27998
28022
  }, 8, ["open"]);
27999
28023
  };
28000
28024
  }
28001
- }), [["__scopeId", "data-v-d5c13c78"]]);
28025
+ }), [["__scopeId", "data-v-291eea32"]]);
28002
28026
  //#endregion
28003
28027
  //#region src/components/NavBar/SkNavBar.vue?vue&type=script&setup=true&lang.ts
28004
28028
  var _hoisted_1$20 = { class: "sk-navbar-content" };
@@ -28081,17 +28105,20 @@ Defaulting to \`null\`.`);
28081
28105
  class: (0, vue.normalizeClass)(classes.value),
28082
28106
  style: (0, vue.normalizeStyle)((0, vue.unref)(customColorStyles))
28083
28107
  }, [(0, vue.createElementVNode)("div", _hoisted_1$20, [
28084
- (0, vue.unref)(slots).leading ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2$11, [(0, vue.renderSlot)(_ctx.$slots, "leading")])) : (0, vue.createCommentVNode)("", true),
28085
- (0, vue.unref)(slots).brand ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3$8, [(0, vue.renderSlot)(_ctx.$slots, "brand")])) : (0, vue.createCommentVNode)("", true),
28086
- (0, vue.unref)(slots).default ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4$7, [(0, vue.renderSlot)(_ctx.$slots, "default")])) : (0, vue.createCommentVNode)("", true),
28087
- (0, vue.unref)(slots).actions ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_5$5, [(0, vue.renderSlot)(_ctx.$slots, "actions")])) : (0, vue.createCommentVNode)("", true)
28108
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).leading) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2$11, [(0, vue.renderSlot)(_ctx.$slots, "leading")])) : (0, vue.createCommentVNode)("", true),
28109
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).brand) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3$8, [(0, vue.renderSlot)(_ctx.$slots, "brand")])) : (0, vue.createCommentVNode)("", true),
28110
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).default) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4$7, [(0, vue.renderSlot)(_ctx.$slots, "default")])) : (0, vue.createCommentVNode)("", true),
28111
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).actions) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_5$5, [(0, vue.renderSlot)(_ctx.$slots, "actions")])) : (0, vue.createCommentVNode)("", true)
28088
28112
  ])], 6);
28089
28113
  };
28090
28114
  }
28091
28115
  });
28092
28116
  //#endregion
28093
28117
  //#region src/components/NumberInput/SkNumberInput.vue?vue&type=script&setup=true&lang.ts
28094
- var _hoisted_1$19 = { class: "sk-number-input-steppers" };
28118
+ var _hoisted_1$19 = {
28119
+ key: 0,
28120
+ class: "sk-number-input-steppers"
28121
+ };
28095
28122
  //#endregion
28096
28123
  //#region src/components/NumberInput/SkNumberInput.vue
28097
28124
  var SkNumberInput_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ (0, vue.defineComponent)({
@@ -28116,6 +28143,10 @@ Defaulting to \`null\`.`);
28116
28143
  min: { default: void 0 },
28117
28144
  max: { default: void 0 },
28118
28145
  step: { default: 1 },
28146
+ showSteppers: {
28147
+ type: Boolean,
28148
+ default: true
28149
+ },
28119
28150
  baseColor: {},
28120
28151
  textColor: {},
28121
28152
  borderColor: {}
@@ -28174,7 +28205,7 @@ Defaulting to \`null\`.`);
28174
28205
  default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(NumberFieldInput_default), {
28175
28206
  class: (0, vue.normalizeClass)(inputClasses.value),
28176
28207
  placeholder: __props.placeholder
28177
- }, null, 8, ["class", "placeholder"]), (0, vue.createElementVNode)("div", _hoisted_1$19, [(0, vue.createVNode)((0, vue.unref)(NumberFieldIncrement_default), { class: "sk-number-input-increment" }, {
28208
+ }, null, 8, ["class", "placeholder"]), __props.showSteppers ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$19, [(0, vue.createVNode)((0, vue.unref)(NumberFieldIncrement_default), { class: "sk-number-input-increment" }, {
28178
28209
  default: (0, vue.withCtx)(() => [..._cache[1] || (_cache[1] = [(0, vue.createElementVNode)("svg", {
28179
28210
  xmlns: "http://www.w3.org/2000/svg",
28180
28211
  viewBox: "0 0 24 24",
@@ -28196,7 +28227,7 @@ Defaulting to \`null\`.`);
28196
28227
  "stroke-linejoin": "miter"
28197
28228
  }, [(0, vue.createElementVNode)("polyline", { points: "18 9 12 15 6 9" })], -1)])]),
28198
28229
  _: 1
28199
- })])]),
28230
+ })])) : (0, vue.createCommentVNode)("", true)]),
28200
28231
  _: 1
28201
28232
  }, 8, [
28202
28233
  "modelValue",
@@ -28212,7 +28243,7 @@ Defaulting to \`null\`.`);
28212
28243
  ])], 2);
28213
28244
  };
28214
28245
  }
28215
- }), [["__scopeId", "data-v-b589687f"]]);
28246
+ }), [["__scopeId", "data-v-413329cd"]]);
28216
28247
  //#endregion
28217
28248
  //#region src/components/Theme/useTheme.ts
28218
28249
  var ThemeSymbol = Symbol("SkTheme");
@@ -28574,8 +28605,8 @@ Defaulting to \`null\`.`);
28574
28605
  const props = __props;
28575
28606
  const emit = __emit;
28576
28607
  const slots = (0, vue.useSlots)();
28577
- const hasSidebar = (0, vue.computed)(() => Boolean(slots.sidebar));
28578
- const hasAside = (0, vue.computed)(() => Boolean(slots.aside));
28608
+ const hasSidebar = (0, vue.computed)(() => hasSlotContent(slots.sidebar));
28609
+ const hasAside = (0, vue.computed)(() => hasSlotContent(slots.aside));
28579
28610
  const rootRef = (0, vue.ref)(null);
28580
28611
  const rootWidth = (0, vue.ref)(Number.POSITIVE_INFINITY);
28581
28612
  function resolvePx(value, context) {
@@ -28727,26 +28758,26 @@ Defaulting to \`null\`.`);
28727
28758
  style: (0, vue.normalizeStyle)(customStyles.value),
28728
28759
  "data-scheme": __props.theme
28729
28760
  }, [
28730
- _ctx.$slots.header ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("header", _hoisted_2$10, [(0, vue.renderSlot)(_ctx.$slots, "header", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28731
- _ctx.$slots.subheader ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3$7, [(0, vue.renderSlot)(_ctx.$slots, "subheader", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28761
+ (0, vue.unref)(hasSlotContent)(slots.header) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("header", _hoisted_2$10, [(0, vue.renderSlot)(_ctx.$slots, "header", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28762
+ (0, vue.unref)(hasSlotContent)(slots.subheader) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3$7, [(0, vue.renderSlot)(_ctx.$slots, "subheader", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28732
28763
  (0, vue.createElementVNode)("div", _hoisted_4$6, [
28733
28764
  hasSidebar.value && !isSidebarDrawerActive.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("aside", _hoisted_5$4, [
28734
- _ctx.$slots["sidebar-header"] ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_6$3, [(0, vue.renderSlot)(_ctx.$slots, "sidebar-header", { isDrawer: false }, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28765
+ (0, vue.unref)(hasSlotContent)(slots["sidebar-header"]) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_6$3, [(0, vue.renderSlot)(_ctx.$slots, "sidebar-header", { isDrawer: false }, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28735
28766
  (0, vue.createElementVNode)("div", _hoisted_7$1, [(0, vue.renderSlot)(_ctx.$slots, "sidebar", { isDrawer: false }, void 0, true)]),
28736
- _ctx.$slots["sidebar-footer"] ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_8, [(0, vue.renderSlot)(_ctx.$slots, "sidebar-footer", { isDrawer: false }, void 0, true)])) : (0, vue.createCommentVNode)("", true)
28767
+ (0, vue.unref)(hasSlotContent)(slots["sidebar-footer"]) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_8, [(0, vue.renderSlot)(_ctx.$slots, "sidebar-footer", { isDrawer: false }, void 0, true)])) : (0, vue.createCommentVNode)("", true)
28737
28768
  ])) : (0, vue.createCommentVNode)("", true),
28738
28769
  (0, vue.createElementVNode)("div", _hoisted_9, [
28739
- _ctx.$slots["main-header"] ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_10, [(0, vue.renderSlot)(_ctx.$slots, "main-header", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28770
+ (0, vue.unref)(hasSlotContent)(slots["main-header"]) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_10, [(0, vue.renderSlot)(_ctx.$slots, "main-header", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28740
28771
  (0, vue.createElementVNode)("main", _hoisted_11, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, void 0, true)]),
28741
- _ctx.$slots["main-footer"] ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_12, [(0, vue.renderSlot)(_ctx.$slots, "main-footer", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true)
28772
+ (0, vue.unref)(hasSlotContent)(slots["main-footer"]) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_12, [(0, vue.renderSlot)(_ctx.$slots, "main-footer", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true)
28742
28773
  ]),
28743
28774
  hasAside.value && !isAsideDrawerActive.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("aside", _hoisted_13, [
28744
- _ctx.$slots["aside-header"] ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_14, [(0, vue.renderSlot)(_ctx.$slots, "aside-header", { isDrawer: false }, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28775
+ (0, vue.unref)(hasSlotContent)(slots["aside-header"]) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_14, [(0, vue.renderSlot)(_ctx.$slots, "aside-header", { isDrawer: false }, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28745
28776
  (0, vue.createElementVNode)("div", _hoisted_15, [(0, vue.renderSlot)(_ctx.$slots, "aside", { isDrawer: false }, void 0, true)]),
28746
- _ctx.$slots["aside-footer"] ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_16, [(0, vue.renderSlot)(_ctx.$slots, "aside-footer", { isDrawer: false }, void 0, true)])) : (0, vue.createCommentVNode)("", true)
28777
+ (0, vue.unref)(hasSlotContent)(slots["aside-footer"]) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_16, [(0, vue.renderSlot)(_ctx.$slots, "aside-footer", { isDrawer: false }, void 0, true)])) : (0, vue.createCommentVNode)("", true)
28747
28778
  ])) : (0, vue.createCommentVNode)("", true)
28748
28779
  ]),
28749
- _ctx.$slots.footer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("footer", _hoisted_17, [(0, vue.renderSlot)(_ctx.$slots, "footer", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28780
+ (0, vue.unref)(hasSlotContent)(slots.footer) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("footer", _hoisted_17, [(0, vue.renderSlot)(_ctx.$slots, "footer", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28750
28781
  hasSidebar.value && isSidebarDrawerActive.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 3 }, [(0, vue.createVNode)(vue.Transition, { name: "sk-page-drawer-backdrop" }, {
28751
28782
  default: (0, vue.withCtx)(() => [(0, vue.unref)(sidebarDrawerOpen) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
28752
28783
  key: 0,
@@ -28767,9 +28798,9 @@ Defaulting to \`null\`.`);
28767
28798
  tabindex: "-1",
28768
28799
  onClick: onSidebarDrawerClick
28769
28800
  }, [
28770
- _ctx.$slots["sidebar-header"] ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_20, [(0, vue.renderSlot)(_ctx.$slots, "sidebar-header", { isDrawer: true }, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28801
+ (0, vue.unref)(hasSlotContent)(slots["sidebar-header"]) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_20, [(0, vue.renderSlot)(_ctx.$slots, "sidebar-header", { isDrawer: true }, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28771
28802
  (0, vue.createElementVNode)("div", _hoisted_21, [(0, vue.renderSlot)(_ctx.$slots, "sidebar", { isDrawer: true }, void 0, true)]),
28772
- _ctx.$slots["sidebar-footer"] ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_22, [(0, vue.renderSlot)(_ctx.$slots, "sidebar-footer", { isDrawer: true }, void 0, true)])) : (0, vue.createCommentVNode)("", true)
28803
+ (0, vue.unref)(hasSlotContent)(slots["sidebar-footer"]) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_22, [(0, vue.renderSlot)(_ctx.$slots, "sidebar-footer", { isDrawer: true }, void 0, true)])) : (0, vue.createCommentVNode)("", true)
28773
28804
  ], 8, _hoisted_19)) : (0, vue.createCommentVNode)("", true)]),
28774
28805
  _: 3
28775
28806
  })], 64)) : (0, vue.createCommentVNode)("", true),
@@ -28793,16 +28824,16 @@ Defaulting to \`null\`.`);
28793
28824
  tabindex: "-1",
28794
28825
  onClick: onAsideDrawerClick
28795
28826
  }, [
28796
- _ctx.$slots["aside-header"] ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_25, [(0, vue.renderSlot)(_ctx.$slots, "aside-header", { isDrawer: true }, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28827
+ (0, vue.unref)(hasSlotContent)(slots["aside-header"]) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_25, [(0, vue.renderSlot)(_ctx.$slots, "aside-header", { isDrawer: true }, void 0, true)])) : (0, vue.createCommentVNode)("", true),
28797
28828
  (0, vue.createElementVNode)("div", _hoisted_26, [(0, vue.renderSlot)(_ctx.$slots, "aside", { isDrawer: true }, void 0, true)]),
28798
- _ctx.$slots["aside-footer"] ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_27, [(0, vue.renderSlot)(_ctx.$slots, "aside-footer", { isDrawer: true }, void 0, true)])) : (0, vue.createCommentVNode)("", true)
28829
+ (0, vue.unref)(hasSlotContent)(slots["aside-footer"]) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_27, [(0, vue.renderSlot)(_ctx.$slots, "aside-footer", { isDrawer: true }, void 0, true)])) : (0, vue.createCommentVNode)("", true)
28799
28830
  ], 8, _hoisted_24)) : (0, vue.createCommentVNode)("", true)]),
28800
28831
  _: 3
28801
28832
  })], 64)) : (0, vue.createCommentVNode)("", true)
28802
28833
  ], 14, _hoisted_1$18);
28803
28834
  };
28804
28835
  }
28805
- }), [["__scopeId", "data-v-265ba522"]]);
28836
+ }), [["__scopeId", "data-v-2b46217a"]]);
28806
28837
  //#endregion
28807
28838
  //#region src/components/Page/SkPageSidebarToggle.vue?vue&type=script&setup=true&lang.ts
28808
28839
  var _hoisted_1$17 = {
@@ -29230,6 +29261,7 @@ Defaulting to \`null\`.`);
29230
29261
  set: (value) => emit("update:open", value ?? false)
29231
29262
  });
29232
29263
  const { theme } = usePortalContext();
29264
+ const slots = (0, vue.useSlots)();
29233
29265
  const contentClasses = (0, vue.computed)(() => ({
29234
29266
  "sk-popover-content": true,
29235
29267
  [`sk-${props.kind}`]: true
@@ -29254,7 +29286,7 @@ Defaulting to \`null\`.`);
29254
29286
  "collision-padding": 8
29255
29287
  }, {
29256
29288
  default: (0, vue.withCtx)(() => [
29257
- __props.title || _ctx.$slots.header ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$15, [
29289
+ __props.title || (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).header) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$15, [
29258
29290
  __props.title ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("h3", _hoisted_2$7, (0, vue.toDisplayString)(__props.title), 1)) : (0, vue.createCommentVNode)("", true),
29259
29291
  (0, vue.renderSlot)(_ctx.$slots, "header", {}, void 0, true),
29260
29292
  __props.closable ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(PopoverClose_default), {
@@ -29286,8 +29318,8 @@ Defaulting to \`null\`.`);
29286
29318
  _: 1
29287
29319
  })) : (0, vue.createCommentVNode)("", true)
29288
29320
  ])) : (0, vue.createCommentVNode)("", true),
29289
- _ctx.$slots.default ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3$5, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
29290
- _ctx.$slots.footer ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4$4, [(0, vue.renderSlot)(_ctx.$slots, "footer", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
29321
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).default) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3$5, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
29322
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).footer) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4$4, [(0, vue.renderSlot)(_ctx.$slots, "footer", {}, void 0, true)])) : (0, vue.createCommentVNode)("", true),
29291
29323
  __props.showArrow ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(PopoverArrow_default), {
29292
29324
  key: 3,
29293
29325
  class: "sk-popover-arrow"
@@ -29308,7 +29340,7 @@ Defaulting to \`null\`.`);
29308
29340
  }, 8, ["open"]);
29309
29341
  };
29310
29342
  }
29311
- }), [["__scopeId", "data-v-679c4935"]]);
29343
+ }), [["__scopeId", "data-v-401ea442"]]);
29312
29344
  //#endregion
29313
29345
  //#region src/components/Progress/SkProgress.vue
29314
29346
  var SkProgress_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ (0, vue.defineComponent)({
@@ -29449,6 +29481,7 @@ Defaulting to \`null\`.`);
29449
29481
  * formatting, icons, or complex layouts alongside the radio button.
29450
29482
  */
29451
29483
  const props = __props;
29484
+ const slots = (0, vue.useSlots)();
29452
29485
  const parentKind = (0, vue.inject)("radio-kind", (0, vue.computed)(() => void 0));
29453
29486
  const parentSize = (0, vue.inject)("radio-size", (0, vue.computed)(() => void 0));
29454
29487
  const effectiveKind = (0, vue.computed)(() => props.kind ?? parentKind.value ?? "neutral");
@@ -29477,10 +29510,10 @@ Defaulting to \`null\`.`);
29477
29510
  "style",
29478
29511
  "value",
29479
29512
  "disabled"
29480
- ]), __props.label || _ctx.$slots.default ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_1$14, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)], true)])) : (0, vue.createCommentVNode)("", true)], 2);
29513
+ ]), __props.label || (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).default) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_1$14, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)], true)])) : (0, vue.createCommentVNode)("", true)], 2);
29481
29514
  };
29482
29515
  }
29483
- }), [["__scopeId", "data-v-c88f9c3f"]]);
29516
+ }), [["__scopeId", "data-v-dcd86f1e"]]);
29484
29517
  //#endregion
29485
29518
  //#region src/components/Radio/SkRadioGroup.vue
29486
29519
  var SkRadioGroup_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ (0, vue.defineComponent)({
@@ -30544,7 +30577,7 @@ Defaulting to \`null\`.`);
30544
30577
  };
30545
30578
  });
30546
30579
  const showLabel = (0, vue.computed)(() => {
30547
- return Boolean(slots.default || props.labelOn || props.labelOff || slots["label-on"] || slots["label-off"] || props.label);
30580
+ return hasSlotContent(slots.default) || Boolean(props.labelOn) || Boolean(props.labelOff) || hasSlotContent(slots["label-on"]) || hasSlotContent(slots["label-off"]) || Boolean(props.label);
30548
30581
  });
30549
30582
  const useOnOffLabels = (0, vue.computed)(() => {
30550
30583
  return Boolean(props.labelOn || props.labelOff || slots["label-on"] || slots["label-off"]);
@@ -30577,14 +30610,14 @@ Defaulting to \`null\`.`);
30577
30610
  "required",
30578
30611
  "class",
30579
30612
  "style"
30580
- ]), showLabel.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("label", _hoisted_2$3, [(0, vue.unref)(slots).default ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 0 }) : useOnOffLabels.value && !__props.disableLabelAnimation ? ((0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, {
30613
+ ]), showLabel.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("label", _hoisted_2$3, [(0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).default) ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 0 }) : useOnOffLabels.value && !__props.disableLabelAnimation ? ((0, vue.openBlock)(), (0, vue.createBlock)(vue.Transition, {
30581
30614
  key: 1,
30582
30615
  name: "sk-switch-label-fade",
30583
30616
  mode: "out-in"
30584
30617
  }, {
30585
- default: (0, vue.withCtx)(() => [__props.modelValue ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$3, [(0, vue.unref)(slots)["label-on"] ? (0, vue.renderSlot)(_ctx.$slots, "label-on", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(labelOn.value), 1)], 64))])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_4$3, [(0, vue.unref)(slots)["label-off"] ? (0, vue.renderSlot)(_ctx.$slots, "label-off", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(labelOff.value), 1)], 64))]))]),
30618
+ default: (0, vue.withCtx)(() => [__props.modelValue ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$3, [(0, vue.unref)(hasSlotContent)((0, vue.unref)(slots)["label-on"]) ? (0, vue.renderSlot)(_ctx.$slots, "label-on", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(labelOn.value), 1)], 64))])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_4$3, [(0, vue.unref)(hasSlotContent)((0, vue.unref)(slots)["label-off"]) ? (0, vue.renderSlot)(_ctx.$slots, "label-off", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(labelOff.value), 1)], 64))]))]),
30586
30619
  _: 3
30587
- })) : useOnOffLabels.value && __props.disableLabelAnimation ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [__props.modelValue ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_5$2, [(0, vue.unref)(slots)["label-on"] ? (0, vue.renderSlot)(_ctx.$slots, "label-on", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(labelOn.value), 1)], 64))])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_6$1, [(0, vue.unref)(slots)["label-off"] ? (0, vue.renderSlot)(_ctx.$slots, "label-off", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(labelOff.value), 1)], 64))]))], 64)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 3 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)], 64))])) : (0, vue.createCommentVNode)("", true)]);
30620
+ })) : useOnOffLabels.value && __props.disableLabelAnimation ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [__props.modelValue ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_5$2, [(0, vue.unref)(hasSlotContent)((0, vue.unref)(slots)["label-on"]) ? (0, vue.renderSlot)(_ctx.$slots, "label-on", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(labelOn.value), 1)], 64))])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_6$1, [(0, vue.unref)(hasSlotContent)((0, vue.unref)(slots)["label-off"]) ? (0, vue.renderSlot)(_ctx.$slots, "label-off", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(labelOff.value), 1)], 64))]))], 64)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 3 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)], 64))])) : (0, vue.createCommentVNode)("", true)]);
30588
30621
  };
30589
30622
  }
30590
30623
  });
@@ -30724,6 +30757,7 @@ Defaulting to \`null\`.`);
30724
30757
  * @slot icon - Optional icon displayed before the tab label. Useful for visual indicators.
30725
30758
  */
30726
30759
  const props = __props;
30760
+ const slots = (0, vue.useSlots)();
30727
30761
  const parentKind = (0, vue.inject)("tabs-kind", (0, vue.computed)(() => void 0));
30728
30762
  const kind = (0, vue.computed)(() => props.kind ?? parentKind.value);
30729
30763
  const classes = (0, vue.computed)(() => {
@@ -30739,7 +30773,7 @@ Defaulting to \`null\`.`);
30739
30773
  disabled: __props.disabled,
30740
30774
  class: (0, vue.normalizeClass)(classes.value)
30741
30775
  }, {
30742
- default: (0, vue.withCtx)(() => [_ctx.$slots.icon ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_1$7, [(0, vue.renderSlot)(_ctx.$slots, "icon")])) : (0, vue.createCommentVNode)("", true), (0, vue.createElementVNode)("span", _hoisted_2$2, [(0, vue.createElementVNode)("span", _hoisted_3$2, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)])]), (0, vue.createElementVNode)("span", _hoisted_4$2, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)])])])]),
30776
+ default: (0, vue.withCtx)(() => [(0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).icon) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_1$7, [(0, vue.renderSlot)(_ctx.$slots, "icon")])) : (0, vue.createCommentVNode)("", true), (0, vue.createElementVNode)("span", _hoisted_2$2, [(0, vue.createElementVNode)("span", _hoisted_3$2, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)])]), (0, vue.createElementVNode)("span", _hoisted_4$2, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1)])])])]),
30743
30777
  _: 3
30744
30778
  }, 8, [
30745
30779
  "value",
@@ -31990,6 +32024,7 @@ Defaulting to \`null\`.`);
31990
32024
  }
31991
32025
  },
31992
32026
  setup(__props) {
32027
+ const slots = (0, vue.useSlots)();
31993
32028
  return (_ctx, _cache) => {
31994
32029
  return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(TreeItem_default), (0, vue.mergeProps)({ class: "sk-tree-item" }, __props.item.bind, {
31995
32030
  value: __props.item.value,
@@ -32006,7 +32041,7 @@ Defaulting to \`null\`.`);
32006
32041
  key: 0,
32007
32042
  class: (0, vue.normalizeClass)(["sk-tree-item-chevron", { "sk-expanded": isExpanded }])
32008
32043
  }, [((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1$1, [..._cache[0] || (_cache[0] = [(0, vue.createElementVNode)("polyline", { points: "9 6 15 12 9 18" }, null, -1)])]))], 2)) : __props.showChevron ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2)) : (0, vue.createCommentVNode)("", true),
32009
- _ctx.$slots.leading ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3, [(0, vue.renderSlot)(_ctx.$slots, "leading", {
32044
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).leading) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_3, [(0, vue.renderSlot)(_ctx.$slots, "leading", {
32010
32045
  isExpanded,
32011
32046
  isSelected
32012
32047
  }, void 0, true)])) : (0, vue.createCommentVNode)("", true),
@@ -32016,7 +32051,7 @@ Defaulting to \`null\`.`);
32016
32051
  hasChildren: __props.item.hasChildren,
32017
32052
  level: __props.item.level
32018
32053
  }, void 0, true)]),
32019
- _ctx.$slots.trailing ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_5, [(0, vue.renderSlot)(_ctx.$slots, "trailing", {
32054
+ (0, vue.unref)(hasSlotContent)((0, vue.unref)(slots).trailing) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_5, [(0, vue.renderSlot)(_ctx.$slots, "trailing", {
32020
32055
  isExpanded,
32021
32056
  isSelected
32022
32057
  }, void 0, true)])) : (0, vue.createCommentVNode)("", true)
@@ -32031,7 +32066,7 @@ Defaulting to \`null\`.`);
32031
32066
  ]);
32032
32067
  };
32033
32068
  }
32034
- }), [["__scopeId", "data-v-ba341490"]]);
32069
+ }), [["__scopeId", "data-v-adb75a1a"]]);
32035
32070
  //#endregion
32036
32071
  //#region src/components/TreeView/SkTreeView.vue
32037
32072
  var SkTreeView_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ (0, vue.defineComponent)({
@@ -0,0 +1,6 @@
1
+ import { VNode } from 'vue';
2
+ type SlotLike = (...args: any[]) => unknown;
3
+ export declare function hasRenderableContent(vnodes: VNode[]): boolean;
4
+ export declare function hasSlotContent(slot: SlotLike | undefined, props?: Record<string, unknown>): boolean;
5
+ export declare function filterRenderableVNodes(vnodes: VNode[]): VNode[];
6
+ export {};
package/llms-full.txt CHANGED
@@ -6867,6 +6867,9 @@ or inventory caps. |
6867
6867
  | step | number | 1 | false | The increment/decrement step amount when using stepper buttons or arrow keys. Use
6868
6868
  fractional values like 0.01 for currency or 0.1 for percentages. Pressing Shift while
6869
6869
  stepping may multiply the step for faster navigation. |
6870
+ | showSteppers | boolean | true | false | When true, renders the increment/decrement stepper buttons on the right side of the
6871
+ input. Set to false for a plain numeric text field (users can still use arrow keys
6872
+ and type values directly). |
6870
6873
 
6871
6874
 
6872
6875
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skewedaspect/sleekspace-ui",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "A Vue 3 component library with a cyberpunk aesthetic, featuring OKLCH colors, beveled corners, and a powerful design token system",
5
5
  "type": "module",
6
6
  "main": "dist/sleekspace-ui.umd.js",
@@ -38,8 +38,11 @@
38
38
  "LICENSE"
39
39
  ],
40
40
  "scripts": {
41
- "dev": "concurrently -n vite,tokens -c cyan,magenta \"vite build --watch\" \"sass --watch src/styles/tokens.scss dist/tokens.css --no-source-map\"",
42
- "build": "npm run generate:static-types && npm run generate:web-types && vite build && npm run generate:types && npm run build:static && npm run build:tokens && npm run copy:docs && npm run generate:llms",
41
+ "dev": "concurrently -n vite,tokens -c cyan,magenta \"npm run dev:vite\" \"npm run dev:tokens\"",
42
+ "dev:vite": "vite build --watch",
43
+ "dev:tokens": "sass --watch src/styles/tokens.scss dist/tokens.css --no-source-map",
44
+ "build": "npm run clean && npm run generate:static-types && npm run generate:web-types && vite build && npm run generate:types && npm run build:static && npm run build:tokens && npm run copy:docs && npm run generate:llms",
45
+ "clean": "rm -rf dist",
43
46
  "build:static": "vite build -c vite.static.config.ts",
44
47
  "build:tokens": "sass src/styles/tokens.scss dist/tokens.css --no-source-map",
45
48
  "copy:docs": "cp ../../Readme.md README.md && cp ../../LICENSE LICENSE",
@@ -94,6 +94,9 @@
94
94
  // Composables
95
95
  import { useCustomColors } from '@/composables/useCustomColors';
96
96
 
97
+ // Utils
98
+ import { hasSlotContent } from '@/utils/slots';
99
+
97
100
  //------------------------------------------------------------------------------------------------------------------
98
101
 
99
102
  // Kinds that have default icons
@@ -162,9 +165,8 @@
162
165
 
163
166
  // Auto-show if kind has a default icon or if slot content is provided
164
167
  const hasDefaultIcon = FEEDBACK_KINDS.includes(props.kind as typeof FEEDBACK_KINDS[number]);
165
- const hasSlotContent = !!slots.icon;
166
168
 
167
- return hasDefaultIcon || hasSlotContent;
169
+ return hasDefaultIcon || hasSlotContent(slots.icon);
168
170
  });
169
171
 
170
172
  //------------------------------------------------------------------------------------------------------------------
@@ -46,6 +46,9 @@
46
46
  import type { ComponentCustomColors } from '@/types';
47
47
  import type { SkBreadcrumbsProps } from './types';
48
48
 
49
+ // Utils
50
+ import { filterRenderableVNodes } from '@/utils/slots';
51
+
49
52
  //------------------------------------------------------------------------------------------------------------------
50
53
 
51
54
  export interface SkBreadcrumbsComponentProps extends SkBreadcrumbsProps, ComponentCustomColors
@@ -109,18 +112,9 @@
109
112
 
110
113
  const processedItems = computed<VNode[]>(() =>
111
114
  {
112
- if(!slots.default)
113
- {
114
- return [];
115
- }
116
-
117
- const defaultSlot = slots.default();
118
- if(!defaultSlot || defaultSlot.length === 0)
119
- {
120
- return [];
121
- }
122
-
123
- return defaultSlot;
115
+ if(!slots.default) { return []; }
116
+
117
+ return filterRenderableVNodes(slots.default());
124
118
  });
125
119
 
126
120
  //------------------------------------------------------------------------------------------------------------------
@@ -18,16 +18,16 @@
18
18
  <span class="sk-button-chrome">
19
19
  <span v-if="loading" class="sk-button-loader" aria-hidden="true" />
20
20
  <span :class="{ 'sk-button-content': true, 'loading': loading }">
21
- <span v-if="$slots.leading" class="sk-button-icon sk-button-icon-leading">
21
+ <span v-if="hasSlotContent(slots.leading)" class="sk-button-icon sk-button-icon-leading">
22
22
  <slot name="leading" />
23
23
  </span>
24
- <span v-if="$slots.icon" class="sk-button-icon sk-button-icon-only">
24
+ <span v-if="hasSlotContent(slots.icon)" class="sk-button-icon sk-button-icon-only">
25
25
  <slot name="icon" />
26
26
  </span>
27
- <span v-if="$slots.default" class="sk-button-text">
27
+ <span v-if="hasSlotContent(slots.default)" class="sk-button-text">
28
28
  <slot />
29
29
  </span>
30
- <span v-if="$slots.trailing" class="sk-button-icon sk-button-icon-trailing">
30
+ <span v-if="hasSlotContent(slots.trailing)" class="sk-button-icon sk-button-icon-trailing">
31
31
  <slot name="trailing" />
32
32
  </span>
33
33
  </span>
@@ -72,6 +72,9 @@
72
72
  // Composables
73
73
  import { useCustomColors } from '@/composables/useCustomColors';
74
74
 
75
+ // Utils
76
+ import { hasSlotContent } from '@/utils/slots';
77
+
75
78
  //------------------------------------------------------------------------------------------------------------------
76
79
 
77
80
  export interface SkButtonComponentProps extends ComponentCustomColors
@@ -199,7 +202,7 @@
199
202
 
200
203
  const classes = computed<Record<string, boolean>>(() =>
201
204
  {
202
- const isIconOnly = !!(slots.icon && !slots.default);
205
+ const isIconOnly = hasSlotContent(slots.icon) && !hasSlotContent(slots.default);
203
206
 
204
207
  return {
205
208
  'sk-button': true,