@juxtui/ui 0.2.0 → 0.3.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 (37) hide show
  1. package/README.md +1 -1
  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/card/JCard.vue.d.ts +1 -1
  8. package/dist/components/collapsible/JCollapsible.vue.d.ts +28 -0
  9. package/dist/components/command-palette/JCommandPalette.vue.d.ts +1 -1
  10. package/dist/components/dropdown-menu/JDropdownMenu.vue.d.ts +1 -1
  11. package/dist/components/empty-state/JEmptyState.vue.d.ts +23 -0
  12. package/dist/components/field/JFieldShell.vue.d.ts +1 -1
  13. package/dist/components/pagination/JPagination.vue.d.ts +25 -0
  14. package/dist/components/primitives/JSlot.d.ts +1 -1
  15. package/dist/components/rating/JRating.vue.d.ts +27 -0
  16. package/dist/components/slider/JSlider.vue.d.ts +31 -0
  17. package/dist/components/stat/JStat.vue.d.ts +22 -0
  18. package/dist/components/tag/JTag.vue.d.ts +28 -0
  19. package/dist/components/timeline/JTimeline.vue.d.ts +12 -0
  20. package/dist/components/timeline/JTimelineItem.vue.d.ts +24 -0
  21. package/dist/components/toast/JToaster.vue.d.ts +1 -1
  22. package/dist/components/toggle-group/JToggleGroup.vue.d.ts +33 -0
  23. package/dist/components/toggle-group/JToggleGroupItem.vue.d.ts +19 -0
  24. package/dist/components/toggle-group/context.d.ts +9 -0
  25. package/dist/components/visually-hidden/JVisuallyHidden.vue.d.ts +19 -0
  26. package/dist/components.d.ts +16 -0
  27. package/dist/composables/useModal.d.ts +1 -1
  28. package/dist/composables/useToast.d.ts +1 -1
  29. package/dist/icons.d.ts +4 -0
  30. package/dist/index.d.ts +16 -0
  31. package/dist/index.js +1161 -196
  32. package/dist/index.js.map +1 -1
  33. package/dist/nuxt.js +17 -1
  34. package/dist/nuxt.js.map +1 -1
  35. package/dist/style.css +1526 -548
  36. package/dist/tokens.css +5 -5
  37. package/package.json +1 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
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
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.
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
8
 
9
9
  ```vue
10
10
  <JButton>
@@ -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
+ };
@@ -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,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,31 @@
1
+ export interface SliderProps {
2
+ min?: number;
3
+ max?: number;
4
+ step?: number;
5
+ disabled?: boolean;
6
+ /** Accessible name for the thumb(s) when no visible label is associated. */
7
+ label?: string;
8
+ size?: 'sm' | 'md';
9
+ /** Show the current value in a floating bubble above the active thumb. */
10
+ showValue?: boolean;
11
+ /** Format the displayed and announced value. */
12
+ format?: (value: number) => string;
13
+ }
14
+ type __VLS_Props = SliderProps;
15
+ type __VLS_ModelProps = {
16
+ /** A single value, or a `[low, high]` tuple for a range slider. */
17
+ modelValue?: number | [number, number];
18
+ };
19
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
20
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
21
+ "update:modelValue": (value: number | [number, number]) => any;
22
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
23
+ "onUpdate:modelValue"?: ((value: number | [number, number]) => any) | undefined;
24
+ }>, {
25
+ size: "sm" | "md";
26
+ max: number;
27
+ step: number;
28
+ min: number;
29
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
30
+ declare const _default: typeof __VLS_export;
31
+ export default _default;
@@ -0,0 +1,22 @@
1
+ export type StatTrend = 'up' | 'down' | 'neutral';
2
+ export interface StatProps {
3
+ label: string;
4
+ value: string | number;
5
+ /** Delta shown next to the value, e.g. `"+12%"`. */
6
+ delta?: string;
7
+ trend?: StatTrend;
8
+ description?: string;
9
+ }
10
+ type __VLS_Slots = {
11
+ /** Icon shown next to the label. */
12
+ icon?: () => unknown;
13
+ };
14
+ declare const __VLS_base: import("vue").DefineComponent<StatProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<StatProps> & Readonly<{}>, {}, {}, {}, {}, 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,28 @@
1
+ export type TagVariant = 'neutral' | 'success' | 'warning' | 'destructive' | 'accent';
2
+ export interface TagProps {
3
+ variant?: TagVariant;
4
+ size?: 'sm' | 'md';
5
+ disabled?: boolean;
6
+ /** Accessible label for the remove button, e.g. `"Remove Engineering"`. Defaults to "Remove". */
7
+ removeLabel?: string;
8
+ }
9
+ type __VLS_Slots = {
10
+ default?: () => unknown;
11
+ leading?: () => unknown;
12
+ };
13
+ declare const __VLS_base: import("vue").DefineComponent<TagProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
+ remove: () => any;
15
+ }, string, import("vue").PublicProps, Readonly<TagProps> & Readonly<{
16
+ onRemove?: (() => any) | undefined;
17
+ }>, {
18
+ variant: TagVariant;
19
+ size: "sm" | "md";
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
+ };
@@ -0,0 +1,12 @@
1
+ type __VLS_Slots = {
2
+ default?: () => unknown;
3
+ };
4
+ declare const __VLS_base: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
5
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
6
+ declare const _default: typeof __VLS_export;
7
+ export default _default;
8
+ type __VLS_WithSlots<T, S> = T & {
9
+ new (): {
10
+ $slots: S;
11
+ };
12
+ };
@@ -0,0 +1,24 @@
1
+ export type TimelineItemStatus = 'complete' | 'current' | 'upcoming';
2
+ export interface TimelineItemProps {
3
+ title?: string;
4
+ /** A timestamp or relative time, e.g. "2 hours ago". */
5
+ time?: string;
6
+ status?: TimelineItemStatus;
7
+ }
8
+ type __VLS_Slots = {
9
+ default?: () => unknown;
10
+ title?: () => unknown;
11
+ /** Replace the default dot marker. */
12
+ marker?: () => unknown;
13
+ };
14
+ declare const __VLS_base: import("vue").DefineComponent<TimelineItemProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TimelineItemProps> & Readonly<{}>, {
15
+ status: TimelineItemStatus;
16
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
20
+ type __VLS_WithSlots<T, S> = T & {
21
+ new (): {
22
+ $slots: S;
23
+ };
24
+ };
@@ -10,9 +10,9 @@ export interface ToasterProps {
10
10
  }
11
11
  declare const __VLS_export: import("vue").DefineComponent<ToasterProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ToasterProps> & Readonly<{}>, {
12
12
  label: string;
13
+ max: number;
13
14
  hotkey: string;
14
15
  position: ToasterPosition;
15
- max: number;
16
16
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
17
  declare const _default: typeof __VLS_export;
18
18
  export default _default;
@@ -0,0 +1,33 @@
1
+ export interface ToggleGroupProps {
2
+ /** `single` keeps at most one item pressed; `multiple` lets any number stay pressed. */
3
+ type?: 'single' | 'multiple';
4
+ size?: 'sm' | 'md';
5
+ disabled?: boolean;
6
+ /** Accessible name for the group. */
7
+ label?: string;
8
+ }
9
+ type __VLS_Props = ToggleGroupProps;
10
+ type __VLS_Slots = {
11
+ default?: () => unknown;
12
+ };
13
+ type __VLS_ModelProps = {
14
+ /** The pressed value in `single` mode, or an array of values in `multiple` mode. */
15
+ modelValue?: string | string[] | null;
16
+ };
17
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
18
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
19
+ "update:modelValue": (value: string | string[] | null) => any;
20
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
21
+ "onUpdate:modelValue"?: ((value: string | string[] | null) => any) | undefined;
22
+ }>, {
23
+ type: "single" | "multiple";
24
+ size: "sm" | "md";
25
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
27
+ declare const _default: typeof __VLS_export;
28
+ export default _default;
29
+ type __VLS_WithSlots<T, S> = T & {
30
+ new (): {
31
+ $slots: S;
32
+ };
33
+ };
@@ -0,0 +1,19 @@
1
+ export interface ToggleGroupItemProps {
2
+ /** Identifies the item in the group's `v-model`. */
3
+ value: string;
4
+ disabled?: boolean;
5
+ /** Accessible name, when the slot content isn't descriptive enough (e.g. an icon-only item). */
6
+ label?: string;
7
+ }
8
+ type __VLS_Slots = {
9
+ default?: () => unknown;
10
+ };
11
+ declare const __VLS_base: import("vue").DefineComponent<ToggleGroupItemProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ToggleGroupItemProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
15
+ type __VLS_WithSlots<T, S> = T & {
16
+ new (): {
17
+ $slots: S;
18
+ };
19
+ };
@@ -0,0 +1,9 @@
1
+ import type { ComputedRef, InjectionKey } from 'vue';
2
+ export type ToggleGroupType = 'single' | 'multiple';
3
+ export interface ToggleGroupContext {
4
+ type: ComputedRef<ToggleGroupType>;
5
+ disabled: ComputedRef<boolean>;
6
+ isSelected: (value: string) => boolean;
7
+ toggle: (value: string) => void;
8
+ }
9
+ export declare const TOGGLE_GROUP: InjectionKey<ToggleGroupContext>;
@@ -0,0 +1,19 @@
1
+ import type { Component } from 'vue';
2
+ export interface VisuallyHiddenProps {
3
+ /** Render as another element or component, e.g. `label` or `h2`. */
4
+ as?: string | Component;
5
+ }
6
+ type __VLS_Slots = {
7
+ default?: () => unknown;
8
+ };
9
+ declare const __VLS_base: import("vue").DefineComponent<VisuallyHiddenProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<VisuallyHiddenProps> & Readonly<{}>, {
10
+ as: string | Component;
11
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
15
+ type __VLS_WithSlots<T, S> = T & {
16
+ new (): {
17
+ $slots: S;
18
+ };
19
+ };
@@ -1,11 +1,16 @@
1
1
  export { default as JAccordion } from './components/accordion/JAccordion.vue';
2
2
  export { default as JAccordionItem } from './components/accordion/JAccordionItem.vue';
3
3
  export { default as JAlert } from './components/alert/JAlert.vue';
4
+ export { default as JAspectRatio } from './components/aspect-ratio/JAspectRatio.vue';
4
5
  export { default as JAvatar } from './components/avatar/JAvatar.vue';
6
+ export { default as JAvatarGroup } from './components/avatar-group/JAvatarGroup.vue';
5
7
  export { default as JBadge } from './components/badge/JBadge.vue';
8
+ export { default as JBanner } from './components/banner/JBanner.vue';
9
+ export { default as JBreadcrumb } from './components/breadcrumb/JBreadcrumb.vue';
6
10
  export { default as JButton } from './components/button/JButton.vue';
7
11
  export { default as JCard } from './components/card/JCard.vue';
8
12
  export { default as JCheckbox } from './components/checkbox/JCheckbox.vue';
13
+ export { default as JCollapsible } from './components/collapsible/JCollapsible.vue';
9
14
  export { default as JCommandPalette } from './components/command-palette/JCommandPalette.vue';
10
15
  export { default as JDialog } from './components/dialog/JDialog.vue';
11
16
  export { default as JDropdownMenu } from './components/dropdown-menu/JDropdownMenu.vue';
@@ -13,19 +18,30 @@ export { default as JDropdownMenuItem } from './components/dropdown-menu/JDropdo
13
18
  export { default as JDropdownMenuLabel } from './components/dropdown-menu/JDropdownMenuLabel.vue';
14
19
  export { default as JDropdownMenuSeparator } from './components/dropdown-menu/JDropdownMenuSeparator.vue';
15
20
  export { default as JDropdownMenuSub } from './components/dropdown-menu/JDropdownMenuSub.vue';
21
+ export { default as JEmptyState } from './components/empty-state/JEmptyState.vue';
16
22
  export { default as JInput } from './components/input/JInput.vue';
17
23
  export { default as JKbd } from './components/kbd/JKbd.vue';
24
+ export { default as JPagination } from './components/pagination/JPagination.vue';
18
25
  export { default as JPopover } from './components/popover/JPopover.vue';
19
26
  export { default as JProgress } from './components/progress/JProgress.vue';
20
27
  export { default as JRadio } from './components/radio/JRadio.vue';
21
28
  export { default as JRadioGroup } from './components/radio/JRadioGroup.vue';
29
+ export { default as JRating } from './components/rating/JRating.vue';
22
30
  export { default as JSelect } from './components/select/JSelect.vue';
23
31
  export { default as JSeparator } from './components/separator/JSeparator.vue';
24
32
  export { default as JSheet } from './components/sheet/JSheet.vue';
25
33
  export { default as JSkeleton } from './components/skeleton/JSkeleton.vue';
34
+ export { default as JSlider } from './components/slider/JSlider.vue';
26
35
  export { default as JSpinner } from './components/spinner/JSpinner.vue';
36
+ export { default as JStat } from './components/stat/JStat.vue';
27
37
  export { default as JSwitch } from './components/switch/JSwitch.vue';
28
38
  export { default as JTabs } from './components/tabs/JTabs.vue';
39
+ export { default as JTag } from './components/tag/JTag.vue';
29
40
  export { default as JTextarea } from './components/textarea/JTextarea.vue';
41
+ export { default as JTimeline } from './components/timeline/JTimeline.vue';
42
+ export { default as JTimelineItem } from './components/timeline/JTimelineItem.vue';
30
43
  export { default as JToaster } from './components/toast/JToaster.vue';
44
+ export { default as JToggleGroup } from './components/toggle-group/JToggleGroup.vue';
45
+ export { default as JToggleGroupItem } from './components/toggle-group/JToggleGroupItem.vue';
31
46
  export { default as JTooltip } from './components/tooltip/JTooltip.vue';
47
+ export { default as JVisuallyHidden } from './components/visually-hidden/JVisuallyHidden.vue';
@@ -7,7 +7,7 @@ export interface ModalOptions {
7
7
  focusSelector?: string;
8
8
  }
9
9
  /**
10
- * Internal: everything a modal surface (Dialog, Sheet) shares — layering,
10
+ * Internal: everything a modal surface (Dialog, Sheet) shares | layering,
11
11
  * focus trap and restoration, scroll lock, backdrop clicks and the "nudge"
12
12
  * when dismissal is refused.
13
13
  */
@@ -52,7 +52,7 @@ export interface ToastFn {
52
52
  update: typeof update;
53
53
  dismiss: typeof dismiss;
54
54
  }
55
- /** Show a toast. Works anywhere — inside or outside components. */
55
+ /** Show a toast. Works anywhere | inside or outside components. */
56
56
  export declare const toast: ToastFn;
57
57
  export declare function useToast(): {
58
58
  toast: ToastFn;
package/dist/icons.d.ts CHANGED
@@ -11,6 +11,10 @@ export declare const IconCircleX: Icon;
11
11
  export declare const IconAlert: Icon;
12
12
  export declare const IconInfo: Icon;
13
13
  export declare const IconCornerDownLeft: Icon;
14
+ export declare const IconChevronLeft: Icon;
15
+ export declare const IconMoreHorizontal: Icon;
16
+ export declare const IconArrowUpRight: Icon;
17
+ export declare const IconArrowDownRight: Icon;
14
18
  /** The loading spinner used across Juxt. A quarter arc over a faint track. */
15
19
  export declare const Spinner: FunctionalComponent<{
16
20
  size?: number;
package/dist/index.d.ts CHANGED
@@ -3,35 +3,51 @@ export * from './components';
3
3
  export type { AccordionProps } from './components/accordion/JAccordion.vue';
4
4
  export type { AccordionItemProps } from './components/accordion/JAccordionItem.vue';
5
5
  export type { AlertProps, AlertVariant } from './components/alert/JAlert.vue';
6
+ export type { AspectRatioProps } from './components/aspect-ratio/JAspectRatio.vue';
6
7
  export type { AvatarProps, AvatarStatus } from './components/avatar/JAvatar.vue';
8
+ export type { AvatarGroupItem, AvatarGroupProps } from './components/avatar-group/JAvatarGroup.vue';
7
9
  export type { BadgeProps, BadgeVariant } from './components/badge/JBadge.vue';
10
+ export type { BannerProps, BannerVariant } from './components/banner/JBanner.vue';
11
+ export type { BreadcrumbItem, BreadcrumbProps } from './components/breadcrumb/JBreadcrumb.vue';
8
12
  export type { ButtonProps, ButtonSize, ButtonVariant } from './components/button/JButton.vue';
9
13
  export type { CardProps } from './components/card/JCard.vue';
10
14
  export type { CheckboxProps } from './components/checkbox/JCheckbox.vue';
15
+ export type { CollapsibleProps } from './components/collapsible/JCollapsible.vue';
11
16
  export type { CommandGroup, CommandItem, CommandPaletteProps } from './components/command-palette/JCommandPalette.vue';
12
17
  export { matchText } from './components/command-palette/search';
13
18
  export type { DialogProps } from './components/dialog/JDialog.vue';
14
19
  export type { DropdownMenuProps } from './components/dropdown-menu/JDropdownMenu.vue';
15
20
  export type { DropdownMenuItemProps } from './components/dropdown-menu/JDropdownMenuItem.vue';
16
21
  export type { DropdownMenuSubProps } from './components/dropdown-menu/JDropdownMenuSub.vue';
22
+ export type { EmptyStateProps } from './components/empty-state/JEmptyState.vue';
17
23
  export type { FieldProps } from './components/field/useField';
18
24
  export type { InputProps, InputSize } from './components/input/JInput.vue';
19
25
  export type { KbdProps } from './components/kbd/JKbd.vue';
26
+ export type { PaginationProps } from './components/pagination/JPagination.vue';
20
27
  export type { PopoverProps } from './components/popover/JPopover.vue';
21
28
  export type { ProgressProps } from './components/progress/JProgress.vue';
22
29
  export type { RadioValue } from './components/radio/context';
23
30
  export type { RadioProps } from './components/radio/JRadio.vue';
24
31
  export type { RadioGroupProps } from './components/radio/JRadioGroup.vue';
32
+ export type { RatingProps } from './components/rating/JRating.vue';
25
33
  export type { SelectOption, SelectProps } from './components/select/JSelect.vue';
26
34
  export type { SeparatorProps } from './components/separator/JSeparator.vue';
27
35
  export type { SheetProps } from './components/sheet/JSheet.vue';
28
36
  export type { SkeletonProps } from './components/skeleton/JSkeleton.vue';
37
+ export type { SliderProps } from './components/slider/JSlider.vue';
29
38
  export type { SpinnerProps } from './components/spinner/JSpinner.vue';
39
+ export type { StatProps, StatTrend } from './components/stat/JStat.vue';
30
40
  export type { SwitchProps } from './components/switch/JSwitch.vue';
31
41
  export type { TabItem, TabsProps } from './components/tabs/JTabs.vue';
42
+ export type { TagProps, TagVariant } from './components/tag/JTag.vue';
32
43
  export type { TextareaProps } from './components/textarea/JTextarea.vue';
44
+ export type { TimelineItemProps, TimelineItemStatus } from './components/timeline/JTimelineItem.vue';
33
45
  export type { ToasterPosition, ToasterProps } from './components/toast/JToaster.vue';
46
+ export type { ToggleGroupType } from './components/toggle-group/context';
47
+ export type { ToggleGroupProps } from './components/toggle-group/JToggleGroup.vue';
48
+ export type { ToggleGroupItemProps } from './components/toggle-group/JToggleGroupItem.vue';
34
49
  export type { TooltipProps } from './components/tooltip/JTooltip.vue';
50
+ export type { VisuallyHiddenProps } from './components/visually-hidden/JVisuallyHidden.vue';
35
51
  export { useFocusTrap } from './composables/useFocusTrap';
36
52
  export type { FocusTrapOptions } from './composables/useFocusTrap';
37
53
  export { formatHotkey, matchesHotkey, useHotkey } from './composables/useHotkey';