@luscii-healthtech/web-ui 55.0.1 → 55.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/index.development.js +102 -30
  2. package/dist/index.development.js.map +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/components/Icons/DashboardIcon.d.ts +4 -0
  6. package/dist/src/components/Icons/SwapIcon.d.ts +4 -0
  7. package/dist/src/components/Icons/index.d.ts +2 -0
  8. package/dist/src/components/Select/Select.types.d.ts +39 -0
  9. package/dist/src/components/Select/SelectDropdownIndicator.d.ts +5 -0
  10. package/dist/src/components/Select/SelectMultiValueLabel.d.ts +10 -0
  11. package/dist/src/components/Select/SelectOption.d.ts +12 -0
  12. package/dist/src/components/Select/SelectOptionAvatar.d.ts +19 -0
  13. package/dist/src/generated/components/Icons/DashboardIcon.d.ts +4 -0
  14. package/dist/src/generated/components/Icons/SwapIcon.d.ts +4 -0
  15. package/dist/src/generated/components/Icons/index.d.ts +2 -0
  16. package/dist/src/generated/components/Select/Select.types.d.ts +39 -0
  17. package/dist/src/generated/components/Select/SelectDropdownIndicator.d.ts +5 -0
  18. package/dist/src/generated/components/Select/SelectMultiValueLabel.d.ts +10 -0
  19. package/dist/src/generated/components/Select/SelectOption.d.ts +12 -0
  20. package/dist/src/generated/components/Select/SelectOptionAvatar.d.ts +19 -0
  21. package/dist/src/generated/generated/iconNames.d.ts +1 -1
  22. package/dist/src/generated/iconNames.d.ts +1 -1
  23. package/dist/src/generated/iconNames.js +2 -0
  24. package/dist/src/generated/iconNames.js.map +1 -1
  25. package/dist/src/generated/index.d.ts +1 -0
  26. package/dist/src/index.d.ts +1 -0
  27. package/dist/stories/LabeledSelectSearchable.stories.d.ts +1 -1
  28. package/dist/stories/Select.stories.d.ts +86 -30
  29. package/dist/web-ui.esm.js +1 -1
  30. package/dist/web-ui.esm.js.map +1 -1
  31. package/package.json +1 -1
@@ -0,0 +1,4 @@
1
+ import type { FC } from "react";
2
+ import { IconProps } from "./types/IconProps.type";
3
+ declare const _default: FC<IconProps>;
4
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import type { FC } from "react";
2
+ import { IconProps } from "./types/IconProps.type";
3
+ declare const _default: FC<IconProps>;
4
+ export default _default;
@@ -35,6 +35,7 @@ export { default as CopyToClipboardIcon } from "./CopyToClipboardIcon";
35
35
  export { default as CrossIcon } from "./CrossIcon";
36
36
  export { default as CrossInCircleIcon } from "./CrossInCircleIcon";
37
37
  export { default as CrossInFilledCircleIcon } from "./CrossInFilledCircleIcon";
38
+ export { default as DashboardIcon } from "./DashboardIcon";
38
39
  export { default as DatabaseIcon } from "./DatabaseIcon";
39
40
  export { default as DownloadIcon } from "./DownloadIcon";
40
41
  export { default as DragIndicatorIcon } from "./DragIndicatorIcon";
@@ -111,6 +112,7 @@ export { default as StarFilledIcon } from "./StarFilledIcon";
111
112
  export { default as StarIcon } from "./StarIcon";
112
113
  export { default as StopwatchIcon } from "./StopwatchIcon";
113
114
  export { default as SummaryIcon } from "./SummaryIcon";
115
+ export { default as SwapIcon } from "./SwapIcon";
114
116
  export { default as TadaIcon } from "./TadaIcon";
115
117
  export { default as TaskIcon } from "./TaskIcon";
116
118
  export { default as ThresholdIcon } from "./ThresholdIcon";
@@ -1,4 +1,43 @@
1
+ /**
2
+ * Avatar shown alongside an option's label.
3
+ *
4
+ * Rendered in the multi-select tag and in the menu row. Ignored by the
5
+ * single-select, which has no avatar in its design.
6
+ */
7
+ export interface OptionAvatar {
8
+ /**
9
+ * Initials to show when there is no image, e.g. `"JD"`.
10
+ *
11
+ * Only the first character is rendered — the avatar is 24px, and the design
12
+ * shows a single initial at that size. Passing the full initials is still
13
+ * fine; they are truncated for display, not rejected.
14
+ */
15
+ initials: string;
16
+ /**
17
+ * Marks this option as the current user, which gets a highlighted
18
+ * treatment to distinguish it from everyone else.
19
+ */
20
+ isSelf?: boolean;
21
+ /**
22
+ * Optional avatar image. Falls back to the initials if it fails to load.
23
+ */
24
+ src?: string;
25
+ /**
26
+ * The person's full name. Announced to screen readers in place of the
27
+ * initials, which are meaningless read aloud.
28
+ */
29
+ alt?: string;
30
+ }
1
31
  export interface OptionMinimal {
2
32
  value: any;
3
33
  label?: string;
34
+ /**
35
+ * Optional avatar rendered before the label.
36
+ *
37
+ * Opt-in, and it also selects the tag style: options carrying an avatar get
38
+ * the white tag with a border, options without stay on the blue fill.
39
+ * Adding this field to some options and not others is supported — the two
40
+ * styles can appear side by side in one field.
41
+ */
42
+ avatar?: OptionAvatar;
4
43
  }
@@ -1,3 +1,8 @@
1
1
  import { type DropdownIndicatorProps, type GroupBase } from "react-select";
2
2
  import type { OptionMinimal } from "./Select.types";
3
+ /**
4
+ * DES-171: the multi-select design uses a stacked up/down chevron, while the
5
+ * single-select keeps the single downward chevron. `isMulti` reaches us here
6
+ * because `DropdownIndicatorProps` extends react-select's `CommonProps`.
7
+ */
3
8
  export declare const SelectDropdownIndicator: <Option extends OptionMinimal = OptionMinimal, IsMulti extends boolean = any, Group extends GroupBase<Option> = GroupBase<Option>>(props: DropdownIndicatorProps<Option, IsMulti, Group>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { type GroupBase, type MultiValueGenericProps } from "react-select";
2
+ import type { OptionMinimal } from "./Select.types";
3
+ /**
4
+ * Tag label for the multi-select, rendering the option's avatar before its
5
+ * text when one is supplied.
6
+ *
7
+ * Only ever mounted for multi-selects — react-select does not render
8
+ * `MultiValueLabel` in single-select mode — so this needs no `isMulti` guard.
9
+ */
10
+ export declare const SelectMultiValueLabel: <Option extends OptionMinimal = OptionMinimal, IsMulti extends boolean = any, Group extends GroupBase<Option> = GroupBase<Option>>(props: MultiValueGenericProps<Option, IsMulti, Group>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { type GroupBase, type OptionProps } from "react-select";
2
+ import type { OptionMinimal } from "./Select.types";
3
+ /**
4
+ * Menu row for the multi-select, rendering the option's avatar before its text.
5
+ *
6
+ * Unlike `MultiValueLabel`, `Option` is shared with the single-select, so the
7
+ * avatar is gated on `isMulti`. Avatars are a multi-select affordance in the
8
+ * design (DES-171), and gating keeps the single-select provably untouched.
9
+ * `isMulti` reaches us because `OptionProps` extends react-select's
10
+ * `CommonProps`.
11
+ */
12
+ export declare const SelectOption: <Option extends OptionMinimal = OptionMinimal, IsMulti extends boolean = any, Group extends GroupBase<Option> = GroupBase<Option>>(props: OptionProps<Option, IsMulti, Group>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import type { FC } from "react";
2
+ import type { OptionAvatar } from "./Select.types";
3
+ /**
4
+ * The avatar rendered inside multi-select tags and menu rows.
5
+ *
6
+ * Two known compromises:
7
+ *
8
+ * 1. The 1px ring comes from `className` — `Avatar` has no border support.
9
+ * 2. `Avatar`'s colours resolve to Tailwind's built-in palette, not our
10
+ * semantic tokens, so they sit slightly off the design. Tracked in DES-173;
11
+ * not fixable from outside the component.
12
+ *
13
+ * Initials are truncated to one character here because this wrapper is what
14
+ * pins the avatar to 24px, which is why the design shows a single letter. The
15
+ * full name still reaches screen readers via `alt`.
16
+ */
17
+ export declare const SelectOptionAvatar: FC<{
18
+ avatar: OptionAvatar;
19
+ }>;
@@ -0,0 +1,4 @@
1
+ import type { FC } from "react";
2
+ import { IconProps } from "./types/IconProps.type";
3
+ declare const _default: FC<IconProps>;
4
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import type { FC } from "react";
2
+ import { IconProps } from "./types/IconProps.type";
3
+ declare const _default: FC<IconProps>;
4
+ export default _default;
@@ -35,6 +35,7 @@ export { default as CopyToClipboardIcon } from "./CopyToClipboardIcon";
35
35
  export { default as CrossIcon } from "./CrossIcon";
36
36
  export { default as CrossInCircleIcon } from "./CrossInCircleIcon";
37
37
  export { default as CrossInFilledCircleIcon } from "./CrossInFilledCircleIcon";
38
+ export { default as DashboardIcon } from "./DashboardIcon";
38
39
  export { default as DatabaseIcon } from "./DatabaseIcon";
39
40
  export { default as DownloadIcon } from "./DownloadIcon";
40
41
  export { default as DragIndicatorIcon } from "./DragIndicatorIcon";
@@ -111,6 +112,7 @@ export { default as StarFilledIcon } from "./StarFilledIcon";
111
112
  export { default as StarIcon } from "./StarIcon";
112
113
  export { default as StopwatchIcon } from "./StopwatchIcon";
113
114
  export { default as SummaryIcon } from "./SummaryIcon";
115
+ export { default as SwapIcon } from "./SwapIcon";
114
116
  export { default as TadaIcon } from "./TadaIcon";
115
117
  export { default as TaskIcon } from "./TaskIcon";
116
118
  export { default as ThresholdIcon } from "./ThresholdIcon";
@@ -1,4 +1,43 @@
1
+ /**
2
+ * Avatar shown alongside an option's label.
3
+ *
4
+ * Rendered in the multi-select tag and in the menu row. Ignored by the
5
+ * single-select, which has no avatar in its design.
6
+ */
7
+ export interface OptionAvatar {
8
+ /**
9
+ * Initials to show when there is no image, e.g. `"JD"`.
10
+ *
11
+ * Only the first character is rendered — the avatar is 24px, and the design
12
+ * shows a single initial at that size. Passing the full initials is still
13
+ * fine; they are truncated for display, not rejected.
14
+ */
15
+ initials: string;
16
+ /**
17
+ * Marks this option as the current user, which gets a highlighted
18
+ * treatment to distinguish it from everyone else.
19
+ */
20
+ isSelf?: boolean;
21
+ /**
22
+ * Optional avatar image. Falls back to the initials if it fails to load.
23
+ */
24
+ src?: string;
25
+ /**
26
+ * The person's full name. Announced to screen readers in place of the
27
+ * initials, which are meaningless read aloud.
28
+ */
29
+ alt?: string;
30
+ }
1
31
  export interface OptionMinimal {
2
32
  value: any;
3
33
  label?: string;
34
+ /**
35
+ * Optional avatar rendered before the label.
36
+ *
37
+ * Opt-in, and it also selects the tag style: options carrying an avatar get
38
+ * the white tag with a border, options without stay on the blue fill.
39
+ * Adding this field to some options and not others is supported — the two
40
+ * styles can appear side by side in one field.
41
+ */
42
+ avatar?: OptionAvatar;
4
43
  }
@@ -1,3 +1,8 @@
1
1
  import { type DropdownIndicatorProps, type GroupBase } from "react-select";
2
2
  import type { OptionMinimal } from "./Select.types";
3
+ /**
4
+ * DES-171: the multi-select design uses a stacked up/down chevron, while the
5
+ * single-select keeps the single downward chevron. `isMulti` reaches us here
6
+ * because `DropdownIndicatorProps` extends react-select's `CommonProps`.
7
+ */
3
8
  export declare const SelectDropdownIndicator: <Option extends OptionMinimal = OptionMinimal, IsMulti extends boolean = any, Group extends GroupBase<Option> = GroupBase<Option>>(props: DropdownIndicatorProps<Option, IsMulti, Group>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { type GroupBase, type MultiValueGenericProps } from "react-select";
2
+ import type { OptionMinimal } from "./Select.types";
3
+ /**
4
+ * Tag label for the multi-select, rendering the option's avatar before its
5
+ * text when one is supplied.
6
+ *
7
+ * Only ever mounted for multi-selects — react-select does not render
8
+ * `MultiValueLabel` in single-select mode — so this needs no `isMulti` guard.
9
+ */
10
+ export declare const SelectMultiValueLabel: <Option extends OptionMinimal = OptionMinimal, IsMulti extends boolean = any, Group extends GroupBase<Option> = GroupBase<Option>>(props: MultiValueGenericProps<Option, IsMulti, Group>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { type GroupBase, type OptionProps } from "react-select";
2
+ import type { OptionMinimal } from "./Select.types";
3
+ /**
4
+ * Menu row for the multi-select, rendering the option's avatar before its text.
5
+ *
6
+ * Unlike `MultiValueLabel`, `Option` is shared with the single-select, so the
7
+ * avatar is gated on `isMulti`. Avatars are a multi-select affordance in the
8
+ * design (DES-171), and gating keeps the single-select provably untouched.
9
+ * `isMulti` reaches us because `OptionProps` extends react-select's
10
+ * `CommonProps`.
11
+ */
12
+ export declare const SelectOption: <Option extends OptionMinimal = OptionMinimal, IsMulti extends boolean = any, Group extends GroupBase<Option> = GroupBase<Option>>(props: OptionProps<Option, IsMulti, Group>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import type { FC } from "react";
2
+ import type { OptionAvatar } from "./Select.types";
3
+ /**
4
+ * The avatar rendered inside multi-select tags and menu rows.
5
+ *
6
+ * Two known compromises:
7
+ *
8
+ * 1. The 1px ring comes from `className` — `Avatar` has no border support.
9
+ * 2. `Avatar`'s colours resolve to Tailwind's built-in palette, not our
10
+ * semantic tokens, so they sit slightly off the design. Tracked in DES-173;
11
+ * not fixable from outside the component.
12
+ *
13
+ * Initials are truncated to one character here because this wrapper is what
14
+ * pins the avatar to 24px, which is why the design shows a single letter. The
15
+ * full name still reaches screen readers via `alt`.
16
+ */
17
+ export declare const SelectOptionAvatar: FC<{
18
+ avatar: OptionAvatar;
19
+ }>;
@@ -2,5 +2,5 @@
2
2
  * List of all available icon names in the web-ui package.
3
3
  * These correspond to the icon components in src/components/Icons/
4
4
  */
5
- export declare const iconNames: readonly ["AbsentIcon", "AddNoteIcon", "AlarmClockIcon", "AmberAlertIcon", "ArrowsUpDownIcon", "AssignIcon", "AssignedIcon", "BellIcon", "BluetoothIcon", "BrushIcon", "CakeIcon", "CalendarDayIcon", "CalendarMonthIcon", "CalendarRepeatIcon", "ChartBarsIcon", "ChartLineAndBarsIcon", "ChartLineIcon", "ChatBubbleIcon", "ChatBubbleWithTextIcon", "CheckCircleFilledIcon", "CheckIcon", "ChevronDoubleIcon", "ChevronDownIcon", "ChevronLeftIcon", "ChevronRightIcon", "CircleFilledIcon", "ClockIcon", "CogwheelIcon", "CompareIcon", "CopyToClipboardIcon", "CrossIcon", "CrossInCircleIcon", "CrossInFilledCircleIcon", "DatabaseIcon", "DownloadIcon", "DragIndicatorIcon", "EarthIcon", "EmailIcon", "EmojiIcon", "EmptyIcon", "ExclamationMarkIcon", "ExportIcon", "ExternalLinkIcon", "EyeClosedIcon", "EyeOpenIcon", "FilterIcon", "FireIcon", "FirstAidKitIcon", "FlagIcon", "FolderIcon", "ForwardIcon", "GifIcon", "GrayAlertIcon", "GroupIcon", "GroupOfThreeIcon", "HamburgerIcon", "HandshakeIcon", "HeartIcon", "HeartMinusIcon", "HomeIcon", "IdBadgeIcon", "ImageIcon", "ImageLibraryIcon", "InfoIcon", "LifebuoyIcon", "LightBulbIcon", "LinkIcon", "ListDescIcon", "ListIcon", "LockIcon", "LogInIcon", "LogOutIcon", "MessageWithArrowIcon", "MoreIcon", "MouseIcon", "NoteIcon", "OpenAlertIcon", "OpenFolderIcon", "PageIcon", "PageViewIcon", "PaperclipIcon", "PatientIcon", "PencilIcon", "PersonIcon", "PhoneIcon", "PieChartIcon", "PinIcon", "PlusIcon", "PrinterIcon", "QuestionFilledIcon", "RedAlertIcon", "RobotIcon", "RocketIcon", "SearchIcon", "SendIcon", "ShareIcon", "SidebarIcon", "SmallArrowDownIcon", "SmallArrowUpIcon", "SmallCircleIcon", "SmallDiamondIcon", "SmallSquareIcon", "SmallUpsideDownTriangleIcon", "SquareFilledIcon", "StarFilledIcon", "StarIcon", "StopwatchIcon", "SummaryIcon", "TadaIcon", "TaskIcon", "ThresholdIcon", "TrashBinIcon", "TreeIcon", "UnassignedIcon", "UnlinkIcon", "UnpinIcon", "UploadIcon", "VideoIcon", "WorkflowIcon"];
5
+ export declare const iconNames: readonly ["AbsentIcon", "AddNoteIcon", "AlarmClockIcon", "AmberAlertIcon", "ArrowsUpDownIcon", "AssignIcon", "AssignedIcon", "BellIcon", "BluetoothIcon", "BrushIcon", "CakeIcon", "CalendarDayIcon", "CalendarMonthIcon", "CalendarRepeatIcon", "ChartBarsIcon", "ChartLineAndBarsIcon", "ChartLineIcon", "ChatBubbleIcon", "ChatBubbleWithTextIcon", "CheckCircleFilledIcon", "CheckIcon", "ChevronDoubleIcon", "ChevronDownIcon", "ChevronLeftIcon", "ChevronRightIcon", "CircleFilledIcon", "ClockIcon", "CogwheelIcon", "CompareIcon", "CopyToClipboardIcon", "CrossIcon", "CrossInCircleIcon", "CrossInFilledCircleIcon", "DashboardIcon", "DatabaseIcon", "DownloadIcon", "DragIndicatorIcon", "EarthIcon", "EmailIcon", "EmojiIcon", "EmptyIcon", "ExclamationMarkIcon", "ExportIcon", "ExternalLinkIcon", "EyeClosedIcon", "EyeOpenIcon", "FilterIcon", "FireIcon", "FirstAidKitIcon", "FlagIcon", "FolderIcon", "ForwardIcon", "GifIcon", "GrayAlertIcon", "GroupIcon", "GroupOfThreeIcon", "HamburgerIcon", "HandshakeIcon", "HeartIcon", "HeartMinusIcon", "HomeIcon", "IdBadgeIcon", "ImageIcon", "ImageLibraryIcon", "InfoIcon", "LifebuoyIcon", "LightBulbIcon", "LinkIcon", "ListDescIcon", "ListIcon", "LockIcon", "LogInIcon", "LogOutIcon", "MessageWithArrowIcon", "MoreIcon", "MouseIcon", "NoteIcon", "OpenAlertIcon", "OpenFolderIcon", "PageIcon", "PageViewIcon", "PaperclipIcon", "PatientIcon", "PencilIcon", "PersonIcon", "PhoneIcon", "PieChartIcon", "PinIcon", "PlusIcon", "PrinterIcon", "QuestionFilledIcon", "RedAlertIcon", "RobotIcon", "RocketIcon", "SearchIcon", "SendIcon", "ShareIcon", "SidebarIcon", "SmallArrowDownIcon", "SmallArrowUpIcon", "SmallCircleIcon", "SmallDiamondIcon", "SmallSquareIcon", "SmallUpsideDownTriangleIcon", "SquareFilledIcon", "StarFilledIcon", "StarIcon", "StopwatchIcon", "SummaryIcon", "SwapIcon", "TadaIcon", "TaskIcon", "ThresholdIcon", "TrashBinIcon", "TreeIcon", "UnassignedIcon", "UnlinkIcon", "UnpinIcon", "UploadIcon", "VideoIcon", "WorkflowIcon"];
6
6
  export type IconName = (typeof iconNames)[number];
@@ -2,5 +2,5 @@
2
2
  * List of all available icon names in the web-ui package.
3
3
  * These correspond to the icon components in src/components/Icons/
4
4
  */
5
- export declare const iconNames: readonly ["AbsentIcon", "AddNoteIcon", "AlarmClockIcon", "AmberAlertIcon", "ArrowsUpDownIcon", "AssignIcon", "AssignedIcon", "BellIcon", "BluetoothIcon", "BrushIcon", "CakeIcon", "CalendarDayIcon", "CalendarMonthIcon", "CalendarRepeatIcon", "ChartBarsIcon", "ChartLineAndBarsIcon", "ChartLineIcon", "ChatBubbleIcon", "ChatBubbleWithTextIcon", "CheckCircleFilledIcon", "CheckIcon", "ChevronDoubleIcon", "ChevronDownIcon", "ChevronLeftIcon", "ChevronRightIcon", "CircleFilledIcon", "ClockIcon", "CogwheelIcon", "CompareIcon", "CopyToClipboardIcon", "CrossIcon", "CrossInCircleIcon", "CrossInFilledCircleIcon", "DatabaseIcon", "DownloadIcon", "DragIndicatorIcon", "EarthIcon", "EmailIcon", "EmojiIcon", "EmptyIcon", "ExclamationMarkIcon", "ExportIcon", "ExternalLinkIcon", "EyeClosedIcon", "EyeOpenIcon", "FilterIcon", "FireIcon", "FirstAidKitIcon", "FlagIcon", "FolderIcon", "ForwardIcon", "GifIcon", "GrayAlertIcon", "GroupIcon", "GroupOfThreeIcon", "HamburgerIcon", "HandshakeIcon", "HeartIcon", "HeartMinusIcon", "HomeIcon", "IdBadgeIcon", "ImageIcon", "ImageLibraryIcon", "InfoIcon", "LifebuoyIcon", "LightBulbIcon", "LinkIcon", "ListDescIcon", "ListIcon", "LockIcon", "LogInIcon", "LogOutIcon", "MessageWithArrowIcon", "MoreIcon", "MouseIcon", "NoteIcon", "OpenAlertIcon", "OpenFolderIcon", "PageIcon", "PageViewIcon", "PaperclipIcon", "PatientIcon", "PencilIcon", "PersonIcon", "PhoneIcon", "PieChartIcon", "PinIcon", "PlusIcon", "PrinterIcon", "QuestionFilledIcon", "RedAlertIcon", "RobotIcon", "RocketIcon", "SearchIcon", "SendIcon", "ShareIcon", "SidebarIcon", "SmallArrowDownIcon", "SmallArrowUpIcon", "SmallCircleIcon", "SmallDiamondIcon", "SmallSquareIcon", "SmallUpsideDownTriangleIcon", "SquareFilledIcon", "StarFilledIcon", "StarIcon", "StopwatchIcon", "SummaryIcon", "TadaIcon", "TaskIcon", "ThresholdIcon", "TrashBinIcon", "TreeIcon", "UnassignedIcon", "UnlinkIcon", "UnpinIcon", "UploadIcon", "VideoIcon", "WorkflowIcon"];
5
+ export declare const iconNames: readonly ["AbsentIcon", "AddNoteIcon", "AlarmClockIcon", "AmberAlertIcon", "ArrowsUpDownIcon", "AssignIcon", "AssignedIcon", "BellIcon", "BluetoothIcon", "BrushIcon", "CakeIcon", "CalendarDayIcon", "CalendarMonthIcon", "CalendarRepeatIcon", "ChartBarsIcon", "ChartLineAndBarsIcon", "ChartLineIcon", "ChatBubbleIcon", "ChatBubbleWithTextIcon", "CheckCircleFilledIcon", "CheckIcon", "ChevronDoubleIcon", "ChevronDownIcon", "ChevronLeftIcon", "ChevronRightIcon", "CircleFilledIcon", "ClockIcon", "CogwheelIcon", "CompareIcon", "CopyToClipboardIcon", "CrossIcon", "CrossInCircleIcon", "CrossInFilledCircleIcon", "DashboardIcon", "DatabaseIcon", "DownloadIcon", "DragIndicatorIcon", "EarthIcon", "EmailIcon", "EmojiIcon", "EmptyIcon", "ExclamationMarkIcon", "ExportIcon", "ExternalLinkIcon", "EyeClosedIcon", "EyeOpenIcon", "FilterIcon", "FireIcon", "FirstAidKitIcon", "FlagIcon", "FolderIcon", "ForwardIcon", "GifIcon", "GrayAlertIcon", "GroupIcon", "GroupOfThreeIcon", "HamburgerIcon", "HandshakeIcon", "HeartIcon", "HeartMinusIcon", "HomeIcon", "IdBadgeIcon", "ImageIcon", "ImageLibraryIcon", "InfoIcon", "LifebuoyIcon", "LightBulbIcon", "LinkIcon", "ListDescIcon", "ListIcon", "LockIcon", "LogInIcon", "LogOutIcon", "MessageWithArrowIcon", "MoreIcon", "MouseIcon", "NoteIcon", "OpenAlertIcon", "OpenFolderIcon", "PageIcon", "PageViewIcon", "PaperclipIcon", "PatientIcon", "PencilIcon", "PersonIcon", "PhoneIcon", "PieChartIcon", "PinIcon", "PlusIcon", "PrinterIcon", "QuestionFilledIcon", "RedAlertIcon", "RobotIcon", "RocketIcon", "SearchIcon", "SendIcon", "ShareIcon", "SidebarIcon", "SmallArrowDownIcon", "SmallArrowUpIcon", "SmallCircleIcon", "SmallDiamondIcon", "SmallSquareIcon", "SmallUpsideDownTriangleIcon", "SquareFilledIcon", "StarFilledIcon", "StarIcon", "StopwatchIcon", "SummaryIcon", "SwapIcon", "TadaIcon", "TaskIcon", "ThresholdIcon", "TrashBinIcon", "TreeIcon", "UnassignedIcon", "UnlinkIcon", "UnpinIcon", "UploadIcon", "VideoIcon", "WorkflowIcon"];
6
6
  export type IconName = (typeof iconNames)[number];
@@ -32,6 +32,7 @@ const iconNames = [
32
32
  "CrossIcon",
33
33
  "CrossInCircleIcon",
34
34
  "CrossInFilledCircleIcon",
35
+ "DashboardIcon",
35
36
  "DatabaseIcon",
36
37
  "DownloadIcon",
37
38
  "DragIndicatorIcon",
@@ -107,6 +108,7 @@ const iconNames = [
107
108
  "StarIcon",
108
109
  "StopwatchIcon",
109
110
  "SummaryIcon",
111
+ "SwapIcon",
110
112
  "TadaIcon",
111
113
  "TaskIcon",
112
114
  "ThresholdIcon",
@@ -1 +1 @@
1
- {"version":3,"file":"iconNames.js","sources":["../../../src/generated/iconNames.ts"],"sourcesContent":[null],"names":[],"mappings":"AAQO,MAAM,SAAA,GAAY;AAAA,EACvB,YAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA,sBAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,wBAAA;AAAA,EACA,uBAAA;AAAA,EACA,WAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,qBAAA;AAAA,EACA,WAAA;AAAA,EACA,mBAAA;AAAA,EACA,yBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,mBAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,qBAAA;AAAA,EACA,YAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,sBAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,6BAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA;;;;;"}
1
+ {"version":3,"file":"iconNames.js","sources":["../../../src/generated/iconNames.ts"],"sourcesContent":[null],"names":[],"mappings":"AAQO,MAAM,SAAA,GAAY;AAAA,EACvB,YAAA;AAAA,EACA,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA,sBAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,wBAAA;AAAA,EACA,uBAAA;AAAA,EACA,WAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,qBAAA;AAAA,EACA,WAAA;AAAA,EACA,mBAAA;AAAA,EACA,yBAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,mBAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,qBAAA;AAAA,EACA,YAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,kBAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,sBAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,6BAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA;;;;;"}
@@ -78,6 +78,7 @@ export { default as Section, type SectionProps, } from "./components/Section/Sec
78
78
  export { default as SectionItemWithContent } from "./components/Section/SectionItemWithContent";
79
79
  export { default as SectionItem, type SectionItemProps, } from "./components/Section/SectionItem";
80
80
  export { type SelectProps, Select } from "./components/Select/Select";
81
+ export type { OptionAvatar, OptionMinimal, } from "./components/Select/Select.types";
81
82
  export { StyledSelect } from "./components/Select/StyledSelect";
82
83
  export { LabeledSelect } from "./components/Select/LabeledSelect";
83
84
  export { LabeledSelectSearchable } from "./components/Select/LabeledSelectSearchable";
@@ -78,6 +78,7 @@ export { default as Section, type SectionProps, } from "./components/Section/Sec
78
78
  export { default as SectionItemWithContent } from "./components/Section/SectionItemWithContent";
79
79
  export { default as SectionItem, type SectionItemProps, } from "./components/Section/SectionItem";
80
80
  export { type SelectProps, Select } from "./components/Select/Select";
81
+ export type { OptionAvatar, OptionMinimal, } from "./components/Select/Select.types";
81
82
  export { StyledSelect } from "./components/Select/StyledSelect";
82
83
  export { LabeledSelect } from "./components/Select/LabeledSelect";
83
84
  export { LabeledSelectSearchable } from "./components/Select/LabeledSelectSearchable";
@@ -1,7 +1,7 @@
1
1
  import type { StoryObj } from "@storybook/react-vite";
2
2
  declare const meta: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Omit<import("../src").SelectProps<import("../src/components/Select/Select.types").OptionMinimal, any, import("react-select").GroupBase<import("../src/components/Select/Select.types").OptionMinimal>>, "isError"> & {
4
+ component: import("react").ForwardRefExoticComponent<Omit<import("../src").SelectProps<import("../src").OptionMinimal, any, import("react-select").GroupBase<import("../src").OptionMinimal>>, "isError"> & {
5
5
  label?: string;
6
6
  helperText?: React.ReactNode;
7
7
  errorText?: React.ReactNode;
@@ -1,11 +1,20 @@
1
1
  import { type StoryObj } from "@storybook/react-vite";
2
+ /**
3
+ * Stories are grouped into sections (Basics, States, Value, Options,
4
+ * Multi-select, Multi-select with avatars, Composition, Docs-only) by order
5
+ * plus an explicit `name` on each.
6
+ *
7
+ * They are not collapsible folders: Storybook builds hierarchy from `title`
8
+ * only, never from a story's `name`. See the note at the bottom of this file.
9
+ */
2
10
  declare const meta: {
3
11
  title: string;
4
- component: import("react").ForwardRefExoticComponent<import("../src").SelectProps<import("../src/components/Select/Select.types").OptionMinimal, boolean, import("react-select").GroupBase<import("../src/components/Select/Select.types").OptionMinimal>> & import("react").RefAttributes<unknown>>;
12
+ component: import("react").ForwardRefExoticComponent<import("../src").SelectProps<import("../src").OptionMinimal, boolean, import("react-select").GroupBase<import("../src").OptionMinimal>> & import("react").RefAttributes<unknown>>;
5
13
  };
6
14
  export default meta;
7
15
  type Story = StoryObj<typeof meta>;
8
16
  export declare const Base: {
17
+ name: string;
9
18
  args: {
10
19
  options: ({
11
20
  value: number;
@@ -20,10 +29,12 @@ export declare const Base: {
20
29
  };
21
30
  };
22
31
  export declare const Width: {
32
+ name: string;
23
33
  args: {};
24
34
  render: () => import("react/jsx-runtime").JSX.Element;
25
35
  };
26
36
  export declare const IsError: {
37
+ name: string;
27
38
  args: {
28
39
  isError: boolean;
29
40
  options: ({
@@ -39,6 +50,7 @@ export declare const IsError: {
39
50
  };
40
51
  };
41
52
  export declare const LoadingOptions: {
53
+ name: string;
42
54
  args: {
43
55
  isLoading: boolean;
44
56
  options: ({
@@ -53,7 +65,24 @@ export declare const LoadingOptions: {
53
65
  onChange: import("storybook/actions").HandlerFunction;
54
66
  };
55
67
  };
68
+ export declare const IsClearable: {
69
+ name: string;
70
+ args: {
71
+ isClearable: boolean;
72
+ options: ({
73
+ value: number;
74
+ label: string;
75
+ isDisabled?: undefined;
76
+ } | {
77
+ value: number;
78
+ label: string;
79
+ isDisabled: boolean;
80
+ })[];
81
+ onChange: import("storybook/actions").HandlerFunction;
82
+ };
83
+ };
56
84
  export declare const WithValue: {
85
+ name: string;
57
86
  args: {
58
87
  value: number;
59
88
  width: string;
@@ -70,6 +99,7 @@ export declare const WithValue: {
70
99
  };
71
100
  };
72
101
  export declare const WithDefaultValue: {
102
+ name: string;
73
103
  args: {
74
104
  defaultValue: {
75
105
  value: number;
@@ -92,22 +122,39 @@ export declare const WithDefaultValue: {
92
122
  onChange: import("storybook/actions").HandlerFunction;
93
123
  };
94
124
  };
95
- export declare const IsClearable: {
125
+ export declare const GroupedOptions: {
126
+ name: string;
96
127
  args: {
97
- isClearable: boolean;
98
128
  options: ({
99
- value: number;
100
129
  label: string;
101
- isDisabled?: undefined;
130
+ options: ({
131
+ value: number;
132
+ label: string;
133
+ isDisabled?: undefined;
134
+ } | {
135
+ value: number;
136
+ label: string;
137
+ isDisabled: boolean;
138
+ })[];
102
139
  } | {
103
- value: number;
104
140
  label: string;
105
- isDisabled: boolean;
141
+ options: {
142
+ value: string;
143
+ label: string;
144
+ }[];
106
145
  })[];
107
146
  onChange: import("storybook/actions").HandlerFunction;
108
147
  };
109
148
  };
149
+ /**
150
+ * Redesigned in DES-171: white avatar tags, stacked chevron, no focus ring.
151
+ *
152
+ * **Font size 14px and height 44px, not the design's 16px / 48px** — both to
153
+ * match the single-select and the rest of the form controls, which are still
154
+ * on the legacy type scale. Reasoning in `Select.tsx`.
155
+ */
110
156
  export declare const MultiSelect: {
157
+ name: string;
111
158
  args: {
112
159
  isMulti: boolean;
113
160
  options: ({
@@ -122,7 +169,12 @@ export declare const MultiSelect: {
122
169
  onChange: import("storybook/actions").HandlerFunction;
123
170
  };
124
171
  };
172
+ /**
173
+ * The avatarless tag — blue fill, unchanged in colour. This is what the five
174
+ * existing multi-selects render.
175
+ */
125
176
  export declare const MultiSelectWithDefault: {
177
+ name: string;
126
178
  args: {
127
179
  defaultValue: ({
128
180
  value: number;
@@ -147,31 +199,26 @@ export declare const MultiSelectWithDefault: {
147
199
  };
148
200
  };
149
201
  export declare const CreatableSelect: Story;
150
- export declare const GroupedOptions: {
151
- args: {
152
- options: ({
153
- label: string;
154
- options: ({
155
- value: number;
156
- label: string;
157
- isDisabled?: undefined;
158
- } | {
159
- value: number;
160
- label: string;
161
- isDisabled: boolean;
162
- })[];
163
- } | {
164
- label: string;
165
- options: {
166
- value: string;
167
- label: string;
168
- }[];
169
- })[];
170
- onChange: import("storybook/actions").HandlerFunction;
171
- };
172
- };
202
+ /**
203
+ * The `default` state from the design: nothing selected yet.
204
+ */
205
+ export declare const MultiSelectWithAvatarsEmpty: Story;
206
+ /**
207
+ * The `filled` state. Tags wrap onto a second row, showing the 8px gap and the
208
+ * growing control height.
209
+ */
210
+ export declare const MultiSelectWithAvatarsFilled: Story;
211
+ /**
212
+ * The `selected` state: menu open, avatars in the option rows and the tags.
213
+ */
214
+ export declare const MultiSelectWithAvatarsMenuOpen: Story;
215
+ /**
216
+ * Avatars are a multi-select affordance — a single-select ignores them.
217
+ */
218
+ export declare const SingleSelectIgnoresAvatars: Story;
173
219
  export declare const MatchingInputHeight: Story;
174
220
  export declare const LabeledSelect: {
221
+ name: string;
175
222
  render: (args: any) => import("react/jsx-runtime").JSX.Element;
176
223
  };
177
224
  export declare const HIDE_Docs_ListGoodLength: Story;
@@ -180,3 +227,12 @@ export declare const HIDE_Docs_Sorted: Story;
180
227
  export declare const HIDE_Docs_RandomSorting: Story;
181
228
  export declare const HIDE_Docs_Grouped: Story;
182
229
  export declare const HIDE_Docs_Ungrouped: Story;
230
+ /**
231
+ * Sections, not folders — why.
232
+ *
233
+ * Real folders need one `title` each (`Forms/Select/Multi-select`, …), so this
234
+ * file would have to split. Story ids are `toId(title, exportName)`, so that
235
+ * renames every id and resets all `Select` Chromatic baselines; `name` does
236
+ * not. `Select.docs.mdx` also references six exports here and would need
237
+ * repointing. Worth doing on its own, not as a rider on a feature branch.
238
+ */