@xeplr/ui-account 1.0.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 (42) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +17 -0
  3. package/src/AccessContext.jsx +125 -0
  4. package/src/AccessGuard.jsx +35 -0
  5. package/src/ProtectedRoute.jsx +55 -0
  6. package/src/ThemeContext.jsx +84 -0
  7. package/src/adminApi.js +68 -0
  8. package/src/api.js +196 -0
  9. package/src/designs/AccessMatrixSample.jsx +199 -0
  10. package/src/designs/ActivateSample.jsx +38 -0
  11. package/src/designs/ChangePasswordSample.jsx +31 -0
  12. package/src/designs/ForgotPasswordSample.jsx +22 -0
  13. package/src/designs/LoginSample.jsx +26 -0
  14. package/src/designs/MasterSettingsSample.jsx +206 -0
  15. package/src/designs/NotActivatedSample.jsx +17 -0
  16. package/src/designs/ProfileSample.jsx +36 -0
  17. package/src/designs/RegisterSample.jsx +34 -0
  18. package/src/designs/ResetPasswordSample.jsx +42 -0
  19. package/src/designs/TenantPickerSample.jsx +39 -0
  20. package/src/designs/TenantSample.jsx +182 -0
  21. package/src/designs/UserRolesMatrixSample.jsx +77 -0
  22. package/src/designs/admin.css +525 -0
  23. package/src/designs/auth.css +160 -0
  24. package/src/designs/index.js +13 -0
  25. package/src/designs/theme.css +231 -0
  26. package/src/index.js +41 -0
  27. package/src/masterApi.js +28 -0
  28. package/src/pages.jsx +92 -0
  29. package/src/token.js +38 -0
  30. package/src/useAccessMatrixController.js +244 -0
  31. package/src/useActivateController.js +37 -0
  32. package/src/useChangePasswordController.js +48 -0
  33. package/src/useForgotPasswordController.js +32 -0
  34. package/src/useLoginController.js +53 -0
  35. package/src/useMasterSettingsController.js +199 -0
  36. package/src/useProfileController.js +62 -0
  37. package/src/useRegisterController.js +41 -0
  38. package/src/useResetPasswordController.js +36 -0
  39. package/src/useTenantController.js +146 -0
  40. package/src/useTenantPickerController.js +97 -0
  41. package/src/useUserRolesController.js +81 -0
  42. package/src/validateDesign.js +101 -0
@@ -0,0 +1,525 @@
1
+ @import './theme.css';
2
+
3
+ /* ─── xeplr Admin Matrix ─── */
4
+
5
+ .xeplr-admin-container {
6
+ max-width: 1200px;
7
+ margin: 20px auto;
8
+ padding: 20px;
9
+ border: 1px solid var(--xeplr-border-primary);
10
+ border-radius: 8px;
11
+ background: var(--xeplr-bg-primary);
12
+ color: var(--xeplr-text-primary);
13
+ font-family: system-ui, -apple-system, sans-serif;
14
+ font-size: 14px;
15
+ }
16
+
17
+ .xeplr-admin-header {
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: space-between;
21
+ margin-bottom: 16px;
22
+ }
23
+
24
+ .xeplr-admin-header h2 {
25
+ margin: 0;
26
+ font-size: 20px;
27
+ }
28
+
29
+ /* ─── Toolbar ─── */
30
+
31
+ .xeplr-admin-toolbar {
32
+ display: flex;
33
+ gap: 10px;
34
+ align-items: center;
35
+ margin-bottom: 12px;
36
+ flex-wrap: wrap;
37
+ }
38
+
39
+ .xeplr-admin-search {
40
+ flex: 1;
41
+ min-width: 200px;
42
+ padding: 8px 12px;
43
+ border: 1px solid var(--xeplr-input-border);
44
+ border-radius: 4px;
45
+ background: var(--xeplr-input-bg);
46
+ color: var(--xeplr-input-text);
47
+ font-size: 14px;
48
+ }
49
+
50
+ .xeplr-admin-search:focus {
51
+ outline: none;
52
+ border-color: var(--xeplr-border-focus);
53
+ }
54
+
55
+ .xeplr-admin-search::placeholder {
56
+ color: var(--xeplr-input-placeholder);
57
+ }
58
+
59
+ .xeplr-admin-select {
60
+ padding: 8px 12px;
61
+ border: 1px solid var(--xeplr-input-border);
62
+ border-radius: 4px;
63
+ background: var(--xeplr-input-bg);
64
+ color: var(--xeplr-input-text);
65
+ font-size: 14px;
66
+ }
67
+
68
+ .xeplr-admin-select:focus {
69
+ outline: none;
70
+ border-color: var(--xeplr-border-focus);
71
+ }
72
+
73
+ .xeplr-admin-btn-secondary {
74
+ padding: 8px 16px;
75
+ border: 1px solid var(--xeplr-input-border);
76
+ border-radius: 4px;
77
+ background: var(--xeplr-bg-tertiary);
78
+ color: var(--xeplr-text-primary);
79
+ cursor: pointer;
80
+ font-size: 13px;
81
+ white-space: nowrap;
82
+ }
83
+
84
+ .xeplr-admin-btn-secondary:hover {
85
+ background: var(--xeplr-bg-hover);
86
+ border-color: var(--xeplr-text-muted);
87
+ }
88
+
89
+ /* ─── Tabs ─── */
90
+
91
+ .xeplr-admin-tabs {
92
+ display: flex;
93
+ gap: 0;
94
+ margin-bottom: 16px;
95
+ border-bottom: 2px solid var(--xeplr-border-primary);
96
+ }
97
+
98
+ .xeplr-admin-tab {
99
+ padding: 10px 20px;
100
+ border: none;
101
+ background: none;
102
+ color: var(--xeplr-text-muted);
103
+ cursor: pointer;
104
+ font-size: 14px;
105
+ font-weight: 500;
106
+ border-bottom: 2px solid transparent;
107
+ margin-bottom: -2px;
108
+ transition: color 0.15s, border-color 0.15s;
109
+ }
110
+
111
+ .xeplr-admin-tab:hover {
112
+ color: var(--xeplr-text-secondary);
113
+ }
114
+
115
+ .xeplr-admin-tab-active {
116
+ color: var(--xeplr-accent);
117
+ border-bottom-color: var(--xeplr-accent);
118
+ }
119
+
120
+ .xeplr-admin-tab-badge {
121
+ margin-left: 6px;
122
+ font-size: 11px;
123
+ background: var(--xeplr-badge-bg);
124
+ color: var(--xeplr-badge-text);
125
+ padding: 1px 7px;
126
+ border-radius: 10px;
127
+ }
128
+
129
+ /* ─── Sub-tabs (for uncategorized) ─── */
130
+
131
+ .xeplr-admin-subtabs {
132
+ display: flex;
133
+ gap: 6px;
134
+ margin-bottom: 12px;
135
+ }
136
+
137
+ .xeplr-admin-subtab {
138
+ padding: 6px 14px;
139
+ border: 1px solid var(--xeplr-border-primary);
140
+ border-radius: 4px;
141
+ background: var(--xeplr-bg-secondary);
142
+ color: var(--xeplr-text-muted);
143
+ cursor: pointer;
144
+ font-size: 13px;
145
+ transition: all 0.15s;
146
+ }
147
+
148
+ .xeplr-admin-subtab:hover {
149
+ color: var(--xeplr-text-secondary);
150
+ border-color: var(--xeplr-input-border);
151
+ }
152
+
153
+ .xeplr-admin-subtab-active {
154
+ background: var(--xeplr-bg-active);
155
+ color: var(--xeplr-accent);
156
+ border-color: var(--xeplr-accent);
157
+ }
158
+
159
+ .xeplr-admin-subtab-count {
160
+ margin-left: 5px;
161
+ font-size: 11px;
162
+ color: var(--xeplr-text-disabled);
163
+ }
164
+
165
+ /* ─── Matrix Table ─── */
166
+
167
+ .xeplr-admin-matrix-wrapper {
168
+ overflow-x: auto;
169
+ border: 1px solid var(--xeplr-border-primary);
170
+ border-radius: 6px;
171
+ }
172
+
173
+ .xeplr-admin-matrix {
174
+ width: 100%;
175
+ border-collapse: collapse;
176
+ white-space: nowrap;
177
+ }
178
+
179
+ .xeplr-admin-matrix thead {
180
+ position: sticky;
181
+ top: 0;
182
+ z-index: 2;
183
+ }
184
+
185
+ .xeplr-admin-matrix th {
186
+ padding: 10px 14px;
187
+ background: var(--xeplr-bg-secondary);
188
+ border-bottom: 2px solid var(--xeplr-border-primary);
189
+ text-align: center;
190
+ font-weight: 600;
191
+ font-size: 12px;
192
+ text-transform: uppercase;
193
+ letter-spacing: 0.5px;
194
+ color: var(--xeplr-text-secondary);
195
+ }
196
+
197
+ .xeplr-admin-matrix td {
198
+ padding: 8px 14px;
199
+ border-bottom: 1px solid var(--xeplr-border-secondary);
200
+ }
201
+
202
+ .xeplr-admin-matrix tbody tr:hover {
203
+ background: var(--xeplr-bg-hover);
204
+ }
205
+
206
+ .xeplr-admin-matrix tbody tr:last-child td {
207
+ border-bottom: none;
208
+ }
209
+
210
+ /* Sticky first column */
211
+ .xeplr-admin-sticky-col {
212
+ position: sticky;
213
+ left: 0;
214
+ z-index: 1;
215
+ background: var(--xeplr-bg-primary);
216
+ text-align: left !important;
217
+ min-width: 200px;
218
+ }
219
+
220
+ .xeplr-admin-matrix thead .xeplr-admin-sticky-col {
221
+ background: var(--xeplr-bg-secondary);
222
+ z-index: 3;
223
+ }
224
+
225
+ .xeplr-admin-matrix tbody tr:hover .xeplr-admin-sticky-col {
226
+ background: var(--xeplr-bg-hover);
227
+ }
228
+
229
+ .xeplr-admin-role-header {
230
+ min-width: 100px;
231
+ }
232
+
233
+ /* ─── Module View ─── */
234
+
235
+ .xeplr-admin-module-col {
236
+ min-width: 180px;
237
+ }
238
+
239
+ .xeplr-admin-action-col {
240
+ min-width: 120px;
241
+ text-align: left !important;
242
+ }
243
+
244
+ .xeplr-admin-module-name {
245
+ font-weight: 600;
246
+ font-size: 15px;
247
+ text-transform: capitalize;
248
+ vertical-align: top;
249
+ padding-top: 12px !important;
250
+ border-right: 1px solid var(--xeplr-border-secondary);
251
+ }
252
+
253
+ .xeplr-admin-module-first-row td {
254
+ border-top: 2px solid var(--xeplr-border-primary);
255
+ }
256
+
257
+ .xeplr-admin-action-cell {
258
+ font-size: 13px;
259
+ font-weight: 500;
260
+ padding-left: 16px !important;
261
+ }
262
+
263
+ .xeplr-admin-action-view { color: var(--xeplr-info); }
264
+ .xeplr-admin-action-edit { color: var(--xeplr-success); }
265
+ .xeplr-admin-action-delete { color: var(--xeplr-danger); }
266
+
267
+ /* User cell */
268
+ .xeplr-admin-user-cell {
269
+ line-height: 1.3;
270
+ }
271
+
272
+ .xeplr-admin-user-name {
273
+ font-weight: 500;
274
+ }
275
+
276
+ .xeplr-admin-user-email {
277
+ font-size: 12px;
278
+ color: var(--xeplr-text-muted);
279
+ }
280
+
281
+ .xeplr-admin-item-name {
282
+ font-weight: 500;
283
+ }
284
+
285
+ /* ─── Checkbox Toggle ─── */
286
+
287
+ .xeplr-admin-cell {
288
+ text-align: center;
289
+ }
290
+
291
+ .xeplr-admin-toggle {
292
+ display: inline-flex;
293
+ align-items: center;
294
+ justify-content: center;
295
+ cursor: pointer;
296
+ }
297
+
298
+ .xeplr-admin-toggle input[type="checkbox"] {
299
+ display: none;
300
+ }
301
+
302
+ .xeplr-admin-checkmark {
303
+ display: inline-block;
304
+ width: 20px;
305
+ height: 20px;
306
+ border: 2px solid var(--xeplr-input-border);
307
+ border-radius: 4px;
308
+ background: var(--xeplr-input-bg);
309
+ position: relative;
310
+ transition: all 0.15s;
311
+ }
312
+
313
+ .xeplr-admin-toggle input:checked + .xeplr-admin-checkmark {
314
+ background: var(--xeplr-accent);
315
+ border-color: var(--xeplr-accent);
316
+ }
317
+
318
+ .xeplr-admin-toggle input:checked + .xeplr-admin-checkmark::after {
319
+ content: '';
320
+ position: absolute;
321
+ left: 5px;
322
+ top: 1px;
323
+ width: 6px;
324
+ height: 11px;
325
+ border: solid var(--xeplr-accent-text);
326
+ border-width: 0 2px 2px 0;
327
+ transform: rotate(45deg);
328
+ }
329
+
330
+ .xeplr-admin-checkmark:hover {
331
+ border-color: var(--xeplr-accent);
332
+ }
333
+
334
+ /* Partial state (indeterminate) — dash instead of check */
335
+ .xeplr-admin-partial {
336
+ background: var(--xeplr-accent-muted);
337
+ border-color: var(--xeplr-accent);
338
+ }
339
+
340
+ .xeplr-admin-partial::after {
341
+ content: '';
342
+ position: absolute;
343
+ left: 3px;
344
+ top: 7px;
345
+ width: 10px;
346
+ height: 2px;
347
+ background: var(--xeplr-accent-text);
348
+ }
349
+
350
+ .xeplr-admin-saving {
351
+ opacity: 0.4;
352
+ pointer-events: none;
353
+ }
354
+
355
+ /* ─── Master Settings ─── */
356
+
357
+ .xeplr-admin-btn-primary {
358
+ padding: 8px 16px;
359
+ border: none;
360
+ border-radius: 4px;
361
+ background: var(--xeplr-accent);
362
+ color: var(--xeplr-accent-text);
363
+ cursor: pointer;
364
+ font-size: 13px;
365
+ font-weight: 500;
366
+ white-space: nowrap;
367
+ }
368
+
369
+ .xeplr-admin-btn-primary:hover {
370
+ background: var(--xeplr-accent-hover);
371
+ }
372
+
373
+ .xeplr-admin-btn-primary:disabled {
374
+ opacity: 0.5;
375
+ cursor: not-allowed;
376
+ }
377
+
378
+ .xeplr-admin-master-table th {
379
+ text-align: left !important;
380
+ }
381
+
382
+ .xeplr-admin-actions-col {
383
+ width: 90px;
384
+ text-align: center !important;
385
+ }
386
+
387
+ .xeplr-admin-action-btns {
388
+ display: flex;
389
+ gap: 6px;
390
+ justify-content: center;
391
+ }
392
+
393
+ .xeplr-admin-btn-edit,
394
+ .xeplr-admin-btn-delete,
395
+ .xeplr-admin-btn-save,
396
+ .xeplr-admin-btn-cancel {
397
+ width: 30px;
398
+ height: 30px;
399
+ border: 1px solid var(--xeplr-input-border);
400
+ border-radius: 4px;
401
+ background: var(--xeplr-bg-tertiary);
402
+ color: var(--xeplr-text-secondary);
403
+ cursor: pointer;
404
+ font-size: 14px;
405
+ display: inline-flex;
406
+ align-items: center;
407
+ justify-content: center;
408
+ transition: all 0.15s;
409
+ }
410
+
411
+ .xeplr-admin-btn-edit:hover { background: var(--xeplr-bg-active); color: var(--xeplr-accent); border-color: var(--xeplr-accent); }
412
+ .xeplr-admin-btn-delete:hover { background: var(--xeplr-danger-bg); color: var(--xeplr-danger); border-color: var(--xeplr-danger); }
413
+ .xeplr-admin-btn-save { background: var(--xeplr-success-bg); color: var(--xeplr-success); border-color: var(--xeplr-success-border); }
414
+ .xeplr-admin-btn-save:hover { opacity: 0.9; }
415
+ .xeplr-admin-btn-cancel:hover { background: var(--xeplr-bg-hover); }
416
+
417
+ .xeplr-admin-btn-edit:disabled,
418
+ .xeplr-admin-btn-delete:disabled {
419
+ opacity: 0.3;
420
+ cursor: not-allowed;
421
+ }
422
+
423
+ .xeplr-admin-editing-row {
424
+ background: var(--xeplr-bg-active) !important;
425
+ }
426
+
427
+ .xeplr-admin-editing-row .xeplr-admin-sticky-col {
428
+ background: var(--xeplr-bg-active) !important;
429
+ }
430
+
431
+ .xeplr-admin-inline-input {
432
+ width: 100%;
433
+ padding: 6px 8px;
434
+ border: 1px solid var(--xeplr-input-border);
435
+ border-radius: 4px;
436
+ background: var(--xeplr-input-bg);
437
+ color: var(--xeplr-input-text);
438
+ font-size: 13px;
439
+ }
440
+
441
+ .xeplr-admin-inline-input:focus {
442
+ outline: none;
443
+ border-color: var(--xeplr-border-focus);
444
+ }
445
+
446
+ .xeplr-admin-inline-input::placeholder {
447
+ color: var(--xeplr-input-placeholder);
448
+ }
449
+
450
+ .xeplr-admin-group-input {
451
+ font-family: monospace;
452
+ font-size: 12px;
453
+ }
454
+
455
+ .xeplr-admin-group-tag {
456
+ display: inline-block;
457
+ padding: 2px 8px;
458
+ background: var(--xeplr-tag-bg);
459
+ border: 1px solid var(--xeplr-tag-border);
460
+ border-radius: 3px;
461
+ font-family: monospace;
462
+ font-size: 12px;
463
+ color: var(--xeplr-tag-text);
464
+ }
465
+
466
+ .xeplr-admin-badge-yes {
467
+ display: inline-block;
468
+ padding: 2px 8px;
469
+ background: var(--xeplr-success-bg);
470
+ border-radius: 3px;
471
+ font-size: 12px;
472
+ color: var(--xeplr-success);
473
+ }
474
+
475
+ .xeplr-admin-badge-no {
476
+ display: inline-block;
477
+ padding: 2px 8px;
478
+ background: var(--xeplr-badge-bg);
479
+ border-radius: 3px;
480
+ font-size: 12px;
481
+ color: var(--xeplr-badge-text);
482
+ }
483
+
484
+ /* ─── States ─── */
485
+
486
+ .xeplr-admin-loading {
487
+ text-align: center;
488
+ padding: 40px;
489
+ color: var(--xeplr-text-muted);
490
+ }
491
+
492
+ .xeplr-admin-empty {
493
+ text-align: center;
494
+ padding: 30px;
495
+ color: var(--xeplr-text-disabled);
496
+ font-style: italic;
497
+ }
498
+
499
+ .xeplr-admin-empty-box {
500
+ text-align: center;
501
+ padding: 40px 20px;
502
+ color: var(--xeplr-text-disabled);
503
+ border: 1px dashed var(--xeplr-border-primary);
504
+ border-radius: 6px;
505
+ }
506
+
507
+ .xeplr-admin-empty-box code {
508
+ background: var(--xeplr-bg-tertiary);
509
+ padding: 2px 6px;
510
+ border-radius: 3px;
511
+ font-size: 13px;
512
+ color: var(--xeplr-text-secondary);
513
+ }
514
+
515
+ .xeplr-admin-alert {
516
+ padding: 10px 15px;
517
+ border-radius: 4px;
518
+ margin-bottom: 15px;
519
+ }
520
+
521
+ .xeplr-admin-alert-error {
522
+ background: var(--xeplr-danger-bg);
523
+ color: var(--xeplr-danger);
524
+ border: 1px solid var(--xeplr-danger-border);
525
+ }
@@ -0,0 +1,160 @@
1
+ @import './theme.css';
2
+
3
+ .xeplr-auth-container {
4
+ max-width: 400px;
5
+ margin: 40px auto;
6
+ padding: 30px;
7
+ border: 1px solid var(--xeplr-border-primary);
8
+ border-radius: 8px;
9
+ background: var(--xeplr-bg-primary);
10
+ text-align: left;
11
+ color: var(--xeplr-text-primary);
12
+ font-family: system-ui, -apple-system, sans-serif;
13
+ }
14
+
15
+ .xeplr-auth-container h1 {
16
+ margin-top: 0;
17
+ margin-bottom: 20px;
18
+ text-align: center;
19
+ }
20
+
21
+ .xeplr-auth-form-group {
22
+ margin-bottom: 15px;
23
+ }
24
+
25
+ .xeplr-auth-form-group label {
26
+ display: block;
27
+ margin-bottom: 5px;
28
+ font-weight: 600;
29
+ }
30
+
31
+ .xeplr-auth-form-group input {
32
+ width: 100%;
33
+ padding: 8px 10px;
34
+ border: 1px solid var(--xeplr-input-border);
35
+ border-radius: 4px;
36
+ font-size: 14px;
37
+ box-sizing: border-box;
38
+ background: var(--xeplr-input-bg);
39
+ color: var(--xeplr-input-text);
40
+ }
41
+
42
+ .xeplr-auth-form-group input::placeholder {
43
+ color: var(--xeplr-input-placeholder);
44
+ }
45
+
46
+ .xeplr-auth-form-group input:focus {
47
+ outline: none;
48
+ border-color: var(--xeplr-border-focus);
49
+ }
50
+
51
+ .xeplr-auth-container button[type="submit"] {
52
+ width: 100%;
53
+ padding: 10px;
54
+ background: var(--xeplr-accent);
55
+ color: var(--xeplr-accent-text);
56
+ border: none;
57
+ border-radius: 4px;
58
+ font-size: 14px;
59
+ cursor: pointer;
60
+ }
61
+
62
+ .xeplr-auth-container button[type="submit"]:hover {
63
+ background: var(--xeplr-accent-hover);
64
+ }
65
+
66
+ .xeplr-auth-container button:disabled {
67
+ opacity: 0.6;
68
+ cursor: not-allowed;
69
+ }
70
+
71
+ .xeplr-auth-links {
72
+ margin-top: 15px;
73
+ text-align: center;
74
+ }
75
+
76
+ .xeplr-auth-links a {
77
+ color: var(--xeplr-accent);
78
+ text-decoration: none;
79
+ }
80
+
81
+ .xeplr-auth-links a:hover {
82
+ text-decoration: underline;
83
+ }
84
+
85
+ .xeplr-auth-alert {
86
+ padding: 10px 15px;
87
+ border-radius: 4px;
88
+ margin-bottom: 15px;
89
+ }
90
+
91
+ .xeplr-auth-alert-error {
92
+ background: var(--xeplr-danger-bg);
93
+ color: var(--xeplr-danger);
94
+ border: 1px solid var(--xeplr-danger-border);
95
+ }
96
+
97
+ .xeplr-auth-alert-success {
98
+ background: var(--xeplr-success-bg);
99
+ color: var(--xeplr-success);
100
+ border: 1px solid var(--xeplr-success-border);
101
+ }
102
+
103
+ .xeplr-auth-not-activated {
104
+ text-align: center;
105
+ }
106
+
107
+ .xeplr-auth-not-activated .xeplr-auth-message {
108
+ font-size: 18px;
109
+ font-weight: bold;
110
+ color: var(--xeplr-warning);
111
+ margin: 20px 0;
112
+ }
113
+
114
+ /* Tenant Picker */
115
+ .xeplr-tenant-picker {
116
+ display: flex;
117
+ flex-direction: column;
118
+ gap: 10px;
119
+ margin-top: 16px;
120
+ }
121
+
122
+ .xeplr-tenant-option {
123
+ display: flex;
124
+ flex-direction: column;
125
+ align-items: flex-start;
126
+ gap: 4px;
127
+ padding: 16px;
128
+ border: 1px solid var(--xeplr-border-primary, #333);
129
+ border-radius: 8px;
130
+ background: var(--xeplr-bg-secondary, #222);
131
+ cursor: pointer;
132
+ transition: all 0.15s;
133
+ text-align: left;
134
+ width: 100%;
135
+ }
136
+
137
+ .xeplr-tenant-option:hover {
138
+ border-color: var(--xeplr-accent, #646cff);
139
+ background: var(--xeplr-bg-active, #1a1a2a);
140
+ }
141
+
142
+ .xeplr-tenant-name {
143
+ font-size: 16px;
144
+ font-weight: 600;
145
+ color: var(--xeplr-text-primary, #e0e0e0);
146
+ }
147
+
148
+ .xeplr-tenant-code {
149
+ font-size: 12px;
150
+ font-family: monospace;
151
+ color: var(--xeplr-tag-text, #9999cc);
152
+ background: var(--xeplr-tag-bg, #2a2a3a);
153
+ padding: 2px 6px;
154
+ border-radius: 3px;
155
+ }
156
+
157
+ .xeplr-tenant-desc {
158
+ font-size: 13px;
159
+ color: var(--xeplr-text-muted, #777);
160
+ }
@@ -0,0 +1,13 @@
1
+ export { default as LoginSample } from './LoginSample.jsx';
2
+ export { default as RegisterSample } from './RegisterSample.jsx';
3
+ export { default as ForgotPasswordSample } from './ForgotPasswordSample.jsx';
4
+ export { default as ResetPasswordSample } from './ResetPasswordSample.jsx';
5
+ export { default as NotActivatedSample } from './NotActivatedSample.jsx';
6
+ export { default as ActivateSample } from './ActivateSample.jsx';
7
+ export { default as ChangePasswordSample } from './ChangePasswordSample.jsx';
8
+ export { default as ProfileSample } from './ProfileSample.jsx';
9
+ export { default as UserRolesMatrixSample } from './UserRolesMatrixSample.jsx';
10
+ export { default as AccessMatrixSample } from './AccessMatrixSample.jsx';
11
+ export { default as MasterSettingsSample } from './MasterSettingsSample.jsx';
12
+ export { default as TenantSample } from './TenantSample.jsx';
13
+ export { default as TenantPickerSample } from './TenantPickerSample.jsx';