@bridge-ui/vue 0.3.0 → 0.5.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 (135) hide show
  1. package/ai/skills/bridge-ui-components/SKILL.md +3 -1
  2. package/dist/Components/Accordion/accordionInjectionKey.d.ts +1 -0
  3. package/dist/Components/Accordion/composables/useAccordion.js +3 -2
  4. package/dist/Components/AccordionItem/composables/useAccordionItem.js +1 -0
  5. package/dist/Components/Autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +40 -45
  6. package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +1 -0
  7. package/dist/Components/ColorField/ColorField.vue_vue_type_script_setup_true_lang.js +39 -44
  8. package/dist/Components/ColorField/composables/useColorField.d.ts +1 -0
  9. package/dist/Components/DataTable/DataTable.vue.d.ts +4 -4
  10. package/dist/Components/DataTable/DataTable.vue_vue_type_script_setup_true_lang.js +139 -121
  11. package/dist/Components/DataTable/DataTableColumnsMenu.vue.d.ts +9 -3
  12. package/dist/Components/DataTable/DataTableColumnsMenu.vue_vue_type_script_setup_true_lang.js +71 -26
  13. package/dist/Components/DataTable/DataTableFilterMenu.vue.d.ts +5 -2
  14. package/dist/Components/DataTable/DataTableFilterMenu.vue_vue_type_script_setup_true_lang.js +94 -75
  15. package/dist/Components/DataTable/DataTableFilterOptions.vue.d.ts +4 -1
  16. package/dist/Components/DataTable/DataTableFilterOptions.vue_vue_type_script_setup_true_lang.js +12 -4
  17. package/dist/Components/DataTable/DataTableSelection.vue_vue_type_script_setup_true_lang.js +22 -21
  18. package/dist/Components/DataTable/DataTableToolbarButton.vue.d.ts +2 -1
  19. package/dist/Components/DataTable/composables/useDataTable.d.ts +12 -4
  20. package/dist/Components/DataTable/composables/useDataTable.js +255 -223
  21. package/dist/Components/DataTable/composables/useDataTableColumnsMenu.d.ts +27 -0
  22. package/dist/Components/DataTable/composables/useDataTableColumnsMenu.js +54 -0
  23. package/dist/Components/DataTable/dataTable.types.d.ts +26 -9
  24. package/dist/Components/DataTable/index.d.ts +1 -1
  25. package/dist/Components/DateField/DateField.vue_vue_type_script_setup_true_lang.js +52 -57
  26. package/dist/Components/DateField/composables/useDateField.d.ts +1 -0
  27. package/dist/Components/DateRangeField/DateRangeField.vue_vue_type_script_setup_true_lang.js +50 -55
  28. package/dist/Components/DateRangeField/composables/useDateRangeField.d.ts +1 -0
  29. package/dist/Components/DateTimeField/DateTimeField.vue_vue_type_script_setup_true_lang.js +56 -61
  30. package/dist/Components/DateTimeField/composables/useDateTimeField.d.ts +1 -0
  31. package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue_vue_type_script_setup_true_lang.js +56 -61
  32. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.d.ts +1 -0
  33. package/dist/Components/EmptyState/EmptyState.js +5 -0
  34. package/dist/Components/EmptyState/EmptyState.vue.d.ts +16 -0
  35. package/dist/Components/EmptyState/EmptyState.vue_vue_type_script_setup_true_lang.js +42 -0
  36. package/dist/Components/EmptyState/composables/useEmptyState.d.ts +24 -0
  37. package/dist/Components/EmptyState/composables/useEmptyState.js +76 -0
  38. package/dist/Components/EmptyState/emptyState.types.d.ts +140 -0
  39. package/dist/Components/EmptyState/index.d.ts +3 -0
  40. package/dist/Components/EmptyState/index.js +3 -0
  41. package/dist/Components/FormField/composables/useFormField.d.ts +1 -0
  42. package/dist/Components/FormField/composables/useFormField.js +80 -75
  43. package/dist/Components/List/composables/useList.d.ts +3 -1
  44. package/dist/Components/List/composables/useList.js +2 -2
  45. package/dist/Components/ListItem/ListItem.vue_vue_type_script_setup_true_lang.js +4 -4
  46. package/dist/Components/ListSection/ListSection.vue_vue_type_script_setup_true_lang.js +4 -4
  47. package/dist/Components/ListSection/composables/useListSection.d.ts +1 -0
  48. package/dist/Components/ListSection/composables/useListSection.js +30 -28
  49. package/dist/Components/ListSection/listSectionInjectionKey.d.ts +5 -0
  50. package/dist/Components/ListSection/listSectionInjectionKey.js +4 -0
  51. package/dist/Components/NumberField/NumberField.vue_vue_type_script_setup_true_lang.js +53 -43
  52. package/dist/Components/NumberField/composables/useNumberField.d.ts +8 -1
  53. package/dist/Components/NumberField/composables/useNumberField.js +49 -36
  54. package/dist/Components/NumberField/index.d.ts +1 -1
  55. package/dist/Components/NumberField/numberField.types.d.ts +13 -1
  56. package/dist/Components/PasswordField/PasswordField.vue_vue_type_script_setup_true_lang.js +28 -33
  57. package/dist/Components/PasswordField/composables/usePasswordField.d.ts +1 -0
  58. package/dist/Components/Select/Select.vue_vue_type_script_setup_true_lang.js +42 -47
  59. package/dist/Components/Select/composables/useSelect.d.ts +1 -0
  60. package/dist/Components/Sidebar/Sidebar.js +5 -0
  61. package/dist/Components/Sidebar/Sidebar.vue.d.ts +16 -0
  62. package/dist/Components/Sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +59 -0
  63. package/dist/Components/Sidebar/SidebarInset.js +5 -0
  64. package/dist/Components/Sidebar/SidebarInset.vue.d.ts +11 -0
  65. package/dist/Components/Sidebar/SidebarInset.vue_vue_type_script_setup_true_lang.js +18 -0
  66. package/dist/Components/Sidebar/SidebarList.js +5 -0
  67. package/dist/Components/Sidebar/SidebarList.vue.d.ts +16 -0
  68. package/dist/Components/Sidebar/SidebarList.vue_vue_type_script_setup_true_lang.js +40 -0
  69. package/dist/Components/Sidebar/SidebarListItem.js +5 -0
  70. package/dist/Components/Sidebar/SidebarListItem.vue.d.ts +13 -0
  71. package/dist/Components/Sidebar/SidebarListItem.vue_vue_type_script_setup_true_lang.js +120 -0
  72. package/dist/Components/Sidebar/SidebarProvider.js +5 -0
  73. package/dist/Components/Sidebar/SidebarProvider.vue.d.ts +24 -0
  74. package/dist/Components/Sidebar/SidebarProvider.vue_vue_type_script_setup_true_lang.js +29 -0
  75. package/dist/Components/Sidebar/SidebarTrigger.js +5 -0
  76. package/dist/Components/Sidebar/SidebarTrigger.vue.d.ts +11 -0
  77. package/dist/Components/Sidebar/SidebarTrigger.vue_vue_type_script_setup_true_lang.js +35 -0
  78. package/dist/Components/Sidebar/composables/useSidebar.d.ts +6 -0
  79. package/dist/Components/Sidebar/composables/useSidebar.js +10 -0
  80. package/dist/Components/Sidebar/composables/useSidebarInset.d.ts +7 -0
  81. package/dist/Components/Sidebar/composables/useSidebarInset.js +32 -0
  82. package/dist/Components/Sidebar/composables/useSidebarList.d.ts +8 -0
  83. package/dist/Components/Sidebar/composables/useSidebarList.js +27 -0
  84. package/dist/Components/Sidebar/composables/useSidebarListItem.d.ts +15 -0
  85. package/dist/Components/Sidebar/composables/useSidebarListItem.js +44 -0
  86. package/dist/Components/Sidebar/composables/useSidebarProvider.d.ts +18 -0
  87. package/dist/Components/Sidebar/composables/useSidebarProvider.js +88 -0
  88. package/dist/Components/Sidebar/composables/useSidebarShell.d.ts +41 -0
  89. package/dist/Components/Sidebar/composables/useSidebarShell.js +116 -0
  90. package/dist/Components/Sidebar/composables/useSidebarTrigger.d.ts +10 -0
  91. package/dist/Components/Sidebar/composables/useSidebarTrigger.js +25 -0
  92. package/dist/Components/Sidebar/index.d.ts +15 -0
  93. package/dist/Components/Sidebar/index.js +15 -0
  94. package/dist/Components/Sidebar/sidebar.types.d.ts +244 -0
  95. package/dist/Components/Sidebar/sidebarInjectionKey.d.ts +80 -0
  96. package/dist/Components/Sidebar/sidebarInjectionKey.js +4 -0
  97. package/dist/Components/Sidebar/sidebarListInjectionKey.d.ts +5 -0
  98. package/dist/Components/Sidebar/sidebarListInjectionKey.js +4 -0
  99. package/dist/Components/Slider/Slider.vue_vue_type_script_setup_true_lang.js +42 -47
  100. package/dist/Components/Slider/composables/useSlider.d.ts +1 -1
  101. package/dist/Components/Table/Table.vue_vue_type_script_setup_true_lang.js +2 -2
  102. package/dist/Components/Table/composables/useTable.d.ts +3 -0
  103. package/dist/Components/Table/composables/useTable.js +1 -0
  104. package/dist/Components/Table/table.types.d.ts +2 -1
  105. package/dist/Components/TextField/TextField.vue_vue_type_script_setup_true_lang.js +11 -16
  106. package/dist/Components/TextField/composables/useTextField.d.ts +1 -0
  107. package/dist/Components/Textarea/Textarea.vue_vue_type_script_setup_true_lang.js +15 -20
  108. package/dist/Components/Textarea/composables/useTextarea.d.ts +1 -0
  109. package/dist/Components/TimeField/TimeField.vue_vue_type_script_setup_true_lang.js +45 -50
  110. package/dist/Components/TimeField/composables/useTimeField.d.ts +1 -0
  111. package/dist/Components/TimeRangeField/TimeRangeField.vue_vue_type_script_setup_true_lang.js +45 -50
  112. package/dist/Components/TimeRangeField/composables/useTimeRangeField.d.ts +1 -0
  113. package/dist/Utils/index.d.ts +1 -0
  114. package/dist/Utils/index.js +28 -27
  115. package/dist/Utils/useOptionalModel.d.ts +6 -0
  116. package/dist/Utils/useOptionalModel.js +13 -0
  117. package/dist/augments.d.ts +11 -1
  118. package/dist/index.d.ts +5 -1
  119. package/dist/index.js +79 -64
  120. package/dist/theme.css +46 -42
  121. package/docs/README.md +2 -0
  122. package/docs/ScrollUtilities.md +1 -1
  123. package/docs/components/DataTable.md +43 -17
  124. package/docs/components/Drawer.md +1 -1
  125. package/docs/components/EmptyState.md +125 -0
  126. package/docs/components/List.md +1 -1
  127. package/docs/components/NumberField.md +17 -6
  128. package/docs/components/Sidebar.md +281 -0
  129. package/docs/examples/i18n-dictionary.ts +6 -0
  130. package/docs/examples/icon-fontawesome.ts +5 -0
  131. package/docs/examples/icon-heroicons.ts +6 -0
  132. package/docs/examples/icon-lucide.ts +6 -0
  133. package/docs/examples/icon-phosphor.ts +6 -0
  134. package/docs/examples/icon-tabler.ts +6 -0
  135. package/package.json +2 -2
@@ -0,0 +1,10 @@
1
+ import { useSlots } from 'vue';
2
+ export declare function useSidebarTrigger(slots: ReturnType<typeof useSlots>): {
3
+ expanded: import('vue').ComputedRef<boolean>;
4
+ iconClass: import('vue').ComputedRef<"rotate-180 rtl:rotate-0" | "rtl:rotate-180">;
5
+ ariaLabel: import('vue').ComputedRef<string>;
6
+ handleClick: (event: MouseEvent) => void;
7
+ hasDefaultSlot: import('vue').ComputedRef<boolean>;
8
+ attrs: import('vue').ComputedRef<Omit<import('vue').Attrs, "onClick" | "aria-label">>;
9
+ panelId: import('vue').ComputedRef<string>;
10
+ };
@@ -0,0 +1,25 @@
1
+ import { hasNamedSlot as e } from "../../../Utils/slotOrProp.js";
2
+ import { useSidebar as t } from "./useSidebar.js";
3
+ import { computed as n, useAttrs as r } from "vue";
4
+ import { omit as i } from "es-toolkit/compat";
5
+ //#region src/Components/Sidebar/composables/useSidebarTrigger.ts
6
+ function a(a) {
7
+ let o = t(), s = r(), c = n(() => e(a, "default"));
8
+ return {
9
+ expanded: n(() => o.value.isMobile ? o.value.openMobile : o.value.open),
10
+ iconClass: n(() => o.value.side === "right" ? "rotate-180 rtl:rotate-0" : "rtl:rotate-180"),
11
+ ariaLabel: n(() => {
12
+ let e = s["aria-label"];
13
+ return typeof e == "string" ? e : "Toggle sidebar";
14
+ }),
15
+ handleClick: (e) => {
16
+ let t = s.onClick;
17
+ typeof t == "function" && t(e), !e.defaultPrevented && o.value.toggleSidebar();
18
+ },
19
+ hasDefaultSlot: c,
20
+ attrs: n(() => i(s, ["onClick", "aria-label"])),
21
+ panelId: n(() => o.value.panelId)
22
+ };
23
+ }
24
+ //#endregion
25
+ export { a as useSidebarTrigger };
@@ -0,0 +1,15 @@
1
+ export { useSidebar } from './composables/useSidebar';
2
+ export { useSidebarInset } from './composables/useSidebarInset';
3
+ export { useSidebarList } from './composables/useSidebarList';
4
+ export { useSidebarListItem } from './composables/useSidebarListItem';
5
+ export { useSidebarProvider } from './composables/useSidebarProvider';
6
+ export { useSidebarShell } from './composables/useSidebarShell';
7
+ export { useSidebarTrigger } from './composables/useSidebarTrigger';
8
+ export type { SidebarClasses, SidebarCollapsibleOverrides, SidebarCustomProps, SidebarInsetClasses, SidebarInsetCustomProps, SidebarInsetOwnProps, SidebarInsetProps, SidebarInsetSlots, SidebarListItemOwnProps, SidebarListItemProps, SidebarListOwnProps, SidebarListProps, SidebarOwnProps, SidebarProps, SidebarProviderClasses, SidebarProviderCustomProps, SidebarProviderEmits, SidebarProviderOwnProps, SidebarProviderProps, SidebarProviderSlots, SidebarSideOverrides, SidebarSlots, SidebarTriggerOwnProps, SidebarTriggerProps, SidebarTriggerSlots, SidebarVariantOverrides, } from './sidebar.types';
9
+ export { default as Sidebar } from './Sidebar.vue';
10
+ export { SIDEBAR_INJECTION_KEY, type SidebarContextValue, type SidebarLayout, } from './sidebarInjectionKey';
11
+ export { default as SidebarInset } from './SidebarInset.vue';
12
+ export { default as SidebarList } from './SidebarList.vue';
13
+ export { default as SidebarListItem } from './SidebarListItem.vue';
14
+ export { default as SidebarProvider } from './SidebarProvider.vue';
15
+ export { default as SidebarTrigger } from './SidebarTrigger.vue';
@@ -0,0 +1,15 @@
1
+ import { SIDEBAR_INJECTION_KEY as e } from "./sidebarInjectionKey.js";
2
+ import { useSidebar as t } from "./composables/useSidebar.js";
3
+ import { useSidebarInset as n } from "./composables/useSidebarInset.js";
4
+ import { useSidebarList as r } from "./composables/useSidebarList.js";
5
+ import { useSidebarListItem as i } from "./composables/useSidebarListItem.js";
6
+ import { useSidebarProvider as a } from "./composables/useSidebarProvider.js";
7
+ import { useSidebarShell as o } from "./composables/useSidebarShell.js";
8
+ import { useSidebarTrigger as s } from "./composables/useSidebarTrigger.js";
9
+ import c from "./Sidebar.js";
10
+ import l from "./SidebarInset.js";
11
+ import u from "./SidebarList.js";
12
+ import d from "./SidebarListItem.js";
13
+ import f from "./SidebarProvider.js";
14
+ import p from "./SidebarTrigger.js";
15
+ export { e as SIDEBAR_INJECTION_KEY, c as Sidebar, l as SidebarInset, u as SidebarList, d as SidebarListItem, f as SidebarProvider, p as SidebarTrigger, t as useSidebar, n as useSidebarInset, r as useSidebarList, i as useSidebarListItem, a as useSidebarProvider, o as useSidebarShell, s as useSidebarTrigger };
@@ -0,0 +1,244 @@
1
+ import { ButtonHTMLAttributes, HTMLAttributes, Slot } from 'vue';
2
+ import { PositionPlacement } from '@bridge-ui/core/Runtime';
3
+ import { SidebarCollapsible, SidebarSide, SidebarVariant } from '@bridge-ui/core/Tokens';
4
+ import { MergeHtmlProps, MergeProps } from '@bridge-ui/core/Utils';
5
+ import { ListProps } from '../List/list.types';
6
+ import { ListItemProps } from '../ListItem/listItem.types';
7
+ export interface SidebarSideOverrides {}
8
+ export interface SidebarVariantOverrides {}
9
+ export interface SidebarCollapsibleOverrides {}
10
+ export interface SidebarClasses {
11
+ /**
12
+ * The classes to apply to the scrollable content region.
13
+ */
14
+ content?: string;
15
+ /**
16
+ * The classes to apply to the footer.
17
+ */
18
+ footer?: string;
19
+ /**
20
+ * The classes to apply to the in-flow gap spacer.
21
+ */
22
+ gap?: string;
23
+ /**
24
+ * The classes to apply to the header.
25
+ */
26
+ header?: string;
27
+ /**
28
+ * The classes to apply to the inner panel surface.
29
+ */
30
+ panel?: string;
31
+ /**
32
+ * The classes to apply to the desktop rail chrome (gap + fixed panel).
33
+ */
34
+ root?: string;
35
+ }
36
+ export interface SidebarCustomProps {
37
+ /**
38
+ * Props forwarded to the scrollable content region.
39
+ */
40
+ content?: HTMLAttributes;
41
+ /**
42
+ * Props forwarded to the footer.
43
+ */
44
+ footer?: HTMLAttributes;
45
+ /**
46
+ * Props forwarded to the in-flow gap spacer.
47
+ */
48
+ gap?: HTMLAttributes;
49
+ /**
50
+ * Props forwarded to the header.
51
+ */
52
+ header?: HTMLAttributes;
53
+ /**
54
+ * Props forwarded to the inner panel surface.
55
+ */
56
+ panel?: HTMLAttributes;
57
+ /**
58
+ * Props forwarded to the desktop rail chrome.
59
+ */
60
+ root?: HTMLAttributes;
61
+ }
62
+ export interface SidebarInsetClasses {
63
+ /**
64
+ * The classes to apply to the inset root.
65
+ */
66
+ root?: string;
67
+ }
68
+ export interface SidebarInsetCustomProps {
69
+ /**
70
+ * Props forwarded to the inset root.
71
+ */
72
+ root?: HTMLAttributes;
73
+ }
74
+ export interface SidebarInsetOwnProps {
75
+ /**
76
+ * The classes to apply to the inset.
77
+ *
78
+ * @default undefined
79
+ */
80
+ classes?: SidebarInsetClasses;
81
+ /**
82
+ * Extra props for internal parts.
83
+ *
84
+ * @default undefined
85
+ */
86
+ customProps?: SidebarInsetCustomProps;
87
+ }
88
+ export interface SidebarInsetSlots {
89
+ /**
90
+ * Main content.
91
+ */
92
+ default?: Slot;
93
+ }
94
+ export interface SidebarListItemOwnProps {
95
+ /**
96
+ * Tooltip label while the icon rail is collapsed. When omitted, string
97
+ * `primary` is used. Has no effect on the mobile drawer or an expanded rail.
98
+ *
99
+ * @default undefined
100
+ */
101
+ tooltip?: string;
102
+ /**
103
+ * Placement of {@link SidebarListItemOwnProps.tooltip}. Defaults to the
104
+ * side opposite the rail.
105
+ *
106
+ * @default undefined
107
+ */
108
+ tooltipPlacement?: PositionPlacement;
109
+ }
110
+ export interface SidebarListOwnProps {
111
+ /**
112
+ * Collapse items to leading icons. Defaults to the collapsed icon rail.
113
+ * Nested `SidebarList` is hidden. `ListSection` labels are hidden.
114
+ *
115
+ * @default undefined
116
+ */
117
+ iconOnly?: boolean;
118
+ }
119
+ /**
120
+ * Persistent app-shell sidebar panel. Mount under `SidebarProvider` with
121
+ * `SidebarInset`. Put `SidebarList` / `Accordion` in the default slot.
122
+ */
123
+ export interface SidebarOwnProps {
124
+ /**
125
+ * Accessible name for the desktop `aside` and the mobile drawer.
126
+ *
127
+ * @default "Sidebar"
128
+ */
129
+ ariaLabel?: string;
130
+ /**
131
+ * The classes to apply to the sidebar.
132
+ *
133
+ * @default undefined
134
+ */
135
+ classes?: SidebarClasses;
136
+ /**
137
+ * How the desktop rail hides.
138
+ *
139
+ * @default "offcanvas"
140
+ */
141
+ collapsible?: MergeProps<SidebarCollapsible, SidebarCollapsibleOverrides>;
142
+ /**
143
+ * Extra props for internal parts (`header`, `content`, `footer`, etc.).
144
+ * Root HTML attributes stay on the component top level.
145
+ *
146
+ * @default undefined
147
+ */
148
+ customProps?: SidebarCustomProps;
149
+ /**
150
+ * Which edge the rail docks to.
151
+ *
152
+ * @default "left"
153
+ */
154
+ side?: MergeProps<SidebarSide, SidebarSideOverrides>;
155
+ /**
156
+ * Visual layout of the rail and inset.
157
+ *
158
+ * @default "sidebar"
159
+ */
160
+ variant?: MergeProps<SidebarVariant, SidebarVariantOverrides>;
161
+ }
162
+ export interface SidebarProviderClasses {
163
+ /**
164
+ * The classes to apply to the layout wrapper.
165
+ */
166
+ root?: string;
167
+ }
168
+ export interface SidebarProviderCustomProps {
169
+ /**
170
+ * Props forwarded to the layout wrapper.
171
+ */
172
+ root?: HTMLAttributes;
173
+ }
174
+ export interface SidebarProviderEmits {
175
+ /**
176
+ * Emitted when the desktop `open` state should change.
177
+ */
178
+ openChange: [open: boolean];
179
+ /**
180
+ * Emitted when `v-model` should update.
181
+ */
182
+ "update:modelValue": [open: boolean];
183
+ }
184
+ export interface SidebarProviderOwnProps {
185
+ /**
186
+ * The classes to apply to the provider wrapper.
187
+ *
188
+ * @default undefined
189
+ */
190
+ classes?: SidebarProviderClasses;
191
+ /**
192
+ * Extra props for the layout wrapper.
193
+ *
194
+ * @default undefined
195
+ */
196
+ customProps?: SidebarProviderCustomProps;
197
+ /**
198
+ * Initial desktop expanded state when `v-model` is omitted.
199
+ *
200
+ * @default true
201
+ */
202
+ defaultOpen?: boolean;
203
+ }
204
+ export interface SidebarProviderSlots {
205
+ /**
206
+ * App shell (`Sidebar`, `SidebarInset`, …).
207
+ */
208
+ default?: Slot;
209
+ }
210
+ export interface SidebarSlots {
211
+ /**
212
+ * Scrollable rail (`List`, `Accordion`, …).
213
+ */
214
+ default?: Slot;
215
+ /**
216
+ * Sticky footer (user menu, settings).
217
+ */
218
+ footer?: Slot;
219
+ /**
220
+ * Sticky header (branding, workspace switcher).
221
+ */
222
+ header?: Slot;
223
+ }
224
+ export interface SidebarTriggerOwnProps {}
225
+ export interface SidebarTriggerSlots {
226
+ /**
227
+ * Replaces the default toggle icon.
228
+ */
229
+ default?: Slot;
230
+ }
231
+ export type SidebarInsetProps = MergeHtmlProps<SidebarInsetOwnProps, HTMLAttributes>;
232
+ export type SidebarProps = MergeHtmlProps<SidebarOwnProps, HTMLAttributes>;
233
+ export type SidebarProviderProps = MergeHtmlProps<SidebarProviderOwnProps, HTMLAttributes>;
234
+ export type SidebarTriggerProps = MergeHtmlProps<SidebarTriggerOwnProps, ButtonHTMLAttributes>;
235
+ /**
236
+ * `List` bound to the nearest `Sidebar`. Sets `iconOnly` when the icon rail
237
+ * is collapsed on desktop.
238
+ */
239
+ export type SidebarListProps = ListProps & SidebarListOwnProps;
240
+ /**
241
+ * `ListItem` bound to the nearest `Sidebar`. Shows `primary` in a tooltip
242
+ * when the icon rail is collapsed.
243
+ */
244
+ export type SidebarListItemProps = ListItemProps & SidebarListItemOwnProps;
@@ -0,0 +1,80 @@
1
+ import { ComputedRef, InjectionKey } from 'vue';
2
+ import { SidebarState } from '@bridge-ui/core/Domain';
3
+ import { SidebarCollapsible, SidebarSide, SidebarVariant } from '@bridge-ui/core/Tokens';
4
+ /**
5
+ * Layout fields registered by `Sidebar` for inset / trigger consumers.
6
+ */
7
+ export type SidebarLayout = {
8
+ /**
9
+ * Desktop collapse mode.
10
+ */
11
+ collapsible: keyof SidebarCollapsible;
12
+ /**
13
+ * Id of the visible panel (`aria-controls`).
14
+ */
15
+ panelId: string;
16
+ /**
17
+ * Dock edge.
18
+ */
19
+ side: keyof SidebarSide;
20
+ /**
21
+ * Visual variant.
22
+ */
23
+ variant: keyof SidebarVariant;
24
+ };
25
+ /**
26
+ * Shared sidebar state for `Sidebar`, `SidebarInset`, and `SidebarTrigger`.
27
+ */
28
+ export type SidebarContextValue = {
29
+ /**
30
+ * Desktop collapse mode from the nearest `Sidebar`.
31
+ */
32
+ collapsible: keyof SidebarCollapsible;
33
+ /**
34
+ * Whether the viewport is below the mobile breakpoint.
35
+ */
36
+ isMobile: boolean;
37
+ /**
38
+ * Desktop expanded state.
39
+ */
40
+ open: boolean;
41
+ /**
42
+ * Mobile drawer visibility.
43
+ */
44
+ openMobile: boolean;
45
+ /**
46
+ * Id of the visible panel for `aria-controls`.
47
+ */
48
+ panelId: string;
49
+ /**
50
+ * Sets layout fields from the `Sidebar` panel.
51
+ *
52
+ * @internal
53
+ */
54
+ setLayout: (layout: Partial<SidebarLayout>) => void;
55
+ /**
56
+ * Sets the desktop expanded state.
57
+ */
58
+ setOpen: (open: boolean) => void;
59
+ /**
60
+ * Sets the mobile drawer visibility.
61
+ */
62
+ setOpenMobile: (open: boolean) => void;
63
+ /**
64
+ * Dock edge from the nearest `Sidebar`.
65
+ */
66
+ side: keyof SidebarSide;
67
+ /**
68
+ * Desktop visual state (`expanded` / `collapsed`).
69
+ */
70
+ state: SidebarState;
71
+ /**
72
+ * Toggles desktop `open` or mobile `openMobile` based on viewport.
73
+ */
74
+ toggleSidebar: () => void;
75
+ /**
76
+ * Visual variant from the nearest `Sidebar`.
77
+ */
78
+ variant: keyof SidebarVariant;
79
+ };
80
+ export declare const SIDEBAR_INJECTION_KEY: InjectionKey<ComputedRef<SidebarContextValue>>;
@@ -0,0 +1,4 @@
1
+ //#region src/Components/Sidebar/sidebarInjectionKey.ts
2
+ var e = Symbol("bridge-sidebar");
3
+ //#endregion
4
+ export { e as SIDEBAR_INJECTION_KEY };
@@ -0,0 +1,5 @@
1
+ import { ComputedRef, InjectionKey } from 'vue';
2
+ export type SidebarListContextValue = {
3
+ iconOnly: boolean;
4
+ };
5
+ export declare const SIDEBAR_LIST_INJECTION_KEY: InjectionKey<ComputedRef<SidebarListContextValue>>;
@@ -0,0 +1,4 @@
1
+ //#region src/Components/Sidebar/sidebarListInjectionKey.ts
2
+ var e = Symbol("bridge-sidebar-list");
3
+ //#endregion
4
+ export { e as SIDEBAR_LIST_INJECTION_KEY };
@@ -1,13 +1,13 @@
1
1
  import { presentSlotNames as e } from "../../Utils/slotOrProp.js";
2
- import { BASE_FIELD_CHROME_SLOT_NAMES as t } from "../BaseField/baseField.types.js";
3
- import n from "../BaseField/BaseField.js";
4
- import { useSlider as r } from "./composables/useSlider.js";
2
+ import { useOptionalModel as t } from "../../Utils/useOptionalModel.js";
3
+ import { BASE_FIELD_CHROME_SLOT_NAMES as n } from "../BaseField/baseField.types.js";
4
+ import r from "../BaseField/BaseField.js";
5
5
  import i from "../Tooltip/Tooltip.js";
6
- import { Fragment as a, computed as o, createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createSlots as d, defineComponent as f, guardReactiveProps as p, mergeModels as m, mergeProps as h, normalizeProps as g, openBlock as _, ref as v, renderList as y, renderSlot as b, toDisplayString as x, unref as S, useModel as C, withCtx as w } from "vue";
7
- import { isUndefined as T } from "es-toolkit/compat";
8
- import { resolveSliderBounds as E, resolveSliderDefaultValue as D } from "@bridge-ui/core/Domain";
6
+ import { useSlider as a } from "./composables/useSlider.js";
7
+ import { Fragment as o, createBlock as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createSlots as d, defineComponent as f, guardReactiveProps as p, mergeModels as m, mergeProps as h, normalizeProps as g, openBlock as _, ref as v, renderList as y, renderSlot as b, toDisplayString as x, unref as S, useModel as C, withCtx as w } from "vue";
8
+ import { resolveSliderBounds as T, resolveSliderDefaultValue as E } from "@bridge-ui/core/Domain";
9
9
  //#region src/Components/Slider/Slider.vue?vue&type=script&setup=true&lang.ts
10
- var O = /*@__PURE__*/ f({
10
+ var D = /*@__PURE__*/ f({
11
11
  inheritAttrs: !1,
12
12
  __name: "Slider",
13
13
  props: /*@__PURE__*/ m({
@@ -43,7 +43,7 @@ var O = /*@__PURE__*/ f({
43
43
  }),
44
44
  emits: /*@__PURE__*/ m(["change", "update:modelValue"], ["update:modelValue"]),
45
45
  setup(f, { emit: m }) {
46
- let O = m, k = f, A = C(f, "modelValue"), j = {
46
+ let D = m, O = f, k = C(f, "modelValue"), A = {
47
47
  min: 0,
48
48
  step: 1,
49
49
  max: 100,
@@ -52,67 +52,62 @@ var O = /*@__PURE__*/ f({
52
52
  color: "primary",
53
53
  showStops: !1,
54
54
  showTooltip: !0
55
- }, M = E({
56
- min: k.min ?? j.min,
57
- max: k.max ?? j.max,
58
- step: k.step ?? j.step
59
- }), N = v(D({
60
- min: M.min,
61
- max: M.max,
62
- step: M.step,
63
- range: !!k.range,
64
- defaultValue: k.defaultValue
65
- })), P = o({
66
- set: (e) => {
67
- A.value = e, N.value = e;
68
- },
69
- get: () => T(A.value) ? N.value : A.value
70
- }), F = v([null, null]), { barBind: I, trackRef: L, baseField: R, trackBind: z, controlBind: B, getStopBind: V, thumbIndexes: H, tooltipProps: U, getThumbBind: W, resolvedStops: G, isTooltipOpen: K, hasStopLabels: q, readThumbValue: J, stopLabelsBind: Y, getStopLabelBind: X, getThumbKnobBind: Z, showTooltip: Q } = r(() => k, j, P, { onChange: (e) => {
71
- O("change", e);
55
+ }, j = T({
56
+ min: O.min ?? A.min,
57
+ max: O.max ?? A.max,
58
+ step: O.step ?? A.step
59
+ }), M = v(E({
60
+ min: j.min,
61
+ max: j.max,
62
+ step: j.step,
63
+ range: !!O.range,
64
+ defaultValue: O.defaultValue
65
+ })), N = t(k, M), P = v([null, null]), { barBind: F, trackRef: I, baseField: L, trackBind: R, controlBind: z, getStopBind: B, thumbIndexes: V, tooltipProps: H, getThumbBind: U, resolvedStops: W, isTooltipOpen: G, hasStopLabels: K, readThumbValue: q, stopLabelsBind: J, getStopLabelBind: Y, getThumbKnobBind: X, showTooltip: Z } = a(() => O, A, N, { onChange: (e) => {
66
+ D("change", e);
72
67
  } });
73
- function $(e) {
74
- L.value = e instanceof HTMLDivElement ? e : e?.$el ?? null;
68
+ function Q(e) {
69
+ I.value = e instanceof HTMLDivElement ? e : e?.$el ?? null;
75
70
  }
76
- function ee(e, t) {
71
+ function $(e, t) {
77
72
  let n = t instanceof HTMLButtonElement ? t : t?.$el ?? null;
78
- F.value[e] = n;
73
+ P.value[e] = n;
79
74
  }
80
- return (r, o) => (_(), s(n, { field: S(R) }, d({
81
- default: w(() => [u("div", g(p(S(B))), [
82
- u("div", h({ ref: $ }, S(z)), [
83
- u("div", g(p(S(I))), null, 16),
84
- (_(!0), l(a, null, y(S(G), (e) => (_(), l("div", h({ key: `stop-${e.value}` }, { ref_for: !0 }, S(V)(e)), null, 16))), 128)),
85
- (_(!0), l(a, null, y(S(H), (e) => (_(), l("button", h({ key: e }, { ref_for: !0 }, S(W)(e), {
75
+ return (t, a) => (_(), s(r, { field: S(L) }, d({
76
+ default: w(() => [u("div", g(p(S(z))), [
77
+ u("div", h({ ref: Q }, S(R)), [
78
+ u("div", g(p(S(F))), null, 16),
79
+ (_(!0), l(o, null, y(S(W), (e) => (_(), l("div", h({ key: `stop-${e.value}` }, { ref_for: !0 }, S(B)(e)), null, 16))), 128)),
80
+ (_(!0), l(o, null, y(S(V), (e) => (_(), l("button", h({ key: e }, { ref_for: !0 }, S(U)(e), {
86
81
  ref_for: !0,
87
- ref: (t) => ee(e, t)
88
- }), [b(r.$slots, "thumb", {}, () => [u("span", h({ ref_for: !0 }, S(Z)(e)), null, 16)])], 16))), 128))
82
+ ref: (t) => $(e, t)
83
+ }), [b(t.$slots, "thumb", {}, () => [u("span", h({ ref_for: !0 }, S(X)(e)), null, 16)])], 16))), 128))
89
84
  ], 16),
90
- S(Q) ? (_(!0), l(a, { key: 0 }, y(S(H), (e) => (_(), s(S(i), h({
85
+ S(Z) ? (_(!0), l(o, { key: 0 }, y(S(V), (e) => (_(), s(S(i), h({
91
86
  arrow: "",
92
87
  size: "sm",
93
88
  "open-delay": 0,
94
89
  placement: "top",
95
90
  "close-delay": 0,
96
91
  key: `tooltip-${e}`,
97
- "anchor-el": F.value[e],
98
- "model-value": S(K)(e),
99
- content: String(S(J)(e))
100
- }, { ref_for: !0 }, S(U)), null, 16, [
92
+ "anchor-el": P.value[e],
93
+ "model-value": S(G)(e),
94
+ content: String(S(q)(e))
95
+ }, { ref_for: !0 }, S(H)), null, 16, [
101
96
  "anchor-el",
102
97
  "model-value",
103
98
  "content"
104
99
  ]))), 128)) : c("", !0),
105
- S(q) ? (_(), l("div", g(h({ key: 1 }, S(Y))), [(_(!0), l(a, null, y(S(G), (e) => (_(), l(a, { key: `label-${e.value}` }, [e.label ? (_(), l("div", h({
100
+ S(K) ? (_(), l("div", g(h({ key: 1 }, S(J))), [(_(!0), l(o, null, y(S(W), (e) => (_(), l(o, { key: `label-${e.value}` }, [e.label ? (_(), l("div", h({
106
101
  key: 0,
107
102
  ref_for: !0
108
- }, S(X)(e)), x(e.label), 17)) : c("", !0)], 64))), 128))], 16)) : c("", !0)
103
+ }, S(Y)(e)), x(e.label), 17)) : c("", !0)], 64))), 128))], 16)) : c("", !0)
109
104
  ], 16)]),
110
105
  _: 2
111
- }, [y(S(e)(S(t), r.$slots), (e) => ({
106
+ }, [y(S(e)(S(n), t.$slots), (e) => ({
112
107
  name: e,
113
- fn: w((t) => [b(r.$slots, e, g(p(t || {})))])
108
+ fn: w((n) => [b(t.$slots, e, g(p(n || {})))])
114
109
  }))]), 1032, ["field"]));
115
110
  }
116
111
  });
117
112
  //#endregion
118
- export { O as default };
113
+ export { D as default };
@@ -479,7 +479,7 @@ export declare function useSlider(props: MaybeRefOrGetter<SliderOwnProps>, libDe
479
479
  getThumbKnobBind: (thumbIndex: 0 | 1) => import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {
480
480
  "aria-hidden": boolean;
481
481
  }>;
482
- tooltipProps: import('vue').ComputedRef<Partial<Omit<import('../../Tooltip').TooltipOwnProps, "slots" | "anchorEl" | "content" | "modelValue">> | undefined>;
482
+ tooltipProps: import('vue').ComputedRef<Partial<Omit<import('../../Tooltip').TooltipOwnProps, "slots" | "modelValue" | "anchorEl" | "content">> | undefined>;
483
483
  readThumbValue: (thumbIndex: 0 | 1) => number;
484
484
  };
485
485
  export type UseSliderReturn = ReturnType<typeof useSlider>;
@@ -28,7 +28,7 @@ var l = /*@__PURE__*/ r({
28
28
  variant: {}
29
29
  },
30
30
  setup(r) {
31
- let { rootBind: l, tableBind: u } = e(r, {
31
+ let { wrapBind: l, rootBind: u, tableBind: d } = e(r, {
32
32
  size: "md",
33
33
  full: !0,
34
34
  rounded: "lg",
@@ -37,7 +37,7 @@ var l = /*@__PURE__*/ r({
37
37
  hoverable: !1,
38
38
  stickyHeader: !1
39
39
  });
40
- return (e, r) => (o(), t("div", a(i(c(l))), [n("table", a(i(c(u))), [s(e.$slots, "default")], 16)], 16));
40
+ return (e, r) => (o(), t("div", a(i(c(l))), [n("div", a(i(c(u))), [n("table", a(i(c(d))), [s(e.$slots, "default")], 16)], 16)], 16));
41
41
  }
42
42
  });
43
43
  //#endregion
@@ -5,6 +5,9 @@ type TableLibDefaults = LibDefaultsShape<TableOwnProps, "full" | "size" | "round
5
5
  type TableMerged = MergeLibDefaults<TableOwnProps, TableLibDefaults>;
6
6
  export declare function useTable(props: TableOwnProps, libDefaults: TableLibDefaults): {
7
7
  merged: import('vue').ComputedRef<TableMerged>;
8
+ wrapBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<{
9
+ class: string;
10
+ }, "class", {}, {}>>;
8
11
  rootBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<{
9
12
  class: string;
10
13
  }, "class", import('vue').HTMLAttributes | undefined, Omit<TableProps, "size" | "classes" | "customProps" | "full" | "rounded" | "variant" | "hoverable" | "stickyHeader" | "striped">>>;
@@ -65,6 +65,7 @@ function g(g, _) {
65
65
  }));
66
66
  return a(r, A), {
67
67
  merged: b,
68
+ wrapBind: i(() => e({}, {}, { class: f({ "w-fit min-w-0 max-w-full": b.value.full === !1 }) })),
68
69
  rootBind: i(() => e(b.value.customProps?.root, y.value.inheritedAttrs, { class: f({
69
70
  "overflow-x-auto": b.value.stickyHeader !== !0,
70
71
  [s(D.value, "root") ?? ""]: !0,
@@ -321,7 +321,8 @@ export interface TableOwnProps {
321
321
  */
322
322
  customProps?: TableCustomProps;
323
323
  /**
324
- * Stretch the table to at least the wrapper width.
324
+ * Stretch the table to at least the wrapper width. When `false`, the
325
+ * wrapper hugs column content instead of spanning the parent.
325
326
  *
326
327
  * @default true
327
328
  */
@@ -1,14 +1,14 @@
1
1
  import { presentSlotNames as e } from "../../Utils/slotOrProp.js";
2
- import { FORM_FIELD_CHROME_SLOT_NAMES as t } from "../FormField/formField.types.js";
3
- import n from "../FormField/FormField.js";
4
- import { useTextField as r } from "./composables/useTextField.js";
5
- import { computed as i, createBlock as a, createElementVNode as o, createSlots as s, defineComponent as c, guardReactiveProps as l, mergeModels as u, mergeProps as d, normalizeProps as f, openBlock as p, ref as m, renderList as h, renderSlot as g, unref as _, useModel as v, vModelDynamic as y, withCtx as b, withDirectives as x } from "vue";
6
- import { isUndefined as S } from "es-toolkit/compat";
2
+ import { useOptionalModel as t } from "../../Utils/useOptionalModel.js";
3
+ import { FORM_FIELD_CHROME_SLOT_NAMES as n } from "../FormField/formField.types.js";
4
+ import r from "../FormField/FormField.js";
5
+ import { useTextField as i } from "./composables/useTextField.js";
6
+ import { createBlock as a, createElementVNode as o, createSlots as s, defineComponent as c, guardReactiveProps as l, isRef as u, mergeModels as d, mergeProps as f, normalizeProps as p, openBlock as m, ref as h, renderList as g, renderSlot as _, unref as v, useModel as y, vModelDynamic as b, withCtx as x, withDirectives as S } from "vue";
7
7
  //#region src/Components/TextField/TextField.vue?vue&type=script&setup=true&lang.ts
8
8
  var C = /*@__PURE__*/ c({
9
9
  inheritAttrs: !1,
10
10
  __name: "TextField",
11
- props: /*@__PURE__*/ u({
11
+ props: /*@__PURE__*/ d({
12
12
  defaultValue: {},
13
13
  classes: {},
14
14
  color: {},
@@ -42,18 +42,13 @@ var C = /*@__PURE__*/ c({
42
42
  }),
43
43
  emits: ["update:modelValue"],
44
44
  setup(c) {
45
- let u = v(c, "modelValue"), C = c, w = m(C.defaultValue), T = i({
46
- set: (e) => {
47
- u.value = e, w.value = e;
48
- },
49
- get: () => S(u.value) ? w.value : u.value
50
- }), { formField: E, inputBind: D } = r(C);
51
- return (r, i) => (p(), a(_(n), { field: _(E) }, s({
52
- default: b(() => [x(o("input", d({ "onUpdate:modelValue": i[0] ||= (e) => T.value = e }, _(D)), null, 16), [[y, T.value]])]),
45
+ let d = y(c, "modelValue"), C = c, w = h(C.defaultValue), T = t(d, w), { formField: E, inputBind: D } = i(C);
46
+ return (t, i) => (m(), a(v(r), { field: v(E) }, s({
47
+ default: x(() => [S(o("input", f({ "onUpdate:modelValue": i[0] ||= (e) => u(T) ? T.value = e : null }, v(D)), null, 16), [[b, v(T)]])]),
53
48
  _: 2
54
- }, [h(_(e)(_(t), r.$slots), (e) => ({
49
+ }, [g(v(e)(v(n), t.$slots), (e) => ({
55
50
  name: e,
56
- fn: b((t) => [g(r.$slots, e, f(l(t || {})))])
51
+ fn: x((n) => [_(t.$slots, e, p(l(n || {})))])
57
52
  }))]), 1032, ["field"]));
58
53
  }
59
54
  });