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
@@ -0,0 +1,12 @@
1
+ // This file is generated automatically by Next.js
2
+ // Do not edit this file manually
3
+ // This file validates that all pages and layouts export the correct types
4
+ // Validate ../../app/page.tsx
5
+ {
6
+ var handler = {};
7
+ }
8
+ // Validate ../../app/layout.tsx
9
+ {
10
+ var handler = {};
11
+ }
12
+ export {};
package/dist/index.d.ts CHANGED
@@ -29,3 +29,5 @@ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuIte
29
29
  export { Badge } from "./src/components/Badge/Badge";
30
30
  export { default as Combobox } from "./src/components/Dropdown/Combobox/Combobox";
31
31
  export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, } from "./src/components/Pagination/pagination";
32
+ export { Skeleton } from "./src/components/Skeleton/skeleton";
33
+ export { Tabs as VerticalTabs, TabsContent as VerticalTabsContent, TabsList as VerticalTabsList, tabSizes as verticalTabsSize, TabsTrigger as VerticalTabsTrigger, TabsHeading as VerticalTabsHeading, } from "./src/components/VerticalTabs/VerticalTabs";
package/dist/index.js CHANGED
@@ -29,3 +29,5 @@ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuIte
29
29
  export { Badge } from "./src/components/Badge/Badge";
30
30
  export { default as Combobox } from "./src/components/Dropdown/Combobox/Combobox";
31
31
  export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, } from "./src/components/Pagination/pagination";
32
+ export { Skeleton } from "./src/components/Skeleton/skeleton";
33
+ export { Tabs as VerticalTabs, TabsContent as VerticalTabsContent, TabsList as VerticalTabsList, tabSizes as verticalTabsSize, TabsTrigger as VerticalTabsTrigger, TabsHeading as VerticalTabsHeading, } from "./src/components/VerticalTabs/VerticalTabs";
@@ -56,8 +56,8 @@ declare const meta: {
56
56
  shape: {
57
57
  control: {
58
58
  type: "select";
59
- options: string[];
60
59
  };
60
+ options: string[];
61
61
  description: string;
62
62
  table: {
63
63
  type: {
@@ -54,8 +54,8 @@ var meta = {
54
54
  shape: {
55
55
  control: {
56
56
  type: "select",
57
- options: Object.keys(badgeStyles.shape),
58
57
  },
58
+ options: Object.keys(badgeStyles.shape),
59
59
  description: "The shape of the badge.",
60
60
  table: {
61
61
  type: { summary: "string" },
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.10 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.13 | MIT License | https://tailwindcss.com */
2
2
  .rounded-sm {
3
3
  border-radius: var(--radius-sm, 0.25rem);
4
4
  }
@@ -35,12 +35,12 @@ export var MultipleNewsCard = function (props) {
35
35
  };
36
36
  // Horizontal layout
37
37
  if (orientation === "horizontal") {
38
- return (_jsxs("div", { className: "!p-5 bg-white rounded-2xl flex ".concat(mediaPosition === "right" ? "flex-row-reverse" : "", " !gap-5 items-center shadow-lg ").concat(editor === null || editor === void 0 ? void 0 : editor.card), children: [_jsx(CardMedia, { className: "max-w-48 aspect-square rounded-lg" }), _jsxs("div", { className: "flex flex-col !gap-5 w-full", children: [_jsx(CardContent, {}), _jsx(ActionButton, {})] })] }));
38
+ return (_jsxs("div", { className: "!p-5 bg-white rounded-2xl flex max-sm:flex-col ".concat(mediaPosition === "right" ? "flex-row-reverse" : "", " !gap-5 items-center shadow-lg ").concat(editor === null || editor === void 0 ? void 0 : editor.card), children: [_jsx(CardMedia, { className: "w-full sm:max-w-48 aspect-square rounded-lg" }), _jsxs("div", { className: "flex flex-col !gap-5 w-full", children: [_jsx(CardContent, {}), _jsx(ActionButton, {})] })] }));
39
39
  }
40
40
  // Vertical layout
41
41
  return (_jsxs("div", { className: "!p-4 bg-white rounded-2xl flex flex-col !gap-5 max-w-md shadow-lg ".concat(editor === null || editor === void 0 ? void 0 : editor.card), children: [_jsxs("div", { className: "flex ".concat(mediaPosition === "top" ? "flex-col" : "flex-col-reverse", " !gap-4"), children: [mediaPosition === "middle" && (_jsx(Body, { variant: "body-lg", className: "text-gray-600 line-clamp-2 h-14 ".concat(editor === null || editor === void 0 ? void 0 : editor.cardText), dangerouslySetInnerHTML: {
42
42
  __html: item.description || "",
43
- } })), _jsx(CardMedia, { className: "aspect-16/10" }), _jsxs("div", { className: "flex flex-col !gap-1", children: [_jsx(Heading, { variant: "h4-700", className: "line-clamp-1 capitalize ".concat(editor === null || editor === void 0 ? void 0 : editor.cardTitle), children: item === null || item === void 0 ? void 0 : item.title }), (item === null || item === void 0 ? void 0 : item.short_description) && (_jsx(Body, { variant: mediaPosition === "middle" ? "body-lg-500" : "body-xl", className: "".concat(item.description ? "line-clamp-1 text-gray-600" : "line-clamp-2 h-14 text-gray-600", " ").concat(editor === null || editor === void 0 ? void 0 : editor.shortDescription), children: item === null || item === void 0 ? void 0 : item.short_description })), mediaPosition !== "middle" && (_jsx(Body, { variant: "body-lg", className: "text-gray-600 line-clamp-2 ".concat(editor === null || editor === void 0 ? void 0 : editor.cardText), dangerouslySetInnerHTML: {
43
+ } })), _jsx(CardMedia, { className: "aspect-16/10" }), _jsxs("div", { className: "flex flex-col !gap-1", children: [_jsx(Heading, { variant: "h4-700", className: "line-clamp-1 capitalize ".concat(editor === null || editor === void 0 ? void 0 : editor.cardTitle), children: item === null || item === void 0 ? void 0 : item.title }), (item === null || item === void 0 ? void 0 : item.short_description) && (_jsx(Body, { variant: mediaPosition === "middle" ? "body-lg-500" : "body-xl", className: "".concat(item.description || mediaPosition === "middle" ? "line-clamp-1 text-gray-600" : "line-clamp-2 h-14 text-gray-600", " ").concat(editor === null || editor === void 0 ? void 0 : editor.shortDescription), children: item === null || item === void 0 ? void 0 : item.short_description })), mediaPosition !== "middle" && (_jsx(Body, { variant: "body-lg", className: "text-gray-600 line-clamp-2 ".concat(editor === null || editor === void 0 ? void 0 : editor.cardText), dangerouslySetInnerHTML: {
44
44
  __html: item.description || "",
45
45
  } }))] })] }), _jsx(ActionButton, {})] }));
46
46
  };
@@ -27,22 +27,22 @@ import { buttonVariants } from "../Button/Button/Button";
27
27
  import LUIcon from "../Icons/LUIcon";
28
28
  var Pagination = function (_a) {
29
29
  var className = _a.className, props = __rest(_a, ["className"]);
30
- return (_jsx("nav", __assign({ role: "navigation", "aria-label": "pagination", className: cn("mx-auto flex w-full justify-center", className) }, props)));
30
+ return (_jsx("nav", __assign({ role: "navigation", "aria-label": "pagination", "data-slot": "pagination", className: cn("mx-auto flex w-full justify-center", className) }, props)));
31
31
  };
32
32
  Pagination.displayName = "Pagination";
33
33
  var PaginationContent = React.forwardRef(function (_a, ref) {
34
34
  var className = _a.className, props = __rest(_a, ["className"]);
35
- return (_jsx("ul", __assign({ ref: ref, className: cn("flex flex-row items-center gap-1", className) }, props)));
35
+ return (_jsx("ul", __assign({ ref: ref, "data-slot": "pagination", className: cn("flex flex-row items-center gap-1", className) }, props)));
36
36
  });
37
37
  PaginationContent.displayName = "PaginationContent";
38
38
  var PaginationItem = React.forwardRef(function (_a, ref) {
39
39
  var className = _a.className, props = __rest(_a, ["className"]);
40
- return (_jsx("li", __assign({ ref: ref, className: cn("", className) }, props)));
40
+ return (_jsx("li", __assign({ ref: ref, "data-slot": "pagination", className: cn("", className) }, props)));
41
41
  });
42
42
  PaginationItem.displayName = "PaginationItem";
43
43
  var PaginationLink = function (_a) {
44
44
  var className = _a.className, isActive = _a.isActive, _b = _a.size, size = _b === void 0 ? "md" : _b, _c = _a.color, color = _c === void 0 ? "gray" : _c, _d = _a.variant, variant = _d === void 0 ? "ghost" : _d, props = __rest(_a, ["className", "isActive", "size", "color", "variant"]);
45
- return (_jsx("a", __assign({ "aria-current": isActive ? "page" : undefined, className: cn(buttonVariants({
45
+ return (_jsx("a", __assign({ "aria-current": isActive ? "page" : undefined, "data-slot": "pagination", className: cn(buttonVariants({
46
46
  variant: isActive ? (variant === "link" ? variant : "fill") : variant,
47
47
  size: size,
48
48
  color: color,
@@ -51,18 +51,18 @@ var PaginationLink = function (_a) {
51
51
  PaginationLink.displayName = "PaginationLink";
52
52
  var PaginationPrevious = function (_a) {
53
53
  var className = _a.className, props = __rest(_a, ["className"]);
54
- return (_jsxs(PaginationLink, __assign({ "aria-label": "Go to previous page", size: "md", className: cn("gap-1 pl-2.5", className) }, props, { children: [_jsx(LUIcon, { icon: "arrow-left" }), _jsx("span", { children: "Previous" })] })));
54
+ return (_jsxs(PaginationLink, __assign({ "aria-label": "Go to previous page", size: "md", "data-slot": "pagination", className: cn("gap-1 pl-2.5", className) }, props, { children: [_jsx(LUIcon, { icon: "arrow-left" }), _jsx("span", { children: "Previous" })] })));
55
55
  };
56
56
  PaginationPrevious.displayName = "PaginationPrevious";
57
57
  var PaginationNext = function (_a) {
58
58
  var className = _a.className, props = __rest(_a, ["className"]);
59
- return (_jsxs(PaginationLink, __assign({ "aria-label": "Go to next page", size: "md", className: cn("gap-1 pr-2.5", className) }, props, { children: [_jsx("span", { children: "Next" }), _jsx(LUIcon, { icon: "arrow-right" })] })));
59
+ return (_jsxs(PaginationLink, __assign({ "aria-label": "Go to next page", size: "md", "data-slot": "pagination", className: cn("gap-1 pr-2.5", className) }, props, { children: [_jsx("span", { children: "Next" }), _jsx(LUIcon, { icon: "arrow-right" })] })));
60
60
  };
61
61
  PaginationNext.displayName = "PaginationNext";
62
62
  var PaginationEllipsis = function (_a) {
63
63
  var color = _a.color, props = __rest(_a, ["color"]);
64
64
  return (_jsxs(_Fragment, { children: [_jsx(LUIcon, __assign({ icon: "ellipsis-horizontal" // Always use ellipsis-horizontal
65
- , color: color }, props)), _jsx("span", { className: "sr-only", children: "More pages" })] }));
65
+ , color: color, "data-slot": "pagination" }, props)), _jsx("span", { className: "sr-only", children: "More pages" })] }));
66
66
  };
67
67
  PaginationEllipsis.displayName = "PaginationEllipsis";
68
68
  export { Pagination, PaginationContent, PaginationLink, PaginationItem, PaginationPrevious, PaginationNext, PaginationEllipsis, };
@@ -1,7 +1,9 @@
1
1
  import { Meta } from "@storybook/react";
2
+ declare const SKELETON_VARIANTS: string[];
3
+ type SkeletonVariant = (typeof SKELETON_VARIANTS)[number];
2
4
  interface SkeletonStoryArgs {
3
5
  className?: string;
4
- variant?: "default" | "button" | "input" | "avatar" | "badge" | "card" | "tableRow" | "checkbox" | "switch" | "select" | "icon" | "text" | "heading" | "image";
6
+ variant?: SkeletonVariant;
5
7
  size?: string;
6
8
  columns?: number;
7
9
  lines?: number;
@@ -18,6 +18,25 @@ import { comboboxSizes } from "../Dropdown/Combobox";
18
18
  import { iconSize as LUIconSizes } from "../Icons";
19
19
  import { checkboxSize } from "../Checkbox/checkbox";
20
20
  import { size as SwitchSizes } from "../Switch/switch";
21
+ import { Body } from "../Typography/Body/body";
22
+ import { Heading } from "../Typography/Heading/heading";
23
+ // Dynamically define Skeleton variants
24
+ var SKELETON_VARIANTS = [
25
+ "default",
26
+ "button",
27
+ "input",
28
+ "avatar",
29
+ "badge",
30
+ "card",
31
+ "tableRow",
32
+ "checkbox",
33
+ "switch",
34
+ "select",
35
+ "icon",
36
+ "text",
37
+ "heading",
38
+ "image",
39
+ ];
21
40
  var meta = {
22
41
  title: "Components/Skeleton",
23
42
  component: Skeleton,
@@ -44,22 +63,7 @@ var meta = {
44
63
  argTypes: {
45
64
  variant: {
46
65
  control: { type: "select" },
47
- options: [
48
- "default",
49
- "button",
50
- "input",
51
- "avatar",
52
- "badge",
53
- "card",
54
- "tableRow",
55
- "checkbox",
56
- "switch",
57
- "select",
58
- "icon",
59
- "text",
60
- "heading",
61
- "image",
62
- ],
66
+ options: SKELETON_VARIANTS,
63
67
  description: "Select the skeleton component variant",
64
68
  table: {
65
69
  defaultValue: { summary: "default" },
@@ -127,17 +131,20 @@ var meta = {
127
131
  decorators: [
128
132
  function (Story, context) {
129
133
  var currentVariant = context.args.variant;
130
- var variantsWithSize = [
131
- "button",
132
- "avatar",
133
- "badge",
134
- "input",
135
- "tableRow",
136
- "select",
137
- "icon",
138
- "text",
139
- "heading",
140
- ];
134
+ // Dynamically determine which variants support size
135
+ var variantsWithSize = SKELETON_VARIANTS.filter(function (v) {
136
+ return [
137
+ "button",
138
+ "avatar",
139
+ "badge",
140
+ "input",
141
+ "tableRow",
142
+ "select",
143
+ "icon",
144
+ "text",
145
+ "heading",
146
+ ].includes(v);
147
+ });
141
148
  if (context.argTypes && context.argTypes.size) {
142
149
  // Hide size control for variants that don't support it
143
150
  if (!variantsWithSize.includes(currentVariant !== null && currentVariant !== void 0 ? currentVariant : "")) {
@@ -277,7 +284,7 @@ var Template = function (args) {
277
284
  };
278
285
  export var Default = Template.bind({});
279
286
  // Button Skeletons - All Sizes
280
- export var ButtonSkeletons = function () { return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Button Skeleton Sizes" }), _jsx("div", { className: "flex flex-col gap-4", children: Object.keys(buttonStyles.size).map(function (size) { return (_jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: size.toUpperCase() }), _jsx(Skeleton.Button, { size: size })] }, size)); }) })] }), _jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Custom Width" }), _jsx(Skeleton.Button, { className: "w-64" })] })] })); };
287
+ export var ButtonSkeletons = function () { return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Button Skeleton Sizes" }), _jsx("div", { className: "flex flex-col gap-4", children: Object.keys(buttonStyles.size).map(function (size) { return (_jsxs("div", { children: [_jsx("p", { children: size.toUpperCase() }), _jsx(Skeleton.Button, { size: size })] }, size)); }) })] }), _jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Custom Width" }), _jsx(Skeleton.Button, { className: "w-64" })] })] })); };
281
288
  ButtonSkeletons.parameters = {
282
289
  docs: {
283
290
  description: {
@@ -286,7 +293,7 @@ ButtonSkeletons.parameters = {
286
293
  },
287
294
  };
288
295
  // Input Skeletons - All Sizes
289
- export var InputSkeletons = function () { return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Small Input" }), _jsx(Skeleton.Input, { size: "sm" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Medium Input" }), _jsx(Skeleton.Input, { size: "md" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Large Input (Default)" }), _jsx(Skeleton.Input, { size: "lg" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Custom Width" }), _jsx(Skeleton.Input, { className: "w-1/2" })] })] })); };
296
+ export var InputSkeletons = function () { return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx(Body, { children: "Small Input" }), _jsx(Skeleton.Input, { size: "sm" })] }), _jsxs("div", { children: [_jsx(Body, { children: "Medium Input" }), _jsx(Skeleton.Input, { size: "md" })] }), _jsxs("div", { children: [_jsx(Body, { children: "Large Input (Default)" }), _jsx(Skeleton.Input, { size: "lg" })] }), _jsxs("div", { children: [_jsx(Body, { children: "Custom Width" }), _jsx(Skeleton.Input, { className: "w-1/2" })] })] })); };
290
297
  InputSkeletons.parameters = {
291
298
  docs: {
292
299
  description: {
@@ -295,7 +302,10 @@ InputSkeletons.parameters = {
295
302
  },
296
303
  };
297
304
  // Avatar Skeletons - All Sizes
298
- export var AvatarSkeletons = function () { return (_jsxs("div", { className: "space-y-4", children: [_jsx("div", { className: "flex items-center gap-4 flex-wrap", children: ["4xs", "3xs", "2xs", "xs", "sm", "md", "lg", "xl"].map(function (size) { return (_jsxs("div", { className: "flex flex-col items-center gap-2", children: [_jsx(Skeleton.Avatar, { size: size }), _jsx("span", { className: "text-xs text-gray-500", children: size })] }, size)); }) }), _jsx("div", { className: "flex items-center gap-4 flex-wrap", children: ["2xl", "3xl", "4xl", "5xl", "huge", "massive"].map(function (size) { return (_jsxs("div", { className: "flex flex-col items-center gap-2", children: [_jsx(Skeleton.Avatar, { size: size }), _jsx("span", { className: "text-xs text-gray-500", children: size })] }, size)); }) })] })); };
305
+ export var AvatarSkeletons = function () {
306
+ var allAvatarSizes = Object.keys(avatarSize);
307
+ return (_jsx("div", { className: "space-y-4", children: _jsx("div", { className: "flex items-center gap-4 flex-wrap", children: allAvatarSizes.map(function (size) { return (_jsxs("div", { className: "flex flex-col items-center gap-2", children: [_jsx(Skeleton.Avatar, { size: size }), _jsx("span", { className: "text-xs text-gray-500", children: size })] }, size)); }) }) }));
308
+ };
299
309
  AvatarSkeletons.parameters = {
300
310
  docs: {
301
311
  description: {
@@ -304,7 +314,7 @@ AvatarSkeletons.parameters = {
304
314
  },
305
315
  };
306
316
  // Badge Skeletons - All Sizes
307
- export var BadgeSkeletons = function () { return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Small Badge" }), _jsx(Skeleton.Badge, { size: "sm" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Medium Badge (Default)" }), _jsx(Skeleton.Badge, { size: "md" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Large Badge" }), _jsx(Skeleton.Badge, { size: "lg" })] })] })); };
317
+ export var BadgeSkeletons = function () { return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx(Body, { children: "Small Badge" }), _jsx(Skeleton.Badge, { size: "sm" })] }), _jsxs("div", { children: [_jsx(Body, { children: "Medium Badge (Default)" }), _jsx(Skeleton.Badge, { size: "md" })] }), _jsxs("div", { children: [_jsx(Body, { children: "Large Badge" }), _jsx(Skeleton.Badge, { size: "lg" })] })] })); };
308
318
  BadgeSkeletons.parameters = {
309
319
  docs: {
310
320
  description: {
@@ -313,7 +323,7 @@ BadgeSkeletons.parameters = {
313
323
  },
314
324
  };
315
325
  // Card Skeleton
316
- export var CardSkeleton = function () { return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Default Card Skeleton" }), _jsx(Skeleton.Card, {})] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Custom Height" }), _jsx(Skeleton.Card, { className: "h-64" })] })] })); };
326
+ export var CardSkeleton = function () { return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx(Body, { children: "Default Card Skeleton" }), _jsx(Skeleton.Card, {})] }), _jsxs("div", { children: [_jsx(Body, { children: "Custom Height" }), _jsx(Skeleton.Card, { className: "h-64" })] })] })); };
317
327
  CardSkeleton.parameters = {
318
328
  docs: {
319
329
  description: {
@@ -322,7 +332,7 @@ CardSkeleton.parameters = {
322
332
  },
323
333
  };
324
334
  // Table Row Skeletons
325
- export var TableRowSkeletons = function () { return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "3 Columns - Small" }), _jsx(Skeleton.TableRow, { columns: 3, size: "sm" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "4 Columns - Medium" }), _jsx(Skeleton.TableRow, { columns: 4, size: "md" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "5 Columns - Large" }), _jsx(Skeleton.TableRow, { columns: 5, size: "lg" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Full Table Example" }), _jsxs("div", { className: "space-y-2", children: [_jsx(Skeleton.TableRow, { columns: 4, size: "md" }), _jsx(Skeleton.TableRow, { columns: 4, size: "md" }), _jsx(Skeleton.TableRow, { columns: 4, size: "md" })] })] })] })); };
335
+ export var TableRowSkeletons = function () { return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx(Body, { children: "3 Columns - Small" }), _jsx(Skeleton.TableRow, { columns: 3, size: "sm" })] }), _jsxs("div", { children: [_jsx(Body, { children: "4 Columns - Medium" }), _jsx(Skeleton.TableRow, { columns: 4, size: "md" })] }), _jsxs("div", { children: [_jsx(Body, { children: "5 Columns - Large" }), _jsx(Skeleton.TableRow, { columns: 5, size: "lg" })] }), _jsxs("div", { children: [_jsx(Body, { children: "Full Table Example" }), _jsxs("div", { className: "space-y-2", children: [_jsx(Skeleton.TableRow, { columns: 4, size: "md" }), _jsx(Skeleton.TableRow, { columns: 4, size: "md" }), _jsx(Skeleton.TableRow, { columns: 4, size: "md" })] })] })] })); };
326
336
  TableRowSkeletons.parameters = {
327
337
  docs: {
328
338
  description: {
@@ -331,7 +341,7 @@ TableRowSkeletons.parameters = {
331
341
  },
332
342
  };
333
343
  // Form Elements Skeletons
334
- export var FormElementsSkeletons = function () { return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Checkbox" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Skeleton.Checkbox, {}), _jsx(Skeleton, { className: "h-4 w-24" })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Switch" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Skeleton.Switch, {}), _jsx(Skeleton, { className: "h-4 w-32" })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Select/Dropdown" }), _jsxs("div", { className: "space-y-2", children: [_jsx(Skeleton.Select, { size: "sm" }), _jsx(Skeleton.Select, { size: "md" }), _jsx(Skeleton.Select, { size: "lg" })] })] })] })); };
344
+ export var FormElementsSkeletons = function () { return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Checkbox" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Skeleton.Checkbox, {}), _jsx(Skeleton, { className: "h-4 w-24" })] })] }), _jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Switch" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Skeleton.Switch, {}), _jsx(Skeleton, { className: "h-4 w-32" })] })] }), _jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Select/Dropdown" }), _jsxs("div", { className: "space-y-2", children: [_jsx(Skeleton.Select, { size: "sm" }), _jsx(Skeleton.Select, { size: "md" }), _jsx(Skeleton.Select, { size: "lg" })] })] })] })); };
335
345
  FormElementsSkeletons.parameters = {
336
346
  docs: {
337
347
  description: {
@@ -349,7 +359,7 @@ IconSkeletons.parameters = {
349
359
  },
350
360
  };
351
361
  // Text Skeletons
352
- export var TextSkeletons = function () { return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Text Sizes" }), _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Extra Small (xs)" }), _jsx(Skeleton.Text, { lines: 1, size: "xs" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Small (sm)" }), _jsx(Skeleton.Text, { lines: 1, size: "sm" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Medium (md) - Default" }), _jsx(Skeleton.Text, { lines: 1, size: "md" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Large (lg)" }), _jsx(Skeleton.Text, { lines: 1, size: "lg" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Extra Large (xl)" }), _jsx(Skeleton.Text, { lines: 1, size: "xl" })] })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Multi-line Text" }), _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Two Lines" }), _jsx(Skeleton.Text, { lines: 2 })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Three Lines" }), _jsx(Skeleton.Text, { lines: 3 })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Five Lines" }), _jsx(Skeleton.Text, { lines: 5 })] })] })] })] })); };
362
+ export var TextSkeletons = function () { return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Text Sizes" }), _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx(Body, { children: "Extra Small (xs)" }), _jsx(Skeleton.Text, { lines: 1, size: "xs" })] }), _jsxs("div", { children: [_jsx(Body, { children: "Small (sm)" }), _jsx(Skeleton.Text, { lines: 1, size: "sm" })] }), _jsxs("div", { children: [_jsx(Body, { children: "Medium (md) - Default" }), _jsx(Skeleton.Text, { lines: 1, size: "md" })] }), _jsxs("div", { children: [_jsx(Body, { children: "Large (lg)" }), _jsx(Skeleton.Text, { lines: 1, size: "lg" })] }), _jsxs("div", { children: [_jsx(Body, { children: "Extra Large (xl)" }), _jsx(Skeleton.Text, { lines: 1, size: "xl" })] })] })] }), _jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Multi-line Text" }), _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx(Body, { children: "Two Lines" }), _jsx(Skeleton.Text, { lines: 2 })] }), _jsxs("div", { children: [_jsx(Body, { children: "Three Lines" }), _jsx(Skeleton.Text, { lines: 3 })] }), _jsxs("div", { children: [_jsx(Body, { children: "Five Lines" }), _jsx(Skeleton.Text, { lines: 5 })] })] })] })] })); };
353
363
  TextSkeletons.parameters = {
354
364
  docs: {
355
365
  description: {
@@ -358,7 +368,7 @@ TextSkeletons.parameters = {
358
368
  },
359
369
  };
360
370
  // Heading Skeletons
361
- export var HeadingSkeletons = function () { return (_jsx("div", { className: "space-y-6", children: _jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Heading Sizes" }), _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "H1 - Largest" }), _jsx(Skeleton.Heading, { size: "h1" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "H2 - Default" }), _jsx(Skeleton.Heading, { size: "h2" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "H3" }), _jsx(Skeleton.Heading, { size: "h3" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "H4" }), _jsx(Skeleton.Heading, { size: "h4" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "H5" }), _jsx(Skeleton.Heading, { size: "h5" })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "H6 - Smallest" }), _jsx(Skeleton.Heading, { size: "h6" })] })] })] }) })); };
371
+ export var HeadingSkeletons = function () { return (_jsx("div", { className: "space-y-6", children: _jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Heading Sizes" }), _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsx(Body, { children: "H1 - Largest" }), _jsx(Skeleton.Heading, { size: "h1" })] }), _jsxs("div", { children: [_jsx(Body, { children: "H2 - Default" }), _jsx(Skeleton.Heading, { size: "h2" })] }), _jsxs("div", { children: [_jsx(Body, { children: "H3" }), _jsx(Skeleton.Heading, { size: "h3" })] }), _jsxs("div", { children: [_jsx(Body, { children: "H4" }), _jsx(Skeleton.Heading, { size: "h4" })] }), _jsxs("div", { children: [_jsx(Body, { children: "H5" }), _jsx(Skeleton.Heading, { size: "h5" })] }), _jsxs("div", { children: [_jsx(Body, { children: "H6 - Smallest" }), _jsx(Skeleton.Heading, { size: "h6" })] })] })] }) })); };
362
372
  HeadingSkeletons.parameters = {
363
373
  docs: {
364
374
  description: {
@@ -367,7 +377,7 @@ HeadingSkeletons.parameters = {
367
377
  },
368
378
  };
369
379
  // Image Skeletons
370
- export var ImageSkeletons = function () { return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Square Aspect Ratio" }), _jsx("div", { className: "w-64", children: _jsx(Skeleton.Image, { aspectRatio: "square" }) })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Video Aspect Ratio (16:9)" }), _jsx("div", { className: "w-64", children: _jsx(Skeleton.Image, { aspectRatio: "video" }) })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Portrait Aspect Ratio (3:4)" }), _jsx("div", { className: "w-48", children: _jsx(Skeleton.Image, { aspectRatio: "portrait" }) })] }), _jsxs("div", { children: [_jsx("p", { className: "mb-2 text-sm font-medium", children: "Icon Scale Variations" }), _jsxs("div", { className: "flex gap-6 flex-wrap", children: [_jsxs("div", { className: "w-40", children: [_jsx("p", { className: "text-xs mb-1", children: "Scale: sm" }), _jsx(Skeleton.Image, { aspectRatio: "square" })] }), _jsxs("div", { className: "w-40", children: [_jsx("p", { className: "text-xs mb-1", children: "Scale: md" }), _jsx(Skeleton.Image, { aspectRatio: "square" })] }), _jsxs("div", { className: "w-40", children: [_jsx("p", { className: "text-xs mb-1", children: "Scale: lg" }), _jsx(Skeleton.Image, { aspectRatio: "square" })] }), _jsxs("div", { className: "w-40", children: [_jsx("p", { className: "text-xs mb-1", children: "Scale: auto (responsive)" }), _jsx(Skeleton.Image, { aspectRatio: "square" })] })] })] })] })); };
380
+ export var ImageSkeletons = function () { return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx(Body, { children: "Square Aspect Ratio" }), _jsx("div", { className: "w-64", children: _jsx(Skeleton.Image, { aspectRatio: "square" }) })] }), _jsxs("div", { children: [_jsx(Body, { children: "Video Aspect Ratio (16:9)" }), _jsx("div", { className: "w-64", children: _jsx(Skeleton.Image, { aspectRatio: "video" }) })] }), _jsxs("div", { children: [_jsx(Body, { children: "Portrait Aspect Ratio (3:4)" }), _jsx("div", { className: "w-48", children: _jsx(Skeleton.Image, { aspectRatio: "portrait" }) })] }), _jsxs("div", { children: [_jsx(Body, { children: "Icon Scale Variations" }), _jsxs("div", { className: "flex gap-6 flex-wrap", children: [_jsxs("div", { className: "w-40", children: [_jsx(Body, { children: "Scale: sm" }), _jsx(Skeleton.Image, { aspectRatio: "square" })] }), _jsxs("div", { className: "w-40", children: [_jsx(Body, { children: "Scale: md" }), _jsx(Skeleton.Image, { aspectRatio: "square" })] }), _jsxs("div", { className: "w-40", children: [_jsx(Body, { children: "Scale: lg" }), _jsx(Skeleton.Image, { aspectRatio: "square" })] }), _jsxs("div", { className: "w-40", children: [_jsx(Body, { children: "Scale: auto (responsive)" }), _jsx(Skeleton.Image, { aspectRatio: "square" })] })] })] })] })); };
371
381
  ImageSkeletons.parameters = {
372
382
  docs: {
373
383
  description: {
@@ -394,7 +404,7 @@ CompleteFormExample.parameters = {
394
404
  },
395
405
  };
396
406
  // All Variants Together
397
- export var AllVariants = function () { return (_jsxs("div", { className: "space-y-8", children: [_jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Buttons" }), _jsxs("div", { className: "flex gap-4", children: [_jsx(Skeleton.Button, { size: "sm" }), _jsx(Skeleton.Button, { size: "md" }), _jsx(Skeleton.Button, { size: "lg" })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Inputs & Selects" }), _jsxs("div", { className: "space-y-2 max-w-md", children: [_jsx(Skeleton.Input, { size: "sm" }), _jsx(Skeleton.Input, { size: "md" }), _jsx(Skeleton.Select, { size: "lg" })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Avatars" }), _jsxs("div", { className: "flex gap-4 items-center", children: [_jsx(Skeleton.Avatar, { size: "sm" }), _jsx(Skeleton.Avatar, { size: "md" }), _jsx(Skeleton.Avatar, { size: "lg" }), _jsx(Skeleton.Avatar, { size: "xl" })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Badges" }), _jsxs("div", { className: "flex gap-4 items-center", children: [_jsx(Skeleton.Badge, { size: "sm" }), _jsx(Skeleton.Badge, { size: "md" }), _jsx(Skeleton.Badge, { size: "lg" })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Form Controls" }), _jsxs("div", { className: "flex gap-4 items-center", children: [_jsx(Skeleton.Checkbox, {}), _jsx(Skeleton.Switch, {}), _jsx(Skeleton.Icon, { size: "md" })] })] }), _jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Text" }), _jsx("div", { className: "max-w-md", children: _jsx(Skeleton.Text, { lines: 3 }) })] }), _jsxs("div", { children: [_jsx("h3", { className: "mb-4 text-lg font-semibold", children: "Images" }), _jsxs("div", { className: "flex gap-4", children: [_jsx("div", { className: "w-32", children: _jsx(Skeleton.Image, { aspectRatio: "square" }) }), _jsx("div", { className: "w-48", children: _jsx(Skeleton.Image, { aspectRatio: "video" }) })] })] })] })); };
407
+ export var AllVariants = function () { return (_jsxs("div", { className: "space-y-8", children: [_jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Buttons" }), _jsxs("div", { className: "flex gap-4", children: [_jsx(Skeleton.Button, { size: "sm" }), _jsx(Skeleton.Button, { size: "md" }), _jsx(Skeleton.Button, { size: "lg" })] })] }), _jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Inputs & Selects" }), _jsxs("div", { className: "space-y-2 max-w-md", children: [_jsx(Skeleton.Input, { size: "sm" }), _jsx(Skeleton.Input, { size: "md" }), _jsx(Skeleton.Select, { size: "lg" })] })] }), _jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Avatars" }), _jsxs("div", { className: "flex gap-4 items-center", children: [_jsx(Skeleton.Avatar, { size: "sm" }), _jsx(Skeleton.Avatar, { size: "md" }), _jsx(Skeleton.Avatar, { size: "lg" }), _jsx(Skeleton.Avatar, { size: "xl" })] })] }), _jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Badges" }), _jsxs("div", { className: "flex gap-4 items-center", children: [_jsx(Skeleton.Badge, { size: "sm" }), _jsx(Skeleton.Badge, { size: "md" }), _jsx(Skeleton.Badge, { size: "lg" })] })] }), _jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Form Controls" }), _jsxs("div", { className: "flex gap-4 items-center", children: [_jsx(Skeleton.Checkbox, {}), _jsx(Skeleton.Switch, {}), _jsx(Skeleton.Icon, { size: "md" })] })] }), _jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Text" }), _jsx("div", { className: "max-w-md", children: _jsx(Skeleton.Text, { lines: 3 }) })] }), _jsxs("div", { children: [_jsx(Heading, { variant: "h4", children: "Images" }), _jsxs("div", { className: "flex gap-4", children: [_jsx("div", { className: "w-32", children: _jsx(Skeleton.Image, { aspectRatio: "square" }) }), _jsx("div", { className: "w-48", children: _jsx(Skeleton.Image, { aspectRatio: "video" }) })] })] })] })); };
398
408
  AllVariants.parameters = {
399
409
  docs: {
400
410
  description: {
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.10 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.13 | MIT License | https://tailwindcss.com */
2
2
  .main-title {
3
3
  position: relative;
4
4
  z-index: 10;
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.10 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.13 | MIT License | https://tailwindcss.com */
2
2
  .h1 {
3
3
  margin: calc(var(--spacing, 0.25rem) * 0);
4
4
  font-size: var(--text-5xl, 3rem);
@@ -0,0 +1,18 @@
1
+ import * as React from "react";
2
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
3
+ export declare const tabSizes: {
4
+ lg: string;
5
+ md: string;
6
+ sm: string;
7
+ };
8
+ type TabsProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> & {
9
+ size?: keyof typeof tabSizes;
10
+ };
11
+ declare const Tabs: React.FC<TabsProps>;
12
+ declare const TabsHeading: React.FC<{
13
+ children: React.ReactNode;
14
+ }>;
15
+ declare const TabsList: React.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
+ declare const TabsTrigger: React.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
17
+ declare const TabsContent: React.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
18
+ export { Tabs, TabsList, TabsTrigger, TabsContent, TabsHeading };
@@ -0,0 +1,60 @@
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 } from "react/jsx-runtime";
24
+ import * as React from "react";
25
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
26
+ import { cn } from "../../lib/utils";
27
+ import { Heading } from "../Typography/Heading/heading";
28
+ export var tabSizes = {
29
+ lg: "!px-5 !py-3 !text-base font-normal",
30
+ md: "!px-5 !py-2.5 !text-sm font-normal",
31
+ sm: "!px-3 !py-2 !text-sm font-normal",
32
+ };
33
+ var TabsContext = React.createContext({
34
+ size: "md",
35
+ });
36
+ var Tabs = function (_a) {
37
+ var _b = _a.size, size = _b === void 0 ? "md" : _b, children = _a.children, props = __rest(_a, ["size", "children"]);
38
+ return (_jsx(TabsContext.Provider, { value: { size: size }, children: _jsx(TabsPrimitive.Root, __assign({}, props, { children: children })) }));
39
+ };
40
+ var TabsHeading = function (_a) {
41
+ var children = _a.children;
42
+ return (_jsx(Heading, { variant: "h6-500", className: "bg-gray-900 !px-5 !py-3 rounded-t-md !text-gray-50 shadow-lg", children: children }));
43
+ };
44
+ var TabsList = React.forwardRef(function (_a, ref) {
45
+ var className = _a.className, props = __rest(_a, ["className"]);
46
+ return (_jsx(TabsPrimitive.List, __assign({ ref: ref, className: cn("flex flex-col h-full items-start justify-start bg-gray-50 text-gray-950 !p-1 shadow-lg", className) }, props)));
47
+ });
48
+ TabsList.displayName = TabsPrimitive.List.displayName;
49
+ var TabsTrigger = React.forwardRef(function (_a, ref) {
50
+ var className = _a.className, props = __rest(_a, ["className"]);
51
+ var size = React.useContext(TabsContext).size;
52
+ return (_jsx(TabsPrimitive.Trigger, __assign({ ref: ref, className: cn("inline-flex items-center justify-start whitespace-nowrap !rounded-md font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 w-full text-left !text-gray-950 hover:bg-gray-50 data-[state=active]:!text-gray-50 data-[state=active]:bg-gray-950", tabSizes[size], className) }, props)));
53
+ });
54
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
55
+ var TabsContent = React.forwardRef(function (_a, ref) {
56
+ var className = _a.className, props = __rest(_a, ["className"]);
57
+ return (_jsx(TabsPrimitive.Content, __assign({ ref: ref, className: cn("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", className) }, props)));
58
+ });
59
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
60
+ export { Tabs, TabsList, TabsTrigger, TabsContent, TabsHeading };
@@ -0,0 +1,11 @@
1
+ import type { Meta } from "@storybook/react";
2
+ declare const _default: Meta;
3
+ export default _default;
4
+ export declare const _VerticalTabs: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, any>;
5
+ export declare const VerticalTabsSmall: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, any>;
6
+ export declare const VerticalTabsMedium: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, any>;
7
+ export declare const VerticalTabsLarge: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, any>;
8
+ export declare const VerticalTabsWithoutHeading: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, any>;
9
+ export declare const VerticalTabsWithIcon: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, any>;
10
+ export declare const VerticalTabsWithBadge: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, any>;
11
+ export declare const VerticalTabsWithIconAndBadge: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, any>;
@@ -0,0 +1,100 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Tabs, TabsContent, TabsList, tabSizes, TabsTrigger, TabsHeading, } from "./VerticalTabs";
3
+ import LUIcon from "../Icons/LUIcon";
4
+ import { Badge } from "../Badge/Badge";
5
+ export default {
6
+ title: "Components/VerticalTabs",
7
+ component: Tabs,
8
+ tags: ["autodocs"],
9
+ argTypes: {
10
+ children: {
11
+ description: "Pass `TabList` components as children. Each item includes an `TabsTrigger` (the clickable label) and `TabsContent`. You can customize both with any valid React nodes \n\nFor more details and usage examples, refer to the [ShadCN Tabs documentation](https://ui.shadcn.com/docs/components/tabs).",
12
+ table: {
13
+ type: { summary: "React.ReactNode" },
14
+ },
15
+ },
16
+ heading: {
17
+ description: "Optional heading displayed at the top of the Tabs.",
18
+ table: {
19
+ type: { summary: "string" },
20
+ },
21
+ },
22
+ size: {
23
+ control: { type: "select" },
24
+ options: Object.keys(tabSizes),
25
+ description: "Size of the Tabs component",
26
+ table: {
27
+ type: { summary: Object.keys(tabSizes).join(" | ") },
28
+ defaultValue: { summary: "md" },
29
+ },
30
+ },
31
+ },
32
+ };
33
+ var Template = function (args) { return (_jsxs(Tabs, { defaultValue: "account", size: args.size, children: [args.heading && _jsx(TabsHeading, { children: args.heading }), _jsx(TabsList, { children: args.triggers }), _jsx(TabsContent, { value: "account", children: "Account Settings" }), _jsx(TabsContent, { value: "password", children: "Change Password" })] })); };
34
+ export var _VerticalTabs = Template.bind({});
35
+ _VerticalTabs.args = {
36
+ heading: "Tab Title",
37
+ triggers: [
38
+ _jsx(TabsTrigger, { value: "account", children: "Account" }, "account"),
39
+ _jsx(TabsTrigger, { value: "password", children: "Password" }, "password"),
40
+ ],
41
+ size: "md",
42
+ };
43
+ export var VerticalTabsSmall = Template.bind({});
44
+ VerticalTabsSmall.args = {
45
+ heading: "Sm Tabs",
46
+ triggers: [
47
+ _jsx(TabsTrigger, { value: "account", children: "Account" }, "account"),
48
+ _jsx(TabsTrigger, { value: "password", children: "Password" }, "password"),
49
+ ],
50
+ size: "sm",
51
+ };
52
+ export var VerticalTabsMedium = Template.bind({});
53
+ VerticalTabsMedium.args = {
54
+ heading: "Md Tabs",
55
+ triggers: [
56
+ _jsx(TabsTrigger, { value: "account", children: "Account" }, "account"),
57
+ _jsx(TabsTrigger, { value: "password", children: "Password" }, "password"),
58
+ ],
59
+ size: "md",
60
+ };
61
+ export var VerticalTabsLarge = Template.bind({});
62
+ VerticalTabsLarge.args = {
63
+ heading: "Lg Tabs",
64
+ triggers: [
65
+ _jsx(TabsTrigger, { value: "account", children: "Account" }, "account"),
66
+ _jsx(TabsTrigger, { value: "password", children: "Password" }, "password"),
67
+ ],
68
+ size: "lg",
69
+ };
70
+ export var VerticalTabsWithoutHeading = Template.bind({});
71
+ VerticalTabsWithoutHeading.args = {
72
+ triggers: [
73
+ _jsxs(TabsTrigger, { value: "account", children: [_jsx(LUIcon, { icon: "user", size: "md", className: "mr-1" }), "Account"] }, "account"),
74
+ _jsxs(TabsTrigger, { value: "password", children: [_jsx(LUIcon, { icon: "lock", size: "md", className: "mr-1" }), "Password"] }, "password"),
75
+ ],
76
+ };
77
+ export var VerticalTabsWithIcon = Template.bind({});
78
+ VerticalTabsWithIcon.args = {
79
+ heading: "Tab Title",
80
+ triggers: [
81
+ _jsxs(TabsTrigger, { value: "account", children: [_jsx(LUIcon, { icon: "user", size: "md", className: "mr-1" }), "Account"] }, "account"),
82
+ _jsxs(TabsTrigger, { value: "password", children: [_jsx(LUIcon, { icon: "lock", size: "md", className: "mr-1" }), "Password"] }, "password"),
83
+ ],
84
+ };
85
+ export var VerticalTabsWithBadge = Template.bind({});
86
+ VerticalTabsWithBadge.args = {
87
+ heading: "Tab Title",
88
+ triggers: [
89
+ _jsxs(TabsTrigger, { value: "account", children: ["Account", _jsx(Badge, { size: "sm", color: "gray", className: "ms-auto", children: "03" })] }, "account"),
90
+ _jsxs(TabsTrigger, { value: "password", children: ["Password", _jsx(Badge, { size: "sm", color: "gray", className: "ms-auto", children: "01" })] }, "password"),
91
+ ],
92
+ };
93
+ export var VerticalTabsWithIconAndBadge = Template.bind({});
94
+ VerticalTabsWithIconAndBadge.args = {
95
+ heading: "Tab Title",
96
+ triggers: [
97
+ _jsxs(TabsTrigger, { value: "account", children: [_jsx(LUIcon, { icon: "user", size: "md", className: "mr-1" }), "Account", _jsx(Badge, { size: "sm", color: "gray", className: "ms-auto", children: "03" })] }, "account"),
98
+ _jsxs(TabsTrigger, { value: "password", children: [_jsx(LUIcon, { icon: "lock", size: "md", className: "mr-1" }), "Password", _jsx(Badge, { size: "sm", color: "gray", className: "ms-auto", children: "01" })] }, "password"),
99
+ ],
100
+ };