@skewedaspect/sleekspace-ui 0.8.1 → 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.
Files changed (191) hide show
  1. package/dist/components/Dropdown/SkDropdown.vue.d.ts +9 -1
  2. package/dist/components/Dropdown/types.d.ts +2 -1
  3. package/dist/components/NavBar/SkNavBar.vue.d.ts +9 -1
  4. package/dist/components/NavBar/context.d.ts +2 -0
  5. package/dist/components/NavBar/types.d.ts +5 -1
  6. package/dist/components/NumberInput/SkNumberInput.vue.d.ts +8 -0
  7. package/dist/components/Page/SkPage.vue.d.ts +9 -0
  8. package/dist/components/ScrollArea/SkScrollArea.vue.d.ts +105 -4
  9. package/dist/composables/useCustomColors.d.ts +18 -56
  10. package/{src → dist}/global.d.ts +6 -2
  11. package/dist/sleekspace-ui.css +4257 -1253
  12. package/dist/sleekspace-ui.es.js +300 -170
  13. package/dist/sleekspace-ui.umd.js +299 -169
  14. package/dist/static/classes.d.ts +18 -0
  15. package/dist/static/components/alert.d.ts +12 -0
  16. package/dist/static/components/avatar.d.ts +9 -0
  17. package/dist/static/components/breadcrumbs.d.ts +6 -0
  18. package/dist/static/components/button.d.ts +13 -0
  19. package/dist/static/components/card.d.ts +5 -0
  20. package/dist/static/components/checkbox.d.ts +10 -0
  21. package/dist/static/components/colorPicker.d.ts +8 -0
  22. package/dist/static/components/divider.d.ts +8 -0
  23. package/dist/static/components/dropdown.d.ts +8 -0
  24. package/dist/static/components/field.d.ts +15 -0
  25. package/dist/static/components/group.d.ts +5 -0
  26. package/dist/static/components/input.d.ts +14 -0
  27. package/dist/static/components/navBar.d.ts +16 -0
  28. package/dist/static/components/numberInput.d.ts +15 -0
  29. package/dist/static/components/page.d.ts +9 -0
  30. package/dist/static/components/pagination.d.ts +5 -0
  31. package/dist/static/components/panel.d.ts +11 -0
  32. package/dist/static/components/progress.d.ts +9 -0
  33. package/dist/static/components/radio.d.ts +11 -0
  34. package/dist/static/components/select.d.ts +10 -0
  35. package/dist/static/components/sidebar.d.ts +9 -0
  36. package/dist/static/components/skeleton.d.ts +11 -0
  37. package/dist/static/components/slider.d.ts +12 -0
  38. package/dist/static/components/spinner.d.ts +12 -0
  39. package/dist/static/components/switchInput.d.ts +10 -0
  40. package/dist/static/components/table.d.ts +12 -0
  41. package/dist/static/components/tag.d.ts +8 -0
  42. package/dist/static/components/tagsInput.d.ts +7 -0
  43. package/dist/static/components/textarea.d.ts +12 -0
  44. package/dist/static/components/toolbar.d.ts +12 -0
  45. package/dist/static/components/tooltip.d.ts +7 -0
  46. package/dist/static/escape.d.ts +2 -0
  47. package/dist/static/index.cjs.js +1 -0
  48. package/dist/static/index.d.ts +68 -0
  49. package/dist/static/index.es.js +732 -0
  50. package/dist/static/render.d.ts +12 -0
  51. package/dist/static/specs.d.ts +2 -0
  52. package/dist/static/types.d.ts +43 -0
  53. package/dist/tokens.css +322 -0
  54. package/dist/types/index.d.ts +36 -0
  55. package/dist/utils/slots.d.ts +6 -0
  56. package/docs/guides/installation.md +8 -2
  57. package/docs/guides/pure-css/_meta.yaml +8 -0
  58. package/docs/guides/pure-css/class-api.md +1070 -0
  59. package/docs/guides/pure-css/custom-elements.md +574 -0
  60. package/docs/guides/pure-css/index.md +86 -0
  61. package/docs/guides/pure-css/limitations.md +152 -0
  62. package/docs/guides/pure-css/static-helpers.md +1203 -0
  63. package/llms-full.txt +3739 -261
  64. package/package.json +19 -5
  65. package/src/components/Alert/SkAlert.vue +4 -2
  66. package/src/components/Breadcrumbs/SkBreadcrumbs.vue +6 -12
  67. package/src/components/Button/SkButton.vue +8 -5
  68. package/src/components/Card/SkCard.vue +13 -5
  69. package/src/components/Checkbox/SkCheckbox.vue +9 -2
  70. package/src/components/ContextMenu/SkContextMenuRadioGroup.vue +4 -1
  71. package/src/components/Dropdown/SkDropdown.vue +20 -3
  72. package/src/components/Dropdown/SkDropdownRadioGroup.vue +4 -1
  73. package/src/components/Dropdown/types.ts +2 -1
  74. package/src/components/Modal/SkModal.vue +11 -4
  75. package/src/components/NavBar/SkNavBar.vue +19 -8
  76. package/src/components/NavBar/context.ts +4 -2
  77. package/src/components/NavBar/types.ts +6 -1
  78. package/src/components/NumberInput/SkNumberInput.vue +10 -1
  79. package/src/components/Page/SkPage.vue +29 -15
  80. package/src/components/Panel/SkPanel.vue +2 -1
  81. package/src/components/Popover/SkPopover.vue +11 -4
  82. package/src/components/Radio/SkRadio.vue +9 -2
  83. package/src/components/ScrollArea/SkScrollArea.vue +78 -5
  84. package/src/components/Switch/SkSwitch.vue +14 -13
  85. package/src/components/Tabs/SkTab.vue +7 -2
  86. package/src/components/TreeView/SkTreeItem.vue +10 -2
  87. package/src/components/TreeView/SkTreeView.vue +7 -2
  88. package/src/composables/useCustomColors.ts +86 -77
  89. package/src/composables/usePortalContext.test.ts +0 -2
  90. package/src/shims.d.ts +10 -0
  91. package/src/static/__tests__/parity.test.ts +717 -0
  92. package/src/static/__tests__/parityHarness.test.ts +98 -0
  93. package/src/static/__tests__/parityHarness.ts +260 -0
  94. package/src/static/classes.test.ts +82 -0
  95. package/src/static/classes.ts +111 -0
  96. package/src/static/components/__tests__/helpers.test.ts +837 -0
  97. package/src/static/components/alert.ts +117 -0
  98. package/src/static/components/avatar.ts +86 -0
  99. package/src/static/components/breadcrumbs.ts +28 -0
  100. package/src/static/components/button.ts +75 -0
  101. package/src/static/components/card.ts +27 -0
  102. package/src/static/components/checkbox.ts +48 -0
  103. package/src/static/components/colorPicker.ts +45 -0
  104. package/src/static/components/divider.ts +39 -0
  105. package/src/static/components/dropdown.ts +36 -0
  106. package/src/static/components/field.ts +86 -0
  107. package/src/static/components/group.ts +27 -0
  108. package/src/static/components/input.ts +55 -0
  109. package/src/static/components/navBar.ts +94 -0
  110. package/src/static/components/numberInput.ts +64 -0
  111. package/src/static/components/page.ts +31 -0
  112. package/src/static/components/pagination.ts +27 -0
  113. package/src/static/components/panel.ts +33 -0
  114. package/src/static/components/progress.ts +31 -0
  115. package/src/static/components/radio.ts +53 -0
  116. package/src/static/components/select.ts +51 -0
  117. package/src/static/components/sidebar.ts +85 -0
  118. package/src/static/components/skeleton.ts +66 -0
  119. package/src/static/components/slider.ts +50 -0
  120. package/src/static/components/spinner.ts +94 -0
  121. package/src/static/components/switchInput.ts +49 -0
  122. package/src/static/components/table.ts +88 -0
  123. package/src/static/components/tag.ts +76 -0
  124. package/src/static/components/tagsInput.ts +35 -0
  125. package/src/static/components/textarea.ts +53 -0
  126. package/src/static/components/toolbar.ts +74 -0
  127. package/src/static/components/tooltip.ts +29 -0
  128. package/src/static/escape.test.ts +53 -0
  129. package/src/static/escape.ts +28 -0
  130. package/src/static/generated/defaults.ts +379 -0
  131. package/src/static/generated/propTypes.ts +426 -0
  132. package/src/static/index.ts +116 -0
  133. package/src/static/render.test.ts +83 -0
  134. package/src/static/render.ts +76 -0
  135. package/src/static/specs.test.ts +58 -0
  136. package/src/static/specs.ts +230 -0
  137. package/src/static/types.ts +176 -0
  138. package/src/styles/__tests__/testHelpers.ts +97 -0
  139. package/src/styles/base/_custom-elements.scss +51 -0
  140. package/src/styles/base/_index.scss +4 -0
  141. package/src/styles/components/__tests__/componentSelectors.test.ts +2575 -0
  142. package/src/styles/components/_alert.scss +82 -39
  143. package/src/styles/components/_avatar.scss +102 -47
  144. package/src/styles/components/_breadcrumbs.scss +39 -37
  145. package/src/styles/components/_button.scss +58 -5
  146. package/src/styles/components/_card.scss +64 -2
  147. package/src/styles/components/_checkbox.scss +35 -5
  148. package/src/styles/components/_color-picker.scss +48 -13
  149. package/src/styles/components/_divider.scss +86 -52
  150. package/src/styles/components/_dropdown.scss +214 -0
  151. package/src/styles/components/_field.scss +76 -23
  152. package/src/styles/components/_group.scss +190 -79
  153. package/src/styles/components/_index.scss +1 -0
  154. package/src/styles/components/_input.scss +81 -5
  155. package/src/styles/components/_menu.scss +1 -1
  156. package/src/styles/components/_navbar.scss +76 -45
  157. package/src/styles/components/_number-input.scss +98 -85
  158. package/src/styles/components/_page.scss +82 -23
  159. package/src/styles/components/_pagination.scss +240 -212
  160. package/src/styles/components/_panel.scss +268 -122
  161. package/src/styles/components/_progress.scss +120 -70
  162. package/src/styles/components/_radio.scss +35 -5
  163. package/src/styles/components/_scroll-area.scss +50 -22
  164. package/src/styles/components/_select.scss +40 -9
  165. package/src/styles/components/_sidebar.scss +59 -34
  166. package/src/styles/components/_skeleton.scss +111 -65
  167. package/src/styles/components/_slider.scss +34 -10
  168. package/src/styles/components/_spinner.scss +107 -56
  169. package/src/styles/components/_switch.scss +36 -5
  170. package/src/styles/components/_table.scss +150 -166
  171. package/src/styles/components/_tag.scss +244 -154
  172. package/src/styles/components/_tags-input.scss +46 -12
  173. package/src/styles/components/_textarea.scss +36 -5
  174. package/src/styles/components/_toolbar.scss +85 -31
  175. package/src/styles/components/_tooltip.scss +172 -3
  176. package/src/styles/mixins/_cut-border.scss +18 -4
  177. package/src/styles/mixins/_dual-selector.scss +192 -0
  178. package/src/styles/mixins/_index.scss +1 -0
  179. package/src/styles/mixins/dualSelector.test.ts +151 -0
  180. package/src/styles/themes/_colorful.scss +25 -0
  181. package/src/styles/themes/_greyscale.scss +25 -0
  182. package/src/styles/themes/_shade-scale.scss +39 -0
  183. package/src/styles/tokens/_semantic-color-kinds.scss +66 -0
  184. package/src/{types.ts → types/index.ts} +19 -11
  185. package/src/utils/slots.ts +75 -0
  186. package/web-types.json +980 -137
  187. package/dist/composables/useCustomColors.test.d.ts +0 -1
  188. package/dist/composables/useFocusTrap.test.d.ts +0 -1
  189. package/dist/composables/usePortalContext.test.d.ts +0 -1
  190. package/dist/styles/mixins/fluidSize.test.d.ts +0 -1
  191. package/dist/types.d.ts +0 -29
@@ -21985,88 +21985,86 @@ Defaulting to \`null\`.`);
21985
21985
  //#endregion
21986
21986
  //#region src/composables/useCustomColors.ts
21987
21987
  /**
21988
+ * Kind names that the color props accept as shortcuts. Typing `baseColor="neon-pink"` resolves
21989
+ * to `var(--sk-neon-pink-base)`; typing `borderColor="primary"` resolves to `var(--sk-primary-base)`.
21990
+ * Any string not in this set is passed through verbatim as a CSS color value.
21991
+ */
21992
+ var KIND_NAMES = new Set([
21993
+ "neutral",
21994
+ "primary",
21995
+ "accent",
21996
+ "info",
21997
+ "success",
21998
+ "warning",
21999
+ "danger",
22000
+ "boulder",
22001
+ "neon-blue",
22002
+ "light-blue",
22003
+ "neon-orange",
22004
+ "neon-purple",
22005
+ "neon-green",
22006
+ "neon-mint",
22007
+ "neon-pink",
22008
+ "yellow",
22009
+ "red"
22010
+ ]);
22011
+ function resolveColor(value, part) {
22012
+ if (!value) return;
22013
+ const trimmed = value.trim();
22014
+ if (KIND_NAMES.has(trimmed)) return `var(--sk-${trimmed}-${part})`;
22015
+ return value;
22016
+ }
22017
+ function unwrap(input) {
22018
+ return typeof input === "string" ? input : input?.value;
22019
+ }
22020
+ /**
21988
22021
  * Composable for handling custom color props in components.
21989
22022
  *
21990
- * This composable provides a consistent way to apply custom colors to components by generating
21991
- * CSS variables that override the component's default color tokens. It supports any CSS color
21992
- * format including hex, rgb, hsl, oklch, named colors, and CSS variables.
22023
+ * Generates CSS custom properties that override a component's default color tokens. Props accept
22024
+ * either a kind name (e.g. `"neon-pink"`, `"primary"`), which resolves to the matching
22025
+ * `--sk-<kind>-base/-text` token, or any raw CSS color value (hex, rgb, oklch, named, or
22026
+ * `var(...)`), which is passed through unchanged. This lets consumers use SleekSpace's palette
22027
+ * by name without having to remember the token syntax.
21993
22028
  *
21994
22029
  * Works with any component that follows the CSS variable naming convention:
21995
22030
  * - `--sk-{componentName}-color-base` for the base/background color
21996
22031
  * - `--sk-{componentName}-fg` for the foreground/text color
22032
+ * - `--sk-{componentName}-border-base` / `--sk-{componentName}-border-color` for the border (optional)
21997
22033
  *
21998
- * @param componentName - The component name used in CSS variable naming
21999
- * (e.g., 'button', 'panel', 'my-custom-component')
22000
- * @param baseColor - The base/background color (any CSS color value, including CSS variables)
22001
- * @param textColor - Optional foreground/text color. If not provided, falls back to `--sk-neutral-text`
22034
+ * @param componentName - The component name used in CSS variable naming (e.g., 'button', 'panel')
22035
+ * @param baseColor - Kind name or CSS color value for the base/background color
22036
+ * @param textColor - Kind name or CSS color value for the foreground/text color. Falls back to
22037
+ * `--sk-neutral-text` when only `baseColor` is provided.
22038
+ * @param borderColor - Optional kind name or CSS color value for the border. When provided,
22039
+ * both `--sk-<component>-border-base` and `--sk-<component>-border-color`
22040
+ * are emitted so the border takes precedence over any kind's default.
22002
22041
  *
22003
22042
  * @returns Computed style object with CSS variables ready to bind to a component's style attribute
22004
22043
  *
22005
- * @example Basic usage with base color only
22006
- * ```vue
22007
- * <script setup>
22008
- * import { useCustomColors } from '@/composables/useCustomColors';
22009
- *
22010
- * const props = defineProps<{ baseColor?: string }>();
22011
- * const customColors = useCustomColors('button', toRef(() => props.baseColor), undefined);
22012
- * <\/script>
22013
- *
22014
- * <template>
22015
- * <button :style="customColors">Click me</button>
22016
- * </template>
22017
- * ```
22018
- *
22019
- * @example With both base and text colors
22020
- * ```vue
22021
- * <SkButton base-color="oklch(0.7 0.25 300)" text-color="white">
22022
- * Custom Purple Button
22023
- * </SkButton>
22024
- * ```
22025
- *
22026
- * @example Using CSS variables
22044
+ * @example Kind name shortcut
22027
22045
  * ```vue
22028
- * <SkPanel base-color="var(--my-custom-color)" text-color="var(--my-text-color)">
22029
- * Content
22030
- * </SkPanel>
22046
+ * <SkPanel base-color="neon-pink" text-color="primary" border-color="neon-purple">...</SkPanel>
22031
22047
  * ```
22032
22048
  *
22033
- * @example Custom component
22049
+ * @example Raw CSS values
22034
22050
  * ```vue
22035
- * <script setup>
22036
- * import { useCustomColors } from '@/composables/useCustomColors';
22037
- *
22038
- * const props = defineProps<{ baseColor?: string; textColor?: string }>();
22039
- * const customColors = useCustomColors('my-widget', toRef(() => props.baseColor), toRef(() => props.textColor));
22040
- * <\/script>
22041
- *
22042
- * <template>
22043
- * <div class="my-widget" :style="customColors">
22044
- * <!-- Will generate: --sk-my-widget-color-base and --sk-my-widget-fg -->
22045
- * </div>
22046
- * </template>
22051
+ * <SkButton base-color="oklch(0.7 0.25 300)" text-color="white">Click me</SkButton>
22047
22052
  * ```
22048
- *
22049
- * Generated CSS variables:
22050
- * - `--sk-{componentName}-color-base` - The base color for backgrounds and accents
22051
- * - `--sk-{componentName}-fg` - The foreground/text color
22052
- *
22053
- * @remarks
22054
- * - If `textColor` is not provided, components will use `--sk-neutral-text` from the active theme
22055
- * - For best contrast, always provide `textColor` when using custom `baseColor`
22056
- * - The generated CSS variables integrate with the component's existing token system
22057
- * - Works with any component name - no need to register components beforehand
22058
22053
  */
22059
- function useCustomColors(componentName, baseColor, textColor) {
22054
+ function useCustomColors(componentName, baseColor, textColor, borderColor) {
22060
22055
  return (0, vue.computed)(() => {
22061
22056
  const styles = {};
22062
- const baseColorValue = typeof baseColor === "string" ? baseColor : baseColor?.value;
22063
- const textColorValue = typeof textColor === "string" ? textColor : textColor?.value;
22064
- if (!baseColorValue) return styles;
22065
- const baseVarName = `--sk-${componentName}-color-base`;
22066
- styles[baseVarName] = baseColorValue;
22067
- const fgVarName = `--sk-${componentName}-fg`;
22068
- if (textColorValue) styles[fgVarName] = textColorValue;
22069
- else styles[fgVarName] = "var(--sk-neutral-text)";
22057
+ const baseResolved = resolveColor(unwrap(baseColor), "base");
22058
+ const textResolved = resolveColor(unwrap(textColor), "text");
22059
+ const borderResolved = resolveColor(unwrap(borderColor), "base");
22060
+ if (baseResolved) {
22061
+ styles[`--sk-${componentName}-color-base`] = baseResolved;
22062
+ styles[`--sk-${componentName}-fg`] = textResolved ?? "var(--sk-neutral-text)";
22063
+ } else if (textResolved) styles[`--sk-${componentName}-fg`] = textResolved;
22064
+ if (borderResolved) {
22065
+ styles[`--sk-${componentName}-border-base`] = borderResolved;
22066
+ styles[`--sk-${componentName}-border-color`] = borderResolved;
22067
+ }
22070
22068
  return styles;
22071
22069
  });
22072
22070
  }
@@ -22087,7 +22085,8 @@ Defaulting to \`null\`.`);
22087
22085
  default: false
22088
22086
  },
22089
22087
  baseColor: {},
22090
- textColor: {}
22088
+ textColor: {},
22089
+ borderColor: {}
22091
22090
  },
22092
22091
  emits: ["update:modelValue"],
22093
22092
  setup(__props, { emit: __emit }) {
@@ -22245,6 +22244,31 @@ Defaulting to \`null\`.`);
22245
22244
  }
22246
22245
  }), [["__scopeId", "data-v-5e73d91f"]]);
22247
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
22248
22272
  //#region src/components/Alert/SkAlert.vue?vue&type=script&setup=true&lang.ts
22249
22273
  var _hoisted_1$39 = {
22250
22274
  key: 0,
@@ -22294,7 +22318,8 @@ Defaulting to \`null\`.`);
22294
22318
  default: void 0
22295
22319
  },
22296
22320
  baseColor: {},
22297
- textColor: {}
22321
+ textColor: {},
22322
+ borderColor: {}
22298
22323
  },
22299
22324
  setup(__props) {
22300
22325
  /**
@@ -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) => {
@@ -22859,7 +22882,8 @@ Defaulting to \`null\`.`);
22859
22882
  kind: { default: "neutral" },
22860
22883
  separator: { default: "/" },
22861
22884
  baseColor: { default: void 0 },
22862
- textColor: { default: void 0 }
22885
+ textColor: { default: void 0 },
22886
+ borderColor: {}
22863
22887
  },
22864
22888
  setup(__props) {
22865
22889
  /**
@@ -22890,9 +22914,7 @@ Defaulting to \`null\`.`);
22890
22914
  }));
22891
22915
  const processedItems = (0, vue.computed)(() => {
22892
22916
  if (!slots.default) return [];
22893
- const defaultSlot = slots.default();
22894
- if (!defaultSlot || defaultSlot.length === 0) return [];
22895
- return defaultSlot;
22917
+ return filterRenderableVNodes(slots.default());
22896
22918
  });
22897
22919
  return (_ctx, _cache) => {
22898
22920
  return (0, vue.openBlock)(), (0, vue.createElementBlock)("nav", {
@@ -22904,7 +22926,7 @@ Defaulting to \`null\`.`);
22904
22926
  }), 128))])], 6);
22905
22927
  };
22906
22928
  }
22907
- }), [["__scopeId", "data-v-f7fec0fe"]]);
22929
+ }), [["__scopeId", "data-v-6d108335"]]);
22908
22930
  //#endregion
22909
22931
  //#region src/components/Button/SkButton.vue?vue&type=script&setup=true&lang.ts
22910
22932
  var _hoisted_1$34 = { class: "sk-button-chrome" };
@@ -22957,7 +22979,8 @@ Defaulting to \`null\`.`);
22957
22979
  href: { default: void 0 },
22958
22980
  to: { default: void 0 },
22959
22981
  baseColor: {},
22960
- textColor: {}
22982
+ textColor: {},
22983
+ borderColor: {}
22961
22984
  },
22962
22985
  setup(__props) {
22963
22986
  /**
@@ -22986,7 +23009,7 @@ Defaulting to \`null\`.`);
22986
23009
  else return "button";
22987
23010
  });
22988
23011
  const classes = (0, vue.computed)(() => {
22989
- const isIconOnly = !!(slots.icon && !slots.default);
23012
+ const isIconOnly = hasSlotContent(slots.icon) && !hasSlotContent(slots.default);
22990
23013
  return {
22991
23014
  "sk-button": true,
22992
23015
  [`sk-${props.kind}`]: true,
@@ -23015,10 +23038,10 @@ Defaulting to \`null\`.`);
23015
23038
  "sk-button-content": true,
23016
23039
  "loading": __props.loading
23017
23040
  }) }, [
23018
- _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),
23019
- _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),
23020
- _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),
23021
- _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)
23022
23045
  ], 2)])]),
23023
23046
  _: 3
23024
23047
  }, 8, [
@@ -23033,7 +23056,7 @@ Defaulting to \`null\`.`);
23033
23056
  ]);
23034
23057
  };
23035
23058
  }
23036
- }), [["__scopeId", "data-v-fb63ef15"]]);
23059
+ }), [["__scopeId", "data-v-b276bf6c"]]);
23037
23060
  //#endregion
23038
23061
  //#region src/components/Panel/SkPanel.vue
23039
23062
  var SkPanel_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ (0, vue.defineComponent)({
@@ -23052,10 +23075,11 @@ Defaulting to \`null\`.`);
23052
23075
  corners: { default: () => ["bottom-right"] },
23053
23076
  decorationCorner: { default: "bottom-right" },
23054
23077
  baseColor: {},
23055
- textColor: {}
23078
+ textColor: {},
23079
+ borderColor: {}
23056
23080
  },
23057
23081
  setup(__props) {
23058
- (0, vue.useCssVars)((_ctx) => ({ "v42b18398": decorationDisplay.value }));
23082
+ (0, vue.useCssVars)((_ctx) => ({ "a6c4a7d4": decorationDisplay.value }));
23059
23083
  /**
23060
23084
  * @component SkPanel
23061
23085
  * @description A foundational container component with beveled corners, borders, background colors, and an optional
@@ -23085,7 +23109,7 @@ Defaulting to \`null\`.`);
23085
23109
  [`sk-decoration-${props.decorationCorner}`]: true
23086
23110
  };
23087
23111
  });
23088
- const customColorStyles = useCustomColors("panel", (0, vue.toRef)(() => props.baseColor), (0, vue.toRef)(() => props.textColor));
23112
+ const customColorStyles = useCustomColors("panel", (0, vue.toRef)(() => props.baseColor), (0, vue.toRef)(() => props.textColor), (0, vue.toRef)(() => props.borderColor));
23089
23113
  const decorationDisplay = (0, vue.computed)(() => {
23090
23114
  if (props.noBorder || !props.showDecoration) return "none";
23091
23115
  if (!props.corners.includes(props.decorationCorner)) return "none";
@@ -23098,7 +23122,7 @@ Defaulting to \`null\`.`);
23098
23122
  }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, void 0, true)], 6);
23099
23123
  };
23100
23124
  }
23101
- }), [["__scopeId", "data-v-07c1642c"]]);
23125
+ }), [["__scopeId", "data-v-3d4b2da6"]]);
23102
23126
  //#endregion
23103
23127
  //#region src/components/Card/SkCard.vue?vue&type=script&setup=true&lang.ts
23104
23128
  var _hoisted_1$33 = {
@@ -23141,7 +23165,8 @@ Defaulting to \`null\`.`);
23141
23165
  corners: { default: () => ["bottom-right"] },
23142
23166
  decorationCorner: { default: "bottom-right" },
23143
23167
  baseColor: {},
23144
- textColor: {}
23168
+ textColor: {},
23169
+ borderColor: {}
23145
23170
  },
23146
23171
  setup(__props) {
23147
23172
  /**
@@ -23172,6 +23197,7 @@ Defaulting to \`null\`.`);
23172
23197
  * appropriate spacing.
23173
23198
  */
23174
23199
  const props = __props;
23200
+ const slots = (0, vue.useSlots)();
23175
23201
  const classes = (0, vue.computed)(() => {
23176
23202
  return { "sk-card": true };
23177
23203
  });
@@ -23200,22 +23226,23 @@ Defaulting to \`null\`.`);
23200
23226
  "no-border": __props.noBorder,
23201
23227
  "base-color": __props.baseColor,
23202
23228
  "text-color": __props.textColor,
23229
+ "border-color": __props.borderColor,
23203
23230
  corners: __props.corners,
23204
23231
  "decoration-corner": __props.decorationCorner,
23205
23232
  class: (0, vue.normalizeClass)(classes.value)
23206
23233
  }, {
23207
23234
  default: (0, vue.withCtx)(() => [
23208
- __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", {
23209
23236
  key: 0,
23210
23237
  class: "sk-card-header",
23211
23238
  style: (0, vue.normalizeStyle)(headerStyles.value)
23212
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),
23213
- _ctx.$slots.media ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_2$17, [(0, vue.renderSlot)(_ctx.$slots, "media")])) : (0, vue.createCommentVNode)("", true),
23214
- _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", {
23215
23242
  key: 2,
23216
23243
  class: (0, vue.normalizeClass)(contentClasses.value)
23217
23244
  }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2)) : (0, vue.createCommentVNode)("", true),
23218
- _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)
23219
23246
  ]),
23220
23247
  _: 3
23221
23248
  }, 8, [
@@ -23225,6 +23252,7 @@ Defaulting to \`null\`.`);
23225
23252
  "no-border",
23226
23253
  "base-color",
23227
23254
  "text-color",
23255
+ "border-color",
23228
23256
  "corners",
23229
23257
  "decoration-corner",
23230
23258
  "class"
@@ -23277,7 +23305,8 @@ Defaulting to \`null\`.`);
23277
23305
  name: { default: void 0 },
23278
23306
  label: { default: void 0 },
23279
23307
  baseColor: {},
23280
- textColor: {}
23308
+ textColor: {},
23309
+ borderColor: {}
23281
23310
  }, {
23282
23311
  "modelValue": {
23283
23312
  type: [Boolean, String],
@@ -23309,6 +23338,7 @@ Defaulting to \`null\`.`);
23309
23338
  * @default false
23310
23339
  */
23311
23340
  const checked = (0, vue.useModel)(__props, "modelValue");
23341
+ const slots = (0, vue.useSlots)();
23312
23342
  const classes = (0, vue.computed)(() => ({
23313
23343
  "sk-checkbox": true,
23314
23344
  [`sk-${props.kind}`]: true,
@@ -23346,10 +23376,10 @@ Defaulting to \`null\`.`);
23346
23376
  "disabled",
23347
23377
  "required",
23348
23378
  "name"
23349
- ]), __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);
23350
23380
  };
23351
23381
  }
23352
- }), [["__scopeId", "data-v-073d7038"]]);
23382
+ }), [["__scopeId", "data-v-8e0fd27f"]]);
23353
23383
  //#endregion
23354
23384
  //#region src/components/Collapsible/SkCollapsible.vue?vue&type=script&setup=true&lang.ts
23355
23385
  var _hoisted_1$31 = { class: "sk-collapsible-content-inner" };
@@ -23373,7 +23403,8 @@ Defaulting to \`null\`.`);
23373
23403
  kind: { default: "neutral" },
23374
23404
  triggerText: { default: "Toggle" },
23375
23405
  baseColor: {},
23376
- textColor: {}
23406
+ textColor: {},
23407
+ borderColor: {}
23377
23408
  },
23378
23409
  emits: ["update:open"],
23379
23410
  setup(__props, { emit: __emit }) {
@@ -26566,7 +26597,8 @@ Defaulting to \`null\`.`);
26566
26597
  placeholder: { default: "Pick a color" },
26567
26598
  defaultValue: { default: "#B63DDAFF" },
26568
26599
  baseColor: {},
26569
- textColor: {}
26600
+ textColor: {},
26601
+ borderColor: {}
26570
26602
  }, {
26571
26603
  "modelValue": {},
26572
26604
  "modelModifiers": {}
@@ -26690,7 +26722,8 @@ Defaulting to \`null\`.`);
26690
26722
  props: {
26691
26723
  kind: { default: "neutral" },
26692
26724
  baseColor: {},
26693
- textColor: {}
26725
+ textColor: {},
26726
+ borderColor: {}
26694
26727
  },
26695
26728
  setup(__props) {
26696
26729
  const props = __props;
@@ -26987,6 +27020,10 @@ Defaulting to \`null\`.`);
26987
27020
  }
26988
27021
  });
26989
27022
  //#endregion
27023
+ //#region src/components/NavBar/context.ts
27024
+ var NAVBAR_KIND_KEY = Symbol("sk-navbar-kind");
27025
+ var NAVBAR_SIZE_KEY = Symbol("sk-navbar-size");
27026
+ //#endregion
26990
27027
  //#region src/components/Dropdown/SkDropdown.vue?vue&type=script&setup=true&lang.ts
26991
27028
  var _hoisted_1$27 = {
26992
27029
  xmlns: "http://www.w3.org/2000/svg",
@@ -27012,8 +27049,10 @@ Defaulting to \`null\`.`);
27012
27049
  side: { default: "bottom" },
27013
27050
  align: { default: "start" },
27014
27051
  sideOffset: { default: 4 },
27052
+ size: { default: void 0 },
27015
27053
  baseColor: {},
27016
- textColor: {}
27054
+ textColor: {},
27055
+ borderColor: {}
27017
27056
  },
27018
27057
  setup(__props) {
27019
27058
  /**
@@ -27040,6 +27079,8 @@ Defaulting to \`null\`.`);
27040
27079
  */
27041
27080
  const props = __props;
27042
27081
  const { theme } = usePortalContext();
27082
+ const navbarSize = (0, vue.inject)(NAVBAR_SIZE_KEY, void 0);
27083
+ const effectiveSize = (0, vue.computed)(() => props.size ?? navbarSize?.value ?? "md");
27043
27084
  (0, vue.provide)("dropdown-kind", (0, vue.computed)(() => props.kind));
27044
27085
  const caretPoints = (0, vue.computed)(() => {
27045
27086
  switch (props.side) {
@@ -27057,11 +27098,14 @@ Defaulting to \`null\`.`);
27057
27098
  return (_ctx, _cache) => {
27058
27099
  return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(DropdownMenuRoot_default), null, {
27059
27100
  default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(DropdownMenuTrigger_default), { "as-child": "" }, {
27060
- default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "trigger", {}, () => [(0, vue.createVNode)(SkButton_default, { kind: __props.kind }, {
27101
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "trigger", {}, () => [(0, vue.createVNode)(SkButton_default, {
27102
+ kind: __props.kind,
27103
+ size: effectiveSize.value
27104
+ }, {
27061
27105
  trailing: (0, vue.withCtx)(() => [((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1$27, [(0, vue.createElementVNode)("polyline", { points: caretPoints.value }, null, 8, _hoisted_2$14)]))]),
27062
27106
  default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.triggerText) + " ", 1)]),
27063
27107
  _: 1
27064
- }, 8, ["kind"])], true)]),
27108
+ }, 8, ["kind", "size"])], true)]),
27065
27109
  _: 3
27066
27110
  }), (0, vue.createVNode)((0, vue.unref)(DropdownMenuPortal_default), null, {
27067
27111
  default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(DropdownMenuContent_default), {
@@ -27088,7 +27132,7 @@ Defaulting to \`null\`.`);
27088
27132
  });
27089
27133
  };
27090
27134
  }
27091
- }), [["__scopeId", "data-v-86d554dd"]]);
27135
+ }), [["__scopeId", "data-v-88c7a661"]]);
27092
27136
  //#endregion
27093
27137
  //#region src/components/Dropdown/SkDropdownCheckboxItem.vue?vue&type=script&setup=true&lang.ts
27094
27138
  var _hoisted_1$26 = {
@@ -27526,7 +27570,8 @@ Defaulting to \`null\`.`);
27526
27570
  name: { default: void 0 },
27527
27571
  autocomplete: { default: void 0 },
27528
27572
  baseColor: {},
27529
- textColor: {}
27573
+ textColor: {},
27574
+ borderColor: {}
27530
27575
  }, {
27531
27576
  "modelValue": { default: "" },
27532
27577
  "modelModifiers": {}
@@ -27608,7 +27653,8 @@ Defaulting to \`null\`.`);
27608
27653
  default: false
27609
27654
  },
27610
27655
  baseColor: {},
27611
- textColor: {}
27656
+ textColor: {},
27657
+ borderColor: {}
27612
27658
  }, {
27613
27659
  "modelValue": {},
27614
27660
  "modelModifiers": {}
@@ -27839,7 +27885,8 @@ Defaulting to \`null\`.`);
27839
27885
  default: false
27840
27886
  },
27841
27887
  baseColor: {},
27842
- textColor: {}
27888
+ textColor: {},
27889
+ borderColor: {}
27843
27890
  },
27844
27891
  emits: ["update:open"],
27845
27892
  setup(__props, { expose: __expose, emit: __emit }) {
@@ -27876,6 +27923,7 @@ Defaulting to \`null\`.`);
27876
27923
  const props = __props;
27877
27924
  const emit = __emit;
27878
27925
  const { theme } = usePortalContext();
27926
+ const slots = (0, vue.useSlots)();
27879
27927
  const isOpen = (0, vue.ref)(props.open);
27880
27928
  (0, vue.watch)(() => props.open, (newValue) => {
27881
27929
  isOpen.value = newValue;
@@ -27915,7 +27963,7 @@ Defaulting to \`null\`.`);
27915
27963
  open: isOpen.value,
27916
27964
  "onUpdate:open": _cache[0] || (_cache[0] = ($event) => isOpen.value = $event)
27917
27965
  }, {
27918
- 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), {
27919
27967
  key: 0,
27920
27968
  "as-child": ""
27921
27969
  }, {
@@ -27937,7 +27985,7 @@ Defaulting to \`null\`.`);
27937
27985
  onInteractOutside: handleOverlayClick
27938
27986
  }, {
27939
27987
  default: (0, vue.withCtx)(() => [
27940
- _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" }, {
27941
27989
  default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "title", { close }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.title), 1)], true)]),
27942
27990
  _: 3
27943
27991
  }), (0, vue.createVNode)((0, vue.unref)(DialogClose_default), { "as-child": "" }, {
@@ -27960,7 +28008,7 @@ Defaulting to \`null\`.`);
27960
28008
  _: 1
27961
28009
  })])) : (0, vue.createCommentVNode)("", true),
27962
28010
  (0, vue.createElementVNode)("div", _hoisted_2$12, [(0, vue.renderSlot)(_ctx.$slots, "default", { close }, void 0, true)]),
27963
- _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)
27964
28012
  ]),
27965
28013
  _: 3
27966
28014
  }, 8, [
@@ -27974,10 +28022,7 @@ Defaulting to \`null\`.`);
27974
28022
  }, 8, ["open"]);
27975
28023
  };
27976
28024
  }
27977
- }), [["__scopeId", "data-v-d5c13c78"]]);
27978
- //#endregion
27979
- //#region src/components/NavBar/context.ts
27980
- var NAVBAR_KIND_KEY = Symbol("sk-navbar-kind");
28025
+ }), [["__scopeId", "data-v-291eea32"]]);
27981
28026
  //#endregion
27982
28027
  //#region src/components/NavBar/SkNavBar.vue?vue&type=script&setup=true&lang.ts
27983
28028
  var _hoisted_1$20 = { class: "sk-navbar-content" };
@@ -28007,8 +28052,10 @@ Defaulting to \`null\`.`);
28007
28052
  type: Boolean,
28008
28053
  default: true
28009
28054
  },
28055
+ size: { default: "md" },
28010
28056
  baseColor: {},
28011
- textColor: {}
28057
+ textColor: {},
28058
+ borderColor: {}
28012
28059
  },
28013
28060
  setup(__props) {
28014
28061
  /**
@@ -28043,6 +28090,7 @@ Defaulting to \`null\`.`);
28043
28090
  */
28044
28091
  const props = __props;
28045
28092
  (0, vue.provide)(NAVBAR_KIND_KEY, (0, vue.toRef)(() => props.kind));
28093
+ (0, vue.provide)(NAVBAR_SIZE_KEY, (0, vue.toRef)(() => props.size));
28046
28094
  const slots = (0, vue.useSlots)();
28047
28095
  const classes = (0, vue.computed)(() => {
28048
28096
  return {
@@ -28057,17 +28105,20 @@ Defaulting to \`null\`.`);
28057
28105
  class: (0, vue.normalizeClass)(classes.value),
28058
28106
  style: (0, vue.normalizeStyle)((0, vue.unref)(customColorStyles))
28059
28107
  }, [(0, vue.createElementVNode)("div", _hoisted_1$20, [
28060
- (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),
28061
- (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),
28062
- (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),
28063
- (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)
28064
28112
  ])], 6);
28065
28113
  };
28066
28114
  }
28067
28115
  });
28068
28116
  //#endregion
28069
28117
  //#region src/components/NumberInput/SkNumberInput.vue?vue&type=script&setup=true&lang.ts
28070
- var _hoisted_1$19 = { class: "sk-number-input-steppers" };
28118
+ var _hoisted_1$19 = {
28119
+ key: 0,
28120
+ class: "sk-number-input-steppers"
28121
+ };
28071
28122
  //#endregion
28072
28123
  //#region src/components/NumberInput/SkNumberInput.vue
28073
28124
  var SkNumberInput_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ (0, vue.defineComponent)({
@@ -28092,8 +28143,13 @@ Defaulting to \`null\`.`);
28092
28143
  min: { default: void 0 },
28093
28144
  max: { default: void 0 },
28094
28145
  step: { default: 1 },
28146
+ showSteppers: {
28147
+ type: Boolean,
28148
+ default: true
28149
+ },
28095
28150
  baseColor: {},
28096
- textColor: {}
28151
+ textColor: {},
28152
+ borderColor: {}
28097
28153
  }, {
28098
28154
  "modelValue": { default: 0 },
28099
28155
  "modelModifiers": {}
@@ -28149,7 +28205,7 @@ Defaulting to \`null\`.`);
28149
28205
  default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(NumberFieldInput_default), {
28150
28206
  class: (0, vue.normalizeClass)(inputClasses.value),
28151
28207
  placeholder: __props.placeholder
28152
- }, 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" }, {
28153
28209
  default: (0, vue.withCtx)(() => [..._cache[1] || (_cache[1] = [(0, vue.createElementVNode)("svg", {
28154
28210
  xmlns: "http://www.w3.org/2000/svg",
28155
28211
  viewBox: "0 0 24 24",
@@ -28171,7 +28227,7 @@ Defaulting to \`null\`.`);
28171
28227
  "stroke-linejoin": "miter"
28172
28228
  }, [(0, vue.createElementVNode)("polyline", { points: "18 9 12 15 6 9" })], -1)])]),
28173
28229
  _: 1
28174
- })])]),
28230
+ })])) : (0, vue.createCommentVNode)("", true)]),
28175
28231
  _: 1
28176
28232
  }, 8, [
28177
28233
  "modelValue",
@@ -28187,7 +28243,7 @@ Defaulting to \`null\`.`);
28187
28243
  ])], 2);
28188
28244
  };
28189
28245
  }
28190
- }), [["__scopeId", "data-v-b589687f"]]);
28246
+ }), [["__scopeId", "data-v-413329cd"]]);
28191
28247
  //#endregion
28192
28248
  //#region src/components/Theme/useTheme.ts
28193
28249
  var ThemeSymbol = Symbol("SkTheme");
@@ -28494,6 +28550,10 @@ Defaulting to \`null\`.`);
28494
28550
  flush: {
28495
28551
  type: Boolean,
28496
28552
  default: false
28553
+ },
28554
+ noBounce: {
28555
+ type: Boolean,
28556
+ default: false
28497
28557
  }
28498
28558
  },
28499
28559
  emits: ["update:sidebarOpen", "update:asideOpen"],
@@ -28545,8 +28605,8 @@ Defaulting to \`null\`.`);
28545
28605
  const props = __props;
28546
28606
  const emit = __emit;
28547
28607
  const slots = (0, vue.useSlots)();
28548
- const hasSidebar = (0, vue.computed)(() => Boolean(slots.sidebar));
28549
- 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));
28550
28610
  const rootRef = (0, vue.ref)(null);
28551
28611
  const rootWidth = (0, vue.ref)(Number.POSITIVE_INFINITY);
28552
28612
  function resolvePx(value, context) {
@@ -28674,7 +28734,8 @@ Defaulting to \`null\`.`);
28674
28734
  "sk-fixed-footer": props.fixedFooter,
28675
28735
  "sk-sidebar-drawer-active": isSidebarDrawerActive.value,
28676
28736
  "sk-aside-drawer-active": isAsideDrawerActive.value,
28677
- "sk-flush": props.flush
28737
+ "sk-flush": props.flush,
28738
+ "sk-no-bounce": props.noBounce
28678
28739
  }));
28679
28740
  const customStyles = (0, vue.computed)(() => {
28680
28741
  const styles = {};
@@ -28697,26 +28758,26 @@ Defaulting to \`null\`.`);
28697
28758
  style: (0, vue.normalizeStyle)(customStyles.value),
28698
28759
  "data-scheme": __props.theme
28699
28760
  }, [
28700
- _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),
28701
- _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),
28702
28763
  (0, vue.createElementVNode)("div", _hoisted_4$6, [
28703
28764
  hasSidebar.value && !isSidebarDrawerActive.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("aside", _hoisted_5$4, [
28704
- _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),
28705
28766
  (0, vue.createElementVNode)("div", _hoisted_7$1, [(0, vue.renderSlot)(_ctx.$slots, "sidebar", { isDrawer: false }, void 0, true)]),
28706
- _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)
28707
28768
  ])) : (0, vue.createCommentVNode)("", true),
28708
28769
  (0, vue.createElementVNode)("div", _hoisted_9, [
28709
- _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),
28710
28771
  (0, vue.createElementVNode)("main", _hoisted_11, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, void 0, true)]),
28711
- _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)
28712
28773
  ]),
28713
28774
  hasAside.value && !isAsideDrawerActive.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("aside", _hoisted_13, [
28714
- _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),
28715
28776
  (0, vue.createElementVNode)("div", _hoisted_15, [(0, vue.renderSlot)(_ctx.$slots, "aside", { isDrawer: false }, void 0, true)]),
28716
- _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)
28717
28778
  ])) : (0, vue.createCommentVNode)("", true)
28718
28779
  ]),
28719
- _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),
28720
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" }, {
28721
28782
  default: (0, vue.withCtx)(() => [(0, vue.unref)(sidebarDrawerOpen) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
28722
28783
  key: 0,
@@ -28737,9 +28798,9 @@ Defaulting to \`null\`.`);
28737
28798
  tabindex: "-1",
28738
28799
  onClick: onSidebarDrawerClick
28739
28800
  }, [
28740
- _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),
28741
28802
  (0, vue.createElementVNode)("div", _hoisted_21, [(0, vue.renderSlot)(_ctx.$slots, "sidebar", { isDrawer: true }, void 0, true)]),
28742
- _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)
28743
28804
  ], 8, _hoisted_19)) : (0, vue.createCommentVNode)("", true)]),
28744
28805
  _: 3
28745
28806
  })], 64)) : (0, vue.createCommentVNode)("", true),
@@ -28763,16 +28824,16 @@ Defaulting to \`null\`.`);
28763
28824
  tabindex: "-1",
28764
28825
  onClick: onAsideDrawerClick
28765
28826
  }, [
28766
- _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),
28767
28828
  (0, vue.createElementVNode)("div", _hoisted_26, [(0, vue.renderSlot)(_ctx.$slots, "aside", { isDrawer: true }, void 0, true)]),
28768
- _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)
28769
28830
  ], 8, _hoisted_24)) : (0, vue.createCommentVNode)("", true)]),
28770
28831
  _: 3
28771
28832
  })], 64)) : (0, vue.createCommentVNode)("", true)
28772
28833
  ], 14, _hoisted_1$18);
28773
28834
  };
28774
28835
  }
28775
- }), [["__scopeId", "data-v-f502bb9d"]]);
28836
+ }), [["__scopeId", "data-v-2b46217a"]]);
28776
28837
  //#endregion
28777
28838
  //#region src/components/Page/SkPageSidebarToggle.vue?vue&type=script&setup=true&lang.ts
28778
28839
  var _hoisted_1$17 = {
@@ -28998,7 +29059,8 @@ Defaulting to \`null\`.`);
28998
29059
  default: false
28999
29060
  },
29000
29061
  baseColor: { default: void 0 },
29001
- textColor: { default: void 0 }
29062
+ textColor: { default: void 0 },
29063
+ borderColor: {}
29002
29064
  },
29003
29065
  emits: ["update:modelValue"],
29004
29066
  setup(__props, { emit: __emit }) {
@@ -29150,7 +29212,8 @@ Defaulting to \`null\`.`);
29150
29212
  default: void 0
29151
29213
  },
29152
29214
  baseColor: {},
29153
- textColor: {}
29215
+ textColor: {},
29216
+ borderColor: {}
29154
29217
  },
29155
29218
  emits: ["update:open"],
29156
29219
  setup(__props, { emit: __emit }) {
@@ -29198,6 +29261,7 @@ Defaulting to \`null\`.`);
29198
29261
  set: (value) => emit("update:open", value ?? false)
29199
29262
  });
29200
29263
  const { theme } = usePortalContext();
29264
+ const slots = (0, vue.useSlots)();
29201
29265
  const contentClasses = (0, vue.computed)(() => ({
29202
29266
  "sk-popover-content": true,
29203
29267
  [`sk-${props.kind}`]: true
@@ -29222,7 +29286,7 @@ Defaulting to \`null\`.`);
29222
29286
  "collision-padding": 8
29223
29287
  }, {
29224
29288
  default: (0, vue.withCtx)(() => [
29225
- __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, [
29226
29290
  __props.title ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("h3", _hoisted_2$7, (0, vue.toDisplayString)(__props.title), 1)) : (0, vue.createCommentVNode)("", true),
29227
29291
  (0, vue.renderSlot)(_ctx.$slots, "header", {}, void 0, true),
29228
29292
  __props.closable ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(PopoverClose_default), {
@@ -29254,8 +29318,8 @@ Defaulting to \`null\`.`);
29254
29318
  _: 1
29255
29319
  })) : (0, vue.createCommentVNode)("", true)
29256
29320
  ])) : (0, vue.createCommentVNode)("", true),
29257
- _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),
29258
- _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),
29259
29323
  __props.showArrow ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(PopoverArrow_default), {
29260
29324
  key: 3,
29261
29325
  class: "sk-popover-arrow"
@@ -29276,7 +29340,7 @@ Defaulting to \`null\`.`);
29276
29340
  }, 8, ["open"]);
29277
29341
  };
29278
29342
  }
29279
- }), [["__scopeId", "data-v-679c4935"]]);
29343
+ }), [["__scopeId", "data-v-401ea442"]]);
29280
29344
  //#endregion
29281
29345
  //#region src/components/Progress/SkProgress.vue
29282
29346
  var SkProgress_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ (0, vue.defineComponent)({
@@ -29394,7 +29458,8 @@ Defaulting to \`null\`.`);
29394
29458
  kind: { default: void 0 },
29395
29459
  size: { default: void 0 },
29396
29460
  baseColor: {},
29397
- textColor: {}
29461
+ textColor: {},
29462
+ borderColor: {}
29398
29463
  },
29399
29464
  setup(__props) {
29400
29465
  /**
@@ -29416,6 +29481,7 @@ Defaulting to \`null\`.`);
29416
29481
  * formatting, icons, or complex layouts alongside the radio button.
29417
29482
  */
29418
29483
  const props = __props;
29484
+ const slots = (0, vue.useSlots)();
29419
29485
  const parentKind = (0, vue.inject)("radio-kind", (0, vue.computed)(() => void 0));
29420
29486
  const parentSize = (0, vue.inject)("radio-size", (0, vue.computed)(() => void 0));
29421
29487
  const effectiveKind = (0, vue.computed)(() => props.kind ?? parentKind.value ?? "neutral");
@@ -29444,10 +29510,10 @@ Defaulting to \`null\`.`);
29444
29510
  "style",
29445
29511
  "value",
29446
29512
  "disabled"
29447
- ]), __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);
29448
29514
  };
29449
29515
  }
29450
- }), [["__scopeId", "data-v-c88f9c3f"]]);
29516
+ }), [["__scopeId", "data-v-dcd86f1e"]]);
29451
29517
  //#endregion
29452
29518
  //#region src/components/Radio/SkRadioGroup.vue
29453
29519
  var SkRadioGroup_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ (0, vue.defineComponent)({
@@ -29553,17 +29619,69 @@ Defaulting to \`null\`.`);
29553
29619
  [`sk-${props.orientation}`]: true,
29554
29620
  "sk-fade": props.fade
29555
29621
  }));
29622
+ const viewportRef = (0, vue.ref)(null);
29623
+ const fadeTop = (0, vue.ref)(0);
29624
+ const fadeBottom = (0, vue.ref)(0);
29625
+ const fadeLeft = (0, vue.ref)(0);
29626
+ const fadeRight = (0, vue.ref)(0);
29627
+ let scrollEl = null;
29628
+ let resizeObs = null;
29629
+ let rafID = null;
29630
+ function updateFades() {
29631
+ if (!scrollEl) return;
29632
+ const { scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth } = scrollEl;
29633
+ const threshold = 1;
29634
+ fadeTop.value = scrollTop > threshold ? 1 : 0;
29635
+ fadeBottom.value = scrollHeight - scrollTop - clientHeight > threshold ? 1 : 0;
29636
+ fadeLeft.value = scrollLeft > threshold ? 1 : 0;
29637
+ fadeRight.value = scrollWidth - scrollLeft - clientWidth > threshold ? 1 : 0;
29638
+ }
29639
+ function scheduleUpdate() {
29640
+ if (rafID !== null) return;
29641
+ rafID = requestAnimationFrame(() => {
29642
+ rafID = null;
29643
+ updateFades();
29644
+ });
29645
+ }
29646
+ (0, vue.onMounted)(() => {
29647
+ scrollEl = viewportRef.value?.viewportElement ?? null;
29648
+ if (!scrollEl) return;
29649
+ scrollEl.addEventListener("scroll", scheduleUpdate, { passive: true });
29650
+ resizeObs = new ResizeObserver(scheduleUpdate);
29651
+ resizeObs.observe(scrollEl);
29652
+ for (const child of Array.from(scrollEl.children)) resizeObs.observe(child);
29653
+ updateFades();
29654
+ });
29655
+ (0, vue.onBeforeUnmount)(() => {
29656
+ if (scrollEl) scrollEl.removeEventListener("scroll", scheduleUpdate);
29657
+ resizeObs?.disconnect();
29658
+ if (rafID !== null) cancelAnimationFrame(rafID);
29659
+ });
29660
+ const rootStyles = (0, vue.computed)(() => {
29661
+ const styles = { ...customColorStyles.value };
29662
+ if (props.fade) {
29663
+ styles["--sk-scroll-fade-top"] = String(fadeTop.value);
29664
+ styles["--sk-scroll-fade-bottom"] = String(fadeBottom.value);
29665
+ styles["--sk-scroll-fade-left"] = String(fadeLeft.value);
29666
+ styles["--sk-scroll-fade-right"] = String(fadeRight.value);
29667
+ }
29668
+ return styles;
29669
+ });
29556
29670
  return (_ctx, _cache) => {
29557
29671
  return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ScrollAreaRoot_default), {
29558
29672
  type: __props.type,
29559
29673
  class: (0, vue.normalizeClass)(classes.value),
29560
- style: (0, vue.normalizeStyle)((0, vue.unref)(customColorStyles))
29674
+ style: (0, vue.normalizeStyle)(rootStyles.value)
29561
29675
  }, {
29562
29676
  default: (0, vue.withCtx)(() => [
29563
- (0, vue.createVNode)((0, vue.unref)(ScrollAreaViewport_default), { class: "sk-scroll-area-viewport" }, {
29677
+ (0, vue.createVNode)((0, vue.unref)(ScrollAreaViewport_default), {
29678
+ ref_key: "viewportRef",
29679
+ ref: viewportRef,
29680
+ class: "sk-scroll-area-viewport"
29681
+ }, {
29564
29682
  default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default", {}, void 0, true)]),
29565
29683
  _: 3
29566
- }),
29684
+ }, 512),
29567
29685
  __props.orientation !== "horizontal" ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(ScrollAreaScrollbar_default), {
29568
29686
  key: 0,
29569
29687
  class: "sk-scroll-area-scrollbar",
@@ -29593,7 +29711,7 @@ Defaulting to \`null\`.`);
29593
29711
  ]);
29594
29712
  };
29595
29713
  }
29596
- }), [["__scopeId", "data-v-03c94821"]]);
29714
+ }), [["__scopeId", "data-v-e4dbafd6"]]);
29597
29715
  //#endregion
29598
29716
  //#region src/components/Select/SkSelect.vue?vue&type=script&setup=true&lang.ts
29599
29717
  var _hoisted_1$13 = {
@@ -29623,7 +29741,8 @@ Defaulting to \`null\`.`);
29623
29741
  default: false
29624
29742
  },
29625
29743
  baseColor: {},
29626
- textColor: {}
29744
+ textColor: {},
29745
+ borderColor: {}
29627
29746
  }, {
29628
29747
  "modelValue": {},
29629
29748
  "modelModifiers": {}
@@ -29848,7 +29967,8 @@ Defaulting to \`null\`.`);
29848
29967
  default: false
29849
29968
  },
29850
29969
  baseColor: {},
29851
- textColor: {}
29970
+ textColor: {},
29971
+ borderColor: {}
29852
29972
  },
29853
29973
  setup(__props) {
29854
29974
  /**
@@ -30419,7 +30539,8 @@ Defaulting to \`null\`.`);
30419
30539
  default: false
30420
30540
  },
30421
30541
  baseColor: {},
30422
- textColor: {}
30542
+ textColor: {},
30543
+ borderColor: {}
30423
30544
  },
30424
30545
  emits: ["update:modelValue"],
30425
30546
  setup(__props) {
@@ -30456,7 +30577,7 @@ Defaulting to \`null\`.`);
30456
30577
  };
30457
30578
  });
30458
30579
  const showLabel = (0, vue.computed)(() => {
30459
- 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);
30460
30581
  });
30461
30582
  const useOnOffLabels = (0, vue.computed)(() => {
30462
30583
  return Boolean(props.labelOn || props.labelOff || slots["label-on"] || slots["label-off"]);
@@ -30489,14 +30610,14 @@ Defaulting to \`null\`.`);
30489
30610
  "required",
30490
30611
  "class",
30491
30612
  "style"
30492
- ]), 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, {
30493
30614
  key: 1,
30494
30615
  name: "sk-switch-label-fade",
30495
30616
  mode: "out-in"
30496
30617
  }, {
30497
- 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))]))]),
30498
30619
  _: 3
30499
- })) : 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)]);
30500
30621
  };
30501
30622
  }
30502
30623
  });
@@ -30532,7 +30653,8 @@ Defaulting to \`null\`.`);
30532
30653
  default: false
30533
30654
  },
30534
30655
  baseColor: {},
30535
- textColor: {}
30656
+ textColor: {},
30657
+ borderColor: {}
30536
30658
  },
30537
30659
  setup(__props) {
30538
30660
  /**
@@ -30635,6 +30757,7 @@ Defaulting to \`null\`.`);
30635
30757
  * @slot icon - Optional icon displayed before the tab label. Useful for visual indicators.
30636
30758
  */
30637
30759
  const props = __props;
30760
+ const slots = (0, vue.useSlots)();
30638
30761
  const parentKind = (0, vue.inject)("tabs-kind", (0, vue.computed)(() => void 0));
30639
30762
  const kind = (0, vue.computed)(() => props.kind ?? parentKind.value);
30640
30763
  const classes = (0, vue.computed)(() => {
@@ -30650,7 +30773,7 @@ Defaulting to \`null\`.`);
30650
30773
  disabled: __props.disabled,
30651
30774
  class: (0, vue.normalizeClass)(classes.value)
30652
30775
  }, {
30653
- 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)])])])]),
30654
30777
  _: 3
30655
30778
  }, 8, [
30656
30779
  "value",
@@ -30799,7 +30922,8 @@ Defaulting to \`null\`.`);
30799
30922
  default: false
30800
30923
  },
30801
30924
  baseColor: {},
30802
- textColor: {}
30925
+ textColor: {},
30926
+ borderColor: {}
30803
30927
  },
30804
30928
  emits: ["update:modelValue"],
30805
30929
  setup(__props) {
@@ -30874,7 +30998,8 @@ Defaulting to \`null\`.`);
30874
30998
  default: false
30875
30999
  },
30876
31000
  baseColor: {},
30877
- textColor: {}
31001
+ textColor: {},
31002
+ borderColor: {}
30878
31003
  },
30879
31004
  emits: ["remove"],
30880
31005
  setup(__props, { emit: __emit }) {
@@ -30980,7 +31105,8 @@ Defaulting to \`null\`.`);
30980
31105
  tagKind: { default: void 0 },
30981
31106
  tagVariant: { default: "solid" },
30982
31107
  baseColor: {},
30983
- textColor: {}
31108
+ textColor: {},
31109
+ borderColor: {}
30984
31110
  }, {
30985
31111
  "modelValue": { default: () => [] },
30986
31112
  "modelModifiers": {}
@@ -31123,7 +31249,8 @@ Defaulting to \`null\`.`);
31123
31249
  rows: { default: 4 },
31124
31250
  autocomplete: { default: void 0 },
31125
31251
  baseColor: {},
31126
- textColor: {}
31252
+ textColor: {},
31253
+ borderColor: {}
31127
31254
  }, {
31128
31255
  "modelValue": { default: "" },
31129
31256
  "modelModifiers": {}
@@ -31680,7 +31807,8 @@ Defaulting to \`null\`.`);
31680
31807
  default: true
31681
31808
  },
31682
31809
  baseColor: {},
31683
- textColor: {}
31810
+ textColor: {},
31811
+ borderColor: {}
31684
31812
  },
31685
31813
  setup(__props) {
31686
31814
  /**
@@ -31896,6 +32024,7 @@ Defaulting to \`null\`.`);
31896
32024
  }
31897
32025
  },
31898
32026
  setup(__props) {
32027
+ const slots = (0, vue.useSlots)();
31899
32028
  return (_ctx, _cache) => {
31900
32029
  return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(TreeItem_default), (0, vue.mergeProps)({ class: "sk-tree-item" }, __props.item.bind, {
31901
32030
  value: __props.item.value,
@@ -31912,7 +32041,7 @@ Defaulting to \`null\`.`);
31912
32041
  key: 0,
31913
32042
  class: (0, vue.normalizeClass)(["sk-tree-item-chevron", { "sk-expanded": isExpanded }])
31914
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),
31915
- _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", {
31916
32045
  isExpanded,
31917
32046
  isSelected
31918
32047
  }, void 0, true)])) : (0, vue.createCommentVNode)("", true),
@@ -31922,7 +32051,7 @@ Defaulting to \`null\`.`);
31922
32051
  hasChildren: __props.item.hasChildren,
31923
32052
  level: __props.item.level
31924
32053
  }, void 0, true)]),
31925
- _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", {
31926
32055
  isExpanded,
31927
32056
  isSelected
31928
32057
  }, void 0, true)])) : (0, vue.createCommentVNode)("", true)
@@ -31937,7 +32066,7 @@ Defaulting to \`null\`.`);
31937
32066
  ]);
31938
32067
  };
31939
32068
  }
31940
- }), [["__scopeId", "data-v-ba341490"]]);
32069
+ }), [["__scopeId", "data-v-adb75a1a"]]);
31941
32070
  //#endregion
31942
32071
  //#region src/components/TreeView/SkTreeView.vue
31943
32072
  var SkTreeView_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ (0, vue.defineComponent)({
@@ -31962,6 +32091,7 @@ Defaulting to \`null\`.`);
31962
32091
  emits: ["update:modelValue"],
31963
32092
  setup(__props) {
31964
32093
  const props = __props;
32094
+ const rekaModelValue = (0, vue.computed)(() => props.modelValue);
31965
32095
  function getAllKeys(items) {
31966
32096
  const keys = [];
31967
32097
  for (const item of items) {
@@ -31984,7 +32114,7 @@ Defaulting to \`null\`.`);
31984
32114
  return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(TreeRoot_default), {
31985
32115
  items: __props.items,
31986
32116
  "get-key": __props.getKey,
31987
- "model-value": __props.modelValue,
32117
+ "model-value": rekaModelValue.value,
31988
32118
  multiple: __props.multiple,
31989
32119
  "propagate-select": __props.propagateSelect,
31990
32120
  "default-expanded": expandedKeys.value,
@@ -32006,7 +32136,7 @@ Defaulting to \`null\`.`);
32006
32136
  ]);
32007
32137
  };
32008
32138
  }
32009
- }), [["__scopeId", "data-v-717b6450"]]);
32139
+ }), [["__scopeId", "data-v-39b36ab8"]]);
32010
32140
  //#endregion
32011
32141
  //#region src/components/Theme/SkTheme.vue?vue&type=script&setup=true&lang.ts
32012
32142
  var _hoisted_1 = ["data-scheme"];