@aleph-alpha/ui-library 1.14.0 → 1.16.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 (47) hide show
  1. package/config.d.ts +58 -6
  2. package/config.js +167 -5
  3. package/dist/system/index.d.ts +41 -53
  4. package/dist/system/lib.js +981 -988
  5. package/docs/public-docs/component-directory.md +13 -0
  6. package/docs/public-docs/contributing.md +11 -0
  7. package/docs/public-docs/external-links.md +16 -0
  8. package/docs/public-docs/foundations.md +25 -0
  9. package/docs/public-docs/getting-started-designers.md +17 -0
  10. package/docs/public-docs/index.md +5 -0
  11. package/docs/public-docs/quick-start.md +274 -0
  12. package/docs/public-docs/standards-guidelines.md +15 -0
  13. package/package.json +28 -10
  14. package/src/assets/fonts/Saans/Saans-Bold.woff2 +0 -0
  15. package/src/assets/fonts/Saans/Saans-BoldItalic.woff2 +0 -0
  16. package/src/assets/fonts/Saans/Saans-Heavy.woff2 +0 -0
  17. package/src/assets/fonts/Saans/Saans-HeavyItalic.woff2 +0 -0
  18. package/src/assets/fonts/Saans/Saans-Light.woff2 +0 -0
  19. package/src/assets/fonts/Saans/Saans-LightItalic.woff2 +0 -0
  20. package/src/assets/fonts/Saans/Saans-Medium.woff2 +0 -0
  21. package/src/assets/fonts/Saans/Saans-MediumItalic.woff2 +0 -0
  22. package/src/assets/fonts/Saans/Saans-Regular.woff2 +0 -0
  23. package/src/assets/fonts/Saans/Saans-RegularItalic.woff2 +0 -0
  24. package/src/assets/fonts/Saans/Saans-SemiBold.woff2 +0 -0
  25. package/src/assets/fonts/Saans/Saans-SemiBoldItalic.woff2 +0 -0
  26. package/src/assets/fonts/Saans/SaansItalicsVF.woff2 +0 -0
  27. package/src/assets/fonts/Saans/SaansMono-Bold.woff2 +0 -0
  28. package/src/assets/fonts/Saans/SaansMono-Heavy.woff2 +0 -0
  29. package/src/assets/fonts/Saans/SaansMono-Light.woff2 +0 -0
  30. package/src/assets/fonts/Saans/SaansMono-Medium.woff2 +0 -0
  31. package/src/assets/fonts/Saans/SaansMono-Regular.woff2 +0 -0
  32. package/src/assets/fonts/Saans/SaansMono-SemiBold.woff2 +0 -0
  33. package/src/assets/fonts/Saans/SaansMonoUprightsVF.woff2 +0 -0
  34. package/src/assets/fonts/Saans/SaansUprightsVF.woff2 +0 -0
  35. package/src/assets/fonts/Saans/SaansVF.woff2 +0 -0
  36. package/src/components/UiCalendar/UiCalendar.stories.ts +1 -4
  37. package/src/components/UiCalendar/types.ts +1 -1
  38. package/src/components/UiRangeCalendar/UiRangeCalendar.stories.ts +2 -4
  39. package/src/components/UiRangeCalendar/types.ts +1 -1
  40. package/src/components/UiSidebar/UiSidebar.stories.ts +179 -1
  41. package/src/components/UiSidebar/UiSidebarProvider.vue +1 -3
  42. package/src/components/UiSidebar/types.ts +6 -9
  43. package/src/components/UiStepper/UiStepper.stories.ts +1 -1
  44. package/src/components/core/calendar/Calendar.vue +1 -1
  45. package/src/components/core/range-calendar/RangeCalendar.vue +1 -1
  46. package/src/patterns/UiDatePicker/UiDatePicker.stories.ts +1 -4
  47. package/src/patterns/UiDatePicker/types.ts +1 -1
package/config.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Preset } from 'unocss';
1
+ import type { Preset, UserConfig } from 'unocss';
2
2
 
3
3
  /**
4
4
  * UnoCSS content configuration for scanning ui-library components.
@@ -60,7 +60,7 @@ export interface UiLibraryThemeConfig {
60
60
  /**
61
61
  * Include all token-based CSS variables in addition to shadcn variables.
62
62
  * This enables classes like bg-background-surface-secondary, text-content-on-surface-primary, etc.
63
- * @default false
63
+ * @default true
64
64
  */
65
65
  includeAllTokens?: boolean;
66
66
  }
@@ -145,24 +145,37 @@ export declare const presetUiLibraryTheme: (
145
145
  *
146
146
  * **Important:** Place this preset AFTER `presetShadcn()` to override its CSS variables.
147
147
  *
148
+ * This preset bundles everything needed for the UI library:
149
+ * - CSS variables for all design tokens (light/dark mode)
150
+ * - Token-based theme colors (bg-background-surface-secondary, text-content-on-surface-primary, etc.)
151
+ * - Semantic color overrides (background, foreground, modal, link, etc.)
152
+ * - Typography classes from design tokens (heading-48-bold, body-14-normal, label-12-medium, etc.)
153
+ * - Custom rules for Tailwind v4 CSS variable syntax (w-(--var), h-(--var), etc.)
154
+ *
148
155
  * @example
149
156
  * ```ts
150
- * // Use defaults
151
- * presetUiLibraryThemeFromTokens({ darkSelector: 'html.dark' })
157
+ * // Use defaults (recommended — includes everything)
158
+ * presetUiLibraryThemeFromTokens()
152
159
  *
153
160
  * // Extend defaults
154
161
  * presetUiLibraryThemeFromTokens({
155
- * darkSelector: 'html.dark',
156
162
  * extend: { light: { primary: '#ff5500' } },
157
163
  * })
158
164
  *
159
165
  * // With external config file
160
166
  * import themeConfig from './tokens.config';
161
- * presetUiLibraryThemeFromTokens({ ...themeConfig, darkSelector: 'html.dark' })
167
+ * presetUiLibraryThemeFromTokens(themeConfig)
162
168
  * ```
163
169
  */
164
170
  export declare const presetUiLibraryThemeFromTokens: (options?: UiLibraryPresetOptions) => Preset;
165
171
 
172
+ /**
173
+ * UnoCSS preset with utility rules required by the UI library's components.
174
+ * Adds Tailwind v4 CSS variable syntax (w-(--var), h-(--var), etc.)
175
+ * that preset-wind4 does not yet support.
176
+ */
177
+ export declare const presetUiLibraryUtils: () => Preset;
178
+
166
179
  /**
167
180
  * Typography shortcut tuple: [className, cssProperties]
168
181
  */
@@ -193,3 +206,42 @@ export type UiLibraryTypographyShortcut = [string, string];
193
206
  * ```
194
207
  */
195
208
  export declare const getUiLibraryTypographyShortcuts: () => UiLibraryTypographyShortcut[];
209
+
210
+ /**
211
+ * Options for `defineUiLibraryConfig`.
212
+ * Combines theme customization with additional UnoCSS config.
213
+ */
214
+ export interface UiLibraryConfigOptions extends UiLibraryPresetOptions {
215
+ /** Additional UnoCSS presets to append after the built-in ones */
216
+ presets?: Preset[];
217
+ /** Additional UnoCSS rules */
218
+ rules?: UserConfig['rules'];
219
+ /** Additional UnoCSS shortcuts */
220
+ shortcuts?: UserConfig['shortcuts'];
221
+ /** Any other UnoCSS config fields (safelist, blocklist, etc.) */
222
+ [key: string]: unknown;
223
+ }
224
+
225
+ /**
226
+ * Creates a complete UnoCSS config with all required presets, content scanning,
227
+ * font loading, and theme from design tokens.
228
+ *
229
+ * This is the recommended way to set up UnoCSS with the UI library.
230
+ * It replaces manually importing and composing presetWind, presetAnimations,
231
+ * presetShadcn, presetUiLibraryThemeFromTokens, and presetUiLibraryUtils.
232
+ *
233
+ * @example
234
+ * ```ts
235
+ * // uno.config.ts — minimal
236
+ * import { defineUiLibraryConfig } from '@aleph-alpha/ui-library/config'
237
+ * export default defineUiLibraryConfig()
238
+ *
239
+ * // uno.config.ts — with theme customization
240
+ * import { defineUiLibraryConfig } from '@aleph-alpha/ui-library/config'
241
+ * export default defineUiLibraryConfig({
242
+ * extend: { light: { primary: '#ff5500' } },
243
+ * darkSelector: 'html.dark',
244
+ * })
245
+ * ```
246
+ */
247
+ export declare const defineUiLibraryConfig: (options?: UiLibraryConfigOptions) => UserConfig;
package/config.js CHANGED
@@ -1,8 +1,40 @@
1
1
  import { readFileSync } from 'node:fs';
2
- import { definePreset } from 'unocss';
2
+ import { defineConfig, definePreset } from 'unocss';
3
+ import presetWind from '@unocss/preset-wind4';
4
+ import presetAnimations from 'unocss-preset-animations';
5
+ import presetShadcn from 'unocss-preset-shadcn';
3
6
 
4
7
  let tokensCache;
5
8
 
9
+ let saansFontFaceCssCache;
10
+ const getSaansFontFaceCss = () => {
11
+ if (saansFontFaceCssCache) return saansFontFaceCssCache;
12
+
13
+ const fontsDir = new URL('./src/assets/fonts/Saans/', import.meta.url);
14
+ const fonts = [
15
+ { file: 'Saans-Regular.woff2', weight: 400 },
16
+ { file: 'Saans-Medium.woff2', weight: 500 },
17
+ { file: 'Saans-SemiBold.woff2', weight: 600 },
18
+ { file: 'Saans-Bold.woff2', weight: 700 },
19
+ ];
20
+
21
+ saansFontFaceCssCache = fonts
22
+ .map(({ file, weight }) => {
23
+ const buffer = readFileSync(new URL(file, fontsDir));
24
+ const base64 = buffer.toString('base64');
25
+ return `@font-face {
26
+ font-display: swap;
27
+ font-family: 'Saans';
28
+ font-style: normal;
29
+ font-weight: ${weight};
30
+ src: url('data:font/woff2;base64,${base64}') format('woff2');
31
+ }`;
32
+ })
33
+ .join('\n');
34
+
35
+ return saansFontFaceCssCache;
36
+ };
37
+
6
38
  const getTokens = () => {
7
39
  if (tokensCache) return tokensCache;
8
40
  const raw = readFileSync(new URL('./tokens.json', import.meta.url), 'utf8');
@@ -469,9 +501,9 @@ export const presetUiLibraryTheme = (theme, options = {}) => {
469
501
  };
470
502
 
471
503
  export const presetUiLibraryThemeFromTokens = (options = {}) => {
472
- const { theme, extend, includeAllTokens = false, ...presetOptions } = options;
504
+ const { theme, extend, includeAllTokens = true, ...presetOptions } = options;
473
505
 
474
- // If full theme override provided, use it directly
506
+ // If full theme override provided, use basic preset (no batteries)
475
507
  if (theme) {
476
508
  return presetUiLibraryTheme(theme, presetOptions);
477
509
  }
@@ -479,7 +511,7 @@ export const presetUiLibraryThemeFromTokens = (options = {}) => {
479
511
  // Get base shadcn theme from tokens
480
512
  const baseTheme = getUiLibraryThemeFromTokens();
481
513
 
482
- // Optionally include all token-based variables
514
+ // Include all token-based variables (default: true)
483
515
  let finalTheme = baseTheme;
484
516
  if (includeAllTokens) {
485
517
  const tokenVars = getUiLibraryTokenVars();
@@ -492,7 +524,137 @@ export const presetUiLibraryThemeFromTokens = (options = {}) => {
492
524
  // Merge with extend overrides
493
525
  finalTheme = mergeThemes(finalTheme, extend);
494
526
 
495
- return presetUiLibraryTheme(finalTheme, presetOptions);
527
+ // Get base preset with preflights (CSS variables)
528
+ const basePreset = presetUiLibraryTheme(finalTheme, presetOptions);
529
+
530
+ // Token colors for utility classes (bg-background-surface-secondary, etc.)
531
+ const tokenColors = getUiLibraryTokenColors();
532
+
533
+ // Semantic color overrides used by components
534
+ const semanticColors = {
535
+ background: 'oklch(var(--background))',
536
+ foreground: 'oklch(var(--foreground))',
537
+ modal: 'oklch(var(--modal))',
538
+ link: 'oklch(var(--link))',
539
+ 'hover-default': 'oklch(var(--hover-default))',
540
+ 'modal-overlay': 'oklch(var(--modal-overlay))',
541
+ inverse: 'oklch(var(--inverse))',
542
+ 'inverse-foreground': 'oklch(var(--inverse-foreground))',
543
+ 'secondary-content': 'oklch(var(--secondary-content))',
544
+ 'input-background': 'oklch(var(--input-background))',
545
+ 'accent-default': 'oklch(var(--accent-default))',
546
+ 'accent-default-foreground': 'oklch(var(--accent-default-foreground))',
547
+ };
548
+
549
+ // Typography shortcuts from design tokens
550
+ const typographyShortcuts = getUiLibraryTypographyShortcuts();
551
+
552
+ // Resolve font families from tokens for --font-sans / --font-heading overrides
553
+ const fontBody = resolveAnyTokenValue('font.font-family.font-body');
554
+ const fontHeading = resolveAnyTokenValue('font.font-family.font-heading');
555
+ const fontVariablesCss = `
556
+ :root, :host {
557
+ --font-sans: '${fontBody}', sans-serif;
558
+ --font-heading: '${fontHeading}', sans-serif;
559
+ }`.trim();
560
+
561
+ // Return preset with token-related config: CSS variables, token colors, semantic overrides, typography, fonts
562
+ return {
563
+ ...basePreset,
564
+ preflights: [
565
+ ...(basePreset.preflights || []),
566
+ { getCSS: () => getSaansFontFaceCss() },
567
+ { getCSS: () => fontVariablesCss },
568
+ ],
569
+ theme: {
570
+ font: {
571
+ sans: `'${fontBody}', sans-serif`,
572
+ heading: `'${fontHeading}', sans-serif`,
573
+ },
574
+ colors: {
575
+ ...tokenColors,
576
+ ...semanticColors,
577
+ },
578
+ },
579
+ rules: [
580
+ // Typography classes from design tokens (heading-48-bold, body-14-normal, label-12-medium, etc.)
581
+ ...typographyShortcuts.map(([name, css]) => [
582
+ new RegExp(`^${name}$`),
583
+ () => Object.fromEntries(css.split(';').map((p) => p.split(':').map((s) => s.trim()))),
584
+ ]),
585
+ ],
586
+ };
587
+ };
588
+
589
+ /**
590
+ * UnoCSS preset with utility rules required by the UI library's components.
591
+ * Adds Tailwind v4 CSS variable syntax (w-(--var), h-(--var), etc.)
592
+ * that preset-wind4 does not yet support.
593
+ */
594
+ export const presetUiLibraryUtils = () =>
595
+ definePreset(() => ({
596
+ name: '@aleph-alpha/ui-library-utils',
597
+ rules: [
598
+ [/^w-\(--(.+)\)$/, ([, name]) => ({ width: `var(--${name})` })],
599
+ [/^max-w-\(--(.+)\)$/, ([, name]) => ({ 'max-width': `var(--${name})` })],
600
+ [/^h-\(--(.+)\)$/, ([, name]) => ({ height: `var(--${name})` })],
601
+ [/^origin-\(--(.+)\)$/, ([, name]) => ({ 'transform-origin': `var(--${name})` })],
602
+ ],
603
+ }))();
604
+
605
+ /**
606
+ * Creates a complete UnoCSS config with all required presets, content scanning,
607
+ * font loading, and theme from design tokens. Drop-in replacement for manually
608
+ * composing presetWind, presetAnimations, presetShadcn, and the ui-library presets.
609
+ *
610
+ * @example
611
+ * ```ts
612
+ * // uno.config.ts — minimal
613
+ * import { defineUiLibraryConfig } from '@aleph-alpha/ui-library/config'
614
+ * export default defineUiLibraryConfig()
615
+ *
616
+ * // uno.config.ts — with customization
617
+ * import { defineUiLibraryConfig } from '@aleph-alpha/ui-library/config'
618
+ * export default defineUiLibraryConfig({
619
+ * extend: { light: { primary: '#ff5500' } },
620
+ * darkSelector: 'html.dark',
621
+ * })
622
+ * ```
623
+ */
624
+ export const defineUiLibraryConfig = (options = {}) => {
625
+ const {
626
+ darkSelector,
627
+ rootSelector,
628
+ extend,
629
+ theme,
630
+ includeAllTokens,
631
+ presets: extraPresets = [],
632
+ rules: extraRules = [],
633
+ shortcuts: extraShortcuts = [],
634
+ ...restConfig
635
+ } = options;
636
+
637
+ const themeOptions = {};
638
+ if (darkSelector !== undefined) themeOptions.darkSelector = darkSelector;
639
+ if (rootSelector !== undefined) themeOptions.rootSelector = rootSelector;
640
+ if (extend !== undefined) themeOptions.extend = extend;
641
+ if (theme !== undefined) themeOptions.theme = theme;
642
+ if (includeAllTokens !== undefined) themeOptions.includeAllTokens = includeAllTokens;
643
+
644
+ return defineConfig({
645
+ ...getUiLibraryContentConfig(),
646
+ presets: [
647
+ presetWind(),
648
+ presetAnimations(),
649
+ presetShadcn({ color: 'neutral', darkSelector: darkSelector ?? 'html.dark' }),
650
+ presetUiLibraryThemeFromTokens(themeOptions),
651
+ presetUiLibraryUtils(),
652
+ ...extraPresets,
653
+ ],
654
+ rules: [...extraRules],
655
+ shortcuts: [...extraShortcuts],
656
+ ...restConfig,
657
+ });
496
658
  };
497
659
 
498
660
  // Typography utilities
@@ -136,15 +136,11 @@ size: UiSidebarMenuSubButtonSize;
136
136
  isActive: boolean;
137
137
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
138
138
 
139
- declare const __VLS_component_124: DefineComponent<__VLS_PublicProps_12, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
140
- "update:open": (value: boolean | undefined) => any;
141
- }, string, PublicProps, Readonly<__VLS_PublicProps_12> & Readonly<{
142
- "onUpdate:open"?: ((value: boolean | undefined) => any) | undefined;
143
- }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
139
+ declare const __VLS_component_124: DefineComponent<UiSidebarProviderProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<UiSidebarProviderProps> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
144
140
 
145
- declare const __VLS_component_125: DefineComponent<__VLS_PublicProps_13, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
141
+ declare const __VLS_component_125: DefineComponent<__VLS_PublicProps_12, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
146
142
  "update:modelValue": (value: number) => any;
147
- }, string, PublicProps, Readonly<__VLS_PublicProps_13> & Readonly<{
143
+ }, string, PublicProps, Readonly<__VLS_PublicProps_12> & Readonly<{
148
144
  "onUpdate:modelValue"?: ((value: number) => any) | undefined;
149
145
  }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
150
146
 
@@ -200,9 +196,9 @@ declare const __VLS_component_142: DefineComponent<UiTabsTriggerProps, {}, {}, {
200
196
 
201
197
  declare const __VLS_component_143: DefineComponent<UiTabsContentProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<UiTabsContentProps> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
202
198
 
203
- declare const __VLS_component_144: DefineComponent<__VLS_PublicProps_15, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
199
+ declare const __VLS_component_144: DefineComponent<__VLS_PublicProps_14, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
204
200
  "update:modelValue": (value: string[]) => any;
205
- }, string, PublicProps, Readonly<__VLS_PublicProps_15> & Readonly<{
201
+ }, string, PublicProps, Readonly<__VLS_PublicProps_14> & Readonly<{
206
202
  "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
207
203
  }>, {
208
204
  disabled: boolean;
@@ -212,9 +208,9 @@ declare const __VLS_component_145: DefineComponent<UiTagsInputItemProps, {}, {},
212
208
 
213
209
  declare const __VLS_component_146: DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
214
210
 
215
- declare const __VLS_component_147: DefineComponent<__VLS_PublicProps_17, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
211
+ declare const __VLS_component_147: DefineComponent<__VLS_PublicProps_16, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
216
212
  "update:modelValue": (value: boolean) => any;
217
- }, string, PublicProps, Readonly<__VLS_PublicProps_17> & Readonly<{
213
+ }, string, PublicProps, Readonly<__VLS_PublicProps_16> & Readonly<{
218
214
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
219
215
  }>, {
220
216
  disabled: boolean;
@@ -224,9 +220,9 @@ variant: "default" | "outline";
224
220
 
225
221
  declare const __VLS_component_148: DefineComponent<UiToggleGroupItemProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<UiToggleGroupItemProps> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
226
222
 
227
- declare const __VLS_component_149: DefineComponent<__VLS_PublicProps_18, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
223
+ declare const __VLS_component_149: DefineComponent<__VLS_PublicProps_17, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
228
224
  "update:open": (value: boolean) => any;
229
- }, string, PublicProps, Readonly<__VLS_PublicProps_18> & Readonly<{
225
+ }, string, PublicProps, Readonly<__VLS_PublicProps_17> & Readonly<{
230
226
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
231
227
  }>, {
232
228
  disabled: boolean;
@@ -245,10 +241,10 @@ declare const __VLS_component_150: DefineComponent<TooltipRootProps, {}, {}, {},
245
241
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
246
242
  }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
247
243
 
248
- declare const __VLS_component_151: DefineComponent<__VLS_Props_34, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
244
+ declare const __VLS_component_151: DefineComponent<__VLS_Props_33, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
249
245
  escapeKeyDown: (event: KeyboardEvent) => any;
250
246
  pointerDownOutside: (event: Event) => any;
251
- }, string, PublicProps, Readonly<__VLS_Props_34> & Readonly<{
247
+ }, string, PublicProps, Readonly<__VLS_Props_33> & Readonly<{
252
248
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
253
249
  onPointerDownOutside?: ((event: Event) => any) | undefined;
254
250
  }>, {
@@ -781,29 +777,27 @@ declare type __VLS_Props_26 = DialogContentProps & {
781
777
  closeLabel?: string;
782
778
  };
783
779
 
784
- declare type __VLS_Props_27 = UiSidebarProviderProps;
780
+ declare type __VLS_Props_27 = UiStepperProps;
785
781
 
786
- declare type __VLS_Props_28 = UiStepperProps;
782
+ declare type __VLS_Props_28 = UiSwitchProps;
787
783
 
788
- declare type __VLS_Props_29 = UiSwitchProps;
784
+ declare type __VLS_Props_29 = UiTagsInputProps;
789
785
 
790
786
  declare type __VLS_Props_3 = {
791
787
  class?: HTMLAttributes['class'];
792
788
  };
793
789
 
794
- declare type __VLS_Props_30 = UiTagsInputProps;
790
+ declare type __VLS_Props_30 = UiTextareaProps;
795
791
 
796
- declare type __VLS_Props_31 = UiTextareaProps;
792
+ declare type __VLS_Props_31 = UiToggleProps;
797
793
 
798
- declare type __VLS_Props_32 = UiToggleProps;
794
+ declare type __VLS_Props_32 = UiTooltipProps;
799
795
 
800
- declare type __VLS_Props_33 = UiTooltipProps;
801
-
802
- declare type __VLS_Props_34 = TooltipContentProps & {
796
+ declare type __VLS_Props_33 = TooltipContentProps & {
803
797
  class?: HTMLAttributes['class'];
804
798
  };
805
799
 
806
- declare type __VLS_Props_35 = UiDatePickerProps;
800
+ declare type __VLS_Props_34 = UiDatePickerProps;
807
801
 
808
802
  declare type __VLS_Props_4 = {
809
803
  class?: HTMLAttributes['class'];
@@ -841,37 +835,33 @@ declare type __VLS_PublicProps_11 = {
841
835
  } & __VLS_Props_25;
842
836
 
843
837
  declare type __VLS_PublicProps_12 = {
844
- 'open'?: boolean | undefined;
838
+ modelValue?: number;
845
839
  } & __VLS_Props_27;
846
840
 
847
841
  declare type __VLS_PublicProps_13 = {
848
- modelValue?: number;
842
+ modelValue?: boolean;
849
843
  } & __VLS_Props_28;
850
844
 
851
845
  declare type __VLS_PublicProps_14 = {
852
- modelValue?: boolean;
846
+ modelValue?: string[];
853
847
  } & __VLS_Props_29;
854
848
 
855
849
  declare type __VLS_PublicProps_15 = {
856
- modelValue?: string[];
850
+ modelValue?: string;
857
851
  } & __VLS_Props_30;
858
852
 
859
853
  declare type __VLS_PublicProps_16 = {
860
- modelValue?: string;
854
+ modelValue?: boolean;
861
855
  } & __VLS_Props_31;
862
856
 
863
857
  declare type __VLS_PublicProps_17 = {
864
- modelValue?: boolean;
858
+ 'open'?: boolean;
865
859
  } & __VLS_Props_32;
866
860
 
867
861
  declare type __VLS_PublicProps_18 = {
868
- 'open'?: boolean;
869
- } & __VLS_Props_33;
870
-
871
- declare type __VLS_PublicProps_19 = {
872
862
  modelValue?: UiDatePickerProps['modelValue'];
873
863
  'open'?: boolean;
874
- } & __VLS_Props_35;
864
+ } & __VLS_Props_34;
875
865
 
876
866
  declare type __VLS_PublicProps_2 = {
877
867
  modelValue?: UiCalendarProps['modelValue'];
@@ -4085,7 +4075,7 @@ export declare interface UiCalendarProps {
4085
4075
  locale?: string;
4086
4076
  /**
4087
4077
  * The day of the week to start on.
4088
- * @default 0 (Sunday)
4078
+ * @default 0
4089
4079
  */
4090
4080
  weekStartsOn?: UiCalendarWeekStartsOn;
4091
4081
  /**
@@ -4407,10 +4397,10 @@ export declare type UiDataTableToolbarProps<TData> = {
4407
4397
  labels?: ToolbarLabels;
4408
4398
  };
4409
4399
 
4410
- export declare const UiDatePicker: DefineComponent<__VLS_PublicProps_19, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
4400
+ export declare const UiDatePicker: DefineComponent<__VLS_PublicProps_18, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
4411
4401
  "update:modelValue": (value: DateValue | DateRange | undefined) => any;
4412
4402
  "update:open": (value: boolean) => any;
4413
- }, string, PublicProps, Readonly<__VLS_PublicProps_19> & Readonly<{
4403
+ }, string, PublicProps, Readonly<__VLS_PublicProps_18> & Readonly<{
4414
4404
  "onUpdate:modelValue"?: ((value: DateValue | DateRange | undefined) => any) | undefined;
4415
4405
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
4416
4406
  }>, {
@@ -4519,7 +4509,7 @@ export declare interface UiDatePickerProps {
4519
4509
  locale?: string;
4520
4510
  /**
4521
4511
  * The day of the week to start on.
4522
- * @default 0 (Sunday)
4512
+ * @default 0
4523
4513
  */
4524
4514
  weekStartsOn?: UiDatePickerWeekStartsOn;
4525
4515
  /**
@@ -6077,7 +6067,7 @@ export declare interface UiRangeCalendarProps {
6077
6067
  locale?: string;
6078
6068
  /**
6079
6069
  * The day of the week to start on.
6080
- * @default 0 (Sunday)
6070
+ * @default 0
6081
6071
  */
6082
6072
  weekStartsOn?: UiRangeCalendarWeekStartsOn;
6083
6073
  /**
@@ -6578,19 +6568,17 @@ export declare interface UiSidebarProps {
6578
6568
 
6579
6569
  export declare const UiSidebarProvider: __VLS_WithTemplateSlots_124<typeof __VLS_component_124, __VLS_TemplateResult_124["slots"]>;
6580
6570
 
6571
+ /**
6572
+ * Wraps the sidebar and manages its open/closed state.
6573
+ * Omit `default-open` to use cookie-based persistence (falls back to expanded).
6574
+ */
6581
6575
  export declare interface UiSidebarProviderProps {
6582
6576
  /**
6583
- * The default open state when uncontrolled.
6584
- * If not provided, the core provider uses cookie-based persistence
6577
+ * The initial open state of the sidebar.
6578
+ * If not provided, the inner provider uses cookie-based persistence
6585
6579
  * (falls back to expanded if no cookie exists).
6586
6580
  */
6587
6581
  defaultOpen?: boolean;
6588
- /**
6589
- * The controlled open state of the sidebar.
6590
- * - Omit for uncontrolled mode (component manages state internally)
6591
- * - Use `v-model:open` for controlled mode
6592
- */
6593
- open?: boolean;
6594
6582
  }
6595
6583
 
6596
6584
  export declare const UiSidebarRail: __VLS_WithTemplateSlots_116<typeof __VLS_component_116, __VLS_TemplateResult_116["slots"]>;
@@ -6829,9 +6817,9 @@ export declare type UiStepperTriggerProps = {
6829
6817
  asChild?: boolean;
6830
6818
  };
6831
6819
 
6832
- export declare const UiSwitch: DefineComponent<__VLS_PublicProps_14, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
6820
+ export declare const UiSwitch: DefineComponent<__VLS_PublicProps_13, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
6833
6821
  "update:modelValue": (value: boolean) => any;
6834
- }, string, PublicProps, Readonly<__VLS_PublicProps_14> & Readonly<{
6822
+ }, string, PublicProps, Readonly<__VLS_PublicProps_13> & Readonly<{
6835
6823
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
6836
6824
  }>, {
6837
6825
  disabled: boolean;
@@ -7085,9 +7073,9 @@ export declare interface UiTagsInputProps extends Omit<TagsInputRootProps, 'clas
7085
7073
 
7086
7074
  export declare const UiTemplatePlaceholder: DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLDivElement>;
7087
7075
 
7088
- export declare const UiTextarea: DefineComponent<__VLS_PublicProps_16, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
7076
+ export declare const UiTextarea: DefineComponent<__VLS_PublicProps_15, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
7089
7077
  "update:modelValue": (value: string) => any;
7090
- }, string, PublicProps, Readonly<__VLS_PublicProps_16> & Readonly<{
7078
+ }, string, PublicProps, Readonly<__VLS_PublicProps_15> & Readonly<{
7091
7079
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
7092
7080
  }>, {
7093
7081
  disabled: boolean;