@pelican-identity/vanilla 1.0.4

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.
@@ -0,0 +1,297 @@
1
+ @keyframes fadeUp {
2
+ from {
3
+ opacity: 0;
4
+ transform: translateY(20px);
5
+ }
6
+ to {
7
+ opacity: 1;
8
+ transform: translateY(0);
9
+ }
10
+ }
11
+
12
+ @keyframes spin {
13
+ to {
14
+ transform: rotate(360deg);
15
+ }
16
+ }
17
+
18
+ @keyframes successPulse {
19
+ 0%,
20
+ 100% {
21
+ transform: scale(1);
22
+ opacity: 1;
23
+ }
24
+ 50% {
25
+ transform: scale(1.05);
26
+ opacity: 0.9;
27
+ }
28
+ }
29
+
30
+ .auth-container {
31
+ width: 300px;
32
+ max-width: fit-content;
33
+ padding: 1rem;
34
+ margin-top: 0.3rem;
35
+ position: relative;
36
+ animation: fadeUp 0.5s ease-out;
37
+ background-color: rgb(253, 253, 253);
38
+ border-radius: 2.5rem;
39
+ display: flex;
40
+ flex-direction: column;
41
+ justify-content: space-between;
42
+ align-items: center;
43
+ gap: 1rem;
44
+ height: 400px;
45
+ }
46
+
47
+ .close-button {
48
+ background: none;
49
+ border: none;
50
+ cursor: pointer;
51
+ transition: opacity 0.2s;
52
+ }
53
+
54
+ .close-button:hover {
55
+ opacity: 0.6;
56
+ }
57
+
58
+ .close-icon {
59
+ width: 1.5rem;
60
+ height: 1.5rem;
61
+ fill: #000000;
62
+ }
63
+
64
+ .retry-container {
65
+ text-align: center;
66
+ padding: 3rem 0;
67
+ }
68
+
69
+ .retry-container > div:first-child {
70
+ margin-bottom: 1rem;
71
+ }
72
+
73
+ .retry-text {
74
+ font-size: 1.125rem;
75
+ font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
76
+ }
77
+
78
+ .content-wrapper {
79
+ display: flex;
80
+ flex-direction: column;
81
+ justify-content: center;
82
+ align-items: center;
83
+ gap: 2rem;
84
+ }
85
+
86
+ .unpaired-container {
87
+ text-align: center;
88
+ display: flex;
89
+ flex-direction: column;
90
+ }
91
+
92
+ .main-heading {
93
+ font-size: 0.75rem;
94
+ font-weight: 700;
95
+ color: #121212;
96
+ font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
97
+ }
98
+
99
+ @media (min-width: 768px) {
100
+ .main-heading {
101
+ font-size: 1rem;
102
+ font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
103
+ }
104
+ }
105
+
106
+ @media (min-width: 1024px) {
107
+ .main-heading {
108
+ font-size: 1rem;
109
+ font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
110
+ }
111
+ }
112
+
113
+ .mobile-auth-container {
114
+ display: flex;
115
+ flex-direction: column;
116
+ gap: 1rem;
117
+ width: 300px;
118
+ }
119
+
120
+ .logo-container {
121
+ display: flex;
122
+ justify-content: center;
123
+ padding: 2rem 0;
124
+ }
125
+
126
+ .open-app-link {
127
+ display: inline-block;
128
+ padding: 0.75rem 2rem;
129
+ background-color: #000000;
130
+ width: fit-content;
131
+ align-self: center;
132
+
133
+ border-radius: 18px;
134
+ color: #d9eb1b;
135
+ font-weight: 600;
136
+ font-size: 1rem;
137
+ text-decoration: none;
138
+ transition: background-color 0.2s;
139
+ font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
140
+ }
141
+
142
+ .open-app-link:hover {
143
+ background-color: rgba(217, 235, 27, 0.9);
144
+ color: #000;
145
+ }
146
+
147
+ .helper-text {
148
+ font-size: 0.75rem;
149
+ color: #6b7280;
150
+ font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
151
+ }
152
+
153
+ .qr-container {
154
+ display: flex;
155
+ justify-content: center;
156
+ }
157
+
158
+ .qr-wrapper {
159
+ display: flex;
160
+ justify-content: center;
161
+ align-items: center;
162
+ overflow: hidden;
163
+ border-radius: 2rem;
164
+ border: 1px solid #d9eb1b;
165
+ background-color: #fffff5;
166
+ padding: 0.2rem;
167
+ height: 244px;
168
+ width: 244px;
169
+ }
170
+
171
+ .error-text {
172
+ font-weight: 500;
173
+ color: red;
174
+ font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
175
+ }
176
+
177
+ .qr-image {
178
+ height: 100%;
179
+ width: 100%;
180
+ }
181
+
182
+ .loader-container {
183
+ display: flex;
184
+ justify-content: center;
185
+ }
186
+
187
+ .instruction-text {
188
+ font-size: 0.875rem;
189
+ color: #9ca3af;
190
+ font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
191
+ }
192
+
193
+ .paired-container {
194
+ text-align: center;
195
+ display: flex;
196
+ flex-direction: column;
197
+ gap: 1rem;
198
+ max-width: 250px;
199
+ }
200
+
201
+ .paired-heading {
202
+ font-size: 1rem;
203
+ font-weight: 800;
204
+ font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
205
+ }
206
+
207
+ @media (min-width: 768px) {
208
+ .paired-heading {
209
+ font-size: 1rem;
210
+ font-family: Onest, system-ui, Avenir, Helvetica, Arial, sans-serif;
211
+ }
212
+ }
213
+
214
+ .success-message {
215
+ background-color: #121212;
216
+ color: #d9eb1b;
217
+ padding: 0.5rem 1rem;
218
+ border-radius: 1.3rem;
219
+ font-weight: 700;
220
+ font-size: 1rem;
221
+ animation: successPulse 0.2s ease-in-out;
222
+ margin: 0.5rem 0;
223
+ font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
224
+ width: 300px;
225
+ max-width: fit-content;
226
+ }
227
+
228
+ .auto-renew-badge {
229
+ display: inline-block;
230
+ background-color: rgba(217, 235, 27, 0.2);
231
+ border: 1px solid #d9eb1b;
232
+ color: #d9eb1b;
233
+ padding: 0.25rem 0.75rem;
234
+ border-radius: 9999px;
235
+ font-size: 0.75rem;
236
+ font-weight: 600;
237
+ margin-top: 0.5rem;
238
+ }
239
+
240
+ .loader {
241
+ width: 48px;
242
+ height: 48px;
243
+ position: relative;
244
+ }
245
+ .loader::before,
246
+ .loader::after {
247
+ content: "";
248
+ position: absolute;
249
+ left: 50%;
250
+ top: 50%;
251
+ transform: translate(-50%, -50%);
252
+ width: 48em;
253
+ height: 48em;
254
+ background-image: radial-gradient(circle 10px, #d9eb1b 100%, transparent 0),
255
+ radial-gradient(circle 10px, #d9eb1b 100%, transparent 0),
256
+ radial-gradient(circle 10px, #d9eb1b 100%, transparent 0),
257
+ radial-gradient(circle 10px, #d9eb1b 100%, transparent 0),
258
+ radial-gradient(circle 10px, #d9eb1b 100%, transparent 0),
259
+ radial-gradient(circle 10px, #d9eb1b 100%, transparent 0),
260
+ radial-gradient(circle 10px, #d9eb1b 100%, transparent 0),
261
+ radial-gradient(circle 10px, #d9eb1b 100%, transparent 0);
262
+ background-position: 0em -18em, 0em 18em, 18em 0em, -18em 0em, 13em -13em,
263
+ -13em -13em, 13em 13em, -13em 13em;
264
+ background-repeat: no-repeat;
265
+ font-size: 0.5px;
266
+ border-radius: 50%;
267
+ animation: blast 1s ease-in infinite;
268
+ }
269
+ .loader::after {
270
+ font-size: 1px;
271
+ background: #d9eb1b;
272
+ animation: bounce 1s ease-in infinite;
273
+ }
274
+
275
+ @keyframes bounce {
276
+ 0%,
277
+ 100% {
278
+ font-size: 0.75px;
279
+ }
280
+ 50% {
281
+ font-size: 1.5px;
282
+ }
283
+ }
284
+ @keyframes blast {
285
+ 0%,
286
+ 40% {
287
+ font-size: 0.5px;
288
+ }
289
+ 70% {
290
+ opacity: 1;
291
+ font-size: 4px;
292
+ }
293
+ 100% {
294
+ font-size: 6px;
295
+ opacity: 0;
296
+ }
297
+ }
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@pelican-identity/vanilla",
3
+ "version": "1.0.4",
4
+ "description": "JavaScript components for Pelican Identity authentication",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "unpkg": "./dist/index.min.js",
9
+ "jsdelivr": "./dist/index.min.js",
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/index.mjs",
13
+ "require": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md",
19
+ "package.json"
20
+ ],
21
+ "dependencies": {
22
+ "@pelican-identity/auth-core": "^1.2.7"
23
+ },
24
+ "devDependencies": {
25
+ "tsup": "^8.0.1",
26
+ "typescript": "^5.3.3"
27
+ },
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/Pelican-Identity/pelican-sdk.git",
31
+ "directory": "packages/vanilla"
32
+ },
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "scripts": {
37
+ "prebuild": "cp ../react/src/pelican.css ./src/pelican.css",
38
+ "build": "tsup",
39
+ "dev": "tsup --watch",
40
+ "typecheck": "tsc --noEmit"
41
+ }
42
+ }