@krrli/cm-designsystem 1.32.0 → 1.32.2

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 (179) hide show
  1. package/dist/assets/fallback.png.js +4 -0
  2. package/dist/cm-designsystem.css +1944 -1
  3. package/dist/components/accessible-button/AccessibleButton.js +29 -11
  4. package/dist/components/avatar/Avatar.js +91 -65
  5. package/dist/components/branding/BrandingGallery.js +212 -145
  6. package/dist/components/branding/app-icon-gradient.svg.js +4 -0
  7. package/dist/components/branding/app-icon-white.svg.js +4 -0
  8. package/dist/components/branding/hover-logo-default.svg.js +4 -0
  9. package/dist/components/branding/hover-logo-hovered.svg.js +4 -0
  10. package/dist/components/branding/logo-inline-gradient.svg.js +4 -0
  11. package/dist/components/branding/logo-inline-violet.svg.js +4 -0
  12. package/dist/components/branding/logo-inline-white.svg.js +4 -0
  13. package/dist/components/branding/logo-stacked-gradient.svg.js +4 -0
  14. package/dist/components/branding/logo-stacked-violet.svg.js +4 -0
  15. package/dist/components/branding/logo-stacked-white.svg.js +4 -0
  16. package/dist/components/branding/superzeichen.svg.js +4 -0
  17. package/dist/components/button/Button.js +61 -55
  18. package/dist/components/color/ColorDoc.js +26 -7
  19. package/dist/components/file-upload/FileUpload.js +129 -66
  20. package/dist/components/form/Form.js +33 -26
  21. package/dist/components/icon-button/IconButton.js +33 -29
  22. package/dist/components/icons/IconBase.js +21 -6
  23. package/dist/components/icons/generated/ArrowDown.js +15 -4
  24. package/dist/components/icons/generated/ArrowLeft.js +15 -4
  25. package/dist/components/icons/generated/ArrowRight.js +15 -4
  26. package/dist/components/icons/generated/ArrowUp.js +15 -4
  27. package/dist/components/icons/generated/Calendar.js +15 -4
  28. package/dist/components/icons/generated/Cancel.js +12 -4
  29. package/dist/components/icons/generated/Checkmark.js +12 -4
  30. package/dist/components/icons/generated/Edit.js +9 -4
  31. package/dist/components/icons/generated/Eye.js +15 -4
  32. package/dist/components/icons/generated/Fullscreen.js +9 -4
  33. package/dist/components/icons/generated/HeartFilled.js +15 -4
  34. package/dist/components/icons/generated/HeartOutline.js +15 -4
  35. package/dist/components/icons/generated/Location.js +15 -4
  36. package/dist/components/icons/generated/LogOut.js +12 -4
  37. package/dist/components/icons/generated/Mumble.js +13 -4
  38. package/dist/components/icons/generated/Profile.js +12 -4
  39. package/dist/components/icons/generated/ReplyFilled.js +15 -4
  40. package/dist/components/icons/generated/ReplyOutline.js +15 -4
  41. package/dist/components/icons/generated/Repost.js +15 -4
  42. package/dist/components/icons/generated/Send.js +15 -4
  43. package/dist/components/icons/generated/Settings.js +15 -4
  44. package/dist/components/icons/generated/Share.js +12 -4
  45. package/dist/components/icons/generated/Time.js +12 -4
  46. package/dist/components/icons/generated/Upload.js +21 -4
  47. package/dist/components/input/Input.js +67 -41
  48. package/dist/components/like-toggle/LikeToggle.js +203 -176
  49. package/dist/components/logo-link/LogoLink.js +56 -34
  50. package/dist/components/modal/Modal.js +66 -50
  51. package/dist/components/navi-button/NaviButton.js +42 -30
  52. package/dist/components/navi-user-button/NaviUserButton.js +39 -29
  53. package/dist/components/round-button/RoundButton.js +39 -29
  54. package/dist/components/tabs/TabItem.js +11 -8
  55. package/dist/components/tabs/Tabs.js +74 -59
  56. package/dist/components/text-link/TextLink.js +14 -11
  57. package/dist/components/textarea/Textarea.js +57 -41
  58. package/dist/components/timed-button/TimedButton.js +116 -102
  59. package/dist/components/toggle/Toggle.js +91 -62
  60. package/dist/components/typography/AccessibleTypography.js +12 -9
  61. package/dist/components/typography/Heading.js +13 -9
  62. package/dist/components/typography/Label.js +13 -9
  63. package/dist/components/typography/Paragraph.js +13 -9
  64. package/dist/components/typography/Placeholder.js +13 -9
  65. package/dist/components/typography/ValidationMessage.js +14 -9
  66. package/dist/components/typography/styles.js +53 -46
  67. package/dist/compositions/image-banner/ImageBanner.js +53 -45
  68. package/dist/compositions/image-upload-modal/ImageUploadModal.js +44 -20
  69. package/dist/compositions/post/Post.js +81 -26
  70. package/dist/compositions/post-base/PostBase.js +23 -24
  71. package/dist/compositions/post-creator/PostCreator.js +72 -24
  72. package/dist/compositions/profile-banner/ProfileBanner.js +71 -21
  73. package/dist/compositions/profile-banner-image/ProfileBannerImage.js +60 -52
  74. package/dist/compositions/profile-banner-info/ProfileBannerInfo.js +72 -40
  75. package/dist/compositions/response/Response.js +63 -19
  76. package/dist/compositions/response-creator/ResponseCreator.js +67 -23
  77. package/dist/compositions/user-info/UserInfo.js +71 -52
  78. package/dist/compositions/user-recommendation/UserRecommendation.js +58 -30
  79. package/dist/index.js +129 -4
  80. package/package.json +14 -11
  81. package/dist/components/accessible-button/AccessibleButton.d.ts +0 -32
  82. package/dist/components/accessible-button/AccessibleButton.test.d.ts +0 -1
  83. package/dist/components/accessible-button/AccessibleButton.test.js +0 -28
  84. package/dist/components/avatar/Avatar.d.ts +0 -118
  85. package/dist/components/branding/BrandingGallery.d.ts +0 -1
  86. package/dist/components/button/Button.d.ts +0 -66
  87. package/dist/components/button/Button.test.d.ts +0 -1
  88. package/dist/components/button/Button.test.js +0 -30
  89. package/dist/components/color/ColorDoc.d.ts +0 -4
  90. package/dist/components/file-upload/FileUpload.d.ts +0 -83
  91. package/dist/components/form/Form.d.ts +0 -54
  92. package/dist/components/icon-button/IconButton.d.ts +0 -69
  93. package/dist/components/icon-button/IconButton.test.d.ts +0 -1
  94. package/dist/components/icon-button/IconButton.test.js +0 -22
  95. package/dist/components/icons/IconBase.d.ts +0 -5
  96. package/dist/components/icons/generated/ArrowDown.d.ts +0 -3
  97. package/dist/components/icons/generated/ArrowLeft.d.ts +0 -3
  98. package/dist/components/icons/generated/ArrowRight.d.ts +0 -3
  99. package/dist/components/icons/generated/ArrowUp.d.ts +0 -3
  100. package/dist/components/icons/generated/Calendar.d.ts +0 -3
  101. package/dist/components/icons/generated/Cancel.d.ts +0 -3
  102. package/dist/components/icons/generated/Checkmark.d.ts +0 -3
  103. package/dist/components/icons/generated/Edit.d.ts +0 -3
  104. package/dist/components/icons/generated/Eye.d.ts +0 -3
  105. package/dist/components/icons/generated/Fullscreen.d.ts +0 -3
  106. package/dist/components/icons/generated/HeartFilled.d.ts +0 -3
  107. package/dist/components/icons/generated/HeartOutline.d.ts +0 -3
  108. package/dist/components/icons/generated/Location.d.ts +0 -3
  109. package/dist/components/icons/generated/LogOut.d.ts +0 -3
  110. package/dist/components/icons/generated/Mumble.d.ts +0 -3
  111. package/dist/components/icons/generated/Profile.d.ts +0 -3
  112. package/dist/components/icons/generated/ReplyFilled.d.ts +0 -3
  113. package/dist/components/icons/generated/ReplyOutline.d.ts +0 -3
  114. package/dist/components/icons/generated/Repost.d.ts +0 -3
  115. package/dist/components/icons/generated/Send.d.ts +0 -3
  116. package/dist/components/icons/generated/Settings.d.ts +0 -3
  117. package/dist/components/icons/generated/Share.d.ts +0 -3
  118. package/dist/components/icons/generated/Time.d.ts +0 -3
  119. package/dist/components/icons/generated/Upload.d.ts +0 -3
  120. package/dist/components/icons/generated/index.d.ts +0 -24
  121. package/dist/components/icons/generated/index.js +0 -24
  122. package/dist/components/index.d.ts +0 -27
  123. package/dist/components/index.js +0 -27
  124. package/dist/components/input/Input.d.ts +0 -61
  125. package/dist/components/like-toggle/LikeToggle.d.ts +0 -97
  126. package/dist/components/like-toggle/LikeToggle.test.d.ts +0 -1
  127. package/dist/components/like-toggle/LikeToggle.test.js +0 -35
  128. package/dist/components/logo-link/LogoLink.d.ts +0 -11
  129. package/dist/components/modal/Modal.d.ts +0 -75
  130. package/dist/components/modal/Modal.test.d.ts +0 -1
  131. package/dist/components/modal/Modal.test.js +0 -24
  132. package/dist/components/navi-button/NaviButton.d.ts +0 -49
  133. package/dist/components/navi-button/NaviButton.test.d.ts +0 -1
  134. package/dist/components/navi-button/NaviButton.test.js +0 -22
  135. package/dist/components/navi-user-button/NaviUserButton.d.ts +0 -44
  136. package/dist/components/round-button/RoundButton.d.ts +0 -44
  137. package/dist/components/round-button/RoundButton.test.d.ts +0 -1
  138. package/dist/components/round-button/RoundButton.test.js +0 -22
  139. package/dist/components/tabs/TabItem.d.ts +0 -11
  140. package/dist/components/tabs/Tabs.d.ts +0 -67
  141. package/dist/components/tabs/Tabs.test.d.ts +0 -1
  142. package/dist/components/tabs/Tabs.test.js +0 -61
  143. package/dist/components/text-link/TextLink.d.ts +0 -9
  144. package/dist/components/text-link/TextLink.test.d.ts +0 -1
  145. package/dist/components/text-link/TextLink.test.js +0 -14
  146. package/dist/components/textarea/Textarea.d.ts +0 -48
  147. package/dist/components/timed-button/TimedButton.d.ts +0 -79
  148. package/dist/components/timed-button/TimedButton.test.d.ts +0 -1
  149. package/dist/components/timed-button/TimedButton.test.js +0 -36
  150. package/dist/components/toggle/Toggle.d.ts +0 -62
  151. package/dist/components/toggle/Toggle.test.d.ts +0 -1
  152. package/dist/components/toggle/Toggle.test.js +0 -93
  153. package/dist/components/typography/AccessibleTypography.d.ts +0 -33
  154. package/dist/components/typography/Heading.d.ts +0 -24
  155. package/dist/components/typography/Label.d.ts +0 -22
  156. package/dist/components/typography/Paragraph.d.ts +0 -22
  157. package/dist/components/typography/Placeholder.d.ts +0 -17
  158. package/dist/components/typography/ValidationMessage.d.ts +0 -22
  159. package/dist/components/typography/styles.d.ts +0 -74
  160. package/dist/compositions/image-banner/ImageBanner.d.ts +0 -54
  161. package/dist/compositions/image-upload-modal/ImageUploadModal.d.ts +0 -15
  162. package/dist/compositions/index.d.ts +0 -11
  163. package/dist/compositions/index.js +0 -11
  164. package/dist/compositions/post/Post.d.ts +0 -75
  165. package/dist/compositions/post-base/PostBase.d.ts +0 -41
  166. package/dist/compositions/post-creator/PostCreator.d.ts +0 -69
  167. package/dist/compositions/profile-banner/ProfileBanner.d.ts +0 -82
  168. package/dist/compositions/profile-banner-image/ProfileBannerImage.d.ts +0 -54
  169. package/dist/compositions/profile-banner-info/ProfileBannerInfo.d.ts +0 -92
  170. package/dist/compositions/response/Response.d.ts +0 -75
  171. package/dist/compositions/response-creator/ResponseCreator.d.ts +0 -63
  172. package/dist/compositions/user-info/UserInfo.d.ts +0 -75
  173. package/dist/compositions/user-recommendation/UserRecommendation.d.ts +0 -63
  174. package/dist/favicon.svg +0 -18
  175. package/dist/index.d.ts +0 -3
  176. package/dist/index.es.js +0 -8343
  177. package/dist/logo-inline-gradient.svg +0 -43
  178. package/dist/setupTests.d.ts +0 -1
  179. package/dist/setupTests.js +0 -7
@@ -1,34 +1,62 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { tv } from "tailwind-variants";
3
- import { Avatar } from "../../components/avatar/Avatar";
4
- import { Button } from "../../components/button/Button";
5
- import { IconButton } from "../../components/icon-button/IconButton";
6
- import { Mumble, Profile } from "../../components/icons/generated";
7
- import { Label } from "../../components/typography/Label";
3
+ import { Avatar } from "../../components/avatar/Avatar.js";
4
+ import { Button } from "../../components/button/Button.js";
5
+ import { IconButton } from "../../components/icon-button/IconButton.js";
6
+ import { Label } from "../../components/typography/Label.js";
7
+ import { Mumble } from "../../components/icons/generated/Mumble.js";
8
+ import { Profile } from "../../components/icons/generated/Profile.js";
8
9
  const userRecommendationStyles = tv({
9
- slots: {
10
- base: [
11
- "flex",
12
- "flex-col",
13
- "gap-4",
14
- "items-center",
15
- "p-4",
16
- "bg-white",
17
- "rounded-2xl",
18
- ],
19
- userInfo: ["flex", "flex-col", "gap-2", "items-center"],
20
- displayName: ["text-slate-900", "**:cursor-pointer"],
21
- },
10
+ slots: {
11
+ base: [
12
+ "flex",
13
+ "flex-col",
14
+ "gap-4",
15
+ "items-center",
16
+ "p-4",
17
+ "bg-white",
18
+ "rounded-2xl"
19
+ ],
20
+ userInfo: ["flex", "flex-col", "gap-2", "items-center"],
21
+ displayName: ["text-slate-900", "**:cursor-pointer"]
22
+ }
22
23
  });
23
- /**
24
- * UserRecommendation Component
25
- *
26
- * Displays a recommended user with:
27
- * - A clickable avatar
28
- * - Display name and username
29
- * - A follow button
30
- */
31
- export const UserRecommendation = (props) => {
32
- const { base, userInfo, displayName } = userRecommendationStyles(props);
33
- return (_jsxs("div", { className: base(), children: [_jsx(Avatar, { alt: "Profile", size: "lg", src: props.src, onAvatarClick: props.onProfileClick }), _jsxs("div", { className: userInfo(), children: [_jsx("button", { onClick: props.onProfileClick, className: displayName(), children: _jsx(Label, { size: "lg", children: props.displayName }) }), _jsx(IconButton, { icon: Profile, intent: "secondary", onClick: props.onProfileClick, children: props.userName })] }), _jsx(Button, { icon: Mumble, intent: "secondary", onClick: props.onFollowClick, size: "md", children: props.label })] }));
24
+ const UserRecommendation = (props) => {
25
+ const { base, userInfo, displayName } = userRecommendationStyles(props);
26
+ return /* @__PURE__ */ jsxs("div", { className: base(), children: [
27
+ /* @__PURE__ */ jsx(
28
+ Avatar,
29
+ {
30
+ alt: "Profile",
31
+ size: "lg",
32
+ src: props.src,
33
+ onAvatarClick: props.onProfileClick
34
+ }
35
+ ),
36
+ /* @__PURE__ */ jsxs("div", { className: userInfo(), children: [
37
+ /* @__PURE__ */ jsx("button", { onClick: props.onProfileClick, className: displayName(), children: /* @__PURE__ */ jsx(Label, { size: "lg", children: props.displayName }) }),
38
+ /* @__PURE__ */ jsx(
39
+ IconButton,
40
+ {
41
+ icon: Profile,
42
+ intent: "secondary",
43
+ onClick: props.onProfileClick,
44
+ children: props.userName
45
+ }
46
+ )
47
+ ] }),
48
+ /* @__PURE__ */ jsx(
49
+ Button,
50
+ {
51
+ icon: Mumble,
52
+ intent: "secondary",
53
+ onClick: props.onFollowClick,
54
+ size: "md",
55
+ children: props.label
56
+ }
57
+ )
58
+ ] });
59
+ };
60
+ export {
61
+ UserRecommendation
34
62
  };
package/dist/index.js CHANGED
@@ -1,4 +1,129 @@
1
- // Entry point for npm package. Export all public components here.
2
- import "./index.css";
3
- export * from "./components";
4
- export * from "./compositions";
1
+ /* empty css */
2
+ import { Avatar } from "./components/avatar/Avatar.js";
3
+ import { BrandingGallery } from "./components/branding/BrandingGallery.js";
4
+ import { Button } from "./components/button/Button.js";
5
+ import { ColorDoc } from "./components/color/ColorDoc.js";
6
+ import { FileUpload } from "./components/file-upload/FileUpload.js";
7
+ import { Form, FormAction, FormFields } from "./components/form/Form.js";
8
+ import { IconButton } from "./components/icon-button/IconButton.js";
9
+ import { IconBase } from "./components/icons/IconBase.js";
10
+ import { ArrowDown } from "./components/icons/generated/ArrowDown.js";
11
+ import { ArrowLeft } from "./components/icons/generated/ArrowLeft.js";
12
+ import { ArrowRight } from "./components/icons/generated/ArrowRight.js";
13
+ import { ArrowUp } from "./components/icons/generated/ArrowUp.js";
14
+ import { Calendar } from "./components/icons/generated/Calendar.js";
15
+ import { Cancel } from "./components/icons/generated/Cancel.js";
16
+ import { Checkmark } from "./components/icons/generated/Checkmark.js";
17
+ import { Edit } from "./components/icons/generated/Edit.js";
18
+ import { Eye } from "./components/icons/generated/Eye.js";
19
+ import { Fullscreen } from "./components/icons/generated/Fullscreen.js";
20
+ import { HeartFilled } from "./components/icons/generated/HeartFilled.js";
21
+ import { HeartOutline } from "./components/icons/generated/HeartOutline.js";
22
+ import { Location } from "./components/icons/generated/Location.js";
23
+ import { LogOut } from "./components/icons/generated/LogOut.js";
24
+ import { Mumble } from "./components/icons/generated/Mumble.js";
25
+ import { Profile } from "./components/icons/generated/Profile.js";
26
+ import { ReplyFilled } from "./components/icons/generated/ReplyFilled.js";
27
+ import { ReplyOutline } from "./components/icons/generated/ReplyOutline.js";
28
+ import { Repost } from "./components/icons/generated/Repost.js";
29
+ import { Send } from "./components/icons/generated/Send.js";
30
+ import { Settings } from "./components/icons/generated/Settings.js";
31
+ import { Share } from "./components/icons/generated/Share.js";
32
+ import { Time } from "./components/icons/generated/Time.js";
33
+ import { Upload } from "./components/icons/generated/Upload.js";
34
+ import { Input } from "./components/input/Input.js";
35
+ import { LikeToggle } from "./components/like-toggle/LikeToggle.js";
36
+ import { LogoLink } from "./components/logo-link/LogoLink.js";
37
+ import { Modal, ModalActions, ModalBody } from "./components/modal/Modal.js";
38
+ import { NaviButton } from "./components/navi-button/NaviButton.js";
39
+ import { NaviUserButton } from "./components/navi-user-button/NaviUserButton.js";
40
+ import { RoundButton } from "./components/round-button/RoundButton.js";
41
+ import { TabItem } from "./components/tabs/TabItem.js";
42
+ import { Tabs } from "./components/tabs/Tabs.js";
43
+ import { TextLink } from "./components/text-link/TextLink.js";
44
+ import { Textarea } from "./components/textarea/Textarea.js";
45
+ import { TimedButton } from "./components/timed-button/TimedButton.js";
46
+ import { Toggle } from "./components/toggle/Toggle.js";
47
+ import { Heading } from "./components/typography/Heading.js";
48
+ import { Label } from "./components/typography/Label.js";
49
+ import { Paragraph } from "./components/typography/Paragraph.js";
50
+ import { Placeholder } from "./components/typography/Placeholder.js";
51
+ import { ValidationMessage } from "./components/typography/ValidationMessage.js";
52
+ import { ImageBanner } from "./compositions/image-banner/ImageBanner.js";
53
+ import { ImageUploadModal } from "./compositions/image-upload-modal/ImageUploadModal.js";
54
+ import { Post } from "./compositions/post/Post.js";
55
+ import { PostCreator } from "./compositions/post-creator/PostCreator.js";
56
+ import { ProfileBanner } from "./compositions/profile-banner/ProfileBanner.js";
57
+ import { ProfileBannerImage } from "./compositions/profile-banner-image/ProfileBannerImage.js";
58
+ import { ProfileBannerInfo } from "./compositions/profile-banner-info/ProfileBannerInfo.js";
59
+ import { Response } from "./compositions/response/Response.js";
60
+ import { ResponseCreator } from "./compositions/response-creator/ResponseCreator.js";
61
+ import { UserInfo } from "./compositions/user-info/UserInfo.js";
62
+ import { UserRecommendation } from "./compositions/user-recommendation/UserRecommendation.js";
63
+ export {
64
+ ArrowDown,
65
+ ArrowLeft,
66
+ ArrowRight,
67
+ ArrowUp,
68
+ Avatar,
69
+ BrandingGallery,
70
+ Button,
71
+ Calendar,
72
+ Cancel,
73
+ Checkmark,
74
+ ColorDoc,
75
+ Edit,
76
+ Eye,
77
+ FileUpload,
78
+ Form,
79
+ FormAction,
80
+ FormFields,
81
+ Fullscreen,
82
+ Heading,
83
+ HeartFilled,
84
+ HeartOutline,
85
+ IconBase,
86
+ IconButton,
87
+ ImageBanner,
88
+ ImageUploadModal,
89
+ Input,
90
+ Label,
91
+ LikeToggle,
92
+ Location,
93
+ LogOut,
94
+ LogoLink,
95
+ Modal,
96
+ ModalActions,
97
+ ModalBody,
98
+ Mumble,
99
+ NaviButton,
100
+ NaviUserButton,
101
+ Paragraph,
102
+ Placeholder,
103
+ Post,
104
+ PostCreator,
105
+ Profile,
106
+ ProfileBanner,
107
+ ProfileBannerImage,
108
+ ProfileBannerInfo,
109
+ ReplyFilled,
110
+ ReplyOutline,
111
+ Repost,
112
+ Response,
113
+ ResponseCreator,
114
+ RoundButton,
115
+ Send,
116
+ Settings,
117
+ Share,
118
+ TabItem,
119
+ Tabs,
120
+ TextLink,
121
+ Textarea,
122
+ Time,
123
+ TimedButton,
124
+ Toggle,
125
+ Upload,
126
+ UserInfo,
127
+ UserRecommendation,
128
+ ValidationMessage
129
+ };
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@krrli/cm-designsystem",
3
- "version": "1.32.0",
4
- "files": [
5
- "dist/",
6
- "dist/cm-designsystem.css"
7
- ],
3
+ "version": "1.32.2",
4
+ "type": "module",
8
5
  "main": "dist/index.js",
9
- "module": "dist/index.es.js",
6
+ "module": "dist/index.js",
10
7
  "types": "dist/index.d.ts",
11
- "type": "module",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "sideEffects": false,
12
12
  "publishConfig": {
13
13
  "access": "public"
14
14
  },
15
15
  "scripts": {
16
16
  "preflight": "npm run prettier && npm run lint && npm run typecheck && npm run build && npm run knip",
17
- "build": "tsc -b && vite build",
17
+ "build": "vite build",
18
18
  "lint": "eslint . --max-warnings 0",
19
19
  "lint:fix": "eslint . --fix",
20
20
  "typecheck": "npx tsc -b --noEmit",
@@ -35,12 +35,12 @@
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@radix-ui/react-accessible-icon": "1.1.8",
38
+ "@radix-ui/react-aspect-ratio": "1.1.8",
38
39
  "@radix-ui/react-avatar": "1.1.11",
39
40
  "@radix-ui/react-dialog": "1.1.15",
40
41
  "@radix-ui/react-form": "0.1.8",
41
42
  "@radix-ui/react-tabs": "1.1.13",
42
43
  "@radix-ui/react-toggle": "1.1.10",
43
- "@radix-ui/react-aspect-ratio": "1.1.8",
44
44
  "react": "19.2.1",
45
45
  "react-dom": "19.2.1"
46
46
  },
@@ -76,17 +76,20 @@
76
76
  "eslint-plugin-unused-imports": "4.3.0",
77
77
  "globals": "16.5.0",
78
78
  "jsdom": "27.2.0",
79
- "knip": "5.71.0",
79
+ "knip": "5.72.0",
80
80
  "playwright": "1.57.0",
81
81
  "prettier": "3.7.4",
82
82
  "prettier-plugin-tailwindcss": "0.7.2",
83
+ "rollup-preserve-directives": "1.1.3",
83
84
  "semantic-release": "25.0.2",
84
85
  "storybook": "10.1.4",
85
86
  "tailwind-merge": "3.4.0",
86
87
  "tailwindcss": "4.1.17",
87
88
  "typescript": "5.9.3",
88
89
  "typescript-eslint": "8.48.1",
89
- "vite": "7.2.6",
90
+ "vite": "7.2.7",
91
+ "vite-plugin-dts": "4.5.4",
92
+ "vite-plugin-svgr": "^4.5.0",
90
93
  "vitest": "4.0.15"
91
94
  }
92
95
  }
@@ -1,32 +0,0 @@
1
- /**
2
- * Props for the AccessibleButton component.
3
- */
4
- export interface BaseAccessibleButtonProps {
5
- /**
6
- * Accessible label for the button, used by screen readers.
7
- */
8
- ariaLabel?: string;
9
- /**
10
- * Additional class names to apply to the button element.
11
- */
12
- className?: string;
13
- /**
14
- * HTML button type attribute.
15
- */
16
- type?: React.ButtonHTMLAttributes<HTMLButtonElement>["type"];
17
- /**
18
- * Click handler for the button.
19
- */
20
- onClick?: () => void;
21
- }
22
- interface AccessibleButtonProps extends BaseAccessibleButtonProps {
23
- /**
24
- * The content displayed inside the button.
25
- */
26
- children?: React.ReactNode;
27
- }
28
- /**
29
- * A fully accessible button component.
30
- */
31
- export declare const AccessibleButton: React.FC<AccessibleButtonProps>;
32
- export {};
@@ -1,28 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { fireEvent, render, screen } from "@testing-library/react";
3
- import { describe, expect, test, vi } from "vitest";
4
- import { AccessibleButton } from "./AccessibleButton";
5
- describe("Button", () => {
6
- test("should render button", async () => {
7
- // Arrange
8
- render(_jsx(AccessibleButton, { onClick: vi.fn(), children: "button" }));
9
- // Assert
10
- expect(screen.getByRole("button")).toBeVisible();
11
- expect(screen.getByRole("button")).toHaveTextContent("button");
12
- });
13
- test("should render button with ariaLabel", async () => {
14
- // Arrange
15
- render(_jsx(AccessibleButton, { ariaLabel: "This is a button", onClick: vi.fn(), children: "button" }));
16
- // Assert
17
- expect(screen.getByRole("button")).toBeVisible();
18
- expect(screen.getByRole("button")).toHaveTextContent("button");
19
- expect(screen.queryByLabelText("This is a button")).toBeInTheDocument();
20
- });
21
- test("should call onClick when clicked", () => {
22
- // Arrange
23
- const onClick = vi.fn();
24
- render(_jsx(AccessibleButton, { onClick: onClick, children: "button" }));
25
- fireEvent.click(screen.getByRole("button"));
26
- expect(onClick).toHaveBeenCalled();
27
- });
28
- });
@@ -1,118 +0,0 @@
1
- import { type VariantProps } from "tailwind-variants";
2
- declare const avatarStyles: import("tailwind-variants").TVReturnType<{
3
- isClickable: {
4
- true: {
5
- base: string[];
6
- };
7
- };
8
- size: {
9
- sm: {
10
- avatar: string[];
11
- };
12
- md: {
13
- avatar: string[];
14
- };
15
- lg: {
16
- avatar: string[];
17
- };
18
- xl: {
19
- avatar: string[];
20
- };
21
- };
22
- }, {
23
- base: string[];
24
- avatar: string[];
25
- action: string[];
26
- }, undefined, {
27
- isClickable: {
28
- true: {
29
- base: string[];
30
- };
31
- };
32
- size: {
33
- sm: {
34
- avatar: string[];
35
- };
36
- md: {
37
- avatar: string[];
38
- };
39
- lg: {
40
- avatar: string[];
41
- };
42
- xl: {
43
- avatar: string[];
44
- };
45
- };
46
- }, {
47
- base: string[];
48
- avatar: string[];
49
- action: string[];
50
- }, import("tailwind-variants").TVReturnType<{
51
- isClickable: {
52
- true: {
53
- base: string[];
54
- };
55
- };
56
- size: {
57
- sm: {
58
- avatar: string[];
59
- };
60
- md: {
61
- avatar: string[];
62
- };
63
- lg: {
64
- avatar: string[];
65
- };
66
- xl: {
67
- avatar: string[];
68
- };
69
- };
70
- }, {
71
- base: string[];
72
- avatar: string[];
73
- action: string[];
74
- }, undefined, unknown, unknown, undefined>>;
75
- type AvatarVariants = VariantProps<typeof avatarStyles>;
76
- type AvatarSize = "sm" | "md" | "lg" | "xl";
77
- /**
78
- * Props for the Avatar component.
79
- */
80
- interface AvatarProps extends AvatarVariants {
81
- /**
82
- * Alternative text describing the avatar image.
83
- */
84
- alt: string;
85
- /**
86
- * Controls the visual size of the avatar.
87
- */
88
- size: AvatarSize;
89
- /**
90
- * The URL source of the avatar image.
91
- */
92
- src: string;
93
- /**
94
- * Accessible label for the action button that appears on extra-large (`xl`)
95
- * avatars when `onActionClick` is provided.
96
- */
97
- actionAriaLabel?: string;
98
- /**
99
- * Click handler for the entire avatar.
100
- * Makes the outer wrapper clickable.
101
- */
102
- onAvatarClick?: () => void;
103
- /**
104
- * Optional click handler for the action button.
105
- * Only visible when:
106
- * - `size === "xl"`
107
- * - `onActionClick` is provided
108
- *
109
- * Useful for “Edit avatar” or “Change photo” actions.
110
- */
111
- onActionClick?: () => void;
112
- }
113
- /**
114
- * A flexible and accessible user avatar component.
115
- * Built on top of Radix UI’s `Avatar` primitives and styled with Tailwind variants.
116
- */
117
- export declare const Avatar: React.FC<AvatarProps>;
118
- export {};
@@ -1 +0,0 @@
1
- export declare const BrandingGallery: React.FC;
@@ -1,66 +0,0 @@
1
- import { type VariantProps } from "tailwind-variants";
2
- import { type BaseAccessibleButtonProps } from "../accessible-button/AccessibleButton";
3
- import type { IconBaseProps } from "../icons/IconBase";
4
- declare const buttonStyles: import("tailwind-variants").TVReturnType<{
5
- intent: {
6
- primary: string[];
7
- secondary: string[];
8
- tertiary: string[];
9
- };
10
- size: {
11
- md: string[];
12
- lg: string[];
13
- };
14
- }, undefined, string[], {
15
- intent: {
16
- primary: string[];
17
- secondary: string[];
18
- tertiary: string[];
19
- };
20
- size: {
21
- md: string[];
22
- lg: string[];
23
- };
24
- }, undefined, import("tailwind-variants").TVReturnType<{
25
- intent: {
26
- primary: string[];
27
- secondary: string[];
28
- tertiary: string[];
29
- };
30
- size: {
31
- md: string[];
32
- lg: string[];
33
- };
34
- }, undefined, string[], unknown, unknown, undefined>>;
35
- type ButtonVariants = VariantProps<typeof buttonStyles>;
36
- type ButtonIntent = "primary" | "secondary" | "tertiary";
37
- type ButtonSize = "md" | "lg";
38
- /**
39
- * Props for the Button component.
40
- *
41
- * @inheritdoc BaseAccessibleButtonProps
42
- * @inheritdoc ButtonVariants
43
- */
44
- interface ButtonProps extends ButtonVariants, BaseAccessibleButtonProps {
45
- /**
46
- * Visual intent of the button (controls background color, hover, and active styles).
47
- */
48
- intent: ButtonIntent;
49
- /**
50
- * Visual size of the button (padding and spacing).
51
- */
52
- size: ButtonSize;
53
- /**
54
- * Optional icon element rendered alongside the button label.
55
- */
56
- icon?: React.ComponentType<IconBaseProps>;
57
- /**
58
- * Visible text label displayed inside the button.
59
- */
60
- children: string;
61
- }
62
- /**
63
- * A fully accessible, stylable button component.
64
- */
65
- export declare const Button: React.FC<ButtonProps>;
66
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,30 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { fireEvent, render, screen } from "@testing-library/react";
3
- import { describe, expect, test, vi } from "vitest";
4
- import { Mumble } from "../icons/generated";
5
- import { Button } from "./Button";
6
- describe("Button", () => {
7
- test("should render button with icon", async () => {
8
- // Arrange
9
- render(_jsx(Button, { intent: "primary", size: "md", icon: Mumble, onClick: vi.fn(), children: "button" }));
10
- // Assert
11
- expect(screen.getByRole("button")).toBeVisible();
12
- expect(screen.getByRole("button")).toHaveTextContent("button");
13
- expect(screen.getByText("Mumble")).toBeVisible();
14
- });
15
- test("should render button without icon", async () => {
16
- // Arrange
17
- render(_jsx(Button, { intent: "primary", size: "md", onClick: vi.fn(), children: "button" }));
18
- // Assert
19
- expect(screen.getByRole("button")).toBeVisible();
20
- expect(screen.getByRole("button")).toHaveTextContent("button");
21
- expect(screen.queryByText("Mumble")).not.toBeInTheDocument();
22
- });
23
- test("should call onClick when clicked", () => {
24
- // Arrange
25
- const onClick = vi.fn();
26
- render(_jsx(Button, { intent: "primary", size: "md", icon: Mumble, onClick: onClick, children: "button" }));
27
- fireEvent.click(screen.getByRole("button"));
28
- expect(onClick).toHaveBeenCalled();
29
- });
30
- });
@@ -1,4 +0,0 @@
1
- export declare const ColorDoc: ({ colorName, colorIntensity, }: {
2
- colorName: string;
3
- colorIntensity: number;
4
- }) => import("react/jsx-runtime").JSX.Element;
@@ -1,83 +0,0 @@
1
- import { type VariantProps } from "tailwind-variants";
2
- declare const fileUploadStyles: import("tailwind-variants").TVReturnType<{
3
- [key: string]: {
4
- [key: string]: import("tailwind-merge").ClassNameValue | {
5
- base?: import("tailwind-merge").ClassNameValue;
6
- input?: import("tailwind-merge").ClassNameValue;
7
- action?: import("tailwind-merge").ClassNameValue;
8
- dropzone?: import("tailwind-merge").ClassNameValue;
9
- uploadIcon?: import("tailwind-merge").ClassNameValue;
10
- titleText?: import("tailwind-merge").ClassNameValue;
11
- subtitleText?: import("tailwind-merge").ClassNameValue;
12
- preview?: import("tailwind-merge").ClassNameValue;
13
- previewLabel?: import("tailwind-merge").ClassNameValue;
14
- };
15
- };
16
- } | {
17
- [x: string]: {
18
- [x: string]: import("tailwind-merge").ClassNameValue | {
19
- base?: import("tailwind-merge").ClassNameValue;
20
- input?: import("tailwind-merge").ClassNameValue;
21
- action?: import("tailwind-merge").ClassNameValue;
22
- dropzone?: import("tailwind-merge").ClassNameValue;
23
- uploadIcon?: import("tailwind-merge").ClassNameValue;
24
- titleText?: import("tailwind-merge").ClassNameValue;
25
- subtitleText?: import("tailwind-merge").ClassNameValue;
26
- preview?: import("tailwind-merge").ClassNameValue;
27
- previewLabel?: import("tailwind-merge").ClassNameValue;
28
- };
29
- };
30
- } | {}, {
31
- base: string[];
32
- dropzone: string[];
33
- uploadIcon: string[];
34
- titleText: string[];
35
- subtitleText: string[];
36
- action: string[];
37
- input: string[];
38
- preview: string[];
39
- previewLabel: string[];
40
- }, undefined, {
41
- [key: string]: {
42
- [key: string]: import("tailwind-merge").ClassNameValue | {
43
- base?: import("tailwind-merge").ClassNameValue;
44
- input?: import("tailwind-merge").ClassNameValue;
45
- action?: import("tailwind-merge").ClassNameValue;
46
- dropzone?: import("tailwind-merge").ClassNameValue;
47
- uploadIcon?: import("tailwind-merge").ClassNameValue;
48
- titleText?: import("tailwind-merge").ClassNameValue;
49
- subtitleText?: import("tailwind-merge").ClassNameValue;
50
- preview?: import("tailwind-merge").ClassNameValue;
51
- previewLabel?: import("tailwind-merge").ClassNameValue;
52
- };
53
- };
54
- } | {}, {
55
- base: string[];
56
- dropzone: string[];
57
- uploadIcon: string[];
58
- titleText: string[];
59
- subtitleText: string[];
60
- action: string[];
61
- input: string[];
62
- preview: string[];
63
- previewLabel: string[];
64
- }, import("tailwind-variants").TVReturnType<unknown, {
65
- base: string[];
66
- dropzone: string[];
67
- uploadIcon: string[];
68
- titleText: string[];
69
- subtitleText: string[];
70
- action: string[];
71
- input: string[];
72
- preview: string[];
73
- previewLabel: string[];
74
- }, undefined, unknown, unknown, undefined>>;
75
- type FileUploadVariants = VariantProps<typeof fileUploadStyles>;
76
- interface FileUploadProps extends FileUploadVariants {
77
- title?: string;
78
- subtitle?: string;
79
- actionLabel?: string;
80
- onFileSelect: (file: File | null) => void;
81
- }
82
- export declare const FileUpload: ({ title, subtitle, actionLabel, ...props }: FileUploadProps) => import("react/jsx-runtime").JSX.Element;
83
- export {};