@juxtui/ui 0.1.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 (58) hide show
  1. package/README.md +1 -1
  2. package/dist/components/accordion/JAccordion.vue.d.ts +34 -0
  3. package/dist/components/accordion/JAccordionItem.vue.d.ts +19 -0
  4. package/dist/components/accordion/context.d.ts +7 -0
  5. package/dist/components/alert/JAlert.vue.d.ts +30 -0
  6. package/dist/components/aspect-ratio/JAspectRatio.vue.d.ts +18 -0
  7. package/dist/components/avatar/JAvatar.vue.d.ts +1 -1
  8. package/dist/components/avatar-group/JAvatarGroup.vue.d.ts +19 -0
  9. package/dist/components/badge/JBadge.vue.d.ts +1 -1
  10. package/dist/components/banner/JBanner.vue.d.ts +30 -0
  11. package/dist/components/breadcrumb/JBreadcrumb.vue.d.ts +29 -0
  12. package/dist/components/button/JButton.vue.d.ts +1 -1
  13. package/dist/components/card/JCard.vue.d.ts +1 -1
  14. package/dist/components/collapsible/JCollapsible.vue.d.ts +28 -0
  15. package/dist/components/command-palette/JCommandPalette.vue.d.ts +1 -1
  16. package/dist/components/dropdown-menu/JDropdownMenu.vue.d.ts +1 -1
  17. package/dist/components/empty-state/JEmptyState.vue.d.ts +23 -0
  18. package/dist/components/field/JFieldShell.vue.d.ts +1 -1
  19. package/dist/components/input/JInput.vue.d.ts +2 -2
  20. package/dist/components/kbd/JKbd.vue.d.ts +22 -0
  21. package/dist/components/pagination/JPagination.vue.d.ts +25 -0
  22. package/dist/components/popover/JPopover.vue.d.ts +43 -0
  23. package/dist/components/primitives/JSlot.d.ts +1 -1
  24. package/dist/components/progress/JProgress.vue.d.ts +20 -0
  25. package/dist/components/radio/JRadio.vue.d.ts +20 -0
  26. package/dist/components/radio/JRadioGroup.vue.d.ts +38 -0
  27. package/dist/components/radio/context.d.ts +11 -0
  28. package/dist/components/rating/JRating.vue.d.ts +27 -0
  29. package/dist/components/select/JSelect.vue.d.ts +1 -1
  30. package/dist/components/separator/JSeparator.vue.d.ts +25 -0
  31. package/dist/components/sheet/JSheet.vue.d.ts +53 -0
  32. package/dist/components/skeleton/JSkeleton.vue.d.ts +15 -0
  33. package/dist/components/slider/JSlider.vue.d.ts +31 -0
  34. package/dist/components/spinner/JSpinner.vue.d.ts +11 -0
  35. package/dist/components/stat/JStat.vue.d.ts +22 -0
  36. package/dist/components/switch/JSwitch.vue.d.ts +1 -1
  37. package/dist/components/tabs/JTabs.vue.d.ts +1 -1
  38. package/dist/components/tag/JTag.vue.d.ts +28 -0
  39. package/dist/components/timeline/JTimeline.vue.d.ts +12 -0
  40. package/dist/components/timeline/JTimelineItem.vue.d.ts +24 -0
  41. package/dist/components/toast/JToaster.vue.d.ts +1 -1
  42. package/dist/components/toggle-group/JToggleGroup.vue.d.ts +33 -0
  43. package/dist/components/toggle-group/JToggleGroupItem.vue.d.ts +19 -0
  44. package/dist/components/toggle-group/context.d.ts +9 -0
  45. package/dist/components/tooltip/JTooltip.vue.d.ts +1 -1
  46. package/dist/components/visually-hidden/JVisuallyHidden.vue.d.ts +19 -0
  47. package/dist/components.d.ts +28 -0
  48. package/dist/composables/useModal.d.ts +20 -0
  49. package/dist/composables/useToast.d.ts +1 -1
  50. package/dist/icons.d.ts +4 -0
  51. package/dist/index.d.ts +29 -0
  52. package/dist/index.js +3914 -2165
  53. package/dist/index.js.map +1 -1
  54. package/dist/nuxt.js +29 -1
  55. package/dist/nuxt.js.map +1 -1
  56. package/dist/style.css +1874 -139
  57. package/dist/tokens.css +5 -5
  58. package/package.json +1 -1
@@ -0,0 +1,53 @@
1
+ export interface SheetProps {
2
+ title?: string;
3
+ description?: string;
4
+ /** Edge the sheet slides in from. */
5
+ side?: 'right' | 'left' | 'bottom';
6
+ /** Width (or height for `bottom`): 320, 400 or 560px. */
7
+ size?: 'sm' | 'md' | 'lg';
8
+ closeOnOverlay?: boolean;
9
+ closeOnEscape?: boolean;
10
+ hideClose?: boolean;
11
+ /** Accessible label when there is no visible title. */
12
+ ariaLabel?: string;
13
+ }
14
+ type __VLS_Props = SheetProps;
15
+ type __VLS_Slots = {
16
+ default?: (props: {
17
+ close: () => void;
18
+ }) => unknown;
19
+ header?: (props: {
20
+ titleId: string;
21
+ descriptionId: string;
22
+ }) => unknown;
23
+ footer?: (props: {
24
+ close: () => void;
25
+ }) => unknown;
26
+ };
27
+ declare function close(): void;
28
+ type __VLS_ModelProps = {
29
+ 'open'?: boolean;
30
+ };
31
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
32
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
33
+ close: typeof close;
34
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
35
+ "update:open": (value: boolean) => any;
36
+ afterClose: () => any;
37
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
38
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
39
+ onAfterClose?: (() => any) | undefined;
40
+ }>, {
41
+ size: "sm" | "md" | "lg";
42
+ closeOnOverlay: boolean;
43
+ closeOnEscape: boolean;
44
+ side: "right" | "left" | "bottom";
45
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
46
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
47
+ declare const _default: typeof __VLS_export;
48
+ export default _default;
49
+ type __VLS_WithSlots<T, S> = T & {
50
+ new (): {
51
+ $slots: S;
52
+ };
53
+ };
@@ -0,0 +1,15 @@
1
+ export interface SkeletonProps {
2
+ /** `text` renders one or more lines; `circle` suits avatars. */
3
+ shape?: 'rect' | 'text' | 'circle';
4
+ /** Number of lines for `text`. The last one is shorter, like a real paragraph. */
5
+ lines?: number;
6
+ /** Any CSS length, e.g. `12rem` or `100%`. */
7
+ width?: string;
8
+ height?: string;
9
+ }
10
+ declare const __VLS_export: import("vue").DefineComponent<SkeletonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SkeletonProps> & Readonly<{}>, {
11
+ shape: "rect" | "text" | "circle";
12
+ lines: number;
13
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ declare const _default: typeof __VLS_export;
15
+ 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,11 @@
1
+ export interface SpinnerProps {
2
+ size?: 'sm' | 'md' | 'lg';
3
+ /** Announced to screen readers. Set to an empty string when the context already says it. */
4
+ label?: string;
5
+ }
6
+ declare const __VLS_export: import("vue").DefineComponent<SpinnerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SpinnerProps> & Readonly<{}>, {
7
+ label: string;
8
+ size: "sm" | "md" | "lg";
9
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ declare const _default: typeof __VLS_export;
11
+ 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
+ };
@@ -24,8 +24,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
24
24
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
25
25
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
26
26
  }>, {
27
- size: "sm" | "md";
28
27
  value: string;
28
+ size: "sm" | "md";
29
29
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
30
30
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
31
31
  declare const _default: typeof __VLS_export;
@@ -35,8 +35,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {
35
35
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
36
36
  "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
37
37
  }>, {
38
- size: "sm" | "md";
39
38
  variant: "line" | "pill";
39
+ size: "sm" | "md";
40
40
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
41
41
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
42
42
  declare const _default: typeof __VLS_export;
@@ -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>;
@@ -10,8 +10,8 @@ export interface TooltipProps {
10
10
  declare const _default: typeof __VLS_export;
11
11
  export default _default;
12
12
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<TooltipProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TooltipProps> & Readonly<{}>, {
13
- align: "start" | "center" | "end";
14
13
  side: "top" | "right" | "bottom" | "left";
14
+ align: "start" | "center" | "end";
15
15
  delay: number;
16
16
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
17
17
  default?: () => unknown;
@@ -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,8 +1,16 @@
1
+ export { default as JAccordion } from './components/accordion/JAccordion.vue';
2
+ export { default as JAccordionItem } from './components/accordion/JAccordionItem.vue';
3
+ export { default as JAlert } from './components/alert/JAlert.vue';
4
+ export { default as JAspectRatio } from './components/aspect-ratio/JAspectRatio.vue';
1
5
  export { default as JAvatar } from './components/avatar/JAvatar.vue';
6
+ export { default as JAvatarGroup } from './components/avatar-group/JAvatarGroup.vue';
2
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';
3
10
  export { default as JButton } from './components/button/JButton.vue';
4
11
  export { default as JCard } from './components/card/JCard.vue';
5
12
  export { default as JCheckbox } from './components/checkbox/JCheckbox.vue';
13
+ export { default as JCollapsible } from './components/collapsible/JCollapsible.vue';
6
14
  export { default as JCommandPalette } from './components/command-palette/JCommandPalette.vue';
7
15
  export { default as JDialog } from './components/dialog/JDialog.vue';
8
16
  export { default as JDropdownMenu } from './components/dropdown-menu/JDropdownMenu.vue';
@@ -10,10 +18,30 @@ export { default as JDropdownMenuItem } from './components/dropdown-menu/JDropdo
10
18
  export { default as JDropdownMenuLabel } from './components/dropdown-menu/JDropdownMenuLabel.vue';
11
19
  export { default as JDropdownMenuSeparator } from './components/dropdown-menu/JDropdownMenuSeparator.vue';
12
20
  export { default as JDropdownMenuSub } from './components/dropdown-menu/JDropdownMenuSub.vue';
21
+ export { default as JEmptyState } from './components/empty-state/JEmptyState.vue';
13
22
  export { default as JInput } from './components/input/JInput.vue';
23
+ export { default as JKbd } from './components/kbd/JKbd.vue';
24
+ export { default as JPagination } from './components/pagination/JPagination.vue';
25
+ export { default as JPopover } from './components/popover/JPopover.vue';
26
+ export { default as JProgress } from './components/progress/JProgress.vue';
27
+ export { default as JRadio } from './components/radio/JRadio.vue';
28
+ export { default as JRadioGroup } from './components/radio/JRadioGroup.vue';
29
+ export { default as JRating } from './components/rating/JRating.vue';
14
30
  export { default as JSelect } from './components/select/JSelect.vue';
31
+ export { default as JSeparator } from './components/separator/JSeparator.vue';
32
+ export { default as JSheet } from './components/sheet/JSheet.vue';
33
+ export { default as JSkeleton } from './components/skeleton/JSkeleton.vue';
34
+ export { default as JSlider } from './components/slider/JSlider.vue';
35
+ export { default as JSpinner } from './components/spinner/JSpinner.vue';
36
+ export { default as JStat } from './components/stat/JStat.vue';
15
37
  export { default as JSwitch } from './components/switch/JSwitch.vue';
16
38
  export { default as JTabs } from './components/tabs/JTabs.vue';
39
+ export { default as JTag } from './components/tag/JTag.vue';
17
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';
18
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';
19
46
  export { default as JTooltip } from './components/tooltip/JTooltip.vue';
47
+ export { default as JVisuallyHidden } from './components/visually-hidden/JVisuallyHidden.vue';
@@ -0,0 +1,20 @@
1
+ import type { Ref } from 'vue';
2
+ export interface ModalOptions {
3
+ closeOnEscape: () => boolean;
4
+ closeOnOverlay: () => boolean;
5
+ close: () => void;
6
+ /** Selector for the element to focus first, inside the panel. */
7
+ focusSelector?: string;
8
+ }
9
+ /**
10
+ * Internal: everything a modal surface (Dialog, Sheet) shares | layering,
11
+ * focus trap and restoration, scroll lock, backdrop clicks and the "nudge"
12
+ * when dismissal is refused.
13
+ */
14
+ export declare function useModal(panel: Ref<HTMLElement | null>, open: Ref<boolean>, options: ModalOptions): {
15
+ nudging: Ref<boolean, boolean>;
16
+ onBackdropPointerDown: (event: PointerEvent) => void;
17
+ onBackdropClick: (event: MouseEvent) => void;
18
+ };
19
+ /** Form fields worth focusing first in a modal body. */
20
+ export declare const FIELD_SELECTOR = ":is(input:not([type=hidden]), textarea, select, [role=combobox]):not(:disabled)";
@@ -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
@@ -1,24 +1,53 @@
1
1
  import './styles/index.css';
2
2
  export * from './components';
3
+ export type { AccordionProps } from './components/accordion/JAccordion.vue';
4
+ export type { AccordionItemProps } from './components/accordion/JAccordionItem.vue';
5
+ export type { AlertProps, AlertVariant } from './components/alert/JAlert.vue';
6
+ export type { AspectRatioProps } from './components/aspect-ratio/JAspectRatio.vue';
3
7
  export type { AvatarProps, AvatarStatus } from './components/avatar/JAvatar.vue';
8
+ export type { AvatarGroupItem, AvatarGroupProps } from './components/avatar-group/JAvatarGroup.vue';
4
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';
5
12
  export type { ButtonProps, ButtonSize, ButtonVariant } from './components/button/JButton.vue';
6
13
  export type { CardProps } from './components/card/JCard.vue';
7
14
  export type { CheckboxProps } from './components/checkbox/JCheckbox.vue';
15
+ export type { CollapsibleProps } from './components/collapsible/JCollapsible.vue';
8
16
  export type { CommandGroup, CommandItem, CommandPaletteProps } from './components/command-palette/JCommandPalette.vue';
9
17
  export { matchText } from './components/command-palette/search';
10
18
  export type { DialogProps } from './components/dialog/JDialog.vue';
11
19
  export type { DropdownMenuProps } from './components/dropdown-menu/JDropdownMenu.vue';
12
20
  export type { DropdownMenuItemProps } from './components/dropdown-menu/JDropdownMenuItem.vue';
13
21
  export type { DropdownMenuSubProps } from './components/dropdown-menu/JDropdownMenuSub.vue';
22
+ export type { EmptyStateProps } from './components/empty-state/JEmptyState.vue';
14
23
  export type { FieldProps } from './components/field/useField';
15
24
  export type { InputProps, InputSize } from './components/input/JInput.vue';
25
+ export type { KbdProps } from './components/kbd/JKbd.vue';
26
+ export type { PaginationProps } from './components/pagination/JPagination.vue';
27
+ export type { PopoverProps } from './components/popover/JPopover.vue';
28
+ export type { ProgressProps } from './components/progress/JProgress.vue';
29
+ export type { RadioValue } from './components/radio/context';
30
+ export type { RadioProps } from './components/radio/JRadio.vue';
31
+ export type { RadioGroupProps } from './components/radio/JRadioGroup.vue';
32
+ export type { RatingProps } from './components/rating/JRating.vue';
16
33
  export type { SelectOption, SelectProps } from './components/select/JSelect.vue';
34
+ export type { SeparatorProps } from './components/separator/JSeparator.vue';
35
+ export type { SheetProps } from './components/sheet/JSheet.vue';
36
+ export type { SkeletonProps } from './components/skeleton/JSkeleton.vue';
37
+ export type { SliderProps } from './components/slider/JSlider.vue';
38
+ export type { SpinnerProps } from './components/spinner/JSpinner.vue';
39
+ export type { StatProps, StatTrend } from './components/stat/JStat.vue';
17
40
  export type { SwitchProps } from './components/switch/JSwitch.vue';
18
41
  export type { TabItem, TabsProps } from './components/tabs/JTabs.vue';
42
+ export type { TagProps, TagVariant } from './components/tag/JTag.vue';
19
43
  export type { TextareaProps } from './components/textarea/JTextarea.vue';
44
+ export type { TimelineItemProps, TimelineItemStatus } from './components/timeline/JTimelineItem.vue';
20
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';
21
49
  export type { TooltipProps } from './components/tooltip/JTooltip.vue';
50
+ export type { VisuallyHiddenProps } from './components/visually-hidden/JVisuallyHidden.vue';
22
51
  export { useFocusTrap } from './composables/useFocusTrap';
23
52
  export type { FocusTrapOptions } from './composables/useFocusTrap';
24
53
  export { formatHotkey, matchesHotkey, useHotkey } from './composables/useHotkey';