linkedunion-design-kit 1.7.8 → 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 (44) 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/ui/avatar.d.ts +6 -0
  33. package/dist/src/components/ui/avatar.js +38 -0
  34. package/dist/styles/global.css +137 -9
  35. package/package.json +2 -1
  36. package/dist/src/components/Card/PhotoGallery.js +0 -8
  37. package/dist/src/components/Avatar/{Avatar.d.ts → Avatar/Avatar.d.ts} +0 -0
  38. package/dist/src/components/Avatar/{Avatar.stories.d.ts → Avatar/Avatar.stories.d.ts} +0 -0
  39. package/dist/src/components/Avatar/{Avatar.stories.js → Avatar/Avatar.stories.js} +1 -1
  40. /package/dist/src/components/Avatar/{Avatar.test.d.ts → Avatar/Avatar.test.d.ts} +0 -0
  41. /package/dist/src/components/Avatar/{index.d.ts → Avatar/index.d.ts} +0 -0
  42. /package/dist/src/components/Avatar/{index.js → Avatar/index.js} +0 -0
  43. /package/dist/src/components/Avatar/{type.d.ts → Avatar/type.d.ts} +0 -0
  44. /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
  }
@@ -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 };
@@ -0,0 +1,38 @@
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 AvatarPrimitive from "@radix-ui/react-avatar";
25
+ import { cn } from "../../lib/utils";
26
+ function Avatar(_a) {
27
+ var className = _a.className, props = __rest(_a, ["className"]);
28
+ return (_jsx(AvatarPrimitive.Root, __assign({ "data-slot": "avatar", className: cn("relative flex size-8 shrink-0 overflow-hidden rounded-full", className) }, props)));
29
+ }
30
+ function AvatarImage(_a) {
31
+ var className = _a.className, props = __rest(_a, ["className"]);
32
+ return (_jsx(AvatarPrimitive.Image, __assign({ "data-slot": "avatar-image", className: cn("aspect-square size-full", className) }, props)));
33
+ }
34
+ function AvatarFallback(_a) {
35
+ var className = _a.className, props = __rest(_a, ["className"]);
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)));
37
+ }
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;
@@ -1260,6 +1316,9 @@
1260
1316
  .\!text-primary-foreground {
1261
1317
  color: var(--primary-foreground) !important;
1262
1318
  }
1319
+ .\!text-white {
1320
+ color: #fefefe !important;
1321
+ }
1263
1322
  .text-blue-50 {
1264
1323
  color: #fbfcfe;
1265
1324
  }
@@ -1482,6 +1541,14 @@
1482
1541
  .opacity-0 {
1483
1542
  opacity: 0%;
1484
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
+ }
1485
1552
  .shadow {
1486
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));
1487
1554
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -1594,6 +1661,21 @@
1594
1661
  .running {
1595
1662
  animation-play-state: running;
1596
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
+ }
1597
1679
  .group-hover\:\!opacity-100 {
1598
1680
  &:is(:where(.group):hover *) {
1599
1681
  @media (hover: hover) {
@@ -2912,6 +2994,29 @@
2912
2994
  --tw-enter-translate-y: calc(2*var(--spacing));
2913
2995
  }
2914
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
+ }
2915
3020
  .data-\[state\=active\]\:bg-blue-600 {
2916
3021
  &[data-state="active"] {
2917
3022
  background-color: #276ab3;
@@ -3077,14 +3182,14 @@
3077
3182
  grid-template-columns: repeat(4, minmax(0, 1fr));
3078
3183
  }
3079
3184
  }
3080
- .sm\:grid-cols-\[1fr_auto\] {
3185
+ .sm\:flex-row {
3081
3186
  @media (width >= 40rem) {
3082
- grid-template-columns: 1fr auto;
3187
+ flex-direction: row;
3083
3188
  }
3084
3189
  }
3085
- .sm\:grid-cols-\[auto_1fr\] {
3190
+ .sm\:flex-row-reverse {
3086
3191
  @media (width >= 40rem) {
3087
- grid-template-columns: auto 1fr;
3192
+ flex-direction: row-reverse;
3088
3193
  }
3089
3194
  }
3090
3195
  .sm\:\!text-left {
@@ -3105,6 +3210,11 @@
3105
3210
  grid-template-columns: repeat(6, minmax(0, 1fr));
3106
3211
  }
3107
3212
  }
3213
+ .md\:\!gap-2\.5 {
3214
+ @media (width >= 48rem) {
3215
+ gap: calc(var(--spacing) * 2.5) !important;
3216
+ }
3217
+ }
3108
3218
  .md\:\!gap-5 {
3109
3219
  @media (width >= 48rem) {
3110
3220
  gap: calc(var(--spacing) * 5) !important;
@@ -3310,6 +3420,21 @@
3310
3420
  inherits: false;
3311
3421
  initial-value: 0;
3312
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
+ }
3313
3438
  @property --tw-space-y-reverse {
3314
3439
  syntax: "*";
3315
3440
  inherits: false;
@@ -3535,6 +3660,9 @@
3535
3660
  --tw-translate-x: 0;
3536
3661
  --tw-translate-y: 0;
3537
3662
  --tw-translate-z: 0;
3663
+ --tw-scale-x: 1;
3664
+ --tw-scale-y: 1;
3665
+ --tw-scale-z: 1;
3538
3666
  --tw-space-y-reverse: 0;
3539
3667
  --tw-space-x-reverse: 0;
3540
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.8",
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
- };
@@ -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,