@bridge-ui/vue 0.0.11 → 0.1.1

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 (195) hide show
  1. package/ai/skills/bridge-ui-components/SKILL.md +5 -3
  2. package/ai/skills/bridge-ui-forms/SKILL.md +4 -2
  3. package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +1 -2
  4. package/dist/Components/Autocomplete/composables/useAutocomplete.js +112 -114
  5. package/dist/Components/BaseField/baseField.types.d.ts +1 -8
  6. package/dist/Components/BaseField/composables/useBaseField.js +79 -83
  7. package/dist/Components/Calendar/Calendar.vue_vue_type_script_setup_true_lang.js +2 -1
  8. package/dist/Components/Calendar/calendar.types.d.ts +14 -21
  9. package/dist/Components/Calendar/composables/useCalendar.d.ts +2 -2
  10. package/dist/Components/Calendar/composables/useCalendar.js +101 -98
  11. package/dist/Components/Calendar/index.d.ts +1 -1
  12. package/dist/Components/CalendarDate/CalendarDate.vue_vue_type_script_setup_true_lang.js +1 -1
  13. package/dist/Components/CalendarDate/calendarDate.types.d.ts +7 -21
  14. package/dist/Components/CalendarDate/composables/useCalendarDate.d.ts +1 -1
  15. package/dist/Components/CalendarDate/composables/useCalendarDate.js +81 -73
  16. package/dist/Components/CalendarDate/index.d.ts +1 -1
  17. package/dist/Components/CalendarMonth/CalendarMonth.vue_vue_type_script_setup_true_lang.js +1 -1
  18. package/dist/Components/CalendarMonth/calendarMonth.types.d.ts +7 -17
  19. package/dist/Components/CalendarMonth/composables/useCalendarMonth.d.ts +1 -1
  20. package/dist/Components/CalendarMonth/composables/useCalendarMonth.js +58 -50
  21. package/dist/Components/CalendarMonth/index.d.ts +1 -1
  22. package/dist/Components/CalendarRange/CalendarRange.vue_vue_type_script_setup_true_lang.js +4 -3
  23. package/dist/Components/CalendarRange/calendarRange.types.d.ts +14 -21
  24. package/dist/Components/CalendarRange/composables/useCalendarRange.d.ts +3 -3
  25. package/dist/Components/CalendarRange/composables/useCalendarRange.js +121 -120
  26. package/dist/Components/CalendarRange/index.d.ts +1 -1
  27. package/dist/Components/CalendarYear/CalendarYear.vue_vue_type_script_setup_true_lang.js +1 -1
  28. package/dist/Components/CalendarYear/calendarYear.types.d.ts +7 -17
  29. package/dist/Components/CalendarYear/composables/useCalendarYear.d.ts +1 -1
  30. package/dist/Components/CalendarYear/composables/useCalendarYear.js +60 -52
  31. package/dist/Components/CalendarYear/index.d.ts +1 -1
  32. package/dist/Components/Checkbox/composables/useCheckbox.js +23 -19
  33. package/dist/Components/ColorField/ColorField.js +5 -0
  34. package/dist/Components/ColorField/ColorField.vue.d.ts +38 -0
  35. package/dist/Components/ColorField/ColorField.vue_vue_type_script_setup_true_lang.js +149 -0
  36. package/dist/Components/ColorField/colorField.types.d.ts +179 -0
  37. package/dist/Components/ColorField/composables/useColorField.d.ts +748 -0
  38. package/dist/Components/ColorField/composables/useColorField.js +182 -0
  39. package/dist/Components/ColorField/index.d.ts +3 -0
  40. package/dist/Components/ColorField/index.js +3 -0
  41. package/dist/Components/ColorPicker/ColorPicker.js +5 -0
  42. package/dist/Components/ColorPicker/ColorPicker.vue.d.ts +21 -0
  43. package/dist/Components/ColorPicker/ColorPicker.vue_vue_type_script_setup_true_lang.js +91 -0
  44. package/dist/Components/ColorPicker/colorPicker.types.d.ts +200 -0
  45. package/dist/Components/ColorPicker/composables/useColorPicker.d.ts +111 -0
  46. package/dist/Components/ColorPicker/composables/useColorPicker.js +253 -0
  47. package/dist/Components/ColorPicker/index.d.ts +3 -0
  48. package/dist/Components/ColorPicker/index.js +3 -0
  49. package/dist/Components/DateField/DateField.vue.d.ts +1 -0
  50. package/dist/Components/DateField/DateField.vue_vue_type_script_setup_true_lang.js +13 -31
  51. package/dist/Components/DateField/composables/useDateField.d.ts +3 -4
  52. package/dist/Components/DateField/composables/useDateField.js +95 -107
  53. package/dist/Components/DateField/dateField.types.d.ts +16 -0
  54. package/dist/Components/DatePicker/DatePicker.vue_vue_type_script_setup_true_lang.js +10 -7
  55. package/dist/Components/DatePicker/composables/useDatePicker.d.ts +1 -6
  56. package/dist/Components/DatePicker/composables/useDatePicker.js +8 -10
  57. package/dist/Components/DatePicker/datePicker.types.d.ts +14 -29
  58. package/dist/Components/DatePicker/index.d.ts +1 -1
  59. package/dist/Components/DateRangeField/DateRangeField.vue.d.ts +1 -0
  60. package/dist/Components/DateRangeField/DateRangeField.vue_vue_type_script_setup_true_lang.js +39 -30
  61. package/dist/Components/DateRangeField/composables/useDateRangeField.d.ts +4 -3
  62. package/dist/Components/DateRangeField/composables/useDateRangeField.js +55 -48
  63. package/dist/Components/DateRangeField/dateRangeField.types.d.ts +16 -0
  64. package/dist/Components/DateRangePicker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +10 -7
  65. package/dist/Components/DateRangePicker/composables/useDateRangePicker.d.ts +1 -6
  66. package/dist/Components/DateRangePicker/composables/useDateRangePicker.js +8 -10
  67. package/dist/Components/DateRangePicker/dateRangePicker.types.d.ts +14 -29
  68. package/dist/Components/DateRangePicker/index.d.ts +1 -1
  69. package/dist/Components/DateTimeField/DateTimeField.vue.d.ts +1 -0
  70. package/dist/Components/DateTimeField/DateTimeField.vue_vue_type_script_setup_true_lang.js +13 -6
  71. package/dist/Components/DateTimeField/composables/useDateTimeField.d.ts +4 -3
  72. package/dist/Components/DateTimeField/composables/useDateTimeField.js +64 -84
  73. package/dist/Components/DateTimeField/dateTimeField.types.d.ts +16 -0
  74. package/dist/Components/DateTimePicker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +26 -21
  75. package/dist/Components/DateTimePicker/composables/useDateTimePicker.d.ts +1 -10
  76. package/dist/Components/DateTimePicker/composables/useDateTimePicker.js +33 -40
  77. package/dist/Components/DateTimePicker/dateTimePicker.types.d.ts +14 -36
  78. package/dist/Components/DateTimePicker/index.d.ts +1 -1
  79. package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue.d.ts +1 -0
  80. package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue_vue_type_script_setup_true_lang.js +44 -37
  81. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.d.ts +4 -3
  82. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.js +46 -66
  83. package/dist/Components/DateTimeRangeField/dateTimeRangeField.types.d.ts +16 -0
  84. package/dist/Components/DateTimeRangePicker/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js +34 -27
  85. package/dist/Components/DateTimeRangePicker/composables/useDateTimeRangePicker.d.ts +1 -10
  86. package/dist/Components/DateTimeRangePicker/composables/useDateTimeRangePicker.js +39 -45
  87. package/dist/Components/DateTimeRangePicker/dateTimeRangePicker.types.d.ts +14 -36
  88. package/dist/Components/DateTimeRangePicker/index.d.ts +1 -1
  89. package/dist/Components/Drawer/Drawer.vue_vue_type_script_setup_true_lang.js +4 -3
  90. package/dist/Components/FieldOverlay/composables/useFieldOverlay.js +20 -12
  91. package/dist/Components/FieldOverlay/fieldOverlay.types.d.ts +3 -0
  92. package/dist/Components/FormControl/composables/useFormControl.js +61 -65
  93. package/dist/Components/FormControl/formControl.types.d.ts +1 -7
  94. package/dist/Components/FormField/composables/useFormField.d.ts +1 -1
  95. package/dist/Components/FormField/composables/useFormField.js +115 -116
  96. package/dist/Components/FormField/formField.types.d.ts +1 -7
  97. package/dist/Components/Label/composables/useLabel.js +28 -28
  98. package/dist/Components/Listbox/Listbox.vue_vue_type_script_setup_true_lang.js +2 -3
  99. package/dist/Components/Listbox/composables/useListbox.d.ts +5 -14
  100. package/dist/Components/Listbox/composables/useListbox.js +57 -54
  101. package/dist/Components/Listbox/index.d.ts +0 -1
  102. package/dist/Components/Listbox/listbox.types.d.ts +6 -12
  103. package/dist/Components/Menu/Menu.vue_vue_type_script_setup_true_lang.js +3 -5
  104. package/dist/Components/Modal/Modal.vue_vue_type_script_setup_true_lang.js +4 -3
  105. package/dist/Components/OtpField/composables/useOtpField.js +95 -94
  106. package/dist/Components/OtpField/otpField.types.d.ts +2 -9
  107. package/dist/Components/Radio/composables/useRadio.js +24 -20
  108. package/dist/Components/Select/composables/useSelect.d.ts +1 -2
  109. package/dist/Components/Select/composables/useSelect.js +21 -23
  110. package/dist/Components/Slider/composables/useSlider.js +167 -163
  111. package/dist/Components/Slider/slider.types.d.ts +2 -9
  112. package/dist/Components/Snackbar/Snackbar.vue_vue_type_script_setup_true_lang.js +3 -2
  113. package/dist/Components/Step/Step.js +5 -0
  114. package/dist/Components/Step/Step.vue.d.ts +11 -0
  115. package/dist/Components/Step/Step.vue_vue_type_script_setup_true_lang.js +32 -0
  116. package/dist/Components/Step/composables/useStep.d.ts +56 -0
  117. package/dist/Components/Step/composables/useStep.js +162 -0
  118. package/dist/Components/Step/index.d.ts +3 -0
  119. package/dist/Components/Step/index.js +3 -0
  120. package/dist/Components/Step/step.types.d.ts +160 -0
  121. package/dist/Components/Stepper/Stepper.js +5 -0
  122. package/dist/Components/Stepper/Stepper.vue.d.ts +24 -0
  123. package/dist/Components/Stepper/Stepper.vue_vue_type_script_setup_true_lang.js +33 -0
  124. package/dist/Components/Stepper/composables/useStepper.d.ts +18 -0
  125. package/dist/Components/Stepper/composables/useStepper.js +91 -0
  126. package/dist/Components/Stepper/index.d.ts +4 -0
  127. package/dist/Components/Stepper/index.js +4 -0
  128. package/dist/Components/Stepper/stepper.types.d.ts +93 -0
  129. package/dist/Components/Stepper/stepperInjectionKey.d.ts +77 -0
  130. package/dist/Components/Stepper/stepperInjectionKey.js +4 -0
  131. package/dist/Components/Switch/composables/useSwitch.js +28 -24
  132. package/dist/Components/TimeField/TimeField.vue.d.ts +1 -0
  133. package/dist/Components/TimeField/TimeField.vue_vue_type_script_setup_true_lang.js +34 -25
  134. package/dist/Components/TimeField/composables/useTimeField.d.ts +4 -3
  135. package/dist/Components/TimeField/composables/useTimeField.js +67 -60
  136. package/dist/Components/TimeField/timeField.types.d.ts +16 -0
  137. package/dist/Components/TimePanel/TimePanel.vue_vue_type_script_setup_true_lang.js +2 -1
  138. package/dist/Components/TimePanel/composables/useTimePanel.d.ts +1 -1
  139. package/dist/Components/TimePanel/composables/useTimePanel.js +65 -54
  140. package/dist/Components/TimePanel/index.d.ts +1 -1
  141. package/dist/Components/TimePanel/timePanel.types.d.ts +14 -17
  142. package/dist/Components/TimePicker/TimePicker.vue_vue_type_script_setup_true_lang.js +16 -13
  143. package/dist/Components/TimePicker/composables/useTimePicker.d.ts +1 -5
  144. package/dist/Components/TimePicker/composables/useTimePicker.js +17 -18
  145. package/dist/Components/TimePicker/index.d.ts +1 -1
  146. package/dist/Components/TimePicker/timePicker.types.d.ts +14 -24
  147. package/dist/Components/TimeRangeField/TimeRangeField.vue.d.ts +1 -0
  148. package/dist/Components/TimeRangeField/TimeRangeField.vue_vue_type_script_setup_true_lang.js +34 -25
  149. package/dist/Components/TimeRangeField/composables/useTimeRangeField.d.ts +4 -3
  150. package/dist/Components/TimeRangeField/composables/useTimeRangeField.js +88 -81
  151. package/dist/Components/TimeRangeField/timeRangeField.types.d.ts +16 -0
  152. package/dist/Components/TimeRangePicker/TimeRangePicker.vue_vue_type_script_setup_true_lang.js +23 -18
  153. package/dist/Components/TimeRangePicker/composables/useTimeRangePicker.d.ts +1 -5
  154. package/dist/Components/TimeRangePicker/composables/useTimeRangePicker.js +32 -33
  155. package/dist/Components/TimeRangePicker/index.d.ts +1 -1
  156. package/dist/Components/TimeRangePicker/timeRangePicker.types.d.ts +14 -24
  157. package/dist/Components/Tooltip/Tooltip.vue_vue_type_script_setup_true_lang.js +4 -6
  158. package/dist/Utils/index.d.ts +9 -0
  159. package/dist/Utils/index.js +23 -12
  160. package/dist/index.d.ts +20 -12
  161. package/dist/index.js +88 -80
  162. package/docs/README.md +3 -0
  163. package/docs/components/Autocomplete.md +1 -1
  164. package/docs/components/BaseField.md +1 -1
  165. package/docs/components/BridgeUIProvider.md +12 -14
  166. package/docs/components/Calendar.md +4 -1
  167. package/docs/components/CalendarDate.md +3 -1
  168. package/docs/components/CalendarMonth.md +3 -1
  169. package/docs/components/CalendarRange.md +4 -1
  170. package/docs/components/CalendarYear.md +18 -16
  171. package/docs/components/ColorField.md +93 -0
  172. package/docs/components/ColorPicker.md +78 -0
  173. package/docs/components/DateField.md +9 -0
  174. package/docs/components/DatePicker.md +4 -1
  175. package/docs/components/DateRangeField.md +30 -22
  176. package/docs/components/DateRangePicker.md +4 -1
  177. package/docs/components/DateTimeField.md +35 -28
  178. package/docs/components/DateTimePicker.md +4 -1
  179. package/docs/components/DateTimeRangeField.md +36 -28
  180. package/docs/components/DateTimeRangePicker.md +4 -1
  181. package/docs/components/FieldOverlay.md +5 -4
  182. package/docs/components/FormControl.md +1 -1
  183. package/docs/components/Select.md +1 -1
  184. package/docs/components/Stepper.md +60 -0
  185. package/docs/components/TimeField.md +24 -17
  186. package/docs/components/TimePanel.md +4 -1
  187. package/docs/components/TimePicker.md +4 -1
  188. package/docs/components/TimeRangeField.md +25 -17
  189. package/docs/components/TimeRangePicker.md +4 -1
  190. package/docs/examples/icon-fontawesome.ts +2 -0
  191. package/docs/examples/icon-heroicons.ts +2 -0
  192. package/docs/examples/icon-lucide.ts +2 -0
  193. package/docs/examples/icon-phosphor.ts +2 -0
  194. package/docs/examples/icon-tabler.ts +2 -0
  195. package/package.json +2 -2
@@ -11,30 +11,38 @@ function a(e, t) {
11
11
  class: r(t, n?.class)
12
12
  } } });
13
13
  }
14
- function o(r) {
15
- let i = e(), o = t(() => n(r.overlay, i.mobile));
14
+ function o(i) {
15
+ let o = e(), s = t(() => n(i.overlay, o.mobile));
16
16
  return {
17
- menuBind: t(() => ({
18
- closeOnClickAway: !0,
19
- placement: "bottom-start",
20
- ...r.customProps?.menu
21
- })),
17
+ menuBind: t(() => {
18
+ let e = i.customProps?.menu;
19
+ return {
20
+ closeOnClickAway: !0,
21
+ placement: "bottom-start",
22
+ ...e,
23
+ classes: {
24
+ ...e?.classes,
25
+ content: r(e?.classes?.content, "overflow-visible rounded-none bg-transparent shadow-none ring-0 dark:bg-transparent")
26
+ }
27
+ };
28
+ }),
22
29
  modalBind: t(() => a({
23
30
  size: "md",
24
31
  scroll: "paper",
25
32
  closeOnOverlay: !0,
26
33
  align: "middle-center",
27
34
  disableRestoreFocus: !0,
28
- ...r.customProps?.modal
29
- }, "flex w-fit max-w-full flex-col items-stretch p-0")),
35
+ ...i.customProps?.modal
36
+ }, "flex w-fit max-w-full sm:max-w-full flex-col items-stretch p-0")),
30
37
  drawerBind: t(() => a({
31
38
  size: "md",
39
+ scroll: "paper",
32
40
  placement: "bottom",
33
41
  closeOnOverlay: !0,
34
42
  disableRestoreFocus: !0,
35
- ...r.customProps?.drawer
36
- }, "flex h-auto max-h-[90dvh] flex-col items-stretch p-0")),
37
- resolvedOverlay: o
43
+ ...i.customProps?.drawer
44
+ }, "flex h-auto max-h-[90dvh] w-full flex-col items-stretch overflow-x-auto p-0")),
45
+ resolvedOverlay: s
38
46
  };
39
47
  }
40
48
  //#endregion
@@ -38,6 +38,9 @@ export interface FieldOverlayEmits {
38
38
  * Renders field picker / listbox content in a `Menu`, `Modal`, or `Drawer`.
39
39
  * Visibility is controlled with `v-model`. Shell-specific options go through
40
40
  * `customProps.menu` / `.modal` / `.drawer`.
41
+ *
42
+ * Menu chrome (fill, radius, shadow, ring) is stripped so the nested picker
43
+ * or listbox paints the visible surface, matching modal / drawer panels.
41
44
  */
42
45
  export interface FieldOverlayOwnProps {
43
46
  /**
@@ -2,10 +2,10 @@ import { hasSlotOrProp as e } from "../../../Utils/slotOrProp.js";
2
2
  import { mergeNestedComponentProps as t, mergePartBind as n, useBridgeUIComponent as r, useBridgeUIMergedRegistryClasses as i } from "../../../Utils/index.js";
3
3
  import { computed as a, toValue as o, useAttrs as s, useId as c, useSlots as l } from "vue";
4
4
  import { get as u, omit as d } from "es-toolkit/compat";
5
- import { formControlInvalidatedProps as f, labelSizeProps as p } from "@bridge-ui/core/Tokens";
6
- import { cn as m, mergeBridgeUILayeredClasses as h, splitComponentProps as g } from "@bridge-ui/core/Utils";
5
+ import { labelSizeProps as f } from "@bridge-ui/core/Tokens";
6
+ import { cn as p, splitComponentProps as m } from "@bridge-ui/core/Utils";
7
7
  //#region src/Components/FormControl/composables/useFormControl.ts
8
- var _ = [
8
+ var h = [
9
9
  "size",
10
10
  "error",
11
11
  "classes",
@@ -20,88 +20,84 @@ var _ = [
20
20
  "errorMessage",
21
21
  "hideErrorMessage"
22
22
  ];
23
- function v(v, y, b = {}) {
24
- let x = c(), S = l(), C = s(), w = a(() => g({
25
- bridgeKeys: _,
23
+ function g(g, _, v = {}) {
24
+ let y = c(), b = l(), x = s(), S = a(() => m({
25
+ bridgeKeys: h,
26
26
  props: {
27
- ...C,
28
- ...o(v)
27
+ ...x,
28
+ ...o(g)
29
29
  }
30
- })), { merged: T, entry: E } = r({
31
- libDefaults: y,
32
- componentName: b.componentName,
33
- props: () => w.value.componentProps
34
- }), D = a(() => T.value.customProps), O = i({
35
- entry: E,
36
- props: () => w.value.componentProps
37
- }), k = a(() => T.value.error === !0), A = a(() => !!T.value.disabled), j = a(() => !!T.value.readonly), M = a(() => {
38
- let e = w.value.inheritedAttrs.id;
39
- return T.value.controlId ?? e ?? x;
40
- }), N = a(() => !T.value.hideErrorMessage), P = a(() => k.value && e(S, "errorMessage", T.value.errorMessage)), F = a(() => {
30
+ })), { merged: C, entry: w } = r({
31
+ libDefaults: _,
32
+ componentName: v.componentName,
33
+ props: () => S.value.componentProps
34
+ }), T = a(() => C.value.customProps), E = i({
35
+ entry: w,
36
+ props: () => S.value.componentProps
37
+ }), D = a(() => C.value.error === !0), O = a(() => !!C.value.disabled), k = a(() => !!C.value.readonly), A = a(() => {
38
+ let e = S.value.inheritedAttrs.id;
39
+ return C.value.controlId ?? e ?? y;
40
+ }), j = a(() => !C.value.hideErrorMessage), M = a(() => D.value && e(b, "errorMessage", C.value.errorMessage)), N = a(() => {
41
41
  let t = [];
42
- return !k.value && e(S, "description", T.value.description) && t.push(`${M.value}-description`), k.value && N.value && e(S, "errorMessage", T.value.errorMessage) && t.push(`${M.value}-error`), t.length > 0 ? t.join(" ") : void 0;
43
- }), I = a(() => u(p, T.value.size ?? "md")), L = a(() => h(f, u(E.value, [
44
- "tokens",
45
- "formControl",
46
- "invalidated"
47
- ]), T.value.customProps?.invalidated)), R = a(() => n(D.value?.root, d(w.value.inheritedAttrs, ["class"]), m({
42
+ return !D.value && e(b, "description", C.value.description) && t.push(`${A.value}-description`), D.value && j.value && e(b, "errorMessage", C.value.errorMessage) && t.push(`${A.value}-error`), t.length > 0 ? t.join(" ") : void 0;
43
+ }), P = a(() => u(f, C.value.size ?? "md")), F = a(() => n(T.value?.root, d(S.value.inheritedAttrs, ["class"]), p({
48
44
  "group/form-control relative w-full": !0,
49
45
  "aria-disabled:pointer-events-none aria-disabled:select-none aria-disabled:opacity-60 aria-disabled:cursor-not-allowed": !0,
50
46
  "aria-readonly:pointer-events-none aria-readonly:select-none": !0,
51
- [O.value.root ?? ""]: !0,
52
- [C.class]: !!C.class
53
- }))), z = a(() => n(D.value?.row, {}, m({
47
+ [E.value.root ?? ""]: !0,
48
+ [x.class]: !!x.class
49
+ }))), I = a(() => n(T.value?.row, {}, p({
54
50
  "flex flex-row items-center gap-x-2": !0,
55
- [O.value.row ?? ""]: !0
56
- }))), B = a(() => {
57
- let e = (e) => t(D.value?.[e], {
58
- for: M.value,
59
- size: T.value.size,
60
- error: k.value,
61
- required: T.value.required,
62
- classes: { root: m({
51
+ [E.value.row ?? ""]: !0
52
+ }))), L = a(() => {
53
+ let e = (e) => t(T.value?.[e], {
54
+ for: A.value,
55
+ size: C.value.size,
56
+ error: D.value,
57
+ required: C.value.required,
58
+ classes: { root: p({
63
59
  "cursor-pointer": !0,
64
- [O.value[e] ?? ""]: !0
60
+ [E.value[e] ?? ""]: !0
65
61
  }) }
66
62
  });
67
63
  return {
68
64
  endLabel: e("endLabel"),
69
65
  startLabel: e("startLabel")
70
66
  };
71
- }), V = a(() => n(D.value?.description, { id: `${M.value}-description` }, m({
67
+ }), R = a(() => n(T.value?.description, { id: `${A.value}-description` }, p({
72
68
  "mt-2 text-dark-500 dark:text-dark-400": !0,
73
- [I.value ?? ""]: !0,
74
- [O.value.description ?? ""]: !0
75
- }))), H = a(() => n(D.value?.errorMessage, { id: `${M.value}-error` }, m({
69
+ [P.value ?? ""]: !0,
70
+ [E.value.description ?? ""]: !0
71
+ }))), z = a(() => n(T.value?.errorMessage, { id: `${A.value}-error` }, p({
76
72
  "mt-2": !0,
77
- "min-h-[1lh]": N.value,
78
- [L.value.errorMessage ?? ""]: !0,
79
- [I.value ?? ""]: !0,
80
- [O.value.errorMessage ?? ""]: !0
73
+ "min-h-[1lh]": j.value,
74
+ "text-error-600 dark:text-error-400": !0,
75
+ [P.value ?? ""]: !0,
76
+ [E.value.errorMessage ?? ""]: !0
81
77
  })));
82
78
  return {
83
- slots: S,
84
- merged: T,
85
- rowBind: z,
86
- rootBind: R,
87
- controlId: M,
88
- isDisabled: A,
89
- isReadonly: j,
79
+ slots: b,
80
+ merged: C,
81
+ rowBind: I,
82
+ rootBind: F,
83
+ controlId: A,
84
+ isDisabled: O,
85
+ isReadonly: k,
90
86
  controlBind: a(() => ({
91
- id: M.value,
92
- disabled: A.value,
93
- readonly: j.value,
94
- "aria-describedby": F.value,
95
- required: T.value.required || void 0,
96
- "aria-invalid": k.value || void 0
87
+ id: A.value,
88
+ disabled: O.value,
89
+ readonly: k.value,
90
+ "aria-describedby": N.value,
91
+ required: C.value.required || void 0,
92
+ "aria-invalid": D.value || void 0
97
93
  })),
98
- invalidated: k,
99
- fieldLabelProps: B,
100
- descriptionBind: V,
101
- errorMessageBind: H,
102
- showErrorMessageContent: P,
103
- reservesErrorMessageSpace: N
94
+ invalidated: D,
95
+ fieldLabelProps: L,
96
+ descriptionBind: R,
97
+ errorMessageBind: z,
98
+ showErrorMessageContent: M,
99
+ reservesErrorMessageSpace: j
104
100
  };
105
101
  }
106
102
  //#endregion
107
- export { _ as formControlBridgeKeys, v as useFormControl };
103
+ export { h as formControlBridgeKeys, g as useFormControl };
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, Slot } from 'vue';
2
- import { FormControlInvalidated, LabelSize } from '@bridge-ui/core/Tokens';
2
+ import { LabelSize } from '@bridge-ui/core/Tokens';
3
3
  import { MergeHtmlProps, MergeProps } from '@bridge-ui/core/Utils';
4
4
  import { UseFormControlReturn } from './composables/useFormControl';
5
5
  import { LabelProps } from '../Label/label.types';
@@ -45,12 +45,6 @@ export interface FormControlCustomProps {
45
45
  * Props forwarded to the error message element.
46
46
  */
47
47
  errorMessage?: HTMLAttributes;
48
- /**
49
- * Error-state message colors (`errorMessage`). Label colors come from `Label` when `error` is set.
50
- *
51
- * @default undefined
52
- */
53
- invalidated?: Partial<FormControlInvalidated>;
54
48
  /**
55
49
  * Props forwarded to the root wrapper.
56
50
  */
@@ -7,7 +7,7 @@ export type FormFieldOptions = {
7
7
  /**
8
8
  * Public registry key that owns FormField chrome defaults/tokens.
9
9
  */
10
- componentName?: "Select" | "Textarea" | "DateField" | "TextField" | "TimeField" | "NumberField" | "Autocomplete" | "DateTimeField" | "PasswordField" | "DateRangeField" | "TimeRangeField" | "DateTimeRangeField";
10
+ componentName?: "Select" | "Textarea" | "DateField" | "TextField" | "TimeField" | "ColorField" | "NumberField" | "Autocomplete" | "DateTimeField" | "PasswordField" | "DateRangeField" | "TimeRangeField" | "DateTimeRangeField";
11
11
  /**
12
12
  * Native control rendered by the field composable (`<input>` vs `<textarea>`).
13
13
  *
@@ -2,8 +2,8 @@ import { hasNamedSlot as e, hasSlotOrProp as t } from "../../../Utils/slotOrProp
2
2
  import { mergeNestedComponentProps as n, mergePartBind as r, useBridgeUIComponent as i, useBridgeUIMergedRegistryClasses as a } from "../../../Utils/index.js";
3
3
  import { computed as o, toValue as s, useId as c, useSlots as l } from "vue";
4
4
  import { get as u, omit as d } from "es-toolkit/compat";
5
- import { formFieldColorProps as f, formFieldInvalidatedProps as p, formFieldRoundedProps as m, formFieldSizeProps as h, formFieldVariantProps as g } from "@bridge-ui/core/Tokens";
6
- import { cn as _, mergeBridgeUILayeredClasses as v, splitComponentProps as y } from "@bridge-ui/core/Utils";
5
+ import { formFieldColorProps as f, formFieldRoundedProps as p, formFieldSizeProps as m, formFieldVariantProps as h } from "@bridge-ui/core/Tokens";
6
+ import { cn as g, getColorToken as _, mergeBridgeUILayeredClasses as v, splitComponentProps as y } from "@bridge-ui/core/Utils";
7
7
  //#region src/Components/FormField/composables/useFormField.ts
8
8
  var b = [
9
9
  "end",
@@ -29,81 +29,81 @@ var b = [
29
29
  "hideErrorMessage"
30
30
  ];
31
31
  function x(x, S, C = {}) {
32
- let ee = c(), w = l(), T = o(() => y({
32
+ let w = c(), T = l(), E = o(() => y({
33
33
  props: s(x),
34
34
  bridgeKeys: b
35
- })), { merged: E, entry: D } = i({
35
+ })), { merged: D, entry: O } = i({
36
36
  libDefaults: S,
37
37
  componentName: C.componentName,
38
- props: () => T.value.componentProps
39
- }), O = o(() => E.value.customProps), k = o(() => C.control?.() ?? "input"), A = a({
40
- entry: D,
41
- props: () => T.value.componentProps
42
- }), j = o(() => E.value.error === !0), M = o(() => !!E.value.disabled), N = o(() => !!E.value.readonly), P = o(() => E.value.variant ?? "outline"), F = o(() => E.value.errorIcon ?? "alert"), I = o(() => P.value === "notched"), L = o(() => P.value === "stacked"), R = o(() => P.value === "underlined"), z = o(() => k.value === "textarea"), B = o(() => z.value && !!C.likeInput?.()), V = o(() => !E.value.hideErrorMessage), H = o(() => {
43
- let e = T.value.inheritedAttrs.id;
44
- return E.value.controlId ?? e ?? ee;
45
- }), U = o(() => j.value && t(w, "errorMessage", E.value.errorMessage)), W = o(() => (I.value || L.value) && (t(w, "label", E.value.label) || t(w, "corner", E.value.corner))), G = o(() => t(w, "label", E.value.label) ? "justify-between items-end" : "justify-end"), K = o(() => {
38
+ props: () => E.value.componentProps
39
+ }), k = o(() => D.value.customProps), A = o(() => C.control?.() ?? "input"), j = a({
40
+ entry: O,
41
+ props: () => E.value.componentProps
42
+ }), M = o(() => D.value.error === !0), N = o(() => !!D.value.disabled), P = o(() => !!D.value.readonly), F = o(() => D.value.variant ?? "outline"), ee = o(() => D.value.errorIcon ?? "alert"), I = o(() => F.value === "notched"), L = o(() => F.value === "stacked"), R = o(() => F.value === "underlined"), z = o(() => A.value === "textarea"), B = o(() => z.value && !!C.likeInput?.()), V = o(() => !D.value.hideErrorMessage), H = o(() => {
43
+ let e = E.value.inheritedAttrs.id;
44
+ return D.value.controlId ?? e ?? w;
45
+ }), U = o(() => M.value && t(T, "errorMessage", D.value.errorMessage)), W = o(() => (I.value || L.value) && (t(T, "label", D.value.label) || t(T, "corner", D.value.corner))), G = o(() => t(T, "label", D.value.label) ? "justify-between items-end" : "justify-end"), K = o(() => {
46
46
  let e = [];
47
- return !j.value && t(w, "description", E.value.description) && e.push(`${H.value}-description`), j.value && !E.value.hideErrorMessage && t(w, "errorMessage", E.value.errorMessage) && e.push(`${H.value}-error`), e.length > 0 ? e.join(" ") : void 0;
47
+ return !M.value && t(T, "description", D.value.description) && e.push(`${H.value}-description`), M.value && !D.value.hideErrorMessage && t(T, "errorMessage", D.value.errorMessage) && e.push(`${H.value}-error`), e.length > 0 ? e.join(" ") : void 0;
48
48
  }), q = o(() => {
49
- let e = v(h, D.value?.tokens?.size);
50
- return u(e, [E.value.size, P.value]);
49
+ let e = v(m, O.value?.tokens?.size);
50
+ return u(e, [D.value.size, F.value]);
51
51
  }), J = o(() => {
52
- let e = v(f, D.value?.tokens?.color);
53
- return u(e, E.value.color ?? "primary");
54
- }), Y = o(() => v(p, D.value?.tokens?.invalidated, E.value.customProps?.invalidated)), X = o(() => j.value ? Y.value : void 0), Z = o(() => {
55
- let e = v(m, D.value?.tokens?.rounded);
56
- return u(e, E.value.rounded);
57
- }), Q = o(() => {
58
- let e = v(g, D.value?.tokens?.variant);
59
- return u(e, P.value);
60
- }), te = o(() => {
61
- let e = j.value ? Y.value : J.value;
62
- return R.value ? e?.underlined : e?.input;
63
- }), ne = o(() => {
64
- if (L.value) return _({
52
+ let e = v(f, O.value?.tokens?.color);
53
+ return _({
54
+ tokens: e,
55
+ color: D.value.color,
56
+ invalid: M.value
57
+ });
58
+ }), Y = o(() => {
59
+ let e = v(p, O.value?.tokens?.rounded);
60
+ return u(e, D.value.rounded);
61
+ }), X = o(() => {
62
+ let e = v(h, O.value?.tokens?.variant);
63
+ return u(e, F.value);
64
+ }), Z = o(() => R.value ? J.value?.underlined : J.value?.input), Q = o(() => {
65
+ if (L.value) return g({
65
66
  [q.value?.insetTop ?? ""]: !0,
66
67
  [q.value?.insetStart ?? ""]: !0,
67
68
  [q.value?.insetEnd ?? ""]: !0
68
69
  });
69
- }), re = o(() => {
70
- let t = C.reservedSlots?.() ?? [], n = e(w, "end") || t.includes("end"), r = e(w, "start") || t.includes("start");
71
- if (!L.value) return !r && !n ? q.value?.padding : _({
70
+ }), te = o(() => {
71
+ let t = C.reservedSlots?.() ?? [], n = e(T, "end") || t.includes("end"), r = e(T, "start") || t.includes("start");
72
+ if (!L.value) return !r && !n ? q.value?.padding : g({
72
73
  [q.value?.insetStart ?? ""]: !r,
73
74
  [q.value?.insetEnd ?? ""]: !n
74
75
  });
75
- }), ie = o(() => r(O.value?.end, {}, _({
76
+ }), ne = o(() => r(k.value?.end, {}, g({
76
77
  "shrink-0 self-center flex items-center whitespace-nowrap select-none pointer-events-none": !0,
77
- "text-dark-500": !j.value,
78
- [Z.value?.end ?? ""]: !R.value && !L.value,
79
- [J.value?.end ?? ""]: !j.value,
80
- [X.value?.adornment ?? ""]: j.value,
81
- [A.value.end ?? ""]: !0
82
- }))), ae = o(() => {
83
- let e = T.value.inheritedAttrs;
84
- return r(O.value?.root, {
85
- class: _(e.class),
78
+ "text-dark-500": !0,
79
+ [Y.value?.end ?? ""]: !R.value && !L.value,
80
+ [J.value?.end ?? ""]: !0,
81
+ [j.value.end ?? ""]: !0
82
+ }))), re = o(() => {
83
+ let e = E.value.inheritedAttrs;
84
+ return r(k.value?.root, {
85
+ class: g(e.class),
86
86
  ...d(e, ["class"])
87
- }, _({
87
+ }, g({
88
88
  "group w-full relative": !0,
89
89
  "aria-disabled:pointer-events-none aria-disabled:select-none aria-disabled:opacity-60": !0,
90
90
  "aria-readonly:pointer-events-none aria-readonly:select-none": !0,
91
- [A.value.root ?? ""]: !0
91
+ [j.value.root ?? ""]: !0
92
92
  }));
93
- }), oe = o(() => r(O.value?.errorMessage, {}, _({
93
+ }), ie = o(() => r(k.value?.errorMessage, {}, g({
94
94
  "mt-2": !0,
95
95
  "min-h-[1lh]": V.value,
96
- [X.value?.errorMessage ?? ""]: !0,
96
+ "text-error-600 dark:text-error-400": !0,
97
97
  [q.value?.text ?? ""]: !0,
98
- [A.value.errorMessage ?? ""]: !0
99
- }))), $ = o(() => r({
100
- ...O.value?.input,
98
+ [j.value.errorMessage ?? ""]: !0
99
+ }))), ae = o(() => r({
100
+ ...k.value?.input,
101
101
  id: H.value,
102
- disabled: M.value,
103
- readonly: N.value,
102
+ disabled: N.value,
103
+ readonly: P.value,
104
104
  "aria-describedby": K.value,
105
- "aria-invalid": j.value || void 0
106
- }, d(T.value.inheritedAttrs, ["class"]), _({
105
+ "aria-invalid": M.value || void 0
106
+ }, d(E.value.inheritedAttrs, ["class"]), g({
107
107
  "flex-1 min-w-0 min-h-0 bg-transparent border-0 shadow-none": !0,
108
108
  "h-full": !z.value && !L.value,
109
109
  "max-h-none": z.value,
@@ -113,116 +113,115 @@ function x(x, S, C = {}) {
113
113
  [q.value?.input ?? ""]: !z.value,
114
114
  [q.value?.textarea ?? ""]: z.value,
115
115
  [q.value?.textareaLikeInput ?? ""]: B.value,
116
- [A.value.input ?? ""]: !0
117
- }))), se = o(() => n(O.value?.label, {
116
+ [j.value.input ?? ""]: !0
117
+ }))), oe = o(() => n(k.value?.label, {
118
118
  for: H.value,
119
- size: E.value.size,
120
- error: j.value,
121
- required: E.value.required,
119
+ size: D.value.size,
120
+ error: M.value,
121
+ required: D.value.required,
122
122
  classes: {
123
- required: A.value.required,
124
- root: _({
125
- [Q.value?.label ?? ""]: I.value,
126
- [A.value.label ?? ""]: !0
123
+ required: j.value.required,
124
+ root: g({
125
+ [X.value?.label ?? ""]: I.value,
126
+ [j.value.label ?? ""]: !0
127
127
  })
128
128
  }
129
- })), ce = o(() => r(O.value?.start, {}, _({
129
+ })), $ = o(() => r(k.value?.start, {}, g({
130
130
  "shrink-0 self-center flex items-center whitespace-nowrap select-none pointer-events-none": !0,
131
- "text-dark-400": !j.value,
132
- [Z.value?.start ?? ""]: !R.value && !L.value,
133
- [J.value?.start ?? ""]: !j.value,
134
- [X.value?.adornment ?? ""]: j.value,
135
- [A.value.start ?? ""]: !0
136
- }))), le = o(() => r(O.value?.corner, {}, _({
131
+ "text-dark-400": !0,
132
+ [Y.value?.start ?? ""]: !R.value && !L.value,
133
+ [J.value?.start ?? ""]: !0,
134
+ [j.value.start ?? ""]: !0
135
+ }))), se = o(() => r(k.value?.corner, {}, g({
137
136
  "text-dark-500 dark:text-dark-400": !I.value,
138
137
  [q.value?.text ?? ""]: !0,
139
- [Q.value?.corner ?? ""]: I.value,
140
- [A.value.corner ?? ""]: !0
141
- }))), ue = o(() => {
142
- let e = t(w, "label", E.value.label);
143
- return r(O.value?.header, {}, _({
138
+ [X.value?.corner ?? ""]: I.value,
139
+ [j.value.corner ?? ""]: !0
140
+ }))), ce = o(() => {
141
+ let e = t(T, "label", D.value.label);
142
+ return r(k.value?.header, {}, g({
144
143
  flex: !0,
145
144
  "w-full shrink-0": !0,
146
145
  "justify-between": e,
147
146
  "justify-end": !e,
148
147
  "items-center": I.value,
149
148
  "items-end": L.value,
150
- [Q.value?.labelRow ?? ""]: W.value,
151
- [A.value.header ?? ""]: !0
149
+ [X.value?.labelRow ?? ""]: W.value,
150
+ [j.value.header ?? ""]: !0
152
151
  }));
153
- }), de = o(() => r(O.value?.header, {}, _({
152
+ }), le = o(() => r(k.value?.header, {}, g({
154
153
  flex: !0,
155
154
  "mb-1": !0,
156
155
  [G.value]: !0,
157
- [A.value.header ?? ""]: !0
158
- }))), fe = o(() => r(O.value?.endIcon, {}, _({ "inline-flex shrink-0 items-center justify-center self-center": L.value }))), pe = o(() => r(O.value?.end, {}, _({
156
+ [j.value.header ?? ""]: !0
157
+ }))), ue = o(() => r(k.value?.endIcon, {}, g({ "inline-flex shrink-0 items-center justify-center self-center": L.value }))), de = o(() => r(k.value?.end, {}, g({
159
158
  "group/end wrapper-end-slot shrink-0 flex w-auto items-stretch self-stretch [&>*]:min-h-0": !0,
160
159
  "self-stretch min-h-0 overflow-hidden py-0.5 pe-0.5": L.value,
161
160
  "h-full min-h-0 overflow-hidden py-0.5 pe-0.5": !L.value,
162
- [A.value.end ?? ""]: !0
163
- }))), me = o(() => r({}, {}, _({
161
+ [j.value.end ?? ""]: !0
162
+ }))), fe = o(() => r({}, {}, g({
164
163
  "flex min-h-0 min-w-0 flex-1 flex-col": !0,
165
- [ne.value ?? ""]: !0
166
- }))), he = o(() => r({}, {}, _({
164
+ [Q.value ?? ""]: !0
165
+ }))), pe = o(() => r({}, {}, g({
167
166
  "flex w-full min-w-0 flex-1 items-stretch gap-x-2": !0,
168
167
  [q.value?.controlRow ?? ""]: !0
169
168
  })));
170
169
  return {
171
- slots: w,
172
- merged: E,
173
- control: k,
174
- endBind: ie,
175
- rootBind: ae,
170
+ slots: T,
171
+ merged: D,
172
+ control: A,
173
+ endBind: ne,
174
+ rootBind: re,
176
175
  controlId: H,
177
- errorBind: oe,
178
- errorIcon: F,
179
- inputBind: $,
176
+ errorBind: ie,
177
+ errorIcon: ee,
178
+ inputBind: ae,
180
179
  isNotched: I,
181
180
  isStacked: L,
182
- startBind: ce,
183
- cornerBind: le,
184
- headerBind: de,
185
- isDisabled: M,
186
- isReadonly: N,
187
- variantKey: P,
188
- endIconBind: fe,
189
- endSlotBind: pe,
190
- invalidated: j,
191
- containerBind: o(() => r(O.value?.container, { "data-bridge-rounded": E.value.rounded ?? "md" }, _({
181
+ startBind: $,
182
+ cornerBind: se,
183
+ headerBind: le,
184
+ isDisabled: N,
185
+ isReadonly: P,
186
+ variantKey: F,
187
+ endIconBind: ue,
188
+ endSlotBind: de,
189
+ invalidated: M,
190
+ containerBind: o(() => r(k.value?.container, { "data-bridge-rounded": D.value.rounded ?? "md" }, g({
192
191
  "group/field relative flex flex-row items-stretch overflow-hidden": L.value,
193
192
  "group/field relative flex justify-start gap-x-2 items-stretch": !L.value,
194
193
  "transition-all ease-in-out duration-150 outline-none": !0,
195
- "bg-dark-100 dark:bg-dark-800": M.value && !j.value,
194
+ "bg-dark-100 dark:bg-dark-800": N.value && !M.value,
196
195
  [q.value?.container ?? ""]: !z.value,
197
196
  [q.value?.containerTextareaLikeInput ?? ""]: B.value,
198
197
  [q.value?.containerTextarea ?? ""]: z.value && !B.value,
199
- [Q.value?.container ?? ""]: !0,
200
- [Z.value?.input ?? ""]: !R.value,
201
- [re.value ?? ""]: !0,
198
+ [X.value?.container ?? ""]: !0,
199
+ [Y.value?.input ?? ""]: !R.value,
202
200
  [te.value ?? ""]: !0,
201
+ [Z.value ?? ""]: !0,
203
202
  "rounded-none": R.value,
204
- [X.value?.container ?? ""]: j.value && !R.value,
205
- [X.value?.containerUnderlined ?? ""]: j.value && R.value,
206
- [A.value.container ?? ""]: !0
203
+ "bg-error-50 ring-error-500 dark:bg-error-700/10 dark:ring-error-600": M.value && !R.value,
204
+ "border-error-500 dark:border-error-600": M.value && R.value,
205
+ [j.value.container ?? ""]: !0
207
206
  }))),
208
- startIconBind: o(() => r(O.value?.startIcon, {}, _({ "inline-flex shrink-0 items-center justify-center self-center": L.value }))),
209
- startSlotBind: o(() => r(O.value?.start, {}, _({
207
+ startIconBind: o(() => r(k.value?.startIcon, {}, g({ "inline-flex shrink-0 items-center justify-center self-center": L.value }))),
208
+ startSlotBind: o(() => r(k.value?.start, {}, g({
210
209
  "group/start wrapper-start-slot shrink-0 flex w-auto items-stretch self-stretch [&>*]:min-h-0": !0,
211
210
  "self-stretch min-h-0 overflow-hidden py-0.5 ps-0.5": L.value,
212
211
  "h-full min-h-0 overflow-hidden py-0.5 ps-0.5": !L.value,
213
- [A.value.start ?? ""]: !0
212
+ [j.value.start ?? ""]: !0
214
213
  }))),
215
- fieldLabelProps: se,
214
+ fieldLabelProps: oe,
216
215
  ariaDescribedBy: K,
217
- descriptionBind: o(() => r(O.value?.description, {}, _({
216
+ descriptionBind: o(() => r(k.value?.description, {}, g({
218
217
  "mt-2 text-dark-500 dark:text-dark-400": !0,
219
218
  [q.value?.text ?? ""]: !0,
220
- [A.value.description ?? ""]: !0
219
+ [j.value.description ?? ""]: !0
221
220
  }))),
222
- stackedBodyBind: me,
221
+ stackedBodyBind: fe,
223
222
  hasInsetLabelRow: W,
224
- insetLabelRowBind: ue,
225
- stackedInputRowBind: he,
223
+ insetLabelRowBind: ce,
224
+ stackedInputRowBind: pe,
226
225
  showErrorMessageContent: U,
227
226
  reservesErrorMessageSpace: V
228
227
  };
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, InputHTMLAttributes, Slot } from 'vue';
2
- import { FormFieldColor, FormFieldInvalidated, FormFieldRounded, FormFieldSize, FormFieldVariant } from '@bridge-ui/core/Tokens';
2
+ import { FormFieldColor, FormFieldRounded, FormFieldSize, FormFieldVariant } from '@bridge-ui/core/Tokens';
3
3
  import { MergeHtmlProps, MergeProps } from '@bridge-ui/core/Utils';
4
4
  import { IconSource } from '../../Adapters/Icon';
5
5
  import { UseFormFieldReturn } from './composables/useFormField';
@@ -88,12 +88,6 @@ export interface FormFieldCustomProps {
88
88
  * Props forwarded to the `<input>`.
89
89
  */
90
90
  input?: Partial<InputHTMLAttributes>;
91
- /**
92
- * Error-state field chrome colors (container, adornments, input, …). Label colors come from `Label` when `error` is set.
93
- *
94
- * @default undefined
95
- */
96
- invalidated?: Partial<FormFieldInvalidated>;
97
91
  /**
98
92
  * Props forwarded to the primary `Label` (content stays owned by `FormField`).
99
93
  *