@bridge-ui/vue 0.0.9 → 0.0.10

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 (141) hide show
  1. package/ai/skills/bridge-ui-components/SKILL.md +2 -1
  2. package/dist/Components/Accordion/Accordion.js +5 -0
  3. package/dist/Components/Accordion/Accordion.vue.d.ts +26 -0
  4. package/dist/Components/Accordion/Accordion.vue_vue_type_script_setup_true_lang.js +38 -0
  5. package/dist/Components/Accordion/accordion.types.d.ts +88 -0
  6. package/dist/Components/Accordion/accordionInjectionKey.d.ts +63 -0
  7. package/dist/Components/Accordion/accordionInjectionKey.js +4 -0
  8. package/dist/Components/Accordion/composables/useAccordion.d.ts +14 -0
  9. package/dist/Components/Accordion/composables/useAccordion.js +79 -0
  10. package/dist/Components/Accordion/index.d.ts +4 -0
  11. package/dist/Components/Accordion/index.js +4 -0
  12. package/dist/Components/AccordionItem/AccordionItem.js +5 -0
  13. package/dist/Components/AccordionItem/AccordionItem.vue.d.ts +11 -0
  14. package/dist/Components/AccordionItem/AccordionItem.vue_vue_type_script_setup_true_lang.js +25 -0
  15. package/dist/Components/AccordionItem/accordionItem.types.d.ts +105 -0
  16. package/dist/Components/AccordionItem/composables/useAccordionItem.d.ts +41 -0
  17. package/dist/Components/AccordionItem/composables/useAccordionItem.js +123 -0
  18. package/dist/Components/AccordionItem/index.d.ts +3 -0
  19. package/dist/Components/AccordionItem/index.js +3 -0
  20. package/dist/Components/Alert/Alert.vue_vue_type_script_setup_true_lang.js +11 -11
  21. package/dist/Components/Alert/composables/useAlert.js +9 -9
  22. package/dist/Components/Autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +69 -65
  23. package/dist/Components/Avatar/Avatar.vue_vue_type_script_setup_true_lang.js +4 -4
  24. package/dist/Components/Avatar/composables/useAvatar.d.ts +0 -1
  25. package/dist/Components/Avatar/composables/useAvatar.js +23 -24
  26. package/dist/Components/Badge/Badge.vue.d.ts +11 -1
  27. package/dist/Components/Badge/Badge.vue_vue_type_script_setup_true_lang.js +7 -8
  28. package/dist/Components/BaseField/BaseField.vue_vue_type_script_setup_true_lang.js +31 -27
  29. package/dist/Components/BaseField/BaseFieldLabel.vue.d.ts +11 -1
  30. package/dist/Components/BaseField/BaseFieldLabel.vue_vue_type_script_setup_true_lang.js +11 -10
  31. package/dist/Components/BaseField/baseField.types.d.ts +5 -0
  32. package/dist/Components/BaseField/baseField.types.js +11 -0
  33. package/dist/Components/BaseField/index.d.ts +1 -0
  34. package/dist/Components/BaseField/index.js +4 -3
  35. package/dist/Components/Breadcrumb/Breadcrumb.js +5 -0
  36. package/dist/Components/Breadcrumb/Breadcrumb.vue.d.ts +13 -0
  37. package/dist/Components/Breadcrumb/Breadcrumb.vue_vue_type_script_setup_true_lang.js +49 -0
  38. package/dist/Components/Breadcrumb/breadcrumb.types.d.ts +101 -0
  39. package/dist/Components/Breadcrumb/breadcrumbInjectionKey.d.ts +35 -0
  40. package/dist/Components/Breadcrumb/breadcrumbInjectionKey.js +4 -0
  41. package/dist/Components/Breadcrumb/composables/useBreadcrumb.d.ts +20 -0
  42. package/dist/Components/Breadcrumb/composables/useBreadcrumb.js +69 -0
  43. package/dist/Components/Breadcrumb/index.d.ts +4 -0
  44. package/dist/Components/Breadcrumb/index.js +4 -0
  45. package/dist/Components/BreadcrumbItem/BreadcrumbItem.js +5 -0
  46. package/dist/Components/BreadcrumbItem/BreadcrumbItem.vue.d.ts +14 -0
  47. package/dist/Components/BreadcrumbItem/BreadcrumbItem.vue_vue_type_script_setup_true_lang.js +47 -0
  48. package/dist/Components/BreadcrumbItem/breadcrumbItem.types.d.ts +140 -0
  49. package/dist/Components/BreadcrumbItem/composables/useBreadcrumbItem.d.ts +38 -0
  50. package/dist/Components/BreadcrumbItem/composables/useBreadcrumbItem.js +87 -0
  51. package/dist/Components/BreadcrumbItem/index.d.ts +3 -0
  52. package/dist/Components/BreadcrumbItem/index.js +3 -0
  53. package/dist/Components/Button/Button.vue_vue_type_script_setup_true_lang.js +17 -17
  54. package/dist/Components/Card/Card.vue_vue_type_script_setup_true_lang.js +10 -10
  55. package/dist/Components/Card/composables/useCard.d.ts +0 -1
  56. package/dist/Components/Card/composables/useCard.js +64 -66
  57. package/dist/Components/Checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js +31 -26
  58. package/dist/Components/Chip/Chip.vue_vue_type_script_setup_true_lang.js +10 -10
  59. package/dist/Components/DateField/DateField.vue_vue_type_script_setup_true_lang.js +61 -56
  60. package/dist/Components/DateField/composables/useDateField.d.ts +14 -4
  61. package/dist/Components/DateField/dateField.types.d.ts +3 -3
  62. package/dist/Components/DateRangeField/DateRangeField.vue_vue_type_script_setup_true_lang.js +59 -54
  63. package/dist/Components/DateRangeField/composables/useDateRangeField.d.ts +14 -4
  64. package/dist/Components/DateRangeField/dateRangeField.types.d.ts +3 -3
  65. package/dist/Components/DateTimeField/DateTimeField.vue_vue_type_script_setup_true_lang.js +65 -60
  66. package/dist/Components/DateTimeField/composables/useDateTimeField.d.ts +14 -4
  67. package/dist/Components/DateTimeField/dateTimeField.types.d.ts +3 -3
  68. package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue_vue_type_script_setup_true_lang.js +65 -60
  69. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.d.ts +14 -4
  70. package/dist/Components/DateTimeRangeField/dateTimeRangeField.types.d.ts +3 -3
  71. package/dist/Components/Drawer/Drawer.vue_vue_type_script_setup_true_lang.js +19 -20
  72. package/dist/Components/FormControl/FormControl.vue.d.ts +2 -4
  73. package/dist/Components/FormControl/FormControl.vue_vue_type_script_setup_true_lang.js +37 -23
  74. package/dist/Components/FormControl/FormControlLabel.vue.d.ts +11 -1
  75. package/dist/Components/FormControl/FormControlLabel.vue_vue_type_script_setup_true_lang.js +11 -10
  76. package/dist/Components/FormControl/formControl.types.d.ts +4 -0
  77. package/dist/Components/FormControl/formControl.types.js +9 -0
  78. package/dist/Components/FormControl/index.d.ts +1 -0
  79. package/dist/Components/FormControl/index.js +3 -2
  80. package/dist/Components/FormField/FilledFormField.vue.d.ts +14 -2
  81. package/dist/Components/FormField/FilledFormField.vue_vue_type_script_setup_true_lang.js +23 -18
  82. package/dist/Components/FormField/FormField.vue_vue_type_script_setup_true_lang.js +32 -27
  83. package/dist/Components/FormField/FormFieldLabel.vue.d.ts +11 -1
  84. package/dist/Components/FormField/FormFieldLabel.vue_vue_type_script_setup_true_lang.js +11 -10
  85. package/dist/Components/FormField/NotchedFormField.vue.d.ts +14 -2
  86. package/dist/Components/FormField/NotchedFormField.vue_vue_type_script_setup_true_lang.js +22 -17
  87. package/dist/Components/FormField/OutlinedFormField.vue.d.ts +14 -2
  88. package/dist/Components/FormField/OutlinedFormField.vue_vue_type_script_setup_true_lang.js +23 -18
  89. package/dist/Components/FormField/StackedFormField.vue.d.ts +14 -2
  90. package/dist/Components/FormField/StackedFormField.vue_vue_type_script_setup_true_lang.js +25 -20
  91. package/dist/Components/FormField/UnderlinedFormField.vue.d.ts +14 -2
  92. package/dist/Components/FormField/UnderlinedFormField.vue_vue_type_script_setup_true_lang.js +23 -18
  93. package/dist/Components/FormField/formField.types.d.ts +5 -0
  94. package/dist/Components/FormField/formField.types.js +11 -0
  95. package/dist/Components/FormField/index.d.ts +1 -0
  96. package/dist/Components/FormField/index.js +3 -2
  97. package/dist/Components/Label/Label.vue.d.ts +11 -1
  98. package/dist/Components/Label/Label.vue_vue_type_script_setup_true_lang.js +7 -8
  99. package/dist/Components/Link/Link.vue_vue_type_script_setup_true_lang.js +23 -23
  100. package/dist/Components/List/List.vue.d.ts +11 -1
  101. package/dist/Components/List/List.vue_vue_type_script_setup_true_lang.js +9 -10
  102. package/dist/Components/ListItem/ListItem.vue_vue_type_script_setup_true_lang.js +18 -18
  103. package/dist/Components/ListItem/composables/useListItem.d.ts +1 -3
  104. package/dist/Components/ListItem/composables/useListItem.js +47 -55
  105. package/dist/Components/ListSection/ListSection.vue_vue_type_script_setup_true_lang.js +10 -9
  106. package/dist/Components/ListSection/composables/useListSection.d.ts +1 -3
  107. package/dist/Components/ListSection/composables/useListSection.js +29 -31
  108. package/dist/Components/Listbox/Listbox.vue_vue_type_script_setup_true_lang.js +82 -82
  109. package/dist/Components/Menu/Menu.vue_vue_type_script_setup_true_lang.js +19 -19
  110. package/dist/Components/Modal/Modal.vue_vue_type_script_setup_true_lang.js +19 -20
  111. package/dist/Components/NumberField/NumberField.vue_vue_type_script_setup_true_lang.js +48 -43
  112. package/dist/Components/OtpField/OtpField.vue_vue_type_script_setup_true_lang.js +27 -22
  113. package/dist/Components/PasswordField/PasswordField.vue_vue_type_script_setup_true_lang.js +34 -29
  114. package/dist/Components/Radio/Radio.vue_vue_type_script_setup_true_lang.js +26 -21
  115. package/dist/Components/Select/Select.vue_vue_type_script_setup_true_lang.js +67 -63
  116. package/dist/Components/Slider/Slider.vue_vue_type_script_setup_true_lang.js +54 -49
  117. package/dist/Components/Switch/Switch.vue_vue_type_script_setup_true_lang.js +28 -23
  118. package/dist/Components/Tab/Tab.vue_vue_type_script_setup_true_lang.js +16 -16
  119. package/dist/Components/TabList/TabList.vue_vue_type_script_setup_true_lang.js +7 -8
  120. package/dist/Components/TabPanel/TabPanel.vue_vue_type_script_setup_true_lang.js +7 -8
  121. package/dist/Components/Tabs/Tabs.vue_vue_type_script_setup_true_lang.js +29 -26
  122. package/dist/Components/TextField/TextField.vue_vue_type_script_setup_true_lang.js +21 -16
  123. package/dist/Components/Textarea/Textarea.vue_vue_type_script_setup_true_lang.js +25 -20
  124. package/dist/Components/TimeField/TimeField.vue_vue_type_script_setup_true_lang.js +53 -48
  125. package/dist/Components/TimeField/composables/useTimeField.d.ts +14 -4
  126. package/dist/Components/TimeField/timeField.types.d.ts +3 -3
  127. package/dist/Components/TimeRangeField/TimeRangeField.vue_vue_type_script_setup_true_lang.js +53 -48
  128. package/dist/Components/TimeRangeField/composables/useTimeRangeField.d.ts +14 -4
  129. package/dist/Components/TimeRangeField/timeRangeField.types.d.ts +3 -3
  130. package/dist/Components/Tooltip/Tooltip.vue_vue_type_script_setup_true_lang.js +18 -18
  131. package/dist/Utils/index.d.ts +1 -1
  132. package/dist/Utils/index.js +2 -2
  133. package/dist/Utils/slotOrProp.d.ts +20 -11
  134. package/dist/Utils/slotOrProp.js +21 -17
  135. package/dist/Utils/useBreakpoint.d.ts +0 -4
  136. package/dist/index.d.ts +8 -0
  137. package/dist/index.js +133 -124
  138. package/docs/README.md +1 -0
  139. package/docs/components/Accordion.md +104 -0
  140. package/docs/components/Breadcrumb.md +74 -0
  141. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: bridge-ui-components
3
3
  description: >-
4
- Use Bridge UI Vue components — Button, Avatar, Card, Alert, Badge, Icon,
4
+ Use Bridge UI Vue components — Button, Avatar, Card, Alert, Accordion, Badge, Icon,
5
5
  Link, List, Tabs, Spinner, Skeleton, Progress, TextField, Select,
6
6
  Autocomplete, DateField, DatePicker, DateRangeField, DateRangePicker,
7
7
  TimeField, TimePicker, DateTimeField, DateTimePicker, classes, customProps,
@@ -23,6 +23,7 @@ In templates, use kebab-case attrs (`start-icon`, `custom-props`, `error-message
23
23
  | Avatar | `.ai/docs/components/Avatar.md` |
24
24
  | Badge | `.ai/docs/components/Badge.md` |
25
25
  | Alert | `.ai/docs/components/Alert.md` |
26
+ | Accordion | `.ai/docs/components/Accordion.md` |
26
27
  | Icon | `.ai/docs/components/Icon.md` |
27
28
  | Lists | `.ai/docs/components/List.md` |
28
29
  | Tabs | `.ai/docs/components/Tabs.md` |
@@ -0,0 +1,5 @@
1
+ import e from "./Accordion.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/Components/Accordion/Accordion.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,26 @@
1
+ import { AccordionValue } from '@bridge-ui/core';
2
+ import { AccordionOwnProps, AccordionSlots } from './accordion.types';
3
+ type __VLS_Slots = AccordionSlots;
4
+ type __VLS_Props = AccordionOwnProps;
5
+ type __VLS_ModelProps = {
6
+ modelValue?: AccordionValue;
7
+ };
8
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
9
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
10
+ change: (value: AccordionValue) => any;
11
+ "update:modelValue": (...args: unknown[]) => any;
12
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
13
+ onChange?: ((value: AccordionValue) => any) | undefined;
14
+ "onUpdate:modelValue"?: ((...args: unknown[]) => any) | undefined;
15
+ }>, {
16
+ disabled: boolean;
17
+ multiple: 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,38 @@
1
+ import { useAccordion as e } from "./composables/useAccordion.js";
2
+ import { createElementBlock as t, defineComponent as n, guardReactiveProps as r, mergeModels as i, normalizeProps as a, openBlock as o, renderSlot as s, unref as c, useModel as l } from "vue";
3
+ //#region src/Components/Accordion/Accordion.vue?vue&type=script&setup=true&lang.ts
4
+ var u = /*@__PURE__*/ n({
5
+ inheritAttrs: !1,
6
+ __name: "Accordion",
7
+ props: /*@__PURE__*/ i({
8
+ classes: {},
9
+ color: {},
10
+ customProps: {},
11
+ disabled: {
12
+ type: Boolean,
13
+ default: !1
14
+ },
15
+ multiple: {
16
+ type: Boolean,
17
+ default: !1
18
+ },
19
+ size: {},
20
+ variant: {}
21
+ }, {
22
+ modelValue: { default: "" },
23
+ modelModifiers: {}
24
+ }),
25
+ emits: /*@__PURE__*/ i(["change", "update:modelValue"], ["update:modelValue"]),
26
+ setup(n, { emit: i }) {
27
+ let u = i, d = n, f = l(n, "modelValue"), { rootBind: p } = e(d, {
28
+ size: "md",
29
+ multiple: !1,
30
+ disabled: !1,
31
+ color: "primary",
32
+ variant: "default"
33
+ }, f, u);
34
+ return (e, n) => (o(), t("div", a(r(c(p))), [s(e.$slots, "default")], 16));
35
+ }
36
+ });
37
+ //#endregion
38
+ export { u as default };
@@ -0,0 +1,88 @@
1
+ import { HTMLAttributes, Slot } from 'vue';
2
+ import { AccordionColor, AccordionSize, AccordionValue, AccordionVariant, MergeHtmlProps, MergeProps } from '@bridge-ui/core';
3
+ export interface AccordionSizeOverrides {}
4
+ export interface AccordionColorOverrides {}
5
+ export interface AccordionVariantOverrides {}
6
+ export interface AccordionClasses {
7
+ /**
8
+ * Classes merged onto the root.
9
+ */
10
+ root?: string;
11
+ }
12
+ export interface AccordionCustomProps {
13
+ /**
14
+ * Props forwarded to the root element.
15
+ *
16
+ * @default undefined
17
+ */
18
+ root?: HTMLAttributes;
19
+ }
20
+ export interface AccordionEmits {
21
+ /**
22
+ * Emitted when the expanded value(s) change.
23
+ */
24
+ change: [value: AccordionValue];
25
+ /**
26
+ * Emitted when `v-model` should update.
27
+ */
28
+ "update:modelValue": [value: AccordionValue];
29
+ }
30
+ /**
31
+ * Accordion context root. Compose with `AccordionItem`.
32
+ */
33
+ export interface AccordionOwnProps {
34
+ /**
35
+ * Classes for accordion parts.
36
+ *
37
+ * @default undefined
38
+ */
39
+ classes?: AccordionClasses;
40
+ /**
41
+ * Accent color for the expanded indicator and trigger.
42
+ *
43
+ * @default "primary"
44
+ */
45
+ color?: MergeProps<AccordionColor, AccordionColorOverrides>;
46
+ /**
47
+ * Extra props for internal parts.
48
+ *
49
+ * @default undefined
50
+ */
51
+ customProps?: AccordionCustomProps;
52
+ /**
53
+ * Disable all items.
54
+ *
55
+ * @default false
56
+ */
57
+ disabled?: boolean;
58
+ /**
59
+ * Allow more than one item expanded at once.
60
+ *
61
+ * @default false
62
+ */
63
+ multiple?: boolean;
64
+ /**
65
+ * Density of triggers and content.
66
+ *
67
+ * @default "md"
68
+ */
69
+ size?: MergeProps<AccordionSize, AccordionSizeOverrides>;
70
+ /**
71
+ * Visual layout: flush (`default`), boxed (`outlined`), quiet (`plain`), or cards (`separated`).
72
+ *
73
+ * @default "default"
74
+ */
75
+ variant?: MergeProps<AccordionVariant, AccordionVariantOverrides>;
76
+ }
77
+ export interface AccordionSlots {
78
+ /**
79
+ * The children to render (`AccordionItem`, etc.).
80
+ */
81
+ default?: Slot<undefined>;
82
+ }
83
+ export type AccordionProps = MergeHtmlProps<AccordionOwnProps, HTMLAttributes> & {
84
+ /**
85
+ * Bound with `v-model` on the component (`defineModel` internally).
86
+ */
87
+ modelValue?: AccordionValue;
88
+ };
@@ -0,0 +1,63 @@
1
+ import { ComputedRef, InjectionKey } from 'vue';
2
+ import { AccordionValue } from '@bridge-ui/core';
3
+ /**
4
+ * Merged token classes for items / triggers / panels.
5
+ */
6
+ export type AccordionTokenClasses = {
7
+ colorIndicator?: string;
8
+ colorTriggerExpanded?: string;
9
+ iconSize?: string;
10
+ itemSize?: string;
11
+ itemVariant?: string;
12
+ panelSize?: string;
13
+ rootSize?: string;
14
+ rootVariant?: string;
15
+ triggerSize?: string;
16
+ triggerVariant?: string;
17
+ };
18
+ /**
19
+ * Shared accordion state for `AccordionItem` descendants.
20
+ */
21
+ export type AccordionContextValue = {
22
+ /**
23
+ * Whether the entire accordion is disabled.
24
+ */
25
+ disabled: boolean;
26
+ /**
27
+ * Disabled item values.
28
+ */
29
+ disabledValues: string[];
30
+ /**
31
+ * Expanded value(s).
32
+ */
33
+ expanded: AccordionValue;
34
+ /**
35
+ * Focus a trigger by item value (arrow navigation).
36
+ */
37
+ focusTrigger: (value: string) => void;
38
+ /**
39
+ * Stable id prefix for trigger / panel pairing.
40
+ */
41
+ id: string;
42
+ /**
43
+ * Ordered item values (mount order).
44
+ */
45
+ itemValues: string[];
46
+ /**
47
+ * Whether more than one item may be expanded.
48
+ */
49
+ multiple: boolean;
50
+ /**
51
+ * Registers an item and returns unregister.
52
+ */
53
+ registerItem: (value: string, disabled?: boolean) => () => void;
54
+ /**
55
+ * Toggles an item by value.
56
+ */
57
+ toggleItem: (value: string) => void;
58
+ /**
59
+ * Merged token classes for items / triggers / panels.
60
+ */
61
+ tokenClasses: AccordionTokenClasses;
62
+ };
63
+ export declare const ACCORDION_INJECTION_KEY: InjectionKey<ComputedRef<AccordionContextValue>>;
@@ -0,0 +1,4 @@
1
+ //#region src/Components/Accordion/accordionInjectionKey.ts
2
+ var e = Symbol("bridge-accordion");
3
+ //#endregion
4
+ export { e as ACCORDION_INJECTION_KEY };
@@ -0,0 +1,14 @@
1
+ import { Ref, SetupContext } from 'vue';
2
+ import { AccordionValue, LibDefaultsShape, MergeLibDefaults } from '@bridge-ui/core';
3
+ import { AccordionEmits, AccordionOwnProps, AccordionProps } from '../accordion.types';
4
+ import { AccordionContextValue } from '../accordionInjectionKey';
5
+ type AccordionLibDefaults = LibDefaultsShape<AccordionOwnProps, "size" | "color" | "variant" | "disabled" | "multiple">;
6
+ type AccordionMerged = MergeLibDefaults<AccordionOwnProps, AccordionLibDefaults>;
7
+ export declare function useAccordion(props: AccordionOwnProps, libDefaults: AccordionLibDefaults, model: Ref<undefined | AccordionValue>, emit: SetupContext<AccordionEmits>["emit"]): {
8
+ merged: import('vue').ComputedRef<AccordionMerged>;
9
+ rootBind: import('vue').ComputedRef<import('@bridge-ui/core').MergePartBind<{
10
+ class: string;
11
+ }, "class", import('vue').HTMLAttributes | undefined, Omit<AccordionProps, "color" | "size" | "classes" | "customProps" | "variant" | "disabled" | "multiple">>>;
12
+ contextValue: import('vue').ComputedRef<AccordionContextValue>;
13
+ };
14
+ export {};
@@ -0,0 +1,79 @@
1
+ import { ACCORDION_INJECTION_KEY as e } from "../accordionInjectionKey.js";
2
+ import { mergePartBind as t, useBridgeUIComponent as n, useBridgeUIMergedRegistryClasses as r } from "../../../Utils/index.js";
3
+ import { computed as i, provide as a, ref as o, useAttrs as s, useId as c } from "vue";
4
+ import { cn as l, getAccordionTriggerId as u, mergeBridgeUILayeredClasses as d, normalizeAccordionValue as f, splitComponentProps as p, toggleAccordionItem as m } from "@bridge-ui/core";
5
+ import { get as h } from "es-toolkit/compat";
6
+ import { colorProps as g, sizeProps as _, variantProps as v } from "@bridge-ui/core/Tokens/Accordion";
7
+ //#region src/Components/Accordion/composables/useAccordion.ts
8
+ var y = [
9
+ "size",
10
+ "color",
11
+ "classes",
12
+ "variant",
13
+ "disabled",
14
+ "multiple",
15
+ "customProps"
16
+ ];
17
+ function b(b, x, S, C) {
18
+ let w = c(), T = s(), E = `bridge-accordion${w}`, D = o([]), O = o([]), k = i(() => p({
19
+ props: {
20
+ ...T,
21
+ ...b
22
+ },
23
+ bridgeKeys: y
24
+ })), { merged: A, entry: j } = n({
25
+ libDefaults: x,
26
+ componentName: "Accordion",
27
+ props: () => k.value.componentProps
28
+ }), M = i(() => A.value.multiple === !0), N = i(() => f(S.value, M.value));
29
+ function P(e) {
30
+ if (A.value.disabled || O.value.includes(e)) return;
31
+ let t = m(N.value, e, M.value);
32
+ S.value = t, C("update:modelValue", t), C("change", t);
33
+ }
34
+ function F(e, t = !1) {
35
+ return D.value.includes(e) || (D.value = [...D.value, e]), t ? O.value.includes(e) || (O.value = [...O.value, e]) : O.value = O.value.filter((t) => t !== e), () => {
36
+ D.value = D.value.filter((t) => t !== e), O.value = O.value.filter((t) => t !== e);
37
+ };
38
+ }
39
+ function I(e) {
40
+ document.getElementById(u(E, e))?.focus();
41
+ }
42
+ let L = r({
43
+ entry: j,
44
+ props: () => k.value.componentProps
45
+ }), R = i(() => d(_, j.value?.tokens?.size)), z = i(() => d(v, j.value?.tokens?.variant)), B = i(() => d(g, j.value?.tokens?.color)), V = i(() => h(R.value, A.value.size)), H = i(() => h(z.value, A.value.variant)), U = i(() => h(B.value, A.value.color)), W = i(() => ({
46
+ toggleItem: P,
47
+ registerItem: F,
48
+ focusTrigger: I,
49
+ id: E,
50
+ multiple: M.value,
51
+ expanded: N.value,
52
+ itemValues: D.value,
53
+ disabledValues: O.value,
54
+ disabled: A.value.disabled === !0,
55
+ tokenClasses: {
56
+ rootSize: h(V.value, "root"),
57
+ itemSize: h(V.value, "item"),
58
+ iconSize: h(V.value, "icon"),
59
+ panelSize: h(V.value, "panel"),
60
+ triggerSize: h(V.value, "trigger"),
61
+ rootVariant: h(H.value, "root"),
62
+ itemVariant: h(H.value, "item"),
63
+ triggerVariant: h(H.value, "trigger"),
64
+ colorIndicator: h(U.value, "indicator"),
65
+ colorTriggerExpanded: h(U.value, "triggerExpanded")
66
+ }
67
+ }));
68
+ return a(e, W), {
69
+ merged: A,
70
+ rootBind: i(() => t(A.value.customProps?.root, k.value.inheritedAttrs, { class: l({
71
+ [h(V.value, "root") ?? ""]: !0,
72
+ [h(H.value, "root") ?? ""]: !0,
73
+ [h(L.value, "root") ?? ""]: !0
74
+ }) })),
75
+ contextValue: W
76
+ };
77
+ }
78
+ //#endregion
79
+ export { b as useAccordion };
@@ -0,0 +1,4 @@
1
+ export type { AccordionClasses, AccordionColorOverrides, AccordionCustomProps, AccordionEmits, AccordionOwnProps, AccordionProps, AccordionSizeOverrides, AccordionSlots, AccordionVariantOverrides, } from './accordion.types';
2
+ export { default as Accordion } from './Accordion.vue';
3
+ export { ACCORDION_INJECTION_KEY, type AccordionContextValue, type AccordionTokenClasses, } from './accordionInjectionKey';
4
+ export { useAccordion } from './composables/useAccordion';
@@ -0,0 +1,4 @@
1
+ import { ACCORDION_INJECTION_KEY as e } from "./accordionInjectionKey.js";
2
+ import { useAccordion as t } from "./composables/useAccordion.js";
3
+ import n from "./Accordion.js";
4
+ export { e as ACCORDION_INJECTION_KEY, n as Accordion, t as useAccordion };
@@ -0,0 +1,5 @@
1
+ import e from "./AccordionItem.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/Components/AccordionItem/AccordionItem.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,11 @@
1
+ import { AccordionItemOwnProps, AccordionItemSlots } from './accordionItem.types';
2
+ type __VLS_Slots = AccordionItemSlots;
3
+ declare const __VLS_base: import('vue').DefineComponent<AccordionItemOwnProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<AccordionItemOwnProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
4
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
5
+ declare const _default: typeof __VLS_export;
6
+ export default _default;
7
+ type __VLS_WithSlots<T, S> = T & {
8
+ new (): {
9
+ $slots: S;
10
+ };
11
+ };
@@ -0,0 +1,25 @@
1
+ import { hasNamedSlot as e, isPropPresent as t } from "../../Utils/slotOrProp.js";
2
+ import { useAccordionItem as n } from "./composables/useAccordionItem.js";
3
+ import r from "../Icon/Icon.js";
4
+ import { Fragment as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createTextVNode as l, defineComponent as u, guardReactiveProps as d, mergeProps as f, normalizeProps as p, openBlock as m, renderSlot as h, toDisplayString as g, unref as _ } from "vue";
5
+ //#region src/Components/AccordionItem/AccordionItem.vue?vue&type=script&setup=true&lang.ts
6
+ var v = /*@__PURE__*/ u({
7
+ inheritAttrs: !1,
8
+ __name: "AccordionItem",
9
+ props: {
10
+ classes: {},
11
+ customProps: {},
12
+ disabled: { type: Boolean },
13
+ title: {},
14
+ value: {}
15
+ },
16
+ setup(u) {
17
+ let { slots: v, merged: y, rootBind: b, titleBind: x, panelBind: S, triggerBind: C, collapseBind: w, indicatorBind: T, panelInnerBind: E } = n(u);
18
+ return (n, u) => (m(), s("div", p(d(_(b))), [c("button", p(d(_(C))), [c("span", p(d(_(x))), [_(e)(_(v), "title") ? h(n.$slots, "title", {}, void 0, void 0, 0) : _(t)(_(y).title) ? (m(), s(i, { key: 1 }, [l(g(_(y).title), 1)], 64)) : o("", !0)], 16), _(e)(_(v), "indicator") ? h(n.$slots, "indicator", {}, void 0, void 0, 0) : (m(), a(_(r), f({
19
+ key: 1,
20
+ icon: "chevronDown"
21
+ }, _(T)), null, 16))], 16), c("div", p(d(_(w))), [c("div", p(d(_(E))), [c("div", p(d(_(S))), [h(n.$slots, "default")], 16)], 16)], 16)], 16));
22
+ }
23
+ });
24
+ //#endregion
25
+ export { v as default };
@@ -0,0 +1,105 @@
1
+ import { ButtonHTMLAttributes, HTMLAttributes, Slot } from 'vue';
2
+ import { MergeHtmlProps } from '@bridge-ui/core';
3
+ import { IconProps } from '../Icon';
4
+ export interface AccordionItemClasses {
5
+ /**
6
+ * Classes merged onto the expand indicator icon.
7
+ */
8
+ indicator?: string;
9
+ /**
10
+ * Classes merged onto the panel region.
11
+ */
12
+ panel?: string;
13
+ /**
14
+ * Classes merged onto the item shell.
15
+ */
16
+ root?: string;
17
+ /**
18
+ * Classes merged onto the title text wrapper.
19
+ */
20
+ title?: string;
21
+ /**
22
+ * Classes merged onto the trigger button.
23
+ */
24
+ trigger?: string;
25
+ }
26
+ export interface AccordionItemCustomProps {
27
+ /**
28
+ * Props forwarded to the expand indicator `Icon`.
29
+ *
30
+ * @default undefined
31
+ */
32
+ indicator?: Partial<Omit<IconProps, "icon">>;
33
+ /**
34
+ * Props forwarded to the panel region.
35
+ *
36
+ * @default undefined
37
+ */
38
+ panel?: HTMLAttributes;
39
+ /**
40
+ * Props forwarded to the item shell.
41
+ *
42
+ * @default undefined
43
+ */
44
+ root?: HTMLAttributes;
45
+ /**
46
+ * Props forwarded to the title wrapper.
47
+ *
48
+ * @default undefined
49
+ */
50
+ title?: HTMLAttributes;
51
+ /**
52
+ * Props forwarded to the trigger button.
53
+ *
54
+ * @default undefined
55
+ */
56
+ trigger?: ButtonHTMLAttributes;
57
+ }
58
+ /**
59
+ * One accordion section (trigger + panel). Must be used inside `Accordion`.
60
+ */
61
+ export interface AccordionItemOwnProps {
62
+ /**
63
+ * Classes for accordion item parts.
64
+ *
65
+ * @default undefined
66
+ */
67
+ classes?: AccordionItemClasses;
68
+ /**
69
+ * Extra props for internal parts.
70
+ *
71
+ * @default undefined
72
+ */
73
+ customProps?: AccordionItemCustomProps;
74
+ /**
75
+ * Disable this item.
76
+ *
77
+ * @default false
78
+ */
79
+ disabled?: boolean;
80
+ /**
81
+ * Trigger label (prefer `#title` slot when set).
82
+ *
83
+ * @default undefined
84
+ */
85
+ title?: string;
86
+ /**
87
+ * Stable id for expanded state.
88
+ */
89
+ value: string;
90
+ }
91
+ export interface AccordionItemSlots {
92
+ /**
93
+ * Panel content.
94
+ */
95
+ default?: Slot<undefined>;
96
+ /**
97
+ * Custom expand indicator (defaults to chevron icon).
98
+ */
99
+ indicator?: Slot<undefined>;
100
+ /**
101
+ * Custom title content (overrides `title` prop when set).
102
+ */
103
+ title?: Slot<undefined>;
104
+ }
105
+ export type AccordionItemProps = MergeHtmlProps<AccordionItemOwnProps, HTMLAttributes>;
@@ -0,0 +1,41 @@
1
+ import { IconSize } from '@bridge-ui/core';
2
+ import { AccordionItemOwnProps, AccordionItemProps } from '../accordionItem.types';
3
+ export declare function useAccordionItem(props: AccordionItemOwnProps): {
4
+ slots: Readonly<{
5
+ [name: string]: import('vue').Slot<any> | undefined;
6
+ }>;
7
+ merged: import('vue').ComputedRef<AccordionItemOwnProps>;
8
+ expanded: import('vue').ComputedRef<boolean>;
9
+ rootBind: import('vue').ComputedRef<import('@bridge-ui/core').MergePartBind<{
10
+ class: string;
11
+ }, "class", import('vue').HTMLAttributes | undefined, Omit<AccordionItemProps, "value" | "classes" | "customProps" | "title" | "disabled">>>;
12
+ iconSize: import('vue').ComputedRef<keyof IconSize>;
13
+ titleBind: import('vue').ComputedRef<import('@bridge-ui/core').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
14
+ panelBind: import('vue').ComputedRef<import('@bridge-ui/core').MergePartBind<{
15
+ role: string;
16
+ "aria-hidden": boolean;
17
+ id: string;
18
+ "aria-labelledby": string;
19
+ class: string;
20
+ }, "class", import('vue').HTMLAttributes | undefined, {}>>;
21
+ triggerBind: import('vue').ComputedRef<import('@bridge-ui/core').MergePartBind<{
22
+ onClick: (event: MouseEvent) => void;
23
+ type: "button";
24
+ disabled: boolean;
25
+ onKeydown: (event: KeyboardEvent) => void;
26
+ "aria-expanded": boolean;
27
+ id: string;
28
+ "aria-controls": string;
29
+ class: string;
30
+ }, "class", import('vue').ButtonHTMLAttributes | undefined, {}>>;
31
+ collapseBind: import('vue').ComputedRef<{
32
+ class: string;
33
+ }>;
34
+ indicatorBind: import('vue').ComputedRef<import('@bridge-ui/core').MergePartBind<{
35
+ size: keyof IconSize;
36
+ class: string;
37
+ }, "class", Partial<Omit<import('../../Icon').IconProps, "icon">> | undefined, {}>>;
38
+ panelInnerBind: import('vue').ComputedRef<{
39
+ class: string;
40
+ }>;
41
+ };
@@ -0,0 +1,123 @@
1
+ import { ACCORDION_INJECTION_KEY as e } from "../../Accordion/accordionInjectionKey.js";
2
+ import { mergePartBind as t, useBridgeUIComponent as n, useBridgeUIMergedRegistryClasses as r } from "../../../Utils/index.js";
3
+ import { computed as i, inject as a, onBeforeUnmount as o, onMounted as s, useAttrs as c, useSlots as l, watch as u } from "vue";
4
+ import { cn as d, getAccordionPanelId as f, getAccordionTriggerId as p, getAdjacentAccordionValue as m, isAccordionItemExpanded as h, splitComponentProps as g } from "@bridge-ui/core";
5
+ import { get as _ } from "es-toolkit/compat";
6
+ //#region src/Components/AccordionItem/composables/useAccordionItem.ts
7
+ var v = [
8
+ "title",
9
+ "value",
10
+ "classes",
11
+ "disabled",
12
+ "customProps"
13
+ ];
14
+ function y(y) {
15
+ let b = c(), x = l(), S = a(e, null);
16
+ if (!S) throw Error("AccordionItem must be used within an Accordion provider");
17
+ let C = S, w = i(() => g({
18
+ props: {
19
+ ...b,
20
+ ...y
21
+ },
22
+ bridgeKeys: v
23
+ })), { merged: T, entry: E } = n({
24
+ componentName: "AccordionItem",
25
+ props: () => w.value.componentProps
26
+ }), D = i(() => T.value.value), O = i(() => C.value.disabled || T.value.disabled === !0), k = i(() => h(C.value.expanded, D.value, C.value.multiple)), A = i(() => C.value.tokenClasses.iconSize ?? "md"), j = null;
27
+ function M() {
28
+ j?.(), j = C.value.registerItem(D.value, O.value);
29
+ }
30
+ s(M), u([D, O], M), o(() => {
31
+ j?.(), j = null;
32
+ });
33
+ let N = r({
34
+ entry: E,
35
+ props: () => w.value.componentProps
36
+ });
37
+ function P(e) {
38
+ O.value || (C.value.toggleItem(D.value), (T.value.customProps?.trigger)?.onClick?.(e));
39
+ }
40
+ function F(e) {
41
+ let t = C.value, n = new Set(t.disabledValues);
42
+ if (e.key === "ArrowDown" || e.key === "ArrowRight") {
43
+ e.preventDefault();
44
+ let r = m(t.itemValues, D.value, 1, n);
45
+ t.focusTrigger(r);
46
+ }
47
+ if (e.key === "ArrowUp" || e.key === "ArrowLeft") {
48
+ e.preventDefault();
49
+ let r = m(t.itemValues, D.value, -1, n);
50
+ t.focusTrigger(r);
51
+ }
52
+ if (e.key === "Home") {
53
+ e.preventDefault();
54
+ let r = m(t.itemValues, t.itemValues[t.itemValues.length - 1] ?? D.value, 1, n);
55
+ t.focusTrigger(r);
56
+ }
57
+ if (e.key === "End") {
58
+ e.preventDefault();
59
+ let r = m(t.itemValues, t.itemValues[0] ?? D.value, -1, n);
60
+ t.focusTrigger(r);
61
+ }
62
+ (T.value.customProps?.trigger)?.onKeydown?.(e);
63
+ }
64
+ let I = i(() => t(T.value.customProps?.root, w.value.inheritedAttrs, { class: d({
65
+ [C.value.tokenClasses.itemSize ?? ""]: !0,
66
+ [C.value.tokenClasses.itemVariant ?? ""]: !0,
67
+ [_(N.value, "root") ?? ""]: !0
68
+ }) })), L = i(() => t(T.value.customProps?.trigger, {}, {
69
+ onClick: P,
70
+ type: "button",
71
+ disabled: O.value,
72
+ onKeydown: F,
73
+ "aria-expanded": k.value,
74
+ id: p(C.value.id, D.value),
75
+ "aria-controls": f(C.value.id, D.value),
76
+ class: d({
77
+ "inline-flex w-full cursor-pointer items-center justify-between text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40 disabled:pointer-events-none disabled:opacity-50": !0,
78
+ [C.value.tokenClasses.triggerSize ?? ""]: !0,
79
+ [C.value.tokenClasses.triggerVariant ?? ""]: !0,
80
+ [C.value.tokenClasses.colorTriggerExpanded ?? ""]: k.value,
81
+ [_(N.value, "trigger") ?? ""]: !0
82
+ })
83
+ })), R = i(() => t(T.value.customProps?.title, {}, d({
84
+ "min-w-0 flex-1": !0,
85
+ [_(N.value, "title") ?? ""]: !0
86
+ }))), z = i(() => t(T.value.customProps?.indicator, {}, {
87
+ size: A.value,
88
+ class: d({
89
+ "shrink-0 transition-transform duration-200 motion-reduce:transition-none": !0,
90
+ "rotate-180": k.value,
91
+ [C.value.tokenClasses.colorIndicator ?? ""]: k.value,
92
+ [_(N.value, "indicator") ?? ""]: !0
93
+ })
94
+ })), B = i(() => ({ class: d({
95
+ "grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none": !0,
96
+ "grid-rows-[1fr]": k.value,
97
+ "grid-rows-[0fr]": !k.value
98
+ }) })), V = i(() => ({ class: "min-h-0 overflow-hidden" }));
99
+ return {
100
+ slots: x,
101
+ merged: T,
102
+ expanded: k,
103
+ rootBind: I,
104
+ iconSize: A,
105
+ titleBind: R,
106
+ panelBind: i(() => t(T.value.customProps?.panel, {}, {
107
+ role: "region",
108
+ "aria-hidden": !k.value,
109
+ id: f(C.value.id, D.value),
110
+ "aria-labelledby": p(C.value.id, D.value),
111
+ class: d({
112
+ [C.value.tokenClasses.panelSize ?? ""]: !0,
113
+ [_(N.value, "panel") ?? ""]: !0
114
+ })
115
+ })),
116
+ triggerBind: L,
117
+ collapseBind: B,
118
+ indicatorBind: z,
119
+ panelInnerBind: V
120
+ };
121
+ }
122
+ //#endregion
123
+ export { y as useAccordionItem };
@@ -0,0 +1,3 @@
1
+ export type { AccordionItemClasses, AccordionItemCustomProps, AccordionItemOwnProps, AccordionItemProps, AccordionItemSlots, } from './accordionItem.types';
2
+ export { default as AccordionItem } from './AccordionItem.vue';
3
+ export { useAccordionItem } from './composables/useAccordionItem';