@skewedaspect/sleekspace-ui 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) 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/Page/SkPage.vue.d.ts +9 -0
  7. package/dist/components/ScrollArea/SkScrollArea.vue.d.ts +105 -4
  8. package/dist/composables/useCustomColors.d.ts +18 -56
  9. package/{src → dist}/global.d.ts +6 -2
  10. package/dist/sleekspace-ui.css +4253 -1251
  11. package/dist/sleekspace-ui.es.js +204 -109
  12. package/dist/sleekspace-ui.umd.js +204 -109
  13. package/dist/static/classes.d.ts +18 -0
  14. package/dist/static/components/alert.d.ts +12 -0
  15. package/dist/static/components/avatar.d.ts +9 -0
  16. package/dist/static/components/breadcrumbs.d.ts +6 -0
  17. package/dist/static/components/button.d.ts +13 -0
  18. package/dist/static/components/card.d.ts +5 -0
  19. package/dist/static/components/checkbox.d.ts +10 -0
  20. package/dist/static/components/colorPicker.d.ts +8 -0
  21. package/dist/static/components/divider.d.ts +8 -0
  22. package/dist/static/components/dropdown.d.ts +8 -0
  23. package/dist/static/components/field.d.ts +15 -0
  24. package/dist/static/components/group.d.ts +5 -0
  25. package/dist/static/components/input.d.ts +14 -0
  26. package/dist/static/components/navBar.d.ts +16 -0
  27. package/dist/static/components/numberInput.d.ts +15 -0
  28. package/dist/static/components/page.d.ts +9 -0
  29. package/dist/static/components/pagination.d.ts +5 -0
  30. package/dist/static/components/panel.d.ts +11 -0
  31. package/dist/static/components/progress.d.ts +9 -0
  32. package/dist/static/components/radio.d.ts +11 -0
  33. package/dist/static/components/select.d.ts +10 -0
  34. package/dist/static/components/sidebar.d.ts +9 -0
  35. package/dist/static/components/skeleton.d.ts +11 -0
  36. package/dist/static/components/slider.d.ts +12 -0
  37. package/dist/static/components/spinner.d.ts +12 -0
  38. package/dist/static/components/switchInput.d.ts +10 -0
  39. package/dist/static/components/table.d.ts +12 -0
  40. package/dist/static/components/tag.d.ts +8 -0
  41. package/dist/static/components/tagsInput.d.ts +7 -0
  42. package/dist/static/components/textarea.d.ts +12 -0
  43. package/dist/static/components/toolbar.d.ts +12 -0
  44. package/dist/static/components/tooltip.d.ts +7 -0
  45. package/dist/static/escape.d.ts +2 -0
  46. package/dist/static/index.cjs.js +1 -0
  47. package/dist/static/index.d.ts +68 -0
  48. package/dist/static/index.es.js +732 -0
  49. package/dist/static/render.d.ts +12 -0
  50. package/dist/static/specs.d.ts +2 -0
  51. package/dist/static/types.d.ts +43 -0
  52. package/dist/tokens.css +322 -0
  53. package/dist/types/index.d.ts +36 -0
  54. package/docs/guides/installation.md +8 -2
  55. package/docs/guides/pure-css/_meta.yaml +8 -0
  56. package/docs/guides/pure-css/class-api.md +1070 -0
  57. package/docs/guides/pure-css/custom-elements.md +574 -0
  58. package/docs/guides/pure-css/index.md +86 -0
  59. package/docs/guides/pure-css/limitations.md +152 -0
  60. package/docs/guides/pure-css/static-helpers.md +1203 -0
  61. package/llms-full.txt +3736 -261
  62. package/package.json +16 -5
  63. package/src/components/Card/SkCard.vue +1 -0
  64. package/src/components/ContextMenu/SkContextMenuRadioGroup.vue +4 -1
  65. package/src/components/Dropdown/SkDropdown.vue +20 -3
  66. package/src/components/Dropdown/SkDropdownRadioGroup.vue +4 -1
  67. package/src/components/Dropdown/types.ts +2 -1
  68. package/src/components/NavBar/SkNavBar.vue +14 -4
  69. package/src/components/NavBar/context.ts +4 -2
  70. package/src/components/NavBar/types.ts +6 -1
  71. package/src/components/Page/SkPage.vue +11 -0
  72. package/src/components/Panel/SkPanel.vue +2 -1
  73. package/src/components/ScrollArea/SkScrollArea.vue +78 -5
  74. package/src/components/TreeView/SkTreeView.vue +7 -2
  75. package/src/composables/useCustomColors.ts +86 -77
  76. package/src/composables/usePortalContext.test.ts +0 -2
  77. package/src/shims.d.ts +10 -0
  78. package/src/static/__tests__/parity.test.ts +717 -0
  79. package/src/static/__tests__/parityHarness.test.ts +98 -0
  80. package/src/static/__tests__/parityHarness.ts +260 -0
  81. package/src/static/classes.test.ts +82 -0
  82. package/src/static/classes.ts +111 -0
  83. package/src/static/components/__tests__/helpers.test.ts +837 -0
  84. package/src/static/components/alert.ts +117 -0
  85. package/src/static/components/avatar.ts +86 -0
  86. package/src/static/components/breadcrumbs.ts +28 -0
  87. package/src/static/components/button.ts +75 -0
  88. package/src/static/components/card.ts +27 -0
  89. package/src/static/components/checkbox.ts +48 -0
  90. package/src/static/components/colorPicker.ts +45 -0
  91. package/src/static/components/divider.ts +39 -0
  92. package/src/static/components/dropdown.ts +36 -0
  93. package/src/static/components/field.ts +86 -0
  94. package/src/static/components/group.ts +27 -0
  95. package/src/static/components/input.ts +55 -0
  96. package/src/static/components/navBar.ts +94 -0
  97. package/src/static/components/numberInput.ts +64 -0
  98. package/src/static/components/page.ts +31 -0
  99. package/src/static/components/pagination.ts +27 -0
  100. package/src/static/components/panel.ts +33 -0
  101. package/src/static/components/progress.ts +31 -0
  102. package/src/static/components/radio.ts +53 -0
  103. package/src/static/components/select.ts +51 -0
  104. package/src/static/components/sidebar.ts +85 -0
  105. package/src/static/components/skeleton.ts +66 -0
  106. package/src/static/components/slider.ts +50 -0
  107. package/src/static/components/spinner.ts +94 -0
  108. package/src/static/components/switchInput.ts +49 -0
  109. package/src/static/components/table.ts +88 -0
  110. package/src/static/components/tag.ts +76 -0
  111. package/src/static/components/tagsInput.ts +35 -0
  112. package/src/static/components/textarea.ts +53 -0
  113. package/src/static/components/toolbar.ts +74 -0
  114. package/src/static/components/tooltip.ts +29 -0
  115. package/src/static/escape.test.ts +53 -0
  116. package/src/static/escape.ts +28 -0
  117. package/src/static/generated/defaults.ts +378 -0
  118. package/src/static/generated/propTypes.ts +425 -0
  119. package/src/static/index.ts +116 -0
  120. package/src/static/render.test.ts +83 -0
  121. package/src/static/render.ts +76 -0
  122. package/src/static/specs.test.ts +58 -0
  123. package/src/static/specs.ts +230 -0
  124. package/src/static/types.ts +176 -0
  125. package/src/styles/__tests__/testHelpers.ts +97 -0
  126. package/src/styles/base/_custom-elements.scss +51 -0
  127. package/src/styles/base/_index.scss +4 -0
  128. package/src/styles/components/__tests__/componentSelectors.test.ts +2575 -0
  129. package/src/styles/components/_alert.scss +82 -39
  130. package/src/styles/components/_avatar.scss +102 -47
  131. package/src/styles/components/_breadcrumbs.scss +39 -37
  132. package/src/styles/components/_button.scss +58 -5
  133. package/src/styles/components/_card.scss +64 -2
  134. package/src/styles/components/_checkbox.scss +35 -5
  135. package/src/styles/components/_color-picker.scss +48 -13
  136. package/src/styles/components/_divider.scss +86 -52
  137. package/src/styles/components/_dropdown.scss +214 -0
  138. package/src/styles/components/_field.scss +76 -23
  139. package/src/styles/components/_group.scss +190 -79
  140. package/src/styles/components/_index.scss +1 -0
  141. package/src/styles/components/_input.scss +81 -5
  142. package/src/styles/components/_menu.scss +1 -1
  143. package/src/styles/components/_navbar.scss +76 -45
  144. package/src/styles/components/_number-input.scss +88 -83
  145. package/src/styles/components/_page.scss +82 -23
  146. package/src/styles/components/_pagination.scss +240 -212
  147. package/src/styles/components/_panel.scss +268 -122
  148. package/src/styles/components/_progress.scss +120 -70
  149. package/src/styles/components/_radio.scss +35 -5
  150. package/src/styles/components/_scroll-area.scss +50 -22
  151. package/src/styles/components/_select.scss +40 -9
  152. package/src/styles/components/_sidebar.scss +59 -34
  153. package/src/styles/components/_skeleton.scss +111 -65
  154. package/src/styles/components/_slider.scss +34 -10
  155. package/src/styles/components/_spinner.scss +107 -56
  156. package/src/styles/components/_switch.scss +36 -5
  157. package/src/styles/components/_table.scss +150 -166
  158. package/src/styles/components/_tag.scss +244 -154
  159. package/src/styles/components/_tags-input.scss +46 -12
  160. package/src/styles/components/_textarea.scss +36 -5
  161. package/src/styles/components/_toolbar.scss +85 -31
  162. package/src/styles/components/_tooltip.scss +172 -3
  163. package/src/styles/mixins/_cut-border.scss +18 -4
  164. package/src/styles/mixins/_dual-selector.scss +192 -0
  165. package/src/styles/mixins/_index.scss +1 -0
  166. package/src/styles/mixins/dualSelector.test.ts +151 -0
  167. package/src/styles/themes/_colorful.scss +25 -0
  168. package/src/styles/themes/_greyscale.scss +25 -0
  169. package/src/styles/themes/_shade-scale.scss +39 -0
  170. package/src/styles/tokens/_semantic-color-kinds.scss +66 -0
  171. package/src/{types.ts → types/index.ts} +19 -11
  172. package/web-types.json +970 -137
  173. package/dist/composables/useCustomColors.test.d.ts +0 -1
  174. package/dist/composables/useFocusTrap.test.d.ts +0 -1
  175. package/dist/composables/usePortalContext.test.d.ts +0 -1
  176. package/dist/styles/mixins/fluidSize.test.d.ts +0 -1
  177. package/dist/types.d.ts +0 -29
@@ -21974,88 +21974,86 @@ var TreeItem_default = /* @__PURE__ */ defineComponent({
21974
21974
  //#endregion
21975
21975
  //#region src/composables/useCustomColors.ts
21976
21976
  /**
21977
+ * Kind names that the color props accept as shortcuts. Typing `baseColor="neon-pink"` resolves
21978
+ * to `var(--sk-neon-pink-base)`; typing `borderColor="primary"` resolves to `var(--sk-primary-base)`.
21979
+ * Any string not in this set is passed through verbatim as a CSS color value.
21980
+ */
21981
+ var KIND_NAMES = new Set([
21982
+ "neutral",
21983
+ "primary",
21984
+ "accent",
21985
+ "info",
21986
+ "success",
21987
+ "warning",
21988
+ "danger",
21989
+ "boulder",
21990
+ "neon-blue",
21991
+ "light-blue",
21992
+ "neon-orange",
21993
+ "neon-purple",
21994
+ "neon-green",
21995
+ "neon-mint",
21996
+ "neon-pink",
21997
+ "yellow",
21998
+ "red"
21999
+ ]);
22000
+ function resolveColor(value, part) {
22001
+ if (!value) return;
22002
+ const trimmed = value.trim();
22003
+ if (KIND_NAMES.has(trimmed)) return `var(--sk-${trimmed}-${part})`;
22004
+ return value;
22005
+ }
22006
+ function unwrap(input) {
22007
+ return typeof input === "string" ? input : input?.value;
22008
+ }
22009
+ /**
21977
22010
  * Composable for handling custom color props in components.
21978
22011
  *
21979
- * This composable provides a consistent way to apply custom colors to components by generating
21980
- * CSS variables that override the component's default color tokens. It supports any CSS color
21981
- * format including hex, rgb, hsl, oklch, named colors, and CSS variables.
22012
+ * Generates CSS custom properties that override a component's default color tokens. Props accept
22013
+ * either a kind name (e.g. `"neon-pink"`, `"primary"`), which resolves to the matching
22014
+ * `--sk-<kind>-base/-text` token, or any raw CSS color value (hex, rgb, oklch, named, or
22015
+ * `var(...)`), which is passed through unchanged. This lets consumers use SleekSpace's palette
22016
+ * by name without having to remember the token syntax.
21982
22017
  *
21983
22018
  * Works with any component that follows the CSS variable naming convention:
21984
22019
  * - `--sk-{componentName}-color-base` for the base/background color
21985
22020
  * - `--sk-{componentName}-fg` for the foreground/text color
22021
+ * - `--sk-{componentName}-border-base` / `--sk-{componentName}-border-color` for the border (optional)
21986
22022
  *
21987
- * @param componentName - The component name used in CSS variable naming
21988
- * (e.g., 'button', 'panel', 'my-custom-component')
21989
- * @param baseColor - The base/background color (any CSS color value, including CSS variables)
21990
- * @param textColor - Optional foreground/text color. If not provided, falls back to `--sk-neutral-text`
22023
+ * @param componentName - The component name used in CSS variable naming (e.g., 'button', 'panel')
22024
+ * @param baseColor - Kind name or CSS color value for the base/background color
22025
+ * @param textColor - Kind name or CSS color value for the foreground/text color. Falls back to
22026
+ * `--sk-neutral-text` when only `baseColor` is provided.
22027
+ * @param borderColor - Optional kind name or CSS color value for the border. When provided,
22028
+ * both `--sk-<component>-border-base` and `--sk-<component>-border-color`
22029
+ * are emitted so the border takes precedence over any kind's default.
21991
22030
  *
21992
22031
  * @returns Computed style object with CSS variables ready to bind to a component's style attribute
21993
22032
  *
21994
- * @example Basic usage with base color only
22033
+ * @example Kind name shortcut
21995
22034
  * ```vue
21996
- * <script setup>
21997
- * import { useCustomColors } from '@/composables/useCustomColors';
21998
- *
21999
- * const props = defineProps<{ baseColor?: string }>();
22000
- * const customColors = useCustomColors('button', toRef(() => props.baseColor), undefined);
22001
- * <\/script>
22002
- *
22003
- * <template>
22004
- * <button :style="customColors">Click me</button>
22005
- * </template>
22035
+ * <SkPanel base-color="neon-pink" text-color="primary" border-color="neon-purple">...</SkPanel>
22006
22036
  * ```
22007
22037
  *
22008
- * @example With both base and text colors
22038
+ * @example Raw CSS values
22009
22039
  * ```vue
22010
- * <SkButton base-color="oklch(0.7 0.25 300)" text-color="white">
22011
- * Custom Purple Button
22012
- * </SkButton>
22040
+ * <SkButton base-color="oklch(0.7 0.25 300)" text-color="white">Click me</SkButton>
22013
22041
  * ```
22014
- *
22015
- * @example Using CSS variables
22016
- * ```vue
22017
- * <SkPanel base-color="var(--my-custom-color)" text-color="var(--my-text-color)">
22018
- * Content
22019
- * </SkPanel>
22020
- * ```
22021
- *
22022
- * @example Custom component
22023
- * ```vue
22024
- * <script setup>
22025
- * import { useCustomColors } from '@/composables/useCustomColors';
22026
- *
22027
- * const props = defineProps<{ baseColor?: string; textColor?: string }>();
22028
- * const customColors = useCustomColors('my-widget', toRef(() => props.baseColor), toRef(() => props.textColor));
22029
- * <\/script>
22030
- *
22031
- * <template>
22032
- * <div class="my-widget" :style="customColors">
22033
- * <!-- Will generate: --sk-my-widget-color-base and --sk-my-widget-fg -->
22034
- * </div>
22035
- * </template>
22036
- * ```
22037
- *
22038
- * Generated CSS variables:
22039
- * - `--sk-{componentName}-color-base` - The base color for backgrounds and accents
22040
- * - `--sk-{componentName}-fg` - The foreground/text color
22041
- *
22042
- * @remarks
22043
- * - If `textColor` is not provided, components will use `--sk-neutral-text` from the active theme
22044
- * - For best contrast, always provide `textColor` when using custom `baseColor`
22045
- * - The generated CSS variables integrate with the component's existing token system
22046
- * - Works with any component name - no need to register components beforehand
22047
22042
  */
22048
- function useCustomColors(componentName, baseColor, textColor) {
22043
+ function useCustomColors(componentName, baseColor, textColor, borderColor) {
22049
22044
  return computed(() => {
22050
22045
  const styles = {};
22051
- const baseColorValue = typeof baseColor === "string" ? baseColor : baseColor?.value;
22052
- const textColorValue = typeof textColor === "string" ? textColor : textColor?.value;
22053
- if (!baseColorValue) return styles;
22054
- const baseVarName = `--sk-${componentName}-color-base`;
22055
- styles[baseVarName] = baseColorValue;
22056
- const fgVarName = `--sk-${componentName}-fg`;
22057
- if (textColorValue) styles[fgVarName] = textColorValue;
22058
- else styles[fgVarName] = "var(--sk-neutral-text)";
22046
+ const baseResolved = resolveColor(unwrap(baseColor), "base");
22047
+ const textResolved = resolveColor(unwrap(textColor), "text");
22048
+ const borderResolved = resolveColor(unwrap(borderColor), "base");
22049
+ if (baseResolved) {
22050
+ styles[`--sk-${componentName}-color-base`] = baseResolved;
22051
+ styles[`--sk-${componentName}-fg`] = textResolved ?? "var(--sk-neutral-text)";
22052
+ } else if (textResolved) styles[`--sk-${componentName}-fg`] = textResolved;
22053
+ if (borderResolved) {
22054
+ styles[`--sk-${componentName}-border-base`] = borderResolved;
22055
+ styles[`--sk-${componentName}-border-color`] = borderResolved;
22056
+ }
22059
22057
  return styles;
22060
22058
  });
22061
22059
  }
@@ -22076,7 +22074,8 @@ var SkAccordion_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
22076
22074
  default: false
22077
22075
  },
22078
22076
  baseColor: {},
22079
- textColor: {}
22077
+ textColor: {},
22078
+ borderColor: {}
22080
22079
  },
22081
22080
  emits: ["update:modelValue"],
22082
22081
  setup(__props, { emit: __emit }) {
@@ -22283,7 +22282,8 @@ var SkAlert_default = /* @__PURE__ */ defineComponent({
22283
22282
  default: void 0
22284
22283
  },
22285
22284
  baseColor: {},
22286
- textColor: {}
22285
+ textColor: {},
22286
+ borderColor: {}
22287
22287
  },
22288
22288
  setup(__props) {
22289
22289
  /**
@@ -22843,7 +22843,8 @@ var SkBreadcrumbs_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/*
22843
22843
  kind: { default: "neutral" },
22844
22844
  separator: { default: "/" },
22845
22845
  baseColor: { default: void 0 },
22846
- textColor: { default: void 0 }
22846
+ textColor: { default: void 0 },
22847
+ borderColor: {}
22847
22848
  },
22848
22849
  setup(__props) {
22849
22850
  /**
@@ -22941,7 +22942,8 @@ var SkButton_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__P
22941
22942
  href: { default: void 0 },
22942
22943
  to: { default: void 0 },
22943
22944
  baseColor: {},
22944
- textColor: {}
22945
+ textColor: {},
22946
+ borderColor: {}
22945
22947
  },
22946
22948
  setup(__props) {
22947
22949
  /**
@@ -23036,10 +23038,11 @@ var SkPanel_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PU
23036
23038
  corners: { default: () => ["bottom-right"] },
23037
23039
  decorationCorner: { default: "bottom-right" },
23038
23040
  baseColor: {},
23039
- textColor: {}
23041
+ textColor: {},
23042
+ borderColor: {}
23040
23043
  },
23041
23044
  setup(__props) {
23042
- useCssVars((_ctx) => ({ "v42b18398": decorationDisplay.value }));
23045
+ useCssVars((_ctx) => ({ "a6c4a7d4": decorationDisplay.value }));
23043
23046
  /**
23044
23047
  * @component SkPanel
23045
23048
  * @description A foundational container component with beveled corners, borders, background colors, and an optional
@@ -23069,7 +23072,7 @@ var SkPanel_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PU
23069
23072
  [`sk-decoration-${props.decorationCorner}`]: true
23070
23073
  };
23071
23074
  });
23072
- const customColorStyles = useCustomColors("panel", toRef(() => props.baseColor), toRef(() => props.textColor));
23075
+ const customColorStyles = useCustomColors("panel", toRef(() => props.baseColor), toRef(() => props.textColor), toRef(() => props.borderColor));
23073
23076
  const decorationDisplay = computed(() => {
23074
23077
  if (props.noBorder || !props.showDecoration) return "none";
23075
23078
  if (!props.corners.includes(props.decorationCorner)) return "none";
@@ -23082,7 +23085,7 @@ var SkPanel_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PU
23082
23085
  }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 6);
23083
23086
  };
23084
23087
  }
23085
- }), [["__scopeId", "data-v-07c1642c"]]);
23088
+ }), [["__scopeId", "data-v-3d4b2da6"]]);
23086
23089
  //#endregion
23087
23090
  //#region src/components/Card/SkCard.vue?vue&type=script&setup=true&lang.ts
23088
23091
  var _hoisted_1$33 = {
@@ -23125,7 +23128,8 @@ var SkCard_default = /* @__PURE__ */ defineComponent({
23125
23128
  corners: { default: () => ["bottom-right"] },
23126
23129
  decorationCorner: { default: "bottom-right" },
23127
23130
  baseColor: {},
23128
- textColor: {}
23131
+ textColor: {},
23132
+ borderColor: {}
23129
23133
  },
23130
23134
  setup(__props) {
23131
23135
  /**
@@ -23184,6 +23188,7 @@ var SkCard_default = /* @__PURE__ */ defineComponent({
23184
23188
  "no-border": __props.noBorder,
23185
23189
  "base-color": __props.baseColor,
23186
23190
  "text-color": __props.textColor,
23191
+ "border-color": __props.borderColor,
23187
23192
  corners: __props.corners,
23188
23193
  "decoration-corner": __props.decorationCorner,
23189
23194
  class: normalizeClass(classes.value)
@@ -23209,6 +23214,7 @@ var SkCard_default = /* @__PURE__ */ defineComponent({
23209
23214
  "no-border",
23210
23215
  "base-color",
23211
23216
  "text-color",
23217
+ "border-color",
23212
23218
  "corners",
23213
23219
  "decoration-corner",
23214
23220
  "class"
@@ -23261,7 +23267,8 @@ var SkCheckbox_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @_
23261
23267
  name: { default: void 0 },
23262
23268
  label: { default: void 0 },
23263
23269
  baseColor: {},
23264
- textColor: {}
23270
+ textColor: {},
23271
+ borderColor: {}
23265
23272
  }, {
23266
23273
  "modelValue": {
23267
23274
  type: [Boolean, String],
@@ -23357,7 +23364,8 @@ var SkCollapsible_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/*
23357
23364
  kind: { default: "neutral" },
23358
23365
  triggerText: { default: "Toggle" },
23359
23366
  baseColor: {},
23360
- textColor: {}
23367
+ textColor: {},
23368
+ borderColor: {}
23361
23369
  },
23362
23370
  emits: ["update:open"],
23363
23371
  setup(__props, { emit: __emit }) {
@@ -26550,7 +26558,8 @@ var SkColorPicker_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/*
26550
26558
  placeholder: { default: "Pick a color" },
26551
26559
  defaultValue: { default: "#B63DDAFF" },
26552
26560
  baseColor: {},
26553
- textColor: {}
26561
+ textColor: {},
26562
+ borderColor: {}
26554
26563
  }, {
26555
26564
  "modelValue": {},
26556
26565
  "modelModifiers": {}
@@ -26674,7 +26683,8 @@ var SkContextMenu_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/*
26674
26683
  props: {
26675
26684
  kind: { default: "neutral" },
26676
26685
  baseColor: {},
26677
- textColor: {}
26686
+ textColor: {},
26687
+ borderColor: {}
26678
26688
  },
26679
26689
  setup(__props) {
26680
26690
  const props = __props;
@@ -26971,6 +26981,10 @@ var SkDivider_default = /* @__PURE__ */ defineComponent({
26971
26981
  }
26972
26982
  });
26973
26983
  //#endregion
26984
+ //#region src/components/NavBar/context.ts
26985
+ var NAVBAR_KIND_KEY = Symbol("sk-navbar-kind");
26986
+ var NAVBAR_SIZE_KEY = Symbol("sk-navbar-size");
26987
+ //#endregion
26974
26988
  //#region src/components/Dropdown/SkDropdown.vue?vue&type=script&setup=true&lang.ts
26975
26989
  var _hoisted_1$27 = {
26976
26990
  xmlns: "http://www.w3.org/2000/svg",
@@ -26996,8 +27010,10 @@ var SkDropdown_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @_
26996
27010
  side: { default: "bottom" },
26997
27011
  align: { default: "start" },
26998
27012
  sideOffset: { default: 4 },
27013
+ size: { default: void 0 },
26999
27014
  baseColor: {},
27000
- textColor: {}
27015
+ textColor: {},
27016
+ borderColor: {}
27001
27017
  },
27002
27018
  setup(__props) {
27003
27019
  /**
@@ -27024,6 +27040,8 @@ var SkDropdown_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @_
27024
27040
  */
27025
27041
  const props = __props;
27026
27042
  const { theme } = usePortalContext();
27043
+ const navbarSize = inject(NAVBAR_SIZE_KEY, void 0);
27044
+ const effectiveSize = computed(() => props.size ?? navbarSize?.value ?? "md");
27027
27045
  provide("dropdown-kind", computed(() => props.kind));
27028
27046
  const caretPoints = computed(() => {
27029
27047
  switch (props.side) {
@@ -27041,11 +27059,14 @@ var SkDropdown_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @_
27041
27059
  return (_ctx, _cache) => {
27042
27060
  return openBlock(), createBlock(unref(DropdownMenuRoot_default), null, {
27043
27061
  default: withCtx(() => [createVNode(unref(DropdownMenuTrigger_default), { "as-child": "" }, {
27044
- default: withCtx(() => [renderSlot(_ctx.$slots, "trigger", {}, () => [createVNode(SkButton_default, { kind: __props.kind }, {
27062
+ default: withCtx(() => [renderSlot(_ctx.$slots, "trigger", {}, () => [createVNode(SkButton_default, {
27063
+ kind: __props.kind,
27064
+ size: effectiveSize.value
27065
+ }, {
27045
27066
  trailing: withCtx(() => [(openBlock(), createElementBlock("svg", _hoisted_1$27, [createElementVNode("polyline", { points: caretPoints.value }, null, 8, _hoisted_2$14)]))]),
27046
27067
  default: withCtx(() => [createTextVNode(toDisplayString(__props.triggerText) + " ", 1)]),
27047
27068
  _: 1
27048
- }, 8, ["kind"])], true)]),
27069
+ }, 8, ["kind", "size"])], true)]),
27049
27070
  _: 3
27050
27071
  }), createVNode(unref(DropdownMenuPortal_default), null, {
27051
27072
  default: withCtx(() => [createVNode(unref(DropdownMenuContent_default), {
@@ -27072,7 +27093,7 @@ var SkDropdown_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @_
27072
27093
  });
27073
27094
  };
27074
27095
  }
27075
- }), [["__scopeId", "data-v-86d554dd"]]);
27096
+ }), [["__scopeId", "data-v-88c7a661"]]);
27076
27097
  //#endregion
27077
27098
  //#region src/components/Dropdown/SkDropdownCheckboxItem.vue?vue&type=script&setup=true&lang.ts
27078
27099
  var _hoisted_1$26 = {
@@ -27510,7 +27531,8 @@ var SkInput_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PU
27510
27531
  name: { default: void 0 },
27511
27532
  autocomplete: { default: void 0 },
27512
27533
  baseColor: {},
27513
- textColor: {}
27534
+ textColor: {},
27535
+ borderColor: {}
27514
27536
  }, {
27515
27537
  "modelValue": { default: "" },
27516
27538
  "modelModifiers": {}
@@ -27592,7 +27614,8 @@ var SkListbox_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__
27592
27614
  default: false
27593
27615
  },
27594
27616
  baseColor: {},
27595
- textColor: {}
27617
+ textColor: {},
27618
+ borderColor: {}
27596
27619
  }, {
27597
27620
  "modelValue": {},
27598
27621
  "modelModifiers": {}
@@ -27823,7 +27846,8 @@ var SkModal_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PU
27823
27846
  default: false
27824
27847
  },
27825
27848
  baseColor: {},
27826
- textColor: {}
27849
+ textColor: {},
27850
+ borderColor: {}
27827
27851
  },
27828
27852
  emits: ["update:open"],
27829
27853
  setup(__props, { expose: __expose, emit: __emit }) {
@@ -27960,9 +27984,6 @@ var SkModal_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PU
27960
27984
  }
27961
27985
  }), [["__scopeId", "data-v-d5c13c78"]]);
27962
27986
  //#endregion
27963
- //#region src/components/NavBar/context.ts
27964
- var NAVBAR_KIND_KEY = Symbol("sk-navbar-kind");
27965
- //#endregion
27966
27987
  //#region src/components/NavBar/SkNavBar.vue?vue&type=script&setup=true&lang.ts
27967
27988
  var _hoisted_1$20 = { class: "sk-navbar-content" };
27968
27989
  var _hoisted_2$11 = {
@@ -27991,8 +28012,10 @@ var SkNavBar_default = /* @__PURE__ */ defineComponent({
27991
28012
  type: Boolean,
27992
28013
  default: true
27993
28014
  },
28015
+ size: { default: "md" },
27994
28016
  baseColor: {},
27995
- textColor: {}
28017
+ textColor: {},
28018
+ borderColor: {}
27996
28019
  },
27997
28020
  setup(__props) {
27998
28021
  /**
@@ -28027,6 +28050,7 @@ var SkNavBar_default = /* @__PURE__ */ defineComponent({
28027
28050
  */
28028
28051
  const props = __props;
28029
28052
  provide(NAVBAR_KIND_KEY, toRef(() => props.kind));
28053
+ provide(NAVBAR_SIZE_KEY, toRef(() => props.size));
28030
28054
  const slots = useSlots();
28031
28055
  const classes = computed(() => {
28032
28056
  return {
@@ -28077,7 +28101,8 @@ var SkNumberInput_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/*
28077
28101
  max: { default: void 0 },
28078
28102
  step: { default: 1 },
28079
28103
  baseColor: {},
28080
- textColor: {}
28104
+ textColor: {},
28105
+ borderColor: {}
28081
28106
  }, {
28082
28107
  "modelValue": { default: 0 },
28083
28108
  "modelModifiers": {}
@@ -28478,6 +28503,10 @@ var SkPage_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PUR
28478
28503
  flush: {
28479
28504
  type: Boolean,
28480
28505
  default: false
28506
+ },
28507
+ noBounce: {
28508
+ type: Boolean,
28509
+ default: false
28481
28510
  }
28482
28511
  },
28483
28512
  emits: ["update:sidebarOpen", "update:asideOpen"],
@@ -28658,7 +28687,8 @@ var SkPage_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PUR
28658
28687
  "sk-fixed-footer": props.fixedFooter,
28659
28688
  "sk-sidebar-drawer-active": isSidebarDrawerActive.value,
28660
28689
  "sk-aside-drawer-active": isAsideDrawerActive.value,
28661
- "sk-flush": props.flush
28690
+ "sk-flush": props.flush,
28691
+ "sk-no-bounce": props.noBounce
28662
28692
  }));
28663
28693
  const customStyles = computed(() => {
28664
28694
  const styles = {};
@@ -28756,7 +28786,7 @@ var SkPage_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PUR
28756
28786
  ], 14, _hoisted_1$18);
28757
28787
  };
28758
28788
  }
28759
- }), [["__scopeId", "data-v-f502bb9d"]]);
28789
+ }), [["__scopeId", "data-v-265ba522"]]);
28760
28790
  //#endregion
28761
28791
  //#region src/components/Page/SkPageSidebarToggle.vue?vue&type=script&setup=true&lang.ts
28762
28792
  var _hoisted_1$17 = {
@@ -28982,7 +29012,8 @@ var SkPagination_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/*
28982
29012
  default: false
28983
29013
  },
28984
29014
  baseColor: { default: void 0 },
28985
- textColor: { default: void 0 }
29015
+ textColor: { default: void 0 },
29016
+ borderColor: {}
28986
29017
  },
28987
29018
  emits: ["update:modelValue"],
28988
29019
  setup(__props, { emit: __emit }) {
@@ -29134,7 +29165,8 @@ var SkPopover_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__
29134
29165
  default: void 0
29135
29166
  },
29136
29167
  baseColor: {},
29137
- textColor: {}
29168
+ textColor: {},
29169
+ borderColor: {}
29138
29170
  },
29139
29171
  emits: ["update:open"],
29140
29172
  setup(__props, { emit: __emit }) {
@@ -29378,7 +29410,8 @@ var SkRadio_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PU
29378
29410
  kind: { default: void 0 },
29379
29411
  size: { default: void 0 },
29380
29412
  baseColor: {},
29381
- textColor: {}
29413
+ textColor: {},
29414
+ borderColor: {}
29382
29415
  },
29383
29416
  setup(__props) {
29384
29417
  /**
@@ -29537,17 +29570,69 @@ var SkScrollArea_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/*
29537
29570
  [`sk-${props.orientation}`]: true,
29538
29571
  "sk-fade": props.fade
29539
29572
  }));
29573
+ const viewportRef = ref(null);
29574
+ const fadeTop = ref(0);
29575
+ const fadeBottom = ref(0);
29576
+ const fadeLeft = ref(0);
29577
+ const fadeRight = ref(0);
29578
+ let scrollEl = null;
29579
+ let resizeObs = null;
29580
+ let rafID = null;
29581
+ function updateFades() {
29582
+ if (!scrollEl) return;
29583
+ const { scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth } = scrollEl;
29584
+ const threshold = 1;
29585
+ fadeTop.value = scrollTop > threshold ? 1 : 0;
29586
+ fadeBottom.value = scrollHeight - scrollTop - clientHeight > threshold ? 1 : 0;
29587
+ fadeLeft.value = scrollLeft > threshold ? 1 : 0;
29588
+ fadeRight.value = scrollWidth - scrollLeft - clientWidth > threshold ? 1 : 0;
29589
+ }
29590
+ function scheduleUpdate() {
29591
+ if (rafID !== null) return;
29592
+ rafID = requestAnimationFrame(() => {
29593
+ rafID = null;
29594
+ updateFades();
29595
+ });
29596
+ }
29597
+ onMounted(() => {
29598
+ scrollEl = viewportRef.value?.viewportElement ?? null;
29599
+ if (!scrollEl) return;
29600
+ scrollEl.addEventListener("scroll", scheduleUpdate, { passive: true });
29601
+ resizeObs = new ResizeObserver(scheduleUpdate);
29602
+ resizeObs.observe(scrollEl);
29603
+ for (const child of Array.from(scrollEl.children)) resizeObs.observe(child);
29604
+ updateFades();
29605
+ });
29606
+ onBeforeUnmount(() => {
29607
+ if (scrollEl) scrollEl.removeEventListener("scroll", scheduleUpdate);
29608
+ resizeObs?.disconnect();
29609
+ if (rafID !== null) cancelAnimationFrame(rafID);
29610
+ });
29611
+ const rootStyles = computed(() => {
29612
+ const styles = { ...customColorStyles.value };
29613
+ if (props.fade) {
29614
+ styles["--sk-scroll-fade-top"] = String(fadeTop.value);
29615
+ styles["--sk-scroll-fade-bottom"] = String(fadeBottom.value);
29616
+ styles["--sk-scroll-fade-left"] = String(fadeLeft.value);
29617
+ styles["--sk-scroll-fade-right"] = String(fadeRight.value);
29618
+ }
29619
+ return styles;
29620
+ });
29540
29621
  return (_ctx, _cache) => {
29541
29622
  return openBlock(), createBlock(unref(ScrollAreaRoot_default), {
29542
29623
  type: __props.type,
29543
29624
  class: normalizeClass(classes.value),
29544
- style: normalizeStyle(unref(customColorStyles))
29625
+ style: normalizeStyle(rootStyles.value)
29545
29626
  }, {
29546
29627
  default: withCtx(() => [
29547
- createVNode(unref(ScrollAreaViewport_default), { class: "sk-scroll-area-viewport" }, {
29628
+ createVNode(unref(ScrollAreaViewport_default), {
29629
+ ref_key: "viewportRef",
29630
+ ref: viewportRef,
29631
+ class: "sk-scroll-area-viewport"
29632
+ }, {
29548
29633
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", {}, void 0, true)]),
29549
29634
  _: 3
29550
- }),
29635
+ }, 512),
29551
29636
  __props.orientation !== "horizontal" ? (openBlock(), createBlock(unref(ScrollAreaScrollbar_default), {
29552
29637
  key: 0,
29553
29638
  class: "sk-scroll-area-scrollbar",
@@ -29577,7 +29662,7 @@ var SkScrollArea_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/*
29577
29662
  ]);
29578
29663
  };
29579
29664
  }
29580
- }), [["__scopeId", "data-v-03c94821"]]);
29665
+ }), [["__scopeId", "data-v-e4dbafd6"]]);
29581
29666
  //#endregion
29582
29667
  //#region src/components/Select/SkSelect.vue?vue&type=script&setup=true&lang.ts
29583
29668
  var _hoisted_1$13 = {
@@ -29607,7 +29692,8 @@ var SkSelect_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__P
29607
29692
  default: false
29608
29693
  },
29609
29694
  baseColor: {},
29610
- textColor: {}
29695
+ textColor: {},
29696
+ borderColor: {}
29611
29697
  }, {
29612
29698
  "modelValue": {},
29613
29699
  "modelModifiers": {}
@@ -29832,7 +29918,8 @@ var SkSidebar_default = /* @__PURE__ */ defineComponent({
29832
29918
  default: false
29833
29919
  },
29834
29920
  baseColor: {},
29835
- textColor: {}
29921
+ textColor: {},
29922
+ borderColor: {}
29836
29923
  },
29837
29924
  setup(__props) {
29838
29925
  /**
@@ -30403,7 +30490,8 @@ var SkSwitch_default = /* @__PURE__ */ defineComponent({
30403
30490
  default: false
30404
30491
  },
30405
30492
  baseColor: {},
30406
- textColor: {}
30493
+ textColor: {},
30494
+ borderColor: {}
30407
30495
  },
30408
30496
  emits: ["update:modelValue"],
30409
30497
  setup(__props) {
@@ -30516,7 +30604,8 @@ var SkTable_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PU
30516
30604
  default: false
30517
30605
  },
30518
30606
  baseColor: {},
30519
- textColor: {}
30607
+ textColor: {},
30608
+ borderColor: {}
30520
30609
  },
30521
30610
  setup(__props) {
30522
30611
  /**
@@ -30783,7 +30872,8 @@ var SkTabs_default = /* @__PURE__ */ defineComponent({
30783
30872
  default: false
30784
30873
  },
30785
30874
  baseColor: {},
30786
- textColor: {}
30875
+ textColor: {},
30876
+ borderColor: {}
30787
30877
  },
30788
30878
  emits: ["update:modelValue"],
30789
30879
  setup(__props) {
@@ -30858,7 +30948,8 @@ var SkTag_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE
30858
30948
  default: false
30859
30949
  },
30860
30950
  baseColor: {},
30861
- textColor: {}
30951
+ textColor: {},
30952
+ borderColor: {}
30862
30953
  },
30863
30954
  emits: ["remove"],
30864
30955
  setup(__props, { emit: __emit }) {
@@ -30964,7 +31055,8 @@ var SkTagsInput_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @
30964
31055
  tagKind: { default: void 0 },
30965
31056
  tagVariant: { default: "solid" },
30966
31057
  baseColor: {},
30967
- textColor: {}
31058
+ textColor: {},
31059
+ borderColor: {}
30968
31060
  }, {
30969
31061
  "modelValue": { default: () => [] },
30970
31062
  "modelModifiers": {}
@@ -31107,7 +31199,8 @@ var SkTextarea_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @_
31107
31199
  rows: { default: 4 },
31108
31200
  autocomplete: { default: void 0 },
31109
31201
  baseColor: {},
31110
- textColor: {}
31202
+ textColor: {},
31203
+ borderColor: {}
31111
31204
  }, {
31112
31205
  "modelValue": { default: "" },
31113
31206
  "modelModifiers": {}
@@ -31664,7 +31757,8 @@ var SkTooltip_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__
31664
31757
  default: true
31665
31758
  },
31666
31759
  baseColor: {},
31667
- textColor: {}
31760
+ textColor: {},
31761
+ borderColor: {}
31668
31762
  },
31669
31763
  setup(__props) {
31670
31764
  /**
@@ -31946,6 +32040,7 @@ var SkTreeView_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @_
31946
32040
  emits: ["update:modelValue"],
31947
32041
  setup(__props) {
31948
32042
  const props = __props;
32043
+ const rekaModelValue = computed(() => props.modelValue);
31949
32044
  function getAllKeys(items) {
31950
32045
  const keys = [];
31951
32046
  for (const item of items) {
@@ -31968,7 +32063,7 @@ var SkTreeView_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @_
31968
32063
  return openBlock(), createBlock(unref(TreeRoot_default), {
31969
32064
  items: __props.items,
31970
32065
  "get-key": __props.getKey,
31971
- "model-value": __props.modelValue,
32066
+ "model-value": rekaModelValue.value,
31972
32067
  multiple: __props.multiple,
31973
32068
  "propagate-select": __props.propagateSelect,
31974
32069
  "default-expanded": expandedKeys.value,
@@ -31990,7 +32085,7 @@ var SkTreeView_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @_
31990
32085
  ]);
31991
32086
  };
31992
32087
  }
31993
- }), [["__scopeId", "data-v-717b6450"]]);
32088
+ }), [["__scopeId", "data-v-39b36ab8"]]);
31994
32089
  //#endregion
31995
32090
  //#region src/components/Theme/SkTheme.vue?vue&type=script&setup=true&lang.ts
31996
32091
  var _hoisted_1 = ["data-scheme"];