@krrli/cm-designsystem 1.32.2 → 1.33.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/cm-designsystem.css +13 -1
  2. package/dist/components/accessible-button/AccessibleButton.d.ts +33 -0
  3. package/dist/components/accessible-button/AccessibleButton.d.ts.map +1 -0
  4. package/dist/components/avatar/Avatar.d.ts +119 -0
  5. package/dist/components/avatar/Avatar.d.ts.map +1 -0
  6. package/dist/components/branding/BrandingGallery.d.ts +2 -0
  7. package/dist/components/branding/BrandingGallery.d.ts.map +1 -0
  8. package/dist/components/button/Button.d.ts +67 -0
  9. package/dist/components/button/Button.d.ts.map +1 -0
  10. package/dist/components/color/ColorDoc.d.ts +5 -0
  11. package/dist/components/color/ColorDoc.d.ts.map +1 -0
  12. package/dist/components/file-upload/FileUpload.d.ts +84 -0
  13. package/dist/components/file-upload/FileUpload.d.ts.map +1 -0
  14. package/dist/components/form/Form.d.ts +55 -0
  15. package/dist/components/form/Form.d.ts.map +1 -0
  16. package/dist/components/icon-button/IconButton.d.ts +70 -0
  17. package/dist/components/icon-button/IconButton.d.ts.map +1 -0
  18. package/dist/components/icon-button/IconButton.js +1 -0
  19. package/dist/components/icons/IconBase.d.ts +6 -0
  20. package/dist/components/icons/IconBase.d.ts.map +1 -0
  21. package/dist/components/icons/generated/ArrowDown.d.ts +4 -0
  22. package/dist/components/icons/generated/ArrowDown.d.ts.map +1 -0
  23. package/dist/components/icons/generated/ArrowLeft.d.ts +4 -0
  24. package/dist/components/icons/generated/ArrowLeft.d.ts.map +1 -0
  25. package/dist/components/icons/generated/ArrowRight.d.ts +4 -0
  26. package/dist/components/icons/generated/ArrowRight.d.ts.map +1 -0
  27. package/dist/components/icons/generated/ArrowUp.d.ts +4 -0
  28. package/dist/components/icons/generated/ArrowUp.d.ts.map +1 -0
  29. package/dist/components/icons/generated/Calendar.d.ts +4 -0
  30. package/dist/components/icons/generated/Calendar.d.ts.map +1 -0
  31. package/dist/components/icons/generated/Cancel.d.ts +4 -0
  32. package/dist/components/icons/generated/Cancel.d.ts.map +1 -0
  33. package/dist/components/icons/generated/Checkmark.d.ts +4 -0
  34. package/dist/components/icons/generated/Checkmark.d.ts.map +1 -0
  35. package/dist/components/icons/generated/Edit.d.ts +4 -0
  36. package/dist/components/icons/generated/Edit.d.ts.map +1 -0
  37. package/dist/components/icons/generated/Eye.d.ts +4 -0
  38. package/dist/components/icons/generated/Eye.d.ts.map +1 -0
  39. package/dist/components/icons/generated/Fullscreen.d.ts +4 -0
  40. package/dist/components/icons/generated/Fullscreen.d.ts.map +1 -0
  41. package/dist/components/icons/generated/HeartFilled.d.ts +4 -0
  42. package/dist/components/icons/generated/HeartFilled.d.ts.map +1 -0
  43. package/dist/components/icons/generated/HeartOutline.d.ts +4 -0
  44. package/dist/components/icons/generated/HeartOutline.d.ts.map +1 -0
  45. package/dist/components/icons/generated/Location.d.ts +4 -0
  46. package/dist/components/icons/generated/Location.d.ts.map +1 -0
  47. package/dist/components/icons/generated/LogOut.d.ts +4 -0
  48. package/dist/components/icons/generated/LogOut.d.ts.map +1 -0
  49. package/dist/components/icons/generated/Mumble.d.ts +4 -0
  50. package/dist/components/icons/generated/Mumble.d.ts.map +1 -0
  51. package/dist/components/icons/generated/Profile.d.ts +4 -0
  52. package/dist/components/icons/generated/Profile.d.ts.map +1 -0
  53. package/dist/components/icons/generated/ReplyFilled.d.ts +4 -0
  54. package/dist/components/icons/generated/ReplyFilled.d.ts.map +1 -0
  55. package/dist/components/icons/generated/ReplyOutline.d.ts +4 -0
  56. package/dist/components/icons/generated/ReplyOutline.d.ts.map +1 -0
  57. package/dist/components/icons/generated/Repost.d.ts +4 -0
  58. package/dist/components/icons/generated/Repost.d.ts.map +1 -0
  59. package/dist/components/icons/generated/Send.d.ts +4 -0
  60. package/dist/components/icons/generated/Send.d.ts.map +1 -0
  61. package/dist/components/icons/generated/Settings.d.ts +4 -0
  62. package/dist/components/icons/generated/Settings.d.ts.map +1 -0
  63. package/dist/components/icons/generated/Share.d.ts +4 -0
  64. package/dist/components/icons/generated/Share.d.ts.map +1 -0
  65. package/dist/components/icons/generated/Time.d.ts +4 -0
  66. package/dist/components/icons/generated/Time.d.ts.map +1 -0
  67. package/dist/components/icons/generated/Upload.d.ts +4 -0
  68. package/dist/components/icons/generated/Upload.d.ts.map +1 -0
  69. package/dist/components/icons/generated/index.d.ts +25 -0
  70. package/dist/components/icons/generated/index.d.ts.map +1 -0
  71. package/dist/components/index.d.ts +28 -0
  72. package/dist/components/index.d.ts.map +1 -0
  73. package/dist/components/input/Input.d.ts +62 -0
  74. package/dist/components/input/Input.d.ts.map +1 -0
  75. package/dist/components/like-toggle/LikeToggle.d.ts +98 -0
  76. package/dist/components/like-toggle/LikeToggle.d.ts.map +1 -0
  77. package/dist/components/logo-link/LogoLink.d.ts +12 -0
  78. package/dist/components/logo-link/LogoLink.d.ts.map +1 -0
  79. package/dist/components/modal/Modal.d.ts +76 -0
  80. package/dist/components/modal/Modal.d.ts.map +1 -0
  81. package/dist/components/navi-button/NaviButton.d.ts +50 -0
  82. package/dist/components/navi-button/NaviButton.d.ts.map +1 -0
  83. package/dist/components/navi-user-button/NaviUserButton.d.ts +45 -0
  84. package/dist/components/navi-user-button/NaviUserButton.d.ts.map +1 -0
  85. package/dist/components/round-button/RoundButton.d.ts +45 -0
  86. package/dist/components/round-button/RoundButton.d.ts.map +1 -0
  87. package/dist/components/tabs/TabItem.d.ts +12 -0
  88. package/dist/components/tabs/TabItem.d.ts.map +1 -0
  89. package/dist/components/tabs/Tabs.d.ts +68 -0
  90. package/dist/components/tabs/Tabs.d.ts.map +1 -0
  91. package/dist/components/text-link/TextLink.d.ts +10 -0
  92. package/dist/components/text-link/TextLink.d.ts.map +1 -0
  93. package/dist/components/textarea/Textarea.d.ts +49 -0
  94. package/dist/components/textarea/Textarea.d.ts.map +1 -0
  95. package/dist/components/timed-button/TimedButton.d.ts +80 -0
  96. package/dist/components/timed-button/TimedButton.d.ts.map +1 -0
  97. package/dist/components/toggle/Toggle.d.ts +63 -0
  98. package/dist/components/toggle/Toggle.d.ts.map +1 -0
  99. package/dist/components/typography/AccessibleTypography.d.ts +34 -0
  100. package/dist/components/typography/AccessibleTypography.d.ts.map +1 -0
  101. package/dist/components/typography/Heading.d.ts +25 -0
  102. package/dist/components/typography/Heading.d.ts.map +1 -0
  103. package/dist/components/typography/Label.d.ts +23 -0
  104. package/dist/components/typography/Label.d.ts.map +1 -0
  105. package/dist/components/typography/Paragraph.d.ts +23 -0
  106. package/dist/components/typography/Paragraph.d.ts.map +1 -0
  107. package/dist/components/typography/Placeholder.d.ts +18 -0
  108. package/dist/components/typography/Placeholder.d.ts.map +1 -0
  109. package/dist/components/typography/ValidationMessage.d.ts +23 -0
  110. package/dist/components/typography/ValidationMessage.d.ts.map +1 -0
  111. package/dist/components/typography/styles.d.ts +75 -0
  112. package/dist/components/typography/styles.d.ts.map +1 -0
  113. package/dist/compositions/image-banner/ImageBanner.d.ts +55 -0
  114. package/dist/compositions/image-banner/ImageBanner.d.ts.map +1 -0
  115. package/dist/compositions/image-banner/ImageBanner.js +1 -0
  116. package/dist/compositions/image-upload-modal/ImageUploadModal.d.ts +16 -0
  117. package/dist/compositions/image-upload-modal/ImageUploadModal.d.ts.map +1 -0
  118. package/dist/compositions/image-upload-modal/ImageUploadModal.js +1 -0
  119. package/dist/compositions/index.d.ts +12 -0
  120. package/dist/compositions/index.d.ts.map +1 -0
  121. package/dist/compositions/keyword/Keyword.d.ts +40 -0
  122. package/dist/compositions/keyword/Keyword.d.ts.map +1 -0
  123. package/dist/compositions/keyword/Keyword.js +15 -0
  124. package/dist/compositions/post/Post.d.ts +80 -0
  125. package/dist/compositions/post/Post.d.ts.map +1 -0
  126. package/dist/compositions/post/Post.js +19 -5
  127. package/dist/compositions/post-base/PostBase.d.ts +42 -0
  128. package/dist/compositions/post-base/PostBase.d.ts.map +1 -0
  129. package/dist/compositions/post-creator/PostCreator.d.ts +70 -0
  130. package/dist/compositions/post-creator/PostCreator.d.ts.map +1 -0
  131. package/dist/compositions/post-creator/PostCreator.js +1 -0
  132. package/dist/compositions/profile-banner/ProfileBanner.d.ts +83 -0
  133. package/dist/compositions/profile-banner/ProfileBanner.d.ts.map +1 -0
  134. package/dist/compositions/profile-banner/ProfileBanner.js +1 -0
  135. package/dist/compositions/profile-banner-image/ProfileBannerImage.d.ts +55 -0
  136. package/dist/compositions/profile-banner-image/ProfileBannerImage.d.ts.map +1 -0
  137. package/dist/compositions/profile-banner-image/ProfileBannerImage.js +1 -0
  138. package/dist/compositions/profile-banner-info/ProfileBannerInfo.d.ts +93 -0
  139. package/dist/compositions/profile-banner-info/ProfileBannerInfo.d.ts.map +1 -0
  140. package/dist/compositions/profile-banner-info/ProfileBannerInfo.js +1 -0
  141. package/dist/compositions/response/Response.d.ts +80 -0
  142. package/dist/compositions/response/Response.d.ts.map +1 -0
  143. package/dist/compositions/response/Response.js +18 -4
  144. package/dist/compositions/response-creator/ResponseCreator.d.ts +64 -0
  145. package/dist/compositions/response-creator/ResponseCreator.d.ts.map +1 -0
  146. package/dist/compositions/response-creator/ResponseCreator.js +1 -0
  147. package/dist/compositions/user-info/UserInfo.d.ts +76 -0
  148. package/dist/compositions/user-info/UserInfo.d.ts.map +1 -0
  149. package/dist/compositions/user-info/UserInfo.js +11 -2
  150. package/dist/compositions/user-recommendation/UserRecommendation.d.ts +64 -0
  151. package/dist/compositions/user-recommendation/UserRecommendation.d.ts.map +1 -0
  152. package/dist/compositions/user-recommendation/UserRecommendation.js +1 -0
  153. package/dist/compositions/utils/keyword.utils.d.ts +13 -0
  154. package/dist/compositions/utils/keyword.utils.d.ts.map +1 -0
  155. package/dist/compositions/utils/keyword.utils.js +23 -0
  156. package/dist/index.d.ts +3 -0
  157. package/dist/index.d.ts.map +1 -0
  158. package/dist/setupTests.d.ts +1 -0
  159. package/dist/setupTests.d.ts.map +1 -0
  160. package/package.json +22 -21
@@ -0,0 +1,40 @@
1
+ import { ReactNode } from 'react';
2
+ import { VariantProps } from 'tailwind-variants';
3
+ declare const keywordStyles: import('tailwind-variants').TVReturnType<{
4
+ [key: string]: {
5
+ [key: string]: import('tailwind-merge').ClassNameValue | {
6
+ base?: import('tailwind-merge').ClassNameValue;
7
+ };
8
+ };
9
+ } | {
10
+ [x: string]: {
11
+ [x: string]: import('tailwind-merge').ClassNameValue | {
12
+ base?: import('tailwind-merge').ClassNameValue;
13
+ };
14
+ };
15
+ } | {}, {
16
+ base: string[];
17
+ }, undefined, {
18
+ [key: string]: {
19
+ [key: string]: import('tailwind-merge').ClassNameValue | {
20
+ base?: import('tailwind-merge').ClassNameValue;
21
+ };
22
+ };
23
+ } | {}, {
24
+ base: string[];
25
+ }, import('tailwind-variants').TVReturnType<unknown, {
26
+ base: string[];
27
+ }, undefined, unknown, unknown, undefined>>;
28
+ type KeywordVariants = VariantProps<typeof keywordStyles>;
29
+ interface KeywordProps extends KeywordVariants {
30
+ /**
31
+ * The text content displayed as keyword.
32
+ */
33
+ children: ReactNode;
34
+ }
35
+ /**
36
+ * Renders a styled keyword element.
37
+ */
38
+ export declare const Keyword: React.FC<KeywordProps>;
39
+ export {};
40
+ //# sourceMappingURL=Keyword.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Keyword.d.ts","sourceRoot":"","sources":["../../../src/compositions/keyword/Keyword.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG1D,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;2CAIjB,CAAC;AAEH,KAAK,eAAe,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,UAAU,YAAa,SAAQ,eAAe;IAC5C;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAQ1C,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { tv } from "tailwind-variants";
3
+ import { Paragraph } from "../../components/typography/Paragraph.js";
4
+ const keywordStyles = tv({
5
+ slots: {
6
+ base: ["text-violet-600"]
7
+ }
8
+ });
9
+ const Keyword = (props) => {
10
+ const { base } = keywordStyles(props);
11
+ return /* @__PURE__ */ jsx(Paragraph, { as: "span", size: "lg", className: base(), children: props.children });
12
+ };
13
+ export {
14
+ Keyword
15
+ };
@@ -0,0 +1,80 @@
1
+ import { VariantProps } from 'tailwind-variants';
2
+ declare const PostStyles: import('tailwind-variants').TVReturnType<{
3
+ size: {
4
+ lg: {
5
+ base: string[];
6
+ };
7
+ md: {};
8
+ };
9
+ }, {
10
+ base: never[];
11
+ avatar: string[];
12
+ content: string[];
13
+ text: string[];
14
+ action: string[];
15
+ }, undefined, {
16
+ size: {
17
+ lg: {
18
+ base: string[];
19
+ };
20
+ md: {};
21
+ };
22
+ }, {
23
+ base: never[];
24
+ avatar: string[];
25
+ content: string[];
26
+ text: string[];
27
+ action: string[];
28
+ }, import('tailwind-variants').TVReturnType<{
29
+ size: {
30
+ lg: {
31
+ base: string[];
32
+ };
33
+ md: {};
34
+ };
35
+ }, {
36
+ base: never[];
37
+ avatar: string[];
38
+ content: string[];
39
+ text: string[];
40
+ action: string[];
41
+ }, undefined, unknown, unknown, undefined>>;
42
+ type PostVariants = VariantProps<typeof PostStyles>;
43
+ type PostSize = "md" | "lg";
44
+ interface PostProps extends PostVariants {
45
+ /** Size of the post, affecting layout and styling. */
46
+ size: PostSize;
47
+ /** The display name of the user who created the post. */
48
+ displayName: string | undefined;
49
+ /** The username or handle associated with the post. */
50
+ userName: string | undefined;
51
+ /** The date and time when the post was created. */
52
+ timestamp: Date | undefined;
53
+ /** The main text content of the post. */
54
+ text: string | undefined;
55
+ /** Avatar image URL */
56
+ src: string | undefined;
57
+ /** Triggered when the avatar is clicked. */
58
+ onAvatarClick: () => void;
59
+ /** Number of likes the post has received. */
60
+ nbrOfLikes: number;
61
+ /** Number of comments the post has received. */
62
+ nbrOfComments: number;
63
+ /** Optional image source URL displayed within the post. */
64
+ imageSrc?: string | undefined;
65
+ /** Optional alt text for the post image, used for accessibility. */
66
+ imageAlt?: string;
67
+ /** Callback fired when the comment button is clicked. */
68
+ onCommentClick: () => void;
69
+ /** Callback fired when the like button is clicked. */
70
+ onLikeClick: () => void;
71
+ /** Callback fired when the share button is clicked. */
72
+ onShareClick: () => void;
73
+ }
74
+ /**
75
+ * Detailed post component displaying user info, text content,
76
+ * optional image, and action buttons (comment, like, share).
77
+ */
78
+ export declare const Post: React.FC<PostProps>;
79
+ export {};
80
+ //# sourceMappingURL=Post.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Post.d.ts","sourceRoot":"","sources":["../../../src/compositions/post/Post.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAc1D,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAmBd,CAAC;AAEH,KAAK,YAAY,GAAG,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5B,UAAU,SAAU,SAAQ,YAAY;IACtC,sDAAsD;IACtD,IAAI,EAAE,QAAQ,CAAC;IAEf,yDAAyD;IACzD,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC,uDAAuD;IACvD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAE7B,mDAAmD;IACnD,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC;IAE5B,yCAAyC;IACzC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzB,uBAAuB;IACvB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IAExB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IAEnB,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;IAEtB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,yDAAyD;IACzD,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B,sDAAsD;IACtD,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB,uDAAuD;IACvD,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CA2DpC,CAAC"}
@@ -1,20 +1,27 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from "react/jsx-runtime";
2
3
  import { tv } from "tailwind-variants";
3
4
  import { ImageBanner } from "../image-banner/ImageBanner.js";
4
5
  import { PostBase } from "../post-base/PostBase.js";
5
6
  import { UserInfo } from "../user-info/UserInfo.js";
7
+ import { renderWithHashtags } from "../utils/keyword.utils.js";
6
8
  import { Avatar } from "../../components/avatar/Avatar.js";
7
- import { Paragraph } from "../../components/typography/Paragraph.js";
8
9
  import { Toggle } from "../../components/toggle/Toggle.js";
9
10
  import { LikeToggle } from "../../components/like-toggle/LikeToggle.js";
10
11
  import { TimedButton } from "../../components/timed-button/TimedButton.js";
11
12
  import { Share } from "../../components/icons/generated/Share.js";
13
+ import { Paragraph } from "../../components/typography/Paragraph.js";
12
14
  const PostStyles = tv({
13
15
  slots: {
14
16
  base: [],
15
17
  avatar: ["absolute", "-left-8", "top-6"],
16
18
  content: ["flex", "flex-col", "gap-6"],
17
- text: ["text-slate-900"],
19
+ text: [
20
+ "text-slate-900",
21
+ "text-wrap",
22
+ "wrap-anywhere",
23
+ "whitespace-pre-wrap"
24
+ ],
18
25
  action: ["flex", "gap-10", "justify-start", "-ml-3"]
19
26
  },
20
27
  variants: {
@@ -47,7 +54,7 @@ const Post = (props) => {
47
54
  onClick: props.onAvatarClick
48
55
  }
49
56
  ),
50
- /* @__PURE__ */ jsx(Paragraph, { size: props.size, className: text(), children: props.text }),
57
+ /* @__PURE__ */ jsx(Paragraph, { size: props.size, className: text(), children: renderWithHashtags(props.text) }),
51
58
  props.imageSrc && /* @__PURE__ */ jsx(
52
59
  ImageBanner,
53
60
  {
@@ -62,11 +69,18 @@ const Post = (props) => {
62
69
  Toggle,
63
70
  {
64
71
  ariaLabel: "Comment",
65
- labelText: "Comment",
72
+ labelText: props.nbrOfComments === 0 ? "Comment" : props.nbrOfComments === 1 ? "1 Comment" : `${props.nbrOfComments} Comments`,
73
+ pressed: props.nbrOfComments !== 0,
66
74
  onToggle: props.onCommentClick
67
75
  }
68
76
  ),
69
- /* @__PURE__ */ jsx(LikeToggle, { onLikeChange: props.onLikeClick }),
77
+ /* @__PURE__ */ jsx(
78
+ LikeToggle,
79
+ {
80
+ likes: props.nbrOfLikes,
81
+ onLikeChange: props.onLikeClick
82
+ }
83
+ ),
70
84
  /* @__PURE__ */ jsx(
71
85
  TimedButton,
72
86
  {
@@ -0,0 +1,42 @@
1
+ import { VariantProps } from 'tailwind-variants';
2
+ declare const PostBaseStyles: import('tailwind-variants').TVReturnType<{
3
+ [key: string]: {
4
+ [key: string]: import('tailwind-merge').ClassNameValue | {
5
+ base?: import('tailwind-merge').ClassNameValue;
6
+ };
7
+ };
8
+ } | {
9
+ [x: string]: {
10
+ [x: string]: import('tailwind-merge').ClassNameValue | {
11
+ base?: import('tailwind-merge').ClassNameValue;
12
+ };
13
+ };
14
+ } | {}, {
15
+ base: string[];
16
+ }, undefined, {
17
+ [key: string]: {
18
+ [key: string]: import('tailwind-merge').ClassNameValue | {
19
+ base?: import('tailwind-merge').ClassNameValue;
20
+ };
21
+ };
22
+ } | {}, {
23
+ base: string[];
24
+ }, import('tailwind-variants').TVReturnType<unknown, {
25
+ base: string[];
26
+ }, undefined, unknown, unknown, undefined>>;
27
+ type PostBaseVariants = VariantProps<typeof PostBaseStyles>;
28
+ export interface PostBaseProps extends PostBaseVariants {
29
+ /**
30
+ * Additional CSS class names to apply to the component.
31
+ */
32
+ className?: string;
33
+ /** Content to be rendered inside the PostBase component */
34
+ children: React.ReactNode;
35
+ }
36
+ /**
37
+ * Base layout wrapper for a post, including an avatar section
38
+ * and content area.
39
+ */
40
+ export declare const PostBase: React.FC<PostBaseProps>;
41
+ export {};
42
+ //# sourceMappingURL=PostBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostBase.d.ts","sourceRoot":"","sources":["../../../src/compositions/post-base/PostBase.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE9D,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;2CAgBlB,CAAC;AAEH,KAAK,gBAAgB,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,2DAA2D;IAC3D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAI5C,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { VariantProps } from 'tailwind-variants';
2
+ declare const PostCreatorStyles: import('tailwind-variants').TVReturnType<{
3
+ [key: string]: {
4
+ [key: string]: import('tailwind-merge').ClassNameValue | {
5
+ input?: import('tailwind-merge').ClassNameValue;
6
+ title?: import('tailwind-merge').ClassNameValue;
7
+ avatar?: import('tailwind-merge').ClassNameValue;
8
+ action?: import('tailwind-merge').ClassNameValue;
9
+ content?: import('tailwind-merge').ClassNameValue;
10
+ };
11
+ };
12
+ } | {
13
+ [x: string]: {
14
+ [x: string]: import('tailwind-merge').ClassNameValue | {
15
+ input?: import('tailwind-merge').ClassNameValue;
16
+ title?: import('tailwind-merge').ClassNameValue;
17
+ avatar?: import('tailwind-merge').ClassNameValue;
18
+ action?: import('tailwind-merge').ClassNameValue;
19
+ content?: import('tailwind-merge').ClassNameValue;
20
+ };
21
+ };
22
+ } | {}, {
23
+ content: string[];
24
+ avatar: string[];
25
+ title: string[];
26
+ input: string[];
27
+ action: string[];
28
+ }, undefined, {
29
+ [key: string]: {
30
+ [key: string]: import('tailwind-merge').ClassNameValue | {
31
+ input?: import('tailwind-merge').ClassNameValue;
32
+ title?: import('tailwind-merge').ClassNameValue;
33
+ avatar?: import('tailwind-merge').ClassNameValue;
34
+ action?: import('tailwind-merge').ClassNameValue;
35
+ content?: import('tailwind-merge').ClassNameValue;
36
+ };
37
+ };
38
+ } | {}, {
39
+ content: string[];
40
+ avatar: string[];
41
+ title: string[];
42
+ input: string[];
43
+ action: string[];
44
+ }, import('tailwind-variants').TVReturnType<unknown, {
45
+ content: string[];
46
+ avatar: string[];
47
+ title: string[];
48
+ input: string[];
49
+ action: string[];
50
+ }, undefined, unknown, unknown, undefined>>;
51
+ type PostCreatorVariants = VariantProps<typeof PostCreatorStyles>;
52
+ interface PostCreatorProps extends PostCreatorVariants {
53
+ /** Avatar image URL */
54
+ src: string | undefined;
55
+ /** Triggered when the avatar is clicked. */
56
+ onAvatarClick: () => void;
57
+ /**
58
+ * Callback fired when the "Send" button is clicked.
59
+ * Receives the textarea text and the optionally uploaded file.
60
+ */
61
+ onSendClick: (text: string, file: File | null) => void;
62
+ }
63
+ /**
64
+ * PostCreator component
65
+ *
66
+ * Renders a post creation component.
67
+ */
68
+ export declare const PostCreator: React.FC<PostCreatorProps>;
69
+ export {};
70
+ //# sourceMappingURL=PostCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostCreator.d.ts","sourceRoot":"","sources":["../../../src/compositions/post-creator/PostCreator.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAS1D,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAQrB,CAAC;AAEH,KAAK,mBAAmB,GAAG,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,UAAU,gBAAiB,SAAQ,mBAAmB;IACpD,uBAAuB;IACvB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IAExB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B;;;OAGG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;CACxD;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAuDlD,CAAC"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
3
  import { Form } from "@radix-ui/react-form";
3
4
  import { useState, useRef } from "react";
@@ -0,0 +1,83 @@
1
+ import { VariantProps } from 'tailwind-variants';
2
+ declare const ProfileBannerStyles: import('tailwind-variants').TVReturnType<{
3
+ [key: string]: {
4
+ [key: string]: import('tailwind-merge').ClassNameValue | {
5
+ base?: import('tailwind-merge').ClassNameValue;
6
+ avatar?: import('tailwind-merge').ClassNameValue;
7
+ info?: import('tailwind-merge').ClassNameValue;
8
+ description?: import('tailwind-merge').ClassNameValue;
9
+ };
10
+ };
11
+ } | {
12
+ [x: string]: {
13
+ [x: string]: import('tailwind-merge').ClassNameValue | {
14
+ base?: import('tailwind-merge').ClassNameValue;
15
+ avatar?: import('tailwind-merge').ClassNameValue;
16
+ info?: import('tailwind-merge').ClassNameValue;
17
+ description?: import('tailwind-merge').ClassNameValue;
18
+ };
19
+ };
20
+ } | {}, {
21
+ base: string[];
22
+ avatar: string[];
23
+ info: string[];
24
+ description: string[];
25
+ }, undefined, {
26
+ [key: string]: {
27
+ [key: string]: import('tailwind-merge').ClassNameValue | {
28
+ base?: import('tailwind-merge').ClassNameValue;
29
+ avatar?: import('tailwind-merge').ClassNameValue;
30
+ info?: import('tailwind-merge').ClassNameValue;
31
+ description?: import('tailwind-merge').ClassNameValue;
32
+ };
33
+ };
34
+ } | {}, {
35
+ base: string[];
36
+ avatar: string[];
37
+ info: string[];
38
+ description: string[];
39
+ }, import('tailwind-variants').TVReturnType<unknown, {
40
+ base: string[];
41
+ avatar: string[];
42
+ info: string[];
43
+ description: string[];
44
+ }, undefined, unknown, unknown, undefined>>;
45
+ type ProfileBannerVariants = VariantProps<typeof ProfileBannerStyles>;
46
+ interface ProfileBannerProps extends ProfileBannerVariants {
47
+ /** URL of the user's avatar image. */
48
+ avatarSrc: string;
49
+ /** Alt text for the avatar image. */
50
+ avatarAlt: string;
51
+ /** URL of the profile banner or main image. */
52
+ imageSrc: string;
53
+ /** Alt text for the main image. */
54
+ imageAlt: string;
55
+ /** The user's display name. */
56
+ displayName: string;
57
+ /** The user’s username/handle. */
58
+ userName: string;
59
+ /** The user’s location string. */
60
+ location: string;
61
+ /** Date when the user joined. */
62
+ joinedTimestamp: Date;
63
+ /** Bio or profile description text. */
64
+ description: string;
65
+ /** Whether the profile being viewed belongs to the logged-in user. */
66
+ isCurrentUser: boolean;
67
+ /**
68
+ * Optional callback triggered when the profile/banner image changes.
69
+ * Receives the selected `File`, or `null` if cleared.
70
+ */
71
+ onProfileImageChange?: (file: File | null) => void;
72
+ /**
73
+ * Optional callback triggered when the avatar image changes.
74
+ * Receives the selected `File`, or `null` if cleared.
75
+ */
76
+ onAvatarImageChange?: (file: File | null) => void;
77
+ }
78
+ /**
79
+ * Profile banner component for displaying user profile info.
80
+ */
81
+ export declare const ProfileBanner: React.FC<ProfileBannerProps>;
82
+ export {};
83
+ //# sourceMappingURL=ProfileBanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfileBanner.d.ts","sourceRoot":"","sources":["../../../src/compositions/profile-banner/ProfileBanner.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAS1D,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAOvB,CAAC;AAEH,KAAK,qBAAqB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,UAAU,kBAAmB,SAAQ,qBAAqB;IACxD,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAElB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IAEjB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IAEjB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IAEpB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IAEjB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IAEjB,iCAAiC;IACjC,eAAe,EAAE,IAAI,CAAC;IAEtB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IAEpB,sEAAsE;IACtE,aAAa,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnD;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;CACnD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAoDtD,CAAC"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
3
  import { useRef } from "react";
3
4
  import { tv } from "tailwind-variants";
@@ -0,0 +1,55 @@
1
+ import { VariantProps } from 'tailwind-variants';
2
+ declare const ProfileBannerImageStyles: import('tailwind-variants').TVReturnType<{
3
+ isFallback: {
4
+ true: {
5
+ image: string[];
6
+ };
7
+ };
8
+ }, {
9
+ base: string[];
10
+ image: string[];
11
+ overlay: string[];
12
+ icon: string[];
13
+ }, undefined, {
14
+ isFallback: {
15
+ true: {
16
+ image: string[];
17
+ };
18
+ };
19
+ }, {
20
+ base: string[];
21
+ image: string[];
22
+ overlay: string[];
23
+ icon: string[];
24
+ }, import('tailwind-variants').TVReturnType<{
25
+ isFallback: {
26
+ true: {
27
+ image: string[];
28
+ };
29
+ };
30
+ }, {
31
+ base: string[];
32
+ image: string[];
33
+ overlay: string[];
34
+ icon: string[];
35
+ }, undefined, unknown, unknown, undefined>>;
36
+ type ProfileBannerImageVariants = VariantProps<typeof ProfileBannerImageStyles>;
37
+ interface ProfileBannerImageProps extends ProfileBannerImageVariants {
38
+ /** Avatar image URL */
39
+ src: string;
40
+ /**
41
+ * Alternative text for the image, used for accessibility.
42
+ */
43
+ alt: string;
44
+ /** Click handler for the whole ProfileBannerImage component */
45
+ onClick: () => void;
46
+ }
47
+ /**
48
+ * ProfileBannerImage component
49
+ *
50
+ * Displays a banner image with a fixed aspect ratio (17:8) and an optional overlay icon.
51
+ * If the image fails to load, a fallback element is displayed instead.
52
+ */
53
+ export declare const ProfileBannerImage: React.FC<ProfileBannerImageProps>;
54
+ export {};
55
+ //# sourceMappingURL=ProfileBannerImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfileBannerImage.d.ts","sourceRoot":"","sources":["../../../src/compositions/profile-banner-image/ProfileBannerImage.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG9D,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAwC5B,CAAC;AAEH,KAAK,0BAA0B,GAAG,YAAY,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAEhF,UAAU,uBAAwB,SAAQ,0BAA0B;IAClE,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ,+DAA+D;IAC/D,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA0BhE,CAAC"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx, jsxs } from "react/jsx-runtime";
2
3
  import * as AspectRatio from "@radix-ui/react-aspect-ratio";
3
4
  import { useState } from "react";
@@ -0,0 +1,93 @@
1
+ import { VariantProps } from 'tailwind-variants';
2
+ declare const profileBannerInfoStyles: import('tailwind-variants').TVReturnType<{
3
+ [key: string]: {
4
+ [key: string]: import('tailwind-merge').ClassNameValue | {
5
+ displayName?: import('tailwind-merge').ClassNameValue;
6
+ base?: import('tailwind-merge').ClassNameValue;
7
+ title?: import('tailwind-merge').ClassNameValue;
8
+ icon?: import('tailwind-merge').ClassNameValue;
9
+ detailInfo?: import('tailwind-merge').ClassNameValue;
10
+ secondaryInfo?: import('tailwind-merge').ClassNameValue;
11
+ };
12
+ };
13
+ } | {
14
+ [x: string]: {
15
+ [x: string]: import('tailwind-merge').ClassNameValue | {
16
+ displayName?: import('tailwind-merge').ClassNameValue;
17
+ base?: import('tailwind-merge').ClassNameValue;
18
+ title?: import('tailwind-merge').ClassNameValue;
19
+ icon?: import('tailwind-merge').ClassNameValue;
20
+ detailInfo?: import('tailwind-merge').ClassNameValue;
21
+ secondaryInfo?: import('tailwind-merge').ClassNameValue;
22
+ };
23
+ };
24
+ } | {}, {
25
+ base: string[];
26
+ title: string[];
27
+ icon: string[];
28
+ displayName: string[];
29
+ detailInfo: string[];
30
+ secondaryInfo: string[];
31
+ }, undefined, {
32
+ [key: string]: {
33
+ [key: string]: import('tailwind-merge').ClassNameValue | {
34
+ displayName?: import('tailwind-merge').ClassNameValue;
35
+ base?: import('tailwind-merge').ClassNameValue;
36
+ title?: import('tailwind-merge').ClassNameValue;
37
+ icon?: import('tailwind-merge').ClassNameValue;
38
+ detailInfo?: import('tailwind-merge').ClassNameValue;
39
+ secondaryInfo?: import('tailwind-merge').ClassNameValue;
40
+ };
41
+ };
42
+ } | {}, {
43
+ base: string[];
44
+ title: string[];
45
+ icon: string[];
46
+ displayName: string[];
47
+ detailInfo: string[];
48
+ secondaryInfo: string[];
49
+ }, import('tailwind-variants').TVReturnType<unknown, {
50
+ base: string[];
51
+ title: string[];
52
+ icon: string[];
53
+ displayName: string[];
54
+ detailInfo: string[];
55
+ secondaryInfo: string[];
56
+ }, undefined, unknown, unknown, undefined>>;
57
+ type ProfileBannerInfoVariants = VariantProps<typeof profileBannerInfoStyles>;
58
+ interface ProfileBannerInfoProps extends ProfileBannerInfoVariants {
59
+ /** Whether the profile being viewed belongs to the logged-in user. */
60
+ isCurrentUser: boolean;
61
+ /**
62
+ * The user's full display name (e.g., "John Doe").
63
+ */
64
+ displayName: string;
65
+ /**
66
+ * The user's username or handle (e.g., "@john").
67
+ */
68
+ userName: string;
69
+ /**
70
+ * The user's location as a readable text label.
71
+ */
72
+ location: string;
73
+ /**
74
+ * A timestamp representing when the user joined.
75
+ * Used to generate the "Member since" relative date.
76
+ */
77
+ joinedTimestamp: Date;
78
+ /**
79
+ * Callback fired whenever any profile-related element is clicked.
80
+ * Typically used to open the profile or navigate to a user page.
81
+ */
82
+ onProfileClick: () => void;
83
+ /** A function called when the settings button is clicked. */
84
+ onSettingsClick?: () => void;
85
+ }
86
+ /**
87
+ * ProfileBannerInfo Component
88
+ *
89
+ * Renders profile information used in a user profile banner
90
+ */
91
+ export declare const ProfileBannerInfo: React.FC<ProfileBannerInfoProps>;
92
+ export {};
93
+ //# sourceMappingURL=ProfileBannerInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfileBannerInfo.d.ts","sourceRoot":"","sources":["../../../src/compositions/profile-banner-info/ProfileBannerInfo.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAU1D,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAS3B,CAAC;AAEH,KAAK,yBAAyB,GAAG,YAAY,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE9E,UAAU,sBAAuB,SAAQ,yBAAyB;IAChE,sEAAsE;IACtE,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,eAAe,EAAE,IAAI,CAAC;IAEtB;;;OAGG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B;AAwBD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAgD9D,CAAC"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from "react/jsx-runtime";
2
3
  import { tv } from "tailwind-variants";
3
4
  import { IconButton } from "../../components/icon-button/IconButton.js";