@juxtui/ui 0.2.0 → 0.4.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 (45) hide show
  1. package/README.md +63 -62
  2. package/dist/components/aspect-ratio/JAspectRatio.vue.d.ts +18 -0
  3. package/dist/components/avatar/JAvatar.vue.d.ts +1 -1
  4. package/dist/components/avatar-group/JAvatarGroup.vue.d.ts +19 -0
  5. package/dist/components/banner/JBanner.vue.d.ts +30 -0
  6. package/dist/components/breadcrumb/JBreadcrumb.vue.d.ts +29 -0
  7. package/dist/components/burger/JBurger.vue.d.ts +25 -0
  8. package/dist/components/card/JCard.vue.d.ts +1 -1
  9. package/dist/components/collapsible/JCollapsible.vue.d.ts +28 -0
  10. package/dist/components/command-palette/JCommandPalette.vue.d.ts +1 -1
  11. package/dist/components/dropdown-menu/JDropdownMenu.vue.d.ts +1 -1
  12. package/dist/components/empty-state/JEmptyState.vue.d.ts +23 -0
  13. package/dist/components/field/JFieldShell.vue.d.ts +1 -1
  14. package/dist/components/footer/JFooter.vue.d.ts +26 -0
  15. package/dist/components/footer/JFooterColumn.vue.d.ts +15 -0
  16. package/dist/components/navbar/JNavbar.vue.d.ts +47 -0
  17. package/dist/components/navbar/JNavbarLink.vue.d.ts +22 -0
  18. package/dist/components/pagination/JPagination.vue.d.ts +25 -0
  19. package/dist/components/primitives/JSlot.d.ts +1 -1
  20. package/dist/components/rating/JRating.vue.d.ts +27 -0
  21. package/dist/components/sidebar/JSidebar.vue.d.ts +23 -0
  22. package/dist/components/sidebar/JSidebarGroup.vue.d.ts +29 -0
  23. package/dist/components/sidebar/JSidebarItem.vue.d.ts +26 -0
  24. package/dist/components/slider/JSlider.vue.d.ts +31 -0
  25. package/dist/components/stat/JStat.vue.d.ts +22 -0
  26. package/dist/components/tag/JTag.vue.d.ts +28 -0
  27. package/dist/components/timeline/JTimeline.vue.d.ts +12 -0
  28. package/dist/components/timeline/JTimelineItem.vue.d.ts +24 -0
  29. package/dist/components/toast/JToaster.vue.d.ts +1 -1
  30. package/dist/components/toggle-group/JToggleGroup.vue.d.ts +33 -0
  31. package/dist/components/toggle-group/JToggleGroupItem.vue.d.ts +19 -0
  32. package/dist/components/toggle-group/context.d.ts +9 -0
  33. package/dist/components/visually-hidden/JVisuallyHidden.vue.d.ts +19 -0
  34. package/dist/components.d.ts +24 -0
  35. package/dist/composables/useModal.d.ts +1 -1
  36. package/dist/composables/useToast.d.ts +1 -1
  37. package/dist/icons.d.ts +4 -0
  38. package/dist/index.d.ts +24 -0
  39. package/dist/index.js +1583 -218
  40. package/dist/index.js.map +1 -1
  41. package/dist/nuxt.js +25 -1
  42. package/dist/nuxt.js.map +1 -1
  43. package/dist/style.css +2147 -606
  44. package/dist/tokens.css +5 -5
  45. package/package.json +1 -1
package/README.md CHANGED
@@ -1,62 +1,63 @@
1
- # juxt
2
-
3
- **Thoughtfully crafted components for Nuxt & Vue.**
4
-
5
- Juxt is a small component library that cares about the details you feel but rarely notice: how far a menu travels when it opens, where focus goes when a dialog closes, whether a loading button changes width, what happens when you press Escape with a select open inside a dialog.
6
-
7
- It is fifteen components, one token system and one motion language. It's mostly grayscale, and the green `#079D6B` is kept for state.
8
-
9
- ```vue
10
- <JButton>
11
- Save changes
12
- </JButton>
13
- ```
14
-
15
- ## Installation
16
-
17
- ```bash
18
- pnpm add @juxtui/ui
19
- ```
20
-
21
- **Nuxt**: add the module. Components, composables and styles are wired up for you.
22
-
23
- ```ts
24
- // nuxt.config.ts
25
- export default defineNuxtConfig({
26
- modules: ['@juxtui/ui/nuxt'],
27
- })
28
- ```
29
-
30
- **Vue**: import the stylesheet once, then import what you use.
31
-
32
- ```ts
33
- import '@juxtui/ui/style.css'
34
- import { JButton, toast } from '@juxtui/ui'
35
- ```
36
-
37
- Using Tailwind CSS v4? `@import '@juxtui/ui/tailwind.css'` maps the tokens onto utilities (`bg-surface`, `text-fg-muted`, `rounded-md`, `duration-fast`, …). Juxt's styles live in a `juxt` cascade layer, so your own classes always win.
38
-
39
- ## Components
40
-
41
- | | |
42
- | --- | --- |
43
- | **Actions** | Button |
44
- | **Forms** | Input · Textarea · Checkbox · Switch · Select |
45
- | **Overlays** | Dialog · Dropdown Menu · Tooltip · Command Palette |
46
- | **Feedback** | Toast · Badge |
47
- | **Display** | Avatar · Card |
48
- | **Navigation** | Tabs |
49
-
50
- Each one supports light and dark themes, full keyboard use, reduced motion and SSR. Its docs page lists the keys it handles and the ARIA it exposes.
51
-
52
- ## Design philosophy
53
-
54
- - **Quiet until it matters.** The interface is grayscale, and green marks state: focus, checked, success, where you are. Primary buttons use ink, not green.
55
- - **Motion is feedback.** There are four durations (80–240ms) and three curves, and only `transform` and `opacity` animate. Entrances are slower than exits. With reduced motion, things still fade but don't move.
56
- - **Accessible by construction.** Overlays trap focus, restore it when they close, and stack correctly: Escape and outside clicks go to the top-most layer only.
57
- - **Small APIs.** Props are named after what they do, and anything that holds state has a `v-model`. If you know one component, you know the rest.
58
- - **Tokens all the way down.** Colour, type, space, radius, elevation, motion and layering are CSS custom properties. Change `--juxt-accent` and the whole system follows.
59
-
60
- ## License
61
-
62
- MIT
1
+ # juxt.ui
2
+
3
+ **Thoughtfully crafted components for Nuxt & Vue.**
4
+
5
+ juxt.ui is a small component library that cares about the details you feel but rarely notice: how far a menu travels when it opens, where focus goes when a dialog closes, whether a loading button changes width, what happens when you press Escape with a select open inside a dialog.
6
+
7
+ It is Multiple components, one token system and one motion language. It's mostly grayscale, and the green `#079D6B` is kept for state.
8
+
9
+ ```vue
10
+ <JButton>
11
+ Save changes
12
+ </JButton>
13
+ ```
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ pnpm add @juxtui/ui
19
+ ```
20
+
21
+ **Nuxt**: add the module. Components, composables and styles are wired up for you.
22
+
23
+ ```ts
24
+ // nuxt.config.ts
25
+ export default defineNuxtConfig({
26
+ modules: ['@juxtui/ui/nuxt'],
27
+ })
28
+ ```
29
+
30
+ **Vue**: import the stylesheet once, then import what you use.
31
+
32
+ ```ts
33
+ import '@juxtui/ui/style.css'
34
+ import { JButton, toast } from '@juxtui/ui'
35
+ ```
36
+
37
+ Using Tailwind CSS v4? `@import '@juxtui/ui/tailwind.css'` maps the tokens onto utilities (`bg-surface`, `text-fg-muted`, `rounded-md`, `duration-fast`, …). juxt.ui's styles live in a `juxt` cascade layer, so your own classes always win.
38
+
39
+ ## Components
40
+
41
+ | | |
42
+ | --- | --- |
43
+ | **Actions** | Button |
44
+ | **Forms** | Input · Textarea · Checkbox · Switch · Select |
45
+ | **Overlays** | Dialog · Dropdown Menu · Tooltip · Command Palette |
46
+ | **Feedback** | Toast · Badge |
47
+ | **Display** | Avatar · Card |
48
+ | **Navigation** | Tabs |
49
+ | **Layout** | Navbar · Burger · Footer · Sidebar |
50
+
51
+ Each one supports light and dark themes, full keyboard use, reduced motion and SSR. Its docs page lists the keys it handles and the ARIA it exposes.
52
+
53
+ ## Design philosophy
54
+
55
+ - **Quiet until it matters.** The interface is grayscale, and green marks state: focus, checked, success, where you are. Primary buttons use ink, not green.
56
+ - **Motion is feedback.** There are four durations (80–240ms) and three curves, and only `transform` and `opacity` animate. Entrances are slower than exits. With reduced motion, things still fade but don't move.
57
+ - **Accessible by construction.** Overlays trap focus, restore it when they close, and stack correctly: Escape and outside clicks go to the top-most layer only.
58
+ - **Small APIs.** Props are named after what they do, and anything that holds state has a `v-model`. If you know one component, you know the rest.
59
+ - **Tokens all the way down.** Colour, type, space, radius, elevation, motion and layering are CSS custom properties. Change `--juxt-accent` and the whole system follows.
60
+
61
+ ## License
62
+
63
+ MIT
@@ -0,0 +1,18 @@
1
+ export interface AspectRatioProps {
2
+ /** Width/height ratio, e.g. `16 / 9` or `1`. */
3
+ ratio?: number;
4
+ }
5
+ type __VLS_Slots = {
6
+ default?: () => unknown;
7
+ };
8
+ declare const __VLS_base: import("vue").DefineComponent<AspectRatioProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<AspectRatioProps> & Readonly<{}>, {
9
+ ratio: number;
10
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ type __VLS_WithSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -3,7 +3,7 @@ export interface AvatarProps {
3
3
  src?: string;
4
4
  /** Image alt text. Defaults to `name`. */
5
5
  alt?: string;
6
- /** Full name — used for initials and as the accessible name. */
6
+ /** Full name | used for initials and as the accessible name. */
7
7
  name?: string;
8
8
  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
9
9
  shape?: 'circle' | 'square';
@@ -0,0 +1,19 @@
1
+ export interface AvatarGroupItem {
2
+ src?: string;
3
+ name?: string;
4
+ }
5
+ export interface AvatarGroupProps {
6
+ items: AvatarGroupItem[];
7
+ /** Avatars shown before the rest collapse into a "+N" indicator. */
8
+ max?: number;
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
+ shape?: 'circle' | 'square';
11
+ /** Accessible name for the group. Defaults to a plain count, not an assumption about who's in it. */
12
+ label?: string;
13
+ }
14
+ declare const __VLS_export: import("vue").DefineComponent<AvatarGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<AvatarGroupProps> & Readonly<{}>, {
15
+ size: "xs" | "sm" | "md" | "lg" | "xl";
16
+ shape: "circle" | "square";
17
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
@@ -0,0 +1,30 @@
1
+ export type BannerVariant = 'neutral' | 'info' | 'success' | 'warning' | 'destructive';
2
+ export interface BannerProps {
3
+ variant?: BannerVariant;
4
+ title?: string;
5
+ description?: string;
6
+ /** Show a close button; emits `dismiss`. */
7
+ dismissible?: boolean;
8
+ /** Hide the leading icon. */
9
+ hideIcon?: boolean;
10
+ }
11
+ type __VLS_Slots = {
12
+ default?: () => unknown;
13
+ icon?: () => unknown;
14
+ actions?: () => unknown;
15
+ };
16
+ declare const __VLS_base: import("vue").DefineComponent<BannerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
+ dismiss: () => any;
18
+ }, string, import("vue").PublicProps, Readonly<BannerProps> & Readonly<{
19
+ onDismiss?: (() => any) | undefined;
20
+ }>, {
21
+ variant: BannerVariant;
22
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
26
+ type __VLS_WithSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
@@ -0,0 +1,29 @@
1
+ export interface BreadcrumbItem {
2
+ label: string;
3
+ href?: string;
4
+ }
5
+ export interface BreadcrumbProps {
6
+ /** Trail of items, first to last. The last item renders as the current page. */
7
+ items?: BreadcrumbItem[];
8
+ /** Accessible name for the nav landmark. Defaults to "Breadcrumb". */
9
+ label?: string;
10
+ /** Collapse middle items behind an ellipsis once the trail is longer than this. */
11
+ maxItems?: number;
12
+ }
13
+ /**
14
+ * Provide `items` for the common case, or omit it and pass your own `<li>`
15
+ * elements (with class `j-breadcrumb__item`) into the default slot for full
16
+ * control over each crumb.
17
+ */
18
+ type __VLS_Slots = {
19
+ default?: () => unknown;
20
+ };
21
+ declare const __VLS_base: import("vue").DefineComponent<BreadcrumbProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BreadcrumbProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
23
+ declare const _default: typeof __VLS_export;
24
+ export default _default;
25
+ type __VLS_WithSlots<T, S> = T & {
26
+ new (): {
27
+ $slots: S;
28
+ };
29
+ };
@@ -0,0 +1,25 @@
1
+ export interface BurgerProps {
2
+ /** Accessible name while closed. */
3
+ openLabel?: string;
4
+ /** Accessible name while open. */
5
+ closeLabel?: string;
6
+ size?: 'sm' | 'md';
7
+ /** Id of the element this button shows and hides. */
8
+ controls?: string;
9
+ }
10
+ type __VLS_Props = BurgerProps;
11
+ type __VLS_ModelProps = {
12
+ modelValue?: boolean;
13
+ };
14
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
15
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
16
+ "update:modelValue": (value: boolean) => any;
17
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
18
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
19
+ }>, {
20
+ size: "sm" | "md";
21
+ openLabel: string;
22
+ closeLabel: string;
23
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
@@ -10,7 +10,7 @@ export interface CardProps {
10
10
  type __VLS_Slots = {
11
11
  default?: () => unknown;
12
12
  header?: () => unknown;
13
- /** Sits to the right of the title — a button, badge or menu. */
13
+ /** Sits to the right of the title | a button, badge or menu. */
14
14
  actions?: () => unknown;
15
15
  footer?: () => unknown;
16
16
  };
@@ -0,0 +1,28 @@
1
+ export interface CollapsibleProps {
2
+ /** Visible summary text; use the `trigger` slot for custom content instead. */
3
+ label?: string;
4
+ disabled?: boolean;
5
+ }
6
+ type __VLS_Props = CollapsibleProps;
7
+ type __VLS_Slots = {
8
+ default?: () => unknown;
9
+ trigger?: () => unknown;
10
+ };
11
+ type __VLS_ModelProps = {
12
+ /** A single disclosure primitive | for a group of them, use `JAccordion`. */
13
+ modelValue?: boolean;
14
+ };
15
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
16
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
+ "update:modelValue": (value: boolean) => any;
18
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
19
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
20
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
21
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
22
+ declare const _default: typeof __VLS_export;
23
+ export default _default;
24
+ type __VLS_WithSlots<T, S> = T & {
25
+ new (): {
26
+ $slots: S;
27
+ };
28
+ };
@@ -23,7 +23,7 @@ export interface CommandPaletteProps {
23
23
  /** Shown as a "Recent" group while the search is empty. */
24
24
  recent?: CommandItem[];
25
25
  placeholder?: string;
26
- /** Show a loading indicator — for async results. */
26
+ /** Show a loading indicator | for async results. */
27
27
  loading?: boolean;
28
28
  /**
29
29
  * Built-in ranking and filtering. Set to `false` when you filter yourself
@@ -7,7 +7,7 @@ export interface DropdownMenuProps {
7
7
  }
8
8
  type __VLS_Props = DropdownMenuProps;
9
9
  type __VLS_Slots = {
10
- /** The element that opens the menu — usually a `JButton`. */
10
+ /** The element that opens the menu | usually a `JButton`. */
11
11
  trigger?: (props: {
12
12
  open: boolean;
13
13
  }) => unknown;
@@ -0,0 +1,23 @@
1
+ export interface EmptyStateProps {
2
+ title?: string;
3
+ description?: string;
4
+ size?: 'sm' | 'md' | 'lg';
5
+ }
6
+ type __VLS_Slots = {
7
+ /** Icon or illustration shown above the title. */
8
+ icon?: () => unknown;
9
+ default?: () => unknown;
10
+ /** Call to action, typically a `JButton`. */
11
+ actions?: () => unknown;
12
+ };
13
+ declare const __VLS_base: import("vue").DefineComponent<EmptyStateProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<EmptyStateProps> & Readonly<{}>, {
14
+ size: "sm" | "md" | "lg";
15
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
19
+ type __VLS_WithSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Internal: lays out label, control, description and error for form fields.
3
- * Not exported — every field component composes it.
3
+ * Not exported | every field component composes it.
4
4
  */
5
5
  type __VLS_Props = {
6
6
  id: string;
@@ -0,0 +1,26 @@
1
+ export interface FooterProps {
2
+ /** Maximum content width; any CSS length. `none` spans the full width. */
3
+ maxWidth?: string;
4
+ /** Hairline above the footer. */
5
+ bordered?: boolean;
6
+ }
7
+ type __VLS_Slots = {
8
+ /** Logo and a short line about the product. */
9
+ brand?: () => unknown;
10
+ /** Link columns, typically `JFooterColumn`s. */
11
+ default?: () => unknown;
12
+ /** The last line: copyright, legal links, social icons. */
13
+ bottom?: () => unknown;
14
+ };
15
+ declare const __VLS_base: import("vue").DefineComponent<FooterProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FooterProps> & Readonly<{}>, {
16
+ maxWidth: string;
17
+ bordered: boolean;
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
20
+ declare const _default: typeof __VLS_export;
21
+ export default _default;
22
+ type __VLS_WithSlots<T, S> = T & {
23
+ new (): {
24
+ $slots: S;
25
+ };
26
+ };
@@ -0,0 +1,15 @@
1
+ export interface FooterColumnProps {
2
+ title: string;
3
+ }
4
+ type __VLS_Slots = {
5
+ default?: () => unknown;
6
+ };
7
+ declare const __VLS_base: import("vue").DefineComponent<FooterColumnProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FooterColumnProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
9
+ declare const _default: typeof __VLS_export;
10
+ export default _default;
11
+ type __VLS_WithSlots<T, S> = T & {
12
+ new (): {
13
+ $slots: S;
14
+ };
15
+ };
@@ -0,0 +1,47 @@
1
+ export interface NavbarProps {
2
+ /** Stick to the top of the viewport while scrolling. */
3
+ sticky?: boolean;
4
+ /** Hairline under the bar. */
5
+ bordered?: boolean;
6
+ /** Accessible name of the navigation landmark. */
7
+ label?: string;
8
+ /** Width below which links collapse behind the burger. `never` keeps them inline. */
9
+ collapse?: 'sm' | 'md' | 'lg' | 'never';
10
+ /** Maximum content width; any CSS length. `none` spans the full width. */
11
+ maxWidth?: string;
12
+ }
13
+ type __VLS_Props = NavbarProps;
14
+ type __VLS_Slots = {
15
+ /** Logo or product name, usually a link home. */
16
+ brand?: () => unknown;
17
+ /** Navigation links, typically `JNavbarLink`s. Shown inline, or in the mobile menu. */
18
+ default?: () => unknown;
19
+ /** Always visible on the right: search, theme switch, avatar. */
20
+ actions?: () => unknown;
21
+ /** Extra content at the bottom of the mobile menu, e.g. sign-in buttons. */
22
+ 'menu-footer'?: () => unknown;
23
+ };
24
+ type __VLS_ModelProps = {
25
+ /** Mobile menu state. */
26
+ 'open'?: boolean;
27
+ };
28
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
29
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
30
+ "update:open": (value: boolean) => any;
31
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
32
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
33
+ }>, {
34
+ label: string;
35
+ sticky: boolean;
36
+ maxWidth: string;
37
+ bordered: boolean;
38
+ collapse: "sm" | "md" | "lg" | "never";
39
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
40
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
41
+ declare const _default: typeof __VLS_export;
42
+ export default _default;
43
+ type __VLS_WithSlots<T, S> = T & {
44
+ new (): {
45
+ $slots: S;
46
+ };
47
+ };
@@ -0,0 +1,22 @@
1
+ import type { Component } from 'vue';
2
+ export interface NavbarLinkProps {
3
+ /** Marks the current page: styled and announced with `aria-current="page"`. */
4
+ active?: boolean;
5
+ /** Render as another element or component, e.g. `NuxtLink` or `RouterLink`. */
6
+ as?: string | Component;
7
+ }
8
+ type __VLS_Slots = {
9
+ default?: () => unknown;
10
+ leading?: () => unknown;
11
+ };
12
+ declare const __VLS_base: import("vue").DefineComponent<NavbarLinkProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<NavbarLinkProps> & Readonly<{}>, {
13
+ as: string | Component;
14
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
+ declare const _default: typeof __VLS_export;
17
+ export default _default;
18
+ type __VLS_WithSlots<T, S> = T & {
19
+ new (): {
20
+ $slots: S;
21
+ };
22
+ };
@@ -0,0 +1,25 @@
1
+ export interface PaginationProps {
2
+ /** Total number of pages. */
3
+ total: number;
4
+ /** Pages shown on each side of the current page before collapsing to an ellipsis. */
5
+ siblingCount?: number;
6
+ /** Accessible name for the nav landmark. */
7
+ label?: string;
8
+ size?: 'sm' | 'md';
9
+ disabled?: boolean;
10
+ }
11
+ type __VLS_Props = PaginationProps;
12
+ type __VLS_ModelProps = {
13
+ modelValue?: number;
14
+ };
15
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
16
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
+ "update:modelValue": (value: number) => any;
18
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
19
+ "onUpdate:modelValue"?: ((value: number) => any) | undefined;
20
+ }>, {
21
+ size: "sm" | "md";
22
+ siblingCount: number;
23
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
@@ -1,7 +1,7 @@
1
1
  import type { VNode } from 'vue';
2
2
  /**
3
3
  * Internal: renders its first child element and merges its own attributes
4
- * (ARIA, listeners, ids) onto it — no wrapper element.
4
+ * (ARIA, listeners, ids) onto it | no wrapper element.
5
5
  */
6
6
  export declare const JSlot: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
7
7
  [key: string]: any;
@@ -0,0 +1,27 @@
1
+ export interface RatingProps {
2
+ /** Number of stars. */
3
+ max?: number;
4
+ /** Static display mode | no interaction, ideal for showing an average. */
5
+ readonly?: boolean;
6
+ disabled?: boolean;
7
+ size?: 'sm' | 'md' | 'lg';
8
+ /** Accessible name for the group, e.g. "Rate this product". */
9
+ label?: string;
10
+ /** Allow half-star precision. Only applies in `readonly` mode. */
11
+ allowHalf?: boolean;
12
+ }
13
+ type __VLS_Props = RatingProps;
14
+ type __VLS_ModelProps = {
15
+ modelValue?: number;
16
+ };
17
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
18
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
19
+ "update:modelValue": (value: number) => any;
20
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
21
+ "onUpdate:modelValue"?: ((value: number) => any) | undefined;
22
+ }>, {
23
+ size: "sm" | "md" | "lg";
24
+ max: number;
25
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
+ declare const _default: typeof __VLS_export;
27
+ export default _default;
@@ -0,0 +1,23 @@
1
+ export interface SidebarProps {
2
+ /** Accessible name of the navigation landmark. */
3
+ label?: string;
4
+ }
5
+ type __VLS_Slots = {
6
+ /** Top of the sidebar: logo, workspace switcher. */
7
+ header?: () => unknown;
8
+ /** Items and groups. */
9
+ default?: () => unknown;
10
+ /** Pinned to the bottom: account, settings, help. */
11
+ footer?: () => unknown;
12
+ };
13
+ declare const __VLS_base: import("vue").DefineComponent<SidebarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SidebarProps> & Readonly<{}>, {
14
+ label: string;
15
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
19
+ type __VLS_WithSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
@@ -0,0 +1,29 @@
1
+ export interface SidebarGroupProps {
2
+ title?: string;
3
+ /** Let the title fold the group away. */
4
+ collapsible?: boolean;
5
+ }
6
+ type __VLS_Props = SidebarGroupProps;
7
+ type __VLS_Slots = {
8
+ default?: () => unknown;
9
+ };
10
+ type __VLS_ModelProps = {
11
+ /** Whether the group is expanded. Open by default. */
12
+ 'open'?: boolean;
13
+ };
14
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
15
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
16
+ "update:open": (value: boolean) => any;
17
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
18
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
19
+ }>, {
20
+ collapsible: boolean;
21
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
23
+ declare const _default: typeof __VLS_export;
24
+ export default _default;
25
+ type __VLS_WithSlots<T, S> = T & {
26
+ new (): {
27
+ $slots: S;
28
+ };
29
+ };
@@ -0,0 +1,26 @@
1
+ import type { Component } from 'vue';
2
+ export interface SidebarItemProps {
3
+ /** Marks the current page: styled and announced with `aria-current="page"`. */
4
+ active?: boolean;
5
+ disabled?: boolean;
6
+ /** Render as another element or component, e.g. `NuxtLink`. */
7
+ as?: string | Component;
8
+ }
9
+ type __VLS_Slots = {
10
+ default?: () => unknown;
11
+ /** Icon before the label. */
12
+ leading?: () => unknown;
13
+ /** After the label: a count, badge or shortcut. */
14
+ trailing?: () => unknown;
15
+ };
16
+ declare const __VLS_base: import("vue").DefineComponent<SidebarItemProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SidebarItemProps> & Readonly<{}>, {
17
+ as: string | Component;
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
20
+ declare const _default: typeof __VLS_export;
21
+ export default _default;
22
+ type __VLS_WithSlots<T, S> = T & {
23
+ new (): {
24
+ $slots: S;
25
+ };
26
+ };