Skip to content
Clone

feat(api): add exports for authentication and search functionalities

ZhenYi committed
parent 08e4dfc commit 7e37aed Browse files

282 files changed

+24016 −4

This change is very large, so some diffs are not shown. Clone the repository to see the full change.

File tree 282
Modified lib/webapi/Cargo.toml View lib/webapi/Cargo.toml
@@ -25,6 +25,6 @@
2525opentelemetry = { workspace = true }
2626opentelemetry_sdk = { workspace = true }
2727opentelemetry-otlp = { workspace = true }
28web = { git = "https://gitea.gitdata.me/GitDataAi/web.git", rev = "cd8cdac92ffbf482b5318f93848f82ed4140b7a6" }
28web = { workspace = true }
2929serde = { workspace = true, features = ["derive"] }
3030uuid = { workspace = true }
Added web/design/images/generated-1788349642163.png View web/design/images/generated-1788349642163.png

Diff too large to display.

Added web/design/auth.pen View web/design/auth.pen
@@ -0,0 +1,14521 @@
1{
2 "version": "2.17",
3 "children": [
4 {
5 "type": "frame",
6 "id": "rGXSr",
7 "x": 0,
8 "y": 0,
9 "name": "1. Login",
10 "clip": true,
11 "width": 1440,
12 "height": 900,
13 "fill": "$--background",
14 "layout": "vertical",
15 "gap": 26,
16 "padding": [
17 56,
18 40,
19 40,
20 40
21 ],
22 "justifyContent": "center",
23 "alignItems": "center",
24 "children": [
25 {
26 "type": "frame",
27 "id": "uTlYQ",
28 "layoutPosition": "absolute",
29 "x": 270,
30 "y": 150,
31 "name": "Ambient Glow",
32 "width": 900,
33 "height": 600,
34 "fill": {
35 "type": "gradient",
36 "gradientType": "radial",
37 "enabled": true,
38 "rotation": 0,
39 "size": {
40 "width": 1,
41 "height": 1
42 },
43 "colors": [
44 {
45 "color": "#FF840026",
46 "position": 0
47 },
48 {
49 "color": "#FF840000",
50 "position": 1
51 }
52 ]
53 }
54 },
55 {
56 "type": "frame",
57 "id": "B4BxfH",
58 "layoutPosition": "absolute",
59 "x": 0,
60 "y": 0,
61 "name": "Hairline Field",
62 "width": 1440,
63 "height": 900,
64 "fill": {
65 "type": "gradient",
66 "gradientType": "linear",
67 "enabled": true,
68 "rotation": 180,
69 "size": {
70 "height": 1
71 },
72 "colors": [
73 {
74 "color": "#00000000",
75 "position": 0.55
76 },
77 {
78 "color": "#00000009",
79 "position": 1
80 }
81 ]
82 }
83 },
84 {
85 "type": "frame",
86 "id": "WCEjB",
87 "layoutPosition": "absolute",
88 "x": 36,
89 "y": 36,
90 "name": "Mark TL",
91 "width": 18,
92 "height": 18,
93 "stroke": "$--border",
94 "strokeWidth": {
95 "top": 1,
96 "left": 1
97 },
98 "layout": "none"
99 },
100 {
101 "type": "frame",
102 "id": "clsr1",
103 "layoutPosition": "absolute",
104 "x": 1404,
105 "y": 36,
106 "name": "Mark TR",
107 "width": 18,
108 "height": 18,
109 "stroke": "$--border",
110 "strokeWidth": {
111 "top": 1,
112 "right": 1
113 },
114 "layout": "none"
115 },
116 {
117 "type": "frame",
118 "id": "HY85t",
119 "layoutPosition": "absolute",
120 "x": 36,
121 "y": 864,
122 "name": "Mark BL",
123 "width": 18,
124 "height": 18,
125 "stroke": "$--border",
126 "strokeWidth": {
127 "bottom": 1,
128 "left": 1
129 },
130 "layout": "none"
131 },
132 {
133 "type": "frame",
134 "id": "WaIUX",
135 "layoutPosition": "absolute",
136 "x": 1404,
137 "y": 864,
138 "name": "Mark BR",
139 "width": 18,
140 "height": 18,
141 "stroke": "$--border",
142 "strokeWidth": {
143 "right": 1,
144 "bottom": 1
145 },
146 "layout": "none"
147 },
148 {
149 "type": "frame",
150 "id": "h82jY",
151 "name": "Login Card",
152 "width": 440,
153 "fill": "$--card",
154 "cornerRadius": "$--radius-m",
155 "stroke": "$--border",
156 "strokeWidth": 1,
157 "effect": [
158 {
159 "type": "shadow",
160 "shadowType": "outer",
161 "color": "#1111111F",
162 "offset": {
163 "x": 0,
164 "y": 18
165 },
166 "blur": 44,
167 "spread": -8
168 },
169 {
170 "type": "shadow",
171 "shadowType": "outer",
172 "color": "#1111110A",
173 "offset": {
174 "x": 0,
175 "y": 2
176 },
177 "blur": 6
178 }
179 ],
180 "layout": "vertical",
181 "gap": 22,
182 "padding": 32,
183 "children": [
184 {
185 "type": "frame",
186 "id": "RN973",
187 "name": "Card Header",
188 "width": "fill_container",
189 "layout": "vertical",
190 "gap": 12,
191 "alignItems": "center",
192 "children": [
193 {
194 "type": "frame",
195 "id": "Fxl8b",
196 "name": "Logo",
197 "clip": true,
198 "width": 44,
199 "height": 44,
200 "fill": "$--primary",
201 "cornerRadius": 12,
202 "layout": "none",
203 "children": [
204 {
205 "type": "path",
206 "id": "az4hS",
207 "x": 4.4,
208 "y": 3.0609,
209 "geometry": "M27.10145 22.82898l0-7.26956 8.09855-4.65507-1.53044-2.67826-8.09854 4.46377-6.37682-3.76232 0-8.92754-3.1884 0 0 8.9913-6.37681 3.69856-7.84348-4.46377-1.78551 2.55072 7.97101 4.52754 0 7.46087-7.97101 4.5913 1.78551 2.93334 7.84348-4.52754 6.37681 3.57101 0 9.11884 3.1884 0 0-9.11884 6.37682-3.63478 8.09854 4.59131 1.65798-2.93334-8.22609-4.52754z",
210 "fill": "#1C2127",
211 "width": 35.3275,
212 "height": 38.4522
213 }
214 ]
215 },
216 {
217 "type": "text",
218 "id": "fBiAR",
219 "name": "Heading",
220 "fill": "$--foreground",
221 "textGrowth": "fixed-width",
222 "width": "fill_container",
223 "content": "Sign in to Kernel",
224 "textAlign": "center",
225 "fontFamily": "$--font-primary",
226 "fontSize": 23,
227 "fontWeight": "bold",
228 "letterSpacing": -0.6
229 },
230 {
231 "type": "text",
232 "id": "E9h3m",
233 "name": "Subheading",
234 "fill": "$--muted-foreground",
235 "textGrowth": "fixed-width",
236 "width": "fill_container",
237 "content": "Authenticate to reach the control plane and your running clusters.",
238 "lineHeight": 1.5,
239 "textAlign": "center",
240 "fontFamily": "$--font-secondary",
241 "fontSize": 14,
242 "fontWeight": "normal"
243 }
244 ]
245 },
246 {
247 "type": "frame",
248 "id": "GoAxu",
249 "name": "Form",
250 "width": "fill_container",
251 "layout": "vertical",
252 "gap": 15,
253 "children": [
254 {
255 "type": "frame",
256 "id": "buPST",
257 "name": "Email Field",
258 "width": "fill_container",
259 "layout": "vertical",
260 "gap": 7,
261 "children": [
262 {
263 "type": "frame",
264 "id": "F0ZGj",
265 "name": "Label Row",
266 "width": "fill_container",
267 "justifyContent": "space_between",
268 "alignItems": "center",
269 "children": [
270 {
271 "type": "text",
272 "id": "OuywW",
273 "name": "Label",
274 "fill": "$--muted-foreground",
275 "content": "EMAIL OR USERNAME",
276 "fontFamily": "$--font-primary",
277 "fontSize": 10,
278 "fontWeight": "bold",
279 "letterSpacing": 1.2
280 }
281 ]
282 },
283 {
284 "type": "frame",
285 "id": "LiNe7",
286 "name": "Input",
287 "width": "fill_container",
288 "height": 46,
289 "fill": "$--white",
290 "cornerRadius": 10,
291 "stroke": "$--border",
292 "strokeWidth": 1,
293 "gap": 10,
294 "padding": [
295 0,
296 14
297 ],
298 "alignItems": "center",
299 "children": [
300 {
301 "type": "icon",
302 "id": "p2UEF",
303 "name": "Icon",
304 "width": 15,
305 "height": 15,
306 "icon": "at-sign",
307 "library": "lucide",
308 "fill": "$--muted-foreground"
309 },
310 {
311 "type": "text",
312 "id": "T66glD",
313 "name": "Value",
314 "fill": "$--foreground",
315 "content": "ada.lock",
316 "fontFamily": "$--font-secondary",
317 "fontSize": 14.5,
318 "fontWeight": "normal"
319 }
320 ]
321 }
322 ]
323 },
324 {
325 "type": "frame",
326 "id": "IK9s3",
327 "name": "Password Field",
328 "width": "fill_container",
329 "layout": "vertical",
330 "gap": 7,
331 "children": [
332 {
333 "type": "frame",
334 "id": "vhPBA",
335 "name": "Label Row",
336 "width": "fill_container",
337 "justifyContent": "space_between",
338 "alignItems": "center",
339 "children": [
340 {
341 "type": "text",
342 "id": "rXkqB",
343 "name": "Label",
344 "fill": "$--muted-foreground",
345 "content": "PASSPHRASE",
346 "fontFamily": "$--font-primary",
347 "fontSize": 10,
348 "fontWeight": "bold",
349 "letterSpacing": 1.2
350 },
351 {
352 "type": "frame",
353 "id": "d9FKt",
354 "name": "Forgot Link",
355 "gap": 4,
356 "alignItems": "center",
357 "children": [
358 {
359 "type": "text",
360 "id": "j0OfQ",
361 "name": "Text",
362 "fill": "$--foreground",
363 "content": "Forgot?",
364 "fontFamily": "$--font-secondary",
365 "fontSize": 12,
366 "fontWeight": "normal"
367 },
368 {
369 "type": "icon",
370 "id": "t7afgM",
371 "name": "Arrow",
372 "width": 11,
373 "height": 11,
374 "icon": "arrow-up-right",
375 "library": "lucide",
376 "fill": "$--foreground"
377 }
378 ]
379 }
380 ]
381 },
382 {
383 "type": "frame",
384 "id": "h2C6b",
385 "name": "Input",
386 "width": "fill_container",
387 "height": 46,
388 "fill": "$--white",
389 "cornerRadius": 10,
390 "stroke": "$--foreground",
391 "strokeWidth": 1.4,
392 "gap": 10,
393 "padding": [
394 0,
395 14
396 ],
397 "alignItems": "center",
398 "children": [
399 {
400 "type": "icon",
401 "id": "zv6AM",
402 "name": "Icon",
403 "width": 15,
404 "height": 15,
405 "icon": "lock",
406 "library": "lucide",
407 "fill": "$--muted-foreground"
408 },
409 {
410 "type": "text",
411 "id": "sVSaY",
412 "name": "Value",
413 "fill": "$--foreground",
414 "content": "••••••••••••",
415 "fontFamily": "$--font-primary",
416 "fontSize": 16,
417 "fontWeight": "normal"
418 },
419 {
420 "type": "frame",
421 "id": "C1Mii",
422 "name": "Spacer",
423 "width": "fill_container",
424 "height": 1
425 },
426 {
427 "type": "icon",
428 "id": "xuQpn",
429 "name": "Reveal",
430 "width": 16,
431 "height": 16,
432 "icon": "eye",
433 "library": "lucide",
434 "fill": "$--muted-foreground"
435 }
436 ]
437 }
438 ]
439 },
440 {
441 "type": "frame",
442 "id": "GkPbw",
443 "name": "Trust Row",
444 "width": "fill_container",
445 "gap": 9,
446 "alignItems": "center",
447 "children": [
448 {
449 "type": "frame",
450 "id": "cCtS3",
451 "name": "Checkbox",
452 "width": 18,
453 "height": 18,
454 "fill": "$--primary",
455 "cornerRadius": 5,
456 "justifyContent": "center",
457 "alignItems": "center",
458 "children": [
459 {
460 "type": "icon",
461 "id": "JAznC",
462 "name": "Check",
463 "width": 12,
464 "height": 12,
465 "icon": "check",
466 "library": "lucide",
467 "fill": "$--primary-foreground"
468 }
469 ]
470 },
471 {
472 "type": "text",
473 "id": "HL9J6",
474 "name": "Label",
475 "fill": "$--foreground",
476 "content": "Keep me signed in",
477 "fontFamily": "$--font-secondary",
478 "fontSize": 13,
479 "fontWeight": "normal"
480 }
481 ]
482 },
483 {
484 "type": "frame",
485 "id": "fBo4f",
486 "name": "Submit Button",
487 "width": "fill_container",
488 "height": 48,
489 "fill": "$--primary",
490 "cornerRadius": 10,
491 "effect": {
492 "type": "shadow",
493 "shadowType": "outer",
494 "color": "#FF840066",
495 "offset": {
496 "x": 0,
497 "y": 4
498 },
499 "blur": 14,
500 "spread": -4
501 },
502 "gap": 9,
503 "justifyContent": "center",
504 "alignItems": "center",
505 "children": [
506 {
507 "type": "text",
508 "id": "lBzmO",
509 "name": "Label",
510 "fill": "$--primary-foreground",
511 "content": "Sign in",
512 "fontFamily": "$--font-primary",
513 "fontSize": 14,
514 "fontWeight": "bold",
515 "letterSpacing": 0.4
516 },
517 {
518 "type": "icon",
519 "id": "i7GqA",
520 "name": "Arrow",
521 "width": 15,
522 "height": 15,
523 "icon": "arrow-right",
524 "library": "lucide",
525 "fill": "$--primary-foreground"
526 }
527 ]
528 },
529 {
530 "type": "frame",
531 "id": "vURRn",
532 "name": "Divider",
533 "width": "fill_container",
534 "gap": 12,
535 "alignItems": "center",
536 "children": [
537 {
538 "type": "frame",
539 "id": "NCJ8W",
540 "name": "Line L",
541 "width": "fill_container",
542 "height": 1,
543 "fill": "$--border"
544 },
545 {
546 "type": "text",
547 "id": "kJwse",
548 "name": "Text",
549 "fill": "$--muted-foreground",
550 "content": "LOSING ACCESS?",
551 "fontFamily": "$--font-primary",
552 "fontSize": 10,
553 "fontWeight": "bold",
554 "letterSpacing": 1.1
555 },
556 {
557 "type": "frame",
558 "id": "KNZEi",
559 "name": "Line R",
560 "width": "fill_container",
561 "height": 1,
562 "fill": "$--border"
563 }
564 ]
565 },
566 {
567 "type": "frame",
568 "id": "F6025",
569 "name": "Alt Auth Row",
570 "width": "fill_container",
571 "gap": 12,
572 "children": [
573 {
574 "type": "frame",
575 "id": "KrEzG",
576 "name": "SSO Button",
577 "width": "fill_container",
578 "height": 44,
579 "fill": "$--white",
580 "cornerRadius": 10,
581 "stroke": "$--border",
582 "strokeWidth": 1,
583 "gap": 8,
584 "justifyContent": "center",
585 "alignItems": "center",
586 "children": [
587 {
588 "type": "icon",
589 "id": "iycH7",
590 "name": "Icon",
591 "width": 15,
592 "height": 15,
593 "icon": "shield",
594 "library": "lucide",
595 "fill": "$--foreground"
596 },
597 {
598 "type": "text",
599 "id": "Qs4QL",
600 "name": "Label",
601 "fill": "$--foreground",
602 "content": "Recovery code",
603 "fontFamily": "$--font-secondary",
604 "fontSize": 13.5,
605 "fontWeight": "normal"
606 }
607 ]
608 },
609 {
610 "type": "frame",
611 "id": "l8EVai",
612 "name": "Passkey Button",
613 "width": "fill_container",
614 "height": 44,
615 "fill": "$--white",
616 "cornerRadius": 10,
617 "stroke": "$--border",
618 "strokeWidth": 1,
619 "gap": 8,
620 "justifyContent": "center",
621 "alignItems": "center",
622 "children": [
623 {
624 "type": "icon",
625 "id": "o0SBx3",
626 "name": "Icon",
627 "width": 15,
628 "height": 15,
629 "icon": "mail",
630 "library": "lucide",
631 "fill": "$--foreground"
632 },
633 {
634 "type": "text",
635 "id": "H9tr2",
636 "name": "Label",
637 "fill": "$--foreground",
638 "content": "Resend verify email",
639 "fontFamily": "$--font-secondary",
640 "fontSize": 13.5,
641 "fontWeight": "normal"
642 }
643 ]
644 }
645 ]
646 },
647 {
648 "type": "frame",
649 "id": "c5eky",
650 "name": "Signup Row",
651 "width": "fill_container",
652 "gap": 6,
653 "justifyContent": "center",
654 "children": [
655 {
656 "type": "text",
657 "id": "MkwCc",
658 "name": "Q",
659 "fill": "$--muted-foreground",
660 "content": "No account yet?",
661 "fontFamily": "$--font-secondary",
662 "fontSize": 13,
663 "fontWeight": "normal"
664 },
665 {
666 "type": "text",
667 "id": "tpu4O",
668 "name": "Link",
669 "fill": "$--foreground",
670 "content": "Request access",
671 "fontFamily": "$--font-secondary",
672 "fontSize": 13,
673 "fontWeight": "bold"
674 }
675 ]
676 }
677 ]
678 }
679 ]
680 },
681 {
682 "type": "frame",
683 "id": "QzTkk",
684 "layoutPosition": "absolute",
685 "x": 40,
686 "y": 846,
687 "name": "Status Row",
688 "width": 1360,
689 "gap": 10,
690 "justifyContent": "center",
691 "alignItems": "center",
692 "children": [
693 {
694 "type": "frame",
695 "id": "AnwT2",
696 "name": "Dot",
697 "width": 8,
698 "height": 8,
699 "justifyContent": "center",
700 "alignItems": "center",
701 "children": [
702 {
703 "type": "ellipse",
704 "id": "xQgUr",
705 "name": "Dot",
706 "fill": "$--color-success-foreground",
707 "width": 7,
708 "height": 7
709 }
710 ]
711 },
712 {
713 "type": "text",
714 "id": "Tery6",
715 "name": "Status",
716 "fill": "$--muted-foreground",
717 "content": "ALL SYSTEMS OPERATIONAL",
718 "fontFamily": "$--font-primary",
719 "fontSize": 11,
720 "fontWeight": "normal",
721 "letterSpacing": 0.5
722 },
723 {
724 "type": "text",
725 "id": "LGILM",
726 "name": "Sep",
727 "fill": "$--border",
728 "content": "·",
729 "fontFamily": "$--font-primary",
730 "fontSize": 11,
731 "fontWeight": "normal"
732 },
733 {
734 "type": "text",
735 "id": "r6jWwp",
736 "name": "Region",
737 "fill": "$--muted-foreground",
738 "content": "REGION EU-CENTRAL-1",
739 "fontFamily": "$--font-primary",
740 "fontSize": 11,
741 "fontWeight": "normal",
742 "letterSpacing": 0.5
743 },
744 {
745 "type": "text",
746 "id": "T10xI",
747 "name": "Sep2",
748 "fill": "$--border",
749 "content": "·",
750 "fontFamily": "$--font-primary",
751 "fontSize": 11,
752 "fontWeight": "normal"
753 },
754 {
755 "type": "text",
756 "id": "esgYO",
757 "name": "Copy",
758 "fill": "$--muted-foreground",
759 "content": "© 2026 GitDataAI",
760 "fontFamily": "$--font-primary",
761 "fontSize": 11,
762 "fontWeight": "normal",
763 "letterSpacing": 0.5
764 }
765 ]
766 },
767 {
768 "type": "frame",
769 "id": "Y3IZVr",
770 "layoutPosition": "absolute",
771 "x": 40,
772 "y": 454,
773 "name": "Edge Label L",
774 "rotation": 90,
775 "width": 114,
776 "height": 16,
777 "gap": 10,
778 "alignItems": "center",
779 "children": [
780 {
781 "type": "text",
782 "id": "DxNIq",
783 "name": "Text",
784 "fill": "$--muted-foreground",
785 "content": "AUTH · v4.2.0",
786 "fontFamily": "$--font-primary",
787 "fontSize": 10,
788 "fontWeight": "normal",
789 "letterSpacing": 1.6
790 }
791 ]
792 },
793 {
794 "type": "frame",
795 "id": "guQoV",
796 "layoutPosition": "absolute",
797 "x": 1250,
798 "y": 454,
799 "name": "Edge Label R",
800 "rotation": 90,
801 "width": 152,
802 "height": 16,
803 "gap": 10,
804 "alignItems": "center",
805 "children": [
806 {
807 "type": "text",
808 "id": "PhpkA",
809 "name": "Text",
810 "fill": "$--muted-foreground",
811 "content": "TLS 1.3 · TOTP-SHA1",
812 "fontFamily": "$--font-primary",
813 "fontSize": 10,
814 "fontWeight": "normal",
815 "letterSpacing": 1.6
816 }
817 ]
818 },
819 {
820 "type": "frame",
821 "id": "wpJqA",
822 "layoutPosition": "absolute",
823 "x": 490,
824 "y": 822,
825 "name": "Hint",
826 "width": 460,
827 "height": 14,
828 "gap": 7,
829 "justifyContent": "center",
830 "alignItems": "center",
831 "children": [
832 {
833 "type": "text",
834 "id": "ssXbD",
835 "name": "Hint Text",
836 "fill": "$--muted-foreground",
837 "content": "PROOF-OF-WORK SOLVED SILENTLY · 5 ATTEMPTS / 5 MIN",
838 "fontFamily": "$--font-primary",
839 "fontSize": 10,
840 "fontWeight": "normal",
841 "letterSpacing": 1.2
842 }
843 ]
844 },
845 {
846 "type": "frame",
847 "id": "Qmqo9",
848 "layoutPosition": "absolute",
849 "x": 70,
850 "y": 36,
851 "name": "Breadcrumb",
852 "gap": 8,
853 "alignItems": "center",
854 "children": [
855 {
856 "type": "frame",
857 "id": "cSTNY",
858 "name": "Logo",
859 "width": 14,
860 "height": 14,
861 "fill": "#FF8400",
862 "cornerRadius": 4
863 },
864 {
865 "type": "text",
866 "id": "PHLU0",
867 "name": "Root",
868 "fill": "#111111",
869 "content": "GitDataAI",
870 "fontFamily": "JetBrains Mono",
871 "fontSize": 10,
872 "fontWeight": "bold",
873 "letterSpacing": 1.2
874 },
875 {
876 "type": "text",
877 "id": "fQOJi",
878 "name": "Sep1",
879 "fill": "#CBCCC9",
880 "content": "/",
881 "fontFamily": "JetBrains Mono",
882 "fontSize": 10,
883 "fontWeight": "normal"
884 },
885 {
886 "type": "text",
887 "id": "Py7Zn",
888 "name": "Section",
889 "fill": "#666666",
890 "content": "AUTH",
891 "fontFamily": "JetBrains Mono",
892 "fontSize": 10,
893 "fontWeight": "normal",
894 "letterSpacing": 1.2
895 },
896 {
897 "type": "text",
898 "id": "j5jIV",
899 "name": "Sep2",
900 "fill": "#CBCCC9",
901 "content": "/",
902 "fontFamily": "JetBrains Mono",
903 "fontSize": 10,
904 "fontWeight": "normal"
905 },
906 {
907 "type": "text",
908 "id": "Nseyj",
909 "name": "Current",
910 "fill": "#804200",
911 "content": "SIGN IN",
912 "fontFamily": "JetBrains Mono",
913 "fontSize": 10,
914 "fontWeight": "bold",
915 "letterSpacing": 1.2
916 }
917 ]
918 }
919 ]
920 },
921 {
922 "type": "frame",
923 "id": "Roblr",
924 "x": 1600,
925 "y": 0,
926 "name": "2. Sign Up",
927 "clip": true,
928 "width": 1440,
929 "height": 900,
930 "fill": "$--background",
931 "layout": "vertical",
932 "gap": 26,
933 "padding": [
934 56,
935 40,
936 40,
937 40
938 ],
939 "justifyContent": "center",
940 "alignItems": "center",
941 "children": [
942 {
943 "type": "frame",
944 "id": "gmZKU",
945 "layoutPosition": "absolute",
946 "x": 270,
947 "y": 150,
948 "name": "Ambient Glow",
949 "width": 900,
950 "height": 600,
951 "fill": {
952 "type": "gradient",
953 "gradientType": "radial",
954 "enabled": true,
955 "rotation": 0,
956 "size": {
957 "width": 1,
958 "height": 1
959 },
960 "colors": [
961 {
962 "color": "#FF840026",
963 "position": 0
964 },
965 {
966 "color": "#FF840000",
967 "position": 1
968 }
969 ]
970 }
971 },
972 {
973 "type": "frame",
974 "id": "YqFI2",
975 "layoutPosition": "absolute",
976 "x": 0,
977 "y": 0,
978 "name": "Hairline Field",
979 "width": 1440,
980 "height": 900,
981 "fill": {
982 "type": "gradient",
983 "gradientType": "linear",
984 "enabled": true,
985 "rotation": 180,
986 "size": {
987 "height": 1
988 },
989 "colors": [
990 {
991 "color": "#00000000",
992 "position": 0.55
993 },
994 {
995 "color": "#00000009",
996 "position": 1
997 }
998 ]
999 }
1000 },
1001 {
1002 "type": "frame",
1003 "id": "qcJK3",
1004 "layoutPosition": "absolute",
1005 "x": 36,
1006 "y": 36,
1007 "name": "Mark TL",
1008 "width": 18,
1009 "height": 18,
1010 "stroke": "$--border",
1011 "strokeWidth": {
1012 "top": 1,
1013 "left": 1
1014 },
1015 "layout": "none"
1016 },
1017 {
1018 "type": "frame",
1019 "id": "qdVhU",
1020 "layoutPosition": "absolute",
1021 "x": 1404,
1022 "y": 36,
1023 "name": "Mark TR",
1024 "width": 18,
1025 "height": 18,
1026 "stroke": "$--border",
1027 "strokeWidth": {
1028 "top": 1,
1029 "right": 1
1030 },
1031 "layout": "none"
1032 },
1033 {
1034 "type": "frame",
1035 "id": "mk3S0",
1036 "layoutPosition": "absolute",
1037 "x": 36,
1038 "y": 864,
1039 "name": "Mark BL",
1040 "width": 18,
1041 "height": 18,
1042 "stroke": "$--border",
1043 "strokeWidth": {
1044 "bottom": 1,
1045 "left": 1
1046 },
1047 "layout": "none"
1048 },
1049 {
1050 "type": "frame",
1051 "id": "dqPKw",
1052 "layoutPosition": "absolute",
1053 "x": 1404,
1054 "y": 864,
1055 "name": "Mark BR",
1056 "width": 18,
1057 "height": 18,
1058 "stroke": "$--border",
1059 "strokeWidth": {
1060 "right": 1,
1061 "bottom": 1
1062 },
1063 "layout": "none"
1064 },
1065 {
1066 "type": "frame",
1067 "id": "DWXNO",
1068 "name": "Login Card",
1069 "width": 440,
1070 "fill": "$--card",
1071 "cornerRadius": "$--radius-m",
1072 "stroke": "$--border",
1073 "strokeWidth": 1,
1074 "effect": [
1075 {
1076 "type": "shadow",
1077 "shadowType": "outer",
1078 "color": "#1111111F",
1079 "offset": {
1080 "x": 0,
1081 "y": 18
1082 },
1083 "blur": 44,
1084 "spread": -8
1085 },
1086 {
1087 "type": "shadow",
1088 "shadowType": "outer",
1089 "color": "#1111110A",
1090 "offset": {
1091 "x": 0,
1092 "y": 2
1093 },
1094 "blur": 6
1095 }
1096 ],
1097 "layout": "vertical",
1098 "gap": 22,
1099 "padding": 32,
1100 "children": [
1101 {
1102 "type": "frame",
1103 "id": "jQTYj",
1104 "name": "Card Header",
1105 "width": "fill_container",
1106 "layout": "vertical",
1107 "gap": 12,
1108 "alignItems": "center",
1109 "children": [
1110 {
1111 "type": "frame",
1112 "id": "rvz6F",
1113 "name": "Logo",
1114 "clip": true,
1115 "width": 44,
1116 "height": 44,
1117 "fill": "$accent",
1118 "cornerRadius": 12,
1119 "layout": "none",
1120 "children": [
1121 {
1122 "type": "path",
1123 "id": "mdXD8",
1124 "x": 4.4,
1125 "y": 3.0609,
1126 "geometry": "M27.10145 22.82898l0-7.26956 8.09855-4.65507-1.53044-2.67826-8.09854 4.46377-6.37682-3.76232 0-8.92754-3.1884 0 0 8.9913-6.37681 3.69856-7.84348-4.46377-1.78551 2.55072 7.97101 4.52754 0 7.46087-7.97101 4.5913 1.78551 2.93334 7.84348-4.52754 6.37681 3.57101 0 9.11884 3.1884 0 0-9.11884 6.37682-3.63478 8.09854 4.59131 1.65798-2.93334-8.22609-4.52754z",
1127 "fill": "#1C2127",
1128 "width": 35.3275,
1129 "height": 38.4522
1130 }
1131 ]
1132 },
1133 {
1134 "type": "text",
1135 "id": "X7eChM",
1136 "name": "Heading",
1137 "fill": "#000000",
1138 "textGrowth": "fixed-width",
1139 "width": "fill_container",
1140 "content": "Create your account",
1141 "textAlign": "center",
1142 "fontFamily": "JetBrains Mono",
1143 "fontSize": 23,
1144 "fontWeight": "bold",
1145 "letterSpacing": -0.6
1146 },
1147 {
1148 "type": "text",
1149 "id": "d8MbaM",
1150 "name": "Subheading",
1151 "fill": "#666666",
1152 "textGrowth": "fixed-width",
1153 "width": "fill_container",
1154 "content": "Provision team access to the Kernel control plane and running clusters.",
1155 "lineHeight": 1.5,
1156 "textAlign": "center",
1157 "fontFamily": "Geist",
1158 "fontSize": 14,
1159 "fontWeight": "normal"
1160 }
1161 ]
1162 },
1163 {
1164 "type": "frame",
1165 "id": "vxIiO",
1166 "name": "Form",
1167 "width": "fill_container",
1168 "layout": "vertical",
1169 "gap": 15,
1170 "children": [
1171 {
1172 "type": "frame",
1173 "id": "YxuYe",
1174 "name": "FULL NAME Field",
1175 "width": "fill_container",
1176 "layout": "vertical",
1177 "gap": 7,
1178 "children": [
1179 {
1180 "type": "frame",
1181 "id": "rKSMt",
1182 "name": "Label Row",
1183 "width": "fill_container",
1184 "justifyContent": "space_between",
1185 "alignItems": "center",
1186 "children": [
1187 {
1188 "type": "text",
1189 "id": "LcuOx",
1190 "name": "Label",
1191 "fill": "#666666",
1192 "content": "USERNAME (OPTIONAL)",
1193 "fontFamily": "JetBrains Mono",
1194 "fontSize": 10,
1195 "fontWeight": "bold",
1196 "letterSpacing": 1.2
1197 }
1198 ]
1199 },
1200 {
1201 "type": "frame",
1202 "id": "gINj8",
1203 "name": "Input",
1204 "width": "fill_container",
1205 "height": 46,
1206 "fill": "#FFFFFF",
1207 "cornerRadius": 10,
1208 "stroke": "#CBCCC9",
1209 "strokeWidth": 1,
1210 "gap": 10,
1211 "padding": [
1212 0,
1213 14
1214 ],
1215 "alignItems": "center",
1216 "children": [
1217 {
1218 "type": "icon",
1219 "id": "sZqeP",
1220 "name": "Icon",
1221 "width": 15,
1222 "height": 15,
1223 "icon": "user",
1224 "library": "lucide",
1225 "fill": "#666666"
1226 },
1227 {
1228 "type": "text",
1229 "id": "ZC60j",
1230 "name": "Value",
1231 "fill": "#111111",
1232 "content": "adalock",
1233 "fontFamily": "Geist",
1234 "fontSize": 14.5,
1235 "fontWeight": "normal"
1236 }
1237 ]
1238 }
1239 ]
1240 },
1241 {
1242 "type": "frame",
1243 "id": "Fgd12",
1244 "name": "WORK EMAIL Field",
1245 "width": "fill_container",
1246 "layout": "vertical",
1247 "gap": 7,
1248 "children": [
1249 {
1250 "type": "frame",
1251 "id": "E3snI",
1252 "name": "Label Row",
1253 "width": "fill_container",
1254 "justifyContent": "space_between",
1255 "alignItems": "center",
1256 "children": [
1257 {
1258 "type": "text",
1259 "id": "lrCiU",
1260 "name": "Label",
1261 "fill": "#666666",
1262 "content": "EMAIL",
1263 "fontFamily": "JetBrains Mono",
1264 "fontSize": 10,
1265 "fontWeight": "bold",
1266 "letterSpacing": 1.2
1267 }
1268 ]
1269 },
1270 {
1271 "type": "frame",
1272 "id": "L1pxG",
1273 "name": "Input",
1274 "width": "fill_container",
1275 "height": 46,
1276 "fill": "#FFFFFF",
1277 "cornerRadius": 10,
1278 "stroke": "#CBCCC9",
1279 "strokeWidth": 1,
1280 "gap": 10,
1281 "padding": [
1282 0,
1283 14
1284 ],
1285 "alignItems": "center",
1286 "children": [
1287 {
1288 "type": "icon",
1289 "id": "v7fXcf",
1290 "name": "Icon",
1291 "width": 15,
1292 "height": 15,
1293 "icon": "at-sign",
1294 "library": "lucide",
1295 "fill": "#666666"
1296 },
1297 {
1298 "type": "text",
1299 "id": "I7y2eY",
1300 "name": "Value",
1301 "fill": "#111111",
1302 "content": "ada.lock@kernel.dev",
1303 "fontFamily": "Geist",
1304 "fontSize": 14.5,
1305 "fontWeight": "normal"
1306 }
1307 ]
1308 }
1309 ]
1310 },
1311 {
1312 "type": "frame",
1313 "id": "y6N6gq",
1314 "name": "PASSPHRASE Field",
1315 "width": "fill_container",
1316 "layout": "vertical",
1317 "gap": 7,
1318 "children": [
1319 {
1320 "type": "frame",
1321 "id": "eX4MD",
1322 "name": "Label Row",
1323 "width": "fill_container",
1324 "justifyContent": "space_between",
1325 "alignItems": "center",
1326 "children": [
1327 {
1328 "type": "text",
1329 "id": "mn06i",
1330 "name": "Label",
1331 "fill": "#666666",
1332 "content": "PASSWORD",
1333 "fontFamily": "JetBrains Mono",
1334 "fontSize": 10,
1335 "fontWeight": "bold",
1336 "letterSpacing": 1.2
1337 }
1338 ]
1339 },
1340 {
1341 "type": "frame",
1342 "id": "trsFd",
1343 "name": "Input",
1344 "width": "fill_container",
1345 "height": 46,
1346 "fill": "#FFFFFF",
1347 "cornerRadius": 10,
1348 "stroke": "#111111",
1349 "strokeWidth": 1.4,
1350 "gap": 10,
1351 "padding": [
1352 0,
1353 14
1354 ],
1355 "alignItems": "center",
1356 "children": [
1357 {
1358 "type": "icon",
1359 "id": "x17xI7",
1360 "name": "Icon",
1361 "width": 15,
1362 "height": 15,
1363 "icon": "lock",
1364 "library": "lucide",
1365 "fill": "#666666"
1366 },
1367 {
1368 "type": "text",
1369 "id": "W7cf2J",
1370 "name": "Value",
1371 "fill": "#111111",
1372 "content": "••••••••••••",
1373 "fontFamily": "JetBrains Mono",
1374 "fontSize": 16,
1375 "fontWeight": "normal"
1376 },
1377 {
1378 "type": "frame",
1379 "id": "ZIdR2",
1380 "name": "Spacer",
1381 "width": "fill_container",
1382 "height": 1
1383 },
1384 {
1385 "type": "icon",
1386 "id": "N8gpQ",
1387 "name": "Reveal",
1388 "width": 16,
1389 "height": 16,
1390 "icon": "eye",
1391 "library": "lucide",
1392 "fill": "#666666"
1393 }
1394 ]
1395 }
1396 ]
1397 },
1398 {
1399 "type": "frame",
1400 "id": "gw1Vj",
1401 "name": "DOB Field",
1402 "width": "fill_container",
1403 "layout": "vertical",
1404 "gap": 7,
1405 "children": [
1406 {
1407 "type": "frame",
1408 "id": "TCID0",
1409 "name": "Label Row",
1410 "width": "fill_container",
1411 "justifyContent": "space_between",
1412 "alignItems": "center",
1413 "children": [
1414 {
1415 "type": "text",
1416 "id": "tMF6K",
1417 "name": "Label",
1418 "fill": "#666666",
1419 "content": "DATE OF BIRTH (OPTIONAL)",
1420 "fontFamily": "JetBrains Mono",
1421 "fontSize": 10,
1422 "fontWeight": "bold",
1423 "letterSpacing": 1.2
1424 },
1425 {
1426 "type": "text",
1427 "id": "RjZX5",
1428 "name": "Age Gate",
1429 "fill": "#804200",
1430 "content": "18+ REQUIRED",
1431 "fontFamily": "JetBrains Mono",
1432 "fontSize": 9.5,
1433 "fontWeight": "bold",
1434 "letterSpacing": 1
1435 }
1436 ]
1437 },
1438 {
1439 "type": "frame",
1440 "id": "fUJWN",
1441 "name": "Selects",
1442 "width": "fill_container",
1443 "gap": 10,
1444 "children": [
1445 {
1446 "type": "frame",
1447 "id": "rffdr",
1448 "name": "Day Select",
1449 "width": "fill_container",
1450 "height": 46,
1451 "fill": "#FFFFFF",
1452 "cornerRadius": 10,
1453 "stroke": "#CBCCC9",
1454 "strokeWidth": 1,
1455 "gap": 8,
1456 "padding": [
1457 0,
1458 12
1459 ],
1460 "alignItems": "center",
1461 "children": [
1462 {
1463 "type": "text",
1464 "id": "ivBzI",
1465 "name": "Value",
1466 "fill": "#111111",
1467 "content": "14",
1468 "fontFamily": "Geist",
1469 "fontSize": 14.5,
1470 "fontWeight": "normal"
1471 },
1472 {
1473 "type": "frame",
1474 "id": "HKBlY",
1475 "name": "Spacer",
1476 "width": "fill_container",
1477 "height": 1
1478 },
1479 {
1480 "type": "icon",
1481 "id": "d8qaws",
1482 "name": "Chevron",
1483 "width": 14,
1484 "height": 14,
1485 "icon": "chevron-down",
1486 "library": "lucide",
1487 "fill": "#666666"
1488 }
1489 ]
1490 },
1491 {
1492 "type": "frame",
1493 "id": "mTA5s",
1494 "name": "Month Select",
1495 "width": "fill_container",
1496 "height": 46,
1497 "fill": "#FFFFFF",
1498 "cornerRadius": 10,
1499 "stroke": "#CBCCC9",
1500 "strokeWidth": 1,
1501 "gap": 8,
1502 "padding": [
1503 0,
1504 12
1505 ],
1506 "alignItems": "center",
1507 "children": [
1508 {
1509 "type": "text",
1510 "id": "PIeSI",
1511 "name": "Value",
1512 "fill": "#111111",
1513 "content": "MAR",
1514 "fontFamily": "Geist",
1515 "fontSize": 14.5,
1516 "fontWeight": "normal"
1517 },
1518 {
1519 "type": "frame",
1520 "id": "OZAJO",
1521 "name": "Spacer",
1522 "width": "fill_container",
1523 "height": 1
1524 },
1525 {
1526 "type": "icon",
1527 "id": "VAWFB",
1528 "name": "Chevron",
1529 "width": 14,
1530 "height": 14,
1531 "icon": "chevron-down",
1532 "library": "lucide",
1533 "fill": "#666666"
1534 }
1535 ]
1536 },
1537 {
1538 "type": "frame",
1539 "id": "TgPzq",
1540 "name": "Year Select",
1541 "width": "fill_container",
1542 "height": 46,
1543 "fill": "#FFFFFF",
1544 "cornerRadius": 10,
1545 "stroke": "#CBCCC9",
1546 "strokeWidth": 1,
1547 "gap": 8,
1548 "padding": [
1549 0,
1550 12
1551 ],
1552 "alignItems": "center",
1553 "children": [
1554 {
1555 "type": "text",
1556 "id": "jJ0CP",
1557 "name": "Value",
1558 "fill": "#111111",
1559 "content": "1994",
1560 "fontFamily": "Geist",
1561 "fontSize": 14.5,
1562 "fontWeight": "normal"
1563 },
1564 {
1565 "type": "frame",
1566 "id": "ELtvf",
1567 "name": "Spacer",
1568 "width": "fill_container",
1569 "height": 1
1570 },
1571 {
1572 "type": "icon",
1573 "id": "I7JhD7",
1574 "name": "Chevron",
1575 "width": 14,
1576 "height": 14,
1577 "icon": "chevron-down",
1578 "library": "lucide",
1579 "fill": "#666666"
1580 }
1581 ]
1582 }
1583 ]
1584 }
1585 ]
1586 },
1587 {
1588 "type": "frame",
1589 "id": "t6aky",
1590 "name": "Terms Row",
1591 "width": "fill_container",
1592 "gap": 9,
1593 "alignItems": "center",
1594 "children": [
1595 {
1596 "type": "frame",
1597 "id": "pq9bR",
1598 "name": "Checkbox",
1599 "width": 18,
1600 "height": 18,
1601 "fill": "#FF8400",
1602 "cornerRadius": 5,
1603 "justifyContent": "center",
1604 "alignItems": "center",
1605 "children": [
1606 {
1607 "type": "icon",
1608 "id": "p64SO",
1609 "name": "Check",
1610 "width": 12,
1611 "height": 12,
1612 "icon": "check",
1613 "library": "lucide",
1614 "fill": "#111111"
1615 }
1616 ]
1617 },
1618 {
1619 "type": "frame",
1620 "id": "darR0",
1621 "name": "Terms Text",
1622 "gap": 4,
1623 "children": [
1624 {
1625 "type": "text",
1626 "id": "ymq8T",
1627 "name": "T1",
1628 "fill": "#111111",
1629 "content": "I agree to the",
1630 "fontFamily": "Geist",
1631 "fontSize": 13,
1632 "fontWeight": "normal"
1633 },
1634 {
1635 "type": "text",
1636 "id": "b10Zg",
1637 "name": "T2",
1638 "fill": "#111111",
1639 "content": "Terms",
1640 "fontFamily": "Geist",
1641 "fontSize": 13,
1642 "fontWeight": "bold"
1643 },
1644 {
1645 "type": "text",
1646 "id": "ABfSe",
1647 "name": "T3",
1648 "fill": "#111111",
1649 "content": "&",
1650 "fontFamily": "Geist",
1651 "fontSize": 13,
1652 "fontWeight": "normal"
1653 },
1654 {
1655 "type": "text",
1656 "id": "Xgo70",
1657 "name": "T4",
1658 "fill": "#111111",
1659 "content": "Privacy Policy",
1660 "fontFamily": "Geist",
1661 "fontSize": 13,
1662 "fontWeight": "bold"
1663 }
1664 ]
1665 }
1666 ]
1667 },
1668 {
1669 "type": "frame",
1670 "id": "op0mt",
1671 "name": "Submit Button",
1672 "width": "fill_container",
1673 "height": 48,
1674 "fill": "#FF8400",
1675 "cornerRadius": 10,
1676 "effect": {
1677 "type": "shadow",
1678 "shadowType": "outer",
1679 "color": "#FF840066",
1680 "offset": {
1681 "x": 0,
1682 "y": 4
1683 },
1684 "blur": 14,
1685 "spread": -4
1686 },
1687 "gap": 9,
1688 "justifyContent": "center",
1689 "alignItems": "center",
1690 "children": [
1691 {
1692 "type": "text",
1693 "id": "c8arA",
1694 "name": "Label",
1695 "fill": "#111111",
1696 "content": "Create account",
1697 "fontFamily": "JetBrains Mono",
1698 "fontSize": 14,
1699 "fontWeight": "bold",
1700 "letterSpacing": 0.4
1701 },
1702 {
1703 "type": "icon",
1704 "id": "ZVWnv",
1705 "name": "Arrow",
1706 "width": 15,
1707 "height": 15,
1708 "icon": "arrow-right",
1709 "library": "lucide",
1710 "fill": "#111111"
1711 }
1712 ]
1713 },
1714 {
1715 "type": "frame",
1716 "id": "e2XYpw",
1717 "name": "Login Row",
1718 "width": "fill_container",
1719 "gap": 6,
1720 "justifyContent": "center",
1721 "children": [
1722 {
1723 "type": "text",
1724 "id": "S6D18",
1725 "name": "Q",
1726 "fill": "#666666",
1727 "content": "Already have an account?",
1728 "fontFamily": "Geist",
1729 "fontSize": 13,
1730 "fontWeight": "normal"
1731 },
1732 {
1733 "type": "text",
1734 "id": "F3MPd5",
1735 "name": "Link",
1736 "fill": "#111111",
1737 "content": "Sign in",
1738 "fontFamily": "Geist",
1739 "fontSize": 13,
1740 "fontWeight": "bold"
1741 }
1742 ]
1743 }
1744 ]
1745 }
1746 ]
1747 },
1748 {
1749 "type": "frame",
1750 "id": "S1wKy",
1751 "layoutPosition": "absolute",
1752 "x": 40,
1753 "y": 846,
1754 "name": "Status Row",
1755 "width": 1360,
1756 "gap": 10,
1757 "justifyContent": "center",
1758 "alignItems": "center",
1759 "children": [
1760 {
1761 "type": "frame",
1762 "id": "aMEo3",
1763 "name": "Dot",
1764 "width": 8,
1765 "height": 8,
1766 "justifyContent": "center",
1767 "alignItems": "center",
1768 "children": [
1769 {
1770 "type": "ellipse",
1771 "id": "JVXtS",
1772 "name": "Dot",
1773 "fill": "$--color-success-foreground",
1774 "width": 7,
1775 "height": 7
1776 }
1777 ]
1778 },
1779 {
1780 "type": "text",
1781 "id": "Y4jxCd",
1782 "name": "Status",
1783 "fill": "$--muted-foreground",
1784 "content": "ALL SYSTEMS OPERATIONAL",
1785 "fontFamily": "$--font-primary",
1786 "fontSize": 11,
1787 "fontWeight": "normal",
1788 "letterSpacing": 0.5
1789 },
1790 {
1791 "type": "text",
1792 "id": "Z9XVFy",
1793 "name": "Sep",
1794 "fill": "$--border",
1795 "content": "·",
1796 "fontFamily": "$--font-primary",
1797 "fontSize": 11,
1798 "fontWeight": "normal"
1799 },
1800 {
1801 "type": "text",
1802 "id": "R6ov9d",
1803 "name": "Region",
1804 "fill": "$--muted-foreground",
1805 "content": "REGION EU-CENTRAL-1",
1806 "fontFamily": "$--font-primary",
1807 "fontSize": 11,
1808 "fontWeight": "normal",
1809 "letterSpacing": 0.5
1810 },
1811 {
1812 "type": "text",
1813 "id": "eWVDj",
1814 "name": "Sep2",
1815 "fill": "$--border",
1816 "content": "·",
1817 "fontFamily": "$--font-primary",
1818 "fontSize": 11,
1819 "fontWeight": "normal"
1820 },
1821 {
1822 "type": "text",
1823 "id": "NO3Oa",
1824 "name": "Copy",
1825 "fill": "$--muted-foreground",
1826 "content": "© 2026 GitDataAI",
1827 "fontFamily": "$--font-primary",
1828 "fontSize": 11,
1829 "fontWeight": "normal",
1830 "letterSpacing": 0.5
1831 }
1832 ]
1833 },
1834 {
1835 "type": "frame",
1836 "id": "HmU8A",
1837 "layoutPosition": "absolute",
1838 "x": 40,
1839 "y": 454,
1840 "name": "Edge Label L",
1841 "rotation": 90,
1842 "width": 114,
1843 "height": 16,
1844 "gap": 10,
1845 "alignItems": "center",
1846 "children": [
1847 {
1848 "type": "text",
1849 "id": "R0yiMf",
1850 "name": "Text",
1851 "fill": "$--muted-foreground",
1852 "content": "AUTH · v4.2.0",
1853 "fontFamily": "$--font-primary",
1854 "fontSize": 10,
1855 "fontWeight": "normal",
1856 "letterSpacing": 1.6
1857 }
1858 ]
1859 },
1860 {
1861 "type": "frame",
1862 "id": "mKEdj",
1863 "layoutPosition": "absolute",
1864 "x": 1250,
1865 "y": 454,
1866 "name": "Edge Label R",
1867 "rotation": 90,
1868 "width": 152,
1869 "height": 16,
1870 "gap": 10,
1871 "alignItems": "center",
1872 "children": [
1873 {
1874 "type": "text",
1875 "id": "veHmT",
1876 "name": "Text",
1877 "fill": "$--muted-foreground",
1878 "content": "TLS 1.3 · TOTP-SHA1",
1879 "fontFamily": "$--font-primary",
1880 "fontSize": 10,
1881 "fontWeight": "normal",
1882 "letterSpacing": 1.6
1883 }
1884 ]
1885 },
1886 {
1887 "type": "frame",
1888 "id": "mbhxD",
1889 "layoutPosition": "absolute",
1890 "x": 490,
1891 "y": 822,
1892 "name": "Hint",
1893 "width": 460,
1894 "height": 14,
1895 "gap": 7,
1896 "justifyContent": "center",
1897 "alignItems": "center",
1898 "children": [
1899 {
1900 "type": "text",
1901 "id": "zy1Z8",
1902 "name": "Hint Text",
1903 "fill": "$--muted-foreground",
1904 "content": "PASSWORD POLICY & AGE GATE ENFORCED SERVER-SIDE",
1905 "fontFamily": "$--font-primary",
1906 "fontSize": 10,
1907 "fontWeight": "normal",
1908 "letterSpacing": 1.2
1909 }
1910 ]
1911 },
1912 {
1913 "type": "frame",
1914 "id": "MfFgk",
1915 "layoutPosition": "absolute",
1916 "x": 70,
1917 "y": 36,
1918 "name": "Breadcrumb",
1919 "gap": 8,
1920 "alignItems": "center",
1921 "children": [
1922 {
1923 "type": "frame",
1924 "id": "McWhP",
1925 "name": "Logo",
1926 "width": 14,
1927 "height": 14,
1928 "fill": "#FF8400",
1929 "cornerRadius": 4
1930 },
1931 {
1932 "type": "text",
1933 "id": "nTlLX",
1934 "name": "Root",
1935 "fill": "#111111",
1936 "content": "GitDataAI",
1937 "fontFamily": "JetBrains Mono",
1938 "fontSize": 10,
1939 "fontWeight": "bold",
1940 "letterSpacing": 1.2
1941 },
1942 {
1943 "type": "text",
1944 "id": "tjqRM",
1945 "name": "Sep1",
1946 "fill": "#CBCCC9",
1947 "content": "/",
1948 "fontFamily": "JetBrains Mono",
1949 "fontSize": 10,
1950 "fontWeight": "normal"
1951 },
1952 {
1953 "type": "text",
1954 "id": "s9q2Z7",
1955 "name": "Section",
1956 "fill": "#666666",
1957 "content": "AUTH",
1958 "fontFamily": "JetBrains Mono",
1959 "fontSize": 10,
1960 "fontWeight": "normal",
1961 "letterSpacing": 1.2
1962 },
1963 {
1964 "type": "text",
1965 "id": "yp09q",
1966 "name": "Sep2",
1967 "fill": "#CBCCC9",
1968 "content": "/",
1969 "fontFamily": "JetBrains Mono",
1970 "fontSize": 10,
1971 "fontWeight": "normal"
1972 },
1973 {
1974 "type": "text",
1975 "id": "q2Giqj",
1976 "name": "Current",
1977 "fill": "#804200",
1978 "content": "CREATE ACCOUNT",
1979 "fontFamily": "JetBrains Mono",
1980 "fontSize": 10,
1981 "fontWeight": "bold",
1982 "letterSpacing": 1.2
1983 }
1984 ]
1985 }
1986 ]
1987 },
1988 {
1989 "type": "frame",
1990 "id": "hIhLi",
1991 "x": 0,
1992 "y": 1060,
1993 "name": "3. Forgot Password",
1994 "clip": true,
1995 "width": 1440,
1996 "height": 900,
1997 "fill": "$--background",
1998 "layout": "vertical",
1999 "gap": 26,
2000 "padding": [
2001 56,
2002 40,
2003 40,
2004 40
2005 ],
2006 "justifyContent": "center",
2007 "alignItems": "center",
2008 "children": [
2009 {
2010 "type": "frame",
2011 "id": "oe3E0",
2012 "layoutPosition": "absolute",
2013 "x": 270,
2014 "y": 150,
2015 "name": "Ambient Glow",
2016 "width": 900,
2017 "height": 600,
2018 "fill": {
2019 "type": "gradient",
2020 "gradientType": "radial",
2021 "enabled": true,
2022 "rotation": 0,
2023 "size": {
2024 "width": 1,
2025 "height": 1
2026 },
2027 "colors": [
2028 {
2029 "color": "#FF840026",
2030 "position": 0
2031 },
2032 {
2033 "color": "#FF840000",
2034 "position": 1
2035 }
2036 ]
2037 }
2038 },
2039 {
2040 "type": "frame",
2041 "id": "ASM8S",
2042 "layoutPosition": "absolute",
2043 "x": 0,
2044 "y": 0,
2045 "name": "Hairline Field",
2046 "width": 1440,
2047 "height": 900,
2048 "fill": {
2049 "type": "gradient",
2050 "gradientType": "linear",
2051 "enabled": true,
2052 "rotation": 180,
2053 "size": {
2054 "height": 1
2055 },
2056 "colors": [
2057 {
2058 "color": "#00000000",
2059 "position": 0.55
2060 },
2061 {
2062 "color": "#00000009",
2063 "position": 1
2064 }
2065 ]
2066 }
2067 },
2068 {
2069 "type": "frame",
2070 "id": "TRpMF",
2071 "layoutPosition": "absolute",
2072 "x": 36,
2073 "y": 36,
2074 "name": "Mark TL",
2075 "width": 18,
2076 "height": 18,
2077 "stroke": "$--border",
2078 "strokeWidth": {
2079 "top": 1,
2080 "left": 1
2081 },
2082 "layout": "none"
2083 },
2084 {
2085 "type": "frame",
2086 "id": "AnKEa",
2087 "layoutPosition": "absolute",
2088 "x": 1404,
2089 "y": 36,
2090 "name": "Mark TR",
2091 "width": 18,
2092 "height": 18,
2093 "stroke": "$--border",
2094 "strokeWidth": {
2095 "top": 1,
2096 "right": 1
2097 },
2098 "layout": "none"
2099 },
2100 {
2101 "type": "frame",
2102 "id": "n1MVRO",
2103 "layoutPosition": "absolute",
2104 "x": 36,
2105 "y": 864,
2106 "name": "Mark BL",
2107 "width": 18,
2108 "height": 18,
2109 "stroke": "$--border",
2110 "strokeWidth": {
2111 "bottom": 1,
2112 "left": 1
2113 },
2114 "layout": "none"
2115 },
2116 {
2117 "type": "frame",
2118 "id": "zFqjd",
2119 "layoutPosition": "absolute",
2120 "x": 1404,
2121 "y": 864,
2122 "name": "Mark BR",
2123 "width": 18,
2124 "height": 18,
2125 "stroke": "$--border",
2126 "strokeWidth": {
2127 "right": 1,
2128 "bottom": 1
2129 },
2130 "layout": "none"
2131 },
2132 {
2133 "type": "frame",
2134 "id": "I57bI",
2135 "name": "Login Card",
2136 "width": 440,
2137 "fill": "$--card",
2138 "cornerRadius": "$--radius-m",
2139 "stroke": "$--border",
2140 "strokeWidth": 1,
2141 "effect": [
2142 {
2143 "type": "shadow",
2144 "shadowType": "outer",
2145 "color": "#1111111F",
2146 "offset": {
2147 "x": 0,
2148 "y": 18
2149 },
2150 "blur": 44,
2151 "spread": -8
2152 },
2153 {
2154 "type": "shadow",
2155 "shadowType": "outer",
2156 "color": "#1111110A",
2157 "offset": {
2158 "x": 0,
2159 "y": 2
2160 },
2161 "blur": 6
2162 }
2163 ],
2164 "layout": "vertical",
2165 "gap": 22,
2166 "padding": 32,
2167 "children": [
2168 {
2169 "type": "frame",
2170 "id": "wdnpL",
2171 "name": "Card Header",
2172 "width": "fill_container",
2173 "layout": "vertical",
2174 "gap": 12,
2175 "alignItems": "center",
2176 "children": [
2177 {
2178 "type": "frame",
2179 "id": "BNfoi",
2180 "name": "Icon Badge",
2181 "width": 44,
2182 "height": 44,
2183 "fill": "#F2F3F0",
2184 "cornerRadius": 12,
2185 "stroke": "#CBCCC9",
2186 "strokeWidth": 1,
2187 "justifyContent": "center",
2188 "alignItems": "center",
2189 "children": [
2190 {
2191 "type": "icon",
2192 "id": "gMeuk",
2193 "name": "Key",
2194 "width": 20,
2195 "height": 20,
2196 "icon": "key-round",
2197 "library": "lucide",
2198 "fill": "#111111"
2199 }
2200 ]
2201 },
2202 {
2203 "type": "text",
2204 "id": "Gmsqm",
2205 "name": "Heading",
2206 "fill": "#111111",
2207 "textGrowth": "fixed-width",
2208 "width": "fill_container",
2209 "content": "Forgot passphrase?",
2210 "textAlign": "center",
2211 "fontFamily": "JetBrains Mono",
2212 "fontSize": 23,
2213 "fontWeight": "bold",
2214 "letterSpacing": -0.6
2215 },
2216 {
2217 "type": "text",
2218 "id": "qadta",
2219 "name": "Subheading",
2220 "fill": "#666666",
2221 "textGrowth": "fixed-width",
2222 "width": "fill_container",
2223 "content": "Enter your workspace email and we will send a single-use recovery link. It expires after 15 minutes.",
2224 "lineHeight": 1.5,
2225 "textAlign": "center",
2226 "fontFamily": "Geist",
2227 "fontSize": 14,
2228 "fontWeight": "normal"
2229 }
2230 ]
2231 },
2232 {
2233 "type": "frame",
2234 "id": "VnuVP",
2235 "name": "Form",
2236 "width": "fill_container",
2237 "layout": "vertical",
2238 "gap": 15,
2239 "children": [
2240 {
2241 "type": "frame",
2242 "id": "JkQgJ",
2243 "name": "Email Field",
2244 "width": "fill_container",
2245 "layout": "vertical",
2246 "gap": 7,
2247 "children": [
2248 {
2249 "type": "frame",
2250 "id": "IBjCe",
2251 "name": "Label Row",
2252 "width": "fill_container",
2253 "justifyContent": "space_between",
2254 "alignItems": "center",
2255 "children": [
2256 {
2257 "type": "text",
2258 "id": "C7vHw",
2259 "name": "Label",
2260 "fill": "#666666",
2261 "content": "ACCOUNT EMAIL",
2262 "fontFamily": "JetBrains Mono",
2263 "fontSize": 10,
2264 "fontWeight": "bold",
2265 "letterSpacing": 1.2
2266 }
2267 ]
2268 },
2269 {
2270 "type": "frame",
2271 "id": "BBjbl",
2272 "name": "Input",
2273 "width": "fill_container",
2274 "height": 46,
2275 "fill": "#FFFFFF",
2276 "cornerRadius": 10,
2277 "stroke": "#111111",
2278 "strokeWidth": 1.4,
2279 "gap": 10,
2280 "padding": [
2281 0,
2282 14
2283 ],
2284 "alignItems": "center",
2285 "children": [
2286 {
2287 "type": "icon",
2288 "id": "cJPvQ",
2289 "name": "Icon",
2290 "width": 15,
2291 "height": 15,
2292 "icon": "at-sign",
2293 "library": "lucide",
2294 "fill": "#666666"
2295 },
2296 {
2297 "type": "text",
2298 "id": "n9ojj",
2299 "name": "Value",
2300 "fill": "#111111",
2301 "content": "ada.lock@kernel.dev",
2302 "fontFamily": "Geist",
2303 "fontSize": 14.5,
2304 "fontWeight": "normal"
2305 }
2306 ]
2307 }
2308 ]
2309 },
2310 {
2311 "type": "frame",
2312 "id": "WvxWI",
2313 "name": "Notice",
2314 "width": "fill_container",
2315 "fill": "#F2F3F0",
2316 "cornerRadius": 10,
2317 "stroke": "#CBCCC9",
2318 "strokeWidth": 1,
2319 "gap": 9,
2320 "padding": [
2321 12,
2322 14
2323 ],
2324 "alignItems": "center",
2325 "children": [
2326 {
2327 "type": "icon",
2328 "id": "P5Csgp",
2329 "name": "Info",
2330 "width": 15,
2331 "height": 15,
2332 "icon": "info",
2333 "library": "lucide",
2334 "fill": "#666666"
2335 },
2336 {
2337 "type": "text",
2338 "id": "rDgHa",
2339 "name": "Text",
2340 "fill": "#666666",
2341 "textGrowth": "fixed-width",
2342 "width": "fill_container",
2343 "content": "We always confirm delivery — existing accounts are never revealed.",
2344 "lineHeight": 1.45,
2345 "fontFamily": "Geist",
2346 "fontSize": 12.5,
2347 "fontWeight": "normal"
2348 }
2349 ]
2350 },
2351 {
2352 "type": "frame",
2353 "id": "O02R4U",
2354 "name": "Submit Button",
2355 "width": "fill_container",
2356 "height": 48,
2357 "fill": "#FF8400",
2358 "cornerRadius": 10,
2359 "effect": {
2360 "type": "shadow",
2361 "shadowType": "outer",
2362 "color": "#FF840066",
2363 "offset": {
2364 "x": 0,
2365 "y": 4
2366 },
2367 "blur": 14,
2368 "spread": -4
2369 },
2370 "gap": 9,
2371 "justifyContent": "center",
2372 "alignItems": "center",
2373 "children": [
2374 {
2375 "type": "text",
2376 "id": "dGSP8",
2377 "name": "Label",
2378 "fill": "#111111",
2379 "content": "Send recovery link",
2380 "fontFamily": "JetBrains Mono",
2381 "fontSize": 14,
2382 "fontWeight": "bold",
2383 "letterSpacing": 0.4
2384 },
2385 {
2386 "type": "icon",
2387 "id": "DwR81",
2388 "name": "Arrow",
2389 "width": 15,
2390 "height": 15,
2391 "icon": "arrow-right",
2392 "library": "lucide",
2393 "fill": "#111111"
2394 }
2395 ]
2396 },
2397 {
2398 "type": "frame",
2399 "id": "tSluD",
2400 "name": "Back Row",
2401 "width": "fill_container",
2402 "gap": 6,
2403 "justifyContent": "center",
2404 "children": [
2405 {
2406 "type": "text",
2407 "id": "Ib6cl",
2408 "name": "Q",
2409 "fill": "#666666",
2410 "content": "Remembered it?",
2411 "fontFamily": "Geist",
2412 "fontSize": 13,
2413 "fontWeight": "normal"
2414 },
2415 {
2416 "type": "text",
2417 "id": "lxcSv",
2418 "name": "Link",
2419 "fill": "#111111",
2420 "content": "Back to sign in",
2421 "fontFamily": "Geist",
2422 "fontSize": 13,
2423 "fontWeight": "bold"
2424 }
2425 ]
2426 }
2427 ]
2428 }
2429 ]
2430 },
2431 {
2432 "type": "frame",
2433 "id": "AaM5v",
2434 "layoutPosition": "absolute",
2435 "x": 40,
2436 "y": 846,
2437 "name": "Status Row",
2438 "width": 1360,
2439 "gap": 10,
2440 "justifyContent": "center",
2441 "alignItems": "center",
2442 "children": [
2443 {
2444 "type": "frame",
2445 "id": "Bs4Ne",
2446 "name": "Dot",
2447 "width": 8,
2448 "height": 8,
2449 "justifyContent": "center",
2450 "alignItems": "center",
2451 "children": [
2452 {
2453 "type": "ellipse",
2454 "id": "ItZMG",
2455 "name": "Dot",
2456 "fill": "$--color-success-foreground",
2457 "width": 7,
2458 "height": 7
2459 }
2460 ]
2461 },
2462 {
2463 "type": "text",
2464 "id": "gkHPL",
2465 "name": "Status",
2466 "fill": "$--muted-foreground",
2467 "content": "ALL SYSTEMS OPERATIONAL",
2468 "fontFamily": "$--font-primary",
2469 "fontSize": 11,
2470 "fontWeight": "normal",
2471 "letterSpacing": 0.5
2472 },
2473 {
2474 "type": "text",
2475 "id": "yZdHF",
2476 "name": "Sep",
2477 "fill": "$--border",
2478 "content": "·",
2479 "fontFamily": "$--font-primary",
2480 "fontSize": 11,
2481 "fontWeight": "normal"
2482 },
2483 {
2484 "type": "text",
2485 "id": "OA7BA",
2486 "name": "Region",
2487 "fill": "$--muted-foreground",
2488 "content": "REGION EU-CENTRAL-1",
2489 "fontFamily": "$--font-primary",
2490 "fontSize": 11,
2491 "fontWeight": "normal",
2492 "letterSpacing": 0.5
2493 },
2494 {
2495 "type": "text",
2496 "id": "LJwH3",
2497 "name": "Sep2",
2498 "fill": "$--border",
2499 "content": "·",
2500 "fontFamily": "$--font-primary",
2501 "fontSize": 11,
2502 "fontWeight": "normal"
2503 },
2504 {
2505 "type": "text",
2506 "id": "zfh3E",
2507 "name": "Copy",
2508 "fill": "$--muted-foreground",
2509 "content": "© 2026 GitDataAI",
2510 "fontFamily": "$--font-primary",
2511 "fontSize": 11,
2512 "fontWeight": "normal",
2513 "letterSpacing": 0.5
2514 }
2515 ]
2516 },
2517 {
2518 "type": "frame",
2519 "id": "xDvX0",
2520 "layoutPosition": "absolute",
2521 "x": 40,
2522 "y": 454,
2523 "name": "Edge Label L",
2524 "rotation": 90,
2525 "width": 114,
2526 "height": 16,
2527 "gap": 10,
2528 "alignItems": "center",
2529 "children": [
2530 {
2531 "type": "text",
2532 "id": "wA6To",
2533 "name": "Text",
2534 "fill": "$--muted-foreground",
2535 "content": "AUTH · v4.2.0",
2536 "fontFamily": "$--font-primary",
2537 "fontSize": 10,
2538 "fontWeight": "normal",
2539 "letterSpacing": 1.6
2540 }
2541 ]
2542 },
2543 {
2544 "type": "frame",
2545 "id": "wwDz5",
2546 "layoutPosition": "absolute",
2547 "x": 1250,
2548 "y": 454,
2549 "name": "Edge Label R",
2550 "rotation": 90,
2551 "width": 152,
2552 "height": 16,
2553 "gap": 10,
2554 "alignItems": "center",
2555 "children": [
2556 {
2557 "type": "text",
2558 "id": "GFmhg",
2559 "name": "Text",
2560 "fill": "$--muted-foreground",
2561 "content": "TLS 1.3 · TOTP-SHA1",
2562 "fontFamily": "$--font-primary",
2563 "fontSize": 10,
2564 "fontWeight": "normal",
2565 "letterSpacing": 1.6
2566 }
2567 ]
2568 },
2569 {
2570 "type": "frame",
2571 "id": "KQjcG",
2572 "layoutPosition": "absolute",
2573 "x": 490,
2574 "y": 822,
2575 "name": "Hint",
2576 "width": 460,
2577 "height": 14,
2578 "gap": 7,
2579 "justifyContent": "center",
2580 "alignItems": "center",
2581 "children": [
2582 {
2583 "type": "text",
2584 "id": "teOH6",
2585 "name": "Hint Text",
2586 "fill": "$--muted-foreground",
2587 "content": "RECOVERY LINKS EXPIRE AFTER 15 MINUTES",
2588 "fontFamily": "$--font-primary",
2589 "fontSize": 10,
2590 "fontWeight": "normal",
2591 "letterSpacing": 1.2
2592 }
2593 ]
2594 },
2595 {
2596 "type": "frame",
2597 "id": "WeJTJ",
2598 "layoutPosition": "absolute",
2599 "x": 70,
2600 "y": 36,
2601 "name": "Breadcrumb",
2602 "gap": 8,
2603 "alignItems": "center",
2604 "children": [
2605 {
2606 "type": "frame",
2607 "id": "A5NbRB",
2608 "name": "Logo",
2609 "width": 14,
2610 "height": 14,
2611 "fill": "#FF8400",
2612 "cornerRadius": 4
2613 },
2614 {
2615 "type": "text",
2616 "id": "NY6gX",
2617 "name": "Root",
2618 "fill": "#111111",
2619 "content": "GitDataAI",
2620 "fontFamily": "JetBrains Mono",
2621 "fontSize": 10,
2622 "fontWeight": "bold",
2623 "letterSpacing": 1.2
2624 },
2625 {
2626 "type": "text",
2627 "id": "L7rexx",
2628 "name": "Sep1",
2629 "fill": "#CBCCC9",
2630 "content": "/",
2631 "fontFamily": "JetBrains Mono",
2632 "fontSize": 10,
2633 "fontWeight": "normal"
2634 },
2635 {
2636 "type": "text",
2637 "id": "Gz6ri",
2638 "name": "Section",
2639 "fill": "#666666",
2640 "content": "AUTH",
2641 "fontFamily": "JetBrains Mono",
2642 "fontSize": 10,
2643 "fontWeight": "normal",
2644 "letterSpacing": 1.2
2645 },
2646 {
2647 "type": "text",
2648 "id": "p0QYbl",
2649 "name": "Sep2",
2650 "fill": "#CBCCC9",
2651 "content": "/",
2652 "fontFamily": "JetBrains Mono",
2653 "fontSize": 10,
2654 "fontWeight": "normal"
2655 },
2656 {
2657 "type": "text",
2658 "id": "U325VY",
2659 "name": "Current",
2660 "fill": "#804200",
2661 "content": "RECOVER ACCESS",
2662 "fontFamily": "JetBrains Mono",
2663 "fontSize": 10,
2664 "fontWeight": "bold",
2665 "letterSpacing": 1.2
2666 }
2667 ]
2668 }
2669 ]
2670 },
2671 {
2672 "type": "frame",
2673 "id": "QsX6R",
2674 "x": 1600,
2675 "y": 1060,
2676 "name": "4. Reset Password",
2677 "clip": true,
2678 "width": 1440,
2679 "height": 900,
2680 "fill": "$--background",
2681 "layout": "vertical",
2682 "gap": 26,
2683 "padding": [
2684 56,
2685 40,
2686 40,
2687 40
2688 ],
2689 "justifyContent": "center",
2690 "alignItems": "center",
2691 "children": [
2692 {
2693 "type": "frame",
2694 "id": "pyc4i",
2695 "layoutPosition": "absolute",
2696 "x": 270,
2697 "y": 150,
2698 "name": "Ambient Glow",
2699 "width": 900,
2700 "height": 600,
2701 "fill": {
2702 "type": "gradient",
2703 "gradientType": "radial",
2704 "enabled": true,
2705 "rotation": 0,
2706 "size": {
2707 "width": 1,
2708 "height": 1
2709 },
2710 "colors": [
2711 {
2712 "color": "#FF840026",
2713 "position": 0
2714 },
2715 {
2716 "color": "#FF840000",
2717 "position": 1
2718 }
2719 ]
2720 }
2721 },
2722 {
2723 "type": "frame",
2724 "id": "O1LPSq",
2725 "layoutPosition": "absolute",
2726 "x": 0,
2727 "y": 0,
2728 "name": "Hairline Field",
2729 "width": 1440,
2730 "height": 900,
2731 "fill": {
2732 "type": "gradient",
2733 "gradientType": "linear",
2734 "enabled": true,
2735 "rotation": 180,
2736 "size": {
2737 "height": 1
2738 },
2739 "colors": [
2740 {
2741 "color": "#00000000",
2742 "position": 0.55
2743 },
2744 {
2745 "color": "#00000009",
2746 "position": 1
2747 }
2748 ]
2749 }
2750 },
2751 {
2752 "type": "frame",
2753 "id": "vQBmg",
2754 "layoutPosition": "absolute",
2755 "x": 36,
2756 "y": 36,
2757 "name": "Mark TL",
2758 "width": 18,
2759 "height": 18,
2760 "stroke": "$--border",
2761 "strokeWidth": {
2762 "top": 1,
2763 "left": 1
2764 },
2765 "layout": "none"
2766 },
2767 {
2768 "type": "frame",
2769 "id": "RmBTG",
2770 "layoutPosition": "absolute",
2771 "x": 1404,
2772 "y": 36,
2773 "name": "Mark TR",
2774 "width": 18,
2775 "height": 18,
2776 "stroke": "$--border",
2777 "strokeWidth": {
2778 "top": 1,
2779 "right": 1
2780 },
2781 "layout": "none"
2782 },
2783 {
2784 "type": "frame",
2785 "id": "xcN98",
2786 "layoutPosition": "absolute",
2787 "x": 36,
2788 "y": 864,
2789 "name": "Mark BL",
2790 "width": 18,
2791 "height": 18,
2792 "stroke": "$--border",
2793 "strokeWidth": {
2794 "bottom": 1,
2795 "left": 1
2796 },
2797 "layout": "none"
2798 },
2799 {
2800 "type": "frame",
2801 "id": "A2Tsm",
2802 "layoutPosition": "absolute",
2803 "x": 1404,
2804 "y": 864,
2805 "name": "Mark BR",
2806 "width": 18,
2807 "height": 18,
2808 "stroke": "$--border",
2809 "strokeWidth": {
2810 "right": 1,
2811 "bottom": 1
2812 },
2813 "layout": "none"
2814 },
2815 {
2816 "type": "frame",
2817 "id": "O3J7J",
2818 "name": "Login Card",
2819 "width": 440,
2820 "fill": "$--card",
2821 "cornerRadius": "$--radius-m",
2822 "stroke": "$--border",
2823 "strokeWidth": 1,
2824 "effect": [
2825 {
2826 "type": "shadow",
2827 "shadowType": "outer",
2828 "color": "#1111111F",
2829 "offset": {
2830 "x": 0,
2831 "y": 18
2832 },
2833 "blur": 44,
2834 "spread": -8
2835 },
2836 {
2837 "type": "shadow",
2838 "shadowType": "outer",
2839 "color": "#1111110A",
2840 "offset": {
2841 "x": 0,
2842 "y": 2
2843 },
2844 "blur": 6
2845 }
2846 ],
2847 "layout": "vertical",
2848 "gap": 22,
2849 "padding": 32,
2850 "children": [
2851 {
2852 "type": "frame",
2853 "id": "SsXXV",
2854 "name": "Card Header",
2855 "width": "fill_container",
2856 "layout": "vertical",
2857 "gap": 12,
2858 "alignItems": "center",
2859 "children": [
2860 {
2861 "type": "frame",
2862 "id": "ppw3P",
2863 "name": "Icon Badge",
2864 "width": 44,
2865 "height": 44,
2866 "fill": "#F2F3F0",
2867 "cornerRadius": 12,
2868 "stroke": "#CBCCC9",
2869 "strokeWidth": 1,
2870 "justifyContent": "center",
2871 "alignItems": "center",
2872 "children": [
2873 {
2874 "type": "icon",
2875 "id": "yuW11",
2876 "name": "Shield",
2877 "width": 20,
2878 "height": 20,
2879 "icon": "shield-check",
2880 "library": "lucide",
2881 "fill": "#111111"
2882 }
2883 ]
2884 },
2885 {
2886 "type": "text",
2887 "id": "DdCvX",
2888 "name": "Heading",
2889 "fill": "#111111",
2890 "textGrowth": "fixed-width",
2891 "width": "fill_container",
2892 "content": "Set a new password",
2893 "textAlign": "center",
2894 "fontFamily": "JetBrains Mono",
2895 "fontSize": 23,
2896 "fontWeight": "bold",
2897 "letterSpacing": -0.6
2898 },
2899 {
2900 "type": "text",
2901 "id": "dZukQ",
2902 "name": "Subheading",
2903 "fill": "#666666",
2904 "textGrowth": "fixed-width",
2905 "width": "fill_container",
2906 "content": "Recovery token verified. Your new password is checked against the server-side policy.",
2907 "lineHeight": 1.5,
2908 "textAlign": "center",
2909 "fontFamily": "Geist",
2910 "fontSize": 14,
2911 "fontWeight": "normal"
2912 }
2913 ]
2914 },
2915 {
2916 "type": "frame",
2917 "id": "rlM1K",
2918 "name": "Form",
2919 "width": "fill_container",
2920 "layout": "vertical",
2921 "gap": 15,
2922 "children": [
2923 {
2924 "type": "frame",
2925 "id": "HP56a",
2926 "name": "Account Chip",
2927 "width": "fill_container",
2928 "justifyContent": "center",
2929 "children": [
2930 {
2931 "type": "frame",
2932 "id": "K6GESx",
2933 "name": "Chip",
2934 "fill": "#F2F3F0",
2935 "cornerRadius": 8,
2936 "stroke": "#CBCCC9",
2937 "strokeWidth": 1,
2938 "gap": 8,
2939 "padding": [
2940 8,
2941 14
2942 ],
2943 "alignItems": "center",
2944 "children": [
2945 {
2946 "type": "icon",
2947 "id": "rD0H7",
2948 "name": "At",
2949 "width": 13,
2950 "height": 13,
2951 "icon": "at-sign",
2952 "library": "lucide",
2953 "fill": "#111111"
2954 },
2955 {
2956 "type": "text",
2957 "id": "XQiG8",
2958 "name": "Email",
2959 "fill": "#111111",
2960 "content": "ada.lock@kernel.dev",
2961 "fontFamily": "JetBrains Mono",
2962 "fontSize": 12.5,
2963 "fontWeight": "normal"
2964 },
2965 {
2966 "type": "text",
2967 "id": "ivQcF",
2968 "name": "Sep",
2969 "fill": "#CBCCC9",
2970 "content": "|",
2971 "fontFamily": "JetBrains Mono",
2972 "fontSize": 12.5,
2973 "fontWeight": "normal"
2974 },
2975 {
2976 "type": "text",
2977 "id": "uea3s",
2978 "name": "Token",
2979 "fill": "#004D1A",
2980 "content": "TOKEN VALID",
2981 "fontFamily": "JetBrains Mono",
2982 "fontSize": 10,
2983 "fontWeight": "bold",
2984 "letterSpacing": 1
2985 }
2986 ]
2987 }
2988 ]
2989 },
2990 {
2991 "type": "frame",
2992 "id": "JD1y8",
2993 "name": "NEW PASSPHRASE Field",
2994 "width": "fill_container",
2995 "layout": "vertical",
2996 "gap": 7,
2997 "children": [
2998 {
2999 "type": "frame",
3000 "id": "BTHfs",
3001 "name": "Label Row",
3002 "width": "fill_container",
3003 "justifyContent": "space_between",
3004 "alignItems": "center",
3005 "children": [
3006 {
3007 "type": "text",
3008 "id": "wh4eG",
3009 "name": "Label",
3010 "fill": "#666666",
3011 "content": "NEW PASSWORD",
3012 "fontFamily": "JetBrains Mono",
3013 "fontSize": 10,
3014 "fontWeight": "bold",
3015 "letterSpacing": 1.2
3016 }
3017 ]
3018 },
3019 {
3020 "type": "frame",
3021 "id": "SVsU8",
3022 "name": "Input",
3023 "width": "fill_container",
3024 "height": 46,
3025 "fill": "#FFFFFF",
3026 "cornerRadius": 10,
3027 "stroke": "#111111",
3028 "strokeWidth": 1.4,
3029 "gap": 10,
3030 "padding": [
3031 0,
3032 14
3033 ],
3034 "alignItems": "center",
3035 "children": [
3036 {
3037 "type": "icon",
3038 "id": "P3pqh",
3039 "name": "Icon",
3040 "width": 15,
3041 "height": 15,
3042 "icon": "lock",
3043 "library": "lucide",
3044 "fill": "#666666"
3045 },
3046 {
3047 "type": "text",
3048 "id": "EAxgI",
3049 "name": "Value",
3050 "fill": "#111111",
3051 "content": "••••••••••••••••",
3052 "fontFamily": "JetBrains Mono",
3053 "fontSize": 16,
3054 "fontWeight": "normal"
3055 },
3056 {
3057 "type": "frame",
3058 "id": "qjvBS",
3059 "name": "Spacer",
3060 "width": "fill_container",
3061 "height": 1
3062 },
3063 {
3064 "type": "icon",
3065 "id": "L6l7K",
3066 "name": "Reveal",
3067 "width": 16,
3068 "height": 16,
3069 "icon": "eye-off",
3070 "library": "lucide",
3071 "fill": "#666666"
3072 }
3073 ]
3074 }
3075 ]
3076 },
3077 {
3078 "type": "frame",
3079 "id": "v1rhr",
3080 "name": "Strength Row",
3081 "width": "fill_container",
3082 "gap": 10,
3083 "alignItems": "center",
3084 "children": [
3085 {
3086 "type": "frame",
3087 "id": "VieZd",
3088 "name": "Segments",
3089 "width": "fill_container",
3090 "gap": 6,
3091 "children": [
3092 {
3093 "type": "frame",
3094 "id": "ejWAa",
3095 "name": "Seg",
3096 "width": "fill_container",
3097 "height": 4,
3098 "fill": "#FF8400",
3099 "cornerRadius": 2
3100 },
3101 {
3102 "type": "frame",
3103 "id": "OvFIw",
3104 "name": "Seg",
3105 "width": "fill_container",
3106 "height": 4,
3107 "fill": "#FF8400",
3108 "cornerRadius": 2
3109 },
3110 {
3111 "type": "frame",
3112 "id": "t4XuD",
3113 "name": "Seg",
3114 "width": "fill_container",
3115 "height": 4,
3116 "fill": "#3DD68C",
3117 "cornerRadius": 2
3118 },
3119 {
3120 "type": "frame",
3121 "id": "H0U2l",
3122 "name": "Seg",
3123 "width": "fill_container",
3124 "height": 4,
3125 "fill": "#3DD68C",
3126 "cornerRadius": 2
3127 }
3128 ]
3129 },
3130 {
3131 "type": "text",
3132 "id": "J93Bt0",
3133 "name": "Text",
3134 "fill": "#004D1A",
3135 "content": "STRONG",
3136 "fontFamily": "JetBrains Mono",
3137 "fontSize": 10,
3138 "fontWeight": "bold",
3139 "letterSpacing": 1.2
3140 }
3141 ]
3142 },
3143 {
3144 "type": "frame",
3145 "id": "G658PO",
3146 "name": "CONFIRM PASSPHRASE Field",
3147 "width": "fill_container",
3148 "layout": "vertical",
3149 "gap": 7,
3150 "children": [
3151 {
3152 "type": "frame",
3153 "id": "PQBXW",
3154 "name": "Label Row",
3155 "width": "fill_container",
3156 "justifyContent": "space_between",
3157 "alignItems": "center",
3158 "children": [
3159 {
3160 "type": "text",
3161 "id": "EzMcK",
3162 "name": "Label",
3163 "fill": "#666666",
3164 "content": "CONFIRM NEW PASSWORD",
3165 "fontFamily": "JetBrains Mono",
3166 "fontSize": 10,
3167 "fontWeight": "bold",
3168 "letterSpacing": 1.2
3169 }
3170 ]
3171 },
3172 {
3173 "type": "frame",
3174 "id": "WJTg1",
3175 "name": "Input",
3176 "width": "fill_container",
3177 "height": 46,
3178 "fill": "#FFFFFF",
3179 "cornerRadius": 10,
3180 "stroke": "#CBCCC9",
3181 "strokeWidth": 1,
3182 "gap": 10,
3183 "padding": [
3184 0,
3185 14
3186 ],
3187 "alignItems": "center",
3188 "children": [
3189 {
3190 "type": "icon",
3191 "id": "ZSgSN",
3192 "name": "Icon",
3193 "width": 15,
3194 "height": 15,
3195 "icon": "lock",
3196 "library": "lucide",
3197 "fill": "#666666"
3198 },
3199 {
3200 "type": "text",
3201 "id": "q7wAd",
3202 "name": "Value",
3203 "fill": "#111111",
3204 "content": "••••••••••••••••",
3205 "fontFamily": "JetBrains Mono",
3206 "fontSize": 16,
3207 "fontWeight": "normal"
3208 },
3209 {
3210 "type": "frame",
3211 "id": "J34Af",
3212 "name": "Spacer",
3213 "width": "fill_container",
3214 "height": 1
3215 },
3216 {
3217 "type": "icon",
3218 "id": "pBzMW",
3219 "name": "Reveal",
3220 "width": 16,
3221 "height": 16,
3222 "icon": "eye",
3223 "library": "lucide",
3224 "fill": "#666666"
3225 }
3226 ]
3227 }
3228 ]
3229 },
3230 {
3231 "type": "frame",
3232 "id": "NJ2L0",
3233 "name": "Submit Button",
3234 "width": "fill_container",
3235 "height": 48,
3236 "fill": "#FF8400",
3237 "cornerRadius": 10,
3238 "effect": {
3239 "type": "shadow",
3240 "shadowType": "outer",
3241 "color": "#FF840066",
3242 "offset": {
3243 "x": 0,
3244 "y": 4
3245 },
3246 "blur": 14,
3247 "spread": -4
3248 },
3249 "gap": 9,
3250 "justifyContent": "center",
3251 "alignItems": "center",
3252 "children": [
3253 {
3254 "type": "text",
3255 "id": "W9TT10",
3256 "name": "Label",
3257 "fill": "#111111",
3258 "content": "Update passphrase",
3259 "fontFamily": "JetBrains Mono",
3260 "fontSize": 14,
3261 "fontWeight": "bold",
3262 "letterSpacing": 0.4
3263 },
3264 {
3265 "type": "icon",
3266 "id": "p7X3rH",
3267 "name": "Arrow",
3268 "width": 15,
3269 "height": 15,
3270 "icon": "arrow-right",
3271 "library": "lucide",
3272 "fill": "#111111"
3273 }
3274 ]
3275 }
3276 ]
3277 }
3278 ]
3279 },
3280 {
3281 "type": "frame",
3282 "id": "Di0dW",
3283 "layoutPosition": "absolute",
3284 "x": 40,
3285 "y": 846,
3286 "name": "Status Row",
3287 "width": 1360,
3288 "gap": 10,
3289 "justifyContent": "center",
3290 "alignItems": "center",
3291 "children": [
3292 {
3293 "type": "frame",
3294 "id": "U4FbO",
3295 "name": "Dot",
3296 "width": 8,
3297 "height": 8,
3298 "justifyContent": "center",
3299 "alignItems": "center",
3300 "children": [
3301 {
3302 "type": "ellipse",
3303 "id": "whIeG",
3304 "name": "Dot",
3305 "fill": "$--color-success-foreground",
3306 "width": 7,
3307 "height": 7
3308 }
3309 ]
3310 },
3311 {
3312 "type": "text",
3313 "id": "z1JFHU",
3314 "name": "Status",
3315 "fill": "$--muted-foreground",
3316 "content": "ALL SYSTEMS OPERATIONAL",
3317 "fontFamily": "$--font-primary",
3318 "fontSize": 11,
3319 "fontWeight": "normal",
3320 "letterSpacing": 0.5
3321 },
3322 {
3323 "type": "text",
3324 "id": "Mz92z",
3325 "name": "Sep",
3326 "fill": "$--border",
3327 "content": "·",
3328 "fontFamily": "$--font-primary",
3329 "fontSize": 11,
3330 "fontWeight": "normal"
3331 },
3332 {
3333 "type": "text",
3334 "id": "Sfqx7",
3335 "name": "Region",
3336 "fill": "$--muted-foreground",
3337 "content": "REGION EU-CENTRAL-1",
3338 "fontFamily": "$--font-primary",
3339 "fontSize": 11,
3340 "fontWeight": "normal",
3341 "letterSpacing": 0.5
3342 },
3343 {
3344 "type": "text",
3345 "id": "r8VcXv",
3346 "name": "Sep2",
3347 "fill": "$--border",
3348 "content": "·",
3349 "fontFamily": "$--font-primary",
3350 "fontSize": 11,
3351 "fontWeight": "normal"
3352 },
3353 {
3354 "type": "text",
3355 "id": "stMwi",
3356 "name": "Copy",
3357 "fill": "$--muted-foreground",
3358 "content": "© 2026 GitDataAI",
3359 "fontFamily": "$--font-primary",
3360 "fontSize": 11,
3361 "fontWeight": "normal",
3362 "letterSpacing": 0.5
3363 }
3364 ]
3365 },
3366 {
3367 "type": "frame",
3368 "id": "cm9ZM",
3369 "layoutPosition": "absolute",
3370 "x": 40,
3371 "y": 454,
3372 "name": "Edge Label L",
3373 "rotation": 90,
3374 "width": 114,
3375 "height": 16,
3376 "gap": 10,
3377 "alignItems": "center",
3378 "children": [
3379 {
3380 "type": "text",
3381 "id": "k5Wmt",
3382 "name": "Text",
3383 "fill": "$--muted-foreground",
3384 "content": "AUTH · v4.2.0",
3385 "fontFamily": "$--font-primary",
3386 "fontSize": 10,
3387 "fontWeight": "normal",
3388 "letterSpacing": 1.6
3389 }
3390 ]
3391 },
3392 {
3393 "type": "frame",
3394 "id": "K4UXle",
3395 "layoutPosition": "absolute",
3396 "x": 1250,
3397 "y": 454,
3398 "name": "Edge Label R",
3399 "rotation": 90,
3400 "width": 152,
3401 "height": 16,
3402 "gap": 10,
3403 "alignItems": "center",
3404 "children": [
3405 {
3406 "type": "text",
3407 "id": "x3ay7n",
3408 "name": "Text",
3409 "fill": "$--muted-foreground",
3410 "content": "TLS 1.3 · TOTP-SHA1",
3411 "fontFamily": "$--font-primary",
3412 "fontSize": 10,
3413 "fontWeight": "normal",
3414 "letterSpacing": 1.6
3415 }
3416 ]
3417 },
3418 {
3419 "type": "frame",
3420 "id": "uQlOF",
3421 "layoutPosition": "absolute",
3422 "x": 490,
3423 "y": 822,
3424 "name": "Hint",
3425 "width": 460,
3426 "height": 14,
3427 "gap": 7,
3428 "justifyContent": "center",
3429 "alignItems": "center",
3430 "children": [
3431 {
3432 "type": "text",
3433 "id": "yD7cw",
3434 "name": "Hint Text",
3435 "fill": "$--muted-foreground",
3436 "content": "ALL OTHER SESSIONS WILL BE SIGNED OUT",
3437 "fontFamily": "$--font-primary",
3438 "fontSize": 10,
3439 "fontWeight": "normal",
3440 "letterSpacing": 1.2
3441 }
3442 ]
3443 },
3444 {
3445 "type": "frame",
3446 "id": "yK5sy",
3447 "layoutPosition": "absolute",
3448 "x": 70,
3449 "y": 36,
3450 "name": "Breadcrumb",
3451 "gap": 8,
3452 "alignItems": "center",
3453 "children": [
3454 {
3455 "type": "frame",
3456 "id": "TRMeu",
3457 "name": "Logo",
3458 "width": 14,
3459 "height": 14,
3460 "fill": "#FF8400",
3461 "cornerRadius": 4
3462 },
3463 {
3464 "type": "text",
3465 "id": "LN0fq",
3466 "name": "Root",
3467 "fill": "#111111",
3468 "content": "GitDataAI",
3469 "fontFamily": "JetBrains Mono",
3470 "fontSize": 10,
3471 "fontWeight": "bold",
3472 "letterSpacing": 1.2
3473 },
3474 {
3475 "type": "text",
3476 "id": "K4ZirV",
3477 "name": "Sep1",
3478 "fill": "#CBCCC9",
3479 "content": "/",
3480 "fontFamily": "JetBrains Mono",
3481 "fontSize": 10,
3482 "fontWeight": "normal"
3483 },
3484 {
3485 "type": "text",
3486 "id": "hdBZR",
3487 "name": "Section",
3488 "fill": "#666666",
3489 "content": "AUTH",
3490 "fontFamily": "JetBrains Mono",
3491 "fontSize": 10,
3492 "fontWeight": "normal",
3493 "letterSpacing": 1.2
3494 },
3495 {
3496 "type": "text",
3497 "id": "EbvQ9",
3498 "name": "Sep2",
3499 "fill": "#CBCCC9",
3500 "content": "/",
3501 "fontFamily": "JetBrains Mono",
3502 "fontSize": 10,
3503 "fontWeight": "normal"
3504 },
3505 {
3506 "type": "text",
3507 "id": "RODw2",
3508 "name": "Current",
3509 "fill": "#804200",
3510 "content": "NEW PASSWORD",
3511 "fontFamily": "JetBrains Mono",
3512 "fontSize": 10,
3513 "fontWeight": "bold",
3514 "letterSpacing": 1.2
3515 }
3516 ]
3517 }
3518 ]
3519 },
3520 {
3521 "type": "frame",
3522 "id": "wFhcq",
3523 "x": 0,
3524 "y": 2120,
3525 "name": "5. Email Verification",
3526 "clip": true,
3527 "width": 1440,
3528 "height": 900,
3529 "fill": "$--background",
3530 "layout": "vertical",
3531 "gap": 26,
3532 "padding": [
3533 56,
3534 40,
3535 40,
3536 40
3537 ],
3538 "justifyContent": "center",
3539 "alignItems": "center",
3540 "children": [
3541 {
3542 "type": "frame",
3543 "id": "y1drjN",
3544 "layoutPosition": "absolute",
3545 "x": 270,
3546 "y": 150,
3547 "name": "Ambient Glow",
3548 "width": 900,
3549 "height": 600,
3550 "fill": {
3551 "type": "gradient",
3552 "gradientType": "radial",
3553 "enabled": true,
3554 "rotation": 0,
3555 "size": {
3556 "width": 1,
3557 "height": 1
3558 },
3559 "colors": [
3560 {
3561 "color": "#FF840026",
3562 "position": 0
3563 },
3564 {
3565 "color": "#FF840000",
3566 "position": 1
3567 }
3568 ]
3569 }
3570 },
3571 {
3572 "type": "frame",
3573 "id": "E8FyK",
3574 "layoutPosition": "absolute",
3575 "x": 0,
3576 "y": 0,
3577 "name": "Hairline Field",
3578 "width": 1440,
3579 "height": 900,
3580 "fill": {
3581 "type": "gradient",
3582 "gradientType": "linear",
3583 "enabled": true,
3584 "rotation": 180,
3585 "size": {
3586 "height": 1
3587 },
3588 "colors": [
3589 {
3590 "color": "#00000000",
3591 "position": 0.55
3592 },
3593 {
3594 "color": "#00000009",
3595 "position": 1
3596 }
3597 ]
3598 }
3599 },
3600 {
3601 "type": "frame",
3602 "id": "H5ym0B",
3603 "layoutPosition": "absolute",
3604 "x": 36,
3605 "y": 36,
3606 "name": "Mark TL",
3607 "width": 18,
3608 "height": 18,
3609 "stroke": "$--border",
3610 "strokeWidth": {
3611 "top": 1,
3612 "left": 1
3613 },
3614 "layout": "none"
3615 },
3616 {
3617 "type": "frame",
3618 "id": "wVTXC",
3619 "layoutPosition": "absolute",
3620 "x": 1404,
3621 "y": 36,
3622 "name": "Mark TR",
3623 "width": 18,
3624 "height": 18,
3625 "stroke": "$--border",
3626 "strokeWidth": {
3627 "top": 1,
3628 "right": 1
3629 },
3630 "layout": "none"
3631 },
3632 {
3633 "type": "frame",
3634 "id": "DeK4I",
3635 "layoutPosition": "absolute",
3636 "x": 36,
3637 "y": 864,
3638 "name": "Mark BL",
3639 "width": 18,
3640 "height": 18,
3641 "stroke": "$--border",
3642 "strokeWidth": {
3643 "bottom": 1,
3644 "left": 1
3645 },
3646 "layout": "none"
3647 },
3648 {
3649 "type": "frame",
3650 "id": "ruJ68",
3651 "layoutPosition": "absolute",
3652 "x": 1404,
3653 "y": 864,
3654 "name": "Mark BR",
3655 "width": 18,
3656 "height": 18,
3657 "stroke": "$--border",
3658 "strokeWidth": {
3659 "right": 1,
3660 "bottom": 1
3661 },
3662 "layout": "none"
3663 },
3664 {
3665 "type": "frame",
3666 "id": "zuMas",
3667 "name": "Login Card",
3668 "width": 440,
3669 "fill": "$--card",
3670 "cornerRadius": "$--radius-m",
3671 "stroke": "$--border",
3672 "strokeWidth": 1,
3673 "effect": [
3674 {
3675 "type": "shadow",
3676 "shadowType": "outer",
3677 "color": "#1111111F",
3678 "offset": {
3679 "x": 0,
3680 "y": 18
3681 },
3682 "blur": 44,
3683 "spread": -8
3684 },
3685 {
3686 "type": "shadow",
3687 "shadowType": "outer",
3688 "color": "#1111110A",
3689 "offset": {
3690 "x": 0,
3691 "y": 2
3692 },
3693 "blur": 6
3694 }
3695 ],
3696 "layout": "vertical",
3697 "gap": 22,
3698 "padding": 32,
3699 "children": [
3700 {
3701 "type": "frame",
3702 "id": "JvGu8",
3703 "name": "Card Header",
3704 "width": "fill_container",
3705 "layout": "vertical",
3706 "gap": 12,
3707 "alignItems": "center",
3708 "children": [
3709 {
3710 "type": "frame",
3711 "id": "I17dwA",
3712 "name": "Icon Badge",
3713 "width": 44,
3714 "height": 44,
3715 "fill": "#FF8400",
3716 "cornerRadius": 12,
3717 "justifyContent": "center",
3718 "alignItems": "center",
3719 "children": [
3720 {
3721 "type": "icon",
3722 "id": "NIAJt",
3723 "name": "Mail",
3724 "width": 20,
3725 "height": 20,
3726 "icon": "mail",
3727 "library": "lucide",
3728 "fill": "#111111"
3729 }
3730 ]
3731 },
3732 {
3733 "type": "text",
3734 "id": "MGHJS",
3735 "name": "Heading",
3736 "fill": "#111111",
3737 "textGrowth": "fixed-width",
3738 "width": "fill_container",
3739 "content": "Check your inbox",
3740 "textAlign": "center",
3741 "fontFamily": "JetBrains Mono",
3742 "fontSize": 23,
3743 "fontWeight": "bold",
3744 "letterSpacing": -0.6
3745 },
3746 {
3747 "type": "text",
3748 "id": "utaxn",
3749 "name": "Subheading",
3750 "fill": "#666666",
3751 "textGrowth": "fixed-width",
3752 "width": "fill_container",
3753 "content": "We sent a verification link to",
3754 "lineHeight": 1.5,
3755 "textAlign": "center",
3756 "fontFamily": "Geist",
3757 "fontSize": 14,
3758 "fontWeight": "normal"
3759 },
3760 {
3761 "type": "frame",
3762 "id": "z3DskJ",
3763 "name": "Address Chip",
3764 "width": "fill_container",
3765 "gap": 8,
3766 "justifyContent": "center",
3767 "children": [
3768 {
3769 "type": "frame",
3770 "id": "vNcRQ",
3771 "name": "Chip",
3772 "fill": "#F2F3F0",
3773 "cornerRadius": 8,
3774 "stroke": "#CBCCC9",
3775 "strokeWidth": 1,
3776 "gap": 8,
3777 "padding": [
3778 8,
3779 14
3780 ],
3781 "alignItems": "center",
3782 "children": [
3783 {
3784 "type": "icon",
3785 "id": "M4iPnp",
3786 "name": "At",
3787 "width": 13,
3788 "height": 13,
3789 "icon": "at-sign",
3790 "library": "lucide",
3791 "fill": "#111111"
3792 },
3793 {
3794 "type": "text",
3795 "id": "UOq7k",
3796 "name": "Email",
3797 "fill": "#111111",
3798 "content": "ada.lock@kernel.dev",
3799 "fontFamily": "JetBrains Mono",
3800 "fontSize": 12.5,
3801 "fontWeight": "normal"
3802 }
3803 ]
3804 },
3805 {
3806 "type": "frame",
3807 "id": "aALYh",
3808 "name": "Purpose Pill",
3809 "fill": "#F2F3F0",
3810 "cornerRadius": 6,
3811 "stroke": "#CBCCC9",
3812 "strokeWidth": 1,
3813 "padding": [
3814 4,
3815 8
3816 ],
3817 "children": [
3818 {
3819 "type": "text",
3820 "id": "RQzQR",
3821 "name": "Text",
3822 "fill": "#666666",
3823 "content": "PURPOSE · SIGNUP",
3824 "fontFamily": "JetBrains Mono",
3825 "fontSize": 9.5,
3826 "fontWeight": "bold",
3827 "letterSpacing": 1
3828 }
3829 ]
3830 }
3831 ]
3832 },
3833 {
3834 "type": "text",
3835 "id": "sRd9m",
3836 "name": "Expiry",
3837 "fill": "#666666",
3838 "textGrowth": "fixed-width",
3839 "width": "fill_container",
3840 "content": "The link expires in 24 hours. Open it on this device to continue.",
3841 "lineHeight": 1.5,
3842 "textAlign": "center",
3843 "fontFamily": "Geist",
3844 "fontSize": 12.5,
3845 "fontWeight": "normal"
3846 }
3847 ]
3848 },
3849 {
3850 "type": "frame",
3851 "id": "ngy0Z",
3852 "name": "Form",
3853 "width": "fill_container",
3854 "layout": "vertical",
3855 "gap": 15,
3856 "children": [
3857 {
3858 "type": "frame",
3859 "id": "VjbTQ",
3860 "name": "Submit Button",
3861 "width": "fill_container",
3862 "height": 48,
3863 "fill": "#FF8400",
3864 "cornerRadius": 10,
3865 "effect": {
3866 "type": "shadow",
3867 "shadowType": "outer",
3868 "color": "#FF840066",
3869 "offset": {
3870 "x": 0,
3871 "y": 4
3872 },
3873 "blur": 14,
3874 "spread": -4
3875 },
3876 "gap": 9,
3877 "justifyContent": "center",
3878 "alignItems": "center",
3879 "children": [
3880 {
3881 "type": "text",
3882 "id": "Ftqt6",
3883 "name": "Label",
3884 "fill": "#111111",
3885 "content": "I have verified my email",
3886 "fontFamily": "JetBrains Mono",
3887 "fontSize": 14,
3888 "fontWeight": "bold",
3889 "letterSpacing": 0.4
3890 },
3891 {
3892 "type": "icon",
3893 "id": "maTlv",
3894 "name": "Arrow",
3895 "width": 15,
3896 "height": 15,
3897 "icon": "arrow-right",
3898 "library": "lucide",
3899 "fill": "#111111"
3900 }
3901 ]
3902 },
3903 {
3904 "type": "frame",
3905 "id": "F56U5",
3906 "name": "Divider",
3907 "width": "fill_container",
3908 "gap": 12,
3909 "alignItems": "center",
3910 "children": [
3911 {
3912 "type": "frame",
3913 "id": "ayzVD",
3914 "name": "Line L",
3915 "width": "fill_container",
3916 "height": 1,
3917 "fill": "#CBCCC9"
3918 },
3919 {
3920 "type": "text",
3921 "id": "vgPpx",
3922 "name": "Text",
3923 "fill": "#666666",
3924 "content": "DID NOT ARRIVE?",
3925 "fontFamily": "JetBrains Mono",
3926 "fontSize": 10,
3927 "fontWeight": "bold",
3928 "letterSpacing": 1.1
3929 },
3930 {
3931 "type": "frame",
3932 "id": "UYEt4",
3933 "name": "Line R",
3934 "width": "fill_container",
3935 "height": 1,
3936 "fill": "#CBCCC9"
3937 }
3938 ]
3939 },
3940 {
3941 "type": "frame",
3942 "id": "a2PgV",
3943 "name": "Resend Button",
3944 "width": "fill_container",
3945 "height": 44,
3946 "fill": "#FFFFFF",
3947 "cornerRadius": 10,
3948 "stroke": "#CBCCC9",
3949 "strokeWidth": 1,
3950 "gap": 8,
3951 "justifyContent": "center",
3952 "alignItems": "center",
3953 "children": [
3954 {
3955 "type": "icon",
3956 "id": "aqNRp",
3957 "name": "Icon",
3958 "width": 15,
3959 "height": 15,
3960 "icon": "refresh-cw",
3961 "library": "lucide",
3962 "fill": "#111111"
3963 },
3964 {
3965 "type": "text",
3966 "id": "Ve5fT",
3967 "name": "Label",
3968 "fill": "#111111",
3969 "content": "Resend email (00:42)",
3970 "fontFamily": "Geist",
3971 "fontSize": 13.5,
3972 "fontWeight": "normal"
3973 }
3974 ]
3975 },
3976 {
3977 "type": "frame",
3978 "id": "xpSYh",
3979 "name": "Back Row",
3980 "width": "fill_container",
3981 "gap": 6,
3982 "justifyContent": "center",
3983 "children": [
3984 {
3985 "type": "text",
3986 "id": "w5nuGc",
3987 "name": "Q",
3988 "fill": "#666666",
3989 "content": "Wrong address?",
3990 "fontFamily": "Geist",
3991 "fontSize": 13,
3992 "fontWeight": "normal"
3993 },
3994 {
3995 "type": "text",
3996 "id": "PXZSs",
3997 "name": "Link",
3998 "fill": "#111111",
3999 "content": "Change email",
4000 "fontFamily": "Geist",
4001 "fontSize": 13,
4002 "fontWeight": "bold"
4003 }
4004 ]
4005 }
4006 ]
4007 }
4008 ]
4009 },
4010 {
4011 "type": "frame",
4012 "id": "pztre",
4013 "layoutPosition": "absolute",
4014 "x": 40,
4015 "y": 846,
4016 "name": "Status Row",
4017 "width": 1360,
4018 "gap": 10,
4019 "justifyContent": "center",
4020 "alignItems": "center",
4021 "children": [
4022 {
4023 "type": "frame",
4024 "id": "grHXw",
4025 "name": "Dot",
4026 "width": 8,
4027 "height": 8,
4028 "justifyContent": "center",
4029 "alignItems": "center",
4030 "children": [
4031 {
4032 "type": "ellipse",
4033 "id": "Ce8VX",
4034 "name": "Dot",
4035 "fill": "$--color-success-foreground",
4036 "width": 7,
4037 "height": 7
4038 }
4039 ]
4040 },
4041 {
4042 "type": "text",
4043 "id": "ap4XC",
4044 "name": "Status",
4045 "fill": "$--muted-foreground",
4046 "content": "ALL SYSTEMS OPERATIONAL",
4047 "fontFamily": "$--font-primary",
4048 "fontSize": 11,
4049 "fontWeight": "normal",
4050 "letterSpacing": 0.5
4051 },
4052 {
4053 "type": "text",
4054 "id": "tgUTa",
4055 "name": "Sep",
4056 "fill": "$--border",
4057 "content": "·",
4058 "fontFamily": "$--font-primary",
4059 "fontSize": 11,
4060 "fontWeight": "normal"
4061 },
4062 {
4063 "type": "text",
4064 "id": "UVcSv",
4065 "name": "Region",
4066 "fill": "$--muted-foreground",
4067 "content": "REGION EU-CENTRAL-1",
4068 "fontFamily": "$--font-primary",
4069 "fontSize": 11,
4070 "fontWeight": "normal",
4071 "letterSpacing": 0.5
4072 },
4073 {
4074 "type": "text",
4075 "id": "WfNLW",
4076 "name": "Sep2",
4077 "fill": "$--border",
4078 "content": "·",
4079 "fontFamily": "$--font-primary",
4080 "fontSize": 11,
4081 "fontWeight": "normal"
4082 },
4083 {
4084 "type": "text",
4085 "id": "kFV58",
4086 "name": "Copy",
4087 "fill": "$--muted-foreground",
4088 "content": "© 2026 GitDataAI",
4089 "fontFamily": "$--font-primary",
4090 "fontSize": 11,
4091 "fontWeight": "normal",
4092 "letterSpacing": 0.5
4093 }
4094 ]
4095 },
4096 {
4097 "type": "frame",
4098 "id": "mzoZK",
4099 "layoutPosition": "absolute",
4100 "x": 40,
4101 "y": 454,
4102 "name": "Edge Label L",
4103 "rotation": 90,
4104 "width": 114,
4105 "height": 16,
4106 "gap": 10,
4107 "alignItems": "center",
4108 "children": [
4109 {
4110 "type": "text",
4111 "id": "puM7q",
4112 "name": "Text",
4113 "fill": "$--muted-foreground",
4114 "content": "AUTH · v4.2.0",
4115 "fontFamily": "$--font-primary",
4116 "fontSize": 10,
4117 "fontWeight": "normal",
4118 "letterSpacing": 1.6
4119 }
4120 ]
4121 },
4122 {
4123 "type": "frame",
4124 "id": "YY55d",
4125 "layoutPosition": "absolute",
4126 "x": 1250,
4127 "y": 454,
4128 "name": "Edge Label R",
4129 "rotation": 90,
4130 "width": 152,
4131 "height": 16,
4132 "gap": 10,
4133 "alignItems": "center",
4134 "children": [
4135 {
4136 "type": "text",
4137 "id": "BmmIy",
4138 "name": "Text",
4139 "fill": "$--muted-foreground",
4140 "content": "TLS 1.3 · TOTP-SHA1",
4141 "fontFamily": "$--font-primary",
4142 "fontSize": 10,
4143 "fontWeight": "normal",
4144 "letterSpacing": 1.6
4145 }
4146 ]
4147 },
4148 {
4149 "type": "frame",
4150 "id": "bXqyI",
4151 "layoutPosition": "absolute",
4152 "x": 490,
4153 "y": 822,
4154 "name": "Hint",
4155 "width": 460,
4156 "height": 14,
4157 "gap": 7,
4158 "justifyContent": "center",
4159 "alignItems": "center",
4160 "children": [
4161 {
4162 "type": "text",
4163 "id": "tRTTj",
4164 "name": "Hint Text",
4165 "fill": "$--muted-foreground",
4166 "content": "CHECK SPAM FOLDER · SMTP DELIVERY ~5S",
4167 "fontFamily": "$--font-primary",
4168 "fontSize": 10,
4169 "fontWeight": "normal",
4170 "letterSpacing": 1.2
4171 }
4172 ]
4173 },
4174 {
4175 "type": "frame",
4176 "id": "kfaFY",
4177 "layoutPosition": "absolute",
4178 "x": 70,
4179 "y": 36,
4180 "name": "Breadcrumb",
4181 "gap": 8,
4182 "alignItems": "center",
4183 "children": [
4184 {
4185 "type": "frame",
4186 "id": "VLhQK",
4187 "name": "Logo",
4188 "width": 14,
4189 "height": 14,
4190 "fill": "#FF8400",
4191 "cornerRadius": 4
4192 },
4193 {
4194 "type": "text",
4195 "id": "hNLXh",
4196 "name": "Root",
4197 "fill": "#111111",
4198 "content": "GitDataAI",
4199 "fontFamily": "JetBrains Mono",
4200 "fontSize": 10,
4201 "fontWeight": "bold",
4202 "letterSpacing": 1.2
4203 },
4204 {
4205 "type": "text",
4206 "id": "mIYt8",
4207 "name": "Sep1",
4208 "fill": "#CBCCC9",
4209 "content": "/",
4210 "fontFamily": "JetBrains Mono",
4211 "fontSize": 10,
4212 "fontWeight": "normal"
4213 },
4214 {
4215 "type": "text",
4216 "id": "Aamcl",
4217 "name": "Section",
4218 "fill": "#666666",
4219 "content": "AUTH",
4220 "fontFamily": "JetBrains Mono",
4221 "fontSize": 10,
4222 "fontWeight": "normal",
4223 "letterSpacing": 1.2
4224 },
4225 {
4226 "type": "text",
4227 "id": "yU85w",
4228 "name": "Sep2",
4229 "fill": "#CBCCC9",
4230 "content": "/",
4231 "fontFamily": "JetBrains Mono",
4232 "fontSize": 10,
4233 "fontWeight": "normal"
4234 },
4235 {
4236 "type": "text",
4237 "id": "lZnk5",
4238 "name": "Current",
4239 "fill": "#804200",
4240 "content": "VERIFY EMAIL",
4241 "fontFamily": "JetBrains Mono",
4242 "fontSize": 10,
4243 "fontWeight": "bold",
4244 "letterSpacing": 1.2
4245 }
4246 ]
4247 }
4248 ]
4249 },
4250 {
4251 "type": "frame",
4252 "id": "clhhh",
4253 "x": 1600,
4254 "y": 2120,
4255 "name": "6. Two-Factor Auth",
4256 "clip": true,
4257 "width": 1440,
4258 "height": 900,
4259 "fill": "$--background",
4260 "layout": "vertical",
4261 "gap": 26,
4262 "padding": [
4263 56,
4264 40,
4265 40,
4266 40
4267 ],
4268 "justifyContent": "center",
4269 "alignItems": "center",
4270 "children": [
4271 {
4272 "type": "frame",
4273 "id": "cCiXu",
4274 "layoutPosition": "absolute",
4275 "x": 270,
4276 "y": 150,
4277 "name": "Ambient Glow",
4278 "width": 900,
4279 "height": 600,
4280 "fill": {
4281 "type": "gradient",
4282 "gradientType": "radial",
4283 "enabled": true,
4284 "rotation": 0,
4285 "size": {
4286 "width": 1,
4287 "height": 1
4288 },
4289 "colors": [
4290 {
4291 "color": "#FF840026",
4292 "position": 0
4293 },
4294 {
4295 "color": "#FF840000",
4296 "position": 1
4297 }
4298 ]
4299 }
4300 },
4301 {
4302 "type": "frame",
4303 "id": "fZ06D",
4304 "layoutPosition": "absolute",
4305 "x": 0,
4306 "y": 0,
4307 "name": "Hairline Field",
4308 "width": 1440,
4309 "height": 900,
4310 "fill": {
4311 "type": "gradient",
4312 "gradientType": "linear",
4313 "enabled": true,
4314 "rotation": 180,
4315 "size": {
4316 "height": 1
4317 },
4318 "colors": [
4319 {
4320 "color": "#00000000",
4321 "position": 0.55
4322 },
4323 {
4324 "color": "#00000009",
4325 "position": 1
4326 }
4327 ]
4328 }
4329 },
4330 {
4331 "type": "frame",
4332 "id": "c1qA7",
4333 "layoutPosition": "absolute",
4334 "x": 36,
4335 "y": 36,
4336 "name": "Mark TL",
4337 "width": 18,
4338 "height": 18,
4339 "stroke": "$--border",
4340 "strokeWidth": {
4341 "top": 1,
4342 "left": 1
4343 },
4344 "layout": "none"
4345 },
4346 {
4347 "type": "frame",
4348 "id": "Aou1A",
4349 "layoutPosition": "absolute",
4350 "x": 1404,
4351 "y": 36,
4352 "name": "Mark TR",
4353 "width": 18,
4354 "height": 18,
4355 "stroke": "$--border",
4356 "strokeWidth": {
4357 "top": 1,
4358 "right": 1
4359 },
4360 "layout": "none"
4361 },
4362 {
4363 "type": "frame",
4364 "id": "GbHMm",
4365 "layoutPosition": "absolute",
4366 "x": 36,
4367 "y": 864,
4368 "name": "Mark BL",
4369 "width": 18,
4370 "height": 18,
4371 "stroke": "$--border",
4372 "strokeWidth": {
4373 "bottom": 1,
4374 "left": 1
4375 },
4376 "layout": "none"
4377 },
4378 {
4379 "type": "frame",
4380 "id": "nElBJ",
4381 "layoutPosition": "absolute",
4382 "x": 1404,
4383 "y": 864,
4384 "name": "Mark BR",
4385 "width": 18,
4386 "height": 18,
4387 "stroke": "$--border",
4388 "strokeWidth": {
4389 "right": 1,
4390 "bottom": 1
4391 },
4392 "layout": "none"
4393 },
4394 {
4395 "type": "frame",
4396 "id": "OoSg9",
4397 "name": "Login Card",
4398 "width": 440,
4399 "fill": "$--card",
4400 "cornerRadius": "$--radius-m",
4401 "stroke": "$--border",
4402 "strokeWidth": 1,
4403 "effect": [
4404 {
4405 "type": "shadow",
4406 "shadowType": "outer",
4407 "color": "#1111111F",
4408 "offset": {
4409 "x": 0,
4410 "y": 18
4411 },
4412 "blur": 44,
4413 "spread": -8
4414 },
4415 {
4416 "type": "shadow",
4417 "shadowType": "outer",
4418 "color": "#1111110A",
4419 "offset": {
4420 "x": 0,
4421 "y": 2
4422 },
4423 "blur": 6
4424 }
4425 ],
4426 "layout": "vertical",
4427 "gap": 22,
4428 "padding": 32,
4429 "children": [
4430 {
4431 "type": "frame",
4432 "id": "ayFa5",
4433 "name": "Card Header",
4434 "width": "fill_container",
4435 "layout": "vertical",
4436 "gap": 12,
4437 "alignItems": "center",
4438 "children": [
4439 {
4440 "type": "frame",
4441 "id": "Cfxmj",
4442 "name": "Icon Badge",
4443 "width": 44,
4444 "height": 44,
4445 "fill": "#111111",
4446 "cornerRadius": 12,
4447 "justifyContent": "center",
4448 "alignItems": "center",
4449 "children": [
4450 {
4451 "type": "icon",
4452 "id": "MjZHp",
4453 "name": "Shield",
4454 "width": 20,
4455 "height": 20,
4456 "icon": "smartphone",
4457 "library": "lucide",
4458 "fill": "#FF8400"
4459 }
4460 ]
4461 },
4462 {
4463 "type": "text",
4464 "id": "E20xoV",
4465 "name": "Heading",
4466 "fill": "#111111",
4467 "textGrowth": "fixed-width",
4468 "width": "fill_container",
4469 "content": "Two-factor code",
4470 "textAlign": "center",
4471 "fontFamily": "JetBrains Mono",
4472 "fontSize": 23,
4473 "fontWeight": "bold",
4474 "letterSpacing": -0.6
4475 },
4476 {
4477 "type": "text",
4478 "id": "vooIj",
4479 "name": "Subheading",
4480 "fill": "#666666",
4481 "textGrowth": "fixed-width",
4482 "width": "fill_container",
4483 "content": "Enter the 6-digit code from your authenticator app for account ada.lock@kernel.dev.",
4484 "lineHeight": 1.5,
4485 "textAlign": "center",
4486 "fontFamily": "Geist",
4487 "fontSize": 14,
4488 "fontWeight": "normal"
4489 }
4490 ]
4491 },
4492 {
4493 "type": "frame",
4494 "id": "G76ad",
4495 "name": "Form",
4496 "width": "fill_container",
4497 "layout": "vertical",
4498 "gap": 15,
4499 "children": [
4500 {
4501 "type": "frame",
4502 "id": "K5xBDX",
4503 "name": "Label Row",
4504 "width": "fill_container",
4505 "justifyContent": "space_between",
4506 "alignItems": "center",
4507 "children": [
4508 {
4509 "type": "text",
4510 "id": "iYYOE",
4511 "name": "Label",
4512 "fill": "#666666",
4513 "content": "AUTHENTICATION CODE",
4514 "fontFamily": "JetBrains Mono",
4515 "fontSize": 10,
4516 "fontWeight": "bold",
4517 "letterSpacing": 1.2
4518 },
4519 {
4520 "type": "text",
4521 "id": "KxT45",
4522 "name": "Timer",
4523 "fill": "#804200",
4524 "content": "EXPIRES IN 04:32",
4525 "fontFamily": "JetBrains Mono",
4526 "fontSize": 10,
4527 "fontWeight": "bold",
4528 "letterSpacing": 1.2
4529 }
4530 ]
4531 },
4532 {
4533 "type": "frame",
4534 "id": "l9jQ7",
4535 "name": "OTP Row",
4536 "width": "fill_container",
4537 "gap": 10,
4538 "children": [
4539 {
4540 "type": "frame",
4541 "id": "gNiOo",
4542 "name": "Digit 1",
4543 "width": "fill_container",
4544 "height": 58,
4545 "fill": "#FFFFFF",
4546 "cornerRadius": 10,
4547 "stroke": "#CBCCC9",
4548 "strokeWidth": 1,
4549 "justifyContent": "center",
4550 "alignItems": "center",
4551 "children": [
4552 {
4553 "type": "text",
4554 "id": "Y4sn7",
4555 "name": "Num",
4556 "fill": "#111111",
4557 "content": "4",
4558 "fontFamily": "JetBrains Mono",
4559 "fontSize": 22,
4560 "fontWeight": "bold"
4561 }
4562 ]
4563 },
4564 {
4565 "type": "frame",
4566 "id": "z8lE7e",
4567 "name": "Digit 2",
4568 "width": "fill_container",
4569 "height": 58,
4570 "fill": "#FFFFFF",
4571 "cornerRadius": 10,
4572 "stroke": "#CBCCC9",
4573 "strokeWidth": 1,
4574 "justifyContent": "center",
4575 "alignItems": "center",
4576 "children": [
4577 {
4578 "type": "text",
4579 "id": "nBYaB",
4580 "name": "Num",
4581 "fill": "#111111",
4582 "content": "8",
4583 "fontFamily": "JetBrains Mono",
4584 "fontSize": 22,
4585 "fontWeight": "bold"
4586 }
4587 ]
4588 },
4589 {
4590 "type": "frame",
4591 "id": "jeqCX",
4592 "name": "Digit 3",
4593 "width": "fill_container",
4594 "height": 58,
4595 "fill": "#FFFFFF",
4596 "cornerRadius": 10,
4597 "stroke": "#CBCCC9",
4598 "strokeWidth": 1,
4599 "justifyContent": "center",
4600 "alignItems": "center",
4601 "children": [
4602 {
4603 "type": "text",
4604 "id": "FHoOC",
4605 "name": "Num",
4606 "fill": "#111111",
4607 "content": "2",
4608 "fontFamily": "JetBrains Mono",
4609 "fontSize": 22,
4610 "fontWeight": "bold"
4611 }
4612 ]
4613 },
4614 {
4615 "type": "frame",
4616 "id": "eVsKo",
4617 "name": "Digit 4",
4618 "width": "fill_container",
4619 "height": 58,
4620 "fill": "#FFFFFF",
4621 "cornerRadius": 10,
4622 "stroke": "#111111",
4623 "strokeWidth": 1.6,
4624 "effect": {
4625 "type": "shadow",
4626 "shadowType": "outer",
4627 "color": "#11111114",
4628 "offset": {
4629 "x": 0,
4630 "y": 3
4631 },
4632 "blur": 10
4633 },
4634 "justifyContent": "center",
4635 "alignItems": "center",
4636 "children": [
4637 {
4638 "type": "frame",
4639 "id": "qkSNu",
4640 "name": "Caret",
4641 "width": 2,
4642 "height": 24,
4643 "fill": "#FF8400"
4644 }
4645 ]
4646 },
4647 {
4648 "type": "frame",
4649 "id": "uFzvY",
4650 "name": "Digit 5",
4651 "width": "fill_container",
4652 "height": 58,
4653 "fill": "#FFFFFF",
4654 "cornerRadius": 10,
4655 "stroke": "#CBCCC9",
4656 "strokeWidth": 1,
4657 "justifyContent": "center",
4658 "alignItems": "center"
4659 },
4660 {
4661 "type": "frame",
4662 "id": "CeipQ",
4663 "name": "Digit 6",
4664 "width": "fill_container",
4665 "height": 58,
4666 "fill": "#FFFFFF",
4667 "cornerRadius": 10,
4668 "stroke": "#CBCCC9",
4669 "strokeWidth": 1,
4670 "justifyContent": "center",
4671 "alignItems": "center"
4672 }
4673 ]
4674 },
4675 {
4676 "type": "frame",
4677 "id": "mbyGC",
4678 "name": "Submit Button",
4679 "width": "fill_container",
4680 "height": 48,
4681 "fill": "#FF8400",
4682 "cornerRadius": 10,
4683 "effect": {
4684 "type": "shadow",
4685 "shadowType": "outer",
4686 "color": "#FF840066",
4687 "offset": {
4688 "x": 0,
4689 "y": 4
4690 },
4691 "blur": 14,
4692 "spread": -4
4693 },
4694 "gap": 9,
4695 "justifyContent": "center",
4696 "alignItems": "center",
4697 "children": [
4698 {
4699 "type": "text",
4700 "id": "g5f0Y",
4701 "name": "Label",
4702 "fill": "#111111",
4703 "content": "Verify",
4704 "fontFamily": "JetBrains Mono",
4705 "fontSize": 14,
4706 "fontWeight": "bold",
4707 "letterSpacing": 0.4
4708 },
4709 {
4710 "type": "icon",
4711 "id": "zWIyC",
4712 "name": "Arrow",
4713 "width": 15,
4714 "height": 15,
4715 "icon": "arrow-right",
4716 "library": "lucide",
4717 "fill": "#111111"
4718 }
4719 ]
4720 },
4721 {
4722 "type": "frame",
4723 "id": "vfCkZ",
4724 "name": "Divider",
4725 "width": "fill_container",
4726 "gap": 12,
4727 "alignItems": "center",
4728 "children": [
4729 {
4730 "type": "frame",
4731 "id": "vC4RD",
4732 "name": "Line L",
4733 "width": "fill_container",
4734 "height": 1,
4735 "fill": "#CBCCC9"
4736 },
4737 {
4738 "type": "text",
4739 "id": "HU88K",
4740 "name": "Text",
4741 "fill": "#666666",
4742 "content": "TROUBLE?",
4743 "fontFamily": "JetBrains Mono",
4744 "fontSize": 10,
4745 "fontWeight": "bold",
4746 "letterSpacing": 1.1
4747 },
4748 {
4749 "type": "frame",
4750 "id": "tHJDE",
4751 "name": "Line R",
4752 "width": "fill_container",
4753 "height": 1,
4754 "fill": "#CBCCC9"
4755 }
4756 ]
4757 },
4758 {
4759 "type": "frame",
4760 "id": "hwuyF",
4761 "name": "Alt Row",
4762 "width": "fill_container",
4763 "gap": 12,
4764 "children": [
4765 {
4766 "type": "frame",
4767 "id": "S91F5",
4768 "name": "Backup Codes",
4769 "width": "fill_container",
4770 "height": 44,
4771 "fill": "#FFFFFF",
4772 "cornerRadius": 10,
4773 "stroke": "#CBCCC9",
4774 "strokeWidth": 1,
4775 "gap": 8,
4776 "justifyContent": "center",
4777 "alignItems": "center",
4778 "children": [
4779 {
4780 "type": "icon",
4781 "id": "rdgNw",
4782 "name": "Icon",
4783 "width": 15,
4784 "height": 15,
4785 "icon": "key-round",
4786 "library": "lucide",
4787 "fill": "#111111"
4788 },
4789 {
4790 "type": "text",
4791 "id": "ugQil",
4792 "name": "Label",
4793 "fill": "#111111",
4794 "content": "Use a recovery code",
4795 "fontFamily": "Geist",
4796 "fontSize": 13.5,
4797 "fontWeight": "normal"
4798 }
4799 ]
4800 }
4801 ]
4802 }
4803 ]
4804 }
4805 ]
4806 },
4807 {
4808 "type": "frame",
4809 "id": "q0vqK",
4810 "layoutPosition": "absolute",
4811 "x": 40,
4812 "y": 846,
4813 "name": "Status Row",
4814 "width": 1360,
4815 "gap": 10,
4816 "justifyContent": "center",
4817 "alignItems": "center",
4818 "children": [
4819 {
4820 "type": "frame",
4821 "id": "jMhNe",
4822 "name": "Dot",
4823 "width": 8,
4824 "height": 8,
4825 "justifyContent": "center",
4826 "alignItems": "center",
4827 "children": [
4828 {
4829 "type": "ellipse",
4830 "id": "FxAFO",
4831 "name": "Dot",
4832 "fill": "$--color-success-foreground",
4833 "width": 7,
4834 "height": 7
4835 }
4836 ]
4837 },
4838 {
4839 "type": "text",
4840 "id": "v6qzZz",
4841 "name": "Status",
4842 "fill": "$--muted-foreground",
4843 "content": "ALL SYSTEMS OPERATIONAL",
4844 "fontFamily": "$--font-primary",
4845 "fontSize": 11,
4846 "fontWeight": "normal",
4847 "letterSpacing": 0.5
4848 },
4849 {
4850 "type": "text",
4851 "id": "p5cTB",
4852 "name": "Sep",
4853 "fill": "$--border",
4854 "content": "·",
4855 "fontFamily": "$--font-primary",
4856 "fontSize": 11,
4857 "fontWeight": "normal"
4858 },
4859 {
4860 "type": "text",
4861 "id": "TLLo6",
4862 "name": "Region",
4863 "fill": "$--muted-foreground",
4864 "content": "REGION EU-CENTRAL-1",
4865 "fontFamily": "$--font-primary",
4866 "fontSize": 11,
4867 "fontWeight": "normal",
4868 "letterSpacing": 0.5
4869 },
4870 {
4871 "type": "text",
4872 "id": "ZKRKI",
4873 "name": "Sep2",
4874 "fill": "$--border",
4875 "content": "·",
4876 "fontFamily": "$--font-primary",
4877 "fontSize": 11,
4878 "fontWeight": "normal"
4879 },
4880 {
4881 "type": "text",
4882 "id": "jg5ed",
4883 "name": "Copy",
4884 "fill": "$--muted-foreground",
4885 "content": "© 2026 GitDataAI",
4886 "fontFamily": "$--font-primary",
4887 "fontSize": 11,
4888 "fontWeight": "normal",
4889 "letterSpacing": 0.5
4890 }
4891 ]
4892 },
4893 {
4894 "type": "frame",
4895 "id": "IYmeV",
4896 "layoutPosition": "absolute",
4897 "x": 40,
4898 "y": 454,
4899 "name": "Edge Label L",
4900 "rotation": 90,
4901 "width": 114,
4902 "height": 16,
4903 "gap": 10,
4904 "alignItems": "center",
4905 "children": [
4906 {
4907 "type": "text",
4908 "id": "jFCzW",
4909 "name": "Text",
4910 "fill": "$--muted-foreground",
4911 "content": "AUTH · v4.2.0",
4912 "fontFamily": "$--font-primary",
4913 "fontSize": 10,
4914 "fontWeight": "normal",
4915 "letterSpacing": 1.6
4916 }
4917 ]
4918 },
4919 {
4920 "type": "frame",
4921 "id": "dd6AQ",
4922 "layoutPosition": "absolute",
4923 "x": 1250,
4924 "y": 454,
4925 "name": "Edge Label R",
4926 "rotation": 90,
4927 "width": 152,
4928 "height": 16,
4929 "gap": 10,
4930 "alignItems": "center",
4931 "children": [
4932 {
4933 "type": "text",
4934 "id": "MlITn",
4935 "name": "Text",
4936 "fill": "$--muted-foreground",
4937 "content": "TLS 1.3 · TOTP-SHA1",
4938 "fontFamily": "$--font-primary",
4939 "fontSize": 10,
4940 "fontWeight": "normal",
4941 "letterSpacing": 1.6
4942 }
4943 ]
4944 },
4945 {
4946 "type": "frame",
4947 "id": "TVC4m",
4948 "layoutPosition": "absolute",
4949 "x": 490,
4950 "y": 822,
4951 "name": "Hint",
4952 "width": 460,
4953 "height": 14,
4954 "gap": 7,
4955 "justifyContent": "center",
4956 "alignItems": "center",
4957 "children": [
4958 {
4959 "type": "text",
4960 "id": "Of7w5",
4961 "name": "Hint Text",
4962 "fill": "$--muted-foreground",
4963 "content": "CHALLENGE EXPIRES IN 5 MIN · 5 ATTEMPTS MAX",
4964 "fontFamily": "$--font-primary",
4965 "fontSize": 10,
4966 "fontWeight": "normal",
4967 "letterSpacing": 1.2
4968 }
4969 ]
4970 },
4971 {
4972 "type": "frame",
4973 "id": "PetxN",
4974 "layoutPosition": "absolute",
4975 "x": 70,
4976 "y": 36,
4977 "name": "Breadcrumb",
4978 "gap": 8,
4979 "alignItems": "center",
4980 "children": [
4981 {
4982 "type": "frame",
4983 "id": "sbtPt",
4984 "name": "Logo",
4985 "width": 14,
4986 "height": 14,
4987 "fill": "#FF8400",
4988 "cornerRadius": 4
4989 },
4990 {
4991 "type": "text",
4992 "id": "Se6Qj",
4993 "name": "Root",
4994 "fill": "#111111",
4995 "content": "GitDataAI",
4996 "fontFamily": "JetBrains Mono",
4997 "fontSize": 10,
4998 "fontWeight": "bold",
4999 "letterSpacing": 1.2
5000 },
5001 {
5002 "type": "text",
5003 "id": "QZkXs",
5004 "name": "Sep1",
5005 "fill": "#CBCCC9",
5006 "content": "/",
5007 "fontFamily": "JetBrains Mono",
5008 "fontSize": 10,
5009 "fontWeight": "normal"
5010 },
5011 {
5012 "type": "text",
5013 "id": "KJu2M",
5014 "name": "Section",
5015 "fill": "#666666",
5016 "content": "AUTH",
5017 "fontFamily": "JetBrains Mono",
5018 "fontSize": 10,
5019 "fontWeight": "normal",
5020 "letterSpacing": 1.2
5021 },
5022 {
5023 "type": "text",
5024 "id": "MXlG0",
5025 "name": "Sep2",
5026 "fill": "#CBCCC9",
5027 "content": "/",
5028 "fontFamily": "JetBrains Mono",
5029 "fontSize": 10,
5030 "fontWeight": "normal"
5031 },
5032 {
5033 "type": "text",
5034 "id": "OH2gH",
5035 "name": "Current",
5036 "fill": "#804200",
5037 "content": "TWO-FACTOR",
5038 "fontFamily": "JetBrains Mono",
5039 "fontSize": 10,
5040 "fontWeight": "bold",
5041 "letterSpacing": 1.2
5042 }
5043 ]
5044 }
5045 ]
5046 },
5047 {
5048 "type": "frame",
5049 "id": "Gx5Q2",
5050 "x": 0,
5051 "y": 3180,
5052 "name": "1. Login — Tablet",
5053 "clip": true,
5054 "width": 768,
5055 "height": 1024,
5056 "fill": "$--background",
5057 "layout": "vertical",
5058 "gap": 26,
5059 "padding": [
5060 48,
5061 32
5062 ],
5063 "justifyContent": "center",
5064 "alignItems": "center",
5065 "children": [
5066 {
5067 "type": "frame",
5068 "id": "pTfTH",
5069 "layoutPosition": "absolute",
5070 "x": 74,
5071 "y": 260,
5072 "name": "Ambient Glow",
5073 "width": 620,
5074 "height": 480,
5075 "fill": {
5076 "type": "gradient",
5077 "gradientType": "radial",
5078 "enabled": true,
5079 "rotation": 0,
5080 "size": {
5081 "width": 1,
5082 "height": 1
5083 },
5084 "colors": [
5085 {
5086 "color": "#FF840026",
5087 "position": 0
5088 },
5089 {
5090 "color": "#FF840000",
5091 "position": 1
5092 }
5093 ]
5094 }
5095 },
5096 {
5097 "type": "frame",
5098 "id": "ASRVa",
5099 "layoutPosition": "absolute",
5100 "x": 0,
5101 "y": 0,
5102 "name": "Hairline Field",
5103 "width": 768,
5104 "height": 1024,
5105 "fill": {
5106 "type": "gradient",
5107 "gradientType": "linear",
5108 "enabled": true,
5109 "rotation": 180,
5110 "size": {
5111 "height": 1
5112 },
5113 "colors": [
5114 {
5115 "color": "#00000000",
5116 "position": 0.55
5117 },
5118 {
5119 "color": "#00000009",
5120 "position": 1
5121 }
5122 ]
5123 }
5124 },
5125 {
5126 "type": "frame",
5127 "id": "c2MpG",
5128 "layoutPosition": "absolute",
5129 "x": 24,
5130 "y": 24,
5131 "name": "Mark TL",
5132 "width": 18,
5133 "height": 18,
5134 "stroke": "$--border",
5135 "strokeWidth": {
5136 "top": 1,
5137 "left": 1
5138 },
5139 "layout": "none"
5140 },
5141 {
5142 "type": "frame",
5143 "id": "XYGss",
5144 "layoutPosition": "absolute",
5145 "x": 726,
5146 "y": 24,
5147 "name": "Mark TR",
5148 "width": 18,
5149 "height": 18,
5150 "stroke": "$--border",
5151 "strokeWidth": {
5152 "top": 1,
5153 "right": 1
5154 },
5155 "layout": "none"
5156 },
5157 {
5158 "type": "frame",
5159 "id": "j0I2hp",
5160 "layoutPosition": "absolute",
5161 "x": 24,
5162 "y": 982,
5163 "name": "Mark BL",
5164 "width": 18,
5165 "height": 18,
5166 "stroke": "$--border",
5167 "strokeWidth": {
5168 "bottom": 1,
5169 "left": 1
5170 },
5171 "layout": "none"
5172 },
5173 {
5174 "type": "frame",
5175 "id": "XCOk2",
5176 "layoutPosition": "absolute",
5177 "x": 726,
5178 "y": 982,
5179 "name": "Mark BR",
5180 "width": 18,
5181 "height": 18,
5182 "stroke": "$--border",
5183 "strokeWidth": {
5184 "right": 1,
5185 "bottom": 1
5186 },
5187 "layout": "none"
5188 },
5189 {
5190 "type": "frame",
5191 "id": "scmCs",
5192 "name": "Login Card",
5193 "width": 460,
5194 "fill": "$--card",
5195 "cornerRadius": "$--radius-m",
5196 "stroke": "$--border",
5197 "strokeWidth": 1,
5198 "effect": [
5199 {
5200 "type": "shadow",
5201 "shadowType": "outer",
5202 "color": "#1111111F",
5203 "offset": {
5204 "x": 0,
5205 "y": 18
5206 },
5207 "blur": 44,
5208 "spread": -8
5209 },
5210 {
5211 "type": "shadow",
5212 "shadowType": "outer",
5213 "color": "#1111110A",
5214 "offset": {
5215 "x": 0,
5216 "y": 2
5217 },
5218 "blur": 6
5219 }
5220 ],
5221 "layout": "vertical",
5222 "gap": 22,
5223 "padding": 32,
5224 "children": [
5225 {
5226 "type": "frame",
5227 "id": "LtH7c",
5228 "name": "Card Header",
5229 "width": "fill_container",
5230 "layout": "vertical",
5231 "gap": 12,
5232 "alignItems": "center",
5233 "children": [
5234 {
5235 "type": "frame",
5236 "id": "zE0px",
5237 "name": "Logo",
5238 "clip": true,
5239 "width": 44,
5240 "height": 44,
5241 "fill": "$--primary",
5242 "cornerRadius": 12,
5243 "layout": "none",
5244 "children": [
5245 {
5246 "type": "path",
5247 "id": "y6c4X",
5248 "x": 4.4,
5249 "y": 3.0609,
5250 "geometry": "M27.10145 22.82898l0-7.26956 8.09855-4.65507-1.53044-2.67826-8.09854 4.46377-6.37682-3.76232 0-8.92754-3.1884 0 0 8.9913-6.37681 3.69856-7.84348-4.46377-1.78551 2.55072 7.97101 4.52754 0 7.46087-7.97101 4.5913 1.78551 2.93334 7.84348-4.52754 6.37681 3.57101 0 9.11884 3.1884 0 0-9.11884 6.37682-3.63478 8.09854 4.59131 1.65798-2.93334-8.22609-4.52754z",
5251 "fill": "#1C2127",
5252 "width": 35.3275,
5253 "height": 38.4522
5254 }
5255 ]
5256 },
5257 {
5258 "type": "text",
5259 "id": "egT85",
5260 "name": "Heading",
5261 "fill": "$--foreground",
5262 "textGrowth": "fixed-width",
5263 "width": "fill_container",
5264 "content": "Sign in to Kernel",
5265 "textAlign": "center",
5266 "fontFamily": "$--font-primary",
5267 "fontSize": 23,
5268 "fontWeight": "bold",
5269 "letterSpacing": -0.6
5270 },
5271 {
5272 "type": "text",
5273 "id": "p2eP7",
5274 "name": "Subheading",
5275 "fill": "$--muted-foreground",
5276 "textGrowth": "fixed-width",
5277 "width": "fill_container",
5278 "content": "Authenticate to reach the control plane and your running clusters.",
5279 "lineHeight": 1.5,
5280 "textAlign": "center",
5281 "fontFamily": "$--font-secondary",
5282 "fontSize": 14,
5283 "fontWeight": "normal"
5284 }
5285 ]
5286 },
5287 {
5288 "type": "frame",
5289 "id": "YQhff",
5290 "name": "Form",
5291 "width": "fill_container",
5292 "layout": "vertical",
5293 "gap": 15,
5294 "children": [
5295 {
5296 "type": "frame",
5297 "id": "S7AeCT",
5298 "name": "Email Field",
5299 "width": "fill_container",
5300 "layout": "vertical",
5301 "gap": 7,
5302 "children": [
5303 {
5304 "type": "frame",
5305 "id": "aUeTn",
5306 "name": "Label Row",
5307 "width": "fill_container",
5308 "justifyContent": "space_between",
5309 "alignItems": "center",
5310 "children": [
5311 {
5312 "type": "text",
5313 "id": "PDO9d",
5314 "name": "Label",
5315 "fill": "$--muted-foreground",
5316 "content": "EMAIL OR USERNAME",
5317 "fontFamily": "$--font-primary",
5318 "fontSize": 10,
5319 "fontWeight": "bold",
5320 "letterSpacing": 1.2
5321 }
5322 ]
5323 },
5324 {
5325 "type": "frame",
5326 "id": "M44TNJ",
5327 "name": "Input",
5328 "width": "fill_container",
5329 "height": 46,
5330 "fill": "$--white",
5331 "cornerRadius": 10,
5332 "stroke": "$--border",
5333 "strokeWidth": 1,
5334 "gap": 10,
5335 "padding": [
5336 0,
5337 14
5338 ],
5339 "alignItems": "center",
5340 "children": [
5341 {
5342 "type": "icon",
5343 "id": "Om6os",
5344 "name": "Icon",
5345 "width": 15,
5346 "height": 15,
5347 "icon": "at-sign",
5348 "library": "lucide",
5349 "fill": "$--muted-foreground"
5350 },
5351 {
5352 "type": "text",
5353 "id": "Terot",
5354 "name": "Value",
5355 "fill": "$--foreground",
5356 "content": "ada.lock",
5357 "fontFamily": "$--font-secondary",
5358 "fontSize": 14.5,
5359 "fontWeight": "normal"
5360 }
5361 ]
5362 }
5363 ]
5364 },
5365 {
5366 "type": "frame",
5367 "id": "nphUQ",
5368 "name": "Password Field",
5369 "width": "fill_container",
5370 "layout": "vertical",
5371 "gap": 7,
5372 "children": [
5373 {
5374 "type": "frame",
5375 "id": "U9Re7",
5376 "name": "Label Row",
5377 "width": "fill_container",
5378 "justifyContent": "space_between",
5379 "alignItems": "center",
5380 "children": [
5381 {
5382 "type": "text",
5383 "id": "wKnA2",
5384 "name": "Label",
5385 "fill": "$--muted-foreground",
5386 "content": "PASSPHRASE",
5387 "fontFamily": "$--font-primary",
5388 "fontSize": 10,
5389 "fontWeight": "bold",
5390 "letterSpacing": 1.2
5391 },
5392 {
5393 "type": "frame",
5394 "id": "tOXFo",
5395 "name": "Forgot Link",
5396 "gap": 4,
5397 "alignItems": "center",
5398 "children": [
5399 {
5400 "type": "text",
5401 "id": "PqJdl",
5402 "name": "Text",
5403 "fill": "$--foreground",
5404 "content": "Forgot?",
5405 "fontFamily": "$--font-secondary",
5406 "fontSize": 12,
5407 "fontWeight": "normal"
5408 },
5409 {
5410 "type": "icon",
5411 "id": "FvHuP",
5412 "name": "Arrow",
5413 "width": 11,
5414 "height": 11,
5415 "icon": "arrow-up-right",
5416 "library": "lucide",
5417 "fill": "$--foreground"
5418 }
5419 ]
5420 }
5421 ]
5422 },
5423 {
5424 "type": "frame",
5425 "id": "RI5pz",
5426 "name": "Input",
5427 "width": "fill_container",
5428 "height": 46,
5429 "fill": "$--white",
5430 "cornerRadius": 10,
5431 "stroke": "$--foreground",
5432 "strokeWidth": 1.4,
5433 "gap": 10,
5434 "padding": [
5435 0,
5436 14
5437 ],
5438 "alignItems": "center",
5439 "children": [
5440 {
5441 "type": "icon",
5442 "id": "PbgYk",
5443 "name": "Icon",
5444 "width": 15,
5445 "height": 15,
5446 "icon": "lock",
5447 "library": "lucide",
5448 "fill": "$--muted-foreground"
5449 },
5450 {
5451 "type": "text",
5452 "id": "rIrZm",
5453 "name": "Value",
5454 "fill": "$--foreground",
5455 "content": "••••••••••••",
5456 "fontFamily": "$--font-primary",
5457 "fontSize": 16,
5458 "fontWeight": "normal"
5459 },
5460 {
5461 "type": "frame",
5462 "id": "L6F99x",
5463 "name": "Spacer",
5464 "width": "fill_container",
5465 "height": 1
5466 },
5467 {
5468 "type": "icon",
5469 "id": "XI8Fv",
5470 "name": "Reveal",
5471 "width": 16,
5472 "height": 16,
5473 "icon": "eye",
5474 "library": "lucide",
5475 "fill": "$--muted-foreground"
5476 }
5477 ]
5478 }
5479 ]
5480 },
5481 {
5482 "type": "frame",
5483 "id": "IY6Zc",
5484 "name": "Trust Row",
5485 "width": "fill_container",
5486 "gap": 9,
5487 "alignItems": "center",
5488 "children": [
5489 {
5490 "type": "frame",
5491 "id": "LYJct",
5492 "name": "Checkbox",
5493 "width": 18,
5494 "height": 18,
5495 "fill": "$--primary",
5496 "cornerRadius": 5,
5497 "justifyContent": "center",
5498 "alignItems": "center",
5499 "children": [
5500 {
5501 "type": "icon",
5502 "id": "xyQeK",
5503 "name": "Check",
5504 "width": 12,
5505 "height": 12,
5506 "icon": "check",
5507 "library": "lucide",
5508 "fill": "$--primary-foreground"
5509 }
5510 ]
5511 },
5512 {
5513 "type": "text",
5514 "id": "BOUap",
5515 "name": "Label",
5516 "fill": "$--foreground",
5517 "content": "Keep me signed in",
5518 "fontFamily": "$--font-secondary",
5519 "fontSize": 13,
5520 "fontWeight": "normal"
5521 }
5522 ]
5523 },
5524 {
5525 "type": "frame",
5526 "id": "z9rSE",
5527 "name": "Submit Button",
5528 "width": "fill_container",
5529 "height": 48,
5530 "fill": "$--primary",
5531 "cornerRadius": 10,
5532 "effect": {
5533 "type": "shadow",
5534 "shadowType": "outer",
5535 "color": "#FF840066",
5536 "offset": {
5537 "x": 0,
5538 "y": 4
5539 },
5540 "blur": 14,
5541 "spread": -4
5542 },
5543 "gap": 9,
5544 "justifyContent": "center",
5545 "alignItems": "center",
5546 "children": [
5547 {
5548 "type": "text",
5549 "id": "xMoZV",
5550 "name": "Label",
5551 "fill": "$--primary-foreground",
5552 "content": "Sign in",
5553 "fontFamily": "$--font-primary",
5554 "fontSize": 14,
5555 "fontWeight": "bold",
5556 "letterSpacing": 0.4
5557 },
5558 {
5559 "type": "icon",
5560 "id": "LDlf1",
5561 "name": "Arrow",
5562 "width": 15,
5563 "height": 15,
5564 "icon": "arrow-right",
5565 "library": "lucide",
5566 "fill": "$--primary-foreground"
5567 }
5568 ]
5569 },
5570 {
5571 "type": "frame",
5572 "id": "Sfidz",
5573 "name": "Divider",
5574 "width": "fill_container",
5575 "gap": 12,
5576 "alignItems": "center",
5577 "children": [
5578 {
5579 "type": "frame",
5580 "id": "N9bpV",
5581 "name": "Line L",
5582 "width": "fill_container",
5583 "height": 1,
5584 "fill": "$--border"
5585 },
5586 {
5587 "type": "text",
5588 "id": "ukkuZ",
5589 "name": "Text",
5590 "fill": "$--muted-foreground",
5591 "content": "LOSING ACCESS?",
5592 "fontFamily": "$--font-primary",
5593 "fontSize": 10,
5594 "fontWeight": "bold",
5595 "letterSpacing": 1.1
5596 },
5597 {
5598 "type": "frame",
5599 "id": "i8emul",
5600 "name": "Line R",
5601 "width": "fill_container",
5602 "height": 1,
5603 "fill": "$--border"
5604 }
5605 ]
5606 },
5607 {
5608 "type": "frame",
5609 "id": "rKZbB",
5610 "name": "Alt Auth Row",
5611 "width": "fill_container",
5612 "gap": 12,
5613 "children": [
5614 {
5615 "type": "frame",
5616 "id": "c7An5t",
5617 "name": "SSO Button",
5618 "width": "fill_container",
5619 "height": 44,
5620 "fill": "$--white",
5621 "cornerRadius": 10,
5622 "stroke": "$--border",
5623 "strokeWidth": 1,
5624 "gap": 8,
5625 "justifyContent": "center",
5626 "alignItems": "center",
5627 "children": [
5628 {
5629 "type": "icon",
5630 "id": "j0cyI0",
5631 "name": "Icon",
5632 "width": 15,
5633 "height": 15,
5634 "icon": "shield",
5635 "library": "lucide",
5636 "fill": "$--foreground"
5637 },
5638 {
5639 "type": "text",
5640 "id": "O85Rc",
5641 "name": "Label",
5642 "fill": "$--foreground",
5643 "content": "Recovery code",
5644 "fontFamily": "$--font-secondary",
5645 "fontSize": 13.5,
5646 "fontWeight": "normal"
5647 }
5648 ]
5649 },
5650 {
5651 "type": "frame",
5652 "id": "dswH7",
5653 "name": "Passkey Button",
5654 "width": "fill_container",
5655 "height": 44,
5656 "fill": "$--white",
5657 "cornerRadius": 10,
5658 "stroke": "$--border",
5659 "strokeWidth": 1,
5660 "gap": 8,
5661 "justifyContent": "center",
5662 "alignItems": "center",
5663 "children": [
5664 {
5665 "type": "icon",
5666 "id": "zB5dW",
5667 "name": "Icon",
5668 "width": 15,
5669 "height": 15,
5670 "icon": "mail",
5671 "library": "lucide",
5672 "fill": "$--foreground"
5673 },
5674 {
5675 "type": "text",
5676 "id": "ivEJh",
5677 "name": "Label",
5678 "fill": "$--foreground",
5679 "content": "Resend verify email",
5680 "fontFamily": "$--font-secondary",
5681 "fontSize": 13.5,
5682 "fontWeight": "normal"
5683 }
5684 ]
5685 }
5686 ]
5687 },
5688 {
5689 "type": "frame",
5690 "id": "k8Ycd",
5691 "name": "Signup Row",
5692 "width": "fill_container",
5693 "gap": 6,
5694 "justifyContent": "center",
5695 "children": [
5696 {
5697 "type": "text",
5698 "id": "lUnvR",
5699 "name": "Q",
5700 "fill": "$--muted-foreground",
5701 "content": "No account yet?",
5702 "fontFamily": "$--font-secondary",
5703 "fontSize": 13,
5704 "fontWeight": "normal"
5705 },
5706 {
5707 "type": "text",
5708 "id": "daFja",
5709 "name": "Link",
5710 "fill": "$--foreground",
5711 "content": "Request access",
5712 "fontFamily": "$--font-secondary",
5713 "fontSize": 13,
5714 "fontWeight": "bold"
5715 }
5716 ]
5717 }
5718 ]
5719 }
5720 ]
5721 },
5722 {
5723 "type": "frame",
5724 "id": "f5kYUf",
5725 "layoutPosition": "absolute",
5726 "x": 24,
5727 "y": 960,
5728 "name": "Status Row",
5729 "width": 720,
5730 "gap": 10,
5731 "justifyContent": "center",
5732 "alignItems": "center",
5733 "children": [
5734 {
5735 "type": "frame",
5736 "id": "CEnms",
5737 "name": "Dot",
5738 "width": 8,
5739 "height": 8,
5740 "justifyContent": "center",
5741 "alignItems": "center",
5742 "children": [
5743 {
5744 "type": "ellipse",
5745 "id": "TU6Sq",
5746 "name": "Dot",
5747 "fill": "$--color-success-foreground",
5748 "width": 7,
5749 "height": 7
5750 }
5751 ]
5752 },
5753 {
5754 "type": "text",
5755 "id": "o0lExX",
5756 "name": "Status",
5757 "fill": "$--muted-foreground",
5758 "content": "ALL SYSTEMS OPERATIONAL",
5759 "fontFamily": "$--font-primary",
5760 "fontSize": 11,
5761 "fontWeight": "normal",
5762 "letterSpacing": 0.5
5763 },
5764 {
5765 "type": "text",
5766 "id": "q3fKY",
5767 "name": "Sep",
5768 "fill": "$--border",
5769 "content": "·",
5770 "fontFamily": "$--font-primary",
5771 "fontSize": 11,
5772 "fontWeight": "normal"
5773 },
5774 {
5775 "type": "text",
5776 "id": "OSft1",
5777 "name": "Region",
5778 "fill": "$--muted-foreground",
5779 "content": "REGION EU-CENTRAL-1",
5780 "fontFamily": "$--font-primary",
5781 "fontSize": 11,
5782 "fontWeight": "normal",
5783 "letterSpacing": 0.5
5784 },
5785 {
5786 "type": "text",
5787 "id": "Sw4s1",
5788 "name": "Sep2",
5789 "fill": "$--border",
5790 "content": "·",
5791 "fontFamily": "$--font-primary",
5792 "fontSize": 11,
5793 "fontWeight": "normal"
5794 },
5795 {
5796 "type": "text",
5797 "id": "xRD5u",
5798 "name": "Copy",
5799 "fill": "$--muted-foreground",
5800 "content": "© 2026 GitDataAI",
5801 "fontFamily": "$--font-primary",
5802 "fontSize": 11,
5803 "fontWeight": "normal",
5804 "letterSpacing": 0.5
5805 }
5806 ]
5807 },
5808 {
5809 "type": "frame",
5810 "id": "i5CjzF",
5811 "layoutPosition": "absolute",
5812 "x": 32,
5813 "y": 936,
5814 "name": "Hint",
5815 "width": 704,
5816 "height": 14,
5817 "gap": 7,
5818 "justifyContent": "center",
5819 "alignItems": "center",
5820 "children": [
5821 {
5822 "type": "text",
5823 "id": "QZoYm",
5824 "name": "Hint Text",
5825 "fill": "$--muted-foreground",
5826 "content": "PROOF-OF-WORK SOLVED SILENTLY · 5 ATTEMPTS / 5 MIN",
5827 "fontFamily": "$--font-primary",
5828 "fontSize": 10,
5829 "fontWeight": "normal",
5830 "letterSpacing": 1.2
5831 }
5832 ]
5833 },
5834 {
5835 "type": "frame",
5836 "id": "AyZiQ",
5837 "layoutPosition": "absolute",
5838 "x": 32,
5839 "y": 36,
5840 "name": "Breadcrumb",
5841 "gap": 8,
5842 "alignItems": "center",
5843 "children": [
5844 {
5845 "type": "frame",
5846 "id": "QVLLS",
5847 "name": "Logo",
5848 "width": 14,
5849 "height": 14,
5850 "fill": "#FF8400",
5851 "cornerRadius": 4
5852 },
5853 {
5854 "type": "text",
5855 "id": "WFOBO",
5856 "name": "Root",
5857 "fill": "#111111",
5858 "content": "GitDataAI",
5859 "fontFamily": "JetBrains Mono",
5860 "fontSize": 10,
5861 "fontWeight": "bold",
5862 "letterSpacing": 1.2
5863 },
5864 {
5865 "type": "text",
5866 "id": "s0VxL",
5867 "name": "Sep1",
5868 "fill": "#CBCCC9",
5869 "content": "/",
5870 "fontFamily": "JetBrains Mono",
5871 "fontSize": 10,
5872 "fontWeight": "normal"
5873 },
5874 {
5875 "type": "text",
5876 "id": "U5cMm",
5877 "name": "Section",
5878 "fill": "#666666",
5879 "content": "AUTH",
5880 "fontFamily": "JetBrains Mono",
5881 "fontSize": 10,
5882 "fontWeight": "normal",
5883 "letterSpacing": 1.2
5884 },
5885 {
5886 "type": "text",
5887 "id": "U3e6Z",
5888 "name": "Sep2",
5889 "fill": "#CBCCC9",
5890 "content": "/",
5891 "fontFamily": "JetBrains Mono",
5892 "fontSize": 10,
5893 "fontWeight": "normal"
5894 },
5895 {
5896 "type": "text",
5897 "id": "tzXmA",
5898 "name": "Current",
5899 "fill": "#804200",
5900 "content": "SIGN IN",
5901 "fontFamily": "JetBrains Mono",
5902 "fontSize": 10,
5903 "fontWeight": "bold",
5904 "letterSpacing": 1.2
5905 }
5906 ]
5907 }
5908 ]
5909 },
5910 {
5911 "type": "frame",
5912 "id": "e1RuuJ",
5913 "x": 828,
5914 "y": 3180,
5915 "name": "1. Login — Mobile",
5916 "clip": true,
5917 "width": 390,
5918 "height": 844,
5919 "fill": "$--background",
5920 "layout": "vertical",
5921 "gap": 26,
5922 "padding": [
5923 40,
5924 16,
5925 72,
5926 16
5927 ],
5928 "justifyContent": "center",
5929 "alignItems": "center",
5930 "children": [
5931 {
5932 "type": "frame",
5933 "id": "D5EZt",
5934 "layoutPosition": "absolute",
5935 "x": 25,
5936 "y": 200,
5937 "name": "Ambient Glow",
5938 "width": 340,
5939 "height": 400,
5940 "fill": {
5941 "type": "gradient",
5942 "gradientType": "radial",
5943 "enabled": true,
5944 "rotation": 0,
5945 "size": {
5946 "width": 1,
5947 "height": 1
5948 },
5949 "colors": [
5950 {
5951 "color": "#FF840026",
5952 "position": 0
5953 },
5954 {
5955 "color": "#FF840000",
5956 "position": 1
5957 }
5958 ]
5959 }
5960 },
5961 {
5962 "type": "frame",
5963 "id": "y22Odq",
5964 "layoutPosition": "absolute",
5965 "x": 0,
5966 "y": 0,
5967 "name": "Hairline Field",
5968 "width": 390,
5969 "height": 844,
5970 "fill": {
5971 "type": "gradient",
5972 "gradientType": "linear",
5973 "enabled": true,
5974 "rotation": 180,
5975 "size": {
5976 "height": 1
5977 },
5978 "colors": [
5979 {
5980 "color": "#00000000",
5981 "position": 0.55
5982 },
5983 {
5984 "color": "#00000009",
5985 "position": 1
5986 }
5987 ]
5988 }
5989 },
5990 {
5991 "type": "frame",
5992 "id": "Z9DR90",
5993 "layoutPosition": "absolute",
5994 "x": 16,
5995 "y": 16,
5996 "name": "Mark TL",
5997 "width": 18,
5998 "height": 18,
5999 "stroke": "$--border",
6000 "strokeWidth": {
6001 "top": 1,
6002 "left": 1
6003 },
6004 "layout": "none"
6005 },
6006 {
6007 "type": "frame",
6008 "id": "xcMkg",
6009 "layoutPosition": "absolute",
6010 "x": 356,
6011 "y": 16,
6012 "name": "Mark TR",
6013 "width": 18,
6014 "height": 18,
6015 "stroke": "$--border",
6016 "strokeWidth": {
6017 "top": 1,
6018 "right": 1
6019 },
6020 "layout": "none"
6021 },
6022 {
6023 "type": "frame",
6024 "id": "iEwRj",
6025 "layoutPosition": "absolute",
6026 "x": 16,
6027 "y": 810,
6028 "name": "Mark BL",
6029 "width": 18,
6030 "height": 18,
6031 "stroke": "$--border",
6032 "strokeWidth": {
6033 "bottom": 1,
6034 "left": 1
6035 },
6036 "layout": "none"
6037 },
6038 {
6039 "type": "frame",
6040 "id": "fi81i",
6041 "layoutPosition": "absolute",
6042 "x": 356,
6043 "y": 810,
6044 "name": "Mark BR",
6045 "width": 18,
6046 "height": 18,
6047 "stroke": "$--border",
6048 "strokeWidth": {
6049 "right": 1,
6050 "bottom": 1
6051 },
6052 "layout": "none"
6053 },
6054 {
6055 "type": "frame",
6056 "id": "dN9SX",
6057 "name": "Login Card",
6058 "width": "fill_container",
6059 "fill": "$--card",
6060 "cornerRadius": "$--radius-m",
6061 "stroke": "$--border",
6062 "strokeWidth": 1,
6063 "effect": [
6064 {
6065 "type": "shadow",
6066 "shadowType": "outer",
6067 "color": "#1111111F",
6068 "offset": {
6069 "x": 0,
6070 "y": 18
6071 },
6072 "blur": 44,
6073 "spread": -8
6074 },
6075 {
6076 "type": "shadow",
6077 "shadowType": "outer",
6078 "color": "#1111110A",
6079 "offset": {
6080 "x": 0,
6081 "y": 2
6082 },
6083 "blur": 6
6084 }
6085 ],
6086 "layout": "vertical",
6087 "gap": 18,
6088 "padding": 24,
6089 "children": [
6090 {
6091 "type": "frame",
6092 "id": "O7U1g",
6093 "name": "Card Header",
6094 "width": "fill_container",
6095 "layout": "vertical",
6096 "gap": 12,
6097 "alignItems": "center",
6098 "children": [
6099 {
6100 "type": "frame",
6101 "id": "dPEHz",
6102 "name": "Logo",
6103 "clip": true,
6104 "width": 44,
6105 "height": 44,
6106 "fill": "$--primary",
6107 "cornerRadius": 12,
6108 "layout": "none",
6109 "children": [
6110 {
6111 "type": "path",
6112 "id": "ksrx9",
6113 "x": 4.4,
6114 "y": 3.0609,
6115 "geometry": "M27.10145 22.82898l0-7.26956 8.09855-4.65507-1.53044-2.67826-8.09854 4.46377-6.37682-3.76232 0-8.92754-3.1884 0 0 8.9913-6.37681 3.69856-7.84348-4.46377-1.78551 2.55072 7.97101 4.52754 0 7.46087-7.97101 4.5913 1.78551 2.93334 7.84348-4.52754 6.37681 3.57101 0 9.11884 3.1884 0 0-9.11884 6.37682-3.63478 8.09854 4.59131 1.65798-2.93334-8.22609-4.52754z",
6116 "fill": "#1C2127",
6117 "width": 35.3275,
6118 "height": 38.4522
6119 }
6120 ]
6121 },
6122 {
6123 "type": "text",
6124 "id": "c7R3OZ",
6125 "name": "Heading",
6126 "fill": "$--foreground",
6127 "textGrowth": "fixed-width",
6128 "width": "fill_container",
6129 "content": "Sign in to Kernel",
6130 "textAlign": "center",
6131 "fontFamily": "$--font-primary",
6132 "fontSize": 21,
6133 "fontWeight": "bold",
6134 "letterSpacing": -0.6
6135 },
6136 {
6137 "type": "text",
6138 "id": "pufyR",
6139 "name": "Subheading",
6140 "fill": "$--muted-foreground",
6141 "textGrowth": "fixed-width",
6142 "width": "fill_container",
6143 "content": "Authenticate to reach the control plane and your running clusters.",
6144 "lineHeight": 1.5,
6145 "textAlign": "center",
6146 "fontFamily": "$--font-secondary",
6147 "fontSize": 14,
6148 "fontWeight": "normal"
6149 }
6150 ]
6151 },
6152 {
6153 "type": "frame",
6154 "id": "v4GGjp",
6155 "name": "Form",
6156 "width": "fill_container",
6157 "layout": "vertical",
6158 "gap": 15,
6159 "children": [
6160 {
6161 "type": "frame",
6162 "id": "Q9Re6w",
6163 "name": "Email Field",
6164 "width": "fill_container",
6165 "layout": "vertical",
6166 "gap": 7,
6167 "children": [
6168 {
6169 "type": "frame",
6170 "id": "ssJLd",
6171 "name": "Label Row",
6172 "width": "fill_container",
6173 "justifyContent": "space_between",
6174 "alignItems": "center",
6175 "children": [
6176 {
6177 "type": "text",
6178 "id": "PibIc",
6179 "name": "Label",
6180 "fill": "$--muted-foreground",
6181 "content": "EMAIL OR USERNAME",
6182 "fontFamily": "$--font-primary",
6183 "fontSize": 10,
6184 "fontWeight": "bold",
6185 "letterSpacing": 1.2
6186 }
6187 ]
6188 },
6189 {
6190 "type": "frame",
6191 "id": "ClBlR",
6192 "name": "Input",
6193 "width": "fill_container",
6194 "height": 46,
6195 "fill": "$--white",
6196 "cornerRadius": 10,
6197 "stroke": "$--border",
6198 "strokeWidth": 1,
6199 "gap": 10,
6200 "padding": [
6201 0,
6202 14
6203 ],
6204 "alignItems": "center",
6205 "children": [
6206 {
6207 "type": "icon",
6208 "id": "dGNIK",
6209 "name": "Icon",
6210 "width": 15,
6211 "height": 15,
6212 "icon": "at-sign",
6213 "library": "lucide",
6214 "fill": "$--muted-foreground"
6215 },
6216 {
6217 "type": "text",
6218 "id": "nSTcC",
6219 "name": "Value",
6220 "fill": "$--foreground",
6221 "content": "ada.lock",
6222 "fontFamily": "$--font-secondary",
6223 "fontSize": 14.5,
6224 "fontWeight": "normal"
6225 }
6226 ]
6227 }
6228 ]
6229 },
6230 {
6231 "type": "frame",
6232 "id": "C00NR",
6233 "name": "Password Field",
6234 "width": "fill_container",
6235 "layout": "vertical",
6236 "gap": 7,
6237 "children": [
6238 {
6239 "type": "frame",
6240 "id": "xkepW",
6241 "name": "Label Row",
6242 "width": "fill_container",
6243 "justifyContent": "space_between",
6244 "alignItems": "center",
6245 "children": [
6246 {
6247 "type": "text",
6248 "id": "TkiRO",
6249 "name": "Label",
6250 "fill": "$--muted-foreground",
6251 "content": "PASSPHRASE",
6252 "fontFamily": "$--font-primary",
6253 "fontSize": 10,
6254 "fontWeight": "bold",
6255 "letterSpacing": 1.2
6256 },
6257 {
6258 "type": "frame",
6259 "id": "o7QYIh",
6260 "name": "Forgot Link",
6261 "gap": 4,
6262 "alignItems": "center",
6263 "children": [
6264 {
6265 "type": "text",
6266 "id": "vDG04",
6267 "name": "Text",
6268 "fill": "$--foreground",
6269 "content": "Forgot?",
6270 "fontFamily": "$--font-secondary",
6271 "fontSize": 12,
6272 "fontWeight": "normal"
6273 },
6274 {
6275 "type": "icon",
6276 "id": "l49nEH",
6277 "name": "Arrow",
6278 "width": 11,
6279 "height": 11,
6280 "icon": "arrow-up-right",
6281 "library": "lucide",
6282 "fill": "$--foreground"
6283 }
6284 ]
6285 }
6286 ]
6287 },
6288 {
6289 "type": "frame",
6290 "id": "y40ng",
6291 "name": "Input",
6292 "width": "fill_container",
6293 "height": 46,
6294 "fill": "$--white",
6295 "cornerRadius": 10,
6296 "stroke": "$--foreground",
6297 "strokeWidth": 1.4,
6298 "gap": 10,
6299 "padding": [
6300 0,
6301 14
6302 ],
6303 "alignItems": "center",
6304 "children": [
6305 {
6306 "type": "icon",
6307 "id": "fIhU8",
6308 "name": "Icon",
6309 "width": 15,
6310 "height": 15,
6311 "icon": "lock",
6312 "library": "lucide",
6313 "fill": "$--muted-foreground"
6314 },
6315 {
6316 "type": "text",
6317 "id": "MxWc6",
6318 "name": "Value",
6319 "fill": "$--foreground",
6320 "content": "••••••••••••",
6321 "fontFamily": "$--font-primary",
6322 "fontSize": 16,
6323 "fontWeight": "normal"
6324 },
6325 {
6326 "type": "frame",
6327 "id": "ulSMi",
6328 "name": "Spacer",
6329 "width": "fill_container",
6330 "height": 1
6331 },
6332 {
6333 "type": "icon",
6334 "id": "KiRbB",
6335 "name": "Reveal",
6336 "width": 16,
6337 "height": 16,
6338 "icon": "eye",
6339 "library": "lucide",
6340 "fill": "$--muted-foreground"
6341 }
6342 ]
6343 }
6344 ]
6345 },
6346 {
6347 "type": "frame",
6348 "id": "vv3in",
6349 "name": "Trust Row",
6350 "width": "fill_container",
6351 "gap": 9,
6352 "alignItems": "center",
6353 "children": [
6354 {
6355 "type": "frame",
6356 "id": "a3yeH",
6357 "name": "Checkbox",
6358 "width": 18,
6359 "height": 18,
6360 "fill": "$--primary",
6361 "cornerRadius": 5,
6362 "justifyContent": "center",
6363 "alignItems": "center",
6364 "children": [
6365 {
6366 "type": "icon",
6367 "id": "vLANe",
6368 "name": "Check",
6369 "width": 12,
6370 "height": 12,
6371 "icon": "check",
6372 "library": "lucide",
6373 "fill": "$--primary-foreground"
6374 }
6375 ]
6376 },
6377 {
6378 "type": "text",
6379 "id": "ugmhl",
6380 "name": "Label",
6381 "fill": "$--foreground",
6382 "content": "Keep me signed in",
6383 "fontFamily": "$--font-secondary",
6384 "fontSize": 13,
6385 "fontWeight": "normal"
6386 }
6387 ]
6388 },
6389 {
6390 "type": "frame",
6391 "id": "GKnAO",
6392 "name": "Submit Button",
6393 "width": "fill_container",
6394 "height": 48,
6395 "fill": "$--primary",
6396 "cornerRadius": 10,
6397 "effect": {
6398 "type": "shadow",
6399 "shadowType": "outer",
6400 "color": "#FF840066",
6401 "offset": {
6402 "x": 0,
6403 "y": 4
6404 },
6405 "blur": 14,
6406 "spread": -4
6407 },
6408 "gap": 9,
6409 "justifyContent": "center",
6410 "alignItems": "center",
6411 "children": [
6412 {
6413 "type": "text",
6414 "id": "fuDku",
6415 "name": "Label",
6416 "fill": "$--primary-foreground",
6417 "content": "Sign in",
6418 "fontFamily": "$--font-primary",
6419 "fontSize": 14,
6420 "fontWeight": "bold",
6421 "letterSpacing": 0.4
6422 },
6423 {
6424 "type": "icon",
6425 "id": "aTSUz",
6426 "name": "Arrow",
6427 "width": 15,
6428 "height": 15,
6429 "icon": "arrow-right",
6430 "library": "lucide",
6431 "fill": "$--primary-foreground"
6432 }
6433 ]
6434 },
6435 {
6436 "type": "frame",
6437 "id": "sNGLX",
6438 "name": "Divider",
6439 "width": "fill_container",
6440 "gap": 12,
6441 "alignItems": "center",
6442 "children": [
6443 {
6444 "type": "frame",
6445 "id": "lRNbk",
6446 "name": "Line L",
6447 "width": "fill_container",
6448 "height": 1,
6449 "fill": "$--border"
6450 },
6451 {
6452 "type": "text",
6453 "id": "v1fjR",
6454 "name": "Text",
6455 "fill": "$--muted-foreground",
6456 "content": "LOSING ACCESS?",
6457 "fontFamily": "$--font-primary",
6458 "fontSize": 10,
6459 "fontWeight": "bold",
6460 "letterSpacing": 1.1
6461 },
6462 {
6463 "type": "frame",
6464 "id": "Od2wQ",
6465 "name": "Line R",
6466 "width": "fill_container",
6467 "height": 1,
6468 "fill": "$--border"
6469 }
6470 ]
6471 },
6472 {
6473 "type": "frame",
6474 "id": "j7XR0i",
6475 "name": "Alt Auth Row",
6476 "width": "fill_container",
6477 "layout": "vertical",
6478 "gap": 12,
6479 "children": [
6480 {
6481 "type": "frame",
6482 "id": "hz3B5",
6483 "name": "SSO Button",
6484 "width": "fill_container",
6485 "height": 44,
6486 "fill": "$--white",
6487 "cornerRadius": 10,
6488 "stroke": "$--border",
6489 "strokeWidth": 1,
6490 "gap": 8,
6491 "justifyContent": "center",
6492 "alignItems": "center",
6493 "children": [
6494 {
6495 "type": "icon",
6496 "id": "f5WjYt",
6497 "name": "Icon",
6498 "width": 15,
6499 "height": 15,
6500 "icon": "shield",
6501 "library": "lucide",
6502 "fill": "$--foreground"
6503 },
6504 {
6505 "type": "text",
6506 "id": "r4KOTy",
6507 "name": "Label",
6508 "fill": "$--foreground",
6509 "content": "Recovery code",
6510 "fontFamily": "$--font-secondary",
6511 "fontSize": 13.5,
6512 "fontWeight": "normal"
6513 }
6514 ]
6515 },
6516 {
6517 "type": "frame",
6518 "id": "PHA4u",
6519 "name": "Passkey Button",
6520 "width": "fill_container",
6521 "height": 44,
6522 "fill": "$--white",
6523 "cornerRadius": 10,
6524 "stroke": "$--border",
6525 "strokeWidth": 1,
6526 "gap": 8,
6527 "justifyContent": "center",
6528 "alignItems": "center",
6529 "children": [
6530 {
6531 "type": "icon",
6532 "id": "Enjnu",
6533 "name": "Icon",
6534 "width": 15,
6535 "height": 15,
6536 "icon": "mail",
6537 "library": "lucide",
6538 "fill": "$--foreground"
6539 },
6540 {
6541 "type": "text",
6542 "id": "x3T9MS",
6543 "name": "Label",
6544 "fill": "$--foreground",
6545 "content": "Resend verify email",
6546 "fontFamily": "$--font-secondary",
6547 "fontSize": 13.5,
6548 "fontWeight": "normal"
6549 }
6550 ]
6551 }
6552 ]
6553 },
6554 {
6555 "type": "frame",
6556 "id": "ENL5s",
6557 "name": "Signup Row",
6558 "width": "fill_container",
6559 "gap": 6,
6560 "justifyContent": "center",
6561 "children": [
6562 {
6563 "type": "text",
6564 "id": "dCZfW",
6565 "name": "Q",
6566 "fill": "$--muted-foreground",
6567 "content": "No account yet?",
6568 "fontFamily": "$--font-secondary",
6569 "fontSize": 13,
6570 "fontWeight": "normal"
6571 },
6572 {
6573 "type": "text",
6574 "id": "DK8ti",
6575 "name": "Link",
6576 "fill": "$--foreground",
6577 "content": "Request access",
6578 "fontFamily": "$--font-secondary",
6579 "fontSize": 13,
6580 "fontWeight": "bold"
6581 }
6582 ]
6583 }
6584 ]
6585 }
6586 ]
6587 },
6588 {
6589 "type": "frame",
6590 "id": "jEyqn",
6591 "layoutPosition": "absolute",
6592 "x": 16,
6593 "y": 788,
6594 "name": "Status Row",
6595 "width": 358,
6596 "gap": 10,
6597 "justifyContent": "center",
6598 "alignItems": "center",
6599 "children": [
6600 {
6601 "type": "frame",
6602 "id": "k3emBU",
6603 "name": "Dot",
6604 "width": 8,
6605 "height": 8,
6606 "justifyContent": "center",
6607 "alignItems": "center",
6608 "children": [
6609 {
6610 "type": "ellipse",
6611 "id": "V80qK",
6612 "name": "Dot",
6613 "fill": "$--color-success-foreground",
6614 "width": 7,
6615 "height": 7
6616 }
6617 ]
6618 },
6619 {
6620 "type": "text",
6621 "id": "lmAs4",
6622 "name": "Status",
6623 "fill": "$--muted-foreground",
6624 "content": "ALL SYSTEMS OPERATIONAL",
6625 "fontFamily": "$--font-primary",
6626 "fontSize": 11,
6627 "fontWeight": "normal",
6628 "letterSpacing": 0.5
6629 },
6630 {
6631 "type": "text",
6632 "id": "gM3FI",
6633 "name": "Sep",
6634 "fill": "$--border",
6635 "content": "·",
6636 "fontFamily": "$--font-primary",
6637 "fontSize": 11,
6638 "fontWeight": "normal"
6639 },
6640 {
6641 "type": "text",
6642 "id": "gkytJ",
6643 "name": "Copy",
6644 "fill": "$--muted-foreground",
6645 "content": "© 2026 GitDataAI",
6646 "fontFamily": "$--font-primary",
6647 "fontSize": 11,
6648 "fontWeight": "normal",
6649 "letterSpacing": 0.5
6650 }
6651 ]
6652 },
6653 {
6654 "type": "frame",
6655 "id": "iCHP9",
6656 "layoutPosition": "absolute",
6657 "x": 16,
6658 "y": 760,
6659 "name": "Hint",
6660 "width": 374,
6661 "height": 14,
6662 "gap": 7,
6663 "justifyContent": "center",
6664 "alignItems": "center",
6665 "children": [
6666 {
6667 "type": "text",
6668 "id": "oTwEX",
6669 "name": "Hint Text",
6670 "fill": "$--muted-foreground",
6671 "content": "PROOF-OF-WORK SOLVED SILENTLY · 5 ATTEMPTS / 5 MIN",
6672 "fontFamily": "$--font-primary",
6673 "fontSize": 10,
6674 "fontWeight": "normal",
6675 "letterSpacing": 1.2
6676 }
6677 ]
6678 }
6679 ]
6680 },
6681 {
6682 "type": "frame",
6683 "id": "pTcyK",
6684 "x": 1338,
6685 "y": 3180,
6686 "name": "2. Sign Up — Tablet",
6687 "clip": true,
6688 "width": 768,
6689 "height": 1024,
6690 "fill": "$--background",
6691 "layout": "vertical",
6692 "gap": 26,
6693 "padding": [
6694 48,
6695 32
6696 ],
6697 "justifyContent": "center",
6698 "alignItems": "center",
6699 "children": [
6700 {
6701 "type": "frame",
6702 "id": "K1fKkk",
6703 "layoutPosition": "absolute",
6704 "x": 74,
6705 "y": 260,
6706 "name": "Ambient Glow",
6707 "width": 620,
6708 "height": 480,
6709 "fill": {
6710 "type": "gradient",
6711 "gradientType": "radial",
6712 "enabled": true,
6713 "rotation": 0,
6714 "size": {
6715 "width": 1,
6716 "height": 1
6717 },
6718 "colors": [
6719 {
6720 "color": "#FF840026",
6721 "position": 0
6722 },
6723 {
6724 "color": "#FF840000",
6725 "position": 1
6726 }
6727 ]
6728 }
6729 },
6730 {
6731 "type": "frame",
6732 "id": "rtmGR",
6733 "layoutPosition": "absolute",
6734 "x": 0,
6735 "y": 0,
6736 "name": "Hairline Field",
6737 "width": 768,
6738 "height": 1024,
6739 "fill": {
6740 "type": "gradient",
6741 "gradientType": "linear",
6742 "enabled": true,
6743 "rotation": 180,
6744 "size": {
6745 "height": 1
6746 },
6747 "colors": [
6748 {
6749 "color": "#00000000",
6750 "position": 0.55
6751 },
6752 {
6753 "color": "#00000009",
6754 "position": 1
6755 }
6756 ]
6757 }
6758 },
6759 {
6760 "type": "frame",
6761 "id": "eQ6Ig",
6762 "layoutPosition": "absolute",
6763 "x": 24,
6764 "y": 24,
6765 "name": "Mark TL",
6766 "width": 18,
6767 "height": 18,
6768 "stroke": "$--border",
6769 "strokeWidth": {
6770 "top": 1,
6771 "left": 1
6772 },
6773 "layout": "none"
6774 },
6775 {
6776 "type": "frame",
6777 "id": "WjK6p",
6778 "layoutPosition": "absolute",
6779 "x": 726,
6780 "y": 24,
6781 "name": "Mark TR",
6782 "width": 18,
6783 "height": 18,
6784 "stroke": "$--border",
6785 "strokeWidth": {
6786 "top": 1,
6787 "right": 1
6788 },
6789 "layout": "none"
6790 },
6791 {
6792 "type": "frame",
6793 "id": "mWkII",
6794 "layoutPosition": "absolute",
6795 "x": 24,
6796 "y": 982,
6797 "name": "Mark BL",
6798 "width": 18,
6799 "height": 18,
6800 "stroke": "$--border",
6801 "strokeWidth": {
6802 "bottom": 1,
6803 "left": 1
6804 },
6805 "layout": "none"
6806 },
6807 {
6808 "type": "frame",
6809 "id": "nBdzh",
6810 "layoutPosition": "absolute",
6811 "x": 726,
6812 "y": 982,
6813 "name": "Mark BR",
6814 "width": 18,
6815 "height": 18,
6816 "stroke": "$--border",
6817 "strokeWidth": {
6818 "right": 1,
6819 "bottom": 1
6820 },
6821 "layout": "none"
6822 },
6823 {
6824 "type": "frame",
6825 "id": "UUXos",
6826 "name": "Login Card",
6827 "width": 460,
6828 "fill": "$--card",
6829 "cornerRadius": "$--radius-m",
6830 "stroke": "$--border",
6831 "strokeWidth": 1,
6832 "effect": [
6833 {
6834 "type": "shadow",
6835 "shadowType": "outer",
6836 "color": "#1111111F",
6837 "offset": {
6838 "x": 0,
6839 "y": 18
6840 },
6841 "blur": 44,
6842 "spread": -8
6843 },
6844 {
6845 "type": "shadow",
6846 "shadowType": "outer",
6847 "color": "#1111110A",
6848 "offset": {
6849 "x": 0,
6850 "y": 2
6851 },
6852 "blur": 6
6853 }
6854 ],
6855 "layout": "vertical",
6856 "gap": 22,
6857 "padding": 32,
6858 "children": [
6859 {
6860 "type": "frame",
6861 "id": "Wc9yp",
6862 "name": "Card Header",
6863 "width": "fill_container",
6864 "layout": "vertical",
6865 "gap": 12,
6866 "alignItems": "center",
6867 "children": [
6868 {
6869 "type": "frame",
6870 "id": "RUp48",
6871 "name": "Logo",
6872 "clip": true,
6873 "width": 44,
6874 "height": 44,
6875 "fill": "$accent",
6876 "cornerRadius": 12,
6877 "layout": "none",
6878 "children": [
6879 {
6880 "type": "path",
6881 "id": "AF6jM",
6882 "x": 4.4,
6883 "y": 3.0609,
6884 "geometry": "M27.10145 22.82898l0-7.26956 8.09855-4.65507-1.53044-2.67826-8.09854 4.46377-6.37682-3.76232 0-8.92754-3.1884 0 0 8.9913-6.37681 3.69856-7.84348-4.46377-1.78551 2.55072 7.97101 4.52754 0 7.46087-7.97101 4.5913 1.78551 2.93334 7.84348-4.52754 6.37681 3.57101 0 9.11884 3.1884 0 0-9.11884 6.37682-3.63478 8.09854 4.59131 1.65798-2.93334-8.22609-4.52754z",
6885 "fill": "#1C2127",
6886 "width": 35.3275,
6887 "height": 38.4522
6888 }
6889 ]
6890 },
6891 {
6892 "type": "text",
6893 "id": "w8MWlJ",
6894 "name": "Heading",
6895 "fill": "#000000",
6896 "textGrowth": "fixed-width",
6897 "width": "fill_container",
6898 "content": "Create your account",
6899 "textAlign": "center",
6900 "fontFamily": "JetBrains Mono",
6901 "fontSize": 23,
6902 "fontWeight": "bold",
6903 "letterSpacing": -0.6
6904 },
6905 {
6906 "type": "text",
6907 "id": "TTzvW",
6908 "name": "Subheading",
6909 "fill": "#666666",
6910 "textGrowth": "fixed-width",
6911 "width": "fill_container",
6912 "content": "Provision team access to the Kernel control plane and running clusters.",
6913 "lineHeight": 1.5,
6914 "textAlign": "center",
6915 "fontFamily": "Geist",
6916 "fontSize": 14,
6917 "fontWeight": "normal"
6918 }
6919 ]
6920 },
6921 {
6922 "type": "frame",
6923 "id": "UaGzL",
6924 "name": "Form",
6925 "width": "fill_container",
6926 "layout": "vertical",
6927 "gap": 15,
6928 "children": [
6929 {
6930 "type": "frame",
6931 "id": "z9qZ4O",
6932 "name": "FULL NAME Field",
6933 "width": "fill_container",
6934 "layout": "vertical",
6935 "gap": 7,
6936 "children": [
6937 {
6938 "type": "frame",
6939 "id": "J4tWKg",
6940 "name": "Label Row",
6941 "width": "fill_container",
6942 "justifyContent": "space_between",
6943 "alignItems": "center",
6944 "children": [
6945 {
6946 "type": "text",
6947 "id": "dkVL8",
6948 "name": "Label",
6949 "fill": "#666666",
6950 "content": "USERNAME (OPTIONAL)",
6951 "fontFamily": "JetBrains Mono",
6952 "fontSize": 10,
6953 "fontWeight": "bold",
6954 "letterSpacing": 1.2
6955 }
6956 ]
6957 },
6958 {
6959 "type": "frame",
6960 "id": "P40Yx",
6961 "name": "Input",
6962 "width": "fill_container",
6963 "height": 46,
6964 "fill": "#FFFFFF",
6965 "cornerRadius": 10,
6966 "stroke": "#CBCCC9",
6967 "strokeWidth": 1,
6968 "gap": 10,
6969 "padding": [
6970 0,
6971 14
6972 ],
6973 "alignItems": "center",
6974 "children": [
6975 {
6976 "type": "icon",
6977 "id": "TO8vd",
6978 "name": "Icon",
6979 "width": 15,
6980 "height": 15,
6981 "icon": "user",
6982 "library": "lucide",
6983 "fill": "#666666"
6984 },
6985 {
6986 "type": "text",
6987 "id": "tvUG7",
6988 "name": "Value",
6989 "fill": "#111111",
6990 "content": "adalock",
6991 "fontFamily": "Geist",
6992 "fontSize": 14.5,
6993 "fontWeight": "normal"
6994 }
6995 ]
6996 }
6997 ]
6998 },
6999 {
7000 "type": "frame",
7001 "id": "B9eHth",
7002 "name": "WORK EMAIL Field",
7003 "width": "fill_container",
7004 "layout": "vertical",
7005 "gap": 7,
7006 "children": [
7007 {
7008 "type": "frame",
7009 "id": "w0LrRg",
7010 "name": "Label Row",
7011 "width": "fill_container",
7012 "justifyContent": "space_between",
7013 "alignItems": "center",
7014 "children": [
7015 {
7016 "type": "text",
7017 "id": "QpumB",
7018 "name": "Label",
7019 "fill": "#666666",
7020 "content": "EMAIL",
7021 "fontFamily": "JetBrains Mono",
7022 "fontSize": 10,
7023 "fontWeight": "bold",
7024 "letterSpacing": 1.2
7025 }
7026 ]
7027 },
7028 {
7029 "type": "frame",
7030 "id": "Hy0O4",
7031 "name": "Input",
7032 "width": "fill_container",
7033 "height": 46,
7034 "fill": "#FFFFFF",
7035 "cornerRadius": 10,
7036 "stroke": "#CBCCC9",
7037 "strokeWidth": 1,
7038 "gap": 10,
7039 "padding": [
7040 0,
7041 14
7042 ],
7043 "alignItems": "center",
7044 "children": [
7045 {
7046 "type": "icon",
7047 "id": "ts7da",
7048 "name": "Icon",
7049 "width": 15,
7050 "height": 15,
7051 "icon": "at-sign",
7052 "library": "lucide",
7053 "fill": "#666666"
7054 },
7055 {
7056 "type": "text",
7057 "id": "qtTsr",
7058 "name": "Value",
7059 "fill": "#111111",
7060 "content": "ada.lock@kernel.dev",
7061 "fontFamily": "Geist",
7062 "fontSize": 14.5,
7063 "fontWeight": "normal"
7064 }
7065 ]
7066 }
7067 ]
7068 },
7069 {
7070 "type": "frame",
7071 "id": "z8mPbq",
7072 "name": "PASSPHRASE Field",
7073 "width": "fill_container",
7074 "layout": "vertical",
7075 "gap": 7,
7076 "children": [
7077 {
7078 "type": "frame",
7079 "id": "uluyY",
7080 "name": "Label Row",
7081 "width": "fill_container",
7082 "justifyContent": "space_between",
7083 "alignItems": "center",
7084 "children": [
7085 {
7086 "type": "text",
7087 "id": "tkX8w",
7088 "name": "Label",
7089 "fill": "#666666",
7090 "content": "PASSWORD",
7091 "fontFamily": "JetBrains Mono",
7092 "fontSize": 10,
7093 "fontWeight": "bold",
7094 "letterSpacing": 1.2
7095 }
7096 ]
7097 },
7098 {
7099 "type": "frame",
7100 "id": "aqPZE",
7101 "name": "Input",
7102 "width": "fill_container",
7103 "height": 46,
7104 "fill": "#FFFFFF",
7105 "cornerRadius": 10,
7106 "stroke": "#111111",
7107 "strokeWidth": 1.4,
7108 "gap": 10,
7109 "padding": [
7110 0,
7111 14
7112 ],
7113 "alignItems": "center",
7114 "children": [
7115 {
7116 "type": "icon",
7117 "id": "w9Zfp",
7118 "name": "Icon",
7119 "width": 15,
7120 "height": 15,
7121 "icon": "lock",
7122 "library": "lucide",
7123 "fill": "#666666"
7124 },
7125 {
7126 "type": "text",
7127 "id": "BsxoY",
7128 "name": "Value",
7129 "fill": "#111111",
7130 "content": "••••••••••••",
7131 "fontFamily": "JetBrains Mono",
7132 "fontSize": 16,
7133 "fontWeight": "normal"
7134 },
7135 {
7136 "type": "frame",
7137 "id": "Uau5q",
7138 "name": "Spacer",
7139 "width": "fill_container",
7140 "height": 1
7141 },
7142 {
7143 "type": "icon",
7144 "id": "YSfjQ",
7145 "name": "Reveal",
7146 "width": 16,
7147 "height": 16,
7148 "icon": "eye",
7149 "library": "lucide",
7150 "fill": "#666666"
7151 }
7152 ]
7153 }
7154 ]
7155 },
7156 {
7157 "type": "frame",
7158 "id": "m7pcr",
7159 "name": "DOB Field",
7160 "width": "fill_container",
7161 "layout": "vertical",
7162 "gap": 7,
7163 "children": [
7164 {
7165 "type": "frame",
7166 "id": "Z2Jun",
7167 "name": "Label Row",
7168 "width": "fill_container",
7169 "justifyContent": "space_between",
7170 "alignItems": "center",
7171 "children": [
7172 {
7173 "type": "text",
7174 "id": "wHzPs",
7175 "name": "Label",
7176 "fill": "#666666",
7177 "content": "DATE OF BIRTH (OPTIONAL)",
7178 "fontFamily": "JetBrains Mono",
7179 "fontSize": 10,
7180 "fontWeight": "bold",
7181 "letterSpacing": 1.2
7182 },
7183 {
7184 "type": "text",
7185 "id": "X7qUZ",
7186 "name": "Age Gate",
7187 "fill": "#804200",
7188 "content": "18+ REQUIRED",
7189 "fontFamily": "JetBrains Mono",
7190 "fontSize": 9.5,
7191 "fontWeight": "bold",
7192 "letterSpacing": 1
7193 }
7194 ]
7195 },
7196 {
7197 "type": "frame",
7198 "id": "ZubuP",
7199 "name": "Selects",
7200 "width": "fill_container",
7201 "gap": 10,
7202 "children": [
7203 {
7204 "type": "frame",
7205 "id": "agMOL",
7206 "name": "Day Select",
7207 "width": "fill_container",
7208 "height": 46,
7209 "fill": "#FFFFFF",
7210 "cornerRadius": 10,
7211 "stroke": "#CBCCC9",
7212 "strokeWidth": 1,
7213 "gap": 8,
7214 "padding": [
7215 0,
7216 12
7217 ],
7218 "alignItems": "center",
7219 "children": [
7220 {
7221 "type": "text",
7222 "id": "umIEV",
7223 "name": "Value",
7224 "fill": "#111111",
7225 "content": "14",
7226 "fontFamily": "Geist",
7227 "fontSize": 14.5,
7228 "fontWeight": "normal"
7229 },
7230 {
7231 "type": "frame",
7232 "id": "aJza8",
7233 "name": "Spacer",
7234 "width": "fill_container",
7235 "height": 1
7236 },
7237 {
7238 "type": "icon",
7239 "id": "tLdlb",
7240 "name": "Chevron",
7241 "width": 14,
7242 "height": 14,
7243 "icon": "chevron-down",
7244 "library": "lucide",
7245 "fill": "#666666"
7246 }
7247 ]
7248 },
7249 {
7250 "type": "frame",
7251 "id": "n65vwi",
7252 "name": "Month Select",
7253 "width": "fill_container",
7254 "height": 46,
7255 "fill": "#FFFFFF",
7256 "cornerRadius": 10,
7257 "stroke": "#CBCCC9",
7258 "strokeWidth": 1,
7259 "gap": 8,
7260 "padding": [
7261 0,
7262 12
7263 ],
7264 "alignItems": "center",
7265 "children": [
7266 {
7267 "type": "text",
7268 "id": "G3AyH",
7269 "name": "Value",
7270 "fill": "#111111",
7271 "content": "MAR",
7272 "fontFamily": "Geist",
7273 "fontSize": 14.5,
7274 "fontWeight": "normal"
7275 },
7276 {
7277 "type": "frame",
7278 "id": "ZnpbC",
7279 "name": "Spacer",
7280 "width": "fill_container",
7281 "height": 1
7282 },
7283 {
7284 "type": "icon",
7285 "id": "Kxz06",
7286 "name": "Chevron",
7287 "width": 14,
7288 "height": 14,
7289 "icon": "chevron-down",
7290 "library": "lucide",
7291 "fill": "#666666"
7292 }
7293 ]
7294 },
7295 {
7296 "type": "frame",
7297 "id": "ofmBX",
7298 "name": "Year Select",
7299 "width": "fill_container",
7300 "height": 46,
7301 "fill": "#FFFFFF",
7302 "cornerRadius": 10,
7303 "stroke": "#CBCCC9",
7304 "strokeWidth": 1,
7305 "gap": 8,
7306 "padding": [
7307 0,
7308 12
7309 ],
7310 "alignItems": "center",
7311 "children": [
7312 {
7313 "type": "text",
7314 "id": "y0NwV0",
7315 "name": "Value",
7316 "fill": "#111111",
7317 "content": "1994",
7318 "fontFamily": "Geist",
7319 "fontSize": 14.5,
7320 "fontWeight": "normal"
7321 },
7322 {
7323 "type": "frame",
7324 "id": "DHhOM",
7325 "name": "Spacer",
7326 "width": "fill_container",
7327 "height": 1
7328 },
7329 {
7330 "type": "icon",
7331 "id": "ZnOrs",
7332 "name": "Chevron",
7333 "width": 14,
7334 "height": 14,
7335 "icon": "chevron-down",
7336 "library": "lucide",
7337 "fill": "#666666"
7338 }
7339 ]
7340 }
7341 ]
7342 }
7343 ]
7344 },
7345 {
7346 "type": "frame",
7347 "id": "alu1B",
7348 "name": "Terms Row",
7349 "width": "fill_container",
7350 "gap": 9,
7351 "alignItems": "center",
7352 "children": [
7353 {
7354 "type": "frame",
7355 "id": "krvRb",
7356 "name": "Checkbox",
7357 "width": 18,
7358 "height": 18,
7359 "fill": "#FF8400",
7360 "cornerRadius": 5,
7361 "justifyContent": "center",
7362 "alignItems": "center",
7363 "children": [
7364 {
7365 "type": "icon",
7366 "id": "PpbTt",
7367 "name": "Check",
7368 "width": 12,
7369 "height": 12,
7370 "icon": "check",
7371 "library": "lucide",
7372 "fill": "#111111"
7373 }
7374 ]
7375 },
7376 {
7377 "type": "frame",
7378 "id": "R2SkA",
7379 "name": "Terms Text",
7380 "gap": 4,
7381 "children": [
7382 {
7383 "type": "text",
7384 "id": "WBm3s",
7385 "name": "T1",
7386 "fill": "#111111",
7387 "content": "I agree to the",
7388 "fontFamily": "Geist",
7389 "fontSize": 13,
7390 "fontWeight": "normal"
7391 },
7392 {
7393 "type": "text",
7394 "id": "vcv3H",
7395 "name": "T2",
7396 "fill": "#111111",
7397 "content": "Terms",
7398 "fontFamily": "Geist",
7399 "fontSize": 13,
7400 "fontWeight": "bold"
7401 },
7402 {
7403 "type": "text",
7404 "id": "ECnSq",
7405 "name": "T3",
7406 "fill": "#111111",
7407 "content": "&",
7408 "fontFamily": "Geist",
7409 "fontSize": 13,
7410 "fontWeight": "normal"
7411 },
7412 {
7413 "type": "text",
7414 "id": "Xyrso",
7415 "name": "T4",
7416 "fill": "#111111",
7417 "content": "Privacy Policy",
7418 "fontFamily": "Geist",
7419 "fontSize": 13,
7420 "fontWeight": "bold"
7421 }
7422 ]
7423 }
7424 ]
7425 },
7426 {
7427 "type": "frame",
7428 "id": "d4chTV",
7429 "name": "Submit Button",
7430 "width": "fill_container",
7431 "height": 48,
7432 "fill": "#FF8400",
7433 "cornerRadius": 10,
7434 "effect": {
7435 "type": "shadow",
7436 "shadowType": "outer",
7437 "color": "#FF840066",
7438 "offset": {
7439 "x": 0,
7440 "y": 4
7441 },
7442 "blur": 14,
7443 "spread": -4
7444 },
7445 "gap": 9,
7446 "justifyContent": "center",
7447 "alignItems": "center",
7448 "children": [
7449 {
7450 "type": "text",
7451 "id": "xN3AR",
7452 "name": "Label",
7453 "fill": "#111111",
7454 "content": "Create account",
7455 "fontFamily": "JetBrains Mono",
7456 "fontSize": 14,
7457 "fontWeight": "bold",
7458 "letterSpacing": 0.4
7459 },
7460 {
7461 "type": "icon",
7462 "id": "AFKNa",
7463 "name": "Arrow",
7464 "width": 15,
7465 "height": 15,
7466 "icon": "arrow-right",
7467 "library": "lucide",
7468 "fill": "#111111"
7469 }
7470 ]
7471 },
7472 {
7473 "type": "frame",
7474 "id": "BYXxV",
7475 "name": "Login Row",
7476 "width": "fill_container",
7477 "gap": 6,
7478 "justifyContent": "center",
7479 "children": [
7480 {
7481 "type": "text",
7482 "id": "qeOm6",
7483 "name": "Q",
7484 "fill": "#666666",
7485 "content": "Already have an account?",
7486 "fontFamily": "Geist",
7487 "fontSize": 13,
7488 "fontWeight": "normal"
7489 },
7490 {
7491 "type": "text",
7492 "id": "SlJKk",
7493 "name": "Link",
7494 "fill": "#111111",
7495 "content": "Sign in",
7496 "fontFamily": "Geist",
7497 "fontSize": 13,
7498 "fontWeight": "bold"
7499 }
7500 ]
7501 }
7502 ]
7503 }
7504 ]
7505 },
7506 {
7507 "type": "frame",
7508 "id": "M1JKkx",
7509 "layoutPosition": "absolute",
7510 "x": 24,
7511 "y": 960,
7512 "name": "Status Row",
7513 "width": 720,
7514 "gap": 10,
7515 "justifyContent": "center",
7516 "alignItems": "center",
7517 "children": [
7518 {
7519 "type": "frame",
7520 "id": "R6ijg",
7521 "name": "Dot",
7522 "width": 8,
7523 "height": 8,
7524 "justifyContent": "center",
7525 "alignItems": "center",
7526 "children": [
7527 {
7528 "type": "ellipse",
7529 "id": "IcWDk",
7530 "name": "Dot",
7531 "fill": "$--color-success-foreground",
7532 "width": 7,
7533 "height": 7
7534 }
7535 ]
7536 },
7537 {
7538 "type": "text",
7539 "id": "OIZCv",
7540 "name": "Status",
7541 "fill": "$--muted-foreground",
7542 "content": "ALL SYSTEMS OPERATIONAL",
7543 "fontFamily": "$--font-primary",
7544 "fontSize": 11,
7545 "fontWeight": "normal",
7546 "letterSpacing": 0.5
7547 },
7548 {
7549 "type": "text",
7550 "id": "V62iUI",
7551 "name": "Sep",
7552 "fill": "$--border",
7553 "content": "·",
7554 "fontFamily": "$--font-primary",
7555 "fontSize": 11,
7556 "fontWeight": "normal"
7557 },
7558 {
7559 "type": "text",
7560 "id": "hK8E1",
7561 "name": "Region",
7562 "fill": "$--muted-foreground",
7563 "content": "REGION EU-CENTRAL-1",
7564 "fontFamily": "$--font-primary",
7565 "fontSize": 11,
7566 "fontWeight": "normal",
7567 "letterSpacing": 0.5
7568 },
7569 {
7570 "type": "text",
7571 "id": "TDJyP",
7572 "name": "Sep2",
7573 "fill": "$--border",
7574 "content": "·",
7575 "fontFamily": "$--font-primary",
7576 "fontSize": 11,
7577 "fontWeight": "normal"
7578 },
7579 {
7580 "type": "text",
7581 "id": "WClXz",
7582 "name": "Copy",
7583 "fill": "$--muted-foreground",
7584 "content": "© 2026 GitDataAI",
7585 "fontFamily": "$--font-primary",
7586 "fontSize": 11,
7587 "fontWeight": "normal",
7588 "letterSpacing": 0.5
7589 }
7590 ]
7591 },
7592 {
7593 "type": "frame",
7594 "id": "jB9To",
7595 "layoutPosition": "absolute",
7596 "x": 32,
7597 "y": 936,
7598 "name": "Hint",
7599 "width": 704,
7600 "height": 14,
7601 "gap": 7,
7602 "justifyContent": "center",
7603 "alignItems": "center",
7604 "children": [
7605 {
7606 "type": "text",
7607 "id": "ieUKW",
7608 "name": "Hint Text",
7609 "fill": "$--muted-foreground",
7610 "content": "PASSWORD POLICY & AGE GATE ENFORCED SERVER-SIDE",
7611 "fontFamily": "$--font-primary",
7612 "fontSize": 10,
7613 "fontWeight": "normal",
7614 "letterSpacing": 1.2
7615 }
7616 ]
7617 },
7618 {
7619 "type": "frame",
7620 "id": "I8bS8",
7621 "layoutPosition": "absolute",
7622 "x": 32,
7623 "y": 36,
7624 "name": "Breadcrumb",
7625 "gap": 8,
7626 "alignItems": "center",
7627 "children": [
7628 {
7629 "type": "frame",
7630 "id": "A8p0q",
7631 "name": "Logo",
7632 "width": 14,
7633 "height": 14,
7634 "fill": "#FF8400",
7635 "cornerRadius": 4
7636 },
7637 {
7638 "type": "text",
7639 "id": "kxi18",
7640 "name": "Root",
7641 "fill": "#111111",
7642 "content": "GitDataAI",
7643 "fontFamily": "JetBrains Mono",
7644 "fontSize": 10,
7645 "fontWeight": "bold",
7646 "letterSpacing": 1.2
7647 },
7648 {
7649 "type": "text",
7650 "id": "qTxOG",
7651 "name": "Sep1",
7652 "fill": "#CBCCC9",
7653 "content": "/",
7654 "fontFamily": "JetBrains Mono",
7655 "fontSize": 10,
7656 "fontWeight": "normal"
7657 },
7658 {
7659 "type": "text",
7660 "id": "nPSD2",
7661 "name": "Section",
7662 "fill": "#666666",
7663 "content": "AUTH",
7664 "fontFamily": "JetBrains Mono",
7665 "fontSize": 10,
7666 "fontWeight": "normal",
7667 "letterSpacing": 1.2
7668 },
7669 {
7670 "type": "text",
7671 "id": "HNJDr",
7672 "name": "Sep2",
7673 "fill": "#CBCCC9",
7674 "content": "/",
7675 "fontFamily": "JetBrains Mono",
7676 "fontSize": 10,
7677 "fontWeight": "normal"
7678 },
7679 {
7680 "type": "text",
7681 "id": "jtX5n",
7682 "name": "Current",
7683 "fill": "#804200",
7684 "content": "CREATE ACCOUNT",
7685 "fontFamily": "JetBrains Mono",
7686 "fontSize": 10,
7687 "fontWeight": "bold",
7688 "letterSpacing": 1.2
7689 }
7690 ]
7691 }
7692 ]
7693 },
7694 {
7695 "type": "frame",
7696 "id": "XFFrq",
7697 "x": 2166,
7698 "y": 3180,
7699 "name": "2. Sign Up — Mobile",
7700 "clip": true,
7701 "width": 390,
7702 "height": 844,
7703 "fill": "$--background",
7704 "layout": "vertical",
7705 "gap": 26,
7706 "padding": [
7707 40,
7708 16,
7709 72,
7710 16
7711 ],
7712 "justifyContent": "center",
7713 "alignItems": "center",
7714 "children": [
7715 {
7716 "type": "frame",
7717 "id": "ke1T1",
7718 "layoutPosition": "absolute",
7719 "x": 25,
7720 "y": 200,
7721 "name": "Ambient Glow",
7722 "width": 340,
7723 "height": 400,
7724 "fill": {
7725 "type": "gradient",
7726 "gradientType": "radial",
7727 "enabled": true,
7728 "rotation": 0,
7729 "size": {
7730 "width": 1,
7731 "height": 1
7732 },
7733 "colors": [
7734 {
7735 "color": "#FF840026",
7736 "position": 0
7737 },
7738 {
7739 "color": "#FF840000",
7740 "position": 1
7741 }
7742 ]
7743 }
7744 },
7745 {
7746 "type": "frame",
7747 "id": "f3SIJH",
7748 "layoutPosition": "absolute",
7749 "x": 0,
7750 "y": 0,
7751 "name": "Hairline Field",
7752 "width": 390,
7753 "height": 844,
7754 "fill": {
7755 "type": "gradient",
7756 "gradientType": "linear",
7757 "enabled": true,
7758 "rotation": 180,
7759 "size": {
7760 "height": 1
7761 },
7762 "colors": [
7763 {
7764 "color": "#00000000",
7765 "position": 0.55
7766 },
7767 {
7768 "color": "#00000009",
7769 "position": 1
7770 }
7771 ]
7772 }
7773 },
7774 {
7775 "type": "frame",
7776 "id": "bArdA",
7777 "layoutPosition": "absolute",
7778 "x": 16,
7779 "y": 16,
7780 "name": "Mark TL",
7781 "width": 18,
7782 "height": 18,
7783 "stroke": "$--border",
7784 "strokeWidth": {
7785 "top": 1,
7786 "left": 1
7787 },
7788 "layout": "none"
7789 },
7790 {
7791 "type": "frame",
7792 "id": "jjDtY",
7793 "layoutPosition": "absolute",
7794 "x": 356,
7795 "y": 16,
7796 "name": "Mark TR",
7797 "width": 18,
7798 "height": 18,
7799 "stroke": "$--border",
7800 "strokeWidth": {
7801 "top": 1,
7802 "right": 1
7803 },
7804 "layout": "none"
7805 },
7806 {
7807 "type": "frame",
7808 "id": "j8rWl",
7809 "layoutPosition": "absolute",
7810 "x": 16,
7811 "y": 810,
7812 "name": "Mark BL",
7813 "width": 18,
7814 "height": 18,
7815 "stroke": "$--border",
7816 "strokeWidth": {
7817 "bottom": 1,
7818 "left": 1
7819 },
7820 "layout": "none"
7821 },
7822 {
7823 "type": "frame",
7824 "id": "NFIQb",
7825 "layoutPosition": "absolute",
7826 "x": 356,
7827 "y": 810,
7828 "name": "Mark BR",
7829 "width": 18,
7830 "height": 18,
7831 "stroke": "$--border",
7832 "strokeWidth": {
7833 "right": 1,
7834 "bottom": 1
7835 },
7836 "layout": "none"
7837 },
7838 {
7839 "type": "frame",
7840 "id": "S82eJ",
7841 "name": "Login Card",
7842 "width": "fill_container",
7843 "fill": "$--card",
7844 "cornerRadius": "$--radius-m",
7845 "stroke": "$--border",
7846 "strokeWidth": 1,
7847 "effect": [
7848 {
7849 "type": "shadow",
7850 "shadowType": "outer",
7851 "color": "#1111111F",
7852 "offset": {
7853 "x": 0,
7854 "y": 18
7855 },
7856 "blur": 44,
7857 "spread": -8
7858 },
7859 {
7860 "type": "shadow",
7861 "shadowType": "outer",
7862 "color": "#1111110A",
7863 "offset": {
7864 "x": 0,
7865 "y": 2
7866 },
7867 "blur": 6
7868 }
7869 ],
7870 "layout": "vertical",
7871 "gap": 18,
7872 "padding": 24,
7873 "children": [
7874 {
7875 "type": "frame",
7876 "id": "v9gb9w",
7877 "name": "Card Header",
7878 "width": "fill_container",
7879 "layout": "vertical",
7880 "gap": 12,
7881 "alignItems": "center",
7882 "children": [
7883 {
7884 "type": "frame",
7885 "id": "oFVzQ",
7886 "name": "Logo",
7887 "clip": true,
7888 "width": 44,
7889 "height": 44,
7890 "fill": "$accent",
7891 "cornerRadius": 12,
7892 "layout": "none",
7893 "children": [
7894 {
7895 "type": "path",
7896 "id": "S8yHv",
7897 "x": 4.4,
7898 "y": 3.0609,
7899 "geometry": "M27.10145 22.82898l0-7.26956 8.09855-4.65507-1.53044-2.67826-8.09854 4.46377-6.37682-3.76232 0-8.92754-3.1884 0 0 8.9913-6.37681 3.69856-7.84348-4.46377-1.78551 2.55072 7.97101 4.52754 0 7.46087-7.97101 4.5913 1.78551 2.93334 7.84348-4.52754 6.37681 3.57101 0 9.11884 3.1884 0 0-9.11884 6.37682-3.63478 8.09854 4.59131 1.65798-2.93334-8.22609-4.52754z",
7900 "fill": "#1C2127",
7901 "width": 35.3275,
7902 "height": 38.4522
7903 }
7904 ]
7905 },
7906 {
7907 "type": "text",
7908 "id": "tSBeS",
7909 "name": "Heading",
7910 "fill": "#000000",
7911 "textGrowth": "fixed-width",
7912 "width": "fill_container",
7913 "content": "Create your account",
7914 "textAlign": "center",
7915 "fontFamily": "JetBrains Mono",
7916 "fontSize": 21,
7917 "fontWeight": "bold",
7918 "letterSpacing": -0.6
7919 },
7920 {
7921 "type": "text",
7922 "id": "m0rh9v",
7923 "name": "Subheading",
7924 "fill": "#666666",
7925 "textGrowth": "fixed-width",
7926 "width": "fill_container",
7927 "content": "Provision team access to the Kernel control plane and running clusters.",
7928 "lineHeight": 1.5,
7929 "textAlign": "center",
7930 "fontFamily": "Geist",
7931 "fontSize": 14,
7932 "fontWeight": "normal"
7933 }
7934 ]
7935 },
7936 {
7937 "type": "frame",
7938 "id": "J08KV",
7939 "name": "Form",
7940 "width": "fill_container",
7941 "layout": "vertical",
7942 "gap": 15,
7943 "children": [
7944 {
7945 "type": "frame",
7946 "id": "RG08A",
7947 "name": "FULL NAME Field",
7948 "width": "fill_container",
7949 "layout": "vertical",
7950 "gap": 7,
7951 "children": [
7952 {
7953 "type": "frame",
7954 "id": "grzCE",
7955 "name": "Label Row",
7956 "width": "fill_container",
7957 "justifyContent": "space_between",
7958 "alignItems": "center",
7959 "children": [
7960 {
7961 "type": "text",
7962 "id": "emz6y",
7963 "name": "Label",
7964 "fill": "#666666",
7965 "content": "USERNAME (OPTIONAL)",
7966 "fontFamily": "JetBrains Mono",
7967 "fontSize": 10,
7968 "fontWeight": "bold",
7969 "letterSpacing": 1.2
7970 }
7971 ]
7972 },
7973 {
7974 "type": "frame",
7975 "id": "ljGTZ",
7976 "name": "Input",
7977 "width": "fill_container",
7978 "height": 46,
7979 "fill": "#FFFFFF",
7980 "cornerRadius": 10,
7981 "stroke": "#CBCCC9",
7982 "strokeWidth": 1,
7983 "gap": 10,
7984 "padding": [
7985 0,
7986 14
7987 ],
7988 "alignItems": "center",
7989 "children": [
7990 {
7991 "type": "icon",
7992 "id": "asD2s",
7993 "name": "Icon",
7994 "width": 15,
7995 "height": 15,
7996 "icon": "user",
7997 "library": "lucide",
7998 "fill": "#666666"
7999 },
8000 {
8001 "type": "text",
8002 "id": "UiTHw",
8003 "name": "Value",
8004 "fill": "#111111",
8005 "content": "adalock",
8006 "fontFamily": "Geist",
8007 "fontSize": 14.5,
8008 "fontWeight": "normal"
8009 }
8010 ]
8011 }
8012 ]
8013 },
8014 {
8015 "type": "frame",
8016 "id": "x5bTv5",
8017 "name": "WORK EMAIL Field",
8018 "width": "fill_container",
8019 "layout": "vertical",
8020 "gap": 7,
8021 "children": [
8022 {
8023 "type": "frame",
8024 "id": "P2nHzb",
8025 "name": "Label Row",
8026 "width": "fill_container",
8027 "justifyContent": "space_between",
8028 "alignItems": "center",
8029 "children": [
8030 {
8031 "type": "text",
8032 "id": "nOnSb",
8033 "name": "Label",
8034 "fill": "#666666",
8035 "content": "EMAIL",
8036 "fontFamily": "JetBrains Mono",
8037 "fontSize": 10,
8038 "fontWeight": "bold",
8039 "letterSpacing": 1.2
8040 }
8041 ]
8042 },
8043 {
8044 "type": "frame",
8045 "id": "eS2i7",
8046 "name": "Input",
8047 "width": "fill_container",
8048 "height": 46,
8049 "fill": "#FFFFFF",
8050 "cornerRadius": 10,
8051 "stroke": "#CBCCC9",
8052 "strokeWidth": 1,
8053 "gap": 10,
8054 "padding": [
8055 0,
8056 14
8057 ],
8058 "alignItems": "center",
8059 "children": [
8060 {
8061 "type": "icon",
8062 "id": "C5zhQ",
8063 "name": "Icon",
8064 "width": 15,
8065 "height": 15,
8066 "icon": "at-sign",
8067 "library": "lucide",
8068 "fill": "#666666"
8069 },
8070 {
8071 "type": "text",
8072 "id": "eH7ir",
8073 "name": "Value",
8074 "fill": "#111111",
8075 "content": "ada.lock@kernel.dev",
8076 "fontFamily": "Geist",
8077 "fontSize": 14.5,
8078 "fontWeight": "normal"
8079 }
8080 ]
8081 }
8082 ]
8083 },
8084 {
8085 "type": "frame",
8086 "id": "C3T7YT",
8087 "name": "PASSPHRASE Field",
8088 "width": "fill_container",
8089 "layout": "vertical",
8090 "gap": 7,
8091 "children": [
8092 {
8093 "type": "frame",
8094 "id": "kXCK2",
8095 "name": "Label Row",
8096 "width": "fill_container",
8097 "justifyContent": "space_between",
8098 "alignItems": "center",
8099 "children": [
8100 {
8101 "type": "text",
8102 "id": "xv3fP",
8103 "name": "Label",
8104 "fill": "#666666",
8105 "content": "PASSWORD",
8106 "fontFamily": "JetBrains Mono",
8107 "fontSize": 10,
8108 "fontWeight": "bold",
8109 "letterSpacing": 1.2
8110 }
8111 ]
8112 },
8113 {
8114 "type": "frame",
8115 "id": "ReR1v",
8116 "name": "Input",
8117 "width": "fill_container",
8118 "height": 46,
8119 "fill": "#FFFFFF",
8120 "cornerRadius": 10,
8121 "stroke": "#111111",
8122 "strokeWidth": 1.4,
8123 "gap": 10,
8124 "padding": [
8125 0,
8126 14
8127 ],
8128 "alignItems": "center",
8129 "children": [
8130 {
8131 "type": "icon",
8132 "id": "CEFtT",
8133 "name": "Icon",
8134 "width": 15,
8135 "height": 15,
8136 "icon": "lock",
8137 "library": "lucide",
8138 "fill": "#666666"
8139 },
8140 {
8141 "type": "text",
8142 "id": "r9TLGO",
8143 "name": "Value",
8144 "fill": "#111111",
8145 "content": "••••••••••••",
8146 "fontFamily": "JetBrains Mono",
8147 "fontSize": 16,
8148 "fontWeight": "normal"
8149 },
8150 {
8151 "type": "frame",
8152 "id": "Mumi4",
8153 "name": "Spacer",
8154 "width": "fill_container",
8155 "height": 1
8156 },
8157 {
8158 "type": "icon",
8159 "id": "i1pMA",
8160 "name": "Reveal",
8161 "width": 16,
8162 "height": 16,
8163 "icon": "eye",
8164 "library": "lucide",
8165 "fill": "#666666"
8166 }
8167 ]
8168 }
8169 ]
8170 },
8171 {
8172 "type": "frame",
8173 "id": "GgBhi",
8174 "name": "DOB Field",
8175 "width": "fill_container",
8176 "layout": "vertical",
8177 "gap": 7,
8178 "children": [
8179 {
8180 "type": "frame",
8181 "id": "Z1jp9",
8182 "name": "Label Row",
8183 "width": "fill_container",
8184 "justifyContent": "space_between",
8185 "alignItems": "center",
8186 "children": [
8187 {
8188 "type": "text",
8189 "id": "YnIj3",
8190 "name": "Label",
8191 "fill": "#666666",
8192 "content": "DATE OF BIRTH (OPTIONAL)",
8193 "fontFamily": "JetBrains Mono",
8194 "fontSize": 10,
8195 "fontWeight": "bold",
8196 "letterSpacing": 1.2
8197 },
8198 {
8199 "type": "text",
8200 "id": "J9pQm",
8201 "name": "Age Gate",
8202 "fill": "#804200",
8203 "content": "18+ REQUIRED",
8204 "fontFamily": "JetBrains Mono",
8205 "fontSize": 9.5,
8206 "fontWeight": "bold",
8207 "letterSpacing": 1
8208 }
8209 ]
8210 },
8211 {
8212 "type": "frame",
8213 "id": "jClqu",
8214 "name": "Selects",
8215 "width": "fill_container",
8216 "gap": 10,
8217 "children": [
8218 {
8219 "type": "frame",
8220 "id": "awG44",
8221 "name": "Day Select",
8222 "width": "fill_container",
8223 "height": 46,
8224 "fill": "#FFFFFF",
8225 "cornerRadius": 10,
8226 "stroke": "#CBCCC9",
8227 "strokeWidth": 1,
8228 "gap": 8,
8229 "padding": [
8230 0,
8231 12
8232 ],
8233 "alignItems": "center",
8234 "children": [
8235 {
8236 "type": "text",
8237 "id": "Y8F46Y",
8238 "name": "Value",
8239 "fill": "#111111",
8240 "content": "14",
8241 "fontFamily": "Geist",
8242 "fontSize": 14.5,
8243 "fontWeight": "normal"
8244 },
8245 {
8246 "type": "frame",
8247 "id": "MYMpV",
8248 "name": "Spacer",
8249 "width": "fill_container",
8250 "height": 1
8251 },
8252 {
8253 "type": "icon",
8254 "id": "H97DQf",
8255 "name": "Chevron",
8256 "width": 14,
8257 "height": 14,
8258 "icon": "chevron-down",
8259 "library": "lucide",
8260 "fill": "#666666"
8261 }
8262 ]
8263 },
8264 {
8265 "type": "frame",
8266 "id": "sKjdR",
8267 "name": "Month Select",
8268 "width": "fill_container",
8269 "height": 46,
8270 "fill": "#FFFFFF",
8271 "cornerRadius": 10,
8272 "stroke": "#CBCCC9",
8273 "strokeWidth": 1,
8274 "gap": 8,
8275 "padding": [
8276 0,
8277 12
8278 ],
8279 "alignItems": "center",
8280 "children": [
8281 {
8282 "type": "text",
8283 "id": "Cnj5t",
8284 "name": "Value",
8285 "fill": "#111111",
8286 "content": "MAR",
8287 "fontFamily": "Geist",
8288 "fontSize": 14.5,
8289 "fontWeight": "normal"
8290 },
8291 {
8292 "type": "frame",
8293 "id": "fhVGs",
8294 "name": "Spacer",
8295 "width": "fill_container",
8296 "height": 1
8297 },
8298 {
8299 "type": "icon",
8300 "id": "pasko",
8301 "name": "Chevron",
8302 "width": 14,
8303 "height": 14,
8304 "icon": "chevron-down",
8305 "library": "lucide",
8306 "fill": "#666666"
8307 }
8308 ]
8309 },
8310 {
8311 "type": "frame",
8312 "id": "R1MQZ",
8313 "name": "Year Select",
8314 "width": "fill_container",
8315 "height": 46,
8316 "fill": "#FFFFFF",
8317 "cornerRadius": 10,
8318 "stroke": "#CBCCC9",
8319 "strokeWidth": 1,
8320 "gap": 8,
8321 "padding": [
8322 0,
8323 12
8324 ],
8325 "alignItems": "center",
8326 "children": [
8327 {
8328 "type": "text",
8329 "id": "nB7mL",
8330 "name": "Value",
8331 "fill": "#111111",
8332 "content": "1994",
8333 "fontFamily": "Geist",
8334 "fontSize": 14.5,
8335 "fontWeight": "normal"
8336 },
8337 {
8338 "type": "frame",
8339 "id": "zybqo",
8340 "name": "Spacer",
8341 "width": "fill_container",
8342 "height": 1
8343 },
8344 {
8345 "type": "icon",
8346 "id": "JemsP",
8347 "name": "Chevron",
8348 "width": 14,
8349 "height": 14,
8350 "icon": "chevron-down",
8351 "library": "lucide",
8352 "fill": "#666666"
8353 }
8354 ]
8355 }
8356 ]
8357 }
8358 ]
8359 },
8360 {
8361 "type": "frame",
8362 "id": "m77YbA",
8363 "name": "Terms Row",
8364 "width": "fill_container",
8365 "gap": 9,
8366 "alignItems": "center",
8367 "children": [
8368 {
8369 "type": "frame",
8370 "id": "V0BUn",
8371 "name": "Checkbox",
8372 "width": 18,
8373 "height": 18,
8374 "fill": "#FF8400",
8375 "cornerRadius": 5,
8376 "justifyContent": "center",
8377 "alignItems": "center",
8378 "children": [
8379 {
8380 "type": "icon",
8381 "id": "VuU4I",
8382 "name": "Check",
8383 "width": 12,
8384 "height": 12,
8385 "icon": "check",
8386 "library": "lucide",
8387 "fill": "#111111"
8388 }
8389 ]
8390 },
8391 {
8392 "type": "frame",
8393 "id": "PqV7A",
8394 "name": "Terms Text",
8395 "gap": 4,
8396 "children": [
8397 {
8398 "type": "text",
8399 "id": "QCOZe",
8400 "name": "T1",
8401 "fill": "#111111",
8402 "content": "I agree to the",
8403 "fontFamily": "Geist",
8404 "fontSize": 13,
8405 "fontWeight": "normal"
8406 },
8407 {
8408 "type": "text",
8409 "id": "XrUhl",
8410 "name": "T2",
8411 "fill": "#111111",
8412 "content": "Terms",
8413 "fontFamily": "Geist",
8414 "fontSize": 13,
8415 "fontWeight": "bold"
8416 },
8417 {
8418 "type": "text",
8419 "id": "n8Wkaf",
8420 "name": "T3",
8421 "fill": "#111111",
8422 "content": "&",
8423 "fontFamily": "Geist",
8424 "fontSize": 13,
8425 "fontWeight": "normal"
8426 },
8427 {
8428 "type": "text",
8429 "id": "m5CYZe",
8430 "name": "T4",
8431 "fill": "#111111",
8432 "content": "Privacy Policy",
8433 "fontFamily": "Geist",
8434 "fontSize": 13,
8435 "fontWeight": "bold"
8436 }
8437 ]
8438 }
8439 ]
8440 },
8441 {
8442 "type": "frame",
8443 "id": "v09S1H",
8444 "name": "Submit Button",
8445 "width": "fill_container",
8446 "height": 48,
8447 "fill": "#FF8400",
8448 "cornerRadius": 10,
8449 "effect": {
8450 "type": "shadow",
8451 "shadowType": "outer",
8452 "color": "#FF840066",
8453 "offset": {
8454 "x": 0,
8455 "y": 4
8456 },
8457 "blur": 14,
8458 "spread": -4
8459 },
8460 "gap": 9,
8461 "justifyContent": "center",
8462 "alignItems": "center",
8463 "children": [
8464 {
8465 "type": "text",
8466 "id": "WoN2e",
8467 "name": "Label",
8468 "fill": "#111111",
8469 "content": "Create account",
8470 "fontFamily": "JetBrains Mono",
8471 "fontSize": 14,
8472 "fontWeight": "bold",
8473 "letterSpacing": 0.4
8474 },
8475 {
8476 "type": "icon",
8477 "id": "ICHvV",
8478 "name": "Arrow",
8479 "width": 15,
8480 "height": 15,
8481 "icon": "arrow-right",
8482 "library": "lucide",
8483 "fill": "#111111"
8484 }
8485 ]
8486 },
8487 {
8488 "type": "frame",
8489 "id": "QhgIt",
8490 "name": "Login Row",
8491 "width": "fill_container",
8492 "gap": 6,
8493 "justifyContent": "center",
8494 "children": [
8495 {
8496 "type": "text",
8497 "id": "aEWnJ",
8498 "name": "Q",
8499 "fill": "#666666",
8500 "content": "Already have an account?",
8501 "fontFamily": "Geist",
8502 "fontSize": 13,
8503 "fontWeight": "normal"
8504 },
8505 {
8506 "type": "text",
8507 "id": "faFER",
8508 "name": "Link",
8509 "fill": "#111111",
8510 "content": "Sign in",
8511 "fontFamily": "Geist",
8512 "fontSize": 13,
8513 "fontWeight": "bold"
8514 }
8515 ]
8516 }
8517 ]
8518 }
8519 ]
8520 },
8521 {
8522 "type": "frame",
8523 "id": "D7xlq",
8524 "layoutPosition": "absolute",
8525 "x": 16,
8526 "y": 788,
8527 "name": "Status Row",
8528 "width": 358,
8529 "gap": 10,
8530 "justifyContent": "center",
8531 "alignItems": "center",
8532 "children": [
8533 {
8534 "type": "frame",
8535 "id": "u9wxKZ",
8536 "name": "Dot",
8537 "width": 8,
8538 "height": 8,
8539 "justifyContent": "center",
8540 "alignItems": "center",
8541 "children": [
8542 {
8543 "type": "ellipse",
8544 "id": "agiIK",
8545 "name": "Dot",
8546 "fill": "$--color-success-foreground",
8547 "width": 7,
8548 "height": 7
8549 }
8550 ]
8551 },
8552 {
8553 "type": "text",
8554 "id": "O2iXaE",
8555 "name": "Status",
8556 "fill": "$--muted-foreground",
8557 "content": "ALL SYSTEMS OPERATIONAL",
8558 "fontFamily": "$--font-primary",
8559 "fontSize": 11,
8560 "fontWeight": "normal",
8561 "letterSpacing": 0.5
8562 },
8563 {
8564 "type": "text",
8565 "id": "kkW8E",
8566 "name": "Sep",
8567 "fill": "$--border",
8568 "content": "·",
8569 "fontFamily": "$--font-primary",
8570 "fontSize": 11,
8571 "fontWeight": "normal"
8572 },
8573 {
8574 "type": "text",
8575 "id": "jX13B",
8576 "name": "Copy",
8577 "fill": "$--muted-foreground",
8578 "content": "© 2026 GitDataAI",
8579 "fontFamily": "$--font-primary",
8580 "fontSize": 11,
8581 "fontWeight": "normal",
8582 "letterSpacing": 0.5
8583 }
8584 ]
8585 },
8586 {
8587 "type": "frame",
8588 "id": "k7Jiul",
8589 "layoutPosition": "absolute",
8590 "x": 8,
8591 "y": 760,
8592 "name": "Hint",
8593 "width": 374,
8594 "height": 14,
8595 "gap": 7,
8596 "justifyContent": "center",
8597 "alignItems": "center",
8598 "children": [
8599 {
8600 "type": "text",
8601 "id": "uscs9",
8602 "name": "Hint Text",
8603 "fill": "$--muted-foreground",
8604 "content": "PASSWORD POLICY & AGE GATE ENFORCED SERVER-SIDE",
8605 "fontFamily": "$--font-primary",
8606 "fontSize": 10,
8607 "fontWeight": "normal",
8608 "letterSpacing": 1.2
8609 }
8610 ]
8611 }
8612 ]
8613 },
8614 {
8615 "type": "frame",
8616 "id": "SaADB",
8617 "x": 2676,
8618 "y": 3180,
8619 "name": "3. Forgot Password — Tablet",
8620 "clip": true,
8621 "width": 768,
8622 "height": 1024,
8623 "fill": "$--background",
8624 "layout": "vertical",
8625 "gap": 26,
8626 "padding": [
8627 48,
8628 32
8629 ],
8630 "justifyContent": "center",
8631 "alignItems": "center",
8632 "children": [
8633 {
8634 "type": "frame",
8635 "id": "MUWAx",
8636 "layoutPosition": "absolute",
8637 "x": 74,
8638 "y": 260,
8639 "name": "Ambient Glow",
8640 "width": 620,
8641 "height": 480,
8642 "fill": {
8643 "type": "gradient",
8644 "gradientType": "radial",
8645 "enabled": true,
8646 "rotation": 0,
8647 "size": {
8648 "width": 1,
8649 "height": 1
8650 },
8651 "colors": [
8652 {
8653 "color": "#FF840026",
8654 "position": 0
8655 },
8656 {
8657 "color": "#FF840000",
8658 "position": 1
8659 }
8660 ]
8661 }
8662 },
8663 {
8664 "type": "frame",
8665 "id": "M905c",
8666 "layoutPosition": "absolute",
8667 "x": 0,
8668 "y": 0,
8669 "name": "Hairline Field",
8670 "width": 768,
8671 "height": 1024,
8672 "fill": {
8673 "type": "gradient",
8674 "gradientType": "linear",
8675 "enabled": true,
8676 "rotation": 180,
8677 "size": {
8678 "height": 1
8679 },
8680 "colors": [
8681 {
8682 "color": "#00000000",
8683 "position": 0.55
8684 },
8685 {
8686 "color": "#00000009",
8687 "position": 1
8688 }
8689 ]
8690 }
8691 },
8692 {
8693 "type": "frame",
8694 "id": "rysv2",
8695 "layoutPosition": "absolute",
8696 "x": 24,
8697 "y": 24,
8698 "name": "Mark TL",
8699 "width": 18,
8700 "height": 18,
8701 "stroke": "$--border",
8702 "strokeWidth": {
8703 "top": 1,
8704 "left": 1
8705 },
8706 "layout": "none"
8707 },
8708 {
8709 "type": "frame",
8710 "id": "z7g7ZQ",
8711 "layoutPosition": "absolute",
8712 "x": 726,
8713 "y": 24,
8714 "name": "Mark TR",
8715 "width": 18,
8716 "height": 18,
8717 "stroke": "$--border",
8718 "strokeWidth": {
8719 "top": 1,
8720 "right": 1
8721 },
8722 "layout": "none"
8723 },
8724 {
8725 "type": "frame",
8726 "id": "NTHYW",
8727 "layoutPosition": "absolute",
8728 "x": 24,
8729 "y": 982,
8730 "name": "Mark BL",
8731 "width": 18,
8732 "height": 18,
8733 "stroke": "$--border",
8734 "strokeWidth": {
8735 "bottom": 1,
8736 "left": 1
8737 },
8738 "layout": "none"
8739 },
8740 {
8741 "type": "frame",
8742 "id": "r2CJ4p",
8743 "layoutPosition": "absolute",
8744 "x": 726,
8745 "y": 982,
8746 "name": "Mark BR",
8747 "width": 18,
8748 "height": 18,
8749 "stroke": "$--border",
8750 "strokeWidth": {
8751 "right": 1,
8752 "bottom": 1
8753 },
8754 "layout": "none"
8755 },
8756 {
8757 "type": "frame",
8758 "id": "rdO4c",
8759 "name": "Login Card",
8760 "width": 460,
8761 "fill": "$--card",
8762 "cornerRadius": "$--radius-m",
8763 "stroke": "$--border",
8764 "strokeWidth": 1,
8765 "effect": [
8766 {
8767 "type": "shadow",
8768 "shadowType": "outer",
8769 "color": "#1111111F",
8770 "offset": {
8771 "x": 0,
8772 "y": 18
8773 },
8774 "blur": 44,
8775 "spread": -8
8776 },
8777 {
8778 "type": "shadow",
8779 "shadowType": "outer",
8780 "color": "#1111110A",
8781 "offset": {
8782 "x": 0,
8783 "y": 2
8784 },
8785 "blur": 6
8786 }
8787 ],
8788 "layout": "vertical",
8789 "gap": 22,
8790 "padding": 32,
8791 "children": [
8792 {
8793 "type": "frame",
8794 "id": "Q0rBvd",
8795 "name": "Card Header",
8796 "width": "fill_container",
8797 "layout": "vertical",
8798 "gap": 12,
8799 "alignItems": "center",
8800 "children": [
8801 {
8802 "type": "frame",
8803 "id": "qSTnq",
8804 "name": "Icon Badge",
8805 "width": 44,
8806 "height": 44,
8807 "fill": "#F2F3F0",
8808 "cornerRadius": 12,
8809 "stroke": "#CBCCC9",
8810 "strokeWidth": 1,
8811 "justifyContent": "center",
8812 "alignItems": "center",
8813 "children": [
8814 {
8815 "type": "icon",
8816 "id": "D2Yb8",
8817 "name": "Key",
8818 "width": 20,
8819 "height": 20,
8820 "icon": "key-round",
8821 "library": "lucide",
8822 "fill": "#111111"
8823 }
8824 ]
8825 },
8826 {
8827 "type": "text",
8828 "id": "B9B4xW",
8829 "name": "Heading",
8830 "fill": "#111111",
8831 "textGrowth": "fixed-width",
8832 "width": "fill_container",
8833 "content": "Forgot passphrase?",
8834 "textAlign": "center",
8835 "fontFamily": "JetBrains Mono",
8836 "fontSize": 23,
8837 "fontWeight": "bold",
8838 "letterSpacing": -0.6
8839 },
8840 {
8841 "type": "text",
8842 "id": "vGOvG",
8843 "name": "Subheading",
8844 "fill": "#666666",
8845 "textGrowth": "fixed-width",
8846 "width": "fill_container",
8847 "content": "Enter your workspace email and we will send a single-use recovery link. It expires after 15 minutes.",
8848 "lineHeight": 1.5,
8849 "textAlign": "center",
8850 "fontFamily": "Geist",
8851 "fontSize": 14,
8852 "fontWeight": "normal"
8853 }
8854 ]
8855 },
8856 {
8857 "type": "frame",
8858 "id": "TXl8W",
8859 "name": "Form",
8860 "width": "fill_container",
8861 "layout": "vertical",
8862 "gap": 15,
8863 "children": [
8864 {
8865 "type": "frame",
8866 "id": "Bv2v7",
8867 "name": "Email Field",
8868 "width": "fill_container",
8869 "layout": "vertical",
8870 "gap": 7,
8871 "children": [
8872 {
8873 "type": "frame",
8874 "id": "RQyBE",
8875 "name": "Label Row",
8876 "width": "fill_container",
8877 "justifyContent": "space_between",
8878 "alignItems": "center",
8879 "children": [
8880 {
8881 "type": "text",
8882 "id": "LpLre",
8883 "name": "Label",
8884 "fill": "#666666",
8885 "content": "ACCOUNT EMAIL",
8886 "fontFamily": "JetBrains Mono",
8887 "fontSize": 10,
8888 "fontWeight": "bold",
8889 "letterSpacing": 1.2
8890 }
8891 ]
8892 },
8893 {
8894 "type": "frame",
8895 "id": "yraFo",
8896 "name": "Input",
8897 "width": "fill_container",
8898 "height": 46,
8899 "fill": "#FFFFFF",
8900 "cornerRadius": 10,
8901 "stroke": "#111111",
8902 "strokeWidth": 1.4,
8903 "gap": 10,
8904 "padding": [
8905 0,
8906 14
8907 ],
8908 "alignItems": "center",
8909 "children": [
8910 {
8911 "type": "icon",
8912 "id": "YFmHc",
8913 "name": "Icon",
8914 "width": 15,
8915 "height": 15,
8916 "icon": "at-sign",
8917 "library": "lucide",
8918 "fill": "#666666"
8919 },
8920 {
8921 "type": "text",
8922 "id": "xuvxH",
8923 "name": "Value",
8924 "fill": "#111111",
8925 "content": "ada.lock@kernel.dev",
8926 "fontFamily": "Geist",
8927 "fontSize": 14.5,
8928 "fontWeight": "normal"
8929 }
8930 ]
8931 }
8932 ]
8933 },
8934 {
8935 "type": "frame",
8936 "id": "iFVxQ",
8937 "name": "Notice",
8938 "width": "fill_container",
8939 "fill": "#F2F3F0",
8940 "cornerRadius": 10,
8941 "stroke": "#CBCCC9",
8942 "strokeWidth": 1,
8943 "gap": 9,
8944 "padding": [
8945 12,
8946 14
8947 ],
8948 "alignItems": "center",
8949 "children": [
8950 {
8951 "type": "icon",
8952 "id": "H4Ofzb",
8953 "name": "Info",
8954 "width": 15,
8955 "height": 15,
8956 "icon": "info",
8957 "library": "lucide",
8958 "fill": "#666666"
8959 },
8960 {
8961 "type": "text",
8962 "id": "k07Pr4",
8963 "name": "Text",
8964 "fill": "#666666",
8965 "textGrowth": "fixed-width",
8966 "width": "fill_container",
8967 "content": "We always confirm delivery — existing accounts are never revealed.",
8968 "lineHeight": 1.45,
8969 "fontFamily": "Geist",
8970 "fontSize": 12.5,
8971 "fontWeight": "normal"
8972 }
8973 ]
8974 },
8975 {
8976 "type": "frame",
8977 "id": "LstcU",
8978 "name": "Submit Button",
8979 "width": "fill_container",
8980 "height": 48,
8981 "fill": "#FF8400",
8982 "cornerRadius": 10,
8983 "effect": {
8984 "type": "shadow",
8985 "shadowType": "outer",
8986 "color": "#FF840066",
8987 "offset": {
8988 "x": 0,
8989 "y": 4
8990 },
8991 "blur": 14,
8992 "spread": -4
8993 },
8994 "gap": 9,
8995 "justifyContent": "center",
8996 "alignItems": "center",
8997 "children": [
8998 {
8999 "type": "text",
9000 "id": "Jxoyh",
9001 "name": "Label",
9002 "fill": "#111111",
9003 "content": "Send recovery link",
9004 "fontFamily": "JetBrains Mono",
9005 "fontSize": 14,
9006 "fontWeight": "bold",
9007 "letterSpacing": 0.4
9008 },
9009 {
9010 "type": "icon",
9011 "id": "tCT0H",
9012 "name": "Arrow",
9013 "width": 15,
9014 "height": 15,
9015 "icon": "arrow-right",
9016 "library": "lucide",
9017 "fill": "#111111"
9018 }
9019 ]
9020 },
9021 {
9022 "type": "frame",
9023 "id": "Cb38z",
9024 "name": "Back Row",
9025 "width": "fill_container",
9026 "gap": 6,
9027 "justifyContent": "center",
9028 "children": [
9029 {
9030 "type": "text",
9031 "id": "otdnO",
9032 "name": "Q",
9033 "fill": "#666666",
9034 "content": "Remembered it?",
9035 "fontFamily": "Geist",
9036 "fontSize": 13,
9037 "fontWeight": "normal"
9038 },
9039 {
9040 "type": "text",
9041 "id": "DKLLp",
9042 "name": "Link",
9043 "fill": "#111111",
9044 "content": "Back to sign in",
9045 "fontFamily": "Geist",
9046 "fontSize": 13,
9047 "fontWeight": "bold"
9048 }
9049 ]
9050 }
9051 ]
9052 }
9053 ]
9054 },
9055 {
9056 "type": "frame",
9057 "id": "m0n0g5",
9058 "layoutPosition": "absolute",
9059 "x": 24,
9060 "y": 960,
9061 "name": "Status Row",
9062 "width": 720,
9063 "gap": 10,
9064 "justifyContent": "center",
9065 "alignItems": "center",
9066 "children": [
9067 {
9068 "type": "frame",
9069 "id": "lu6fD",
9070 "name": "Dot",
9071 "width": 8,
9072 "height": 8,
9073 "justifyContent": "center",
9074 "alignItems": "center",
9075 "children": [
9076 {
9077 "type": "ellipse",
9078 "id": "omHWq",
9079 "name": "Dot",
9080 "fill": "$--color-success-foreground",
9081 "width": 7,
9082 "height": 7
9083 }
9084 ]
9085 },
9086 {
9087 "type": "text",
9088 "id": "dGSLz",
9089 "name": "Status",
9090 "fill": "$--muted-foreground",
9091 "content": "ALL SYSTEMS OPERATIONAL",
9092 "fontFamily": "$--font-primary",
9093 "fontSize": 11,
9094 "fontWeight": "normal",
9095 "letterSpacing": 0.5
9096 },
9097 {
9098 "type": "text",
9099 "id": "VZEbc",
9100 "name": "Sep",
9101 "fill": "$--border",
9102 "content": "·",
9103 "fontFamily": "$--font-primary",
9104 "fontSize": 11,
9105 "fontWeight": "normal"
9106 },
9107 {
9108 "type": "text",
9109 "id": "VEHxx",
9110 "name": "Region",
9111 "fill": "$--muted-foreground",
9112 "content": "REGION EU-CENTRAL-1",
9113 "fontFamily": "$--font-primary",
9114 "fontSize": 11,
9115 "fontWeight": "normal",
9116 "letterSpacing": 0.5
9117 },
9118 {
9119 "type": "text",
9120 "id": "Y5f7im",
9121 "name": "Sep2",
9122 "fill": "$--border",
9123 "content": "·",
9124 "fontFamily": "$--font-primary",
9125 "fontSize": 11,
9126 "fontWeight": "normal"
9127 },
9128 {
9129 "type": "text",
9130 "id": "cXl01",
9131 "name": "Copy",
9132 "fill": "$--muted-foreground",
9133 "content": "© 2026 GitDataAI",
9134 "fontFamily": "$--font-primary",
9135 "fontSize": 11,
9136 "fontWeight": "normal",
9137 "letterSpacing": 0.5
9138 }
9139 ]
9140 },
9141 {
9142 "type": "frame",
9143 "id": "ha59Q",
9144 "layoutPosition": "absolute",
9145 "x": 32,
9146 "y": 936,
9147 "name": "Hint",
9148 "width": 704,
9149 "height": 14,
9150 "gap": 7,
9151 "justifyContent": "center",
9152 "alignItems": "center",
9153 "children": [
9154 {
9155 "type": "text",
9156 "id": "w6rJjR",
9157 "name": "Hint Text",
9158 "fill": "$--muted-foreground",
9159 "content": "RECOVERY LINKS EXPIRE AFTER 15 MINUTES",
9160 "fontFamily": "$--font-primary",
9161 "fontSize": 10,
9162 "fontWeight": "normal",
9163 "letterSpacing": 1.2
9164 }
9165 ]
9166 },
9167 {
9168 "type": "frame",
9169 "id": "Je4Io",
9170 "layoutPosition": "absolute",
9171 "x": 32,
9172 "y": 36,
9173 "name": "Breadcrumb",
9174 "gap": 8,
9175 "alignItems": "center",
9176 "children": [
9177 {
9178 "type": "frame",
9179 "id": "GBrwl",
9180 "name": "Logo",
9181 "width": 14,
9182 "height": 14,
9183 "fill": "#FF8400",
9184 "cornerRadius": 4
9185 },
9186 {
9187 "type": "text",
9188 "id": "yG85l",
9189 "name": "Root",
9190 "fill": "#111111",
9191 "content": "GitDataAI",
9192 "fontFamily": "JetBrains Mono",
9193 "fontSize": 10,
9194 "fontWeight": "bold",
9195 "letterSpacing": 1.2
9196 },
9197 {
9198 "type": "text",
9199 "id": "yzrfG",
9200 "name": "Sep1",
9201 "fill": "#CBCCC9",
9202 "content": "/",
9203 "fontFamily": "JetBrains Mono",
9204 "fontSize": 10,
9205 "fontWeight": "normal"
9206 },
9207 {
9208 "type": "text",
9209 "id": "u4RgZ",
9210 "name": "Section",
9211 "fill": "#666666",
9212 "content": "AUTH",
9213 "fontFamily": "JetBrains Mono",
9214 "fontSize": 10,
9215 "fontWeight": "normal",
9216 "letterSpacing": 1.2
9217 },
9218 {
9219 "type": "text",
9220 "id": "Bhyko",
9221 "name": "Sep2",
9222 "fill": "#CBCCC9",
9223 "content": "/",
9224 "fontFamily": "JetBrains Mono",
9225 "fontSize": 10,
9226 "fontWeight": "normal"
9227 },
9228 {
9229 "type": "text",
9230 "id": "rI3Mo",
9231 "name": "Current",
9232 "fill": "#804200",
9233 "content": "RECOVER ACCESS",
9234 "fontFamily": "JetBrains Mono",
9235 "fontSize": 10,
9236 "fontWeight": "bold",
9237 "letterSpacing": 1.2
9238 }
9239 ]
9240 }
9241 ]
9242 },
9243 {
9244 "type": "frame",
9245 "id": "wO0Qo",
9246 "x": 3504,
9247 "y": 3180,
9248 "name": "3. Forgot Password — Mobile",
9249 "clip": true,
9250 "width": 390,
9251 "height": 844,
9252 "fill": "$--background",
9253 "layout": "vertical",
9254 "gap": 26,
9255 "padding": [
9256 40,
9257 16,
9258 72,
9259 16
9260 ],
9261 "justifyContent": "center",
9262 "alignItems": "center",
9263 "children": [
9264 {
9265 "type": "frame",
9266 "id": "WlmNN",
9267 "layoutPosition": "absolute",
9268 "x": 25,
9269 "y": 200,
9270 "name": "Ambient Glow",
9271 "width": 340,
9272 "height": 400,
9273 "fill": {
9274 "type": "gradient",
9275 "gradientType": "radial",
9276 "enabled": true,
9277 "rotation": 0,
9278 "size": {
9279 "width": 1,
9280 "height": 1
9281 },
9282 "colors": [
9283 {
9284 "color": "#FF840026",
9285 "position": 0
9286 },
9287 {
9288 "color": "#FF840000",
9289 "position": 1
9290 }
9291 ]
9292 }
9293 },
9294 {
9295 "type": "frame",
9296 "id": "Jme6r",
9297 "layoutPosition": "absolute",
9298 "x": 0,
9299 "y": 0,
9300 "name": "Hairline Field",
9301 "width": 390,
9302 "height": 844,
9303 "fill": {
9304 "type": "gradient",
9305 "gradientType": "linear",
9306 "enabled": true,
9307 "rotation": 180,
9308 "size": {
9309 "height": 1
9310 },
9311 "colors": [
9312 {
9313 "color": "#00000000",
9314 "position": 0.55
9315 },
9316 {
9317 "color": "#00000009",
9318 "position": 1
9319 }
9320 ]
9321 }
9322 },
9323 {
9324 "type": "frame",
9325 "id": "Zft8A",
9326 "layoutPosition": "absolute",
9327 "x": 16,
9328 "y": 16,
9329 "name": "Mark TL",
9330 "width": 18,
9331 "height": 18,
9332 "stroke": "$--border",
9333 "strokeWidth": {
9334 "top": 1,
9335 "left": 1
9336 },
9337 "layout": "none"
9338 },
9339 {
9340 "type": "frame",
9341 "id": "Kd8yj",
9342 "layoutPosition": "absolute",
9343 "x": 356,
9344 "y": 16,
9345 "name": "Mark TR",
9346 "width": 18,
9347 "height": 18,
9348 "stroke": "$--border",
9349 "strokeWidth": {
9350 "top": 1,
9351 "right": 1
9352 },
9353 "layout": "none"
9354 },
9355 {
9356 "type": "frame",
9357 "id": "oXV5c",
9358 "layoutPosition": "absolute",
9359 "x": 16,
9360 "y": 810,
9361 "name": "Mark BL",
9362 "width": 18,
9363 "height": 18,
9364 "stroke": "$--border",
9365 "strokeWidth": {
9366 "bottom": 1,
9367 "left": 1
9368 },
9369 "layout": "none"
9370 },
9371 {
9372 "type": "frame",
9373 "id": "t98848",
9374 "layoutPosition": "absolute",
9375 "x": 356,
9376 "y": 810,
9377 "name": "Mark BR",
9378 "width": 18,
9379 "height": 18,
9380 "stroke": "$--border",
9381 "strokeWidth": {
9382 "right": 1,
9383 "bottom": 1
9384 },
9385 "layout": "none"
9386 },
9387 {
9388 "type": "frame",
9389 "id": "tsdRm",
9390 "name": "Login Card",
9391 "width": "fill_container",
9392 "fill": "$--card",
9393 "cornerRadius": "$--radius-m",
9394 "stroke": "$--border",
9395 "strokeWidth": 1,
9396 "effect": [
9397 {
9398 "type": "shadow",
9399 "shadowType": "outer",
9400 "color": "#1111111F",
9401 "offset": {
9402 "x": 0,
9403 "y": 18
9404 },
9405 "blur": 44,
9406 "spread": -8
9407 },
9408 {
9409 "type": "shadow",
9410 "shadowType": "outer",
9411 "color": "#1111110A",
9412 "offset": {
9413 "x": 0,
9414 "y": 2
9415 },
9416 "blur": 6
9417 }
9418 ],
9419 "layout": "vertical",
9420 "gap": 18,
9421 "padding": 24,
9422 "children": [
9423 {
9424 "type": "frame",
9425 "id": "CbMjY",
9426 "name": "Card Header",
9427 "width": "fill_container",
9428 "layout": "vertical",
9429 "gap": 12,
9430 "alignItems": "center",
9431 "children": [
9432 {
9433 "type": "frame",
9434 "id": "Z5JrJo",
9435 "name": "Icon Badge",
9436 "width": 44,
9437 "height": 44,
9438 "fill": "#F2F3F0",
9439 "cornerRadius": 12,
9440 "stroke": "#CBCCC9",
9441 "strokeWidth": 1,
9442 "justifyContent": "center",
9443 "alignItems": "center",
9444 "children": [
9445 {
9446 "type": "icon",
9447 "id": "vmOOK",
9448 "name": "Key",
9449 "width": 20,
9450 "height": 20,
9451 "icon": "key-round",
9452 "library": "lucide",
9453 "fill": "#111111"
9454 }
9455 ]
9456 },
9457 {
9458 "type": "text",
9459 "id": "tC3d0",
9460 "name": "Heading",
9461 "fill": "#111111",
9462 "textGrowth": "fixed-width",
9463 "width": "fill_container",
9464 "content": "Forgot passphrase?",
9465 "textAlign": "center",
9466 "fontFamily": "JetBrains Mono",
9467 "fontSize": 21,
9468 "fontWeight": "bold",
9469 "letterSpacing": -0.6
9470 },
9471 {
9472 "type": "text",
9473 "id": "jIJuC",
9474 "name": "Subheading",
9475 "fill": "#666666",
9476 "textGrowth": "fixed-width",
9477 "width": "fill_container",
9478 "content": "Enter your workspace email and we will send a single-use recovery link. It expires after 15 minutes.",
9479 "lineHeight": 1.5,
9480 "textAlign": "center",
9481 "fontFamily": "Geist",
9482 "fontSize": 14,
9483 "fontWeight": "normal"
9484 }
9485 ]
9486 },
9487 {
9488 "type": "frame",
9489 "id": "OLfFw",
9490 "name": "Form",
9491 "width": "fill_container",
9492 "layout": "vertical",
9493 "gap": 15,
9494 "children": [
9495 {
9496 "type": "frame",
9497 "id": "Xge1y",
9498 "name": "Email Field",
9499 "width": "fill_container",
9500 "layout": "vertical",
9501 "gap": 7,
9502 "children": [
9503 {
9504 "type": "frame",
9505 "id": "gVoM7",
9506 "name": "Label Row",
9507 "width": "fill_container",
9508 "justifyContent": "space_between",
9509 "alignItems": "center",
9510 "children": [
9511 {
9512 "type": "text",
9513 "id": "CccRV",
9514 "name": "Label",
9515 "fill": "#666666",
9516 "content": "ACCOUNT EMAIL",
9517 "fontFamily": "JetBrains Mono",
9518 "fontSize": 10,
9519 "fontWeight": "bold",
9520 "letterSpacing": 1.2
9521 }
9522 ]
9523 },
9524 {
9525 "type": "frame",
9526 "id": "rK4vZ",
9527 "name": "Input",
9528 "width": "fill_container",
9529 "height": 46,
9530 "fill": "#FFFFFF",
9531 "cornerRadius": 10,
9532 "stroke": "#111111",
9533 "strokeWidth": 1.4,
9534 "gap": 10,
9535 "padding": [
9536 0,
9537 14
9538 ],
9539 "alignItems": "center",
9540 "children": [
9541 {
9542 "type": "icon",
9543 "id": "ni5B8",
9544 "name": "Icon",
9545 "width": 15,
9546 "height": 15,
9547 "icon": "at-sign",
9548 "library": "lucide",
9549 "fill": "#666666"
9550 },
9551 {
9552 "type": "text",
9553 "id": "DBONq",
9554 "name": "Value",
9555 "fill": "#111111",
9556 "content": "ada.lock@kernel.dev",
9557 "fontFamily": "Geist",
9558 "fontSize": 14.5,
9559 "fontWeight": "normal"
9560 }
9561 ]
9562 }
9563 ]
9564 },
9565 {
9566 "type": "frame",
9567 "id": "beiWO",
9568 "name": "Notice",
9569 "width": "fill_container",
9570 "fill": "#F2F3F0",
9571 "cornerRadius": 10,
9572 "stroke": "#CBCCC9",
9573 "strokeWidth": 1,
9574 "gap": 9,
9575 "padding": [
9576 12,
9577 14
9578 ],
9579 "alignItems": "center",
9580 "children": [
9581 {
9582 "type": "icon",
9583 "id": "P2EkQ0",
9584 "name": "Info",
9585 "width": 15,
9586 "height": 15,
9587 "icon": "info",
9588 "library": "lucide",
9589 "fill": "#666666"
9590 },
9591 {
9592 "type": "text",
9593 "id": "c5c7ik",
9594 "name": "Text",
9595 "fill": "#666666",
9596 "textGrowth": "fixed-width",
9597 "width": "fill_container",
9598 "content": "We always confirm delivery — existing accounts are never revealed.",
9599 "lineHeight": 1.45,
9600 "fontFamily": "Geist",
9601 "fontSize": 12.5,
9602 "fontWeight": "normal"
9603 }
9604 ]
9605 },
9606 {
9607 "type": "frame",
9608 "id": "r65AeY",
9609 "name": "Submit Button",
9610 "width": "fill_container",
9611 "height": 48,
9612 "fill": "#FF8400",
9613 "cornerRadius": 10,
9614 "effect": {
9615 "type": "shadow",
9616 "shadowType": "outer",
9617 "color": "#FF840066",
9618 "offset": {
9619 "x": 0,
9620 "y": 4
9621 },
9622 "blur": 14,
9623 "spread": -4
9624 },
9625 "gap": 9,
9626 "justifyContent": "center",
9627 "alignItems": "center",
9628 "children": [
9629 {
9630 "type": "text",
9631 "id": "MOCPS",
9632 "name": "Label",
9633 "fill": "#111111",
9634 "content": "Send recovery link",
9635 "fontFamily": "JetBrains Mono",
9636 "fontSize": 14,
9637 "fontWeight": "bold",
9638 "letterSpacing": 0.4
9639 },
9640 {
9641 "type": "icon",
9642 "id": "iGbYV",
9643 "name": "Arrow",
9644 "width": 15,
9645 "height": 15,
9646 "icon": "arrow-right",
9647 "library": "lucide",
9648 "fill": "#111111"
9649 }
9650 ]
9651 },
9652 {
9653 "type": "frame",
9654 "id": "sKFD2",
9655 "name": "Back Row",
9656 "width": "fill_container",
9657 "gap": 6,
9658 "justifyContent": "center",
9659 "children": [
9660 {
9661 "type": "text",
9662 "id": "u6czE",
9663 "name": "Q",
9664 "fill": "#666666",
9665 "content": "Remembered it?",
9666 "fontFamily": "Geist",
9667 "fontSize": 13,
9668 "fontWeight": "normal"
9669 },
9670 {
9671 "type": "text",
9672 "id": "nTWQA",
9673 "name": "Link",
9674 "fill": "#111111",
9675 "content": "Back to sign in",
9676 "fontFamily": "Geist",
9677 "fontSize": 13,
9678 "fontWeight": "bold"
9679 }
9680 ]
9681 }
9682 ]
9683 }
9684 ]
9685 },
9686 {
9687 "type": "frame",
9688 "id": "peGaI",
9689 "layoutPosition": "absolute",
9690 "x": 16,
9691 "y": 788,
9692 "name": "Status Row",
9693 "width": 358,
9694 "gap": 10,
9695 "justifyContent": "center",
9696 "alignItems": "center",
9697 "children": [
9698 {
9699 "type": "frame",
9700 "id": "SdYg5",
9701 "name": "Dot",
9702 "width": 8,
9703 "height": 8,
9704 "justifyContent": "center",
9705 "alignItems": "center",
9706 "children": [
9707 {
9708 "type": "ellipse",
9709 "id": "jIlMk",
9710 "name": "Dot",
9711 "fill": "$--color-success-foreground",
9712 "width": 7,
9713 "height": 7
9714 }
9715 ]
9716 },
9717 {
9718 "type": "text",
9719 "id": "i8Jqu",
9720 "name": "Status",
9721 "fill": "$--muted-foreground",
9722 "content": "ALL SYSTEMS OPERATIONAL",
9723 "fontFamily": "$--font-primary",
9724 "fontSize": 11,
9725 "fontWeight": "normal",
9726 "letterSpacing": 0.5
9727 },
9728 {
9729 "type": "text",
9730 "id": "X2HWzo",
9731 "name": "Sep",
9732 "fill": "$--border",
9733 "content": "·",
9734 "fontFamily": "$--font-primary",
9735 "fontSize": 11,
9736 "fontWeight": "normal"
9737 },
9738 {
9739 "type": "text",
9740 "id": "c9f63f",
9741 "name": "Copy",
9742 "fill": "$--muted-foreground",
9743 "content": "© 2026 GitDataAI",
9744 "fontFamily": "$--font-primary",
9745 "fontSize": 11,
9746 "fontWeight": "normal",
9747 "letterSpacing": 0.5
9748 }
9749 ]
9750 },
9751 {
9752 "type": "frame",
9753 "id": "nmCIn",
9754 "layoutPosition": "absolute",
9755 "x": 8,
9756 "y": 760,
9757 "name": "Hint",
9758 "width": 374,
9759 "height": 14,
9760 "gap": 7,
9761 "justifyContent": "center",
9762 "alignItems": "center",
9763 "children": [
9764 {
9765 "type": "text",
9766 "id": "fZfMy",
9767 "name": "Hint Text",
9768 "fill": "$--muted-foreground",
9769 "content": "RECOVERY LINKS EXPIRE AFTER 15 MINUTES",
9770 "fontFamily": "$--font-primary",
9771 "fontSize": 10,
9772 "fontWeight": "normal",
9773 "letterSpacing": 1.2
9774 }
9775 ]
9776 }
9777 ]
9778 },
9779 {
9780 "type": "frame",
9781 "id": "K8Zuuy",
9782 "x": 0,
9783 "y": 4324,
9784 "name": "4. Reset Password — Tablet",
9785 "clip": true,
9786 "width": 768,
9787 "height": 1024,
9788 "fill": "$--background",
9789 "layout": "vertical",
9790 "gap": 26,
9791 "padding": [
9792 48,
9793 32
9794 ],
9795 "justifyContent": "center",
9796 "alignItems": "center",
9797 "children": [
9798 {
9799 "type": "frame",
9800 "id": "Y1nSOz",
9801 "layoutPosition": "absolute",
9802 "x": 74,
9803 "y": 260,
9804 "name": "Ambient Glow",
9805 "width": 620,
9806 "height": 480,
9807 "fill": {
9808 "type": "gradient",
9809 "gradientType": "radial",
9810 "enabled": true,
9811 "rotation": 0,
9812 "size": {
9813 "width": 1,
9814 "height": 1
9815 },
9816 "colors": [
9817 {
9818 "color": "#FF840026",
9819 "position": 0
9820 },
9821 {
9822 "color": "#FF840000",
9823 "position": 1
9824 }
9825 ]
9826 }
9827 },
9828 {
9829 "type": "frame",
9830 "id": "Q8M6p",
9831 "layoutPosition": "absolute",
9832 "x": 0,
9833 "y": 0,
9834 "name": "Hairline Field",
9835 "width": 768,
9836 "height": 1024,
9837 "fill": {
9838 "type": "gradient",
9839 "gradientType": "linear",
9840 "enabled": true,
9841 "rotation": 180,
9842 "size": {
9843 "height": 1
9844 },
9845 "colors": [
9846 {
9847 "color": "#00000000",
9848 "position": 0.55
9849 },
9850 {
9851 "color": "#00000009",
9852 "position": 1
9853 }
9854 ]
9855 }
9856 },
9857 {
9858 "type": "frame",
9859 "id": "Exoi0",
9860 "layoutPosition": "absolute",
9861 "x": 24,
9862 "y": 24,
9863 "name": "Mark TL",
9864 "width": 18,
9865 "height": 18,
9866 "stroke": "$--border",
9867 "strokeWidth": {
9868 "top": 1,
9869 "left": 1
9870 },
9871 "layout": "none"
9872 },
9873 {
9874 "type": "frame",
9875 "id": "XFHRF",
9876 "layoutPosition": "absolute",
9877 "x": 726,
9878 "y": 24,
9879 "name": "Mark TR",
9880 "width": 18,
9881 "height": 18,
9882 "stroke": "$--border",
9883 "strokeWidth": {
9884 "top": 1,
9885 "right": 1
9886 },
9887 "layout": "none"
9888 },
9889 {
9890 "type": "frame",
9891 "id": "ncmBI",
9892 "layoutPosition": "absolute",
9893 "x": 24,
9894 "y": 982,
9895 "name": "Mark BL",
9896 "width": 18,
9897 "height": 18,
9898 "stroke": "$--border",
9899 "strokeWidth": {
9900 "bottom": 1,
9901 "left": 1
9902 },
9903 "layout": "none"
9904 },
9905 {
9906 "type": "frame",
9907 "id": "L9zLM",
9908 "layoutPosition": "absolute",
9909 "x": 726,
9910 "y": 982,
9911 "name": "Mark BR",
9912 "width": 18,
9913 "height": 18,
9914 "stroke": "$--border",
9915 "strokeWidth": {
9916 "right": 1,
9917 "bottom": 1
9918 },
9919 "layout": "none"
9920 },
9921 {
9922 "type": "frame",
9923 "id": "rBdvh",
9924 "name": "Login Card",
9925 "width": 460,
9926 "fill": "$--card",
9927 "cornerRadius": "$--radius-m",
9928 "stroke": "$--border",
9929 "strokeWidth": 1,
9930 "effect": [
9931 {
9932 "type": "shadow",
9933 "shadowType": "outer",
9934 "color": "#1111111F",
9935 "offset": {
9936 "x": 0,
9937 "y": 18
9938 },
9939 "blur": 44,
9940 "spread": -8
9941 },
9942 {
9943 "type": "shadow",
9944 "shadowType": "outer",
9945 "color": "#1111110A",
9946 "offset": {
9947 "x": 0,
9948 "y": 2
9949 },
9950 "blur": 6
9951 }
9952 ],
9953 "layout": "vertical",
9954 "gap": 22,
9955 "padding": 32,
9956 "children": [
9957 {
9958 "type": "frame",
9959 "id": "I5qlkF",
9960 "name": "Card Header",
9961 "width": "fill_container",
9962 "layout": "vertical",
9963 "gap": 12,
9964 "alignItems": "center",
9965 "children": [
9966 {
9967 "type": "frame",
9968 "id": "Gang3",
9969 "name": "Icon Badge",
9970 "width": 44,
9971 "height": 44,
9972 "fill": "#F2F3F0",
9973 "cornerRadius": 12,
9974 "stroke": "#CBCCC9",
9975 "strokeWidth": 1,
9976 "justifyContent": "center",
9977 "alignItems": "center",
9978 "children": [
9979 {
9980 "type": "icon",
9981 "id": "DRldZ",
9982 "name": "Shield",
9983 "width": 20,
9984 "height": 20,
9985 "icon": "shield-check",
9986 "library": "lucide",
9987 "fill": "#111111"
9988 }
9989 ]
9990 },
9991 {
9992 "type": "text",
9993 "id": "JMHsd",
9994 "name": "Heading",
9995 "fill": "#111111",
9996 "textGrowth": "fixed-width",
9997 "width": "fill_container",
9998 "content": "Set a new password",
9999 "textAlign": "center",
10000 "fontFamily": "JetBrains Mono",
10001 "fontSize": 23,
10002 "fontWeight": "bold",
10003 "letterSpacing": -0.6
10004 },
10005 {
10006 "type": "text",
10007 "id": "qC7UA",
10008 "name": "Subheading",
10009 "fill": "#666666",
10010 "textGrowth": "fixed-width",
10011 "width": "fill_container",
10012 "content": "Recovery token verified. Your new password is checked against the server-side policy.",
10013 "lineHeight": 1.5,
10014 "textAlign": "center",
10015 "fontFamily": "Geist",
10016 "fontSize": 14,
10017 "fontWeight": "normal"
10018 }
10019 ]
10020 },
10021 {
10022 "type": "frame",
10023 "id": "GuyJY",
10024 "name": "Form",
10025 "width": "fill_container",
10026 "layout": "vertical",
10027 "gap": 15,
10028 "children": [
10029 {
10030 "type": "frame",
10031 "id": "PIPWM",
10032 "name": "Account Chip",
10033 "width": "fill_container",
10034 "justifyContent": "center",
10035 "children": [
10036 {
10037 "type": "frame",
10038 "id": "BKXoL",
10039 "name": "Chip",
10040 "fill": "#F2F3F0",
10041 "cornerRadius": 8,
10042 "stroke": "#CBCCC9",
10043 "strokeWidth": 1,
10044 "gap": 8,
10045 "padding": [
10046 8,
10047 14
10048 ],
10049 "alignItems": "center",
10050 "children": [
10051 {
10052 "type": "icon",
10053 "id": "xNqFe",
10054 "name": "At",
10055 "width": 13,
10056 "height": 13,
10057 "icon": "at-sign",
10058 "library": "lucide",
10059 "fill": "#111111"
10060 },
10061 {
10062 "type": "text",
10063 "id": "hCisd",
10064 "name": "Email",
10065 "fill": "#111111",
10066 "content": "ada.lock@kernel.dev",
10067 "fontFamily": "JetBrains Mono",
10068 "fontSize": 12.5,
10069 "fontWeight": "normal"
10070 },
10071 {
10072 "type": "text",
10073 "id": "pS5bI",
10074 "name": "Sep",
10075 "fill": "#CBCCC9",
10076 "content": "|",
10077 "fontFamily": "JetBrains Mono",
10078 "fontSize": 12.5,
10079 "fontWeight": "normal"
10080 },
10081 {
10082 "type": "text",
10083 "id": "vl9tH",
10084 "name": "Token",
10085 "fill": "#004D1A",
10086 "content": "TOKEN VALID",
10087 "fontFamily": "JetBrains Mono",
10088 "fontSize": 10,
10089 "fontWeight": "bold",
10090 "letterSpacing": 1
10091 }
10092 ]
10093 }
10094 ]
10095 },
10096 {
10097 "type": "frame",
10098 "id": "OPa0l",
10099 "name": "NEW PASSPHRASE Field",
10100 "width": "fill_container",
10101 "layout": "vertical",
10102 "gap": 7,
10103 "children": [
10104 {
10105 "type": "frame",
10106 "id": "Osi8h",
10107 "name": "Label Row",
10108 "width": "fill_container",
10109 "justifyContent": "space_between",
10110 "alignItems": "center",
10111 "children": [
10112 {
10113 "type": "text",
10114 "id": "DGN6L",
10115 "name": "Label",
10116 "fill": "#666666",
10117 "content": "NEW PASSWORD",
10118 "fontFamily": "JetBrains Mono",
10119 "fontSize": 10,
10120 "fontWeight": "bold",
10121 "letterSpacing": 1.2
10122 }
10123 ]
10124 },
10125 {
10126 "type": "frame",
10127 "id": "qaIo5",
10128 "name": "Input",
10129 "width": "fill_container",
10130 "height": 46,
10131 "fill": "#FFFFFF",
10132 "cornerRadius": 10,
10133 "stroke": "#111111",
10134 "strokeWidth": 1.4,
10135 "gap": 10,
10136 "padding": [
10137 0,
10138 14
10139 ],
10140 "alignItems": "center",
10141 "children": [
10142 {
10143 "type": "icon",
10144 "id": "V2QHpl",
10145 "name": "Icon",
10146 "width": 15,
10147 "height": 15,
10148 "icon": "lock",
10149 "library": "lucide",
10150 "fill": "#666666"
10151 },
10152 {
10153 "type": "text",
10154 "id": "ZyWAg",
10155 "name": "Value",
10156 "fill": "#111111",
10157 "content": "••••••••••••••••",
10158 "fontFamily": "JetBrains Mono",
10159 "fontSize": 16,
10160 "fontWeight": "normal"
10161 },
10162 {
10163 "type": "frame",
10164 "id": "ioL1S",
10165 "name": "Spacer",
10166 "width": "fill_container",
10167 "height": 1
10168 },
10169 {
10170 "type": "icon",
10171 "id": "bSZcK",
10172 "name": "Reveal",
10173 "width": 16,
10174 "height": 16,
10175 "icon": "eye-off",
10176 "library": "lucide",
10177 "fill": "#666666"
10178 }
10179 ]
10180 }
10181 ]
10182 },
10183 {
10184 "type": "frame",
10185 "id": "nIQvi",
10186 "name": "Strength Row",
10187 "width": "fill_container",
10188 "gap": 10,
10189 "alignItems": "center",
10190 "children": [
10191 {
10192 "type": "frame",
10193 "id": "XBEi9",
10194 "name": "Segments",
10195 "width": "fill_container",
10196 "gap": 6,
10197 "children": [
10198 {
10199 "type": "frame",
10200 "id": "HkI40",
10201 "name": "Seg",
10202 "width": "fill_container",
10203 "height": 4,
10204 "fill": "#FF8400",
10205 "cornerRadius": 2
10206 },
10207 {
10208 "type": "frame",
10209 "id": "o1Zwzl",
10210 "name": "Seg",
10211 "width": "fill_container",
10212 "height": 4,
10213 "fill": "#FF8400",
10214 "cornerRadius": 2
10215 },
10216 {
10217 "type": "frame",
10218 "id": "Ko8n3",
10219 "name": "Seg",
10220 "width": "fill_container",
10221 "height": 4,
10222 "fill": "#3DD68C",
10223 "cornerRadius": 2
10224 },
10225 {
10226 "type": "frame",
10227 "id": "U9sIB",
10228 "name": "Seg",
10229 "width": "fill_container",
10230 "height": 4,
10231 "fill": "#3DD68C",
10232 "cornerRadius": 2
10233 }
10234 ]
10235 },
10236 {
10237 "type": "text",
10238 "id": "haUvU",
10239 "name": "Text",
10240 "fill": "#004D1A",
10241 "content": "STRONG",
10242 "fontFamily": "JetBrains Mono",
10243 "fontSize": 10,
10244 "fontWeight": "bold",
10245 "letterSpacing": 1.2
10246 }
10247 ]
10248 },
10249 {
10250 "type": "frame",
10251 "id": "Tv0ZM",
10252 "name": "CONFIRM PASSPHRASE Field",
10253 "width": "fill_container",
10254 "layout": "vertical",
10255 "gap": 7,
10256 "children": [
10257 {
10258 "type": "frame",
10259 "id": "sag3y",
10260 "name": "Label Row",
10261 "width": "fill_container",
10262 "justifyContent": "space_between",
10263 "alignItems": "center",
10264 "children": [
10265 {
10266 "type": "text",
10267 "id": "k5bn0W",
10268 "name": "Label",
10269 "fill": "#666666",
10270 "content": "CONFIRM NEW PASSWORD",
10271 "fontFamily": "JetBrains Mono",
10272 "fontSize": 10,
10273 "fontWeight": "bold",
10274 "letterSpacing": 1.2
10275 }
10276 ]
10277 },
10278 {
10279 "type": "frame",
10280 "id": "KkXBE",
10281 "name": "Input",
10282 "width": "fill_container",
10283 "height": 46,
10284 "fill": "#FFFFFF",
10285 "cornerRadius": 10,
10286 "stroke": "#CBCCC9",
10287 "strokeWidth": 1,
10288 "gap": 10,
10289 "padding": [
10290 0,
10291 14
10292 ],
10293 "alignItems": "center",
10294 "children": [
10295 {
10296 "type": "icon",
10297 "id": "MC18A",
10298 "name": "Icon",
10299 "width": 15,
10300 "height": 15,
10301 "icon": "lock",
10302 "library": "lucide",
10303 "fill": "#666666"
10304 },
10305 {
10306 "type": "text",
10307 "id": "OcwWj",
10308 "name": "Value",
10309 "fill": "#111111",
10310 "content": "••••••••••••••••",
10311 "fontFamily": "JetBrains Mono",
10312 "fontSize": 16,
10313 "fontWeight": "normal"
10314 },
10315 {
10316 "type": "frame",
10317 "id": "F008DZ",
10318 "name": "Spacer",
10319 "width": "fill_container",
10320 "height": 1
10321 },
10322 {
10323 "type": "icon",
10324 "id": "r62ViC",
10325 "name": "Reveal",
10326 "width": 16,
10327 "height": 16,
10328 "icon": "eye",
10329 "library": "lucide",
10330 "fill": "#666666"
10331 }
10332 ]
10333 }
10334 ]
10335 },
10336 {
10337 "type": "frame",
10338 "id": "f6pEC9",
10339 "name": "Submit Button",
10340 "width": "fill_container",
10341 "height": 48,
10342 "fill": "#FF8400",
10343 "cornerRadius": 10,
10344 "effect": {
10345 "type": "shadow",
10346 "shadowType": "outer",
10347 "color": "#FF840066",
10348 "offset": {
10349 "x": 0,
10350 "y": 4
10351 },
10352 "blur": 14,
10353 "spread": -4
10354 },
10355 "gap": 9,
10356 "justifyContent": "center",
10357 "alignItems": "center",
10358 "children": [
10359 {
10360 "type": "text",
10361 "id": "iXgzi",
10362 "name": "Label",
10363 "fill": "#111111",
10364 "content": "Update passphrase",
10365 "fontFamily": "JetBrains Mono",
10366 "fontSize": 14,
10367 "fontWeight": "bold",
10368 "letterSpacing": 0.4
10369 },
10370 {
10371 "type": "icon",
10372 "id": "Q7pgDu",
10373 "name": "Arrow",
10374 "width": 15,
10375 "height": 15,
10376 "icon": "arrow-right",
10377 "library": "lucide",
10378 "fill": "#111111"
10379 }
10380 ]
10381 }
10382 ]
10383 }
10384 ]
10385 },
10386 {
10387 "type": "frame",
10388 "id": "v1ATh",
10389 "layoutPosition": "absolute",
10390 "x": 24,
10391 "y": 960,
10392 "name": "Status Row",
10393 "width": 720,
10394 "gap": 10,
10395 "justifyContent": "center",
10396 "alignItems": "center",
10397 "children": [
10398 {
10399 "type": "frame",
10400 "id": "YFm6w",
10401 "name": "Dot",
10402 "width": 8,
10403 "height": 8,
10404 "justifyContent": "center",
10405 "alignItems": "center",
10406 "children": [
10407 {
10408 "type": "ellipse",
10409 "id": "f7yGsO",
10410 "name": "Dot",
10411 "fill": "$--color-success-foreground",
10412 "width": 7,
10413 "height": 7
10414 }
10415 ]
10416 },
10417 {
10418 "type": "text",
10419 "id": "jxBi7",
10420 "name": "Status",
10421 "fill": "$--muted-foreground",
10422 "content": "ALL SYSTEMS OPERATIONAL",
10423 "fontFamily": "$--font-primary",
10424 "fontSize": 11,
10425 "fontWeight": "normal",
10426 "letterSpacing": 0.5
10427 },
10428 {
10429 "type": "text",
10430 "id": "XaeQp",
10431 "name": "Sep",
10432 "fill": "$--border",
10433 "content": "·",
10434 "fontFamily": "$--font-primary",
10435 "fontSize": 11,
10436 "fontWeight": "normal"
10437 },
10438 {
10439 "type": "text",
10440 "id": "sQCgK",
10441 "name": "Region",
10442 "fill": "$--muted-foreground",
10443 "content": "REGION EU-CENTRAL-1",
10444 "fontFamily": "$--font-primary",
10445 "fontSize": 11,
10446 "fontWeight": "normal",
10447 "letterSpacing": 0.5
10448 },
10449 {
10450 "type": "text",
10451 "id": "zVgp9",
10452 "name": "Sep2",
10453 "fill": "$--border",
10454 "content": "·",
10455 "fontFamily": "$--font-primary",
10456 "fontSize": 11,
10457 "fontWeight": "normal"
10458 },
10459 {
10460 "type": "text",
10461 "id": "x52STZ",
10462 "name": "Copy",
10463 "fill": "$--muted-foreground",
10464 "content": "© 2026 GitDataAI",
10465 "fontFamily": "$--font-primary",
10466 "fontSize": 11,
10467 "fontWeight": "normal",
10468 "letterSpacing": 0.5
10469 }
10470 ]
10471 },
10472 {
10473 "type": "frame",
10474 "id": "a4aNoL",
10475 "layoutPosition": "absolute",
10476 "x": 32,
10477 "y": 936,
10478 "name": "Hint",
10479 "width": 704,
10480 "height": 14,
10481 "gap": 7,
10482 "justifyContent": "center",
10483 "alignItems": "center",
10484 "children": [
10485 {
10486 "type": "text",
10487 "id": "XeLhq",
10488 "name": "Hint Text",
10489 "fill": "$--muted-foreground",
10490 "content": "ALL OTHER SESSIONS WILL BE SIGNED OUT",
10491 "fontFamily": "$--font-primary",
10492 "fontSize": 10,
10493 "fontWeight": "normal",
10494 "letterSpacing": 1.2
10495 }
10496 ]
10497 },
10498 {
10499 "type": "frame",
10500 "id": "a6FvFz",
10501 "layoutPosition": "absolute",
10502 "x": 32,
10503 "y": 36,
10504 "name": "Breadcrumb",
10505 "gap": 8,
10506 "alignItems": "center",
10507 "children": [
10508 {
10509 "type": "frame",
10510 "id": "ULq3r",
10511 "name": "Logo",
10512 "width": 14,
10513 "height": 14,
10514 "fill": "#FF8400",
10515 "cornerRadius": 4
10516 },
10517 {
10518 "type": "text",
10519 "id": "kZr5n",
10520 "name": "Root",
10521 "fill": "#111111",
10522 "content": "GitDataAI",
10523 "fontFamily": "JetBrains Mono",
10524 "fontSize": 10,
10525 "fontWeight": "bold",
10526 "letterSpacing": 1.2
10527 },
10528 {
10529 "type": "text",
10530 "id": "NgoH3",
10531 "name": "Sep1",
10532 "fill": "#CBCCC9",
10533 "content": "/",
10534 "fontFamily": "JetBrains Mono",
10535 "fontSize": 10,
10536 "fontWeight": "normal"
10537 },
10538 {
10539 "type": "text",
10540 "id": "xuJl4",
10541 "name": "Section",
10542 "fill": "#666666",
10543 "content": "AUTH",
10544 "fontFamily": "JetBrains Mono",
10545 "fontSize": 10,
10546 "fontWeight": "normal",
10547 "letterSpacing": 1.2
10548 },
10549 {
10550 "type": "text",
10551 "id": "tk7Gv",
10552 "name": "Sep2",
10553 "fill": "#CBCCC9",
10554 "content": "/",
10555 "fontFamily": "JetBrains Mono",
10556 "fontSize": 10,
10557 "fontWeight": "normal"
10558 },
10559 {
10560 "type": "text",
10561 "id": "B0tfJ1",
10562 "name": "Current",
10563 "fill": "#804200",
10564 "content": "NEW PASSWORD",
10565 "fontFamily": "JetBrains Mono",
10566 "fontSize": 10,
10567 "fontWeight": "bold",
10568 "letterSpacing": 1.2
10569 }
10570 ]
10571 }
10572 ]
10573 },
10574 {
10575 "type": "frame",
10576 "id": "uKNAy",
10577 "x": 828,
10578 "y": 4324,
10579 "name": "4. Reset Password — Mobile",
10580 "clip": true,
10581 "width": 390,
10582 "height": 844,
10583 "fill": "$--background",
10584 "layout": "vertical",
10585 "gap": 26,
10586 "padding": [
10587 40,
10588 16,
10589 72,
10590 16
10591 ],
10592 "justifyContent": "center",
10593 "alignItems": "center",
10594 "children": [
10595 {
10596 "type": "frame",
10597 "id": "abtrf",
10598 "layoutPosition": "absolute",
10599 "x": 25,
10600 "y": 200,
10601 "name": "Ambient Glow",
10602 "width": 340,
10603 "height": 400,
10604 "fill": {
10605 "type": "gradient",
10606 "gradientType": "radial",
10607 "enabled": true,
10608 "rotation": 0,
10609 "size": {
10610 "width": 1,
10611 "height": 1
10612 },
10613 "colors": [
10614 {
10615 "color": "#FF840026",
10616 "position": 0
10617 },
10618 {
10619 "color": "#FF840000",
10620 "position": 1
10621 }
10622 ]
10623 }
10624 },
10625 {
10626 "type": "frame",
10627 "id": "b4f1VB",
10628 "layoutPosition": "absolute",
10629 "x": 0,
10630 "y": 0,
10631 "name": "Hairline Field",
10632 "width": 390,
10633 "height": 844,
10634 "fill": {
10635 "type": "gradient",
10636 "gradientType": "linear",
10637 "enabled": true,
10638 "rotation": 180,
10639 "size": {
10640 "height": 1
10641 },
10642 "colors": [
10643 {
10644 "color": "#00000000",
10645 "position": 0.55
10646 },
10647 {
10648 "color": "#00000009",
10649 "position": 1
10650 }
10651 ]
10652 }
10653 },
10654 {
10655 "type": "frame",
10656 "id": "P19Rl",
10657 "layoutPosition": "absolute",
10658 "x": 16,
10659 "y": 16,
10660 "name": "Mark TL",
10661 "width": 18,
10662 "height": 18,
10663 "stroke": "$--border",
10664 "strokeWidth": {
10665 "top": 1,
10666 "left": 1
10667 },
10668 "layout": "none"
10669 },
10670 {
10671 "type": "frame",
10672 "id": "NChJb",
10673 "layoutPosition": "absolute",
10674 "x": 356,
10675 "y": 16,
10676 "name": "Mark TR",
10677 "width": 18,
10678 "height": 18,
10679 "stroke": "$--border",
10680 "strokeWidth": {
10681 "top": 1,
10682 "right": 1
10683 },
10684 "layout": "none"
10685 },
10686 {
10687 "type": "frame",
10688 "id": "nSY7X",
10689 "layoutPosition": "absolute",
10690 "x": 16,
10691 "y": 810,
10692 "name": "Mark BL",
10693 "width": 18,
10694 "height": 18,
10695 "stroke": "$--border",
10696 "strokeWidth": {
10697 "bottom": 1,
10698 "left": 1
10699 },
10700 "layout": "none"
10701 },
10702 {
10703 "type": "frame",
10704 "id": "ONR2q",
10705 "layoutPosition": "absolute",
10706 "x": 356,
10707 "y": 810,
10708 "name": "Mark BR",
10709 "width": 18,
10710 "height": 18,
10711 "stroke": "$--border",
10712 "strokeWidth": {
10713 "right": 1,
10714 "bottom": 1
10715 },
10716 "layout": "none"
10717 },
10718 {
10719 "type": "frame",
10720 "id": "H8r6X",
10721 "name": "Login Card",
10722 "width": "fill_container",
10723 "fill": "$--card",
10724 "cornerRadius": "$--radius-m",
10725 "stroke": "$--border",
10726 "strokeWidth": 1,
10727 "effect": [
10728 {
10729 "type": "shadow",
10730 "shadowType": "outer",
10731 "color": "#1111111F",
10732 "offset": {
10733 "x": 0,
10734 "y": 18
10735 },
10736 "blur": 44,
10737 "spread": -8
10738 },
10739 {
10740 "type": "shadow",
10741 "shadowType": "outer",
10742 "color": "#1111110A",
10743 "offset": {
10744 "x": 0,
10745 "y": 2
10746 },
10747 "blur": 6
10748 }
10749 ],
10750 "layout": "vertical",
10751 "gap": 18,
10752 "padding": 24,
10753 "children": [
10754 {
10755 "type": "frame",
10756 "id": "oKz2l",
10757 "name": "Card Header",
10758 "width": "fill_container",
10759 "layout": "vertical",
10760 "gap": 12,
10761 "alignItems": "center",
10762 "children": [
10763 {
10764 "type": "frame",
10765 "id": "TA9ZG",
10766 "name": "Icon Badge",
10767 "width": 44,
10768 "height": 44,
10769 "fill": "#F2F3F0",
10770 "cornerRadius": 12,
10771 "stroke": "#CBCCC9",
10772 "strokeWidth": 1,
10773 "justifyContent": "center",
10774 "alignItems": "center",
10775 "children": [
10776 {
10777 "type": "icon",
10778 "id": "zjT3b",
10779 "name": "Shield",
10780 "width": 20,
10781 "height": 20,
10782 "icon": "shield-check",
10783 "library": "lucide",
10784 "fill": "#111111"
10785 }
10786 ]
10787 },
10788 {
10789 "type": "text",
10790 "id": "U9GXm",
10791 "name": "Heading",
10792 "fill": "#111111",
10793 "textGrowth": "fixed-width",
10794 "width": "fill_container",
10795 "content": "Set a new password",
10796 "textAlign": "center",
10797 "fontFamily": "JetBrains Mono",
10798 "fontSize": 21,
10799 "fontWeight": "bold",
10800 "letterSpacing": -0.6
10801 },
10802 {
10803 "type": "text",
10804 "id": "e6Csfj",
10805 "name": "Subheading",
10806 "fill": "#666666",
10807 "textGrowth": "fixed-width",
10808 "width": "fill_container",
10809 "content": "Recovery token verified. Your new password is checked against the server-side policy.",
10810 "lineHeight": 1.5,
10811 "textAlign": "center",
10812 "fontFamily": "Geist",
10813 "fontSize": 14,
10814 "fontWeight": "normal"
10815 }
10816 ]
10817 },
10818 {
10819 "type": "frame",
10820 "id": "dbCr9",
10821 "name": "Form",
10822 "width": "fill_container",
10823 "layout": "vertical",
10824 "gap": 15,
10825 "children": [
10826 {
10827 "type": "frame",
10828 "id": "fNrtE",
10829 "name": "Account Chip",
10830 "width": "fill_container",
10831 "justifyContent": "center",
10832 "children": [
10833 {
10834 "type": "frame",
10835 "id": "UbMo5",
10836 "name": "Chip",
10837 "fill": "#F2F3F0",
10838 "cornerRadius": 8,
10839 "stroke": "#CBCCC9",
10840 "strokeWidth": 1,
10841 "gap": 8,
10842 "padding": [
10843 8,
10844 14
10845 ],
10846 "alignItems": "center",
10847 "children": [
10848 {
10849 "type": "icon",
10850 "id": "i2QFU",
10851 "name": "At",
10852 "width": 13,
10853 "height": 13,
10854 "icon": "at-sign",
10855 "library": "lucide",
10856 "fill": "#111111"
10857 },
10858 {
10859 "type": "text",
10860 "id": "BoJxS",
10861 "name": "Email",
10862 "fill": "#111111",
10863 "content": "ada.lock@kernel.dev",
10864 "fontFamily": "JetBrains Mono",
10865 "fontSize": 12.5,
10866 "fontWeight": "normal"
10867 },
10868 {
10869 "type": "text",
10870 "id": "VmrZY",
10871 "name": "Sep",
10872 "fill": "#CBCCC9",
10873 "content": "|",
10874 "fontFamily": "JetBrains Mono",
10875 "fontSize": 12.5,
10876 "fontWeight": "normal"
10877 },
10878 {
10879 "type": "text",
10880 "id": "fZwZt",
10881 "name": "Token",
10882 "fill": "#004D1A",
10883 "content": "TOKEN VALID",
10884 "fontFamily": "JetBrains Mono",
10885 "fontSize": 10,
10886 "fontWeight": "bold",
10887 "letterSpacing": 1
10888 }
10889 ]
10890 }
10891 ]
10892 },
10893 {
10894 "type": "frame",
10895 "id": "HFOtH",
10896 "name": "NEW PASSPHRASE Field",
10897 "width": "fill_container",
10898 "layout": "vertical",
10899 "gap": 7,
10900 "children": [
10901 {
10902 "type": "frame",
10903 "id": "cJwz9",
10904 "name": "Label Row",
10905 "width": "fill_container",
10906 "justifyContent": "space_between",
10907 "alignItems": "center",
10908 "children": [
10909 {
10910 "type": "text",
10911 "id": "UMS5X",
10912 "name": "Label",
10913 "fill": "#666666",
10914 "content": "NEW PASSWORD",
10915 "fontFamily": "JetBrains Mono",
10916 "fontSize": 10,
10917 "fontWeight": "bold",
10918 "letterSpacing": 1.2
10919 }
10920 ]
10921 },
10922 {
10923 "type": "frame",
10924 "id": "WYjws",
10925 "name": "Input",
10926 "width": "fill_container",
10927 "height": 46,
10928 "fill": "#FFFFFF",
10929 "cornerRadius": 10,
10930 "stroke": "#111111",
10931 "strokeWidth": 1.4,
10932 "gap": 10,
10933 "padding": [
10934 0,
10935 14
10936 ],
10937 "alignItems": "center",
10938 "children": [
10939 {
10940 "type": "icon",
10941 "id": "RglQ1",
10942 "name": "Icon",
10943 "width": 15,
10944 "height": 15,
10945 "icon": "lock",
10946 "library": "lucide",
10947 "fill": "#666666"
10948 },
10949 {
10950 "type": "text",
10951 "id": "p1dNu",
10952 "name": "Value",
10953 "fill": "#111111",
10954 "content": "••••••••••••••••",
10955 "fontFamily": "JetBrains Mono",
10956 "fontSize": 16,
10957 "fontWeight": "normal"
10958 },
10959 {
10960 "type": "frame",
10961 "id": "FvAZ6",
10962 "name": "Spacer",
10963 "width": "fill_container",
10964 "height": 1
10965 },
10966 {
10967 "type": "icon",
10968 "id": "dHCac",
10969 "name": "Reveal",
10970 "width": 16,
10971 "height": 16,
10972 "icon": "eye-off",
10973 "library": "lucide",
10974 "fill": "#666666"
10975 }
10976 ]
10977 }
10978 ]
10979 },
10980 {
10981 "type": "frame",
10982 "id": "Cjf2e",
10983 "name": "Strength Row",
10984 "width": "fill_container",
10985 "gap": 10,
10986 "alignItems": "center",
10987 "children": [
10988 {
10989 "type": "frame",
10990 "id": "Y4typ",
10991 "name": "Segments",
10992 "width": "fill_container",
10993 "gap": 6,
10994 "children": [
10995 {
10996 "type": "frame",
10997 "id": "WSNZK",
10998 "name": "Seg",
10999 "width": "fill_container",
11000 "height": 4,
11001 "fill": "#FF8400",
11002 "cornerRadius": 2
11003 },
11004 {
11005 "type": "frame",
11006 "id": "a39NU",
11007 "name": "Seg",
11008 "width": "fill_container",
11009 "height": 4,
11010 "fill": "#FF8400",
11011 "cornerRadius": 2
11012 },
11013 {
11014 "type": "frame",
11015 "id": "d15Tf1",
11016 "name": "Seg",
11017 "width": "fill_container",
11018 "height": 4,
11019 "fill": "#3DD68C",
11020 "cornerRadius": 2
11021 },
11022 {
11023 "type": "frame",
11024 "id": "Qo9jS",
11025 "name": "Seg",
11026 "width": "fill_container",
11027 "height": 4,
11028 "fill": "#3DD68C",
11029 "cornerRadius": 2
11030 }
11031 ]
11032 },
11033 {
11034 "type": "text",
11035 "id": "V1Nd2",
11036 "name": "Text",
11037 "fill": "#004D1A",
11038 "content": "STRONG",
11039 "fontFamily": "JetBrains Mono",
11040 "fontSize": 10,
11041 "fontWeight": "bold",
11042 "letterSpacing": 1.2
11043 }
11044 ]
11045 },
11046 {
11047 "type": "frame",
11048 "id": "ZKUnG",
11049 "name": "CONFIRM PASSPHRASE Field",
11050 "width": "fill_container",
11051 "layout": "vertical",
11052 "gap": 7,
11053 "children": [
11054 {
11055 "type": "frame",
11056 "id": "seB3w",
11057 "name": "Label Row",
11058 "width": "fill_container",
11059 "justifyContent": "space_between",
11060 "alignItems": "center",
11061 "children": [
11062 {
11063 "type": "text",
11064 "id": "ZgxHK",
11065 "name": "Label",
11066 "fill": "#666666",
11067 "content": "CONFIRM NEW PASSWORD",
11068 "fontFamily": "JetBrains Mono",
11069 "fontSize": 10,
11070 "fontWeight": "bold",
11071 "letterSpacing": 1.2
11072 }
11073 ]
11074 },
11075 {
11076 "type": "frame",
11077 "id": "F61te",
11078 "name": "Input",
11079 "width": "fill_container",
11080 "height": 46,
11081 "fill": "#FFFFFF",
11082 "cornerRadius": 10,
11083 "stroke": "#CBCCC9",
11084 "strokeWidth": 1,
11085 "gap": 10,
11086 "padding": [
11087 0,
11088 14
11089 ],
11090 "alignItems": "center",
11091 "children": [
11092 {
11093 "type": "icon",
11094 "id": "siaH6",
11095 "name": "Icon",
11096 "width": 15,
11097 "height": 15,
11098 "icon": "lock",
11099 "library": "lucide",
11100 "fill": "#666666"
11101 },
11102 {
11103 "type": "text",
11104 "id": "aGn5D",
11105 "name": "Value",
11106 "fill": "#111111",
11107 "content": "••••••••••••••••",
11108 "fontFamily": "JetBrains Mono",
11109 "fontSize": 16,
11110 "fontWeight": "normal"
11111 },
11112 {
11113 "type": "frame",
11114 "id": "xZgUR",
11115 "name": "Spacer",
11116 "width": "fill_container",
11117 "height": 1
11118 },
11119 {
11120 "type": "icon",
11121 "id": "O96gub",
11122 "name": "Reveal",
11123 "width": 16,
11124 "height": 16,
11125 "icon": "eye",
11126 "library": "lucide",
11127 "fill": "#666666"
11128 }
11129 ]
11130 }
11131 ]
11132 },
11133 {
11134 "type": "frame",
11135 "id": "D4OzkR",
11136 "name": "Submit Button",
11137 "width": "fill_container",
11138 "height": 48,
11139 "fill": "#FF8400",
11140 "cornerRadius": 10,
11141 "effect": {
11142 "type": "shadow",
11143 "shadowType": "outer",
11144 "color": "#FF840066",
11145 "offset": {
11146 "x": 0,
11147 "y": 4
11148 },
11149 "blur": 14,
11150 "spread": -4
11151 },
11152 "gap": 9,
11153 "justifyContent": "center",
11154 "alignItems": "center",
11155 "children": [
11156 {
11157 "type": "text",
11158 "id": "nE26k",
11159 "name": "Label",
11160 "fill": "#111111",
11161 "content": "Update passphrase",
11162 "fontFamily": "JetBrains Mono",
11163 "fontSize": 14,
11164 "fontWeight": "bold",
11165 "letterSpacing": 0.4
11166 },
11167 {
11168 "type": "icon",
11169 "id": "XNbuT",
11170 "name": "Arrow",
11171 "width": 15,
11172 "height": 15,
11173 "icon": "arrow-right",
11174 "library": "lucide",
11175 "fill": "#111111"
11176 }
11177 ]
11178 }
11179 ]
11180 }
11181 ]
11182 },
11183 {
11184 "type": "frame",
11185 "id": "RHJOe",
11186 "layoutPosition": "absolute",
11187 "x": 16,
11188 "y": 788,
11189 "name": "Status Row",
11190 "width": 358,
11191 "gap": 10,
11192 "justifyContent": "center",
11193 "alignItems": "center",
11194 "children": [
11195 {
11196 "type": "frame",
11197 "id": "ZOujS",
11198 "name": "Dot",
11199 "width": 8,
11200 "height": 8,
11201 "justifyContent": "center",
11202 "alignItems": "center",
11203 "children": [
11204 {
11205 "type": "ellipse",
11206 "id": "TmrnJ",
11207 "name": "Dot",
11208 "fill": "$--color-success-foreground",
11209 "width": 7,
11210 "height": 7
11211 }
11212 ]
11213 },
11214 {
11215 "type": "text",
11216 "id": "L5quz",
11217 "name": "Status",
11218 "fill": "$--muted-foreground",
11219 "content": "ALL SYSTEMS OPERATIONAL",
11220 "fontFamily": "$--font-primary",
11221 "fontSize": 11,
11222 "fontWeight": "normal",
11223 "letterSpacing": 0.5
11224 },
11225 {
11226 "type": "text",
11227 "id": "CSE4l",
11228 "name": "Sep",
11229 "fill": "$--border",
11230 "content": "·",
11231 "fontFamily": "$--font-primary",
11232 "fontSize": 11,
11233 "fontWeight": "normal"
11234 },
11235 {
11236 "type": "text",
11237 "id": "nXHaG",
11238 "name": "Copy",
11239 "fill": "$--muted-foreground",
11240 "content": "© 2026 GitDataAI",
11241 "fontFamily": "$--font-primary",
11242 "fontSize": 11,
11243 "fontWeight": "normal",
11244 "letterSpacing": 0.5
11245 }
11246 ]
11247 },
11248 {
11249 "type": "frame",
11250 "id": "NkLDu",
11251 "layoutPosition": "absolute",
11252 "x": 8,
11253 "y": 760,
11254 "name": "Hint",
11255 "width": 374,
11256 "height": 14,
11257 "gap": 7,
11258 "justifyContent": "center",
11259 "alignItems": "center",
11260 "children": [
11261 {
11262 "type": "text",
11263 "id": "R5HuR3",
11264 "name": "Hint Text",
11265 "fill": "$--muted-foreground",
11266 "content": "ALL OTHER SESSIONS WILL BE SIGNED OUT",
11267 "fontFamily": "$--font-primary",
11268 "fontSize": 10,
11269 "fontWeight": "normal",
11270 "letterSpacing": 1.2
11271 }
11272 ]
11273 }
11274 ]
11275 },
11276 {
11277 "type": "frame",
11278 "id": "QHHZk",
11279 "x": 1338,
11280 "y": 4324,
11281 "name": "5. Email Verification — Tablet",
11282 "clip": true,
11283 "width": 768,
11284 "height": 1024,
11285 "fill": "$--background",
11286 "layout": "vertical",
11287 "gap": 26,
11288 "padding": [
11289 48,
11290 32
11291 ],
11292 "justifyContent": "center",
11293 "alignItems": "center",
11294 "children": [
11295 {
11296 "type": "frame",
11297 "id": "ySPJ8",
11298 "layoutPosition": "absolute",
11299 "x": 74,
11300 "y": 260,
11301 "name": "Ambient Glow",
11302 "width": 620,
11303 "height": 480,
11304 "fill": {
11305 "type": "gradient",
11306 "gradientType": "radial",
11307 "enabled": true,
11308 "rotation": 0,
11309 "size": {
11310 "width": 1,
11311 "height": 1
11312 },
11313 "colors": [
11314 {
11315 "color": "#FF840026",
11316 "position": 0
11317 },
11318 {
11319 "color": "#FF840000",
11320 "position": 1
11321 }
11322 ]
11323 }
11324 },
11325 {
11326 "type": "frame",
11327 "id": "q7m8v",
11328 "layoutPosition": "absolute",
11329 "x": 0,
11330 "y": 0,
11331 "name": "Hairline Field",
11332 "width": 768,
11333 "height": 1024,
11334 "fill": {
11335 "type": "gradient",
11336 "gradientType": "linear",
11337 "enabled": true,
11338 "rotation": 180,
11339 "size": {
11340 "height": 1
11341 },
11342 "colors": [
11343 {
11344 "color": "#00000000",
11345 "position": 0.55
11346 },
11347 {
11348 "color": "#00000009",
11349 "position": 1
11350 }
11351 ]
11352 }
11353 },
11354 {
11355 "type": "frame",
11356 "id": "hP4AZ",
11357 "layoutPosition": "absolute",
11358 "x": 24,
11359 "y": 24,
11360 "name": "Mark TL",
11361 "width": 18,
11362 "height": 18,
11363 "stroke": "$--border",
11364 "strokeWidth": {
11365 "top": 1,
11366 "left": 1
11367 },
11368 "layout": "none"
11369 },
11370 {
11371 "type": "frame",
11372 "id": "K05LYu",
11373 "layoutPosition": "absolute",
11374 "x": 726,
11375 "y": 24,
11376 "name": "Mark TR",
11377 "width": 18,
11378 "height": 18,
11379 "stroke": "$--border",
11380 "strokeWidth": {
11381 "top": 1,
11382 "right": 1
11383 },
11384 "layout": "none"
11385 },
11386 {
11387 "type": "frame",
11388 "id": "JYsH2",
11389 "layoutPosition": "absolute",
11390 "x": 24,
11391 "y": 982,
11392 "name": "Mark BL",
11393 "width": 18,
11394 "height": 18,
11395 "stroke": "$--border",
11396 "strokeWidth": {
11397 "bottom": 1,
11398 "left": 1
11399 },
11400 "layout": "none"
11401 },
11402 {
11403 "type": "frame",
11404 "id": "IXsDA",
11405 "layoutPosition": "absolute",
11406 "x": 726,
11407 "y": 982,
11408 "name": "Mark BR",
11409 "width": 18,
11410 "height": 18,
11411 "stroke": "$--border",
11412 "strokeWidth": {
11413 "right": 1,
11414 "bottom": 1
11415 },
11416 "layout": "none"
11417 },
11418 {
11419 "type": "frame",
11420 "id": "lGc4L",
11421 "name": "Login Card",
11422 "width": 460,
11423 "fill": "$--card",
11424 "cornerRadius": "$--radius-m",
11425 "stroke": "$--border",
11426 "strokeWidth": 1,
11427 "effect": [
11428 {
11429 "type": "shadow",
11430 "shadowType": "outer",
11431 "color": "#1111111F",
11432 "offset": {
11433 "x": 0,
11434 "y": 18
11435 },
11436 "blur": 44,
11437 "spread": -8
11438 },
11439 {
11440 "type": "shadow",
11441 "shadowType": "outer",
11442 "color": "#1111110A",
11443 "offset": {
11444 "x": 0,
11445 "y": 2
11446 },
11447 "blur": 6
11448 }
11449 ],
11450 "layout": "vertical",
11451 "gap": 22,
11452 "padding": 32,
11453 "children": [
11454 {
11455 "type": "frame",
11456 "id": "j2VdNT",
11457 "name": "Card Header",
11458 "width": "fill_container",
11459 "layout": "vertical",
11460 "gap": 12,
11461 "alignItems": "center",
11462 "children": [
11463 {
11464 "type": "frame",
11465 "id": "KoXaZ",
11466 "name": "Icon Badge",
11467 "width": 44,
11468 "height": 44,
11469 "fill": "#FF8400",
11470 "cornerRadius": 12,
11471 "justifyContent": "center",
11472 "alignItems": "center",
11473 "children": [
11474 {
11475 "type": "icon",
11476 "id": "mCncF",
11477 "name": "Mail",
11478 "width": 20,
11479 "height": 20,
11480 "icon": "mail",
11481 "library": "lucide",
11482 "fill": "#111111"
11483 }
11484 ]
11485 },
11486 {
11487 "type": "text",
11488 "id": "cXev9",
11489 "name": "Heading",
11490 "fill": "#111111",
11491 "textGrowth": "fixed-width",
11492 "width": "fill_container",
11493 "content": "Check your inbox",
11494 "textAlign": "center",
11495 "fontFamily": "JetBrains Mono",
11496 "fontSize": 23,
11497 "fontWeight": "bold",
11498 "letterSpacing": -0.6
11499 },
11500 {
11501 "type": "text",
11502 "id": "qfR5B",
11503 "name": "Subheading",
11504 "fill": "#666666",
11505 "textGrowth": "fixed-width",
11506 "width": "fill_container",
11507 "content": "We sent a verification link to",
11508 "lineHeight": 1.5,
11509 "textAlign": "center",
11510 "fontFamily": "Geist",
11511 "fontSize": 14,
11512 "fontWeight": "normal"
11513 },
11514 {
11515 "type": "frame",
11516 "id": "u80BwZ",
11517 "name": "Address Chip",
11518 "width": "fill_container",
11519 "gap": 8,
11520 "justifyContent": "center",
11521 "children": [
11522 {
11523 "type": "frame",
11524 "id": "bBh3m",
11525 "name": "Chip",
11526 "fill": "#F2F3F0",
11527 "cornerRadius": 8,
11528 "stroke": "#CBCCC9",
11529 "strokeWidth": 1,
11530 "gap": 8,
11531 "padding": [
11532 8,
11533 14
11534 ],
11535 "alignItems": "center",
11536 "children": [
11537 {
11538 "type": "icon",
11539 "id": "N023u",
11540 "name": "At",
11541 "width": 13,
11542 "height": 13,
11543 "icon": "at-sign",
11544 "library": "lucide",
11545 "fill": "#111111"
11546 },
11547 {
11548 "type": "text",
11549 "id": "N3EEC",
11550 "name": "Email",
11551 "fill": "#111111",
11552 "content": "ada.lock@kernel.dev",
11553 "fontFamily": "JetBrains Mono",
11554 "fontSize": 12.5,
11555 "fontWeight": "normal"
11556 }
11557 ]
11558 },
11559 {
11560 "type": "frame",
11561 "id": "wPwn7",
11562 "name": "Purpose Pill",
11563 "fill": "#F2F3F0",
11564 "cornerRadius": 6,
11565 "stroke": "#CBCCC9",
11566 "strokeWidth": 1,
11567 "padding": [
11568 4,
11569 8
11570 ],
11571 "children": [
11572 {
11573 "type": "text",
11574 "id": "QK4yg",
11575 "name": "Text",
11576 "fill": "#666666",
11577 "content": "PURPOSE · SIGNUP",
11578 "fontFamily": "JetBrains Mono",
11579 "fontSize": 9.5,
11580 "fontWeight": "bold",
11581 "letterSpacing": 1
11582 }
11583 ]
11584 }
11585 ]
11586 },
11587 {
11588 "type": "text",
11589 "id": "I6XGt",
11590 "name": "Expiry",
11591 "fill": "#666666",
11592 "textGrowth": "fixed-width",
11593 "width": "fill_container",
11594 "content": "The link expires in 24 hours. Open it on this device to continue.",
11595 "lineHeight": 1.5,
11596 "textAlign": "center",
11597 "fontFamily": "Geist",
11598 "fontSize": 12.5,
11599 "fontWeight": "normal"
11600 }
11601 ]
11602 },
11603 {
11604 "type": "frame",
11605 "id": "QRElD",
11606 "name": "Form",
11607 "width": "fill_container",
11608 "layout": "vertical",
11609 "gap": 15,
11610 "children": [
11611 {
11612 "type": "frame",
11613 "id": "W7Jpvd",
11614 "name": "Submit Button",
11615 "width": "fill_container",
11616 "height": 48,
11617 "fill": "#FF8400",
11618 "cornerRadius": 10,
11619 "effect": {
11620 "type": "shadow",
11621 "shadowType": "outer",
11622 "color": "#FF840066",
11623 "offset": {
11624 "x": 0,
11625 "y": 4
11626 },
11627 "blur": 14,
11628 "spread": -4
11629 },
11630 "gap": 9,
11631 "justifyContent": "center",
11632 "alignItems": "center",
11633 "children": [
11634 {
11635 "type": "text",
11636 "id": "qxsl5",
11637 "name": "Label",
11638 "fill": "#111111",
11639 "content": "I have verified my email",
11640 "fontFamily": "JetBrains Mono",
11641 "fontSize": 14,
11642 "fontWeight": "bold",
11643 "letterSpacing": 0.4
11644 },
11645 {
11646 "type": "icon",
11647 "id": "C3o26",
11648 "name": "Arrow",
11649 "width": 15,
11650 "height": 15,
11651 "icon": "arrow-right",
11652 "library": "lucide",
11653 "fill": "#111111"
11654 }
11655 ]
11656 },
11657 {
11658 "type": "frame",
11659 "id": "h89mZY",
11660 "name": "Divider",
11661 "width": "fill_container",
11662 "gap": 12,
11663 "alignItems": "center",
11664 "children": [
11665 {
11666 "type": "frame",
11667 "id": "NYOfD",
11668 "name": "Line L",
11669 "width": "fill_container",
11670 "height": 1,
11671 "fill": "#CBCCC9"
11672 },
11673 {
11674 "type": "text",
11675 "id": "XXR0s",
11676 "name": "Text",
11677 "fill": "#666666",
11678 "content": "DID NOT ARRIVE?",
11679 "fontFamily": "JetBrains Mono",
11680 "fontSize": 10,
11681 "fontWeight": "bold",
11682 "letterSpacing": 1.1
11683 },
11684 {
11685 "type": "frame",
11686 "id": "r4TC0",
11687 "name": "Line R",
11688 "width": "fill_container",
11689 "height": 1,
11690 "fill": "#CBCCC9"
11691 }
11692 ]
11693 },
11694 {
11695 "type": "frame",
11696 "id": "yI4R6",
11697 "name": "Resend Button",
11698 "width": "fill_container",
11699 "height": 44,
11700 "fill": "#FFFFFF",
11701 "cornerRadius": 10,
11702 "stroke": "#CBCCC9",
11703 "strokeWidth": 1,
11704 "gap": 8,
11705 "justifyContent": "center",
11706 "alignItems": "center",
11707 "children": [
11708 {
11709 "type": "icon",
11710 "id": "kMpjC",
11711 "name": "Icon",
11712 "width": 15,
11713 "height": 15,
11714 "icon": "refresh-cw",
11715 "library": "lucide",
11716 "fill": "#111111"
11717 },
11718 {
11719 "type": "text",
11720 "id": "PiGV8",
11721 "name": "Label",
11722 "fill": "#111111",
11723 "content": "Resend email (00:42)",
11724 "fontFamily": "Geist",
11725 "fontSize": 13.5,
11726 "fontWeight": "normal"
11727 }
11728 ]
11729 },
11730 {
11731 "type": "frame",
11732 "id": "b6PHAl",
11733 "name": "Back Row",
11734 "width": "fill_container",
11735 "gap": 6,
11736 "justifyContent": "center",
11737 "children": [
11738 {
11739 "type": "text",
11740 "id": "bP9Na",
11741 "name": "Q",
11742 "fill": "#666666",
11743 "content": "Wrong address?",
11744 "fontFamily": "Geist",
11745 "fontSize": 13,
11746 "fontWeight": "normal"
11747 },
11748 {
11749 "type": "text",
11750 "id": "tRV51",
11751 "name": "Link",
11752 "fill": "#111111",
11753 "content": "Change email",
11754 "fontFamily": "Geist",
11755 "fontSize": 13,
11756 "fontWeight": "bold"
11757 }
11758 ]
11759 }
11760 ]
11761 }
11762 ]
11763 },
11764 {
11765 "type": "frame",
11766 "id": "DBCAn",
11767 "layoutPosition": "absolute",
11768 "x": 24,
11769 "y": 960,
11770 "name": "Status Row",
11771 "width": 720,
11772 "gap": 10,
11773 "justifyContent": "center",
11774 "alignItems": "center",
11775 "children": [
11776 {
11777 "type": "frame",
11778 "id": "OWRN8",
11779 "name": "Dot",
11780 "width": 8,
11781 "height": 8,
11782 "justifyContent": "center",
11783 "alignItems": "center",
11784 "children": [
11785 {
11786 "type": "ellipse",
11787 "id": "SjtN5",
11788 "name": "Dot",
11789 "fill": "$--color-success-foreground",
11790 "width": 7,
11791 "height": 7
11792 }
11793 ]
11794 },
11795 {
11796 "type": "text",
11797 "id": "ChwGz",
11798 "name": "Status",
11799 "fill": "$--muted-foreground",
11800 "content": "ALL SYSTEMS OPERATIONAL",
11801 "fontFamily": "$--font-primary",
11802 "fontSize": 11,
11803 "fontWeight": "normal",
11804 "letterSpacing": 0.5
11805 },
11806 {
11807 "type": "text",
11808 "id": "Y2zaf",
11809 "name": "Sep",
11810 "fill": "$--border",
11811 "content": "·",
11812 "fontFamily": "$--font-primary",
11813 "fontSize": 11,
11814 "fontWeight": "normal"
11815 },
11816 {
11817 "type": "text",
11818 "id": "JLK1q",
11819 "name": "Region",
11820 "fill": "$--muted-foreground",
11821 "content": "REGION EU-CENTRAL-1",
11822 "fontFamily": "$--font-primary",
11823 "fontSize": 11,
11824 "fontWeight": "normal",
11825 "letterSpacing": 0.5
11826 },
11827 {
11828 "type": "text",
11829 "id": "sAxUc",
11830 "name": "Sep2",
11831 "fill": "$--border",
11832 "content": "·",
11833 "fontFamily": "$--font-primary",
11834 "fontSize": 11,
11835 "fontWeight": "normal"
11836 },
11837 {
11838 "type": "text",
11839 "id": "XWPsd",
11840 "name": "Copy",
11841 "fill": "$--muted-foreground",
11842 "content": "© 2026 GitDataAI",
11843 "fontFamily": "$--font-primary",
11844 "fontSize": 11,
11845 "fontWeight": "normal",
11846 "letterSpacing": 0.5
11847 }
11848 ]
11849 },
11850 {
11851 "type": "frame",
11852 "id": "tZzTV",
11853 "layoutPosition": "absolute",
11854 "x": 32,
11855 "y": 936,
11856 "name": "Hint",
11857 "width": 704,
11858 "height": 14,
11859 "gap": 7,
11860 "justifyContent": "center",
11861 "alignItems": "center",
11862 "children": [
11863 {
11864 "type": "text",
11865 "id": "YB9ud",
11866 "name": "Hint Text",
11867 "fill": "$--muted-foreground",
11868 "content": "CHECK SPAM FOLDER · SMTP DELIVERY ~5S",
11869 "fontFamily": "$--font-primary",
11870 "fontSize": 10,
11871 "fontWeight": "normal",
11872 "letterSpacing": 1.2
11873 }
11874 ]
11875 },
11876 {
11877 "type": "frame",
11878 "id": "nEtwF",
11879 "layoutPosition": "absolute",
11880 "x": 32,
11881 "y": 36,
11882 "name": "Breadcrumb",
11883 "gap": 8,
11884 "alignItems": "center",
11885 "children": [
11886 {
11887 "type": "frame",
11888 "id": "Lg9RB",
11889 "name": "Logo",
11890 "width": 14,
11891 "height": 14,
11892 "fill": "#FF8400",
11893 "cornerRadius": 4
11894 },
11895 {
11896 "type": "text",
11897 "id": "AXUeT",
11898 "name": "Root",
11899 "fill": "#111111",
11900 "content": "GitDataAI",
11901 "fontFamily": "JetBrains Mono",
11902 "fontSize": 10,
11903 "fontWeight": "bold",
11904 "letterSpacing": 1.2
11905 },
11906 {
11907 "type": "text",
11908 "id": "zShNs",
11909 "name": "Sep1",
11910 "fill": "#CBCCC9",
11911 "content": "/",
11912 "fontFamily": "JetBrains Mono",
11913 "fontSize": 10,
11914 "fontWeight": "normal"
11915 },
11916 {
11917 "type": "text",
11918 "id": "EYYXc",
11919 "name": "Section",
11920 "fill": "#666666",
11921 "content": "AUTH",
11922 "fontFamily": "JetBrains Mono",
11923 "fontSize": 10,
11924 "fontWeight": "normal",
11925 "letterSpacing": 1.2
11926 },
11927 {
11928 "type": "text",
11929 "id": "K9KPbq",
11930 "name": "Sep2",
11931 "fill": "#CBCCC9",
11932 "content": "/",
11933 "fontFamily": "JetBrains Mono",
11934 "fontSize": 10,
11935 "fontWeight": "normal"
11936 },
11937 {
11938 "type": "text",
11939 "id": "Qlra7",
11940 "name": "Current",
11941 "fill": "#804200",
11942 "content": "VERIFY EMAIL",
11943 "fontFamily": "JetBrains Mono",
11944 "fontSize": 10,
11945 "fontWeight": "bold",
11946 "letterSpacing": 1.2
11947 }
11948 ]
11949 }
11950 ]
11951 },
11952 {
11953 "type": "frame",
11954 "id": "h90Q8k",
11955 "x": 2166,
11956 "y": 4324,
11957 "name": "5. Email Verification — Mobile",
11958 "clip": true,
11959 "width": 390,
11960 "height": 844,
11961 "fill": "$--background",
11962 "layout": "vertical",
11963 "gap": 26,
11964 "padding": [
11965 40,
11966 16,
11967 72,
11968 16
11969 ],
11970 "justifyContent": "center",
11971 "alignItems": "center",
11972 "children": [
11973 {
11974 "type": "frame",
11975 "id": "oYU8n",
11976 "layoutPosition": "absolute",
11977 "x": 25,
11978 "y": 200,
11979 "name": "Ambient Glow",
11980 "width": 340,
11981 "height": 400,
11982 "fill": {
11983 "type": "gradient",
11984 "gradientType": "radial",
11985 "enabled": true,
11986 "rotation": 0,
11987 "size": {
11988 "width": 1,
11989 "height": 1
11990 },
11991 "colors": [
11992 {
11993 "color": "#FF840026",
11994 "position": 0
11995 },
11996 {
11997 "color": "#FF840000",
11998 "position": 1
11999 }
12000 ]
12001 }
12002 },
12003 {
12004 "type": "frame",
12005 "id": "z91YW3",
12006 "layoutPosition": "absolute",
12007 "x": 0,
12008 "y": 0,
12009 "name": "Hairline Field",
12010 "width": 390,
12011 "height": 844,
12012 "fill": {
12013 "type": "gradient",
12014 "gradientType": "linear",
12015 "enabled": true,
12016 "rotation": 180,
12017 "size": {
12018 "height": 1
12019 },
12020 "colors": [
12021 {
12022 "color": "#00000000",
12023 "position": 0.55
12024 },
12025 {
12026 "color": "#00000009",
12027 "position": 1
12028 }
12029 ]
12030 }
12031 },
12032 {
12033 "type": "frame",
12034 "id": "lMHZ8",
12035 "layoutPosition": "absolute",
12036 "x": 16,
12037 "y": 16,
12038 "name": "Mark TL",
12039 "width": 18,
12040 "height": 18,
12041 "stroke": "$--border",
12042 "strokeWidth": {
12043 "top": 1,
12044 "left": 1
12045 },
12046 "layout": "none"
12047 },
12048 {
12049 "type": "frame",
12050 "id": "Mit5T",
12051 "layoutPosition": "absolute",
12052 "x": 356,
12053 "y": 16,
12054 "name": "Mark TR",
12055 "width": 18,
12056 "height": 18,
12057 "stroke": "$--border",
12058 "strokeWidth": {
12059 "top": 1,
12060 "right": 1
12061 },
12062 "layout": "none"
12063 },
12064 {
12065 "type": "frame",
12066 "id": "Biban",
12067 "layoutPosition": "absolute",
12068 "x": 16,
12069 "y": 810,
12070 "name": "Mark BL",
12071 "width": 18,
12072 "height": 18,
12073 "stroke": "$--border",
12074 "strokeWidth": {
12075 "bottom": 1,
12076 "left": 1
12077 },
12078 "layout": "none"
12079 },
12080 {
12081 "type": "frame",
12082 "id": "RkXGv",
12083 "layoutPosition": "absolute",
12084 "x": 356,
12085 "y": 810,
12086 "name": "Mark BR",
12087 "width": 18,
12088 "height": 18,
12089 "stroke": "$--border",
12090 "strokeWidth": {
12091 "right": 1,
12092 "bottom": 1
12093 },
12094 "layout": "none"
12095 },
12096 {
12097 "type": "frame",
12098 "id": "uxg8x",
12099 "name": "Login Card",
12100 "width": "fill_container",
12101 "fill": "$--card",
12102 "cornerRadius": "$--radius-m",
12103 "stroke": "$--border",
12104 "strokeWidth": 1,
12105 "effect": [
12106 {
12107 "type": "shadow",
12108 "shadowType": "outer",
12109 "color": "#1111111F",
12110 "offset": {
12111 "x": 0,
12112 "y": 18
12113 },
12114 "blur": 44,
12115 "spread": -8
12116 },
12117 {
12118 "type": "shadow",
12119 "shadowType": "outer",
12120 "color": "#1111110A",
12121 "offset": {
12122 "x": 0,
12123 "y": 2
12124 },
12125 "blur": 6
12126 }
12127 ],
12128 "layout": "vertical",
12129 "gap": 18,
12130 "padding": 24,
12131 "children": [
12132 {
12133 "type": "frame",
12134 "id": "iuFqP",
12135 "name": "Card Header",
12136 "width": "fill_container",
12137 "layout": "vertical",
12138 "gap": 12,
12139 "alignItems": "center",
12140 "children": [
12141 {
12142 "type": "frame",
12143 "id": "l3uuh",
12144 "name": "Icon Badge",
12145 "width": 44,
12146 "height": 44,
12147 "fill": "#FF8400",
12148 "cornerRadius": 12,
12149 "justifyContent": "center",
12150 "alignItems": "center",
12151 "children": [
12152 {
12153 "type": "icon",
12154 "id": "x0Dsu",
12155 "name": "Mail",
12156 "width": 20,
12157 "height": 20,
12158 "icon": "mail",
12159 "library": "lucide",
12160 "fill": "#111111"
12161 }
12162 ]
12163 },
12164 {
12165 "type": "text",
12166 "id": "WW9WF",
12167 "name": "Heading",
12168 "fill": "#111111",
12169 "textGrowth": "fixed-width",
12170 "width": "fill_container",
12171 "content": "Check your inbox",
12172 "textAlign": "center",
12173 "fontFamily": "JetBrains Mono",
12174 "fontSize": 21,
12175 "fontWeight": "bold",
12176 "letterSpacing": -0.6
12177 },
12178 {
12179 "type": "text",
12180 "id": "sv5Ff",
12181 "name": "Subheading",
12182 "fill": "#666666",
12183 "textGrowth": "fixed-width",
12184 "width": "fill_container",
12185 "content": "We sent a verification link to",
12186 "lineHeight": 1.5,
12187 "textAlign": "center",
12188 "fontFamily": "Geist",
12189 "fontSize": 14,
12190 "fontWeight": "normal"
12191 },
12192 {
12193 "type": "frame",
12194 "id": "KY7MT",
12195 "name": "Address Chip",
12196 "width": "fill_container",
12197 "layout": "vertical",
12198 "gap": 10,
12199 "justifyContent": "center",
12200 "alignItems": "center",
12201 "children": [
12202 {
12203 "type": "frame",
12204 "id": "jB2m4",
12205 "name": "Chip",
12206 "fill": "#F2F3F0",
12207 "cornerRadius": 8,
12208 "stroke": "#CBCCC9",
12209 "strokeWidth": 1,
12210 "gap": 8,
12211 "padding": [
12212 8,
12213 14
12214 ],
12215 "alignItems": "center",
12216 "children": [
12217 {
12218 "type": "icon",
12219 "id": "t18dq",
12220 "name": "At",
12221 "width": 13,
12222 "height": 13,
12223 "icon": "at-sign",
12224 "library": "lucide",
12225 "fill": "#111111"
12226 },
12227 {
12228 "type": "text",
12229 "id": "WbOFa",
12230 "name": "Email",
12231 "fill": "#111111",
12232 "content": "ada.lock@kernel.dev",
12233 "fontFamily": "JetBrains Mono",
12234 "fontSize": 12.5,
12235 "fontWeight": "normal"
12236 }
12237 ]
12238 },
12239 {
12240 "type": "frame",
12241 "id": "pkfRF",
12242 "name": "Purpose Pill",
12243 "fill": "#F2F3F0",
12244 "cornerRadius": 6,
12245 "stroke": "#CBCCC9",
12246 "strokeWidth": 1,
12247 "padding": [
12248 4,
12249 8
12250 ],
12251 "children": [
12252 {
12253 "type": "text",
12254 "id": "WqtVp",
12255 "name": "Text",
12256 "fill": "#666666",
12257 "content": "PURPOSE · SIGNUP",
12258 "fontFamily": "JetBrains Mono",
12259 "fontSize": 9.5,
12260 "fontWeight": "bold",
12261 "letterSpacing": 1
12262 }
12263 ]
12264 }
12265 ]
12266 },
12267 {
12268 "type": "text",
12269 "id": "SYiLn",
12270 "name": "Expiry",
12271 "fill": "#666666",
12272 "textGrowth": "fixed-width",
12273 "width": "fill_container",
12274 "content": "The link expires in 24 hours. Open it on this device to continue.",
12275 "lineHeight": 1.5,
12276 "textAlign": "center",
12277 "fontFamily": "Geist",
12278 "fontSize": 12.5,
12279 "fontWeight": "normal"
12280 }
12281 ]
12282 },
12283 {
12284 "type": "frame",
12285 "id": "xeHIe",
12286 "name": "Form",
12287 "width": "fill_container",
12288 "layout": "vertical",
12289 "gap": 15,
12290 "children": [
12291 {
12292 "type": "frame",
12293 "id": "qWp4B",
12294 "name": "Submit Button",
12295 "width": "fill_container",
12296 "height": 48,
12297 "fill": "#FF8400",
12298 "cornerRadius": 10,
12299 "effect": {
12300 "type": "shadow",
12301 "shadowType": "outer",
12302 "color": "#FF840066",
12303 "offset": {
12304 "x": 0,
12305 "y": 4
12306 },
12307 "blur": 14,
12308 "spread": -4
12309 },
12310 "gap": 9,
12311 "justifyContent": "center",
12312 "alignItems": "center",
12313 "children": [
12314 {
12315 "type": "text",
12316 "id": "qh2xp",
12317 "name": "Label",
12318 "fill": "#111111",
12319 "content": "I have verified my email",
12320 "fontFamily": "JetBrains Mono",
12321 "fontSize": 14,
12322 "fontWeight": "bold",
12323 "letterSpacing": 0.4
12324 },
12325 {
12326 "type": "icon",
12327 "id": "QAguO",
12328 "name": "Arrow",
12329 "width": 15,
12330 "height": 15,
12331 "icon": "arrow-right",
12332 "library": "lucide",
12333 "fill": "#111111"
12334 }
12335 ]
12336 },
12337 {
12338 "type": "frame",
12339 "id": "YP91l",
12340 "name": "Divider",
12341 "width": "fill_container",
12342 "gap": 12,
12343 "alignItems": "center",
12344 "children": [
12345 {
12346 "type": "frame",
12347 "id": "XpqjU",
12348 "name": "Line L",
12349 "width": "fill_container",
12350 "height": 1,
12351 "fill": "#CBCCC9"
12352 },
12353 {
12354 "type": "text",
12355 "id": "DqE7A",
12356 "name": "Text",
12357 "fill": "#666666",
12358 "content": "DID NOT ARRIVE?",
12359 "fontFamily": "JetBrains Mono",
12360 "fontSize": 10,
12361 "fontWeight": "bold",
12362 "letterSpacing": 1.1
12363 },
12364 {
12365 "type": "frame",
12366 "id": "BsseP",
12367 "name": "Line R",
12368 "width": "fill_container",
12369 "height": 1,
12370 "fill": "#CBCCC9"
12371 }
12372 ]
12373 },
12374 {
12375 "type": "frame",
12376 "id": "Tl1Je",
12377 "name": "Resend Button",
12378 "width": "fill_container",
12379 "height": 44,
12380 "fill": "#FFFFFF",
12381 "cornerRadius": 10,
12382 "stroke": "#CBCCC9",
12383 "strokeWidth": 1,
12384 "gap": 8,
12385 "justifyContent": "center",
12386 "alignItems": "center",
12387 "children": [
12388 {
12389 "type": "icon",
12390 "id": "PmWMr",
12391 "name": "Icon",
12392 "width": 15,
12393 "height": 15,
12394 "icon": "refresh-cw",
12395 "library": "lucide",
12396 "fill": "#111111"
12397 },
12398 {
12399 "type": "text",
12400 "id": "s4VOh",
12401 "name": "Label",
12402 "fill": "#111111",
12403 "content": "Resend email (00:42)",
12404 "fontFamily": "Geist",
12405 "fontSize": 13.5,
12406 "fontWeight": "normal"
12407 }
12408 ]
12409 },
12410 {
12411 "type": "frame",
12412 "id": "HIkZK",
12413 "name": "Back Row",
12414 "width": "fill_container",
12415 "gap": 6,
12416 "justifyContent": "center",
12417 "children": [
12418 {
12419 "type": "text",
12420 "id": "CJpLr",
12421 "name": "Q",
12422 "fill": "#666666",
12423 "content": "Wrong address?",
12424 "fontFamily": "Geist",
12425 "fontSize": 13,
12426 "fontWeight": "normal"
12427 },
12428 {
12429 "type": "text",
12430 "id": "Z9ZY37",
12431 "name": "Link",
12432 "fill": "#111111",
12433 "content": "Change email",
12434 "fontFamily": "Geist",
12435 "fontSize": 13,
12436 "fontWeight": "bold"
12437 }
12438 ]
12439 }
12440 ]
12441 }
12442 ]
12443 },
12444 {
12445 "type": "frame",
12446 "id": "wIaJ3",
12447 "layoutPosition": "absolute",
12448 "x": 16,
12449 "y": 788,
12450 "name": "Status Row",
12451 "width": 358,
12452 "gap": 10,
12453 "justifyContent": "center",
12454 "alignItems": "center",
12455 "children": [
12456 {
12457 "type": "frame",
12458 "id": "GBcB0",
12459 "name": "Dot",
12460 "width": 8,
12461 "height": 8,
12462 "justifyContent": "center",
12463 "alignItems": "center",
12464 "children": [
12465 {
12466 "type": "ellipse",
12467 "id": "cgKBK",
12468 "name": "Dot",
12469 "fill": "$--color-success-foreground",
12470 "width": 7,
12471 "height": 7
12472 }
12473 ]
12474 },
12475 {
12476 "type": "text",
12477 "id": "G44tQN",
12478 "name": "Status",
12479 "fill": "$--muted-foreground",
12480 "content": "ALL SYSTEMS OPERATIONAL",
12481 "fontFamily": "$--font-primary",
12482 "fontSize": 11,
12483 "fontWeight": "normal",
12484 "letterSpacing": 0.5
12485 },
12486 {
12487 "type": "text",
12488 "id": "iu9zv",
12489 "name": "Sep",
12490 "fill": "$--border",
12491 "content": "·",
12492 "fontFamily": "$--font-primary",
12493 "fontSize": 11,
12494 "fontWeight": "normal"
12495 },
12496 {
12497 "type": "text",
12498 "id": "UX0h6",
12499 "name": "Copy",
12500 "fill": "$--muted-foreground",
12501 "content": "© 2026 GitDataAI",
12502 "fontFamily": "$--font-primary",
12503 "fontSize": 11,
12504 "fontWeight": "normal",
12505 "letterSpacing": 0.5
12506 }
12507 ]
12508 },
12509 {
12510 "type": "frame",
12511 "id": "rI83Y",
12512 "layoutPosition": "absolute",
12513 "x": 8,
12514 "y": 760,
12515 "name": "Hint",
12516 "width": 374,
12517 "height": 14,
12518 "gap": 7,
12519 "justifyContent": "center",
12520 "alignItems": "center",
12521 "children": [
12522 {
12523 "type": "text",
12524 "id": "h6qs0O",
12525 "name": "Hint Text",
12526 "fill": "$--muted-foreground",
12527 "content": "CHECK SPAM FOLDER · SMTP DELIVERY ~5S",
12528 "fontFamily": "$--font-primary",
12529 "fontSize": 10,
12530 "fontWeight": "normal",
12531 "letterSpacing": 1.2
12532 }
12533 ]
12534 }
12535 ]
12536 },
12537 {
12538 "type": "frame",
12539 "id": "cA0WM",
12540 "x": 2676,
12541 "y": 4324,
12542 "name": "6. Two-Factor Auth — Tablet",
12543 "clip": true,
12544 "width": 768,
12545 "height": 1024,
12546 "fill": "$--background",
12547 "layout": "vertical",
12548 "gap": 26,
12549 "padding": [
12550 48,
12551 32
12552 ],
12553 "justifyContent": "center",
12554 "alignItems": "center",
12555 "children": [
12556 {
12557 "type": "frame",
12558 "id": "W5iKx",
12559 "layoutPosition": "absolute",
12560 "x": 74,
12561 "y": 260,
12562 "name": "Ambient Glow",
12563 "width": 620,
12564 "height": 480,
12565 "fill": {
12566 "type": "gradient",
12567 "gradientType": "radial",
12568 "enabled": true,
12569 "rotation": 0,
12570 "size": {
12571 "width": 1,
12572 "height": 1
12573 },
12574 "colors": [
12575 {
12576 "color": "#FF840026",
12577 "position": 0
12578 },
12579 {
12580 "color": "#FF840000",
12581 "position": 1
12582 }
12583 ]
12584 }
12585 },
12586 {
12587 "type": "frame",
12588 "id": "I8DZed",
12589 "layoutPosition": "absolute",
12590 "x": 0,
12591 "y": 0,
12592 "name": "Hairline Field",
12593 "width": 768,
12594 "height": 1024,
12595 "fill": {
12596 "type": "gradient",
12597 "gradientType": "linear",
12598 "enabled": true,
12599 "rotation": 180,
12600 "size": {
12601 "height": 1
12602 },
12603 "colors": [
12604 {
12605 "color": "#00000000",
12606 "position": 0.55
12607 },
12608 {
12609 "color": "#00000009",
12610 "position": 1
12611 }
12612 ]
12613 }
12614 },
12615 {
12616 "type": "frame",
12617 "id": "Q9Nbd",
12618 "layoutPosition": "absolute",
12619 "x": 24,
12620 "y": 24,
12621 "name": "Mark TL",
12622 "width": 18,
12623 "height": 18,
12624 "stroke": "$--border",
12625 "strokeWidth": {
12626 "top": 1,
12627 "left": 1
12628 },
12629 "layout": "none"
12630 },
12631 {
12632 "type": "frame",
12633 "id": "fvBGs",
12634 "layoutPosition": "absolute",
12635 "x": 726,
12636 "y": 24,
12637 "name": "Mark TR",
12638 "width": 18,
12639 "height": 18,
12640 "stroke": "$--border",
12641 "strokeWidth": {
12642 "top": 1,
12643 "right": 1
12644 },
12645 "layout": "none"
12646 },
12647 {
12648 "type": "frame",
12649 "id": "suJfT",
12650 "layoutPosition": "absolute",
12651 "x": 24,
12652 "y": 982,
12653 "name": "Mark BL",
12654 "width": 18,
12655 "height": 18,
12656 "stroke": "$--border",
12657 "strokeWidth": {
12658 "bottom": 1,
12659 "left": 1
12660 },
12661 "layout": "none"
12662 },
12663 {
12664 "type": "frame",
12665 "id": "jhAbT",
12666 "layoutPosition": "absolute",
12667 "x": 726,
12668 "y": 982,
12669 "name": "Mark BR",
12670 "width": 18,
12671 "height": 18,
12672 "stroke": "$--border",
12673 "strokeWidth": {
12674 "right": 1,
12675 "bottom": 1
12676 },
12677 "layout": "none"
12678 },
12679 {
12680 "type": "frame",
12681 "id": "iAutn",
12682 "name": "Login Card",
12683 "width": 460,
12684 "fill": "$--card",
12685 "cornerRadius": "$--radius-m",
12686 "stroke": "$--border",
12687 "strokeWidth": 1,
12688 "effect": [
12689 {
12690 "type": "shadow",
12691 "shadowType": "outer",
12692 "color": "#1111111F",
12693 "offset": {
12694 "x": 0,
12695 "y": 18
12696 },
12697 "blur": 44,
12698 "spread": -8
12699 },
12700 {
12701 "type": "shadow",
12702 "shadowType": "outer",
12703 "color": "#1111110A",
12704 "offset": {
12705 "x": 0,
12706 "y": 2
12707 },
12708 "blur": 6
12709 }
12710 ],
12711 "layout": "vertical",
12712 "gap": 22,
12713 "padding": 32,
12714 "children": [
12715 {
12716 "type": "frame",
12717 "id": "zmxzj",
12718 "name": "Card Header",
12719 "width": "fill_container",
12720 "layout": "vertical",
12721 "gap": 12,
12722 "alignItems": "center",
12723 "children": [
12724 {
12725 "type": "frame",
12726 "id": "oQIqF",
12727 "name": "Icon Badge",
12728 "width": 44,
12729 "height": 44,
12730 "fill": "#111111",
12731 "cornerRadius": 12,
12732 "justifyContent": "center",
12733 "alignItems": "center",
12734 "children": [
12735 {
12736 "type": "icon",
12737 "id": "ehxJp",
12738 "name": "Shield",
12739 "width": 20,
12740 "height": 20,
12741 "icon": "smartphone",
12742 "library": "lucide",
12743 "fill": "#FF8400"
12744 }
12745 ]
12746 },
12747 {
12748 "type": "text",
12749 "id": "A7FfuF",
12750 "name": "Heading",
12751 "fill": "#111111",
12752 "textGrowth": "fixed-width",
12753 "width": "fill_container",
12754 "content": "Two-factor code",
12755 "textAlign": "center",
12756 "fontFamily": "JetBrains Mono",
12757 "fontSize": 23,
12758 "fontWeight": "bold",
12759 "letterSpacing": -0.6
12760 },
12761 {
12762 "type": "text",
12763 "id": "emNz0",
12764 "name": "Subheading",
12765 "fill": "#666666",
12766 "textGrowth": "fixed-width",
12767 "width": "fill_container",
12768 "content": "Enter the 6-digit code from your authenticator app for account ada.lock@kernel.dev.",
12769 "lineHeight": 1.5,
12770 "textAlign": "center",
12771 "fontFamily": "Geist",
12772 "fontSize": 14,
12773 "fontWeight": "normal"
12774 }
12775 ]
12776 },
12777 {
12778 "type": "frame",
12779 "id": "c7YSaU",
12780 "name": "Form",
12781 "width": "fill_container",
12782 "layout": "vertical",
12783 "gap": 15,
12784 "children": [
12785 {
12786 "type": "frame",
12787 "id": "ZhVky",
12788 "name": "Label Row",
12789 "width": "fill_container",
12790 "justifyContent": "space_between",
12791 "alignItems": "center",
12792 "children": [
12793 {
12794 "type": "text",
12795 "id": "bTBAz",
12796 "name": "Label",
12797 "fill": "#666666",
12798 "content": "AUTHENTICATION CODE",
12799 "fontFamily": "JetBrains Mono",
12800 "fontSize": 10,
12801 "fontWeight": "bold",
12802 "letterSpacing": 1.2
12803 },
12804 {
12805 "type": "text",
12806 "id": "rEWVL",
12807 "name": "Timer",
12808 "fill": "#804200",
12809 "content": "EXPIRES IN 04:32",
12810 "fontFamily": "JetBrains Mono",
12811 "fontSize": 10,
12812 "fontWeight": "bold",
12813 "letterSpacing": 1.2
12814 }
12815 ]
12816 },
12817 {
12818 "type": "frame",
12819 "id": "wrb2i",
12820 "name": "OTP Row",
12821 "width": "fill_container",
12822 "gap": 10,
12823 "children": [
12824 {
12825 "type": "frame",
12826 "id": "H0N8jW",
12827 "name": "Digit 1",
12828 "width": "fill_container",
12829 "height": 58,
12830 "fill": "#FFFFFF",
12831 "cornerRadius": 10,
12832 "stroke": "#CBCCC9",
12833 "strokeWidth": 1,
12834 "justifyContent": "center",
12835 "alignItems": "center",
12836 "children": [
12837 {
12838 "type": "text",
12839 "id": "oDVeB",
12840 "name": "Num",
12841 "fill": "#111111",
12842 "content": "4",
12843 "fontFamily": "JetBrains Mono",
12844 "fontSize": 22,
12845 "fontWeight": "bold"
12846 }
12847 ]
12848 },
12849 {
12850 "type": "frame",
12851 "id": "ZFSJE",
12852 "name": "Digit 2",
12853 "width": "fill_container",
12854 "height": 58,
12855 "fill": "#FFFFFF",
12856 "cornerRadius": 10,
12857 "stroke": "#CBCCC9",
12858 "strokeWidth": 1,
12859 "justifyContent": "center",
12860 "alignItems": "center",
12861 "children": [
12862 {
12863 "type": "text",
12864 "id": "vjm7p",
12865 "name": "Num",
12866 "fill": "#111111",
12867 "content": "8",
12868 "fontFamily": "JetBrains Mono",
12869 "fontSize": 22,
12870 "fontWeight": "bold"
12871 }
12872 ]
12873 },
12874 {
12875 "type": "frame",
12876 "id": "Ungqt",
12877 "name": "Digit 3",
12878 "width": "fill_container",
12879 "height": 58,
12880 "fill": "#FFFFFF",
12881 "cornerRadius": 10,
12882 "stroke": "#CBCCC9",
12883 "strokeWidth": 1,
12884 "justifyContent": "center",
12885 "alignItems": "center",
12886 "children": [
12887 {
12888 "type": "text",
12889 "id": "FHPwd",
12890 "name": "Num",
12891 "fill": "#111111",
12892 "content": "2",
12893 "fontFamily": "JetBrains Mono",
12894 "fontSize": 22,
12895 "fontWeight": "bold"
12896 }
12897 ]
12898 },
12899 {
12900 "type": "frame",
12901 "id": "qDl4B",
12902 "name": "Digit 4",
12903 "width": "fill_container",
12904 "height": 58,
12905 "fill": "#FFFFFF",
12906 "cornerRadius": 10,
12907 "stroke": "#111111",
12908 "strokeWidth": 1.6,
12909 "effect": {
12910 "type": "shadow",
12911 "shadowType": "outer",
12912 "color": "#11111114",
12913 "offset": {
12914 "x": 0,
12915 "y": 3
12916 },
12917 "blur": 10
12918 },
12919 "justifyContent": "center",
12920 "alignItems": "center",
12921 "children": [
12922 {
12923 "type": "frame",
12924 "id": "qlEtG",
12925 "name": "Caret",
12926 "width": 2,
12927 "height": 24,
12928 "fill": "#FF8400"
12929 }
12930 ]
12931 },
12932 {
12933 "type": "frame",
12934 "id": "v7slXN",
12935 "name": "Digit 5",
12936 "width": "fill_container",
12937 "height": 58,
12938 "fill": "#FFFFFF",
12939 "cornerRadius": 10,
12940 "stroke": "#CBCCC9",
12941 "strokeWidth": 1,
12942 "justifyContent": "center",
12943 "alignItems": "center"
12944 },
12945 {
12946 "type": "frame",
12947 "id": "stYZb",
12948 "name": "Digit 6",
12949 "width": "fill_container",
12950 "height": 58,
12951 "fill": "#FFFFFF",
12952 "cornerRadius": 10,
12953 "stroke": "#CBCCC9",
12954 "strokeWidth": 1,
12955 "justifyContent": "center",
12956 "alignItems": "center"
12957 }
12958 ]
12959 },
12960 {
12961 "type": "frame",
12962 "id": "YApxg",
12963 "name": "Submit Button",
12964 "width": "fill_container",
12965 "height": 48,
12966 "fill": "#FF8400",
12967 "cornerRadius": 10,
12968 "effect": {
12969 "type": "shadow",
12970 "shadowType": "outer",
12971 "color": "#FF840066",
12972 "offset": {
12973 "x": 0,
12974 "y": 4
12975 },
12976 "blur": 14,
12977 "spread": -4
12978 },
12979 "gap": 9,
12980 "justifyContent": "center",
12981 "alignItems": "center",
12982 "children": [
12983 {
12984 "type": "text",
12985 "id": "GmOmk",
12986 "name": "Label",
12987 "fill": "#111111",
12988 "content": "Verify",
12989 "fontFamily": "JetBrains Mono",
12990 "fontSize": 14,
12991 "fontWeight": "bold",
12992 "letterSpacing": 0.4
12993 },
12994 {
12995 "type": "icon",
12996 "id": "wZNZS",
12997 "name": "Arrow",
12998 "width": 15,
12999 "height": 15,
13000 "icon": "arrow-right",
13001 "library": "lucide",
13002 "fill": "#111111"
13003 }
13004 ]
13005 },
13006 {
13007 "type": "frame",
13008 "id": "NPMYV",
13009 "name": "Divider",
13010 "width": "fill_container",
13011 "gap": 12,
13012 "alignItems": "center",
13013 "children": [
13014 {
13015 "type": "frame",
13016 "id": "i2jlwb",
13017 "name": "Line L",
13018 "width": "fill_container",
13019 "height": 1,
13020 "fill": "#CBCCC9"
13021 },
13022 {
13023 "type": "text",
13024 "id": "S75kDJ",
13025 "name": "Text",
13026 "fill": "#666666",
13027 "content": "TROUBLE?",
13028 "fontFamily": "JetBrains Mono",
13029 "fontSize": 10,
13030 "fontWeight": "bold",
13031 "letterSpacing": 1.1
13032 },
13033 {
13034 "type": "frame",
13035 "id": "yrDdO",
13036 "name": "Line R",
13037 "width": "fill_container",
13038 "height": 1,
13039 "fill": "#CBCCC9"
13040 }
13041 ]
13042 },
13043 {
13044 "type": "frame",
13045 "id": "K4NMaE",
13046 "name": "Alt Row",
13047 "width": "fill_container",
13048 "gap": 12,
13049 "children": [
13050 {
13051 "type": "frame",
13052 "id": "LBC0M",
13053 "name": "Backup Codes",
13054 "width": "fill_container",
13055 "height": 44,
13056 "fill": "#FFFFFF",
13057 "cornerRadius": 10,
13058 "stroke": "#CBCCC9",
13059 "strokeWidth": 1,
13060 "gap": 8,
13061 "justifyContent": "center",
13062 "alignItems": "center",
13063 "children": [
13064 {
13065 "type": "icon",
13066 "id": "Zdt3E",
13067 "name": "Icon",
13068 "width": 15,
13069 "height": 15,
13070 "icon": "key-round",
13071 "library": "lucide",
13072 "fill": "#111111"
13073 },
13074 {
13075 "type": "text",
13076 "id": "x6u3YX",
13077 "name": "Label",
13078 "fill": "#111111",
13079 "content": "Use a recovery code",
13080 "fontFamily": "Geist",
13081 "fontSize": 13.5,
13082 "fontWeight": "normal"
13083 }
13084 ]
13085 }
13086 ]
13087 }
13088 ]
13089 }
13090 ]
13091 },
13092 {
13093 "type": "frame",
13094 "id": "jiWRs",
13095 "layoutPosition": "absolute",
13096 "x": 24,
13097 "y": 960,
13098 "name": "Status Row",
13099 "width": 720,
13100 "gap": 10,
13101 "justifyContent": "center",
13102 "alignItems": "center",
13103 "children": [
13104 {
13105 "type": "frame",
13106 "id": "h7zVp",
13107 "name": "Dot",
13108 "width": 8,
13109 "height": 8,
13110 "justifyContent": "center",
13111 "alignItems": "center",
13112 "children": [
13113 {
13114 "type": "ellipse",
13115 "id": "HWVQU",
13116 "name": "Dot",
13117 "fill": "$--color-success-foreground",
13118 "width": 7,
13119 "height": 7
13120 }
13121 ]
13122 },
13123 {
13124 "type": "text",
13125 "id": "pXlwp",
13126 "name": "Status",
13127 "fill": "$--muted-foreground",
13128 "content": "ALL SYSTEMS OPERATIONAL",
13129 "fontFamily": "$--font-primary",
13130 "fontSize": 11,
13131 "fontWeight": "normal",
13132 "letterSpacing": 0.5
13133 },
13134 {
13135 "type": "text",
13136 "id": "BWgV3",
13137 "name": "Sep",
13138 "fill": "$--border",
13139 "content": "·",
13140 "fontFamily": "$--font-primary",
13141 "fontSize": 11,
13142 "fontWeight": "normal"
13143 },
13144 {
13145 "type": "text",
13146 "id": "LhWfq",
13147 "name": "Region",
13148 "fill": "$--muted-foreground",
13149 "content": "REGION EU-CENTRAL-1",
13150 "fontFamily": "$--font-primary",
13151 "fontSize": 11,
13152 "fontWeight": "normal",
13153 "letterSpacing": 0.5
13154 },
13155 {
13156 "type": "text",
13157 "id": "A1RAhy",
13158 "name": "Sep2",
13159 "fill": "$--border",
13160 "content": "·",
13161 "fontFamily": "$--font-primary",
13162 "fontSize": 11,
13163 "fontWeight": "normal"
13164 },
13165 {
13166 "type": "text",
13167 "id": "ZPRni",
13168 "name": "Copy",
13169 "fill": "$--muted-foreground",
13170 "content": "© 2026 GitDataAI",
13171 "fontFamily": "$--font-primary",
13172 "fontSize": 11,
13173 "fontWeight": "normal",
13174 "letterSpacing": 0.5
13175 }
13176 ]
13177 },
13178 {
13179 "type": "frame",
13180 "id": "Z5khr",
13181 "layoutPosition": "absolute",
13182 "x": 32,
13183 "y": 936,
13184 "name": "Hint",
13185 "width": 704,
13186 "height": 14,
13187 "gap": 7,
13188 "justifyContent": "center",
13189 "alignItems": "center",
13190 "children": [
13191 {
13192 "type": "text",
13193 "id": "JktXA",
13194 "name": "Hint Text",
13195 "fill": "$--muted-foreground",
13196 "content": "CHALLENGE EXPIRES IN 5 MIN · 5 ATTEMPTS MAX",
13197 "fontFamily": "$--font-primary",
13198 "fontSize": 10,
13199 "fontWeight": "normal",
13200 "letterSpacing": 1.2
13201 }
13202 ]
13203 },
13204 {
13205 "type": "frame",
13206 "id": "g5pFSw",
13207 "layoutPosition": "absolute",
13208 "x": 32,
13209 "y": 36,
13210 "name": "Breadcrumb",
13211 "gap": 8,
13212 "alignItems": "center",
13213 "children": [
13214 {
13215 "type": "frame",
13216 "id": "bqLK3",
13217 "name": "Logo",
13218 "width": 14,
13219 "height": 14,
13220 "fill": "#FF8400",
13221 "cornerRadius": 4
13222 },
13223 {
13224 "type": "text",
13225 "id": "c5Sd3K",
13226 "name": "Root",
13227 "fill": "#111111",
13228 "content": "GitDataAI",
13229 "fontFamily": "JetBrains Mono",
13230 "fontSize": 10,
13231 "fontWeight": "bold",
13232 "letterSpacing": 1.2
13233 },
13234 {
13235 "type": "text",
13236 "id": "XOiZH",
13237 "name": "Sep1",
13238 "fill": "#CBCCC9",
13239 "content": "/",
13240 "fontFamily": "JetBrains Mono",
13241 "fontSize": 10,
13242 "fontWeight": "normal"
13243 },
13244 {
13245 "type": "text",
13246 "id": "XCPa9",
13247 "name": "Section",
13248 "fill": "#666666",
13249 "content": "AUTH",
13250 "fontFamily": "JetBrains Mono",
13251 "fontSize": 10,
13252 "fontWeight": "normal",
13253 "letterSpacing": 1.2
13254 },
13255 {
13256 "type": "text",
13257 "id": "PzKhN",
13258 "name": "Sep2",
13259 "fill": "#CBCCC9",
13260 "content": "/",
13261 "fontFamily": "JetBrains Mono",
13262 "fontSize": 10,
13263 "fontWeight": "normal"
13264 },
13265 {
13266 "type": "text",
13267 "id": "qisva",
13268 "name": "Current",
13269 "fill": "#804200",
13270 "content": "TWO-FACTOR",
13271 "fontFamily": "JetBrains Mono",
13272 "fontSize": 10,
13273 "fontWeight": "bold",
13274 "letterSpacing": 1.2
13275 }
13276 ]
13277 }
13278 ]
13279 },
13280 {
13281 "type": "frame",
13282 "id": "DmsW1",
13283 "x": 3504,
13284 "y": 4324,
13285 "name": "6. Two-Factor Auth — Mobile",
13286 "clip": true,
13287 "width": 390,
13288 "height": 844,
13289 "fill": "$--background",
13290 "layout": "vertical",
13291 "gap": 26,
13292 "padding": [
13293 40,
13294 16,
13295 72,
13296 16
13297 ],
13298 "justifyContent": "center",
13299 "alignItems": "center",
13300 "children": [
13301 {
13302 "type": "frame",
13303 "id": "cElnk",
13304 "layoutPosition": "absolute",
13305 "x": 25,
13306 "y": 200,
13307 "name": "Ambient Glow",
13308 "width": 340,
13309 "height": 400,
13310 "fill": {
13311 "type": "gradient",
13312 "gradientType": "radial",
13313 "enabled": true,
13314 "rotation": 0,
13315 "size": {
13316 "width": 1,
13317 "height": 1
13318 },
13319 "colors": [
13320 {
13321 "color": "#FF840026",
13322 "position": 0
13323 },
13324 {
13325 "color": "#FF840000",
13326 "position": 1
13327 }
13328 ]
13329 }
13330 },
13331 {
13332 "type": "frame",
13333 "id": "LPHsq",
13334 "layoutPosition": "absolute",
13335 "x": 0,
13336 "y": 0,
13337 "name": "Hairline Field",
13338 "width": 390,
13339 "height": 844,
13340 "fill": {
13341 "type": "gradient",
13342 "gradientType": "linear",
13343 "enabled": true,
13344 "rotation": 180,
13345 "size": {
13346 "height": 1
13347 },
13348 "colors": [
13349 {
13350 "color": "#00000000",
13351 "position": 0.55
13352 },
13353 {
13354 "color": "#00000009",
13355 "position": 1
13356 }
13357 ]
13358 }
13359 },
13360 {
13361 "type": "frame",
13362 "id": "LhXW1",
13363 "layoutPosition": "absolute",
13364 "x": 16,
13365 "y": 16,
13366 "name": "Mark TL",
13367 "width": 18,
13368 "height": 18,
13369 "stroke": "$--border",
13370 "strokeWidth": {
13371 "top": 1,
13372 "left": 1
13373 },
13374 "layout": "none"
13375 },
13376 {
13377 "type": "frame",
13378 "id": "aZcqm",
13379 "layoutPosition": "absolute",
13380 "x": 356,
13381 "y": 16,
13382 "name": "Mark TR",
13383 "width": 18,
13384 "height": 18,
13385 "stroke": "$--border",
13386 "strokeWidth": {
13387 "top": 1,
13388 "right": 1
13389 },
13390 "layout": "none"
13391 },
13392 {
13393 "type": "frame",
13394 "id": "Ev7H9",
13395 "layoutPosition": "absolute",
13396 "x": 16,
13397 "y": 810,
13398 "name": "Mark BL",
13399 "width": 18,
13400 "height": 18,
13401 "stroke": "$--border",
13402 "strokeWidth": {
13403 "bottom": 1,
13404 "left": 1
13405 },
13406 "layout": "none"
13407 },
13408 {
13409 "type": "frame",
13410 "id": "Z6qu1b",
13411 "layoutPosition": "absolute",
13412 "x": 356,
13413 "y": 810,
13414 "name": "Mark BR",
13415 "width": 18,
13416 "height": 18,
13417 "stroke": "$--border",
13418 "strokeWidth": {
13419 "right": 1,
13420 "bottom": 1
13421 },
13422 "layout": "none"
13423 },
13424 {
13425 "type": "frame",
13426 "id": "e07IBc",
13427 "name": "Login Card",
13428 "width": "fill_container",
13429 "fill": "$--card",
13430 "cornerRadius": "$--radius-m",
13431 "stroke": "$--border",
13432 "strokeWidth": 1,
13433 "effect": [
13434 {
13435 "type": "shadow",
13436 "shadowType": "outer",
13437 "color": "#1111111F",
13438 "offset": {
13439 "x": 0,
13440 "y": 18
13441 },
13442 "blur": 44,
13443 "spread": -8
13444 },
13445 {
13446 "type": "shadow",
13447 "shadowType": "outer",
13448 "color": "#1111110A",
13449 "offset": {
13450 "x": 0,
13451 "y": 2
13452 },
13453 "blur": 6
13454 }
13455 ],
13456 "layout": "vertical",
13457 "gap": 18,
13458 "padding": 24,
13459 "children": [
13460 {
13461 "type": "frame",
13462 "id": "pHAT1",
13463 "name": "Card Header",
13464 "width": "fill_container",
13465 "layout": "vertical",
13466 "gap": 12,
13467 "alignItems": "center",
13468 "children": [
13469 {
13470 "type": "frame",
13471 "id": "lSqP5",
13472 "name": "Icon Badge",
13473 "width": 44,
13474 "height": 44,
13475 "fill": "#111111",
13476 "cornerRadius": 12,
13477 "justifyContent": "center",
13478 "alignItems": "center",
13479 "children": [
13480 {
13481 "type": "icon",
13482 "id": "R5Nb12",
13483 "name": "Shield",
13484 "width": 20,
13485 "height": 20,
13486 "icon": "smartphone",
13487 "library": "lucide",
13488 "fill": "#FF8400"
13489 }
13490 ]
13491 },
13492 {
13493 "type": "text",
13494 "id": "urtWc",
13495 "name": "Heading",
13496 "fill": "#111111",
13497 "textGrowth": "fixed-width",
13498 "width": "fill_container",
13499 "content": "Two-factor code",
13500 "textAlign": "center",
13501 "fontFamily": "JetBrains Mono",
13502 "fontSize": 21,
13503 "fontWeight": "bold",
13504 "letterSpacing": -0.6
13505 },
13506 {
13507 "type": "text",
13508 "id": "t5CIuC",
13509 "name": "Subheading",
13510 "fill": "#666666",
13511 "textGrowth": "fixed-width",
13512 "width": "fill_container",
13513 "content": "Enter the 6-digit code from your authenticator app for account ada.lock@kernel.dev.",
13514 "lineHeight": 1.5,
13515 "textAlign": "center",
13516 "fontFamily": "Geist",
13517 "fontSize": 14,
13518 "fontWeight": "normal"
13519 }
13520 ]
13521 },
13522 {
13523 "type": "frame",
13524 "id": "J4C6P",
13525 "name": "Form",
13526 "width": "fill_container",
13527 "layout": "vertical",
13528 "gap": 15,
13529 "children": [
13530 {
13531 "type": "frame",
13532 "id": "XEbGL",
13533 "name": "Label Row",
13534 "width": "fill_container",
13535 "justifyContent": "space_between",
13536 "alignItems": "center",
13537 "children": [
13538 {
13539 "type": "text",
13540 "id": "FxflC",
13541 "name": "Label",
13542 "fill": "#666666",
13543 "content": "AUTHENTICATION CODE",
13544 "fontFamily": "JetBrains Mono",
13545 "fontSize": 10,
13546 "fontWeight": "bold",
13547 "letterSpacing": 1.2
13548 },
13549 {
13550 "type": "text",
13551 "id": "ElPin",
13552 "name": "Timer",
13553 "fill": "#804200",
13554 "content": "EXPIRES IN 04:32",
13555 "fontFamily": "JetBrains Mono",
13556 "fontSize": 10,
13557 "fontWeight": "bold",
13558 "letterSpacing": 1.2
13559 }
13560 ]
13561 },
13562 {
13563 "type": "frame",
13564 "id": "SzrAr",
13565 "name": "OTP Row",
13566 "width": "fill_container",
13567 "gap": 6,
13568 "children": [
13569 {
13570 "type": "frame",
13571 "id": "R7I2S",
13572 "name": "Digit 1",
13573 "width": "fill_container",
13574 "height": 58,
13575 "fill": "#FFFFFF",
13576 "cornerRadius": 10,
13577 "stroke": "#CBCCC9",
13578 "strokeWidth": 1,
13579 "justifyContent": "center",
13580 "alignItems": "center",
13581 "children": [
13582 {
13583 "type": "text",
13584 "id": "N3fQH",
13585 "name": "Num",
13586 "fill": "#111111",
13587 "content": "4",
13588 "fontFamily": "JetBrains Mono",
13589 "fontSize": 22,
13590 "fontWeight": "bold"
13591 }
13592 ]
13593 },
13594 {
13595 "type": "frame",
13596 "id": "ds42Y",
13597 "name": "Digit 2",
13598 "width": "fill_container",
13599 "height": 58,
13600 "fill": "#FFFFFF",
13601 "cornerRadius": 10,
13602 "stroke": "#CBCCC9",
13603 "strokeWidth": 1,
13604 "justifyContent": "center",
13605 "alignItems": "center",
13606 "children": [
13607 {
13608 "type": "text",
13609 "id": "Isikv",
13610 "name": "Num",
13611 "fill": "#111111",
13612 "content": "8",
13613 "fontFamily": "JetBrains Mono",
13614 "fontSize": 22,
13615 "fontWeight": "bold"
13616 }
13617 ]
13618 },
13619 {
13620 "type": "frame",
13621 "id": "ZLxqt",
13622 "name": "Digit 3",
13623 "width": "fill_container",
13624 "height": 58,
13625 "fill": "#FFFFFF",
13626 "cornerRadius": 10,
13627 "stroke": "#CBCCC9",
13628 "strokeWidth": 1,
13629 "justifyContent": "center",
13630 "alignItems": "center",
13631 "children": [
13632 {
13633 "type": "text",
13634 "id": "mlxVZ",
13635 "name": "Num",
13636 "fill": "#111111",
13637 "content": "2",
13638 "fontFamily": "JetBrains Mono",
13639 "fontSize": 22,
13640 "fontWeight": "bold"
13641 }
13642 ]
13643 },
13644 {
13645 "type": "frame",
13646 "id": "mwOuJ",
13647 "name": "Digit 4",
13648 "width": "fill_container",
13649 "height": 58,
13650 "fill": "#FFFFFF",
13651 "cornerRadius": 10,
13652 "stroke": "#111111",
13653 "strokeWidth": 1.6,
13654 "effect": {
13655 "type": "shadow",
13656 "shadowType": "outer",
13657 "color": "#11111114",
13658 "offset": {
13659 "x": 0,
13660 "y": 3
13661 },
13662 "blur": 10
13663 },
13664 "justifyContent": "center",
13665 "alignItems": "center",
13666 "children": [
13667 {
13668 "type": "frame",
13669 "id": "KcdV5",
13670 "name": "Caret",
13671 "width": 2,
13672 "height": 24,
13673 "fill": "#FF8400"
13674 }
13675 ]
13676 },
13677 {
13678 "type": "frame",
13679 "id": "zAnYV",
13680 "name": "Digit 5",
13681 "width": "fill_container",
13682 "height": 58,
13683 "fill": "#FFFFFF",
13684 "cornerRadius": 10,
13685 "stroke": "#CBCCC9",
13686 "strokeWidth": 1,
13687 "justifyContent": "center",
13688 "alignItems": "center"
13689 },
13690 {
13691 "type": "frame",
13692 "id": "Pbbjh",
13693 "name": "Digit 6",
13694 "width": "fill_container",
13695 "height": 58,
13696 "fill": "#FFFFFF",
13697 "cornerRadius": 10,
13698 "stroke": "#CBCCC9",
13699 "strokeWidth": 1,
13700 "justifyContent": "center",
13701 "alignItems": "center"
13702 }
13703 ]
13704 },
13705 {
13706 "type": "frame",
13707 "id": "fq3NY",
13708 "name": "Submit Button",
13709 "width": "fill_container",
13710 "height": 48,
13711 "fill": "#FF8400",
13712 "cornerRadius": 10,
13713 "effect": {
13714 "type": "shadow",
13715 "shadowType": "outer",
13716 "color": "#FF840066",
13717 "offset": {
13718 "x": 0,
13719 "y": 4
13720 },
13721 "blur": 14,
13722 "spread": -4
13723 },
13724 "gap": 9,
13725 "justifyContent": "center",
13726 "alignItems": "center",
13727 "children": [
13728 {
13729 "type": "text",
13730 "id": "c3Hk3v",
13731 "name": "Label",
13732 "fill": "#111111",
13733 "content": "Verify",
13734 "fontFamily": "JetBrains Mono",
13735 "fontSize": 14,
13736 "fontWeight": "bold",
13737 "letterSpacing": 0.4
13738 },
13739 {
13740 "type": "icon",
13741 "id": "pN5rC",
13742 "name": "Arrow",
13743 "width": 15,
13744 "height": 15,
13745 "icon": "arrow-right",
13746 "library": "lucide",
13747 "fill": "#111111"
13748 }
13749 ]
13750 },
13751 {
13752 "type": "frame",
13753 "id": "x6peS",
13754 "name": "Divider",
13755 "width": "fill_container",
13756 "gap": 12,
13757 "alignItems": "center",
13758 "children": [
13759 {
13760 "type": "frame",
13761 "id": "Kan3H",
13762 "name": "Line L",
13763 "width": "fill_container",
13764 "height": 1,
13765 "fill": "#CBCCC9"
13766 },
13767 {
13768 "type": "text",
13769 "id": "kSW5I",
13770 "name": "Text",
13771 "fill": "#666666",
13772 "content": "TROUBLE?",
13773 "fontFamily": "JetBrains Mono",
13774 "fontSize": 10,
13775 "fontWeight": "bold",
13776 "letterSpacing": 1.1
13777 },
13778 {
13779 "type": "frame",
13780 "id": "F5uYdu",
13781 "name": "Line R",
13782 "width": "fill_container",
13783 "height": 1,
13784 "fill": "#CBCCC9"
13785 }
13786 ]
13787 },
13788 {
13789 "type": "frame",
13790 "id": "F4MvA",
13791 "name": "Alt Row",
13792 "width": "fill_container",
13793 "layout": "vertical",
13794 "gap": 12,
13795 "children": [
13796 {
13797 "type": "frame",
13798 "id": "kmveJ",
13799 "name": "Backup Codes",
13800 "width": "fill_container",
13801 "height": 44,
13802 "fill": "#FFFFFF",
13803 "cornerRadius": 10,
13804 "stroke": "#CBCCC9",
13805 "strokeWidth": 1,
13806 "gap": 8,
13807 "justifyContent": "center",
13808 "alignItems": "center",
13809 "children": [
13810 {
13811 "type": "icon",
13812 "id": "fa0IO",
13813 "name": "Icon",
13814 "width": 15,
13815 "height": 15,
13816 "icon": "key-round",
13817 "library": "lucide",
13818 "fill": "#111111"
13819 },
13820 {
13821 "type": "text",
13822 "id": "jVSEm",
13823 "name": "Label",
13824 "fill": "#111111",
13825 "content": "Use a recovery code",
13826 "fontFamily": "Geist",
13827 "fontSize": 13.5,
13828 "fontWeight": "normal"
13829 }
13830 ]
13831 }
13832 ]
13833 }
13834 ]
13835 }
13836 ]
13837 },
13838 {
13839 "type": "frame",
13840 "id": "R0YlAE",
13841 "layoutPosition": "absolute",
13842 "x": 16,
13843 "y": 788,
13844 "name": "Status Row",
13845 "width": 358,
13846 "gap": 10,
13847 "justifyContent": "center",
13848 "alignItems": "center",
13849 "children": [
13850 {
13851 "type": "frame",
13852 "id": "F8w8R",
13853 "name": "Dot",
13854 "width": 8,
13855 "height": 8,
13856 "justifyContent": "center",
13857 "alignItems": "center",
13858 "children": [
13859 {
13860 "type": "ellipse",
13861 "id": "jToW1",
13862 "name": "Dot",
13863 "fill": "$--color-success-foreground",
13864 "width": 7,
13865 "height": 7
13866 }
13867 ]
13868 },
13869 {
13870 "type": "text",
13871 "id": "FHbrU",
13872 "name": "Status",
13873 "fill": "$--muted-foreground",
13874 "content": "ALL SYSTEMS OPERATIONAL",
13875 "fontFamily": "$--font-primary",
13876 "fontSize": 11,
13877 "fontWeight": "normal",
13878 "letterSpacing": 0.5
13879 },
13880 {
13881 "type": "text",
13882 "id": "Z6aqlr",
13883 "name": "Sep",
13884 "fill": "$--border",
13885 "content": "·",
13886 "fontFamily": "$--font-primary",
13887 "fontSize": 11,
13888 "fontWeight": "normal"
13889 },
13890 {
13891 "type": "text",
13892 "id": "gUpu5",
13893 "name": "Copy",
13894 "fill": "$--muted-foreground",
13895 "content": "© 2026 GitDataAI",
13896 "fontFamily": "$--font-primary",
13897 "fontSize": 11,
13898 "fontWeight": "normal",
13899 "letterSpacing": 0.5
13900 }
13901 ]
13902 },
13903 {
13904 "type": "frame",
13905 "id": "Lf3Ib",
13906 "layoutPosition": "absolute",
13907 "x": 8,
13908 "y": 760,
13909 "name": "Hint",
13910 "width": 374,
13911 "height": 14,
13912 "gap": 7,
13913 "justifyContent": "center",
13914 "alignItems": "center",
13915 "children": [
13916 {
13917 "type": "text",
13918 "id": "GE7mO",
13919 "name": "Hint Text",
13920 "fill": "$--muted-foreground",
13921 "content": "CHALLENGE EXPIRES IN 5 MIN · 5 ATTEMPTS MAX",
13922 "fontFamily": "$--font-primary",
13923 "fontSize": 10,
13924 "fontWeight": "normal",
13925 "letterSpacing": 1.2
13926 }
13927 ]
13928 }
13929 ]
13930 }
13931 ],
13932 "themes": {
13933 "Mode": [
13934 "Light",
13935 "Dark"
13936 ]
13937 },
13938 "variables": {
13939 "--sidebar": {
13940 "type": "color",
13941 "value": [
13942 {
13943 "value": "#E7E8E5"
13944 },
13945 {
13946 "value": "#18181b",
13947 "theme": {
13948 "Mode": "Dark"
13949 }
13950 }
13951 ]
13952 },
13953 "--sidebar-foreground": {
13954 "type": "color",
13955 "value": [
13956 {
13957 "value": "#666666"
13958 },
13959 {
13960 "value": "#fafafa",
13961 "theme": {
13962 "Mode": "Dark"
13963 }
13964 }
13965 ]
13966 },
13967 "--sidebar-primary": {
13968 "type": "color",
13969 "value": [
13970 {
13971 "value": "#18181b"
13972 },
13973 {
13974 "value": "#18181b",
13975 "theme": {
13976 "Mode": "Dark"
13977 }
13978 }
13979 ]
13980 },
13981 "--sidebar-primary-foreground": {
13982 "type": "color",
13983 "value": [
13984 {
13985 "value": "#fafafa"
13986 },
13987 {
13988 "value": "#fafafa",
13989 "theme": {
13990 "Mode": "Dark"
13991 }
13992 }
13993 ]
13994 },
13995 "--sidebar-border": {
13996 "type": "color",
13997 "value": [
13998 {
13999 "value": "#CBCCC9"
14000 },
14001 {
14002 "value": "#ffffff1a",
14003 "theme": {
14004 "Mode": "Dark"
14005 }
14006 }
14007 ]
14008 },
14009 "--sidebar-accent": {
14010 "type": "color",
14011 "value": [
14012 {
14013 "value": "#CBCCC9"
14014 },
14015 {
14016 "value": "#2a2a30",
14017 "theme": {
14018 "Mode": "Dark"
14019 }
14020 }
14021 ]
14022 },
14023 "--sidebar-accent-foreground": {
14024 "type": "color",
14025 "value": [
14026 {
14027 "value": "#18181b"
14028 },
14029 {
14030 "value": "#fafafa",
14031 "theme": {
14032 "Mode": "Dark"
14033 }
14034 }
14035 ]
14036 },
14037 "--sidebar-ring": {
14038 "type": "color",
14039 "value": [
14040 {
14041 "value": "#71717a"
14042 },
14043 {
14044 "value": "#71717a",
14045 "theme": {
14046 "Mode": "Dark"
14047 }
14048 }
14049 ]
14050 },
14051 "--background": {
14052 "type": "color",
14053 "value": [
14054 {
14055 "value": "#F2F3F0"
14056 },
14057 {
14058 "value": "#111111",
14059 "theme": {
14060 "Mode": "Dark"
14061 }
14062 }
14063 ]
14064 },
14065 "--foreground": {
14066 "type": "color",
14067 "value": [
14068 {
14069 "value": "#111111"
14070 },
14071 {
14072 "value": "#FFFFFF",
14073 "theme": {
14074 "Mode": "Dark"
14075 }
14076 }
14077 ]
14078 },
14079 "--card": {
14080 "type": "color",
14081 "value": [
14082 {
14083 "value": "#FFFFFF"
14084 },
14085 {
14086 "value": "#1A1A1A",
14087 "theme": {
14088 "Mode": "Dark"
14089 }
14090 }
14091 ]
14092 },
14093 "--card-foreground": {
14094 "type": "color",
14095 "value": [
14096 {
14097 "value": "#111111"
14098 },
14099 {
14100 "value": "#FFFFFF",
14101 "theme": {
14102 "Mode": "Dark"
14103 }
14104 }
14105 ]
14106 },
14107 "--popover": {
14108 "type": "color",
14109 "value": [
14110 {
14111 "value": "#FFFFFF"
14112 },
14113 {
14114 "value": "#1A1A1A",
14115 "theme": {
14116 "Mode": "Dark"
14117 }
14118 }
14119 ]
14120 },
14121 "--popover-foreground": {
14122 "type": "color",
14123 "value": [
14124 {
14125 "value": "#111111"
14126 },
14127 {
14128 "value": "#FFFFFF",
14129 "theme": {
14130 "Mode": "Dark"
14131 }
14132 }
14133 ]
14134 },
14135 "--primary": {
14136 "type": "color",
14137 "value": [
14138 {
14139 "value": "#FF8400"
14140 },
14141 {
14142 "value": "#FF8400",
14143 "theme": {
14144 "Mode": "Dark"
14145 }
14146 }
14147 ]
14148 },
14149 "--primary-foreground": {
14150 "type": "color",
14151 "value": [
14152 {
14153 "value": "#111111"
14154 },
14155 {
14156 "value": "#111111",
14157 "theme": {
14158 "Mode": "Dark"
14159 }
14160 }
14161 ]
14162 },
14163 "--secondary": {
14164 "type": "color",
14165 "value": [
14166 {
14167 "value": "#E7E8E5"
14168 },
14169 {
14170 "value": "#2E2E2E",
14171 "theme": {
14172 "Mode": "Dark"
14173 }
14174 }
14175 ]
14176 },
14177 "--secondary-foreground": {
14178 "type": "color",
14179 "value": [
14180 {
14181 "value": "#111111"
14182 },
14183 {
14184 "value": "#FFFFFF",
14185 "theme": {
14186 "Mode": "Dark"
14187 }
14188 }
14189 ]
14190 },
14191 "--muted": {
14192 "type": "color",
14193 "value": [
14194 {
14195 "value": "#F2F3F0"
14196 },
14197 {
14198 "value": "#2E2E2E",
14199 "theme": {
14200 "Mode": "Dark"
14201 }
14202 }
14203 ]
14204 },
14205 "--muted-foreground": {
14206 "type": "color",
14207 "value": [
14208 {
14209 "value": "#666666"
14210 },
14211 {
14212 "value": "#B8B9B6",
14213 "theme": {
14214 "Mode": "Dark"
14215 }
14216 }
14217 ]
14218 },
14219 "--accent": {
14220 "type": "color",
14221 "value": [
14222 {
14223 "value": "#F2F3F0"
14224 },
14225 {
14226 "value": "#111111",
14227 "theme": {
14228 "Mode": "Dark"
14229 }
14230 }
14231 ]
14232 },
14233 "--accent-foreground": {
14234 "type": "color",
14235 "value": [
14236 {
14237 "value": "#111111"
14238 },
14239 {
14240 "value": "#F2F3F0",
14241 "theme": {
14242 "Mode": "Dark"
14243 }
14244 }
14245 ]
14246 },
14247 "--destructive": {
14248 "type": "color",
14249 "value": [
14250 {
14251 "value": "#D93C15"
14252 },
14253 {
14254 "value": "#FF5C33",
14255 "theme": {
14256 "Mode": "Dark"
14257 }
14258 }
14259 ]
14260 },
14261 "--border": {
14262 "type": "color",
14263 "value": [
14264 {
14265 "value": "#CBCCC9"
14266 },
14267 {
14268 "value": "#2E2E2E",
14269 "theme": {
14270 "Mode": "Dark"
14271 }
14272 }
14273 ]
14274 },
14275 "--input": {
14276 "type": "color",
14277 "value": [
14278 {
14279 "value": "#CBCCC9"
14280 },
14281 {
14282 "value": "#2E2E2E",
14283 "theme": {
14284 "Mode": "Dark"
14285 }
14286 }
14287 ]
14288 },
14289 "--ring": {
14290 "type": "color",
14291 "value": [
14292 {
14293 "value": "#666666"
14294 },
14295 {
14296 "value": "#666666",
14297 "theme": {
14298 "Mode": "Dark"
14299 }
14300 }
14301 ]
14302 },
14303 "--white": {
14304 "type": "color",
14305 "value": "#FFFFFF"
14306 },
14307 "--black": {
14308 "type": "color",
14309 "value": "#000000"
14310 },
14311 "--font-primary": {
14312 "type": "string",
14313 "value": "JetBrains Mono"
14314 },
14315 "--font-secondary": {
14316 "type": "string",
14317 "value": "Geist"
14318 },
14319 "--radius-none": {
14320 "type": "number",
14321 "value": 0
14322 },
14323 "--radius-pill": {
14324 "type": "number",
14325 "value": 999
14326 },
14327 "--color-success": {
14328 "type": "color",
14329 "value": [
14330 {
14331 "value": "#DFE6E1"
14332 },
14333 {
14334 "value": "#222924",
14335 "theme": {
14336 "Mode": "Dark"
14337 }
14338 }
14339 ]
14340 },
14341 "--color-success-foreground": {
14342 "type": "color",
14343 "value": [
14344 {
14345 "value": "#004D1A"
14346 },
14347 {
14348 "value": "#B6FFCE",
14349 "theme": {
14350 "Mode": "Dark"
14351 }
14352 }
14353 ]
14354 },
14355 "--color-warning": {
14356 "type": "color",
14357 "value": [
14358 {
14359 "value": "#E9E3D8"
14360 },
14361 {
14362 "value": "#291C0F",
14363 "theme": {
14364 "Mode": "Dark"
14365 }
14366 }
14367 ]
14368 },
14369 "--color-warning-foreground": {
14370 "type": "color",
14371 "value": [
14372 {
14373 "value": "#804200"
14374 },
14375 {
14376 "value": "#FF8400",
14377 "theme": {
14378 "Mode": "Dark"
14379 }
14380 }
14381 ]
14382 },
14383 "--color-error": {
14384 "type": "color",
14385 "value": [
14386 {
14387 "value": "#E5DCDA"
14388 },
14389 {
14390 "value": "#24100B",
14391 "theme": {
14392 "Mode": "Dark"
14393 }
14394 }
14395 ]
14396 },
14397 "--color-error-foreground": {
14398 "type": "color",
14399 "value": [
14400 {
14401 "value": "#8C1C00"
14402 },
14403 {
14404 "value": "#FF5C33",
14405 "theme": {
14406 "Mode": "Dark"
14407 }
14408 }
14409 ]
14410 },
14411 "--color-info": {
14412 "type": "color",
14413 "value": [
14414 {
14415 "value": "#DFDFE6"
14416 },
14417 {
14418 "value": "#222229",
14419 "theme": {
14420 "Mode": "Dark"
14421 }
14422 }
14423 ]
14424 },
14425 "--color-info-foreground": {
14426 "type": "color",
14427 "value": [
14428 {
14429 "value": "#000066"
14430 },
14431 {
14432 "value": "#B2B2FF",
14433 "theme": {
14434 "Mode": "Dark"
14435 }
14436 }
14437 ]
14438 },
14439 "--radius-m": {
14440 "type": "number",
14441 "value": 16
14442 },
14443 "dk-bg": {
14444 "type": "color",
14445 "value": "#0A0B0D"
14446 },
14447 "dk-panel": {
14448 "type": "color",
14449 "value": "#101216"
14450 },
14451 "dk-panel-2": {
14452 "type": "color",
14453 "value": "#15181D"
14454 },
14455 "dk-field": {
14456 "type": "color",
14457 "value": "#1B1F26"
14458 },
14459 "dk-line": {
14460 "type": "color",
14461 "value": "#23282F"
14462 },
14463 "dk-line-2": {
14464 "type": "color",
14465 "value": "#2E343D"
14466 },
14467 "dk-text": {
14468 "type": "color",
14469 "value": "#F2F4F7"
14470 },
14471 "dk-text-2": {
14472 "type": "color",
14473 "value": "#A2A9B4"
14474 },
14475 "dk-text-3": {
14476 "type": "color",
14477 "value": "#6C7481"
14478 },
14479 "accent": {
14480 "type": "color",
14481 "value": "#FF8400"
14482 },
14483 "accent-dim": {
14484 "type": "color",
14485 "value": "#FFB366"
14486 },
14487 "ok": {
14488 "type": "color",
14489 "value": "#3DD68C"
14490 },
14491 "r-sm": {
14492 "type": "number",
14493 "value": 8
14494 },
14495 "r-md": {
14496 "type": "number",
14497 "value": 12
14498 },
14499 "r-lg": {
14500 "type": "number",
14501 "value": 16
14502 },
14503 "sp-6": {
14504 "type": "number",
14505 "value": 6
14506 },
14507 "sp-12": {
14508 "type": "number",
14509 "value": 12
14510 },
14511 "sp-20": {
14512 "type": "number",
14513 "value": 20
14514 },
14515 "sp-32": {
14516 "type": "number",
14517 "value": 32
14518 }
14519 },
14520 "fileToken": "211b7cb5-195c-47c3-ae9a-aae9097c1424"
14521}
No newline at end of file
Added web/design/layout.pen View web/design/layout.pen

Diff too large to display.

Added web/public/favicon.svg View web/public/favicon.svg

Diff too large to display.

Added web/public/icons.svg View web/public/icons.svg

Diff too large to display.

Added web/public/wronged.png View web/public/wronged.png

Diff too large to display.

Added web/scripts/lint-nav.mjs View web/scripts/lint-nav.mjs

Diff too large to display.

Added web/src/app/routes/router.tsx View web/src/app/routes/router.tsx

Diff too large to display.

Added web/src/app/styles/index.css View web/src/app/styles/index.css

Diff too large to display.

Added web/src/app/styles/workspace.css View web/src/app/styles/workspace.css

Diff too large to display.

Added web/src/app/api-error-gate.tsx View web/src/app/api-error-gate.tsx

Diff too large to display.

Added web/src/app/bootstrap.tsx View web/src/app/bootstrap.tsx

Diff too large to display.

Added web/src/app/index.tsx View web/src/app/index.tsx

Diff too large to display.

Added web/src/entities/chat/model/api.ts View web/src/entities/chat/model/api.ts

Diff too large to display.

Added web/src/entities/chat/model/chat.ts View web/src/entities/chat/model/chat.ts

Diff too large to display.

Added web/src/entities/chat/model/meta.ts View web/src/entities/chat/model/meta.ts

Diff too large to display.

Added web/src/entities/chat/index.ts View web/src/entities/chat/index.ts

Diff too large to display.

Added web/src/entities/issue/model/api.ts View web/src/entities/issue/model/api.ts

Diff too large to display.

Added web/src/entities/issue/model/issue.ts View web/src/entities/issue/model/issue.ts

Diff too large to display.

Added web/src/entities/issue/model/meta.ts View web/src/entities/issue/model/meta.ts

Diff too large to display.

Added web/src/entities/issue/index.ts View web/src/entities/issue/index.ts

Diff too large to display.

Added web/src/entities/pull-request/model/api.ts View web/src/entities/pull-request/model/api.ts

Diff too large to display.

Added web/src/entities/pull-request/model/pull.ts View web/src/entities/pull-request/model/pull.ts

Diff too large to display.

Added web/src/entities/pull-request/index.ts View web/src/entities/pull-request/index.ts

Diff too large to display.

Added web/src/entities/repo/model/archives.ts View web/src/entities/repo/model/archives.ts

Diff too large to display.

Added web/src/entities/repo/model/blame.ts View web/src/entities/repo/model/blame.ts

Diff too large to display.

Added web/src/entities/repo/model/commits.ts View web/src/entities/repo/model/commits.ts

Diff too large to display.

Added web/src/entities/repo/model/diff.ts View web/src/entities/repo/model/diff.ts

Diff too large to display.

Added web/src/entities/repo/model/fragment.ts View web/src/entities/repo/model/fragment.ts

Diff too large to display.

Added web/src/entities/repo/model/href.ts View web/src/entities/repo/model/href.ts

Diff too large to display.

Added web/src/entities/repo/model/imports.ts View web/src/entities/repo/model/imports.ts

Diff too large to display.

Added web/src/entities/repo/model/insights.ts View web/src/entities/repo/model/insights.ts

Diff too large to display.

Added web/src/entities/repo/model/lfs.ts View web/src/entities/repo/model/lfs.ts

Diff too large to display.

Added web/src/entities/repo/model/protection.ts View web/src/entities/repo/model/protection.ts

Diff too large to display.

Added web/src/entities/repo/model/refs.ts View web/src/entities/repo/model/refs.ts

Diff too large to display.

Added web/src/entities/repo/model/remotes.ts View web/src/entities/repo/model/remotes.ts

Diff too large to display.

Added web/src/entities/repo/model/repo.ts View web/src/entities/repo/model/repo.ts

Diff too large to display.

Added web/src/entities/repo/model/topics.ts View web/src/entities/repo/model/topics.ts

Diff too large to display.

Added web/src/entities/repo/model/tree.ts View web/src/entities/repo/model/tree.ts

Diff too large to display.

Added web/src/entities/repo/ui/embed.css View web/src/entities/repo/ui/embed.css

Diff too large to display.

Added web/src/entities/repo/index.ts View web/src/entities/repo/index.ts

Diff too large to display.

Added web/src/entities/search/model/api.ts View web/src/entities/search/model/api.ts

Diff too large to display.

Added web/src/entities/search/model/search.ts View web/src/entities/search/model/search.ts

Diff too large to display.

Added web/src/entities/search/index.ts View web/src/entities/search/index.ts

Diff too large to display.

Added web/src/features/auth/model/api.ts View web/src/features/auth/model/api.ts

Diff too large to display.

Added web/src/features/auth/model/pow.ts View web/src/features/auth/model/pow.ts

Diff too large to display.

Added web/src/features/auth/ui/auth-card.tsx View web/src/features/auth/ui/auth-card.tsx

Diff too large to display.

Added web/src/features/auth/ui/auth-footer.tsx View web/src/features/auth/ui/auth-footer.tsx

Diff too large to display.

Added web/src/features/auth/ui/auth-shell.tsx View web/src/features/auth/ui/auth-shell.tsx

Diff too large to display.

Added web/src/features/auth/ui/chip.tsx View web/src/features/auth/ui/chip.tsx

Diff too large to display.

Added web/src/features/auth/ui/icon-badge.tsx View web/src/features/auth/ui/icon-badge.tsx

Diff too large to display.

Added web/src/features/auth/ui/kernel-mark.tsx View web/src/features/auth/ui/kernel-mark.tsx

Diff too large to display.

Added web/src/features/auth/index.ts View web/src/features/auth/index.ts

Diff too large to display.

Added web/src/features/chat/model/prefetch.ts View web/src/features/chat/model/prefetch.ts

Diff too large to display.

Added web/src/features/chat/model/transcript.ts View web/src/features/chat/model/transcript.ts

Diff too large to display.

Added web/src/features/chat/model/use-composer.ts View web/src/features/chat/model/use-composer.ts

Diff too large to display.

Added web/src/features/chat/model/use-room-data.ts View web/src/features/chat/model/use-room-data.ts

Diff too large to display.

Added web/src/features/chat/model/use-room-stream.ts View web/src/features/chat/model/use-room-stream.ts

Diff too large to display.

Added web/src/features/chat/model/view-state.ts View web/src/features/chat/model/view-state.ts

Diff too large to display.

Added web/src/features/chat/ui/chat-composer.tsx View web/src/features/chat/ui/chat-composer.tsx

Diff too large to display.

Added web/src/features/chat/ui/chat-polish.css View web/src/features/chat/ui/chat-polish.css

Diff too large to display.

Added web/src/features/chat/ui/chat-room.tsx View web/src/features/chat/ui/chat-room.tsx

Diff too large to display.

Added web/src/features/chat/ui/emoji-picker.tsx View web/src/features/chat/ui/emoji-picker.tsx

Diff too large to display.

Added web/src/features/chat/ui/parts.tsx View web/src/features/chat/ui/parts.tsx

Diff too large to display.

Added web/src/features/chat/ui/side-panel.tsx View web/src/features/chat/ui/side-panel.tsx

Diff too large to display.

Added web/src/features/chat/ui/system-lines.ts View web/src/features/chat/ui/system-lines.ts

Diff too large to display.

Added web/src/features/chat/ui/transcript.tsx View web/src/features/chat/ui/transcript.tsx

Diff too large to display.

Added web/src/features/chat/index.ts View web/src/features/chat/index.ts

Diff too large to display.

Added web/src/features/issue-board/model/prefetch.ts View web/src/features/issue-board/model/prefetch.ts

Diff too large to display.

Added web/src/features/issue-board/model/use-board-data.ts View web/src/features/issue-board/model/use-board-data.ts

Diff too large to display.

Added web/src/features/issue-board/ui/board-filters.tsx View web/src/features/issue-board/ui/board-filters.tsx

Diff too large to display.

Added web/src/features/issue-board/ui/board-manage-modal.tsx View web/src/features/issue-board/ui/board-manage-modal.tsx

Diff too large to display.

Added web/src/features/issue-board/ui/board-polish.css View web/src/features/issue-board/ui/board-polish.css

Diff too large to display.

Added web/src/features/issue-board/ui/dialog.tsx View web/src/features/issue-board/ui/dialog.tsx

Diff too large to display.

Added web/src/features/issue-board/ui/issue-board.tsx View web/src/features/issue-board/ui/issue-board.tsx

Diff too large to display.

Added web/src/features/issue-board/ui/issue-detail.tsx View web/src/features/issue-board/ui/issue-detail.tsx

Diff too large to display.

Added web/src/features/issue-board/ui/issue-form-modal.tsx View web/src/features/issue-board/ui/issue-form-modal.tsx

Diff too large to display.

Added web/src/features/issue-board/ui/parts.tsx View web/src/features/issue-board/ui/parts.tsx

Diff too large to display.

Added web/src/features/issue-board/index.ts View web/src/features/issue-board/index.ts

Diff too large to display.

Added web/src/features/notifications/model/api.ts View web/src/features/notifications/model/api.ts

Diff too large to display.

Added web/src/features/notifications/model/live.ts View web/src/features/notifications/model/live.ts

Diff too large to display.

Added web/src/features/notifications/model/target.ts View web/src/features/notifications/model/target.ts

Diff too large to display.

Added web/src/features/notifications/model/use-unread-count.ts View web/src/features/notifications/model/use-unread-count.ts

Diff too large to display.

Added web/src/features/notifications/ui/inbox-button.tsx View web/src/features/notifications/ui/inbox-button.tsx

Diff too large to display.

Added web/src/features/notifications/ui/meta.ts View web/src/features/notifications/ui/meta.ts

Diff too large to display.

Added web/src/features/notifications/ui/notify-nav-item.tsx View web/src/features/notifications/ui/notify-nav-item.tsx

Diff too large to display.

Added web/src/features/notifications/ui/notify-polish.css View web/src/features/notifications/ui/notify-polish.css

Diff too large to display.

Added web/src/features/notifications/ui/notify-toaster.tsx View web/src/features/notifications/ui/notify-toaster.tsx

Diff too large to display.

Added web/src/features/notifications/ui/notify-view.tsx View web/src/features/notifications/ui/notify-view.tsx

Diff too large to display.

Added web/src/features/notifications/index.ts View web/src/features/notifications/index.ts

Diff too large to display.

Added web/src/features/pull-request/model/filters.tsx View web/src/features/pull-request/model/filters.tsx

Diff too large to display.

Added web/src/features/pull-request/model/meta.ts View web/src/features/pull-request/model/meta.ts

Diff too large to display.

Added web/src/features/pull-request/ui/checks-tab.tsx View web/src/features/pull-request/ui/checks-tab.tsx

Diff too large to display.

Added web/src/features/pull-request/ui/commits-tab.tsx View web/src/features/pull-request/ui/commits-tab.tsx

Diff too large to display.

Added web/src/features/pull-request/ui/conversation.tsx View web/src/features/pull-request/ui/conversation.tsx

Diff too large to display.

Added web/src/features/pull-request/ui/files-tab.tsx View web/src/features/pull-request/ui/files-tab.tsx

Diff too large to display.

Added web/src/features/pull-request/ui/parts.tsx View web/src/features/pull-request/ui/parts.tsx

Diff too large to display.

Added web/src/features/pull-request/ui/pull-detail.tsx View web/src/features/pull-request/ui/pull-detail.tsx

Diff too large to display.

Added web/src/features/pull-request/ui/pull-form-modal.tsx View web/src/features/pull-request/ui/pull-form-modal.tsx

Diff too large to display.

Added web/src/features/pull-request/ui/pulls-tab.tsx View web/src/features/pull-request/ui/pulls-tab.tsx

Diff too large to display.

Added web/src/features/pull-request/index.ts View web/src/features/pull-request/index.ts

Diff too large to display.

Added web/src/features/repo-branches/model/branch.ts View web/src/features/repo-branches/model/branch.ts

Diff too large to display.

Added web/src/features/repo-branches/ui/branches-tab.tsx View web/src/features/repo-branches/ui/branches-tab.tsx

Diff too large to display.

Added web/src/features/repo-branches/ui/submodules-section.tsx View web/src/features/repo-branches/ui/submodules-section.tsx

Diff too large to display.

Added web/src/features/repo-branches/ui/tags-section.tsx View web/src/features/repo-branches/ui/tags-section.tsx

Diff too large to display.

Added web/src/features/repo-branches/index.ts View web/src/features/repo-branches/index.ts

Diff too large to display.

Added web/src/features/repo-browse/model/prefetch.ts View web/src/features/repo-browse/model/prefetch.ts

Diff too large to display.

Added web/src/features/repo-browse/model/readme.ts View web/src/features/repo-browse/model/readme.ts

Diff too large to display.

Added web/src/features/repo-browse/model/use-fragment-navigation.ts View web/src/features/repo-browse/model/use-fragment-navigation.ts

Diff too large to display.

Added web/src/features/repo-browse/ui/blame-view.tsx View web/src/features/repo-browse/ui/blame-view.tsx

Diff too large to display.

Added web/src/features/repo-browse/ui/code-tab.tsx View web/src/features/repo-browse/ui/code-tab.tsx

Diff too large to display.

Added web/src/features/repo-browse/ui/repo-code-search.tsx View web/src/features/repo-browse/ui/repo-code-search.tsx

Diff too large to display.

Added web/src/features/repo-browse/index.ts View web/src/features/repo-browse/index.ts

Diff too large to display.

Added web/src/features/repo-history/ui/commit-view.tsx View web/src/features/repo-history/ui/commit-view.tsx

Diff too large to display.

Added web/src/features/repo-history/ui/commits-tab.tsx View web/src/features/repo-history/ui/commits-tab.tsx

Diff too large to display.

Added web/src/features/repo-history/index.ts View web/src/features/repo-history/index.ts

Diff too large to display.

Added web/src/features/repo-settings/model/lfs.ts View web/src/features/repo-settings/model/lfs.ts

Diff too large to display.

Added web/src/features/repo-settings/model/sections.ts View web/src/features/repo-settings/model/sections.ts

Diff too large to display.

Added web/src/features/repo-settings/ui/sections/archives-settings.tsx View web/src/features/repo-settings/ui/sections/archives-settings.tsx

Diff too large to display.

Added web/src/features/repo-settings/ui/sections/general-settings.tsx View web/src/features/repo-settings/ui/sections/general-settings.tsx

Diff too large to display.

Added web/src/features/repo-settings/ui/sections/import-settings.tsx View web/src/features/repo-settings/ui/sections/import-settings.tsx

Diff too large to display.

Added web/src/features/repo-settings/ui/sections/insights-settings.tsx View web/src/features/repo-settings/ui/sections/insights-settings.tsx

Diff too large to display.

Added web/src/features/repo-settings/ui/sections/locks-settings.tsx View web/src/features/repo-settings/ui/sections/locks-settings.tsx

Diff too large to display.

Added web/src/features/repo-settings/ui/sections/protection-settings.tsx View web/src/features/repo-settings/ui/sections/protection-settings.tsx

Diff too large to display.

Added web/src/features/repo-settings/ui/sections/remotes-settings.tsx View web/src/features/repo-settings/ui/sections/remotes-settings.tsx

Diff too large to display.

Added web/src/features/repo-settings/ui/sections/topics-settings.tsx View web/src/features/repo-settings/ui/sections/topics-settings.tsx

Diff too large to display.

Added web/src/features/repo-settings/ui/parts.tsx View web/src/features/repo-settings/ui/parts.tsx

Diff too large to display.

Added web/src/features/repo-settings/ui/settings-tab.tsx View web/src/features/repo-settings/ui/settings-tab.tsx

Diff too large to display.

Added web/src/features/repo-settings/ui/use-action.ts View web/src/features/repo-settings/ui/use-action.ts

Diff too large to display.

Added web/src/features/repo-settings/index.ts View web/src/features/repo-settings/index.ts

Diff too large to display.

Added web/src/features/search/ui/global-search-command.tsx View web/src/features/search/ui/global-search-command.tsx

Diff too large to display.

Added web/src/features/search/index.ts View web/src/features/search/index.ts

Diff too large to display.

Added web/src/features/space-management/model/api.ts View web/src/features/space-management/model/api.ts

Diff too large to display.

Added web/src/features/space-management/model/space-admin.ts View web/src/features/space-management/model/space-admin.ts

Diff too large to display.

Added web/src/features/space-management/ui/space-settings/bans-section.tsx View web/src/features/space-management/ui/space-settings/bans-section.tsx

Diff too large to display.

Added web/src/features/space-management/ui/space-settings/channel-permissions-section.tsx View web/src/features/space-management/ui/space-settings/channel-permissions-section.tsx

Diff too large to display.

Added web/src/features/space-management/ui/space-settings/danger-section.tsx View web/src/features/space-management/ui/space-settings/danger-section.tsx

Diff too large to display.

Added web/src/features/space-management/ui/space-settings/general-section.tsx View web/src/features/space-management/ui/space-settings/general-section.tsx

Diff too large to display.

Added web/src/features/space-management/ui/space-settings/images-section.tsx View web/src/features/space-management/ui/space-settings/images-section.tsx

Diff too large to display.

Added web/src/features/space-management/ui/space-settings/invites-section.tsx View web/src/features/space-management/ui/space-settings/invites-section.tsx

Diff too large to display.

Added web/src/features/space-management/ui/space-settings/join-rules-section.tsx View web/src/features/space-management/ui/space-settings/join-rules-section.tsx

Diff too large to display.

Added web/src/features/space-management/ui/space-settings/members-section.tsx View web/src/features/space-management/ui/space-settings/members-section.tsx

Diff too large to display.

Added web/src/features/space-management/ui/space-settings/meta.ts View web/src/features/space-management/ui/space-settings/meta.ts

Diff too large to display.

Added web/src/features/space-management/ui/space-settings/my-membership-section.tsx View web/src/features/space-management/ui/space-settings/my-membership-section.tsx

Diff too large to display.

Added web/src/features/space-management/ui/space-settings/props.ts View web/src/features/space-management/ui/space-settings/props.ts

Diff too large to display.

Added web/src/features/space-management/ui/space-settings/roles-section.tsx View web/src/features/space-management/ui/space-settings/roles-section.tsx

Diff too large to display.

Added web/src/features/space-management/ui/create-space-modal.tsx View web/src/features/space-management/ui/create-space-modal.tsx

Diff too large to display.

Added web/src/features/space-management/ui/import-repo-modal.tsx View web/src/features/space-management/ui/import-repo-modal.tsx

Diff too large to display.

Added web/src/features/space-management/ui/space-header.tsx View web/src/features/space-management/ui/space-header.tsx

Diff too large to display.

Added web/src/features/space-management/ui/space-settings-modal.tsx View web/src/features/space-management/ui/space-settings-modal.tsx

Diff too large to display.

Added web/src/features/space-management/index.ts View web/src/features/space-management/index.ts

Diff too large to display.

Added web/src/features/user-settings/model/api.ts View web/src/features/user-settings/model/api.ts

Diff too large to display.

Added web/src/features/user-settings/model/preferences.ts View web/src/features/user-settings/model/preferences.ts

Diff too large to display.

Added web/src/features/user-settings/model/user-settings.ts View web/src/features/user-settings/model/user-settings.ts

Diff too large to display.

Added web/src/features/user-settings/ui/sections/access-keys-section.tsx View web/src/features/user-settings/ui/sections/access-keys-section.tsx

Diff too large to display.

Added web/src/features/user-settings/ui/sections/account-section.tsx View web/src/features/user-settings/ui/sections/account-section.tsx

Diff too large to display.

Added web/src/features/user-settings/ui/sections/appearance-section.tsx View web/src/features/user-settings/ui/sections/appearance-section.tsx

Diff too large to display.

Added web/src/features/user-settings/ui/sections/emails-section.tsx View web/src/features/user-settings/ui/sections/emails-section.tsx

Diff too large to display.

Added web/src/features/user-settings/ui/sections/notifications-section.tsx View web/src/features/user-settings/ui/sections/notifications-section.tsx

Diff too large to display.

Added web/src/features/user-settings/ui/sections/privacy-section.tsx View web/src/features/user-settings/ui/sections/privacy-section.tsx

Diff too large to display.

Added web/src/features/user-settings/ui/sections/profile-section.tsx View web/src/features/user-settings/ui/sections/profile-section.tsx

Diff too large to display.

Added web/src/features/user-settings/ui/sections/security-section.tsx View web/src/features/user-settings/ui/sections/security-section.tsx

Diff too large to display.

Added web/src/features/user-settings/ui/sections/sessions-section.tsx View web/src/features/user-settings/ui/sections/sessions-section.tsx

Diff too large to display.

Added web/src/features/user-settings/ui/sections/ssh-keys-section.tsx View web/src/features/user-settings/ui/sections/ssh-keys-section.tsx

Diff too large to display.

Added web/src/features/user-settings/ui/sections/status-section.tsx View web/src/features/user-settings/ui/sections/status-section.tsx

Diff too large to display.

Added web/src/features/user-settings/ui/user-settings-modal.tsx View web/src/features/user-settings/ui/user-settings-modal.tsx

Diff too large to display.

Added web/src/features/user-settings/index.ts View web/src/features/user-settings/index.ts

Diff too large to display.

Added web/src/pages/email-verification/ui/email-verification-page.tsx View web/src/pages/email-verification/ui/email-verification-page.tsx

Diff too large to display.

Added web/src/pages/email-verification/index.ts View web/src/pages/email-verification/index.ts

Diff too large to display.

Added web/src/pages/forgot-password/ui/forgot-password-page.tsx View web/src/pages/forgot-password/ui/forgot-password-page.tsx

Diff too large to display.

Added web/src/pages/forgot-password/index.ts View web/src/pages/forgot-password/index.ts

Diff too large to display.

Added web/src/pages/login/ui/login-page.tsx View web/src/pages/login/ui/login-page.tsx

Diff too large to display.

Added web/src/pages/login/index.ts View web/src/pages/login/index.ts

Diff too large to display.

Added web/src/pages/not-found/ui/not-found-page.tsx View web/src/pages/not-found/ui/not-found-page.tsx

Diff too large to display.

Added web/src/pages/not-found/index.ts View web/src/pages/not-found/index.ts

Diff too large to display.

Added web/src/pages/reset-password/ui/reset-password-page.tsx View web/src/pages/reset-password/ui/reset-password-page.tsx

Diff too large to display.

Added web/src/pages/reset-password/index.ts View web/src/pages/reset-password/index.ts

Diff too large to display.

Added web/src/pages/sign-up/ui/sign-up-page.tsx View web/src/pages/sign-up/ui/sign-up-page.tsx

Diff too large to display.

Added web/src/pages/sign-up/index.ts View web/src/pages/sign-up/index.ts

Diff too large to display.

Added web/src/pages/two-factor/ui/two-factor-page.tsx View web/src/pages/two-factor/ui/two-factor-page.tsx

Diff too large to display.

Added web/src/pages/two-factor/index.ts View web/src/pages/two-factor/index.ts

Diff too large to display.

Added web/src/pages/workspace/model/board-location.ts View web/src/pages/workspace/model/board-location.ts

Diff too large to display.

Added web/src/pages/workspace/model/chat-location.ts View web/src/pages/workspace/model/chat-location.ts

Diff too large to display.

Added web/src/pages/workspace/model/initial.ts View web/src/pages/workspace/model/initial.ts

Diff too large to display.

Added web/src/pages/workspace/model/nav-order.ts View web/src/pages/workspace/model/nav-order.ts

Diff too large to display.

Added web/src/pages/workspace/model/prefetch.ts View web/src/pages/workspace/model/prefetch.ts

Diff too large to display.

Added web/src/pages/workspace/model/repo-location.ts View web/src/pages/workspace/model/repo-location.ts

Diff too large to display.

Added web/src/pages/workspace/model/route.ts View web/src/pages/workspace/model/route.ts

Diff too large to display.

Added web/src/pages/workspace/model/shell-api.ts View web/src/pages/workspace/model/shell-api.ts

Diff too large to display.

Added web/src/pages/workspace/model/workspace-data.ts View web/src/pages/workspace/model/workspace-data.ts

Diff too large to display.

Added web/src/pages/workspace/model/workspace-route.ts View web/src/pages/workspace/model/workspace-route.ts

Diff too large to display.

Added web/src/pages/workspace/model/workspace.ts View web/src/pages/workspace/model/workspace.ts

Diff too large to display.

Added web/src/pages/workspace/ui/board/board-view.tsx View web/src/pages/workspace/ui/board/board-view.tsx

Diff too large to display.

Added web/src/pages/workspace/ui/chat/chat-view.tsx View web/src/pages/workspace/ui/chat/chat-view.tsx

Diff too large to display.

Added web/src/pages/workspace/ui/layout/board-layout.tsx View web/src/pages/workspace/ui/layout/board-layout.tsx

Diff too large to display.

Added web/src/pages/workspace/ui/layout/chat-layout.tsx View web/src/pages/workspace/ui/layout/chat-layout.tsx

Diff too large to display.

Added web/src/pages/workspace/ui/layout/repo-layout.tsx View web/src/pages/workspace/ui/layout/repo-layout.tsx

Diff too large to display.

Added web/src/pages/workspace/ui/repo/ref-picker.tsx View web/src/pages/workspace/ui/repo/ref-picker.tsx

Diff too large to display.

Added web/src/pages/workspace/ui/repo/repo-aside.tsx View web/src/pages/workspace/ui/repo/repo-aside.tsx

Diff too large to display.

Added web/src/pages/workspace/ui/repo/repo-polish.css View web/src/pages/workspace/ui/repo/repo-polish.css

Diff too large to display.

Added web/src/pages/workspace/ui/repo/repo-view.tsx View web/src/pages/workspace/ui/repo/repo-view.tsx

Diff too large to display.

Added web/src/pages/workspace/ui/pending-panel.tsx View web/src/pages/workspace/ui/pending-panel.tsx

Diff too large to display.

Added web/src/pages/workspace/ui/sidebar-nav.tsx View web/src/pages/workspace/ui/sidebar-nav.tsx

Diff too large to display.

Added web/src/pages/workspace/ui/space-rail.tsx View web/src/pages/workspace/ui/space-rail.tsx

Diff too large to display.

Added web/src/pages/workspace/ui/user-panel.tsx View web/src/pages/workspace/ui/user-panel.tsx

Diff too large to display.

Added web/src/pages/workspace/ui/workspace-shell.tsx View web/src/pages/workspace/ui/workspace-shell.tsx

Diff too large to display.

Added web/src/pages/workspace/index.ts View web/src/pages/workspace/index.ts

Diff too large to display.

Added web/src/shared/api/apiDefinitions.ts View web/src/shared/api/apiDefinitions.ts

Diff too large to display.

Added web/src/shared/api/createApis.ts View web/src/shared/api/createApis.ts

Diff too large to display.

Added web/src/shared/api/globals.d.ts View web/src/shared/api/globals.d.ts

Diff too large to display.

Added web/src/shared/api/health.ts View web/src/shared/api/health.ts

Diff too large to display.

Added web/src/shared/api/index.ts View web/src/shared/api/index.ts

Diff too large to display.

Added web/src/shared/lib/pow-solver/pow_solver.d.ts View web/src/shared/lib/pow-solver/pow_solver.d.ts

Diff too large to display.

Added web/src/shared/lib/pow-solver/pow_solver.js View web/src/shared/lib/pow-solver/pow_solver.js

Diff too large to display.

Added web/src/shared/lib/pow-solver/pow_solver_bg.wasm View web/src/shared/lib/pow-solver/pow_solver_bg.wasm

Diff too large to display.

Added web/src/shared/lib/pow-solver/pow_solver_bg.wasm.d.ts View web/src/shared/lib/pow-solver/pow_solver_bg.wasm.d.ts

Diff too large to display.

Added web/src/shared/lib/api-envelope.ts View web/src/shared/lib/api-envelope.ts

Diff too large to display.

Added web/src/shared/lib/cache-keys.ts View web/src/shared/lib/cache-keys.ts

Diff too large to display.

Added web/src/shared/lib/config.ts View web/src/shared/lib/config.ts

Diff too large to display.

Added web/src/shared/lib/format.ts View web/src/shared/lib/format.ts

Diff too large to display.

Added web/src/shared/lib/index.ts View web/src/shared/lib/index.ts

Diff too large to display.

Added web/src/shared/lib/palettes.ts View web/src/shared/lib/palettes.ts

Diff too large to display.

Added web/src/shared/lib/pow.ts View web/src/shared/lib/pow.ts

Diff too large to display.

Added web/src/shared/lib/prefetch.ts View web/src/shared/lib/prefetch.ts

Diff too large to display.

Added web/src/shared/lib/theme.ts View web/src/shared/lib/theme.ts

Diff too large to display.

Added web/src/shared/lib/use-async.ts View web/src/shared/lib/use-async.ts

Diff too large to display.

Added web/src/shared/storage/cache.ts View web/src/shared/storage/cache.ts

Diff too large to display.

Added web/src/shared/storage/driver.ts View web/src/shared/storage/driver.ts

Diff too large to display.

Added web/src/shared/storage/idb-driver.ts View web/src/shared/storage/idb-driver.ts

Diff too large to display.

Added web/src/shared/storage/index.ts View web/src/shared/storage/index.ts

Diff too large to display.

Added web/src/shared/storage/ls-driver.ts View web/src/shared/storage/ls-driver.ts

Diff too large to display.

Added web/src/shared/ui/alert.tsx View web/src/shared/ui/alert.tsx

Diff too large to display.

Added web/src/shared/ui/app-shell.tsx View web/src/shared/ui/app-shell.tsx

Diff too large to display.

Added web/src/shared/ui/button.tsx View web/src/shared/ui/button.tsx

Diff too large to display.

Added web/src/shared/ui/checkbox.tsx View web/src/shared/ui/checkbox.tsx

Diff too large to display.

Added web/src/shared/ui/form-modal.tsx View web/src/shared/ui/form-modal.tsx

Diff too large to display.

Added web/src/shared/ui/form-values.ts View web/src/shared/ui/form-values.ts

Diff too large to display.

Added web/src/shared/ui/index.ts View web/src/shared/ui/index.ts

Diff too large to display.

Added web/src/shared/ui/labeled-divider.tsx View web/src/shared/ui/labeled-divider.tsx

Diff too large to display.

Added web/src/shared/ui/modal.tsx View web/src/shared/ui/modal.tsx

Diff too large to display.

Added web/src/shared/ui/otp-input.tsx View web/src/shared/ui/otp-input.tsx

Diff too large to display.

Added web/src/shared/ui/panels.tsx View web/src/shared/ui/panels.tsx

Diff too large to display.

Added web/src/shared/ui/reveal-toggle.tsx View web/src/shared/ui/reveal-toggle.tsx

Diff too large to display.

Added web/src/shared/ui/settings-modal.tsx View web/src/shared/ui/settings-modal.tsx

Diff too large to display.

Added web/src/shared/ui/settings-primitives.tsx View web/src/shared/ui/settings-primitives.tsx

Diff too large to display.

Added web/src/shared/ui/settings-utils.ts View web/src/shared/ui/settings-utils.ts

Diff too large to display.

Added web/src/shared/ui/text-field.tsx View web/src/shared/ui/text-field.tsx

Diff too large to display.

Added web/src/shared/ui/theme-context.ts View web/src/shared/ui/theme-context.ts

Diff too large to display.

Added web/src/shared/ui/theme-provider.tsx View web/src/shared/ui/theme-provider.tsx

Diff too large to display.

Added web/src/shared/ws/client.ts View web/src/shared/ws/client.ts

Diff too large to display.

Added web/src/shared/ws/hub.ts View web/src/shared/ws/hub.ts

Diff too large to display.

Added web/src/shared/ws/index.ts View web/src/shared/ws/index.ts

Diff too large to display.

Added web/src/shared/ws/jwt.ts View web/src/shared/ws/jwt.ts

Diff too large to display.

Added web/src/shared/ws/protocol.ts View web/src/shared/ws/protocol.ts

Diff too large to display.

Added web/src/shared/ws/react.ts View web/src/shared/ws/react.ts

Diff too large to display.

Added web/src/shared/ws/typing.ts View web/src/shared/ws/typing.ts

Diff too large to display.

Added web/.gitignore View web/.gitignore
@@ -0,0 +1,29 @@
1# Logs
2logs
3*.log
4npm-debug.log*
5yarn-debug.log*
6yarn-error.log*
7pnpm-debug.log*
8lerna-debug.log*
9
10node_modules
11dist
12dist-ssr
13*.local
14
15# Editor directories and files
16.vscode/*
17!.vscode/extensions.json
18.idea
19.DS_Store
20*.suo
21*.ntvs*
22*.njsproj
23*.sln
24*.sw?
25
26# ZCode session-local state (plans, caches)
27.zcode/
28
29target
No newline at end of file
Added web/.oxlintrc.json View web/.oxlintrc.json
@@ -0,0 +1,9 @@
1{
2 "$schema": "./node_modules/oxlint/configuration_schema.json",
3 "plugins": ["react", "typescript", "oxc"],
4 "ignorePatterns": ["src/shared/lib/pow-solver/**"],
5 "rules": {
6 "react/rules-of-hooks": "error",
7 "react/only-export-components": ["warn", { "allowConstantExport": true }]
8 }
9}
Added web/alova.config.ts View web/alova.config.ts
@@ -0,0 +1,43 @@
1import { defineConfig } from '@alova/wormhole';
2
3export default defineConfig({
4 generator: [
5 {
6 input: 'openapi.json',
7 output: 'src/shared/api',
8 type: 'typescript',
9 version: 3,
10 global: 'Apis',
11 plugins: [
12 {
13 name: 'strict-ts-fix',
14 beforeCodeGenerate(_data, outputFile, ctx) {
15 if (outputFile.endsWith('index.ts')) {
16 const code = ctx.renderTemplate();
17 const fix = (raw: string) =>
18 raw
19 .replace(/baseURL:\s*''/, "baseURL: '/api/v1'")
20 .replace(
21 /beforeRequest:\s*method\s*=>\s*\{\s*},/,
22 'beforeRequest: (method) => { void method; },',
23 )
24 .replace(
25 /responded:\s*res\s*=>\s*\{\s*return\s*res\.json\(\);\s*}/,
26 `responded: async (res) => {
27 const contentType = res.headers.get('content-type') || '';
28 if (contentType.includes('application/json')) {
29 return res.json();
30 }
31 return res.text();
32 }`,
33 );
34 const apply = (raw: string) =>
35 `${fix(raw)}\n// Re-export the generated DTO types through the segment's public API so\n// consumers never deep-import globals.d (regenerated file, see alova.config).\nexport type * from './globals.d'\n`;
36 return typeof code === 'string' ? apply(code) : code.then(apply);
37 }
38 },
39 },
40 ],
41 },
42 ],
43});
Added web/build.rs View web/build.rs
@@ -0,0 +1,140 @@
1use std::collections::BTreeMap;
2use std::env;
3use std::fs;
4use std::path::{Path, PathBuf};
5use std::process::{Command, Stdio};
6
7fn main() {
8 println!("cargo:rerun-if-changed=build.rs");
9 for watched in [
10 "src",
11 "public",
12 "index.html",
13 "vite.config.ts",
14 "alova.config.ts",
15 "package.json",
16 "bun.lock",
17 "tsconfig.json",
18 "tsconfig.app.json",
19 "tsconfig.node.json",
20 ] {
21 println!("cargo:rerun-if-changed={watched}");
22 }
23
24 let root = PathBuf::from(env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR"));
25 let out_dir = PathBuf::from(env::var("OUT_DIR").expect("OUT_DIR"));
26
27 if env::var_os("UI_SKIP_FRONTEND_BUILD").is_none() && !build_frontend(&root) {
28 println!(
29 "cargo:warning=frontend build via bun/npm unavailable or failed; \
30 embedding existing dist/ as-is"
31 );
32 }
33
34 let dist = root.join("dist");
35 let index = dist.join("index.html");
36 if !index.is_file() {
37 panic!(
38 "dist/index.html not found — run `bun install && bun run build` \
39 (or `npm run build`) first"
40 );
41 }
42
43 let mut files: BTreeMap<String, PathBuf> = BTreeMap::new();
44 collect(&dist, &dist, &mut files);
45
46 let mut src = String::from("// @generated by build.rs — embedded frontend (dist/)\n\n");
47 src.push_str(&format!(
48 "pub const INDEX: &[u8] = include_bytes!({:?});\n\n",
49 index
50 ));
51 src.push_str("pub const FILES: &[(&str, &[u8])] = &[\n");
52 for (rel, abs) in &files {
53 if rel == "index.html" {
54 continue; // INDEX 已覆盖
55 }
56 src.push_str(&format!(
57 " ({:?}, include_bytes!({:?})),\n",
58 rel, abs
59 ));
60 }
61 src.push_str("];\n\npub const PATHS: &[&str] = &[\n");
62 for rel in files.keys() {
63 src.push_str(&format!(" {:?},\n", rel));
64 }
65 src.push_str("];\n");
66
67 fs::write(out_dir.join("dist_embed.rs"), src).expect("write dist_embed.rs");
68}
69
70fn build_frontend(root: &Path) -> bool {
71 if !root.join("package.json").is_file() {
72 return false;
73 }
74 let tool = if command_ok("bun") {
75 "bun"
76 } else if command_ok("npm") {
77 npm_cmd()
78 } else {
79 return false;
80 };
81
82 let mut steps: Vec<(&str, &[&str])> = Vec::new();
83 if !root.join("node_modules").is_dir() {
84 steps.push((tool, &["install"]));
85 }
86 steps.push((tool, &["run", "build"]));
87
88 for (t, args) in steps {
89 eprintln!(
90 "cargo:warning=running `{t} {}` in {}",
91 args.join(" "),
92 root.display()
93 );
94 let ok = Command::new(t)
95 .args(args)
96 .current_dir(root)
97 .status()
98 .map(|s| s.success())
99 .unwrap_or(false);
100 if !ok {
101 return false;
102 }
103 }
104 true
105}
106
107#[cfg(windows)]
108fn npm_cmd() -> &'static str {
109 "npm.cmd"
110}
111#[cfg(not(windows))]
112fn npm_cmd() -> &'static str {
113 "npm"
114}
115
116fn command_ok(name: &str) -> bool {
117 Command::new(name)
118 .arg("--version")
119 .stdin(Stdio::null())
120 .stdout(Stdio::null())
121 .stderr(Stdio::null())
122 .status()
123 .is_ok_and(|s| s.success())
124}
125
126fn collect(base: &Path, dir: &Path, out: &mut BTreeMap<String, PathBuf>) {
127 for entry in fs::read_dir(dir).expect("read dist dir") {
128 let path = entry.expect("dist entry").path();
129 if path.is_dir() {
130 collect(base, &path, out);
131 } else {
132 let rel = path
133 .strip_prefix(base)
134 .unwrap()
135 .to_string_lossy()
136 .replace('\\', "/");
137 out.insert(rel, path);
138 }
139 }
140}
No newline at end of file
Added web/bun.lock View web/bun.lock
@@ -0,0 +1,640 @@
1{
2 "lockfileVersion": 2,
3 "configVersion": 1,
4 "workspaces": {
5 "": {
6 "name": "ui",
7 "dependencies": {
8 "@alova/wormhole": "^1.5.2",
9 "@tailwindcss/vite": "^4.3.3",
10 "alova": "^3.5.5",
11 "lucide-react": "^1.39.0",
12 "react": "^19.2.8",
13 "react-dom": "^19.2.8",
14 "react-router-dom": "^7.18.3",
15 "tailwindcss": "^4.3.3",
16 },
17 "devDependencies": {
18 "@types/node": "^24.13.3",
19 "@types/react": "^19.2.18",
20 "@types/react-dom": "^19.2.4",
21 "@vitejs/plugin-react": "^6.1.0",
22 "oxlint": "^1.79.0",
23 "steiger": "^0.6.0",
24 "typescript": "~6.0.2",
25 "vite": "^8.2.2",
26 },
27 },
28 },
29 "packages": {
30 "@alova/shared": ["@alova/shared@1.3.4", "", {}, "sha512-kdYHUqO35AEdnQHnzevyf+VhhfD0jc+EBbZv/aYkA4rwjVjf+vB6D/ZkTwiYFH1yQjwiGwF1ZbJv5a7rKGyNiw=="],
31
32 "@alova/wormhole": ["@alova/wormhole@1.5.2", "", { "dependencies": { "alova": "^3.3.4", "commander": "^14.0.0", "esbuild": "^0.25.6", "glob": "^11.0.3", "handlebars": "^4.7.8", "import-fresh": "^3.3.1", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "openapi-types": "^12.1.3", "ora": "5.4.1", "prettier": "^3.6.2", "swagger2openapi": "^7.0.8", "zod": "^3.25.68-alpha.11", "zod-validation-error": "^3.5.3" }, "bin": { "alova": "dist/bin/cli.js" } }, "sha512-87VU1d/hO4oVy5TbPKNsTByhyDFyCOrmAf+qpua3emd9BhvRLNitpIHBrgA7KgLjn9zV8tOLixE/V31RKWsV7g=="],
33
34 "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="],
35
36 "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="],
37
38 "@clack/core": ["@clack/core@0.4.1", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA=="],
39
40 "@clack/prompts": ["@clack/prompts@0.9.1", "", { "dependencies": { "@clack/core": "0.4.1", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-JIpyaboYZeWYlyP0H+OoPPxd6nqueG/CmN6ixBiNFsIDHREevjIf0n0Ohh5gr5C8pEDknzgvz+pIJ8dMhzWIeg=="],
41
42 "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="],
43
44 "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="],
45
46 "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="],
47
48 "@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="],
49
50 "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="],
51
52 "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="],
53
54 "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="],
55
56 "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="],
57
58 "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="],
59
60 "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="],
61
62 "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="],
63
64 "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="],
65
66 "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="],
67
68 "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="],
69
70 "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="],
71
72 "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="],
73
74 "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="],
75
76 "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="],
77
78 "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="],
79
80 "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="],
81
82 "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="],
83
84 "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="],
85
86 "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="],
87
88 "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="],
89
90 "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="],
91
92 "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="],
93
94 "@exodus/schemasafe": ["@exodus/schemasafe@1.3.0", "", {}, "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw=="],
95
96 "@feature-sliced/filesystem": ["@feature-sliced/filesystem@3.1.1", "", { "dependencies": { "typescript": "^5.8.3" } }, "sha512-P3WpHkOqdH4572ZhTfeg/Sbw0qkIuMw0QcLyTUygfwTZg1yd7hIv8QDYbhTddNTiFDgBRJTrYw/s6r2hnlo6Tw=="],
97
98 "@feature-sliced/steiger-plugin": ["@feature-sliced/steiger-plugin@0.7.0", "", { "dependencies": { "@feature-sliced/filesystem": "^3.1.0", "fastest-levenshtein": "^1.0.16", "lodash-es": "^4.17.21", "pluralize": "^8.0.0", "tsconfck": "^3.1.6", "web-tree-sitter": "^0.26.8" } }, "sha512-jd90OaXYW/6sQbJ9LjRhN4HFLrrqpp436V+6vpJQGpp/CVd+hynaLDtDfsZSxMgfgj8uvcow3zwwKRCnBlLWYQ=="],
99
100 "@isaacs/cliui": ["@isaacs/cliui@9.0.0", "", {}, "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg=="],
101
102 "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="],
103
104 "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="],
105
106 "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
107
108 "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.6.0", "", {}, "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw=="],
109
110 "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
111
112 "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
113
114 "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
115
116 "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="],
117
118 "@oxc-project/types": ["@oxc-project/types@0.147.0", "", {}, "sha512-IJ3s6ltHLp45S0bh7phkX+gJO7A1Wuz2EaqpAhb8WjqDwbzMiWKHhyyT42tskaWjEYXtHtVCPpnBJVT9+dcRLg=="],
119
120 "@oxlint/binding-android-arm-eabi": ["@oxlint/binding-android-arm-eabi@1.80.0", "", { "os": "android", "cpu": "arm" }, "sha512-RM3Plj+biQpxa5d1GOOX6ciDlcUROmm4OZ/pLTpitkQt2mJv4jhtY4cbgaetOm5UKWZe05/TGQ6o1Vl8EOHkrA=="],
121
122 "@oxlint/binding-android-arm64": ["@oxlint/binding-android-arm64@1.80.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YlO5JEf0Yr2bUUlu8O8daVcUxtcGGbcSmyV7E7nSbJbfAdxTE0PFPwgnIlw7wXJaTYjb+qs5hI5q3jxUkI7cAw=="],
123
124 "@oxlint/binding-darwin-arm64": ["@oxlint/binding-darwin-arm64@1.80.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-BULDOyO3AhsmdWfQeIUCykDt3dd7XZBGLhp1eIh56skRv01O+cNjNPwXMIbeW1x4+pxcln5if72wcRgViVo7PA=="],
125
126 "@oxlint/binding-darwin-x64": ["@oxlint/binding-darwin-x64@1.80.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-YJ4JzLw7N5TDSQFlA0hAQGHvnDZgyypm1yunObVWcWiF9KM7eGCJKYKLgTC2Fi/57OdnBhbj4OkzPGdFQJ6HyA=="],
127
128 "@oxlint/binding-freebsd-x64": ["@oxlint/binding-freebsd-x64@1.80.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-AYUIk5QnL0s8oWAYsREZwkRYy1SupJTXALo93J1TgzHywxQtdM99FecRMQ87MXEdPQ0j1TmEpeeq3fGNkpvMqg=="],
129
130 "@oxlint/binding-linux-arm-gnueabihf": ["@oxlint/binding-linux-arm-gnueabihf@1.80.0", "", { "os": "linux", "cpu": "arm" }, "sha512-9hBZVANupQ89W9dXyE0n8doCyaW5pDyGn3y6XlIMPZ+rIKuyqkr3SNUXmVJIhuvUq0NBU3RBiSXXE69l4XI6KA=="],
131
132 "@oxlint/binding-linux-arm-musleabihf": ["@oxlint/binding-linux-arm-musleabihf@1.80.0", "", { "os": "linux", "cpu": "arm" }, "sha512-SvS2uKqzY+pbfuvAHzH4338R6Zwo805GAwrIMVvK1KxoOWCIjZUdfzTCvilD7z6JK91v011+zYMryabhDo2AsQ=="],
133
134 "@oxlint/binding-linux-arm64-gnu": ["@oxlint/binding-linux-arm64-gnu@1.80.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-tCLadyqRVL3pQTRPNg7cjXKvcvS4fbyXeQHhKk5BTJ1oftQln5/yIIWbu/Xom/DX41zv2P9QGt6+D/TtQVtY3A=="],
135
136 "@oxlint/binding-linux-arm64-musl": ["@oxlint/binding-linux-arm64-musl@1.80.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-XfpCNRlOPcLlJl4Bn/FUhjqlR6BVavEykERBf/MV7YA9VZDa5g5znVqYhyviMafcxS9Pe/i/kPvHNO0U6svEHQ=="],
137
138 "@oxlint/binding-linux-ppc64-gnu": ["@oxlint/binding-linux-ppc64-gnu@1.80.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-3I4yMwcFG9NeO8ioY6JBBuKsIm5GL/x7MATt1S4tVWaxPu5HcJ+XnLUbcVBTxG8q2Wu56HSj+NmXQiVYb1lp6A=="],
139
140 "@oxlint/binding-linux-riscv64-gnu": ["@oxlint/binding-linux-riscv64-gnu@1.80.0", "", { "os": "linux", "cpu": "none" }, "sha512-E1wAKymkpe1/E8helzBKdm81OBOF+ezxRyXRMEuik3ZpWDER5CPOKZwF66RsdwW98uwZv8UTFremUQtC1CzdJA=="],
141
142 "@oxlint/binding-linux-riscv64-musl": ["@oxlint/binding-linux-riscv64-musl@1.80.0", "", { "os": "linux", "cpu": "none" }, "sha512-+gLRGD4sIo3+VA++iham5UxD9tKSoJ/VOrROCEXIcknrYtQg6iIQgvjN0cpiRF7N6UYC7pJbvHJlDnMge5LRpQ=="],
143
144 "@oxlint/binding-linux-s390x-gnu": ["@oxlint/binding-linux-s390x-gnu@1.80.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-aR0PrzHj9leW3NmzBAAP4EzdoBNoJcs9sjnIQPIwyRnBGYrRbXUIpEB5Q39AqK3PLY5JK5uEhDQDiUa1QSAstw=="],
145
146 "@oxlint/binding-linux-x64-gnu": ["@oxlint/binding-linux-x64-gnu@1.80.0", "", { "os": "linux", "cpu": "x64" }, "sha512-vSVh5cSo3Xxs6ghBCcFJlpbkbENzDog1qXtoXLa/HC3aCrR4XO76GZbXmQoCPHnu99nQpdCeC3H9tdNICfDh7A=="],
147
148 "@oxlint/binding-linux-x64-musl": ["@oxlint/binding-linux-x64-musl@1.80.0", "", { "os": "linux", "cpu": "x64" }, "sha512-FfzBXpNQ8u7/ZI/p8bl73MeZ508Ax3hxWp3SiJpEFiC+BB9XcXy5FAZHTLKDPSzrUpxQZSZJAVdDmuJp/+HDBQ=="],
149
150 "@oxlint/binding-openharmony-arm64": ["@oxlint/binding-openharmony-arm64@1.80.0", "", { "os": "none", "cpu": "arm64" }, "sha512-zMzbkumtmprCgRwoYNzcB3iC39fXdJIMLMU33KdCjEGLlJGOEt1+LwQ4LF8ndLzAEKVz4BR0y3V6Xrkk3Nm3yA=="],
151
152 "@oxlint/binding-win32-arm64-msvc": ["@oxlint/binding-win32-arm64-msvc@1.80.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ib6iRcrXsk4t1fm3iKcwksyWh1ZkZXC/2mEzakl0ai2+6HZunf1WWMZ/xP9EJAvw9g9K4UVTC3NF/+G2qLrbTQ=="],
153
154 "@oxlint/binding-win32-ia32-msvc": ["@oxlint/binding-win32-ia32-msvc@1.80.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-xhRWBMpLxZvgKAH6+DJZmpP+W8Y8UdQOSU1JfxSWNXsaBaRGW77j+1hCuNHlzj7OH4SPN8fYd1q0o2qrDtoVyw=="],
155
156 "@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.80.0", "", { "os": "win32", "cpu": "x64" }, "sha512-yAnO7lwBYQnz2pcfBPIGQQZWIX5zd5R/1aAKIF3oE+TVj7IhoHcROjOkz3sRDngzqhfPKfFaXqug5j5rE5dn6Q=="],
157
158 "@rolldown/binding-android-arm-eabi": ["@rolldown/binding-android-arm-eabi@1.2.6", "", { "os": "android", "cpu": "arm" }, "sha512-b+jTcARdTiFLI6jB4a5XjTm0RWd6KcRfQj/I2356fxUZemiho9zQLxo0RtCuMDAyKcLo6cEltkgbQp6d1+sjjQ=="],
159
160 "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.2.6", "", { "os": "android", "cpu": "arm64" }, "sha512-lkWU8ZJaRk9q3CIEY1Tc7vIFALp3Xw5NfGJo2hQg5oIqNgxWi1zI+IiDEK3r70BF5Dzol1tcXsnzsRc8NLhG+Q=="],
161
162 "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.2.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-dgR56NYnvAszm7Ob1B2/Vn0e8bUQYZH2UjVaMMtMVOCKFSfjhfLmuA/9+O+F+ajUdG6B/bSssrKW6JJYASa8jA=="],
163
164 "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.2.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-vpVxFvUCFioJqug7OTvqptkc4yb8UX0AwfDmJpaR/0sWz+BUmqSVAf7c8JkUgnN8YLspb4a/N6NhTyMAmdyQ7Q=="],
165
166 "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.2.6", "", { "os": "freebsd", "cpu": "x64" }, "sha512-h1wG6Y6K3JlRswxsI64qQJqBAy4vrLuHgRbc8CZMGSWTOFRY6ghMApM1NKzB2I0n5xV1fjkE18SuVl2QpLeNpA=="],
167
168 "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.2.6", "", { "os": "linux", "cpu": "arm" }, "sha512-tbCiqub0q2MVWJKgF5PoAlNWCtQydiOYSLIkd8sByqK/6MMYLJRcSXSYodqYtd0O+Fw7QaVmKKlS4oL94YRZ0w=="],
169
170 "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.2.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-oxK9+baEBPhZG5HB4URY+uU04zJWeZlH6Tb9rB5DK4DF9XR1uXNLXt5Q5ZsugTKayNCNLhkcwz/ye74hRI98dg=="],
171
172 "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.2.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-muWCk27FVBEZtv0MsK8gnfSmgczA8KQ0uRVJbTABKhkRfQc38aUrcb7fhi3BNiyseFmgcRsoMfQsSNJ+DbZdSw=="],
173
174 "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.2.6", "", { "os": "linux", "cpu": "ppc64" }, "sha512-eWDoSfU7Co2qj3vgB3Dt4lj1mG6CoWbcJQkRMP3XJplyCMtuaq3LHvPFjS9QIPvMGWVadJC04Xiy0IdcVPtnwQ=="],
175
176 "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.2.6", "", { "os": "linux", "cpu": "s390x" }, "sha512-2bWNjRSIayvupRKxXUY2tWG9fYdoUlTqWywHRvE8Eq3GvuQ+f2HeIkve697fIt+IQs/PV8yFsdWuhp1aJ1PdnA=="],
177
178 "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.2.6", "", { "os": "linux", "cpu": "x64" }, "sha512-KekI0gS0wLxe1UBSQSjenBVwou/JkcQPDzBPICGZjxUv9k3RteHDPBQaiOicZUFKRIH2wKEimGwVpnJsbPzu7w=="],
179
180 "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.2.6", "", { "os": "linux", "cpu": "x64" }, "sha512-TvtPnfVr+HtyGiDmPK4VWmlNm7QhNNAcK5Q9A7aOXsI8545yCyaoMaicXrFZ72JzeYjaUVk7yT243zT0jzjFKQ=="],
181
182 "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.2.6", "", { "os": "none", "cpu": "arm64" }, "sha512-iOo0VEay2XFhaCcH0sps5XIimkSuOnNaZrf6+ZkoSOQBJPKNU48RkmJv0/lSpipexu5P+ouFgafe5IGr/DiQfg=="],
183
184 "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.2.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-y5NTmmasMS455JlOCO4ZM9krIchv3Mvm1crL1iUPGOPgEzSkves9n0SdC5Sjz6+qWDFhd8/JpfWMH8NSWNHe+A=="],
185
186 "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.2.6", "", { "os": "win32", "cpu": "x64" }, "sha512-np8iZSLfXlAD4kWhiyq/u0Yt8oZDtRQ8lGhQaCXo2rl37KNjeU0GjJuwr4P3oeZ++ROfofsKNBqR5LTO8aXyWQ=="],
187
188 "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="],
189
190 "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@2.3.0", "", {}, "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg=="],
191
192 "@tailwindcss/node": ["@tailwindcss/node@4.3.3", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.24.1", "jiti": "^2.7.0", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.3.3" } }, "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg=="],
193
194 "@tailwindcss/oxide": ["@tailwindcss/oxide@4.3.3", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.3.3", "@tailwindcss/oxide-darwin-arm64": "4.3.3", "@tailwindcss/oxide-darwin-x64": "4.3.3", "@tailwindcss/oxide-freebsd-x64": "4.3.3", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3", "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", "@tailwindcss/oxide-linux-arm64-musl": "4.3.3", "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", "@tailwindcss/oxide-linux-x64-musl": "4.3.3", "@tailwindcss/oxide-wasm32-wasi": "4.3.3", "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3", "@tailwindcss/oxide-win32-x64-msvc": "4.3.3" } }, "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA=="],
195
196 "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.3.3", "", { "os": "android", "cpu": "arm64" }, "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw=="],
197
198 "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.3.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw=="],
199
200 "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.3.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw=="],
201
202 "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.3.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw=="],
203
204 "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3", "", { "os": "linux", "cpu": "arm" }, "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ=="],
205
206 "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w=="],
207
208 "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA=="],
209
210 "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w=="],
211
212 "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img=="],
213
214 "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.3.3", "", { "dependencies": { "@emnapi/core": "^1.11.1", "@emnapi/runtime": "^1.11.1", "@emnapi/wasi-threads": "^1.2.2", "@napi-rs/wasm-runtime": "^1.1.4", "@tybys/wasm-util": "^0.10.2", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ=="],
215
216 "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.3.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ=="],
217
218 "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.3.3", "", { "os": "win32", "cpu": "x64" }, "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw=="],
219
220 "@tailwindcss/vite": ["@tailwindcss/vite@4.3.3", "", { "dependencies": { "@tailwindcss/node": "4.3.3", "@tailwindcss/oxide": "4.3.3", "tailwindcss": "4.3.3" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, "sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw=="],
221
222 "@types/node": ["@types/node@24.13.3", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q=="],
223
224 "@types/react": ["@types/react@19.2.18", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w=="],
225
226 "@types/react-dom": ["@types/react-dom@19.2.5", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg=="],
227
228 "@vitejs/plugin-react": ["@vitejs/plugin-react@6.1.1", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "oxc-transform-react": "^0.145.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler", "oxc-transform-react"] }, "sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw=="],
229
230 "alova": ["alova@3.5.5", "", { "dependencies": { "@alova/shared": "1.3.4", "rate-limiter-flexible": "^5.0.3" } }, "sha512-V/w9xLNBpmBxx7Zeb+OAJapt9yD1L/hBoqi86xlRtug94F2xUkA1GFsJMeDeV/oL/iQCvW8fQyplGOiLXDkACg=="],
231
232 "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
233
234 "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
235
236 "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
237
238 "balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
239
240 "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
241
242 "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="],
243
244 "brace-expansion": ["brace-expansion@5.0.9", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg=="],
245
246 "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
247
248 "buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="],
249
250 "call-me-maybe": ["call-me-maybe@1.0.2", "", {}, "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ=="],
251
252 "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="],
253
254 "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
255
256 "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="],
257
258 "cli-cursor": ["cli-cursor@3.1.0", "", { "dependencies": { "restore-cursor": "^3.1.0" } }, "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw=="],
259
260 "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="],
261
262 "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
263
264 "clone": ["clone@1.0.4", "", {}, "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="],
265
266 "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
267
268 "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
269
270 "commander": ["commander@14.0.3", "", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="],
271
272 "cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="],
273
274 "cosmiconfig": ["cosmiconfig@9.0.2", "", { "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg=="],
275
276 "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
277
278 "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="],
279
280 "defaults": ["defaults@1.0.4", "", { "dependencies": { "clone": "^1.0.2" } }, "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A=="],
281
282 "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
283
284 "effector": ["effector@23.4.4", "", {}, "sha512-QkZboRN28K/iwxigDhlJcI3ux3aNbt8kYGGH/GkqWG0OlGeyuBhb7PdM89Iu+ogV8Lmz16xIlwnXR2UNWI6psg=="],
285
286 "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
287
288 "empathic": ["empathic@1.1.0", "", {}, "sha512-rsPft6CK3eHtrlp9Y5ALBb+hfK+DWnA4WFebbazxjWyx8vSm3rZeoM3z9irsjcqO3PYRzlfv27XIB4tz2DV7RA=="],
289
290 "enhanced-resolve": ["enhanced-resolve@5.24.5", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A=="],
291
292 "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="],
293
294 "error-ex": ["error-ex@1.3.4", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ=="],
295
296 "es6-promise": ["es6-promise@3.3.1", "", {}, "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg=="],
297
298 "esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="],
299
300 "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="],
301
302 "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="],
303
304 "fast-safe-stringify": ["fast-safe-stringify@2.1.1", "", {}, "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="],
305
306 "fastest-levenshtein": ["fastest-levenshtein@1.0.16", "", {}, "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg=="],
307
308 "fastq": ["fastq@1.20.3", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw=="],
309
310 "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
311
312 "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
313
314 "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="],
315
316 "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
317
318 "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="],
319
320 "glob": ["glob@11.1.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw=="],
321
322 "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
323
324 "globby": ["globby@14.1.0", "", { "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", "fast-glob": "^3.3.3", "ignore": "^7.0.3", "path-type": "^6.0.0", "slash": "^5.1.0", "unicorn-magic": "^0.3.0" } }, "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA=="],
325
326 "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
327
328 "handlebars": ["handlebars@4.7.9", "", { "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" }, "optionalDependencies": { "uglify-js": "^3.1.4" }, "bin": { "handlebars": "bin/handlebars" } }, "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ=="],
329
330 "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
331
332 "http2-client": ["http2-client@1.3.5", "", {}, "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA=="],
333
334 "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
335
336 "ignore": ["ignore@7.0.8", "", {}, "sha512-YYNsSlXBjMk92SKnkwvB5LOVSa6OznlFUGcsvrFgNJbJCd0M1XKeFVRc8ZByeCqz32FivYNHJVooLmdqrmvp/Q=="],
337
338 "immer": ["immer@10.2.0", "", {}, "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw=="],
339
340 "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="],
341
342 "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
343
344 "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="],
345
346 "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
347
348 "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
349
350 "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
351
352 "is-interactive": ["is-interactive@1.0.0", "", {}, "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="],
353
354 "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
355
356 "is-unicode-supported": ["is-unicode-supported@0.1.0", "", {}, "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="],
357
358 "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
359
360 "jackspeak": ["jackspeak@4.2.3", "", { "dependencies": { "@isaacs/cliui": "^9.0.0" } }, "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg=="],
361
362 "jiti": ["jiti@2.7.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="],
363
364 "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
365
366 "js-yaml": ["js-yaml@4.3.2", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA=="],
367
368 "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="],
369
370 "lightningcss": ["lightningcss@1.33.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.33.0", "lightningcss-darwin-arm64": "1.33.0", "lightningcss-darwin-x64": "1.33.0", "lightningcss-freebsd-x64": "1.33.0", "lightningcss-linux-arm-gnueabihf": "1.33.0", "lightningcss-linux-arm64-gnu": "1.33.0", "lightningcss-linux-arm64-musl": "1.33.0", "lightningcss-linux-x64-gnu": "1.33.0", "lightningcss-linux-x64-musl": "1.33.0", "lightningcss-win32-arm64-msvc": "1.33.0", "lightningcss-win32-x64-msvc": "1.33.0" } }, "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA=="],
371
372 "lightningcss-android-arm64": ["lightningcss-android-arm64@1.33.0", "", { "os": "android", "cpu": "arm64" }, "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg=="],
373
374 "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.33.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg=="],
375
376 "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.33.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ=="],
377
378 "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.33.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg=="],
379
380 "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.33.0", "", { "os": "linux", "cpu": "arm" }, "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ=="],
381
382 "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg=="],
383
384 "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ=="],
385
386 "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg=="],
387
388 "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw=="],
389
390 "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.33.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA=="],
391
392 "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.33.0", "", { "os": "win32", "cpu": "x64" }, "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA=="],
393
394 "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="],
395
396 "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="],
397
398 "lodash-es": ["lodash-es@4.18.1", "", {}, "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A=="],
399
400 "log-symbols": ["log-symbols@4.1.0", "", { "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" } }, "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="],
401
402 "lru-cache": ["lru-cache@11.5.2", "", {}, "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g=="],
403
404 "lucide-react": ["lucide-react@1.39.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-y8nXoEwvqqIsF927NBWXODa4bfMrcUeEb/9sgpwFqg0gUjgn3j5Hznk+v7STmPgZ2iQ11JKlbQGdFRuTOwvYkA=="],
405
406 "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
407
408 "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="],
409
410 "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
411
412 "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="],
413
414 "minimatch": ["minimatch@10.2.6", "", { "dependencies": { "brace-expansion": "^5.0.8" } }, "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A=="],
415
416 "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="],
417
418 "minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="],
419
420 "nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="],
421
422 "neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="],
423
424 "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="],
425
426 "node-fetch-h2": ["node-fetch-h2@2.3.0", "", { "dependencies": { "http2-client": "^1.2.5" } }, "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg=="],
427
428 "node-readfiles": ["node-readfiles@0.2.0", "", { "dependencies": { "es6-promise": "^3.2.1" } }, "sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA=="],
429
430 "oas-kit-common": ["oas-kit-common@1.0.8", "", { "dependencies": { "fast-safe-stringify": "^2.0.7" } }, "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ=="],
431
432 "oas-linter": ["oas-linter@3.2.2", "", { "dependencies": { "@exodus/schemasafe": "^1.0.0-rc.2", "should": "^13.2.1", "yaml": "^1.10.0" } }, "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ=="],
433
434 "oas-resolver": ["oas-resolver@2.5.6", "", { "dependencies": { "node-fetch-h2": "^2.3.0", "oas-kit-common": "^1.0.8", "reftools": "^1.1.9", "yaml": "^1.10.0", "yargs": "^17.0.1" }, "bin": { "resolve": "resolve.js" } }, "sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ=="],
435
436 "oas-schema-walker": ["oas-schema-walker@1.1.5", "", {}, "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ=="],
437
438 "oas-validator": ["oas-validator@5.0.8", "", { "dependencies": { "call-me-maybe": "^1.0.1", "oas-kit-common": "^1.0.8", "oas-linter": "^3.2.2", "oas-resolver": "^2.5.6", "oas-schema-walker": "^1.1.5", "reftools": "^1.1.9", "should": "^13.2.1", "yaml": "^1.10.0" } }, "sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw=="],
439
440 "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="],
441
442 "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="],
443
444 "ora": ["ora@5.4.1", "", { "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", "is-unicode-supported": "^0.1.0", "log-symbols": "^4.1.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" } }, "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ=="],
445
446 "oxlint": ["oxlint@1.80.0", "", { "optionalDependencies": { "@oxlint/binding-android-arm-eabi": "1.80.0", "@oxlint/binding-android-arm64": "1.80.0", "@oxlint/binding-darwin-arm64": "1.80.0", "@oxlint/binding-darwin-x64": "1.80.0", "@oxlint/binding-freebsd-x64": "1.80.0", "@oxlint/binding-linux-arm-gnueabihf": "1.80.0", "@oxlint/binding-linux-arm-musleabihf": "1.80.0", "@oxlint/binding-linux-arm64-gnu": "1.80.0", "@oxlint/binding-linux-arm64-musl": "1.80.0", "@oxlint/binding-linux-ppc64-gnu": "1.80.0", "@oxlint/binding-linux-riscv64-gnu": "1.80.0", "@oxlint/binding-linux-riscv64-musl": "1.80.0", "@oxlint/binding-linux-s390x-gnu": "1.80.0", "@oxlint/binding-linux-x64-gnu": "1.80.0", "@oxlint/binding-linux-x64-musl": "1.80.0", "@oxlint/binding-openharmony-arm64": "1.80.0", "@oxlint/binding-win32-arm64-msvc": "1.80.0", "@oxlint/binding-win32-ia32-msvc": "1.80.0", "@oxlint/binding-win32-x64-msvc": "1.80.0" }, "peerDependencies": { "oxlint-tsgolint": ">=7.0.2001", "vite-plus": "*" }, "optionalPeers": ["oxlint-tsgolint", "vite-plus"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-5nTiSps4qdbCWLbxzuO00alHkEO2exR9YMN/ig6QXWrLsYSG0KaObOAM+l6oU2LcKPWoSAGYbkZIGEu1ViiWKA=="],
447
448 "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="],
449
450 "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
451
452 "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="],
453
454 "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
455
456 "path-scurry": ["path-scurry@2.0.2", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg=="],
457
458 "path-type": ["path-type@6.0.0", "", {}, "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ=="],
459
460 "patronum": ["patronum@2.3.0", "", { "peerDependencies": { "effector": "^23" } }, "sha512-BfKIOpoymVz6XnkOn8Fi5QZ1a3r/3lXdd8BcdHmYDbIXPTIRnD1EPFBFev/DheWnOge6/ZswEqgNF2ANLGOxLw=="],
461
462 "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
463
464 "picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="],
465
466 "pluralize": ["pluralize@8.0.0", "", {}, "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="],
467
468 "postcss": ["postcss@8.5.26", "", { "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ=="],
469
470 "prettier": ["prettier@3.9.6", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g=="],
471
472 "prexit": ["prexit@2.3.0", "", {}, "sha512-mX+LIbtS0anKtl2PykYabxninwloblUQMRO6CubeSmjxb+kKlATuJoH9UeN8NLE4TgIEFWfBXw7V3GkWbBrSmg=="],
473
474 "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],
475
476 "rate-limiter-flexible": ["rate-limiter-flexible@5.0.5", "", {}, "sha512-+/dSQfo+3FYwYygUs/V2BBdwGa9nFtakDwKt4l0bnvNB53TNT++QSFewwHX9qXrZJuMe9j+TUaU21lm5ARgqdQ=="],
477
478 "react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="],
479
480 "react-dom": ["react-dom@19.2.8", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.8" } }, "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ=="],
481
482 "react-router": ["react-router@7.18.3", "", { "dependencies": { "cookie": "^1.0.1", "set-cookie-parser": "^2.6.0" }, "peerDependencies": { "react": ">=18", "react-dom": ">=18" }, "optionalPeers": ["react-dom"] }, "sha512-gyXgtdr5uACJ5b1Q4udzjVV+tb/rlHIMJKuJ0e89R4Kzgz47z/rgP0dIKxktqIEUhDHluGTPJJH/wRha7CyqsA=="],
483
484 "react-router-dom": ["react-router-dom@7.18.3", "", { "dependencies": { "react-router": "7.18.3" }, "peerDependencies": { "react": ">=18", "react-dom": ">=18" } }, "sha512-ytVbyBBM7vMfRCam25r0WMhSVSom909A8p+8m0/f1w853dz/xfFu6etAT2SEbVoSnI+ZoPRDqIsQXVT89gp7kg=="],
485
486 "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],
487
488 "readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="],
489
490 "reftools": ["reftools@1.1.9", "", {}, "sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w=="],
491
492 "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="],
493
494 "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
495
496 "restore-cursor": ["restore-cursor@3.1.0", "", { "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA=="],
497
498 "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="],
499
500 "rolldown": ["rolldown@1.2.6", "", { "dependencies": { "@oxc-project/types": "=0.147.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm-eabi": "1.2.6", "@rolldown/binding-android-arm64": "1.2.6", "@rolldown/binding-darwin-arm64": "1.2.6", "@rolldown/binding-darwin-x64": "1.2.6", "@rolldown/binding-freebsd-x64": "1.2.6", "@rolldown/binding-linux-arm-gnueabihf": "1.2.6", "@rolldown/binding-linux-arm64-gnu": "1.2.6", "@rolldown/binding-linux-arm64-musl": "1.2.6", "@rolldown/binding-linux-ppc64-gnu": "1.2.6", "@rolldown/binding-linux-s390x-gnu": "1.2.6", "@rolldown/binding-linux-x64-gnu": "1.2.6", "@rolldown/binding-linux-x64-musl": "1.2.6", "@rolldown/binding-openharmony-arm64": "1.2.6", "@rolldown/binding-win32-arm64-msvc": "1.2.6", "@rolldown/binding-win32-x64-msvc": "1.2.6" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-vMM4q3aixf46GiF1Kok8jDPFsEpXgFWGjUHXNkNHNm+Y2adXAG2dbX91jkti3i0ZRsOlcmbuzAz1poObSHCmUA=="],
501
502 "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
503
504 "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
505
506 "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="],
507
508 "set-cookie-parser": ["set-cookie-parser@2.7.2", "", {}, "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw=="],
509
510 "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
511
512 "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
513
514 "should": ["should@13.2.3", "", { "dependencies": { "should-equal": "^2.0.0", "should-format": "^3.0.3", "should-type": "^1.4.0", "should-type-adaptors": "^1.0.1", "should-util": "^1.0.0" } }, "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ=="],
515
516 "should-equal": ["should-equal@2.0.0", "", { "dependencies": { "should-type": "^1.4.0" } }, "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA=="],
517
518 "should-format": ["should-format@3.0.3", "", { "dependencies": { "should-type": "^1.3.0", "should-type-adaptors": "^1.0.1" } }, "sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q=="],
519
520 "should-type": ["should-type@1.4.0", "", {}, "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ=="],
521
522 "should-type-adaptors": ["should-type-adaptors@1.1.0", "", { "dependencies": { "should-type": "^1.3.0", "should-util": "^1.0.0" } }, "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA=="],
523
524 "should-util": ["should-util@1.0.1", "", {}, "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g=="],
525
526 "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
527
528 "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="],
529
530 "slash": ["slash@5.1.0", "", {}, "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg=="],
531
532 "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="],
533
534 "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
535
536 "steiger": ["steiger@0.6.0", "", { "dependencies": { "@clack/prompts": "^0.9.1", "@feature-sliced/steiger-plugin": "0.7.0", "chokidar": "^4.0.3", "cosmiconfig": "^9.0.0", "effector": "^23.4.2", "empathic": "^1.1.0", "fastest-levenshtein": "^1.0.16", "globby": "^14.1.0", "immer": "^10.1.1", "lodash-es": "^4.17.21", "micromatch": "^4.0.8", "patronum": "^2.3.0", "picocolors": "^1.1.1", "prexit": "^2.3.0", "yargs": "^17.7.2", "zod": "^3.25.76", "zod-validation-error": "^3.5.3" }, "bin": { "steiger": "dist/cli.mjs" } }, "sha512-XOG11zwU/m0Aq7bK9zCxH+//QemXis2P3pQJ99kYeaKhVr7YuR41cyN2bTQKrW9vTLw3Uykpai7ohfEX3nMN3Q=="],
537
538 "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
539
540 "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="],
541
542 "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
543
544 "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
545
546 "swagger2openapi": ["swagger2openapi@7.0.8", "", { "dependencies": { "call-me-maybe": "^1.0.1", "node-fetch": "^2.6.1", "node-fetch-h2": "^2.3.0", "node-readfiles": "^0.2.0", "oas-kit-common": "^1.0.8", "oas-resolver": "^2.5.6", "oas-schema-walker": "^1.1.5", "oas-validator": "^5.0.8", "reftools": "^1.1.9", "yaml": "^1.10.0", "yargs": "^17.0.1" }, "bin": { "swagger2openapi": "swagger2openapi.js", "oas-validate": "oas-validate.js", "boast": "boast.js" } }, "sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g=="],
547
548 "tailwindcss": ["tailwindcss@4.3.3", "", {}, "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ=="],
549
550 "tapable": ["tapable@2.3.3", "", {}, "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A=="],
551
552 "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="],
553
554 "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
555
556 "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="],
557
558 "tsconfck": ["tsconfck@3.1.6", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w=="],
559
560 "typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="],
561
562 "uglify-js": ["uglify-js@3.19.3", "", { "bin": { "uglifyjs": "bin/uglifyjs" } }, "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ=="],
563
564 "undici-types": ["undici-types@7.18.2", "", {}, "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="],
565
566 "unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="],
567
568 "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
569
570 "vite": ["vite@8.2.2", "", { "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.5", "postcss": "^8.5.26", "rolldown": "~1.2.4", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.4.0 || ^0.5.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q=="],
571
572 "wcwidth": ["wcwidth@1.0.1", "", { "dependencies": { "defaults": "^1.0.3" } }, "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="],
573
574 "web-tree-sitter": ["web-tree-sitter@0.26.13", "", {}, "sha512-5bUZ7vbQ1kcondet96wzP974+JfCZDeQ7bTpacICm2nnvHpa5cO0ByRsoMcAhUP+743vpkb4m0BFlVSm+Ye9VA=="],
575
576 "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="],
577
578 "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="],
579
580 "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
581
582 "wordwrap": ["wordwrap@1.0.0", "", {}, "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="],
583
584 "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
585
586 "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="],
587
588 "yaml": ["yaml@1.10.3", "", {}, "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA=="],
589
590 "yargs": ["yargs@17.7.3", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g=="],
591
592 "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
593
594 "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
595
596 "zod-validation-error": ["zod-validation-error@3.5.4", "", { "peerDependencies": { "zod": "^3.24.4" } }, "sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw=="],
597
598 "@feature-sliced/filesystem/typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
599
600 "@tailwindcss/node/lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="],
601
602 "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.3", "tslib": "^2.4.0" }, "bundled": true }, "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg=="],
603
604 "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="],
605
606 "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g=="],
607
608 "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.2.3", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" }, "bundled": true }, "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q=="],
609
610 "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="],
611
612 "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
613
614 "micromatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="],
615
616 "restore-cursor/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="],
617
618 "@tailwindcss/node/lightningcss/lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="],
619
620 "@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="],
621
622 "@tailwindcss/node/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="],
623
624 "@tailwindcss/node/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="],
625
626 "@tailwindcss/node/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="],
627
628 "@tailwindcss/node/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="],
629
630 "@tailwindcss/node/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="],
631
632 "@tailwindcss/node/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="],
633
634 "@tailwindcss/node/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="],
635
636 "@tailwindcss/node/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="],
637
638 "@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="],
639 }
640}
Added web/Cargo.lock View web/Cargo.lock
@@ -0,0 +1,7 @@
1# This file is automatically @generated by Cargo.
2# It is not intended for manual editing.
3version = 4
4
5[[package]]
6name = "web"
7version = "0.1.0"
Added web/Cargo.toml View web/Cargo.toml
@@ -0,0 +1,10 @@
1[package]
2name = "web"
3version = "0.1.0"
4edition = "2024"
5authors = ["ZhenYi <zheyqaq@gmail.com>"]
6license = "MIT"
7readme = "README.md"
8
9[lib]
10path = "lib.rs"
No newline at end of file
Added web/index.html View web/index.html

Diff too large to display.

Added web/lib.rs View web/lib.rs

Diff too large to display.

Added web/llm.txt View web/llm.txt

Diff too large to display.

Added web/openapi.json View web/openapi.json

Diff too large to display.

Added web/package.json View web/package.json

Diff too large to display.

Added web/README.md View web/README.md
@@ -0,0 +1,69 @@
1# ui
2
3Vite + React 19 + TypeScript + Tailwind v4 + Alova,项目结构遵循
4[Feature-Sliced Design v2.1](https://fsd.how)。
5
6## 命令
7
8```bash
9bun run dev # 启动开发服务器
10bun run build # tsc -b && vite build
11bun run lint # oxlint
12bun run lint:fsd # Steiger —— 官方 FSD 结构校验
13bun run gen:api # 依据 openapi.json 重新生成 src/shared/api
14```
15
16## 目录结构
17
18当前采用最小可用分层(`app` + `pages` + `shared`)。`features/`、`entities/` 只在
19「同一段代码被多处实际使用且边界稳定」时才创建,不要提前建空目录;
20`widgets/` 层不推荐采用。
21
22```text
23src/
24 app/ ← 应用初始化:入口、路由、全局样式、providers
25 index.tsx ← 入口(index.html 指向这里)
26 routes/router.tsx ← 路由表,唯一允许 import pages 的地方
27 shell/providers.tsx ← 全局 Provider 组合(Redux / QueryClient / theme…)
28 styles/index.css ← 全局样式(Tailwind 入口)
29 pages/ ← 路由级组合,页面自己拥有的逻辑都留在这里
30 home/
31 ui/home-page.tsx
32 index.ts ← 切片公共 API
33 not-found/
34 ui/not-found-page.tsx
35 index.ts
36 shared/ ← 无业务逻辑的基础设施,按 segment 划分、无 slice
37 ui/ ← UI kit(Button…),公共 API 在 ui/index.ts
38 api/ ← Alova 实例与 OpenAPI 生成代码(勿手改,见 gen:api)
39```
40
41## 约定
42
43- **导入方向**:`app → pages → widgets → features → entities → shared`,只能向下依赖,
44 同层 slice 之间禁止互相 import。
45- **公共 API**:外部只能通过 slice 的 `index.ts`(shared 则是每个 segment 的 `index.ts`)导入。
46
47 ```ts
48 import { Button } from '@/shared/ui' // ✅
49 import { Button } from '@/shared/ui/button' // ❌ 绕过公共 API
50 ```
51
52- **路径别名**:`@/app` `@/pages` `@/widgets` `@/features` `@/entities` `@/shared`
53 在 `tsconfig.app.json` 与 `vite.config.ts` 两处保持同步。
54- **非 auth 跳转一律走 react-router**:auth 流程之外的页面禁止 `<a href>` 与
55 `window.location` 整页跳转,只用 `Link` / `useNavigate`,保证 SPA 内最小化切换
56 (`scripts/lint-nav.mjs` 强制,已并入 `bun run lint`)。
57- **文件命名按业务域**,不用技术角色:`model/user.ts` 而不是 `model/types.ts`。
58- **shared 不含业务逻辑**;CRUD 与鉴权 token 属于 `shared/api` / `shared/auth`,
59 不要为此新建 `user` entity。
60- **Pages first**:拿不准放哪里就留在页面里,重复不是下沉的充分条件。
61
62新增页面:建 `pages/<name>/ui/<name>-page.tsx` + `index.ts`,再到
63`src/app/routes/router.tsx` 注册路由。
64
65## 注意(Windows + WSL)
66
67工作区通过 `\\wsl.localhost\...` 访问时,bun 无法回写 `bun.lock`,Windows 侧 node
68也解析不了部分包的入口(`vite build` 会报 plugin-react 入口错误)。
69安装依赖与运行 `dev` / `build` / `lint:fsd` 建议在 WSL 内执行。
Added web/skills-lock.json View web/skills-lock.json

Diff too large to display.

Added web/steiger.config.js View web/steiger.config.js

Diff too large to display.

Added web/tsconfig.app.json View web/tsconfig.app.json

Diff too large to display.

Added web/tsconfig.json View web/tsconfig.json

Diff too large to display.

Added web/tsconfig.node.json View web/tsconfig.node.json

Diff too large to display.

Added web/vite.config.ts View web/vite.config.ts

Diff too large to display.

Modified .dockerignore View .dockerignore
@@ -1,4 +1,6 @@
11target
2web/node_modules
3web/dist
24.git
35.idea
46.zcode
Modified .gitignore View .gitignore
@@ -3,4 +3,7 @@
33target
44.zcode
55config/local.toml
6.env
No newline at end of file
6.env
7.agents
8web/dist
9web/node_modules
Modified Cargo.lock View Cargo.lock
@@ -9208,7 +9208,6 @@
92089208[[package]]
92099209name = "web"
92109210version = "0.1.0"
9211source = "git+https://gitea.gitdata.me/GitDataAi/web.git?rev=cd8cdac92ffbf482b5318f93848f82ed4140b7a6#cd8cdac92ffbf482b5318f93848f82ed4140b7a6"
92129211
92139212[[package]]
92149213name = "web-sys"
Modified Cargo.toml View Cargo.toml
@@ -1,7 +1,8 @@
11[workspace]
22members = [
33 "lib/*",
4 "app/*"
4 "app/*",
5 "web"
56]
67
78resolver = "3"
@@ -31,6 +32,7 @@
3132webapi = { path = "lib/webapi" }
3233pulls = { path = "lib/pulls" }
3334search = { path = "lib/search" }
35web = { path = "web" }
3436
3537
3638
Modified Dockerfile View Dockerfile
@@ -21,6 +21,7 @@
2121COPY Cargo.toml Cargo.lock ./
2222COPY lib ./lib
2323COPY app ./app
24COPY web ./web
2425
2526RUN --mount=type=cache,target=/usr/local/cargo/registry \
2627 --mount=type=cache,target=/usr/local/cargo/git \
Added knowledge-graph.html View knowledge-graph.html
@@ -0,0 +1,437 @@
1<!doctype html>
2<html lang="zh-CN">
3<head>
4 <meta charset="utf-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1">
6 <title>GitData Knowledge Graph</title>
7 <style>
8 :root {
9 color-scheme: light;
10 --bg: #f4f7fb;
11 --surface: rgba(255, 255, 255, .88);
12 --surface-strong: #ffffff;
13 --text: #172033;
14 --muted: #667085;
15 --line: #d9e0ec;
16 --line-strong: #aebbd0;
17 --accent: #315efb;
18 --accent-soft: #e7edff;
19 --shadow: 0 16px 42px rgba(30, 53, 93, .11);
20 --app: #e8f0ff;
21 --domain: #e9f8f1;
22 --foundation: #fff3dc;
23 --resource: #f2eafd;
24 --app-line: #6f92e8;
25 --domain-line: #4fae83;
26 --foundation-line: #d69c3a;
27 --resource-line: #9b79d4;
28 }
29
30 [data-theme="dark"] {
31 color-scheme: dark;
32 --bg: #111827;
33 --surface: rgba(24, 34, 52, .9);
34 --surface-strong: #1a2437;
35 --text: #edf2ff;
36 --muted: #a6b2c8;
37 --line: #334156;
38 --line-strong: #55657f;
39 --accent: #8ca7ff;
40 --accent-soft: #25345f;
41 --shadow: 0 18px 42px rgba(0, 0, 0, .24);
42 --app: #1d2b4d;
43 --domain: #193d35;
44 --foundation: #4a3820;
45 --resource: #362851;
46 --app-line: #7e9eff;
47 --domain-line: #70cfaa;
48 --foundation-line: #f0bb61;
49 --resource-line: #b69ae7;
50 }
51
52 * { box-sizing: border-box; }
53 body {
54 margin: 0;
55 min-width: 320px;
56 background:
57 radial-gradient(circle at 0 0, rgba(49, 94, 251, .12), transparent 30rem),
58 var(--bg);
59 color: var(--text);
60 font: 14px/1.5 Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
61 }
62
63 button, input { font: inherit; }
64 button { color: inherit; }
65 .shell { max-width: 1680px; margin: 0 auto; padding: 28px; }
66 .topbar { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
67 .eyebrow { color: var(--accent); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; font-size: 12px; }
68 h1 { margin: 4px 0 5px; font-size: clamp(25px, 3vw, 38px); letter-spacing: -.035em; line-height: 1.1; }
69 .subtitle { margin: 0; color: var(--muted); max-width: 760px; }
70 .top-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
71 .button, .filter-button {
72 border: 1px solid var(--line);
73 background: var(--surface-strong);
74 border-radius: 10px;
75 padding: 9px 13px;
76 cursor: pointer;
77 transition: border-color .15s ease, background .15s ease, transform .15s ease;
78 }
79 .button:hover, .filter-button:hover { border-color: var(--accent); transform: translateY(-1px); }
80 .button:focus-visible, .filter-button:focus-visible, input:focus-visible, .node:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent) 42%, transparent); outline-offset: 2px; }
81 .button.primary { border-color: var(--accent); background: var(--accent); color: #fff; }
82 .stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
83 .stat { border: 1px solid var(--line); background: var(--surface); box-shadow: var(--shadow); border-radius: 14px; padding: 14px 16px; }
84 .stat-label { color: var(--muted); font-size: 12px; }
85 .stat-value { margin-top: 2px; font-size: 26px; font-weight: 700; letter-spacing: -.03em; }
86 .workspace { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 16px; align-items: stretch; }
87 .graph-card, .detail-card { border: 1px solid var(--line); background: var(--surface); box-shadow: var(--shadow); border-radius: 16px; overflow: hidden; }
88 .toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 13px 14px; border-bottom: 1px solid var(--line); }
89 .search { min-width: 230px; flex: 1 1 260px; position: relative; }
90 .search input { width: 100%; border: 1px solid var(--line); background: var(--surface-strong); color: var(--text); border-radius: 10px; padding: 9px 12px 9px 36px; }
91 .search span { position: absolute; left: 12px; top: 8px; color: var(--muted); }
92 .filters { display: flex; gap: 6px; flex-wrap: wrap; }
93 .filter-button { padding: 7px 10px; font-size: 12px; }
94 .filter-button[aria-pressed="false"] { opacity: .48; }
95 .canvas-wrap { position: relative; min-height: 680px; background: linear-gradient(180deg, color-mix(in srgb, var(--surface-strong) 90%, transparent), transparent); }
96 svg { display: block; width: 100%; height: 680px; touch-action: none; user-select: none; }
97 .layer-band { fill: color-mix(in srgb, var(--band) 55%, transparent); stroke: color-mix(in srgb, var(--band-line) 65%, transparent); stroke-width: 1; stroke-dasharray: 4 5; }
98 .layer-title { fill: var(--muted); font-size: 13px; font-weight: 700; letter-spacing: .04em; }
99 .edge { fill: none; stroke: var(--line-strong); stroke-width: 1.3; opacity: .68; transition: opacity .15s ease, stroke .15s ease, stroke-width .15s ease; }
100 .edge[data-type="connects"] { stroke-dasharray: 5 5; }
101 .edge.is-related { stroke: var(--accent); stroke-width: 2.6; opacity: 1; }
102 .edge.is-dim { opacity: .08; }
103 .node { cursor: pointer; transition: opacity .15s ease; }
104 .node.is-dim { opacity: .13; }
105 .node rect { stroke: var(--node-line); stroke-width: 1.3; fill: var(--node-fill); }
106 .node.is-selected rect { stroke: var(--accent); stroke-width: 3; filter: drop-shadow(0 5px 8px color-mix(in srgb, var(--accent) 28%, transparent)); }
107 .node.is-match rect { stroke: var(--accent); stroke-width: 2.4; }
108 .node-title { fill: var(--text); font-size: 14px; font-weight: 700; pointer-events: none; }
109 .node-type { fill: var(--muted); font-size: 11px; pointer-events: none; }
110 .node-dot { fill: var(--node-line); pointer-events: none; }
111 .legend { display: flex; flex-wrap: wrap; gap: 11px; padding: 10px 15px 14px; color: var(--muted); font-size: 12px; border-top: 1px solid var(--line); }
112 .legend span { display: inline-flex; align-items: center; gap: 6px; }
113 .legend i { width: 9px; height: 9px; border-radius: 50%; background: var(--legend); }
114 .canvas-hint { position: absolute; bottom: 12px; left: 15px; color: var(--muted); font-size: 11px; pointer-events: none; }
115 .detail-card { min-height: 756px; padding: 19px; }
116 .detail-kicker { color: var(--accent); font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
117 .detail-card h2 { margin: 5px 0 6px; font-size: 24px; letter-spacing: -.025em; }
118 .detail-summary { margin: 0 0 17px; color: var(--muted); }
119 .detail-section { border-top: 1px solid var(--line); padding-top: 14px; margin-top: 14px; }
120 .detail-section h3 { margin: 0 0 8px; font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .07em; }
121 .file-list, .link-list { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; }
122 .file-list code { display: block; padding: 6px 8px; border-radius: 7px; background: color-mix(in srgb, var(--accent-soft) 62%, var(--surface-strong)); color: var(--text); font-size: 11px; overflow-wrap: anywhere; }
123 .link-list button { display: block; width: 100%; text-align: left; padding: 6px 0; border: 0; background: transparent; color: var(--accent); cursor: pointer; }
124 .link-list button:hover { text-decoration: underline; }
125 .empty-detail { display: grid; place-items: center; height: 680px; color: var(--muted); text-align: center; }
126 .footer { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 15px; color: var(--muted); font-size: 12px; }
127 .tabular { font-variant-numeric: tabular-nums; }
128 @media (max-width: 1080px) {
129 .workspace { grid-template-columns: 1fr; }
130 .detail-card { min-height: 0; }
131 .empty-detail { height: auto; min-height: 180px; }
132 }
133 @media (max-width: 640px) {
134 .shell { padding: 17px; }
135 .topbar { flex-direction: column; }
136 .top-actions { justify-content: flex-start; }
137 .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
138 .canvas-wrap, svg { min-height: 560px; height: 560px; }
139 }
140 </style>
141</head>
142<body>
143 <main class="shell">
144 <header class="topbar">
145 <div>
146 <div class="eyebrow">GitData / architecture map</div>
147 <h1>项目知识图谱</h1>
148 <p class="subtitle">以当前源码为准的架构级视图:应用入口、领域服务、基础设施与运行时资源之间的依赖和数据流。</p>
149 </div>
150 <div class="top-actions">
151 <button class="button" id="resetView" type="button">重置视图</button>
152 <button class="button" id="themeToggle" type="button">切换主题</button>
153 </div>
154 </header>
155
156 <section class="stats" aria-label="图谱统计">
157 <div class="stat"><div class="stat-label">Workspace packages</div><div class="stat-value tabular">23</div></div>
158 <div class="stat"><div class="stat-label">Rust files</div><div class="stat-value tabular">918</div></div>
159 <div class="stat"><div class="stat-label">Rust lines</div><div class="stat-value tabular">81.8k</div></div>
160 <div class="stat"><div class="stat-label">OpenAPI paths / operations</div><div class="stat-value tabular">283 / 409</div></div>
161 </section>
162
163 <section class="workspace">
164 <div class="graph-card">
165 <div class="toolbar">
166 <label class="search"><span aria-hidden="true">⌕</span><input id="search" type="search" placeholder="搜索 crate、服务或文件…" aria-label="搜索图谱"></label>
167 <div class="filters" id="filters" aria-label="显示分层"></div>
168 <button class="button" id="zoomOut" type="button" aria-label="缩小">−</button>
169 <button class="button" id="zoomIn" type="button" aria-label="放大">+</button>
170 </div>
171 <div class="canvas-wrap">
172 <svg id="graph" viewBox="0 0 1280 820" role="img" aria-labelledby="graphTitle graphDesc">
173 <title id="graphTitle">GitData 架构知识图谱</title>
174 <desc id="graphDesc">展示应用、领域、基础设施和外部资源之间的依赖关系。点击节点查看详情。</desc>
175 <defs>
176 <marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="var(--line-strong)"></path></marker>
177 </defs>
178 <g id="viewport">
179 <g id="bands"></g>
180 <g id="edges"></g>
181 <g id="nodes"></g>
182 </g>
183 </svg>
184 <div class="canvas-hint">滚轮缩放 · 拖动节点 · 点击节点查看调用边界</div>
185 </div>
186 <div class="legend" aria-label="分层图例">
187 <span><i style="--legend:var(--app-line)"></i>应用入口</span>
188 <span><i style="--legend:var(--domain-line)"></i>业务领域</span>
189 <span><i style="--legend:var(--foundation-line)"></i>基础设施</span>
190 <span><i style="--legend:var(--resource-line)"></i>运行时资源</span>
191 <span>实线:依赖 · 虚线:连接运行时资源</span>
192 </div>
193 </div>
194
195 <aside class="detail-card" id="detail" aria-live="polite"></aside>
196 </section>
197
198 <footer class="footer">
199 <span>数据来源:当前工作区源码、Cargo metadata、config/default.toml、openapi.json。</span>
200 <span>生成时间:2026-09-14 · commit <code>06505aa8</code></span>
201 </footer>
202 </main>
203
204 <script>
205 const graphData = {
206 layers: [
207 { id: "apps", name: "应用入口", band: "var(--app)", line: "var(--app-line)" },
208 { id: "domains", name: "业务领域", band: "var(--domain)", line: "var(--domain-line)" },
209 { id: "foundation", name: "基础设施", band: "var(--foundation)", line: "var(--foundation-line)" },
210 { id: "resources", name: "运行时资源", band: "var(--resource)", line: "var(--resource-line)" }
211 ],
212 nodes: [
213 { id: "apihost", name: "apihost", layer: "apps", type: "binary", summary: "主 API 进程:聚合 REST、GraphQL、页面、Swagger 和健康检查,并启动 Chat 与注销后台任务。", files: ["app/apihost/src/main.rs"] },
214 { id: "githost", name: "githost", layer: "apps", type: "binary", summary: "Git 数据面进程:Smart HTTP 与 SSH 双监听,接收 clone/fetch/push。", files: ["app/githost/src/main.rs", "lib/git/src/smart/handler.rs"] },
215 { id: "synchost", name: "synchost", layer: "apps", type: "binary", summary: "Git 元数据同步 worker,从 Redis LIST 消费 post-receive 任务。", files: ["app/synchost/src/main.rs", "lib/git/src/sync/worker.rs"] },
216 { id: "im", name: "im", layer: "apps", type: "binary", summary: "独立即时通信网关,负责 HTTP/1 upgrade 和 WebSocket 会话。", files: ["app/im/src/main.rs", "app/im/src/gateway.rs", "app/im/src/socket.rs"] },
217 { id: "mails", name: "mails", layer: "apps", type: "binary", summary: "邮件队列消费者,连接 Redis Pub/Sub 和 SMTP。", files: ["app/mails/src/main.rs", "lib/email/src/runtime.rs"] },
218 { id: "migrate", name: "migrate", layer: "apps", type: "binary", summary: "一次性数据库 schema 同步入口。", files: ["app/migrate/src/main.rs", "lib/models/src/migrate/mod.rs"] },
219 { id: "openapi", name: "openapi", layer: "apps", type: "binary", summary: "生成或校验仓库根目录的 openapi.json。", files: ["app/openapi/src/main.rs", "lib/webapi/src/openapi.rs"] },
220
221 { id: "webapi", name: "webapi", layer: "domains", type: "assembly", summary: "HTTP 装配层:合并所有领域路由,安装 Session、CORS、body limit、trace、metrics 和 SPA fallback。", files: ["lib/webapi/src/lib.rs", "lib/webapi/src/openapi.rs", "lib/webapi/src/metrics.rs"] },
222 { id: "auth", name: "auth", layer: "domains", type: "domain", summary: "注册、登录、密码、邮箱验证、2FA、访问密钥、SSH key、通知和账户注销。", files: ["lib/auth/src/routes.rs", "lib/auth/src/services/login.rs", "lib/auth/src/services/two_factor.rs"] },
223 { id: "user", name: "user", layer: "domains", type: "domain", summary: "用户资料、邮箱、头像、偏好、设备、会话和用户侧资源。", files: ["lib/user/src/routes.rs", "lib/user/src/services/service.rs"] },
224 { id: "space", name: "space", layer: "domains", type: "domain", summary: "多租户 Space、成员、组、邀请、封禁、目录树和 ACL。", files: ["lib/space/src/routes.rs", "lib/space/src/share/authz.rs", "lib/space/src/services/service.rs"] },
225 { id: "issues", name: "issues", layer: "domains", type: "domain", summary: "Board、Issue、评论、标签、里程碑、依赖、事件线和工时。", files: ["lib/issues/src/routes.rs", "lib/issues/src/services/issues.rs", "lib/issues/src/services/events.rs"] },
226 { id: "pulls", name: "pulls", layer: "domains", type: "domain", summary: "Pull Request、Review、评论、检查、分支更新、锁定和合并。", files: ["lib/pulls/src/routes.rs", "lib/pulls/src/services/merge.rs", "lib/pulls/src/services/reviews.rs"] },
227 { id: "git", name: "git", layer: "domains", type: "domain", summary: "仓库、分支、提交、Smart HTTP、SSH、LFS、GraphQL、保护规则和同步。", files: ["lib/git/src/routes.rs", "lib/git/src/service/mod.rs", "lib/git/src/smart/handler.rs", "lib/git/src/sync/worker.rs"] },
228 { id: "chat", name: "chat", layer: "domains", type: "domain", summary: "房间、消息、线程、DM、附件、提醒、Webhook、实时事件和后台任务。", files: ["lib/chat/src/routes.rs", "lib/chat/src/services/messages.rs", "lib/chat/src/share/realtime.rs"] },
229
230 { id: "config", name: "config", layer: "foundation", type: "foundation", summary: "AppConfig、Figment/TOML/APP_ 环境变量加载,以及各进程的 scoped config。", files: ["lib/config/src/lib.rs", "lib/config/src/loader.rs", "lib/config/src/scoped.rs", "config/default.toml"] },
231 { id: "models", name: "models", layer: "foundation", type: "foundation", summary: "SeaORM 领域实体、schema sync 和用户、Space、Repo、Issue、PR、Chat 等持久化模型。", files: ["lib/models/src/lib.rs", "lib/models/src/migrate/mod.rs", "lib/models/schema_pre_sync.sql", "lib/models/schema_extras.sql"] },
232 { id: "export", name: "export", layer: "foundation", type: "foundation", summary: "共享 AppState、数据库读写路由、Redis、S3、统一响应、健康检查、通知和 telemetry。", files: ["lib/export/src/lib.rs", "lib/export/src/database.rs", "lib/export/src/redis.rs", "lib/export/src/rest.rs"] },
233 { id: "session", name: "session", layer: "foundation", type: "foundation", summary: "Redis-backed axum session、用户上下文、密码版本和通用 SessionGuard。", files: ["lib/session/src/store.rs", "lib/session/src/share/guard.rs", "lib/session/src/share/session.rs"] },
234 { id: "storage", name: "storage", layer: "foundation", type: "foundation", summary: "S3 兼容对象存储封装,支持流式传输、multipart 和 presigned URL。", files: ["lib/storage/src/lib.rs", "lib/storage/src/s3.rs"] },
235 { id: "email", name: "email", layer: "foundation", type: "foundation", summary: "SMTP transport、模板渲染、Redis 邮件队列和 subscriber 生命周期。", files: ["lib/email/src/service.rs", "lib/email/src/queue.rs", "lib/email/src/runtime.rs"] },
236 { id: "cache", name: "cache", layer: "foundation", type: "foundation", summary: "oxcache 两级缓存:本地 L1 + Redis L2。主要服务 Git 和 synchost。", files: ["lib/cache/src/lib.rs", "lib/cache/src/tiered.rs"] },
237 { id: "pow-solver", name: "pow-solver", layer: "foundation", type: "foundation", summary: "SHA-256 PoW challenge 的生成、校验和 WASM 求解导出。", files: ["lib/pow-solver/src/challenge.rs", "lib/pow-solver/src/wasm.rs"] },
238
239 { id: "postgres", name: "PostgreSQL", layer: "resources", type: "runtime", summary: "业务事实源:用户、权限、Git 元数据、Issue/PR/Chat 和 session 影子记录。", files: ["config/default.toml", "lib/export/src/database.rs"] },
240 { id: "redis", name: "Redis / Valkey", layer: "resources", type: "runtime", summary: "Session、配额、Pub/Sub、邮件队列、Git 同步 LIST、锁和实时事件。", files: ["config/default.toml", "lib/export/src/redis.rs", "lib/git/src/sync/queue.rs"] },
241 { id: "s3", name: "S3 compatible", layer: "resources", type: "runtime", summary: "头像、空间图片、Chat 附件、LFS 等二进制对象。", files: ["config/default.toml", "lib/storage/src/s3.rs"] },
242 { id: "repo-fs", name: "bare repository FS", layer: "resources", type: "runtime", summary: "Git 裸仓库和对象池所在文件系统;githost 与 synchost 共享挂载。", files: ["config/default.toml", "chart/templates/repos-pvc.yaml", "lib/git/src/context/facade.rs"] },
243 { id: "smtp", name: "SMTP", layer: "resources", type: "runtime", summary: "验证码、邀请、密码重置和通知邮件的外部传输端。", files: ["config/default.toml", "lib/email/src/transport.rs"] },
244 { id: "web-assets", name: "web crate assets", layer: "resources", type: "runtime", summary: "外部固定 commit 的 web crate 提供内嵌前端静态资源,webapi 负责 SPA fallback 和缓存。", files: ["lib/webapi/Cargo.toml", "lib/webapi/src/spa.rs"] }
245 ],
246 edges: [
247 ["apihost", "webapi", "depends"], ["apihost", "auth", "starts"], ["apihost", "chat", "starts"], ["apihost", "config", "depends"], ["apihost", "export", "depends"], ["apihost", "session", "depends"],
248 ["githost", "git", "depends"], ["githost", "export", "depends"], ["githost", "config", "depends"], ["githost", "repo-fs", "connects"], ["synchost", "git", "depends"], ["synchost", "cache", "depends"], ["synchost", "export", "depends"], ["synchost", "config", "depends"], ["synchost", "repo-fs", "connects"],
249 ["im", "chat", "depends"], ["im", "session", "depends"], ["im", "export", "depends"], ["im", "config", "depends"], ["mails", "email", "depends"], ["mails", "export", "depends"], ["mails", "config", "depends"], ["mails", "smtp", "connects"], ["migrate", "models", "depends"], ["migrate", "config", "depends"], ["openapi", "webapi", "depends"],
250 ["webapi", "auth", "depends"], ["webapi", "chat", "depends"], ["webapi", "issues", "depends"], ["webapi", "pulls", "depends"], ["webapi", "space", "depends"], ["webapi", "user", "depends"], ["webapi", "git", "depends"], ["webapi", "session", "depends"], ["webapi", "export", "depends"], ["webapi", "web-assets", "connects"],
251 ["auth", "session", "depends"], ["auth", "export", "depends"], ["auth", "models", "depends"], ["auth", "config", "depends"], ["auth", "email", "depends"], ["auth", "space", "depends"], ["auth", "pow-solver", "depends"],
252 ["user", "session", "depends"], ["user", "export", "depends"], ["user", "models", "depends"], ["user", "space", "depends"], ["user", "storage", "depends"], ["space", "session", "depends"], ["space", "export", "depends"], ["space", "models", "depends"], ["space", "email", "depends"], ["space", "storage", "depends"],
253 ["issues", "session", "depends"], ["issues", "export", "depends"], ["issues", "models", "depends"], ["issues", "space", "depends"], ["issues", "email", "depends"], ["pulls", "git", "depends"], ["pulls", "issues", "depends"], ["pulls", "space", "depends"], ["pulls", "session", "depends"], ["pulls", "export", "depends"], ["pulls", "models", "depends"],
254 ["git", "export", "depends"], ["git", "config", "depends"], ["git", "models", "depends"], ["git", "space", "depends"], ["git", "session", "depends"], ["git", "cache", "depends"], ["chat", "session", "depends"], ["chat", "export", "depends"], ["chat", "models", "depends"], ["chat", "space", "depends"], ["chat", "storage", "depends"],
255 ["export", "config", "depends"], ["export", "email", "depends"], ["export", "storage", "depends"], ["export", "postgres", "connects"], ["export", "redis", "connects"], ["session", "redis", "connects"], ["models", "postgres", "connects"], ["storage", "s3", "connects"], ["email", "redis", "connects"], ["email", "smtp", "connects"], ["cache", "redis", "connects"]
256 ]
257 };
258
259 const svg = document.getElementById("graph");
260 const viewport = document.getElementById("viewport");
261 const bands = document.getElementById("bands");
262 const edgesLayer = document.getElementById("edges");
263 const nodesLayer = document.getElementById("nodes");
264 const detail = document.getElementById("detail");
265 const search = document.getElementById("search");
266 const nodeMap = new Map(graphData.nodes.map(node => [node.id, node]));
267 const layerMap = new Map(graphData.layers.map(layer => [layer.id, layer]));
268 const edgeData = graphData.edges.map(([source, target, type]) => ({ source, target, type }));
269 const positions = new Map();
270 const columnX = { apps: 155, domains: 455, foundation: 755, resources: 1055 };
271 const bandWidth = 245;
272 let selectedId = null;
273 let scale = 1;
274 let panX = 0;
275 let panY = 0;
276 let dragState = null;
277 let enabledLayers = new Set(graphData.layers.map(layer => layer.id));
278
279 for (const layer of graphData.layers) {
280 const nodes = graphData.nodes.filter(node => node.layer === layer.id);
281 nodes.forEach((node, index) => positions.set(node.id, { x: columnX[layer.id], y: 92 + index * 82 }));
282 const band = document.createElementNS("http://www.w3.org/2000/svg", "rect");
283 band.setAttribute("x", columnX[layer.id] - bandWidth / 2);
284 band.setAttribute("y", 42);
285 band.setAttribute("width", bandWidth);
286 band.setAttribute("height", 708);
287 band.setAttribute("rx", 18);
288 band.classList.add("layer-band");
289 band.style.setProperty("--band", layer.band);
290 band.style.setProperty("--band-line", layer.line);
291 bands.appendChild(band);
292 const title = document.createElementNS("http://www.w3.org/2000/svg", "text");
293 title.setAttribute("x", columnX[layer.id] - bandWidth / 2 + 18);
294 title.setAttribute("y", 70);
295 title.classList.add("layer-title");
296 title.textContent = layer.name;
297 bands.appendChild(title);
298 }
299
300 function nodeStyle(node) {
301 const layer = layerMap.get(node.layer);
302 return { fill: layer.band, line: layer.line };
303 }
304
305 function makeNode(node) {
306 const group = document.createElementNS("http://www.w3.org/2000/svg", "g");
307 group.classList.add("node");
308 group.dataset.id = node.id;
309 group.setAttribute("tabindex", "0");
310 group.setAttribute("role", "button");
311 group.setAttribute("aria-label", `${node.name}:${node.summary}`);
312 const style = nodeStyle(node);
313 group.style.setProperty("--node-fill", style.fill);
314 group.style.setProperty("--node-line", style.line);
315 const rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
316 rect.setAttribute("x", -105); rect.setAttribute("y", -27); rect.setAttribute("width", 210); rect.setAttribute("height", 54); rect.setAttribute("rx", 12);
317 group.appendChild(rect);
318 const dot = document.createElementNS("http://www.w3.org/2000/svg", "circle");
319 dot.setAttribute("cx", -88); dot.setAttribute("cy", -9); dot.setAttribute("r", 5); dot.classList.add("node-dot"); group.appendChild(dot);
320 const title = document.createElementNS("http://www.w3.org/2000/svg", "text");
321 title.setAttribute("x", -75); title.setAttribute("y", -5); title.classList.add("node-title"); title.textContent = node.name; group.appendChild(title);
322 const type = document.createElementNS("http://www.w3.org/2000/svg", "text");
323 type.setAttribute("x", -75); type.setAttribute("y", 15); type.classList.add("node-type"); type.textContent = node.type; group.appendChild(type);
324 group.addEventListener("click", event => { if (!dragState || !dragState.moved) selectNode(node.id); event.stopPropagation(); });
325 group.addEventListener("keydown", event => { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); selectNode(node.id); } });
326 group.addEventListener("pointerdown", event => startDrag(event, node.id, group));
327 nodesLayer.appendChild(group);
328 return group;
329 }
330
331 const nodeElements = new Map(graphData.nodes.map(node => [node.id, makeNode(node)]));
332 const edgeElements = edgeData.map(edge => {
333 const line = document.createElementNS("http://www.w3.org/2000/svg", "path");
334 line.classList.add("edge"); line.dataset.source = edge.source; line.dataset.target = edge.target; line.dataset.type = edge.type; line.setAttribute("marker-end", "url(#arrow)");
335 edgesLayer.appendChild(line); return line;
336 });
337
338 function edgePath(source, target) {
339 const a = positions.get(source), b = positions.get(target);
340 const dx = b.x - a.x;
341 const bend = Math.max(38, Math.abs(dx) * .28);
342 const sign = dx >= 0 ? 1 : -1;
343 return `M ${a.x + sign * 105} ${a.y} C ${a.x + sign * bend} ${a.y}, ${b.x - sign * bend} ${b.y}, ${b.x - sign * 105} ${b.y}`;
344 }
345
346 function redraw() {
347 for (const node of graphData.nodes) nodeElements.get(node.id).setAttribute("transform", `translate(${positions.get(node.id).x} ${positions.get(node.id).y})`);
348 edgeElements.forEach((element, index) => element.setAttribute("d", edgePath(edgeData[index].source, edgeData[index].target)));
349 viewport.setAttribute("transform", `translate(${panX} ${panY}) scale(${scale})`);
350 applyState();
351 }
352
353 function connectedTo(id) {
354 const ids = new Set([id]);
355 edgeData.forEach(edge => { if (edge.source === id) ids.add(edge.target); if (edge.target === id) ids.add(edge.source); });
356 return ids;
357 }
358
359 function applyState() {
360 const query = search.value.trim().toLowerCase();
361 const matches = new Set(graphData.nodes.filter(node => `${node.name} ${node.type} ${node.summary} ${node.files.join(" ")}`.toLowerCase().includes(query)).map(node => node.id));
362 const related = selectedId ? connectedTo(selectedId) : null;
363 graphData.nodes.forEach(node => {
364 const element = nodeElements.get(node.id);
365 const visible = enabledLayers.has(node.layer);
366 element.classList.toggle("is-dim", !visible || (query.length > 0 && !matches.has(node.id)) || (related && !related.has(node.id)));
367 element.classList.toggle("is-match", query.length > 0 && matches.has(node.id));
368 element.classList.toggle("is-selected", selectedId === node.id);
369 element.style.pointerEvents = visible ? "auto" : "none";
370 });
371 edgeData.forEach((edge, index) => {
372 const element = edgeElements[index];
373 const visible = enabledLayers.has(nodeMap.get(edge.source).layer) && enabledLayers.has(nodeMap.get(edge.target).layer);
374 element.classList.toggle("is-dim", !visible || (related && !(related.has(edge.source) && related.has(edge.target))));
375 });
376 const count = matches.size;
377 search.setAttribute("aria-label", query ? `搜索图谱,匹配 ${count} 个节点` : "搜索图谱");
378 }
379
380 function detailHtml(node) {
381 const incoming = edgeData.filter(edge => edge.target === node.id).map(edge => nodeMap.get(edge.source));
382 const outgoing = edgeData.filter(edge => edge.source === node.id).map(edge => nodeMap.get(edge.target));
383 const unique = list => [...new Map(list.map(item => [item.id, item])).values()];
384 const links = (title, list) => list.length ? `<div class="detail-section"><h3>${title}</h3><ul class="link-list">${unique(list).map(item => `<li><button type="button" data-jump="${item.id}">${item.name}<span class="text-muted"> · ${item.type}</span></button></li>`).join("")}</ul></div>` : "";
385 return `<div class="detail-kicker">${layerMap.get(node.layer).name} · ${node.type}</div><h2>${node.name}</h2><p class="detail-summary">${node.summary}</p><div class="detail-section"><h3>关键文件</h3><ul class="file-list">${node.files.map(file => `<li><code>${file}</code></li>`).join("")}</ul></div>${links("依赖 / 下游", outgoing)}${links("被使用 / 上游", incoming)}`;
386 }
387
388 function selectNode(id) {
389 selectedId = id;
390 const node = nodeMap.get(id);
391 detail.innerHTML = detailHtml(node);
392 detail.querySelectorAll("[data-jump]").forEach(button => button.addEventListener("click", () => selectNode(button.dataset.jump)));
393 applyState();
394 }
395
396 function resetView() {
397 selectedId = null; search.value = ""; scale = 1; panX = 0; panY = 0; enabledLayers = new Set(graphData.layers.map(layer => layer.id));
398 document.querySelectorAll(".filter-button").forEach(button => { button.setAttribute("aria-pressed", "true"); });
399 detail.innerHTML = `<div class="empty-detail"><div><strong>选择一个节点</strong><br>查看职责、关键文件和上下游关系。</div></div>`;
400 redraw();
401 }
402
403 function makeFilters() {
404 const container = document.getElementById("filters");
405 graphData.layers.forEach(layer => {
406 const button = document.createElement("button"); button.type = "button"; button.className = "filter-button"; button.textContent = layer.name; button.setAttribute("aria-pressed", "true");
407 button.addEventListener("click", () => { const enabled = enabledLayers.has(layer.id); enabled ? enabledLayers.delete(layer.id) : enabledLayers.add(layer.id); button.setAttribute("aria-pressed", String(!enabled)); applyState(); });
408 container.appendChild(button);
409 });
410 }
411
412 function zoomAt(next, cx = 640, cy = 410) {
413 const beforeX = (cx - panX) / scale, beforeY = (cy - panY) / scale;
414 scale = Math.max(.55, Math.min(1.8, next)); panX = cx - beforeX * scale; panY = cy - beforeY * scale; redraw();
415 }
416
417 function svgPoint(event) { const rect = svg.getBoundingClientRect(); return { x: (event.clientX - rect.left) * 1280 / rect.width, y: (event.clientY - rect.top) * 820 / rect.height }; }
418 function startDrag(event, id, element) { element.setPointerCapture(event.pointerId); const point = svgPoint(event), pos = positions.get(id); dragState = { id, element, startX: point.x, startY: point.y, originalX: pos.x, originalY: pos.y, moved: false }; }
419 function moveDrag(event) { if (!dragState) return; const point = svgPoint(event), dx = (point.x - dragState.startX) / scale, dy = (point.y - dragState.startY) / scale; if (Math.abs(dx) + Math.abs(dy) > 3) dragState.moved = true; positions.set(dragState.id, { x: dragState.originalX + dx, y: dragState.originalY + dy }); redraw(); }
420 function endDrag() { dragState = null; }
421
422 search.addEventListener("input", applyState);
423 document.getElementById("zoomIn").addEventListener("click", () => zoomAt(scale + .15));
424 document.getElementById("zoomOut").addEventListener("click", () => zoomAt(scale - .15));
425 document.getElementById("resetView").addEventListener("click", resetView);
426 document.getElementById("themeToggle").addEventListener("click", () => { document.body.dataset.theme = document.body.dataset.theme === "dark" ? "light" : "dark"; });
427 svg.addEventListener("wheel", event => { event.preventDefault(); const point = svgPoint(event); zoomAt(scale + (event.deltaY < 0 ? .1 : -.1), point.x, point.y); }, { passive: false });
428 svg.addEventListener("pointermove", moveDrag);
429 svg.addEventListener("pointerup", endDrag);
430 svg.addEventListener("pointercancel", endDrag);
431 svg.addEventListener("click", event => { if (event.target === svg) { selectedId = null; detail.innerHTML = `<div class="empty-detail"><div><strong>选择一个节点</strong><br>查看职责、关键文件和上下游关系。</div></div>`; applyState(); } });
432
433 makeFilters();
434 resetView();
435 </script>
436</body>
437</html>