profile-pane 3.2.1 → 3.2.2-test.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 (241) hide show
  1. package/README.md +50 -0
  2. package/lib/303.profile-pane.js +1362 -0
  3. package/lib/303.profile-pane.js.map +1 -0
  4. package/lib/303.profile-pane.min.js +2 -0
  5. package/lib/303.profile-pane.min.js.map +1 -0
  6. package/lib/ProfileView.css +1090 -0
  7. package/lib/ProfileView.d.ts +2 -1
  8. package/lib/ProfileView.d.ts.map +1 -1
  9. package/lib/ProfileView.js +64 -36
  10. package/lib/buttonsHelper.d.ts +1 -1
  11. package/lib/buttonsHelper.d.ts.map +1 -1
  12. package/lib/buttonsHelper.js +2 -1
  13. package/lib/editProfilePane/EditCVCard.js +1 -1
  14. package/lib/editProfilePane/EditCommunitiesCard.js +1 -1
  15. package/lib/editProfilePane/EditFriendsCard.js +1 -1
  16. package/lib/editProfilePane/EditProfileView.d.ts +1 -1
  17. package/lib/editProfilePane/EditProfileView.d.ts.map +1 -1
  18. package/lib/editProfilePane/EditProfileView.js +4 -5
  19. package/lib/editProfilePane/editProfilePresenter.d.ts.map +1 -1
  20. package/lib/editProfilePane/editProfilePresenter.js +5 -4
  21. package/lib/icons-svg/profileIcons.d.ts +1 -1
  22. package/lib/icons-svg/profileIcons.d.ts.map +1 -1
  23. package/lib/icons-svg/profileIcons.js +9 -17
  24. package/lib/index.d.ts +1 -8
  25. package/lib/index.d.ts.map +1 -1
  26. package/lib/index.js +74 -40
  27. package/lib/ontology/otherPreferencesForm.ttl +32 -0
  28. package/lib/ontology/resumeForm.ttl +349 -0
  29. package/lib/ontology/socialMedia.ttl +433 -0
  30. package/lib/profile-pane.js +32266 -13247
  31. package/lib/profile-pane.js.map +1 -1
  32. package/lib/profile-pane.min.js +2315 -935
  33. package/lib/profile-pane.min.js.map +1 -1
  34. package/lib/rdfFormsHelper.d.ts +13 -1
  35. package/lib/rdfFormsHelper.d.ts.map +1 -1
  36. package/lib/rdfFormsHelper.js +13 -1
  37. package/lib/sections/bio/BioEditDialog.d.ts.map +1 -1
  38. package/lib/sections/bio/BioEditDialog.js +7 -7
  39. package/lib/sections/bio/BioSection.css +300 -0
  40. package/lib/sections/bio/BioSection.d.ts +3 -2
  41. package/lib/sections/bio/BioSection.d.ts.map +1 -1
  42. package/lib/sections/bio/BioSection.js +26 -19
  43. package/lib/sections/bio/mutations.d.ts.map +1 -1
  44. package/lib/sections/bio/mutations.js +14 -3
  45. package/lib/sections/contactInfo/ContactInfoEditDialog.css +354 -0
  46. package/lib/sections/contactInfo/ContactInfoEditDialog.d.ts +3 -1
  47. package/lib/sections/contactInfo/ContactInfoEditDialog.d.ts.map +1 -1
  48. package/lib/sections/contactInfo/ContactInfoEditDialog.js +183 -98
  49. package/lib/sections/contactInfo/ContactInfoSection.css +125 -0
  50. package/lib/sections/contactInfo/ContactInfoSection.d.ts +2 -0
  51. package/lib/sections/contactInfo/ContactInfoSection.d.ts.map +1 -1
  52. package/lib/sections/contactInfo/ContactInfoSection.js +64 -41
  53. package/lib/sections/contactInfo/mutations.d.ts.map +1 -1
  54. package/lib/sections/contactInfo/mutations.js +51 -16
  55. package/lib/sections/education/EducationEditDialog.d.ts +3 -1
  56. package/lib/sections/education/EducationEditDialog.d.ts.map +1 -1
  57. package/lib/sections/education/EducationEditDialog.js +170 -92
  58. package/lib/sections/education/EducationSection.css +133 -0
  59. package/lib/sections/education/EducationSection.d.ts +3 -2
  60. package/lib/sections/education/EducationSection.d.ts.map +1 -1
  61. package/lib/sections/education/EducationSection.js +32 -25
  62. package/lib/sections/education/mutations.d.ts.map +1 -1
  63. package/lib/sections/education/mutations.js +14 -3
  64. package/lib/sections/heading/HeadingEditDialog.d.ts +4 -1
  65. package/lib/sections/heading/HeadingEditDialog.d.ts.map +1 -1
  66. package/lib/sections/heading/HeadingEditDialog.js +287 -162
  67. package/lib/sections/heading/HeadingSection.css +862 -0
  68. package/lib/sections/heading/HeadingSection.d.ts +3 -2
  69. package/lib/sections/heading/HeadingSection.d.ts.map +1 -1
  70. package/lib/sections/heading/HeadingSection.js +63 -32
  71. package/lib/sections/heading/imageHelpers.d.ts +1 -0
  72. package/lib/sections/heading/imageHelpers.d.ts.map +1 -1
  73. package/lib/sections/heading/imageHelpers.js +40 -1
  74. package/lib/sections/heading/mutations.d.ts.map +1 -1
  75. package/lib/sections/heading/mutations.js +86 -23
  76. package/lib/sections/heading/selectors.d.ts.map +1 -1
  77. package/lib/sections/heading/selectors.js +14 -3
  78. package/lib/sections/heading/types.d.ts +1 -2
  79. package/lib/sections/heading/types.d.ts.map +1 -1
  80. package/lib/sections/languages/LanguageEditDialog.d.ts +3 -1
  81. package/lib/sections/languages/LanguageEditDialog.d.ts.map +1 -1
  82. package/lib/sections/languages/LanguageEditDialog.js +202 -119
  83. package/lib/sections/languages/LanguageSection.css +53 -0
  84. package/lib/sections/languages/LanguageSection.d.ts +2 -0
  85. package/lib/sections/languages/LanguageSection.d.ts.map +1 -1
  86. package/lib/sections/languages/LanguageSection.js +42 -31
  87. package/lib/sections/languages/mutations.d.ts.map +1 -1
  88. package/lib/sections/languages/mutations.js +60 -161
  89. package/lib/sections/languages/selectors.d.ts.map +1 -1
  90. package/lib/sections/languages/selectors.js +1 -2
  91. package/lib/sections/projects/ProjectEditDialog.d.ts +2 -1
  92. package/lib/sections/projects/ProjectEditDialog.d.ts.map +1 -1
  93. package/lib/sections/projects/ProjectEditDialog.js +13 -24
  94. package/lib/sections/projects/ProjectSection.css +368 -0
  95. package/lib/sections/projects/ProjectSection.d.ts +2 -1
  96. package/lib/sections/projects/ProjectSection.d.ts.map +1 -1
  97. package/lib/sections/projects/ProjectSection.js +116 -34
  98. package/lib/sections/projects/mutations.d.ts.map +1 -1
  99. package/lib/sections/projects/mutations.js +109 -132
  100. package/lib/sections/projects/selectors.d.ts.map +1 -1
  101. package/lib/sections/projects/selectors.js +4 -45
  102. package/lib/{QRCodeCard.d.ts → sections/qrcode/QRCodeCard.d.ts} +2 -1
  103. package/lib/sections/qrcode/QRCodeCard.d.ts.map +1 -0
  104. package/lib/{QRCodeCard.js → sections/qrcode/QRCodeCard.js} +59 -11
  105. package/lib/sections/qrcode/QRCodeSection.css +108 -0
  106. package/lib/sections/qrcode/QRCodeSection.d.ts +4 -0
  107. package/lib/sections/qrcode/QRCodeSection.d.ts.map +1 -0
  108. package/lib/sections/qrcode/QRCodeSection.js +17 -0
  109. package/lib/sections/resume/ResumeEditDialog.d.ts +10 -1
  110. package/lib/sections/resume/ResumeEditDialog.d.ts.map +1 -1
  111. package/lib/sections/resume/ResumeEditDialog.js +531 -149
  112. package/lib/sections/resume/ResumeSection.css +350 -0
  113. package/lib/sections/resume/ResumeSection.d.ts +3 -2
  114. package/lib/sections/resume/ResumeSection.d.ts.map +1 -1
  115. package/lib/sections/resume/ResumeSection.js +78 -49
  116. package/lib/sections/resume/mutations.d.ts.map +1 -1
  117. package/lib/sections/resume/mutations.js +17 -3
  118. package/lib/sections/resume/selectors.d.ts.map +1 -1
  119. package/lib/sections/resume/selectors.js +1 -0
  120. package/lib/sections/resume/types.d.ts +1 -0
  121. package/lib/sections/resume/types.d.ts.map +1 -1
  122. package/lib/sections/shared/collapsibleSection.d.ts.map +1 -1
  123. package/lib/sections/shared/collapsibleSection.js +1 -0
  124. package/lib/sections/shared/phoneCountries.d.ts +1 -1
  125. package/lib/sections/shared/phoneCountries.d.ts.map +1 -1
  126. package/lib/sections/shared/phoneCountries.js +2 -2
  127. package/lib/sections/shared/projectCommunityNodes.d.ts +6 -0
  128. package/lib/sections/shared/projectCommunityNodes.d.ts.map +1 -0
  129. package/lib/sections/shared/projectCommunityNodes.js +56 -0
  130. package/lib/sections/shared/rdfMutationHelpers.d.ts +35 -2
  131. package/lib/sections/shared/rdfMutationHelpers.d.ts.map +1 -1
  132. package/lib/sections/shared/rdfMutationHelpers.js +290 -14
  133. package/lib/sections/shared/sectionCardHelpers.d.ts.map +1 -1
  134. package/lib/sections/shared/sectionCardHelpers.js +80 -11
  135. package/lib/sections/shared/types.d.ts +24 -0
  136. package/lib/sections/shared/types.d.ts.map +1 -1
  137. package/lib/sections/skills/SkillsEditDialog.d.ts +3 -1
  138. package/lib/sections/skills/SkillsEditDialog.d.ts.map +1 -1
  139. package/lib/sections/skills/SkillsEditDialog.js +136 -115
  140. package/lib/sections/skills/SkillsSection.css +173 -0
  141. package/lib/sections/skills/SkillsSection.d.ts +2 -0
  142. package/lib/sections/skills/SkillsSection.d.ts.map +1 -1
  143. package/lib/sections/skills/SkillsSection.js +107 -47
  144. package/lib/sections/skills/mutations.d.ts.map +1 -1
  145. package/lib/sections/skills/mutations.js +25 -21
  146. package/lib/sections/skills/selectors.d.ts.map +1 -1
  147. package/lib/sections/skills/selectors.js +5 -3
  148. package/lib/sections/social/SocialEditDialog.d.ts +3 -1
  149. package/lib/sections/social/SocialEditDialog.d.ts.map +1 -1
  150. package/lib/sections/social/SocialEditDialog.js +170 -62
  151. package/lib/sections/social/SocialSection.css +194 -0
  152. package/lib/sections/social/SocialSection.d.ts +4 -3
  153. package/lib/sections/social/SocialSection.d.ts.map +1 -1
  154. package/lib/sections/social/SocialSection.js +59 -43
  155. package/lib/sections/social/mutations.d.ts.map +1 -1
  156. package/lib/sections/social/mutations.js +23 -132
  157. package/lib/specialButtons/AddMeToYourFriends.css +54 -0
  158. package/lib/specialButtons/addContact/AddMeToYourContacts.css +1118 -0
  159. package/lib/specialButtons/addContact/ContactCreationDialog.d.ts +10 -0
  160. package/lib/specialButtons/addContact/ContactCreationDialog.d.ts.map +1 -0
  161. package/lib/specialButtons/addContact/ContactCreationDialog.js +1123 -0
  162. package/lib/specialButtons/addContact/addMeToYourContacts.d.ts +16 -0
  163. package/lib/specialButtons/addContact/addMeToYourContacts.d.ts.map +1 -0
  164. package/lib/specialButtons/addContact/addMeToYourContacts.js +136 -0
  165. package/lib/specialButtons/addContact/contactsErrors.d.ts +8 -0
  166. package/lib/specialButtons/addContact/contactsErrors.d.ts.map +1 -0
  167. package/lib/specialButtons/addContact/contactsErrors.js +106 -0
  168. package/lib/specialButtons/addContact/contactsTypes.d.ts +43 -0
  169. package/lib/specialButtons/addContact/contactsTypes.d.ts.map +1 -0
  170. package/lib/specialButtons/addContact/contactsTypes.js +5 -0
  171. package/lib/specialButtons/addContact/helpers.d.ts +7 -0
  172. package/lib/specialButtons/addContact/helpers.d.ts.map +1 -0
  173. package/lib/specialButtons/addContact/helpers.js +103 -0
  174. package/lib/specialButtons/addContact/mutations.d.ts +16 -0
  175. package/lib/specialButtons/addContact/mutations.d.ts.map +1 -0
  176. package/lib/specialButtons/addContact/mutations.js +300 -0
  177. package/lib/specialButtons/addContact/selectors.d.ts +10 -0
  178. package/lib/specialButtons/addContact/selectors.d.ts.map +1 -0
  179. package/lib/specialButtons/addContact/selectors.js +163 -0
  180. package/lib/{addMeToYourFriends.d.ts → specialButtons/addMeToYourFriends.d.ts} +6 -4
  181. package/lib/specialButtons/addMeToYourFriends.d.ts.map +1 -0
  182. package/lib/{addMeToYourFriends.js → specialButtons/addMeToYourFriends.js} +46 -11
  183. package/lib/styles/CollapsibleSection.css +519 -0
  184. package/lib/styles/EditDialogs.css +506 -686
  185. package/lib/styles/EditDialogs.responsive.css +989 -0
  186. package/lib/texts/buttonTexts.d.ts +9 -0
  187. package/lib/texts/buttonTexts.d.ts.map +1 -0
  188. package/lib/texts/buttonTexts.js +14 -0
  189. package/lib/texts/dialogTexts.d.ts +14 -0
  190. package/lib/texts/dialogTexts.d.ts.map +1 -0
  191. package/lib/texts/dialogTexts.js +19 -0
  192. package/lib/texts/messageTexts.d.ts +42 -0
  193. package/lib/texts/messageTexts.d.ts.map +1 -0
  194. package/lib/texts/messageTexts.js +47 -0
  195. package/lib/texts/profileTexts.d.ts +14 -0
  196. package/lib/texts/profileTexts.d.ts.map +1 -0
  197. package/lib/texts/profileTexts.js +19 -0
  198. package/lib/texts/qrCodeTexts.d.ts +2 -0
  199. package/lib/texts/qrCodeTexts.d.ts.map +1 -0
  200. package/lib/texts/qrCodeTexts.js +7 -0
  201. package/lib/texts.d.ts +5 -60
  202. package/lib/texts.d.ts.map +1 -1
  203. package/lib/texts.js +55 -70
  204. package/lib/ui/dialog.css +233 -0
  205. package/lib/ui/dialog.d.ts +15 -1
  206. package/lib/ui/dialog.d.ts.map +1 -1
  207. package/lib/ui/dialog.js +245 -45
  208. package/lib/ui/dialog.responsive.css +195 -0
  209. package/lib/ui/errors.d.ts.map +1 -1
  210. package/lib/ui/errors.js +2 -1
  211. package/lib/ui/spinner.d.ts +3 -0
  212. package/lib/ui/spinner.d.ts.map +1 -0
  213. package/lib/ui/spinner.js +13 -0
  214. package/lib/utils/debug.d.ts +5 -0
  215. package/lib/utils/debug.d.ts.map +1 -0
  216. package/lib/utils/debug.js +23 -0
  217. package/lib/utils/errorDisplay.d.ts +2 -0
  218. package/lib/utils/errorDisplay.d.ts.map +1 -0
  219. package/lib/utils/errorDisplay.js +19 -0
  220. package/package.json +32 -25
  221. package/lib/ChatWithMe.d.ts +0 -7
  222. package/lib/ChatWithMe.d.ts.map +0 -1
  223. package/lib/ChatWithMe.js +0 -90
  224. package/lib/QRCodeCard.d.ts.map +0 -1
  225. package/lib/addMeToYourFriends.d.ts.map +0 -1
  226. package/lib/sections/heading/camera.d.ts +0 -19
  227. package/lib/sections/heading/camera.d.ts.map +0 -1
  228. package/lib/sections/heading/camera.js +0 -199
  229. package/lib/styles/BioSection.css +0 -77
  230. package/lib/styles/CVCard.css +0 -142
  231. package/lib/styles/ChatWithMe.css +0 -6
  232. package/lib/styles/ContactInfoEditDialog.css +0 -153
  233. package/lib/styles/EducationCard.css +0 -103
  234. package/lib/styles/HeadingSection.css +0 -309
  235. package/lib/styles/ProfileCard.css +0 -66
  236. package/lib/styles/ProfileView.css +0 -65
  237. package/lib/styles/ProjectsCard.css +0 -206
  238. package/lib/styles/QRCodeCard.css +0 -43
  239. package/lib/styles/SocialCard.css +0 -89
  240. package/lib/styles/dialog.css +0 -209
  241. package/lib/styles/utilities.css +0 -740
@@ -1,740 +0,0 @@
1
- /* Utility-first CSS classes for layout, spacing, and responsiveness */
2
- /* These utilities are designed specfically for the profile pane */
3
- /* Utilities that can be shared by all panes should be added to dev-globals.css
4
- and to mashlib repo mash-utilities.css and then updated accross all pane
5
- development environments */
6
- :root {
7
- --profile-image-size: 3em;
8
- }
9
-
10
- .profile-pane-host {
11
- display: block;
12
- width: 100%;
13
- min-width: 100%;
14
- max-width: none;
15
- box-sizing: border-box;
16
- }
17
-
18
- @media (max-width: 768px) {
19
- .profile-grid {
20
- font-size: clamp(0.9rem, 1.1vw + 0.65rem, 1rem);
21
- }
22
-
23
- .profile-grid .profile__action-button,
24
- .profile-grid .profile__actions button {
25
- min-height: calc(var(--min-touch-target, 44px) + 0.5em) !important;
26
- font-size: clamp(0.9rem, 2.1vw, 1rem) !important;
27
- padding: 0.75em 0.9em !important;
28
- }
29
- }
30
-
31
- /* ===========================================
32
- PROFILE GRID LAYOUT
33
- =========================================== */
34
-
35
- .profile-grid {
36
- display: grid;
37
- grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
38
- gap: var(--spacing-xxs, 0.3125rem);
39
- background: var(--color-background, #F8F9FB);
40
- }
41
-
42
- .profile-grid > * {
43
- min-width: 0;
44
- }
45
-
46
- .profile-pane-root {
47
- width: 100%;
48
- max-width: 100%;
49
- min-width: 0;
50
- display: block;
51
- container-name: profile-pane;
52
- container-type: inline-size;
53
- }
54
-
55
- /* Embedded rendering inside SolidOS outline table cells needs a single-column fallback.
56
- The outline reserves space for icon/predicate columns, so the available content width
57
- is effectively much narrower than the viewport. */
58
- td.obj .profile-pane-root {
59
- width: 100%;
60
- max-width: 100%;
61
- min-width: 0;
62
- }
63
-
64
- @container profile-pane (max-width: 768px) {
65
- .profile-grid {
66
- font-size: clamp(0.9rem, 1.1vw + 0.65rem, 1rem);
67
- }
68
-
69
- .profile-grid .profile__action-button,
70
- .profile-grid .profile__actions button {
71
- min-height: calc(var(--min-touch-target, 44px) + 0.5em) !important;
72
- font-size: clamp(0.9rem, 2.1vw, 1rem) !important;
73
- padding: 0.75em 0.9em !important;
74
- }
75
- }
76
-
77
- @container profile-pane (max-width: 768px) {
78
- .profile-grid {
79
- grid-template-columns: 1fr;
80
- gap: var(--spacing-xxs, 0.3125rem);
81
- width: 100%;
82
- max-width: 100%;
83
- box-sizing: border-box;
84
- margin: 0 auto;
85
- padding-inline: var(--spacing-xxs, 0.3125rem);
86
- overflow-x: clip;
87
- }
88
- }
89
-
90
- @media (max-width: 768px) {
91
- .profile-grid {
92
- grid-template-columns: 1fr;
93
- gap: var(--spacing-xxs, 0.3125rem);
94
- width: 100%;
95
- max-width: 100%;
96
- box-sizing: border-box;
97
- margin: 0 auto;
98
- padding-inline: var(--spacing-xxs, 0.3125rem);
99
- overflow-x: clip;
100
- }
101
- }
102
-
103
- /* END GRID LAYOUT */
104
-
105
- .profile__section {
106
- width: 100%;
107
- }
108
-
109
- .profile__section--empty {
110
- padding: var(--spacing-1xl, 2.5rem) var(--spacing-lg, 1.5625rem); /* 40px 25px */
111
- width: 100%;
112
- }
113
-
114
- .profile__section,
115
- .profile__section--empty,
116
- .profile__action-button--empty {
117
- background: var(--color-card-bg, #fff);
118
- }
119
-
120
- /* Header row layout utility for profile section headers */
121
- .profile__section-header {
122
- display: flex;
123
- align-items: center;
124
- justify-content: space-between;
125
- gap: var(--spacing-xs, 0.75rem);
126
- width: 100%;
127
- }
128
-
129
- .profile__section-header h2,
130
- .profile__section-header h3,
131
- .profile__section-header h4 {
132
- margin: 0;
133
- }
134
-
135
- .profile__action-button {
136
- width: 100%;
137
- min-width: 11.25rem; /* 180px */
138
- max-width: 20rem; /* 320px */
139
- box-sizing: border-box;
140
- display: inline-block;
141
- }
142
-
143
- .profile__action-button--empty {
144
- /*padding: 6px 8px; Note: these are the styles from new design
145
- min-height: auto; however they don't meet accessibility guidelines
146
- min-width: 0; for touch target size */
147
- width: fit-content;
148
- min-width: fit-content;
149
- max-width: fit-content;
150
- white-space: nowrap;
151
- box-sizing: border-box;
152
- border: var(--border-width-sm, 1px) solid var(--color-border-darker, #4A5565);
153
- color: var(--slate-700, #314158);
154
- font-size: var(--font-size-sm, 0.875rem); /* 14px */
155
- font-weight: var(--font-weight-medium, 500);
156
- line-height: var(--line-height-tight, 1.4);
157
- }
158
- .profile__empty-state-message {
159
- color: #62748E;
160
- text-align: center;
161
- font-size: var(--font-size-xs, 0.813rem); /* 13px */
162
- font-weight: var(--font-weight-normal, 400);
163
- line-height: var(--line-height-tight, 1.4); /* 140% from design 18.2px */
164
- }
165
- .contact-info__icon-wrapper {
166
- width: 36px;
167
- height: 36px;
168
- padding: 0 0.575rem; /* 9.2px - from design, but also ensures icons are centered in the circle */
169
- flex-shrink: 0;
170
- }
171
-
172
- .contact-info__icon {
173
- width: var(--icon-xxs, 1rem); /* 16px */
174
- height: var(--icon-xxs, 1rem); /* 16px */
175
- flex-shrink: 0;
176
- stroke-width: 1.333px;
177
- stroke: #90A1B9;
178
- }
179
-
180
- .contact-info__contact-point-value {
181
- color: var(--slate-800, #1D293D);
182
- font-size: var(--font-size-sm, 0.875rem); /* 14px */
183
- font-weight: var(--font-weight-bold, 600);
184
- white-space: normal !important;
185
- overflow-wrap: anywhere;
186
- word-break: break-word;
187
- }
188
-
189
- .contact-info__contact-point-type {
190
- color: var(--slate-500, #62748E);
191
- font-size: var(--font-size-xxs, 0.75rem); /* 12px */
192
- font-weight: var(--font-weight-md, 500);
193
- }
194
-
195
- .contact-info__address {
196
- color: var(--slate-800, #1D293D);
197
- font-size: var(--font-size-sm, 0.875rem); /* 14px */
198
- font-weight: var(--font-weight-bold, 600);
199
- }
200
-
201
- .contact-info__list {
202
- list-style: none;
203
- margin: 0;
204
- padding: 0 0 var(--spacing-2xs, 0.625rem) 0;
205
- gap: var(--spacing-2xs, 0.625rem);
206
- }
207
-
208
- .contact-info__list:last-of-type {
209
- padding-bottom: 0;
210
- }
211
-
212
- .contact-info__list + .contact-info__list {
213
- margin-top: var(--spacing-2xs, 0.625rem);
214
- }
215
-
216
- .contact-info__item {
217
- margin-inline-start: 0;
218
- }
219
-
220
- .contact-info__empty-icon svg {
221
- width: var(--icon-md, 2.5rem); /* 40px */
222
- height: var(--icon-md, 2.5rem); /* 40px */
223
- display: block;
224
- }
225
-
226
- .contact-info__empty-icon svg path {
227
- stroke-width: 0.25rem; /* 4px */
228
- stroke: #E5E7EB;
229
- }
230
-
231
- .contact-info__empty-message {
232
- color: #9CA3AF;
233
- text-align: center;
234
- font-size: var(--font-size-xs, 0.813rem); /* 13px */
235
- font-weight: var(--font-weight-normal, 400);
236
- line-height: var(--line-height-tight, 1.4); /* design says 1.2 */
237
- }
238
-
239
- .contact-info__empty-icon-wrapper {
240
- width: 3rem; /* 48px */
241
- flex: 1 0 0;
242
- }
243
- .profile__empty-state-content {
244
- gap: var(--spacing-2xs, 0.625rem); /* 10px */
245
- }
246
-
247
- .profile__empty-state-content > h2,
248
- .profile__empty-state-content > p {
249
- margin: 0;
250
- }
251
-
252
- /* SAM - generated by ai below need to check design and change */
253
- .profile__action-button--empty:hover {
254
- background: var(--color-primary, #7C4DFF);
255
- border-color: var(--color-primary, #7C4DFF);
256
- color: white;
257
- }
258
-
259
- .profile__add-more-content {
260
- gap: var(--spacing-xxs, 0.3125rem);
261
- }
262
-
263
- .profile__add-more-icon {
264
- width: var(--icon-xxxs, 0.75rem); /* 12px */
265
- height: var(--icon-xxxs, 0.75rem); /* 12px */
266
- line-height: 0;
267
- flex: 0 0 auto;
268
- }
269
-
270
- .profile__add-more-icon svg {
271
- width: 100%;
272
- height: 100%;
273
- display: block;
274
- }
275
-
276
- .skills__list {
277
- list-style: none;
278
- margin: 0;
279
- padding: 0;
280
- align-items: flex-start;
281
- gap: 0.5rem; /* 8px */
282
- }
283
-
284
- .skills__item {
285
- gap: 0.2rem;
286
- }
287
-
288
- .skills__item-label {
289
- color: var(--slate-900, #0F172B);
290
- font-size: var(--font-size-sm, 0.875rem); /* 14px */
291
- font-weight: var(--font-weight-md, 500);
292
- line-height: 1.2;
293
- }
294
-
295
- .skills__remove-button {
296
- border: none;
297
- background: none;
298
- cursor: pointer;
299
- padding: 0;
300
- margin: 0;
301
- line-height: 1;
302
- }
303
-
304
- .languages__list {
305
- list-style: none;
306
- margin: 0;
307
- padding: 0;
308
- }
309
-
310
- .languages__item-label {
311
- color: var(--gray-900, #101828);
312
- font-size: var(--font-size-md, 1rem); /* 16px */
313
- font-weight: var(--font-weight-md, 500);
314
- }
315
-
316
- .languages__empty-icon {
317
- width: var(--icon-xs, 1.5rem); /* 24px new design uses this */
318
- height: var(--icon-xs, 1.5rem); /* 24px new design uses this */
319
- flex-shrink: 0;
320
- }
321
- /* Add-me-to-friends button style shared across profile sections. */
322
- .profile__btn-friends {
323
- width: auto;
324
- min-width: 0;
325
- max-width: none;
326
- padding: 0.375rem 0.75rem;
327
- gap: var(--spacing-xxs, 0.3125rem);
328
- border-radius: var(--border-radius-md, 0.5rem);
329
- border: 1px solid var(--color-primary, #7C4DFF);
330
- background: transparent;
331
- color: var(--color-primary, #7C4DFF);
332
- }
333
-
334
- /* Text-style action button utility (used for section header/edit actions). */
335
- .profile-action-text {
336
- width: auto;
337
- min-width: 0;
338
- max-width: none;
339
- padding: var(--spacing-xxs, 0.3125rem);
340
- border: none;
341
- background: none;
342
- color: var(--color-primary, #7C4DFF);
343
- cursor: pointer;
344
- font-size: var(--font-size-sm, 0.875rem);
345
- }
346
-
347
- .profile-action-text:hover {
348
- text-decoration: underline;
349
- }
350
-
351
- .profile-section-collapsible {
352
- display: block;
353
- }
354
-
355
- .profile-section-collapsible__header {
356
- margin-bottom: 0;
357
- }
358
-
359
- .profile-section-collapsible__actions {
360
- gap: var(--spacing-xs, 0.75rem);
361
- margin-top: -0.25rem;
362
- }
363
-
364
- .profile-section-collapsible__edit-button {
365
- min-width: 0;
366
- }
367
-
368
- .profile-section-collapsible__edit-icon {
369
- display: none;
370
- }
371
-
372
- .profile-section-collapsible__actions > button.inline-flex-row {
373
- display: none !important;
374
- min-height: auto;
375
- min-width: auto;
376
- padding: var(--spacing-xxs, 0.3125rem);
377
- border: none;
378
- background: none;
379
- color: var(--color-text, #1A1A1A);
380
- cursor: pointer;
381
- }
382
-
383
- .profile-section-collapsible__chevron {
384
- display: inline-block;
385
- flex: 0 0 auto;
386
- transition: transform var(--animation-duration, 0.2s) ease;
387
- }
388
-
389
- .profile-section-collapsible__content {
390
- margin-top: var(--spacing-2xs, 0.625rem);
391
- width: 100%;
392
- max-width: 100%;
393
- min-width: 0;
394
- box-sizing: border-box;
395
- }
396
-
397
- .profile-section-collapsible__content > :first-child {
398
- margin-top: 0;
399
- }
400
-
401
- .profile-section-collapsible__content > :last-child {
402
- margin-bottom: 0;
403
- }
404
-
405
- .bioCard,
406
- .bioSection,
407
- .socialCard,
408
- .socialList,
409
- .skills__list,
410
- .languages__list,
411
- .contact-info__list {
412
- width: 100%;
413
- max-width: 100%;
414
- min-width: 0;
415
- box-sizing: border-box;
416
- }
417
-
418
- @media (min-width: 769px) {
419
- .profile-section-collapsible > .profile-section-collapsible__content {
420
- display: block;
421
- }
422
-
423
- .profile-section-collapsible__edit-label svg,
424
- .profile__action-icon svg {
425
- width: 0.875rem;
426
- height: 0.875rem;
427
- }
428
-
429
- .profile-section-collapsible__edit-label svg path,
430
- .profile__action-icon svg path {
431
- fill: var(--color-primary, #7C4DFF);
432
- }
433
-
434
- .profile-section-collapsible__edit-label {
435
- display: inline;
436
- transform: translateY(-0.125rem);
437
- }
438
-
439
- .profile__add-more-icon {
440
- transform: translateY(-0.125rem);
441
- }
442
-
443
- .profile-section-collapsible__edit-icon {
444
- display: none;
445
- }
446
- }
447
-
448
- @media (max-width: 576px) {
449
- .profile-grid .profile__section-header h2,
450
- .profile-grid .profile__section-header h3,
451
- .profile-grid .profile__section-header h4,
452
- .profile-grid .profile__empty-state-content > h2,
453
- .profile-grid .cvSection h3,
454
- .profile-grid .profile__name,
455
- .profile-grid .friends-pane__header-name {
456
- font-family: inherit !important;
457
- }
458
-
459
- .profile-section-collapsible--inline-mobile-actions > .profile-section-collapsible__header {
460
- display: flex;
461
- align-items: center;
462
- justify-content: space-between;
463
- gap: 0.5rem;
464
- }
465
-
466
- .profile-section-collapsible--inline-mobile-actions > .profile-section-collapsible__header h2 {
467
- margin: 0;
468
- flex: 1 1 auto;
469
- min-width: 0;
470
- }
471
-
472
- .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__actions {
473
- display: inline-flex;
474
- flex-direction: row;
475
- align-items: center;
476
- gap: 0.25rem;
477
- margin-top: 0;
478
- flex: 0 0 auto;
479
- }
480
-
481
- .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button {
482
- display: inline-flex !important;
483
- order: 1;
484
- }
485
-
486
- .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:active,
487
- .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:focus,
488
- .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:focus-visible {
489
- border: none !important;
490
- outline: none !important;
491
- box-shadow: none !important;
492
- background: transparent !important;
493
- }
494
-
495
- .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__actions > button.inline-flex-row {
496
- order: 2;
497
- }
498
-
499
- .profile__section-header h2,
500
- .profile__section-header h3,
501
- .profile__section-header h4 {
502
- font-size: var(--font-size-lg, 1.125rem) !important;
503
- line-height: 1.2 !important;
504
- }
505
-
506
- .profile-grid .profile__empty-state-content > h2,
507
- .profile-grid .cvSection h3 {
508
- font-size: var(--font-size-lg, 1.125rem) !important;
509
- line-height: 1.2 !important;
510
- }
511
-
512
- .profile-grid .profile__name,
513
- .profile-grid .friends-pane__header-name {
514
- font-size: 1.5rem !important;
515
- line-height: 1.15 !important;
516
- }
517
-
518
- .profile-grid .profile__pronouns,
519
- .profile-grid .friends-pane__header-pronouns,
520
- .profile-grid .friends-pane__friends-pronouns {
521
- font-family: inherit !important;
522
- font-size: 0.6875rem !important;
523
- line-height: 1.1 !important;
524
- }
525
-
526
- .profile-section-collapsible[data-expanded="false"] .profile-section-collapsible__content {
527
- display: none;
528
- }
529
-
530
- .profile-section-collapsible__actions.flex-column {
531
- align-items: flex-end;
532
- gap: 0.25rem;
533
- }
534
-
535
- /* Keep empty-section mobile header controls in the same order as regular sections: toggle first, add/edit below. */
536
- .profile__section--empty .profile-section-collapsible__actions > button.inline-flex-row {
537
- order: 1;
538
- }
539
-
540
- .profile__section--empty .profile-section-collapsible__actions > .profile-section-collapsible__edit-button {
541
- order: 2;
542
- }
543
-
544
- .profile-section-collapsible[data-expanded="true"] .profile-section-collapsible__chevron {
545
- transform: rotate(180deg);
546
- }
547
-
548
- .profile-section-collapsible__edit-label {
549
- display: none !important;
550
- }
551
-
552
- .profile-section-collapsible__edit-icon {
553
- display: inline;
554
- }
555
-
556
- /* Empty-state action buttons use icon-only mobile controls (plus sign). */
557
- .profile__section--empty .profile-section-collapsible__edit-label {
558
- display: none !important;
559
- }
560
-
561
- .profile__section--empty .profile-section-collapsible__edit-icon {
562
- display: inline !important;
563
- }
564
-
565
- .profile-section-collapsible .profile-section-collapsible__edit-button {
566
- display: none !important;
567
- order: 2;
568
- }
569
-
570
- .profile-section-collapsible[data-expanded="true"] .profile-section-collapsible__edit-button {
571
- display: inline-flex !important;
572
- }
573
- /* Reassert toggle button layout in collapsible action rows on mobile
574
- so utility resets never hide/misalign the control. */
575
- .profile-section-collapsible__actions > button.inline-flex-row {
576
- display: inline-flex !important;
577
- align-items: center;
578
- justify-content: center;
579
- }
580
-
581
- .profile-section-collapsible__edit-icon--add svg path {
582
- fill: #1E2939 !important;
583
- stroke: #1E2939 !important;
584
- }
585
-
586
- .profile-section-collapsible__edit-icon--projects svg path {
587
- stroke-width: 1.714px !important;
588
- stroke: var(--gray-800, #1E2939) !important;
589
- fill: none !important;
590
- }
591
-
592
- }
593
-
594
- @container profile-pane (max-width: 576px) {
595
- .profile-grid .profile__section-header h2,
596
- .profile-grid .profile__section-header h3,
597
- .profile-grid .profile__section-header h4,
598
- .profile-grid .profile__empty-state-content > h2,
599
- .profile-grid .cvSection h3,
600
- .profile-grid .profile__name,
601
- .profile-grid .friends-pane__header-name {
602
- font-family: inherit !important;
603
- }
604
-
605
- .profile-section-collapsible--inline-mobile-actions > .profile-section-collapsible__header {
606
- display: flex;
607
- align-items: center;
608
- justify-content: space-between;
609
- gap: 0.5rem;
610
- }
611
-
612
- .profile-section-collapsible--inline-mobile-actions > .profile-section-collapsible__header h2 {
613
- margin: 0;
614
- flex: 1 1 auto;
615
- min-width: 0;
616
- }
617
-
618
- .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__actions {
619
- display: inline-flex;
620
- flex-direction: row;
621
- align-items: center;
622
- gap: 0.25rem;
623
- margin-top: 0;
624
- flex: 0 0 auto;
625
- }
626
-
627
- .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button {
628
- order: 1;
629
- }
630
-
631
- .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:active,
632
- .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:focus,
633
- .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__edit-button:focus-visible {
634
- border: none !important;
635
- outline: none !important;
636
- box-shadow: none !important;
637
- background: transparent !important;
638
- }
639
-
640
- .profile-section-collapsible--inline-mobile-actions .profile-section-collapsible__actions > button.inline-flex-row {
641
- order: 2;
642
- }
643
-
644
- .profile__section-header h2,
645
- .profile__section-header h3,
646
- .profile__section-header h4 {
647
- font-size: var(--font-size-lg, 1.125rem) !important;
648
- line-height: 1.2 !important;
649
- }
650
-
651
- .profile-grid .profile__empty-state-content > h2,
652
- .profile-grid .cvSection h3 {
653
- font-size: var(--font-size-lg, 1.125rem) !important;
654
- line-height: 1.2 !important;
655
- }
656
-
657
- .profile-grid .profile__name,
658
- .profile-grid .friends-pane__header-name {
659
- font-size: 1.5rem !important;
660
- line-height: 1.15 !important;
661
- }
662
-
663
- .profile-grid .profile__pronouns,
664
- .profile-grid .friends-pane__header-pronouns,
665
- .profile-grid .friends-pane__friends-pronouns {
666
- font-family: inherit !important;
667
- font-size: 0.6875rem !important;
668
- line-height: 1.1 !important;
669
- }
670
-
671
- .profile-section-collapsible[data-expanded="false"] .profile-section-collapsible__content {
672
- display: none;
673
- }
674
-
675
- .profile-section-collapsible__actions.flex-column {
676
- align-items: flex-end;
677
- gap: 0.25rem;
678
- }
679
-
680
- .profile__section--empty .profile-section-collapsible__actions > button.inline-flex-row {
681
- order: 1;
682
- }
683
-
684
- .profile__section--empty .profile-section-collapsible__actions > .profile-section-collapsible__edit-button {
685
- order: 2;
686
- }
687
-
688
- .profile-section-collapsible[data-expanded="true"] .profile-section-collapsible__chevron {
689
- transform: rotate(180deg);
690
- }
691
-
692
- .profile-section-collapsible__edit-label {
693
- display: none !important;
694
- }
695
-
696
- .profile-section-collapsible__edit-icon {
697
- display: inline;
698
- }
699
-
700
- .profile__section--empty .profile-section-collapsible__edit-label {
701
- display: none !important;
702
- }
703
-
704
- .profile__section--empty .profile-section-collapsible__edit-icon {
705
- display: inline !important;
706
- }
707
-
708
- .profile-section-collapsible .profile-section-collapsible__edit-button {
709
- display: none !important;
710
- order: 2;
711
- }
712
-
713
- .profile-section-collapsible[data-expanded="true"] .profile-section-collapsible__edit-button {
714
- display: inline-flex !important;
715
- }
716
-
717
- .profile-section-collapsible__actions > button.inline-flex-row {
718
- display: inline-flex !important;
719
- align-items: center;
720
- justify-content: center;
721
- }
722
-
723
- .profile-section-collapsible__edit-icon--add svg path {
724
- fill: #1E2939 !important;
725
- stroke: #1E2939 !important;
726
- }
727
-
728
- .profile-section-collapsible__edit-icon--projects svg path {
729
- stroke-width: 1.714px !important;
730
- stroke: var(--gray-800, #1E2939) !important;
731
- fill: none !important;
732
- }
733
- }
734
-
735
- /* Zebra Striping - used by FriendList, StuffCard tables */
736
- .zebra-stripe tr:nth-child(even),
737
- .zebra-stripe > *:nth-child(even) {
738
- background-color: rgba(0, 0, 0, 0.02);
739
- }
740
-