@bridge-ui/vue 0.1.0 → 0.2.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 (144) hide show
  1. package/ai/skills/bridge-ui-components/SKILL.md +6 -3
  2. package/ai/skills/bridge-ui-forms/SKILL.md +4 -2
  3. package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +0 -1
  4. package/dist/Components/Autocomplete/composables/useAutocomplete.js +0 -1
  5. package/dist/Components/Calendar/Calendar.vue_vue_type_script_setup_true_lang.js +0 -1
  6. package/dist/Components/Calendar/calendar.types.d.ts +1 -21
  7. package/dist/Components/Calendar/composables/useCalendar.d.ts +1 -2
  8. package/dist/Components/Calendar/composables/useCalendar.js +97 -97
  9. package/dist/Components/Calendar/index.d.ts +1 -1
  10. package/dist/Components/CalendarDate/CalendarDate.vue_vue_type_script_setup_true_lang.js +0 -1
  11. package/dist/Components/CalendarDate/calendarDate.types.d.ts +1 -21
  12. package/dist/Components/CalendarDate/composables/useCalendarDate.d.ts +1 -1
  13. package/dist/Components/CalendarDate/composables/useCalendarDate.js +73 -73
  14. package/dist/Components/CalendarDate/index.d.ts +1 -1
  15. package/dist/Components/CalendarMonth/CalendarMonth.vue_vue_type_script_setup_true_lang.js +0 -1
  16. package/dist/Components/CalendarMonth/calendarMonth.types.d.ts +1 -17
  17. package/dist/Components/CalendarMonth/composables/useCalendarMonth.d.ts +1 -1
  18. package/dist/Components/CalendarMonth/composables/useCalendarMonth.js +25 -25
  19. package/dist/Components/CalendarMonth/index.d.ts +1 -1
  20. package/dist/Components/CalendarRange/CalendarRange.vue_vue_type_script_setup_true_lang.js +135 -110
  21. package/dist/Components/CalendarRange/calendarRange.types.d.ts +18 -26
  22. package/dist/Components/CalendarRange/composables/useCalendarRange.d.ts +5 -4
  23. package/dist/Components/CalendarRange/composables/useCalendarRange.js +127 -129
  24. package/dist/Components/CalendarRange/index.d.ts +1 -1
  25. package/dist/Components/CalendarYear/CalendarYear.vue_vue_type_script_setup_true_lang.js +0 -1
  26. package/dist/Components/CalendarYear/calendarYear.types.d.ts +1 -17
  27. package/dist/Components/CalendarYear/composables/useCalendarYear.d.ts +1 -1
  28. package/dist/Components/CalendarYear/composables/useCalendarYear.js +27 -27
  29. package/dist/Components/CalendarYear/index.d.ts +1 -1
  30. package/dist/Components/ColorField/ColorField.js +5 -0
  31. package/dist/Components/ColorField/ColorField.vue.d.ts +38 -0
  32. package/dist/Components/ColorField/ColorField.vue_vue_type_script_setup_true_lang.js +149 -0
  33. package/dist/Components/ColorField/colorField.types.d.ts +179 -0
  34. package/dist/Components/ColorField/composables/useColorField.d.ts +748 -0
  35. package/dist/Components/ColorField/composables/useColorField.js +182 -0
  36. package/dist/Components/ColorField/index.d.ts +3 -0
  37. package/dist/Components/ColorField/index.js +3 -0
  38. package/dist/Components/ColorPicker/ColorPicker.js +5 -0
  39. package/dist/Components/ColorPicker/ColorPicker.vue.d.ts +21 -0
  40. package/dist/Components/ColorPicker/ColorPicker.vue_vue_type_script_setup_true_lang.js +91 -0
  41. package/dist/Components/ColorPicker/colorPicker.types.d.ts +200 -0
  42. package/dist/Components/ColorPicker/composables/useColorPicker.d.ts +111 -0
  43. package/dist/Components/ColorPicker/composables/useColorPicker.js +253 -0
  44. package/dist/Components/ColorPicker/index.d.ts +3 -0
  45. package/dist/Components/ColorPicker/index.js +3 -0
  46. package/dist/Components/DatePicker/DatePicker.vue_vue_type_script_setup_true_lang.js +4 -7
  47. package/dist/Components/DatePicker/composables/useDatePicker.d.ts +1 -6
  48. package/dist/Components/DatePicker/composables/useDatePicker.js +30 -9
  49. package/dist/Components/DatePicker/datePicker.types.d.ts +1 -29
  50. package/dist/Components/DatePicker/index.d.ts +1 -1
  51. package/dist/Components/DateRangePicker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +4 -7
  52. package/dist/Components/DateRangePicker/composables/useDateRangePicker.d.ts +1 -6
  53. package/dist/Components/DateRangePicker/composables/useDateRangePicker.js +3 -9
  54. package/dist/Components/DateRangePicker/dateRangePicker.types.d.ts +1 -29
  55. package/dist/Components/DateRangePicker/index.d.ts +1 -1
  56. package/dist/Components/DateTimePicker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +16 -21
  57. package/dist/Components/DateTimePicker/composables/useDateTimePicker.d.ts +1 -10
  58. package/dist/Components/DateTimePicker/composables/useDateTimePicker.js +30 -39
  59. package/dist/Components/DateTimePicker/dateTimePicker.types.d.ts +1 -36
  60. package/dist/Components/DateTimePicker/index.d.ts +1 -1
  61. package/dist/Components/DateTimeRangePicker/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js +21 -33
  62. package/dist/Components/DateTimeRangePicker/composables/useDateTimeRangePicker.d.ts +1 -10
  63. package/dist/Components/DateTimeRangePicker/composables/useDateTimeRangePicker.js +34 -43
  64. package/dist/Components/DateTimeRangePicker/dateTimeRangePicker.types.d.ts +1 -36
  65. package/dist/Components/DateTimeRangePicker/index.d.ts +1 -1
  66. package/dist/Components/Drawer/composables/useDrawer.js +1 -1
  67. package/dist/Components/FieldOverlay/FieldOverlay.vue_vue_type_script_setup_true_lang.js +35 -35
  68. package/dist/Components/FieldOverlay/composables/useFieldOverlay.d.ts +1 -0
  69. package/dist/Components/FieldOverlay/composables/useFieldOverlay.js +30 -21
  70. package/dist/Components/FieldOverlay/fieldOverlay.types.d.ts +14 -3
  71. package/dist/Components/FormField/composables/useFormField.d.ts +1 -1
  72. package/dist/Components/Listbox/Listbox.vue_vue_type_script_setup_true_lang.js +1 -2
  73. package/dist/Components/Listbox/composables/useListbox.d.ts +1 -10
  74. package/dist/Components/Listbox/composables/useListbox.js +51 -52
  75. package/dist/Components/Listbox/index.d.ts +0 -1
  76. package/dist/Components/Listbox/listbox.types.d.ts +0 -6
  77. package/dist/Components/Modal/composables/useModal.js +1 -1
  78. package/dist/Components/Select/composables/useSelect.d.ts +0 -1
  79. package/dist/Components/Select/composables/useSelect.js +0 -1
  80. package/dist/Components/Step/Step.js +5 -0
  81. package/dist/Components/Step/Step.vue.d.ts +11 -0
  82. package/dist/Components/Step/Step.vue_vue_type_script_setup_true_lang.js +32 -0
  83. package/dist/Components/Step/composables/useStep.d.ts +56 -0
  84. package/dist/Components/Step/composables/useStep.js +162 -0
  85. package/dist/Components/Step/index.d.ts +3 -0
  86. package/dist/Components/Step/index.js +3 -0
  87. package/dist/Components/Step/step.types.d.ts +160 -0
  88. package/dist/Components/Stepper/Stepper.js +5 -0
  89. package/dist/Components/Stepper/Stepper.vue.d.ts +24 -0
  90. package/dist/Components/Stepper/Stepper.vue_vue_type_script_setup_true_lang.js +33 -0
  91. package/dist/Components/Stepper/composables/useStepper.d.ts +18 -0
  92. package/dist/Components/Stepper/composables/useStepper.js +91 -0
  93. package/dist/Components/Stepper/index.d.ts +4 -0
  94. package/dist/Components/Stepper/index.js +4 -0
  95. package/dist/Components/Stepper/stepper.types.d.ts +93 -0
  96. package/dist/Components/Stepper/stepperInjectionKey.d.ts +77 -0
  97. package/dist/Components/Stepper/stepperInjectionKey.js +4 -0
  98. package/dist/Components/TimePanel/TimePanel.vue_vue_type_script_setup_true_lang.js +0 -1
  99. package/dist/Components/TimePanel/composables/useTimePanel.d.ts +5 -1
  100. package/dist/Components/TimePanel/composables/useTimePanel.js +82 -81
  101. package/dist/Components/TimePanel/index.d.ts +1 -1
  102. package/dist/Components/TimePanel/timePanel.types.d.ts +1 -17
  103. package/dist/Components/TimePicker/TimePicker.vue_vue_type_script_setup_true_lang.js +10 -13
  104. package/dist/Components/TimePicker/composables/useTimePicker.d.ts +1 -5
  105. package/dist/Components/TimePicker/composables/useTimePicker.js +12 -17
  106. package/dist/Components/TimePicker/index.d.ts +1 -1
  107. package/dist/Components/TimePicker/timePicker.types.d.ts +1 -24
  108. package/dist/Components/TimeRangePicker/TimeRangePicker.vue_vue_type_script_setup_true_lang.js +103 -94
  109. package/dist/Components/TimeRangePicker/composables/useTimeRangePicker.d.ts +4 -6
  110. package/dist/Components/TimeRangePicker/composables/useTimeRangePicker.js +61 -65
  111. package/dist/Components/TimeRangePicker/index.d.ts +1 -1
  112. package/dist/Components/TimeRangePicker/timeRangePicker.types.d.ts +2 -31
  113. package/dist/index.d.ts +20 -12
  114. package/dist/index.js +95 -87
  115. package/dist/theme.css +2 -0
  116. package/docs/README.md +7 -0
  117. package/docs/ScrollUtilities.md +89 -0
  118. package/docs/components/Autocomplete.md +3 -1
  119. package/docs/components/BridgeUIProvider.md +9 -11
  120. package/docs/components/Calendar.md +2 -1
  121. package/docs/components/CalendarDate.md +2 -1
  122. package/docs/components/CalendarMonth.md +2 -1
  123. package/docs/components/CalendarRange.md +6 -4
  124. package/docs/components/CalendarYear.md +2 -1
  125. package/docs/components/ColorField.md +93 -0
  126. package/docs/components/ColorPicker.md +78 -0
  127. package/docs/components/DatePicker.md +2 -1
  128. package/docs/components/DateRangePicker.md +5 -3
  129. package/docs/components/DateTimePicker.md +2 -1
  130. package/docs/components/DateTimeRangePicker.md +2 -1
  131. package/docs/components/Drawer.md +21 -21
  132. package/docs/components/FieldOverlay.md +20 -9
  133. package/docs/components/Modal.md +19 -19
  134. package/docs/components/Select.md +3 -1
  135. package/docs/components/Stepper.md +60 -0
  136. package/docs/components/TimePanel.md +4 -1
  137. package/docs/components/TimePicker.md +2 -1
  138. package/docs/components/TimeRangePicker.md +2 -2
  139. package/docs/examples/icon-fontawesome.ts +2 -0
  140. package/docs/examples/icon-heroicons.ts +2 -0
  141. package/docs/examples/icon-lucide.ts +2 -0
  142. package/docs/examples/icon-phosphor.ts +2 -0
  143. package/docs/examples/icon-tabler.ts +2 -0
  144. package/package.json +2 -2
@@ -0,0 +1,78 @@
1
+ # ColorPicker
2
+
3
+ Inline color picker with a saturation/brightness area, hue slider, optional alpha, and preset swatches. Optional Cancel / Apply footer.
4
+
5
+ ## Import
6
+
7
+ ```ts
8
+ import { ColorPicker } from "@bridge-ui/vue/Components/ColorPicker";
9
+ ```
10
+
11
+ ## Examples
12
+
13
+ ### Usage
14
+
15
+ ```vue
16
+ <ColorPicker />
17
+
18
+ <ColorPicker :value="color" v-on:change="color = $event" />
19
+
20
+ <ColorPicker
21
+ alpha
22
+ show-footer
23
+ format="rgba"
24
+ :value="color"
25
+ v-on:change="color = $event"
26
+ />
27
+ ```
28
+
29
+ ### Preset swatches
30
+
31
+ ```vue
32
+ <ColorPicker
33
+ :value="color"
34
+ v-on:change="color = $event"
35
+ :swatches="['#0f766e', '#2563eb', '#dc2626', '#000000']"
36
+ />
37
+ ```
38
+
39
+ ### Output format
40
+
41
+ ```vue
42
+ <ColorPicker format="hex" :value="color" v-on:change="color = $event" />
43
+
44
+ <ColorPicker format="rgb" :value="color" v-on:change="color = $event" />
45
+
46
+ <ColorPicker format="rgba" :value="color" v-on:change="color = $event" />
47
+ ```
48
+
49
+ ## Props
50
+
51
+ | Prop | Type | Default | Description |
52
+ | -------------- | ------------------------ | ------- | ------------------------------------------------------------------- |
53
+ | `alpha` | `boolean` | — | Shows the alpha slider. Unset: `true` for `hexa` / `rgba` / `hsla`. |
54
+ | `classes` | `ColorPickerClasses` | — | Classes for picker regions. |
55
+ | `customProps` | `ColorPickerCustomProps` | — | Extra props for internal parts. |
56
+ | `defaultValue` | `string \| null` | `null` | Uncontrolled initial value. |
57
+ | `disabled` | `boolean` | `false` | Disables the picker. |
58
+ | `fill` | `boolean` | `false` | Fills the container width. |
59
+ | `format` | `ColorFormat` | `"hex"` | Serialized output: `hex`, `hexa`, `rgb`, `rgba`, `hsl`, `hsla`. |
60
+ | `readOnly` | `boolean` | `false` | Prevents selection. |
61
+ | `rounded` | `ColorPickerRounded` | `"md"` | Border radius of the picker shell and swatches. |
62
+ | `showFooter` | `boolean` | `false` | Shows Cancel / Apply. Selection is draft until Apply. |
63
+ | `swatches` | `string[]` | — | Preset colors shown below the sliders. |
64
+ | `value` | `string \| null` | — | Controlled value. |
65
+
66
+ Picker tokens live on `components.ColorPicker` (`rounded`, `size`).
67
+
68
+ ## Events
69
+
70
+ | Event | Payload | Description |
71
+ | ------------- | ------------------------- | ----------------------------------------------------------------------- |
72
+ | `v-on:apply` | `()` | Emitted when Apply is pressed (`showFooter`). |
73
+ | `v-on:cancel` | `()` | Emitted when Cancel is pressed. |
74
+ | `v-on:change` | `(value: string \| null)` | Emitted when Apply is pressed (`showFooter`) or when the value commits. |
75
+
76
+ ## Related components
77
+
78
+ ColorField, FormField, FieldOverlay
@@ -73,7 +73,6 @@ Call `apply()` to commit and close the overlay, or `cancel()` to discard and clo
73
73
  | `slots` | `DatePickerSlots` | — | Named slots (`day` on the calendar, `footer` for Cancel / Apply). |
74
74
  | `startOfWeek` | `StartOfWeek` | `0` | First day of the week. |
75
75
  | `timeZone` | `string` | — | IANA time zone. |
76
- | `tokens` | `DatePickerTokens` | — | Token overrides. |
77
76
  | `value` | `DatePickerModel` | — | Controlled value. |
78
77
 
79
78
  ### v-model
@@ -83,6 +82,8 @@ Call `apply()` to commit and close the overlay, or `cancel()` to discard and clo
83
82
  | `modelValue` | `DatePickerModel` | — | Bound with `v-model`. |
84
83
  | `update:modelValue` | `(value: DatePickerModel) => void` | — | Emitted when `v-model` should update. |
85
84
 
85
+ Calendar tokens live on `components.Calendar` (`color`, `day`, `rounded`).
86
+
86
87
  ## Events
87
88
 
88
89
  | Event | Payload | Description |
@@ -1,7 +1,8 @@
1
1
  # DateRangePicker
2
2
 
3
- Inline dual-month picker for an inclusive date range (`[start, end]`). The header
4
- exposes year, start month, and end month selectors in one row.
3
+ Inline dual-month picker for an inclusive date range (`[start, end]`). Year sits
4
+ on the left and nav on the right; month selectors sit inward from the header
5
+ midpoint.
5
6
 
6
7
  ## Import
7
8
 
@@ -50,7 +51,6 @@ import { DateRangePicker } from "@bridge-ui/vue/Components/DateRangePicker";
50
51
  | `slots` | `DateRangePickerSlots` | — | Named slots (`day` on the calendars, `footer` for Cancel / Apply). |
51
52
  | `startOfWeek` | `StartOfWeek` | `0` | First day of the week. |
52
53
  | `timeZone` | `string` | — | IANA time zone. |
53
- | `tokens` | `DateRangePickerTokens` | — | Token overrides. |
54
54
  | `value` | `DateRangeValue \| null` | — | Controlled value (`[start, end]`). |
55
55
 
56
56
  ### v-model
@@ -60,6 +60,8 @@ import { DateRangePicker } from "@bridge-ui/vue/Components/DateRangePicker";
60
60
  | `modelValue` | `DateRangeValue \| null` | — | Bound with `v-model`. |
61
61
  | `update:modelValue` | `(value: DateRangeValue \| null) => void` | — | Emitted when `v-model` should update. |
62
62
 
63
+ Calendar tokens live on `components.Calendar` (`color`, `day`, `rounded`).
64
+
63
65
  ## Events
64
66
 
65
67
  | Event | Payload | Description |
@@ -54,7 +54,6 @@ import { DateTimePicker } from "@bridge-ui/vue/Components/DateTimePicker";
54
54
  | `slots` | `DateTimePickerSlots` | — | Named slots (`day` on the calendar, `footer` for Cancel / Apply). |
55
55
  | `startOfWeek` | `StartOfWeek` | `0` | First day of the week. |
56
56
  | `timeZone` | `string` | — | IANA time zone. |
57
- | `tokens` | `DateTimePickerTokens` | — | Token overrides. |
58
57
  | `value` | `Date \| null` | — | Controlled date-time value. |
59
58
 
60
59
  ### v-model
@@ -64,6 +63,8 @@ import { DateTimePicker } from "@bridge-ui/vue/Components/DateTimePicker";
64
63
  | `modelValue` | `Date \| null` | — | Bound with `v-model`. |
65
64
  | `update:modelValue` | `(value: Date \| null) => void` | — | Emitted when `v-model` should update. |
66
65
 
66
+ Calendar tokens live on `components.Calendar`. Time panel tokens live on `components.TimePanel`.
67
+
67
68
  ## Events
68
69
 
69
70
  | Event | Payload | Description |
@@ -54,7 +54,6 @@ import { DateTimeRangePicker } from "@bridge-ui/vue/Components/DateTimeRangePick
54
54
  | `slots` | `DateTimeRangePickerSlots` | — | Named slots (`day` on the calendars, `footer` for Cancel / Apply). |
55
55
  | `startOfWeek` | `StartOfWeek` | `0` | First day of the week. |
56
56
  | `timeZone` | `string` | — | IANA time zone. |
57
- | `tokens` | `DateTimeRangePickerTokens` | — | Token overrides. |
58
57
  | `value` | `DateRangeValue \| null` | — | Controlled value (`[start, end]` date-times). |
59
58
 
60
59
  ### v-model
@@ -64,6 +63,8 @@ import { DateTimeRangePicker } from "@bridge-ui/vue/Components/DateTimeRangePick
64
63
  | `modelValue` | `DateRangeValue \| null` | — | Bound with `v-model`. |
65
64
  | `update:modelValue` | `(value: DateRangeValue \| null) => void` | — | Emitted when `v-model` should update. |
66
65
 
66
+ Calendar tokens live on `components.Calendar`. Time panel tokens live on `components.TimePanel`.
67
+
67
68
  ## Events
68
69
 
69
70
  | Event | Payload | Description |
@@ -96,27 +96,27 @@ import { Drawer } from "@bridge-ui/vue/Components/Drawer";
96
96
 
97
97
  ## Props
98
98
 
99
- | Prop | Type | Default | Description |
100
- | --------------------- | ------------------- | ------- | ------------------------------------------------------------------------------------------ |
101
- | `ariaLabel` | `string` | — | Accessible name for the dialog (`aria-label`). |
102
- | `ariaLabelledBy` | `string` | — | Id of the element that labels the dialog (`aria-labelledby`). |
103
- | `autoFocus` | `boolean` | `false` | When true, focuses the first focusable element inside the drawer on open. |
104
- | `blur` | `DrawerBlur` | "none" | Backdrop blur on the overlay. |
105
- | `classes` | `DrawerClasses` | — | The classes to apply to the drawer. |
106
- | `closeOnEscape` | `boolean` | `true` | Whether the drawer closes on escape key press. |
107
- | `closeOnOverlay` | `boolean` | `true` | Whether the drawer closes on overlay click. |
108
- | `customProps` | `DrawerCustomProps` | — | Props forwarded to each drawer part. |
109
- | `disableEnforceFocus` | `boolean` | `false` | When true, focus is not trapped inside the drawer while open. |
110
- | `disableRestoreFocus` | `boolean` | `false` | When true, focus is not restored to the previously focused element on close. |
111
- | `disableScrollLock` | `boolean` | `false` | When true, body scroll is not locked while the drawer is open. |
112
- | `hideBackdrop` | `boolean` | `false` | When true, the backdrop overlay is not rendered. |
113
- | `keepMounted` | `boolean` | `false` | When true, the drawer stays mounted in the DOM after closing (hidden). |
114
- | `persistent` | `boolean` | `false` | When true, escape and overlay clicks do not close the drawer. |
115
- | `placement` | `DrawerPlacement` | "left" | Edge the panel docks to. |
116
- | `scroll` | `DrawerScroll` | "paper" | Where scroll happens: the page (`body`) or the drawer panel (`paper`). |
117
- | `size` | `DrawerSize` | "md" | Panel size along the placement axis (width for `left`/`right`, height for `top`/`bottom`). |
118
- | `teleportTo` | `string \| false` | "body" | Where to teleport the drawer. Pass `false` to render in place. |
119
- | `transition` | `DrawerTransition` | "slide" | Enter/leave animation for overlay and panel. |
99
+ | Prop | Type | Default | Description |
100
+ | --------------------- | ------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------- |
101
+ | `ariaLabel` | `string` | — | Accessible name for the dialog (`aria-label`). |
102
+ | `ariaLabelledBy` | `string` | — | Id of the element that labels the dialog (`aria-labelledby`). |
103
+ | `autoFocus` | `boolean` | `false` | When true, focuses the first focusable element inside the drawer on open. |
104
+ | `blur` | `DrawerBlur` | "none" | Backdrop blur on the overlay. |
105
+ | `classes` | `DrawerClasses` | — | The classes to apply to the drawer. |
106
+ | `closeOnEscape` | `boolean` | `true` | Whether the drawer closes on escape key press. |
107
+ | `closeOnOverlay` | `boolean` | `true` | Whether the drawer closes on overlay click. |
108
+ | `customProps` | `DrawerCustomProps` | — | Props forwarded to each drawer part. |
109
+ | `disableEnforceFocus` | `boolean` | `false` | When true, focus is not trapped inside the drawer while open. |
110
+ | `disableRestoreFocus` | `boolean` | `false` | When true, focus is not restored to the previously focused element on close. |
111
+ | `disableScrollLock` | `boolean` | `false` | When true, body scroll is not locked while the drawer is open. |
112
+ | `hideBackdrop` | `boolean` | `false` | When true, the backdrop overlay is not rendered. |
113
+ | `keepMounted` | `boolean` | `false` | When true, the drawer stays mounted in the DOM after closing (hidden). |
114
+ | `persistent` | `boolean` | `false` | When true, escape and overlay clicks do not close the drawer. |
115
+ | `placement` | `DrawerPlacement` | "left" | Edge the panel docks to. |
116
+ | `scroll` | `DrawerScroll` | "paper" | Where scroll happens: the page (`body`) or the drawer panel (`paper`). `paper` uses `bridge-scroll-fade-y` and `bridge-hide-scrollbar`. |
117
+ | `size` | `DrawerSize` | "md" | Panel size along the placement axis (width for `left`/`right`, height for `top`/`bottom`). |
118
+ | `teleportTo` | `string \| false` | "body" | Where to teleport the drawer. Pass `false` to render in place. |
119
+ | `transition` | `DrawerTransition` | "slide" | Enter/leave animation for overlay and panel. |
120
120
 
121
121
  ### v-model
122
122
 
@@ -2,9 +2,10 @@
2
2
 
3
3
  Switches between `Menu`, `Modal`, and `Drawer` shells for field pickers and listboxes.
4
4
  Dialog shells size to the picker: `modal` uses `w-fit` up to the viewport;
5
- `drawer` is full width and up to `90dvh`, and scrolls horizontally when dual
6
- calendars or time columns overflow. Nested pickers flush the bottom radius in a
7
- drawer so the shell meets the screen edge.
5
+ `drawer` is full width and up to `90dvh`. Dual calendars and time columns that
6
+ overflow the sheet width scroll on an inner scroller (`bridge-scroll-fade-x`).
7
+ Vertical fade comes from `scroll="paper"`. Nested pickers flush the bottom
8
+ radius in a drawer so the shell meets the screen edge.
8
9
 
9
10
  ## Import
10
11
 
@@ -38,7 +39,7 @@ import { FieldOverlay } from "@bridge-ui/vue/Components/FieldOverlay";
38
39
 
39
40
  ### customProps
40
41
 
41
- Forward props to the active shell via `customProps.menu`, `customProps.modal`, or `customProps.drawer`. Menu-only options such as `anchorEl`, `placement`, `disableAutoFocus`, and `rounded` go through `customProps.menu`.
42
+ Forward props to the active shell via `customProps.menu`, `customProps.modal`, or `customProps.drawer`. The drawer inner scroller accepts `customProps.drawerScroller`. Menu-only options such as `anchorEl`, `placement`, `disableAutoFocus`, and `rounded` go through `customProps.menu`.
42
43
 
43
44
  ```vue
44
45
  <FieldOverlay
@@ -64,6 +65,16 @@ Forward props to the active shell via `customProps.menu`, `customProps.modal`, o
64
65
  >
65
66
  <PickerContent />
66
67
  </FieldOverlay>
68
+
69
+ <FieldOverlay
70
+ v-model="open"
71
+ overlay="drawer"
72
+ :custom-props="{
73
+ drawerScroller: { class: 'bridge-scroll-fade-none' },
74
+ }"
75
+ >
76
+ <PickerContent />
77
+ </FieldOverlay>
67
78
  ```
68
79
 
69
80
  ### Footer close
@@ -79,10 +90,10 @@ overlay. Use the picker slot callbacks in custom footers so Apply still commits.
79
90
 
80
91
  ## Props
81
92
 
82
- | Prop | Type | Default | Description |
83
- | ------------- | ------------------------- | -------- | ---------------------------------------------------------- |
84
- | `customProps` | `FieldOverlayCustomProps` | — | Extra props for nested shells (`menu`, `modal`, `drawer`). |
85
- | `overlay` | `FieldOverlayMode` | `"auto"` | Overlay shell: `menu`, `modal`, `drawer`, or `auto`. |
93
+ | Prop | Type | Default | Description |
94
+ | ------------- | ------------------------- | -------- | ----------------------------------------------------------------------------------------------------- |
95
+ | `customProps` | `FieldOverlayCustomProps` | — | Extra props for nested shells (`menu`, `modal`, `drawer`) and the drawer scroller (`drawerScroller`). |
96
+ | `overlay` | `FieldOverlayMode` | `"auto"` | Overlay shell: `menu`, `modal`, `drawer`, or `auto`. |
86
97
 
87
98
  ### v-model
88
99
 
@@ -100,4 +111,4 @@ overlay. Use the picker slot callbacks in custom footers so Apply still commits.
100
111
 
101
112
  ## Related components
102
113
 
103
- Menu, Modal, Drawer, Select, Autocomplete, DateField, TimeField, DateTimeField, DateRangeField, TimeRangeField, DateTimeRangeField, Listbox
114
+ Menu, Modal, Drawer, Select, Autocomplete, DateField, TimeField, DateTimeField, DateRangeField, TimeRangeField, DateTimeRangeField, ColorField, Listbox
@@ -115,25 +115,25 @@ const breakpoint = useBreakpoint();
115
115
 
116
116
  ## Props
117
117
 
118
- | Prop | Type | Default | Description |
119
- | --------------------- | ------------------ | --------------- | ------------------------------------------------------------------------------------------------------------------ |
120
- | `align` | `ModalAlign` | "middle-center" | Panel position on all breakpoints (`{row}-{column}` grid). Use `useBreakpoint` for a different align per viewport. |
121
- | `autoFocus` | `boolean` | `false` | When true, focuses the first focusable element inside the dialog on open. |
122
- | `blur` | `ModalBlur` | "none" | Backdrop blur on the overlay. |
123
- | `classes` | `ModalClasses` | — | The classes to apply to the modal. |
124
- | `closeOnEscape` | `boolean` | `true` | Whether the modal closes on escape key press. |
125
- | `closeOnOverlay` | `boolean` | `true` | Whether the modal closes on overlay click. |
126
- | `customProps` | `ModalCustomProps` | — | Props forwarded to each modal part. |
127
- | `disableEnforceFocus` | `boolean` | `false` | When true, focus is not trapped inside the modal while open. |
128
- | `disableRestoreFocus` | `boolean` | `false` | When true, focus is not restored to the previously focused element on close. |
129
- | `disableScrollLock` | `boolean` | `false` | When true, body scroll is not locked while the modal is open. |
130
- | `hideBackdrop` | `boolean` | `false` | When true, the backdrop overlay is not rendered. |
131
- | `keepMounted` | `boolean` | `false` | When true, the modal stays mounted in the DOM after closing (hidden). |
132
- | `persistent` | `boolean` | `false` | When true, escape and overlay clicks do not close the modal. |
133
- | `scroll` | `ModalScroll` | "body" | Where scroll happens: the page (`body`) or the dialog panel (`paper`). |
134
- | `size` | `ModalSize` | "md" | Max width of the dialog from the `sm` breakpoint up (`sm:max-w-*`). |
135
- | `teleportTo` | `string \| false` | "body" | Where to teleport the modal. Pass `false` to render in place. |
136
- | `transition` | `ModalTransition` | "fade" | Enter/leave animation for overlay and panel. |
118
+ | Prop | Type | Default | Description |
119
+ | --------------------- | ------------------ | --------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
120
+ | `align` | `ModalAlign` | "middle-center" | Panel position on all breakpoints (`{row}-{column}` grid). Use `useBreakpoint` for a different align per viewport. |
121
+ | `autoFocus` | `boolean` | `false` | When true, focuses the first focusable element inside the dialog on open. |
122
+ | `blur` | `ModalBlur` | "none" | Backdrop blur on the overlay. |
123
+ | `classes` | `ModalClasses` | — | The classes to apply to the modal. |
124
+ | `closeOnEscape` | `boolean` | `true` | Whether the modal closes on escape key press. |
125
+ | `closeOnOverlay` | `boolean` | `true` | Whether the modal closes on overlay click. |
126
+ | `customProps` | `ModalCustomProps` | — | Props forwarded to each modal part. |
127
+ | `disableEnforceFocus` | `boolean` | `false` | When true, focus is not trapped inside the modal while open. |
128
+ | `disableRestoreFocus` | `boolean` | `false` | When true, focus is not restored to the previously focused element on close. |
129
+ | `disableScrollLock` | `boolean` | `false` | When true, body scroll is not locked while the modal is open. |
130
+ | `hideBackdrop` | `boolean` | `false` | When true, the backdrop overlay is not rendered. |
131
+ | `keepMounted` | `boolean` | `false` | When true, the modal stays mounted in the DOM after closing (hidden). |
132
+ | `persistent` | `boolean` | `false` | When true, escape and overlay clicks do not close the modal. |
133
+ | `scroll` | `ModalScroll` | "body" | Where scroll happens: the page (`body`) or the dialog panel (`paper`). `paper` uses `bridge-scroll-fade-y` and `bridge-hide-scrollbar`. |
134
+ | `size` | `ModalSize` | "md" | Max width of the dialog from the `sm` breakpoint up (`sm:max-w-*`). |
135
+ | `teleportTo` | `string \| false` | "body" | Where to teleport the modal. Pass `false` to render in place. |
136
+ | `transition` | `ModalTransition` | "fade" | Enter/leave animation for overlay and panel. |
137
137
 
138
138
  ### v-model
139
139
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  Dropdown select with single/multiple value, search, and async data.
4
4
 
5
+ The options list uses `bridge-soft-scrollbar`. See [Scroll utilities](../ScrollUtilities.md).
6
+
5
7
  ## Import
6
8
 
7
9
  ```ts
@@ -170,7 +172,7 @@ When unset, `showFooter` defaults to `true` for `modal` / `drawer` overlays (`fa
170
172
 
171
173
  ### Inherited from FormField
172
174
 
173
- See [FormField](./FormField.md) (building-block chrome). Field tokens live on `components.Select` (`size`, `color`, `rounded`, `variant`, …). Dropdown option tokens are nested under `components.Select.tokens.listbox`.
175
+ See [FormField](./FormField.md) (building-block chrome). Field tokens live on `components.Select` (`size`, `color`, `rounded`, `variant`, …). Dropdown option tokens live on `components.Listbox`.
174
176
 
175
177
  ## Slots
176
178
 
@@ -0,0 +1,60 @@
1
+ # Stepper
2
+
3
+ Multi-step flow indicator for checkout, onboarding, and wizards. Shows progress through ordered steps; optional click-to-navigate when steps are completed or `linear` is off. Compose with `Step`.
4
+
5
+ Wizard footer actions (`Next` / `Back`) stay in the app — `Stepper` is the indicator (plus optional vertical step bodies). A labeled progress bar is `Progress`, not `Stepper`.
6
+
7
+ ## Import
8
+
9
+ ```ts
10
+ import { Stepper } from "@bridge-ui/vue/Components/Stepper";
11
+ import { Step } from "@bridge-ui/vue/Components/Step";
12
+ ```
13
+
14
+ ## Examples
15
+
16
+ ### Usage
17
+
18
+ ```vue
19
+ <Stepper v-model="active">
20
+ <Step label="Account" />
21
+ <Step label="Profile" />
22
+ <Step label="Confirm" />
23
+ </Stepper>
24
+ ```
25
+
26
+ ### Vertical
27
+
28
+ ```vue
29
+ <Stepper v-model="active" orientation="vertical">
30
+ <Step label="Cart" description="Review items">
31
+ Cart details…
32
+ </Step>
33
+ <Step label="Shipping" description="Address">
34
+ Shipping form…
35
+ </Step>
36
+ <Step label="Pay" description="Payment">
37
+ Payment form…
38
+ </Step>
39
+ </Stepper>
40
+ ```
41
+
42
+ ### Non-linear
43
+
44
+ ```vue
45
+ <Stepper :linear="false" v-model="active">
46
+ <Step label="Account" />
47
+ <Step label="Profile" />
48
+ <Step label="Confirm" />
49
+ </Stepper>
50
+ ```
51
+
52
+ ### Error and disabled
53
+
54
+ ```vue
55
+ <Stepper v-model="active">
56
+ <Step label="Account" />
57
+ <Step error label="Profile" />
58
+ <Step disabled label="Confirm" />
59
+ </Stepper>
60
+ ```
@@ -37,7 +37,6 @@ import { TimePanel } from "@bridge-ui/vue/Components/TimePanel";
37
37
  | `rounded` | `CalendarRounded` | `"md"` | Border radius of time tiles. |
38
38
  | `showSeconds` | `boolean` | `false` | Shows seconds in the panel and formatted value. |
39
39
  | `timeZone` | `string` | — | IANA time zone. |
40
- | `tokens` | `TimePanelTokens` | — | Token overrides. |
41
40
  | `value` | `Date \| null` | — | Selected time (`Date` wall clock). |
42
41
 
43
42
  ### v-model
@@ -47,6 +46,10 @@ import { TimePanel } from "@bridge-ui/vue/Components/TimePanel";
47
46
  | `modelValue` | `Date \| null` | — | Bound with `v-model`. |
48
47
  | `update:modelValue` | `(value: Date \| null) => void` | — | Emitted when `v-model` should update. |
49
48
 
49
+ Time panel tokens live on `components.TimePanel` (`color`, `rounded`).
50
+
51
+ Columns use `bridge-scroll-fade-y` and `bridge-hide-scrollbar` by default. Add `bridge-scroll-fade-none` via `classes.column` to disable the fade. See [Scroll utilities](../ScrollUtilities.md).
52
+
50
53
  ## Events
51
54
 
52
55
  | Event | Payload | Description |
@@ -42,7 +42,6 @@ import { TimePicker } from "@bridge-ui/vue/Components/TimePicker";
42
42
  | `showSeconds` | `boolean` | `false` | Shows seconds in the panel and formatted value. |
43
43
  | `slots` | `TimePickerSlots` | — | Named slots (`footer` for Cancel / Apply). |
44
44
  | `timeZone` | `string` | — | IANA time zone. |
45
- | `tokens` | `TimePickerTokens` | — | Token overrides. |
46
45
  | `value` | `Date \| null` | — | Controlled value. |
47
46
 
48
47
  ### v-model
@@ -52,6 +51,8 @@ import { TimePicker } from "@bridge-ui/vue/Components/TimePicker";
52
51
  | `modelValue` | `Date \| null` | — | Bound with `v-model`. |
53
52
  | `update:modelValue` | `(value: Date \| null) => void` | — | Emitted when `v-model` should update. |
54
53
 
54
+ Time panel tokens live on `components.TimePanel` (`color`, `rounded`).
55
+
55
56
  ## Events
56
57
 
57
58
  | Event | Payload | Description |
@@ -37,7 +37,6 @@ import { TimeRangePicker } from "@bridge-ui/vue/Components/TimeRangePicker";
37
37
  | `interval` | `number` | `1` | Minute step between options. |
38
38
  | `maxTime` | `Date` | — | Latest selectable time. |
39
39
  | `minTime` | `Date` | — | Earliest selectable time. |
40
- | `orientation` | `"horizontal" \| "vertical"` | `"horizontal"` | Layout of start / end time panels. |
41
40
  | `readOnly` | `boolean` | `false` | Prevents selection. |
42
41
  | `rounded` | `CalendarRounded` | `"md"` | Border radius of time tiles and chrome. |
43
42
  | `showFooter` | `boolean` | `false` | Shows Cancel / Apply. Selection is draft until Apply. |
@@ -45,7 +44,6 @@ import { TimeRangePicker } from "@bridge-ui/vue/Components/TimeRangePicker";
45
44
  | `slots` | `TimeRangePickerSlots` | — | Named slots (`footer` for Cancel / Apply). |
46
45
  | `startTitle` | `string` | `"Start time"` | Label above the start time panel. |
47
46
  | `timeZone` | `string` | — | IANA time zone. |
48
- | `tokens` | `TimeRangePickerTokens` | — | Token overrides. |
49
47
  | `value` | `TimeRangeValue \| null` | — | Controlled value (`[start, end]`). |
50
48
 
51
49
  ### v-model
@@ -55,6 +53,8 @@ import { TimeRangePicker } from "@bridge-ui/vue/Components/TimeRangePicker";
55
53
  | `modelValue` | `TimeRangeValue \| null` | — | Bound with `v-model`. |
56
54
  | `update:modelValue` | `(value: TimeRangeValue \| null) => void` | — | Emitted when `v-model` should update. |
57
55
 
56
+ Time panel tokens live on `components.TimePanel` (`color`, `rounded`).
57
+
58
58
  ## Events
59
59
 
60
60
  | Event | Payload | Description |
@@ -24,6 +24,7 @@ import {
24
24
  faClock,
25
25
  faEye,
26
26
  faEyeSlash,
27
+ faPalette,
27
28
  faSpinner,
28
29
  faTriangleExclamation,
29
30
  faUpDown,
@@ -92,6 +93,7 @@ const icons = {
92
93
  loader: faSpinner,
93
94
  info: faCircleInfo,
94
95
  eyeOff: faEyeSlash,
96
+ palette: faPalette,
95
97
  error: faCircleXmark,
96
98
  success: faCircleCheck,
97
99
  chevronUp: faChevronUp,
@@ -22,6 +22,7 @@ import {
22
22
  EyeIcon,
23
23
  EyeSlashIcon,
24
24
  InformationCircleIcon,
25
+ SwatchIcon,
25
26
  UserIcon,
26
27
  XCircleIcon,
27
28
  XMarkIcon,
@@ -39,6 +40,7 @@ const icons = {
39
40
  check: CheckIcon,
40
41
  clock: ClockIcon,
41
42
  error: XCircleIcon,
43
+ palette: SwatchIcon,
42
44
  eyeOff: EyeSlashIcon,
43
45
  loader: ArrowPathIcon,
44
46
  success: CheckCircleIcon,
@@ -22,6 +22,7 @@ import {
22
22
  EyeOff,
23
23
  Info,
24
24
  Loader2,
25
+ Palette,
25
26
  TriangleAlert,
26
27
  User,
27
28
  X,
@@ -42,6 +43,7 @@ const icons = {
42
43
  error: CircleX,
43
44
  eyeOff: EyeOff,
44
45
  loader: Loader2,
46
+ palette: Palette,
45
47
  alert: CircleAlert,
46
48
  calendar: Calendar,
47
49
  success: CircleCheck,
@@ -19,6 +19,7 @@ import {
19
19
  PhEye,
20
20
  PhEyeSlash,
21
21
  PhInfo,
22
+ PhPalette,
22
23
  PhSpinnerGap,
23
24
  PhUser,
24
25
  PhWarning,
@@ -41,6 +42,7 @@ const icons = {
41
42
  clock: PhClock,
42
43
  error: PhXCircle,
43
44
  eyeOff: PhEyeSlash,
45
+ palette: PhPalette,
44
46
  warning: PhWarning,
45
47
  loader: PhSpinnerGap,
46
48
  chevronUp: PhCaretUp,
@@ -22,6 +22,7 @@ import {
22
22
  IconEyeOff,
23
23
  IconInfoCircle,
24
24
  IconLoader2,
25
+ IconPalette,
25
26
  IconSelector,
26
27
  IconUser,
27
28
  IconX,
@@ -42,6 +43,7 @@ const icons = {
42
43
  eyeOff: IconEyeOff,
43
44
  loader: IconLoader2,
44
45
  info: IconInfoCircle,
46
+ palette: IconPalette,
45
47
  alert: IconAlertCircle,
46
48
  success: IconCircleCheck,
47
49
  chevronUp: IconChevronUp,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "license": "MIT",
4
- "version": "0.1.0",
4
+ "version": "0.2.0",
5
5
  "author": "BridgeUI",
6
6
  "sideEffects": false,
7
7
  "name": "@bridge-ui/vue",
@@ -83,7 +83,7 @@
83
83
  "vue": "^3.4.0"
84
84
  },
85
85
  "dependencies": {
86
- "@bridge-ui/core": "^0.1.0",
86
+ "@bridge-ui/core": "^0.2.0",
87
87
  "clsx": "^2.1.1",
88
88
  "es-toolkit": "^1.50.0",
89
89
  "tailwind-merge": "^3.6.0"