@bspk/ui 1.3.22 → 1.3.24

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 (84) hide show
  1. package/dist/components/Breadcrumb/BreadcrumbDropdown.js +1 -1
  2. package/dist/components/Breadcrumb/BreadcrumbDropdown.js.map +1 -1
  3. package/dist/components/CheckboxGroup/checkbox-group.css +3 -0
  4. package/dist/components/CheckboxGroup/checkbox-group.css.js +3 -0
  5. package/dist/components/CheckboxGroupField/CheckboxGroupField.d.ts +2 -2
  6. package/dist/components/CheckboxGroupField/CheckboxGroupField.js +1 -1
  7. package/dist/components/CheckboxGroupField/CheckboxGroupField.js.map +1 -1
  8. package/dist/components/DatePickerField/DatePickerField.d.ts +2 -2
  9. package/dist/components/DatePickerField/DatePickerField.js +1 -1
  10. package/dist/components/DatePickerField/DatePickerField.js.map +1 -1
  11. package/dist/components/Field/Field.d.ts +8 -3
  12. package/dist/components/Field/Field.js +2 -2
  13. package/dist/components/Field/Field.js.map +1 -1
  14. package/dist/components/Field/Fieldset.d.ts +2 -2
  15. package/dist/components/Field/Fieldset.js +3 -3
  16. package/dist/components/Field/Fieldset.js.map +1 -1
  17. package/dist/components/Field/field.css +4 -0
  18. package/dist/components/Field/field.css.js +4 -0
  19. package/dist/components/Input/Input.d.ts +4 -5
  20. package/dist/components/Input/Input.js +2 -4
  21. package/dist/components/Input/Input.js.map +1 -1
  22. package/dist/components/InputField/InputField.d.ts +2 -2
  23. package/dist/components/InputField/InputField.js +1 -1
  24. package/dist/components/InputField/InputField.js.map +1 -1
  25. package/dist/components/InputNumberField/InputNumberField.d.ts +2 -2
  26. package/dist/components/InputNumberField/InputNumberField.js +1 -1
  27. package/dist/components/InputNumberField/InputNumberField.js.map +1 -1
  28. package/dist/components/InputPhoneField/InputPhoneField.d.ts +2 -2
  29. package/dist/components/InputPhoneField/InputPhoneField.js +1 -1
  30. package/dist/components/InputPhoneField/InputPhoneField.js.map +1 -1
  31. package/dist/components/Link/Link.d.ts +0 -1
  32. package/dist/components/Link/Link.js +0 -1
  33. package/dist/components/Link/Link.js.map +1 -1
  34. package/dist/components/PasswordField/PasswordField.d.ts +2 -2
  35. package/dist/components/PasswordField/PasswordField.js +1 -1
  36. package/dist/components/PasswordField/PasswordField.js.map +1 -1
  37. package/dist/components/RadioGroup/radio-group.css +3 -0
  38. package/dist/components/RadioGroup/radio-group.css.js +3 -0
  39. package/dist/components/RadioGroupField/RadioGroupField.d.ts +2 -2
  40. package/dist/components/RadioGroupField/RadioGroupField.js.map +1 -1
  41. package/dist/components/Select/select.css +0 -10
  42. package/dist/components/Select/select.css.js +0 -10
  43. package/dist/components/SelectField/SelectField.d.ts +2 -2
  44. package/dist/components/SelectField/SelectField.js +1 -1
  45. package/dist/components/SelectField/SelectField.js.map +1 -1
  46. package/dist/components/TextareaField/TextareaField.d.ts +2 -2
  47. package/dist/components/TextareaField/TextareaField.js +1 -1
  48. package/dist/components/TextareaField/TextareaField.js.map +1 -1
  49. package/dist/components/TimePickerField/TimePickerField.d.ts +2 -2
  50. package/dist/components/TimePickerField/TimePickerField.js +1 -1
  51. package/dist/components/TimePickerField/TimePickerField.js.map +1 -1
  52. package/dist/hooks/useFloating.d.ts +0 -6
  53. package/dist/hooks/useFloating.js +0 -6
  54. package/dist/hooks/useFloating.js.map +1 -1
  55. package/dist/styles/base.css +71 -81
  56. package/dist/styles/base.css.js +71 -81
  57. package/dist/types/common.d.ts +1 -0
  58. package/dist/types/common.js.map +1 -1
  59. package/package.json +1 -1
  60. package/src/components/Breadcrumb/BreadcrumbDropdown.tsx +7 -1
  61. package/src/components/CheckboxGroup/checkbox-group.scss +4 -0
  62. package/src/components/CheckboxGroupField/CheckboxGroupField.tsx +3 -2
  63. package/src/components/DatePickerField/DatePickerField.tsx +3 -2
  64. package/src/components/Field/Field.tsx +8 -3
  65. package/src/components/Field/Fieldset.tsx +25 -21
  66. package/src/components/Field/field.scss +5 -0
  67. package/src/components/Input/Input.tsx +4 -9
  68. package/src/components/InputField/InputField.tsx +3 -2
  69. package/src/components/InputNumberField/InputNumberField.tsx +3 -2
  70. package/src/components/InputPhoneField/InputPhoneField.tsx +3 -2
  71. package/src/components/Link/Link.tsx +0 -1
  72. package/src/components/PasswordField/PasswordField.tsx +3 -2
  73. package/src/components/RadioGroup/radio-group.scss +4 -0
  74. package/src/components/RadioGroupField/RadioGroupField.tsx +2 -2
  75. package/src/components/Select/select.scss +0 -12
  76. package/src/components/SelectField/SelectField.tsx +3 -2
  77. package/src/components/TextareaField/TextareaField.tsx +3 -2
  78. package/src/components/TimePickerField/TimePickerField.tsx +3 -2
  79. package/src/hooks/useFloating.ts +0 -6
  80. package/src/styles/base.scss +109 -87
  81. package/src/types/common.ts +1 -0
  82. package/dist/components/Link/link.css +0 -18
  83. package/dist/components/Link/link.css.js +0 -23
  84. package/src/components/Link/link.scss +0 -21
@@ -1,8 +1,8 @@
1
- import { Field, FieldControlProps, propsWithAria } from '-/components/Field';
1
+ import { Field, ComposedFieldProps, propsWithAria } from '-/components/Field';
2
2
  import { Password, PasswordProps } from '-/components/Password';
3
3
  import { useId } from '-/hooks/useId';
4
4
 
5
- export type PasswordFieldProps = FieldControlProps<PasswordProps>;
5
+ export type PasswordFieldProps = ComposedFieldProps<PasswordProps>;
6
6
 
7
7
  /**
8
8
  * A field wrapper for the Password component.
@@ -31,6 +31,7 @@ export function PasswordField({
31
31
  helperText={helperText}
32
32
  label={label}
33
33
  labelTrailing={labelTrailing}
34
+ required={controlProps.required}
34
35
  style={style}
35
36
  >
36
37
  <Password {...propsWithAria({ id, controlProps, errorMessage, helperText })} />
@@ -5,4 +5,8 @@
5
5
  max-width: 100%;
6
6
 
7
7
  --list-item-height: 'auto';
8
+
9
+ [data-bspk='list-item'] {
10
+ background: transparent;
11
+ }
8
12
  }
@@ -1,8 +1,8 @@
1
- import { FieldControlProps, Fieldset, propsWithAria } from '-/components/Field';
1
+ import { ComposedFieldProps, Fieldset, propsWithAria } from '-/components/Field';
2
2
  import { RadioGroup, RadioGroupProps } from '-/components/RadioGroup';
3
3
  import { useId } from '-/hooks/useId';
4
4
 
5
- export type RadioGroupFieldProps = FieldControlProps<RadioGroupProps>;
5
+ export type RadioGroupFieldProps = ComposedFieldProps<RadioGroupProps>;
6
6
 
7
7
  /**
8
8
  * A field wrapper for the RadioGroup component.
@@ -46,18 +46,6 @@
46
46
  color: var(--select-text-color);
47
47
  }
48
48
 
49
- [data-icon] {
50
- display: flex;
51
- flex-direction: column;
52
- justify-content: center;
53
- pointer-events: none;
54
-
55
- svg {
56
- transform: rotate(90deg);
57
- width: var(--select-icon-width);
58
- }
59
- }
60
-
61
49
  &[data-size='small'] {
62
50
  --select-height: var(--spacing-sizing-08);
63
51
  --select-font: var(--body-small);
@@ -1,8 +1,8 @@
1
- import { Field, FieldControlProps, propsWithAria } from '-/components/Field';
1
+ import { Field, ComposedFieldProps, propsWithAria } from '-/components/Field';
2
2
  import { Select, SelectProps } from '-/components/Select';
3
3
  import { useId } from '-/hooks/useId';
4
4
 
5
- export type SelectFieldProps = FieldControlProps<SelectProps>;
5
+ export type SelectFieldProps = ComposedFieldProps<SelectProps>;
6
6
 
7
7
  /**
8
8
  * A field wrapper for the Select component.
@@ -31,6 +31,7 @@ export function SelectField({
31
31
  helperText={helperText}
32
32
  label={label}
33
33
  labelTrailing={labelTrailing}
34
+ required={controlProps.required}
34
35
  style={style}
35
36
  >
36
37
  <Select {...propsWithAria({ id, controlProps, errorMessage, helperText })} />
@@ -1,8 +1,8 @@
1
- import { Field, FieldControlProps, propsWithAria } from '-/components/Field';
1
+ import { Field, ComposedFieldProps, propsWithAria } from '-/components/Field';
2
2
  import { Textarea, TextareaProps } from '-/components/Textarea';
3
3
  import { useId } from '-/hooks/useId';
4
4
 
5
- export type TextareaFieldProps = FieldControlProps<TextareaProps>;
5
+ export type TextareaFieldProps = ComposedFieldProps<TextareaProps>;
6
6
 
7
7
  /**
8
8
  * A field wrapper for the Textarea component.
@@ -31,6 +31,7 @@ export function TextareaField({
31
31
  helperText={helperText}
32
32
  label={label}
33
33
  labelTrailing={labelTrailing}
34
+ required={controlProps.required}
34
35
  style={style}
35
36
  >
36
37
  <Textarea {...propsWithAria({ id, controlProps, errorMessage, helperText })} />
@@ -1,8 +1,8 @@
1
- import { Field, FieldControlProps, propsWithAria } from '-/components/Field';
1
+ import { Field, ComposedFieldProps, propsWithAria } from '-/components/Field';
2
2
  import { TimePicker, TimePickerProps } from '-/components/TimePicker';
3
3
  import { useId } from '-/hooks/useId';
4
4
 
5
- export type TimePickerFieldProps = FieldControlProps<TimePickerProps>;
5
+ export type TimePickerFieldProps = ComposedFieldProps<TimePickerProps>;
6
6
 
7
7
  /**
8
8
  * A field wrapper for the TimePicker component.
@@ -31,6 +31,7 @@ export function TimePickerField({
31
31
  helperText={helperText}
32
32
  label={label}
33
33
  labelTrailing={labelTrailing}
34
+ required={controlProps.required}
34
35
  style={style}
35
36
  >
36
37
  <TimePicker {...propsWithAria({ id, controlProps, errorMessage, helperText })} />
@@ -79,12 +79,6 @@ export type UseFloatingElements = {
79
79
  setFloating: (element: HTMLElement | null) => void;
80
80
  };
81
81
 
82
- /**
83
- *
84
- *
85
- * @param param0
86
- * @returns
87
- */
88
82
  export function useFloating({
89
83
  placement = 'bottom-start',
90
84
  arrowRef,
@@ -68,93 +68,8 @@ body[data-bspk] {
68
68
  color: var(--foreground-neutral-on-surface);
69
69
  min-width: 343px;
70
70
 
71
- a,
72
- [data-bspk='link'] {
73
- &:not([data-bspk='button'], [data-bspk='list-item']) {
74
- color: var(--foreground-link-text-default);
75
-
76
- &:not([disabled]) {
77
- &:hover,
78
- &[data-pseudo='hover'] {
79
- color: var(--foreground-link-text-default-hovered);
80
- }
81
-
82
- &:active,
83
- &[data-pseudo='active'] {
84
- color: var(--foreground-link-text-default);
85
- filter: brightness(80%);
86
- }
87
-
88
- &:visited,
89
- &[data-pseudo='visited'] {
90
- color: var(--foreground-link-text-default-visited);
91
- }
92
- }
93
-
94
- &[disabled] {
95
- pointer-events: none;
96
- cursor: text;
97
- color: var(--foreground-link-text-default-disabled);
98
- }
99
- }
100
-
101
- &[data-subtle] {
102
- text-decoration: none;
103
- color: var(--foreground-neutral-on-surface);
104
-
105
- &:not([disabled]) {
106
- &:hover,
107
- &[data-pseudo='hover'] {
108
- text-decoration: underline;
109
- color: var(--foreground-link-text-subtle-hovered);
110
- }
111
-
112
- &:active,
113
- &[data-pseudo='active'] {
114
- text-decoration: underline;
115
- color: var(--foreground-link-text-subtle-pressed);
116
- }
117
-
118
- &:visited,
119
- &[data-pseudo='visited'] {
120
- color: var(--foreground-neutral-on-surface);
121
- }
122
- }
123
-
124
- &[disabled] {
125
- pointer-events: none;
126
- color: var(--foreground-link-text-subtle-disabled);
127
- }
128
- }
129
-
130
- &[data-subtle-inverse] {
131
- text-decoration: none;
132
- color: var(--foreground-neutral-inverse-on-surface);
133
-
134
- &:not([disabled]) {
135
- &:hover,
136
- &[data-pseudo='hover'] {
137
- text-decoration: underline;
138
- color: var(--foreground-link-text-subtle-inverse-hovered);
139
- }
140
-
141
- &:active,
142
- &[data-pseudo='active'] {
143
- text-decoration: underline;
144
- color: var(--foreground-link-text-subtle-inverse-pressed);
145
- }
146
-
147
- &:visited,
148
- &[data-pseudo='visited'] {
149
- color: var(--foreground-neutral-on-inverse-surface);
150
- }
151
- }
152
-
153
- &[disabled] {
154
- pointer-events: none;
155
- color: var(--foreground-link-text-subtle-inversed-disabled);
156
- }
157
- }
71
+ a:not([data-bspk]) {
72
+ @extend %link;
158
73
  }
159
74
  }
160
75
 
@@ -314,4 +229,111 @@ body[data-bspk] {
314
229
  display: none !important;
315
230
  }
316
231
 
232
+ [data-bspk='link'] {
233
+ @extend %link;
234
+ }
235
+
236
+ %link {
237
+ color: var(--foreground-link-text-default);
238
+ display: inline-flex;
239
+ flex-direction: row;
240
+ align-items: center;
241
+ gap: var(--spacing-sizing-01);
242
+ font: var(--labels-base);
243
+
244
+ &:not([disabled]) {
245
+ &:hover,
246
+ &[data-pseudo='hover'] {
247
+ color: var(--foreground-link-text-default-hovered);
248
+ }
249
+
250
+ &:active,
251
+ &[data-pseudo='active'] {
252
+ color: var(--foreground-link-text-default);
253
+ filter: brightness(80%);
254
+ }
255
+
256
+ &:visited,
257
+ &[data-pseudo='visited'] {
258
+ color: var(--foreground-link-text-default-visited);
259
+ }
260
+ }
261
+
262
+ &[disabled] {
263
+ pointer-events: none;
264
+ cursor: text;
265
+ color: var(--foreground-link-text-default-disabled);
266
+ }
267
+
268
+ &[data-subtle] {
269
+ text-decoration: none;
270
+ color: var(--foreground-neutral-on-surface);
271
+
272
+ &:not([disabled]) {
273
+ &:hover,
274
+ &[data-pseudo='hover'] {
275
+ text-decoration: underline;
276
+ color: var(--foreground-link-text-subtle-hovered);
277
+ }
278
+
279
+ &:active,
280
+ &[data-pseudo='active'] {
281
+ text-decoration: underline;
282
+ color: var(--foreground-link-text-subtle-pressed);
283
+ }
284
+
285
+ &:visited,
286
+ &[data-pseudo='visited'] {
287
+ color: var(--foreground-neutral-on-surface);
288
+ }
289
+ }
290
+
291
+ &[disabled] {
292
+ pointer-events: none;
293
+ color: var(--foreground-link-text-subtle-disabled);
294
+ }
295
+ }
296
+
297
+ &[data-subtle-inverse] {
298
+ text-decoration: none;
299
+ color: var(--foreground-neutral-inverse-on-surface);
300
+
301
+ &:not([disabled]) {
302
+ &:hover,
303
+ &[data-pseudo='hover'] {
304
+ text-decoration: underline;
305
+ color: var(--foreground-link-text-subtle-inverse-hovered);
306
+ }
307
+
308
+ &:active,
309
+ &[data-pseudo='active'] {
310
+ text-decoration: underline;
311
+ color: var(--foreground-link-text-subtle-inverse-pressed);
312
+ }
313
+
314
+ &:visited,
315
+ &[data-pseudo='visited'] {
316
+ color: var(--foreground-neutral-on-inverse-surface);
317
+ }
318
+ }
319
+
320
+ &[disabled] {
321
+ pointer-events: none;
322
+ color: var(--foreground-link-text-subtle-inversed-disabled);
323
+ }
324
+ }
325
+
326
+ &[data-size='large'] {
327
+ font: var(--labels-large);
328
+ }
329
+
330
+ &[data-size='small'] {
331
+ font: var(--labels-small);
332
+ }
333
+
334
+ svg {
335
+ width: var(--spacing-sizing-05);
336
+ }
337
+ }
338
+
317
339
  /** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
@@ -148,6 +148,7 @@ export type CommonProps<K extends keyof CommonPropsLibrary> = Pick<CommonPropsLi
148
148
 
149
149
  export type RequiredCommonProps<K extends keyof CommonPropsLibrary> = Required<Pick<CommonPropsLibrary, K>>;
150
150
 
151
+ /** The common properties for all input control components such as Input, TextArea, Select, etc. */
151
152
  export type FieldControlProps<
152
153
  ValueType = string,
153
154
  ChangeContext = ChangeEvent<HTMLElement> | KeyboardEvent | undefined,
@@ -1,18 +0,0 @@
1
- [data-bspk=link] {
2
- display: inline-flex;
3
- flex-direction: row;
4
- align-items: center;
5
- gap: var(--spacing-sizing-01);
6
- font: var(--labels-base);
7
- }
8
- [data-bspk=link][data-size=large] {
9
- font: var(--labels-large);
10
- }
11
- [data-bspk=link][data-size=small] {
12
- font: var(--labels-small);
13
- }
14
- [data-bspk=link] svg {
15
- width: var(--spacing-sizing-05);
16
- }
17
-
18
- /** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
@@ -1,23 +0,0 @@
1
- /** * This file is generated by the build script.
2
- * Do not edit this file directly. */
3
- const style = document.createElement('style');
4
- style.appendChild(document.createTextNode(`[data-bspk=link] {
5
- display: inline-flex;
6
- flex-direction: row;
7
- align-items: center;
8
- gap: var(--spacing-sizing-01);
9
- font: var(--labels-base);
10
- }
11
- [data-bspk=link][data-size=large] {
12
- font: var(--labels-large);
13
- }
14
- [data-bspk=link][data-size=small] {
15
- font: var(--labels-small);
16
- }
17
- [data-bspk=link] svg {
18
- width: var(--spacing-sizing-05);
19
- }
20
-
21
- /** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
22
- `));
23
- document.head.appendChild(style);
@@ -1,21 +0,0 @@
1
- [data-bspk='link'] {
2
- display: inline-flex;
3
- flex-direction: row;
4
- align-items: center;
5
- gap: var(--spacing-sizing-01);
6
- font: var(--labels-base);
7
-
8
- &[data-size='large'] {
9
- font: var(--labels-large);
10
- }
11
-
12
- &[data-size='small'] {
13
- font: var(--labels-small);
14
- }
15
-
16
- svg {
17
- width: var(--spacing-sizing-05);
18
- }
19
- }
20
-
21
- /** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */