@bspk/ui 1.1.18 → 1.1.19

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/Avatar.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { styleAdd } from './utils/styleAdd';
3
- styleAdd(`[data-bspk=avatar]{--height: var(--spacing-sizing-10);--font: var(--labels-base);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0;height:var(--height);width:var(--height);aspect-ratio:1/1;border-radius:999px;background-color:var(--background);color:var(--foreground);font:var(--font)}[data-bspk=avatar]:not([data-color]){--foreground: var(--foreground-neutral-on-surface);--background: var(--surface-neutral-t3-low)}[data-bspk=avatar]:has(img){overflow:hidden}[data-bspk=avatar] img{max-width:100%}[data-bspk=avatar][data-size=x-small]{--height: var(--spacing-sizing-06);--font: var(--labels-x-small)}[data-bspk=avatar][data-size=small]{--height: var(--spacing-sizing-08);--font: var(--labels-small)}[data-bspk=avatar][data-size=medium]{--height: var(--spacing-sizing-10);--font: var(--labels-base)}[data-bspk=avatar][data-size=large]{--height: var(--spacing-sizing-12);--font: var(--labels-large)}[data-bspk=avatar][data-size=x-large]{--height: var(--spacing-sizing-14);--font: var(--subheader-x-large)}[data-bspk=avatar][data-size=xx-large]{--height: var(--spacing-sizing-17);--font: var(--subheader-xx-large)}[data-bspk=avatar][data-size=xxx-large]{--height: var(--spacing-sizing-19);--font: var(--display-regular-small)}[data-bspk=avatar][data-size=xxxx-large]{--height: var(--spacing-sizing-21);--font: var(--display-regular-medium)}[data-bspk=avatar][data-size=xxxxx-large]{--height: var(--spacing-sizing-23);--font: var(--display-regular-large)}`);;
3
+ styleAdd(`[data-bspk=avatar]{--height: var(--spacing-sizing-10);--font: var(--labels-base);--svg-size: var(--spacing-sizing-10);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0;height:var(--height);width:var(--height);aspect-ratio:1/1;border-radius:999px;background-color:var(--background);color:var(--foreground);font:var(--font)}[data-bspk=avatar]:not([data-color]){--foreground: var(--foreground-neutral-on-surface);--background: var(--surface-neutral-t3-low)}[data-bspk=avatar]:has(img){overflow:hidden}[data-bspk=avatar] img{max-width:100%}[data-bspk=avatar] svg{width:var(--svg-size);height:var(--svg-size)}[data-bspk=avatar] [data-icon]{display:flex;align-items:center;justify-content:center}[data-bspk=avatar][data-size=x-small]{--height: var(--spacing-sizing-06);--font: var(--labels-x-small);--svg-size: var(--spacing-sizing-04)}[data-bspk=avatar][data-size=small]{--height: var(--spacing-sizing-08);--font: var(--labels-small);--svg-size: var(--spacing-sizing-05)}[data-bspk=avatar][data-size=medium]{--height: var(--spacing-sizing-10);--font: var(--labels-base);--svg-size: var(--spacing-sizing-05)}[data-bspk=avatar][data-size=large]{--height: var(--spacing-sizing-12);--font: var(--labels-large);--svg-size: var(--spacing-sizing-06)}[data-bspk=avatar][data-size=x-large]{--height: var(--spacing-sizing-14);--font: var(--subheader-x-large);--svg-size: var(--spacing-sizing-08)}[data-bspk=avatar][data-size=xx-large]{--height: var(--spacing-sizing-17);--font: var(--subheader-xx-large);--svg-size: var(--spacing-sizing-09)}[data-bspk=avatar][data-size=xxx-large]{--height: var(--spacing-sizing-19);--font: var(--display-regular-small);--svg-size: var(--spacing-sizing-12)}[data-bspk=avatar][data-size=xxxx-large]{--height: var(--spacing-sizing-21);--font: var(--display-regular-medium);--svg-size: var(--spacing-sizing-15)}[data-bspk=avatar][data-size=xxxxx-large]{--height: var(--spacing-sizing-23);--font: var(--display-regular-large);--svg-size: var(--spacing-sizing-17)}`);;
4
4
  import { useMemo } from 'react';
5
5
  import { Tooltip } from './Tooltip';
6
6
  import { isValidIcon } from './utils/children';
@@ -8,7 +8,13 @@ export type DropdownOption = Record<string, unknown> & {
8
8
  /** The label of the option. This is the text that will be displayed on the option. */
9
9
  label: string;
10
10
  };
11
- export type DropdownProps<T extends DropdownOption = DropdownOption> = CommonProps<'aria-label' | 'disabled' | 'id' | 'name' | 'readOnly' | 'size'> & InvalidPropsLibrary & Pick<MenuProps<T>, 'isMulti' | 'itemCount' | 'renderListItem'> & {
11
+ export type DropdownOptionAll = {
12
+ /** The label of the option. This is the text that will be displayed on the option. */
13
+ label: string;
14
+ /** Whether the option is selected. */
15
+ selected?: boolean;
16
+ };
17
+ export type DropdownProps<T extends DropdownOption = DropdownOption> = CommonProps<'aria-label' | 'disabled' | 'id' | 'name' | 'readOnly' | 'size'> & InvalidPropsLibrary & Pick<MenuProps<T>, 'isMulti' | 'itemCount' | 'renderListItem' | 'selectAll'> & {
12
18
  /**
13
19
  * Array of options to display in the dropdown
14
20
  *
@@ -39,7 +45,7 @@ export type DropdownProps<T extends DropdownOption = DropdownOption> = CommonPro
39
45
  /**
40
46
  * Placeholder for the dropdown
41
47
  *
42
- * @default Select...
48
+ * @default Select one...
43
49
  */
44
50
  placeholder?: string;
45
51
  /**
@@ -62,7 +68,7 @@ export type DropdownProps<T extends DropdownOption = DropdownOption> = CommonPro
62
68
  *
63
69
  * @name Dropdown
64
70
  */
65
- declare function Dropdown({ options, value: selected, onChange, 'aria-label': ariaLabel, placeholder, size, itemCount, disabled, id: propId, invalid, errorMessage, readOnly, placement, name, isMulti, renderListItem, style: styleProp, }: DropdownProps): import("react/jsx-runtime").JSX.Element;
71
+ declare function Dropdown({ options, value: selected, onChange, 'aria-label': ariaLabel, placeholder, size, itemCount, disabled, id: propId, invalid, errorMessage, readOnly, placement, name, isMulti, renderListItem, style: styleProp, selectAll, }: DropdownProps): import("react/jsx-runtime").JSX.Element;
66
72
  declare namespace Dropdown {
67
73
  var bspkName: string;
68
74
  }
package/dist/Dropdown.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { SvgChevronRight } from '@bspk/icons/ChevronRight';
3
3
  import { styleAdd } from './utils/styleAdd';
4
- styleAdd(`[data-bspk=dropdown]{--dropdown-background: var(--surface-neutral-t1-base);--dropdown-border-color: var(--stroke-neutral-base);--dropdown-text-color: var(--foreground-neutral-on-surface);--dropdown-height: var(--spacing-sizing-10);--dropdown-font: var(--body-base);--dropdown-clear-height: var(--spacing-sizing-05);--dropdown-padding: var(--spacing-sizing-03);--dropdown-icon-width: var(--spacing-sizing-05);position:relative;width:100%;max-width:280px;outline:unset;min-height:var(--dropdown-height);max-height:var(--dropdown-height);display:flex;flex-direction:row;gap:var(--spacing-sizing-02);flex-grow:0;flex-shrink:0;text-align:left;font:var(--dropdown-font);border:1px solid var(--dropdown-border-color);border-radius:var(--radius-small);background:var(--dropdown-background);padding:0 var(--dropdown-padding)}[data-bspk=dropdown] [data-placeholder]{display:block;max-width:100%;text-overflow:ellipsis;overflow:hidden;padding:0}[data-bspk=dropdown] [data-placeholder] [data-inner]{min-height:auto;padding:0}[data-bspk=dropdown] [data-placeholder] [data-item-label] [data-text]{color:var(--dropdown-text-color)}[data-bspk=dropdown] [data-svg]{display:flex;flex-direction:column;justify-content:center}[data-bspk=dropdown] [data-svg] svg{transform:rotate(90deg);width:var(--dropdown-icon-width)}[data-bspk=dropdown][data-size=small]{--dropdown-height: var(--spacing-sizing-08);--dropdown-font: var(--body-small);--dropdown-clear-height: var(--spacing-sizing-05);--dropdown-padding: var(--spacing-sizing-02);--dropdown-icon-width: var(--spacing-sizing-05)}[data-bspk=dropdown][data-size=large]{--dropdown-height: var(--spacing-sizing-12);--dropdown-font: var(--body-large);--dropdown-clear-height: var(--spacing-sizing-06);--dropdown-icon-width: var(--spacing-sizing-06)}[data-bspk=dropdown]:disabled{--dropdown-text-color: var(--foreground-neutral-disabled-on-surface);--dropdown-border-color: var(--stroke-neutral-disabled-light);--dropdown-background: linear-gradient(var(--interactions-disabled-opacity), var(--interactions-disabled-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown]:disabled[aria-readonly]:not([data-empty]){--dropdown-text-color: var(--foreground-neutral-on-surface)}[data-bspk=dropdown]:not(:disabled):focus{--dropdown-border-color: var(--stroke-brand-primary)}[data-bspk=dropdown]:not(:disabled):hover{--dropdown-background: linear-gradient(var(--interactions-neutral-hover-opacity), var(--interactions-neutral-hover-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown]:not(:disabled):active{--dropdown-background: linear-gradient(var(--interactions-neutral-press-opacity), var(--interactions-neutral-press-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown][data-invalid]{--dropdown-border-color: var(--status-error)}[data-bspk=dropdown][data-empty]{--dropdown-text-color: var(--foreground-neutral-on-surface-variant-03)}`);;
4
+ styleAdd(`[data-bspk=dropdown]{--dropdown-background: var(--surface-neutral-t1-base);--dropdown-border-color: var(--stroke-neutral-base);--dropdown-text-color: var(--foreground-neutral-on-surface);--dropdown-height: var(--spacing-sizing-10);--dropdown-font: var(--body-base);--dropdown-clear-height: var(--spacing-sizing-05);--dropdown-padding: var(--spacing-sizing-03);--dropdown-icon-width: var(--spacing-sizing-05);position:relative;width:100%;max-width:280px;outline:unset;min-height:var(--dropdown-height);max-height:var(--dropdown-height);display:flex;flex-direction:row;gap:var(--spacing-sizing-02);flex-grow:0;flex-shrink:0;text-align:left;font:var(--dropdown-font);border:1px solid var(--dropdown-border-color);border-radius:var(--radius-small);background:var(--dropdown-background);padding:0 var(--dropdown-padding)}[data-bspk=dropdown] [data-placeholder]{display:block;max-width:100%;text-overflow:ellipsis;overflow:hidden;padding:0}[data-bspk=dropdown] [data-placeholder] [data-inner]{min-height:auto;padding:0}[data-bspk=dropdown] [data-placeholder] [data-item-label] [data-text]{color:var(--dropdown-text-color)}[data-bspk=dropdown] [data-svg]{display:flex;flex-direction:column;justify-content:center}[data-bspk=dropdown] [data-svg] svg{transform:rotate(90deg);width:var(--dropdown-icon-width)}[data-bspk=dropdown] [data-bspk=list-item][data-selected]{background:var(--surface-brand-primary-highlight)}[data-bspk=dropdown][data-size=small]{--dropdown-height: var(--spacing-sizing-08);--dropdown-font: var(--body-small);--dropdown-clear-height: var(--spacing-sizing-05);--dropdown-padding: var(--spacing-sizing-02);--dropdown-icon-width: var(--spacing-sizing-05)}[data-bspk=dropdown][data-size=large]{--dropdown-height: var(--spacing-sizing-12);--dropdown-font: var(--body-large);--dropdown-clear-height: var(--spacing-sizing-06);--dropdown-icon-width: var(--spacing-sizing-06)}[data-bspk=dropdown]:disabled{--dropdown-text-color: var(--foreground-neutral-disabled-on-surface);--dropdown-border-color: var(--stroke-neutral-disabled-light);--dropdown-background: linear-gradient(var(--interactions-disabled-opacity), var(--interactions-disabled-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown]:disabled[aria-readonly]:not([data-empty]){--dropdown-text-color: var(--foreground-neutral-on-surface)}[data-bspk=dropdown]:not(:disabled):focus{--dropdown-border-color: var(--stroke-brand-primary)}[data-bspk=dropdown]:not(:disabled):hover{--dropdown-background: linear-gradient(var(--interactions-neutral-hover-opacity), var(--interactions-neutral-hover-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown]:not(:disabled):active{--dropdown-background: linear-gradient(var(--interactions-neutral-press-opacity), var(--interactions-neutral-press-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown][data-invalid]{--dropdown-border-color: var(--status-error)}[data-bspk=dropdown][data-empty]{--dropdown-text-color: var(--foreground-neutral-on-surface-variant-03)}`);;
5
5
  import { ListItem } from './ListItem';
6
6
  import { Menu } from './Menu';
7
7
  import { Portal } from './Portal';
@@ -12,7 +12,7 @@ import { useId } from './hooks/useId';
12
12
  *
13
13
  * @name Dropdown
14
14
  */
15
- function Dropdown({ options = [], value: selected, onChange, 'aria-label': ariaLabel, placeholder = 'Select...', size = 'medium', itemCount = 5, disabled, id: propId, invalid, errorMessage, readOnly, placement = 'bottom', name, isMulti, renderListItem, style: styleProp, }) {
15
+ function Dropdown({ options = [], value: selected, onChange, 'aria-label': ariaLabel, placeholder = 'Select...', size = 'medium', itemCount = 5, disabled, id: propId, invalid, errorMessage, readOnly, placement = 'bottom', name, isMulti, renderListItem, style: styleProp, selectAll, }) {
16
16
  const id = useId(propId);
17
17
  const { triggerProps, menuProps, closeMenu } = useFloatingMenu({
18
18
  placement,
@@ -31,7 +31,7 @@ function Dropdown({ options = [], value: selected, onChange, 'aria-label': ariaL
31
31
  if (!isMulti)
32
32
  closeMenu();
33
33
  onChange?.(next);
34
- }, renderListItem: renderListItem, selectedValues: selected, ...menuProps }) })] }));
34
+ }, renderListItem: renderListItem, selectAll: selectAll, selectedValues: selected, ...menuProps }) })] }));
35
35
  }
36
36
  Dropdown.bspkName = 'Dropdown';
37
37
  export { Dropdown };
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../src/Dropdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAa,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAiEtC;;;;GAIG;AACH,SAAS,QAAQ,CAAC,EACd,OAAO,GAAG,EAAE,EACZ,KAAK,EAAE,QAAQ,EACf,QAAQ,EACR,YAAY,EAAE,SAAS,EACvB,WAAW,GAAG,WAAW,EACzB,IAAI,GAAG,QAAQ,EACf,SAAS,GAAG,CAAC,EACb,QAAQ,EACR,EAAE,EAAE,MAAM,EACV,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,SAAS,GAAG,QAAQ,EACpB,IAAI,EACJ,OAAO,EACP,cAAc,EACd,KAAK,EAAE,SAAS,GACJ;IACZ,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzB,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC;QAC3D,SAAS;QACT,YAAY,EAAE;YACV,QAAQ;YACR,OAAO;YACP,QAAQ;YACR,YAAY;SACf;KACJ,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,OAAO;QACzB,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,IAAI,CAAC,UAAU,QAAQ,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW;QAChF,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAE5D,OAAO,CACH,8BACI,gBAAO,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,QAAQ,GAAG,EAC3D,gCACgB,SAAS,eACX,UAAU,gBACR,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,kBAC5B,OAAO,IAAI,SAAS,eACvB,IAAI,EACf,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAC9B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,SAAS,KACZ,YAAY,aAEhB,KAAC,QAAQ,wBAAkB,EAAE,EAAC,KAAK,EAAE,aAAa,IAAI,WAAW,EAAE,QAAQ,SAAG,EAC9E,2CACI,KAAC,eAAe,KAAG,GAChB,IACF,EACT,KAAC,MAAM,cACH,KAAC,IAAI,2BAED,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;wBACtB,KAAK,EAAE,cAAc,EAAE,CAAC;wBACxB,IAAI,CAAC,OAAO;4BAAE,SAAS,EAAE,CAAC;wBAC1B,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;oBACrB,CAAC,EACD,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,QAAQ,KACpB,SAAS,GACf,GACG,IACV,CACN,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../src/Dropdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAa,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAwEtC;;;;GAIG;AACH,SAAS,QAAQ,CAAC,EACd,OAAO,GAAG,EAAE,EACZ,KAAK,EAAE,QAAQ,EACf,QAAQ,EACR,YAAY,EAAE,SAAS,EACvB,WAAW,GAAG,WAAW,EACzB,IAAI,GAAG,QAAQ,EACf,SAAS,GAAG,CAAC,EACb,QAAQ,EACR,EAAE,EAAE,MAAM,EACV,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,SAAS,GAAG,QAAQ,EACpB,IAAI,EACJ,OAAO,EACP,cAAc,EACd,KAAK,EAAE,SAAS,EAChB,SAAS,GACG;IACZ,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzB,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC;QAC3D,SAAS;QACT,YAAY,EAAE;YACV,QAAQ;YACR,OAAO;YACP,QAAQ;YACR,YAAY;SACf;KACJ,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,OAAO;QACzB,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,IAAI,CAAC,UAAU,QAAQ,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW;QAChF,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAE5D,OAAO,CACH,8BACI,gBAAO,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,QAAQ,GAAG,EAC3D,gCACgB,SAAS,eACX,UAAU,gBACR,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,kBAC5B,OAAO,IAAI,SAAS,eACvB,IAAI,EACf,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAC9B,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,SAAS,KACZ,YAAY,aAEhB,KAAC,QAAQ,wBAAkB,EAAE,EAAC,KAAK,EAAE,aAAa,IAAI,WAAW,EAAE,QAAQ,SAAG,EAC9E,2CACI,KAAC,eAAe,KAAG,GAChB,IACF,EACT,KAAC,MAAM,cACH,KAAC,IAAI,2BAED,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;wBACtB,KAAK,EAAE,cAAc,EAAE,CAAC;wBACxB,IAAI,CAAC,OAAO;4BAAE,SAAS,EAAE,CAAC;wBAC1B,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;oBACrB,CAAC,EACD,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,QAAQ,KACpB,SAAS,GACf,GACG,IACV,CACN,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/dist/Menu.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import './menu.scss';
2
- import { ComponentProps } from 'react';
2
+ import { ComponentProps, ReactNode } from 'react';
3
3
  import { ListItem } from './ListItem';
4
4
  import { CommonProps, ElementProps, SetRef } from './';
5
5
  export declare const MIN_ITEM_COUNT = 3;
@@ -53,12 +53,8 @@ export type MenuProps<T extends MenuItem = MenuItem> = CommonProps<'disabled' |
53
53
  items?: T[];
54
54
  /** A ref to the inner div element. */
55
55
  innerRef?: SetRef<HTMLDivElement>;
56
- /**
57
- * Message to display when no results are found
58
- *
59
- * @type multiline
60
- */
61
- noResultsMessage?: string;
56
+ /** Message to display when no results are found */
57
+ noResultsMessage?: ReactNode;
62
58
  /** The index of the currently highlighted item. */
63
59
  activeIndex?: number;
64
60
  /** The values of the selected items */
@@ -77,6 +73,17 @@ export type MenuProps<T extends MenuItem = MenuItem> = CommonProps<'disabled' |
77
73
  * @default false
78
74
  */
79
75
  isMulti?: boolean;
76
+ /**
77
+ * The label for the "Select All" option.
78
+ *
79
+ * Ignored if `isMulti` is false.
80
+ *
81
+ * If `isMulti` is `true`, defaults to "Select All". If a string, it will be used as the label. If false the select
82
+ * all option will not be rendered.
83
+ *
84
+ * @default false
85
+ */
86
+ selectAll?: boolean | string;
80
87
  /**
81
88
  * The function to call when the selected values change.
82
89
  *
@@ -90,7 +97,7 @@ export type MenuProps<T extends MenuItem = MenuItem> = CommonProps<'disabled' |
90
97
  *
91
98
  * @name Menu
92
99
  */
93
- declare function Menu({ itemCount: itemCountProp, items: itemsProp, noResultsMessage, innerRef, onChange, activeIndex, selectedValues, disabled, id: idProp, renderListItem, isMulti, ...props }: ElementProps<MenuProps, 'div'>): import("react/jsx-runtime").JSX.Element;
100
+ declare function Menu({ itemCount: itemCountProp, items: itemsProp, noResultsMessage, innerRef, onChange, activeIndex, selectedValues, disabled, id: idProp, renderListItem, isMulti, selectAll: selectAllProp, ...props }: ElementProps<MenuProps, 'div'>): import("react/jsx-runtime").JSX.Element;
94
101
  declare namespace Menu {
95
102
  var bspkName: string;
96
103
  }
package/dist/Menu.js CHANGED
@@ -1,12 +1,14 @@
1
1
  import { createElement as _createElement } from "react";
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { styleAdd } from './utils/styleAdd';
4
- styleAdd(`[data-bspk=menu]{/*! --item-count: is set via inline style */width:332px;border:1px solid var(--stroke-neutral-low);background-color:var(--surface-neutral-t1-base);box-shadow:var(--drop-shadow-float);border-radius:var(--radius-large);display:flex;flex-direction:column;--item-size: var(--spacing-sizing-12)}[data-bspk=menu][data-floating]{z-index:var(--z-index-dropdown)}[data-bspk=menu][data-item-count]{height:calc(var(--item-count)*var(--item-size));overflow-y:scroll}[data-bspk=menu][data-no-items]{padding:var(--spacing-sizing-08) var(--spacing-sizing-04);align-items:center;justify-content:center;gap:var(--spacing-sizing-03)}[data-bspk=menu] [data-bspk=list-item]{min-height:var(--item-size);height:var(--item-size)}`);;
4
+ styleAdd(`[data-bspk=menu]{/*! --item-count: is set via inline style */width:332px;border:1px solid var(--stroke-neutral-low);background-color:var(--surface-neutral-t1-base);box-shadow:var(--drop-shadow-float);border-radius:var(--radius-large);display:flex;flex-direction:column;--item-size: var(--spacing-sizing-12)}[data-bspk=menu][data-floating]{z-index:var(--z-index-dropdown)}[data-bspk=menu][data-item-count]{height:calc(var(--item-count)*var(--item-size));overflow-y:scroll}[data-bspk=menu][data-no-items]{padding:var(--spacing-sizing-08) var(--spacing-sizing-04);align-items:center;justify-content:center;gap:var(--spacing-sizing-03)}[data-bspk=menu] [data-bspk=list-item]{min-height:var(--item-size);height:var(--item-size)}[data-bspk=menu] [data-bspk=list-item][data-selected]{background-color:var(--surface-brand-primary-highlight)}`);;
5
5
  import { useMemo } from 'react';
6
6
  import { Checkbox } from './Checkbox';
7
7
  import { ListItem } from './ListItem';
8
- import { Txt } from './Txt';
9
8
  import { useId } from './hooks/useId';
9
+ const DEFAULT = {
10
+ selectAll: 'Select All',
11
+ };
10
12
  export const MIN_ITEM_COUNT = 3;
11
13
  export const MAX_ITEM_COUNT = 10;
12
14
  export function menuItemId(menuId, index) {
@@ -17,45 +19,65 @@ export function menuItemId(menuId, index) {
17
19
  *
18
20
  * @name Menu
19
21
  */
20
- function Menu({ itemCount: itemCountProp = 5, items: itemsProp = [], noResultsMessage, innerRef, onChange, activeIndex, selectedValues = [], disabled, id: idProp, renderListItem, isMulti, ...props }) {
22
+ function Menu({ itemCount: itemCountProp = 5, items: itemsProp = [], noResultsMessage, innerRef, onChange, activeIndex, selectedValues = [], disabled, id: idProp, renderListItem, isMulti, selectAll: selectAllProp, ...props }) {
21
23
  const menuId = useId(idProp);
22
- const items = Array.isArray(itemsProp) ? itemsProp : [];
23
- const itemCount = useMemo(() =>
24
- // Ensure itemCount is within the range of items.length
25
- Math.min(items.length,
26
- // pin itemCountProp to a range of 3 to 10
27
- Math.max(MIN_ITEM_COUNT, Math.min(itemCountProp, MAX_ITEM_COUNT))), [itemCountProp, items.length]);
28
- return (_jsx("div", { ...props, "data-bspk": "menu", "data-disabled": disabled || undefined, "data-item-count": itemCount || undefined, "data-no-items": !items.length || undefined, id: menuId, ref: innerRef, role: "listbox", style: { ...props.style, '--item-count': itemCount }, children: items.length ? (items.map((item, index) => {
29
- const itemId = item.id || menuItemId(menuId, index);
30
- const selected = Array.isArray(selectedValues) && selectedValues.includes(item.value);
31
- const renderProps = renderListItem?.({
32
- activeIndex,
33
- index,
34
- item,
35
- selectedValues,
36
- isMulti,
37
- menuId: menuId || '',
38
- selected,
39
- itemId,
40
- });
41
- return (_createElement(ListItem, { ...renderProps, active: activeIndex === index || undefined, "aria-disabled": item.disabled || undefined, "aria-posinset": index + 1, "aria-selected": selected || undefined, as: "button", "data-menu-item": true, "data-selected": selected || undefined, disabled: item.disabled || undefined, id: itemId, key: itemId, label: renderProps?.label?.toString() || item.label?.toString(), onClick: (event) => {
42
- if (renderProps)
43
- renderProps?.onClick?.(event);
44
- if (onChange) {
45
- if (!isMulti) {
46
- onChange?.([item.value], event);
47
- return;
48
- }
49
- onChange(selected
50
- ? selectedValues.filter((value) => value !== item.value)
51
- : [...selectedValues, item.value], event);
52
- }
53
- }, role: "option", tabIndex: -1, trailing: isMulti ? (_jsx(Checkbox, { "aria-label": item.label, checked: selected, name: item.value, onChange: (checked) => {
54
- onChange?.(checked
55
- ? selectedValues.filter((value) => value !== item.value)
56
- : [...selectedValues, item.value]);
57
- }, value: item.value })) : (renderProps?.trailing) }));
58
- })) : (_jsxs(_Fragment, { children: [_jsx(Txt, { as: "div", variant: "heading-h5", children: "No results found" }), _jsx(Txt, { as: "div", variant: "body-base", children: noResultsMessage })] })) }));
24
+ const selectAll = useMemo(() => {
25
+ if (!isMulti)
26
+ return false;
27
+ if (selectAllProp && typeof selectAllProp === 'string')
28
+ return selectAllProp;
29
+ return selectAllProp === true ? DEFAULT.selectAll : false;
30
+ }, [isMulti, selectAllProp]);
31
+ const { items, itemCount } = useMemo(() => {
32
+ const itemsNext = Array.isArray(itemsProp) ? itemsProp : [];
33
+ return {
34
+ items: itemsNext,
35
+ // Ensure itemCount is within the range of items.length
36
+ itemCount: Math.min(itemsNext.length,
37
+ // pin itemCountProp to a range of 3 to 10
38
+ Math.max(MIN_ITEM_COUNT, Math.min(itemCountProp, MAX_ITEM_COUNT))),
39
+ };
40
+ }, [itemCountProp, itemsProp]);
41
+ const allSelected = useMemo(() => !!(items.length && items.every((item) => selectedValues.includes(item.value))), [items, selectedValues]);
42
+ return (_jsxs("div", { ...props, "aria-multiselectable": isMulti || undefined, "data-bspk": "menu", "data-disabled": disabled || undefined, "data-item-count": itemCount || undefined, "data-no-items": !items.length || undefined, id: menuId, ref: innerRef, role: "listbox", style: { ...props.style, '--item-count': itemCount }, children: [isMulti && selectAll && (_jsx(ListItem, { as: "button", "data-selected": allSelected || undefined, label: selectAll, onClick: (event) => {
43
+ onChange?.(allSelected ? [] : items.map((item) => item.value), event);
44
+ }, role: "option", tabIndex: -1, trailing: _jsx(Checkbox, { "aria-label": selectAll, checked: !!allSelected, name: "", onChange: (checked) => {
45
+ onChange?.(checked ? items.map((item) => item.value) : []);
46
+ }, value: "" }) }, "select-all")), items.length
47
+ ? items.map((item, index) => {
48
+ const itemId = item.id || menuItemId(menuId, index);
49
+ const selected = Boolean(Array.isArray(selectedValues) && selectedValues.includes(item.value));
50
+ const renderProps = renderListItem?.({
51
+ activeIndex,
52
+ index,
53
+ item,
54
+ selectedValues,
55
+ isMulti,
56
+ menuId: menuId || '',
57
+ selected,
58
+ itemId,
59
+ });
60
+ return (_createElement(ListItem, { ...renderProps, active: activeIndex === index || undefined, "aria-disabled": item.disabled || undefined, "aria-posinset": index + 1, "aria-selected": selected || undefined, as: "button",
61
+ //data-selected={selected || undefined}
62
+ disabled: item.disabled || undefined, id: itemId, key: itemId, label: renderProps?.label?.toString() || item.label?.toString(), onClick: (event) => {
63
+ if (renderProps)
64
+ renderProps?.onClick?.(event);
65
+ if (onChange) {
66
+ if (!isMulti) {
67
+ onChange?.([item.value], event);
68
+ return;
69
+ }
70
+ onChange(selected
71
+ ? selectedValues.filter((value) => value !== item.value)
72
+ : [...selectedValues, item.value], event);
73
+ }
74
+ }, role: "option", tabIndex: -1, trailing: isMulti ? (_jsx(Checkbox, { "aria-label": item.label, checked: selected, name: item.value, onChange: (checked) => {
75
+ onChange?.(checked
76
+ ? selectedValues.filter((value) => value !== item.value)
77
+ : [...selectedValues, item.value]);
78
+ }, value: item.value })) : (renderProps?.trailing) }));
79
+ })
80
+ : noResultsMessage] }));
59
81
  }
60
82
  Menu.bspkName = 'Menu';
61
83
  export { Menu };
package/dist/Menu.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../src/Menu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../src/Menu.tsx"],"names":[],"mappings":"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"}
@@ -1,24 +1,50 @@
1
1
  import './search-bar.scss';
2
2
  import { MenuItem, MenuProps } from './Menu';
3
3
  import { TextInputProps } from './TextInput';
4
- export type SearchBarProps = Pick<MenuProps, 'itemCount' | 'items' | 'noResultsMessage'> & Pick<TextInputProps, 'aria-label' | 'id' | 'inputRef' | 'name' | 'placeholder' | 'size'> & {
4
+ export type SearchBarProps<T extends MenuItem = MenuItem> = Pick<MenuProps<T>, 'itemCount' | 'noResultsMessage'> & Pick<TextInputProps, 'aria-label' | 'id' | 'inputRef' | 'name' | 'placeholder' | 'size'> & {
5
5
  /** The current value of the search bar. */
6
- searchValue?: string;
6
+ value?: string;
7
7
  /**
8
8
  * Handler for state updates.
9
9
  *
10
10
  * @type (value: String) => void
11
11
  * @required
12
12
  */
13
- setSearchValue: (value: string) => void;
13
+ onChange: (value: string) => void;
14
14
  onSelect: (item?: MenuItem) => void;
15
+ /**
16
+ * Content to display in the menu.
17
+ *
18
+ * @example
19
+ * [
20
+ * { value: '1', label: 'Apple Pie' },
21
+ * { value: '2', label: 'Banana Split' },
22
+ * { value: '3', label: 'Cherry Tart' },
23
+ * { value: '4', label: 'Dragonfruit Sorbet' },
24
+ * { value: '5', label: 'Elderberry Jam' },
25
+ * { value: '6', label: 'Fig Newton' },
26
+ * { value: '7', label: 'Grape Soda' },
27
+ * { value: '8', label: 'Honeydew Smoothie' },
28
+ * { value: '9', label: 'Ice Cream Sandwich' },
29
+ * { value: '10', label: 'Jackfruit Pudding' },
30
+ * ];
31
+ *
32
+ * @type Array<MenuItem>
33
+ */
34
+ items?: T[];
35
+ /**
36
+ * Message to display when no results are found
37
+ *
38
+ * @type multiline
39
+ */
40
+ noResultsMessage?: string;
15
41
  };
16
42
  /**
17
43
  * Component description coming soon.
18
44
  *
19
45
  * @name SearchBar
20
46
  */
21
- declare function SearchBar({ itemCount, items, noResultsMessage, placeholder, 'aria-label': ariaLabel, id: idProp, inputRef, name, size, onSelect, searchValue, setSearchValue, }: SearchBarProps): import("react/jsx-runtime").JSX.Element;
47
+ declare function SearchBar({ itemCount, items, noResultsMessage, placeholder, 'aria-label': ariaLabel, id: idProp, inputRef, name, size, onSelect, value, onChange, }: SearchBarProps): import("react/jsx-runtime").JSX.Element;
22
48
  declare namespace SearchBar {
23
49
  var bspkName: string;
24
50
  }
package/dist/SearchBar.js CHANGED
@@ -6,6 +6,7 @@ import { useRef } from 'react';
6
6
  import { Menu } from './Menu';
7
7
  import { Portal } from './Portal';
8
8
  import { TextInput } from './TextInput';
9
+ import { Txt } from './Txt';
9
10
  import { useFloatingMenu } from './hooks/useFloatingMenu';
10
11
  import { useId } from './hooks/useId';
11
12
  /**
@@ -13,30 +14,30 @@ import { useId } from './hooks/useId';
13
14
  *
14
15
  * @name SearchBar
15
16
  */
16
- function SearchBar({ itemCount, items, noResultsMessage, placeholder = 'Search', 'aria-label': ariaLabel, id: idProp, inputRef, name, size = 'medium', onSelect, searchValue, setSearchValue, }) {
17
+ function SearchBar({ itemCount, items, noResultsMessage, placeholder = 'Search', 'aria-label': ariaLabel, id: idProp, inputRef, name, size = 'medium', onSelect, value, onChange, }) {
17
18
  const id = useId(idProp);
18
19
  const { triggerProps: { ref: triggerRef, onClick, onKeyDownCapture, ...triggerProps }, menuProps, closeMenu, } = useFloatingMenu({
19
20
  placement: 'bottom-start',
20
21
  });
21
22
  const inputRefLocal = useRef(null);
22
- return (_jsxs(_Fragment, { children: [_jsx(TextInput, { "aria-label": ariaLabel, autoComplete: "off", containerRef: triggerRef, "data-bspk": "search-bar", id: id, inputRef: (node) => {
23
- inputRef?.(node || null);
24
- inputRefLocal.current = node;
25
- }, leading: _jsx(SvgSearch, {}), name: name, onChange: (str) => setSearchValue(str), placeholder: placeholder, size: size, value: searchValue, ...triggerProps, onClick: (event) => {
26
- if (items?.length)
27
- onClick(event);
28
- }, onKeyDownCapture: (event) => {
29
- const handled = onKeyDownCapture(event);
30
- if (handled)
31
- return;
32
- inputRefLocal.current?.focus();
33
- } }), _jsx(Portal, { children: _jsx(Menu, { itemCount: itemCount, items: items, noResultsMessage: noResultsMessage, onChange: (selectedValues, event) => {
23
+ return (_jsxs(_Fragment, { children: [_jsx("div", { "data-bspk": "search-bar", children: _jsx(TextInput, { "aria-label": ariaLabel, autoComplete: "off", containerRef: triggerRef, id: id, inputRef: (node) => {
24
+ inputRef?.(node || null);
25
+ inputRefLocal.current = node;
26
+ }, leading: _jsx(SvgSearch, {}), name: name, onChange: (str) => onChange(str), placeholder: placeholder, size: size, value: value, ...triggerProps, onClick: (event) => {
27
+ if (items?.length)
28
+ onClick(event);
29
+ }, onKeyDownCapture: (event) => {
30
+ const handled = onKeyDownCapture(event);
31
+ if (handled)
32
+ return;
33
+ inputRefLocal.current?.focus();
34
+ } }) }), !!value?.trim().length && (_jsx(Portal, { children: _jsx(Menu, { itemCount: itemCount, items: items, noResultsMessage: !!value?.length && (_jsxs(_Fragment, { children: [_jsx(Txt, { as: "div", variant: "heading-h5", children: "No results found" }), noResultsMessage && (_jsx(Txt, { as: "div", variant: "body-base", children: noResultsMessage }))] })), onChange: (selectedValues, event) => {
34
35
  event?.preventDefault();
35
36
  const item = items?.find((i) => i.value === selectedValues[0]);
36
37
  onSelect?.(item);
37
- setSearchValue(item?.label || '');
38
+ onChange(item?.label || '');
38
39
  closeMenu();
39
- }, ...menuProps }) })] }));
40
+ }, ...menuProps }) }))] }));
40
41
  }
41
42
  SearchBar.bspkName = 'SearchBar';
42
43
  export { SearchBar };
@@ -1 +1 @@
1
- {"version":3,"file":"SearchBar.js","sourceRoot":"","sources":["../src/SearchBar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchBar.js","sourceRoot":"","sources":["../src/SearchBar.tsx"],"names":[],"mappings":"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"}
package/dist/avatar.css CHANGED
@@ -1 +1 @@
1
- [data-bspk=avatar]{--height: var(--spacing-sizing-10);--font: var(--labels-base);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0;height:var(--height);width:var(--height);aspect-ratio:1/1;border-radius:999px;background-color:var(--background);color:var(--foreground);font:var(--font)}[data-bspk=avatar]:not([data-color]){--foreground: var(--foreground-neutral-on-surface);--background: var(--surface-neutral-t3-low)}[data-bspk=avatar]:has(img){overflow:hidden}[data-bspk=avatar] img{max-width:100%}[data-bspk=avatar][data-size=x-small]{--height: var(--spacing-sizing-06);--font: var(--labels-x-small)}[data-bspk=avatar][data-size=small]{--height: var(--spacing-sizing-08);--font: var(--labels-small)}[data-bspk=avatar][data-size=medium]{--height: var(--spacing-sizing-10);--font: var(--labels-base)}[data-bspk=avatar][data-size=large]{--height: var(--spacing-sizing-12);--font: var(--labels-large)}[data-bspk=avatar][data-size=x-large]{--height: var(--spacing-sizing-14);--font: var(--subheader-x-large)}[data-bspk=avatar][data-size=xx-large]{--height: var(--spacing-sizing-17);--font: var(--subheader-xx-large)}[data-bspk=avatar][data-size=xxx-large]{--height: var(--spacing-sizing-19);--font: var(--display-regular-small)}[data-bspk=avatar][data-size=xxxx-large]{--height: var(--spacing-sizing-21);--font: var(--display-regular-medium)}[data-bspk=avatar][data-size=xxxxx-large]{--height: var(--spacing-sizing-23);--font: var(--display-regular-large)}
1
+ [data-bspk=avatar]{--height: var(--spacing-sizing-10);--font: var(--labels-base);--svg-size: var(--spacing-sizing-10);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0;height:var(--height);width:var(--height);aspect-ratio:1/1;border-radius:999px;background-color:var(--background);color:var(--foreground);font:var(--font)}[data-bspk=avatar]:not([data-color]){--foreground: var(--foreground-neutral-on-surface);--background: var(--surface-neutral-t3-low)}[data-bspk=avatar]:has(img){overflow:hidden}[data-bspk=avatar] img{max-width:100%}[data-bspk=avatar] svg{width:var(--svg-size);height:var(--svg-size)}[data-bspk=avatar] [data-icon]{display:flex;align-items:center;justify-content:center}[data-bspk=avatar][data-size=x-small]{--height: var(--spacing-sizing-06);--font: var(--labels-x-small);--svg-size: var(--spacing-sizing-04)}[data-bspk=avatar][data-size=small]{--height: var(--spacing-sizing-08);--font: var(--labels-small);--svg-size: var(--spacing-sizing-05)}[data-bspk=avatar][data-size=medium]{--height: var(--spacing-sizing-10);--font: var(--labels-base);--svg-size: var(--spacing-sizing-05)}[data-bspk=avatar][data-size=large]{--height: var(--spacing-sizing-12);--font: var(--labels-large);--svg-size: var(--spacing-sizing-06)}[data-bspk=avatar][data-size=x-large]{--height: var(--spacing-sizing-14);--font: var(--subheader-x-large);--svg-size: var(--spacing-sizing-08)}[data-bspk=avatar][data-size=xx-large]{--height: var(--spacing-sizing-17);--font: var(--subheader-xx-large);--svg-size: var(--spacing-sizing-09)}[data-bspk=avatar][data-size=xxx-large]{--height: var(--spacing-sizing-19);--font: var(--display-regular-small);--svg-size: var(--spacing-sizing-12)}[data-bspk=avatar][data-size=xxxx-large]{--height: var(--spacing-sizing-21);--font: var(--display-regular-medium);--svg-size: var(--spacing-sizing-15)}[data-bspk=avatar][data-size=xxxxx-large]{--height: var(--spacing-sizing-23);--font: var(--display-regular-large);--svg-size: var(--spacing-sizing-17)}
@@ -373,6 +373,17 @@ export const examples = (setState, action) => ({
373
373
  },
374
374
  ]),
375
375
  },
376
+ SearchBar: {
377
+ containerStyle: { width: '400px' },
378
+ render: ({ props: state, Component }) => {
379
+ const props = state;
380
+ const searchValue = props.value?.toLowerCase() || '';
381
+ let filteredItems = [];
382
+ if (Array.isArray(props.items) && searchValue.length)
383
+ filteredItems = props.items?.filter((item) => item.label.toLowerCase().includes(searchValue));
384
+ return _jsx(Component, { ...props, id: "yes", items: filteredItems || [] });
385
+ },
386
+ },
376
387
  TextInput: {
377
388
  containerStyle: { width: '280px' },
378
389
  presets: setPresets([
@@ -1 +1 @@
1
- {"version":3,"file":"examples.js","sourceRoot":"","sources":["../../src/demo/examples.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"examples.js","sourceRoot":"","sources":["../../src/demo/examples.tsx"],"names":[],"mappings":"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"}
package/dist/dropdown.css CHANGED
@@ -1 +1 @@
1
- [data-bspk=dropdown]{--dropdown-background: var(--surface-neutral-t1-base);--dropdown-border-color: var(--stroke-neutral-base);--dropdown-text-color: var(--foreground-neutral-on-surface);--dropdown-height: var(--spacing-sizing-10);--dropdown-font: var(--body-base);--dropdown-clear-height: var(--spacing-sizing-05);--dropdown-padding: var(--spacing-sizing-03);--dropdown-icon-width: var(--spacing-sizing-05);position:relative;width:100%;max-width:280px;outline:unset;min-height:var(--dropdown-height);max-height:var(--dropdown-height);display:flex;flex-direction:row;gap:var(--spacing-sizing-02);flex-grow:0;flex-shrink:0;text-align:left;font:var(--dropdown-font);border:1px solid var(--dropdown-border-color);border-radius:var(--radius-small);background:var(--dropdown-background);padding:0 var(--dropdown-padding)}[data-bspk=dropdown] [data-placeholder]{display:block;max-width:100%;text-overflow:ellipsis;overflow:hidden;padding:0}[data-bspk=dropdown] [data-placeholder] [data-inner]{min-height:auto;padding:0}[data-bspk=dropdown] [data-placeholder] [data-item-label] [data-text]{color:var(--dropdown-text-color)}[data-bspk=dropdown] [data-svg]{display:flex;flex-direction:column;justify-content:center}[data-bspk=dropdown] [data-svg] svg{transform:rotate(90deg);width:var(--dropdown-icon-width)}[data-bspk=dropdown][data-size=small]{--dropdown-height: var(--spacing-sizing-08);--dropdown-font: var(--body-small);--dropdown-clear-height: var(--spacing-sizing-05);--dropdown-padding: var(--spacing-sizing-02);--dropdown-icon-width: var(--spacing-sizing-05)}[data-bspk=dropdown][data-size=large]{--dropdown-height: var(--spacing-sizing-12);--dropdown-font: var(--body-large);--dropdown-clear-height: var(--spacing-sizing-06);--dropdown-icon-width: var(--spacing-sizing-06)}[data-bspk=dropdown]:disabled{--dropdown-text-color: var(--foreground-neutral-disabled-on-surface);--dropdown-border-color: var(--stroke-neutral-disabled-light);--dropdown-background: linear-gradient(var(--interactions-disabled-opacity), var(--interactions-disabled-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown]:disabled[aria-readonly]:not([data-empty]){--dropdown-text-color: var(--foreground-neutral-on-surface)}[data-bspk=dropdown]:not(:disabled):focus{--dropdown-border-color: var(--stroke-brand-primary)}[data-bspk=dropdown]:not(:disabled):hover{--dropdown-background: linear-gradient(var(--interactions-neutral-hover-opacity), var(--interactions-neutral-hover-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown]:not(:disabled):active{--dropdown-background: linear-gradient(var(--interactions-neutral-press-opacity), var(--interactions-neutral-press-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown][data-invalid]{--dropdown-border-color: var(--status-error)}[data-bspk=dropdown][data-empty]{--dropdown-text-color: var(--foreground-neutral-on-surface-variant-03)}
1
+ [data-bspk=dropdown]{--dropdown-background: var(--surface-neutral-t1-base);--dropdown-border-color: var(--stroke-neutral-base);--dropdown-text-color: var(--foreground-neutral-on-surface);--dropdown-height: var(--spacing-sizing-10);--dropdown-font: var(--body-base);--dropdown-clear-height: var(--spacing-sizing-05);--dropdown-padding: var(--spacing-sizing-03);--dropdown-icon-width: var(--spacing-sizing-05);position:relative;width:100%;max-width:280px;outline:unset;min-height:var(--dropdown-height);max-height:var(--dropdown-height);display:flex;flex-direction:row;gap:var(--spacing-sizing-02);flex-grow:0;flex-shrink:0;text-align:left;font:var(--dropdown-font);border:1px solid var(--dropdown-border-color);border-radius:var(--radius-small);background:var(--dropdown-background);padding:0 var(--dropdown-padding)}[data-bspk=dropdown] [data-placeholder]{display:block;max-width:100%;text-overflow:ellipsis;overflow:hidden;padding:0}[data-bspk=dropdown] [data-placeholder] [data-inner]{min-height:auto;padding:0}[data-bspk=dropdown] [data-placeholder] [data-item-label] [data-text]{color:var(--dropdown-text-color)}[data-bspk=dropdown] [data-svg]{display:flex;flex-direction:column;justify-content:center}[data-bspk=dropdown] [data-svg] svg{transform:rotate(90deg);width:var(--dropdown-icon-width)}[data-bspk=dropdown] [data-bspk=list-item][data-selected]{background:var(--surface-brand-primary-highlight)}[data-bspk=dropdown][data-size=small]{--dropdown-height: var(--spacing-sizing-08);--dropdown-font: var(--body-small);--dropdown-clear-height: var(--spacing-sizing-05);--dropdown-padding: var(--spacing-sizing-02);--dropdown-icon-width: var(--spacing-sizing-05)}[data-bspk=dropdown][data-size=large]{--dropdown-height: var(--spacing-sizing-12);--dropdown-font: var(--body-large);--dropdown-clear-height: var(--spacing-sizing-06);--dropdown-icon-width: var(--spacing-sizing-06)}[data-bspk=dropdown]:disabled{--dropdown-text-color: var(--foreground-neutral-disabled-on-surface);--dropdown-border-color: var(--stroke-neutral-disabled-light);--dropdown-background: linear-gradient(var(--interactions-disabled-opacity), var(--interactions-disabled-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown]:disabled[aria-readonly]:not([data-empty]){--dropdown-text-color: var(--foreground-neutral-on-surface)}[data-bspk=dropdown]:not(:disabled):focus{--dropdown-border-color: var(--stroke-brand-primary)}[data-bspk=dropdown]:not(:disabled):hover{--dropdown-background: linear-gradient(var(--interactions-neutral-hover-opacity), var(--interactions-neutral-hover-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown]:not(:disabled):active{--dropdown-background: linear-gradient(var(--interactions-neutral-press-opacity), var(--interactions-neutral-press-opacity)), linear-gradient(var(--surface-neutral-t1-base), var(--surface-neutral-t1-base))}[data-bspk=dropdown][data-invalid]{--dropdown-border-color: var(--status-error)}[data-bspk=dropdown][data-empty]{--dropdown-text-color: var(--foreground-neutral-on-surface-variant-03)}
@@ -59,7 +59,10 @@ export function useKeyboardNavigation(containerElement) {
59
59
  if (next >= itemElements.length)
60
60
  next = 0;
61
61
  itemElements.forEach((el, index) => {
62
- el.dataset.selected = index === next ? 'true' : undefined;
62
+ if (index === next)
63
+ el.setAttribute('data-selected', 'true');
64
+ else
65
+ el.removeAttribute('data-selected');
63
66
  });
64
67
  scrollElementIntoView(itemElements[next], containerElement);
65
68
  setSelectedIndex(next);
@@ -68,7 +71,7 @@ export function useKeyboardNavigation(containerElement) {
68
71
  return {
69
72
  handleKeyNavigation: handleArrowKeyNavigation,
70
73
  selectedIndex,
71
- selectedId: selectedIndex === -1 ? undefined : containerElement.children[selectedIndex].id,
74
+ selectedId: selectedIndex === -1 ? undefined : containerElement.children[selectedIndex]?.id,
72
75
  setSelectedIndex: setSelectedIndex,
73
76
  };
74
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyboardNavigation.js","sourceRoot":"","sources":["../../src/hooks/useKeyboardNavigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,qBAAqB,CACjC,gBAAqC;IAerC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvD,IAAI,CAAC,gBAAgB;QACjB,OAAO;YACH,mBAAmB,EAAE,GAAG,EAAE,CAAC,KAAK;YAChC,aAAa;YACb,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC;YAC1B,UAAU,EAAE,SAAS;SACxB,CAAC;IAEN,MAAM,wBAAwB,GAAG,CAAC,KAAoB,EAAW,EAAE;QAC/D,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAElF,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAEzE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAkB,CAAC;QAE7E,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,KAAK,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACxD,YAAY,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,SAAS;YAAE,IAAI,GAAG,aAAa,GAAG,CAAC,CAAC;QACnG,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,UAAU;YAAE,IAAI,GAAG,aAAa,GAAG,CAAC,CAAC;QAEtG,IAAI,IAAI,GAAG,CAAC;YAAE,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7C,IAAI,IAAI,IAAI,YAAY,CAAC,MAAM;YAAE,IAAI,GAAG,CAAC,CAAC;QAE1C,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YAC/B,EAAE,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC5D,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO;QACH,mBAAmB,EAAE,wBAAwB;QAC7C,aAAa;QACb,UAAU,EAAE,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE;QAC1F,gBAAgB,EAAE,gBAAgB;KACrC,CAAC;AACN,CAAC;AAED,sDAAsD"}
1
+ {"version":3,"file":"useKeyboardNavigation.js","sourceRoot":"","sources":["../../src/hooks/useKeyboardNavigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,qBAAqB,CACjC,gBAAqC;IAerC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvD,IAAI,CAAC,gBAAgB;QACjB,OAAO;YACH,mBAAmB,EAAE,GAAG,EAAE,CAAC,KAAK;YAChC,aAAa;YACb,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC;YAC1B,UAAU,EAAE,SAAS;SACxB,CAAC;IAEN,MAAM,wBAAwB,GAAG,CAAC,KAAoB,EAAW,EAAE;QAC/D,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAElF,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAEzE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAkB,CAAC;QAE7E,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,KAAK,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACxD,YAAY,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,SAAS;YAAE,IAAI,GAAG,aAAa,GAAG,CAAC,CAAC;QACnG,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,UAAU;YAAE,IAAI,GAAG,aAAa,GAAG,CAAC,CAAC;QAEtG,IAAI,IAAI,GAAG,CAAC;YAAE,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7C,IAAI,IAAI,IAAI,YAAY,CAAC,MAAM;YAAE,IAAI,GAAG,CAAC,CAAC;QAE1C,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YAC/B,IAAI,KAAK,KAAK,IAAI;gBAAE,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;;gBACxD,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC5D,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO;QACH,mBAAmB,EAAE,wBAAwB;QAC7C,aAAa;QACb,UAAU,EAAE,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE;QAC3F,gBAAgB,EAAE,gBAAgB;KACrC,CAAC;AACN,CAAC;AAED,sDAAsD"}
package/dist/menu.css CHANGED
@@ -1 +1 @@
1
- [data-bspk=menu]{/*! --item-count: is set via inline style */width:332px;border:1px solid var(--stroke-neutral-low);background-color:var(--surface-neutral-t1-base);box-shadow:var(--drop-shadow-float);border-radius:var(--radius-large);display:flex;flex-direction:column;--item-size: var(--spacing-sizing-12)}[data-bspk=menu][data-floating]{z-index:var(--z-index-dropdown)}[data-bspk=menu][data-item-count]{height:calc(var(--item-count)*var(--item-size));overflow-y:scroll}[data-bspk=menu][data-no-items]{padding:var(--spacing-sizing-08) var(--spacing-sizing-04);align-items:center;justify-content:center;gap:var(--spacing-sizing-03)}[data-bspk=menu] [data-bspk=list-item]{min-height:var(--item-size);height:var(--item-size)}
1
+ [data-bspk=menu]{/*! --item-count: is set via inline style */width:332px;border:1px solid var(--stroke-neutral-low);background-color:var(--surface-neutral-t1-base);box-shadow:var(--drop-shadow-float);border-radius:var(--radius-large);display:flex;flex-direction:column;--item-size: var(--spacing-sizing-12)}[data-bspk=menu][data-floating]{z-index:var(--z-index-dropdown)}[data-bspk=menu][data-item-count]{height:calc(var(--item-count)*var(--item-size));overflow-y:scroll}[data-bspk=menu][data-no-items]{padding:var(--spacing-sizing-08) var(--spacing-sizing-04);align-items:center;justify-content:center;gap:var(--spacing-sizing-03)}[data-bspk=menu] [data-bspk=list-item]{min-height:var(--item-size);height:var(--item-size)}[data-bspk=menu] [data-bspk=list-item][data-selected]{background-color:var(--surface-brand-primary-highlight)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bspk/ui",
3
- "version": "1.1.18",
3
+ "version": "1.1.19",
4
4
  "license": "CC-BY-4.0",
5
5
  "type": "module",
6
6
  "files": [
package/src/Dropdown.tsx CHANGED
@@ -17,11 +17,18 @@ export type DropdownOption = Record<string, unknown> & {
17
17
  label: string;
18
18
  };
19
19
 
20
+ export type DropdownOptionAll = {
21
+ /** The label of the option. This is the text that will be displayed on the option. */
22
+ label: string;
23
+ /** Whether the option is selected. */
24
+ selected?: boolean;
25
+ };
26
+
20
27
  export type DropdownProps<T extends DropdownOption = DropdownOption> = CommonProps<
21
28
  'aria-label' | 'disabled' | 'id' | 'name' | 'readOnly' | 'size'
22
29
  > &
23
30
  InvalidPropsLibrary &
24
- Pick<MenuProps<T>, 'isMulti' | 'itemCount' | 'renderListItem'> & {
31
+ Pick<MenuProps<T>, 'isMulti' | 'itemCount' | 'renderListItem' | 'selectAll'> & {
25
32
  /**
26
33
  * Array of options to display in the dropdown
27
34
  *
@@ -52,7 +59,7 @@ export type DropdownProps<T extends DropdownOption = DropdownOption> = CommonPro
52
59
  /**
53
60
  * Placeholder for the dropdown
54
61
  *
55
- * @default Select...
62
+ * @default Select one...
56
63
  */
57
64
  placeholder?: string;
58
65
  /**
@@ -94,6 +101,7 @@ function Dropdown({
94
101
  isMulti,
95
102
  renderListItem,
96
103
  style: styleProp,
104
+ selectAll,
97
105
  }: DropdownProps) {
98
106
  const id = useId(propId);
99
107
 
@@ -142,6 +150,7 @@ function Dropdown({
142
150
  onChange?.(next);
143
151
  }}
144
152
  renderListItem={renderListItem}
153
+ selectAll={selectAll}
145
154
  selectedValues={selected}
146
155
  {...menuProps}
147
156
  />
package/src/Menu.tsx CHANGED
@@ -1,13 +1,16 @@
1
1
  import './menu.scss';
2
- import { ComponentProps, CSSProperties, useMemo } from 'react';
2
+ import { ComponentProps, CSSProperties, ReactNode, useMemo } from 'react';
3
3
 
4
4
  import { Checkbox } from './Checkbox';
5
5
  import { ListItem } from './ListItem';
6
- import { Txt } from './Txt';
7
6
  import { useId } from './hooks/useId';
8
7
 
9
8
  import { CommonProps, ElementProps, SetRef } from './';
10
9
 
10
+ const DEFAULT = {
11
+ selectAll: 'Select All',
12
+ };
13
+
11
14
  export const MIN_ITEM_COUNT = 3;
12
15
  export const MAX_ITEM_COUNT = 10;
13
16
 
@@ -68,12 +71,8 @@ export type MenuProps<T extends MenuItem = MenuItem> = CommonProps<'disabled' |
68
71
  items?: T[];
69
72
  /** A ref to the inner div element. */
70
73
  innerRef?: SetRef<HTMLDivElement>;
71
- /**
72
- * Message to display when no results are found
73
- *
74
- * @type multiline
75
- */
76
- noResultsMessage?: string;
74
+ /** Message to display when no results are found */
75
+ noResultsMessage?: ReactNode;
77
76
  /** The index of the currently highlighted item. */
78
77
  activeIndex?: number;
79
78
  /** The values of the selected items */
@@ -92,6 +91,17 @@ export type MenuProps<T extends MenuItem = MenuItem> = CommonProps<'disabled' |
92
91
  * @default false
93
92
  */
94
93
  isMulti?: boolean;
94
+ /**
95
+ * The label for the "Select All" option.
96
+ *
97
+ * Ignored if `isMulti` is false.
98
+ *
99
+ * If `isMulti` is `true`, defaults to "Select All". If a string, it will be used as the label. If false the select
100
+ * all option will not be rendered.
101
+ *
102
+ * @default false
103
+ */
104
+ selectAll?: boolean | string;
95
105
  /**
96
106
  * The function to call when the selected values change.
97
107
  *
@@ -118,24 +128,39 @@ function Menu({
118
128
  id: idProp,
119
129
  renderListItem,
120
130
  isMulti,
131
+ selectAll: selectAllProp,
121
132
  ...props
122
133
  }: ElementProps<MenuProps, 'div'>) {
123
134
  const menuId = useId(idProp);
124
- const items = Array.isArray(itemsProp) ? itemsProp : [];
125
- const itemCount = useMemo(
126
- () =>
135
+
136
+ const selectAll = useMemo(() => {
137
+ if (!isMulti) return false;
138
+ if (selectAllProp && typeof selectAllProp === 'string') return selectAllProp;
139
+ return selectAllProp === true ? DEFAULT.selectAll : false;
140
+ }, [isMulti, selectAllProp]);
141
+
142
+ const { items, itemCount } = useMemo(() => {
143
+ const itemsNext = Array.isArray(itemsProp) ? itemsProp : [];
144
+ return {
145
+ items: itemsNext,
127
146
  // Ensure itemCount is within the range of items.length
128
- Math.min(
129
- items.length,
147
+ itemCount: Math.min(
148
+ itemsNext.length,
130
149
  // pin itemCountProp to a range of 3 to 10
131
150
  Math.max(MIN_ITEM_COUNT, Math.min(itemCountProp, MAX_ITEM_COUNT)),
132
151
  ),
133
- [itemCountProp, items.length],
152
+ };
153
+ }, [itemCountProp, itemsProp]);
154
+
155
+ const allSelected = useMemo(
156
+ () => !!(items.length && items.every((item) => selectedValues.includes(item.value))),
157
+ [items, selectedValues],
134
158
  );
135
159
 
136
160
  return (
137
161
  <div
138
162
  {...props}
163
+ aria-multiselectable={isMulti || undefined}
139
164
  data-bspk="menu"
140
165
  data-disabled={disabled || undefined}
141
166
  data-item-count={itemCount || undefined}
@@ -145,87 +170,101 @@ function Menu({
145
170
  role="listbox"
146
171
  style={{ ...props.style, '--item-count': itemCount } as CSSProperties}
147
172
  >
148
- {items.length ? (
149
- items.map((item, index) => {
150
- const itemId = item.id || menuItemId(menuId, index);
151
-
152
- const selected = Array.isArray(selectedValues) && selectedValues.includes(item.value);
153
-
154
- const renderProps = renderListItem?.({
155
- activeIndex,
156
- index,
157
- item,
158
- selectedValues,
159
- isMulti,
160
- menuId: menuId || '',
161
- selected,
162
- itemId,
163
- });
164
-
165
- return (
166
- <ListItem
167
- {...renderProps}
168
- active={activeIndex === index || undefined}
169
- aria-disabled={item.disabled || undefined}
170
- aria-posinset={index + 1}
171
- aria-selected={selected || undefined}
172
- as="button"
173
- data-menu-item
174
- data-selected={selected || undefined}
175
- disabled={item.disabled || undefined}
176
- id={itemId}
177
- key={itemId}
178
- label={renderProps?.label?.toString() || item.label?.toString()}
179
- onClick={(event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
180
- if (renderProps) renderProps?.onClick?.(event);
181
-
182
- if (onChange) {
183
- if (!isMulti) {
184
- onChange?.([item.value], event);
185
- return;
186
- }
187
- onChange(
188
- selected
189
- ? selectedValues.filter((value) => value !== item.value)
190
- : [...selectedValues, item.value],
191
- event,
192
- );
193
- }
173
+ {isMulti && selectAll && (
174
+ <ListItem
175
+ as="button"
176
+ data-selected={allSelected || undefined}
177
+ key="select-all"
178
+ label={selectAll}
179
+ onClick={(event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
180
+ onChange?.(allSelected ? [] : items.map((item) => item.value), event);
181
+ }}
182
+ role="option"
183
+ tabIndex={-1}
184
+ trailing={
185
+ <Checkbox
186
+ aria-label={selectAll}
187
+ checked={!!allSelected}
188
+ name=""
189
+ onChange={(checked) => {
190
+ onChange?.(checked ? items.map((item) => item.value) : []);
194
191
  }}
195
- role="option"
196
- tabIndex={-1}
197
- trailing={
198
- isMulti ? (
199
- <Checkbox
200
- aria-label={item.label}
201
- checked={selected}
202
- name={item.value}
203
- onChange={(checked) => {
204
- onChange?.(
205
- checked
206
- ? selectedValues.filter((value) => value !== item.value)
207
- : [...selectedValues, item.value],
208
- );
209
- }}
210
- value={item.value}
211
- />
212
- ) : (
213
- renderProps?.trailing
214
- )
215
- }
192
+ value=""
216
193
  />
217
- );
218
- })
219
- ) : (
220
- <>
221
- <Txt as="div" variant="heading-h5">
222
- No results found
223
- </Txt>
224
- <Txt as="div" variant="body-base">
225
- {noResultsMessage}
226
- </Txt>
227
- </>
194
+ }
195
+ />
228
196
  )}
197
+ {items.length
198
+ ? items.map((item, index) => {
199
+ const itemId = item.id || menuItemId(menuId, index);
200
+
201
+ const selected = Boolean(Array.isArray(selectedValues) && selectedValues.includes(item.value));
202
+
203
+ const renderProps = renderListItem?.({
204
+ activeIndex,
205
+ index,
206
+ item,
207
+ selectedValues,
208
+ isMulti,
209
+ menuId: menuId || '',
210
+ selected,
211
+ itemId,
212
+ });
213
+
214
+ return (
215
+ <ListItem
216
+ {...renderProps}
217
+ active={activeIndex === index || undefined}
218
+ aria-disabled={item.disabled || undefined}
219
+ aria-posinset={index + 1}
220
+ aria-selected={selected || undefined}
221
+ as="button"
222
+ //data-selected={selected || undefined}
223
+ disabled={item.disabled || undefined}
224
+ id={itemId}
225
+ key={itemId}
226
+ label={renderProps?.label?.toString() || item.label?.toString()}
227
+ onClick={(event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
228
+ if (renderProps) renderProps?.onClick?.(event);
229
+
230
+ if (onChange) {
231
+ if (!isMulti) {
232
+ onChange?.([item.value], event);
233
+ return;
234
+ }
235
+ onChange(
236
+ selected
237
+ ? selectedValues.filter((value) => value !== item.value)
238
+ : [...selectedValues, item.value],
239
+ event,
240
+ );
241
+ }
242
+ }}
243
+ role="option"
244
+ tabIndex={-1}
245
+ trailing={
246
+ isMulti ? (
247
+ <Checkbox
248
+ aria-label={item.label}
249
+ checked={selected}
250
+ name={item.value}
251
+ onChange={(checked) => {
252
+ onChange?.(
253
+ checked
254
+ ? selectedValues.filter((value) => value !== item.value)
255
+ : [...selectedValues, item.value],
256
+ );
257
+ }}
258
+ value={item.value}
259
+ />
260
+ ) : (
261
+ renderProps?.trailing
262
+ )
263
+ }
264
+ />
265
+ );
266
+ })
267
+ : noResultsMessage}
229
268
  </div>
230
269
  );
231
270
  }
package/src/SearchBar.tsx CHANGED
@@ -5,21 +5,22 @@ import { useRef } from 'react';
5
5
  import { MenuItem, MenuProps, Menu } from './Menu';
6
6
  import { Portal } from './Portal';
7
7
  import { TextInputProps, TextInput } from './TextInput';
8
+ import { Txt } from './Txt';
8
9
  import { useFloatingMenu } from './hooks/useFloatingMenu';
9
10
  import { useId } from './hooks/useId';
10
11
  //import { useFloatingMenu } from './hooks/useFloatingMenu';
11
12
 
12
- export type SearchBarProps = Pick<MenuProps, 'itemCount' | 'items' | 'noResultsMessage'> &
13
+ export type SearchBarProps<T extends MenuItem = MenuItem> = Pick<MenuProps<T>, 'itemCount' | 'noResultsMessage'> &
13
14
  Pick<TextInputProps, 'aria-label' | 'id' | 'inputRef' | 'name' | 'placeholder' | 'size'> & {
14
15
  /** The current value of the search bar. */
15
- searchValue?: string;
16
+ value?: string;
16
17
  /**
17
18
  * Handler for state updates.
18
19
  *
19
20
  * @type (value: String) => void
20
21
  * @required
21
22
  */
22
- setSearchValue: (value: string) => void;
23
+ onChange: (value: string) => void;
23
24
  /*
24
25
  * Handler for item selection.
25
26
  *
@@ -27,6 +28,32 @@ export type SearchBarProps = Pick<MenuProps, 'itemCount' | 'items' | 'noResultsM
27
28
  * @required
28
29
  */
29
30
  onSelect: (item?: MenuItem) => void;
31
+ /**
32
+ * Content to display in the menu.
33
+ *
34
+ * @example
35
+ * [
36
+ * { value: '1', label: 'Apple Pie' },
37
+ * { value: '2', label: 'Banana Split' },
38
+ * { value: '3', label: 'Cherry Tart' },
39
+ * { value: '4', label: 'Dragonfruit Sorbet' },
40
+ * { value: '5', label: 'Elderberry Jam' },
41
+ * { value: '6', label: 'Fig Newton' },
42
+ * { value: '7', label: 'Grape Soda' },
43
+ * { value: '8', label: 'Honeydew Smoothie' },
44
+ * { value: '9', label: 'Ice Cream Sandwich' },
45
+ * { value: '10', label: 'Jackfruit Pudding' },
46
+ * ];
47
+ *
48
+ * @type Array<MenuItem>
49
+ */
50
+ items?: T[];
51
+ /**
52
+ * Message to display when no results are found
53
+ *
54
+ * @type multiline
55
+ */
56
+ noResultsMessage?: string;
30
57
  };
31
58
 
32
59
  /**
@@ -45,8 +72,8 @@ function SearchBar({
45
72
  name,
46
73
  size = 'medium',
47
74
  onSelect,
48
- searchValue,
49
- setSearchValue,
75
+ value,
76
+ onChange,
50
77
  }: SearchBarProps) {
51
78
  const id = useId(idProp);
52
79
  const {
@@ -61,49 +88,65 @@ function SearchBar({
61
88
 
62
89
  return (
63
90
  <>
64
- <TextInput
65
- aria-label={ariaLabel}
66
- autoComplete="off"
67
- containerRef={triggerRef}
68
- data-bspk="search-bar"
69
- id={id}
70
- inputRef={(node) => {
71
- inputRef?.(node || null);
72
- inputRefLocal.current = node;
73
- }}
74
- leading={<SvgSearch />}
75
- name={name}
76
- onChange={(str) => setSearchValue(str)}
77
- placeholder={placeholder}
78
- size={size}
79
- value={searchValue}
80
- {...triggerProps}
81
- onClick={(event) => {
82
- if (items?.length) onClick(event);
83
- }}
84
- onKeyDownCapture={(event) => {
85
- const handled = onKeyDownCapture(event);
91
+ <div data-bspk="search-bar">
92
+ <TextInput
93
+ aria-label={ariaLabel}
94
+ autoComplete="off"
95
+ containerRef={triggerRef}
96
+ id={id}
97
+ inputRef={(node) => {
98
+ inputRef?.(node || null);
99
+ inputRefLocal.current = node;
100
+ }}
101
+ leading={<SvgSearch />}
102
+ name={name}
103
+ onChange={(str) => onChange(str)}
104
+ placeholder={placeholder}
105
+ size={size}
106
+ value={value}
107
+ {...triggerProps}
108
+ onClick={(event) => {
109
+ if (items?.length) onClick(event);
110
+ }}
111
+ onKeyDownCapture={(event) => {
112
+ const handled = onKeyDownCapture(event);
86
113
 
87
- if (handled) return;
114
+ if (handled) return;
88
115
 
89
- inputRefLocal.current?.focus();
90
- }}
91
- />
92
- <Portal>
93
- <Menu
94
- itemCount={itemCount}
95
- items={items}
96
- noResultsMessage={noResultsMessage}
97
- onChange={(selectedValues, event) => {
98
- event?.preventDefault();
99
- const item = items?.find((i) => i.value === selectedValues[0]);
100
- onSelect?.(item);
101
- setSearchValue(item?.label || '');
102
- closeMenu();
116
+ inputRefLocal.current?.focus();
103
117
  }}
104
- {...menuProps}
105
118
  />
106
- </Portal>
119
+ </div>
120
+ {!!value?.trim().length && (
121
+ <Portal>
122
+ <Menu
123
+ itemCount={itemCount}
124
+ items={items}
125
+ noResultsMessage={
126
+ !!value?.length && (
127
+ <>
128
+ <Txt as="div" variant="heading-h5">
129
+ No results found
130
+ </Txt>
131
+ {noResultsMessage && (
132
+ <Txt as="div" variant="body-base">
133
+ {noResultsMessage}
134
+ </Txt>
135
+ )}
136
+ </>
137
+ )
138
+ }
139
+ onChange={(selectedValues, event) => {
140
+ event?.preventDefault();
141
+ const item = items?.find((i) => i.value === selectedValues[0]);
142
+ onSelect?.(item);
143
+ onChange(item?.label || '');
144
+ closeMenu();
145
+ }}
146
+ {...menuProps}
147
+ />
148
+ </Portal>
149
+ )}
107
150
  </>
108
151
  );
109
152
  }
package/src/avatar.scss CHANGED
@@ -1,6 +1,7 @@
1
1
  [data-bspk='avatar'] {
2
2
  --height: var(--spacing-sizing-10);
3
3
  --font: var(--labels-base);
4
+ --svg-size: var(--spacing-sizing-10);
4
5
 
5
6
  &:not([data-color]) {
6
7
  --foreground: var(--foreground-neutral-on-surface);
@@ -28,49 +29,69 @@
28
29
  max-width: 100%;
29
30
  }
30
31
 
32
+ svg {
33
+ width: var(--svg-size);
34
+ height: var(--svg-size);
35
+ }
36
+
37
+ [data-icon] {
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ }
42
+
31
43
  &[data-size='x-small'] {
32
44
  --height: var(--spacing-sizing-06);
33
45
  --font: var(--labels-x-small);
46
+ --svg-size: var(--spacing-sizing-04);
34
47
  }
35
48
 
36
49
  &[data-size='small'] {
37
50
  --height: var(--spacing-sizing-08);
38
51
  --font: var(--labels-small);
52
+ --svg-size: var(--spacing-sizing-05);
39
53
  }
40
54
 
41
55
  &[data-size='medium'] {
42
56
  --height: var(--spacing-sizing-10);
43
57
  --font: var(--labels-base);
58
+ --svg-size: var(--spacing-sizing-05);
44
59
  }
45
60
 
46
61
  &[data-size='large'] {
47
62
  --height: var(--spacing-sizing-12);
48
63
  --font: var(--labels-large);
64
+ --svg-size: var(--spacing-sizing-06);
49
65
  }
50
66
 
51
67
  &[data-size='x-large'] {
52
68
  --height: var(--spacing-sizing-14);
53
69
  --font: var(--subheader-x-large);
70
+ --svg-size: var(--spacing-sizing-08);
54
71
  }
55
72
 
56
73
  &[data-size='xx-large'] {
57
74
  --height: var(--spacing-sizing-17);
58
75
  --font: var(--subheader-xx-large);
76
+ --svg-size: var(--spacing-sizing-09);
59
77
  }
60
78
 
61
79
  &[data-size='xxx-large'] {
62
80
  --height: var(--spacing-sizing-19);
63
81
  --font: var(--display-regular-small);
82
+ --svg-size: var(--spacing-sizing-12);
64
83
  }
65
84
 
66
85
  &[data-size='xxxx-large'] {
67
86
  --height: var(--spacing-sizing-21);
68
87
  --font: var(--display-regular-medium);
88
+ --svg-size: var(--spacing-sizing-15);
69
89
  }
70
90
 
71
91
  &[data-size='xxxxx-large'] {
72
92
  --height: var(--spacing-sizing-23);
73
93
  --font: var(--display-regular-large);
94
+ --svg-size: var(--spacing-sizing-17);
74
95
  }
75
96
  }
76
97
 
@@ -19,6 +19,7 @@ import { ModalProps } from '../Modal';
19
19
  import { Popover, PopoverProps } from '../Popover';
20
20
  import { ProgressionStepperProps } from '../ProgressionStepper';
21
21
  import { Radio } from '../Radio';
22
+ import { SearchBarProps } from '../SearchBar';
22
23
  import { SegmentedControlProps } from '../SegmentedControl';
23
24
  import { Switch } from '../Switch';
24
25
  import { TabGroupProps } from '../TabGroup';
@@ -550,6 +551,21 @@ export const examples: (setState: DemoSetState, action: DemoAction) => Record<st
550
551
  },
551
552
  ]),
552
553
  },
554
+ SearchBar: {
555
+ containerStyle: { width: '400px' },
556
+ render: ({ props: state, Component }) => {
557
+ const props = state as SearchBarProps;
558
+
559
+ const searchValue = (props.value as string | undefined)?.toLowerCase() || '';
560
+
561
+ let filteredItems: SearchBarProps['items'] = [];
562
+
563
+ if (Array.isArray(props.items) && searchValue.length)
564
+ filteredItems = props.items?.filter((item: MenuItem) => item.label.toLowerCase().includes(searchValue));
565
+
566
+ return <Component {...props} id="yes" items={filteredItems || []} />;
567
+ },
568
+ },
553
569
  TextInput: {
554
570
  containerStyle: { width: '280px' },
555
571
  presets: setPresets<TextInputProps>([
package/src/dropdown.scss CHANGED
@@ -56,6 +56,10 @@
56
56
  }
57
57
  }
58
58
 
59
+ [data-bspk='list-item'][data-selected] {
60
+ background: var(--surface-brand-primary-highlight);
61
+ }
62
+
59
63
  &[data-size='small'] {
60
64
  --dropdown-height: var(--spacing-sizing-08);
61
65
  --dropdown-font: var(--body-small);
@@ -79,7 +79,8 @@ export function useKeyboardNavigation(
79
79
  if (next >= itemElements.length) next = 0;
80
80
 
81
81
  itemElements.forEach((el, index) => {
82
- el.dataset.selected = index === next ? 'true' : undefined;
82
+ if (index === next) el.setAttribute('data-selected', 'true');
83
+ else el.removeAttribute('data-selected');
83
84
  });
84
85
 
85
86
  scrollElementIntoView(itemElements[next], containerElement);
@@ -90,7 +91,7 @@ export function useKeyboardNavigation(
90
91
  return {
91
92
  handleKeyNavigation: handleArrowKeyNavigation,
92
93
  selectedIndex,
93
- selectedId: selectedIndex === -1 ? undefined : containerElement.children[selectedIndex].id,
94
+ selectedId: selectedIndex === -1 ? undefined : containerElement.children[selectedIndex]?.id,
94
95
  setSelectedIndex: setSelectedIndex,
95
96
  };
96
97
  }
package/src/menu.scss CHANGED
@@ -30,6 +30,10 @@
30
30
  [data-bspk='list-item'] {
31
31
  min-height: var(--item-size);
32
32
  height: var(--item-size);
33
+
34
+ &[data-selected] {
35
+ background-color: var(--surface-brand-primary-highlight);
36
+ }
33
37
  }
34
38
  }
35
39