@bspk/ui 1.3.20 → 1.3.22

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 (290) hide show
  1. package/dist/components/Accordion/Accordion.js +1 -1
  2. package/dist/components/Accordion/Accordion.js.map +1 -1
  3. package/dist/components/Accordion/accordion.css +19 -12
  4. package/dist/components/Accordion/accordion.css.js +19 -12
  5. package/dist/components/BottomNavigation/BottomNavigation.d.ts +0 -1
  6. package/dist/components/BottomNavigation/BottomNavigation.js +0 -1
  7. package/dist/components/BottomNavigation/BottomNavigation.js.map +1 -1
  8. package/dist/components/BottomNavigation/bottom-navigation.css +1 -0
  9. package/dist/components/BottomNavigation/bottom-navigation.css.js +1 -0
  10. package/dist/components/Button/button.css +4 -0
  11. package/dist/components/Button/button.css.js +4 -0
  12. package/dist/components/Checkbox/Checkbox.js +3 -3
  13. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  14. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +4 -5
  15. package/dist/components/CheckboxGroup/CheckboxGroup.js +8 -13
  16. package/dist/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
  17. package/dist/components/CheckboxGroup/CheckboxGroupExample.js +5 -0
  18. package/dist/components/CheckboxGroup/CheckboxGroupExample.js.map +1 -1
  19. package/dist/components/CheckboxGroup/checkbox-group.css +2 -0
  20. package/dist/components/CheckboxGroup/checkbox-group.css.js +2 -0
  21. package/dist/components/CheckboxGroupField/CheckboxGroupField.d.ts +3 -3
  22. package/dist/components/CheckboxGroupField/CheckboxGroupField.js +6 -4
  23. package/dist/components/CheckboxGroupField/CheckboxGroupField.js.map +1 -1
  24. package/dist/components/ChipGroup/ChipGroup.d.ts +0 -1
  25. package/dist/components/ChipGroup/ChipGroup.js +0 -1
  26. package/dist/components/ChipGroup/ChipGroup.js.map +1 -1
  27. package/dist/components/ChipGroup/chip-group.css +3 -0
  28. package/dist/components/ChipGroup/chip-group.css.js +3 -0
  29. package/dist/components/DatePicker/DatePicker.d.ts +4 -8
  30. package/dist/components/DatePicker/DatePicker.js +6 -18
  31. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  32. package/dist/components/DatePicker/DatePickerExample.js +3 -3
  33. package/dist/components/DatePicker/DatePickerExample.js.map +1 -1
  34. package/dist/components/DatePickerField/DatePickerField.d.ts +4 -4
  35. package/dist/components/DatePickerField/DatePickerField.js +6 -4
  36. package/dist/components/DatePickerField/DatePickerField.js.map +1 -1
  37. package/dist/components/Dialog/Dialog.d.ts +2 -3
  38. package/dist/components/Dialog/Dialog.js +2 -3
  39. package/dist/components/Dialog/Dialog.js.map +1 -1
  40. package/dist/components/Fab/Fab.d.ts +8 -5
  41. package/dist/components/Fab/Fab.js +8 -5
  42. package/dist/components/Fab/Fab.js.map +1 -1
  43. package/dist/components/Fab/fab.css +1 -0
  44. package/dist/components/Fab/fab.css.js +1 -0
  45. package/dist/components/Field/Field.d.ts +32 -18
  46. package/dist/components/Field/Field.js +8 -38
  47. package/dist/components/Field/Field.js.map +1 -1
  48. package/dist/components/Field/FieldExample.d.ts +1 -0
  49. package/dist/components/Field/FieldExample.js +10 -3
  50. package/dist/components/Field/FieldExample.js.map +1 -1
  51. package/dist/components/Field/Fieldset.d.ts +40 -0
  52. package/dist/components/Field/Fieldset.js +44 -0
  53. package/dist/components/Field/Fieldset.js.map +1 -0
  54. package/dist/components/Field/field.css +5 -7
  55. package/dist/components/Field/field.css.js +5 -7
  56. package/dist/components/Field/index.d.ts +1 -3
  57. package/dist/components/Field/index.js +1 -3
  58. package/dist/components/Field/index.js.map +1 -1
  59. package/dist/components/Field/utils.d.ts +8 -38
  60. package/dist/components/Field/utils.js +6 -33
  61. package/dist/components/Field/utils.js.map +1 -1
  62. package/dist/components/FileUpload/FileUpload.js +1 -1
  63. package/dist/components/FileUpload/FileUpload.js.map +1 -1
  64. package/dist/components/FileUploadItem/FileUploadItem.js +1 -1
  65. package/dist/components/FileUploadItem/FileUploadItem.js.map +1 -1
  66. package/dist/components/Flex/Flex.d.ts +11 -7
  67. package/dist/components/Flex/Flex.js +12 -8
  68. package/dist/components/Flex/Flex.js.map +1 -1
  69. package/dist/components/InlineAlert/InlineAlert.d.ts +2 -2
  70. package/dist/components/InlineAlert/InlineAlert.js +2 -2
  71. package/dist/components/InlineAlert/InlineAlert.js.map +1 -1
  72. package/dist/components/Input/Input.d.ts +60 -15
  73. package/dist/components/Input/Input.js +42 -25
  74. package/dist/components/Input/Input.js.map +1 -1
  75. package/dist/components/Input/InputExample.js +4 -4
  76. package/dist/components/Input/InputExample.js.map +1 -1
  77. package/dist/components/Input/index.d.ts +0 -1
  78. package/dist/components/Input/index.js +0 -1
  79. package/dist/components/Input/index.js.map +1 -1
  80. package/dist/components/InputField/InputField.d.ts +4 -4
  81. package/dist/components/InputField/InputField.js +6 -4
  82. package/dist/components/InputField/InputField.js.map +1 -1
  83. package/dist/components/InputNumber/InputNumber.d.ts +8 -7
  84. package/dist/components/InputNumber/InputNumber.js +9 -16
  85. package/dist/components/InputNumber/InputNumber.js.map +1 -1
  86. package/dist/components/InputNumber/InputNumberExample.js +3 -3
  87. package/dist/components/InputNumber/InputNumberExample.js.map +1 -1
  88. package/dist/components/InputNumber/input-number.css +1 -0
  89. package/dist/components/InputNumber/input-number.css.js +1 -0
  90. package/dist/components/InputNumberField/InputNumberField.d.ts +4 -4
  91. package/dist/components/InputNumberField/InputNumberField.js +6 -4
  92. package/dist/components/InputNumberField/InputNumberField.js.map +1 -1
  93. package/dist/components/InputPhone/InputPhone.d.ts +8 -8
  94. package/dist/components/InputPhone/InputPhone.js +12 -18
  95. package/dist/components/InputPhone/InputPhone.js.map +1 -1
  96. package/dist/components/InputPhone/InputPhoneExample.js +3 -3
  97. package/dist/components/InputPhone/InputPhoneExample.js.map +1 -1
  98. package/dist/components/InputPhone/input-phone.css +1 -0
  99. package/dist/components/InputPhone/input-phone.css.js +1 -0
  100. package/dist/components/InputPhoneField/InputPhoneField.d.ts +4 -4
  101. package/dist/components/InputPhoneField/InputPhoneField.js +6 -4
  102. package/dist/components/InputPhoneField/InputPhoneField.js.map +1 -1
  103. package/dist/components/ListItem/list-item.css +1 -0
  104. package/dist/components/ListItem/list-item.css.js +1 -0
  105. package/dist/components/Modal/Modal.js +22 -26
  106. package/dist/components/Modal/Modal.js.map +1 -1
  107. package/dist/components/Modal/ModalExample.js +4 -1
  108. package/dist/components/Modal/ModalExample.js.map +1 -1
  109. package/dist/components/Modal/modal.css +4 -2
  110. package/dist/components/Modal/modal.css.js +4 -2
  111. package/dist/components/OTPInput/otp-input.css +1 -0
  112. package/dist/components/OTPInput/otp-input.css.js +1 -0
  113. package/dist/components/Pagination/Pagination.js +2 -2
  114. package/dist/components/Pagination/Pagination.js.map +1 -1
  115. package/dist/components/Password/Password.d.ts +9 -7
  116. package/dist/components/Password/Password.js +13 -17
  117. package/dist/components/Password/Password.js.map +1 -1
  118. package/dist/components/Password/PasswordExample.js +3 -3
  119. package/dist/components/Password/PasswordExample.js.map +1 -1
  120. package/dist/components/PasswordField/PasswordField.d.ts +4 -4
  121. package/dist/components/PasswordField/PasswordField.js +6 -4
  122. package/dist/components/PasswordField/PasswordField.js.map +1 -1
  123. package/dist/components/Popover/Popover.d.ts +0 -1
  124. package/dist/components/Popover/Popover.js +0 -1
  125. package/dist/components/Popover/Popover.js.map +1 -1
  126. package/dist/components/RadioGroup/RadioGroup.d.ts +1 -2
  127. package/dist/components/RadioGroup/RadioGroup.js +5 -11
  128. package/dist/components/RadioGroup/RadioGroup.js.map +1 -1
  129. package/dist/components/RadioGroupField/RadioGroupField.d.ts +3 -3
  130. package/dist/components/RadioGroupField/RadioGroupField.js +6 -4
  131. package/dist/components/RadioGroupField/RadioGroupField.js.map +1 -1
  132. package/dist/components/SearchBar/SearchBar.d.ts +0 -1
  133. package/dist/components/SearchBar/SearchBar.js +0 -1
  134. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  135. package/dist/components/SegmentedControl/SegmentedControl.d.ts +0 -1
  136. package/dist/components/SegmentedControl/SegmentedControl.js +0 -1
  137. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  138. package/dist/components/Select/Select.d.ts +7 -6
  139. package/dist/components/Select/Select.js +10 -15
  140. package/dist/components/Select/Select.js.map +1 -1
  141. package/dist/components/Select/SelectExample.js +3 -3
  142. package/dist/components/Select/SelectExample.js.map +1 -1
  143. package/dist/components/SelectField/SelectField.d.ts +4 -4
  144. package/dist/components/SelectField/SelectField.js +6 -4
  145. package/dist/components/SelectField/SelectField.js.map +1 -1
  146. package/dist/components/Slider/Slider.d.ts +1 -2
  147. package/dist/components/Slider/Slider.js +1 -2
  148. package/dist/components/Slider/Slider.js.map +1 -1
  149. package/dist/components/Snackbar/Snackbar.d.ts +0 -1
  150. package/dist/components/Snackbar/Snackbar.js +0 -1
  151. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  152. package/dist/components/Switch/Switch.d.ts +0 -1
  153. package/dist/components/Switch/Switch.js +0 -1
  154. package/dist/components/Switch/Switch.js.map +1 -1
  155. package/dist/components/TabGroup/TabGroup.d.ts +0 -1
  156. package/dist/components/TabGroup/TabGroup.js +0 -1
  157. package/dist/components/TabGroup/TabGroup.js.map +1 -1
  158. package/dist/components/TabList/TabList.d.ts +0 -1
  159. package/dist/components/TabList/TabList.js +0 -1
  160. package/dist/components/TabList/TabList.js.map +1 -1
  161. package/dist/components/TabList/tab-list.css +1 -0
  162. package/dist/components/TabList/tab-list.css.js +1 -0
  163. package/dist/components/Table/table.css +2 -1
  164. package/dist/components/Table/table.css.js +2 -1
  165. package/dist/components/Textarea/Textarea.d.ts +4 -7
  166. package/dist/components/Textarea/Textarea.js +5 -16
  167. package/dist/components/Textarea/Textarea.js.map +1 -1
  168. package/dist/components/Textarea/TextareaExample.js +3 -3
  169. package/dist/components/Textarea/TextareaExample.js.map +1 -1
  170. package/dist/components/TextareaField/TextareaField.d.ts +4 -4
  171. package/dist/components/TextareaField/TextareaField.js +6 -4
  172. package/dist/components/TextareaField/TextareaField.js.map +1 -1
  173. package/dist/components/TimePicker/TimePicker.d.ts +8 -6
  174. package/dist/components/TimePicker/TimePicker.js +10 -14
  175. package/dist/components/TimePicker/TimePicker.js.map +1 -1
  176. package/dist/components/TimePicker/TimePickerExample.js +3 -3
  177. package/dist/components/TimePicker/TimePickerExample.js.map +1 -1
  178. package/dist/components/TimePickerField/TimePickerField.d.ts +4 -4
  179. package/dist/components/TimePickerField/TimePickerField.js +6 -4
  180. package/dist/components/TimePickerField/TimePickerField.js.map +1 -1
  181. package/dist/types/common.d.ts +2 -0
  182. package/dist/types/common.js.map +1 -1
  183. package/dist/utils/demo.js +1 -1
  184. package/dist/utils/demo.js.map +1 -1
  185. package/package.json +3 -4
  186. package/src/components/Accordion/Accordion.tsx +2 -2
  187. package/src/components/Accordion/accordion.scss +10 -1
  188. package/src/components/BottomNavigation/BottomNavigation.tsx +0 -1
  189. package/src/components/BottomNavigation/bottom-navigation.scss +1 -0
  190. package/src/components/Button/button.scss +4 -0
  191. package/src/components/Checkbox/Checkbox.tsx +3 -3
  192. package/src/components/CheckboxGroup/CheckboxGroup.tsx +37 -52
  193. package/src/components/CheckboxGroup/CheckboxGroupExample.tsx +6 -0
  194. package/src/components/CheckboxGroup/checkbox-group.scss +2 -0
  195. package/src/components/CheckboxGroupField/CheckboxGroupField.tsx +15 -11
  196. package/src/components/ChipGroup/ChipGroup.tsx +0 -1
  197. package/src/components/ChipGroup/chip-group.scss +4 -0
  198. package/src/components/DatePicker/DatePicker.tsx +9 -20
  199. package/src/components/DatePicker/DatePickerExample.tsx +3 -5
  200. package/src/components/DatePickerField/DatePickerField.rtl.test.tsx +1 -1
  201. package/src/components/DatePickerField/DatePickerField.tsx +10 -6
  202. package/src/components/Dialog/Dialog.tsx +2 -3
  203. package/src/components/Fab/Fab.tsx +8 -5
  204. package/src/components/Fab/fab.scss +1 -0
  205. package/src/components/Field/Field.rtl.test.tsx +8 -6
  206. package/src/components/Field/Field.tsx +64 -61
  207. package/src/components/Field/FieldExample.tsx +27 -5
  208. package/src/components/Field/Fieldset.tsx +78 -0
  209. package/src/components/Field/field.scss +23 -27
  210. package/src/components/Field/index.tsx +1 -3
  211. package/src/components/Field/utils.ts +15 -77
  212. package/src/components/FileUpload/FileUpload.tsx +1 -1
  213. package/src/components/FileUploadItem/FileUploadItem.tsx +1 -1
  214. package/src/components/Flex/Flex.tsx +12 -7
  215. package/src/components/InlineAlert/InlineAlert.rtl.test.tsx +1 -1
  216. package/src/components/InlineAlert/InlineAlert.tsx +3 -3
  217. package/src/components/Input/Input.tsx +140 -48
  218. package/src/components/Input/InputExample.tsx +4 -6
  219. package/src/components/Input/index.tsx +0 -1
  220. package/src/components/InputField/InputField.tsx +10 -6
  221. package/src/components/InputNumber/InputNumber.tsx +11 -16
  222. package/src/components/InputNumber/InputNumberExample.tsx +7 -4
  223. package/src/components/InputNumber/input-number.scss +1 -0
  224. package/src/components/InputNumberField/InputNumberField.tsx +10 -6
  225. package/src/components/InputPhone/InputPhone.tsx +14 -18
  226. package/src/components/InputPhone/InputPhoneExample.tsx +7 -6
  227. package/src/components/InputPhone/input-phone.scss +1 -0
  228. package/src/components/InputPhoneField/InputPhoneField.tsx +10 -6
  229. package/src/components/ListItem/list-item.scss +1 -0
  230. package/src/components/Modal/Modal.tsx +26 -30
  231. package/src/components/Modal/ModalExample.tsx +7 -2
  232. package/src/components/Modal/modal.scss +1 -1
  233. package/src/components/OTPInput/otp-input.scss +1 -0
  234. package/src/components/Pagination/Pagination.tsx +2 -2
  235. package/src/components/Password/Password.tsx +15 -17
  236. package/src/components/Password/PasswordExample.tsx +13 -5
  237. package/src/components/PasswordField/PasswordField.tsx +10 -6
  238. package/src/components/Popover/Popover.tsx +0 -1
  239. package/src/components/RadioGroup/RadioGroup.tsx +14 -20
  240. package/src/components/RadioGroupField/RadioGroupField.tsx +16 -11
  241. package/src/components/SearchBar/SearchBar.tsx +0 -1
  242. package/src/components/SegmentedControl/SegmentedControl.tsx +0 -1
  243. package/src/components/Select/Select.tsx +13 -14
  244. package/src/components/Select/SelectExample.tsx +7 -4
  245. package/src/components/SelectField/SelectField.rtl.test.tsx +7 -18
  246. package/src/components/SelectField/SelectField.tsx +10 -6
  247. package/src/components/Slider/Slider.tsx +1 -2
  248. package/src/components/Snackbar/Snackbar.tsx +0 -1
  249. package/src/components/Switch/Switch.tsx +0 -1
  250. package/src/components/TabGroup/TabGroup.tsx +0 -1
  251. package/src/components/TabList/TabList.tsx +0 -1
  252. package/src/components/TabList/tab-list.scss +1 -0
  253. package/src/components/Table/table.scss +2 -1
  254. package/src/components/Textarea/Textarea.tsx +8 -17
  255. package/src/components/Textarea/TextareaExample.tsx +3 -5
  256. package/src/components/TextareaField/TextareaField.tsx +10 -6
  257. package/src/components/TimePicker/TimePicker.tsx +12 -15
  258. package/src/components/TimePicker/TimePickerExample.tsx +3 -5
  259. package/src/components/TimePickerField/TimePickerField.tsx +10 -6
  260. package/src/types/common.ts +8 -0
  261. package/src/utils/demo.ts +1 -1
  262. package/dist/components/Field/FieldDescription.d.ts +0 -9
  263. package/dist/components/Field/FieldDescription.js +0 -13
  264. package/dist/components/Field/FieldDescription.js.map +0 -1
  265. package/dist/components/Field/FieldError.d.ts +0 -11
  266. package/dist/components/Field/FieldError.js +0 -14
  267. package/dist/components/Field/FieldError.js.map +0 -1
  268. package/dist/components/Field/FieldLabel.d.ts +0 -21
  269. package/dist/components/Field/FieldLabel.js +0 -14
  270. package/dist/components/Field/FieldLabel.js.map +0 -1
  271. package/dist/components/FormField/FormField.d.ts +0 -66
  272. package/dist/components/FormField/FormField.js +0 -31
  273. package/dist/components/FormField/FormField.js.map +0 -1
  274. package/dist/components/FormField/FormFieldExample.d.ts +0 -9
  275. package/dist/components/FormField/FormFieldExample.js +0 -99
  276. package/dist/components/FormField/FormFieldExample.js.map +0 -1
  277. package/dist/components/FormField/index.d.ts +0 -1
  278. package/dist/components/FormField/index.js +0 -2
  279. package/dist/components/FormField/index.js.map +0 -1
  280. package/dist/components/Input/InputElement.d.ts +0 -82
  281. package/dist/components/Input/InputElement.js +0 -64
  282. package/dist/components/Input/InputElement.js.map +0 -1
  283. package/src/components/Field/FieldDescription.tsx +0 -17
  284. package/src/components/Field/FieldError.tsx +0 -25
  285. package/src/components/Field/FieldLabel.tsx +0 -44
  286. package/src/components/FormField/FormField.rtl.test.tsx +0 -20
  287. package/src/components/FormField/FormField.tsx +0 -95
  288. package/src/components/FormField/FormFieldExample.tsx +0 -277
  289. package/src/components/FormField/index.tsx +0 -1
  290. package/src/components/Input/InputElement.tsx +0 -192
@@ -5,8 +5,7 @@ import { format, startOfToday } from 'date-fns';
5
5
  import { useMemo, useState } from 'react';
6
6
  import { Button } from '../Button';
7
7
  import { Calendar, parseDate } from '../Calendar';
8
- import { useFieldInit } from '../Field';
9
- import { InputElement } from '../Input';
8
+ import { Input } from '../Input';
10
9
  import { useFloating } from '../../hooks/useFloating';
11
10
  import { useOutsideClick } from '../../hooks/useOutsideClick';
12
11
  /**
@@ -16,19 +15,15 @@ import { useOutsideClick } from '../../hooks/useOutsideClick';
16
15
  * For a more complete example with field usage, see the DatePickerField component.
17
16
  *
18
17
  * @example
19
- * import { DatePicker } from '@bspk/ui/DatePicker';
20
- * import { Field, FieldLabel } from '@bspk/ui/Field';
21
- * import { useState } from 'react';
18
+ * import { DatePicker } from '.';
22
19
  *
23
20
  * () => {
24
21
  * const [fieldDate, setFieldDate] = useState<string>();
25
22
  *
26
23
  * return (
27
24
  * <div style={{ width: 320 }}>
28
- * <Field>
29
- * <FieldLabel>Date</FieldLabel>
30
- * <DatePicker name="date1" onChange={setFieldDate} required value={fieldDate} />
31
- * <FieldDescription>The date picker allows you to select a date.</FieldDescription>
25
+ * <Field controlId="date1" helperText="The date picker allows you to select a date." label="Date">
26
+ * <DatePicker id="date1" name="date1" onChange={setFieldDate} required value={fieldDate} />
32
27
  * </Field>
33
28
  * </div>
34
29
  * );
@@ -37,14 +32,7 @@ import { useOutsideClick } from '../../hooks/useOutsideClick';
37
32
  * @name DatePicker
38
33
  * @phase Stable
39
34
  */
40
- export function DatePicker({ value, onChange, disabled, readOnly, closeCalendarOnChange = true, name, placeholder, invalid: invalidProp, required = false, size, id: idProp, 'aria-label': ariaLabel = 'Enter or choose date', }) {
41
- const { id, ariaDescribedBy, ariaErrorMessage, invalid } = useFieldInit({
42
- idProp,
43
- required,
44
- disabled,
45
- readOnly,
46
- invalidProp,
47
- });
35
+ export function DatePicker({ value, onChange, disabled, readOnly, closeCalendarOnChange = true, name, placeholder, invalid, required = false, size, id, 'aria-label': ariaLabel = 'Enter or choose date', 'aria-describedby': ariaDescribedBy, 'aria-errormessage': ariaErrorMessage, }) {
48
36
  const [calendarVisible, setCalendarVisible] = useState(false);
49
37
  const { elements, floatingStyles } = useFloating({
50
38
  placement: 'bottom-start',
@@ -61,7 +49,7 @@ export function DatePicker({ value, onChange, disabled, readOnly, closeCalendarO
61
49
  const activeDate = useMemo(() => parseDate(value) || startOfToday(), [value]);
62
50
  return (_jsxs("div", { "data-bspk": "date-picker", ref: (node) => {
63
51
  elements.setReference(node);
64
- }, children: [_jsx(InputElement, { "aria-describedby": ariaDescribedBy || undefined, "aria-errormessage": ariaErrorMessage || undefined, "aria-label": ariaLabel, disabled: disabled || undefined, id: id, invalid: invalid || undefined, name: name, onChange: onChange, placeholder: placeholder || 'mm/dd/yyyy', readOnly: readOnly, required: required, showClearButton: false, size: size, trailing: !disabled &&
52
+ }, children: [_jsx(Input, { "aria-describedby": ariaDescribedBy || undefined, "aria-errormessage": ariaErrorMessage || undefined, "aria-label": ariaLabel, disabled: disabled || undefined, id: id, invalid: invalid || undefined, name: name, onChange: onChange, placeholder: placeholder || 'mm/dd/yyyy', readOnly: readOnly, required: required, showClearButton: false, size: size, trailing: !disabled &&
65
53
  !readOnly && (_jsx(Button, { icon: _jsx(SvgEvent, {}), iconOnly: true, label: "Toggle calendar", onClick: () => setCalendarVisible((prev) => !prev), variant: "tertiary" })), value: typeof value === 'string' ? value : '' }), calendarVisible && (_jsx("div", { "aria-label": "Choose Date", "aria-modal": "true", "data-bspk": "calendar-popup", ref: (node) => elements.setFloating(node), role: "dialog", style: { ...floatingStyles }, children: _jsx(Calendar, { focusTrap: true, id: calendarId, onChange: (next) => {
66
54
  if (closeCalendarOnChange)
67
55
  setCalendarVisible(false);
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../../src/components/DatePicker/DatePicker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../../src/components/DatePicker/DatePicker.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
3
  import { DatePicker } from '.';
4
- import { Field, FieldLabel, FieldDescription } from '../Field';
4
+ import { Field } from '../Field';
5
5
  export const DatePickerExample = {
6
6
  containerStyle: { width: 320, padding: 0 },
7
7
  defaultState: {
@@ -13,6 +13,6 @@ export const DatePickerExample = {
13
13
  };
14
14
  export const Usage = () => {
15
15
  const [fieldDate, setFieldDate] = useState();
16
- return (_jsx("div", { style: { width: 320 }, children: _jsxs(Field, { children: [_jsx(FieldLabel, { children: "Date" }), _jsx(DatePicker, { name: "date1", onChange: setFieldDate, required: true, value: fieldDate }), _jsx(FieldDescription, { children: "The date picker allows you to select a date." })] }) }));
16
+ return (_jsx("div", { style: { width: 320 }, children: _jsx(Field, { controlId: "date1", helperText: "The date picker allows you to select a date.", label: "Date", children: _jsx(DatePicker, { id: "date1", name: "date1", onChange: setFieldDate, required: true, value: fieldDate }) }) }));
17
17
  };
18
18
  //# sourceMappingURL=DatePickerExample.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerExample.js","sourceRoot":"","sources":["../../../src/components/DatePicker/DatePickerExample.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,UAAU,EAAmB,MAAM,GAAG,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGzE,MAAM,CAAC,MAAM,iBAAiB,GAAsC;IAChE,cAAc,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE;IAC1C,YAAY,EAAE;QACV,KAAK,EAAE,YAAY;QACnB,YAAY,EAAE,aAAa;KAC9B;IACD,YAAY,EAAE,EAAE;IAEhB,QAAQ,EAAE,KAAK;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE;IACtB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAU,CAAC;IAErD,OAAO,CACH,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,YACtB,MAAC,KAAK,eACF,KAAC,UAAU,uBAAkB,EAC7B,KAAC,UAAU,IAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,QAAC,KAAK,EAAE,SAAS,GAAI,EAC9E,KAAC,gBAAgB,+DAAgE,IAC7E,GACN,CACT,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"DatePickerExample.js","sourceRoot":"","sources":["../../../src/components/DatePicker/DatePickerExample.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,UAAU,EAAmB,MAAM,GAAG,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,MAAM,CAAC,MAAM,iBAAiB,GAAsC;IAChE,cAAc,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE;IAC1C,YAAY,EAAE;QACV,KAAK,EAAE,YAAY;QACnB,YAAY,EAAE,aAAa;KAC9B;IACD,YAAY,EAAE,EAAE;IAEhB,QAAQ,EAAE,KAAK;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE;IACtB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAU,CAAC;IAErD,OAAO,CACH,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,YACtB,KAAC,KAAK,IAAC,SAAS,EAAC,OAAO,EAAC,UAAU,EAAC,8CAA8C,EAAC,KAAK,EAAC,MAAM,YAC3F,KAAC,UAAU,IAAC,EAAE,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,QAAC,KAAK,EAAE,SAAS,GAAI,GACrF,GACN,CACT,CAAC;AACN,CAAC,CAAC"}
@@ -1,15 +1,15 @@
1
1
  import { DatePickerProps } from '-/components/DatePicker';
2
- import { FormFieldControlProps } from '-/components/FormField';
3
- export type DatePickerFieldProps = FormFieldControlProps<DatePickerProps>;
2
+ import { FieldControlProps } from '-/components/Field';
3
+ export type DatePickerFieldProps = FieldControlProps<DatePickerProps>;
4
4
  /**
5
5
  * A field wrapper for the DatePicker component.
6
6
  *
7
7
  * This component takes properties from the FormField and DatePicker components.
8
8
  *
9
9
  * @name DatePickerField
10
- * @phase Stable
10
+ * @phase UXReview
11
11
  *
12
12
  * @generated
13
13
  */
14
- export declare function DatePickerField({ label, helperText, labelTrailing, errorMessage, style, ...controlProps }: DatePickerFieldProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function DatePickerField({ label, helperText, labelTrailing, errorMessage, style, id: idProp, ...controlProps }: DatePickerFieldProps): import("react/jsx-runtime").JSX.Element;
15
15
  /** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
@@ -1,17 +1,19 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { DatePicker } from '../DatePicker';
3
- import { FormField } from '../FormField';
3
+ import { Field, propsWithAria } from '../Field';
4
+ import { useId } from '../../hooks/useId';
4
5
  /**
5
6
  * A field wrapper for the DatePicker component.
6
7
  *
7
8
  * This component takes properties from the FormField and DatePicker components.
8
9
  *
9
10
  * @name DatePickerField
10
- * @phase Stable
11
+ * @phase UXReview
11
12
  *
12
13
  * @generated
13
14
  */
14
- export function DatePickerField({ label, helperText, labelTrailing, errorMessage, style, ...controlProps }) {
15
- return (_jsx(FormField, { errorMessage: errorMessage, helperText: helperText, label: label, labelTrailing: labelTrailing, style: style, children: _jsx(DatePicker, { ...controlProps }) }));
15
+ export function DatePickerField({ label, helperText, labelTrailing, errorMessage, style, id: idProp, ...controlProps }) {
16
+ const id = useId(idProp);
17
+ return (_jsx(Field, { controlId: id, errorMessage: errorMessage, helperText: helperText, label: label, labelTrailing: labelTrailing, style: style, children: _jsx(DatePicker, { ...propsWithAria({ id, controlProps, errorMessage, helperText }) }) }));
16
18
  }
17
19
  //# sourceMappingURL=DatePickerField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerField.js","sourceRoot":"","sources":["../../../src/components/DatePickerField/DatePickerField.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAyB,MAAM,wBAAwB,CAAC;AAI1E;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,EAC5B,KAAK,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,KAAK,EACL,GAAG,YAAY,EACI;IACnB,OAAO,CACH,KAAC,SAAS,IACN,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,KAAK,YAEZ,KAAC,UAAU,OAAK,YAAY,GAAI,GACxB,CACf,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"DatePickerField.js","sourceRoot":"","sources":["../../../src/components/DatePickerField/DatePickerField.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAqB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAItC;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,EAC5B,KAAK,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,KAAK,EACL,EAAE,EAAE,MAAM,EACV,GAAG,YAAY,EACI;IACnB,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,CACH,KAAC,KAAK,IACF,SAAS,EAAE,EAAE,EACb,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,KAAK,YAEZ,KAAC,UAAU,OAAK,aAAa,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,GAAI,GAC7E,CACX,CAAC;AACN,CAAC"}
@@ -55,8 +55,7 @@ export type DialogProps = CommonProps<'id' | 'owner'> & Pick<PortalProps, 'conta
55
55
  * Also known as: Tray, Drawer, Flyout, Sheet
56
56
  *
57
57
  * @example
58
- * import { Dialog } from '@bspk/ui/Dialog';
59
- * import { Button } from '@bspk/ui/Button';
58
+ * import { Dialog } from '-/components/Dialog';
60
59
  *
61
60
  * () => {
62
61
  * const [open, setOpen] = useState(false);
@@ -67,7 +66,7 @@ export type DialogProps = CommonProps<'id' | 'owner'> & Pick<PortalProps, 'conta
67
66
  * <Dialog onClose={() => setOpen(false)} open={open}>
68
67
  * <div style={{ padding: 'var(--spacing-sizing-04)' }}>
69
68
  * <Flex align="center" justify="space-between">
70
- * <h4>Dialog Title</h4>
69
+ * <h1>Dialog Title</h1>
71
70
  * <Button
72
71
  * icon={<SvgClose />}
73
72
  * iconOnly
@@ -14,8 +14,7 @@ import { useId } from '../../hooks/useId';
14
14
  * Also known as: Tray, Drawer, Flyout, Sheet
15
15
  *
16
16
  * @example
17
- * import { Dialog } from '@bspk/ui/Dialog';
18
- * import { Button } from '@bspk/ui/Button';
17
+ * import { Dialog } from '.';
19
18
  *
20
19
  * () => {
21
20
  * const [open, setOpen] = useState(false);
@@ -26,7 +25,7 @@ import { useId } from '../../hooks/useId';
26
25
  * <Dialog onClose={() => setOpen(false)} open={open}>
27
26
  * <div style={{ padding: 'var(--spacing-sizing-04)' }}>
28
27
  * <Flex align="center" justify="space-between">
29
- * <h4>Dialog Title</h4>
28
+ * <h1>Dialog Title</h1>
30
29
  * <Button
31
30
  * icon={<SvgClose />}
32
31
  * iconOnly
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAa,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAkDtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,UAAU,MAAM,CAAC,EACnB,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,IAAI,GAAG,KAAK,EACZ,SAAS,GAAG,QAAQ,EACpB,SAAS,GAAG,IAAI,EAChB,SAAS,GAAG,KAAK,EACjB,EAAE,EAAE,MAAM,EACV,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,GAAG,cAAc,EACc;IAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAEnD,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAElH,SAAS,CAAC,GAAG,EAAE;QACX,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpD,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC7C,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAC3D,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAE1B,OAAO,CACH,IAAI,IAAI,CACJ,MAAC,MAAM,IAAC,SAAS,EAAE,SAAS,aACxB,iBACQ,cAAc,eACR,QAAQ,qBACD,KAAK,IAAI,SAAS,oBACnB,CAAC,CAAC,SAAS,IAAI,SAAS,oBACxB,SAAS,EACzB,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,cAAc,YAEnB,KAAC,SAAS,IACN,MAAM,EAAE,CAAC,gBAAgB,EACzB,gBAAgB,EAAE;wBACd,uBAAuB,EAAE,IAAI;wBAC7B,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAQ;qBACvC,YAED,0DAEqB,SAAS,EAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;4BACV,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;wBAC1B,CAAC,EACD,QAAQ,EAAE,CAAC,CAAC,YAEX,QAAQ,GACP,GACE,GACV,EACN,KAAC,KAAK,IACF,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EACxB,KAAK,EAAC,QAAQ,EACd,OAAO,EAAE,SAAS,KAAK,KAAK,GAC9B,IACG,CACZ,CACJ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAa,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,MAAM,EAAe,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAkDtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,MAAM,CAAC,EACnB,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,IAAI,GAAG,KAAK,EACZ,SAAS,GAAG,QAAQ,EACpB,SAAS,GAAG,IAAI,EAChB,SAAS,GAAG,KAAK,EACjB,EAAE,EAAE,MAAM,EACV,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,GAAG,cAAc,EACc;IAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAEnD,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAElH,SAAS,CAAC,GAAG,EAAE;QACX,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpD,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC7C,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAC3D,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAE1B,OAAO,CACH,IAAI,IAAI,CACJ,MAAC,MAAM,IAAC,SAAS,EAAE,SAAS,aACxB,iBACQ,cAAc,eACR,QAAQ,qBACD,KAAK,IAAI,SAAS,oBACnB,CAAC,CAAC,SAAS,IAAI,SAAS,oBACxB,SAAS,EACzB,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,cAAc,YAEnB,KAAC,SAAS,IACN,MAAM,EAAE,CAAC,gBAAgB,EACzB,gBAAgB,EAAE;wBACd,uBAAuB,EAAE,IAAI;wBAC7B,aAAa,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAQ;qBACvC,YAED,0DAEqB,SAAS,EAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;4BACV,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;wBAC1B,CAAC,EACD,QAAQ,EAAE,CAAC,CAAC,YAEX,QAAQ,GACP,GACE,GACV,EACN,KAAC,KAAK,IACF,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EACxB,KAAK,EAAC,QAAQ,EACd,OAAO,EAAE,SAAS,KAAK,KAAK,GAC9B,IACG,CACZ,CACJ,CAAC;AACN,CAAC"}
@@ -35,12 +35,15 @@ export type FabProps<As extends ElementType = ElementType> = Pick<ButtonProps<As
35
35
  * bottom right of a screen.
36
36
  *
37
37
  * @example
38
- * import { SvgBolt } from '@bspk/icons/Bolt';
39
- * import { Fab } from '@bspk/ui/Fab';
38
+ * import { Fab } from '-/components/Fab';
40
39
  *
41
- * <div style={{ width: '100%', height: 100 }}>
42
- * <Fab icon={<SvgBolt />} label="Example label" placement="bottom-right" variant="neutral" />
43
- * </div>;
40
+ * () => {
41
+ * return (
42
+ * <div style={{ width: '100%', height: 100 }}>
43
+ * <Fab icon={<SvgBolt />} label="Example label" placement="bottom-right" variant="neutral" />
44
+ * </div>
45
+ * );
46
+ * };
44
47
  *
45
48
  * @name Fab
46
49
  * @phase Stable
@@ -7,12 +7,15 @@ import { Tooltip } from '../Tooltip';
7
7
  * bottom right of a screen.
8
8
  *
9
9
  * @example
10
- * import { SvgBolt } from '@bspk/icons/Bolt';
11
- * import { Fab } from '@bspk/ui/Fab';
10
+ * import { Fab } from '.';
12
11
  *
13
- * <div style={{ width: '100%', height: 100 }}>
14
- * <Fab icon={<SvgBolt />} label="Example label" placement="bottom-right" variant="neutral" />
15
- * </div>;
12
+ * () => {
13
+ * return (
14
+ * <div style={{ width: '100%', height: 100 }}>
15
+ * <Fab icon={<SvgBolt />} label="Example label" placement="bottom-right" variant="neutral" />
16
+ * </div>
17
+ * );
18
+ * };
16
19
  *
17
20
  * @name Fab
18
21
  * @phase Stable
@@ -1 +1 @@
1
- {"version":3,"file":"Fab.js","sourceRoot":"","sources":["../../../src/components/Fab/Fab.tsx"],"names":[],"mappings":";AAAA,OAAO,YAAY,CAAC;AACpB,OAAO,EAA+B,cAAc,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAuB,MAAM,sBAAsB,CAAC;AAsCpE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,GAAG,CAAuC,KAAsD;IAC5G,MAAM,EACF,YAAY,EAAE,SAAS,EACvB,IAAI,GAAG,OAAO,EACd,OAAO,GAAG,SAAS,EACnB,QAAQ,EAAE,YAAY,GAAG,KAAK,EAC9B,EAAE,EAAE,EAAE,GAAG,QAAQ,EACjB,SAAS,GAAG,cAAc,EAC1B,SAAS,GAAG,OAAO,EACnB,KAAK,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,GAAG,UAAU,EAChB,GAAG,KAAK,CAAC;IAEV,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,YAAY,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;IAEjD,MAAM,MAAM,GAAG,CAAC,YAAiC,EAAE,EAAE,CAAC,CAClD,MAAC,EAAE,OACK,UAAU,KACV,YAAY,gBACJ,SAAS,IAAI,KAAK,eACpB,KAAK,oBACC,SAAS,oBACT,SAAS,mBACV,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,gBAC9C,QAAQ,IAAI,SAAS,eACtB,IAAI,kBACD,OAAO,EACrB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACV,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACxB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,EACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACX,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YACzB,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,EACD,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAChB,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC;YAC9B,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,EACD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7B,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,EACD,GAAG,EAAE,QAAQ,aAEZ,CAAC,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAC/B,8BAAmB,IAAI,mCAClB,IAAI,GACF,CACV,EACA,CAAC,QAAQ,IAAI,iDAAsB,KAAK,GAAQ,IAChD,CACR,CAAC;IAEF,IAAI,OAAO,IAAI,QAAQ;QACnB,OAAO,CACH,KAAC,OAAO,IAAC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,SAAS,EAAC,KAAK,YAC5C,MAAM,GACD,CACb,CAAC;IAEN,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"Fab.js","sourceRoot":"","sources":["../../../src/components/Fab/Fab.tsx"],"names":[],"mappings":";AAAA,OAAO,YAAY,CAAC;AACpB,OAAO,EAA+B,cAAc,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAuB,MAAM,sBAAsB,CAAC;AAsCpE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,GAAG,CAAuC,KAAsD;IAC5G,MAAM,EACF,YAAY,EAAE,SAAS,EACvB,IAAI,GAAG,OAAO,EACd,OAAO,GAAG,SAAS,EACnB,QAAQ,EAAE,YAAY,GAAG,KAAK,EAC9B,EAAE,EAAE,EAAE,GAAG,QAAQ,EACjB,SAAS,GAAG,cAAc,EAC1B,SAAS,GAAG,OAAO,EACnB,KAAK,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,GAAG,UAAU,EAChB,GAAG,KAAK,CAAC;IAEV,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,YAAY,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;IAEjD,MAAM,MAAM,GAAG,CAAC,YAAiC,EAAE,EAAE,CAAC,CAClD,MAAC,EAAE,OACK,UAAU,KACV,YAAY,gBACJ,SAAS,IAAI,KAAK,eACpB,KAAK,oBACC,SAAS,oBACT,SAAS,mBACV,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,gBAC9C,QAAQ,IAAI,SAAS,eACtB,IAAI,kBACD,OAAO,EACrB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACV,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACxB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,EACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACX,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YACzB,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,EACD,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAChB,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC;YAC9B,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,EACD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7B,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,EACD,GAAG,EAAE,QAAQ,aAEZ,CAAC,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAC/B,8BAAmB,IAAI,mCAClB,IAAI,GACF,CACV,EACA,CAAC,QAAQ,IAAI,iDAAsB,KAAK,GAAQ,IAChD,CACR,CAAC;IAEF,IAAI,OAAO,IAAI,QAAQ;QACnB,OAAO,CACH,KAAC,OAAO,IAAC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,SAAS,EAAC,KAAK,YAC5C,MAAM,GACD,CACb,CAAC;IAEN,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC"}
@@ -85,6 +85,7 @@
85
85
  }
86
86
  [data-pseudo=focus] > [data-bspk=fab], [data-bspk=fab]:focus-visible {
87
87
  outline: solid 2px var(--stroke-neutral-focus);
88
+ isolation: isolate;
88
89
  }
89
90
  [data-bspk=fab][data-round] {
90
91
  border-radius: var(--radius-full);
@@ -88,6 +88,7 @@ style.appendChild(document.createTextNode(`[data-bspk=fab] {
88
88
  }
89
89
  [data-pseudo=focus] > [data-bspk=fab], [data-bspk=fab]:focus-visible {
90
90
  outline: solid 2px var(--stroke-neutral-focus);
91
+ isolation: isolate;
91
92
  }
92
93
  [data-bspk=fab][data-round] {
93
94
  border-radius: var(--radius-full);
@@ -1,23 +1,40 @@
1
1
  import './field.scss';
2
- import { ElementType, ReactNode } from 'react';
3
- import { ElementProps } from '-/types/common';
4
- export type FieldProps<As extends ElementType = ElementType> = {
2
+ import { ReactNode } from 'react';
3
+ import { CommonProps } from '-/types/common';
4
+ export type FieldControlProps<P extends Record<string, unknown>> = Omit<FieldProps, 'children' | 'controlId'> & Omit<P, keyof FieldProps>;
5
+ export type FieldProps = CommonProps<'style'> & {
6
+ /** Displays an error message and marks the field as invalid. */
7
+ errorMessage?: string;
5
8
  /**
6
- * The children of the form field. This should be a control such as DatePicker, Input, InputNumber, InputPhone,
7
- * Password, Select, Textarea, or TimePicker.
9
+ * The label of the field.
10
+ *
11
+ * @required
12
+ */
13
+ label: string;
14
+ /**
15
+ * This text provides additional context or instructions for the field.
16
+ *
17
+ * If an errorMessage is present, the helperText will not be displayed.
18
+ */
19
+ helperText?: string;
20
+ /** The trailing element of the label. */
21
+ labelTrailing?: string;
22
+ /** Marks the field as required. */
23
+ required?: boolean;
24
+ /**
25
+ * The children of the field. This should be a control such as DatePicker, Input, InputNumber, InputPhone, Password,
26
+ * Select, Textarea, or TimePicker.
8
27
  *
9
28
  * @required
10
29
  */
11
30
  children: ReactNode;
12
31
  /**
13
- * The element type to render the field as.
32
+ * The id attribute of the form control rendered in children (e.g., Input, Select, Textarea). Used to associate the
33
+ * label (htmlFor) with the control for accessibility. Must exactly match the control's id.
14
34
  *
15
- * @default div
16
- * @type ElementType
35
+ * @required
17
36
  */
18
- as?: As;
19
- /** The unique id for the field. */
20
- id?: string;
37
+ controlId: string;
21
38
  };
22
39
  /**
23
40
  * Wrapper component for form controls.
@@ -27,25 +44,22 @@ export type FieldProps<As extends ElementType = ElementType> = {
27
44
  *
28
45
  * @example
29
46
  * import { Input } from '@bspk/ui/Input';
30
- * import { Field, FieldLabel, FieldDescription, FieldError } from '@bspk/ui/Field';
47
+ * import { Field } from '@bspk/ui/Field';
31
48
  *
32
49
  * () => {
33
50
  * const [state, setState] = useState<string | undefined>(undefined);
34
- * const [error, setError] = useState<string | undefined>(undefined);
35
51
  *
36
52
  * return (
37
- * <Field label="Example label">
38
- * <FieldLabel>Example label</FieldLabel>
53
+ * <Field controlId="example-control-id" helperText="This is an example description." label="Example label">
39
54
  * <Input
40
55
  * aria-label="example aria-label"
56
+ * id="example-control-id"
41
57
  * name="example-text"
42
58
  * onChange={(next) => {
43
59
  * setState(next);
44
60
  * }}
45
61
  * value={state}
46
62
  * />
47
- * <FieldDescription>This is an example description.</FieldDescription>
48
- * {error && <FieldError>{error}</FieldError>}
49
63
  * </Field>
50
64
  * );
51
65
  * };
@@ -53,5 +67,5 @@ export type FieldProps<As extends ElementType = ElementType> = {
53
67
  * @name Field
54
68
  * @phase Utility
55
69
  */
56
- export declare function Field<As extends ElementType = ElementType>({ children, as, id: idProp, ...props }: ElementProps<FieldProps<As>, As>): import("react/jsx-runtime").JSX.Element;
70
+ export declare function Field({ children, label, helperText, labelTrailing, errorMessage, required, controlId: id, ...props }: FieldProps): import("react/jsx-runtime").JSX.Element;
57
71
  /** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
@@ -1,12 +1,7 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import './field.css.js';
3
- import { Children, isValidElement, useMemo, useState } from 'react';
4
- import { describedById, errorMessageId, fieldContext, labelledById } from './utils';
5
- import { randomString } from '../../utils/random';
6
- const isComponentName = (child, name) => {
7
- const componentType = child.type;
8
- return componentType.displayName === name || componentType.name === name;
9
- };
3
+ import { labelledById, errorMessageId, describedById } from './utils';
4
+ import { InlineAlert } from '../InlineAlert';
10
5
  /**
11
6
  * Wrapper component for form controls.
12
7
  *
@@ -15,25 +10,22 @@ const isComponentName = (child, name) => {
15
10
  *
16
11
  * @example
17
12
  * import { Input } from '@bspk/ui/Input';
18
- * import { Field, FieldLabel, FieldDescription, FieldError } from '@bspk/ui/Field';
13
+ * import { Field } from '@bspk/ui/Field';
19
14
  *
20
15
  * () => {
21
16
  * const [state, setState] = useState<string | undefined>(undefined);
22
- * const [error, setError] = useState<string | undefined>(undefined);
23
17
  *
24
18
  * return (
25
- * <Field label="Example label">
26
- * <FieldLabel>Example label</FieldLabel>
19
+ * <Field controlId="example-control-id" helperText="This is an example description." label="Example label">
27
20
  * <Input
28
21
  * aria-label="example aria-label"
22
+ * id="example-control-id"
29
23
  * name="example-text"
30
24
  * onChange={(next) => {
31
25
  * setState(next);
32
26
  * }}
33
27
  * value={state}
34
28
  * />
35
- * <FieldDescription>This is an example description.</FieldDescription>
36
- * {error && <FieldError>{error}</FieldError>}
37
29
  * </Field>
38
30
  * );
39
31
  * };
@@ -41,29 +33,7 @@ const isComponentName = (child, name) => {
41
33
  * @name Field
42
34
  * @phase Utility
43
35
  */
44
- export function Field({ children, as, id: idProp, ...props }) {
45
- const id = useMemo(() => idProp || `field-${randomString(8)}`, [idProp]);
46
- const childContext = useMemo(() => {
47
- const next = {};
48
- Children.forEach(children, (child) => {
49
- if (!isValidElement(child) || typeof child.type === 'string' || !child.props.children)
50
- return;
51
- if (isComponentName(child, 'FieldError'))
52
- next.ariaErrorMessage = errorMessageId(id);
53
- else if (isComponentName(child, 'FieldLabel'))
54
- next.ariaLabelledBy = labelledById(id);
55
- else if (isComponentName(child, 'FieldDescription'))
56
- next.ariaDescribedBy = describedById(id);
57
- });
58
- return next;
59
- }, [children, id]);
60
- const [contextState, setContext] = useState({});
61
- const As = as || 'div';
62
- return (_jsx(fieldContext.Provider, { value: {
63
- ...childContext,
64
- ...contextState,
65
- id,
66
- setContext,
67
- }, children: _jsx(As, { ...props, "data-bspk-utility": "field", id: id, role: "group", children: children }) }));
36
+ export function Field({ children, label, helperText, labelTrailing, errorMessage, required, controlId: id, ...props }) {
37
+ return (_jsxs("div", { ...props, "data-bspk-utility": "field", role: "group", children: [_jsxs("label", { "data-field-label": true, htmlFor: id, id: labelledById(id), children: [_jsx("span", { children: label }), required && _jsx("span", { "data-required": true, children: ' (Required)' }), labelTrailing && (_jsx("span", { "aria-hidden": true, "data-trailing": true, children: labelTrailing }))] }), children, errorMessage ? (_jsx(InlineAlert, { id: errorMessageId(id), label: errorMessage, owner: "field-error", variant: "error" })) : (helperText && (_jsx("p", { "data-field-description": true, id: describedById(id), children: helperText })))] }));
68
38
  }
69
39
  //# sourceMappingURL=Field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","sourceRoot":"","sources":["../../../src/components/Field/Field.tsx"],"names":[],"mappings":";AAAA,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAe,cAAc,EAAa,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5F,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAgB,YAAY,EAAE,MAAM,SAAS,CAAC;AAElG,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAqB9C,MAAM,eAAe,GAAG,CACpB,KAAqG,EACrG,IAAY,EACd,EAAE;IACA,MAAM,aAAa,GAAG,KAAK,CAAC,IAA+C,CAAC;IAC5E,OAAO,aAAa,CAAC,WAAW,KAAK,IAAI,IAAI,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC;AAC7E,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,KAAK,CAAuC,EACxD,QAAQ,EACR,EAAE,EACF,EAAE,EAAE,MAAM,EACV,GAAG,KAAK,EACuB;IAC/B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,IAAI,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAkF,EAAE,CAAC;QAC/F,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ;gBAAE,OAAO;YAE9F,IAAI,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC;gBAAE,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;iBAChF,IAAI,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC;gBAAE,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;iBACjF,IAAI,eAAe,CAAC,KAAK,EAAE,kBAAkB,CAAC;gBAAE,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;QAClG,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAEnB,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA6C,EAAE,CAAC,CAAC;IAE5F,MAAM,EAAE,GAAG,EAAE,IAAI,KAAK,CAAC;IAEvB,OAAO,CACH,KAAC,YAAY,CAAC,QAAQ,IAClB,KAAK,EAAE;YACH,GAAG,YAAY;YACf,GAAG,YAAY;YACf,EAAE;YACF,UAAU;SACb,YAED,KAAC,EAAE,OAAK,KAAK,uBAAoB,OAAO,EAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAC,OAAO,YACxD,QAAQ,GACR,GACe,CAC3B,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"Field.js","sourceRoot":"","sources":["../../../src/components/Field/Field.tsx"],"names":[],"mappings":";AAAA,OAAO,cAAc,CAAC;AAGtB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAyCvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,KAAK,CAAC,EAClB,QAAQ,EACR,KAAK,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,SAAS,EAAE,EAAE,EACb,GAAG,KAAK,EACC;IACT,OAAO,CACH,kBAAS,KAAK,uBAAoB,OAAO,EAAC,IAAI,EAAC,OAAO,aAClD,2CAAwB,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,aACrD,yBAAO,KAAK,GAAQ,EACnB,QAAQ,IAAI,gDAAqB,aAAa,GAAQ,EACtD,aAAa,IAAI,CACd,qEACK,aAAa,GACX,CACV,IACG,EACP,QAAQ,EACR,YAAY,CAAC,CAAC,CAAC,CACZ,KAAC,WAAW,IAAC,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,GAAG,CACnG,CAAC,CAAC,CAAC,CACA,UAAU,IAAI,CACV,4CAA0B,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,YAC1C,UAAU,GACX,CACP,CACJ,IACC,CACT,CAAC;AACN,CAAC"}
@@ -3,3 +3,4 @@ import { ComponentExample } from '-/utils/demo';
3
3
  export declare const FieldExample: ComponentExample<FieldProps & {
4
4
  value?: string;
5
5
  }>;
6
+ export declare const Usage: () => import("react/jsx-runtime").JSX.Element;
@@ -1,10 +1,17 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Field, FieldDescription, FieldError, FieldLabel } from './';
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Field } from './';
3
4
  import { Input } from '../Input';
4
5
  import { randomString } from '../../utils/random';
5
6
  export const FieldExample = {
6
7
  render: ({ props, setState }) => {
7
- return (_jsxs(Field, { ...props, children: [_jsx(FieldLabel, { children: "Example label" }), _jsx(Input, { name: `example-${randomString(6)}`, onChange: (next) => setState({ value: next }), value: props.value }), _jsx(FieldDescription, { children: "This is an example description." }), _jsx(FieldError, { children: "This is an error message." })] }));
8
+ return (_jsx(Field, { ...props, errorMessage: "This is an error message.", helperText: "This is an example description.", label: "Example label", children: _jsx(Input, { id: props.controlId, name: `example-${randomString(6)}`, onChange: (next) => setState({ value: next }), value: props.value }) }));
8
9
  },
9
10
  };
11
+ export const Usage = () => {
12
+ const [state, setState] = useState(undefined);
13
+ return (_jsx(Field, { controlId: "example-control-id", helperText: "This is an example description.", label: "Example label", children: _jsx(Input, { "aria-label": "example aria-label", id: "example-control-id", name: "example-text", onChange: (next) => {
14
+ setState(next);
15
+ }, value: state }) }));
16
+ };
10
17
  //# sourceMappingURL=FieldExample.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldExample.js","sourceRoot":"","sources":["../../../src/components/Field/FieldExample.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAc,MAAM,IAAI,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,YAAY,GAAsD;IAC3E,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC5B,OAAO,CACH,MAAC,KAAK,OAAK,KAAK,aACZ,KAAC,UAAU,gCAA2B,EACtC,KAAC,KAAK,IACF,IAAI,EAAE,WAAW,YAAY,CAAC,CAAC,CAAC,EAAE,EAClC,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACrD,KAAK,EAAE,KAAK,CAAC,KAAK,GACpB,EACF,KAAC,gBAAgB,kDAAmD,EACpE,KAAC,UAAU,4CAAuC,IAC9C,CACX,CAAC;IACN,CAAC;CACJ,CAAC"}
1
+ {"version":3,"file":"FieldExample.js","sourceRoot":"","sources":["../../../src/components/Field/FieldExample.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,EAAc,MAAM,IAAI,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,YAAY,GAAsD;IAC3E,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC5B,OAAO,CACH,KAAC,KAAK,OACE,KAAK,EACT,YAAY,EAAC,2BAA2B,EACxC,UAAU,EAAC,iCAAiC,EAC5C,KAAK,EAAC,eAAe,YAErB,KAAC,KAAK,IACF,EAAE,EAAE,KAAK,CAAC,SAAS,EACnB,IAAI,EAAE,WAAW,YAAY,CAAC,CAAC,CAAC,EAAE,EAClC,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACrD,KAAK,EAAE,KAAK,CAAC,KAAK,GACpB,GACE,CACX,CAAC;IACN,CAAC;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE;IACtB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAqB,SAAS,CAAC,CAAC;IAElE,OAAO,CACH,KAAC,KAAK,IAAC,SAAS,EAAC,oBAAoB,EAAC,UAAU,EAAC,iCAAiC,EAAC,KAAK,EAAC,eAAe,YACpG,KAAC,KAAK,kBACS,oBAAoB,EAC/B,EAAE,EAAC,oBAAoB,EACvB,IAAI,EAAC,cAAc,EACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC,EACD,KAAK,EAAE,KAAK,GACd,GACE,CACX,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,40 @@
1
+ import './field.scss';
2
+ import { FieldProps } from './Field';
3
+ /**
4
+ * Wrapper component for form controls.
5
+ *
6
+ * Children should be one of the following: DatePicker, Input, InputNumber, InputPhone, Password, Select, Textarea, or
7
+ * TimePicker.
8
+ *
9
+ * @example
10
+ * import { Input } from '@bspk/ui/Input';
11
+ * import { Fieldset } from '@bspk/ui/Field';
12
+ *
13
+ * () => {
14
+ * const [state, setState] = useState<string | undefined>(undefined);
15
+ * const [error, setError] = useState<string | undefined>(undefined);
16
+ *
17
+ * return (
18
+ * <Fieldset
19
+ * label="Example label"
20
+ * helperText="This is an example description."
21
+ * errorMessage={error}
22
+ * required
23
+ * >
24
+ * <Input
25
+ * aria-label="example aria-label"
26
+ * name="example-text"
27
+ * onChange={(next) => {
28
+ * setState(next);
29
+ * }}
30
+ * value={state}
31
+ * />
32
+ * </Fieldset>
33
+ * );
34
+ * };
35
+ *
36
+ * @name Fieldset
37
+ * @phase Utility
38
+ */
39
+ export declare function Fieldset({ children, label, helperText, labelTrailing, errorMessage, required, controlId: id, ...props }: FieldProps): import("react/jsx-runtime").JSX.Element;
40
+ /** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import './field.css.js';
3
+ import { labelledById, errorMessageId, describedById } from './utils';
4
+ import { InlineAlert } from '../InlineAlert';
5
+ /**
6
+ * Wrapper component for form controls.
7
+ *
8
+ * Children should be one of the following: DatePicker, Input, InputNumber, InputPhone, Password, Select, Textarea, or
9
+ * TimePicker.
10
+ *
11
+ * @example
12
+ * import { Input } from '@bspk/ui/Input';
13
+ * import { Fieldset } from '@bspk/ui/Field';
14
+ *
15
+ * () => {
16
+ * const [state, setState] = useState<string | undefined>(undefined);
17
+ * const [error, setError] = useState<string | undefined>(undefined);
18
+ *
19
+ * return (
20
+ * <Fieldset
21
+ * label="Example label"
22
+ * helperText="This is an example description."
23
+ * errorMessage={error}
24
+ * required
25
+ * >
26
+ * <Input
27
+ * aria-label="example aria-label"
28
+ * name="example-text"
29
+ * onChange={(next) => {
30
+ * setState(next);
31
+ * }}
32
+ * value={state}
33
+ * />
34
+ * </Fieldset>
35
+ * );
36
+ * };
37
+ *
38
+ * @name Fieldset
39
+ * @phase Utility
40
+ */
41
+ export function Fieldset({ children, label, helperText, labelTrailing, errorMessage, required, controlId: id, ...props }) {
42
+ return (_jsxs("fieldset", { ...props, "data-bspk-utility": "field", role: "group", children: [_jsxs("legend", { "data-field-label": true, id: labelledById(id), children: [_jsx("span", { children: label }), required && _jsx("span", { "data-required": true, children: ' (Required)' }), labelTrailing && (_jsx("span", { "aria-hidden": true, "data-trailing": true, children: labelTrailing }))] }), children, errorMessage ? (_jsx(InlineAlert, { id: errorMessageId(id), label: errorMessage, owner: "field-error", variant: "error" })) : (helperText && (_jsx("p", { "data-field-description": true, id: describedById(id), children: helperText })))] }));
43
+ }
44
+ //# sourceMappingURL=Fieldset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fieldset.js","sourceRoot":"","sources":["../../../src/components/Field/Fieldset.tsx"],"names":[],"mappings":";AAAA,OAAO,cAAc,CAAC;AAGtB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,QAAQ,CAAC,EACrB,QAAQ,EACR,KAAK,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,SAAS,EAAE,EAAE,EACb,GAAG,KAAK,EACC;IACT,OAAO,CACH,uBAAc,KAAK,uBAAoB,OAAO,EAAC,IAAI,EAAC,OAAO,aACvD,4CAAyB,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,aACzC,yBAAO,KAAK,GAAQ,EACnB,QAAQ,IAAI,gDAAqB,aAAa,GAAQ,EACtD,aAAa,IAAI,CACd,qEACK,aAAa,GACX,CACV,IACI,EACR,QAAQ,EACR,YAAY,CAAC,CAAC,CAAC,CACZ,KAAC,WAAW,IAAC,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,GAAG,CACnG,CAAC,CAAC,CAAC,CACA,UAAU,IAAI,CACV,4CAA0B,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,YAC1C,UAAU,GACX,CACP,CACJ,IACM,CACd,CAAC;AACN,CAAC"}
@@ -7,28 +7,26 @@
7
7
  max-width: 100%;
8
8
  min-inline-size: unset;
9
9
  }
10
-
11
- [data-bspk=field-label] {
10
+ [data-bspk-utility=field] [data-field-label] {
12
11
  display: flex;
13
12
  flex-direction: row;
14
13
  align-items: center;
15
14
  gap: var(--spacing-sizing-01);
16
15
  }
17
- [data-bspk=field-label] span {
16
+ [data-bspk-utility=field] [data-field-label] span {
18
17
  font: var(--labels-small);
19
18
  color: var(--foreground-neutral-on-surface);
20
19
  }
21
- [data-bspk=field-label] span[data-required] {
20
+ [data-bspk-utility=field] [data-field-label] span[data-required] {
22
21
  font: var(--body-small);
23
22
  color: var(--foreground-neutral-on-surface-variant-01);
24
23
  }
25
- [data-bspk=field-label] span[data-trailing] {
24
+ [data-bspk-utility=field] [data-field-label] span[data-trailing] {
26
25
  font: var(--body-small);
27
26
  color: var(--foreground-neutral-on-surface-variant-02);
28
27
  margin-left: auto;
29
28
  }
30
-
31
- [data-bspk=field-description] {
29
+ [data-bspk-utility=field] [data-field-description] {
32
30
  font: var(--body-small);
33
31
  color: var(--foreground-neutral-on-surface-variant-01);
34
32
  margin: 0;