linkedunion-design-kit 1.7.7 → 1.7.9

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 (46) hide show
  1. package/dist/index.d.ts +1 -2
  2. package/dist/index.js +1 -2
  3. package/dist/src/components/Avatar/{Avatar.js → Avatar/Avatar.js} +2 -2
  4. package/dist/src/components/Avatar/{Avatar.test.js → Avatar/Avatar.test.js} +1 -1
  5. package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.d.ts +2 -0
  6. package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.js +8 -0
  7. package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.stories.d.ts +7 -0
  8. package/dist/src/components/Avatar/AvatarGroup/AvatarGroup.stories.js +14 -0
  9. package/dist/src/components/Avatar/AvatarGroup/index.d.ts +5 -0
  10. package/dist/src/components/Avatar/AvatarGroup/index.js +27 -0
  11. package/dist/src/components/Avatar/AvatarGroup/type.d.ts +9 -0
  12. package/dist/src/components/Avatar/AvatarGroup/type.js +1 -0
  13. package/dist/src/components/Card/MultipleNews/MultiNews.js +17 -10
  14. package/dist/src/components/Card/MultipleNews/MultiNews.stories.d.ts +1 -0
  15. package/dist/src/components/Card/MultipleNews/MultiNews.stories.js +4 -1
  16. package/dist/src/components/Card/PostByCategory/PostByCategory.stories.js +1 -1
  17. package/dist/src/components/Card/SinglePost/SinglePost.js +1 -1
  18. package/dist/src/components/Card/SinglePost/SinglePost.stories.js +1 -1
  19. package/dist/src/components/Card/card.d.ts +1 -1
  20. package/dist/src/components/Card/card.js +5 -2
  21. package/dist/src/components/Card/contactProfile/ContactProfile.js +2 -2
  22. package/dist/src/components/Card/contactProfile/ContactProfile.stories.js +1 -2
  23. package/dist/src/components/Card/photoAlbum/PhotoAlbum.d.ts +2 -0
  24. package/dist/src/components/Card/photoAlbum/PhotoAlbum.js +16 -0
  25. package/dist/src/components/Card/photoAlbum/PhotoAlbum.stories.d.ts +5 -0
  26. package/dist/src/components/Card/photoAlbum/PhotoAlbum.stories.js +81 -0
  27. package/dist/src/components/Card/{PhotoGallery.d.ts → photoGallery/PhotoGallery.d.ts} +1 -1
  28. package/dist/src/components/Card/photoGallery/PhotoGallery.js +8 -0
  29. package/dist/src/components/Card/{PhotoGallery.stories.d.ts → photoGallery/PhotoGallery.stories.d.ts} +1 -1
  30. package/dist/src/components/Card/{PhotoGallery.stories.js → photoGallery/PhotoGallery.stories.js} +7 -2
  31. package/dist/src/components/Card/type.d.ts +11 -3
  32. package/dist/src/components/Typography/Heading/heading.js +1 -1
  33. package/dist/src/components/ui/avatar.d.ts +6 -0
  34. package/dist/src/components/ui/{tabs.js → avatar.js} +8 -13
  35. package/dist/styles/global.css +137 -12
  36. package/package.json +2 -1
  37. package/dist/src/components/Card/PhotoGallery.js +0 -8
  38. package/dist/src/components/ui/tabs.d.ts +0 -7
  39. package/dist/src/components/Avatar/{Avatar.d.ts → Avatar/Avatar.d.ts} +0 -0
  40. package/dist/src/components/Avatar/{Avatar.stories.d.ts → Avatar/Avatar.stories.d.ts} +0 -0
  41. package/dist/src/components/Avatar/{Avatar.stories.js → Avatar/Avatar.stories.js} +1 -1
  42. /package/dist/src/components/Avatar/{Avatar.test.d.ts → Avatar/Avatar.test.d.ts} +0 -0
  43. /package/dist/src/components/Avatar/{index.d.ts → Avatar/index.d.ts} +0 -0
  44. /package/dist/src/components/Avatar/{index.js → Avatar/index.js} +0 -0
  45. /package/dist/src/components/Avatar/{type.d.ts → Avatar/type.d.ts} +0 -0
  46. /package/dist/src/components/Avatar/{type.js → Avatar/type.js} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { default as LUIcon } from "./src/components/Icons/LUIcon";
2
2
  export { default as Card } from "./src/components/Card/card";
3
3
  export { default as LuImage } from "./src/components/Images/LuImage";
4
- export { default as Avatar } from "./src/components/Avatar/Avatar";
4
+ export { default as Avatar } from "./src/components/Avatar/Avatar/Avatar";
5
5
  export { default as Title } from "./src/components/Title/Title";
6
6
  export { IconButton } from "./src/components/Button/IconButton";
7
7
  export { default as ColorPicker } from "./src/components/ColorPicker/ColorPicker";
@@ -17,7 +17,6 @@ export { Display } from "./src/components/Typography/Display/display";
17
17
  export { Caption } from "./src/components/ui/caption";
18
18
  export { default as Tooltip } from "./src/components/ToolTip/Tooltip";
19
19
  export { Button } from "./src/components/Button/Button";
20
- export { PhotoGallery } from "./src/components/Card/PhotoGallery";
21
20
  export { Label } from "./src/components/Label/Label";
22
21
  export { Slider } from "./src/components/Slider/slider";
23
22
  export { RadioButton } from "./src/components/RadioButton/radio-button";
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { default as LUIcon } from "./src/components/Icons/LUIcon";
2
2
  export { default as Card } from "./src/components/Card/card";
3
3
  export { default as LuImage } from "./src/components/Images/LuImage";
4
- export { default as Avatar } from "./src/components/Avatar/Avatar";
4
+ export { default as Avatar } from "./src/components/Avatar/Avatar/Avatar";
5
5
  export { default as Title } from "./src/components/Title/Title";
6
6
  export { IconButton } from "./src/components/Button/IconButton";
7
7
  export { default as ColorPicker } from "./src/components/ColorPicker/ColorPicker";
@@ -17,7 +17,6 @@ export { Display } from "./src/components/Typography/Display/display";
17
17
  export { Caption } from "./src/components/ui/caption";
18
18
  export { default as Tooltip } from "./src/components/ToolTip/Tooltip";
19
19
  export { Button } from "./src/components/Button/Button";
20
- export { PhotoGallery } from "./src/components/Card/PhotoGallery";
21
20
  export { Label } from "./src/components/Label/Label";
22
21
  export { Slider } from "./src/components/Slider/slider";
23
22
  export { RadioButton } from "./src/components/RadioButton/radio-button";
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
- import LUIcon from "../Icons/LUIcon";
3
2
  import Image from "next/image";
4
- import { avatarPadding, avatarShape, avatarSize } from ".";
3
+ import { avatarPadding, avatarSize, avatarShape } from ".";
4
+ import LUIcon from "../../../components/Icons/LUIcon";
5
5
  var Avatar = function (_a) {
6
6
  var image = _a.image, _b = _a.icon, icon = _b === void 0 ? "user" : _b, _c = _a.shape, shape = _c === void 0 ? "square" : _c, _d = _a.size, size = _d === void 0 ? "md" : _d, className = _a.className;
7
7
  var sizeClasses = avatarSize[size];
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { render, screen } from "@testing-library/react";
3
3
  import Avatar from "./Avatar";
4
- jest.mock("../Icons/LUIcon", function () { return ({
4
+ jest.mock("../../Icons/LUIcon.tsx", function () { return ({
5
5
  __esModule: true,
6
6
  default: jest.fn(function (_a) {
7
7
  var icon = _a.icon, className = _a.className;
@@ -0,0 +1,2 @@
1
+ import { AvatarProps } from "../../../components/Avatar/AvatarGroup/type";
2
+ export declare const AvatarGroup: ({ images }: AvatarProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Avatar, AvatarImage, AvatarFallback } from "../../../components/ui/avatar";
3
+ export var AvatarGroup = function (_a) {
4
+ var images = _a.images;
5
+ var visibleImages = images.slice(0, 2);
6
+ var remainingCount = images.length - visibleImages.length;
7
+ return (_jsxs("div", { className: "flex -space-x-5", children: [visibleImages.map(function (img) { return (_jsx(Avatar, { className: "size-9 !border !border-white !bg-black !shadow-sm", children: _jsx(AvatarImage, { src: img.image, alt: img.name || "Avatar image" }) }, img.id)); }), remainingCount > 0 && (_jsx(Avatar, { className: "size-9 !border !border-white", children: _jsxs(AvatarFallback, { className: "!text-white text-xs font-normal !bg-black !shadow-sm", children: ["+", remainingCount] }) }))] }));
8
+ };
@@ -0,0 +1,7 @@
1
+ import { Meta, StoryFn } from "@storybook/react";
2
+ declare const _default: Meta;
3
+ export default _default;
4
+ export declare const Default: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@storybook/react").Args>;
5
+ export declare const WithFallbacksOnly: StoryFn;
6
+ export declare const CustomSize: StoryFn;
7
+ export declare const WithBackgroundBlack: StoryFn;
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Avatar, AvatarImage, AvatarFallback } from "../../../components/ui/avatar";
3
+ import { avatars } from ".";
4
+ export default {
5
+ title: "Components/Avatar/AvatarGroup",
6
+ component: Avatar,
7
+ tags: ["autodocs"],
8
+ };
9
+ var Template = function () { return (_jsx("div", { className: "flex gap-2", children: avatars.map(function (avatar, idx) { return (_jsxs(Avatar, { children: [_jsx(AvatarImage, { src: avatar.src, alt: avatar.alt }), _jsx(AvatarFallback, { children: avatar.fallback })] }, idx)); }) })); };
10
+ export var Default = Template.bind({});
11
+ Default.storyName = "Avatar Group (Images & Fallbacks)";
12
+ export var WithFallbacksOnly = function () { return (_jsx("div", { className: "*:data-[slot=avatar]:ring-background flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:grayscale", children: ["AA", "BB", "CC", "DD"].map(function (initials, idx) { return (_jsx(Avatar, { children: _jsx(AvatarFallback, { children: initials }) }, idx)); }) })); };
13
+ export var CustomSize = function () { return (_jsx("div", { className: "*:data-[slot=avatar]:ring-background flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:grayscale", children: avatars.slice(0, 3).map(function (avatar, idx) { return (_jsxs(Avatar, { className: "size-12", children: [_jsx(AvatarImage, { src: avatar.src, alt: avatar.alt }), _jsx(AvatarFallback, { children: avatar.fallback })] }, idx)); }) })); };
14
+ export var WithBackgroundBlack = function () { return (_jsx("div", { className: "flex -space-x-2", children: avatars.slice(0, 3).map(function (avatar, idx) { return (_jsxs(Avatar, { className: "size-12 bg-black shadow-sm border-2 border-white", children: [_jsx(AvatarImage, { src: avatar.src, alt: avatar.alt }), _jsx(AvatarFallback, { children: avatar.fallback })] }, idx)); }) })); };
@@ -0,0 +1,5 @@
1
+ export declare const avatars: {
2
+ src: string;
3
+ alt: string;
4
+ fallback: string;
5
+ }[];
@@ -0,0 +1,27 @@
1
+ export var avatars = [
2
+ {
3
+ src: "https://randomuser.me/api/portraits/men/32.jpg",
4
+ alt: "John Doe",
5
+ fallback: "JD",
6
+ },
7
+ {
8
+ src: "https://randomuser.me/api/portraits/women/44.jpg",
9
+ alt: "Jane Smith",
10
+ fallback: "JS",
11
+ },
12
+ {
13
+ src: "",
14
+ alt: "No Image",
15
+ fallback: "NI",
16
+ },
17
+ {
18
+ src: "https://randomuser.me/api/portraits/men/45.jpg",
19
+ alt: "Alex Brown",
20
+ fallback: "AB",
21
+ },
22
+ {
23
+ src: "",
24
+ alt: "No Image",
25
+ fallback: "XY",
26
+ },
27
+ ];
@@ -0,0 +1,9 @@
1
+ export interface ImagesProps {
2
+ id: number;
3
+ image: string;
4
+ name?: string;
5
+ description?: string;
6
+ }
7
+ export interface AvatarProps {
8
+ images: ImagesProps[];
9
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -17,32 +17,39 @@ import { Body } from "../../Typography/Body/body";
17
17
  import { Heading } from "../../Typography/Heading/heading";
18
18
  export var MultiNews = function (_a) {
19
19
  var item = _a.item, image = _a.image, _b = _a.href, href = _b === void 0 ? "https://www.google.com/" : _b, _c = _a.btnLabel, btnLabel = _c === void 0 ? "View More" : _c, editor = _a.editor, _d = _a.mediaPosition, mediaPosition = _d === void 0 ? "right" : _d, orientation = _a.orientation;
20
- // Create modified item with shuffled subtitle and description when mediaPosition is middle
21
- var modifiedItem = mediaPosition === "middle"
22
- ? __assign(__assign({}, item), { description: item.subtitle, subtitle: item.description }) : item;
20
+ // Use destructuring to create cleaner code
21
+ var modifiedItem = item;
22
+ var modifiedEditor = editor;
23
+ // Only swap for middle position
24
+ if (mediaPosition === "middle") {
25
+ // Swap for item
26
+ modifiedItem = __assign(__assign({}, item), { description: item === null || item === void 0 ? void 0 : item.short_description, short_description: item === null || item === void 0 ? void 0 : item.description });
27
+ // Swap for editor
28
+ modifiedEditor = __assign(__assign({}, editor), { cardText: editor === null || editor === void 0 ? void 0 : editor.shortDescription, shortDescription: editor === null || editor === void 0 ? void 0 : editor.cardText });
29
+ }
23
30
  // Common card media component
24
31
  var CardMedia = function (_a) {
25
32
  var _b = _a.className, className = _b === void 0 ? "" : _b;
26
- return (_jsx(LuImage, { src: image, width: 240, height: 240, className: " object-cover w-full ".concat(className, " ").concat(editor === null || editor === void 0 ? void 0 : editor.cardImage), alt: "Image" }));
33
+ return (_jsx(LuImage, { src: image, width: 240, height: 240, className: " object-cover w-full ".concat(className, " ").concat(modifiedEditor === null || modifiedEditor === void 0 ? void 0 : modifiedEditor.cardImage), alt: "Image" }));
27
34
  };
28
35
  // Common content section
29
36
  var CardContent = function (_a) {
30
37
  var _b = _a.className, className = _b === void 0 ? "" : _b;
31
- return (_jsxs("div", { className: "flex flex-col !gap-1 ".concat(className), children: [_jsx(Heading, { variant: "h5-700", className: "line-clamp-1 capitalize ".concat(editor === null || editor === void 0 ? void 0 : editor.cardTitle), children: modifiedItem === null || modifiedItem === void 0 ? void 0 : modifiedItem.title }), _jsx(Body, { variant: "body-xl", className: "".concat(mediaPosition === "middle" ? "line-clamp-1" : "line-clamp-2 h-16", " ").concat(editor === null || editor === void 0 ? void 0 : editor.cardText), children: modifiedItem === null || modifiedItem === void 0 ? void 0 : modifiedItem.description })] }));
38
+ return (_jsxs("div", { className: "flex flex-col !gap-1 ".concat(className), children: [_jsx(Heading, { variant: "h5-700", className: "line-clamp-1 capitalize ".concat(modifiedEditor === null || modifiedEditor === void 0 ? void 0 : modifiedEditor.cardTitle), children: modifiedItem === null || modifiedItem === void 0 ? void 0 : modifiedItem.title }), _jsx(Body, { variant: "body-xl", className: "".concat(mediaPosition === "middle" ? "line-clamp-1" : "line-clamp-2 h-16", " ").concat(modifiedEditor === null || modifiedEditor === void 0 ? void 0 : modifiedEditor.cardText), children: modifiedItem === null || modifiedItem === void 0 ? void 0 : modifiedItem.description })] }));
32
39
  };
33
40
  // Common button component with conditional shape
34
41
  var ActionButton = function (_a) {
35
42
  var _b = _a.className, className = _b === void 0 ? "" : _b;
36
- return (_jsx(Link, { href: href, passHref: true, className: className, children: _jsx(Button, __assign({ endIcon: "angle-right", size: mediaPosition === "middle" ? "xl" : "lg" }, (mediaPosition === "middle" && { shape: "rounded-full" }), { className: "".concat(editor === null || editor === void 0 ? void 0 : editor.cardBtn), children: btnLabel })) }));
43
+ return (_jsx(Link, { href: href, passHref: true, className: className, children: _jsx(Button, __assign({ endIcon: "angle-right", size: mediaPosition === "middle" ? "xl" : "lg" }, (mediaPosition === "middle" && { shape: "rounded-full" }), { className: "".concat(modifiedEditor === null || modifiedEditor === void 0 ? void 0 : modifiedEditor.cardBtn), children: btnLabel })) }));
37
44
  };
38
45
  // Optional subtitle component
39
- var Subtitle = function () { return (_jsx(_Fragment, { children: mediaPosition === "middle" && (_jsx(Body, { variant: "body-xl", className: "line-clamp-4 h-32 ".concat(editor === null || editor === void 0 ? void 0 : editor.cardSubtitle), dangerouslySetInnerHTML: {
40
- __html: modifiedItem.subtitle || "",
46
+ var Subtitle = function () { return (_jsx(_Fragment, { children: mediaPosition === "middle" && (_jsx(Body, { variant: "body-xl", className: "line-clamp-4 h-32 ".concat(modifiedEditor === null || modifiedEditor === void 0 ? void 0 : modifiedEditor.shortDescription), dangerouslySetInnerHTML: {
47
+ __html: modifiedItem.short_description || "",
41
48
  } })) })); };
42
49
  // Horizontal layout
43
50
  if (orientation === "horizontal") {
44
- 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-40 aspect-square rounded-lg" }), _jsxs("div", { className: "flex flex-col !gap-5 w-full", children: [_jsx(CardContent, {}), _jsx(ActionButton, {})] })] }));
51
+ return (_jsxs("div", { className: "!p-5 bg-white rounded-2xl flex ".concat(mediaPosition === "right" ? "flex-row-reverse" : "", " !gap-5 items-center shadow-lg ").concat(modifiedEditor === null || modifiedEditor === void 0 ? void 0 : modifiedEditor.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, {})] })] }));
45
52
  }
46
53
  // Vertical layout
47
- return (_jsxs("div", { className: "p-8 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-5"), children: [_jsx(Subtitle, {}), _jsx(CardMedia, { className: "aspect-16/10" }), _jsx(CardContent, {})] }), _jsx(ActionButton, {})] }));
54
+ return (_jsxs("div", { className: "p-8 bg-white rounded-2xl flex flex-col !gap-5 max-w-md shadow-lg ".concat(modifiedEditor === null || modifiedEditor === void 0 ? void 0 : modifiedEditor.card), children: [_jsxs("div", { className: "flex ".concat(mediaPosition === "top" ? "flex-col" : "flex-col-reverse", " !gap-4"), children: [_jsx(Subtitle, {}), _jsx(CardMedia, { className: "aspect-16/10" }), _jsx(CardContent, {})] }), _jsx(ActionButton, {})] }));
48
55
  };
@@ -7,3 +7,4 @@ export declare const CardHorizontalLeft: Story;
7
7
  export declare const CardHorizontalRight: Story;
8
8
  export declare const CardVerticalTop: Story;
9
9
  export declare const CardVerticalBottom: Story;
10
+ export declare const CardVerticalMiddle: Story;
@@ -25,7 +25,7 @@ var baseCardArgs = {
25
25
  image: Dummy_Image,
26
26
  title: Dummy_Title,
27
27
  description: Dummy_Para,
28
- subtitle: Dummy_Subtitle,
28
+ short_description: Dummy_Subtitle,
29
29
  },
30
30
  image: Dummy_Image,
31
31
  href: Dummy_Url,
@@ -50,3 +50,6 @@ export var CardVerticalTop = {
50
50
  export var CardVerticalBottom = {
51
51
  args: __assign(__assign({}, baseCardArgs), { orientation: "vertical", mediaPosition: "bottom" }),
52
52
  };
53
+ export var CardVerticalMiddle = {
54
+ args: __assign(__assign({}, baseCardArgs), { orientation: "vertical", mediaPosition: "middle" }),
55
+ };
@@ -26,7 +26,7 @@ var baseCardArgs = {
26
26
  image: Dummy_Image,
27
27
  title: Dummy_Title,
28
28
  description: Dummy_Para,
29
- subtitle: Dummy_Subtitle,
29
+ short_description: Dummy_Subtitle,
30
30
  },
31
31
  image: Dummy_Image,
32
32
  href: Dummy_Url,
@@ -6,5 +6,5 @@ import { Body } from "../../Typography/Body/body";
6
6
  import { Button } from "../../Button/Button";
7
7
  export var SinglePost = function (_a) {
8
8
  var item = _a.item, image = _a.image, _b = _a.href, href = _b === void 0 ? "https://www.google.com/" : _b, _c = _a.btnLabel, btnLabel = _c === void 0 ? "View More" : _c, editor = _a.editor, _d = _a.mediaPosition, mediaPosition = _d === void 0 ? "right" : _d;
9
- return (_jsxs("div", { className: " bg-white rounded-3xl grid grid-cols-1 sm:grid-cols-2 overflow-hidden items-stretch shadow-lg ".concat(editor === null || editor === void 0 ? void 0 : editor.card), children: [_jsx(LuImage, { src: image, width: 240, height: 240, className: "w-full h-full ".concat(mediaPosition === "right" ? "order-1" : "", " aspect-5/4 object-cover ").concat(editor === null || editor === void 0 ? void 0 : editor.cardImage), alt: "Image" }), _jsxs("div", { className: "p-9 grid grid-rows-[1fr] items-center !gap-2 ", children: [_jsxs("div", { className: "flex flex-col !gap-3 ", children: [_jsx(Heading, { variant: "h2", className: "line-clamp-1 md:line-clamp-2 ".concat(editor === null || editor === void 0 ? void 0 : editor.cardTitle), children: item === null || item === void 0 ? void 0 : item.title }), _jsx(Body, { variant: "body-xl", className: "line-clamp-2 ".concat(editor === null || editor === void 0 ? void 0 : editor.cardText, " "), children: item === null || item === void 0 ? void 0 : item.description })] }), _jsx(Link, { href: href, passHref: true, children: _jsx(Button, { endIcon: "angle-right", size: "lg", className: "".concat(editor === null || editor === void 0 ? void 0 : editor.cardBtn), children: btnLabel }) })] })] }));
9
+ return (_jsxs("div", { className: " bg-white rounded-3xl grid grid-cols-1 sm:grid-cols-2 overflow-hidden items-stretch !shadow-lg ".concat(editor === null || editor === void 0 ? void 0 : editor.card), children: [_jsx(LuImage, { src: image, width: 240, height: 240, className: "w-full h-full ".concat(mediaPosition === "right" ? "order-1" : "", " aspect-5/4 object-cover ").concat(editor === null || editor === void 0 ? void 0 : editor.cardImage), alt: "Image" }), _jsxs("div", { className: "p-9 grid grid-rows-[1fr] items-center !gap-2 ", children: [_jsxs("div", { className: "flex flex-col !gap-3 ", children: [_jsx(Heading, { variant: "h2", className: "line-clamp-1 md:line-clamp-2 ".concat(editor === null || editor === void 0 ? void 0 : editor.cardTitle), children: item === null || item === void 0 ? void 0 : item.title }), _jsx(Body, { variant: "body-xl", className: "line-clamp-2 ".concat(editor === null || editor === void 0 ? void 0 : editor.cardText, " "), children: item === null || item === void 0 ? void 0 : item.description })] }), _jsx(Link, { href: href, passHref: true, children: _jsx(Button, { endIcon: "angle-right", size: "lg", className: "".concat(editor === null || editor === void 0 ? void 0 : editor.cardBtn), children: btnLabel }) })] })] }));
10
10
  };
@@ -25,7 +25,7 @@ var baseCardArgs = {
25
25
  image: Dummy_Image,
26
26
  title: Dummy_Title,
27
27
  description: Dummy_Para,
28
- subtitle: Dummy_Subtitle,
28
+ short_description: Dummy_Subtitle,
29
29
  },
30
30
  image: Dummy_Image,
31
31
  href: Dummy_Url,
@@ -1,3 +1,3 @@
1
1
  import { CardInterface } from "./type";
2
- declare const Card: ({ item, image, href, btnLabel, editor, mediaPosition, type, orientation, }: CardInterface) => import("react/jsx-runtime").JSX.Element;
2
+ declare const Card: ({ item, image, href, btnLabel, editor, mediaPosition, type, orientation, theme, }: CardInterface) => import("react/jsx-runtime").JSX.Element;
3
3
  export default Card;
@@ -4,10 +4,11 @@ import { PostByCategory } from "./PostByCategory/PostByCategory";
4
4
  import { MultiNews } from "./MultipleNews/MultiNews";
5
5
  import { SinglePost } from "./SinglePost/SinglePost";
6
6
  import { Dummy_Url } from "../../utils/constants";
7
- import { PhotoGallery } from "./PhotoGallery";
8
7
  import { ContactProfile } from "./contactProfile/ContactProfile";
8
+ import { PhotoGallery } from "./photoGallery/PhotoGallery";
9
+ import { PhotoAlbum } from "./photoAlbum/PhotoAlbum";
9
10
  var Card = function (_a) {
10
- var item = _a.item, image = _a.image, _b = _a.href, href = _b === void 0 ? Dummy_Url : _b, _c = _a.btnLabel, btnLabel = _c === void 0 ? "View More" : _c, editor = _a.editor, _d = _a.mediaPosition, mediaPosition = _d === void 0 ? "left" : _d, _e = _a.type, type = _e === void 0 ? "postByCategory" : _e, _f = _a.orientation, orientation = _f === void 0 ? "horizontal" : _f;
11
+ var item = _a.item, image = _a.image, _b = _a.href, href = _b === void 0 ? Dummy_Url : _b, _c = _a.btnLabel, btnLabel = _c === void 0 ? "View More" : _c, editor = _a.editor, _d = _a.mediaPosition, mediaPosition = _d === void 0 ? "left" : _d, _e = _a.type, type = _e === void 0 ? "postByCategory" : _e, _f = _a.orientation, orientation = _f === void 0 ? "horizontal" : _f, _g = _a.theme, theme = _g === void 0 ? "theme1" : _g;
11
12
  var cardProps = {
12
13
  item: item,
13
14
  href: href,
@@ -16,6 +17,7 @@ var Card = function (_a) {
16
17
  editor: editor,
17
18
  mediaPosition: mediaPosition,
18
19
  orientation: orientation,
20
+ theme: theme,
19
21
  };
20
22
  // Using object approach for better performance and cleaner code
21
23
  var cardComponents = {
@@ -24,6 +26,7 @@ var Card = function (_a) {
24
26
  multipleNews: MultiNews,
25
27
  singlePost: SinglePost,
26
28
  photoGallery: PhotoGallery,
29
+ photoAlbum: PhotoAlbum,
27
30
  };
28
31
  return (_jsx(_Fragment, { children: type && cardComponents[type]
29
32
  ? React.createElement(cardComponents[type], cardProps)
@@ -31,8 +31,8 @@ export var ContactProfile = function (_a) {
31
31
  };
32
32
  // Horizontal layout
33
33
  if (orientation === "horizontal") {
34
- return (_jsxs("div", { className: "!p-5 bg-white rounded-xl grid ".concat(safeMediaPosition === "left" ? "sm:grid-cols-[auto_1fr]" : "sm:grid-cols-[1fr_auto]", " max-w-5xl !gap-10 items-center shadow-lg ").concat(editor === null || editor === void 0 ? void 0 : editor.card), children: [_jsx(CardMedia, { className: "".concat(safeMediaPosition === "right" ? "order-3" : "order-1", " w-full max-w-40 aspect-square object-cover") }), _jsxs("div", { className: "flex flex-col !gap-1 md:!gap-5 text-center sm:!text-left h-full justify-center ".concat(safeMediaPosition === "right" ? "order-1" : "order-2"), children: [_jsx(CardContent, {}), _jsx(CardButton, {})] })] }));
34
+ return (_jsxs("div", { className: "!p-5 bg-white rounded-xl flex ".concat(safeMediaPosition === "left" ? "sm:flex-row" : "sm:flex-row-reverse", " max-w-5xl !gap-5 items-center shadow-lg ").concat(editor === null || editor === void 0 ? void 0 : editor.card), children: [_jsx(CardMedia, { className: "".concat(safeMediaPosition === "right" ? "order-3" : "order-1", " w-full max-w-40 aspect-square object-cover") }), _jsxs("div", { className: "flex-1 flex flex-col !gap-1 md:!gap-2.5 text-center sm:!text-left h-full justify-center ".concat(safeMediaPosition === "right" ? "order-1" : "order-2"), children: [_jsx(CardContent, {}), _jsx(CardButton, {})] })] }));
35
35
  }
36
36
  // Vertical layout
37
- return (_jsxs("div", { className: "p-8 bg-white rounded-xl flex flex-col !gap-5 max-w-md items-center shadow-lg ".concat(editor === null || editor === void 0 ? void 0 : editor.card), children: [_jsxs("div", { className: "flex w-full ".concat(safeMediaPosition === "top" ? "flex-col" : "flex-col-reverse", " items-center !gap-5 text-center"), children: [_jsx(CardMedia, { className: "w-full h-full aspect-5/4 object-cover" }), _jsx(CardContent, { className: "h-20" })] }), _jsx(CardButton, {})] }));
37
+ return (_jsxs("div", { className: "p-8 bg-white rounded-xl flex flex-col gap-6 max-w-md items-center shadow-lg ".concat(editor === null || editor === void 0 ? void 0 : editor.card), children: [_jsxs("div", { className: "flex w-full ".concat(safeMediaPosition === "top" ? "flex-col" : "flex-col-reverse", " items-center !gap-5 text-center"), children: [_jsx(CardMedia, { className: "w-full h-full aspect-5/4 object-cover" }), _jsx(CardContent, { className: "h-20" })] }), _jsx(CardButton, {})] }));
38
38
  };
@@ -9,7 +9,7 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import { Dummy_Image, Dummy_Para, Dummy_Subtitle, Dummy_Title, Dummy_Url, } from "../../../utils/constants";
12
+ import { Dummy_Image, Dummy_Para, Dummy_Title, Dummy_Url, } from "../../../utils/constants";
13
13
  import { ContactProfile } from "./ContactProfile";
14
14
  var meta = {
15
15
  title: "Components/NewCard/ContactProfile",
@@ -25,7 +25,6 @@ var baseCardArgs = {
25
25
  image: Dummy_Image,
26
26
  title: Dummy_Title,
27
27
  description: Dummy_Para,
28
- subtitle: Dummy_Subtitle,
29
28
  },
30
29
  image: Dummy_Image,
31
30
  href: Dummy_Url,
@@ -0,0 +1,2 @@
1
+ import { CardInterface } from "../type";
2
+ export declare const PhotoAlbum: ({ image, item, altText, editor, theme, }: CardInterface) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import LuImage from "../../../components/Images/LuImage";
3
+ import { Heading } from "../../../components/Typography/Heading/heading";
4
+ import LUIcon from "../../../components/Icons/LUIcon";
5
+ import { AvatarGroup } from "../../Avatar/AvatarGroup/AvatarGroup";
6
+ export var PhotoAlbum = function (_a) {
7
+ var image = _a.image, item = _a.item, _b = _a.altText, altText = _b === void 0 ? "Photo Album" : _b, editor = _a.editor, theme = _a.theme;
8
+ var hasImages = Array.isArray(item === null || item === void 0 ? void 0 : item.images) && item.images.length > 0;
9
+ return (_jsxs("div", { className: "group relative max-w-md cursor-pointer ".concat(editor === null || editor === void 0 ? void 0 : editor.card, " ").concat(editor === null || editor === void 0 ? void 0 : editor.cardImage), children: [_jsx(LuImage, { src: image, width: 448, height: 448, alt: altText, className: "aspect-square object-cover transition-transform" }), _jsx("div", { className: "absolute inset-0 ".concat(editor === null || editor === void 0 ? void 0 : editor.cardOverlay, " ").concat(theme === "theme1" && "bg-linear-to-t from-black to-transparent") }), theme === "theme2" ? (_jsxs("div", { className: "absolute bottom-0 right-0 w-full bg-black/75 !px-5 !py-3 flex items-center justify-between duration-300\n group-hover:bg-transparent", children: [_jsx(Heading, { variant: "h4-700", className: "line-clamp-1 text-white uppercase ".concat(editor === null || editor === void 0 ? void 0 : editor.cardText), children: item === null || item === void 0 ? void 0 : item.title }), hasImages && (_jsx("div", { children: _jsx(AvatarGroup, { images: ((item === null || item === void 0 ? void 0 : item.images) || []).map(function (img) { return ({
10
+ id: img.gallery_id,
11
+ image: img.gallery_image,
12
+ }); }) }) }))] })) : (_jsxs(_Fragment, { children: [hasImages && (_jsx("div", { className: "absolute top-0 right-0 !px-5 !py-3", children: _jsx(AvatarGroup, { images: ((item === null || item === void 0 ? void 0 : item.images) || []).map(function (img) { return ({
13
+ id: img.gallery_id,
14
+ image: img.gallery_image,
15
+ }); }) }) })), _jsx("div", { className: "absolute !px-5 !py-3 bottom-0", children: _jsx(Heading, { variant: "h4-700", className: "line-clamp-1 text-white uppercase ".concat(editor === null || editor === void 0 ? void 0 : editor.cardText), children: item === null || item === void 0 ? void 0 : item.title }) })] })), _jsx("div", { className: "absolute inset-0 flex items-center justify-center opacity-0 group-hover:!opacity-100 duration-300 ease-out ".concat(theme === "theme2" ? "bg-black/75 origin-bottom scale-y-0 transition-all group-hover:scale-y-100" : "bg-black/30"), children: _jsx(LUIcon, { icon: "magnifying-glass", size: "4xl", className: "".concat(editor === null || editor === void 0 ? void 0 : editor.cardText, " text-gray-100") }) })] }));
16
+ };
@@ -0,0 +1,5 @@
1
+ import { Meta } from "@storybook/react";
2
+ import { CardInterface } from "../type";
3
+ declare const _default: Meta;
4
+ export default _default;
5
+ export declare const Default: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, CardInterface>;
@@ -0,0 +1,81 @@
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 } from "react/jsx-runtime";
13
+ import { Dummy_Image, Dummy_Title } from "../../../utils/constants";
14
+ import Card from "../card";
15
+ import { PhotoAlbum } from "./PhotoAlbum";
16
+ export default {
17
+ title: "Components/NewCard/PhotoAlbum",
18
+ component: PhotoAlbum,
19
+ tags: ["autodocs"],
20
+ };
21
+ var Template = function (args) { return _jsx(Card, __assign({}, args)); };
22
+ export var Default = Template.bind({});
23
+ Default.args = {
24
+ type: "photoAlbum",
25
+ theme: "theme1",
26
+ item: {
27
+ title: Dummy_Title,
28
+ images: [
29
+ {
30
+ gallery_name: "Sample Gallery",
31
+ gallery_image: "https://randomuser.me/api/portraits/men/32.jpg",
32
+ gallery_id: 1,
33
+ description: "This is a sample image description.",
34
+ },
35
+ {
36
+ gallery_name: "Another Gallery",
37
+ gallery_image: "https://randomuser.me/api/portraits/women/44.jpg",
38
+ gallery_id: 2,
39
+ description: "This is another sample image description.",
40
+ },
41
+ {
42
+ gallery_name: "Another Gallery",
43
+ gallery_image: Dummy_Image,
44
+ gallery_id: 2,
45
+ description: "https://randomuser.me/api/portraits/men/45.jpg",
46
+ },
47
+ ],
48
+ },
49
+ image: Dummy_Image,
50
+ editor: {
51
+ card: "",
52
+ cardImage: "",
53
+ cardOverlay: "",
54
+ cardText: "",
55
+ },
56
+ };
57
+ Default.argTypes = {
58
+ type: {
59
+ control: false,
60
+ table: {
61
+ type: { summary: "string" },
62
+ defaultValue: {
63
+ summary: "photoAlbum",
64
+ },
65
+ },
66
+ },
67
+ theme: {
68
+ control: {
69
+ type: "select",
70
+ labels: ["theme1", "theme2"],
71
+ },
72
+ options: ["theme1", "theme2"],
73
+ defaultValue: {
74
+ summary: "theme1",
75
+ },
76
+ },
77
+ href: { control: false },
78
+ btnLabel: { control: false },
79
+ mediaPosition: { control: false },
80
+ orientation: { control: false },
81
+ };
@@ -1,2 +1,2 @@
1
- import { CardInterface } from "./type";
1
+ import { CardInterface } from "../type";
2
2
  export declare const PhotoGallery: ({ image, item, altText, editor, }: CardInterface) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import LuImage from "../../../components/Images/LuImage";
3
+ import { Heading } from "../../../components/Typography/Heading/heading";
4
+ import LUIcon from "../../../components/Icons/LUIcon";
5
+ export var PhotoGallery = function (_a) {
6
+ var image = _a.image, item = _a.item, _b = _a.altText, altText = _b === void 0 ? "Photo Gallery" : _b, editor = _a.editor;
7
+ return (_jsxs("div", { className: "group relative max-w-md cursor-pointer ".concat(editor === null || editor === void 0 ? void 0 : editor.card, " ").concat(editor === null || editor === void 0 ? void 0 : editor.cardImage), children: [_jsx(LuImage, { src: image, width: 448, height: 448, alt: altText, className: "aspect-square object-cover transition-transform" }), _jsx("div", { className: "absolute ".concat(editor === null || editor === void 0 ? void 0 : editor.cardOverlay, " inset-0 bg-linear-to-t from-black to-transparent") }), _jsx(Heading, { variant: "h4-700", className: "absolute line-clamp-1 text-white bottom-4 uppercase !px-5 ".concat(editor === null || editor === void 0 ? void 0 : editor.cardText), children: item === null || item === void 0 ? void 0 : item.title }), _jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/30 opacity-0 group-hover:!opacity-100 transition-opacity duration-300 ease-out", children: _jsx(LUIcon, { icon: "magnifying-glass", size: "4xl", className: "".concat(editor === null || editor === void 0 ? void 0 : editor.cardText, " text-gray-100") }) })] }));
8
+ };
@@ -1,5 +1,5 @@
1
1
  import { Meta } from "@storybook/react";
2
- import { CardInterface } from "./type";
2
+ import { CardInterface } from "../type";
3
3
  declare const _default: Meta;
4
4
  export default _default;
5
5
  export declare const Default: import("@storybook/core/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, CardInterface>;
@@ -10,9 +10,9 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { Dummy_Image, Dummy_Title } from "../../../utils/constants";
14
+ import Card from "../card";
13
15
  import { PhotoGallery } from "./PhotoGallery";
14
- import { Dummy_Image, Dummy_Title } from "../../utils/constants";
15
- import Card from "./card";
16
16
  export default {
17
17
  title: "Components/NewCard/PhotoGallery",
18
18
  component: PhotoGallery,
@@ -43,4 +43,9 @@ Default.argTypes = {
43
43
  },
44
44
  },
45
45
  },
46
+ href: { control: false },
47
+ btnLabel: { control: false },
48
+ mediaPosition: { control: false },
49
+ orientation: { control: false },
50
+ theme: { control: false },
46
51
  };
@@ -4,14 +4,21 @@ export interface EditorInterface {
4
4
  cardTitle?: string;
5
5
  cardText?: string;
6
6
  cardBtn?: string;
7
- cardSubtitle?: string;
7
+ shortDescription?: string;
8
8
  cardOverlay?: string;
9
9
  }
10
+ export interface AlbumGalleryDataProps {
11
+ gallery_name: string;
12
+ gallery_image: string;
13
+ gallery_id: number;
14
+ description: string;
15
+ }
10
16
  export interface CardDataProps {
11
17
  image?: string;
12
18
  title?: string;
13
- subtitle?: string;
19
+ short_description?: string;
14
20
  description?: string;
21
+ images?: AlbumGalleryDataProps[];
15
22
  }
16
23
  export interface CardInterface {
17
24
  mediaPosition?: "top" | "middle" | "bottom" | "left" | "right";
@@ -20,7 +27,8 @@ export interface CardInterface {
20
27
  href?: string;
21
28
  btnLabel?: string;
22
29
  editor?: EditorInterface;
23
- type?: "postByCategory" | "contactProfile" | "multipleNews" | "singlePost" | "photoGallery";
30
+ type?: "postByCategory" | "contactProfile" | "multipleNews" | "singlePost" | "photoGallery" | "photoAlbum";
24
31
  orientation?: "horizontal" | "vertical";
25
32
  altText?: string;
33
+ theme?: "theme1" | "theme2";
26
34
  }
@@ -49,7 +49,7 @@ export var variant = {
49
49
  "h6-600": "!text-lg !font-semibold",
50
50
  "h6-700": "!text-lg !font-bold",
51
51
  };
52
- var headingVariants = cva("!leading-normal !text-black", // Default base class
52
+ var headingVariants = cva("!leading-normal", // Default base class
53
53
  {
54
54
  variants: {
55
55
  variant: variant,
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
3
+ declare function Avatar({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>): import("react/jsx-runtime").JSX.Element;
5
+ declare function AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>): import("react/jsx-runtime").JSX.Element;
6
+ export { Avatar, AvatarImage, AvatarFallback };
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  var __assign = (this && this.__assign) || function () {
3
2
  __assign = Object.assign || function(t) {
4
3
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -22,22 +21,18 @@ var __rest = (this && this.__rest) || function (s, e) {
22
21
  return t;
23
22
  };
24
23
  import { jsx as _jsx } from "react/jsx-runtime";
25
- import * as TabsPrimitive from "@radix-ui/react-tabs";
24
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
26
25
  import { cn } from "../../lib/utils";
27
- function Tabs(_a) {
26
+ function Avatar(_a) {
28
27
  var className = _a.className, props = __rest(_a, ["className"]);
29
- return (_jsx(TabsPrimitive.Root, __assign({ "data-slot": "tabs", className: cn("flex flex-col gap-2", className) }, props)));
28
+ return (_jsx(AvatarPrimitive.Root, __assign({ "data-slot": "avatar", className: cn("relative flex size-8 shrink-0 overflow-hidden rounded-full", className) }, props)));
30
29
  }
31
- function TabsList(_a) {
30
+ function AvatarImage(_a) {
32
31
  var className = _a.className, props = __rest(_a, ["className"]);
33
- return (_jsx(TabsPrimitive.List, __assign({ "data-slot": "tabs-list", className: cn("bg-blue-100 !p-1 rounded-lg", className) }, props)));
32
+ return (_jsx(AvatarPrimitive.Image, __assign({ "data-slot": "avatar-image", className: cn("aspect-square size-full", className) }, props)));
34
33
  }
35
- function TabsTrigger(_a) {
34
+ function AvatarFallback(_a) {
36
35
  var className = _a.className, props = __rest(_a, ["className"]);
37
- return (_jsx(TabsPrimitive.Trigger, __assign({ "data-slot": "tabs-trigger", className: cn("!py-2 !px-3 transition-all !rounded-sm !text-sm !font-normal !leading-5 w-1/2 max-sm:w-full", "data-[state=active]:bg-blue-600 data-[state=active]:text-blue-50", "data-[state=inactive]:bg-blue-100 data-[state=inactive]:text-blue-600", className) }, props)));
36
+ return (_jsx(AvatarPrimitive.Fallback, __assign({ "data-slot": "avatar-fallback", className: cn("bg-muted flex size-full items-center justify-center rounded-full", className) }, props)));
38
37
  }
39
- function TabsContent(_a) {
40
- var className = _a.className, props = __rest(_a, ["className"]);
41
- return (_jsx(TabsPrimitive.Content, __assign({ "data-slot": "tabs-content", className: cn("flex-1 outline-none", className) }, props)));
42
- }
43
- export { Tabs, TabsList, TabsTrigger, TabsContent };
38
+ export { Avatar, AvatarImage, AvatarFallback };
@@ -215,9 +215,18 @@
215
215
  .inset-0 {
216
216
  inset: calc(var(--spacing) * 0);
217
217
  }
218
+ .top-0 {
219
+ top: calc(var(--spacing) * 0);
220
+ }
218
221
  .top-1\/2 {
219
222
  top: calc(1/2 * 100%);
220
223
  }
224
+ .right-0 {
225
+ right: calc(var(--spacing) * 0);
226
+ }
227
+ .bottom-0 {
228
+ bottom: calc(var(--spacing) * 0);
229
+ }
221
230
  .bottom-4 {
222
231
  bottom: calc(var(--spacing) * 4);
223
232
  }
@@ -437,6 +446,10 @@
437
446
  width: calc(var(--spacing) * 16);
438
447
  height: calc(var(--spacing) * 16);
439
448
  }
449
+ .size-full {
450
+ width: 100%;
451
+ height: 100%;
452
+ }
440
453
  .h-4 {
441
454
  height: calc(var(--spacing) * 4);
442
455
  }
@@ -560,6 +573,9 @@
560
573
  .max-w-40 {
561
574
  max-width: calc(var(--spacing) * 40);
562
575
  }
576
+ .max-w-48 {
577
+ max-width: calc(var(--spacing) * 48);
578
+ }
563
579
  .max-w-\[160px\] {
564
580
  max-width: 160px;
565
581
  }
@@ -593,6 +609,9 @@
593
609
  .origin-\(--radix-tooltip-content-transform-origin\) {
594
610
  transform-origin: var(--radix-tooltip-content-transform-origin);
595
611
  }
612
+ .origin-bottom {
613
+ transform-origin: bottom;
614
+ }
596
615
  .-translate-y-1\/2 {
597
616
  --tw-translate-y: calc(calc(1/2 * 100%) * -1);
598
617
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -601,6 +620,10 @@
601
620
  --tw-translate-y: calc(-50% - 2px);
602
621
  translate: var(--tw-translate-x) var(--tw-translate-y);
603
622
  }
623
+ .scale-y-0 {
624
+ --tw-scale-y: 0%;
625
+ scale: var(--tw-scale-x) var(--tw-scale-y);
626
+ }
604
627
  .rotate-45 {
605
628
  rotate: 45deg;
606
629
  }
@@ -655,12 +678,12 @@
655
678
  .\!gap-3 {
656
679
  gap: calc(var(--spacing) * 3) !important;
657
680
  }
681
+ .\!gap-4 {
682
+ gap: calc(var(--spacing) * 4) !important;
683
+ }
658
684
  .\!gap-5 {
659
685
  gap: calc(var(--spacing) * 5) !important;
660
686
  }
661
- .\!gap-10 {
662
- gap: calc(var(--spacing) * 10) !important;
663
- }
664
687
  .gap-1 {
665
688
  gap: calc(var(--spacing) * 1);
666
689
  }
@@ -693,6 +716,20 @@
693
716
  .gap-x-\[20px\] {
694
717
  column-gap: 20px;
695
718
  }
719
+ .-space-x-2 {
720
+ :where(& > :not(:last-child)) {
721
+ --tw-space-x-reverse: 0;
722
+ margin-inline-start: calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));
723
+ margin-inline-end: calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)));
724
+ }
725
+ }
726
+ .-space-x-5 {
727
+ :where(& > :not(:last-child)) {
728
+ --tw-space-x-reverse: 0;
729
+ margin-inline-start: calc(calc(var(--spacing) * -5) * var(--tw-space-x-reverse));
730
+ margin-inline-end: calc(calc(var(--spacing) * -5) * calc(1 - var(--tw-space-x-reverse)));
731
+ }
732
+ }
696
733
  .space-x-2 {
697
734
  :where(& > :not(:last-child)) {
698
735
  --tw-space-x-reverse: 0;
@@ -762,6 +799,10 @@
762
799
  border-style: var(--tw-border-style);
763
800
  border-width: 1px;
764
801
  }
802
+ .border-2 {
803
+ border-style: var(--tw-border-style);
804
+ border-width: 2px;
805
+ }
765
806
  .\!border-b {
766
807
  border-bottom-style: var(--tw-border-style) !important;
767
808
  border-bottom-width: 1px !important;
@@ -773,6 +814,9 @@
773
814
  .\!border-gray-300 {
774
815
  border-color: #b7babd !important;
775
816
  }
817
+ .\!border-white {
818
+ border-color: #fefefe !important;
819
+ }
776
820
  .border-blue-600 {
777
821
  border-color: #276ab3;
778
822
  }
@@ -785,14 +829,26 @@
785
829
  .border-transparent {
786
830
  border-color: transparent;
787
831
  }
832
+ .border-white {
833
+ border-color: #fefefe;
834
+ }
835
+ .\!bg-black {
836
+ background-color: #0f0f0f !important;
837
+ }
788
838
  .\!bg-primary {
789
839
  background-color: var(--primary) !important;
790
840
  }
791
841
  .bg-background {
792
842
  background-color: var(--background);
793
843
  }
794
- .bg-black\/40 {
795
- background-color: color-mix(in oklab, #0f0f0f 40%, transparent);
844
+ .bg-black {
845
+ background-color: #0f0f0f;
846
+ }
847
+ .bg-black\/30 {
848
+ background-color: color-mix(in oklab, #0f0f0f 30%, transparent);
849
+ }
850
+ .bg-black\/75 {
851
+ background-color: color-mix(in oklab, #0f0f0f 75%, transparent);
796
852
  }
797
853
  .bg-blue-50 {
798
854
  background-color: #fbfcfe;
@@ -1257,12 +1313,12 @@
1257
1313
  .whitespace-nowrap {
1258
1314
  white-space: nowrap;
1259
1315
  }
1260
- .\!text-black {
1261
- color: #0f0f0f !important;
1262
- }
1263
1316
  .\!text-primary-foreground {
1264
1317
  color: var(--primary-foreground) !important;
1265
1318
  }
1319
+ .\!text-white {
1320
+ color: #fefefe !important;
1321
+ }
1266
1322
  .text-blue-50 {
1267
1323
  color: #fbfcfe;
1268
1324
  }
@@ -1485,6 +1541,14 @@
1485
1541
  .opacity-0 {
1486
1542
  opacity: 0%;
1487
1543
  }
1544
+ .\!shadow-lg {
1545
+ --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1)) !important;
1546
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow) !important;
1547
+ }
1548
+ .\!shadow-sm {
1549
+ --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)) !important;
1550
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow) !important;
1551
+ }
1488
1552
  .shadow {
1489
1553
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
1490
1554
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -1597,6 +1661,21 @@
1597
1661
  .running {
1598
1662
  animation-play-state: running;
1599
1663
  }
1664
+ .group-hover\:scale-y-100 {
1665
+ &:is(:where(.group):hover *) {
1666
+ @media (hover: hover) {
1667
+ --tw-scale-y: 100%;
1668
+ scale: var(--tw-scale-x) var(--tw-scale-y);
1669
+ }
1670
+ }
1671
+ }
1672
+ .group-hover\:bg-transparent {
1673
+ &:is(:where(.group):hover *) {
1674
+ @media (hover: hover) {
1675
+ background-color: transparent;
1676
+ }
1677
+ }
1678
+ }
1600
1679
  .group-hover\:\!opacity-100 {
1601
1680
  &:is(:where(.group):hover *) {
1602
1681
  @media (hover: hover) {
@@ -2915,6 +2994,29 @@
2915
2994
  --tw-enter-translate-y: calc(2*var(--spacing));
2916
2995
  }
2917
2996
  }
2997
+ .\*\:data-\[slot\=avatar\]\:ring-2 {
2998
+ :is(& > *) {
2999
+ &[data-slot="avatar"] {
3000
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3001
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3002
+ }
3003
+ }
3004
+ }
3005
+ .\*\:data-\[slot\=avatar\]\:ring-background {
3006
+ :is(& > *) {
3007
+ &[data-slot="avatar"] {
3008
+ --tw-ring-color: var(--background);
3009
+ }
3010
+ }
3011
+ }
3012
+ .\*\:data-\[slot\=avatar\]\:grayscale {
3013
+ :is(& > *) {
3014
+ &[data-slot="avatar"] {
3015
+ --tw-grayscale: grayscale(100%);
3016
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
3017
+ }
3018
+ }
3019
+ }
2918
3020
  .data-\[state\=active\]\:bg-blue-600 {
2919
3021
  &[data-state="active"] {
2920
3022
  background-color: #276ab3;
@@ -3080,14 +3182,14 @@
3080
3182
  grid-template-columns: repeat(4, minmax(0, 1fr));
3081
3183
  }
3082
3184
  }
3083
- .sm\:grid-cols-\[1fr_auto\] {
3185
+ .sm\:flex-row {
3084
3186
  @media (width >= 40rem) {
3085
- grid-template-columns: 1fr auto;
3187
+ flex-direction: row;
3086
3188
  }
3087
3189
  }
3088
- .sm\:grid-cols-\[auto_1fr\] {
3190
+ .sm\:flex-row-reverse {
3089
3191
  @media (width >= 40rem) {
3090
- grid-template-columns: auto 1fr;
3192
+ flex-direction: row-reverse;
3091
3193
  }
3092
3194
  }
3093
3195
  .sm\:\!text-left {
@@ -3108,6 +3210,11 @@
3108
3210
  grid-template-columns: repeat(6, minmax(0, 1fr));
3109
3211
  }
3110
3212
  }
3213
+ .md\:\!gap-2\.5 {
3214
+ @media (width >= 48rem) {
3215
+ gap: calc(var(--spacing) * 2.5) !important;
3216
+ }
3217
+ }
3111
3218
  .md\:\!gap-5 {
3112
3219
  @media (width >= 48rem) {
3113
3220
  gap: calc(var(--spacing) * 5) !important;
@@ -3313,6 +3420,21 @@
3313
3420
  inherits: false;
3314
3421
  initial-value: 0;
3315
3422
  }
3423
+ @property --tw-scale-x {
3424
+ syntax: "*";
3425
+ inherits: false;
3426
+ initial-value: 1;
3427
+ }
3428
+ @property --tw-scale-y {
3429
+ syntax: "*";
3430
+ inherits: false;
3431
+ initial-value: 1;
3432
+ }
3433
+ @property --tw-scale-z {
3434
+ syntax: "*";
3435
+ inherits: false;
3436
+ initial-value: 1;
3437
+ }
3316
3438
  @property --tw-space-y-reverse {
3317
3439
  syntax: "*";
3318
3440
  inherits: false;
@@ -3538,6 +3660,9 @@
3538
3660
  --tw-translate-x: 0;
3539
3661
  --tw-translate-y: 0;
3540
3662
  --tw-translate-z: 0;
3663
+ --tw-scale-x: 1;
3664
+ --tw-scale-y: 1;
3665
+ --tw-scale-z: 1;
3541
3666
  --tw-space-y-reverse: 0;
3542
3667
  --tw-space-x-reverse: 0;
3543
3668
  --tw-border-style: solid;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linkedunion-design-kit",
3
- "version": "1.7.7",
3
+ "version": "1.7.9",
4
4
  "private": false,
5
5
  "files": [
6
6
  "dist",
@@ -41,6 +41,7 @@
41
41
  ],
42
42
  "dependencies": {
43
43
  "@radix-ui/react-accordion": "^1.2.8",
44
+ "@radix-ui/react-avatar": "^1.1.10",
44
45
  "@radix-ui/react-checkbox": "^1.3.1",
45
46
  "@radix-ui/react-label": "^2.1.3",
46
47
  "@radix-ui/react-radio-group": "^1.3.7",
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import LUIcon from "../Icons/LUIcon";
3
- import LuImage from "../Images/LuImage";
4
- import { Heading } from "../Typography/Heading/heading";
5
- export var PhotoGallery = function (_a) {
6
- var image = _a.image, item = _a.item, _b = _a.altText, altText = _b === void 0 ? "Photo Gallery" : _b, editor = _a.editor;
7
- return (_jsxs("div", { className: "group relative max-w-md ".concat(editor === null || editor === void 0 ? void 0 : editor.card, " ").concat(editor === null || editor === void 0 ? void 0 : editor.cardImage), children: [_jsx(LuImage, { src: image, width: 448, height: 448, alt: altText, className: "aspect-square object-cover transition-transform" }), _jsx("div", { className: "absolute ".concat(editor === null || editor === void 0 ? void 0 : editor.cardOverlay, " inset-0 bg-linear-to-t from-black to-transparent") }), _jsx(Heading, { variant: "h4-700", className: "absolute line-clamp-1 text-white bottom-4 uppercase !px-5 ".concat(editor === null || editor === void 0 ? void 0 : editor.cardText), children: item === null || item === void 0 ? void 0 : item.title }), _jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/40 opacity-0 group-hover:!opacity-100 transition-opacity duration-300 ease-out", children: _jsx(LUIcon, { icon: "magnifying-glass", size: "4xl", className: "".concat(editor === null || editor === void 0 ? void 0 : editor.cardText, " text-gray-100") }) })] }));
8
- };
@@ -1,7 +0,0 @@
1
- import * as React from "react";
2
- import * as TabsPrimitive from "@radix-ui/react-tabs";
3
- declare function Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
- declare function TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>): import("react/jsx-runtime").JSX.Element;
5
- declare function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
6
- declare function TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
7
- export { Tabs, TabsList, TabsTrigger, TabsContent };
@@ -10,8 +10,8 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
- import Avatar from "./Avatar";
14
13
  import { avatarShape, avatarSize } from ".";
14
+ import Avatar from "./Avatar";
15
15
  export default {
16
16
  title: "Components/Avatar",
17
17
  component: Avatar,