profile-pane 3.2.3-0 → 3.2.3-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 (107) hide show
  1. package/lib/ProfileView.css +73 -236
  2. package/lib/ProfileView.d.ts +2 -1
  3. package/lib/ProfileView.d.ts.map +1 -1
  4. package/lib/ProfileView.js +19 -18
  5. package/lib/index.d.ts.map +1 -1
  6. package/lib/index.js +35 -35
  7. package/lib/profile-pane.js +17229 -25377
  8. package/lib/profile-pane.js.map +1 -1
  9. package/lib/profile-pane.min.js +809 -1579
  10. package/lib/profile-pane.min.js.map +1 -1
  11. package/lib/sections/bio/BioSection.css +16 -123
  12. package/lib/sections/bio/BioSection.d.ts +2 -2
  13. package/lib/sections/bio/BioSection.d.ts.map +1 -1
  14. package/lib/sections/bio/BioSection.js +23 -32
  15. package/lib/sections/contactInfo/ContactInfoEditDialog.css +33 -66
  16. package/lib/sections/contactInfo/ContactInfoEditDialog.d.ts.map +1 -1
  17. package/lib/sections/contactInfo/ContactInfoEditDialog.js +15 -39
  18. package/lib/sections/contactInfo/ContactInfoSection.css +7 -7
  19. package/lib/sections/contactInfo/ContactInfoSection.d.ts +2 -2
  20. package/lib/sections/contactInfo/ContactInfoSection.d.ts.map +1 -1
  21. package/lib/sections/contactInfo/ContactInfoSection.js +34 -49
  22. package/lib/sections/education/EducationSection.d.ts +1 -1
  23. package/lib/sections/education/EducationSection.d.ts.map +1 -1
  24. package/lib/sections/education/EducationSection.js +2 -3
  25. package/lib/sections/heading/HeadingEditDialog.d.ts.map +1 -1
  26. package/lib/sections/heading/HeadingEditDialog.js +1 -9
  27. package/lib/sections/heading/HeadingSection.css +122 -346
  28. package/lib/sections/heading/HeadingSection.d.ts +2 -3
  29. package/lib/sections/heading/HeadingSection.d.ts.map +1 -1
  30. package/lib/sections/heading/HeadingSection.js +13 -19
  31. package/lib/sections/languages/LanguageEditDialog.d.ts.map +1 -1
  32. package/lib/sections/languages/LanguageEditDialog.js +7 -8
  33. package/lib/sections/languages/LanguageSection.css +6 -6
  34. package/lib/sections/languages/LanguageSection.d.ts +2 -2
  35. package/lib/sections/languages/LanguageSection.d.ts.map +1 -1
  36. package/lib/sections/languages/LanguageSection.js +33 -49
  37. package/lib/sections/projects/ProjectEditDialog.d.ts +0 -1
  38. package/lib/sections/projects/ProjectEditDialog.d.ts.map +1 -1
  39. package/lib/sections/projects/ProjectEditDialog.js +2 -6
  40. package/lib/sections/projects/ProjectSection.css +36 -94
  41. package/lib/sections/projects/ProjectSection.d.ts +2 -2
  42. package/lib/sections/projects/ProjectSection.d.ts.map +1 -1
  43. package/lib/sections/projects/ProjectSection.js +28 -49
  44. package/lib/sections/resume/ResumeEditDialog.d.ts +0 -1
  45. package/lib/sections/resume/ResumeEditDialog.d.ts.map +1 -1
  46. package/lib/sections/resume/ResumeEditDialog.js +20 -40
  47. package/lib/sections/resume/ResumeSection.css +51 -133
  48. package/lib/sections/resume/ResumeSection.d.ts +3 -3
  49. package/lib/sections/resume/ResumeSection.d.ts.map +1 -1
  50. package/lib/sections/resume/ResumeSection.js +28 -42
  51. package/lib/sections/shared/sectionCardHelpers.js +15 -15
  52. package/lib/sections/skills/SkillsEditDialog.d.ts.map +1 -1
  53. package/lib/sections/skills/SkillsEditDialog.js +1 -3
  54. package/lib/sections/skills/SkillsSection.css +20 -67
  55. package/lib/sections/skills/SkillsSection.d.ts +2 -2
  56. package/lib/sections/skills/SkillsSection.d.ts.map +1 -1
  57. package/lib/sections/skills/SkillsSection.js +36 -55
  58. package/lib/sections/social/SocialEditDialog.d.ts.map +1 -1
  59. package/lib/sections/social/SocialEditDialog.js +4 -9
  60. package/lib/sections/social/SocialSection.css +19 -70
  61. package/lib/sections/social/SocialSection.d.ts +2 -2
  62. package/lib/sections/social/SocialSection.d.ts.map +1 -1
  63. package/lib/sections/social/SocialSection.js +37 -61
  64. package/lib/specialButtons/addMeToYourFriends.d.ts.map +1 -1
  65. package/lib/specialButtons/addMeToYourFriends.js +0 -2
  66. package/lib/styles/CollapsibleSection.css +39 -223
  67. package/lib/styles/EditDialogs.css +90 -284
  68. package/lib/styles/EditDialogs.responsive.css +72 -147
  69. package/lib/types.d.ts +1 -0
  70. package/lib/types.d.ts.map +1 -1
  71. package/lib/ui/dialog.css +18 -89
  72. package/lib/ui/dialog.d.ts.map +1 -1
  73. package/lib/ui/dialog.js +5 -9
  74. package/lib/ui/dialog.responsive.css +31 -34
  75. package/lib/ui/responsiveActionButton.d.ts +19 -0
  76. package/lib/ui/responsiveActionButton.d.ts.map +1 -0
  77. package/lib/ui/responsiveActionButton.js +34 -0
  78. package/lib/utils/resize.d.ts +2 -0
  79. package/lib/utils/resize.d.ts.map +1 -0
  80. package/lib/utils/resize.js +40 -0
  81. package/package.json +19 -19
  82. package/lib/303.profile-pane.js +0 -1362
  83. package/lib/303.profile-pane.js.map +0 -1
  84. package/lib/303.profile-pane.min.js +0 -2
  85. package/lib/303.profile-pane.min.js.map +0 -1
  86. package/lib/specialButtons/addContact/AddMeToYourContacts.css +0 -1118
  87. package/lib/specialButtons/addContact/ContactCreationDialog.d.ts +0 -10
  88. package/lib/specialButtons/addContact/ContactCreationDialog.d.ts.map +0 -1
  89. package/lib/specialButtons/addContact/ContactCreationDialog.js +0 -1123
  90. package/lib/specialButtons/addContact/addMeToYourContacts.d.ts +0 -16
  91. package/lib/specialButtons/addContact/addMeToYourContacts.d.ts.map +0 -1
  92. package/lib/specialButtons/addContact/addMeToYourContacts.js +0 -136
  93. package/lib/specialButtons/addContact/contactsErrors.d.ts +0 -8
  94. package/lib/specialButtons/addContact/contactsErrors.d.ts.map +0 -1
  95. package/lib/specialButtons/addContact/contactsErrors.js +0 -106
  96. package/lib/specialButtons/addContact/contactsTypes.d.ts +0 -43
  97. package/lib/specialButtons/addContact/contactsTypes.d.ts.map +0 -1
  98. package/lib/specialButtons/addContact/contactsTypes.js +0 -5
  99. package/lib/specialButtons/addContact/helpers.d.ts +0 -7
  100. package/lib/specialButtons/addContact/helpers.d.ts.map +0 -1
  101. package/lib/specialButtons/addContact/helpers.js +0 -103
  102. package/lib/specialButtons/addContact/mutations.d.ts +0 -16
  103. package/lib/specialButtons/addContact/mutations.d.ts.map +0 -1
  104. package/lib/specialButtons/addContact/mutations.js +0 -300
  105. package/lib/specialButtons/addContact/selectors.d.ts +0 -10
  106. package/lib/specialButtons/addContact/selectors.d.ts.map +0 -1
  107. package/lib/specialButtons/addContact/selectors.js +0 -163
@@ -1,4 +1,3 @@
1
- /* Skills list */
2
1
  .skills__list {
3
2
  display: flex;
4
3
  flex-direction: row;
@@ -11,13 +10,7 @@
11
10
  list-style: none;
12
11
  margin: 0;
13
12
  padding: 0;
14
- gap: var(--spacing-base, 0.5rem);
15
- }
16
-
17
- .skills__item,
18
- .skills__remove-button svg,
19
- solid-ui-button.skills__remove-button {
20
- --skills-remove-icon-size: var(--icon-xxs, 1rem);
13
+ gap: 8px;
21
14
  }
22
15
 
23
16
  /* Skill chip */
@@ -25,10 +18,10 @@ solid-ui-button.skills__remove-button {
25
18
  display: inline-flex;
26
19
  align-items: center;
27
20
  justify-content: flex-start;
28
- gap: 0.375rem;
29
- padding: var(--spacing-base, 0.5rem) var(--spacing-2xs, 0.625rem);
30
- border-radius: var(--border-radius-base, 0.3125rem);
31
- background: var(--color-surface-chip, var(--gray-100, #F3F4F6));
21
+ gap: 6px;
22
+ padding: 8px 10px;
23
+ border-radius: 5px;
24
+ background: var(--solid-ui-color-gray-100, #F3F4F6);
32
25
  width: fit-content;
33
26
  max-width: 100%;
34
27
  }
@@ -40,8 +33,8 @@ solid-ui-button.skills__remove-button {
40
33
  .skills__item-label {
41
34
  display: inline;
42
35
  color: var(--color-text-strong, var(--slate-900, #0F172B));
43
- font-size: var(--font-size-sm, 0.875rem);
44
- font-weight: var(--font-weight-md, 500);
36
+ font-size: var(--solid-ui-font-size-sm, 0.875rem);
37
+ font-weight: 500;
45
38
  line-height: 1.2;
46
39
  overflow-wrap: anywhere;
47
40
  }
@@ -52,51 +45,23 @@ solid-ui-button.skills__remove-button {
52
45
  white-space: nowrap;
53
46
  }
54
47
 
55
- .skills__item-tail::before {
56
- content: '\00a0';
57
- }
58
-
59
48
  .skills__empty-icon {
60
49
  display: inline-flex;
61
50
  align-items: center;
62
51
  justify-content: center;
63
52
  }
64
53
 
65
- /* Remove button */
66
- solid-ui-button.skills__remove-button {
67
- width: var(--skills-remove-icon-size);
68
- height: var(--skills-remove-icon-size);
69
- line-height: 0;
70
- vertical-align: text-top;
71
- --button-height-sm: var(--skills-remove-icon-size);
72
- --button-padding-sm: 0;
73
- --button-icon-size-sm: var(--skills-remove-icon-size);
74
- --button-background: transparent;
75
- --button-border-width: 0;
76
- --button-border: transparent;
77
- --button-text: currentColor;
78
- --button-hover-background: transparent;
79
- --button-hover-border: transparent;
80
- --button-hover-text: currentColor;
81
- }
82
-
83
54
  solid-ui-button.skills__remove-button[data-loading='true'] {
84
55
  pointer-events: none;
85
56
  }
86
57
 
87
- .skills__remove-button svg {
88
- display: block;
89
- width: var(--skills-remove-icon-size);
90
- height: var(--skills-remove-icon-size);
91
- }
92
-
93
58
  .profile__section[data-profile-section='skills'] .profile-section-inline-error {
94
- margin-top: var(--spacing-sm, 0.938rem);
95
- padding: var(--spacing-xs, 0.75rem);
59
+ margin-top: 15px;
60
+ padding: 12px;
96
61
  border: 1px solid var(--dialog-error-border, var(--pink-700, #ff98b3));
97
- border-radius: var(--border-radius-base, 0.3125rem);
62
+ border-radius: 5px;
98
63
  background: var(--dialog-error-background, var(--pink-500, #ffdde6));
99
- color: var(--dialog-error-text, var(--red-600, #B00020));
64
+ color: var(--solid-ui-color-error, #B00020);
100
65
  text-align: left;
101
66
  white-space: pre-wrap;
102
67
  overflow-wrap: anywhere;
@@ -110,18 +75,14 @@ solid-ui-button.skills__remove-button[data-loading='true'] {
110
75
  display: inline-flex;
111
76
  align-items: center;
112
77
  justify-content: flex-start;
113
- gap: 0.375rem;
114
- padding: var(--spacing-base, 0.5rem) var(--spacing-2xs, 0.625rem);
78
+ gap: 6px;
79
+ padding: 8px 10px;
115
80
  width: fit-content;
116
81
  max-width: 100%;
117
82
  }
118
83
 
119
84
  :is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] .skills__item-label {
120
- font-size: var(--font-size-sm, 0.875rem);
121
- }
122
-
123
- :is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] .skills__item-tail::before {
124
- content: none;
85
+ font-size: var(--solid-ui-font-size-sm, 0.875rem);
125
86
  }
126
87
 
127
88
  @media (max-width: 576px) {
@@ -133,18 +94,14 @@ solid-ui-button.skills__remove-button[data-loading='true'] {
133
94
  display: inline-flex;
134
95
  align-items: center;
135
96
  justify-content: flex-start;
136
- gap: 0.375rem;
137
- padding: var(--spacing-base, 0.5rem) var(--spacing-2xs, 0.625rem);
97
+ gap: 6px;
98
+ padding: 8px 10px;
138
99
  width: fit-content;
139
100
  max-width: 100%;
140
101
  }
141
102
 
142
103
  .skills__item-label {
143
- font-size: var(--font-size-sm, 0.875rem);
144
- }
145
-
146
- .skills__item-tail::before {
147
- content: none;
104
+ font-size: var(--solid-ui-font-size-sm, 0.875rem);
148
105
  }
149
106
  }
150
107
 
@@ -157,17 +114,13 @@ solid-ui-button.skills__remove-button[data-loading='true'] {
157
114
  display: inline-flex;
158
115
  align-items: center;
159
116
  justify-content: flex-start;
160
- gap: 0.375rem;
161
- padding: var(--spacing-base, 0.5rem) var(--spacing-2xs, 0.625rem);
117
+ gap: 6px;
118
+ padding: 8px 10px;
162
119
  width: fit-content;
163
120
  max-width: 100%;
164
121
  }
165
122
 
166
123
  .skills__item-label {
167
- font-size: var(--font-size-sm, 0.875rem);
168
- }
169
-
170
- .skills__item-tail::before {
171
- content: none;
124
+ font-size: var(--solid-ui-font-size-sm, 0.875rem);
172
125
  }
173
126
  }
@@ -1,7 +1,7 @@
1
1
  import 'solid-ui/components/button';
2
2
  import { LiveStore, NamedNode } from 'rdflib';
3
- import { ViewerMode } from '../../types';
3
+ import { Layout, ViewerMode } from '../../types';
4
4
  import './SkillsSection.css';
5
5
  import { SkillDetails } from './types';
6
- export declare function renderSkillsSection(store: LiveStore, subject: NamedNode, skills: SkillDetails[], viewerMode: ViewerMode, onSaved?: () => Promise<void> | void): import("lit-html").TemplateResult<1> | "";
6
+ export declare function renderSkillsSection(store: LiveStore, subject: NamedNode, skills: SkillDetails[], viewerMode: ViewerMode, layout: Layout, onSaved?: () => Promise<void> | void): import("lit-html").TemplateResult<1>;
7
7
  //# sourceMappingURL=SkillsSection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SkillsSection.d.ts","sourceRoot":"","sources":["../../../src/sections/skills/SkillsSection.ts"],"names":[],"mappings":"AACA,OAAO,4BAA4B,CAAA;AAEnC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,qBAAqB,CAAA;AAE5B,OAAO,EAAE,YAAY,EAAY,MAAM,SAAS,CAAA;AA6PhD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,YAAY,EAAE,EACtB,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,6CAYrC"}
1
+ {"version":3,"file":"SkillsSection.d.ts","sourceRoot":"","sources":["../../../src/sections/skills/SkillsSection.ts"],"names":[],"mappings":"AACA,OAAO,4BAA4B,CAAA;AAEnC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,qBAAqB,CAAA;AAE5B,OAAO,EAAE,YAAY,EAAY,MAAM,SAAS,CAAA;AAsOhD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,YAAY,EAAE,EACtB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,wCAYrC"}
@@ -14,6 +14,7 @@ var _texts = require("../../texts");
14
14
  var _collapsibleSection = require("../shared/collapsibleSection");
15
15
  var _mutations = require("./mutations");
16
16
  var _errorDisplay = require("../../utils/errorDisplay");
17
+ var _responsiveActionButton = require("../../ui/responsiveActionButton");
17
18
  const removeSkillFailedMessageText = 'Unable to remove your skill.';
18
19
  function setSkillsSectionError(section, message) {
19
20
  const errorBox = section.querySelector('.profile-section-inline-error');
@@ -36,7 +37,7 @@ function renderSkillItem(detail, store, subject, viewerMode, onSaved) {
36
37
  if (viewerMode !== 'owner') return;
37
38
  const removeButton = event.currentTarget;
38
39
  const skillRow = removeButton?.closest('.skills__item');
39
- const section = event.currentTarget?.closest('[data-profile-section="skills"]');
40
+ const section = removeButton?.closest('[data-profile-section="skills"]');
40
41
  const removeRow = {
41
42
  name: detail.name,
42
43
  publicId: detail.publicId,
@@ -76,21 +77,18 @@ function renderSkillItem(detail, store, subject, viewerMode, onSaved) {
76
77
  ${viewerMode === 'owner' ? (0, _litHtml.html)`
77
78
  <span class="skills__item-tail">
78
79
  <solid-ui-button
79
- type="button"
80
- variant="icon"
81
- size="sm"
82
- class="skills__remove-button"
80
+ variant="ghost"
83
81
  aria-label=${`Remove ${detail.name} skill`}
84
82
  @click=${handleRemove}
85
83
  >
86
84
  <span slot="icon" aria-hidden="true">${_profileIcons.deleteIcon}</span>
87
85
  </solid-ui-button>
88
86
  </span>
89
- ` : ''}
87
+ ` : _litHtml.nothing}
90
88
  </li>
91
89
  `;
92
90
  }
93
- function renderSkillsSectionDefault(store, subject, skills, viewerMode, onSaved) {
91
+ function renderSkillsSectionDefault(store, subject, skills, viewerMode, layout, onSaved) {
94
92
  const hasSkills = Array.isArray(skills) && skills.length > 0;
95
93
  const isOwner = viewerMode === 'owner';
96
94
  return (0, _litHtml.html)`
@@ -106,25 +104,18 @@ function renderSkillsSectionDefault(store, subject, skills, viewerMode, onSaved)
106
104
  <h3 id="skills-heading">${_texts.skillsHeadingText}</h3>
107
105
  <div class="profile-section-collapsible__actions">
108
106
  ${isOwner ? (0, _litHtml.html)`
109
- <solid-ui-button
110
- type="button"
111
- variant="secondary"
112
- size="sm"
113
- class="profile__action-button profile-action-text profile-section-collapsible__edit-button"
114
- aria-label="Add or edit skills"
115
- @click=${event => (0, _SkillsEditDialog.createSkillsEditDialog)(event, store, subject, skills, viewerMode, onSaved)}
116
- >
117
- <span class="profile-section-collapsible__edit-label profile__add-more-content">
118
- <span class="profile__add-more-icon" aria-hidden="true">${_profileIcons.addIcon}</span>
119
- <span>Add More</span>
120
- </span>
121
- <span class="profile-section-collapsible__edit-icon" aria-hidden="true">${_profileIcons.editIcon}</span>
122
- </solid-ui-button>
123
- ` : (0, _litHtml.html)``}
107
+ ${(0, _responsiveActionButton.renderResponsiveActionButton)({
108
+ layout,
109
+ className: 'profile-section-collapsible__edit-button',
110
+ ariaLabel: 'Add or edit skills',
111
+ onClick: event => (0, _SkillsEditDialog.createSkillsEditDialog)(event, store, subject, skills, viewerMode, onSaved),
112
+ desktopIcon: (0, _litHtml.html)`<span slot="left-icon" class="profile-section-collapsible__action-label profile__add-more-icon" aria-hidden="true">${_profileIcons.addIcon}</span>`,
113
+ desktopLabel: 'Add More',
114
+ mobileIcon: (0, _litHtml.html)`<span slot="icon" class="profile-section-collapsible__edit-icon" aria-hidden="true">${_profileIcons.editIcon}</span>`
115
+ })}
116
+ ` : _litHtml.nothing}
124
117
  <solid-ui-button
125
- type="button"
126
- variant="icon"
127
- size="sm"
118
+ variant="ghost"
128
119
  class="profile-section-collapsible__toggle-button"
129
120
  aria-label="Toggle skills section"
130
121
  aria-controls="skills-panel"
@@ -157,19 +148,16 @@ function renderSkillsSectionDefault(store, subject, skills, viewerMode, onSaved)
157
148
  </section>
158
149
  `;
159
150
  }
160
- function renderOwnerEmptySkillsContent(_store, _subject, _skills, _viewerMode, _onSaved) {
151
+ function renderOwnerEmptySkillsContent() {
161
152
  return (0, _litHtml.html)`
162
153
  <div class="profile__empty-state-content" role="group" aria-label="Empty skills section">
163
154
  <div class="skills__empty-icon-wrapper">
164
155
  <span class="skills__empty-icon">${_profileIcons.lighteningIcon}</span>
165
156
  </div>
166
- <p class="profile__empty-state-message skills__empty-message">
167
- No skills added yet.
168
- </p>
169
157
  </div>
170
158
  `;
171
159
  }
172
- function renderOwnerEmptySkillsSection(store, subject, skills, viewerMode, onSaved) {
160
+ function renderOwnerEmptySkillsSection(store, subject, skills, viewerMode, layout, onSaved) {
173
161
  return (0, _litHtml.html)`
174
162
  <section
175
163
  aria-labelledby="skills-heading"
@@ -182,26 +170,19 @@ function renderOwnerEmptySkillsSection(store, subject, skills, viewerMode, onSav
182
170
  <header class="profile__section-header profile-section-collapsible__header">
183
171
  <h3 id="skills-heading" tabindex="-1">${_texts.skillsHeadingText}</h3>
184
172
  <div class="profile-section-collapsible__actions">
173
+ ${(0, _responsiveActionButton.renderResponsiveActionButton)({
174
+ layout,
175
+ className: 'profile-section-collapsible__edit-button',
176
+ ariaLabel: 'Add skills',
177
+ onClick: event => {
178
+ return (0, _SkillsEditDialog.createSkillsEditDialog)(event, store, subject, skills, viewerMode, onSaved);
179
+ },
180
+ desktopIcon: (0, _litHtml.html)`<span slot="left-icon" class="profile-section-collapsible__action-label profile__add-more-icon" aria-hidden="true">${_profileIcons.addIcon}</span>`,
181
+ desktopLabel: 'Add More',
182
+ mobileIcon: (0, _litHtml.html)`<span slot="icon" class="profile-section-collapsible__edit-icon" aria-hidden="true">${_profileIcons.editIcon}</span>`
183
+ })}
185
184
  <solid-ui-button
186
- type="button"
187
- variant="secondary"
188
- size="sm"
189
- class="profile__action-button profile-action-text profile-section-collapsible__edit-button"
190
- aria-label="Add skills"
191
- @click=${event => {
192
- return (0, _SkillsEditDialog.createSkillsEditDialog)(event, store, subject, skills, viewerMode, onSaved);
193
- }}
194
- >
195
- <span class="profile-section-collapsible__edit-label profile__add-more-content">
196
- <span class="profile__add-more-icon" aria-hidden="true">${_profileIcons.addIcon}</span>
197
- <span>Add More</span>
198
- </span>
199
- <span class="profile-section-collapsible__edit-icon" aria-hidden="true">${_profileIcons.editIcon}</span>
200
- </solid-ui-button>
201
- <solid-ui-button
202
- type="button"
203
- variant="icon"
204
- size="sm"
185
+ variant="ghost"
205
186
  class="profile-section-collapsible__toggle-button"
206
187
  aria-label="Toggle skills section"
207
188
  aria-controls="skills-panel"
@@ -213,17 +194,17 @@ function renderOwnerEmptySkillsSection(store, subject, skills, viewerMode, onSav
213
194
  </div>
214
195
  </header>
215
196
  <div id="skills-panel" class="profile-section-collapsible__content">
216
- ${renderOwnerEmptySkillsContent(store, subject, skills, viewerMode, onSaved)}
197
+ ${renderOwnerEmptySkillsContent()}
217
198
  </div>
218
199
  </section>
219
200
  `;
220
201
  }
221
- function renderSkillsSection(store, subject, skills, viewerMode, onSaved) {
202
+ function renderSkillsSection(store, subject, skills, viewerMode, layout, onSaved) {
203
+ const currentLayout = layout || 'desktop';
222
204
  const safeSkills = skills || [];
223
205
  const hasSkills = Array.isArray(safeSkills) && safeSkills.length > 0;
224
206
  const showOwnerEmptySkills = !hasSkills && viewerMode === 'owner';
225
- const showSection = true;
226
- return showSection ? (0, _litHtml.html)`
227
- ${showOwnerEmptySkills ? renderOwnerEmptySkillsSection(store, subject, safeSkills, viewerMode, onSaved) : renderSkillsSectionDefault(store, subject, safeSkills, viewerMode, onSaved)}
228
- ` : '';
207
+ return (0, _litHtml.html)`
208
+ ${showOwnerEmptySkills ? renderOwnerEmptySkillsSection(store, subject, safeSkills, viewerMode, currentLayout, onSaved) : renderSkillsSectionDefault(store, subject, safeSkills, viewerMode, currentLayout, onSaved)}
209
+ `;
229
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SocialEditDialog.d.ts","sourceRoot":"","sources":["../../../src/sections/social/SocialEditDialog.ts"],"names":[],"mappings":"AAEA,OAAO,4BAA4B,CAAA;AACnC,OAAO,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,SAAS,CAAA;AACjD,OAAO,0CAA0C,CAAA;AACjD,OAAO,8BAA8B,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AA4hBxC,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,EAClB,cAAc,EAAE,OAAO,EAAE,EACzB,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,iBAgDrC"}
1
+ {"version":3,"file":"SocialEditDialog.d.ts","sourceRoot":"","sources":["../../../src/sections/social/SocialEditDialog.ts"],"names":[],"mappings":"AAEA,OAAO,4BAA4B,CAAA;AACnC,OAAO,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,SAAS,CAAA;AACjD,OAAO,0CAA0C,CAAA;AACjD,OAAO,8BAA8B,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAuhBxC,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,EAClB,cAAc,EAAE,OAAO,EAAE,EACzB,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,iBAgDrC"}
@@ -197,10 +197,8 @@ function renderSocialInputRow({
197
197
  @drop=${event => onDrop(event, index)}
198
198
  >
199
199
  <solid-ui-button
200
- type="button"
201
200
  class="profile-edit-dialog__drag-handle"
202
- variant="icon"
203
- size="md"
201
+ variant="ghost"
204
202
  aria-label=${`Reorder social account ${displayIndex + 1}`}
205
203
  title="Drag to reorder"
206
204
  draggable="true"
@@ -211,7 +209,7 @@ function renderSocialInputRow({
211
209
  @pointerup=${event => onPointerUp(event)}
212
210
  @pointercancel=${event => onPointerCancel(event)}
213
211
  >
214
- <span slot="icon" class="profile-edit-dialog__drag-handle-icon" aria-hidden="true">${_profileIcons.bentoIcon}</span>
212
+ <span slot="icon" aria-hidden="true">${_profileIcons.bentoIcon}</span>
215
213
  </solid-ui-button>
216
214
  <img
217
215
  class="profile-edit-dialog__social-icon"
@@ -243,15 +241,12 @@ function renderSocialInputRow({
243
241
  </label>
244
242
  <div class="profile-edit-dialog__actions profile-edit-dialog__actions--edge">
245
243
  <solid-ui-button
246
- type="button"
247
- variant="icon"
248
- size="md"
249
- class="profile-edit-dialog__delete-button"
244
+ variant="ghost"
250
245
  aria-label=${`Delete social account ${displayIndex + 1}`}
251
246
  title=${_texts.deleteEntryButtonTitleText}
252
247
  @click=${handleDelete}
253
248
  >
254
- <span slot="icon" class="profile-edit-dialog__delete-icon" aria-hidden="true">${_profileIcons.trashIcon}</span>
249
+ <span slot="icon" aria-hidden="true">${_profileIcons.trashIcon}</span>
255
250
  </solid-ui-button>
256
251
  </div>
257
252
  </div>
@@ -1,20 +1,12 @@
1
- /* Social section styles. */
2
-
3
1
  .profile__section[data-profile-section='social'],
4
2
  .profile__section--empty[data-profile-section='social'] {
5
3
  --social-card-collapsed-columns: repeat(5, max-content);
6
- --social-card-expanded-columns: repeat(3, max-content);
7
4
  --social-card-icon-size: var(--icon-base, 2rem);
8
5
  --social-card-list-display: flex;
9
6
  --social-card-list-columns: none;
10
- --social-card-list-gap: var(--spacing-xxs, 0.3125rem);
11
- --social-card-link-gap: var(--spacing-xs, 0.75rem);
12
- --social-card-link-padding: var(--spacing-xs, 0.75rem);
13
- --social-card-link-hover-background: var(--color-surface-accent-subtle, var(--lavender-300, #e6dcff));
14
7
  --social-card-hidden-item-display: flex;
15
8
  --social-card-more-button-display: none;
16
- --social-card-more-button-margin-top: var(--spacing-xs, 0.75rem);
17
- border: var(--border-width-thin, 1px) solid var(--color-border-lighter, #D1D5DB);
9
+ border: 1px solid var(--color-border-lighter, #D1D5DB);
18
10
  }
19
11
 
20
12
  .profile__section--empty[data-profile-section='social'] {
@@ -23,7 +15,6 @@
23
15
  align-items: center;
24
16
  }
25
17
 
26
- /* Card and list */
27
18
  .social-card,
28
19
  .social-card__list {
29
20
  width: 100%;
@@ -37,7 +28,7 @@
37
28
  grid-template-columns: var(--social-card-list-columns);
38
29
  flex-wrap: wrap;
39
30
  justify-content: flex-start;
40
- gap: var(--social-card-list-gap);
31
+ gap: 5px;
41
32
  margin: 0;
42
33
  padding: 0;
43
34
  list-style: none;
@@ -52,7 +43,7 @@
52
43
 
53
44
  .profile__section--empty[data-profile-section='social'] .profile__empty-state-content {
54
45
  flex-direction: column;
55
- gap: var(--spacing-2xs, 0.625rem);
46
+ gap: 10px;
56
47
  }
57
48
 
58
49
  .social__empty-icon {
@@ -61,11 +52,11 @@
61
52
 
62
53
  /* Links */
63
54
  .social-card__link {
64
- color: var(--color-primary, #7C4DFF);
55
+ color: var(--solid-ui-color-primary, #7C4DFF);
65
56
  text-decoration: none;
66
- gap: var(--social-card-link-gap);
67
- padding: var(--social-card-link-padding);
68
- border-radius: var(--border-radius-base, 0.3125rem);
57
+ gap: 12px;
58
+ padding: 12px;
59
+ border-radius: 5px;
69
60
  transition: background-color var(--animation-duration, 0.2s) ease;
70
61
  position: relative;
71
62
  flex: 1;
@@ -75,7 +66,7 @@
75
66
  .social-card__link:hover,
76
67
  .social-card__link:focus {
77
68
  text-decoration: underline;
78
- background-color: var(--social-card-link-hover-background);
69
+ background-color: var(--color-surface-accent-subtle, var(--lavender-300, #e6dcff));
79
70
  }
80
71
 
81
72
  .social-card__link[href^="http"]:after {
@@ -87,50 +78,30 @@
87
78
  overflow: hidden;
88
79
  }
89
80
 
81
+ .social-card__more-button {
82
+ display: var(--social-card-more-button-display);
83
+ padding: 0;
84
+ border: 0;
85
+ }
86
+
90
87
  .social-card__icon {
91
88
  width: var(--social-card-icon-size);
92
89
  height: var(--social-card-icon-size);
93
- border-radius: var(--border-radius-base, 0.3125rem);
94
- background: var(--color-card-bg, #FFFFFF);
90
+ border-radius: 5px;
91
+ background: var(--solid-ui-color-white, #FFFFFF);
95
92
  flex-shrink: 0;
96
93
  }
97
94
 
98
- /* Toggle button */
99
-
100
- solid-ui-button.social-card__more-button {
101
- --button-height-sm: 0;
102
- --button-padding-x-sm: 0;
103
- --button-background: transparent;
104
- --button-border: transparent;
105
- --button-text: var(--color-primary, #7C4DFF);
106
- --button-hover-background: transparent;
107
- --button-hover-border: transparent;
108
- --button-hover-text: var(--color-primary, #7C4DFF);
109
- }
110
-
111
- .social-card__more-button,
112
- solid-ui-button.social-card__more-button::part(button) {
113
- display: var(--social-card-more-button-display);
114
- padding: 0;
115
- border: 0;
116
- background: transparent;
117
- color: var(--color-primary, #7C4DFF);
118
- font: inherit;
119
- font-weight: var(--font-weight-bold, 600);
120
- cursor: var(--profile-interactive-cursor, pointer);
121
- }
122
-
123
95
  .social-card[data-mobile-expanded="false"] .social-card__item:nth-child(n + 11) {
124
96
  display: var(--social-card-hidden-item-display);
125
97
  }
126
98
 
127
99
  .social-card[data-mobile-expanded="true"] {
128
- --social-card-list-columns: var(--social-card-expanded-columns);
100
+ --social-card-list-columns: repeat(3, max-content);
129
101
  --social-card-hidden-item-display: flex;
130
102
  --social-card-more-button-display: none;
131
103
  }
132
104
 
133
- /* Compact layout */
134
105
  :is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] .profile__section[data-profile-section='social'],
135
106
  :is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] .profile__section--empty[data-profile-section='social'] {
136
107
  --social-card-list-display: grid;
@@ -143,20 +114,8 @@ solid-ui-button.social-card__more-button::part(button) {
143
114
  justify-content: flex-start;
144
115
  }
145
116
 
146
- :is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] .profile__section[data-profile-section='social'] .profile-section-collapsible__toggle-button,
147
- :is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] .profile__section--empty[data-profile-section='social'] .profile-section-collapsible__toggle-button {
148
- display: inline-flex;
149
- align-items: center;
150
- justify-content: center;
151
- }
152
-
153
- :is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] .social-card__more-button,
154
- :is(.profile-pane-host, .profile-pane-root)[data-layout='mobile'] solid-ui-button.social-card__more-button::part(button) {
155
- margin-top: var(--social-card-more-button-margin-top);
156
- }
157
-
158
117
  @media (max-width: 768px) {
159
- .profile__section[data-profile-section='social'],
118
+ .profile__section[data-profile-section='social'],
160
119
  .profile__section--empty[data-profile-section='social'] {
161
120
  --social-card-list-display: grid;
162
121
  --social-card-list-columns: var(--social-card-collapsed-columns);
@@ -167,15 +126,10 @@ solid-ui-button.social-card__more-button::part(button) {
167
126
  .social-card .social-card__list {
168
127
  justify-content: flex-start;
169
128
  }
170
-
171
- .social-card__more-button,
172
- solid-ui-button.social-card__more-button::part(button) {
173
- margin-top: var(--social-card-more-button-margin-top);
174
- }
175
129
  }
176
130
 
177
131
  @container profile-pane (max-width: 768px) {
178
- .profile__section[data-profile-section='social'],
132
+ .profile__section[data-profile-section='social'],
179
133
  .profile__section--empty[data-profile-section='social'] {
180
134
  --social-card-list-display: grid;
181
135
  --social-card-list-columns: var(--social-card-collapsed-columns);
@@ -186,9 +140,4 @@ solid-ui-button.social-card__more-button::part(button) {
186
140
  .social-card .social-card__list {
187
141
  justify-content: flex-start;
188
142
  }
189
-
190
- .social-card__more-button,
191
- solid-ui-button.social-card__more-button::part(button) {
192
- margin-top: var(--social-card-more-button-margin-top);
193
- }
194
143
  }
@@ -1,9 +1,9 @@
1
1
  import { TemplateResult } from 'lit-html';
2
2
  import 'solid-ui/components/button';
3
3
  import { SocialPresentation } from './types';
4
- import { ViewerMode } from '../../types';
4
+ import { Layout, ViewerMode } from '../../types';
5
5
  import './SocialSection.css';
6
6
  import { LiveStore, NamedNode } from 'rdflib';
7
7
  export declare const SocialCard: (SocialData: SocialPresentation, _viewerMode: ViewerMode) => TemplateResult;
8
- export declare function renderSocialSection(store: LiveStore, subject: NamedNode, socialData: SocialPresentation, viewerMode: ViewerMode, onSaved?: () => Promise<void> | void): TemplateResult<1> | "";
8
+ export declare function renderSocialSection(store: LiveStore, subject: NamedNode, socialData: SocialPresentation, viewerMode: ViewerMode, layout: Layout, onSaved?: () => Promise<void> | void): TemplateResult<1>;
9
9
  //# sourceMappingURL=SocialSection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SocialSection.d.ts","sourceRoot":"","sources":["../../../src/sections/social/SocialSection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,4BAA4B,CAAA;AACnC,OAAO,EAAW,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,qBAAqB,CAAA;AAG5B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAoB7C,eAAO,MAAM,UAAU,GACrB,YAAY,kBAAkB,EAC9B,aAAa,UAAU,KACtB,cA+DF,CAAA;AAoKD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,EAClB,UAAU,EAAE,kBAAkB,EAC9B,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,0BAYrC"}
1
+ {"version":3,"file":"SocialSection.d.ts","sourceRoot":"","sources":["../../../src/sections/social/SocialSection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,4BAA4B,CAAA;AACnC,OAAO,EAAW,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,qBAAqB,CAAA;AAG5B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAqB7C,eAAO,MAAM,UAAU,GACrB,YAAY,kBAAkB,EAC9B,aAAa,UAAU,KACtB,cA4DF,CAAA;AAmID,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,EAClB,UAAU,EAAE,kBAAkB,EAC9B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,qBAYrC"}