profile-pane 3.1.4 → 3.2.0

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 (311) hide show
  1. package/README.md +16 -0
  2. package/lib/04567ff683933c35c465.png +0 -0
  3. package/lib/10163fd9b5a0e00d63a0.png +0 -0
  4. package/lib/1234dcb2eec2e45f252b.png +0 -0
  5. package/lib/20899934157df4db56cb.png +0 -0
  6. package/lib/33760bf79f097f449da5.png +0 -0
  7. package/lib/578d2b6ed32e7624164e.png +0 -0
  8. package/lib/5f62a5b2b7e99b9640c7.png +0 -0
  9. package/lib/6525766ecd288ec60129.png +0 -0
  10. package/lib/7800be6f6c4b5b0f4f20.png +0 -0
  11. package/lib/976473cf5fe24d657d4b.png +0 -0
  12. package/lib/ChatWithMe.d.ts +2 -1
  13. package/lib/ChatWithMe.d.ts.map +1 -1
  14. package/lib/ChatWithMe.js +3 -3
  15. package/lib/ProfileView.d.ts +1 -1
  16. package/lib/ProfileView.d.ts.map +1 -1
  17. package/lib/ProfileView.js +71 -131
  18. package/lib/ProfileViewModelPresenter.d.ts +23 -0
  19. package/lib/ProfileViewModelPresenter.d.ts.map +1 -0
  20. package/lib/ProfileViewModelPresenter.js +37 -0
  21. package/lib/QRCodeCard.d.ts +3 -1
  22. package/lib/QRCodeCard.d.ts.map +1 -1
  23. package/lib/QRCodeCard.js +86 -66
  24. package/lib/addMeToYourFriends.d.ts +3 -3
  25. package/lib/addMeToYourFriends.d.ts.map +1 -1
  26. package/lib/addMeToYourFriends.js +14 -30
  27. package/lib/bda84f59e7216675a208.png +0 -0
  28. package/lib/buttonsHelper.js +1 -1
  29. package/lib/cd68e8f3990ba8b2139e.png +0 -0
  30. package/lib/e7074a7e2cb69e51cfd3.png +0 -0
  31. package/lib/editProfilePane/EditCVCard.d.ts +1 -0
  32. package/lib/editProfilePane/EditCVCard.d.ts.map +1 -1
  33. package/lib/editProfilePane/EditCVCard.js +2 -1
  34. package/lib/editProfilePane/EditCommunitiesCard.d.ts +1 -1
  35. package/lib/editProfilePane/EditCommunitiesCard.d.ts.map +1 -1
  36. package/lib/editProfilePane/EditCommunitiesCard.js +2 -1
  37. package/lib/editProfilePane/EditContactsCard.d.ts +1 -0
  38. package/lib/editProfilePane/EditContactsCard.d.ts.map +1 -1
  39. package/lib/editProfilePane/EditContactsCard.js +2 -0
  40. package/lib/editProfilePane/EditFriendsCard.d.ts +1 -1
  41. package/lib/editProfilePane/EditFriendsCard.d.ts.map +1 -1
  42. package/lib/editProfilePane/EditFriendsCard.js +2 -1
  43. package/lib/editProfilePane/EditOtherPreferences.d.ts +1 -0
  44. package/lib/editProfilePane/EditOtherPreferences.d.ts.map +1 -1
  45. package/lib/editProfilePane/EditOtherPreferences.js +1 -0
  46. package/lib/editProfilePane/EditProfileView.d.ts +1 -1
  47. package/lib/editProfilePane/EditProfileView.d.ts.map +1 -1
  48. package/lib/editProfilePane/EditProfileView.js +1 -1
  49. package/lib/editProfilePane/EditSocialCard.d.ts +1 -0
  50. package/lib/editProfilePane/EditSocialCard.d.ts.map +1 -1
  51. package/lib/editProfilePane/EditSocialCard.js +2 -1
  52. package/lib/editProfilePane/editProfilePresenter.d.ts +1 -0
  53. package/lib/editProfilePane/editProfilePresenter.d.ts.map +1 -1
  54. package/lib/editProfilePane/editProfilePresenter.js +2 -0
  55. package/lib/f3772696fb7ee53c23d8.png +0 -0
  56. package/lib/icons-svg/contactIcons.d.ts +3 -0
  57. package/lib/icons-svg/contactIcons.d.ts.map +1 -0
  58. package/lib/icons-svg/contactIcons.js +32 -0
  59. package/lib/icons-svg/profileIcons.d.ts +22 -0
  60. package/lib/icons-svg/profileIcons.d.ts.map +1 -0
  61. package/lib/icons-svg/profileIcons.js +309 -0
  62. package/lib/index.d.ts +1 -3
  63. package/lib/index.d.ts.map +1 -1
  64. package/lib/index.js +42 -19
  65. package/lib/profile-pane.js +15629 -5666
  66. package/lib/profile-pane.js.map +1 -1
  67. package/lib/profile-pane.min.js +2171 -230
  68. package/lib/profile-pane.min.js.map +1 -1
  69. package/lib/rdfFormsHelper.d.ts +1 -0
  70. package/lib/rdfFormsHelper.d.ts.map +1 -1
  71. package/lib/rdfFormsHelper.js +2 -0
  72. package/lib/sections/bio/BioEditDialog.d.ts +6 -0
  73. package/lib/sections/bio/BioEditDialog.d.ts.map +1 -0
  74. package/lib/sections/bio/BioEditDialog.js +119 -0
  75. package/lib/sections/bio/BioSection.d.ts +7 -0
  76. package/lib/sections/bio/BioSection.d.ts.map +1 -0
  77. package/lib/sections/bio/BioSection.js +131 -0
  78. package/lib/sections/bio/mutations.d.ts +4 -0
  79. package/lib/sections/bio/mutations.d.ts.map +1 -0
  80. package/lib/sections/bio/mutations.js +43 -0
  81. package/lib/sections/bio/selectors.d.ts +4 -0
  82. package/lib/sections/bio/selectors.d.ts.map +1 -0
  83. package/lib/sections/bio/selectors.js +15 -0
  84. package/lib/sections/bio/types.d.ts +15 -0
  85. package/lib/sections/bio/types.d.ts.map +1 -0
  86. package/lib/sections/bio/types.js +5 -0
  87. package/lib/sections/contactInfo/ContactInfoEditDialog.d.ts +7 -0
  88. package/lib/sections/contactInfo/ContactInfoEditDialog.d.ts.map +1 -0
  89. package/lib/sections/contactInfo/ContactInfoEditDialog.js +658 -0
  90. package/lib/sections/contactInfo/ContactInfoSection.d.ts +5 -0
  91. package/lib/sections/contactInfo/ContactInfoSection.d.ts.map +1 -0
  92. package/lib/sections/contactInfo/ContactInfoSection.js +229 -0
  93. package/lib/sections/contactInfo/mutations.d.ts +4 -0
  94. package/lib/sections/contactInfo/mutations.d.ts.map +1 -0
  95. package/lib/sections/contactInfo/mutations.js +150 -0
  96. package/lib/sections/contactInfo/selectors.d.ts +4 -0
  97. package/lib/sections/contactInfo/selectors.d.ts.map +1 -0
  98. package/lib/sections/contactInfo/selectors.js +104 -0
  99. package/lib/sections/contactInfo/types.d.ts +44 -0
  100. package/lib/sections/contactInfo/types.d.ts.map +1 -0
  101. package/lib/sections/contactInfo/types.js +5 -0
  102. package/lib/sections/education/EducationEditDialog.d.ts +7 -0
  103. package/lib/sections/education/EducationEditDialog.d.ts.map +1 -0
  104. package/lib/sections/education/EducationEditDialog.js +459 -0
  105. package/lib/sections/education/EducationSection.d.ts +7 -0
  106. package/lib/sections/education/EducationSection.d.ts.map +1 -0
  107. package/lib/sections/education/EducationSection.js +126 -0
  108. package/lib/sections/education/mutations.d.ts +4 -0
  109. package/lib/sections/education/mutations.d.ts.map +1 -0
  110. package/lib/sections/education/mutations.js +60 -0
  111. package/lib/sections/education/selectors.d.ts +4 -0
  112. package/lib/sections/education/selectors.d.ts.map +1 -0
  113. package/lib/sections/education/selectors.js +64 -0
  114. package/lib/sections/education/types.d.ts +20 -0
  115. package/lib/sections/education/types.d.ts.map +1 -0
  116. package/lib/sections/education/types.js +5 -0
  117. package/lib/sections/heading/HeadingEditDialog.d.ts +6 -0
  118. package/lib/sections/heading/HeadingEditDialog.d.ts.map +1 -0
  119. package/lib/sections/heading/HeadingEditDialog.js +742 -0
  120. package/lib/sections/heading/HeadingSection.d.ts +9 -0
  121. package/lib/sections/heading/HeadingSection.d.ts.map +1 -0
  122. package/lib/sections/heading/HeadingSection.js +97 -0
  123. package/lib/sections/heading/camera.d.ts +19 -0
  124. package/lib/sections/heading/camera.d.ts.map +1 -0
  125. package/lib/sections/heading/camera.js +199 -0
  126. package/lib/sections/heading/dateHelpers.d.ts +4 -0
  127. package/lib/sections/heading/dateHelpers.d.ts.map +1 -0
  128. package/lib/sections/heading/dateHelpers.js +48 -0
  129. package/lib/sections/heading/imageHelpers.d.ts +4 -0
  130. package/lib/sections/heading/imageHelpers.d.ts.map +1 -0
  131. package/lib/sections/heading/imageHelpers.js +81 -0
  132. package/lib/sections/heading/mutations.d.ts +4 -0
  133. package/lib/sections/heading/mutations.d.ts.map +1 -0
  134. package/lib/sections/heading/mutations.js +190 -0
  135. package/lib/sections/heading/selectors.d.ts +5 -0
  136. package/lib/sections/heading/selectors.d.ts.map +1 -0
  137. package/lib/sections/heading/selectors.js +157 -0
  138. package/lib/sections/heading/types.d.ts +36 -0
  139. package/lib/sections/heading/types.d.ts.map +1 -0
  140. package/lib/sections/heading/types.js +5 -0
  141. package/lib/sections/languages/LanguageEditDialog.d.ts +7 -0
  142. package/lib/sections/languages/LanguageEditDialog.d.ts.map +1 -0
  143. package/lib/sections/languages/LanguageEditDialog.js +457 -0
  144. package/lib/sections/languages/LanguageSection.d.ts +5 -0
  145. package/lib/sections/languages/LanguageSection.d.ts.map +1 -0
  146. package/lib/sections/languages/LanguageSection.js +137 -0
  147. package/lib/sections/languages/mutations.d.ts +6 -0
  148. package/lib/sections/languages/mutations.d.ts.map +1 -0
  149. package/lib/sections/languages/mutations.js +296 -0
  150. package/lib/sections/languages/selectors.d.ts +5 -0
  151. package/lib/sections/languages/selectors.d.ts.map +1 -0
  152. package/lib/sections/languages/selectors.js +146 -0
  153. package/lib/sections/languages/types.d.ts +15 -0
  154. package/lib/sections/languages/types.d.ts.map +1 -0
  155. package/lib/sections/languages/types.js +5 -0
  156. package/lib/sections/projects/ProjectEditDialog.d.ts +7 -0
  157. package/lib/sections/projects/ProjectEditDialog.d.ts.map +1 -0
  158. package/lib/sections/projects/ProjectEditDialog.js +182 -0
  159. package/lib/sections/projects/ProjectSection.d.ts +6 -0
  160. package/lib/sections/projects/ProjectSection.d.ts.map +1 -0
  161. package/lib/sections/projects/ProjectSection.js +220 -0
  162. package/lib/sections/projects/mutations.d.ts +4 -0
  163. package/lib/sections/projects/mutations.d.ts.map +1 -0
  164. package/lib/sections/projects/mutations.js +188 -0
  165. package/lib/sections/projects/selectors.d.ts +5 -0
  166. package/lib/sections/projects/selectors.d.ts.map +1 -0
  167. package/lib/sections/projects/selectors.js +163 -0
  168. package/lib/sections/projects/types.d.ts +28 -0
  169. package/lib/sections/projects/types.d.ts.map +1 -0
  170. package/lib/sections/projects/types.js +8 -0
  171. package/lib/sections/resume/ResumeEditDialog.d.ts +7 -0
  172. package/lib/sections/resume/ResumeEditDialog.d.ts.map +1 -0
  173. package/lib/sections/resume/ResumeEditDialog.js +629 -0
  174. package/lib/sections/resume/ResumeSection.d.ts +7 -0
  175. package/lib/sections/resume/ResumeSection.d.ts.map +1 -0
  176. package/lib/sections/resume/ResumeSection.js +160 -0
  177. package/lib/sections/resume/mutations.d.ts +6 -0
  178. package/lib/sections/resume/mutations.d.ts.map +1 -0
  179. package/lib/sections/resume/mutations.js +172 -0
  180. package/lib/sections/resume/selectors.d.ts +4 -0
  181. package/lib/sections/resume/selectors.d.ts.map +1 -0
  182. package/lib/sections/resume/selectors.js +142 -0
  183. package/lib/sections/resume/types.d.ts +33 -0
  184. package/lib/sections/resume/types.d.ts.map +1 -0
  185. package/lib/sections/resume/types.js +8 -0
  186. package/lib/sections/shared/collapsibleSection.d.ts +2 -0
  187. package/lib/sections/shared/collapsibleSection.d.ts.map +1 -0
  188. package/lib/sections/shared/collapsibleSection.js +24 -0
  189. package/lib/sections/shared/contactTypeUtils.d.ts +7 -0
  190. package/lib/sections/shared/contactTypeUtils.d.ts.map +1 -0
  191. package/lib/sections/shared/contactTypeUtils.js +48 -0
  192. package/lib/sections/shared/idNodeFactory.d.ts +3 -0
  193. package/lib/sections/shared/idNodeFactory.d.ts.map +1 -0
  194. package/lib/sections/shared/idNodeFactory.js +14 -0
  195. package/lib/sections/shared/phoneCountries.d.ts +20 -0
  196. package/lib/sections/shared/phoneCountries.d.ts.map +1 -0
  197. package/lib/sections/shared/phoneCountries.js +1080 -0
  198. package/lib/sections/shared/rdfList.d.ts +3 -0
  199. package/lib/sections/shared/rdfList.d.ts.map +1 -0
  200. package/lib/sections/shared/rdfList.js +34 -0
  201. package/lib/sections/shared/rdfMutationHelpers.d.ts +12 -0
  202. package/lib/sections/shared/rdfMutationHelpers.d.ts.map +1 -0
  203. package/lib/sections/shared/rdfMutationHelpers.js +82 -0
  204. package/lib/sections/shared/rowState.d.ts +21 -0
  205. package/lib/sections/shared/rowState.d.ts.map +1 -0
  206. package/lib/sections/shared/rowState.js +52 -0
  207. package/lib/sections/shared/sanitizeUtils.d.ts +5 -0
  208. package/lib/sections/shared/sanitizeUtils.d.ts.map +1 -0
  209. package/lib/sections/shared/sanitizeUtils.js +22 -0
  210. package/lib/sections/shared/sectionCardHelpers.d.ts +11 -0
  211. package/lib/sections/shared/sectionCardHelpers.d.ts.map +1 -0
  212. package/lib/sections/shared/sectionCardHelpers.js +105 -0
  213. package/lib/sections/shared/types.d.ts +7 -0
  214. package/lib/sections/shared/types.d.ts.map +1 -0
  215. package/lib/sections/shared/types.js +5 -0
  216. package/lib/sections/skills/SkillsEditDialog.d.ts +7 -0
  217. package/lib/sections/skills/SkillsEditDialog.d.ts.map +1 -0
  218. package/lib/sections/skills/SkillsEditDialog.js +340 -0
  219. package/lib/sections/skills/SkillsSection.d.ts +5 -0
  220. package/lib/sections/skills/SkillsSection.d.ts.map +1 -0
  221. package/lib/sections/skills/SkillsSection.js +169 -0
  222. package/lib/sections/skills/mutations.d.ts +6 -0
  223. package/lib/sections/skills/mutations.d.ts.map +1 -0
  224. package/lib/sections/skills/mutations.js +110 -0
  225. package/lib/sections/skills/selectors.d.ts +6 -0
  226. package/lib/sections/skills/selectors.d.ts.map +1 -0
  227. package/lib/sections/skills/selectors.js +37 -0
  228. package/lib/sections/skills/types.d.ts +14 -0
  229. package/lib/sections/skills/types.d.ts.map +1 -0
  230. package/lib/sections/skills/types.js +5 -0
  231. package/lib/sections/social/SocialEditDialog.d.ts +7 -0
  232. package/lib/sections/social/SocialEditDialog.d.ts.map +1 -0
  233. package/lib/sections/social/SocialEditDialog.js +362 -0
  234. package/lib/sections/social/SocialSection.d.ts +8 -0
  235. package/lib/sections/social/SocialSection.d.ts.map +1 -0
  236. package/lib/sections/social/SocialSection.js +201 -0
  237. package/lib/sections/social/constants.d.ts +3 -0
  238. package/lib/sections/social/constants.d.ts.map +1 -0
  239. package/lib/sections/social/constants.js +16 -0
  240. package/lib/sections/social/helpers.d.ts +15 -0
  241. package/lib/sections/social/helpers.d.ts.map +1 -0
  242. package/lib/sections/social/helpers.js +316 -0
  243. package/lib/sections/social/mutations.d.ts +4 -0
  244. package/lib/sections/social/mutations.d.ts.map +1 -0
  245. package/lib/sections/social/mutations.js +298 -0
  246. package/lib/sections/social/selectors.d.ts +4 -0
  247. package/lib/sections/social/selectors.d.ts.map +1 -0
  248. package/lib/sections/social/selectors.js +43 -0
  249. package/lib/sections/social/types.d.ts +19 -0
  250. package/lib/sections/social/types.d.ts.map +1 -0
  251. package/lib/sections/social/types.js +5 -0
  252. package/lib/styles/BioSection.css +77 -0
  253. package/lib/styles/CVCard.css +107 -2
  254. package/lib/styles/ContactInfoEditDialog.css +153 -0
  255. package/lib/styles/EditDialogs.css +1028 -0
  256. package/lib/styles/EducationCard.css +103 -0
  257. package/lib/styles/HeadingSection.css +309 -0
  258. package/lib/styles/ProfileCard.css +10 -42
  259. package/lib/styles/ProfileView.css +53 -8
  260. package/lib/styles/ProjectsCard.css +206 -0
  261. package/lib/styles/QRCodeCard.css +29 -10
  262. package/lib/styles/SocialCard.css +41 -13
  263. package/lib/styles/dialog.css +209 -0
  264. package/lib/styles/utilities.css +638 -256
  265. package/lib/textUtils.d.ts +6 -0
  266. package/lib/textUtils.d.ts.map +1 -0
  267. package/lib/textUtils.js +44 -0
  268. package/lib/texts.d.ts +45 -4
  269. package/lib/texts.d.ts.map +1 -1
  270. package/lib/texts.js +46 -5
  271. package/lib/types.d.ts +2 -0
  272. package/lib/types.d.ts.map +1 -0
  273. package/lib/types.js +5 -0
  274. package/lib/ui/dialog.d.ts +29 -0
  275. package/lib/ui/dialog.d.ts.map +1 -0
  276. package/lib/ui/dialog.js +269 -0
  277. package/lib/ui/errors.d.ts +2 -0
  278. package/lib/ui/errors.d.ts.map +1 -0
  279. package/lib/ui/errors.js +10 -0
  280. package/package.json +8 -6
  281. package/lib/CVCard.d.ts +0 -4
  282. package/lib/CVCard.d.ts.map +0 -1
  283. package/lib/CVCard.js +0 -114
  284. package/lib/CVPresenter.d.ts +0 -25
  285. package/lib/CVPresenter.d.ts.map +0 -1
  286. package/lib/CVPresenter.js +0 -119
  287. package/lib/FriendList.d.ts +0 -6
  288. package/lib/FriendList.d.ts.map +0 -1
  289. package/lib/FriendList.js +0 -27
  290. package/lib/ProfileCard.d.ts +0 -6
  291. package/lib/ProfileCard.d.ts.map +0 -1
  292. package/lib/ProfileCard.js +0 -62
  293. package/lib/SocialCard.d.ts +0 -5
  294. package/lib/SocialCard.d.ts.map +0 -1
  295. package/lib/SocialCard.js +0 -51
  296. package/lib/SocialPresenter.d.ts +0 -11
  297. package/lib/SocialPresenter.d.ts.map +0 -1
  298. package/lib/SocialPresenter.js +0 -117
  299. package/lib/StuffCard.d.ts +0 -10
  300. package/lib/StuffCard.d.ts.map +0 -1
  301. package/lib/StuffCard.js +0 -52
  302. package/lib/StuffPresenter.d.ts +0 -14
  303. package/lib/StuffPresenter.d.ts.map +0 -1
  304. package/lib/StuffPresenter.js +0 -53
  305. package/lib/presenter.d.ts +0 -14
  306. package/lib/presenter.d.ts.map +0 -1
  307. package/lib/presenter.js +0 -68
  308. package/lib/styles/FriendList.css +0 -12
  309. package/lib/styles/StuffCard.css +0 -23
  310. package/lib/styles/editProfile.css +0 -62
  311. package/lib/styles/profileRDFFormsEnforced.css +0 -427
@@ -0,0 +1,206 @@
1
+ /* The following are the original styles for the ProjectsCard section. */
2
+ .project-card__rail {
3
+ display: flex;
4
+ gap: 1rem;
5
+ overflow-x: auto;
6
+ padding: 0;
7
+ margin: 0;
8
+ list-style: none;
9
+ scroll-snap-type: x proximity;
10
+ }
11
+ .project-card__follow-button {
12
+ width: auto;
13
+ border-radius: var(--border-radius-md, 0.5rem);
14
+ border: var(--border-width-sm, 0.1rem) solid var(--color-primary, #7C4DFF);
15
+ padding: 0.5rem 0.625rem; /* ~8px 10px, increased by ~2px in rem */
16
+ color: var(--color-primary, #7C4DFF);
17
+ font-size: var(--font-size-sm, 0.875rem); /* 14px */
18
+ font-weight: var(--font-weight-md, 500);
19
+ background: var(--white, #FFF);
20
+ cursor: pointer;
21
+ }
22
+
23
+ .project-card__follow-button:hover {
24
+ background: var(--lavender-400, #cbb9ff);
25
+ }
26
+
27
+ .project-card__rail::-webkit-scrollbar {
28
+ height: 8px;
29
+ }
30
+
31
+ .project-card__rail::-webkit-scrollbar-thumb {
32
+ background: #b0b7c3;
33
+ border-radius: 999px;
34
+ }
35
+
36
+ .project-card {
37
+ flex: 0 0 min(420px, 88vw);
38
+ scroll-snap-align: start;
39
+ border-radius: var(--border-radius-md, 0.5rem);
40
+ border: var(--border-width-sm, 0.1rem) solid var(--gray-200, #E5E7EB);
41
+ padding: var(--spacing-md, 1.25rem);
42
+ justify-content: center;
43
+ align-items: flex-start;
44
+ gap: var(--spacing-sm, 0.938rem);
45
+ flex-shrink: 0;
46
+ }
47
+
48
+ .project-card__link {
49
+ display: block;
50
+ color: inherit;
51
+ text-decoration: none;
52
+ }
53
+
54
+ .project-card__link:hover .project-card__title,
55
+ .project-card__link:focus-visible .project-card__title {
56
+ text-decoration: underline;
57
+ }
58
+
59
+ .project-card__wrapper {
60
+ display: grid;
61
+ grid-template-columns: 88px 1fr;
62
+ gap: 0.9rem;
63
+ align-items: start;
64
+ padding-bottom: 0.563rem;
65
+ border-radius: var(--border-radius-md, 0.5rem);
66
+ border-bottom: 1px solid var(--gray-200, #E5E7EB);
67
+ }
68
+
69
+ .project-card__thumb {
70
+ width: 66px;
71
+ height: 66px;
72
+ overflow: hidden;
73
+ border-radius: var(--border-radius-base, 0.3125rem);
74
+ background: var(--gray-200, #E5E7EB);
75
+ padding: 0.656rem var(--spacing-2xs, 0.625rem);
76
+ aspect-ratio: 1/1;
77
+ }
78
+
79
+ .project-card__thumb-image {
80
+ width: 100%;
81
+ height: 100%;
82
+ object-fit: cover;
83
+ display: block;
84
+ }
85
+
86
+ .project-card__thumb-fallback {
87
+ width: 100%;
88
+ height: 100%;
89
+ font-size: 0.72rem;
90
+ color: #5a6476;
91
+ text-transform: uppercase;
92
+ letter-spacing: 0.04em;
93
+ }
94
+
95
+ .project-card__content {
96
+ min-width: 0;
97
+ }
98
+
99
+ .project-card__title,
100
+ .project-card__organization,
101
+ .project-card__category,
102
+ .project-card__meta,
103
+ .project-card__description {
104
+ margin: 0;
105
+ }
106
+
107
+ .project-card__title {
108
+ overflow: hidden;
109
+ color: var(--gray-900, #101828);
110
+ text-overflow: ellipsis;
111
+ white-space: nowrap;
112
+ font-size: var(--font-size-lg, 1.125rem);
113
+ font-weight: var(--font-weight-bold, 600);
114
+ align-self: stretch;
115
+ }
116
+
117
+ .project-card__organization {
118
+ margin-top: 0.35rem;
119
+ color: var(--gray-700, #364153);
120
+ font-size: var(--font-size-sm, 0.875rem);
121
+ font-weight: var(--font-weight-md, 500);
122
+ overflow: hidden;
123
+ text-overflow: ellipsis;
124
+ display: block;
125
+ line-height: 1.35;
126
+ max-height: calc(1.35em * 2);
127
+ align-self: stretch;
128
+ }
129
+
130
+ .project-card__category {
131
+ font-size: var(--font-size-xxs, 0.75rem);
132
+ font-weight: var(--font-weight-md, 500);
133
+ }
134
+
135
+ .project-card__category--project {
136
+ color: var(--purple-500, #AD46FF);
137
+
138
+ }
139
+
140
+ .project-card__category--community {
141
+ color: var(--yellow-700, #A65F00);
142
+ }
143
+
144
+ .project-card__category--unknown {
145
+ color: var(--slate-700, #314158);
146
+ }
147
+
148
+ .project-card__meta {
149
+ margin-top: 0.55rem;
150
+ overflow-wrap: anywhere;
151
+ font-size: 0.86rem;
152
+ }
153
+
154
+ .project-card__footer {
155
+ margin-top: 0.8rem;
156
+ padding: 0.75rem;
157
+
158
+ }
159
+
160
+ .project-card__more-button {
161
+ display: none;
162
+ }
163
+
164
+ @media (max-width: 640px) {
165
+ .project-card__rail {
166
+ flex-wrap: wrap;
167
+ overflow-x: visible;
168
+ scroll-snap-type: none;
169
+ }
170
+
171
+ .project-card {
172
+ flex: 1 1 100%;
173
+ max-width: 100%;
174
+ }
175
+
176
+ .profile-section-collapsible[data-mobile-expanded="false"] .project-card:nth-child(n + 3) {
177
+ display: none;
178
+ }
179
+
180
+ .project-card__more-button {
181
+ display: inline-flex;
182
+ align-items: center;
183
+ justify-content: center;
184
+ gap: 0.375rem;
185
+ width: 100%;
186
+ margin-top: 0.75rem;
187
+ padding: 0;
188
+ border: 0;
189
+ background: transparent;
190
+ color: var(--color-primary, #7C4DFF);
191
+ font-size: var(--font-size-sm, 0.875rem);
192
+ font-weight: var(--font-weight-bold, 600);
193
+ cursor: pointer;
194
+ }
195
+
196
+ .project-card__more-button[data-mobile-expanded="true"] .project-card__more-icon {
197
+ transform: rotate(180deg);
198
+ }
199
+
200
+ .project-card__more-icon {
201
+ display: inline-flex;
202
+ align-items: center;
203
+ justify-content: center;
204
+ transition: transform var(--animation-duration, 0.2s) ease;
205
+ }
206
+ }
@@ -2,23 +2,42 @@
2
2
  /* Note: Uses utilities: .text-center */
3
3
 
4
4
  /* Caption under the QR code */
5
- .qrCaption {
5
+ .qrcode-card__caption {
6
6
  text-align: center;
7
7
  margin-top: 0;
8
- font-size: 0.95em;
9
- color: var(--color-text-secondary);
8
+ padding-bottom: 0.25rem;
9
+ color: var(--gray-800, #1E2939);
10
+ font-size: var(--font-size-md, 1rem); /* 16px */
11
+ font-weight: var(--font-weight-md, 500);
10
12
  }
11
13
 
12
- .QRCode {
13
- width: 100%;
14
- max-width: 320px;
15
- min-width: 180px;
14
+ .qrcode-card {
15
+ width: 136px;
16
16
  margin: 0 auto;
17
- display: block;
17
+ height: auto;
18
+ flex-shrink: 0;
18
19
  }
19
20
 
20
- .QRCode [role="img"]:focus {
21
- outline: 2px solid var(--color-primary, #7C4DFF);
21
+ .qrcode-card__frame {
22
+ padding: 1rem 1rem 1.25rem 1.063rem; /* 16px 16px 20px 17px */
23
+ border-radius: var(--border-radius-base, 0.3125rem); /* 5px */
24
+ border: var(--border-width-thin, 0.1rem) solid var(--gray-200, #E5E7EB);
25
+ background: var(--gray-100, #F3F4F6);
26
+ }
27
+
28
+ .qrcode-card [role="img"]:focus {
29
+ outline: var(--border-width-medium, 2px) solid var(--color-primary, #7C4DFF);
22
30
  outline-offset: 2px;
23
31
  box-shadow: 0 0 0 2px rgba(124,77,255,0.2);
32
+ }
33
+
34
+ .qrcode-card [role="img"] {
35
+ width: 136px;
36
+ height: 136px;
37
+ }
38
+
39
+ .qrcode-card [role="img"] svg {
40
+ width: 100%;
41
+ height: 100%;
42
+ display: block;
24
43
  }
@@ -5,20 +5,13 @@
5
5
  display: flex;
6
6
  flex-direction: row;
7
7
  flex-wrap: wrap;
8
- gap: var(--spacing-lg);
9
- justify-content: center;
8
+ gap: var(--spacing-xxs);
9
+ justify-content: flex-start;
10
10
  }
11
11
 
12
12
  .socialItem {
13
13
  display: flex;
14
14
  align-items: center;
15
- gap: var(--spacing-sm);
16
- font-size: 1.1em;
17
- }
18
-
19
- .socialItem span {
20
- min-width: 0;
21
- display: block;
22
15
  }
23
16
 
24
17
  .socialItem a {
@@ -26,9 +19,8 @@
26
19
  text-decoration: none;
27
20
  display: flex;
28
21
  align-items: center;
29
- gap: var(--spacing-sm);
30
22
  min-height: var(--min-touch-target);
31
- padding: var(--spacing-xs);
23
+ padding: var(--spacing-xxs);
32
24
  border-radius: var(--border-radius-base);
33
25
  transition: background-color var(--animation-duration) ease;
34
26
  position: relative;
@@ -53,9 +45,45 @@
53
45
  }
54
46
 
55
47
  .socialIcon {
56
- width: 2.5em;
57
- height: 2.5em;
48
+ width: var(--icon-base);
49
+ height: var(--icon-base);
58
50
  border-radius: var(--border-radius-base);
59
51
  background: var(--color-card-bg);
60
52
  flex-shrink: 0;
61
53
  }
54
+
55
+ .socialCard__more-button {
56
+ display: none;
57
+ }
58
+
59
+ @media (max-width: 1000px) {
60
+ .socialCard .socialList {
61
+ display: grid;
62
+ grid-template-columns: repeat(5, max-content);
63
+ justify-content: flex-start;
64
+ }
65
+
66
+ .socialCard[data-mobile-expanded="true"] .socialList {
67
+ grid-template-columns: repeat(3, max-content);
68
+ }
69
+
70
+ .socialCard[data-mobile-expanded="false"] .socialItem:nth-child(n + 11) {
71
+ display: none;
72
+ }
73
+
74
+ .socialCard__more-button {
75
+ display: inline-flex;
76
+ margin-top: var(--spacing-xs);
77
+ padding: 0;
78
+ border: 0;
79
+ background: transparent;
80
+ color: var(--color-primary, #7C4DFF);
81
+ font: inherit;
82
+ font-weight: 600;
83
+ cursor: pointer;
84
+ }
85
+
86
+ .socialCard[data-mobile-expanded="true"] .socialCard__more-button {
87
+ display: none;
88
+ }
89
+ }
@@ -0,0 +1,209 @@
1
+ /* CSS for the accessible modal dialogs created by dialog.ts */
2
+ /* dialog host */
3
+ #profile-modal {
4
+ margin: 0;
5
+ padding: 0;
6
+ border: none;
7
+ background: rgba(0, 0, 0, 0.5);
8
+ max-width: none;
9
+ max-height: none;
10
+ width: 100%;
11
+ height: 100%;
12
+ overflow: hidden;
13
+ position: fixed;
14
+ inset: 0;
15
+ display: grid;
16
+ place-items: center;
17
+ z-index: 9999;
18
+ }
19
+
20
+ #profile-modal:not([open]) {
21
+ display: none;
22
+ }
23
+
24
+ #profile-modal::backdrop {
25
+ background: rgba(0, 0, 0, 0.5);
26
+ }
27
+
28
+ #profile-modal .modal {
29
+ box-sizing: border-box;
30
+ margin: 0;
31
+ background: var(--color-background);
32
+ padding: var(--spacing-lg);
33
+ border-radius: var(--border-radius-base);
34
+ max-width: 100%;
35
+ width: min(640px, 92vw);
36
+ max-height: 85vh;
37
+ overflow: auto;
38
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
39
+ }
40
+
41
+ #profile-modal .modal .modal-header {
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: space-between;
45
+ gap: var(--spacing-lg);
46
+ margin: calc(-1 * var(--spacing-lg)) calc(-1 * var(--spacing-lg)) var(--spacing-sm) calc(-1 * var(--spacing-lg));
47
+ padding: var(--spacing-lg);
48
+ border-radius: var(--border-radius-base, 0.3125rem) var(--border-radius-base, 0.3125rem) 0 0;
49
+ border: var(--border-width-sm, 0.1rem) solid var(--slate-200, #E2E8F0);
50
+ background: var(--slate-50, #F8FAFC);
51
+ }
52
+
53
+ #profile-modal .modal #modal-title {
54
+ margin: 0;
55
+ }
56
+
57
+ #profile-modal .modal #modal-header-action > button[aria-label="Close dialog"] {
58
+ min-height: 2rem;
59
+ min-width: 2rem;
60
+ padding: 0;
61
+ border: none;
62
+ background: transparent;
63
+ color: var(--color-text);
64
+ font-size: 1.5rem;
65
+ line-height: 1;
66
+ cursor: pointer;
67
+ }
68
+
69
+ #profile-modal .modal #modal-header-action > button[aria-label="Close dialog"]:hover {
70
+ color: var(--color-primary);
71
+ }
72
+
73
+ #profile-modal .modal #modal-header-action {
74
+ display: flex;
75
+ align-items: center;
76
+ }
77
+
78
+ #profile-modal .modal .modal__header-action-button {
79
+ min-height: auto;
80
+ padding: var(--spacing-xxs);
81
+ border: none;
82
+ background: none;
83
+ color: var(--color-primary);
84
+ font-weight: 500;
85
+ }
86
+
87
+ #profile-modal .modal .modal__header-action-button:hover {
88
+ text-decoration: underline;
89
+ }
90
+
91
+ /* button container: center buttons horizontally (uses id in markup) */
92
+ #profile-modal #modal-buttons {
93
+ display: flex;
94
+ padding: 20px 0 20px 30px;
95
+ justify-content: flex-end;
96
+ align-items: center;
97
+ gap: 15px;
98
+ align-self: stretch;
99
+ border-top: var(--border-width-sm, 0.1rem) solid var(--slate-200, #E2E8F0);
100
+ background: var(--gray-50, #F9FAFB);
101
+ }
102
+
103
+ #profile-modal #modal-buttons button {
104
+ width: 10.8rem;
105
+ }
106
+
107
+ #profile-modal .modal__error-section {
108
+ margin-top: var(--spacing-sm);
109
+ }
110
+
111
+ #profile-modal .modal__error-section[hidden] {
112
+ display: none !important;
113
+ }
114
+
115
+
116
+ /* buttons themselves use the shared btn-primary rules */
117
+ #profile-modal .modal button {
118
+ min-height: var(--min-touch-target);
119
+ padding: var(--spacing-sm) var(--spacing-md);
120
+ border: 1px solid var(--color-primary);
121
+ border-radius: var(--border-radius-base);
122
+ font-weight: 600;
123
+ cursor: pointer;
124
+ transition: all var(--animation-duration) ease;
125
+ }
126
+
127
+ #profile-modal .modal button.btn-primary {
128
+ background: var(--color-primary);
129
+ color: var(--white, #FFF);
130
+ font-size: var(--font-size-lg, 1.125rem); /* 18px */
131
+ font-weight: var(--font-weight-bold, 600);
132
+ }
133
+
134
+ #profile-modal .modal button.btn-primary:hover {
135
+ background: color-mix(in srgb, var(--color-primary) 90%, black);
136
+ box-shadow: 0 2px 4px rgba(124, 77, 255, 0.2);
137
+ }
138
+
139
+ #profile-modal .modal button.btn-primary:active {
140
+ box-shadow: 0 1px 2px rgba(124, 77, 255, 0.2);
141
+ }
142
+
143
+ #profile-modal .modal button:disabled {
144
+ opacity: var(--opacity-disabled, 0.6);
145
+ cursor: not-allowed;
146
+ transform: none;
147
+ }
148
+
149
+ /* Keep text-style actions in section headers while preserving footer button styling. */
150
+ #profile-modal .modal .profile__section-header .profile__action-button {
151
+ min-height: auto;
152
+ padding: var(--spacing-xxs);
153
+ border: none;
154
+ background: none;
155
+ color: var(--color-primary);
156
+ font-weight: 500;
157
+ }
158
+
159
+ #profile-modal .modal .profile__section-header .profile__action-button:hover {
160
+ text-decoration: underline;
161
+ }
162
+
163
+ @media (max-width: 640px) {
164
+ #profile-modal {
165
+ padding-top: max(var(--spacing-sm), env(safe-area-inset-top));
166
+ padding-right: var(--spacing-sm);
167
+ padding-bottom: max(var(--spacing-sm), env(safe-area-inset-bottom));
168
+ padding-left: var(--spacing-sm);
169
+ place-items: center;
170
+ }
171
+
172
+ #profile-modal .modal {
173
+ width: min(420px, calc(100% - 2 * var(--spacing-sm)));
174
+ max-width: 420px;
175
+ max-height: calc(100dvh - 2 * var(--spacing-sm));
176
+ padding: var(--spacing-md);
177
+ border-radius: calc(var(--border-radius-base) * 0.75);
178
+ overscroll-behavior: contain;
179
+ justify-self: center;
180
+ align-self: center;
181
+ margin: 0;
182
+ }
183
+
184
+ #profile-modal .modal .modal-header {
185
+ gap: var(--spacing-md);
186
+ margin: calc(-1 * var(--spacing-md)) calc(-1 * var(--spacing-md)) var(--spacing-sm) calc(-1 * var(--spacing-md));
187
+ padding: var(--spacing-md);
188
+ }
189
+
190
+ #profile-modal #modal-buttons {
191
+ flex-direction: row;
192
+ align-items: center;
193
+ justify-content: center;
194
+ gap: var(--spacing-sm, 0.938rem);
195
+ padding: var(--spacing-md) 0 0;
196
+ margin: var(--spacing-md) auto 0;
197
+ box-sizing: border-box;
198
+ width: 100%;
199
+ }
200
+
201
+ #profile-modal #modal-buttons button {
202
+ flex: 0 0 auto;
203
+ width: 10.8rem;
204
+ min-width: 8.5rem;
205
+ padding: var(--spacing-sm) var(--spacing-md);
206
+ font-size: var(--font-size-md, 1rem);
207
+ }
208
+
209
+ }