@bspk/ui 1.3.4 → 1.3.5
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.
- package/dist/components/Avatar/Avatar.d.ts +3 -3
- package/dist/components/Avatar/Avatar.js +8 -8
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/AvatarExample.js +1 -1
- package/dist/components/Avatar/AvatarExample.js.map +1 -1
- package/dist/components/Avatar/avatar.css +5 -1
- package/dist/components/Avatar/avatar.css.js +5 -1
- package/dist/components/AvatarGroup/AvatarGroup.d.ts +11 -6
- package/dist/components/AvatarGroup/AvatarGroup.js +5 -6
- package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroupExample.js +36 -9
- package/dist/components/AvatarGroup/AvatarGroupExample.js.map +1 -1
- package/dist/components/AvatarGroup/Overflow.d.ts +11 -0
- package/dist/components/AvatarGroup/Overflow.js +37 -0
- package/dist/components/AvatarGroup/Overflow.js.map +1 -0
- package/dist/components/AvatarGroup/avatar-group.css +27 -13
- package/dist/components/AvatarGroup/avatar-group.css.js +27 -13
- package/dist/components/Badge/BadgeExample.js +1 -1
- package/dist/components/Badge/BadgeExample.js.map +1 -1
- package/dist/components/BadgeDot/BadgeDotExample.js +1 -1
- package/dist/components/BadgeDot/BadgeDotExample.js.map +1 -1
- package/dist/components/Button/Button.d.ts +2 -2
- package/dist/components/Card/Card.d.ts +2 -1
- package/dist/components/Card/Card.js +2 -2
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +4 -4
- package/dist/components/CheckboxGroup/CheckboxGroup.js +4 -4
- package/dist/components/CheckboxGroupField/CheckboxGroupField.d.ts +1 -1
- package/dist/components/CheckboxGroupField/CheckboxGroupField.js +2 -2
- package/dist/components/CheckboxGroupField/CheckboxGroupField.js.map +1 -1
- package/dist/components/CheckboxOption/CheckboxOption.d.ts +3 -2
- package/dist/components/CheckboxOption/CheckboxOption.js +2 -2
- package/dist/components/CheckboxOption/CheckboxOption.js.map +1 -1
- package/dist/components/DatePickerField/DatePickerField.d.ts +1 -1
- package/dist/components/DatePickerField/DatePickerField.js +2 -2
- package/dist/components/DatePickerField/DatePickerField.js.map +1 -1
- package/dist/components/Fab/Fab.d.ts +2 -2
- package/dist/components/Fab/Fab.js.map +1 -1
- package/dist/components/FormField/FormField.d.ts +3 -2
- package/dist/components/FormField/FormField.js +2 -2
- package/dist/components/FormField/FormField.js.map +1 -1
- package/dist/components/InputField/InputField.d.ts +1 -1
- package/dist/components/InputField/InputField.js +2 -2
- package/dist/components/InputField/InputField.js.map +1 -1
- package/dist/components/InputNumberField/InputNumberField.d.ts +1 -1
- package/dist/components/InputNumberField/InputNumberField.js +2 -2
- package/dist/components/InputNumberField/InputNumberField.js.map +1 -1
- package/dist/components/InputPhoneField/InputPhoneField.d.ts +1 -1
- package/dist/components/InputPhoneField/InputPhoneField.js +2 -2
- package/dist/components/InputPhoneField/InputPhoneField.js.map +1 -1
- package/dist/components/Layout/Layout.d.ts +2 -2
- package/dist/components/Layout/Layout.js.map +1 -1
- package/dist/components/ListItem/ListItem.d.ts +1 -1
- package/dist/components/Menu/Menu.d.ts +8 -1
- package/dist/components/Menu/Menu.js +1 -1
- package/dist/components/Menu/Menu.js.map +1 -1
- package/dist/components/Menu/MenuExample.js +1 -1
- package/dist/components/Menu/MenuExample.js.map +1 -1
- package/dist/components/PasswordField/PasswordField.d.ts +1 -1
- package/dist/components/PasswordField/PasswordField.js +2 -2
- package/dist/components/PasswordField/PasswordField.js.map +1 -1
- package/dist/components/ProgressCircle/progress-circle.css +2 -0
- package/dist/components/ProgressCircle/progress-circle.css.js +2 -0
- package/dist/components/RadioGroup/RadioGroup.js +3 -3
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/RadioGroupField/RadioGroupField.d.ts +1 -1
- package/dist/components/RadioGroupField/RadioGroupField.js +2 -2
- package/dist/components/RadioGroupField/RadioGroupField.js.map +1 -1
- package/dist/components/SearchBar/SearchBar.d.ts +2 -2
- package/dist/components/SearchBar/SearchBar.js +2 -2
- package/dist/components/SearchBar/SearchBar.js.map +1 -1
- package/dist/components/Select/Select.d.ts +9 -2
- package/dist/components/Select/Select.js +4 -3
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/SelectExample.js +36 -1
- package/dist/components/Select/SelectExample.js.map +1 -1
- package/dist/components/SelectField/SelectField.d.ts +1 -1
- package/dist/components/SelectField/SelectField.js +2 -2
- package/dist/components/SelectField/SelectField.js.map +1 -1
- package/dist/components/SkeletonText/SkeletonText.js +1 -1
- package/dist/components/SkeletonText/SkeletonText.js.map +1 -1
- package/dist/components/Slider/slider.css +1 -0
- package/dist/components/Slider/slider.css.js +1 -0
- package/dist/components/Textarea/Textarea.d.ts +3 -9
- package/dist/components/Textarea/Textarea.js +2 -2
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/TextareaField/TextareaField.d.ts +1 -1
- package/dist/components/TextareaField/TextareaField.js +2 -2
- package/dist/components/TextareaField/TextareaField.js.map +1 -1
- package/dist/components/TimePicker/TimePicker.js +10 -4
- package/dist/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/components/TimePickerField/TimePickerField.d.ts +1 -1
- package/dist/components/TimePickerField/TimePickerField.js +2 -2
- package/dist/components/TimePickerField/TimePickerField.js.map +1 -1
- package/dist/components/ToggleOption/ToggleOption.d.ts +3 -3
- package/dist/components/ToggleOption/ToggleOption.js +2 -2
- package/dist/components/ToggleOption/ToggleOption.js.map +1 -1
- package/dist/components/Truncated/Truncated.d.ts +2 -2
- package/dist/components/Truncated/Truncated.js.map +1 -1
- package/dist/components/Txt/Txt.d.ts +2 -2
- package/dist/components/Txt/Txt.js.map +1 -1
- package/dist/hooks/useArrowNavigation.d.ts +0 -2
- package/dist/hooks/useArrowNavigation.js +0 -2
- package/dist/hooks/useArrowNavigation.js.map +1 -1
- package/dist/hooks/useCheckboxGroupState.d.ts +7 -10
- package/dist/hooks/useCheckboxGroupState.js +7 -10
- package/dist/hooks/useCheckboxGroupState.js.map +1 -1
- package/dist/hooks/useFloating.js +8 -7
- package/dist/hooks/useFloating.js.map +1 -1
- package/dist/styles/base.css +4 -0
- package/dist/styles/base.css.js +4 -0
- package/dist/types/common.d.ts +12 -1
- package/dist/types/common.js.map +1 -1
- package/meta.ts +4 -4
- package/package.json +1 -3
- package/src/components/Avatar/Avatar.tsx +10 -11
- package/src/components/Avatar/AvatarExample.tsx +1 -1
- package/src/components/Avatar/avatar.scss +6 -1
- package/src/components/AvatarGroup/AvatarGroup.tsx +20 -24
- package/src/components/AvatarGroup/AvatarGroupExample.tsx +35 -9
- package/src/components/AvatarGroup/Overflow.tsx +91 -0
- package/src/components/AvatarGroup/avatar-group.scss +34 -14
- package/src/components/Badge/BadgeExample.tsx +1 -1
- package/src/components/BadgeDot/BadgeDotExample.tsx +1 -1
- package/src/components/Button/Button.tsx +2 -2
- package/src/components/Card/Card.tsx +3 -2
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +4 -4
- package/src/components/CheckboxGroupField/CheckboxGroupField.tsx +3 -2
- package/src/components/CheckboxOption/CheckboxOption.tsx +4 -1
- package/src/components/DatePickerField/DatePickerField.tsx +8 -1
- package/src/components/Fab/Fab.tsx +2 -2
- package/src/components/FormField/FormField.tsx +13 -3
- package/src/components/InputField/InputField.tsx +15 -2
- package/src/components/InputNumberField/InputNumberField.tsx +8 -1
- package/src/components/InputPhoneField/InputPhoneField.tsx +8 -1
- package/src/components/Layout/Layout.tsx +2 -2
- package/src/components/ListItem/ListItem.tsx +1 -1
- package/src/components/Menu/Menu.tsx +9 -1
- package/src/components/Menu/MenuExample.tsx +1 -1
- package/src/components/PasswordField/PasswordField.tsx +15 -2
- package/src/components/ProgressCircle/progress-circle.scss +2 -0
- package/src/components/RadioGroup/RadioGroup.tsx +18 -20
- package/src/components/RadioGroupField/RadioGroupField.tsx +2 -1
- package/src/components/SearchBar/SearchBar.tsx +3 -1
- package/src/components/Select/Select.tsx +12 -3
- package/src/components/Select/SelectExample.tsx +36 -1
- package/src/components/SelectField/SelectField.tsx +15 -2
- package/src/components/SkeletonText/SkeletonText.tsx +1 -1
- package/src/components/Slider/slider.scss +1 -0
- package/src/components/Textarea/Textarea.tsx +34 -39
- package/src/components/TextareaField/TextareaField.tsx +15 -2
- package/src/components/TimePicker/TimePicker.tsx +13 -3
- package/src/components/TimePickerField/TimePickerField.tsx +8 -1
- package/src/components/ToggleOption/ToggleOption.tsx +20 -19
- package/src/components/Truncated/Truncated.tsx +2 -2
- package/src/components/Txt/Txt.tsx +2 -2
- package/src/hooks/useArrowNavigation.ts +0 -2
- package/src/hooks/useCheckboxGroupState.ts +7 -10
- package/src/hooks/useFloating.ts +8 -7
- package/src/styles/base.scss +4 -0
- package/src/types/common.ts +11 -0
- package/dist/components/MenuButton/MenuButton.d.ts +0 -19
- package/dist/components/MenuButton/MenuButton.js +0 -20
- package/dist/components/MenuButton/MenuButton.js.map +0 -1
- package/dist/components/MenuButton/index.d.ts +0 -1
- package/dist/components/MenuButton/index.js +0 -2
- package/dist/components/MenuButton/index.js.map +0 -1
- package/dist/components/MenuButton/menu-button.css +0 -16
- package/dist/components/MenuButton/menu-button.css.js +0 -21
- package/src/components/MenuButton/MenuButton.rtl.test.tsx +0 -15
- package/src/components/MenuButton/MenuButton.tsx +0 -29
- package/src/components/MenuButton/index.tsx +0 -1
- package/src/components/MenuButton/menu-button.scss +0 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFloating.js","sourceRoot":"","sources":["../../src/hooks/useFloating.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAOH,eAAe,EACf,KAAK,EACL,MAAM,EACN,IAAI,EACJ,UAAU,EACV,IAAI,GACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,MAAM,gBAAgB,GAAG,GAAG,CAAC;AA8C7B;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,EACxB,SAAS,GAAG,cAAc,EAC1B,QAAQ,EACR,QAAQ,GAAG,OAAO,EAClB,aAAa,GAAG,CAAC,EACjB,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,KAAK,GACG;IAMf,MAAM,CAAC,cAAc,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAsB;QAC3E,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,MAAM;QACrB,OAAO,EAAE,MAAM;KAClB,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,CAAC,IAAwD,EAAE,EAAE;QACnF,sBAAsB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9B,UAAU,EAAE,WAAW,gBAAgB,IAAI;YAC3C,GAAG,IAAI,CAAC,IAAI,CAAC;SAChB,CAAC,CAAC,CAAC;IACR,CAAC,CAAC;IAEF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC,CAAC;IAEzE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAEnF,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAEjF,MAAM,eAAe,GAAG,UAAU,EAAE,CAAC;IACrC,MAAM,eAAe,GAAG,UAAU,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,eAAe,CAAC,KAAK,EAAE,CAAC;QACxB,eAAe,CAAC,KAAK,EAAE,CAAC;QAExB,iEAAiE;QAEjE,qDAAqD;QACrD,IAAI,gBAAgB,KAAK,IAAI,IAAI,eAAe,KAAK,IAAI;YAAE,OAAO;QAElE,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,eAAe,EAAE,KAAK,CAAC,GAAG;gBAC1B,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACzB,GAAG,IAAI;oBACP,OAAO,EAAE,CAAC;oBACV,aAAa,EAAE,MAAM;iBACxB,CAAC,CAAC,CAAC;YAER,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE;gBACrB,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACzB,GAAG,IAAI;iBACV,CAAC,CAAC,CAAC;YACR,CAAC,EAAE,gBAAgB,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QAED,oCAAoC;QAEpC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE;YACrB,2DAA2D;YAC3D,IAAI,IAAI,IAAI,gBAAgB,KAAK,IAAI,IAAI,eAAe,KAAK,IAAI;gBAAE,OAAO;YAE1E,eAAe,CAAC,gBAAgB,EAAE,eAAe,EAAE;gBAC/C,SAAS,EAAE,SAAS;gBACpB,QAAQ;gBACR,UAAU,EAAE;oBACR,QAAQ,EAAE,OAAO,IAAI,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;oBACrE,MAAM,CAAC,aAAa,CAAC;oBACrB,IAAI,EAAE;oBACN,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"useFloating.js","sourceRoot":"","sources":["../../src/hooks/useFloating.ts"],"names":[],"mappings":"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"}
|
package/dist/styles/base.css
CHANGED
package/dist/styles/base.css.js
CHANGED
package/dist/types/common.d.ts
CHANGED
|
@@ -5,12 +5,16 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @bspk/ui/Txt".
|
|
7
7
|
*/
|
|
8
|
-
import { JSXElementConstructor, ReactNode, ComponentPropsWithoutRef, AriaRole, ChangeEvent, KeyboardEvent } from 'react';
|
|
8
|
+
import { JSXElementConstructor, ReactNode, ComponentPropsWithoutRef, AriaRole, ChangeEvent, KeyboardEvent, CSSProperties } from 'react';
|
|
9
9
|
export type AlertVariant = 'error' | 'informational' | 'success' | 'warning';
|
|
10
10
|
/** Sets a ref to the given element. */
|
|
11
11
|
export type SetRef<T> = (instance: T | null) => void;
|
|
12
12
|
export type ElementProps<P extends Record<string, unknown>, E extends JSXElementConstructor<unknown> | keyof JSX.IntrinsicElements, O extends string = ''> = Omit<ComponentPropsWithoutRef<E>, O | keyof P> & P;
|
|
13
13
|
export type ElementConstructorProps<E extends JSXElementConstructor<unknown> | keyof JSX.IntrinsicElements, O extends string = ''> = Omit<ComponentPropsWithoutRef<E>, O>;
|
|
14
|
+
type CSSVariables = `--${string}`;
|
|
15
|
+
export type CSSWithVariables = CSSProperties | (CSSProperties & {
|
|
16
|
+
[key in CSSVariables]: unknown;
|
|
17
|
+
});
|
|
14
18
|
export type DataProps = Record<`data-${string}`, string>;
|
|
15
19
|
export type ButtonSize = 'large' | 'medium' | 'small' | 'x-small';
|
|
16
20
|
export type CallToActionButton = {
|
|
@@ -106,6 +110,12 @@ export type CommonPropsLibrary = {
|
|
|
106
110
|
* @type string
|
|
107
111
|
*/
|
|
108
112
|
role?: AriaRole;
|
|
113
|
+
/**
|
|
114
|
+
* Inline styles to apply to the element.
|
|
115
|
+
*
|
|
116
|
+
* Allows for CSS variables to be passed in as well.
|
|
117
|
+
*/
|
|
118
|
+
style?: CSSWithVariables;
|
|
109
119
|
};
|
|
110
120
|
export type CommonProps<K extends keyof CommonPropsLibrary> = Pick<CommonPropsLibrary, K>;
|
|
111
121
|
export type RequiredCommonProps<K extends keyof CommonPropsLibrary> = Required<Pick<CommonPropsLibrary, K>>;
|
|
@@ -124,4 +134,5 @@ export type FieldControlProps<ValueType = string, ChangeContext = ChangeEvent<HT
|
|
|
124
134
|
onChange: (next: ValueType | undefined, event?: ChangeContext) => void;
|
|
125
135
|
};
|
|
126
136
|
export type Brand = 'anywhere' | 'better-homes-gardens' | 'cartus' | 'century-21' | 'coldwell-banker' | 'corcoran' | 'denali-boss' | 'era' | 'sothebys';
|
|
137
|
+
export {};
|
|
127
138
|
/** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
|
package/dist/types/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;AA2KH,sDAAsD"}
|
package/meta.ts
CHANGED
|
@@ -223,17 +223,17 @@ async function generateUtilityMeta(utilityFile: string): Promise<UtilityMeta | n
|
|
|
223
223
|
|
|
224
224
|
const utility = fileName;
|
|
225
225
|
|
|
226
|
-
const comment = content.match(
|
|
226
|
+
const comment = content.match(/\/\*\*\s*\n([^*]|(\*(?!\/)))*\*\//g)?.map(jsDocParse);
|
|
227
227
|
|
|
228
228
|
if (!comment?.[0]) {
|
|
229
229
|
// console.info(`No JSDoc found for hook ${utility} for ${hooksDir}/${utility}.tsx`);
|
|
230
230
|
return null;
|
|
231
231
|
}
|
|
232
232
|
|
|
233
|
-
const utilityDoc =
|
|
233
|
+
const utilityDoc = comment.find((doc) => doc.example);
|
|
234
234
|
|
|
235
|
-
if (!utilityDoc
|
|
236
|
-
// console.info(`No example found for hook ${utility} for ${hooksDir}/${utility}.tsx
|
|
235
|
+
if (!utilityDoc?.example) {
|
|
236
|
+
// console.info(`No example found for hook ${utility} for ${hooksDir}/${utility}.tsx`, comment[0]);
|
|
237
237
|
return null;
|
|
238
238
|
}
|
|
239
239
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bspk/ui",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.5",
|
|
4
4
|
"license": "CC-BY-4.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -125,8 +125,6 @@
|
|
|
125
125
|
"./ListItem/*": "./dist/components/ListItem/*.js",
|
|
126
126
|
"./Menu": "./dist/components/Menu/index.js",
|
|
127
127
|
"./Menu/*": "./dist/components/Menu/*.js",
|
|
128
|
-
"./MenuButton": "./dist/components/MenuButton/index.js",
|
|
129
|
-
"./MenuButton/*": "./dist/components/MenuButton/*.js",
|
|
130
128
|
"./Modal": "./dist/components/Modal/index.js",
|
|
131
129
|
"./Modal/*": "./dist/components/Modal/*.js",
|
|
132
130
|
"./OTPInput": "./dist/components/OTPInput/index.js",
|
|
@@ -63,7 +63,7 @@ export type AvatarProps = CommonProps<'disabled'> & {
|
|
|
63
63
|
* When provided the image will be displayed instead of the icon or initials.
|
|
64
64
|
*
|
|
65
65
|
* @example
|
|
66
|
-
* /
|
|
66
|
+
* /avatar-01.png
|
|
67
67
|
*/
|
|
68
68
|
image?: string;
|
|
69
69
|
/**
|
|
@@ -92,7 +92,7 @@ export type AvatarProps = CommonProps<'disabled'> & {
|
|
|
92
92
|
* <Avatar
|
|
93
93
|
* color="blue"
|
|
94
94
|
* icon={<SvgPerson />}
|
|
95
|
-
* image="/
|
|
95
|
+
* image="/avatar-01.png"
|
|
96
96
|
* initials="AR"
|
|
97
97
|
* name="Andre Giant"
|
|
98
98
|
* showTooltip
|
|
@@ -112,14 +112,14 @@ export function Avatar({
|
|
|
112
112
|
size = 'small',
|
|
113
113
|
showIcon,
|
|
114
114
|
image,
|
|
115
|
-
name
|
|
115
|
+
name,
|
|
116
116
|
hideTooltip = false,
|
|
117
117
|
onClick,
|
|
118
118
|
disabled,
|
|
119
119
|
...props
|
|
120
120
|
}: AvatarProps) {
|
|
121
121
|
const children = useMemo(() => {
|
|
122
|
-
if (image) return <img alt={
|
|
122
|
+
if (image) return <img alt={name} aria-hidden={true} src={image} />;
|
|
123
123
|
|
|
124
124
|
if (showIcon)
|
|
125
125
|
return (
|
|
@@ -130,8 +130,8 @@ export function Avatar({
|
|
|
130
130
|
|
|
131
131
|
let initials = initialsProp;
|
|
132
132
|
|
|
133
|
-
if (
|
|
134
|
-
initials =
|
|
133
|
+
if (name && !initials)
|
|
134
|
+
initials = name
|
|
135
135
|
.split(' ')
|
|
136
136
|
.map((word) => word.charAt(0))
|
|
137
137
|
.slice(0, 2)
|
|
@@ -146,7 +146,7 @@ export function Avatar({
|
|
|
146
146
|
);
|
|
147
147
|
|
|
148
148
|
return null;
|
|
149
|
-
}, [
|
|
149
|
+
}, [name, showIcon, image, initialsProp]);
|
|
150
150
|
|
|
151
151
|
if (!children) return null;
|
|
152
152
|
|
|
@@ -155,21 +155,20 @@ export function Avatar({
|
|
|
155
155
|
{...props}
|
|
156
156
|
{...triggerProps}
|
|
157
157
|
aria-disabled={disabled || undefined}
|
|
158
|
-
aria-label={
|
|
159
|
-
aria-labelledby={onClick ? triggerProps['aria-labelledby'] : undefined}
|
|
158
|
+
aria-label={name}
|
|
160
159
|
aria-roledescription="person"
|
|
161
160
|
data-bspk="avatar"
|
|
162
161
|
data-color={color}
|
|
163
162
|
data-size={size}
|
|
164
163
|
onClickCapture={disabled ? undefined : onClick}
|
|
165
|
-
role={onClick ? 'button' : ''}
|
|
164
|
+
role={onClick ? 'button' : 'img'}
|
|
166
165
|
tabIndex={onClick && !disabled ? 0 : undefined}
|
|
167
166
|
>
|
|
168
167
|
{children}
|
|
169
168
|
</div>
|
|
170
169
|
);
|
|
171
170
|
|
|
172
|
-
return !hideTooltip ? <Tooltip label={
|
|
171
|
+
return !hideTooltip ? <Tooltip label={name}>{avatar}</Tooltip> : avatar({});
|
|
173
172
|
}
|
|
174
173
|
|
|
175
174
|
/** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
[data-bspk='avatar'] {
|
|
2
|
+
/*!
|
|
3
|
+
--avatar-border: is set via inline style
|
|
4
|
+
*/
|
|
5
|
+
|
|
2
6
|
--height: var(--spacing-sizing-10);
|
|
3
7
|
--font: var(--labels-base);
|
|
4
8
|
--svg-size: var(--spacing-sizing-10);
|
|
5
9
|
|
|
6
|
-
border:
|
|
10
|
+
border: var(--avatar-border);
|
|
7
11
|
|
|
8
12
|
&:not([data-color]) {
|
|
9
13
|
--foreground: var(--foreground-neutral-on-surface);
|
|
@@ -128,6 +132,7 @@
|
|
|
128
132
|
|
|
129
133
|
&:focus:not(:active) {
|
|
130
134
|
outline: 2px solid var(--stroke-neutral-focus);
|
|
135
|
+
outline-offset: -2px;
|
|
131
136
|
}
|
|
132
137
|
}
|
|
133
138
|
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import './avatar-group.scss';
|
|
2
|
+
import { AvatarGroupOverflow } from './Overflow';
|
|
2
3
|
import { Avatar, AvatarProps, SizeVariant } from '-/components/Avatar';
|
|
4
|
+
import { CommonProps } from '-/types/common';
|
|
3
5
|
|
|
4
6
|
export type AvatarItem = Pick<AvatarProps, 'color' | 'image' | 'initials' | 'name' | 'showIcon'>;
|
|
5
7
|
|
|
6
|
-
export type AvatarGroupProps = {
|
|
8
|
+
export type AvatarGroupProps = CommonProps<'style'> & {
|
|
7
9
|
/**
|
|
8
10
|
* The avatars to display in the group.
|
|
9
11
|
*
|
|
10
12
|
* @example
|
|
11
13
|
* [
|
|
12
|
-
* { name: 'Fezzik', image: '/
|
|
14
|
+
* { name: 'Fezzik', image: '/avatar-01.png' },
|
|
13
15
|
* { name: 'Inigo Montoya', initials: 'IM', color: 'blue' },
|
|
14
16
|
* { name: 'Miracle Max', initials: 'MM', color: 'green' },
|
|
15
17
|
* { name: 'Princess Buttercup', showIcon: true },
|
|
@@ -24,19 +26,23 @@ export type AvatarGroupProps = {
|
|
|
24
26
|
*
|
|
25
27
|
* @default small
|
|
26
28
|
*/
|
|
27
|
-
size?:
|
|
29
|
+
size?: SizeVariant;
|
|
28
30
|
/**
|
|
29
|
-
* The maximum number of avatars to display before showing the
|
|
31
|
+
* The maximum number of avatars to display before showing the overflow menu.
|
|
30
32
|
*
|
|
31
33
|
* This is used to limit the number of avatars displayed in the group.
|
|
32
34
|
*
|
|
33
35
|
* Recommended to set this to a value between 3 and 5 for optimal display.
|
|
36
|
+
*
|
|
37
|
+
* @default 5
|
|
38
|
+
* @min 1
|
|
39
|
+
* @max 5
|
|
34
40
|
*/
|
|
35
41
|
max?: number;
|
|
36
42
|
/**
|
|
37
43
|
* The variant of the avatar group.
|
|
38
44
|
*
|
|
39
|
-
* @default
|
|
45
|
+
* @default auto
|
|
40
46
|
*/
|
|
41
47
|
variant?: 'spread' | 'stacked';
|
|
42
48
|
};
|
|
@@ -62,28 +68,18 @@ export type AvatarGroupProps = {
|
|
|
62
68
|
* @name AvatarGroup
|
|
63
69
|
* @phase UXReview
|
|
64
70
|
*/
|
|
65
|
-
export function AvatarGroup({ items, size = 'small', max = 5, variant }: AvatarGroupProps) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const overFlowCount = items.length - max;
|
|
69
|
-
const small = size === 'x-small' || size === 'small';
|
|
71
|
+
export function AvatarGroup({ items, size = 'small', max: maxProp = 5, variant = 'spread', style }: AvatarGroupProps) {
|
|
72
|
+
const max = maxProp > items.length ? items.length : maxProp;
|
|
73
|
+
const overflowItems = items.slice(max);
|
|
70
74
|
|
|
71
|
-
return (
|
|
72
|
-
<div data-bspk="avatar-group" data-max={max} data-size={size} data-variant={variant}>
|
|
73
|
-
<div data-
|
|
75
|
+
return !Array.isArray(items) || !items?.length ? null : (
|
|
76
|
+
<div data-bspk="avatar-group" data-max={max} data-size={size} data-variant={variant} style={style}>
|
|
77
|
+
<div data-wrap>
|
|
74
78
|
{items.slice(0, max).map((item, index) => (
|
|
75
|
-
<Avatar
|
|
76
|
-
data-stacked={variant === 'stacked' ? (small ? '01' : '02') : undefined}
|
|
77
|
-
key={index}
|
|
78
|
-
{...item}
|
|
79
|
-
size={size}
|
|
80
|
-
/>
|
|
79
|
+
<Avatar key={index} {...item} onClick={() => {}} size={size} />
|
|
81
80
|
))}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
<div aria-hidden data-bspk="avatar" data-color="white" data-size={size}>
|
|
85
|
-
<span data-overflow-count>+{overFlowCount}</span>
|
|
86
|
-
</div>
|
|
81
|
+
{overflowItems.length > 0 && (
|
|
82
|
+
<AvatarGroupOverflow items={overflowItems} overflow={overflowItems.length} size={size} />
|
|
87
83
|
)}
|
|
88
84
|
</div>
|
|
89
85
|
</div>
|
|
@@ -4,7 +4,6 @@ import { ComponentExample, Preset } from '-/utils/demo';
|
|
|
4
4
|
|
|
5
5
|
const BLUE = COLOR_VARIANTS[4];
|
|
6
6
|
const GREEN = COLOR_VARIANTS[5];
|
|
7
|
-
const GREY = COLOR_VARIANTS[0];
|
|
8
7
|
const PURPLE = COLOR_VARIANTS[10];
|
|
9
8
|
|
|
10
9
|
export const presets: Preset<AvatarGroupProps>[] = [
|
|
@@ -12,30 +11,57 @@ export const presets: Preset<AvatarGroupProps>[] = [
|
|
|
12
11
|
label: 'Stacked',
|
|
13
12
|
propState: {
|
|
14
13
|
items: [
|
|
15
|
-
{ name: 'Fezzik', image: '/
|
|
14
|
+
{ name: 'Fezzik', image: '/avatar-01.png' },
|
|
16
15
|
{ name: 'Inigo Montoya', initials: 'IM', color: BLUE },
|
|
17
16
|
{ name: 'Miracle Max', initials: 'MM', showIcon: false, color: GREEN },
|
|
18
17
|
{ name: 'Princess Buttercup', showIcon: true, color: PURPLE },
|
|
19
18
|
],
|
|
20
19
|
variant: 'stacked' as AvatarGroupProps['variant'],
|
|
20
|
+
max: 10,
|
|
21
21
|
},
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
|
-
label: 'Stacked
|
|
24
|
+
label: 'Stacked With Overflow',
|
|
25
25
|
propState: {
|
|
26
26
|
items: [
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
{
|
|
27
|
+
{
|
|
28
|
+
name: 'Alice Johnson',
|
|
29
|
+
image: '/avatar-01.png',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'Bob Smith',
|
|
33
|
+
image: '/avatar-02.png',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'Charlie Brown',
|
|
37
|
+
image: '/avatar-03.png',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'David Wilson',
|
|
41
|
+
image: '/avatar-04.png',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'Eva Green',
|
|
45
|
+
image: '/avatar-05.png',
|
|
46
|
+
},
|
|
47
|
+
{ name: 'Frank Miller', image: '/avatar-06.png' },
|
|
48
|
+
{ name: 'Grace Lee', image: '/avatar-07.png' },
|
|
49
|
+
{ name: 'Hannah Kim', image: '/avatar-08.png' },
|
|
50
|
+
{ name: 'Ian Clark', image: '/avatar-09.png' },
|
|
51
|
+
{ name: 'Julia Adams', image: '/avatar-10.png' },
|
|
52
|
+
{ name: 'Katherine Johnson', image: '/avatar-11.png' },
|
|
32
53
|
],
|
|
33
|
-
max: 3,
|
|
34
54
|
variant: 'stacked' as AvatarGroupProps['variant'],
|
|
55
|
+
max: 5,
|
|
35
56
|
},
|
|
36
57
|
},
|
|
37
58
|
];
|
|
38
59
|
|
|
39
60
|
export const AvatarGroupExample: ComponentExample<AvatarGroupProps> = {
|
|
40
61
|
presets,
|
|
62
|
+
defaultState: {
|
|
63
|
+
variant: 'spread',
|
|
64
|
+
},
|
|
65
|
+
render: ({ props, Component, preset }) => <Component key={preset?.label} {...props} />,
|
|
66
|
+
variants: false,
|
|
41
67
|
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Avatar, AvatarProps, SizeVariant } from '-/components/Avatar';
|
|
2
|
+
import { ListItem } from '-/components/ListItem';
|
|
3
|
+
import { Menu } from '-/components/Menu';
|
|
4
|
+
import { Portal } from '-/components/Portal';
|
|
5
|
+
import { useArrowNavigation } from '-/hooks/useArrowNavigation';
|
|
6
|
+
import { useFloating } from '-/hooks/useFloating';
|
|
7
|
+
import { useOutsideClick } from '-/hooks/useOutsideClick';
|
|
8
|
+
import { handleKeyDown } from '-/utils/handleKeyDown';
|
|
9
|
+
import { scrollListItemsStyle } from '-/utils/scrollListItemsStyle';
|
|
10
|
+
import { useIds } from '-/utils/useIds';
|
|
11
|
+
|
|
12
|
+
type AvatarGroupOverflowProps = {
|
|
13
|
+
/** The number of overflow avatars */
|
|
14
|
+
overflow: number;
|
|
15
|
+
/** The size of the avatar group */
|
|
16
|
+
size: SizeVariant;
|
|
17
|
+
/** The avatars in the overflow */
|
|
18
|
+
items: AvatarProps[];
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export function AvatarGroupOverflow({ items: itemsProp, overflow, size }: AvatarGroupOverflowProps) {
|
|
22
|
+
const items = useIds(`avatar-overflow`, itemsProp);
|
|
23
|
+
const menuId = `avatar-overflow-menu-${items[0]?.id}`;
|
|
24
|
+
|
|
25
|
+
const { activeElementId, setActiveElementId, arrowKeyCallbacks } = useArrowNavigation({
|
|
26
|
+
ids: items.map((i) => i.id),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
const closeMenu = () => setActiveElementId(null);
|
|
30
|
+
const open = Boolean(activeElementId);
|
|
31
|
+
|
|
32
|
+
const { elements, floatingStyles } = useFloating({
|
|
33
|
+
hide: !open,
|
|
34
|
+
offsetOptions: 4,
|
|
35
|
+
refWidth: false,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
useOutsideClick({
|
|
39
|
+
elements: [elements.floating, elements.reference],
|
|
40
|
+
callback: () => closeMenu(),
|
|
41
|
+
disabled: !open,
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<>
|
|
46
|
+
<button
|
|
47
|
+
aria-activedescendant={activeElementId || undefined}
|
|
48
|
+
aria-controls={open ? menuId : undefined}
|
|
49
|
+
aria-expanded={open}
|
|
50
|
+
aria-haspopup="menu"
|
|
51
|
+
aria-hidden
|
|
52
|
+
aria-label={`Show ${overflow} more avatar${overflow > 1 ? 's' : ''}`}
|
|
53
|
+
data-bspk="avatar"
|
|
54
|
+
data-bspk-owner="avatar-overflow"
|
|
55
|
+
data-size={size}
|
|
56
|
+
onBlur={() => closeMenu()}
|
|
57
|
+
onClick={() => setActiveElementId(activeElementId === null ? items[0]?.id : null)}
|
|
58
|
+
onKeyDown={handleKeyDown(arrowKeyCallbacks)}
|
|
59
|
+
ref={elements.setReference}
|
|
60
|
+
role="combobox"
|
|
61
|
+
>
|
|
62
|
+
<span data-overflow-count>+{overflow}</span>
|
|
63
|
+
</button>
|
|
64
|
+
{open && (
|
|
65
|
+
<Portal>
|
|
66
|
+
<Menu
|
|
67
|
+
id={menuId}
|
|
68
|
+
innerRef={elements.setFloating}
|
|
69
|
+
role="menu"
|
|
70
|
+
style={{
|
|
71
|
+
...floatingStyles,
|
|
72
|
+
...scrollListItemsStyle(5, items.length),
|
|
73
|
+
'--list-item-height': `var(--spacing-sizing-12)`,
|
|
74
|
+
paddingRight: 'var(--spacing-sizing-04)',
|
|
75
|
+
}}
|
|
76
|
+
width="fit-content"
|
|
77
|
+
>
|
|
78
|
+
{items.map((item, index) => (
|
|
79
|
+
<ListItem
|
|
80
|
+
active={activeElementId === item.id}
|
|
81
|
+
key={index}
|
|
82
|
+
label={item.name}
|
|
83
|
+
leading={<Avatar {...item} hideTooltip size="small" />}
|
|
84
|
+
/>
|
|
85
|
+
))}
|
|
86
|
+
</Menu>
|
|
87
|
+
</Portal>
|
|
88
|
+
)}
|
|
89
|
+
</>
|
|
90
|
+
);
|
|
91
|
+
}
|
|
@@ -1,28 +1,48 @@
|
|
|
1
1
|
[data-bspk='avatar-group'] {
|
|
2
|
-
width:
|
|
2
|
+
width: fit-content;
|
|
3
|
+
max-width: 100%;
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: row;
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: center;
|
|
3
8
|
|
|
4
9
|
[data-wrap] {
|
|
5
|
-
width:
|
|
10
|
+
min-width: fit-content;
|
|
6
11
|
display: flex;
|
|
7
12
|
flex-direction: row;
|
|
8
|
-
align-items:
|
|
9
|
-
justify-content:
|
|
10
|
-
overflow: hidden;
|
|
13
|
+
align-items: center;
|
|
14
|
+
justify-content: center;
|
|
11
15
|
}
|
|
12
16
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
// data-gap={variant === 'spread' ? (small ? '01' : '02') : undefined}
|
|
18
|
+
|
|
19
|
+
[data-bspk='avatar'] {
|
|
20
|
+
z-index: 1;
|
|
21
|
+
|
|
22
|
+
&:hover {
|
|
23
|
+
z-index: 2;
|
|
24
|
+
}
|
|
16
25
|
|
|
17
|
-
|
|
18
|
-
|
|
26
|
+
&[data-bspk-owner='avatar-overflow'] {
|
|
27
|
+
--avatar-border: solid 1px var(--stroke-neutral-low);
|
|
28
|
+
|
|
29
|
+
background-color: var(--surface-neutral-t1-base);
|
|
30
|
+
}
|
|
19
31
|
}
|
|
20
32
|
|
|
21
|
-
[data-
|
|
22
|
-
|
|
33
|
+
&[data-variant='spread'] {
|
|
34
|
+
--avatar-border: none;
|
|
35
|
+
|
|
36
|
+
[data-bspk='avatar'] + [data-bspk='avatar'] {
|
|
37
|
+
margin-left: var(--spacing-sizing-02);
|
|
38
|
+
}
|
|
23
39
|
}
|
|
24
40
|
|
|
25
|
-
[data-
|
|
26
|
-
|
|
41
|
+
&[data-variant='stacked'] {
|
|
42
|
+
--avatar-border: solid 1px var(--stroke-neutral-low);
|
|
43
|
+
|
|
44
|
+
[data-bspk='avatar'] + [data-bspk='avatar'] {
|
|
45
|
+
margin-left: calc(var(--spacing-sizing-02) * -1);
|
|
46
|
+
}
|
|
27
47
|
}
|
|
28
48
|
}
|
|
@@ -6,7 +6,7 @@ export const BadgeExample: ComponentExample<BadgeProps> = {
|
|
|
6
6
|
render: ({ props, Component }) => {
|
|
7
7
|
return (
|
|
8
8
|
<Component {...props}>
|
|
9
|
-
<Avatar image="/
|
|
9
|
+
<Avatar image="/avatar-01.png" name="Andre Giant" />
|
|
10
10
|
</Component>
|
|
11
11
|
);
|
|
12
12
|
},
|
|
@@ -13,7 +13,7 @@ export const BadgeDotExample: ComponentExample<BadgeDotProps> = {
|
|
|
13
13
|
{props.outline === true ? (
|
|
14
14
|
<Button label="Button" size="large" />
|
|
15
15
|
) : (
|
|
16
|
-
<Avatar image="/
|
|
16
|
+
<Avatar image="/avatar-01.png" name="Andre Giant" />
|
|
17
17
|
)}
|
|
18
18
|
</Component>
|
|
19
19
|
);
|
|
@@ -5,7 +5,7 @@ import { ButtonSize, CommonProps, ElementProps, SetRef } from '-/types/common';
|
|
|
5
5
|
|
|
6
6
|
export type ButtonVariant = 'primary' | 'secondary' | 'tertiary';
|
|
7
7
|
|
|
8
|
-
export type ButtonProps<As extends ElementType =
|
|
8
|
+
export type ButtonProps<As extends ElementType = ElementType> = CommonProps<'disabled' | 'owner'> & {
|
|
9
9
|
/**
|
|
10
10
|
* The label of the button.
|
|
11
11
|
*
|
|
@@ -98,7 +98,7 @@ export type ButtonProps<As extends ElementType = 'button'> = CommonProps<'disabl
|
|
|
98
98
|
* @name Button
|
|
99
99
|
* @phase UXReview
|
|
100
100
|
*/
|
|
101
|
-
export function Button<As extends ElementType =
|
|
101
|
+
export function Button<As extends ElementType = ElementType>(
|
|
102
102
|
props: AriaAttributes & ElementProps<ButtonProps<As>, As>,
|
|
103
103
|
): JSX.Element {
|
|
104
104
|
const {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import './card.scss';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
+
import { ElementProps } from '-/types/common';
|
|
3
4
|
|
|
4
5
|
export type CardProps = {
|
|
5
6
|
/**
|
|
@@ -38,9 +39,9 @@ export type CardProps = {
|
|
|
38
39
|
* @name Card
|
|
39
40
|
* @phase UXReview
|
|
40
41
|
*/
|
|
41
|
-
export function Card({ children, variant = 'elevated' }: CardProps) {
|
|
42
|
+
export function Card({ children, variant = 'elevated', ...props }: ElementProps<CardProps, 'div'>) {
|
|
42
43
|
return (
|
|
43
|
-
<div data-bspk="card" data-variant={variant}>
|
|
44
|
+
<div {...props} data-bspk="card" data-variant={variant}>
|
|
44
45
|
{children}
|
|
45
46
|
</div>
|
|
46
47
|
);
|
|
@@ -41,7 +41,7 @@ export type CheckboxGroupProps = FieldControlProps<string[]> & {
|
|
|
41
41
|
* import { CheckboxGroup } from '@bspk/ui/CheckboxGroup';
|
|
42
42
|
*
|
|
43
43
|
* function Example() {
|
|
44
|
-
* const [
|
|
44
|
+
* const [value, setValue] = React.useState<string[]>([]);
|
|
45
45
|
*
|
|
46
46
|
* return (
|
|
47
47
|
* <CheckboxGroup
|
|
@@ -52,9 +52,9 @@ export type CheckboxGroupProps = FieldControlProps<string[]> & {
|
|
|
52
52
|
* { label: 'Option 2', value: 'option2' },
|
|
53
53
|
* { label: 'Option 3', value: 'option3' },
|
|
54
54
|
* ]}
|
|
55
|
-
*
|
|
56
|
-
* onChange={(
|
|
57
|
-
*
|
|
55
|
+
* value={value}
|
|
56
|
+
* onChange={(nextValue: string[]) => {
|
|
57
|
+
* setValue(nextValue);
|
|
58
58
|
* }}
|
|
59
59
|
* />
|
|
60
60
|
* );
|
|
@@ -19,11 +19,12 @@ export function CheckboxGroupField({
|
|
|
19
19
|
helperText,
|
|
20
20
|
labelTrailing,
|
|
21
21
|
errorMessage,
|
|
22
|
+
style,
|
|
22
23
|
...controlProps
|
|
23
24
|
}: CheckboxGroupFieldProps) {
|
|
24
25
|
return (
|
|
25
|
-
<Field as="fieldset">
|
|
26
|
-
<FieldLabel as="legend" labelTrailing={labelTrailing}>
|
|
26
|
+
<Field as="fieldset" style={style}>
|
|
27
|
+
<FieldLabel as="legend" labelTrailing={labelTrailing} style={style}>
|
|
27
28
|
{label}
|
|
28
29
|
</FieldLabel>
|
|
29
30
|
<CheckboxGroup {...controlProps} />
|