@bridge-ui/vue 0.5.1 → 0.7.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 (125) hide show
  1. package/ai/skills/bridge-ui-components/SKILL.md +2 -2
  2. package/dist/Adapters/I18n/useI18nAdapter.d.ts +1 -1
  3. package/dist/Adapters/I18n/useI18nAdapter.js +4 -1
  4. package/dist/Components/Accordion/Accordion.vue_vue_type_script_setup_true_lang.js +1 -1
  5. package/dist/Components/Accordion/accordion.types.d.ts +2 -2
  6. package/dist/Components/Alert/alertDefaultIcons.js +1 -0
  7. package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +2 -2
  8. package/dist/Components/Autocomplete/composables/useAutocomplete.js +150 -145
  9. package/dist/Components/BaseField/BaseField.vue_vue_type_script_setup_true_lang.js +33 -28
  10. package/dist/Components/BaseField/BaseFieldCorner.js +5 -0
  11. package/dist/Components/BaseField/BaseFieldCorner.vue.d.ts +17 -0
  12. package/dist/Components/BaseField/BaseFieldCorner.vue_vue_type_script_setup_true_lang.js +17 -0
  13. package/dist/Components/BaseField/baseField.types.d.ts +4 -2
  14. package/dist/Components/BaseField/composables/useBaseField.d.ts +1 -1
  15. package/dist/Components/BaseField/composables/useBaseField.js +11 -8
  16. package/dist/Components/Button/Button.vue_vue_type_script_setup_true_lang.js +1 -0
  17. package/dist/Components/Button/button.types.d.ts +6 -0
  18. package/dist/Components/Button/composables/useButton.d.ts +4 -1
  19. package/dist/Components/Button/composables/useButton.js +88 -69
  20. package/dist/Components/ButtonGroup/ButtonGroup.js +5 -0
  21. package/dist/Components/ButtonGroup/ButtonGroup.vue.d.ts +14 -0
  22. package/dist/Components/ButtonGroup/ButtonGroup.vue_vue_type_script_setup_true_lang.js +37 -0
  23. package/dist/Components/ButtonGroup/buttonGroup.types.d.ts +93 -0
  24. package/dist/Components/ButtonGroup/buttonGroupInjectionKey.d.ts +7 -0
  25. package/dist/Components/ButtonGroup/buttonGroupInjectionKey.js +4 -0
  26. package/dist/Components/ButtonGroup/composables/useButtonGroup.d.ts +16 -0
  27. package/dist/Components/ButtonGroup/composables/useButtonGroup.js +66 -0
  28. package/dist/Components/ButtonGroup/index.d.ts +4 -0
  29. package/dist/Components/ButtonGroup/index.js +4 -0
  30. package/dist/Components/Calendar/Calendar.vue_vue_type_script_setup_true_lang.js +1 -1
  31. package/dist/Components/CalendarRange/CalendarRange.vue_vue_type_script_setup_true_lang.js +2 -2
  32. package/dist/Components/Checkbox/composables/useCheckbox.js +1 -1
  33. package/dist/Components/ColorField/composables/useColorField.d.ts +1 -1
  34. package/dist/Components/DataTable/DataTable.vue_vue_type_script_setup_true_lang.js +180 -158
  35. package/dist/Components/DataTable/DataTableColumnsMenu.vue_vue_type_script_setup_true_lang.js +1 -1
  36. package/dist/Components/DataTable/DataTableFilterMenu.vue_vue_type_script_setup_true_lang.js +1 -1
  37. package/dist/Components/DataTable/DataTableFilterOptions.vue_vue_type_script_setup_true_lang.js +1 -1
  38. package/dist/Components/DataTable/DataTablePagination.js +5 -0
  39. package/dist/Components/DataTable/DataTablePagination.vue.d.ts +24 -0
  40. package/dist/Components/DataTable/DataTablePagination.vue_vue_type_script_setup_true_lang.js +40 -0
  41. package/dist/Components/DataTable/DataTableSortButton.vue.d.ts +5 -11
  42. package/dist/Components/DataTable/DataTableSortButton.vue_vue_type_script_setup_true_lang.js +22 -26
  43. package/dist/Components/DataTable/composables/useDataTable.d.ts +8 -6
  44. package/dist/Components/DataTable/composables/useDataTable.js +268 -263
  45. package/dist/Components/DataTable/composables/useDataTablePagination.d.ts +69 -0
  46. package/dist/Components/DataTable/composables/useDataTablePagination.js +130 -0
  47. package/dist/Components/DataTable/dataTable.types.d.ts +27 -12
  48. package/dist/Components/DataTable/dataTablePagination.types.d.ts +169 -0
  49. package/dist/Components/DataTable/index.d.ts +2 -1
  50. package/dist/Components/DateField/composables/useDateField.d.ts +1 -1
  51. package/dist/Components/DateRangeField/composables/useDateRangeField.d.ts +1 -1
  52. package/dist/Components/DateTimeField/composables/useDateTimeField.d.ts +1 -1
  53. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.d.ts +1 -1
  54. package/dist/Components/FieldOverlay/composables/useFieldOverlay.js +4 -1
  55. package/dist/Components/FormField/FilledFormField.vue.d.ts +7 -7
  56. package/dist/Components/FormField/FilledFormField.vue_vue_type_script_setup_true_lang.js +32 -27
  57. package/dist/Components/FormField/FormFieldCorner.js +5 -0
  58. package/dist/Components/FormField/FormFieldCorner.vue.d.ts +17 -0
  59. package/dist/Components/FormField/FormFieldCorner.vue_vue_type_script_setup_true_lang.js +17 -0
  60. package/dist/Components/FormField/NotchedFormField.vue.d.ts +7 -7
  61. package/dist/Components/FormField/NotchedFormField.vue_vue_type_script_setup_true_lang.js +31 -26
  62. package/dist/Components/FormField/OutlinedFormField.vue.d.ts +7 -7
  63. package/dist/Components/FormField/OutlinedFormField.vue_vue_type_script_setup_true_lang.js +32 -27
  64. package/dist/Components/FormField/StackedFormField.vue.d.ts +6 -6
  65. package/dist/Components/FormField/StackedFormField.vue_vue_type_script_setup_true_lang.js +34 -29
  66. package/dist/Components/FormField/UnderlinedFormField.vue.d.ts +7 -7
  67. package/dist/Components/FormField/UnderlinedFormField.vue_vue_type_script_setup_true_lang.js +32 -27
  68. package/dist/Components/FormField/composables/useFormField.d.ts +1 -1
  69. package/dist/Components/FormField/composables/useFormField.js +15 -9
  70. package/dist/Components/FormField/formField.types.d.ts +4 -2
  71. package/dist/Components/List/composables/useList.js +1 -1
  72. package/dist/Components/ListItem/ListItem.vue.d.ts +1 -1
  73. package/dist/Components/ListItem/composables/useListItem.d.ts +2 -2
  74. package/dist/Components/ListItem/composables/useListItem.js +101 -86
  75. package/dist/Components/ListSection/composables/useListSection.js +34 -31
  76. package/dist/Components/ListSection/listSection.types.d.ts +2 -1
  77. package/dist/Components/Listbox/Listbox.vue_vue_type_script_setup_true_lang.js +82 -82
  78. package/dist/Components/Listbox/collectComposedListboxOptions.d.ts +5 -0
  79. package/dist/Components/Listbox/collectComposedListboxOptions.js +27 -0
  80. package/dist/Components/NumberField/composables/useNumberField.d.ts +1 -1
  81. package/dist/Components/OtpField/composables/useOtpField.d.ts +1 -1
  82. package/dist/Components/Pagination/Pagination.vue_vue_type_script_setup_true_lang.js +6 -6
  83. package/dist/Components/Pagination/composables/usePagination.d.ts +4 -2
  84. package/dist/Components/Pagination/composables/usePagination.js +125 -127
  85. package/dist/Components/Pagination/pagination.types.d.ts +5 -5
  86. package/dist/Components/PasswordField/composables/usePasswordField.d.ts +1 -1
  87. package/dist/Components/Radio/composables/useRadio.js +2 -1
  88. package/dist/Components/Select/composables/useSelect.d.ts +2 -2
  89. package/dist/Components/Select/composables/useSelect.js +104 -99
  90. package/dist/Components/Sidebar/composables/useSidebarListItem.js +29 -28
  91. package/dist/Components/Sidebar/composables/useSidebarTrigger.js +14 -14
  92. package/dist/Components/Slider/composables/useSlider.d.ts +1 -1
  93. package/dist/Components/Slider/composables/useSlider.js +53 -53
  94. package/dist/Components/Snackbar/snackbarDefaultIcons.js +1 -0
  95. package/dist/Components/Tabs/Tabs.vue_vue_type_script_setup_true_lang.js +13 -12
  96. package/dist/Components/Tabs/composables/useTabs.js +16 -10
  97. package/dist/Components/Tabs/tabs.types.d.ts +3 -3
  98. package/dist/Components/TextField/composables/useTextField.d.ts +1 -1
  99. package/dist/Components/Textarea/composables/useTextarea.d.ts +1 -1
  100. package/dist/Components/TimeField/composables/useTimeField.d.ts +1 -1
  101. package/dist/Components/TimePanel/composables/useTimePanel.js +106 -106
  102. package/dist/Components/TimeRangeField/composables/useTimeRangeField.d.ts +1 -1
  103. package/dist/augments.d.ts +5 -0
  104. package/dist/index.d.ts +3 -1
  105. package/dist/index.js +150 -147
  106. package/docs/README.md +1 -0
  107. package/docs/components/Accordion.md +1 -1
  108. package/docs/components/Badge.md +2 -0
  109. package/docs/components/Button.md +5 -1
  110. package/docs/components/ButtonGroup.md +124 -0
  111. package/docs/components/DataTable.md +9 -11
  112. package/docs/components/Divider.md +1 -0
  113. package/docs/components/I18n.md +65 -24
  114. package/docs/components/Pagination.md +5 -3
  115. package/docs/components/Table.md +2 -2
  116. package/docs/components/Tabs.md +24 -6
  117. package/docs/components/ToggleGroup.md +1 -1
  118. package/docs/examples/i18n-dictionary.ts +31 -10
  119. package/docs/examples/i18n-vue-i18n.ts +7 -6
  120. package/docs/examples/icon-fontawesome.ts +4 -0
  121. package/docs/examples/icon-heroicons.ts +5 -1
  122. package/docs/examples/icon-lucide.ts +4 -0
  123. package/docs/examples/icon-phosphor.ts +4 -0
  124. package/docs/examples/icon-tabler.ts +4 -0
  125. package/package.json +2 -2
@@ -1,42 +1,47 @@
1
1
  import { hasNamedSlot as e, hasSlotOrProp as t, isPropPresent as n } from "../../Utils/slotOrProp.js";
2
2
  import r from "../Icon/Icon.js";
3
- import i from "./FormFieldLabel.js";
4
- import { Fragment as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createSlots as l, createTextVNode as u, createVNode as d, defineComponent as f, guardReactiveProps as p, mergeProps as m, normalizeProps as h, openBlock as g, renderSlot as _, toDisplayString as v, unref as y, useSlots as b, withCtx as x } from "vue";
3
+ import i from "./FormFieldCorner.js";
4
+ import a from "./FormFieldLabel.js";
5
+ import { Fragment as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createSlots as u, createTextVNode as d, createVNode as f, defineComponent as p, guardReactiveProps as m, mergeProps as h, normalizeProps as g, openBlock as _, renderSlot as v, toDisplayString as y, unref as b, useSlots as x, withCtx as S } from "vue";
5
6
  //#region src/Components/FormField/UnderlinedFormField.vue?vue&type=script&setup=true&lang.ts
6
- var S = [
7
+ var C = [
7
8
  "data-invalid",
8
9
  "aria-disabled",
9
10
  "aria-readonly"
10
- ], C = ["id"], w = ["id", "aria-hidden"], T = /*@__PURE__*/ f({
11
+ ], w = ["id"], T = ["id", "aria-hidden"], E = /*@__PURE__*/ p({
11
12
  __name: "UnderlinedFormField",
12
13
  props: { api: {} },
13
- setup(f) {
14
- let T = b();
15
- return (b, E) => (g(), s("div", m(f.api.rootBind.value, {
16
- "data-invalid": f.api.invalidated.value || void 0,
17
- "aria-disabled": f.api.isDisabled.value || void 0,
18
- "aria-readonly": f.api.isReadonly.value || void 0
14
+ setup(p) {
15
+ let E = x();
16
+ return (x, D) => (_(), c("div", h(p.api.rootBind.value, {
17
+ "data-invalid": p.api.invalidated.value || void 0,
18
+ "aria-disabled": p.api.isDisabled.value || void 0,
19
+ "aria-readonly": p.api.isReadonly.value || void 0
19
20
  }), [
20
- y(t)(y(T), "label", f.api.merged.value.label) || y(t)(y(T), "corner", f.api.merged.value.corner) ? (g(), s("div", h(m({ key: 0 }, f.api.headerBind.value)), [d(i, { api: f.api }, l({ _: 2 }, [y(e)(y(T), "label") ? {
21
+ b(t)(b(E), "label", p.api.merged.value.label) || b(t)(b(E), "corner", p.api.merged.value.corner) ? (_(), c("div", g(h({ key: 0 }, p.api.headerBind.value)), [f(a, { api: p.api }, u({ _: 2 }, [b(e)(b(E), "label") ? {
21
22
  name: "label",
22
- fn: x(() => [_(b.$slots, "label")]),
23
+ fn: S(() => [v(x.$slots, "label")]),
23
24
  key: "0"
24
- } : void 0]), 1032, ["api"]), y(t)(y(T), "corner", f.api.merged.value.corner) ? (g(), s("span", h(m({ key: 0 }, f.api.cornerBind.value)), [y(e)(y(T), "corner") ? _(b.$slots, "corner", {}, void 0, void 0, 0) : y(n)(f.api.merged.value.corner) ? (g(), s(a, { key: 1 }, [u(v(f.api.merged.value.corner), 1)], 64)) : o("", !0)], 16)) : o("", !0)], 16)) : o("", !0),
25
- c("div", h(p(f.api.containerBind.value)), [
26
- y(e)(y(T), "start") ? (g(), s("div", h(m({ key: 0 }, f.api.startSlotBind.value)), [_(b.$slots, "start")], 16)) : y(n)(f.api.merged.value.start) ? (g(), s("div", h(m({ key: 1 }, f.api.startBind.value)), v(f.api.merged.value.start), 17)) : f.api.merged.value.startIcon ? (g(), s("div", h(m({ key: 2 }, f.api.startBind.value)), [d(y(r), m({ size: f.api.merged.value.size }, f.api.startIconBind.value, { icon: f.api.merged.value.startIcon }), null, 16, ["size", "icon"])], 16)) : o("", !0),
27
- _(b.$slots, "default"),
28
- y(e)(y(T), "end") ? (g(), s("div", h(m({ key: 3 }, f.api.endSlotBind.value)), [_(b.$slots, "end")], 16)) : y(n)(f.api.merged.value.end) ? (g(), s("div", h(m({ key: 4 }, f.api.endBind.value)), v(f.api.merged.value.end), 17)) : f.api.invalidated.value && f.api.merged.value.showErrorIcon !== !1 ? (g(), s("div", h(m({ key: 5 }, f.api.endBind.value)), [d(y(r), m({
29
- icon: f.api.errorIcon.value,
30
- size: f.api.merged.value.size
31
- }, f.api.endIconBind.value), null, 16, ["icon", "size"])], 16)) : f.api.merged.value.endIcon ? (g(), s("div", h(m({ key: 6 }, f.api.endBind.value)), [d(y(r), m({ size: f.api.merged.value.size }, f.api.endIconBind.value, { icon: f.api.merged.value.endIcon }), null, 16, ["size", "icon"])], 16)) : o("", !0)
25
+ } : void 0]), 1032, ["api"]), f(i, { api: p.api }, u({ _: 2 }, [b(e)(b(E), "corner") ? {
26
+ name: "corner",
27
+ fn: S(() => [v(x.$slots, "corner")]),
28
+ key: "0"
29
+ } : void 0]), 1032, ["api"])], 16)) : s("", !0),
30
+ l("div", g(m(p.api.containerBind.value)), [
31
+ b(e)(b(E), "start") ? (_(), c("div", g(h({ key: 0 }, p.api.startSlotBind.value)), [v(x.$slots, "start")], 16)) : b(n)(p.api.merged.value.start) ? (_(), c("div", g(h({ key: 1 }, p.api.startBind.value)), y(p.api.merged.value.start), 17)) : p.api.merged.value.startIcon ? (_(), c("div", g(h({ key: 2 }, p.api.startBind.value)), [f(b(r), h({ size: p.api.merged.value.size }, p.api.startIconBind.value, { icon: p.api.merged.value.startIcon }), null, 16, ["size", "icon"])], 16)) : s("", !0),
32
+ v(x.$slots, "default"),
33
+ b(e)(b(E), "end") ? (_(), c("div", g(h({ key: 3 }, p.api.endSlotBind.value)), [v(x.$slots, "end")], 16)) : b(n)(p.api.merged.value.end) ? (_(), c("div", g(h({ key: 4 }, p.api.endBind.value)), y(p.api.merged.value.end), 17)) : p.api.invalidated.value && p.api.merged.value.showErrorIcon !== !1 ? (_(), c("div", g(h({ key: 5 }, p.api.endBind.value)), [f(b(r), h({
34
+ icon: p.api.errorIcon.value,
35
+ size: p.api.merged.value.size
36
+ }, p.api.endIconBind.value), null, 16, ["icon", "size"])], 16)) : p.api.merged.value.endIcon ? (_(), c("div", g(h({ key: 6 }, p.api.endBind.value)), [f(b(r), h({ size: p.api.merged.value.size }, p.api.endIconBind.value, { icon: p.api.merged.value.endIcon }), null, 16, ["size", "icon"])], 16)) : s("", !0)
32
37
  ], 16),
33
- !f.api.invalidated.value && y(t)(y(T), "description", f.api.merged.value.description) ? (g(), s("p", m({ key: 1 }, f.api.descriptionBind.value, { id: `${f.api.controlId.value}-description` }), [y(e)(y(T), "description") ? _(b.$slots, "description", {}, void 0, void 0, 0) : y(n)(f.api.merged.value.description) ? (g(), s(a, { key: 1 }, [u(v(f.api.merged.value.description), 1)], 64)) : o("", !0)], 16, C)) : o("", !0),
34
- f.api.merged.value.hideErrorMessage ? o("", !0) : (g(), s("p", m({ key: 2 }, f.api.errorBind.value, {
35
- id: `${f.api.controlId.value}-error`,
36
- "aria-hidden": !f.api.showErrorMessageContent.value || void 0
37
- }), [f.api.showErrorMessageContent.value ? (g(), s(a, { key: 0 }, [y(e)(y(T), "errorMessage") ? _(b.$slots, "errorMessage", {}, void 0, void 0, 0) : y(n)(f.api.merged.value.errorMessage) ? (g(), s(a, { key: 1 }, [u(v(f.api.merged.value.errorMessage), 1)], 64)) : o("", !0)], 64)) : o("", !0)], 16, w))
38
- ], 16, S));
38
+ !p.api.invalidated.value && b(t)(b(E), "description", p.api.merged.value.description) ? (_(), c("p", h({ key: 1 }, p.api.descriptionBind.value, { id: `${p.api.controlId.value}-description` }), [b(e)(b(E), "description") ? v(x.$slots, "description", {}, void 0, void 0, 0) : b(n)(p.api.merged.value.description) ? (_(), c(o, { key: 1 }, [d(y(p.api.merged.value.description), 1)], 64)) : s("", !0)], 16, w)) : s("", !0),
39
+ p.api.merged.value.hideErrorMessage ? s("", !0) : (_(), c("p", h({ key: 2 }, p.api.errorBind.value, {
40
+ id: `${p.api.controlId.value}-error`,
41
+ "aria-hidden": !p.api.showErrorMessageContent.value || void 0
42
+ }), [p.api.showErrorMessageContent.value ? (_(), c(o, { key: 0 }, [b(e)(b(E), "errorMessage") ? v(x.$slots, "errorMessage", {}, void 0, void 0, 0) : b(n)(p.api.merged.value.errorMessage) ? (_(), c(o, { key: 1 }, [d(y(p.api.merged.value.errorMessage), 1)], 64)) : s("", !0)], 64)) : s("", !0)], 16, T))
43
+ ], 16, C));
39
44
  }
40
45
  });
41
46
  //#endregion
42
- export { T as default };
47
+ export { E as default };
@@ -451,7 +451,6 @@ export declare function useFormField(props: MaybeRefOrGetter<Omit<FormFieldOwnPr
451
451
  isNotched: import('vue').ComputedRef<boolean>;
452
452
  isStacked: import('vue').ComputedRef<boolean>;
453
453
  startBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", HTMLAttributes | undefined, {}>>;
454
- cornerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", HTMLAttributes | undefined, {}>>;
455
454
  headerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", HTMLAttributes | undefined, {}>>;
456
455
  isDisabled: import('vue').ComputedRef<boolean>;
457
456
  isReadonly: import('vue').ComputedRef<boolean>;
@@ -469,6 +468,7 @@ export declare function useFormField(props: MaybeRefOrGetter<Omit<FormFieldOwnPr
469
468
  ariaDescribedBy: import('vue').ComputedRef<string | undefined>;
470
469
  descriptionBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", HTMLAttributes | undefined, {}>>;
471
470
  stackedBodyBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
471
+ fieldCornerProps: import('vue').ComputedRef<LabelProps>;
472
472
  hasInsetLabelRow: import('vue').ComputedRef<boolean>;
473
473
  insetLabelRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", HTMLAttributes | undefined, {}>>;
474
474
  stackedInputRowBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", {}, {}>>;
@@ -90,10 +90,12 @@ function x(x, ee, S = {}) {
90
90
  [A.value.root ?? ""]: !0
91
91
  }));
92
92
  }), ie = o(() => r(O.value?.errorMessage, {}, g({
93
- "mt-2": !0,
93
+ "mt-1": !0,
94
94
  "min-h-[1lh]": V.value,
95
95
  "text-error-600 dark:text-error-400": !0,
96
96
  [q.value?.text ?? ""]: !0,
97
+ [q.value?.insetStart ?? ""]: !0,
98
+ [q.value?.insetEnd ?? ""]: !0,
97
99
  [A.value.errorMessage ?? ""]: !0
98
100
  }))), ae = o(() => r({
99
101
  ...O.value?.input,
@@ -134,12 +136,14 @@ function x(x, ee, S = {}) {
134
136
  "text-dark-400": !0,
135
137
  [J.value?.start ?? ""]: !0,
136
138
  [A.value.start ?? ""]: !0
137
- }))), se = o(() => r(O.value?.corner, {}, g({
138
- "text-dark-500 dark:text-dark-400": !I.value,
139
- [q.value?.text ?? ""]: !0,
140
- [X.value?.corner ?? ""]: I.value,
141
- [A.value.corner ?? ""]: !0
142
- }))), ce = o(() => {
139
+ }))), se = o(() => n(O.value?.corner, {
140
+ for: H.value,
141
+ size: E.value.size,
142
+ classes: { root: g({
143
+ [X.value?.corner ?? ""]: I.value,
144
+ [A.value.corner ?? ""]: !0
145
+ }) }
146
+ })), ce = o(() => {
143
147
  let e = t(w, "label", E.value.label);
144
148
  return r(O.value?.header, {}, g({
145
149
  flex: !0,
@@ -181,7 +185,6 @@ function x(x, ee, S = {}) {
181
185
  isNotched: I,
182
186
  isStacked: L,
183
187
  startBind: $,
184
- cornerBind: se,
185
188
  headerBind: le,
186
189
  isDisabled: M,
187
190
  isReadonly: N,
@@ -219,11 +222,14 @@ function x(x, ee, S = {}) {
219
222
  fieldLabelProps: oe,
220
223
  ariaDescribedBy: K,
221
224
  descriptionBind: o(() => r(O.value?.description, {}, g({
222
- "mt-2 text-dark-500 dark:text-dark-400": !0,
225
+ "mt-1 text-dark-500 dark:text-dark-400": !0,
223
226
  [q.value?.text ?? ""]: !0,
227
+ [q.value?.insetStart ?? ""]: !0,
228
+ [q.value?.insetEnd ?? ""]: !0,
224
229
  [A.value.description ?? ""]: !0
225
230
  }))),
226
231
  stackedBodyBind: fe,
232
+ fieldCornerProps: se,
227
233
  hasInsetLabelRow: W,
228
234
  insetLabelRowBind: ce,
229
235
  stackedInputRowBind: pe,
@@ -61,9 +61,11 @@ export interface FormFieldCustomProps {
61
61
  */
62
62
  container?: HTMLAttributes;
63
63
  /**
64
- * Props forwarded to the corner label element.
64
+ * Props forwarded to the corner `Label` (content stays owned by `FormField`).
65
+ *
66
+ * @default undefined
65
67
  */
66
- corner?: HTMLAttributes;
68
+ corner?: Partial<LabelProps>;
67
69
  /**
68
70
  * Props forwarded to the helper text below the control.
69
71
  */
@@ -30,7 +30,7 @@ function f(f) {
30
30
  return {
31
31
  merged: h,
32
32
  rootBind: i(() => e(_.value?.root, b.value, { class: l({
33
- "m-0 list-none py-2 text-dark-900 dark:text-dark-100": !0,
33
+ "m-0 flex list-none flex-col gap-0.5 p-1 text-dark-900 dark:text-dark-100": !0,
34
34
  "pl-4": h.value.nested,
35
35
  [s(v.value, "root") ?? ""]: !0
36
36
  }) }))
@@ -4,9 +4,9 @@ declare const __VLS_base: import('vue').DefineComponent<ListItemOwnProps, {}, {}
4
4
  role: "button" | "option" | "menuitem";
5
5
  disabled: boolean;
6
6
  as: "li" | "div";
7
+ selected: boolean;
7
8
  divider: boolean;
8
9
  interactive: boolean;
9
- selected: boolean;
10
10
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
11
11
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
12
  declare const _default: typeof __VLS_export;
@@ -11,7 +11,7 @@ export declare function useListItem(props: ListItemOwnProps, libDefaults: ListIt
11
11
  rootBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<{
12
12
  class: string;
13
13
  id: string | undefined;
14
- }, "class", import('vue').HTMLAttributes | undefined, Omit<Omit<ListItemProps, "role" | "value" | "classes" | "customProps" | "primary" | "secondary" | "disabled" | "as" | "dense" | "divider" | "interactive" | "selected" | "selectedIcon">, never>>>;
14
+ }, "class", import('vue').HTMLAttributes | undefined, Omit<Omit<ListItemProps, "role" | "value" | "classes" | "customProps" | "primary" | "secondary" | "disabled" | "as" | "selected" | "dense" | "divider" | "interactive" | "selectedIcon">, never>>>;
15
15
  rowClass: import('vue').ComputedRef<string>;
16
16
  startBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
17
17
  hasPrimary: import('vue').ComputedRef<boolean>;
@@ -30,8 +30,8 @@ export declare function useListItem(props: ListItemOwnProps, libDefaults: ListIt
30
30
  class: string;
31
31
  } & object & Record<"class", string>) | null>;
32
32
  selectedIconBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<{
33
- size: "sm";
34
33
  class: string;
34
+ size?: "sm" | undefined;
35
35
  }, "class", Partial<Omit<import('../../Icon').IconProps, "icon">> | undefined, {}>>;
36
36
  resolvedSelectedIcon: import('vue').ComputedRef<IconSource | null>;
37
37
  };
@@ -4,10 +4,11 @@ import { getListboxOptionId as i } from "../../Listbox/composables/useListboxNav
4
4
  import { LIST_INJECTION_KEY as a } from "../../List/listInjectionKey.js";
5
5
  import { LISTBOX_INJECTION_KEY as o } from "../../Listbox/listboxInjectionKey.js";
6
6
  import { computed as s, getCurrentInstance as c, inject as l, onBeforeUnmount as u, toValue as d, useAttrs as f, watch as p } from "vue";
7
- import { get as m, isNull as h, omit as g } from "es-toolkit/compat";
8
- import { cn as _, splitComponentProps as v } from "@bridge-ui/core/Utils";
7
+ import { get as m, isNil as h, isNull as g, omit as _ } from "es-toolkit/compat";
8
+ import { listboxOptionFromComposedItem as v } from "@bridge-ui/core/Domain";
9
+ import { cn as y, splitComponentProps as b } from "@bridge-ui/core/Utils";
9
10
  //#region src/Components/ListItem/composables/useListItem.ts
10
- var y = [
11
+ var x = [
11
12
  "as",
12
13
  "role",
13
14
  "dense",
@@ -22,108 +23,122 @@ var y = [
22
23
  "interactive",
23
24
  "selectedIcon"
24
25
  ];
25
- function b(b, x, S) {
26
- let C = f(), w = l(a, null), T = l(o, null), E = T != null, D = s(() => v({
26
+ function S(S, C, w) {
27
+ let T = f(), E = l(a, null), D = l(o, null), O = !h(D), k = s(() => b({
27
28
  props: {
28
- ...C,
29
- ...b
29
+ ...T,
30
+ ...S
30
31
  },
31
- bridgeKeys: y
32
- })), { merged: O, entry: k } = n({
33
- libDefaults: x,
32
+ bridgeKeys: x
33
+ })), { merged: A, entry: j } = n({
34
+ libDefaults: C,
34
35
  componentName: "ListItem",
35
- props: () => D.value.componentProps
36
- }), A = s(() => T ? d(T) : null), j = s(() => O.value.value == null || !E ? null : {
37
- value: O.value.value,
38
- description: O.value.secondary,
39
- disabled: !!O.value.disabled,
40
- label: O.value.primary ?? String(O.value.value)
41
- }), M;
36
+ props: () => k.value.componentProps
37
+ }), M = s(() => D ? d(D) : null), N = s(() => O ? v({
38
+ value: A.value.value,
39
+ primary: A.value.primary,
40
+ disabled: A.value.disabled,
41
+ secondary: A.value.secondary
42
+ }) : null), P;
42
43
  p(() => {
43
- let e = j.value;
44
+ let e = N.value;
44
45
  return e ? `${String(e.value)}:${e.label}:${e.disabled}:${e.description ?? ""}` : null;
45
46
  }, () => {
46
- M?.(), M = void 0;
47
- let e = j.value;
48
- !e || !T || (M = d(T).registerOption(e));
47
+ P?.(), P = void 0;
48
+ let e = N.value;
49
+ !e || !D || (P = d(D).registerOption(e));
49
50
  }, { immediate: !0 }), u(() => {
50
- M?.();
51
+ P?.();
51
52
  });
52
- let N = s(() => j.value != null), P = s(() => !j.value || !A.value ? !1 : A.value.isSelected(j.value.value)), F = s(() => !j.value || !A.value ? -1 : A.value.getOptionIndex(j.value.value)), I = s(() => !A.value || F.value < 0 ? !1 : A.value.highlightedIndex === F.value), L = s(() => O.value.customProps), R = r({
53
- entry: k,
54
- props: () => D.value.componentProps
55
- }), z = s(() => "dense" in (c()?.vnode.props ?? {}) ? b.dense === !0 : b.dense === !0 ? !0 : w ? d(w).dense : !1), B = s(() => e(S, "primary") || e(S, "default") || !!O.value.primary), V = s(() => e(S, "secondary") || !!O.value.secondary), H = s(() => N.value ? !P.value || !A.value?.showCheckmark ? null : "check" : !O.value.selected || h(O.value.selectedIcon) ? null : O.value.selectedIcon ?? "check"), U = s(() => e(S, "end") || H.value != null), W = s(() => g(D.value.inheritedAttrs, [])), G = s(() => t(L.value?.root, W.value, {
56
- class: _({
53
+ let F = s(() => !h(N.value)), I = s(() => !N.value || !M.value ? !1 : M.value.isSelected(N.value.value)), L = s(() => !N.value || !M.value ? -1 : M.value.getOptionIndex(N.value.value)), R = s(() => !M.value || L.value < 0 ? !1 : M.value.highlightedIndex === L.value), z = s(() => A.value.customProps), B = r({
54
+ entry: j,
55
+ props: () => k.value.componentProps
56
+ }), V = s(() => "dense" in (c()?.vnode.props ?? {}) ? S.dense === !0 : S.dense === !0 ? !0 : E ? d(E).dense : !1), H = s(() => e(w, "primary") || e(w, "default") || !!A.value.primary), U = s(() => e(w, "secondary") || !!A.value.secondary), W = s(() => F.value ? !I.value || !M.value?.showCheckmark ? null : "check" : !A.value.selected || g(A.value.selectedIcon) ? null : A.value.selectedIcon ?? "check"), G = s(() => e(w, "end") || W.value != null), K = s(() => _(k.value.inheritedAttrs, [])), q = s(() => t(z.value?.root, K.value, {
57
+ class: y({
57
58
  "list-none": !0,
58
- "border-b border-black/10 last:border-b-0 dark:border-white/10": O.value.divider,
59
- [m(R.value, "root") ?? ""]: !0
59
+ "border-b border-black/10 last:border-b-0 dark:border-white/10": A.value.divider,
60
+ [m(B.value, "root") ?? ""]: !0
60
61
  }),
61
- id: N.value && A.value?.listboxId && F.value >= 0 ? i(A.value.listboxId, F.value) : void 0
62
- })), K = s(() => O.value.interactive || N.value ? t(L.value?.interactive, {}, {
63
- "aria-disabled": O.value.disabled ? !0 : void 0,
64
- role: N.value ? "option" : O.value.role,
65
- tabindex: O.value.disabled || N.value ? -1 : 0,
66
- "data-selected": O.value.selected || P.value ? !0 : void 0,
67
- "aria-selected": N.value ? P.value : void 0,
68
- onMousedown: N.value ? (e) => {
62
+ id: F.value && M.value?.listboxId && L.value >= 0 ? i(M.value.listboxId, L.value) : void 0
63
+ })), J = s(() => !!(A.value.interactive || F.value)), Y = s(() => J.value ? t(z.value?.interactive, {}, {
64
+ "aria-disabled": A.value.disabled ? !0 : void 0,
65
+ role: F.value ? "option" : A.value.role,
66
+ tabindex: A.value.disabled || F.value ? -1 : 0,
67
+ "data-selected": A.value.selected || I.value ? !0 : void 0,
68
+ "aria-selected": F.value ? I.value : void 0,
69
+ onMousedown: F.value ? (e) => {
69
70
  e.preventDefault();
70
71
  } : void 0,
71
- onClick: N.value ? () => {
72
- j.value && A.value?.onSelect(j.value);
72
+ onClick: F.value ? () => {
73
+ N.value && M.value?.onSelect(N.value);
73
74
  } : void 0,
74
- class: _({
75
- "flex w-full min-w-0 items-center gap-x-3 text-left text-dark-900 outline-hidden transition-colors dark:text-dark-100": !0,
76
- "cursor-pointer select-none": !O.value.disabled,
77
- "px-4": !0,
78
- "py-2": !z.value,
79
- "py-1.5": z.value,
80
- "hover:bg-black/5 focus-visible:bg-black/5 dark:hover:bg-white/10 dark:focus-visible:bg-white/10": !O.value.disabled && !N.value,
81
- "bg-dark-100 font-medium text-dark-900 dark:bg-white/15 dark:text-white": O.value.selected && !N.value,
82
- [A.value?.optionHoverClass ?? ""]: N.value && !O.value.disabled && !P.value,
83
- [A.value?.mergedClasses.optionHover ?? ""]: N.value && !O.value.disabled && !P.value,
84
- [A.value?.optionSelectedClass ?? ""]: N.value && P.value,
85
- [A.value?.mergedClasses.optionSelected ?? ""]: N.value && P.value,
86
- [A.value?.optionHighlightedClass ?? ""]: N.value && I.value && !P.value,
87
- [A.value?.mergedClasses.optionHighlighted ?? ""]: N.value && I.value && !P.value,
88
- "opacity-50 pointer-events-none": O.value.disabled,
89
- [m(R.value, "interactive") ?? ""]: !0,
90
- [A.value?.sizeClasses?.option ?? ""]: !0
75
+ class: y({
76
+ "flex w-full min-w-0 items-center gap-x-2 rounded-md text-left text-sm text-dark-900 outline-hidden transition-colors dark:text-dark-100": !0,
77
+ "cursor-pointer select-none": !A.value.disabled,
78
+ "px-2": !F.value,
79
+ "py-1.5": !F.value && !V.value,
80
+ "py-1": !F.value && V.value,
81
+ "hover:bg-black/5 focus-visible:bg-black/5 dark:hover:bg-white/10 dark:focus-visible:bg-white/10": !A.value.disabled && !F.value,
82
+ "bg-dark-100 font-medium text-dark-900 dark:bg-white/15 dark:text-white": A.value.selected && !F.value,
83
+ [M.value?.optionHoverClass ?? ""]: F.value && !A.value.disabled && !I.value,
84
+ [M.value?.mergedClasses.optionHover ?? ""]: F.value && !A.value.disabled && !I.value,
85
+ [M.value?.optionSelectedClass ?? ""]: F.value && I.value,
86
+ [M.value?.mergedClasses.optionSelected ?? ""]: F.value && I.value,
87
+ [M.value?.optionHighlightedClass ?? ""]: F.value && R.value && !I.value,
88
+ [M.value?.mergedClasses.optionHighlighted ?? ""]: F.value && R.value && !I.value,
89
+ "opacity-50 pointer-events-none": A.value.disabled,
90
+ [m(B.value, "interactive") ?? ""]: !0,
91
+ [M.value?.sizeClasses?.option ?? ""]: F.value,
92
+ "leading-none": !0
91
93
  })
92
- }) : null), q = s(() => _({
93
- "flex w-full min-w-0 gap-x-3": !0,
94
- "items-center text-dark-900 dark:text-dark-100": !O.value.interactive,
95
- "px-4": !O.value.interactive,
96
- "py-2": !O.value.interactive && !z.value,
97
- "py-1.5": !O.value.interactive && z.value
98
- })), J = s(() => t(L.value?.start, {}, _({
99
- "flex shrink-0 text-dark-600 dark:text-dark-300": !0,
100
- [m(R.value, "start") ?? ""]: !0
101
- }))), Y = s(() => t(L.value?.content, {}, _({
94
+ }) : null), X = s(() => y({
95
+ "flex w-full min-w-0 items-center gap-x-2 leading-none": !0,
96
+ "rounded-md text-dark-900 dark:text-dark-100": !J.value,
97
+ "px-2": !J.value,
98
+ "py-1.5": !J.value && !V.value,
99
+ "py-1": !J.value && V.value
100
+ })), Z = s(() => t(z.value?.start, {}, y({
101
+ "flex shrink-0 items-center text-dark-600 dark:text-dark-300": !0,
102
+ [m(B.value, "start") ?? ""]: !0
103
+ }))), Q = s(() => t(z.value?.content, {}, y({
102
104
  "min-w-0 flex-1": !0,
103
- [m(R.value, "content") ?? ""]: !0
104
- }))), X = s(() => t(L.value?.primary, {}, _("block truncate text-sm font-medium", A.value?.sizeClasses?.primary, m(R.value, "primary")))), Z = s(() => t(L.value?.secondary, {}, _("mt-0.5 block truncate text-xs text-dark-500 dark:text-dark-400", A.value?.sizeClasses?.secondary, m(R.value, "secondary"))));
105
+ [m(B.value, "content") ?? ""]: !0
106
+ }))), $ = s(() => t(z.value?.primary, {}, y({
107
+ "block truncate text-sm font-medium": !0,
108
+ [M.value?.sizeClasses?.primary ?? ""]: F.value,
109
+ [m(B.value, "primary") ?? ""]: !0,
110
+ "leading-none": !0
111
+ }))), ee = s(() => t(z.value?.secondary, {}, y({
112
+ "mt-0.5 block truncate text-xs text-dark-500 dark:text-dark-400": !0,
113
+ [M.value?.sizeClasses?.secondary ?? ""]: F.value,
114
+ [m(B.value, "secondary") ?? ""]: !0
115
+ })));
105
116
  return {
106
- merged: O,
107
- hasEnd: U,
108
- endBind: s(() => t(L.value?.end, {}, _({
117
+ merged: A,
118
+ hasEnd: G,
119
+ endBind: s(() => t(z.value?.end, {}, y({
109
120
  "ml-auto flex shrink-0 items-center": !0,
110
- [m(R.value, "end") ?? ""]: !0
121
+ [m(B.value, "end") ?? ""]: !0
111
122
  }))),
112
- rootBind: G,
113
- rowClass: q,
114
- startBind: J,
115
- hasPrimary: B,
116
- contentBind: Y,
117
- primaryBind: X,
118
- hasSecondary: V,
119
- secondaryBind: Z,
120
- interactiveBind: K,
121
- selectedIconBind: s(() => t(L.value?.selectedIcon, {}, {
122
- size: "sm",
123
- class: _("shrink-0", A.value?.checkClass, m(R.value, "selectedIcon"))
123
+ rootBind: q,
124
+ rowClass: X,
125
+ startBind: Z,
126
+ hasPrimary: H,
127
+ contentBind: Q,
128
+ primaryBind: $,
129
+ hasSecondary: U,
130
+ secondaryBind: ee,
131
+ interactiveBind: Y,
132
+ selectedIconBind: s(() => t(z.value?.selectedIcon, {}, {
133
+ ...F.value ? {} : { size: "sm" },
134
+ class: y({
135
+ "block shrink-0": !0,
136
+ [M.value?.checkClass ?? ""]: F.value,
137
+ [m(B.value, "selectedIcon") ?? ""]: !0
138
+ })
124
139
  })),
125
- resolvedSelectedIcon: H
140
+ resolvedSelectedIcon: W
126
141
  };
127
142
  }
128
143
  //#endregion
129
- export { b as useListItem };
144
+ export { S as useListItem };
@@ -1,11 +1,12 @@
1
1
  import { mergePartBind as e, useBridgeUIComponent as t, useBridgeUIMergedRegistryClasses as n } from "../../../Utils/index.js";
2
2
  import { LIST_INJECTION_KEY as r } from "../../List/listInjectionKey.js";
3
- import { LIST_SECTION_INJECTION_KEY as i } from "../listSectionInjectionKey.js";
4
- import { computed as a, inject as o, toValue as s, useAttrs as c } from "vue";
5
- import { get as l, omit as u } from "es-toolkit/compat";
6
- import { cn as d, splitComponentProps as f } from "@bridge-ui/core/Utils";
3
+ import { LISTBOX_INJECTION_KEY as i } from "../../Listbox/listboxInjectionKey.js";
4
+ import { LIST_SECTION_INJECTION_KEY as a } from "../listSectionInjectionKey.js";
5
+ import { computed as o, inject as s, toValue as c, useAttrs as l } from "vue";
6
+ import { get as u, isNil as d, omit as f } from "es-toolkit/compat";
7
+ import { cn as p, splitComponentProps as m } from "@bridge-ui/core/Utils";
7
8
  //#region src/Components/ListSection/composables/useListSection.ts
8
- var p = [
9
+ var h = [
9
10
  "as",
10
11
  "inset",
11
12
  "title",
@@ -13,40 +14,42 @@ var p = [
13
14
  "classes",
14
15
  "customProps"
15
16
  ];
16
- function m(m) {
17
- let h = c(), g = o(r, null), _ = o(i, null), v = a(() => f({
17
+ function g(g) {
18
+ let _ = l(), v = s(r, null), y = s(a, null), b = s(i, null), x = o(() => b ? c(b) : null), S = o(() => m({
18
19
  props: {
19
- ...h,
20
- ...m
20
+ ..._,
21
+ ...g
21
22
  },
22
- bridgeKeys: p
23
- })), { merged: y, entry: b } = t({
23
+ bridgeKeys: h
24
+ })), { merged: C, entry: w } = t({
24
25
  componentName: "ListSection",
25
- props: () => v.value.componentProps
26
- }), x = a(() => y.value.customProps), S = n({
27
- entry: b,
28
- props: () => v.value.componentProps
29
- }), C = a(() => g ? s(g).dense : !1), w = a(() => _ ? s(_).hidden : !1), T = a(() => u(v.value.inheritedAttrs, [])), E = a(() => y.value.as === "div");
26
+ props: () => S.value.componentProps
27
+ }), T = o(() => C.value.customProps), E = n({
28
+ entry: w,
29
+ props: () => S.value.componentProps
30
+ }), D = o(() => v ? c(v).dense : !1), O = o(() => y ? c(y).hidden : !1), k = o(() => f(S.value.inheritedAttrs, [])), A = o(() => C.value.as === "div");
30
31
  return {
31
- merged: y,
32
- rootBind: a(() => e(x.value?.root, T.value, d({
33
- "list-none": !0,
34
- "sticky top-0 z-10 bg-white dark:bg-dark-800": y.value.sticky && !E.value,
35
- [l(S.value, "root") ?? ""]: !0
32
+ merged: C,
33
+ rootBind: o(() => e(T.value?.root, k.value, p({
34
+ "mt-1 list-none first:mt-0": !0,
35
+ "sticky top-0 z-10 bg-white dark:bg-dark-800": C.value.sticky && !A.value,
36
+ [u(E.value, "root") ?? ""]: !0
36
37
  }))),
37
- isHidden: w,
38
- titleBind: a(() => e(x.value?.title, {}, {
38
+ isHidden: O,
39
+ titleBind: o(() => e(T.value?.title, {}, {
39
40
  role: "presentation",
40
- class: d({
41
- "bg-white px-2 text-xs font-semibold tracking-wide text-dark-500 uppercase dark:bg-dark-800 dark:text-dark-300": !0,
42
- "sticky top-0 z-10": y.value.sticky && E.value,
43
- "py-2": !C.value,
44
- "py-1.5": C.value,
45
- "pl-14": y.value.inset,
46
- [l(S.value, "title") ?? ""]: !0
41
+ class: p({
42
+ "sticky top-0 z-10 bg-white dark:bg-dark-800": C.value.sticky && A.value,
43
+ "px-2": d(b),
44
+ "py-1": d(b) && D.value,
45
+ "py-1.5": d(b) && !D.value,
46
+ [x.value?.sizeClasses?.option ?? ""]: !d(b),
47
+ "text-xs font-medium text-dark-500 dark:text-dark-400": !0,
48
+ "pl-14": C.value.inset,
49
+ [u(E.value, "title") ?? ""]: !0
47
50
  })
48
51
  }))
49
52
  };
50
53
  }
51
54
  //#endregion
52
- export { m as useListSection };
55
+ export { g as useListSection };
@@ -64,7 +64,8 @@ export interface ListSectionOwnProps {
64
64
  }
65
65
  export interface ListSectionSlots {
66
66
  /**
67
- * Section label content. Overrides `title` when provided.
67
+ * Section label content. Overrides `title` when provided. Nested items
68
+ * belong as siblings of `ListSection`, not inside this slot.
68
69
  */
69
70
  default?: Slot<undefined>;
70
71
  }