solid-ui 3.0.6 → 3.1.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 (129) hide show
  1. package/README.md +128 -2
  2. package/dist/acl/access-groups.js +1 -1
  3. package/dist/components/footer/index.d.ts +1 -0
  4. package/dist/components/footer/index.esm.js +24364 -0
  5. package/dist/components/footer/index.esm.js.map +1 -0
  6. package/dist/components/footer/index.esm.min.js +137 -0
  7. package/dist/components/footer/index.esm.min.js.map +1 -0
  8. package/dist/components/footer/index.js +23252 -0
  9. package/dist/components/footer/index.js.map +1 -0
  10. package/dist/components/footer/index.min.js +125 -0
  11. package/dist/components/footer/index.min.js.map +1 -0
  12. package/dist/components/header/index.d.ts +1 -0
  13. package/dist/components/header/index.esm.js +1894 -0
  14. package/dist/components/header/index.esm.js.map +1 -0
  15. package/dist/components/header/index.esm.min.js +1083 -0
  16. package/dist/components/header/index.esm.min.js.map +1 -0
  17. package/dist/components/header/index.js +1855 -0
  18. package/dist/components/header/index.js.map +1 -0
  19. package/dist/components/header/index.min.js +1084 -0
  20. package/dist/components/header/index.min.js.map +1 -0
  21. package/dist/components/loginButton/index.d.ts +1 -0
  22. package/dist/components/loginButton/index.esm.js +719 -0
  23. package/dist/components/loginButton/index.esm.js.map +1 -0
  24. package/dist/components/loginButton/index.esm.min.js +402 -0
  25. package/dist/components/loginButton/index.esm.min.js.map +1 -0
  26. package/dist/components/loginButton/index.js +701 -0
  27. package/dist/components/loginButton/index.js.map +1 -0
  28. package/dist/components/loginButton/index.min.js +402 -0
  29. package/dist/components/loginButton/index.min.js.map +1 -0
  30. package/dist/components/signupButton/index.d.ts +1 -0
  31. package/dist/components/signupButton/index.esm.js +270 -0
  32. package/dist/components/signupButton/index.esm.js.map +1 -0
  33. package/dist/components/signupButton/index.esm.min.js +82 -0
  34. package/dist/components/signupButton/index.esm.min.js.map +1 -0
  35. package/dist/components/signupButton/index.js +264 -0
  36. package/dist/components/signupButton/index.js.map +1 -0
  37. package/dist/components/signupButton/index.min.js +82 -0
  38. package/dist/components/signupButton/index.min.js.map +1 -0
  39. package/dist/footer/index.d.ts.map +1 -1
  40. package/dist/footer/index.js +8 -4
  41. package/dist/footer/index.js.map +1 -1
  42. package/dist/icons/v2/icons-svg/contactIcons.d.ts +3 -0
  43. package/dist/icons/v2/icons-svg/contactIcons.d.ts.map +1 -0
  44. package/dist/icons/v2/icons-svg/contactIcons.js +27 -0
  45. package/dist/icons/v2/icons-svg/contactIcons.js.map +1 -0
  46. package/dist/icons/v2/icons-svg/headerIcons.d.ts +18 -0
  47. package/dist/icons/v2/icons-svg/headerIcons.d.ts.map +1 -0
  48. package/dist/icons/v2/icons-svg/headerIcons.js +245 -0
  49. package/dist/icons/v2/icons-svg/headerIcons.js.map +1 -0
  50. package/dist/icons/v2/icons-svg/pngIcons.d.ts +3 -0
  51. package/dist/icons/v2/icons-svg/pngIcons.d.ts.map +1 -0
  52. package/dist/icons/v2/icons-svg/pngIcons.js +4 -0
  53. package/dist/icons/v2/icons-svg/pngIcons.js.map +1 -0
  54. package/dist/icons/v2/icons-svg/profileIcons.d.ts +23 -0
  55. package/dist/icons/v2/icons-svg/profileIcons.d.ts.map +1 -0
  56. package/dist/icons/v2/icons-svg/profileIcons.js +317 -0
  57. package/dist/icons/v2/icons-svg/profileIcons.js.map +1 -0
  58. package/dist/pad.d.ts.map +1 -1
  59. package/dist/pad.js +13 -13
  60. package/dist/pad.js.map +1 -1
  61. package/dist/solid-ui.esm.js +9560 -12181
  62. package/dist/solid-ui.esm.js.map +1 -1
  63. package/dist/solid-ui.esm.min.js +15 -14
  64. package/dist/solid-ui.esm.min.js.map +1 -1
  65. package/dist/solid-ui.js +12531 -14794
  66. package/dist/solid-ui.js.map +1 -1
  67. package/dist/solid-ui.min.js +23 -22
  68. package/dist/solid-ui.min.js.map +1 -1
  69. package/dist/utils/headerFooterHelpers.d.ts.map +1 -1
  70. package/dist/utils/headerFooterHelpers.js +11 -2
  71. package/dist/utils/headerFooterHelpers.js.map +1 -1
  72. package/dist/v2/components/footer/Footer.d.ts +60 -0
  73. package/dist/v2/components/footer/Footer.d.ts.map +1 -0
  74. package/dist/v2/components/footer/Footer.js +148 -0
  75. package/dist/v2/components/footer/Footer.js.map +1 -0
  76. package/dist/v2/components/footer/Footer.test.d.ts +2 -0
  77. package/dist/v2/components/footer/Footer.test.d.ts.map +1 -0
  78. package/dist/v2/components/footer/Footer.test.js +53 -0
  79. package/dist/v2/components/footer/Footer.test.js.map +1 -0
  80. package/dist/v2/components/footer/index.d.ts +3 -0
  81. package/dist/v2/components/footer/index.d.ts.map +1 -0
  82. package/dist/v2/components/footer/index.js +7 -0
  83. package/dist/v2/components/footer/index.js.map +1 -0
  84. package/dist/v2/components/header/Header.d.ts +155 -0
  85. package/dist/v2/components/header/Header.d.ts.map +1 -0
  86. package/dist/v2/components/header/Header.js +845 -0
  87. package/dist/v2/components/header/Header.js.map +1 -0
  88. package/dist/v2/components/header/header.test.d.ts +2 -0
  89. package/dist/v2/components/header/header.test.d.ts.map +1 -0
  90. package/dist/v2/components/header/header.test.js +242 -0
  91. package/dist/v2/components/header/header.test.js.map +1 -0
  92. package/dist/v2/components/header/index.d.ts +4 -0
  93. package/dist/v2/components/header/index.d.ts.map +1 -0
  94. package/dist/v2/components/header/index.js +7 -0
  95. package/dist/v2/components/header/index.js.map +1 -0
  96. package/dist/v2/components/loginButton/LoginButton.d.ts +62 -0
  97. package/dist/v2/components/loginButton/LoginButton.d.ts.map +1 -0
  98. package/dist/v2/components/loginButton/LoginButton.js +497 -0
  99. package/dist/v2/components/loginButton/LoginButton.js.map +1 -0
  100. package/dist/v2/components/loginButton/LoginButton.test.d.ts +2 -0
  101. package/dist/v2/components/loginButton/LoginButton.test.d.ts.map +1 -0
  102. package/dist/v2/components/loginButton/LoginButton.test.js +53 -0
  103. package/dist/v2/components/loginButton/LoginButton.test.js.map +1 -0
  104. package/dist/v2/components/loginButton/downArrow.d.ts +2 -0
  105. package/dist/v2/components/loginButton/downArrow.d.ts.map +1 -0
  106. package/dist/v2/components/loginButton/downArrow.js +10 -0
  107. package/dist/v2/components/loginButton/downArrow.js.map +1 -0
  108. package/dist/v2/components/loginButton/index.d.ts +3 -0
  109. package/dist/v2/components/loginButton/index.d.ts.map +1 -0
  110. package/dist/v2/components/loginButton/index.js +7 -0
  111. package/dist/v2/components/loginButton/index.js.map +1 -0
  112. package/dist/v2/components/signupButton/SignupButton.d.ts +36 -0
  113. package/dist/v2/components/signupButton/SignupButton.d.ts.map +1 -0
  114. package/dist/v2/components/signupButton/SignupButton.js +84 -0
  115. package/dist/v2/components/signupButton/SignupButton.js.map +1 -0
  116. package/dist/v2/components/signupButton/SignupButton.test.d.ts +2 -0
  117. package/dist/v2/components/signupButton/SignupButton.test.d.ts.map +1 -0
  118. package/dist/v2/components/signupButton/SignupButton.test.js +49 -0
  119. package/dist/v2/components/signupButton/SignupButton.test.js.map +1 -0
  120. package/dist/v2/components/signupButton/index.d.ts +3 -0
  121. package/dist/v2/components/signupButton/index.d.ts.map +1 -0
  122. package/dist/v2/components/signupButton/index.js +7 -0
  123. package/dist/v2/components/signupButton/index.js.map +1 -0
  124. package/dist/versionInfo.js +7 -7
  125. package/dist/widgets/buttons.d.ts +9 -3
  126. package/dist/widgets/buttons.d.ts.map +1 -1
  127. package/dist/widgets/buttons.js +68 -7
  128. package/dist/widgets/buttons.js.map +1 -1
  129. package/package.json +34 -7
@@ -0,0 +1,497 @@
1
+ import { LitElement, html, css } from 'lit';
2
+ import { authSession, authn, getSuggestedIssuers, offlineTestID, solidLogicSingleton } from 'solid-logic';
3
+ import { phoneIcon as downArrowIcon } from './downArrow';
4
+ export class LoginButton extends LitElement {
5
+ constructor() {
6
+ super();
7
+ this._issuerInputId = `issuer-url-input-${Math.random().toString(36).slice(2, 10)}`;
8
+ this._errorMsg = '';
9
+ this.label = 'Log In';
10
+ this.theme = 'light';
11
+ this.issuerUrl = '';
12
+ this.icon = '';
13
+ this.layout = 'desktop';
14
+ this._popupOpen = false;
15
+ this._issuerInputValue = '';
16
+ this._dropdownOpen = false;
17
+ }
18
+ connectedCallback() {
19
+ super.connectedCallback();
20
+ }
21
+ disconnectedCallback() {
22
+ super.disconnectedCallback();
23
+ }
24
+ _openPopup() {
25
+ const offline = offlineTestID();
26
+ if (offline) {
27
+ this._loginComplete(offline.uri);
28
+ return;
29
+ }
30
+ this._issuerInputValue = (typeof localStorage !== 'undefined' && localStorage.getItem('loginIssuer')) || this.issuerUrl || '';
31
+ this._errorMsg = '';
32
+ this._popupOpen = true;
33
+ }
34
+ _closePopup() {
35
+ this._popupOpen = false;
36
+ }
37
+ updated() {
38
+ var _a;
39
+ const dialog = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('dialog');
40
+ if (!dialog)
41
+ return;
42
+ if (this._popupOpen && !dialog.open) {
43
+ dialog.showModal();
44
+ }
45
+ else if (!this._popupOpen && dialog.open) {
46
+ dialog.close();
47
+ }
48
+ }
49
+ async _loginToIssuer(issuerUri) {
50
+ if (!issuerUri)
51
+ return;
52
+ try {
53
+ // clear authorization metadata from store
54
+ ;
55
+ solidLogicSingleton.store.updater.flagAuthorizationMetadata();
56
+ const preLoginRedirectHash = new URL(window.location.href).hash;
57
+ if (preLoginRedirectHash) {
58
+ window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash);
59
+ }
60
+ window.localStorage.setItem('loginIssuer', issuerUri);
61
+ const locationUrl = new URL(window.location.href);
62
+ locationUrl.hash = '';
63
+ await authSession.login({
64
+ redirectUrl: locationUrl.href,
65
+ oidcIssuer: issuerUri
66
+ });
67
+ }
68
+ catch (err) {
69
+ this._errorMsg = err.message || String(err);
70
+ this.requestUpdate();
71
+ }
72
+ }
73
+ _loginComplete(webIdUri) {
74
+ authn.saveUser(webIdUri);
75
+ this.dispatchEvent(new CustomEvent('login-success', {
76
+ detail: { webId: webIdUri },
77
+ bubbles: true,
78
+ composed: true
79
+ }));
80
+ }
81
+ _handleGoClick() {
82
+ this._dropdownOpen = false;
83
+ this._loginToIssuer(this._issuerInputValue);
84
+ }
85
+ _toggleDropdown() {
86
+ this._dropdownOpen = !this._dropdownOpen;
87
+ }
88
+ _selectIssuerFromDropdown(uri) {
89
+ this._issuerInputValue = uri;
90
+ this._dropdownOpen = false;
91
+ }
92
+ _handleInputChange(e) {
93
+ this._issuerInputValue = e.target.value;
94
+ }
95
+ _handleInputKeydown(e) {
96
+ if (e.key === 'Enter') {
97
+ this._loginToIssuer(this._issuerInputValue);
98
+ }
99
+ if (e.key === 'Escape') {
100
+ this._closePopup();
101
+ }
102
+ }
103
+ _renderPopup() {
104
+ const suggestedIssuers = getSuggestedIssuers();
105
+ return html `
106
+ <div class="popup-box">
107
+ <div class="popup-top-menu">
108
+ <span class="popup-title">Select an identity provider</span>
109
+ <button class="popup-close" type="button" aria-label="Close" @click="${() => this._closePopup()}">&#x2715;</button>
110
+ </div>
111
+
112
+ <div class="issuer-text-section">
113
+ <label class="issuer-text-label" for="${this._issuerInputId}">Solid Identity Provider</label>
114
+ <div class="issuer-text-row">
115
+ <div class="issuer-input-wrapper">
116
+ <div class="issuer-input-field-row">
117
+ <input
118
+ id="${this._issuerInputId}"
119
+ class="issuer-text-input"
120
+ type="text"
121
+ placeholder="https://example.com"
122
+ .value="${this._issuerInputValue}"
123
+ @input="${this._handleInputChange}"
124
+ @keydown="${this._handleInputKeydown}"
125
+ autocomplete="url"
126
+ />
127
+ ${suggestedIssuers.length
128
+ ? html `
129
+ <button
130
+ class="issuer-dropdown-toggle"
131
+ type="button"
132
+ aria-label="Show identity provider suggestions"
133
+ aria-expanded="${this._dropdownOpen}"
134
+ @click="${() => this._toggleDropdown()}"
135
+ >${downArrowIcon}</button>
136
+ `
137
+ : ''}
138
+ </div>
139
+ ${this._dropdownOpen && suggestedIssuers.length
140
+ ? html `
141
+ <div class="issuer-dropdown-list" role="listbox">
142
+ ${suggestedIssuers.map(issuerInfo => html `
143
+ <button
144
+ class="issuer-dropdown-item"
145
+ type="button"
146
+ role="option"
147
+ @click="${() => this._selectIssuerFromDropdown(issuerInfo.uri)}"
148
+ >${issuerInfo.name}</button>
149
+ `)}
150
+ </div>
151
+ `
152
+ : ''}
153
+ </div>
154
+ </div>
155
+ ${this._errorMsg ? html `<div class="error-msg">${this._errorMsg}</div>` : ''}
156
+ </div>
157
+ <hr class="popup-footer-hr" />
158
+ <div class="popup-footer">
159
+ <button class="popup-cancel-button" type="button" @click="${() => this._closePopup()}">Cancel</button>
160
+ <button
161
+ class="popup-login-button"
162
+ type="button"
163
+ ?disabled="${!this._issuerInputValue}"
164
+ @click="${() => this._handleGoClick()}"
165
+ >Log In</button>
166
+ </div>
167
+ </div>
168
+ `;
169
+ }
170
+ render() {
171
+ return html `
172
+ <button
173
+ class="login-button"
174
+ type="button"
175
+ part="login-button"
176
+ @click="${() => this._openPopup()}"
177
+ >
178
+ ${this.icon ? html `<img class="login-button-icon" src="${this.icon}" alt="" aria-hidden="true" part="login-button-icon" />` : ''}
179
+ <slot>${this.label}</slot>
180
+ </button>
181
+
182
+ <dialog
183
+ class="popup-dialog"
184
+ role="dialog"
185
+ aria-modal="true"
186
+ aria-label="Select an identity provider"
187
+ @cancel="${(e) => { e.preventDefault(); this._closePopup(); }}"
188
+ @click="${(e) => { if (e.target === e.currentTarget)
189
+ this._closePopup(); }}"
190
+ >
191
+ ${this._popupOpen ? this._renderPopup() : ''}
192
+ </dialog>
193
+ `;
194
+ }
195
+ }
196
+ LoginButton.properties = {
197
+ label: { type: String, reflect: true },
198
+ theme: { type: String, reflect: true },
199
+ issuerUrl: { type: String, attribute: 'issuer-url', reflect: true },
200
+ icon: { type: String, reflect: true },
201
+ layout: { type: String, reflect: true },
202
+ _popupOpen: { state: true },
203
+ _issuerInputValue: { state: true },
204
+ _dropdownOpen: { state: true }
205
+ };
206
+ LoginButton.styles = css `
207
+ :host { // default theme
208
+ display: inline-block;
209
+ position: relative;
210
+ z-index: 400;
211
+ --login-button-background: var(--lavender-900, #7c4cff);
212
+ --login-button-text: var(--color-header-text, #ffffff);
213
+ --popup-background: var(--color-background, #F8F9FB);
214
+ --popup-text: var(--color-text, #1A1A1A);
215
+ --popup-border: var(--color-border, #E5E7EB);
216
+ --popup-shadow: var(--box-shadow-sm, 0 1px 4px rgba(124,77,255,0.12));
217
+ --popup-overlay-background: rgba(0, 0, 0, 0.6);
218
+ --issuer-input-background: var(--color-background, #F8F9FB);
219
+ --issuer-input-text: var(--color-text, #1A1A1A);
220
+ --issuer-input-border: var(--color-text, #1A1A1A);
221
+ --issuer-button-background: var(--color-background, #F8F9FB);
222
+ --issuer-button-text: var(--color-text, #1A1A1A);
223
+ --issuer-button-border: var(--color-border, #E5E7EB);
224
+ --issuer-button-hover-background: var(--lavender-900, #7c4cff);
225
+ --issuer-label-color: var(--grey-purple-700, #1A1A1A);
226
+ --issuer-placeholder-color: var(--grey-purple-700, #5e546d);;
227
+ --error-text-color: var(--color-error, #B00020);
228
+ }
229
+
230
+ :host([theme='dark']) {
231
+ display: inline-block;
232
+ position: relative;
233
+ z-index: 900;
234
+ --login-button-background: var(--lavender-900, #7c4cff);
235
+ --login-button-text: var(--color-header-text, #ffffff);
236
+ --popup-background: var(--color-background, #F8F9FB);
237
+ --popup-text: var(--color-text, #1A1A1A);
238
+ --popup-border: var(--color-border, #E5E7EB);
239
+ --popup-shadow: var(--box-shadow-sm, 0 1px 4px rgba(124,77,255,0.12));
240
+ --popup-overlay-background: rgba(0, 0, 0, 0.6);
241
+ --issuer-input-background: var(--color-background, #F8F9FB);
242
+ --issuer-input-text: var(--color-text, #1A1A1A);
243
+ --issuer-input-border: var(--color-text, #1A1A1A);
244
+ --issuer-button-background: var(--color-background, #F8F9FB);
245
+ --issuer-button-text: var(--color-text, #1A1A1A);
246
+ --issuer-button-border: var(--color-text, #1A1A1A);
247
+ --issuer-button-hover-background: var(--lavender-900, #7c4cff);
248
+ --issuer-label-color: var(--grey-purple-700, #1A1A1A);
249
+ --issuer-placeholder-color: var(--grey-purple-700, #5e546d);;
250
+ --error-text-color: var(--color-error, #B00020);
251
+ }
252
+
253
+ .login-button {
254
+ display: flex;
255
+ height: 35px;
256
+ padding: var(--spacing-xxs, 0.3125rem) var(--spacing-xs, 0.75rem);
257
+ align-items: center;
258
+ gap: var(--spacing-xxs, 0.3125rem);
259
+ border-radius: var(--border-radius-base, 0.3125rem);
260
+ background: var(--login-button-background);
261
+ border: none;
262
+ color: var(--login-button-text);
263
+ cursor: pointer;
264
+ font: inherit;
265
+ line-height: 1;
266
+ white-space: nowrap;
267
+ text-decoration: none;
268
+ box-sizing: border-box;
269
+ transition: transform 0.2s ease;
270
+ }
271
+
272
+ .login-button-icon {
273
+ width: 16px;
274
+ height: 16px;
275
+ display: inline-block;
276
+ object-fit: contain;
277
+ }
278
+
279
+ .login-button:active {
280
+ transform: translateY(1px);
281
+ }
282
+
283
+ .popup-dialog {
284
+ border: none;
285
+ padding: 0;
286
+ background: transparent;
287
+ outline: none;
288
+ overflow: visible;
289
+ max-height: none;
290
+ max-width: none;
291
+ }
292
+
293
+ .popup-dialog::backdrop {
294
+ background: var(--popup-overlay-background, rgba(0, 0, 0, 0.6));
295
+ }
296
+
297
+ .popup-box {
298
+ background: var(--popup-background);
299
+ color: var(--popup-text);
300
+ box-shadow: var(--popup-shadow);
301
+ border: 1px solid var(--popup-border);
302
+ border-radius: var(--border-radius-md, 0.5rem);
303
+ min-width: 480px;
304
+ z-index: 1001;
305
+ }
306
+
307
+ .popup-top-menu {
308
+ border-bottom: 1px solid #DDD;
309
+ display: flex;
310
+ flex-direction: row;
311
+ align-items: center;
312
+ justify-content: space-between;
313
+ padding-bottom: 8px;
314
+ margin-bottom: 8px;
315
+ padding: 1rem;
316
+ background: var(--gray-200, #E5E7EB);
317
+ }
318
+
319
+ .popup-title {
320
+ font-weight: 800;
321
+ }
322
+
323
+ .popup-close {
324
+ background: transparent;
325
+ border: none;
326
+ cursor: pointer;
327
+ font-size: 1.25rem;
328
+ line-height: 1;
329
+ padding: 0 0.25rem;
330
+ }
331
+
332
+ .issuer-text-section {
333
+ display: flex;
334
+ flex-direction: column;
335
+ padding: 1rem 1rem 1.75rem;
336
+ }
337
+
338
+ .issuer-text-label {
339
+ color: var(--issuer-label-color);
340
+ margin-bottom: 6px;
341
+ }
342
+
343
+ .issuer-text-row {
344
+ display: flex;
345
+ flex-direction: row;
346
+ gap: 6px;
347
+ align-items: flex-start;
348
+ }
349
+
350
+ .issuer-input-wrapper {
351
+ flex: 1;
352
+ display: flex;
353
+ flex-direction: column;
354
+ min-width: 0;
355
+ position: relative;
356
+ }
357
+
358
+ .issuer-input-field-row {
359
+ display: flex;
360
+ flex-direction: row;
361
+ position: relative;
362
+ }
363
+
364
+ .issuer-text-input {
365
+ flex: 1;
366
+ padding: 0.375rem 2.75rem 0.375rem 0.5rem;
367
+ border: 1px solid var(--issuer-input-border);
368
+ border-radius: var(--border-radius-base, 0.3125rem);
369
+ background: var(--issuer-input-background);
370
+ color: var(--issuer-input-text);
371
+ font: inherit;
372
+ min-width: 0;
373
+ }
374
+
375
+ .issuer-text-input::placeholder {
376
+ color: var(--issuer-placeholder-color);
377
+ }
378
+
379
+ .issuer-dropdown-toggle {
380
+ position: absolute;
381
+ right: 6px;
382
+ top: 50%;
383
+ transform: translateY(-50%);
384
+ width: 26px;
385
+ height: 26px;
386
+ padding: 0;
387
+ border: none;
388
+ background: transparent;
389
+ cursor: pointer;
390
+ display: flex;
391
+ align-items: center;
392
+ justify-content: center;
393
+ flex-shrink: 0;
394
+ border-radius: var(--border-radius-base, 0.3125rem);
395
+ }
396
+
397
+ .issuer-dropdown-toggle:hover {
398
+ background: var(--color-header-menu-item-hover, #e6dcff);
399
+ }
400
+
401
+ .issuer-dropdown-toggle svg {
402
+ width: 14px;
403
+ height: 14px;
404
+ display: block;
405
+ }
406
+
407
+ .issuer-dropdown-list {
408
+ position: absolute;
409
+ top: calc(100% + 6px);
410
+ left: 0;
411
+ right: 0;
412
+ border: 1px solid var(--color-border, #E5E7EB);
413
+ border-top: none;
414
+ border-radius: 0 0 var(--border-radius-base, 0.3125rem) var(--border-radius-base, 0.3125rem);
415
+ background: var(--issuer-input-background);
416
+ overflow: visible;
417
+ z-index: 10;
418
+ box-shadow: 0 4px 12px rgba(124, 77, 255, 0.12);
419
+ }
420
+
421
+ .issuer-dropdown-item {
422
+ display: block;
423
+ width: 100%;
424
+ padding: 0.625rem 0.75rem;
425
+ border: none;
426
+ border-bottom: 1px solid var(--color-border, #E5E7EB);
427
+ background: transparent;
428
+ color: var(--issuer-button-text);
429
+ cursor: pointer;
430
+ font: inherit;
431
+ text-align: left;
432
+ box-sizing: border-box;
433
+ }
434
+
435
+ .issuer-dropdown-item:last-child {
436
+ border-bottom: none;
437
+ }
438
+
439
+ .issuer-dropdown-item:hover {
440
+ background: var(--color-header-menu-item-hover, #e6dcff);
441
+ border-radius: var(--border-radius-base-md, 0.5rem);
442
+ }
443
+
444
+ .popup-footer {
445
+ display: flex;
446
+ flex-direction: row;
447
+ justify-content: center;
448
+ gap: 8px;
449
+ padding: 0.75rem 1rem 1rem;
450
+ }
451
+
452
+ .popup-footer-hr {
453
+ margin: 0;
454
+ border: none;
455
+ border-top: 1px solid var(--popup-border, #E5E7EB);
456
+ }
457
+
458
+ .popup-cancel-button {
459
+ padding: 0.5rem 1.25rem;
460
+ border: 1px solid #C0BFC7;
461
+ border-radius: var(--border-radius-base, 0.3125rem);
462
+ background: var(--popup-background);
463
+ color: #314158;
464
+ cursor: pointer;
465
+ font: inherit;
466
+ }
467
+
468
+ .popup-cancel-button:hover {
469
+ background: #D1D5DB;
470
+ }
471
+
472
+ .popup-login-button {
473
+ padding: 0.5rem 1.25rem;
474
+ border: none;
475
+ border-radius: var(--border-radius-base, 0.3125rem);
476
+ background: var(--lavender-900, #7c4cff);
477
+ color: #ffffff;
478
+ cursor: pointer;
479
+ font: inherit;
480
+ }
481
+
482
+ .popup-login-button:hover {
483
+ background: #6a3de8;
484
+ }
485
+
486
+ .popup-login-button:disabled {
487
+ opacity: 0.5;
488
+ cursor: not-allowed;
489
+ }
490
+
491
+ .error-msg {
492
+ color: var(--error-text-color);
493
+ font-size: 0.875rem;
494
+ margin-top: 8px;
495
+ }
496
+ `;
497
+ //# sourceMappingURL=LoginButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginButton.js","sourceRoot":"","sources":["../../../../src/v2/components/loginButton/LoginButton.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import './index';
2
+ //# sourceMappingURL=LoginButton.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginButton.test.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/loginButton/LoginButton.test.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,CAAA"}
@@ -0,0 +1,53 @@
1
+ import { LoginButton } from './LoginButton';
2
+ import './index';
3
+ jest.mock('solid-logic', () => ({
4
+ authSession: { login: jest.fn() },
5
+ authn: { saveUser: jest.fn() },
6
+ getSuggestedIssuers: jest.fn(() => []),
7
+ offlineTestID: jest.fn(() => false),
8
+ solidLogicSingleton: { store: { updater: { flagAuthorizationMetadata: jest.fn() } } }
9
+ }));
10
+ describe('SolidUILoginButton', () => {
11
+ beforeEach(() => {
12
+ document.body.innerHTML = '';
13
+ Object.defineProperty(window, 'open', {
14
+ configurable: true,
15
+ writable: true,
16
+ value: jest.fn()
17
+ });
18
+ HTMLDialogElement.prototype.showModal = jest.fn();
19
+ HTMLDialogElement.prototype.close = jest.fn();
20
+ localStorage.clear();
21
+ });
22
+ it('is defined as a custom element', () => {
23
+ expect(customElements.get('solid-ui-login-button')).toBe(LoginButton);
24
+ });
25
+ it('renders the login button and opens a popup with an associated label and input', async () => {
26
+ var _a, _b, _c, _d;
27
+ const loginButton = new LoginButton();
28
+ document.body.appendChild(loginButton);
29
+ await loginButton.updateComplete;
30
+ const button = (_a = loginButton.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('button.login-button');
31
+ expect(button).not.toBeNull();
32
+ expect((_b = button.textContent) === null || _b === void 0 ? void 0 : _b.trim()).toBe('Log In');
33
+ button.click();
34
+ await loginButton.updateComplete;
35
+ const label = (_c = loginButton.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('label.issuer-text-label');
36
+ const input = (_d = loginButton.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('input.issuer-text-input');
37
+ expect(label).not.toBeNull();
38
+ expect(input).not.toBeNull();
39
+ expect(label === null || label === void 0 ? void 0 : label.getAttribute('for')).toBe(input === null || input === void 0 ? void 0 : input.id);
40
+ expect(input === null || input === void 0 ? void 0 : input.id).toBeTruthy();
41
+ });
42
+ it('renders an icon when the icon property is set', async () => {
43
+ var _a;
44
+ const loginButton = new LoginButton();
45
+ loginButton.icon = 'https://example.com/login-icon.svg';
46
+ document.body.appendChild(loginButton);
47
+ await loginButton.updateComplete;
48
+ const icon = (_a = loginButton.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('img.login-button-icon');
49
+ expect(icon).not.toBeNull();
50
+ expect(icon.src).toContain('https://example.com/login-icon.svg');
51
+ });
52
+ });
53
+ //# sourceMappingURL=LoginButton.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginButton.test.js","sourceRoot":"","sources":["../../../../src/v2/components/loginButton/LoginButton.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const phoneIcon: import("lit-html").TemplateResult<1>;
2
+ //# sourceMappingURL=downArrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downArrow.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/loginButton/downArrow.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,sCAOrB,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { html } from 'lit-html';
2
+ export const phoneIcon = html `
3
+ <svg xmlns="http://www.w3.org/2000/svg"
4
+ viewBox="0 0 12 7"
5
+ fill="none"
6
+ >
7
+ <path d="M0.679688 0.678955L5.50729 5.50656L10.3349 0.678955" stroke="#6A7282" stroke-width="1.35776" stroke-linecap="round" stroke-linejoin="round"/>
8
+ </svg>
9
+ `;
10
+ //# sourceMappingURL=downArrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downArrow.js","sourceRoot":"","sources":["../../../../src/v2/components/loginButton/downArrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAE/B,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAA;;;;;;;CAO5B,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { LoginButton } from './LoginButton';
2
+ export { LoginButton };
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/loginButton/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { LoginButton } from './LoginButton';
2
+ export { LoginButton };
3
+ const LOGIN_BUTTON_TAG_NAME = 'solid-ui-login-button';
4
+ if (!customElements.get(LOGIN_BUTTON_TAG_NAME)) {
5
+ customElements.define(LOGIN_BUTTON_TAG_NAME, LoginButton);
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v2/components/loginButton/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AAErD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAC/C,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAA;AAC3D,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class SignupButton extends LitElement {
3
+ static properties: {
4
+ label: {
5
+ type: StringConstructor;
6
+ reflect: boolean;
7
+ };
8
+ theme: {
9
+ type: StringConstructor;
10
+ reflect: boolean;
11
+ };
12
+ signupUrl: {
13
+ type: StringConstructor;
14
+ attribute: string;
15
+ reflect: boolean;
16
+ };
17
+ icon: {
18
+ type: StringConstructor;
19
+ reflect: boolean;
20
+ };
21
+ layout: {
22
+ type: StringConstructor;
23
+ reflect: boolean;
24
+ };
25
+ };
26
+ static styles: import("lit").CSSResult;
27
+ label: string;
28
+ theme: 'light' | 'dark';
29
+ signupUrl: string;
30
+ icon: string;
31
+ layout: 'desktop' | 'mobile';
32
+ constructor();
33
+ private _handleClick;
34
+ render(): import("lit-html").TemplateResult<1>;
35
+ }
36
+ //# sourceMappingURL=SignupButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignupButton.d.ts","sourceRoot":"","sources":["../../../../src/v2/components/signupButton/SignupButton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAA;AAI3C,qBAAa,YAAa,SAAQ,UAAU;IAC1C,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;MAMhB;IAED,MAAM,CAAC,MAAM,0BA+CZ;IAEO,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,GAAG,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAA;;IAWpC,OAAO,CAAC,YAAY;IAIpB,MAAM;CAaP"}