linkedunion-design-kit 1.9.6-beta.0 → 1.9.6-beta.1

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 (132) hide show
  1. package/dist/build/types/validator.js +12 -0
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.js +2 -0
  4. package/dist/src/components/Badge/Badge.stories.d.ts +1 -1
  5. package/dist/src/components/Badge/Badge.stories.js +1 -1
  6. package/dist/src/components/Button/Button/Button.module.css +1 -1
  7. package/dist/src/components/Card/MultipleNews/MultiNews.js +2 -2
  8. package/dist/src/components/Pagination/pagination.js +7 -7
  9. package/dist/src/components/Skeleton/skeleton.stories.d.ts +3 -1
  10. package/dist/src/components/Skeleton/skeleton.stories.js +48 -38
  11. package/dist/src/components/Title/Title.module.css +1 -1
  12. package/dist/src/components/Typography/Heading/heading.module.css +1 -1
  13. package/dist/src/components/VerticalTabs/VerticalTabs.d.ts +18 -0
  14. package/dist/src/components/VerticalTabs/VerticalTabs.js +60 -0
  15. package/dist/src/components/VerticalTabs/VerticalTabs.stories.d.ts +11 -0
  16. package/dist/src/components/VerticalTabs/VerticalTabs.stories.js +100 -0
  17. package/dist/src/components/VerticalTabs/VerticalTabs.test.d.ts +1 -0
  18. package/dist/src/components/VerticalTabs/VerticalTabs.test.js +48 -0
  19. package/dist/styles/global.css +118 -6
  20. package/package.json +2 -2
  21. package/dist/app/layout.jsx +0 -13
  22. package/dist/app/page.jsx +0 -5
  23. package/dist/src/components/Accordion/Accordion.stories.jsx +0 -33
  24. package/dist/src/components/Accordion/accordion.jsx +0 -59
  25. package/dist/src/components/Alerts/Alert/alert.jsx +0 -152
  26. package/dist/src/components/Alerts/Alert/alert.stories.jsx +0 -344
  27. package/dist/src/components/Alerts/AlertDialog/alert-dialog.jsx +0 -170
  28. package/dist/src/components/Alerts/AlertDialog/alert-dialog.stories.jsx +0 -552
  29. package/dist/src/components/AppIcons/AndroidIcon.jsx +0 -24
  30. package/dist/src/components/AppIcons/AppIcon.jsx +0 -29
  31. package/dist/src/components/AppIcons/AppIcon.stories.jsx +0 -223
  32. package/dist/src/components/AppIcons/AppleIcon.jsx +0 -31
  33. package/dist/src/components/AppIcons/PlayStoreIcon.jsx +0 -29
  34. package/dist/src/components/Avatar/Avatar/Avatar.jsx +0 -45
  35. package/dist/src/components/Avatar/Avatar/Avatar.stories.jsx +0 -95
  36. package/dist/src/components/Avatar/Avatar/Avatar.test.jsx +0 -9
  37. package/dist/src/components/Avatar/Avatar/type.d.ts +0 -12
  38. package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.jsx +0 -17
  39. package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.stories.jsx +0 -32
  40. package/dist/src/components/Avatar/StatusIndicator/StatusIndicator.jsx +0 -20
  41. package/dist/src/components/Avatar/StatusIndicator/StatusIndicator.stories.jsx +0 -50
  42. package/dist/src/components/Badge/Badge.jsx +0 -54
  43. package/dist/src/components/Badge/Badge.stories.jsx +0 -201
  44. package/dist/src/components/Button/Button/Button.jsx +0 -96
  45. package/dist/src/components/Button/Button/Button.stories.jsx +0 -283
  46. package/dist/src/components/Button/Button/Button.test.jsx +0 -73
  47. package/dist/src/components/Button/IconButton/IconButton.jsx +0 -63
  48. package/dist/src/components/Button/IconButton/IconButton.stories.jsx +0 -128
  49. package/dist/src/components/Button/IconButton/IconButton.test.jsx +0 -28
  50. package/dist/src/components/Card/MultipleNews/MultiNews.jsx +0 -70
  51. package/dist/src/components/Card/MultipleNews/MultiNews.stories.jsx +0 -101
  52. package/dist/src/components/Card/PostByCategory/PostByCategory.jsx +0 -60
  53. package/dist/src/components/Card/PostByCategory/PostByCategory.stories.jsx +0 -102
  54. package/dist/src/components/Card/SinglePost/SinglePost.jsx +0 -26
  55. package/dist/src/components/Card/SinglePost/SinglePost.stories.jsx +0 -63
  56. package/dist/src/components/Card/card.jsx +0 -20
  57. package/dist/src/components/Card/contactProfile/ContactProfile.jsx +0 -60
  58. package/dist/src/components/Card/contactProfile/ContactProfile.stories.jsx +0 -99
  59. package/dist/src/components/Card/photoAlbum/PhotoAlbum.jsx +0 -41
  60. package/dist/src/components/Card/photoAlbum/PhotoAlbum.stories.jsx +0 -51
  61. package/dist/src/components/Card/photoGallery/PhotoGallery.jsx +0 -17
  62. package/dist/src/components/Card/photoGallery/PhotoGallery.stories.jsx +0 -34
  63. package/dist/src/components/Checkbox/checkbox.jsx +0 -47
  64. package/dist/src/components/Checkbox/checkbox.stories.jsx +0 -113
  65. package/dist/src/components/ColorPicker/ColorPicker.jsx +0 -67
  66. package/dist/src/components/ColorPicker/ColorPicker.stories.jsx +0 -138
  67. package/dist/src/components/Colors/color.jsx +0 -5
  68. package/dist/src/components/Colors/color.stories.jsx +0 -20
  69. package/dist/src/components/Colors/color.test.jsx +0 -23
  70. package/dist/src/components/Dropdown/Combobox/Combobox.jsx +0 -198
  71. package/dist/src/components/Dropdown/Combobox/Combobox.stories.jsx +0 -289
  72. package/dist/src/components/Dropdown/Combobox/utils/renderBadge.jsx +0 -7
  73. package/dist/src/components/Dropdown/DropdownMenu/DropdownMenu.jsx +0 -102
  74. package/dist/src/components/Dropdown/DropdownMenu/DropdownMenu.stories.jsx +0 -464
  75. package/dist/src/components/Dropdown/DropdownMenu/SelectAllSection.jsx +0 -19
  76. package/dist/src/components/Dropdown/Select.stories.jsx +0 -201
  77. package/dist/src/components/Dropdown/select.jsx +0 -93
  78. package/dist/src/components/Icons/LUIcon.jsx +0 -41
  79. package/dist/src/components/Icons/LUIcon.test.jsx +0 -308
  80. package/dist/src/components/Icons/stories/IconDropdown.jsx +0 -67
  81. package/dist/src/components/Icons/stories/IconGallery.jsx +0 -77
  82. package/dist/src/components/Icons/stories/InteractiveIconSelector.jsx +0 -86
  83. package/dist/src/components/Icons/stories/LUIcon.stories.jsx +0 -108
  84. package/dist/src/components/ImageUploader/ImageUploader.stories.jsx +0 -50
  85. package/dist/src/components/ImageUploader/imageUploader.jsx +0 -94
  86. package/dist/src/components/Images/LuImage.jsx +0 -19
  87. package/dist/src/components/Images/LuImage.stories.jsx +0 -154
  88. package/dist/src/components/Images/LuImage.test.jsx +0 -44
  89. package/dist/src/components/Input/Input.stories.jsx +0 -250
  90. package/dist/src/components/Input/input.jsx +0 -110
  91. package/dist/src/components/Label/Label.jsx +0 -32
  92. package/dist/src/components/Label/Label.stories.jsx +0 -30
  93. package/dist/src/components/Pagination/pagination.jsx +0 -65
  94. package/dist/src/components/Pagination/pagination.stories.jsx +0 -301
  95. package/dist/src/components/RadioGroup/RadioGroup.stories.jsx +0 -146
  96. package/dist/src/components/RadioGroup/radio-group.jsx +0 -49
  97. package/dist/src/components/Slider/Slider.stories.jsx +0 -159
  98. package/dist/src/components/Slider/slider.jsx +0 -31
  99. package/dist/src/components/SweetAlert/SweetAlert.jsx +0 -147
  100. package/dist/src/components/SweetAlert/SweetAlert.stories.jsx +0 -505
  101. package/dist/src/components/Switch/Switch.stories.jsx +0 -66
  102. package/dist/src/components/Switch/switch.jsx +0 -61
  103. package/dist/src/components/Table/Table.jsx +0 -221
  104. package/dist/src/components/Table/Table.stories.jsx +0 -652
  105. package/dist/src/components/Tabs/Tabs.stories.jsx +0 -29
  106. package/dist/src/components/Tabs/tabs.jsx +0 -32
  107. package/dist/src/components/Title/Title.jsx +0 -8
  108. package/dist/src/components/Title/Title.stories.jsx +0 -37
  109. package/dist/src/components/Title/Title.test.jsx +0 -24
  110. package/dist/src/components/ToolTip/Tooltip.jsx +0 -18
  111. package/dist/src/components/ToolTip/Tooltip.stories.jsx +0 -25
  112. package/dist/src/components/Typography/Body/Body.stories.jsx +0 -34
  113. package/dist/src/components/Typography/Body/body.jsx +0 -52
  114. package/dist/src/components/Typography/Caption/Caption.stories.jsx +0 -24
  115. package/dist/src/components/Typography/Caption/caption.jsx +0 -25
  116. package/dist/src/components/Typography/Display/Display.stories.jsx +0 -24
  117. package/dist/src/components/Typography/Display/display.jsx +0 -39
  118. package/dist/src/components/Typography/Heading/Heading.stories.jsx +0 -37
  119. package/dist/src/components/Typography/Heading/heading.jsx +0 -53
  120. package/dist/src/components/ui/avatar.d.ts +0 -6
  121. package/dist/src/components/ui/avatar.js +0 -38
  122. package/dist/src/components/ui/avatar.jsx +0 -27
  123. package/dist/src/components/ui/button.d.ts +0 -10
  124. package/dist/src/components/ui/button.js +0 -56
  125. package/dist/src/components/ui/button.jsx +0 -45
  126. package/dist/src/components/ui/collapsible.jsx +0 -5
  127. package/dist/src/components/ui/command.jsx +0 -67
  128. package/dist/src/components/ui/dialog.jsx +0 -66
  129. package/dist/src/components/ui/popover.jsx +0 -33
  130. package/dist/src/components/ui/tooltip.jsx +0 -38
  131. package/dist/src/components/ui/typography.jsx +0 -56
  132. /package/dist/{src/components/Avatar/Avatar/type.js → build/types/validator.d.ts} +0 -0
@@ -1,138 +0,0 @@
1
- import ColorPicker from "./ColorPicker";
2
- import { Label } from "../Label/Label";
3
- import { inputVariantConfig } from "../Input/input";
4
- export default {
5
- title: "Components/ColorPicker",
6
- component: ColorPicker,
7
- tags: ["autodocs"],
8
- argTypes: {
9
- size: {
10
- control: "select",
11
- options: Object.keys(inputVariantConfig.size),
12
- },
13
- variant: {
14
- control: "select",
15
- options: Object.keys(inputVariantConfig.variant),
16
- },
17
- color: {
18
- control: "select",
19
- options: Object.keys(inputVariantConfig.color),
20
- },
21
- shape: {
22
- control: "select",
23
- options: Object.keys(inputVariantConfig.shape),
24
- },
25
- value: {
26
- control: "color",
27
- },
28
- },
29
- };
30
- var Template = function (args) { return <ColorPicker {...args}/>; };
31
- export var Default = Template.bind({});
32
- Default.args = {
33
- // Blue color
34
- onChange: function (color) {
35
- console.log("Selected color:", color);
36
- },
37
- };
38
- export var Sizes = function () { return (<div className="space-y-4">
39
- <div>
40
- <Label variant="label-sm">Small</Label>
41
- <ColorPicker size="sm" value="#ef4444" onChange={function (color) { return console.log("Small:", color); }}/>
42
- </div>
43
- <div>
44
- <Label variant="label-sm">Medium</Label>
45
- <ColorPicker size="md" value="#10b981" onChange={function (color) { return console.log("Medium:", color); }}/>
46
- </div>
47
- <div>
48
- <Label variant="label-sm">Large</Label>
49
- <ColorPicker size="lg" value="#8b5cf6" onChange={function (color) { return console.log("Large:", color); }}/>
50
- </div>
51
- </div>); };
52
- export var Variants = function () { return (<div className="space-y-4">
53
- <div>
54
- <Label variant="label-sm">Filled</Label>
55
- <ColorPicker variant="filled" value="#f59e0b" onChange={function (color) { return console.log("Filled:", color); }}/>
56
- </div>
57
- <div>
58
- <Label variant="label-sm">Outlined</Label>
59
- <ColorPicker variant="outlined" value="#06b6d4" onChange={function (color) { return console.log("Outlined:", color); }}/>
60
- </div>
61
- </div>); };
62
- export var Colors = function () { return (<div className="space-y-4">
63
- <div>
64
- <Label variant="label-sm">Default</Label>
65
- <ColorPicker color="default" value="#6366f1" onChange={function (color) { return console.log("Default:", color); }}/>
66
- </div>
67
- <div>
68
- <Label variant="label-sm">Danger</Label>
69
- <ColorPicker color="danger" value="#dc2626" onChange={function (color) { return console.log("Danger:", color); }}/>
70
- </div>
71
- <div>
72
- <Label variant="label-sm">Warning</Label>
73
- <ColorPicker color="warning" value="#d97706" onChange={function (color) { return console.log("Warning:", color); }}/>
74
- </div>
75
- <div>
76
- <Label variant="label-sm">Success</Label>
77
- <ColorPicker color="success" value="#059669" onChange={function (color) { return console.log("Success:", color); }}/>
78
- </div>
79
- </div>); };
80
- export var Shapes = function () { return (<div className="space-y-4">
81
- <div>
82
- <Label variant="label-sm">Square</Label>
83
- <ColorPicker shape="square" value="#ec4899" onChange={function (color) { return console.log("Square:", color); }}/>
84
- </div>
85
- <div>
86
- <Label variant="label-sm">Rounded</Label>
87
- <ColorPicker shape="rounded" value="#14b8a6" onChange={function (color) { return console.log("Rounded:", color); }}/>
88
- </div>
89
- </div>); };
90
- export var AllCombinations = function () { return (<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
91
- <div>
92
- <Label variant="label-sm">Small + Filled + Danger + Rounded</Label>
93
- <ColorPicker size="sm" variant="filled" color="danger" shape="rounded" value="#ef4444" onChange={function (color) { return console.log("Combo 1:", color); }}/>
94
- </div>
95
- <div>
96
- <Label variant="label-sm">Medium + Outlined + Success + Square</Label>
97
- <ColorPicker size="md" variant="outlined" color="success" shape="square" value="#10b981" onChange={function (color) { return console.log("Combo 2:", color); }}/>
98
- </div>
99
- <div>
100
- <Label variant="label-sm">Large + Filled + Warning + Rounded</Label>
101
- <ColorPicker size="lg" variant="filled" color="warning" shape="rounded" value="#f59e0b" onChange={function (color) { return console.log("Combo 3:", color); }}/>
102
- </div>
103
- <div>
104
- <Label variant="label-sm">Small + Outlined + Default + Square</Label>
105
- <ColorPicker size="sm" variant="outlined" color="default" shape="square" value="#6366f1" onChange={function (color) { return console.log("Combo 4:", color); }}/>
106
- </div>
107
- <div>
108
- <Label variant="label-sm">Large + Outlined + Danger + Rounded</Label>
109
- <ColorPicker size="lg" variant="outlined" color="danger" shape="rounded" value="#dc2626" onChange={function (color) { return console.log("Combo 5:", color); }}/>
110
- </div>
111
- <div>
112
- <Label variant="label-sm">Medium + Filled + Success + Square</Label>
113
- <ColorPicker size="md" variant="filled" color="success" shape="square" value="#059669" onChange={function (color) { return console.log("Combo 6:", color); }}/>
114
- </div>
115
- </div>); };
116
- export var WithCustomClassName = Template.bind({});
117
- WithCustomClassName.args = {
118
- value: "#8b5cf6",
119
- className: "border-2 border-purple-500 shadow-lg",
120
- onChange: function (color) { return console.log("Custom styled:", color); },
121
- };
122
- export var Disabled = Template.bind({});
123
- Disabled.args = {
124
- value: "#6b7280",
125
- disabled: true,
126
- onChange: function (color) { return console.log("Disabled:", color); },
127
- };
128
- export var Playground = Template.bind({});
129
- Playground.args = {
130
- value: "#3b82f6",
131
- size: "md",
132
- variant: "filled",
133
- color: "default",
134
- shape: "square",
135
- onChange: function (color) {
136
- alert("onChange: ".concat(color));
137
- },
138
- };
@@ -1,5 +0,0 @@
1
- import { colors } from "../../utils/colors";
2
- export var Color = function (_a) {
3
- var _b = _a.color, color = _b === void 0 ? "black" : _b;
4
- return <div style={{ color: colors[color] || colors.black }}>{color}</div>;
5
- };
@@ -1,20 +0,0 @@
1
- import { colors } from "../../utils/colors";
2
- import { Color } from "./color";
3
- export default {
4
- title: "Components/Color",
5
- component: Color,
6
- };
7
- var Template = function (args) { return (<Color {...args}/>); };
8
- export var _Color = Template.bind({});
9
- _Color.args = {
10
- color: "black", // Default color
11
- };
12
- _Color.argTypes = {
13
- color: {
14
- control: {
15
- type: "select",
16
- labels: Object.keys(colors),
17
- },
18
- options: Object.keys(colors),
19
- },
20
- };
@@ -1,23 +0,0 @@
1
- import { render, screen } from "@testing-library/react";
2
- import { colors } from "../../utils/colors";
3
- import { Color } from "./color";
4
- describe("TextColor Component", function () {
5
- it("renders with default color (black)", function () {
6
- render(<Color />);
7
- var textElement = screen.getByText("black");
8
- expect(textElement).toBeInTheDocument();
9
- expect(textElement).toHaveStyle({ color: colors.black });
10
- });
11
- it("renders with a specified color", function () {
12
- render(<Color color="blue-500"/>);
13
- var textElement = screen.getByText("blue-500");
14
- expect(textElement).toBeInTheDocument();
15
- expect(textElement).toHaveStyle({ color: colors["blue-500"] });
16
- });
17
- it("handles invalid color gracefully", function () {
18
- render(<Color color={"invalid-color"}/>);
19
- var textElement = screen.getByText("invalid-color");
20
- expect(textElement).toBeInTheDocument();
21
- expect(textElement).toHaveStyle({ color: colors.black }); // It should default to black
22
- });
23
- });
@@ -1,198 +0,0 @@
1
- "use client";
2
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
- if (ar || !(i in from)) {
5
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
- ar[i] = from[i];
7
- }
8
- }
9
- return to.concat(ar || Array.prototype.slice.call(from));
10
- };
11
- import { useRef, useState, useEffect, useMemo } from "react";
12
- import { cn } from "../../../lib/utils";
13
- import { Badge } from "../../../components/Badge/Badge";
14
- import { renderBadge } from "./utils/renderBadge";
15
- import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "../../../components/ui/command";
16
- import { Popover, PopoverContent, PopoverTrigger, } from "../../../components/ui/popover";
17
- import { Button } from "../../../components/Button/Button/Button";
18
- import LUIcon from "../../../components/Icons/LUIcon";
19
- import { Checkbox } from "../../../components/Checkbox/checkbox";
20
- import { comboboxColor, comboboxSelectType, comboboxShapes, comboboxSizes, iconSizeMap, } from ".";
21
- import { Label } from "../../../components/Label/Label";
22
- import { Caption } from "../../../components/Typography/Caption/caption";
23
- import { empty_message } from "../../../utils/constants";
24
- import Tooltip from "../../../components/ToolTip/Tooltip";
25
- import { useResponsiveBadges } from "./utils/useResponsiveBadge";
26
- import { getLabelVariant } from "./utils/getLabelVariant";
27
- var Combobox = function (props) {
28
- var _a = props.size, size = _a === void 0 ? "md" : _a, _b = props.placeholder, placeholder = _b === void 0 ? "Select Options" : _b, _c = props.shape, shape = _c === void 0 ? "rectangular" : _c, _d = props.variant, variant = _d === void 0 ? "fill" : _d, _e = props.color, color = _e === void 0 ? "default" : _e, options = props.options, _f = props.isSearch, isSearch = _f === void 0 ? false : _f, _g = props.isMulti, isMulti = _g === void 0 ? false : _g, onSelect = props.onSelect, renderOption = props.renderOption, _h = props.disabled, disabled = _h === void 0 ? false : _h, defaultValue = props.defaultValue;
29
- var _j = useState(false), open = _j[0], setOpen = _j[1];
30
- var _k = useState(""), singleValue = _k[0], setSingleValue = _k[1];
31
- var _l = useState([]), multiValue = _l[0], setMultiValue = _l[1];
32
- var buttonRef = useRef(null);
33
- var _m = useState(), popoverWidth = _m[0], setPopoverWidth = _m[1];
34
- var maxVisibleBadges = useResponsiveBadges();
35
- useEffect(function () {
36
- if (isMulti && Array.isArray(defaultValue)) {
37
- setMultiValue(defaultValue);
38
- }
39
- else {
40
- setSingleValue(defaultValue);
41
- }
42
- }, [defaultValue, isMulti]);
43
- useEffect(function () {
44
- if (open && buttonRef.current) {
45
- setPopoverWidth("".concat(buttonRef.current.offsetWidth, "px"));
46
- }
47
- }, [open]);
48
- var handleSelect = function (currentValue) {
49
- if (isMulti) {
50
- setMultiValue(function (prev) {
51
- var newValue = prev.includes(currentValue)
52
- ? prev.filter(function (v) { return v !== currentValue; })
53
- : __spreadArray(__spreadArray([], prev, true), [currentValue], false);
54
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(newValue);
55
- return newValue;
56
- });
57
- }
58
- else {
59
- var newValue = currentValue === singleValue ? "" : currentValue;
60
- setSingleValue(newValue);
61
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(newValue);
62
- setOpen(false);
63
- }
64
- };
65
- var handleSelectAll = function () {
66
- if (!options)
67
- return;
68
- var allValues = options.map(function (option) {
69
- return typeof option === "string" ? option : option.value;
70
- });
71
- var newValues = multiValue.length === allValues.length ? [] : allValues;
72
- setMultiValue(newValues);
73
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(newValues);
74
- };
75
- var getDisplay = useMemo(function () {
76
- var handleRemove = function (value) {
77
- if (isMulti) {
78
- var newValues = multiValue.filter(function (val) { return val !== value; });
79
- setMultiValue(newValues);
80
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(newValues);
81
- }
82
- else {
83
- setSingleValue("");
84
- onSelect === null || onSelect === void 0 ? void 0 : onSelect("");
85
- }
86
- };
87
- if (!options)
88
- return placeholder;
89
- if (isMulti) {
90
- if (!multiValue.length)
91
- return placeholder;
92
- var selectedOptions = options.filter(function (option) {
93
- return typeof option === "string"
94
- ? multiValue.includes(option)
95
- : multiValue.includes(option.value);
96
- });
97
- if (selectedOptions.length <= maxVisibleBadges) {
98
- return (<div className="flex flex-wrap gap-1">
99
- {selectedOptions.map(function (option) {
100
- return renderBadge(typeof option === "string"
101
- ? { key: option, value: option }
102
- : option, handleRemove);
103
- })}
104
- </div>);
105
- }
106
- var remainingCount = selectedOptions.length - maxVisibleBadges;
107
- var remainingOptions = selectedOptions.slice(maxVisibleBadges);
108
- return (<div className="flex flex-wrap gap-1">
109
- {selectedOptions
110
- .slice(0, maxVisibleBadges)
111
- .map(function (option) {
112
- return renderBadge(typeof option === "string"
113
- ? { key: option, value: option }
114
- : option, handleRemove);
115
- })}
116
- {/* TODO: Update Tooltip design */}
117
- <Tooltip title={remainingOptions
118
- .map(function (option) {
119
- return typeof option === "string" ? option : option.key;
120
- })
121
- .join(", ")}>
122
- <Badge color="light-blue" className="cursor-help">
123
- +{remainingCount}
124
- </Badge>
125
- </Tooltip>
126
- </div>);
127
- }
128
- else {
129
- if (!singleValue)
130
- return placeholder;
131
- var isMatch = function (option) {
132
- return typeof option === "string"
133
- ? option === singleValue
134
- : option.value === singleValue;
135
- };
136
- var found = options.find(isMatch);
137
- return found
138
- ? renderBadge(typeof found === "string" ? { key: found, value: found } : found, handleRemove)
139
- : placeholder;
140
- }
141
- }, [
142
- options,
143
- placeholder,
144
- isMulti,
145
- multiValue,
146
- singleValue,
147
- maxVisibleBadges,
148
- onSelect,
149
- setMultiValue,
150
- setSingleValue,
151
- ]);
152
- var normalizedOptions = useMemo(function () { return (Array.isArray(options) ? options : []); }, [options]);
153
- return (<Popover open={open} onOpenChange={setOpen}>
154
- <PopoverTrigger asChild>
155
- <Button ref={buttonRef} variant="outline" role="combobox" color="light-gray" aria-expanded={open} className={cn("w-full justify-between !py-3 !px-4 font-normal !leading-normal hover:!bg-transparent active:!bg-transparent", comboboxSizes[size], comboboxSelectType[variant], comboboxColor[variant][color], open && comboboxColor[variant]["blue"], disabled && [
156
- variant === "fill" && "bg-gray-100",
157
- "border border-gray-300 cursor-not-allowed pointer-events-none",
158
- ], "min-h-[42px]")} shape={comboboxShapes[shape]} disabled={disabled} tabIndex={disabled ? -1 : 0}>
159
- <div className="flex-grow flex items-center">{getDisplay}</div>
160
- <LUIcon icon="angle-down" size={iconSizeMap[size]} color="light-gray"/>
161
- </Button>
162
- </PopoverTrigger>
163
- <PopoverContent className="p-0" style={popoverWidth ? { width: popoverWidth } : {}}>
164
- <Command>
165
- {isSearch && (<CommandInput placeholder="Search" className={comboboxSizes[size]}/>)}
166
- {isMulti && normalizedOptions.length > 0 && (<div className="flex flex-col gap-1 !px-4 !py-3 rounded-sm bg-gray-50 text-gray-800">
167
- <div className="flex items-center gap-2">
168
- <Checkbox id="select-all" checked={multiValue.length === normalizedOptions.length} onCheckedChange={handleSelectAll} size={size}/>
169
- <Label variant={getLabelVariant(size)}>Select All</Label>
170
- </div>
171
- <Caption variant="sm" className="text-gray-500">
172
- Selected ({multiValue.length})
173
- </Caption>
174
- </div>)}
175
- <CommandList>
176
- <CommandEmpty>{empty_message}</CommandEmpty>
177
- <CommandGroup>
178
- {normalizedOptions.map(function (option) {
179
- var normalizedOption = typeof option === "string"
180
- ? { key: option, value: option }
181
- : option;
182
- var selected = isMulti
183
- ? multiValue.includes(normalizedOption.value)
184
- : singleValue === normalizedOption.value;
185
- return (<CommandItem key={normalizedOption.value} value={normalizedOption.value} onSelect={function () { return handleSelect(normalizedOption.value); }} size={size} className={cn(selected &&
186
- "bg-blue-50 text-blue-600 hover:text-blue-600")}>
187
- {renderOption
188
- ? renderOption(normalizedOption)
189
- : normalizedOption.key}
190
- </CommandItem>);
191
- })}
192
- </CommandGroup>
193
- </CommandList>
194
- </Command>
195
- </PopoverContent>
196
- </Popover>);
197
- };
198
- export default Combobox;