omnira-ui 0.5.0 → 0.6.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 (28) hide show
  1. package/components/ui/AuthPage/AuthPage.module.css +554 -0
  2. package/components/ui/AuthPage/AuthPage.tsx +376 -0
  3. package/components/ui/AuthPage/index.ts +2 -0
  4. package/components/ui/LoginCardSeparated/LoginCardSeparated.module.css +341 -0
  5. package/components/ui/LoginCardSeparated/LoginCardSeparated.tsx +293 -0
  6. package/components/ui/LoginCardSeparated/index.ts +2 -0
  7. package/components/ui/LoginSimple/LoginSimple.module.css +342 -0
  8. package/components/ui/LoginSimple/LoginSimple.tsx +213 -0
  9. package/components/ui/LoginSimple/index.ts +2 -0
  10. package/components/ui/LoginSplitImage/LoginSplitImage.module.css +395 -0
  11. package/components/ui/LoginSplitImage/LoginSplitImage.tsx +199 -0
  12. package/components/ui/LoginSplitImage/index.ts +2 -0
  13. package/components/ui/LoginSplitQuote/LoginSplitQuote.module.css +416 -0
  14. package/components/ui/LoginSplitQuote/LoginSplitQuote.tsx +224 -0
  15. package/components/ui/LoginSplitQuote/index.ts +2 -0
  16. package/components/ui/SignUpCardSeparated/SignUpCardSeparated.module.css +342 -0
  17. package/components/ui/SignUpCardSeparated/SignUpCardSeparated.tsx +214 -0
  18. package/components/ui/SignUpCardSeparated/index.ts +2 -0
  19. package/components/ui/SignUpSimple/SignUpSimple.module.css +330 -0
  20. package/components/ui/SignUpSimple/SignUpSimple.tsx +225 -0
  21. package/components/ui/SignUpSimple/index.ts +2 -0
  22. package/components/ui/SignUpSplitImage/SignUpSplitImage.module.css +399 -0
  23. package/components/ui/SignUpSplitImage/SignUpSplitImage.tsx +235 -0
  24. package/components/ui/SignUpSplitImage/index.ts +2 -0
  25. package/components/ui/SignUpSplitQuote/SignUpSplitQuote.module.css +430 -0
  26. package/components/ui/SignUpSplitQuote/SignUpSplitQuote.tsx +260 -0
  27. package/components/ui/SignUpSplitQuote/index.ts +2 -0
  28. package/package.json +1 -1
@@ -0,0 +1,554 @@
1
+ /* ============================================
2
+ AuthPage — Toggle-Based Login/SignUp
3
+ ============================================ */
4
+
5
+ /* ── Outer Wrapper ── */
6
+
7
+ .wrapper {
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ height: 100%;
12
+ width: 100%;
13
+ min-height: 100vh;
14
+ background: var(--color-bg-primary, #0a0a0a);
15
+ font-family: var(--font-body);
16
+ }
17
+
18
+ /* ── Track Container ── */
19
+
20
+ .track {
21
+ position: relative;
22
+ width: 100%;
23
+ height: 100%;
24
+ overflow: hidden;
25
+ background: var(--color-bg-primary, #0a0a0a);
26
+ border-radius: var(--radius-2xl);
27
+ border: 1px solid rgba(255, 255, 255, 0.08);
28
+ padding: 8px;
29
+ display: flex;
30
+ }
31
+
32
+ /* ══════════════════════════════════════════════
33
+ Form Panels (shared)
34
+ ══════════════════════════════════════════════ */
35
+
36
+ .formPanel {
37
+ position: absolute;
38
+ top: 0;
39
+ width: 50%;
40
+ height: 100%;
41
+ display: flex;
42
+ align-items: flex-end;
43
+ justify-content: center;
44
+ padding: 40px 48px;
45
+ padding-bottom: 15%;
46
+ transition: opacity 0.4s ease 0.15s;
47
+ }
48
+
49
+ .formPanelLeft {
50
+ left: 0;
51
+ }
52
+
53
+ .formPanelRight {
54
+ right: 0;
55
+ }
56
+
57
+ .formVisible {
58
+ opacity: 1;
59
+ pointer-events: auto;
60
+ z-index: 5;
61
+ }
62
+
63
+ .formHidden {
64
+ opacity: 0;
65
+ pointer-events: none;
66
+ z-index: 1;
67
+ }
68
+
69
+ .formInner {
70
+ max-width: 380px;
71
+ width: 100%;
72
+ display: flex;
73
+ flex-direction: column;
74
+ gap: 16px;
75
+ }
76
+
77
+ /* ── Heading ── */
78
+
79
+ .formHeading {
80
+ font-size: 28px;
81
+ font-weight: 700;
82
+ color: var(--color-text-primary, #fff);
83
+ margin: 0 0 4px 0;
84
+ }
85
+
86
+ /* ── Social Buttons Row ── */
87
+
88
+ .socialRow {
89
+ display: flex;
90
+ gap: 10px;
91
+ }
92
+
93
+ .socialBtn {
94
+ flex: 1;
95
+ height: 44px;
96
+ border-radius: var(--radius-md);
97
+ background: var(--color-bg-input);
98
+ border: 1px solid var(--color-border-standard);
99
+ display: flex;
100
+ align-items: center;
101
+ justify-content: center;
102
+ cursor: pointer;
103
+ transition: all 0.15s;
104
+ color: var(--color-text-secondary, rgba(255, 255, 255, 0.6));
105
+ }
106
+
107
+ .socialBtn:hover {
108
+ background: var(--color-bg-elevated);
109
+ border-color: var(--color-border-medium);
110
+ }
111
+
112
+ .socialBtn svg {
113
+ width: 18px;
114
+ height: 18px;
115
+ }
116
+
117
+ /* ── Divider ── */
118
+
119
+ .divider {
120
+ font-size: 12px;
121
+ color: var(--color-text-tertiary, rgba(255, 255, 255, 0.4));
122
+ text-align: center;
123
+ margin: 4px 0;
124
+ }
125
+
126
+ /* ── Error Banner ── */
127
+
128
+ .errorBanner {
129
+ background: var(--color-error-bg);
130
+ border: 1px solid var(--color-error-border);
131
+ border-radius: var(--radius-md);
132
+ padding: 10px 14px;
133
+ font-size: 12px;
134
+ color: var(--color-error, #EF4444);
135
+ line-height: 1.5;
136
+ }
137
+
138
+ /* ── Input Group ── */
139
+
140
+ .inputGroup {
141
+ position: relative;
142
+ display: flex;
143
+ align-items: center;
144
+ }
145
+
146
+ .inputIcon {
147
+ position: absolute;
148
+ left: 14px;
149
+ display: flex;
150
+ align-items: center;
151
+ justify-content: center;
152
+ color: var(--color-text-tertiary, rgba(255, 255, 255, 0.4));
153
+ pointer-events: none;
154
+ z-index: 1;
155
+ }
156
+
157
+ .input {
158
+ width: 100%;
159
+ height: 44px;
160
+ border-radius: var(--radius-md);
161
+ background: var(--color-bg-input);
162
+ border: 1px solid var(--color-border-standard);
163
+ color: var(--color-text-primary);
164
+ font-family: var(--font-body);
165
+ font-size: 14px;
166
+ padding: 0 14px 0 42px;
167
+ outline: none;
168
+ transition: all 0.15s;
169
+ }
170
+
171
+ .input::placeholder {
172
+ color: var(--color-text-tertiary, rgba(255, 255, 255, 0.4));
173
+ }
174
+
175
+ .input:focus {
176
+ border-color: var(--color-border-lime-strong);
177
+ background: var(--color-bg-elevated);
178
+ }
179
+
180
+ .inputTrailing {
181
+ padding-right: 42px;
182
+ }
183
+
184
+ .eyeBtn {
185
+ position: absolute;
186
+ right: 10px;
187
+ display: flex;
188
+ align-items: center;
189
+ justify-content: center;
190
+ width: 28px;
191
+ height: 28px;
192
+ border-radius: var(--radius-md);
193
+ border: none;
194
+ background: transparent;
195
+ color: var(--color-text-tertiary, rgba(255, 255, 255, 0.4));
196
+ cursor: pointer;
197
+ transition: all 0.15s;
198
+ z-index: 1;
199
+ }
200
+
201
+ .eyeBtn:hover {
202
+ color: var(--color-text-secondary, rgba(255, 255, 255, 0.6));
203
+ background: var(--color-bg-hover);
204
+ }
205
+
206
+ /* ── Forgot Password ── */
207
+
208
+ .forgotLink {
209
+ font-size: 12px;
210
+ color: var(--color-text-tertiary, rgba(255, 255, 255, 0.4));
211
+ text-align: right;
212
+ text-decoration: none;
213
+ cursor: pointer;
214
+ transition: color 0.15s;
215
+ background: none;
216
+ border: none;
217
+ font-family: var(--font-body);
218
+ padding: 0;
219
+ margin-top: -8px;
220
+ }
221
+
222
+ .forgotLink:hover {
223
+ color: var(--color-lime, #A3E635);
224
+ }
225
+
226
+ /* ── Submit Button ── */
227
+
228
+ .submitBtn {
229
+ width: 100%;
230
+ height: 48px;
231
+ border-radius: var(--radius-md);
232
+ background: var(--color-lime);
233
+ border: none;
234
+ color: var(--color-lime-text);
235
+ font-family: var(--font-body);
236
+ font-size: 15px;
237
+ font-weight: 700;
238
+ cursor: pointer;
239
+ display: flex;
240
+ align-items: center;
241
+ justify-content: center;
242
+ gap: 8px;
243
+ transition: all 0.2s;
244
+ margin-top: 4px;
245
+ }
246
+
247
+ .submitBtn:hover {
248
+ background: var(--color-lime-hover);
249
+ box-shadow: var(--shadow-btn-primary);
250
+ }
251
+
252
+ .submitBtn:disabled {
253
+ opacity: 0.6;
254
+ cursor: not-allowed;
255
+ box-shadow: none;
256
+ }
257
+
258
+ .spinner {
259
+ width: 18px;
260
+ height: 18px;
261
+ border: 2px solid rgba(0, 0, 0, 0.15);
262
+ border-top-color: #111;
263
+ border-radius: 50%;
264
+ animation: authSpin 0.6s linear infinite;
265
+ }
266
+
267
+ @keyframes authSpin {
268
+ to { transform: rotate(360deg); }
269
+ }
270
+
271
+ /* ══════════════════════════════════════════════
272
+ Sliding Overlay Panel
273
+ ══════════════════════════════════════════════ */
274
+
275
+ .overlay {
276
+ position: absolute;
277
+ top: 8px;
278
+ bottom: 8px;
279
+ width: calc(50% - 8px);
280
+ border-radius: var(--radius-xl);
281
+ z-index: 10;
282
+ overflow: hidden;
283
+ display: flex;
284
+ flex-direction: column;
285
+ align-items: center;
286
+ justify-content: flex-end;
287
+ padding: 40px 48px;
288
+ padding-bottom: 15%;
289
+ text-align: center;
290
+ transition: left 0.6s cubic-bezier(0.65, 0, 0.35, 1);
291
+ background: linear-gradient(135deg, var(--color-lime, #A3E635) 0%, #6B9A00 50%, #3d5c00 100%);
292
+ }
293
+
294
+ .overlayLeft {
295
+ left: 8px;
296
+ }
297
+
298
+ .overlayRight {
299
+ left: calc(50%);
300
+ }
301
+
302
+ /* ── Decorative Circles ── */
303
+
304
+ .circle1 {
305
+ position: absolute;
306
+ top: -80px;
307
+ right: -80px;
308
+ width: 280px;
309
+ height: 280px;
310
+ border-radius: 50%;
311
+ background: rgba(255, 255, 255, 0.06);
312
+ pointer-events: none;
313
+ }
314
+
315
+ .circle2 {
316
+ position: absolute;
317
+ bottom: -60px;
318
+ left: -60px;
319
+ width: 220px;
320
+ height: 220px;
321
+ border-radius: 50%;
322
+ background: rgba(255, 255, 255, 0.04);
323
+ pointer-events: none;
324
+ }
325
+
326
+ .circle3 {
327
+ position: absolute;
328
+ top: 40%;
329
+ left: -30px;
330
+ width: 120px;
331
+ height: 120px;
332
+ border-radius: 50%;
333
+ background: rgba(255, 255, 255, 0.03);
334
+ pointer-events: none;
335
+ }
336
+
337
+ /* ── Overlay Content ── */
338
+
339
+ .overlayLogo {
340
+ width: 56px;
341
+ height: 56px;
342
+ border-radius: var(--radius-md);
343
+ background: rgba(0, 0, 0, 0.15);
344
+ backdrop-filter: blur(10px);
345
+ -webkit-backdrop-filter: blur(10px);
346
+ border: 1px solid rgba(255, 255, 255, 0.1);
347
+ display: flex;
348
+ align-items: center;
349
+ justify-content: center;
350
+ margin-bottom: 28px;
351
+ color: #fff;
352
+ font-size: 26px;
353
+ font-weight: 800;
354
+ }
355
+
356
+ .overlayHeading {
357
+ font-size: 30px;
358
+ font-weight: 700;
359
+ color: #111;
360
+ line-height: 1.2;
361
+ margin: 0 0 12px 0;
362
+ }
363
+
364
+ .overlaySubtext {
365
+ font-size: 15px;
366
+ color: rgba(0, 0, 0, 0.55);
367
+ line-height: 1.7;
368
+ max-width: 300px;
369
+ margin: 0 0 28px 0;
370
+ }
371
+
372
+ .overlayCta {
373
+ padding: 14px 48px;
374
+ border-radius: var(--radius-md);
375
+ background: transparent;
376
+ border: 2px solid rgba(0, 0, 0, 0.25);
377
+ color: #111;
378
+ font-family: var(--font-body);
379
+ font-size: 13px;
380
+ font-weight: 700;
381
+ letter-spacing: 1.5px;
382
+ text-transform: uppercase;
383
+ cursor: pointer;
384
+ transition: all 0.15s;
385
+ }
386
+
387
+ .overlayCta:hover {
388
+ background: rgba(0, 0, 0, 0.1);
389
+ border-color: rgba(0, 0, 0, 0.4);
390
+ }
391
+
392
+ /* ══════════════════════════════════════════════
393
+ Success Card
394
+ ══════════════════════════════════════════════ */
395
+
396
+ .successOverlay {
397
+ position: fixed;
398
+ inset: 0;
399
+ display: flex;
400
+ align-items: center;
401
+ justify-content: center;
402
+ background: var(--color-bg-primary, #0a0a0a);
403
+ z-index: 50;
404
+ }
405
+
406
+ .successCard {
407
+ max-width: 460px;
408
+ width: 100%;
409
+ border-radius: var(--radius-xl);
410
+ background: var(--color-bg-secondary, #141414);
411
+ border: 1px solid rgba(255, 255, 255, 0.08);
412
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
413
+ padding: 48px 36px;
414
+ text-align: center;
415
+ display: flex;
416
+ flex-direction: column;
417
+ align-items: center;
418
+ gap: 16px;
419
+ }
420
+
421
+ .successIcon {
422
+ width: 56px;
423
+ height: 56px;
424
+ border-radius: var(--radius-md);
425
+ background: rgba(34, 197, 94, 0.1);
426
+ display: flex;
427
+ align-items: center;
428
+ justify-content: center;
429
+ color: #22C55E;
430
+ margin-bottom: 4px;
431
+ }
432
+
433
+ .successHeading {
434
+ font-size: 22px;
435
+ font-weight: 700;
436
+ color: var(--color-text-primary, #fff);
437
+ margin: 0;
438
+ }
439
+
440
+ .successBody {
441
+ font-size: 14px;
442
+ color: var(--color-text-secondary, rgba(255, 255, 255, 0.6));
443
+ line-height: 1.6;
444
+ margin: 0;
445
+ }
446
+
447
+ .successBody strong {
448
+ color: var(--color-text-primary, #fff);
449
+ }
450
+
451
+ .successPrimary {
452
+ width: 100%;
453
+ height: 48px;
454
+ border-radius: var(--radius-md);
455
+ background: var(--color-lime);
456
+ border: none;
457
+ color: var(--color-lime-text);
458
+ font-family: var(--font-body);
459
+ font-size: 15px;
460
+ font-weight: 700;
461
+ cursor: pointer;
462
+ transition: all 0.2s;
463
+ margin-top: 8px;
464
+ }
465
+
466
+ .successPrimary:hover {
467
+ background: var(--color-lime-hover);
468
+ box-shadow: var(--shadow-btn-primary);
469
+ }
470
+
471
+ .successGhost {
472
+ width: 100%;
473
+ height: 44px;
474
+ border-radius: var(--radius-md);
475
+ background: transparent;
476
+ border: 1px solid var(--color-border-standard);
477
+ color: var(--color-text-secondary, rgba(255, 255, 255, 0.6));
478
+ font-family: var(--font-body);
479
+ font-size: 14px;
480
+ font-weight: 500;
481
+ cursor: pointer;
482
+ transition: all 0.15s;
483
+ }
484
+
485
+ .successGhost:hover {
486
+ background: var(--color-bg-hover);
487
+ border-color: var(--color-border-medium);
488
+ }
489
+
490
+ /* ══════════════════════════════════════════════
491
+ Responsive
492
+ ══════════════════════════════════════════════ */
493
+
494
+ @media (max-width: 860px) {
495
+ .track {
496
+ flex-direction: column;
497
+ padding: 0;
498
+ border-radius: 0;
499
+ border: none;
500
+ }
501
+
502
+ .formPanel {
503
+ position: relative;
504
+ width: 100%;
505
+ height: auto;
506
+ min-height: 100vh;
507
+ padding: 40px 24px;
508
+ padding-bottom: 40px;
509
+ align-items: center;
510
+ }
511
+
512
+ .formPanelRight {
513
+ right: auto;
514
+ }
515
+
516
+ .overlay {
517
+ display: none;
518
+ }
519
+
520
+ .formHidden {
521
+ display: none;
522
+ }
523
+
524
+ .formVisible {
525
+ opacity: 1;
526
+ pointer-events: auto;
527
+ }
528
+
529
+ .mobileToggle {
530
+ display: flex;
531
+ }
532
+ }
533
+
534
+ .mobileToggle {
535
+ display: none;
536
+ align-items: center;
537
+ justify-content: center;
538
+ gap: 4px;
539
+ font-size: 13px;
540
+ color: var(--color-text-tertiary, rgba(255, 255, 255, 0.4));
541
+ margin-top: 8px;
542
+ }
543
+
544
+ .mobileToggleBtn {
545
+ background: none;
546
+ border: none;
547
+ color: var(--color-lime, #A3E635);
548
+ font-family: var(--font-body);
549
+ font-size: 13px;
550
+ font-weight: 600;
551
+ cursor: pointer;
552
+ padding: 0;
553
+ text-decoration: underline;
554
+ }