linkedunion-design-kit 1.11.6 → 1.11.8

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 (258) hide show
  1. package/dist/app/layout.d.ts +1 -1
  2. package/dist/app/{layout.js → layout.jsx} +3 -2
  3. package/dist/app/page.d.ts +1 -1
  4. package/dist/app/page.jsx +5 -0
  5. package/dist/index.d.ts +3 -0
  6. package/dist/index.js +3 -0
  7. package/dist/src/components/Accordion/Accordion.stories.jsx +33 -0
  8. package/dist/src/components/Accordion/accordion.d.ts +4 -4
  9. package/dist/src/components/Accordion/{accordion.js → accordion.jsx} +11 -16
  10. package/dist/src/components/Alerts/Alert/alert.d.ts +7 -7
  11. package/dist/src/components/Alerts/Alert/{alert.js → alert.jsx} +21 -25
  12. package/dist/src/components/Alerts/Alert/alert.stories.d.ts +8 -8
  13. package/dist/src/components/Alerts/Alert/alert.stories.jsx +344 -0
  14. package/dist/src/components/Alerts/AlertDialog/alert-dialog.d.ts +11 -11
  15. package/dist/src/components/Alerts/AlertDialog/{alert-dialog.js → alert-dialog.jsx} +26 -24
  16. package/dist/src/components/Alerts/AlertDialog/alert-dialog.stories.d.ts +10 -10
  17. package/dist/src/components/Alerts/AlertDialog/alert-dialog.stories.jsx +552 -0
  18. package/dist/src/components/AppIcons/AndroidIcon.jsx +24 -0
  19. package/dist/src/components/AppIcons/{AppIcon.js → AppIcon.jsx} +4 -15
  20. package/dist/src/components/AppIcons/AppleIcon.jsx +31 -0
  21. package/dist/src/components/AppIcons/PlayStoreIcon.jsx +29 -0
  22. package/dist/src/components/Avatar/Avatar/{Avatar.js → Avatar.jsx} +13 -18
  23. package/dist/src/components/Avatar/Avatar/Avatar.stories.d.ts +7 -7
  24. package/dist/src/components/Avatar/Avatar/Avatar.stories.jsx +95 -0
  25. package/dist/src/components/Avatar/Avatar/{Avatar.test.js → Avatar.test.jsx} +1 -2
  26. package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.d.ts +1 -1
  27. package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.jsx +17 -0
  28. package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.stories.jsx +32 -0
  29. package/dist/src/components/Avatar/StatusIndicator/StatusIndicator.jsx +20 -0
  30. package/dist/src/components/Avatar/StatusIndicator/StatusIndicator.stories.d.ts +2 -2
  31. package/dist/src/components/Avatar/StatusIndicator/{StatusIndicator.stories.js → StatusIndicator.stories.jsx} +12 -3
  32. package/dist/src/components/Badge/Badge.d.ts +1 -1
  33. package/dist/src/components/Badge/{Badge.js → Badge.jsx} +8 -13
  34. package/dist/src/components/Badge/Badge.stories.d.ts +10 -10
  35. package/dist/src/components/Badge/Badge.stories.jsx +201 -0
  36. package/dist/src/components/Button/Button/Button.d.ts +3 -2
  37. package/dist/src/components/Button/Button/{Button.js → Button.jsx} +24 -8
  38. package/dist/src/components/Button/Button/Button.stories.d.ts +5 -3
  39. package/dist/src/components/Button/Button/{Button.stories.js → Button.stories.jsx} +1 -13
  40. package/dist/src/components/Button/Button/Button.test.jsx +73 -0
  41. package/dist/src/components/Button/IconButton/IconButton.d.ts +1 -1
  42. package/dist/src/components/Button/IconButton/{IconButton.js → IconButton.jsx} +4 -13
  43. package/dist/src/components/Button/IconButton/IconButton.stories.d.ts +1 -1
  44. package/dist/src/components/Button/IconButton/{IconButton.stories.js → IconButton.stories.jsx} +1 -13
  45. package/dist/src/components/Button/IconButton/{IconButton.test.js → IconButton.test.jsx} +5 -6
  46. package/dist/src/components/Button/index.d.ts +1 -0
  47. package/dist/src/components/Button/index.js +3 -2
  48. package/dist/src/components/Card/MultipleNews/MultiNews.d.ts +1 -1
  49. package/dist/src/components/Card/MultipleNews/MultiNews.jsx +71 -0
  50. package/dist/src/components/Card/MultipleNews/{MultiNews.stories.js → MultiNews.stories.jsx} +1 -2
  51. package/dist/src/components/Card/PostByCategory/PostByCategory.d.ts +1 -1
  52. package/dist/src/components/Card/PostByCategory/PostByCategory.jsx +57 -0
  53. package/dist/src/components/Card/PostByCategory/{PostByCategory.stories.js → PostByCategory.stories.jsx} +1 -2
  54. package/dist/src/components/Card/SinglePost/SinglePost.d.ts +1 -1
  55. package/dist/src/components/Card/SinglePost/SinglePost.jsx +26 -0
  56. package/dist/src/components/Card/card.d.ts +2 -1
  57. package/dist/src/components/Card/{card.js → card.jsx} +2 -13
  58. package/dist/src/components/Card/contactProfile/ContactProfile.d.ts +1 -1
  59. package/dist/src/components/Card/contactProfile/ContactProfile.jsx +76 -0
  60. package/dist/src/components/Card/contactProfile/{ContactProfile.stories.js → ContactProfile.stories.jsx} +1 -2
  61. package/dist/src/components/Card/photoAlbum/PhotoAlbum.d.ts +1 -1
  62. package/dist/src/components/Card/photoAlbum/PhotoAlbum.jsx +41 -0
  63. package/dist/src/components/Card/photoAlbum/{PhotoAlbum.stories.js → PhotoAlbum.stories.jsx} +1 -13
  64. package/dist/src/components/Card/photoGallery/PhotoGallery.d.ts +1 -1
  65. package/dist/src/components/Card/photoGallery/PhotoGallery.jsx +17 -0
  66. package/dist/src/components/Card/photoGallery/{PhotoGallery.stories.js → PhotoGallery.stories.jsx} +1 -13
  67. package/dist/src/components/Checkbox/checkbox.d.ts +1 -1
  68. package/dist/src/components/Checkbox/{checkbox.js → checkbox.jsx} +6 -13
  69. package/dist/src/components/Checkbox/checkbox.stories.jsx +113 -0
  70. package/dist/src/components/ColorPicker/ColorPicker.d.ts +1 -1
  71. package/dist/src/components/ColorPicker/{ColorPicker.js → ColorPicker.jsx} +6 -13
  72. package/dist/src/components/ColorPicker/ColorPicker.stories.d.ts +5 -5
  73. package/dist/src/components/ColorPicker/ColorPicker.stories.jsx +138 -0
  74. package/dist/src/components/Colors/color.d.ts +1 -1
  75. package/dist/src/components/Colors/{color.js → color.jsx} +1 -2
  76. package/dist/src/components/Colors/color.stories.jsx +20 -0
  77. package/dist/src/components/Colors/{color.test.js → color.test.jsx} +3 -4
  78. package/dist/src/components/DatePicker/DatePicker.d.ts +1 -1
  79. package/dist/src/components/DatePicker/DatePicker.jsx +67 -0
  80. package/dist/src/components/DatePicker/DatePicker.stories.d.ts +9 -9
  81. package/dist/src/components/DatePicker/DatePicker.stories.jsx +291 -0
  82. package/dist/src/components/DateRangePicker/DateRangePicker.d.ts +1 -1
  83. package/dist/src/components/DateRangePicker/{DateRangePicker.js → DateRangePicker.jsx} +92 -44
  84. package/dist/src/components/DateRangePicker/DateRangePicker.stories.d.ts +19 -19
  85. package/dist/src/components/DateRangePicker/DateRangePicker.stories.jsx +582 -0
  86. package/dist/src/components/Dropdown/Combobox/Combobox.d.ts +1 -1
  87. package/dist/src/components/Dropdown/Combobox/{Combobox.js → Combobox.jsx} +67 -29
  88. package/dist/src/components/Dropdown/Combobox/Combobox.stories.d.ts +8 -8
  89. package/dist/src/components/Dropdown/Combobox/Combobox.stories.jsx +289 -0
  90. package/dist/src/components/Dropdown/Combobox/dialog.d.ts +10 -10
  91. package/dist/src/components/Dropdown/Combobox/dialog.jsx +66 -0
  92. package/dist/src/components/Dropdown/Combobox/utils/renderBadge.jsx +7 -0
  93. package/dist/src/components/Dropdown/DropdownMenu/DropdownMenu.d.ts +7 -3
  94. package/dist/src/components/Dropdown/DropdownMenu/{DropdownMenu.js → DropdownMenu.jsx} +29 -22
  95. package/dist/src/components/Dropdown/DropdownMenu/DropdownMenu.stories.d.ts +19 -12
  96. package/dist/src/components/Dropdown/DropdownMenu/DropdownMenu.stories.jsx +552 -0
  97. package/dist/src/components/Dropdown/DropdownMenu/SelectAllSection.jsx +19 -0
  98. package/dist/src/components/Dropdown/DropdownMenu/index.d.ts +5 -0
  99. package/dist/src/components/Dropdown/DropdownMenu/index.js +5 -0
  100. package/dist/src/components/Dropdown/Select.stories.d.ts +7 -6
  101. package/dist/src/components/Dropdown/{Select.stories.js → Select.stories.jsx} +71 -8
  102. package/dist/src/components/Dropdown/select.d.ts +10 -10
  103. package/dist/src/components/Dropdown/select.jsx +94 -0
  104. package/dist/src/components/Icons/LUIcon.d.ts +1 -1
  105. package/dist/src/components/Icons/{LUIcon.js → LUIcon.jsx} +10 -13
  106. package/dist/src/components/Icons/stories/IconDropdown.jsx +67 -0
  107. package/dist/src/components/Icons/stories/IconGallery.jsx +77 -0
  108. package/dist/src/components/Icons/stories/InteractiveIconSelector.jsx +86 -0
  109. package/dist/src/components/Icons/stories/LUIcon.stories.d.ts +5 -5
  110. package/dist/src/components/Icons/stories/{LUIcon.stories.js → LUIcon.stories.jsx} +23 -8
  111. package/dist/src/components/ImageUploader/imageUploader.d.ts +1 -1
  112. package/dist/src/components/ImageUploader/{imageUploader.js → imageUploader.jsx} +28 -13
  113. package/dist/src/components/Images/LuImage.d.ts +1 -1
  114. package/dist/src/components/Images/{LuImage.js → LuImage.jsx} +1 -13
  115. package/dist/src/components/Images/{LuImage.stories.js → LuImage.stories.jsx} +1 -13
  116. package/dist/src/components/Images/{LuImage.test.js → LuImage.test.jsx} +6 -18
  117. package/dist/src/components/Input/Input.stories.d.ts +9 -8
  118. package/dist/src/components/Input/Input.stories.jsx +250 -0
  119. package/dist/src/components/Input/input.d.ts +1 -1
  120. package/dist/src/components/Input/{input.js → input.jsx} +10 -13
  121. package/dist/src/components/Label/Label.d.ts +1 -1
  122. package/dist/src/components/Label/{Label.js → Label.jsx} +2 -13
  123. package/dist/src/components/Label/{Label.stories.js → Label.stories.jsx} +1 -13
  124. package/dist/src/components/Modal/Modal.d.ts +3 -3
  125. package/dist/src/components/Modal/{Modal.js → Modal.jsx} +20 -19
  126. package/dist/src/components/Modal/Modal.stories.d.ts +15 -15
  127. package/dist/src/components/Modal/Modal.stories.jsx +487 -0
  128. package/dist/src/components/Pagination/pagination.d.ts +5 -5
  129. package/dist/src/components/Pagination/{pagination.js → pagination.jsx} +18 -21
  130. package/dist/src/components/Pagination/pagination.stories.d.ts +6 -6
  131. package/dist/src/components/Pagination/pagination.stories.jsx +301 -0
  132. package/dist/src/components/RadioGroup/{RadioGroup.stories.js → RadioGroup.stories.jsx} +52 -22
  133. package/dist/src/components/RadioGroup/radio-group.d.ts +1 -1
  134. package/dist/src/components/RadioGroup/{radio-group.js → radio-group.jsx} +6 -14
  135. package/dist/src/components/Separator/Separator.stories.d.ts +15 -0
  136. package/dist/src/components/Separator/Separator.stories.jsx +94 -0
  137. package/dist/src/components/Separator/index.d.ts +1 -0
  138. package/dist/src/components/Separator/index.js +1 -0
  139. package/dist/src/components/Separator/separator.d.ts +4 -0
  140. package/dist/src/components/Separator/separator.jsx +20 -0
  141. package/dist/src/components/Sheet/index.d.ts +1 -0
  142. package/dist/src/components/Sheet/index.js +1 -0
  143. package/dist/src/components/Sheet/sheet.d.ts +25 -0
  144. package/dist/src/components/Sheet/sheet.jsx +73 -0
  145. package/dist/src/components/Sheet/sheet.stories.d.ts +4 -0
  146. package/dist/src/components/Sheet/sheet.stories.jsx +34 -0
  147. package/dist/src/components/Skeleton/skeleton.d.ts +14 -14
  148. package/dist/src/components/Skeleton/{skeleton.js → skeleton.jsx} +23 -27
  149. package/dist/src/components/Skeleton/skeleton.stories.d.ts +14 -14
  150. package/dist/src/components/Skeleton/skeleton.stories.jsx +734 -0
  151. package/dist/src/components/Slider/slider.d.ts +1 -1
  152. package/dist/src/components/Slider/slider.jsx +31 -0
  153. package/dist/src/components/SweetAlert/SweetAlert.d.ts +9 -9
  154. package/dist/src/components/SweetAlert/{SweetAlert.js → SweetAlert.jsx} +18 -21
  155. package/dist/src/components/SweetAlert/SweetAlert.stories.d.ts +7 -7
  156. package/dist/src/components/SweetAlert/{SweetAlert.stories.js → SweetAlert.stories.jsx} +215 -15
  157. package/dist/src/components/Switch/{Switch.stories.js → Switch.stories.jsx} +1 -13
  158. package/dist/src/components/Switch/switch.d.ts +1 -1
  159. package/dist/src/components/Switch/{switch.js → switch.jsx} +4 -13
  160. package/dist/src/components/Table/{Table.js → Table.jsx} +111 -58
  161. package/dist/src/components/Table/Table.stories.d.ts +13 -13
  162. package/dist/src/components/Table/{Table.stories.js → Table.stories.jsx} +299 -45
  163. package/dist/src/components/Table/{Table.test.js → Table.test.jsx} +39 -7
  164. package/dist/src/components/Tabs/{Tabs.stories.js → Tabs.stories.jsx} +10 -3
  165. package/dist/src/components/Tabs/tabs.d.ts +4 -4
  166. package/dist/src/components/Tabs/tabs.jsx +32 -0
  167. package/dist/src/components/TimePicker/TimePicker.d.ts +1 -1
  168. package/dist/src/components/TimePicker/{TimePicker.js → TimePicker.jsx} +54 -30
  169. package/dist/src/components/TimePicker/TimePicker.stories.d.ts +10 -10
  170. package/dist/src/components/TimePicker/TimePicker.stories.jsx +298 -0
  171. package/dist/src/components/Title/Title.d.ts +1 -1
  172. package/dist/src/components/Title/{Title.js → Title.jsx} +2 -2
  173. package/dist/src/components/Title/{Title.stories.js → Title.stories.jsx} +1 -13
  174. package/dist/src/components/Title/{Title.test.js → Title.test.jsx} +4 -5
  175. package/dist/src/components/ToolTip/Tooltip.d.ts +1 -1
  176. package/dist/src/components/ToolTip/Tooltip.jsx +18 -0
  177. package/dist/src/components/ToolTip/{Tooltip.stories.js → Tooltip.stories.jsx} +2 -14
  178. package/dist/src/components/Typography/Body/{Body.stories.js → Body.stories.jsx} +1 -13
  179. package/dist/src/components/Typography/Body/body.d.ts +1 -1
  180. package/dist/src/components/Typography/Body/{body.js → body.jsx} +4 -13
  181. package/dist/src/components/Typography/Caption/{Caption.stories.js → Caption.stories.jsx} +1 -13
  182. package/dist/src/components/Typography/Caption/caption.d.ts +1 -1
  183. package/dist/src/components/Typography/Caption/{caption.js → caption.jsx} +4 -13
  184. package/dist/src/components/Typography/Display/{Display.stories.js → Display.stories.jsx} +1 -13
  185. package/dist/src/components/Typography/Display/display.d.ts +1 -1
  186. package/dist/src/components/Typography/Display/{display.js → display.jsx} +4 -13
  187. package/dist/src/components/Typography/Heading/Heading.stories.d.ts +6 -6
  188. package/dist/src/components/Typography/Heading/Heading.stories.jsx +85 -0
  189. package/dist/src/components/Typography/Heading/{heading.js → heading.jsx} +5 -14
  190. package/dist/src/components/VerticalTabs/{VerticalTabs.js → VerticalTabs.jsx} +9 -17
  191. package/dist/src/components/VerticalTabs/VerticalTabs.stories.jsx +154 -0
  192. package/dist/src/components/VerticalTabs/VerticalTabs.test.jsx +97 -0
  193. package/dist/src/components/ui/calendar.d.ts +2 -2
  194. package/dist/src/components/ui/{calendar.js → calendar.jsx} +36 -22
  195. package/dist/src/components/ui/command.d.ts +9 -9
  196. package/dist/src/components/ui/command.jsx +67 -0
  197. package/dist/src/components/ui/popover.d.ts +4 -4
  198. package/dist/src/components/ui/popover.jsx +33 -0
  199. package/dist/src/components/ui/tooltip.d.ts +4 -4
  200. package/dist/src/components/ui/tooltip.jsx +38 -0
  201. package/dist/src/components/ui/typography.d.ts +1 -1
  202. package/dist/src/components/ui/{typography.js → typography.jsx} +4 -13
  203. package/dist/styles/global.css +107 -5
  204. package/package.json +4 -3
  205. package/dist/app/page.js +0 -4
  206. package/dist/src/components/Accordion/Accordion.stories.js +0 -32
  207. package/dist/src/components/Alerts/Alert/alert.stories.js +0 -166
  208. package/dist/src/components/Alerts/AlertDialog/alert-dialog.stories.js +0 -213
  209. package/dist/src/components/AppIcons/AndroidIcon.js +0 -28
  210. package/dist/src/components/AppIcons/AppleIcon.js +0 -28
  211. package/dist/src/components/AppIcons/PlayStoreIcon.js +0 -28
  212. package/dist/src/components/Avatar/Avatar/Avatar.stories.js +0 -69
  213. package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.js +0 -8
  214. package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.stories.js +0 -14
  215. package/dist/src/components/Avatar/StatusIndicator/StatusIndicator.js +0 -18
  216. package/dist/src/components/Badge/Badge.stories.js +0 -145
  217. package/dist/src/components/Button/Button/Button.test.js +0 -10
  218. package/dist/src/components/Card/MultipleNews/MultiNews.js +0 -46
  219. package/dist/src/components/Card/PostByCategory/PostByCategory.js +0 -37
  220. package/dist/src/components/Card/SinglePost/SinglePost.js +0 -10
  221. package/dist/src/components/Card/contactProfile/ContactProfile.js +0 -39
  222. package/dist/src/components/Card/photoAlbum/PhotoAlbum.js +0 -16
  223. package/dist/src/components/Card/photoGallery/PhotoGallery.js +0 -8
  224. package/dist/src/components/Checkbox/checkbox.stories.js +0 -78
  225. package/dist/src/components/ColorPicker/ColorPicker.stories.js +0 -77
  226. package/dist/src/components/Colors/color.stories.js +0 -32
  227. package/dist/src/components/DatePicker/DatePicker.js +0 -64
  228. package/dist/src/components/DatePicker/DatePicker.stories.js +0 -171
  229. package/dist/src/components/DateRangePicker/DateRangePicker.stories.js +0 -318
  230. package/dist/src/components/Dropdown/Combobox/Combobox.stories.js +0 -225
  231. package/dist/src/components/Dropdown/Combobox/dialog.js +0 -68
  232. package/dist/src/components/Dropdown/Combobox/utils/renderBadge.js +0 -5
  233. package/dist/src/components/Dropdown/DropdownMenu/DropdownMenu.stories.js +0 -253
  234. package/dist/src/components/Dropdown/DropdownMenu/SelectAllSection.js +0 -9
  235. package/dist/src/components/Dropdown/select.js +0 -87
  236. package/dist/src/components/Icons/stories/IconDropdown.js +0 -38
  237. package/dist/src/components/Icons/stories/IconGallery.js +0 -31
  238. package/dist/src/components/Icons/stories/InteractiveIconSelector.js +0 -26
  239. package/dist/src/components/Input/Input.stories.js +0 -133
  240. package/dist/src/components/Modal/Modal.stories.js +0 -115
  241. package/dist/src/components/Pagination/pagination.stories.js +0 -168
  242. package/dist/src/components/Skeleton/skeleton.stories.js +0 -414
  243. package/dist/src/components/Slider/slider.js +0 -38
  244. package/dist/src/components/Tabs/tabs.js +0 -43
  245. package/dist/src/components/TimePicker/TimePicker.stories.js +0 -176
  246. package/dist/src/components/ToolTip/Tooltip.js +0 -8
  247. package/dist/src/components/Typography/Heading/Heading.stories.js +0 -67
  248. package/dist/src/components/VerticalTabs/VerticalTabs.stories.js +0 -100
  249. package/dist/src/components/VerticalTabs/VerticalTabs.test.js +0 -48
  250. package/dist/src/components/ui/command.js +0 -65
  251. package/dist/src/components/ui/popover.js +0 -42
  252. package/dist/src/components/ui/tooltip.js +0 -42
  253. /package/dist/src/components/AppIcons/{AppIcon.stories.js → AppIcon.stories.jsx} +0 -0
  254. /package/dist/src/components/Card/SinglePost/{SinglePost.stories.js → SinglePost.stories.jsx} +0 -0
  255. /package/dist/src/components/Icons/{LUIcon.test.js → LUIcon.test.jsx} +0 -0
  256. /package/dist/src/components/ImageUploader/{ImageUploader.stories.js → ImageUploader.stories.jsx} +0 -0
  257. /package/dist/src/components/Slider/{Slider.stories.js → Slider.stories.jsx} +0 -0
  258. /package/dist/src/components/ui/{collapsible.js → collapsible.jsx} +0 -0
@@ -1,253 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
- if (ar || !(i in from)) {
15
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
- ar[i] = from[i];
17
- }
18
- }
19
- return to.concat(ar || Array.prototype.slice.call(from));
20
- };
21
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
- import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuCheckboxItem, DropdownMenuLabel, DropdownMenuSubTrigger, DropdownMenuSub, DropdownMenuSubContent, } from "./DropdownMenu";
23
- import { Button } from "../../../components/Button/Button/Button";
24
- import LUIcon from "../../../components/Icons/LUIcon";
25
- import { useState } from "react";
26
- import { dropdownMenuSize } from ".";
27
- import { IconButton } from "../../../components/Button/IconButton/IconButton";
28
- import { Checkbox } from "../../../components/Checkbox/checkbox";
29
- import { Label } from "../../../components/Label/Label";
30
- import { Caption } from "../../../components/Typography/Caption/caption";
31
- import { Input } from "../../../components/Input";
32
- import { SelectAllSection } from "./SelectAllSection";
33
- import { Avatar, AvatarFallback, AvatarImage, } from "../../../components/Avatar/Avatar/Avatar";
34
- export default {
35
- title: "Components/Dropdown/DropdownMenu",
36
- component: DropdownMenu,
37
- tags: ["autodocs"],
38
- argTypes: {
39
- size: {
40
- control: { type: "select" },
41
- options: Object.keys(dropdownMenuSize),
42
- description: "Dropdown menu size",
43
- table: {
44
- type: { summary: "string" },
45
- defaultValue: { summary: "md" },
46
- },
47
- },
48
- disabled: {
49
- control: { type: "boolean" },
50
- description: "Disable the dropdown menu item",
51
- table: {
52
- type: { summary: "boolean" },
53
- defaultValue: { summary: false },
54
- },
55
- },
56
- align: {
57
- control: { type: "select" },
58
- options: ["start", "center", "end"],
59
- description: "Alignment of the dropdown menu",
60
- table: {
61
- type: { summary: "string" },
62
- defaultValue: { summary: "start" },
63
- },
64
- },
65
- },
66
- };
67
- var Template = function (args) {
68
- var menuItems = [
69
- { label: "Option 1" },
70
- { label: "Option 2" },
71
- { label: "Option 3" },
72
- ];
73
- return (_jsxs(DropdownMenu, __assign({}, args, { children: [_jsx(DropdownMenuTrigger, { children: _jsx(Button, { children: "Open Menu" }) }), _jsx(DropdownMenuContent, { children: menuItems.map(function (item, index) { return (_jsx(DropdownMenuItem, { onSelect: function () { return alert("".concat(item.label, " selected")); }, children: item.label }, index)); }) })] })));
74
- };
75
- export var Default = Template.bind({});
76
- export var Sizes = function () {
77
- var menuItems = [
78
- {
79
- label: "Home",
80
- icon: "chart-simple",
81
- },
82
- {
83
- label: "Profile",
84
- icon: "chart-pie",
85
- },
86
- {
87
- label: "Settings",
88
- icon: "square-poll-horizontal",
89
- },
90
- {
91
- label: "Logout",
92
- icon: "square-poll-vertical",
93
- },
94
- ];
95
- return (_jsxs("div", { className: "flex flex-row space-x-2", children: [_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { children: _jsx(Button, { children: "Small Menu" }) }), _jsx(DropdownMenuContent, { size: "sm", children: menuItems.map(function (item, index) { return (_jsxs(DropdownMenuItem, { onSelect: function () { return alert("".concat(item.label, " selected")); }, children: [_jsx(LUIcon, { icon: item.icon, size: "sm" }), " ", item.label] }, index)); }) })] }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { children: _jsx(Button, { children: "Medium Menu" }) }), _jsx(DropdownMenuContent, { size: "md", children: menuItems.map(function (item, index) { return (_jsxs(DropdownMenuItem, { onSelect: function () { return alert("".concat(item.label, " selected")); }, children: [_jsx(LUIcon, { icon: item.icon, size: "md" }), " ", item.label] }, index)); }) })] }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { children: _jsx(Button, { children: "Large Menu" }) }), _jsx(DropdownMenuContent, { size: "lg", children: menuItems.map(function (item, index) { return (_jsxs(DropdownMenuItem, { onSelect: function () { return alert("".concat(item.label, " selected")); }, children: [_jsx(LUIcon, { icon: item.icon, size: "lg" }), " ", item.label] }, index)); }) })] })] }));
96
- };
97
- export var WithIcons = function () {
98
- var menuItems = [
99
- {
100
- label: "Home",
101
- icon: "chart-simple",
102
- },
103
- {
104
- label: "Profile",
105
- icon: "chart-pie",
106
- },
107
- {
108
- label: "Settings",
109
- icon: "square-poll-horizontal",
110
- },
111
- {
112
- label: "Logout",
113
- icon: "square-poll-vertical",
114
- },
115
- ];
116
- return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { children: _jsx(Button, { children: "Menu with Icons" }) }), _jsx(DropdownMenuContent, { children: menuItems.map(function (item, index) { return (_jsxs(DropdownMenuItem, { onSelect: function () { return alert("".concat(item.label, " selected")); }, children: [_jsx(LUIcon, { icon: item.icon, size: "sm" }), " ", item.label] }, index)); }) })] }));
117
- };
118
- export var DisabledItems = function () { return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { children: _jsx(Button, { children: "Menu with Disabled Items" }) }), _jsxs(DropdownMenuContent, { children: [_jsx(DropdownMenuItem, { onSelect: function () { return alert("Enabled selected"); }, children: "Enabled" }), _jsx(DropdownMenuItem, { disabled: true, children: "Disabled" }), _jsx(DropdownMenuSeparator, {}), _jsx(DropdownMenuItem, { onSelect: function () { return alert("Another enabled selected"); }, children: "Another Enabled" })] })] })); };
119
- export var NestedMenu = function () {
120
- var menuItems = [
121
- { label: "Open conversation details", icon: "eye", items: [] },
122
- { label: "View full profile", icon: "user", items: [] },
123
- { label: "Start conversation", icon: "address-book", items: [] },
124
- {
125
- label: "Copy",
126
- icon: "copy",
127
- items: [
128
- { label: "Copy name", icon: "copy" },
129
- { label: "Copy email", icon: "copy" },
130
- { label: "Copy link", icon: "copy" },
131
- ],
132
- },
133
- { label: "Search in conversation", icon: "magnifying-glass" },
134
- { label: "Open in new window", icon: "arrow-right-to-bracket" },
135
- ];
136
- return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(IconButton, { variant: "outline", icon: "plus" }) }), _jsx(DropdownMenuContent, { className: "mt-2", children: menuItems.map(function (item, index) {
137
- if (item.items && item.items.length > 0) {
138
- return (_jsxs(DropdownMenuSub, { children: [_jsxs(DropdownMenuSubTrigger, { children: [_jsx(LUIcon, { icon: item.icon }), " ", item.label] }), _jsx(DropdownMenuSubContent, { children: item.items.map(function (subItem, subIndex) { return (_jsxs(DropdownMenuItem, { children: [_jsx(LUIcon, { icon: subItem.icon }), " ", subItem.label] }, subIndex)); }) })] }, index));
139
- }
140
- return (_jsxs(DropdownMenuItem, { children: [_jsx(LUIcon, { icon: item.icon }), " ", item.label] }, index));
141
- }) })] }));
142
- };
143
- export var DropdownMenuWithSelectAll = function () {
144
- var tags = ["Sport", "Music", "Food", "Travel", "Tech", "Science", "Art"];
145
- var _a = useState([]), selectedTags = _a[0], setSelectedTags = _a[1];
146
- var handleTagChange = function (tag, checked) {
147
- if (checked) {
148
- setSelectedTags(__spreadArray(__spreadArray([], selectedTags, true), [tag], false));
149
- }
150
- else {
151
- setSelectedTags(selectedTags.filter(function (t) { return t !== tag; }));
152
- }
153
- };
154
- var handleSelectAll = function () {
155
- var allSelected = selectedTags.length === tags.length;
156
- var next = allSelected ? [] : __spreadArray([], tags, true);
157
- setSelectedTags(next);
158
- };
159
- return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Select Tags" }) }), _jsxs(DropdownMenuContent, { className: "w-50", size: "lg", children: [_jsx(DropdownMenuLabel, { children: "Select Tags" }), _jsxs("div", { className: "flex flex-col gap-1 rounded-sm bg-gray-50 text-gray-800 py-3 px-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Checkbox, { id: "dm-select-all", checked: selectedTags.length === tags.length, onCheckedChange: function () { return handleSelectAll(); }, onClick: function (e) { return e.stopPropagation(); }, size: "md" }), _jsx(Label, { htmlFor: "dm-select-all", children: "Select All" })] }), _jsxs(Caption, { className: "text-gray-500", children: ["Selected (", selectedTags.length, ")"] })] }), _jsx(DropdownMenuSeparator, {}), tags.map(function (tag) { return (_jsx(DropdownMenuCheckboxItem, { checked: selectedTags.includes(tag), onCheckedChange: function (checked) { return handleTagChange(tag, checked); },
160
- // Prevent the dropdown menu from closing when the checkbox is clicked
161
- onSelect: function (e) { return e.preventDefault(); }, children: tag }, tag)); })] })] }));
162
- };
163
- export var MultipleSelections = function () {
164
- var tags = ["Sport", "Music", "Food", "Travel", "Tech", "Science", "Art"];
165
- var _a = useState([
166
- tags[0],
167
- tags[4],
168
- ]), selectedTags = _a[0], setSelectedTags = _a[1];
169
- var handleTagChange = function (tag, checked) {
170
- if (checked) {
171
- setSelectedTags(__spreadArray(__spreadArray([], selectedTags, true), [tag], false));
172
- }
173
- else {
174
- setSelectedTags(selectedTags.filter(function (t) { return t !== tag; }));
175
- }
176
- };
177
- return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Select Tags" }) }), _jsxs(DropdownMenuContent, { className: "w-44", size: "lg", children: [_jsx(DropdownMenuLabel, { children: "Select Tags" }), _jsx(DropdownMenuSeparator, {}), tags.map(function (tag) { return (_jsx(DropdownMenuCheckboxItem, { checked: selectedTags.includes(tag), onCheckedChange: function (checked) { return handleTagChange(tag, checked); },
178
- // Prevent the dropdown menu from closing when the checkbox is clicked
179
- onSelect: function (e) { return e.preventDefault(); }, children: tag }, tag)); })] })] }));
180
- };
181
- export var DropdownMenuWithSearch = function () {
182
- var menuItems = [
183
- { label: "Open conversation details", icon: "eye" },
184
- { label: "View full profile", icon: "user" },
185
- { label: "Start conversation", icon: "address-book" },
186
- ];
187
- var _a = useState(false), open = _a[0], setOpen = _a[1];
188
- var _b = useState(""), query = _b[0], setQuery = _b[1];
189
- var filteredItems = menuItems.filter(function (item) {
190
- return item.label.toLowerCase().includes(query.toLowerCase());
191
- });
192
- return (_jsxs(DropdownMenu, { open: open, onOpenChange: setOpen, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Select an Option" }) }), _jsxs(DropdownMenuContent, { className: "p-0", size: "lg", children: [_jsx("div", { className: "p-2", children: _jsx(Input, { placeholder: "Search...", value: query, onChange: function (e) { return setQuery(e.target.value); }, onKeyDownCapture: function (e) { return e.stopPropagation(); }, startIcon: "magnifying-glass" }) }), filteredItems.length === 0 ? (_jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No results found." })) : (filteredItems.map(function (option) { return (_jsxs(DropdownMenuItem, { onSelect: function () { return setOpen(false); }, children: [_jsx(LUIcon, { icon: option.icon }), " ", option.label] }, option.label)); }))] })] }));
193
- };
194
- DropdownMenuWithSearch.parameters = {
195
- docs: {
196
- description: {
197
- story: "DropdownMenuWithSearch provides a dropdown menu that includes a search box. Users can type into the box to filter the menu items. For larger dropdowns, a large search input should be used; for medium dropdowns, a medium input; and for small dropdowns, a small input.",
198
- },
199
- },
200
- };
201
- export var DropdownMenuWithSelectAllAndSearch = function () {
202
- var tags = ["Sport", "Music", "Food", "Travel", "Tech", "Science", "Art"];
203
- var _a = useState([]), selectedTags = _a[0], setSelectedTags = _a[1];
204
- var _b = useState(""), query = _b[0], setQuery = _b[1];
205
- var toggleTag = function (tag) {
206
- setSelectedTags(function (prev) {
207
- return prev.includes(tag) ? prev.filter(function (t) { return t !== tag; }) : __spreadArray(__spreadArray([], prev, true), [tag], false);
208
- });
209
- };
210
- var handleSelectAll = function () {
211
- var allSelected = selectedTags.length === tags.length;
212
- setSelectedTags(allSelected ? [] : __spreadArray([], tags, true));
213
- };
214
- var filtered = tags.filter(function (t) {
215
- return t.toLowerCase().includes(query.toLowerCase());
216
- });
217
- return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Select Tags" }) }), _jsxs(DropdownMenuContent, { size: "lg", children: [_jsx("div", { className: "mb-2", children: _jsx(Input, { placeholder: "Search...", value: query, onChange: function (e) { return setQuery(e.target.value); }, onKeyDownCapture: function (e) { return e.stopPropagation(); }, size: "lg", startIcon: "magnifying-glass" }) }), _jsx(SelectAllSection, { checked: selectedTags.length === tags.length && tags.length > 0, onToggleAll: handleSelectAll, selectedCount: selectedTags.length, size: "lg" }), _jsx(DropdownMenuSeparator, {}), filtered.length === 0 ? (_jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No results found." })) : (filtered.map(function (tag) {
218
- var isSelected = selectedTags.includes(tag);
219
- return (_jsx(DropdownMenuCheckboxItem, { checked: isSelected,
220
- // Prevent DropdownMenu from closing in multi-select scenario
221
- onSelect: function (e) { return e.preventDefault(); }, onCheckedChange: function () { return toggleTag(tag); }, className: isSelected ? "bg-blue-50 text-blue-600" : "", children: tag }, tag));
222
- }))] })] }));
223
- };
224
- export var WorkSpaceSwitcher = function () {
225
- var workspaces = [
226
- {
227
- id: 1,
228
- name: "Workspace 1",
229
- createdBy: "abc@example.com",
230
- },
231
- {
232
- id: 2,
233
- name: "Workspace 2",
234
- createdBy: "def@example.com",
235
- },
236
- {
237
- id: 3,
238
- name: "Workspace 3",
239
- createdBy: "ghi@example.com",
240
- },
241
- ];
242
- var _a = useState(workspaces[0]), selectedWorkspace = _a[0], setSelectedWorkspace = _a[1];
243
- return (_jsxs(DropdownMenu, { children: [_jsxs(DropdownMenuTrigger, { className: "flex items-center gap-2 bg-accent py-2.5 px-3 rounded-lg", children: [_jsxs(Avatar, { children: [_jsx(AvatarImage, { alt: "Avatar", src: "/images/avatar.png" }), _jsx(AvatarFallback, { children: "AB" })] }), _jsxs("div", { className: "text-start flex flex-col gap-1 leading-none", children: [_jsx("span", { className: "text-sm leading-none font-semibold truncate max-w-[17ch]", children: selectedWorkspace.name }), _jsx("span", { className: "text-xs text-muted-foreground truncate max-w-[20ch]", children: selectedWorkspace.createdBy })] }), _jsx(LUIcon, { icon: "angle-down" })] }), _jsxs(DropdownMenuContent, { children: [_jsx(DropdownMenuLabel, { children: "Workspaces" }), workspaces.map(function (workspace) { return (_jsxs(DropdownMenuItem, { onClick: function () { return setSelectedWorkspace(workspace); }, children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Avatar, { children: [_jsx(AvatarImage, { alt: "Avatar", src: "/images/avatar.png" }), _jsx(AvatarFallback, { children: "AB" })] }), _jsxs("div", { className: "flex flex-col", children: [_jsx("span", { children: workspace.name }), _jsx("span", { className: "text-xs text-muted-foreground", children: workspace.createdBy })] })] }), selectedWorkspace.id === workspace.id && (_jsx(LUIcon, { icon: "check", className: "ml-auto" }))] }, workspace.id)); })] })] }));
244
- };
245
- export var LanguageDropdownMenu = function () {
246
- var languages = ["English", "Spanish", "French", "German", "Chinese"];
247
- var _a = useState(languages[0]), selectedLanguage = _a[0], setSelectedLanguage = _a[1];
248
- var _b = useState(false), isOpen = _b[0], setIsOpen = _b[1];
249
- return (_jsxs(DropdownMenu, { open: isOpen, onOpenChange: setIsOpen, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { shape: "rounded-full", startIcon: "language", endIcon: isOpen ? "angle-up" : "angle-down", children: selectedLanguage }) }), _jsx(DropdownMenuContent, { className: "w-50", children: languages.map(function (language) { return (_jsx(DropdownMenuItem, { onSelect: function () { return setSelectedLanguage(language); }, children: language }, language)); }) })] }));
250
- };
251
- export var Alignments = function () {
252
- return (_jsxs("div", { className: "flex flex-row space-x-4", children: [_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { children: _jsx(Button, { children: "Align Start" }) }), _jsxs(DropdownMenuContent, { align: "start", children: [_jsx(DropdownMenuItem, { children: "Option 1" }), _jsx(DropdownMenuItem, { children: "Option 2" }), _jsx(DropdownMenuItem, { children: "Option 3" })] })] }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { children: _jsx(Button, { children: "Align Center" }) }), _jsxs(DropdownMenuContent, { align: "center", children: [_jsx(DropdownMenuItem, { children: "Option 1" }), _jsx(DropdownMenuItem, { children: "Option 2" }), _jsx(DropdownMenuItem, { children: "Option 3" })] })] }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { children: _jsx(Button, { children: "Align End" }) }), _jsxs(DropdownMenuContent, { align: "end", children: [_jsx(DropdownMenuItem, { children: "Option 1" }), _jsx(DropdownMenuItem, { children: "Option 2" }), _jsx(DropdownMenuItem, { children: "Option 3" })] })] })] }));
253
- };
@@ -1,9 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Checkbox } from "../../../components/Checkbox/checkbox";
3
- import { Label } from "../../../components/Label/Label";
4
- import { Caption } from "../../../components/Typography/Caption/caption";
5
- export var SelectAllSection = function (_a) {
6
- var _b = _a.id, id = _b === void 0 ? "dm-select-all" : _b, checked = _a.checked, onToggleAll = _a.onToggleAll, selectedCount = _a.selectedCount, _c = _a.size, size = _c === void 0 ? "md" : _c;
7
- var labelVariant = size === "lg" ? "label-lg" : size === "md" ? "label-md" : "label-sm";
8
- return (_jsxs("div", { className: "flex flex-col gap-1 rounded-sm bg-gray-50 text-gray-800 py-3 px-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Checkbox, { id: id, checked: checked, onCheckedChange: onToggleAll, onClick: function (e) { return e.stopPropagation(); }, size: size }), _jsx(Label, { htmlFor: id, variant: labelVariant, children: "Select All" })] }), _jsxs(Caption, { className: "text-gray-500", variant: "sm", children: ["Selected (", selectedCount, ")"] })] }));
9
- };
@@ -1,87 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- var __rest = (this && this.__rest) || function (s, e) {
13
- var t = {};
14
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
- t[p] = s[p];
16
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
- t[p[i]] = s[p[i]];
20
- }
21
- return t;
22
- };
23
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
24
- import * as SelectPrimitive from "@radix-ui/react-select";
25
- import { cn } from "../../lib/utils";
26
- import { selectSize, selectShape, selectType, selectColor, itemSize, } from ".";
27
- import LUIcon from "../Icons/LUIcon";
28
- // Map select size to icon size
29
- var iconSizeMap = {
30
- lg: "md",
31
- md: "sm",
32
- sm: "xs",
33
- };
34
- function Select(_a) {
35
- var onValueChange = _a.onValueChange, defaultValue = _a.defaultValue, props = __rest(_a, ["onValueChange", "defaultValue"]);
36
- return (_jsx(SelectPrimitive.Root, __assign({ "data-slot": "select", onValueChange: onValueChange, defaultValue: defaultValue }, props)));
37
- }
38
- function SelectGroup(_a) {
39
- var props = __rest(_a, []);
40
- return _jsx(SelectPrimitive.Group, __assign({ "data-slot": "select-group" }, props));
41
- }
42
- function SelectValue(_a) {
43
- var props = __rest(_a, []);
44
- return _jsx(SelectPrimitive.Value, __assign({ "data-slot": "select-value" }, props));
45
- }
46
- function SelectTrigger(_a) {
47
- var className = _a.className, _b = _a.size, size = _b === void 0 ? "md" : _b, _c = _a.shape, shape = _c === void 0 ? "rectangular" : _c, _d = _a.variant, variant = _d === void 0 ? "fill" : _d, _e = _a.color, color = _e === void 0 ? "default" : _e, children = _a.children, disabled = _a.disabled, props = __rest(_a, ["className", "size", "shape", "variant", "color", "children", "disabled"]);
48
- var iconSize = iconSizeMap[size] || "md";
49
- var shapeClass = selectShape[shape];
50
- var typeClass = selectType[variant];
51
- // Use disabled color if disabled prop is true
52
- var isDisabled = !!disabled;
53
- var colorClass = isDisabled
54
- ? selectColor[variant]["disabled"]
55
- : selectColor[variant][color];
56
- return (_jsxs(SelectPrimitive.Trigger, __assign({ "data-slot": "select-trigger", "data-size": size, "data-shape": shape, "data-type": variant, "data-color": isDisabled ? "disabled" : color, className: cn("data-[placeholder]:text-gray-400 w-full !px-4 !py-3 [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-blue-200 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex items-center justify-between gap-2 !border border-gray-200 whitespace-nowrap !shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", typeClass, shapeClass, selectSize[size], colorClass, className), disabled: isDisabled }, props, { children: [children, _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(LUIcon, { icon: "angle-down", size: iconSize, color: "light-gray" }) })] })));
57
- }
58
- function SelectContent(_a) {
59
- var className = _a.className, children = _a.children, _b = _a.position, position = _b === void 0 ? "popper" : _b, _c = _a.hidePortal, hidePortal = _c === void 0 ? false : _c, props = __rest(_a, ["className", "children", "position", "hidePortal"]);
60
- var content = (_jsxs(SelectPrimitive.Content, __assign({ "data-slot": "select-content", className: cn("!bg-white text-gray-900 !py-2 !px-2 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto !rounded-sm shadow-lg", position === "popper" &&
61
- "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className), position: position }, props, { children: [_jsx(SelectScrollUpButton, {}), _jsx(SelectPrimitive.Viewport, { className: cn("p-1", position === "popper" &&
62
- "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"), children: children }), _jsx(SelectScrollDownButton, {})] })));
63
- return hidePortal ? (content) : (_jsx(SelectPrimitive.Portal, { children: content }));
64
- }
65
- function SelectLabel(_a) {
66
- var className = _a.className, _b = _a.size, size = _b === void 0 ? "md" : _b, props = __rest(_a, ["className", "size"]);
67
- return (_jsx(SelectPrimitive.Label, __assign({ "data-slot": "select-label", className: cn("text-muted-foreground !px-2 !py-1.5", itemSize[size], className) }, props)));
68
- }
69
- function SelectItem(_a) {
70
- var className = _a.className, children = _a.children, _b = _a.size, size = _b === void 0 ? "md" : _b, props = __rest(_a, ["className", "children", "size"]);
71
- return (_jsx(SelectPrimitive.Item, __assign({ "data-slot": "select-item", className: cn("text-gray-900 data-[disabled]:bg-gray-100 data-[disabled]:text-gray-300 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 !rounded-sm py-1.5 pr-8 pl-2 outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 data-[state=checked]:bg-gray-50 hover:bg-gray-50", itemSize[size], className) }, props, { children: _jsx(SelectPrimitive.ItemText, { children: children }) })));
72
- }
73
- function SelectSeparator(_a) {
74
- var className = _a.className, props = __rest(_a, ["className"]);
75
- return (_jsx(SelectPrimitive.Separator, __assign({ "data-slot": "select-separator", className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className) }, props)));
76
- }
77
- function SelectScrollUpButton(_a) {
78
- var className = _a.className, _b = _a.size, size = _b === void 0 ? "md" : _b, props = __rest(_a, ["className", "size"]);
79
- var iconSize = iconSizeMap[size] || "md";
80
- return (_jsx(SelectPrimitive.ScrollUpButton, __assign({ "data-slot": "select-scroll-up-button", className: cn("flex cursor-default items-center justify-center py-1", className) }, props, { children: _jsx(LUIcon, { icon: "angle-up", size: iconSize, color: "light-gray" }) })));
81
- }
82
- function SelectScrollDownButton(_a) {
83
- var className = _a.className, _b = _a.size, size = _b === void 0 ? "md" : _b, props = __rest(_a, ["className", "size"]);
84
- var iconSize = iconSizeMap[size] || "md";
85
- return (_jsx(SelectPrimitive.ScrollDownButton, __assign({ "data-slot": "select-scroll-down-button", className: cn("flex cursor-default items-center justify-center py-1", className) }, props, { children: _jsx(LUIcon, { icon: "angle-down", size: iconSize, color: "light-gray" }) })));
86
- }
87
- export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };
@@ -1,38 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useRef, useState } from "react";
3
- import LUIcon from "../LUIcon";
4
- import { Input } from "../../../components/Input";
5
- export var IconDropdown = function (_a) {
6
- var value = _a.value, onChange = _a.onChange, options = _a.options;
7
- var _b = useState(false), isOpen = _b[0], setIsOpen = _b[1];
8
- var _c = useState(""), searchTerm = _c[0], setSearchTerm = _c[1];
9
- var dropdownRef = useRef(null);
10
- var filteredOptions = options.filter(function (option) {
11
- return option.toLowerCase().includes(searchTerm.toLowerCase()) ||
12
- option
13
- .replace(/-/g, " ")
14
- .toLowerCase()
15
- .includes(searchTerm.toLowerCase());
16
- });
17
- useEffect(function () {
18
- var handleClickOutside = function (event) {
19
- if (dropdownRef.current &&
20
- !dropdownRef.current.contains(event.target)) {
21
- setIsOpen(false);
22
- }
23
- };
24
- document.addEventListener("mousedown", handleClickOutside);
25
- return function () { return document.removeEventListener("mousedown", handleClickOutside); };
26
- }, []);
27
- var handleSelect = function (option) {
28
- onChange(option);
29
- setIsOpen(false);
30
- setSearchTerm("");
31
- };
32
- var formatLabel = function (iconKey) {
33
- return iconKey.replace(/-/g, " ").replace(/\b\w/g, function (l) { return l.toUpperCase(); });
34
- };
35
- return (_jsxs("div", { ref: dropdownRef, className: "relative w-full", children: [_jsxs("div", { onClick: function () { return setIsOpen(!isOpen); }, className: "px-3 py-2 border border-gray-300 rounded bg-white cursor-pointer flex items-center justify-between min-h-9", children: [_jsxs("div", { className: "flex items-center gap-2", children: [value && _jsx(LUIcon, { icon: value, size: "xs" }), _jsx("span", { children: value ? formatLabel(value) : "Select an icon..." })] }), _jsx("span", { className: "transition-transform duration-200 ".concat(isOpen ? "rotate-180" : "rotate-0"), children: "\u25BC" })] }), isOpen && (_jsxs("div", { className: "absolute top-full left-0 right-0 bg-white border border-gray-300 rounded shadow-lg z-[1000] max-h-[300px] overflow-y-auto", children: [_jsx("div", { className: "p-2", children: _jsx(Input, { type: "text", placeholder: "Search icons...", value: searchTerm, onChange: function (e) { return setSearchTerm(e.target.value); }, className: "w-full px-2 py-1.5 border border-gray-300 rounded-sm text-sm", onClick: function (e) { return e.stopPropagation(); } }) }), _jsx("div", { className: "max-h-[200px] overflow-y-auto", children: filteredOptions.length === 0 ? (_jsx("div", { className: "p-3 text-gray-600 italic", children: "No icons found" })) : (filteredOptions.map(function (option) { return (_jsxs("div", { onClick: function () { return handleSelect(option); }, className: "px-3 py-2 cursor-pointer flex items-center gap-2 transition-colors duration-100 ".concat(value === option
36
- ? "bg-blue-50 border-l-4 border-l-blue-600"
37
- : "border-l-4 border-l-transparent hover:bg-gray-50"), children: [_jsx(LUIcon, { icon: option, size: "xs" }), _jsx("span", { className: "text-sm", children: formatLabel(option) }), _jsx("span", { className: "text-xs text-gray-600 ml-auto", children: option })] }, option)); })) })] }))] }));
38
- };
@@ -1,31 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from "react";
3
- import { iconList } from "../../../utils/iconList";
4
- import LUIcon from "../LUIcon";
5
- import { Heading } from "../../../components/Typography/Heading/heading";
6
- import { Body } from "../../../components/Typography/Body/body";
7
- import { Input } from "../../../components/Input/input";
8
- export var IconGallery = function () {
9
- var _a = useState(""), searchTerm = _a[0], setSearchTerm = _a[1];
10
- var _b = useState(""), selectedIcon = _b[0], setSelectedIcon = _b[1];
11
- var filteredIcons = Object.keys(iconList)
12
- .sort()
13
- .filter(function (iconKey) {
14
- return iconKey.toLowerCase().includes(searchTerm.toLowerCase()) ||
15
- iconKey
16
- .replace(/-/g, " ")
17
- .toLowerCase()
18
- .includes(searchTerm.toLowerCase());
19
- });
20
- var IconItem = function (_a) {
21
- var iconKey = _a.iconKey;
22
- return (_jsxs("div", { onClick: function () { return setSelectedIcon(iconKey); }, className: "flex items-center gap-2 p-2 border rounded cursor-pointer transition-all duration-200 ".concat(selectedIcon === iconKey
23
- ? "border-blue-600 bg-blue-50 border-2"
24
- : "border-gray-200 bg-white hover:bg-gray-50 hover:border-gray-300"), children: [_jsx(LUIcon, { icon: iconKey, size: "sm" }), _jsx("span", { className: "text-xs font-mono text-gray-700 break-all", children: iconKey })] }, iconKey));
25
- };
26
- var IconPreview = function (_a) {
27
- var iconKey = _a.iconKey;
28
- return (_jsxs("div", { className: "mt-5 p-4 bg-gray-50 rounded-lg border border-gray-200", children: [_jsxs(Heading, { variant: "h4", className: "mb-4", children: ["Preview Selected Icon: ", iconKey] }), _jsxs("div", { className: "flex gap-4 items-center flex-wrap", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Body, { variant: "body-sm-600", children: "Default:" }), _jsx(LUIcon, { icon: iconKey, size: "md" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Body, { variant: "body-sm-600", children: "Padded:" }), _jsx(LUIcon, { icon: iconKey, size: "md", variant: "padded", color: "blue" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Body, { variant: "body-sm-600", children: "Large:" }), _jsx(LUIcon, { icon: iconKey, size: "xl" })] })] }), _jsxs("div", { className: "mt-3 font-mono text-sm", children: [_jsx(Body, { variant: "body-sm-600", children: "Usage:" }), _jsx("br", {}), _jsx("code", { className: "bg-gray-100 p-1 rounded", children: "<LUIcon icon=\"".concat(iconKey, "\" size=\"md\" />") })] })] }));
29
- };
30
- return (_jsxs("div", { className: "p-5", children: [_jsxs(Heading, { variant: "h3", className: "mb-5", children: ["Icon Gallery - All Available Icons (", Object.keys(iconList).length, " ", "total)"] }), _jsxs("div", { className: "mb-5", children: [_jsx(Input, { type: "text", placeholder: "Search icons... (e.g., 'circle', 'info', 'qr')", value: searchTerm, onChange: function (e) { return setSearchTerm(e.target.value); }, className: "w-full max-w-md", startIcon: "magnifying-glass" }), _jsxs(Body, { variant: "body-sm", className: "mt-2 text-gray-600", children: [filteredIcons.length, " icons found", selectedIcon && (_jsxs("span", { className: "ml-4 font-semibold", children: ["Selected: ", selectedIcon] }))] })] }), _jsx("div", { className: "grid grid-cols-[repeat(auto-fill,minmax(180px,1fr))] gap-3 max-h-[500px] overflow-y-auto border border-gray-200 p-4 rounded-lg", children: filteredIcons.map(function (iconKey) { return (_jsx(IconItem, { iconKey: iconKey }, iconKey)); }) }), selectedIcon && _jsx(IconPreview, { iconKey: selectedIcon })] }));
31
- };
@@ -1,26 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from "react";
3
- import { iconList } from "../../../utils/iconList";
4
- import LUIcon from "../LUIcon";
5
- import { iconSize, iconWithBgColor } from "../index";
6
- import { IconDropdown } from "./IconDropdown";
7
- import { Heading } from "../../../components/Typography/Heading/heading";
8
- import { Body } from "../../../components/Typography/Body/body";
9
- import { Label } from "../../../components/Label/Label";
10
- export var InteractiveIconSelector = function () {
11
- var _a = useState("info"), selectedIcon = _a[0], setSelectedIcon = _a[1];
12
- var _b = useState("md"), selectedSize = _b[0], setSelectedSize = _b[1];
13
- var _c = useState("default"), selectedVariant = _c[0], setSelectedVariant = _c[1];
14
- var _d = useState("blue"), selectedColor = _d[0], setSelectedColor = _d[1];
15
- var generateUsageCode = function () {
16
- var code = "<LUIcon icon=\"".concat(selectedIcon, "\" size=\"").concat(selectedSize, " color=\"").concat(selectedColor, "\"");
17
- if (selectedVariant === "padded") {
18
- code += " variant=\"padded\" \"";
19
- }
20
- code += " />";
21
- return code;
22
- };
23
- return (_jsxs("div", { className: "p-5", children: [_jsx(Heading, { variant: "h3", className: "mb-3", children: "Interactive Icon Selector" }), _jsx(Body, { variant: "body-md", className: "mb-6 text-gray-600", children: "This demonstrates a custom searchable dropdown that shows icons alongside their names." }), _jsxs("div", { className: "grid grid-cols-[repeat(auto-fit,minmax(200px,1fr))] gap-4 mb-6", children: [_jsxs("div", { children: [_jsx(Label, { variant: "label-md", className: "block mb-2 ", children: "Select Icon:" }), _jsx(IconDropdown, { value: selectedIcon, onChange: setSelectedIcon, options: Object.keys(iconList).sort() })] }), _jsxs("div", { children: [_jsx(Label, { variant: "label-md", className: "block mb-2 ", children: "Size:" }), _jsx("select", { value: selectedSize, onChange: function (e) { return setSelectedSize(e.target.value); }, className: "w-full p-2 border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent", children: Object.keys(iconSize).map(function (size) { return (_jsx("option", { value: size, children: size }, size)); }) })] }), _jsxs("div", { children: [_jsx(Label, { variant: "label-md", className: "block mb-2 ", children: "Variant:" }), _jsxs("select", { value: selectedVariant, onChange: function (e) {
24
- return setSelectedVariant(e.target.value);
25
- }, className: "w-full p-2 border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent", children: [_jsx("option", { value: "default", children: "Default" }), _jsx("option", { value: "padded", children: "Padded" })] })] }), _jsxs("div", { children: [_jsx(Label, { variant: "label-md", className: "block mb-2", children: "Color:" }), _jsx("select", { value: selectedColor, onChange: function (e) { return setSelectedColor(e.target.value); }, className: "w-full p-2 border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent", children: Object.keys(iconWithBgColor).map(function (color) { return (_jsx("option", { value: color, children: color }, color)); }) })] })] }), _jsxs("div", { className: "p-6 border-2 border-dashed border-gray-300 rounded-lg text-center bg-gray-50", children: [_jsx(Heading, { variant: "h4", className: "mb-4", children: "Preview:" }), _jsx("div", { className: "my-4", children: _jsx(LUIcon, { icon: selectedIcon, size: selectedSize, variant: selectedVariant, color: selectedColor }) }), _jsx("div", { className: "font-mono text-sm bg-gray-100 p-2 rounded", children: generateUsageCode() })] })] }));
26
- };
@@ -1,133 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
- import React from "react";
14
- import { Input, inputVariantConfig } from "./input";
15
- import { inputType } from "."; // Ensure this exports an object like { text: 'text', email: 'email', ... }
16
- import { Label } from "../Label/Label";
17
- import LUIcon from "../Icons/LUIcon";
18
- import Tooltip from "../ToolTip/Tooltip";
19
- import { Caption } from "../Typography/Caption/caption";
20
- export default {
21
- title: "Components/Input",
22
- component: Input,
23
- tags: ["autodocs"],
24
- argTypes: {
25
- type: {
26
- control: {
27
- type: "select",
28
- labels: Object.keys(inputType),
29
- },
30
- options: Object.keys(inputType),
31
- defaultValue: "text",
32
- },
33
- variant: {
34
- control: {
35
- type: "select",
36
- },
37
- options: Object.keys(inputVariantConfig.variant),
38
- defaultValue: "filled",
39
- },
40
- size: {
41
- control: {
42
- type: "select",
43
- },
44
- options: Object.keys(inputVariantConfig.size),
45
- defaultValue: "lg",
46
- },
47
- color: {
48
- control: {
49
- type: "select",
50
- },
51
- options: Object.keys(inputVariantConfig.color),
52
- defaultValue: "default",
53
- },
54
- startIcon: {
55
- control: "text",
56
- description: "Icon to display at the start of the input",
57
- },
58
- endIcon: {
59
- control: "text",
60
- description: "Icon to display at the end of the input",
61
- },
62
- placeholder: {
63
- control: "text",
64
- defaultValue: "Enter text",
65
- },
66
- disabled: {
67
- control: "boolean",
68
- defaultValue: false,
69
- },
70
- className: {
71
- control: "text",
72
- },
73
- },
74
- };
75
- var Template = function (args) { return _jsx(Input, __assign({}, args)); };
76
- export var Default = Template.bind({});
77
- Default.args = {
78
- type: "text",
79
- placeholder: "Enter your input",
80
- variant: "filled",
81
- size: "lg",
82
- };
83
- export var WithIcons = function () { return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx(Label, { variant: "label-md", children: "Search with start icon" }), _jsx(Input, { placeholder: "Search...", startIcon: "magnifying-glass" })] }), _jsxs("div", { children: [_jsx(Label, { className: "block text-sm font-medium mb-2", children: "Email with end icon" }), _jsx(Input, { placeholder: "Enter email", endIcon: "envelope", type: "email" })] }), _jsxs("div", { children: [_jsx(Label, { variant: "label-md", children: "Password with both icons" }), _jsx(Input, { placeholder: "Enter password", startIcon: "lock", endIcon: "eye", type: "password" })] }), _jsxs("div", { children: [_jsx(Label, { variant: "label-sm", children: "User input" }), _jsx(Input, { placeholder: "Enter username", startIcon: "user" })] })] })); };
84
- export var IconSizes = function () { return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx(Label, { variant: "label-sm", children: "Small with icons" }), _jsx(Input, { placeholder: "Small size", size: "sm", startIcon: "magnifying-glass", endIcon: "xMark" })] }), _jsxs("div", { children: [_jsx(Label, { variant: "label-md", children: "Medium with icons" }), _jsx(Input, { placeholder: "Medium size", size: "md", startIcon: "magnifying-glass", endIcon: "xMark" })] }), _jsxs("div", { children: [_jsx(Label, { variant: "label-lg", children: "Large with icons" }), _jsx(Input, { placeholder: "Large size", size: "lg", startIcon: "magnifying-glass", endIcon: "xMark" })] })] })); };
85
- export var Variants = function () { return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx(Label, { variant: "label-md", children: "Filled" }), _jsx(Input, { placeholder: "Filled variant", variant: "filled" })] }), _jsxs("div", { children: [_jsx(Label, { variant: "label-md", children: "Outlined" }), _jsx(Input, { placeholder: "Outlined variant", variant: "outlined" })] })] })); };
86
- export var Sizes = function () { return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx(Label, { variant: "label-md", children: "Small" }), _jsx(Input, { placeholder: "Small size", size: "sm" })] }), _jsxs("div", { children: [_jsx(Label, { variant: "label-md", children: "Medium" }), _jsx(Input, { placeholder: "Medium size", size: "md" })] }), _jsxs("div", { children: [_jsx(Label, { variant: "label-lg", children: "Large (Default)" }), _jsx(Input, { placeholder: "Large size", size: "lg" })] })] })); };
87
- export var VariantsWithIcons = function () { return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx(Label, { variant: "label-md", children: "Filled with icons" }), _jsx(Input, { placeholder: "Filled variant", variant: "filled", startIcon: "magnifying-glass", endIcon: "xMark" })] }), _jsxs("div", { children: [_jsx(Label, { variant: "label-md", children: "Outlined with icons" }), _jsx(Input, { placeholder: "Outlined variant", variant: "outlined", startIcon: "magnifying-glass", endIcon: "xMark" })] })] })); };
88
- export var ErrorValidation = function () {
89
- var _a = React.useState("Steve"), email = _a[0], setEmail = _a[1];
90
- var maxLength = 5;
91
- var isError = email.length === 5;
92
- var characterCount = email.length;
93
- var handleEmailChange = function (e) {
94
- var newValue = e.target.value;
95
- // Restrict typing when exactly 5 characters
96
- if (newValue.length <= 5) {
97
- setEmail(newValue);
98
- }
99
- };
100
- return (_jsx("div", { className: "space-y-4", children: _jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2 mb-2", children: [_jsx(Label, { variant: "label-md", children: "Name" }), _jsx("span", { className: "text-red-600", children: "*" }), _jsx(Tooltip, { title: "This is a tooltip for the email input field", children: _jsx(LUIcon, { variant: "padded", size: "xs", shape: "rounded", icon: "question", color: "light-blue" }) }), _jsxs(Caption, { variant: "md", className: "ms-auto mb-1 ".concat(isError ? "text-red-600" : "text-gray-500"), children: [_jsx("span", { className: isError ? "text-red-600" : "text-gray-900", children: characterCount }), "/", maxLength] })] }), _jsx(Input, { color: isError ? "danger" : "default", placeholder: "Enter your email address", variant: "filled", type: "email", value: email, onChange: handleEmailChange, startIcon: "user", endIcon: "envelope" }), email.length > 4 && (_jsx(Caption, { variant: "md", className: "mt-1 ".concat(isError ? "text-red-600" : "text-gray-500"), children: isError
101
- ? "Email must be longer than 5 characters"
102
- : "Please enter a valid email address" }))] }) }));
103
- };
104
- export var SuccessValidation = function () {
105
- var _a = React.useState("john_doe"), username = _a[0], setUsername = _a[1];
106
- var maxLength = 20;
107
- var isSuccess = username.length >= 6 && username.length <= 15;
108
- var characterCount = username.length;
109
- var handleUsernameChange = function (e) {
110
- var newValue = e.target.value;
111
- if (newValue.length <= maxLength) {
112
- setUsername(newValue);
113
- }
114
- };
115
- return (_jsx("div", { className: "space-y-4", children: _jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2 mb-2", children: [_jsx(Label, { variant: "label-sm", children: "Username" }), _jsx("span", { className: "text-red-600", children: "*" }), _jsx(Tooltip, { title: "Username must be 6-15 characters long", children: _jsx(LUIcon, { variant: "padded", size: "xs", shape: "rounded", icon: "question", color: "light-blue" }) }), _jsxs(Caption, { variant: "md", className: "ms-auto mb-1 ".concat(isSuccess ? "text-green-600" : "text-gray-500"), children: [_jsx("span", { className: isSuccess ? "text-green-600" : "text-gray-900", children: characterCount }), "/", maxLength] })] }), _jsx(Input, { color: isSuccess ? "success" : "default", placeholder: "Enter your username", variant: "filled", type: "text", value: username, onChange: handleUsernameChange, startIcon: "user", endIcon: isSuccess ? "check" : "user-gear" }), _jsx(Caption, { variant: "md", className: "mt-1 ".concat(isSuccess ? "text-green-600" : "text-gray-500"), children: isSuccess
116
- ? "Great! Username is available"
117
- : "Username must be 6-15 characters" })] }) }));
118
- };
119
- export var WarningValidation = function () {
120
- var _a = React.useState("pass123"), password = _a[0], setPassword = _a[1];
121
- var maxLength = 30;
122
- var hasWarning = password.length >= 4 && password.length < 8;
123
- var characterCount = password.length;
124
- var handlePasswordChange = function (e) {
125
- var newValue = e.target.value;
126
- if (newValue.length <= maxLength) {
127
- setPassword(newValue);
128
- }
129
- };
130
- return (_jsx("div", { className: "space-y-4", children: _jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2 mb-2", children: [_jsx(Label, { variant: "label-md", children: "Password" }), _jsx("span", { className: "text-red-600", children: "*" }), _jsx(Tooltip, { title: "Password should be at least 8 characters for better security", children: _jsx(LUIcon, { variant: "padded", size: "xs", shape: "rounded", icon: "question", color: "light-blue" }) }), _jsxs(Caption, { variant: "md", className: "ms-auto mb-1 ".concat(hasWarning ? "text-yellow-600" : "text-gray-500"), children: [_jsx("span", { className: hasWarning ? "text-yellow-600" : "text-gray-900", children: characterCount }), "/", maxLength] })] }), _jsx(Input, { color: hasWarning ? "warning" : "default", placeholder: "Enter your password", variant: "filled", type: "password", value: password, onChange: handlePasswordChange, startIcon: "lock", endIcon: hasWarning ? "circle-exclamation" : "eye" }), _jsx(Caption, { variant: "md", className: "mt-1 ".concat(hasWarning ? "text-yellow-600" : "text-gray-500"), children: hasWarning
131
- ? "Password is weak. Consider using 8+ characters"
132
- : "Enter a secure password" })] }) }));
133
- };