@koobiq/react-components 0.11.0 → 0.12.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 (159) hide show
  1. package/dist/components/Button/Button.js +1 -1
  2. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  3. package/dist/components/Container/Container.js +13 -4
  4. package/dist/components/Container/types.d.ts +18 -3
  5. package/dist/components/Container/types.js +3 -1
  6. package/dist/components/DateInput/DateInput.js +36 -32
  7. package/dist/components/DateInput/DateInput.module.css.js +4 -1
  8. package/dist/components/DateInput/types.d.ts +10 -12
  9. package/dist/components/DateInput/types.js +5 -5
  10. package/dist/components/DatePicker/DatePicker.js +18 -2
  11. package/dist/components/DatePicker/types.d.ts +2 -2
  12. package/dist/components/Dialog/Dialog.js +2 -2
  13. package/dist/components/Dialog/components/DialogCloseButton.d.ts +2 -2
  14. package/dist/components/Form/Form.d.ts +9 -13
  15. package/dist/components/Form/Form.js +29 -32
  16. package/dist/components/Form/Form.module.css.js +19 -7
  17. package/dist/components/Form/FormContext.d.ts +5 -3
  18. package/dist/components/Form/components/FormActions/FormActions.d.ts +7 -0
  19. package/dist/components/Form/components/FormActions/FormActions.js +9 -0
  20. package/dist/components/Form/components/FormActions/index.d.ts +1 -0
  21. package/dist/components/Form/components/FormCaption/FormCaption.d.ts +16 -0
  22. package/dist/components/Form/components/FormCaption/FormCaption.js +17 -0
  23. package/dist/components/Form/components/FormCaption/index.d.ts +1 -0
  24. package/dist/components/Form/components/FormGroup/FormGroup.d.ts +7 -0
  25. package/dist/components/Form/components/FormGroup/FormGroup.js +9 -0
  26. package/dist/components/Form/components/FormGroup/index.d.ts +1 -0
  27. package/dist/components/Form/components/index.d.ts +3 -0
  28. package/dist/components/Form/types.d.ts +7 -3
  29. package/dist/components/Form/utils.js +12 -12
  30. package/dist/components/FormField/FormField.d.ts +22 -0
  31. package/dist/components/FormField/FormField.js +55 -0
  32. package/dist/components/FormField/FormField.module.css.js +17 -0
  33. package/dist/components/FormField/FormFieldAddon/FormFieldAddon.d.ts +10 -0
  34. package/dist/components/{FieldComponents/FieldAddon/FieldAddon.js → FormField/FormFieldAddon/FormFieldAddon.js} +9 -14
  35. package/dist/components/FormField/FormFieldAddon/FormFieldAddon.module.css.js +20 -0
  36. package/dist/components/FormField/FormFieldAddon/index.d.ts +1 -0
  37. package/dist/components/{FieldComponents/FieldCaption/FieldCaption.d.ts → FormField/FormFieldCaption/FormFieldCaption.d.ts} +3 -3
  38. package/dist/components/{FieldComponents/FieldCaption/FieldCaption.js → FormField/FormFieldCaption/FormFieldCaption.js} +4 -4
  39. package/dist/components/{FieldComponents/FieldError/FieldError.module.css.js → FormField/FormFieldCaption/FormFieldCaption.module.css.js} +1 -1
  40. package/dist/components/FormField/FormFieldCaption/index.d.ts +1 -0
  41. package/dist/components/FormField/FormFieldControlGroup/FormFieldControlGroup.d.ts +2 -0
  42. package/dist/components/{FieldComponents/FieldContentGroup/FieldContentGroup.js → FormField/FormFieldControlGroup/FormFieldControlGroup.js} +11 -29
  43. package/dist/components/FormField/FormFieldControlGroup/FormFieldControlGroup.module.css.js +23 -0
  44. package/dist/components/FormField/FormFieldControlGroup/FormFieldControlGroupContext.d.ts +10 -0
  45. package/dist/components/FormField/FormFieldControlGroup/FormFieldControlGroupContext.js +7 -0
  46. package/dist/components/FormField/FormFieldControlGroup/index.d.ts +3 -0
  47. package/dist/components/FormField/FormFieldControlGroup/types.d.ts +30 -0
  48. package/dist/components/FormField/FormFieldControlGroup/types.js +7 -0
  49. package/dist/components/FormField/FormFieldError/FormFieldError.d.ts +8 -0
  50. package/dist/components/FormField/FormFieldError/FormFieldError.js +17 -0
  51. package/dist/components/{FieldComponents/FieldCaption/FieldCaption.module.css.js → FormField/FormFieldError/FormFieldError.module.css.js} +1 -1
  52. package/dist/components/FormField/FormFieldError/index.d.ts +1 -0
  53. package/dist/components/FormField/FormFieldInput/FormFieldInput.d.ts +8 -0
  54. package/dist/components/FormField/FormFieldInput/FormFieldInput.js +12 -0
  55. package/dist/components/{FieldComponents/Field/Field.module.css.js → FormField/FormFieldInput/FormFieldInput.module.css.js} +1 -1
  56. package/dist/components/FormField/FormFieldInput/index.d.ts +1 -0
  57. package/dist/components/FormField/FormFieldInputDate/FormFieldInputDate.d.ts +8 -0
  58. package/dist/components/FormField/FormFieldInputDate/FormFieldInputDate.js +9 -0
  59. package/dist/components/FormField/FormFieldInputDate/FormFieldInputDate.module.css.js +8 -0
  60. package/dist/components/FormField/FormFieldInputDate/index.d.ts +1 -0
  61. package/dist/components/FormField/FormFieldLabel/FormFieldLabel.d.ts +4 -0
  62. package/dist/components/{FormControlLabel/FormControlLabel.js → FormField/FormFieldLabel/FormFieldLabel.js} +5 -4
  63. package/dist/components/FormField/FormFieldLabel/FormFieldLabel.module.css.js +14 -0
  64. package/dist/components/FormField/FormFieldLabel/index.d.ts +2 -0
  65. package/dist/components/{FormControlLabel → FormField/FormFieldLabel}/types.d.ts +1 -1
  66. package/dist/components/FormField/FormFieldSelect/FormFieldSelect.d.ts +4 -0
  67. package/dist/components/FormField/FormFieldSelect/FormFieldSelect.js +33 -0
  68. package/dist/components/FormField/FormFieldSelect/FormFieldSelect.module.css.js +20 -0
  69. package/dist/components/FormField/FormFieldSelect/index.d.ts +2 -0
  70. package/dist/components/FormField/FormFieldSelect/types.d.ts +7 -0
  71. package/dist/components/FormField/index.d.ts +9 -0
  72. package/dist/components/FormField/types.d.ts +19 -0
  73. package/dist/components/FormField/types.js +6 -0
  74. package/dist/components/Input/Input.d.ts +8 -10
  75. package/dist/components/Input/Input.js +22 -23
  76. package/dist/components/Input/Input.module.css.js +5 -1
  77. package/dist/components/Input/types.d.ts +10 -12
  78. package/dist/components/Input/types.js +5 -5
  79. package/dist/components/InputNumber/InputNumber.d.ts +8 -10
  80. package/dist/components/InputNumber/InputNumber.js +22 -22
  81. package/dist/components/InputNumber/InputNumber.module.css.js +8 -0
  82. package/dist/components/InputNumber/components/InputNumberCounterControls.js +2 -2
  83. package/dist/components/InputNumber/types.d.ts +10 -12
  84. package/dist/components/InputNumber/types.js +5 -5
  85. package/dist/components/List/components/ListSection/ListSection.js +1 -1
  86. package/dist/components/RadioGroup/RadioGroup.js +14 -13
  87. package/dist/components/RadioGroup/RadioGroup.module.css.js +4 -1
  88. package/dist/components/RadioGroup/components/Radio/Radio.d.ts +1 -1
  89. package/dist/components/RadioGroup/types.d.ts +7 -9
  90. package/dist/components/RadioGroup/types.js +3 -3
  91. package/dist/components/SearchInput/SearchInput.d.ts +8 -10
  92. package/dist/components/SearchInput/SearchInput.js +39 -30
  93. package/dist/components/SearchInput/SearchInput.module.css.js +4 -1
  94. package/dist/components/SearchInput/types.d.ts +10 -12
  95. package/dist/components/SearchInput/types.js +5 -5
  96. package/dist/components/Select/Select.js +37 -28
  97. package/dist/components/Select/Select.module.css.js +4 -4
  98. package/dist/components/Select/components/TagGroup/TagGroupMultiline.js +2 -2
  99. package/dist/components/Select/components/TagGroup/TagGroupResponsive.js +2 -2
  100. package/dist/components/Select/types.d.ts +8 -10
  101. package/dist/components/Select/types.js +3 -3
  102. package/dist/components/Textarea/Textarea.d.ts +5 -5
  103. package/dist/components/Textarea/Textarea.js +6 -4
  104. package/dist/components/Textarea/Textarea.module.css.js +8 -2
  105. package/dist/components/Textarea/components/TextareaContextConsumer/TextareaContextConsumer.d.ts +1 -1
  106. package/dist/components/Textarea/components/TextareaContextConsumer/TextareaContextConsumer.js +24 -20
  107. package/dist/components/Textarea/types.d.ts +8 -10
  108. package/dist/components/Textarea/types.js +5 -5
  109. package/dist/components/TimePicker/TimePicker.js +37 -31
  110. package/dist/components/TimePicker/TimePicker.module.css.js +4 -1
  111. package/dist/components/TimePicker/types.d.ts +9 -11
  112. package/dist/components/TimePicker/types.js +3 -3
  113. package/dist/components/Toggle/Toggle.d.ts +1 -1
  114. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  115. package/dist/components/index.d.ts +1 -2
  116. package/dist/index.js +28 -12
  117. package/dist/style.css +442 -386
  118. package/package.json +5 -5
  119. package/dist/components/FieldComponents/Field/Field.d.ts +0 -4
  120. package/dist/components/FieldComponents/Field/Field.js +0 -10
  121. package/dist/components/FieldComponents/Field/index.d.ts +0 -2
  122. package/dist/components/FieldComponents/Field/types.d.ts +0 -4
  123. package/dist/components/FieldComponents/FieldAddon/FieldAddon.d.ts +0 -11
  124. package/dist/components/FieldComponents/FieldAddon/FieldAddon.module.css.js +0 -20
  125. package/dist/components/FieldComponents/FieldAddon/index.d.ts +0 -1
  126. package/dist/components/FieldComponents/FieldCaption/index.d.ts +0 -1
  127. package/dist/components/FieldComponents/FieldContentGroup/FieldContentGroup.d.ts +0 -2
  128. package/dist/components/FieldComponents/FieldContentGroup/FieldContentGroup.module.css.js +0 -29
  129. package/dist/components/FieldComponents/FieldContentGroup/FieldContentGroupContext.d.ts +0 -10
  130. package/dist/components/FieldComponents/FieldContentGroup/FieldContentGroupContext.js +0 -7
  131. package/dist/components/FieldComponents/FieldContentGroup/index.d.ts +0 -3
  132. package/dist/components/FieldComponents/FieldContentGroup/types.d.ts +0 -29
  133. package/dist/components/FieldComponents/FieldContentGroup/types.js +0 -4
  134. package/dist/components/FieldComponents/FieldError/FieldError.d.ts +0 -8
  135. package/dist/components/FieldComponents/FieldError/FieldError.js +0 -19
  136. package/dist/components/FieldComponents/FieldError/index.d.ts +0 -1
  137. package/dist/components/FieldComponents/FieldInput/FieldInput.d.ts +0 -12
  138. package/dist/components/FieldComponents/FieldInput/FieldInput.js +0 -34
  139. package/dist/components/FieldComponents/FieldInput/FieldInput.module.css.js +0 -20
  140. package/dist/components/FieldComponents/FieldInput/index.d.ts +0 -1
  141. package/dist/components/FieldComponents/FieldInputDate/FieldInputDate.d.ts +0 -12
  142. package/dist/components/FieldComponents/FieldInputDate/FieldInputDate.js +0 -32
  143. package/dist/components/FieldComponents/FieldInputDate/FieldInputDate.module.css.js +0 -20
  144. package/dist/components/FieldComponents/FieldInputDate/index.d.ts +0 -1
  145. package/dist/components/FieldComponents/FieldSelect/FieldSelect.d.ts +0 -4
  146. package/dist/components/FieldComponents/FieldSelect/FieldSelect.js +0 -45
  147. package/dist/components/FieldComponents/FieldSelect/FieldSelect.module.css.js +0 -26
  148. package/dist/components/FieldComponents/FieldSelect/index.d.ts +0 -2
  149. package/dist/components/FieldComponents/FieldSelect/types.d.ts +0 -11
  150. package/dist/components/FieldComponents/index.d.ts +0 -8
  151. package/dist/components/FormControl/FormControl.d.ts +0 -4
  152. package/dist/components/FormControl/FormControl.js +0 -34
  153. package/dist/components/FormControl/FormControl.module.css.js +0 -17
  154. package/dist/components/FormControl/index.d.ts +0 -2
  155. package/dist/components/FormControl/types.d.ts +0 -19
  156. package/dist/components/FormControl/types.js +0 -6
  157. package/dist/components/FormControlLabel/FormControlLabel.d.ts +0 -4
  158. package/dist/components/FormControlLabel/FormControlLabel.module.css.js +0 -14
  159. package/dist/components/FormControlLabel/index.d.ts +0 -2
@@ -4,12 +4,7 @@ import { useDOMRef, mergeProps } from "@koobiq/react-core";
4
4
  import { useTextareaContext } from "@koobiq/react-primitives";
5
5
  import s from "../../Textarea.module.css.js";
6
6
  import { useTextareaAutosize } from "../../utils/useTextareaAutosize.js";
7
- import { FormControlLabel } from "../../../FormControlLabel/FormControlLabel.js";
8
- import { Field } from "../../../FieldComponents/Field/Field.js";
9
- import { FieldContentGroup } from "../../../FieldComponents/FieldContentGroup/FieldContentGroup.js";
10
- import { FieldInput } from "../../../FieldComponents/FieldInput/FieldInput.js";
11
- import { FieldCaption } from "../../../FieldComponents/FieldCaption/FieldCaption.js";
12
- import { FieldError } from "../../../FieldComponents/FieldError/FieldError.js";
7
+ import { FormField } from "../../../FormField/FormField.js";
13
8
  const TextareaContextConsumer = forwardRef((props, ref) => {
14
9
  const {
15
10
  rows,
@@ -26,38 +21,47 @@ const TextareaContextConsumer = forwardRef((props, ref) => {
26
21
  errorMessage
27
22
  } = props;
28
23
  const { value } = useTextareaContext();
29
- const domRef = useDOMRef(ref);
30
- useTextareaAutosize(domRef, value, expand === "auto-size");
24
+ const textareaRef = useDOMRef(ref);
25
+ useTextareaAutosize(textareaRef, value, expand === "auto-size");
31
26
  const textareaProps = mergeProps(
32
27
  {
33
- isInvalid,
34
28
  rows,
35
29
  cols,
36
- variant,
37
30
  value,
38
- isDisabled,
39
31
  ...expand && { className: s[expand] },
40
- ref: domRef
32
+ ref: textareaRef
41
33
  },
42
34
  slotProps?.textarea
43
35
  );
44
- const captionProps = mergeProps({ children: caption }, slotProps?.caption);
36
+ const captionProps = mergeProps(
37
+ { children: caption },
38
+ slotProps?.caption
39
+ );
45
40
  const errorProps = mergeProps(
46
- { children: errorMessage, className: s.error },
41
+ { children: errorMessage },
47
42
  slotProps?.errorMessage
48
43
  );
49
44
  const groupProps = {
50
45
  variant,
51
46
  isInvalid,
47
+ className: s.group,
48
+ onMouseDown: (e) => {
49
+ if (e.currentTarget !== e.target) return;
50
+ e.preventDefault();
51
+ textareaRef.current?.focus();
52
+ },
52
53
  isDisabled
53
54
  };
54
- const labelProps = mergeProps({ isHidden: isLabelHidden, children: label, isRequired }, slotProps?.label);
55
+ const labelProps = mergeProps(
56
+ { isHidden: isLabelHidden, children: label, isRequired },
57
+ slotProps?.label
58
+ );
55
59
  return /* @__PURE__ */ jsxs(Fragment, { children: [
56
- /* @__PURE__ */ jsx(FormControlLabel, { ...labelProps }),
57
- /* @__PURE__ */ jsxs(Field, { children: [
58
- /* @__PURE__ */ jsx(FieldContentGroup, { ...groupProps, children: /* @__PURE__ */ jsx(FieldInput, { as: "textarea", ...textareaProps }) }),
59
- /* @__PURE__ */ jsx(FieldCaption, { ...captionProps }),
60
- /* @__PURE__ */ jsx(FieldError, { ...errorProps })
60
+ /* @__PURE__ */ jsx(FormField.Label, { ...labelProps }),
61
+ /* @__PURE__ */ jsxs("div", { className: s.body, children: [
62
+ /* @__PURE__ */ jsx(FormField.ControlGroup, { ...groupProps, children: /* @__PURE__ */ jsx(FormField.Input, { as: "textarea", ...textareaProps }) }),
63
+ /* @__PURE__ */ jsx(FormField.Caption, { ...captionProps }),
64
+ /* @__PURE__ */ jsx(FormField.Error, { ...errorProps })
61
65
  ] })
62
66
  ] });
63
67
  });
@@ -1,17 +1,15 @@
1
1
  import type { ComponentRef, CSSProperties, ReactNode } from 'react';
2
2
  import type { ExtendableProps } from '@koobiq/react-core';
3
3
  import type { TextFieldProps } from '@koobiq/react-primitives';
4
- import { type FieldCaptionProps, type FieldContentGroupPropVariant, type FieldErrorProps, type FieldInputProps } from '../FieldComponents';
5
- import { type FormControlPropLabelAlign, type FormControlPropLabelPlacement } from '../FormControl';
6
- import type { FormControlLabelProps } from '../FormControlLabel';
4
+ import type { FormFieldLabelProps, FormFieldInputProps, FormFieldErrorProps, FormFieldCaptionProps, FormFieldPropLabelAlign, FormFieldPropLabelPlacement, FormFieldControlGroupPropVariant } from '../FormField';
7
5
  export declare const textareaPropVariant: readonly ["filled", "transparent"];
8
- export type TextareaPropVariant = FieldContentGroupPropVariant;
6
+ export type TextareaPropVariant = FormFieldControlGroupPropVariant;
9
7
  export declare const textareaPropExpand: readonly ["auto-size", "vertical-resize"];
10
8
  export type TextareaPropExpand = (typeof textareaPropExpand)[number];
11
9
  export declare const textareaPropLabelPlacement: readonly ["top", "side"];
12
- export type TextareaPropLabelPlacement = FormControlPropLabelPlacement;
10
+ export type TextareaPropLabelPlacement = FormFieldPropLabelPlacement;
13
11
  export declare const textareaPropLabelAlign: readonly ["start", "end"];
14
- export type TextareaPropLabelAlign = FormControlPropLabelAlign;
12
+ export type TextareaPropLabelAlign = FormFieldPropLabelAlign;
15
13
  type TextareaDeprecatedProps = {
16
14
  /**
17
15
  * If `true`, the component is disabled.
@@ -89,10 +87,10 @@ export type TextareaProps = ExtendableProps<{
89
87
  'data-testid'?: string | number;
90
88
  /** The props used for each slot inside. */
91
89
  slotProps?: {
92
- label?: FormControlLabelProps;
93
- caption?: FieldCaptionProps;
94
- textarea?: FieldInputProps<'textarea'>;
95
- errorMessage?: FieldErrorProps;
90
+ label?: FormFieldLabelProps;
91
+ caption?: FormFieldCaptionProps;
92
+ textarea?: FormFieldInputProps<'textarea'>;
93
+ errorMessage?: FormFieldErrorProps;
96
94
  };
97
95
  }, TextareaDeprecatedProps & Omit<TextFieldProps<HTMLTextAreaElement>, 'description' | 'validationState' | 'children' | 'style' | 'className' | 'inputElementType'>>;
98
96
  export type TextareaRef = ComponentRef<'textarea'>;
@@ -1,9 +1,9 @@
1
- import { fieldContentGroupPropVariant } from "../FieldComponents/FieldContentGroup/types.js";
2
- import { formControlPropLabelPlacement, formControlPropLabelAlign } from "../FormControl/types.js";
3
- const textareaPropVariant = fieldContentGroupPropVariant;
1
+ import { formFieldControlGroupPropVariant } from "../FormField/FormFieldControlGroup/types.js";
2
+ import { formFieldPropLabelPlacement, formFieldPropLabelAlign } from "../FormField/types.js";
3
+ const textareaPropVariant = formFieldControlGroupPropVariant;
4
4
  const textareaPropExpand = ["auto-size", "vertical-resize"];
5
- const textareaPropLabelPlacement = formControlPropLabelPlacement;
6
- const textareaPropLabelAlign = formControlPropLabelAlign;
5
+ const textareaPropLabelPlacement = formFieldPropLabelPlacement;
6
+ const textareaPropLabelAlign = formFieldPropLabelAlign;
7
7
  export {
8
8
  textareaPropExpand,
9
9
  textareaPropLabelAlign,
@@ -4,14 +4,9 @@ import { useLocale, useDOMRef, mergeProps, clsx } from "@koobiq/react-core";
4
4
  import { IconClock16 } from "@koobiq/react-icons";
5
5
  import { useSlottedContext, FormContext, useTimeFieldState, removeDataAttributes, useTimeField, FieldErrorContext } from "@koobiq/react-primitives";
6
6
  import s from "./TimePicker.module.css.js";
7
- import { FormControl } from "../FormControl/FormControl.js";
8
- import { FormControlLabel } from "../FormControlLabel/FormControlLabel.js";
9
- import { Field } from "../FieldComponents/Field/Field.js";
10
- import { FieldContentGroup } from "../FieldComponents/FieldContentGroup/FieldContentGroup.js";
11
- import { FieldInputDate } from "../FieldComponents/FieldInputDate/FieldInputDate.js";
7
+ import { useForm } from "../Form/FormContext.js";
8
+ import { FormField } from "../FormField/FormField.js";
12
9
  import { DateSegment } from "../DateSegment/DateSegment.js";
13
- import { FieldCaption } from "../FieldComponents/FieldCaption/FieldCaption.js";
14
- import { FieldError } from "../FieldComponents/FieldError/FieldError.js";
15
10
  function TimePickerRender(props, ref) {
16
11
  const { locale } = useLocale();
17
12
  const domRef = useDOMRef(ref);
@@ -23,6 +18,9 @@ function TimePickerRender(props, ref) {
23
18
  caption,
24
19
  label,
25
20
  slotProps,
21
+ isDisabled: isDisabledProp,
22
+ isReadOnly: isReadOnlyProp,
23
+ isRequired,
26
24
  style,
27
25
  fullWidth,
28
26
  variant,
@@ -31,10 +29,13 @@ function TimePickerRender(props, ref) {
31
29
  startAddon,
32
30
  "data-testid": testId
33
31
  } = props;
32
+ const { isDisabled: formIsDisabled, isReadOnly: formIsReadOnly } = useForm();
33
+ const isDisabled = isDisabledProp ?? formIsDisabled;
34
+ const isReadOnly = isReadOnlyProp ?? formIsReadOnly;
34
35
  const { validationBehavior: formValidationBehavior } = useSlottedContext(FormContext) || {};
35
36
  const validationBehavior = props.validationBehavior ?? formValidationBehavior ?? "aria";
36
37
  const state = useTimeFieldState({
37
- ...removeDataAttributes(props),
38
+ ...removeDataAttributes({ ...props, isDisabled, isReadOnly }),
38
39
  validationBehavior,
39
40
  locale
40
41
  });
@@ -45,8 +46,11 @@ function TimePickerRender(props, ref) {
45
46
  errorMessageProps,
46
47
  inputProps,
47
48
  ...validation
48
- } = useTimeField(removeDataAttributes(props), state, domRef);
49
- const { isDisabled, isRequired, isReadOnly } = state;
49
+ } = useTimeField(
50
+ removeDataAttributes({ ...props, isDisabled, isReadOnly }),
51
+ state,
52
+ domRef
53
+ );
50
54
  const { isInvalid } = validation;
51
55
  const rootProps = mergeProps(
52
56
  {
@@ -70,6 +74,11 @@ function TimePickerRender(props, ref) {
70
74
  startAddon,
71
75
  /* @__PURE__ */ jsx(IconClock16, { className: s.clock })
72
76
  ] }),
77
+ onMouseDown: (e) => {
78
+ if (e.currentTarget !== e.target) return;
79
+ e.preventDefault();
80
+ labelPropReactAria?.onClick?.(e);
81
+ },
73
82
  variant,
74
83
  isInvalid,
75
84
  isDisabled,
@@ -78,44 +87,41 @@ function TimePickerRender(props, ref) {
78
87
  slotProps?.group
79
88
  );
80
89
  const controlProps = mergeProps(
81
- {
82
- variant,
83
- isInvalid,
84
- isDisabled,
85
- ref: domRef
86
- },
87
- slotProps?.inputDate,
88
- fieldProps
90
+ { ref: domRef },
91
+ fieldProps,
92
+ slotProps?.inputDate
89
93
  );
90
94
  const labelProps = mergeProps(
91
95
  { isHidden: isLabelHidden, children: label, isRequired },
92
96
  labelPropReactAria,
93
97
  slotProps?.label
94
98
  );
95
- const captionProps = mergeProps({ children: caption }, slotProps?.caption, descriptionProps);
99
+ const captionProps = mergeProps(
100
+ { children: caption },
101
+ descriptionProps,
102
+ slotProps?.caption
103
+ );
96
104
  const errorProps = mergeProps(
97
- {
98
- children: errorMessage
99
- },
100
- slotProps?.errorMessage,
101
- errorMessageProps
105
+ { children: errorMessage },
106
+ errorMessageProps,
107
+ slotProps?.errorMessage
102
108
  );
103
- return /* @__PURE__ */ jsxs(FormControl, { ...rootProps, children: [
104
- /* @__PURE__ */ jsx(FormControlLabel, { ...labelProps }),
105
- /* @__PURE__ */ jsxs(Field, { children: [
109
+ return /* @__PURE__ */ jsxs(FormField, { ...rootProps, children: [
110
+ /* @__PURE__ */ jsx(FormField.Label, { ...labelProps }),
111
+ /* @__PURE__ */ jsxs("div", { className: s.body, children: [
106
112
  /* @__PURE__ */ jsx(
107
- FieldContentGroup,
113
+ FormField.ControlGroup,
108
114
  {
109
115
  ...groupProps,
110
116
  slotProps: { startAddon: { className: s.startAddon } },
111
- children: /* @__PURE__ */ jsxs(FieldInputDate, { ...controlProps, children: [
117
+ children: /* @__PURE__ */ jsxs(FormField.InputDate, { ...controlProps, children: [
112
118
  state.segments.map((segment, i) => /* @__PURE__ */ jsx(DateSegment, { segment, state }, i)),
113
119
  /* @__PURE__ */ jsx("input", { ...inputProps })
114
120
  ] })
115
121
  }
116
122
  ),
117
- /* @__PURE__ */ jsx(FieldCaption, { ...captionProps }),
118
- /* @__PURE__ */ jsx(FieldErrorContext.Provider, { value: validation, children: /* @__PURE__ */ jsx(FieldError, { ...errorProps }) })
123
+ /* @__PURE__ */ jsx(FormField.Caption, { ...captionProps }),
124
+ /* @__PURE__ */ jsx(FieldErrorContext.Provider, { value: validation, children: /* @__PURE__ */ jsx(FormField.Error, { ...errorProps }) })
119
125
  ] })
120
126
  ] });
121
127
  }
@@ -1,13 +1,16 @@
1
1
  const base = "kbq-timepicker-a6e9f3";
2
2
  const startAddon = "kbq-timepicker-startAddon-46c835";
3
3
  const clock = "kbq-timepicker-clock-920ed0";
4
+ const body = "kbq-timepicker-body-15a987";
4
5
  const s = {
5
6
  base,
6
7
  startAddon,
7
- clock
8
+ clock,
9
+ body
8
10
  };
9
11
  export {
10
12
  base,
13
+ body,
11
14
  clock,
12
15
  s as default,
13
16
  startAddon
@@ -1,13 +1,11 @@
1
1
  import type { ComponentRef, CSSProperties, ReactElement, ReactNode, Ref } from 'react';
2
2
  import type { AriaTimeFieldProps, TimeValue } from '@koobiq/react-primitives';
3
3
  import type { DateInputPropVariant } from '../DateInput';
4
- import { type FieldCaptionProps, type FieldErrorProps, type FieldInputDateProps, type FieldContentGroupProps } from '../FieldComponents';
5
- import { type FormControlProps, type FormControlPropLabelAlign, type FormControlPropLabelPlacement } from '../FormControl';
6
- import type { FormControlLabelProps } from '../FormControlLabel';
4
+ import { type FormFieldLabelProps, type FormFieldCaptionProps, type FormFieldErrorProps, type FormFieldInputDateProps, type FormFieldControlGroupProps, type FormFieldProps, type FormFieldPropLabelAlign, type FormFieldPropLabelPlacement } from '../FormField';
7
5
  export declare const timePickerPropLabelPlacement: readonly ["top", "side"];
8
- export type TimePickerPropLabelPlacement = FormControlPropLabelPlacement;
6
+ export type TimePickerPropLabelPlacement = FormFieldPropLabelPlacement;
9
7
  export declare const timePickerPropLabelAlign: readonly ["start", "end"];
10
- export type TimePickerPropLabelAlign = FormControlPropLabelAlign;
8
+ export type TimePickerPropLabelAlign = FormFieldPropLabelAlign;
11
9
  export type TimePickerProps<T extends TimeValue> = {
12
10
  /** Inline styles. */
13
11
  style?: CSSProperties;
@@ -28,12 +26,12 @@ export type TimePickerProps<T extends TimeValue> = {
28
26
  fullWidth?: boolean;
29
27
  /** The props used for each slot inside. */
30
28
  slotProps?: {
31
- root?: FormControlProps;
32
- label?: FormControlLabelProps;
33
- group?: FieldContentGroupProps;
34
- caption?: FieldCaptionProps;
35
- inputDate?: FieldInputDateProps;
36
- errorMessage?: FieldErrorProps;
29
+ root?: FormFieldProps;
30
+ label?: FormFieldLabelProps;
31
+ group?: FormFieldControlGroupProps;
32
+ caption?: FormFieldCaptionProps;
33
+ inputDate?: FormFieldInputDateProps;
34
+ errorMessage?: FormFieldErrorProps;
37
35
  };
38
36
  /** Ref to the control */
39
37
  ref?: Ref<HTMLDivElement>;
@@ -1,6 +1,6 @@
1
- import { formControlPropLabelPlacement, formControlPropLabelAlign } from "../FormControl/types.js";
2
- const timePickerPropLabelPlacement = formControlPropLabelPlacement;
3
- const timePickerPropLabelAlign = formControlPropLabelAlign;
1
+ import { formFieldPropLabelPlacement, formFieldPropLabelAlign } from "../FormField/types.js";
2
+ const timePickerPropLabelPlacement = formFieldPropLabelPlacement;
3
+ const timePickerPropLabelAlign = formFieldPropLabelAlign;
4
4
  export {
5
5
  timePickerPropLabelAlign,
6
6
  timePickerPropLabelPlacement
@@ -1,5 +1,5 @@
1
1
  import { type SwitchProps } from '@koobiq/react-primitives';
2
- export declare const Toggle: import("react").ForwardRefExoticComponent<Omit<Omit<SwitchProps, "inputRef">, "children" | "style" | "className" | "size" | "labelPlacement" | "slotProps" | keyof {
2
+ export declare const Toggle: import("react").ForwardRefExoticComponent<Omit<Omit<SwitchProps, "inputRef">, "children" | "style" | "className" | "size" | "slotProps" | "labelPlacement" | keyof {
3
3
  disabled?: boolean;
4
4
  error?: boolean;
5
5
  checked?: boolean;
@@ -1,4 +1,4 @@
1
- export declare const Tooltip: import("react").ForwardRefExoticComponent<Omit<import("@react-types/tooltip").TooltipTriggerProps, "children" | "className" | "id" | "offset" | "variant" | `data-${string}` | "placement" | "control" | "portalContainer" | "anchorRef" | "hideArrow" | "arrowBoundaryOffset" | "crossOffset" | "delay" | "closeDelay" | keyof {
1
+ export declare const Tooltip: import("react").ForwardRefExoticComponent<Omit<import("@react-types/tooltip").TooltipTriggerProps, "children" | "className" | "id" | "offset" | "placement" | `data-${string}` | "variant" | "control" | "portalContainer" | "anchorRef" | "hideArrow" | "arrowBoundaryOffset" | "crossOffset" | "delay" | "closeDelay" | keyof {
2
2
  open?: boolean;
3
3
  disabled?: boolean;
4
4
  }> & {
@@ -1,8 +1,7 @@
1
1
  export * from './Provider';
2
2
  export * from './FlexBox';
3
3
  export * from './Container';
4
- export * from './FormControl';
5
- export * from './FormControlLabel';
4
+ export * from './FormField';
6
5
  export * from './Alert';
7
6
  export * from './Button';
8
7
  export * from './IconButton';
package/dist/index.js CHANGED
@@ -7,10 +7,18 @@ import { ProviderContext, useProvider } from "./components/Provider/ProviderCont
7
7
  import { BreakpointsContext, useBreakpoints, useMatchedBreakpoints } from "./components/Provider/BreakpointsContext.js";
8
8
  import { FlexBox } from "./components/FlexBox/FlexBox.js";
9
9
  import { Container } from "./components/Container/Container.js";
10
- import { containerMarginsProp, containerPositionProp } from "./components/Container/types.js";
11
- import { FormControl } from "./components/FormControl/FormControl.js";
12
- import { formControlPropLabelAlign, formControlPropLabelPlacement } from "./components/FormControl/types.js";
13
- import { FormControlLabel } from "./components/FormControlLabel/FormControlLabel.js";
10
+ import { containerMarginsProp, containerPlacementProp, containerPositionProp } from "./components/Container/types.js";
11
+ import { FormFieldInput } from "./components/FormField/FormFieldInput/FormFieldInput.js";
12
+ import { FormFieldSelect } from "./components/FormField/FormFieldSelect/FormFieldSelect.js";
13
+ import { FormFieldCaption } from "./components/FormField/FormFieldCaption/FormFieldCaption.js";
14
+ import { FormFieldLabel } from "./components/FormField/FormFieldLabel/FormFieldLabel.js";
15
+ import { FormFieldError } from "./components/FormField/FormFieldError/FormFieldError.js";
16
+ import { FormFieldControlGroup } from "./components/FormField/FormFieldControlGroup/FormFieldControlGroup.js";
17
+ import { FormFieldControlGroupContext, useFormFieldControlGroup } from "./components/FormField/FormFieldControlGroup/FormFieldControlGroupContext.js";
18
+ import { formFieldControlGroupPropVariant } from "./components/FormField/FormFieldControlGroup/types.js";
19
+ import { FormFieldInputDate } from "./components/FormField/FormFieldInputDate/FormFieldInputDate.js";
20
+ import { FormField, FormFieldComponent } from "./components/FormField/FormField.js";
21
+ import { formFieldPropLabelAlign, formFieldPropLabelPlacement } from "./components/FormField/types.js";
14
22
  import { Alert } from "./components/Alert/Alert.js";
15
23
  import { alertPropStatus } from "./components/Alert/types.js";
16
24
  import { Button } from "./components/Button/Button.js";
@@ -82,7 +90,7 @@ import { TimePicker, TimePickerRender } from "./components/TimePicker/TimePicker
82
90
  import { timePickerPropLabelAlign, timePickerPropLabelPlacement } from "./components/TimePicker/types.js";
83
91
  import { SearchInput } from "./components/SearchInput/SearchInput.js";
84
92
  import { searchInputPropLabelAlign, searchInputPropLabelPlacement, searchInputPropVariant } from "./components/SearchInput/types.js";
85
- import { Fieldset, Form, FormComponent, Legend } from "./components/Form/Form.js";
93
+ import { Form } from "./components/Form/Form.js";
86
94
  import { FormContext, useForm } from "./components/Form/FormContext.js";
87
95
  import { formPropLabelInlineSize } from "./components/Form/types.js";
88
96
  import { flex, flexPropAlignItems, flexPropDirection, flexPropFlex, flexPropGap, flexPropJustifyContent, flexPropOrder, flexPropWrap } from "./components/layout/flex/flex.js";
@@ -104,19 +112,24 @@ export {
104
112
  DatePicker,
105
113
  DatePickerRender,
106
114
  Divider,
107
- Fieldset,
108
115
  FlexBox,
109
116
  Form,
110
- FormComponent,
111
117
  FormContext,
112
- FormControl,
113
- FormControlLabel,
118
+ FormField,
119
+ FormFieldCaption,
120
+ FormFieldComponent,
121
+ FormFieldControlGroup,
122
+ FormFieldControlGroupContext,
123
+ FormFieldError,
124
+ FormFieldInput,
125
+ FormFieldInputDate,
126
+ FormFieldLabel,
127
+ FormFieldSelect,
114
128
  Grid,
115
129
  GridItem,
116
130
  IconButton,
117
131
  Input,
118
132
  InputNumber,
119
- Legend,
120
133
  Link,
121
134
  List,
122
135
  ListInner,
@@ -165,6 +178,7 @@ export {
165
178
  checkboxPropLabelPlacement,
166
179
  checkboxPropSize,
167
180
  containerMarginsProp,
181
+ containerPlacementProp,
168
182
  containerPositionProp,
169
183
  dateInputPropLabelAlign,
170
184
  dateInputPropLabelPlacement,
@@ -179,8 +193,9 @@ export {
179
193
  flexPropJustifyContent,
180
194
  flexPropOrder,
181
195
  flexPropWrap,
182
- formControlPropLabelAlign,
183
- formControlPropLabelPlacement,
196
+ formFieldControlGroupPropVariant,
197
+ formFieldPropLabelAlign,
198
+ formFieldPropLabelPlacement,
184
199
  formPropLabelInlineSize,
185
200
  gridPropGap,
186
201
  iconButtonPropSize,
@@ -233,6 +248,7 @@ export {
233
248
  useBreakpoints,
234
249
  useDateFormatter,
235
250
  useForm,
251
+ useFormFieldControlGroup,
236
252
  useListData,
237
253
  useLocale,
238
254
  useMatchedBreakpoints,