@utopia-studio-design/design-system-cli 0.8.1 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/bin/utopia-ds-mcp.mjs +15 -4
  2. package/bin/utopia-ds.mjs +16 -3
  3. package/data/blocks/semantic-pattern-parts/AuthParts.tsx +48 -0
  4. package/data/blocks/semantic-pattern-parts/ChoiceCards.tsx +7 -0
  5. package/data/blocks/semantic-pattern-parts/ListFilters.tsx +9 -0
  6. package/data/blocks/semantic-pattern-parts/OutcomeNotice.tsx +7 -0
  7. package/data/blocks/semantic-pattern-parts/PatternParts.tsx +7 -0
  8. package/data/blocks/semantic-pattern-parts/ProductParts.tsx +38 -0
  9. package/data/blocks/semantic-pattern-parts/ProgressSteps.tsx +6 -0
  10. package/data/blocks/semantic-pattern-parts/ReviewList.tsx +7 -0
  11. package/data/blocks/semantic-pattern-parts/ValidatedField.tsx +8 -0
  12. package/data/blocks/semantic-pattern-parts/WorkflowParts.tsx +339 -0
  13. package/data/blocks/semantic-pattern-parts/auth-parts.css +27 -0
  14. package/data/blocks/semantic-pattern-parts/pattern-parts.css +25 -0
  15. package/data/blocks/semantic-pattern-parts/product-parts.css +25 -0
  16. package/data/blocks/semantic-pattern-parts/types.ts +3 -0
  17. package/data/blocks/semantic-pattern-parts/workflow-parts.css +118 -0
  18. package/data/blocks/ux-pattern-examples/AccessExamples.tsx +46 -0
  19. package/data/blocks/ux-pattern-examples/AccountExamples.tsx +133 -0
  20. package/data/blocks/ux-pattern-examples/OnboardingExample.tsx +15 -0
  21. package/data/blocks/ux-pattern-examples/ProductExamples.tsx +79 -0
  22. package/data/blocks/ux-pattern-examples/ReviewExample.tsx +14 -0
  23. package/data/blocks/ux-pattern-examples/SignupExample.tsx +22 -0
  24. package/data/blocks/ux-pattern-examples/WorkflowExample.tsx +1761 -0
  25. package/data/blocks/ux-pattern-examples/WorkflowExamples.tsx +190 -0
  26. package/data/blocks/ux-pattern-examples/copy.ts +6 -0
  27. package/data/blocks/ux-pattern-examples/ux-examples.css +18 -0
  28. package/data/blocks/ux-pattern-examples/workflow-copy.ts +76 -0
  29. package/data/blocks/ux-pattern-examples/workflow-definitions.ts +1291 -0
  30. package/data/docs/ui-parts-qa.md +172 -0
  31. package/data/docs/ui-parts.md +105 -0
  32. package/data/docs/ux-pattern-adaptation-qa.md +38 -0
  33. package/data/docs/ux-pattern-adaptation.md +41 -0
  34. package/data/docs/ux-pattern-migration.md +111 -0
  35. package/data/docs/ux-pattern-publish-2026-09-13.md +22 -0
  36. package/data/docs/ux-pattern-release-2026-09-13.md +26 -0
  37. package/data/docs/ux-source-evidence/account-auth.json +41 -0
  38. package/data/docs/ux-source-evidence/account-forgot-password.json +36 -0
  39. package/data/docs/ux-source-evidence/account-invite.json +63 -0
  40. package/data/docs/ux-source-evidence/account-locked.json +63 -0
  41. package/data/docs/ux-source-evidence/account-login.json +28 -0
  42. package/data/docs/ux-source-evidence/account-mfa.json +62 -0
  43. package/data/docs/ux-source-evidence/account-onboarding-credentials.json +52 -0
  44. package/data/docs/ux-source-evidence/account-onboarding-legal.json +56 -0
  45. package/data/docs/ux-source-evidence/account-onboarding-orientation.json +66 -0
  46. package/data/docs/ux-source-evidence/account-onboarding-profile.json +50 -0
  47. package/data/docs/ux-source-evidence/account-onboarding.json +69 -0
  48. package/data/docs/ux-source-evidence/account-reset-password.json +27 -0
  49. package/data/docs/ux-source-evidence/account-session-expired.json +62 -0
  50. package/data/docs/ux-source-evidence/account-signup.json +33 -0
  51. package/data/docs/ux-source-evidence/account-verify-email.json +34 -0
  52. package/data/docs/ux-source-evidence/account-welcome.json +41 -0
  53. package/data/docs/ux-source-evidence/admin-analytics.json +54 -0
  54. package/data/docs/ux-source-evidence/admin-audit.json +31 -0
  55. package/data/docs/ux-source-evidence/admin-broadcasts-new.json +36 -0
  56. package/data/docs/ux-source-evidence/admin-broadcasts.json +41 -0
  57. package/data/docs/ux-source-evidence/admin-closures.json +52 -0
  58. package/data/docs/ux-source-evidence/admin-devices.json +51 -0
  59. package/data/docs/ux-source-evidence/admin-escalations.json +35 -0
  60. package/data/docs/ux-source-evidence/admin-incidents.json +54 -0
  61. package/data/docs/ux-source-evidence/admin-loading.json +17 -0
  62. package/data/docs/ux-source-evidence/admin-onboarding-detail.json +80 -0
  63. package/data/docs/ux-source-evidence/admin-onboarding.json +62 -0
  64. package/data/docs/ux-source-evidence/admin-payments.json +45 -0
  65. package/data/docs/ux-source-evidence/admin-providers.json +38 -0
  66. package/data/docs/ux-source-evidence/admin-settings.json +18 -0
  67. package/data/docs/ux-source-evidence/admin-subscriptions-detail-allocate.json +42 -0
  68. package/data/docs/ux-source-evidence/admin-subscriptions-detail.json +48 -0
  69. package/data/docs/ux-source-evidence/admin-subscriptions-new.json +43 -0
  70. package/data/docs/ux-source-evidence/admin-subscriptions.json +41 -0
  71. package/data/docs/ux-source-evidence/admin-transactions.json +41 -0
  72. package/data/docs/ux-source-evidence/error.json +30 -0
  73. package/data/docs/ux-source-evidence/loading.json +19 -0
  74. package/data/docs/ux-source-evidence/marketing-blog.json +48 -0
  75. package/data/docs/ux-source-evidence/marketing-contact.json +36 -0
  76. package/data/docs/ux-source-evidence/marketing.json +64 -0
  77. package/data/docs/ux-source-evidence/not-found.json +28 -0
  78. package/data/docs/ux-source-evidence/portal-loading.json +17 -0
  79. package/data/docs/ux-source-evidence/portal-mentor-messages.json +31 -0
  80. package/data/docs/ux-source-evidence/portal-mentor-profile.json +23 -0
  81. package/data/docs/ux-source-evidence/portal-mentor-requests-detail.json +54 -0
  82. package/data/docs/ux-source-evidence/portal-mentor-sessions-detail-assess.json +42 -0
  83. package/data/docs/ux-source-evidence/portal-mentor-settings.json +18 -0
  84. package/data/docs/ux-source-evidence/portal-mentor.json +38 -0
  85. package/data/docs/ux-source-evidence/portal-sessions-detail-live.json +48 -0
  86. package/data/docs/ux-source-evidence/portal-sponsor-billing.json +28 -0
  87. package/data/docs/ux-source-evidence/portal-sponsor-profile.json +22 -0
  88. package/data/docs/ux-source-evidence/portal-sponsor-sessions.json +28 -0
  89. package/data/docs/ux-source-evidence/portal-sponsor-settings.json +18 -0
  90. package/data/docs/ux-source-evidence/portal-sponsor-trainees.json +36 -0
  91. package/data/docs/ux-source-evidence/portal-sponsor.json +52 -0
  92. package/data/docs/ux-source-evidence/portal-trainee-competency.json +42 -0
  93. package/data/docs/ux-source-evidence/portal-trainee-credits.json +40 -0
  94. package/data/docs/ux-source-evidence/portal-trainee-mentors.json +48 -0
  95. package/data/docs/ux-source-evidence/portal-trainee-messages.json +32 -0
  96. package/data/docs/ux-source-evidence/portal-trainee-notifications.json +35 -0
  97. package/data/docs/ux-source-evidence/portal-trainee-profile.json +26 -0
  98. package/data/docs/ux-source-evidence/portal-trainee-request.json +54 -0
  99. package/data/docs/ux-source-evidence/portal-trainee-sessions-detail-feedback.json +36 -0
  100. package/data/docs/ux-source-evidence/portal-trainee-sessions-detail-precheck.json +42 -0
  101. package/data/docs/ux-source-evidence/portal-trainee-sessions-detail.json +55 -0
  102. package/data/docs/ux-source-evidence/portal-trainee-sessions.json +36 -0
  103. package/data/docs/ux-source-evidence/portal-trainee-settings-notifications.json +38 -0
  104. package/data/docs/ux-source-evidence/portal-trainee-settings.json +18 -0
  105. package/data/docs/ux-source-evidence/portal-trainee.json +44 -0
  106. package/data/docs/ux-source-evidence/portal-tv-detail.json +39 -0
  107. package/data/docs/ux-source-evidence/portal-tv.json +44 -0
  108. package/data/docs/ux-source-evidence/shared-admin-admin-shell.json +35 -0
  109. package/data/docs/ux-source-evidence/shared-auth-auth-primitives.json +105 -0
  110. package/data/docs/ux-source-evidence/shared-auth-auth-shell.json +25 -0
  111. package/data/docs/ux-source-evidence/shared-auth-onboarding-primitives.json +52 -0
  112. package/data/docs/ux-source-evidence/shared-auth-onboarding-shell.json +28 -0
  113. package/data/docs/ux-source-evidence/shared-auth-status-indicator.json +41 -0
  114. package/data/docs/ux-source-evidence/shared-portal-empty-state.json +24 -0
  115. package/data/docs/ux-source-evidence/shared-portal-loading-skeleton.json +27 -0
  116. package/data/docs/ux-source-evidence/shared-portal-notifications-dropdown.json +39 -0
  117. package/data/docs/ux-source-evidence/shared-portal-portal-shell.json +36 -0
  118. package/data/docs/ux-source-evidence/shared-portal-profile-form.json +32 -0
  119. package/data/docs/ux-source-evidence/shared-portal-settings-view.json +81 -0
  120. package/data/docs/ux-source-evidence/shared-portal-usage-sparkline.json +18 -0
  121. package/data/docs/ux-source-evidence/shared-portal-user-menu.json +34 -0
  122. package/data/manifests/blocks.json +230 -21
  123. package/data/manifests/patterns.json +330 -0
  124. package/data/manifests/ui-patterns.json +1029 -0
  125. package/data/manifests/ux-examples.json +2177 -0
  126. package/data/manifests/ux-patterns.json +1135 -0
  127. package/data/manifests/ux-source-inventory.json +4669 -0
  128. package/data/ui-parts/blocks/analytics-dashboard/AnalyticsMetricBlocks.tsx +87 -0
  129. package/data/ui-parts/blocks/analytics-dashboard/analytics-dashboard.css +92 -0
  130. package/data/ui-parts/blocks/semantic-pattern-parts/AuthParts.tsx +48 -0
  131. package/data/ui-parts/blocks/semantic-pattern-parts/ChoiceCards.tsx +7 -0
  132. package/data/ui-parts/blocks/semantic-pattern-parts/ListFilters.tsx +9 -0
  133. package/data/ui-parts/blocks/semantic-pattern-parts/OutcomeNotice.tsx +7 -0
  134. package/data/ui-parts/blocks/semantic-pattern-parts/ProductParts.tsx +38 -0
  135. package/data/ui-parts/blocks/semantic-pattern-parts/ProgressSteps.tsx +6 -0
  136. package/data/ui-parts/blocks/semantic-pattern-parts/ReviewList.tsx +7 -0
  137. package/data/ui-parts/blocks/semantic-pattern-parts/ValidatedField.tsx +8 -0
  138. package/data/ui-parts/blocks/semantic-pattern-parts/WorkflowParts.tsx +339 -0
  139. package/data/ui-parts/blocks/semantic-pattern-parts/auth-parts.css +27 -0
  140. package/data/ui-parts/blocks/semantic-pattern-parts/pattern-parts.css +25 -0
  141. package/data/ui-parts/blocks/semantic-pattern-parts/product-parts.css +25 -0
  142. package/data/ui-parts/blocks/semantic-pattern-parts/types.ts +3 -0
  143. package/data/ui-parts/blocks/semantic-pattern-parts/workflow-parts.css +118 -0
  144. package/data/ui-parts/blocks/ux-pattern-examples/AccessExamples.tsx +46 -0
  145. package/data/ui-parts/blocks/ux-pattern-examples/AccountExamples.tsx +133 -0
  146. package/data/ui-parts/blocks/ux-pattern-examples/ProductExamples.tsx +79 -0
  147. package/data/ui-parts/blocks/ux-pattern-examples/WorkflowExample.tsx +1761 -0
  148. package/data/ui-parts/blocks/ux-pattern-examples/WorkflowExamples.tsx +190 -0
  149. package/data/ui-parts/blocks/ux-pattern-examples/copy.ts +6 -0
  150. package/data/ui-parts/blocks/ux-pattern-examples/ux-examples.css +18 -0
  151. package/data/ui-parts/blocks/ux-pattern-examples/workflow-copy.ts +76 -0
  152. package/data/ui-parts/blocks/ux-pattern-examples/workflow-definitions.ts +1291 -0
  153. package/data/ux-source-evidence/account-auth.json +41 -0
  154. package/data/ux-source-evidence/account-forgot-password.json +36 -0
  155. package/data/ux-source-evidence/account-invite.json +63 -0
  156. package/data/ux-source-evidence/account-locked.json +63 -0
  157. package/data/ux-source-evidence/account-login.json +28 -0
  158. package/data/ux-source-evidence/account-mfa.json +62 -0
  159. package/data/ux-source-evidence/account-onboarding-credentials.json +52 -0
  160. package/data/ux-source-evidence/account-onboarding-legal.json +56 -0
  161. package/data/ux-source-evidence/account-onboarding-orientation.json +66 -0
  162. package/data/ux-source-evidence/account-onboarding-profile.json +50 -0
  163. package/data/ux-source-evidence/account-onboarding.json +69 -0
  164. package/data/ux-source-evidence/account-reset-password.json +27 -0
  165. package/data/ux-source-evidence/account-session-expired.json +62 -0
  166. package/data/ux-source-evidence/account-signup.json +33 -0
  167. package/data/ux-source-evidence/account-verify-email.json +34 -0
  168. package/data/ux-source-evidence/account-welcome.json +41 -0
  169. package/data/ux-source-evidence/admin-analytics.json +54 -0
  170. package/data/ux-source-evidence/admin-audit.json +31 -0
  171. package/data/ux-source-evidence/admin-broadcasts-new.json +36 -0
  172. package/data/ux-source-evidence/admin-broadcasts.json +41 -0
  173. package/data/ux-source-evidence/admin-closures.json +52 -0
  174. package/data/ux-source-evidence/admin-devices.json +51 -0
  175. package/data/ux-source-evidence/admin-escalations.json +35 -0
  176. package/data/ux-source-evidence/admin-incidents.json +54 -0
  177. package/data/ux-source-evidence/admin-loading.json +17 -0
  178. package/data/ux-source-evidence/admin-onboarding-detail.json +80 -0
  179. package/data/ux-source-evidence/admin-onboarding.json +62 -0
  180. package/data/ux-source-evidence/admin-payments.json +45 -0
  181. package/data/ux-source-evidence/admin-providers.json +38 -0
  182. package/data/ux-source-evidence/admin-settings.json +18 -0
  183. package/data/ux-source-evidence/admin-subscriptions-detail-allocate.json +42 -0
  184. package/data/ux-source-evidence/admin-subscriptions-detail.json +48 -0
  185. package/data/ux-source-evidence/admin-subscriptions-new.json +43 -0
  186. package/data/ux-source-evidence/admin-subscriptions.json +41 -0
  187. package/data/ux-source-evidence/admin-transactions.json +41 -0
  188. package/data/ux-source-evidence/error.json +30 -0
  189. package/data/ux-source-evidence/loading.json +19 -0
  190. package/data/ux-source-evidence/marketing-blog.json +48 -0
  191. package/data/ux-source-evidence/marketing-contact.json +36 -0
  192. package/data/ux-source-evidence/marketing.json +64 -0
  193. package/data/ux-source-evidence/not-found.json +28 -0
  194. package/data/ux-source-evidence/portal-loading.json +17 -0
  195. package/data/ux-source-evidence/portal-mentor-messages.json +31 -0
  196. package/data/ux-source-evidence/portal-mentor-profile.json +23 -0
  197. package/data/ux-source-evidence/portal-mentor-requests-detail.json +54 -0
  198. package/data/ux-source-evidence/portal-mentor-sessions-detail-assess.json +42 -0
  199. package/data/ux-source-evidence/portal-mentor-settings.json +18 -0
  200. package/data/ux-source-evidence/portal-mentor.json +38 -0
  201. package/data/ux-source-evidence/portal-sessions-detail-live.json +48 -0
  202. package/data/ux-source-evidence/portal-sponsor-billing.json +28 -0
  203. package/data/ux-source-evidence/portal-sponsor-profile.json +22 -0
  204. package/data/ux-source-evidence/portal-sponsor-sessions.json +28 -0
  205. package/data/ux-source-evidence/portal-sponsor-settings.json +18 -0
  206. package/data/ux-source-evidence/portal-sponsor-trainees.json +36 -0
  207. package/data/ux-source-evidence/portal-sponsor.json +52 -0
  208. package/data/ux-source-evidence/portal-trainee-competency.json +42 -0
  209. package/data/ux-source-evidence/portal-trainee-credits.json +40 -0
  210. package/data/ux-source-evidence/portal-trainee-mentors.json +48 -0
  211. package/data/ux-source-evidence/portal-trainee-messages.json +32 -0
  212. package/data/ux-source-evidence/portal-trainee-notifications.json +35 -0
  213. package/data/ux-source-evidence/portal-trainee-profile.json +26 -0
  214. package/data/ux-source-evidence/portal-trainee-request.json +54 -0
  215. package/data/ux-source-evidence/portal-trainee-sessions-detail-feedback.json +36 -0
  216. package/data/ux-source-evidence/portal-trainee-sessions-detail-precheck.json +42 -0
  217. package/data/ux-source-evidence/portal-trainee-sessions-detail.json +55 -0
  218. package/data/ux-source-evidence/portal-trainee-sessions.json +36 -0
  219. package/data/ux-source-evidence/portal-trainee-settings-notifications.json +38 -0
  220. package/data/ux-source-evidence/portal-trainee-settings.json +18 -0
  221. package/data/ux-source-evidence/portal-trainee.json +44 -0
  222. package/data/ux-source-evidence/portal-tv-detail.json +39 -0
  223. package/data/ux-source-evidence/portal-tv.json +44 -0
  224. package/data/ux-source-evidence/shared-admin-admin-shell.json +35 -0
  225. package/data/ux-source-evidence/shared-auth-auth-primitives.json +105 -0
  226. package/data/ux-source-evidence/shared-auth-auth-shell.json +25 -0
  227. package/data/ux-source-evidence/shared-auth-onboarding-primitives.json +52 -0
  228. package/data/ux-source-evidence/shared-auth-onboarding-shell.json +28 -0
  229. package/data/ux-source-evidence/shared-auth-status-indicator.json +41 -0
  230. package/data/ux-source-evidence/shared-portal-empty-state.json +24 -0
  231. package/data/ux-source-evidence/shared-portal-loading-skeleton.json +27 -0
  232. package/data/ux-source-evidence/shared-portal-notifications-dropdown.json +39 -0
  233. package/data/ux-source-evidence/shared-portal-portal-shell.json +36 -0
  234. package/data/ux-source-evidence/shared-portal-profile-form.json +32 -0
  235. package/data/ux-source-evidence/shared-portal-settings-view.json +81 -0
  236. package/data/ux-source-evidence/shared-portal-usage-sparkline.json +18 -0
  237. package/data/ux-source-evidence/shared-portal-user-menu.json +34 -0
  238. package/lib/api.mjs +193 -4
  239. package/package.json +2 -2
@@ -0,0 +1,4669 @@
1
+ {
2
+ "version": 1,
3
+ "source": {
4
+ "repository": "The-Utopia-Studio/mentix-design",
5
+ "revision": "6b4b2770d04e42cc2e5453c3d80e35c282b3438f"
6
+ },
7
+ "categories": {
8
+ "account": [
9
+ "Account access",
10
+ "인증과 계정"
11
+ ],
12
+ "onboarding": [
13
+ "Guided setup",
14
+ "단계별 설정"
15
+ ],
16
+ "directory": [
17
+ "People and profiles",
18
+ "사람과 프로필"
19
+ ],
20
+ "messaging": [
21
+ "Messages and notifications",
22
+ "메시지와 알림"
23
+ ],
24
+ "scheduling": [
25
+ "Scheduling and sessions",
26
+ "일정과 세션"
27
+ ],
28
+ "billing": [
29
+ "Billing and allocation",
30
+ "결제와 배분"
31
+ ],
32
+ "operations": [
33
+ "Operations and review",
34
+ "운영과 검토"
35
+ ],
36
+ "media": [
37
+ "Broadcast and live collaboration",
38
+ "방송과 실시간 협업"
39
+ ],
40
+ "settings": [
41
+ "Settings and preferences",
42
+ "설정과 환경"
43
+ ],
44
+ "dashboard": [
45
+ "Overview and progress",
46
+ "현황과 진행"
47
+ ],
48
+ "system": [
49
+ "System feedback",
50
+ "시스템 상태"
51
+ ],
52
+ "marketing": [
53
+ "Public pages",
54
+ "공개 페이지"
55
+ ],
56
+ "shared": [
57
+ "Shared interactions",
58
+ "공통 인터랙션"
59
+ ]
60
+ },
61
+ "entries": [
62
+ {
63
+ "id": "account-auth",
64
+ "category": "account",
65
+ "title": {
66
+ "en": "Account journey index",
67
+ "ko": "계정 여정 목록"
68
+ },
69
+ "keywords": [
70
+ "login",
71
+ "signup",
72
+ "authentication",
73
+ "password",
74
+ "sso",
75
+ "otp",
76
+ "로그인",
77
+ "가입",
78
+ "인증",
79
+ "비밀번호",
80
+ "دخول"
81
+ ],
82
+ "route": "/auth",
83
+ "states": [
84
+ {
85
+ "route": "/auth",
86
+ "state": "01-auth-index"
87
+ }
88
+ ],
89
+ "sourceFile": "app/(auth)/auth/page.tsx",
90
+ "evidence": "docs/design-system/ux-source-evidence/account-auth.json",
91
+ "status": "source-indexed",
92
+ "fragments": [
93
+ {
94
+ "id": "AuthIndexPage",
95
+ "line": 384
96
+ },
97
+ {
98
+ "id": "Stat",
99
+ "line": 506
100
+ },
101
+ {
102
+ "id": "Dot",
103
+ "line": 511
104
+ }
105
+ ],
106
+ "tokens": [
107
+ "--color-bg-default",
108
+ "--color-bg-subtle",
109
+ "--color-border-default",
110
+ "--color-border-muted",
111
+ "--color-text-brand",
112
+ "--color-text-muted",
113
+ "--color-text-primary",
114
+ "--color-text-secondary"
115
+ ]
116
+ },
117
+ {
118
+ "id": "account-forgot-password",
119
+ "category": "account",
120
+ "title": {
121
+ "en": "Password recovery",
122
+ "ko": "비밀번호 찾기"
123
+ },
124
+ "keywords": [
125
+ "login",
126
+ "signup",
127
+ "authentication",
128
+ "password",
129
+ "sso",
130
+ "otp",
131
+ "로그인",
132
+ "가입",
133
+ "인증",
134
+ "비밀번호",
135
+ "دخول"
136
+ ],
137
+ "route": "/forgot-password",
138
+ "states": [
139
+ {
140
+ "route": "/forgot-password",
141
+ "state": "04-forgot-default"
142
+ },
143
+ {
144
+ "route": "/forgot-password?state=sent",
145
+ "state": "04-forgot-sent"
146
+ },
147
+ {
148
+ "route": "/forgot-password?state=invalid",
149
+ "state": "04-forgot-invalid"
150
+ },
151
+ {
152
+ "route": "/forgot-password?state=expired",
153
+ "state": "04-forgot-expired"
154
+ }
155
+ ],
156
+ "sourceFile": "app/(auth)/forgot-password/page.tsx",
157
+ "evidence": "docs/design-system/ux-source-evidence/account-forgot-password.json",
158
+ "status": "source-indexed",
159
+ "fragments": [
160
+ {
161
+ "id": "ForgotPasswordPage",
162
+ "line": 13
163
+ },
164
+ {
165
+ "id": "BackToLogin",
166
+ "line": 153
167
+ }
168
+ ],
169
+ "tokens": [
170
+ "--color-bg-brand-muted",
171
+ "--color-border-default",
172
+ "--color-text-brand",
173
+ "--color-text-muted",
174
+ "--color-text-primary",
175
+ "--color-text-secondary"
176
+ ]
177
+ },
178
+ {
179
+ "id": "account-invite",
180
+ "category": "account",
181
+ "title": {
182
+ "en": "Invitation acceptance",
183
+ "ko": "초대 수락"
184
+ },
185
+ "keywords": [
186
+ "login",
187
+ "signup",
188
+ "authentication",
189
+ "password",
190
+ "sso",
191
+ "otp",
192
+ "로그인",
193
+ "가입",
194
+ "인증",
195
+ "비밀번호",
196
+ "دخول"
197
+ ],
198
+ "route": "/invite",
199
+ "states": [
200
+ {
201
+ "route": "/invite",
202
+ "state": "08-invite-new"
203
+ },
204
+ {
205
+ "route": "/invite?state=existing-user",
206
+ "state": "08-invite-existing"
207
+ },
208
+ {
209
+ "route": "/invite?state=code-entry",
210
+ "state": "08-invite-code-entry"
211
+ },
212
+ {
213
+ "route": "/invite?state=expired",
214
+ "state": "08-invite-expired"
215
+ }
216
+ ],
217
+ "sourceFile": "app/(auth)/invite/page.tsx",
218
+ "evidence": "docs/design-system/ux-source-evidence/account-invite.json",
219
+ "status": "source-indexed",
220
+ "fragments": [
221
+ {
222
+ "id": "InvitePage",
223
+ "line": 24
224
+ },
225
+ {
226
+ "id": "WorkspaceBadge",
227
+ "line": 36
228
+ },
229
+ {
230
+ "id": "NewUserView",
231
+ "line": 62
232
+ },
233
+ {
234
+ "id": "ExistingUserView",
235
+ "line": 108
236
+ },
237
+ {
238
+ "id": "CodeEntryView",
239
+ "line": 141
240
+ },
241
+ {
242
+ "id": "ExpiredView",
243
+ "line": 176
244
+ }
245
+ ],
246
+ "tokens": [
247
+ "--color-bg-brand-muted",
248
+ "--color-bg-subtle",
249
+ "--color-border-default",
250
+ "--color-border-muted",
251
+ "--color-status-error-bg",
252
+ "--color-status-error-border",
253
+ "--color-status-error-text",
254
+ "--color-text-brand",
255
+ "--color-text-muted",
256
+ "--color-text-primary",
257
+ "--color-text-secondary",
258
+ "--gray-950",
259
+ "--teal-500"
260
+ ]
261
+ },
262
+ {
263
+ "id": "account-locked",
264
+ "category": "account",
265
+ "title": {
266
+ "en": "Account protection",
267
+ "ko": "계정 보호"
268
+ },
269
+ "keywords": [
270
+ "login",
271
+ "signup",
272
+ "authentication",
273
+ "password",
274
+ "sso",
275
+ "otp",
276
+ "로그인",
277
+ "가입",
278
+ "인증",
279
+ "비밀번호",
280
+ "دخول"
281
+ ],
282
+ "route": "/locked",
283
+ "states": [
284
+ {
285
+ "route": "/locked",
286
+ "state": "09-locked-attempts"
287
+ },
288
+ {
289
+ "route": "/locked?state=suspicious",
290
+ "state": "09-locked-suspicious"
291
+ },
292
+ {
293
+ "route": "/locked?state=device-verify",
294
+ "state": "09-locked-device-verify"
295
+ },
296
+ {
297
+ "route": "/locked?state=confirm-action",
298
+ "state": "09-locked-confirm"
299
+ }
300
+ ],
301
+ "sourceFile": "app/(auth)/locked/page.tsx",
302
+ "evidence": "docs/design-system/ux-source-evidence/account-locked.json",
303
+ "status": "source-indexed",
304
+ "fragments": [
305
+ {
306
+ "id": "LockedPage",
307
+ "line": 12
308
+ },
309
+ {
310
+ "id": "TooManyAttemptsView",
311
+ "line": 24
312
+ },
313
+ {
314
+ "id": "SuspiciousLoginView",
315
+ "line": 77
316
+ },
317
+ {
318
+ "id": "DeviceVerifyView",
319
+ "line": 123
320
+ },
321
+ {
322
+ "id": "ConfirmActionView",
323
+ "line": 172
324
+ },
325
+ {
326
+ "id": "ConfirmModal",
327
+ "line": 180
328
+ }
329
+ ],
330
+ "tokens": [
331
+ "--amber-500",
332
+ "--color-bg-brand-muted",
333
+ "--color-bg-default",
334
+ "--color-bg-subtle",
335
+ "--color-border-default",
336
+ "--color-border-muted",
337
+ "--color-status-warning-bg",
338
+ "--color-status-warning-border",
339
+ "--color-status-warning-text",
340
+ "--color-text-brand",
341
+ "--color-text-muted",
342
+ "--color-text-primary",
343
+ "--color-text-secondary",
344
+ "--gray-950"
345
+ ]
346
+ },
347
+ {
348
+ "id": "account-login",
349
+ "category": "account",
350
+ "title": {
351
+ "en": "Password and email-link sign in",
352
+ "ko": "비밀번호·이메일 링크 로그인"
353
+ },
354
+ "keywords": [
355
+ "login",
356
+ "signup",
357
+ "authentication",
358
+ "password",
359
+ "sso",
360
+ "otp",
361
+ "로그인",
362
+ "가입",
363
+ "인증",
364
+ "비밀번호",
365
+ "دخول"
366
+ ],
367
+ "route": "/login",
368
+ "states": [
369
+ {
370
+ "route": "/login",
371
+ "state": "02-login-default"
372
+ },
373
+ {
374
+ "route": "/login?state=error",
375
+ "state": "02-login-error"
376
+ },
377
+ {
378
+ "route": "/login?state=suspended",
379
+ "state": "02-login-suspended"
380
+ },
381
+ {
382
+ "route": "/login?state=magic-sent",
383
+ "state": "02-login-magic-sent"
384
+ }
385
+ ],
386
+ "sourceFile": "app/(auth)/login/page.tsx",
387
+ "evidence": "docs/design-system/ux-source-evidence/account-login.json",
388
+ "status": "source-indexed",
389
+ "fragments": [
390
+ {
391
+ "id": "LoginPage",
392
+ "line": 16
393
+ }
394
+ ],
395
+ "tokens": [
396
+ "--color-text-brand",
397
+ "--color-text-muted",
398
+ "--color-text-secondary"
399
+ ]
400
+ },
401
+ {
402
+ "id": "account-mfa",
403
+ "category": "account",
404
+ "title": {
405
+ "en": "Two-factor authentication",
406
+ "ko": "2단계 인증"
407
+ },
408
+ "keywords": [
409
+ "login",
410
+ "signup",
411
+ "authentication",
412
+ "password",
413
+ "sso",
414
+ "otp",
415
+ "로그인",
416
+ "가입",
417
+ "인증",
418
+ "비밀번호",
419
+ "دخول"
420
+ ],
421
+ "route": "/mfa",
422
+ "states": [
423
+ {
424
+ "route": "/mfa",
425
+ "state": "07-mfa-default"
426
+ },
427
+ {
428
+ "route": "/mfa?mode=setup",
429
+ "state": "07-mfa-setup"
430
+ },
431
+ {
432
+ "route": "/mfa?mode=backup",
433
+ "state": "07-mfa-backup"
434
+ },
435
+ {
436
+ "route": "/mfa?mode=recovery",
437
+ "state": "07-mfa-recovery"
438
+ }
439
+ ],
440
+ "sourceFile": "app/(auth)/mfa/page.tsx",
441
+ "evidence": "docs/design-system/ux-source-evidence/account-mfa.json",
442
+ "status": "source-indexed",
443
+ "fragments": [
444
+ {
445
+ "id": "MfaPage",
446
+ "line": 14
447
+ },
448
+ {
449
+ "id": "VerifyView",
450
+ "line": 27
451
+ },
452
+ {
453
+ "id": "SetupView",
454
+ "line": 95
455
+ },
456
+ {
457
+ "id": "BackupCodesView",
458
+ "line": 171
459
+ },
460
+ {
461
+ "id": "BackupCodesPanel",
462
+ "line": 183
463
+ },
464
+ {
465
+ "id": "RecoveryView",
466
+ "line": 211
467
+ },
468
+ {
469
+ "id": "QrPlaceholder",
470
+ "line": 233
471
+ }
472
+ ],
473
+ "tokens": [
474
+ "--color-bg-subtle",
475
+ "--color-border-default",
476
+ "--color-border-muted",
477
+ "--color-text-brand",
478
+ "--color-text-muted",
479
+ "--color-text-primary",
480
+ "--color-text-secondary"
481
+ ]
482
+ },
483
+ {
484
+ "id": "account-onboarding-credentials",
485
+ "category": "onboarding",
486
+ "title": {
487
+ "en": "Credential and document submission",
488
+ "ko": "자격·문서 제출"
489
+ },
490
+ "keywords": [
491
+ "onboarding",
492
+ "setup",
493
+ "step",
494
+ "wizard",
495
+ "온보딩",
496
+ "설정",
497
+ "단계",
498
+ "시작",
499
+ "إعداد"
500
+ ],
501
+ "route": "/onboarding/credentials",
502
+ "states": [
503
+ {
504
+ "route": "/onboarding/credentials?role=trainee",
505
+ "state": "08-credentials-trainee"
506
+ },
507
+ {
508
+ "route": "/onboarding/credentials?role=mentor",
509
+ "state": "09-credentials-mentor"
510
+ },
511
+ {
512
+ "route": "/onboarding/credentials?role=sponsor",
513
+ "state": "10-credentials-sponsor"
514
+ }
515
+ ],
516
+ "sourceFile": "app/(auth)/onboarding/credentials/page.tsx",
517
+ "evidence": "docs/design-system/ux-source-evidence/account-onboarding-credentials.json",
518
+ "status": "source-indexed",
519
+ "fragments": [
520
+ {
521
+ "id": "CredentialsPage",
522
+ "line": 44
523
+ },
524
+ {
525
+ "id": "TraineeCredentials",
526
+ "line": 55
527
+ },
528
+ {
529
+ "id": "MentorCredentials",
530
+ "line": 178
531
+ },
532
+ {
533
+ "id": "SectionHeader",
534
+ "line": 296
535
+ },
536
+ {
537
+ "id": "SponsorQuestionnaire",
538
+ "line": 306
539
+ }
540
+ ],
541
+ "tokens": [
542
+ "--color-bg-brand-muted",
543
+ "--color-border-brand",
544
+ "--color-border-default",
545
+ "--color-text-brand",
546
+ "--color-text-muted",
547
+ "--color-text-primary",
548
+ "--color-text-secondary"
549
+ ]
550
+ },
551
+ {
552
+ "id": "account-onboarding-legal",
553
+ "category": "onboarding",
554
+ "title": {
555
+ "en": "Agreements and signatures",
556
+ "ko": "약관 동의·서명"
557
+ },
558
+ "keywords": [
559
+ "onboarding",
560
+ "setup",
561
+ "step",
562
+ "wizard",
563
+ "온보딩",
564
+ "설정",
565
+ "단계",
566
+ "시작",
567
+ "إعداد"
568
+ ],
569
+ "route": "/onboarding/legal",
570
+ "states": [
571
+ {
572
+ "route": "/onboarding/legal?role=trainee",
573
+ "state": "11-legal-trainee"
574
+ },
575
+ {
576
+ "route": "/onboarding/legal?role=mentor",
577
+ "state": "12-legal-mentor"
578
+ },
579
+ {
580
+ "route": "/onboarding/legal?role=sponsor",
581
+ "state": "13-legal-sponsor"
582
+ }
583
+ ],
584
+ "sourceFile": "app/(auth)/onboarding/legal/page.tsx",
585
+ "evidence": "docs/design-system/ux-source-evidence/account-onboarding-legal.json",
586
+ "status": "source-indexed",
587
+ "fragments": [
588
+ {
589
+ "id": "LegalPage",
590
+ "line": 13
591
+ },
592
+ {
593
+ "id": "ContractRow",
594
+ "line": 24
595
+ },
596
+ {
597
+ "id": "TraineeLegal",
598
+ "line": 43
599
+ },
600
+ {
601
+ "id": "MentorLegal",
602
+ "line": 77
603
+ },
604
+ {
605
+ "id": "SponsorLegal",
606
+ "line": 112
607
+ },
608
+ {
609
+ "id": "AgreementCard",
610
+ "line": 155
611
+ }
612
+ ],
613
+ "tokens": [
614
+ "--color-bg-brand-muted",
615
+ "--color-bg-subtle",
616
+ "--color-border-brand",
617
+ "--color-border-default",
618
+ "--color-text-brand",
619
+ "--color-text-muted",
620
+ "--color-text-secondary"
621
+ ]
622
+ },
623
+ {
624
+ "id": "account-onboarding-orientation",
625
+ "category": "onboarding",
626
+ "title": {
627
+ "en": "Orientation checklist",
628
+ "ko": "시작 안내 체크리스트"
629
+ },
630
+ "keywords": [
631
+ "onboarding",
632
+ "setup",
633
+ "step",
634
+ "wizard",
635
+ "온보딩",
636
+ "설정",
637
+ "단계",
638
+ "시작",
639
+ "إعداد"
640
+ ],
641
+ "route": "/onboarding/orientation",
642
+ "states": [
643
+ {
644
+ "route": "/onboarding/orientation?role=trainee",
645
+ "state": "14-orientation-trainee"
646
+ },
647
+ {
648
+ "route": "/onboarding/orientation?role=mentor",
649
+ "state": "15-orientation-mentor"
650
+ },
651
+ {
652
+ "route": "/onboarding/orientation?role=sponsor",
653
+ "state": "16-orientation-sponsor"
654
+ }
655
+ ],
656
+ "sourceFile": "app/(auth)/onboarding/orientation/page.tsx",
657
+ "evidence": "docs/design-system/ux-source-evidence/account-onboarding-orientation.json",
658
+ "status": "source-indexed",
659
+ "fragments": [
660
+ {
661
+ "id": "OrientationPage",
662
+ "line": 10
663
+ },
664
+ {
665
+ "id": "finish",
666
+ "line": 19
667
+ },
668
+ {
669
+ "id": "TraineeOrientation",
670
+ "line": 23
671
+ },
672
+ {
673
+ "id": "MentorOrientation",
674
+ "line": 56
675
+ },
676
+ {
677
+ "id": "SponsorCreditSetup",
678
+ "line": 110
679
+ },
680
+ {
681
+ "id": "VideoCard",
682
+ "line": 194
683
+ },
684
+ {
685
+ "id": "AckCard",
686
+ "line": 225
687
+ }
688
+ ],
689
+ "tokens": [
690
+ "--color-bg-brand-muted",
691
+ "--color-bg-subtle",
692
+ "--color-border-brand",
693
+ "--color-border-default",
694
+ "--color-border-muted",
695
+ "--color-status-success-text",
696
+ "--color-text-brand",
697
+ "--color-text-muted",
698
+ "--color-text-primary",
699
+ "--color-text-secondary",
700
+ "--gray-950",
701
+ "--shadow-glow",
702
+ "--teal-500"
703
+ ]
704
+ },
705
+ {
706
+ "id": "account-onboarding",
707
+ "category": "onboarding",
708
+ "title": {
709
+ "en": "Setup progress hub",
710
+ "ko": "설정 진행 현황"
711
+ },
712
+ "keywords": [
713
+ "onboarding",
714
+ "setup",
715
+ "step",
716
+ "wizard",
717
+ "온보딩",
718
+ "설정",
719
+ "단계",
720
+ "시작",
721
+ "إعداد"
722
+ ],
723
+ "route": "/onboarding",
724
+ "states": [
725
+ {
726
+ "route": "/onboarding?role=trainee",
727
+ "state": "01-hub"
728
+ },
729
+ {
730
+ "route": "/onboarding?role=trainee&demo=midway",
731
+ "state": "02-hub-midway"
732
+ },
733
+ {
734
+ "route": "/onboarding?role=trainee&demo=review",
735
+ "state": "03-hub-review"
736
+ },
737
+ {
738
+ "route": "/onboarding?role=trainee&demo=complete",
739
+ "state": "04-hub-complete"
740
+ }
741
+ ],
742
+ "sourceFile": "app/(auth)/onboarding/page.tsx",
743
+ "evidence": "docs/design-system/ux-source-evidence/account-onboarding.json",
744
+ "status": "source-indexed",
745
+ "fragments": [
746
+ {
747
+ "id": "OnboardingHubPage",
748
+ "line": 26
749
+ },
750
+ {
751
+ "id": "StepCard",
752
+ "line": 159
753
+ },
754
+ {
755
+ "id": "StatusPill",
756
+ "line": 241
757
+ },
758
+ {
759
+ "id": "Pill",
760
+ "line": 247
761
+ },
762
+ {
763
+ "id": "ContinueButton",
764
+ "line": 265
765
+ },
766
+ {
767
+ "id": "RolePicker",
768
+ "line": 280
769
+ }
770
+ ],
771
+ "tokens": [
772
+ "--color-bg-brand-muted",
773
+ "--color-bg-subtle",
774
+ "--color-border-brand",
775
+ "--color-border-default",
776
+ "--color-border-muted",
777
+ "--color-status-info-bg",
778
+ "--color-status-info-text",
779
+ "--color-status-success-bg",
780
+ "--color-status-success-border",
781
+ "--color-status-success-text",
782
+ "--color-text-brand",
783
+ "--color-text-muted",
784
+ "--color-text-primary",
785
+ "--color-text-secondary",
786
+ "--gray-950",
787
+ "--green-500",
788
+ "--teal-500"
789
+ ]
790
+ },
791
+ {
792
+ "id": "account-onboarding-profile",
793
+ "category": "onboarding",
794
+ "title": {
795
+ "en": "Role-aware profile setup",
796
+ "ko": "역할별 프로필 설정"
797
+ },
798
+ "keywords": [
799
+ "onboarding",
800
+ "setup",
801
+ "step",
802
+ "wizard",
803
+ "온보딩",
804
+ "설정",
805
+ "단계",
806
+ "시작",
807
+ "إعداد"
808
+ ],
809
+ "route": "/onboarding/profile",
810
+ "states": [
811
+ {
812
+ "route": "/onboarding/profile?role=trainee",
813
+ "state": "05-profile-trainee"
814
+ },
815
+ {
816
+ "route": "/onboarding/profile?role=mentor",
817
+ "state": "06-profile-mentor"
818
+ },
819
+ {
820
+ "route": "/onboarding/profile?role=sponsor",
821
+ "state": "07-profile-sponsor"
822
+ }
823
+ ],
824
+ "sourceFile": "app/(auth)/onboarding/profile/page.tsx",
825
+ "evidence": "docs/design-system/ux-source-evidence/account-onboarding-profile.json",
826
+ "status": "source-indexed",
827
+ "fragments": [
828
+ {
829
+ "id": "OnboardingProfilePage",
830
+ "line": 32
831
+ },
832
+ {
833
+ "id": "PhotoUpload",
834
+ "line": 44
835
+ },
836
+ {
837
+ "id": "TraineeProfile",
838
+ "line": 83
839
+ },
840
+ {
841
+ "id": "MentorProfile",
842
+ "line": 128
843
+ },
844
+ {
845
+ "id": "SponsorProfile",
846
+ "line": 186
847
+ }
848
+ ],
849
+ "tokens": [
850
+ "--color-bg-subtle",
851
+ "--color-border-strong",
852
+ "--color-status-error-text",
853
+ "--color-text-muted",
854
+ "--teal-500"
855
+ ]
856
+ },
857
+ {
858
+ "id": "account-reset-password",
859
+ "category": "account",
860
+ "title": {
861
+ "en": "Set a new password",
862
+ "ko": "새 비밀번호 설정"
863
+ },
864
+ "keywords": [
865
+ "login",
866
+ "signup",
867
+ "authentication",
868
+ "password",
869
+ "sso",
870
+ "otp",
871
+ "로그인",
872
+ "가입",
873
+ "인증",
874
+ "비밀번호",
875
+ "دخول"
876
+ ],
877
+ "route": "/reset-password",
878
+ "states": [
879
+ {
880
+ "route": "/reset-password",
881
+ "state": "05-reset-default"
882
+ },
883
+ {
884
+ "route": "/reset-password?state=success",
885
+ "state": "05-reset-success"
886
+ },
887
+ {
888
+ "route": "/reset-password?state=expired",
889
+ "state": "05-reset-expired"
890
+ }
891
+ ],
892
+ "sourceFile": "app/(auth)/reset-password/page.tsx",
893
+ "evidence": "docs/design-system/ux-source-evidence/account-reset-password.json",
894
+ "status": "source-indexed",
895
+ "fragments": [
896
+ {
897
+ "id": "ResetPasswordPage",
898
+ "line": 14
899
+ }
900
+ ],
901
+ "tokens": [
902
+ "--color-status-success-bg",
903
+ "--color-status-success-text",
904
+ "--color-text-secondary"
905
+ ]
906
+ },
907
+ {
908
+ "id": "account-session-expired",
909
+ "category": "account",
910
+ "title": {
911
+ "en": "Session recovery",
912
+ "ko": "세션 복구"
913
+ },
914
+ "keywords": [
915
+ "login",
916
+ "signup",
917
+ "authentication",
918
+ "password",
919
+ "sso",
920
+ "otp",
921
+ "로그인",
922
+ "가입",
923
+ "인증",
924
+ "비밀번호",
925
+ "دخول"
926
+ ],
927
+ "route": "/session-expired",
928
+ "states": [
929
+ {
930
+ "route": "/session-expired",
931
+ "state": "10-session-modal"
932
+ },
933
+ {
934
+ "route": "/session-expired?state=expired-full",
935
+ "state": "10-session-full"
936
+ },
937
+ {
938
+ "route": "/session-expired?state=logged-out",
939
+ "state": "10-session-logout"
940
+ },
941
+ {
942
+ "route": "/session-expired?state=concurrent",
943
+ "state": "10-session-concurrent"
944
+ }
945
+ ],
946
+ "sourceFile": "app/(auth)/session-expired/page.tsx",
947
+ "evidence": "docs/design-system/ux-source-evidence/account-session-expired.json",
948
+ "status": "source-indexed",
949
+ "fragments": [
950
+ {
951
+ "id": "SessionExpiredPage",
952
+ "line": 13
953
+ },
954
+ {
955
+ "id": "ExpiredModalView",
956
+ "line": 25
957
+ },
958
+ {
959
+ "id": "FakeAppBackdrop",
960
+ "line": 71
961
+ },
962
+ {
963
+ "id": "ExpiredFullView",
964
+ "line": 98
965
+ },
966
+ {
967
+ "id": "LoggedOutView",
968
+ "line": 113
969
+ },
970
+ {
971
+ "id": "ConcurrentSessionView",
972
+ "line": 144
973
+ }
974
+ ],
975
+ "tokens": [
976
+ "--color-bg-brand-muted",
977
+ "--color-bg-default",
978
+ "--color-bg-subtle",
979
+ "--color-bg-ui",
980
+ "--color-border-default",
981
+ "--color-border-muted",
982
+ "--color-status-error-text",
983
+ "--color-text-brand",
984
+ "--color-text-muted",
985
+ "--color-text-primary",
986
+ "--color-text-secondary",
987
+ "--gray-950"
988
+ ]
989
+ },
990
+ {
991
+ "id": "account-signup",
992
+ "category": "account",
993
+ "title": {
994
+ "en": "Role-based sign up",
995
+ "ko": "역할 선택과 회원가입"
996
+ },
997
+ "keywords": [
998
+ "login",
999
+ "signup",
1000
+ "authentication",
1001
+ "password",
1002
+ "sso",
1003
+ "otp",
1004
+ "로그인",
1005
+ "가입",
1006
+ "인증",
1007
+ "비밀번호",
1008
+ "دخول"
1009
+ ],
1010
+ "route": "/signup",
1011
+ "states": [
1012
+ {
1013
+ "route": "/signup",
1014
+ "state": "03-signup-default"
1015
+ },
1016
+ {
1017
+ "route": "/signup?state=email-taken",
1018
+ "state": "03-signup-email-taken"
1019
+ },
1020
+ {
1021
+ "route": "/signup?state=invite-only",
1022
+ "state": "03-signup-invite-only"
1023
+ }
1024
+ ],
1025
+ "sourceFile": "app/(auth)/signup/page.tsx",
1026
+ "evidence": "docs/design-system/ux-source-evidence/account-signup.json",
1027
+ "status": "source-indexed",
1028
+ "fragments": [
1029
+ {
1030
+ "id": "SignupPage",
1031
+ "line": 23
1032
+ }
1033
+ ],
1034
+ "tokens": [
1035
+ "--color-bg-brand-muted",
1036
+ "--color-border-brand",
1037
+ "--color-border-default",
1038
+ "--color-text-brand",
1039
+ "--color-text-muted",
1040
+ "--color-text-primary",
1041
+ "--color-text-secondary",
1042
+ "--teal-500"
1043
+ ]
1044
+ },
1045
+ {
1046
+ "id": "account-verify-email",
1047
+ "category": "account",
1048
+ "title": {
1049
+ "en": "Verify email",
1050
+ "ko": "이메일 인증"
1051
+ },
1052
+ "keywords": [
1053
+ "login",
1054
+ "signup",
1055
+ "authentication",
1056
+ "password",
1057
+ "sso",
1058
+ "otp",
1059
+ "로그인",
1060
+ "가입",
1061
+ "인증",
1062
+ "비밀번호",
1063
+ "دخول"
1064
+ ],
1065
+ "route": "/verify-email",
1066
+ "states": [
1067
+ {
1068
+ "route": "/verify-email",
1069
+ "state": "06-verify-default"
1070
+ },
1071
+ {
1072
+ "route": "/verify-email?state=success",
1073
+ "state": "06-verify-success"
1074
+ },
1075
+ {
1076
+ "route": "/verify-email?state=expired",
1077
+ "state": "06-verify-expired"
1078
+ }
1079
+ ],
1080
+ "sourceFile": "app/(auth)/verify-email/page.tsx",
1081
+ "evidence": "docs/design-system/ux-source-evidence/account-verify-email.json",
1082
+ "status": "source-indexed",
1083
+ "fragments": [
1084
+ {
1085
+ "id": "VerifyEmailPage",
1086
+ "line": 13
1087
+ }
1088
+ ],
1089
+ "tokens": [
1090
+ "--color-bg-brand-muted",
1091
+ "--color-border-default",
1092
+ "--color-border-muted",
1093
+ "--color-status-success-bg",
1094
+ "--color-status-success-text",
1095
+ "--color-text-brand",
1096
+ "--color-text-muted",
1097
+ "--color-text-secondary",
1098
+ "--teal-500"
1099
+ ]
1100
+ },
1101
+ {
1102
+ "id": "account-welcome",
1103
+ "category": "account",
1104
+ "title": {
1105
+ "en": "Welcome and next steps",
1106
+ "ko": "환영과 다음 단계"
1107
+ },
1108
+ "keywords": [
1109
+ "login",
1110
+ "signup",
1111
+ "authentication",
1112
+ "password",
1113
+ "sso",
1114
+ "otp",
1115
+ "로그인",
1116
+ "가입",
1117
+ "인증",
1118
+ "비밀번호",
1119
+ "دخول"
1120
+ ],
1121
+ "route": "/welcome",
1122
+ "states": [
1123
+ {
1124
+ "route": "/welcome",
1125
+ "state": "11-welcome"
1126
+ }
1127
+ ],
1128
+ "sourceFile": "app/(auth)/welcome/page.tsx",
1129
+ "evidence": "docs/design-system/ux-source-evidence/account-welcome.json",
1130
+ "status": "source-indexed",
1131
+ "fragments": [
1132
+ {
1133
+ "id": "WelcomePage",
1134
+ "line": 13
1135
+ },
1136
+ {
1137
+ "id": "CelebrateView",
1138
+ "line": 23
1139
+ },
1140
+ {
1141
+ "id": "RedirectView",
1142
+ "line": 65
1143
+ }
1144
+ ],
1145
+ "tokens": [
1146
+ "--color-bg-default",
1147
+ "--color-status-success-bg",
1148
+ "--color-status-success-text",
1149
+ "--color-text-muted",
1150
+ "--color-text-secondary",
1151
+ "--teal-400",
1152
+ "--teal-500"
1153
+ ]
1154
+ },
1155
+ {
1156
+ "id": "admin-analytics",
1157
+ "category": "operations",
1158
+ "title": {
1159
+ "en": "Operational analytics",
1160
+ "ko": "운영 분석"
1161
+ },
1162
+ "keywords": [
1163
+ "review",
1164
+ "approve",
1165
+ "queue",
1166
+ "audit",
1167
+ "incident",
1168
+ "device",
1169
+ "검토",
1170
+ "승인",
1171
+ "대기열",
1172
+ "감사",
1173
+ "기기",
1174
+ "운영",
1175
+ "مراجعة"
1176
+ ],
1177
+ "route": "/admin/analytics",
1178
+ "states": [
1179
+ {
1180
+ "route": "/admin/analytics",
1181
+ "state": "18-analytics"
1182
+ }
1183
+ ],
1184
+ "sourceFile": "app/admin/analytics/page.tsx",
1185
+ "evidence": "docs/design-system/ux-source-evidence/admin-analytics.json",
1186
+ "status": "source-indexed",
1187
+ "fragments": [
1188
+ {
1189
+ "id": "AnalyticsPage",
1190
+ "line": 36
1191
+ },
1192
+ {
1193
+ "id": "KpiCard",
1194
+ "line": 226
1195
+ },
1196
+ {
1197
+ "id": "QualityBar",
1198
+ "line": 243
1199
+ },
1200
+ {
1201
+ "id": "Row",
1202
+ "line": 258
1203
+ }
1204
+ ],
1205
+ "tokens": [
1206
+ "--amber-500",
1207
+ "--color-bg-brand-muted",
1208
+ "--color-bg-subtle",
1209
+ "--color-border-default",
1210
+ "--color-status-error-text",
1211
+ "--color-status-success-text",
1212
+ "--color-status-warning-text",
1213
+ "--color-text-brand",
1214
+ "--color-text-muted",
1215
+ "--color-text-secondary",
1216
+ "--red-500",
1217
+ "--teal-500"
1218
+ ]
1219
+ },
1220
+ {
1221
+ "id": "admin-audit",
1222
+ "category": "operations",
1223
+ "title": {
1224
+ "en": "Audit trail",
1225
+ "ko": "변경 이력"
1226
+ },
1227
+ "keywords": [
1228
+ "review",
1229
+ "approve",
1230
+ "queue",
1231
+ "audit",
1232
+ "incident",
1233
+ "device",
1234
+ "검토",
1235
+ "승인",
1236
+ "대기열",
1237
+ "감사",
1238
+ "기기",
1239
+ "운영",
1240
+ "مراجعة"
1241
+ ],
1242
+ "route": "/admin/audit",
1243
+ "states": [
1244
+ {
1245
+ "route": "/admin/audit",
1246
+ "state": "19-audit"
1247
+ }
1248
+ ],
1249
+ "sourceFile": "app/admin/audit/page.tsx",
1250
+ "evidence": "docs/design-system/ux-source-evidence/admin-audit.json",
1251
+ "status": "source-indexed",
1252
+ "fragments": [
1253
+ {
1254
+ "id": "AuditPage",
1255
+ "line": 22
1256
+ }
1257
+ ],
1258
+ "tokens": [
1259
+ "--color-bg-subtle",
1260
+ "--color-border-default",
1261
+ "--color-border-muted",
1262
+ "--color-text-muted",
1263
+ "--color-text-primary",
1264
+ "--color-text-secondary",
1265
+ "--teal-500"
1266
+ ]
1267
+ },
1268
+ {
1269
+ "id": "admin-broadcasts-new",
1270
+ "category": "media",
1271
+ "title": {
1272
+ "en": "Schedule a broadcast",
1273
+ "ko": "방송 예약"
1274
+ },
1275
+ "keywords": [
1276
+ "live",
1277
+ "video",
1278
+ "broadcast",
1279
+ "stream",
1280
+ "recording",
1281
+ "collaboration",
1282
+ "라이브",
1283
+ "방송",
1284
+ "영상",
1285
+ "실시간",
1286
+ "협업",
1287
+ "بث"
1288
+ ],
1289
+ "route": "/admin/broadcasts/new",
1290
+ "states": [
1291
+ {
1292
+ "route": "/admin/broadcasts/new",
1293
+ "state": "11-broadcasts-new"
1294
+ }
1295
+ ],
1296
+ "sourceFile": "app/admin/broadcasts/new/page.tsx",
1297
+ "evidence": "docs/design-system/ux-source-evidence/admin-broadcasts-new.json",
1298
+ "status": "source-indexed",
1299
+ "fragments": [
1300
+ {
1301
+ "id": "NewBroadcastPage",
1302
+ "line": 15
1303
+ }
1304
+ ],
1305
+ "tokens": [
1306
+ "--color-bg-brand-muted",
1307
+ "--color-border-brand",
1308
+ "--color-border-default",
1309
+ "--color-status-success-bg",
1310
+ "--color-status-success-text",
1311
+ "--color-text-brand",
1312
+ "--color-text-primary",
1313
+ "--color-text-secondary"
1314
+ ]
1315
+ },
1316
+ {
1317
+ "id": "admin-broadcasts",
1318
+ "category": "media",
1319
+ "title": {
1320
+ "en": "Broadcast management",
1321
+ "ko": "방송 관리"
1322
+ },
1323
+ "keywords": [
1324
+ "live",
1325
+ "video",
1326
+ "broadcast",
1327
+ "stream",
1328
+ "recording",
1329
+ "collaboration",
1330
+ "라이브",
1331
+ "방송",
1332
+ "영상",
1333
+ "실시간",
1334
+ "협업",
1335
+ "بث"
1336
+ ],
1337
+ "route": "/admin/broadcasts",
1338
+ "states": [
1339
+ {
1340
+ "route": "/admin/broadcasts",
1341
+ "state": "10-broadcasts"
1342
+ }
1343
+ ],
1344
+ "sourceFile": "app/admin/broadcasts/page.tsx",
1345
+ "evidence": "docs/design-system/ux-source-evidence/admin-broadcasts.json",
1346
+ "status": "source-indexed",
1347
+ "fragments": [
1348
+ {
1349
+ "id": "AdminBroadcastsPage",
1350
+ "line": 12
1351
+ },
1352
+ {
1353
+ "id": "Metric",
1354
+ "line": 100
1355
+ }
1356
+ ],
1357
+ "tokens": [
1358
+ "--color-bg-brand-muted",
1359
+ "--color-bg-subtle",
1360
+ "--color-status-error-bg",
1361
+ "--color-status-error-text",
1362
+ "--color-text-brand",
1363
+ "--color-text-muted",
1364
+ "--color-text-secondary",
1365
+ "--gray-0",
1366
+ "--gray-950",
1367
+ "--red-500",
1368
+ "--teal-500"
1369
+ ]
1370
+ },
1371
+ {
1372
+ "id": "admin-closures",
1373
+ "category": "operations",
1374
+ "title": {
1375
+ "en": "Completion review",
1376
+ "ko": "종료 검토"
1377
+ },
1378
+ "keywords": [
1379
+ "review",
1380
+ "approve",
1381
+ "queue",
1382
+ "audit",
1383
+ "incident",
1384
+ "device",
1385
+ "검토",
1386
+ "승인",
1387
+ "대기열",
1388
+ "감사",
1389
+ "기기",
1390
+ "운영",
1391
+ "مراجعة"
1392
+ ],
1393
+ "route": "/admin/closures",
1394
+ "states": [
1395
+ {
1396
+ "route": "/admin/closures",
1397
+ "state": "06-closures"
1398
+ }
1399
+ ],
1400
+ "sourceFile": "app/admin/closures/page.tsx",
1401
+ "evidence": "docs/design-system/ux-source-evidence/admin-closures.json",
1402
+ "status": "source-indexed",
1403
+ "fragments": [
1404
+ {
1405
+ "id": "ClosuresPage",
1406
+ "line": 15
1407
+ },
1408
+ {
1409
+ "id": "Metric",
1410
+ "line": 151
1411
+ },
1412
+ {
1413
+ "id": "FilterSelect",
1414
+ "line": 175
1415
+ }
1416
+ ],
1417
+ "tokens": [
1418
+ "--color-bg-brand-muted",
1419
+ "--color-bg-subtle",
1420
+ "--color-border-default",
1421
+ "--color-status-error-bg",
1422
+ "--color-status-error-text",
1423
+ "--color-status-success-bg",
1424
+ "--color-status-success-text",
1425
+ "--color-status-warning-bg",
1426
+ "--color-status-warning-text",
1427
+ "--color-text-brand",
1428
+ "--color-text-muted",
1429
+ "--color-text-primary",
1430
+ "--color-text-secondary",
1431
+ "--teal-500"
1432
+ ]
1433
+ },
1434
+ {
1435
+ "id": "admin-devices",
1436
+ "category": "operations",
1437
+ "title": {
1438
+ "en": "Device inventory",
1439
+ "ko": "기기 관리"
1440
+ },
1441
+ "keywords": [
1442
+ "review",
1443
+ "approve",
1444
+ "queue",
1445
+ "audit",
1446
+ "incident",
1447
+ "device",
1448
+ "검토",
1449
+ "승인",
1450
+ "대기열",
1451
+ "감사",
1452
+ "기기",
1453
+ "운영",
1454
+ "مراجعة"
1455
+ ],
1456
+ "route": "/admin/devices",
1457
+ "states": [
1458
+ {
1459
+ "route": "/admin/devices",
1460
+ "state": "08-devices"
1461
+ }
1462
+ ],
1463
+ "sourceFile": "app/admin/devices/page.tsx",
1464
+ "evidence": "docs/design-system/ux-source-evidence/admin-devices.json",
1465
+ "status": "source-indexed",
1466
+ "fragments": [
1467
+ {
1468
+ "id": "DevicesPage",
1469
+ "line": 23
1470
+ },
1471
+ {
1472
+ "id": "Stat",
1473
+ "line": 134
1474
+ },
1475
+ {
1476
+ "id": "FilterSelect",
1477
+ "line": 152
1478
+ }
1479
+ ],
1480
+ "tokens": [
1481
+ "--color-bg-brand-muted",
1482
+ "--color-bg-subtle",
1483
+ "--color-border-default",
1484
+ "--color-status-error-bg",
1485
+ "--color-status-error-text",
1486
+ "--color-status-success-bg",
1487
+ "--color-status-success-text",
1488
+ "--color-text-brand",
1489
+ "--color-text-muted",
1490
+ "--color-text-primary",
1491
+ "--color-text-secondary",
1492
+ "--red-500",
1493
+ "--teal-500"
1494
+ ]
1495
+ },
1496
+ {
1497
+ "id": "admin-escalations",
1498
+ "category": "operations",
1499
+ "title": {
1500
+ "en": "Escalation triage",
1501
+ "ko": "에스컬레이션 분류"
1502
+ },
1503
+ "keywords": [
1504
+ "review",
1505
+ "approve",
1506
+ "queue",
1507
+ "audit",
1508
+ "incident",
1509
+ "device",
1510
+ "검토",
1511
+ "승인",
1512
+ "대기열",
1513
+ "감사",
1514
+ "기기",
1515
+ "운영",
1516
+ "مراجعة"
1517
+ ],
1518
+ "route": "/admin/escalations",
1519
+ "states": [
1520
+ {
1521
+ "route": "/admin/escalations",
1522
+ "state": "05-escalations"
1523
+ }
1524
+ ],
1525
+ "sourceFile": "app/admin/escalations/page.tsx",
1526
+ "evidence": "docs/design-system/ux-source-evidence/admin-escalations.json",
1527
+ "status": "source-indexed",
1528
+ "fragments": [
1529
+ {
1530
+ "id": "EscalationsPage",
1531
+ "line": 17
1532
+ }
1533
+ ],
1534
+ "tokens": [
1535
+ "--color-bg-subtle",
1536
+ "--color-status-error-text",
1537
+ "--color-status-warning-text",
1538
+ "--color-text-muted",
1539
+ "--color-text-secondary"
1540
+ ]
1541
+ },
1542
+ {
1543
+ "id": "admin-incidents",
1544
+ "category": "operations",
1545
+ "title": {
1546
+ "en": "Incident tracking",
1547
+ "ko": "사고 추적"
1548
+ },
1549
+ "keywords": [
1550
+ "review",
1551
+ "approve",
1552
+ "queue",
1553
+ "audit",
1554
+ "incident",
1555
+ "device",
1556
+ "검토",
1557
+ "승인",
1558
+ "대기열",
1559
+ "감사",
1560
+ "기기",
1561
+ "운영",
1562
+ "مراجعة"
1563
+ ],
1564
+ "route": "/admin/incidents",
1565
+ "states": [
1566
+ {
1567
+ "route": "/admin/incidents",
1568
+ "state": "07-incidents"
1569
+ }
1570
+ ],
1571
+ "sourceFile": "app/admin/incidents/page.tsx",
1572
+ "evidence": "docs/design-system/ux-source-evidence/admin-incidents.json",
1573
+ "status": "source-indexed",
1574
+ "fragments": [
1575
+ {
1576
+ "id": "IncidentsPage",
1577
+ "line": 26
1578
+ },
1579
+ {
1580
+ "id": "Stat",
1581
+ "line": 146
1582
+ },
1583
+ {
1584
+ "id": "FilterSelect",
1585
+ "line": 164
1586
+ }
1587
+ ],
1588
+ "tokens": [
1589
+ "--color-bg-brand-muted",
1590
+ "--color-bg-subtle",
1591
+ "--color-border-default",
1592
+ "--color-status-error-bg",
1593
+ "--color-status-error-text",
1594
+ "--color-status-success-bg",
1595
+ "--color-status-success-text",
1596
+ "--color-status-warning-bg",
1597
+ "--color-status-warning-text",
1598
+ "--color-text-brand",
1599
+ "--color-text-muted",
1600
+ "--color-text-primary",
1601
+ "--color-text-secondary",
1602
+ "--gray-0",
1603
+ "--red-500",
1604
+ "--teal-500"
1605
+ ]
1606
+ },
1607
+ {
1608
+ "id": "admin-onboarding-detail",
1609
+ "category": "operations",
1610
+ "title": {
1611
+ "en": "Application detail and decision",
1612
+ "ko": "신청 상세와 심사 결정"
1613
+ },
1614
+ "keywords": [
1615
+ "review",
1616
+ "approve",
1617
+ "queue",
1618
+ "audit",
1619
+ "incident",
1620
+ "device",
1621
+ "검토",
1622
+ "승인",
1623
+ "대기열",
1624
+ "감사",
1625
+ "기기",
1626
+ "운영",
1627
+ "مراجعة"
1628
+ ],
1629
+ "route": "/admin/onboarding/[id]",
1630
+ "states": [
1631
+ {
1632
+ "route": "/admin/onboarding/app-001",
1633
+ "state": "02-mentor-review"
1634
+ },
1635
+ {
1636
+ "route": "/admin/onboarding/app-101",
1637
+ "state": "03-trainee-review"
1638
+ },
1639
+ {
1640
+ "route": "/admin/onboarding/app-104",
1641
+ "state": "04-trainee-hardware"
1642
+ }
1643
+ ],
1644
+ "sourceFile": "app/admin/onboarding/[id]/page.tsx",
1645
+ "evidence": "docs/design-system/ux-source-evidence/admin-onboarding-detail.json",
1646
+ "status": "source-indexed",
1647
+ "fragments": [
1648
+ {
1649
+ "id": "ApplicationDetailPage",
1650
+ "line": 26
1651
+ },
1652
+ {
1653
+ "id": "MavChecklist",
1654
+ "line": 101
1655
+ },
1656
+ {
1657
+ "id": "ResultIcon",
1658
+ "line": 216
1659
+ },
1660
+ {
1661
+ "id": "resultColor",
1662
+ "line": 223
1663
+ },
1664
+ {
1665
+ "id": "HardwareReadinessPanel",
1666
+ "line": 232
1667
+ },
1668
+ {
1669
+ "id": "ApplicantInfoCard",
1670
+ "line": 337
1671
+ },
1672
+ {
1673
+ "id": "Row2",
1674
+ "line": 358
1675
+ },
1676
+ {
1677
+ "id": "AuditLogCard",
1678
+ "line": 369
1679
+ }
1680
+ ],
1681
+ "tokens": [
1682
+ "--color-bg-subtle",
1683
+ "--color-border-default",
1684
+ "--color-border-muted",
1685
+ "--color-status-error-bg",
1686
+ "--color-status-error-text",
1687
+ "--color-status-success-bg",
1688
+ "--color-status-success-text",
1689
+ "--color-status-warning-bg",
1690
+ "--color-status-warning-text",
1691
+ "--color-text-muted",
1692
+ "--color-text-primary",
1693
+ "--color-text-secondary",
1694
+ "--gray-950",
1695
+ "--teal-500"
1696
+ ]
1697
+ },
1698
+ {
1699
+ "id": "admin-onboarding",
1700
+ "category": "operations",
1701
+ "title": {
1702
+ "en": "Application review queue",
1703
+ "ko": "신청 심사 대기열"
1704
+ },
1705
+ "keywords": [
1706
+ "review",
1707
+ "approve",
1708
+ "queue",
1709
+ "audit",
1710
+ "incident",
1711
+ "device",
1712
+ "검토",
1713
+ "승인",
1714
+ "대기열",
1715
+ "감사",
1716
+ "기기",
1717
+ "운영",
1718
+ "مراجعة"
1719
+ ],
1720
+ "route": "/admin/onboarding",
1721
+ "states": [
1722
+ {
1723
+ "route": "/admin/onboarding",
1724
+ "state": "01-onboarding-queue"
1725
+ }
1726
+ ],
1727
+ "sourceFile": "app/admin/onboarding/page.tsx",
1728
+ "evidence": "docs/design-system/ux-source-evidence/admin-onboarding.json",
1729
+ "status": "source-indexed",
1730
+ "fragments": [
1731
+ {
1732
+ "id": "OnboardingDashboardPage",
1733
+ "line": 19
1734
+ },
1735
+ {
1736
+ "id": "MetricCard",
1737
+ "line": 147
1738
+ },
1739
+ {
1740
+ "id": "FilterButton",
1741
+ "line": 171
1742
+ },
1743
+ {
1744
+ "id": "Row",
1745
+ "line": 189
1746
+ },
1747
+ {
1748
+ "id": "SlaCell",
1749
+ "line": 223
1750
+ }
1751
+ ],
1752
+ "tokens": [
1753
+ "--color-bg-brand-muted",
1754
+ "--color-bg-subtle",
1755
+ "--color-border-default",
1756
+ "--color-status-error-bg",
1757
+ "--color-status-error-text",
1758
+ "--color-status-warning-bg",
1759
+ "--color-status-warning-text",
1760
+ "--color-text-brand",
1761
+ "--color-text-muted",
1762
+ "--color-text-primary",
1763
+ "--color-text-secondary",
1764
+ "--teal-500"
1765
+ ]
1766
+ },
1767
+ {
1768
+ "id": "admin-payments",
1769
+ "category": "billing",
1770
+ "title": {
1771
+ "en": "Payment runs",
1772
+ "ko": "지급 처리"
1773
+ },
1774
+ "keywords": [
1775
+ "billing",
1776
+ "credit",
1777
+ "payment",
1778
+ "invoice",
1779
+ "subscription",
1780
+ "allocation",
1781
+ "결제",
1782
+ "구독",
1783
+ "청구",
1784
+ "배분",
1785
+ "크레딧",
1786
+ "دفع"
1787
+ ],
1788
+ "route": "/admin/payments",
1789
+ "states": [
1790
+ {
1791
+ "route": "/admin/payments",
1792
+ "state": "12-payments"
1793
+ }
1794
+ ],
1795
+ "sourceFile": "app/admin/payments/page.tsx",
1796
+ "evidence": "docs/design-system/ux-source-evidence/admin-payments.json",
1797
+ "status": "source-indexed",
1798
+ "fragments": [
1799
+ {
1800
+ "id": "PaymentsPage",
1801
+ "line": 20
1802
+ },
1803
+ {
1804
+ "id": "Total",
1805
+ "line": 131
1806
+ }
1807
+ ],
1808
+ "tokens": [
1809
+ "--color-bg-brand-muted",
1810
+ "--color-bg-subtle",
1811
+ "--color-border-default",
1812
+ "--color-status-info-bg",
1813
+ "--color-status-info-text",
1814
+ "--color-status-success-bg",
1815
+ "--color-status-success-text",
1816
+ "--color-status-warning-bg",
1817
+ "--color-status-warning-text",
1818
+ "--color-text-brand",
1819
+ "--color-text-muted",
1820
+ "--color-text-secondary",
1821
+ "--teal-500"
1822
+ ]
1823
+ },
1824
+ {
1825
+ "id": "admin-providers",
1826
+ "category": "operations",
1827
+ "title": {
1828
+ "en": "Integration provider status",
1829
+ "ko": "연동 서비스 상태"
1830
+ },
1831
+ "keywords": [
1832
+ "review",
1833
+ "approve",
1834
+ "queue",
1835
+ "audit",
1836
+ "incident",
1837
+ "device",
1838
+ "검토",
1839
+ "승인",
1840
+ "대기열",
1841
+ "감사",
1842
+ "기기",
1843
+ "운영",
1844
+ "مراجعة"
1845
+ ],
1846
+ "route": "/admin/providers",
1847
+ "states": [
1848
+ {
1849
+ "route": "/admin/providers",
1850
+ "state": "09-providers"
1851
+ }
1852
+ ],
1853
+ "sourceFile": "app/admin/providers/page.tsx",
1854
+ "evidence": "docs/design-system/ux-source-evidence/admin-providers.json",
1855
+ "status": "source-indexed",
1856
+ "fragments": [
1857
+ {
1858
+ "id": "ProvidersPage",
1859
+ "line": 11
1860
+ },
1861
+ {
1862
+ "id": "Row",
1863
+ "line": 73
1864
+ }
1865
+ ],
1866
+ "tokens": [
1867
+ "--color-bg-brand-muted",
1868
+ "--color-status-error-border",
1869
+ "--color-status-error-text",
1870
+ "--color-status-success-border",
1871
+ "--color-status-success-text",
1872
+ "--color-text-brand",
1873
+ "--color-text-muted",
1874
+ "--color-text-primary",
1875
+ "--color-text-secondary"
1876
+ ]
1877
+ },
1878
+ {
1879
+ "id": "admin-settings",
1880
+ "category": "settings",
1881
+ "title": {
1882
+ "en": "Account settings",
1883
+ "ko": "계정 설정"
1884
+ },
1885
+ "keywords": [
1886
+ "setting",
1887
+ "preference",
1888
+ "security",
1889
+ "account",
1890
+ "설정",
1891
+ "환경",
1892
+ "보안",
1893
+ "계정",
1894
+ "إعدادات"
1895
+ ],
1896
+ "route": "/admin/settings",
1897
+ "states": [],
1898
+ "sourceFile": "app/admin/settings/page.tsx",
1899
+ "evidence": "docs/design-system/ux-source-evidence/admin-settings.json",
1900
+ "status": "source-indexed",
1901
+ "fragments": [
1902
+ {
1903
+ "id": "AdminSettingsPage",
1904
+ "line": 4
1905
+ }
1906
+ ],
1907
+ "tokens": []
1908
+ },
1909
+ {
1910
+ "id": "admin-subscriptions-detail-allocate",
1911
+ "category": "billing",
1912
+ "title": {
1913
+ "en": "Allocate subscription resources",
1914
+ "ko": "구독 자원 배분"
1915
+ },
1916
+ "keywords": [
1917
+ "billing",
1918
+ "credit",
1919
+ "payment",
1920
+ "invoice",
1921
+ "subscription",
1922
+ "allocation",
1923
+ "결제",
1924
+ "구독",
1925
+ "청구",
1926
+ "배분",
1927
+ "크레딧",
1928
+ "دفع"
1929
+ ],
1930
+ "route": "/admin/subscriptions/[id]/allocate",
1931
+ "states": [
1932
+ {
1933
+ "route": "/admin/subscriptions/sub-001/allocate",
1934
+ "state": "16-subscription-allocate"
1935
+ }
1936
+ ],
1937
+ "sourceFile": "app/admin/subscriptions/[id]/allocate/page.tsx",
1938
+ "evidence": "docs/design-system/ux-source-evidence/admin-subscriptions-detail-allocate.json",
1939
+ "status": "source-indexed",
1940
+ "fragments": [
1941
+ {
1942
+ "id": "AllocatePage",
1943
+ "line": 17
1944
+ },
1945
+ {
1946
+ "id": "Stat",
1947
+ "line": 177
1948
+ }
1949
+ ],
1950
+ "tokens": [
1951
+ "--color-bg-subtle",
1952
+ "--color-status-error-text",
1953
+ "--color-status-success-bg",
1954
+ "--color-status-success-text",
1955
+ "--color-text-muted",
1956
+ "--color-text-primary",
1957
+ "--color-text-secondary"
1958
+ ]
1959
+ },
1960
+ {
1961
+ "id": "admin-subscriptions-detail",
1962
+ "category": "billing",
1963
+ "title": {
1964
+ "en": "Subscription detail",
1965
+ "ko": "구독 상세"
1966
+ },
1967
+ "keywords": [
1968
+ "billing",
1969
+ "credit",
1970
+ "payment",
1971
+ "invoice",
1972
+ "subscription",
1973
+ "allocation",
1974
+ "결제",
1975
+ "구독",
1976
+ "청구",
1977
+ "배분",
1978
+ "크레딧",
1979
+ "دفع"
1980
+ ],
1981
+ "route": "/admin/subscriptions/[id]",
1982
+ "states": [
1983
+ {
1984
+ "route": "/admin/subscriptions/sub-001",
1985
+ "state": "14-subscription-detail"
1986
+ }
1987
+ ],
1988
+ "sourceFile": "app/admin/subscriptions/[id]/page.tsx",
1989
+ "evidence": "docs/design-system/ux-source-evidence/admin-subscriptions-detail.json",
1990
+ "status": "source-indexed",
1991
+ "fragments": [
1992
+ {
1993
+ "id": "SubscriptionDetailPage",
1994
+ "line": 16
1995
+ },
1996
+ {
1997
+ "id": "Metric",
1998
+ "line": 180
1999
+ },
2000
+ {
2001
+ "id": "DRow",
2002
+ "line": 189
2003
+ }
2004
+ ],
2005
+ "tokens": [
2006
+ "--color-bg-subtle",
2007
+ "--color-border-default",
2008
+ "--color-status-error-text",
2009
+ "--color-text-muted",
2010
+ "--color-text-primary",
2011
+ "--color-text-secondary",
2012
+ "--gray-950",
2013
+ "--teal-300",
2014
+ "--teal-500"
2015
+ ]
2016
+ },
2017
+ {
2018
+ "id": "admin-subscriptions-new",
2019
+ "category": "billing",
2020
+ "title": {
2021
+ "en": "Create a subscription",
2022
+ "ko": "구독 등록"
2023
+ },
2024
+ "keywords": [
2025
+ "billing",
2026
+ "credit",
2027
+ "payment",
2028
+ "invoice",
2029
+ "subscription",
2030
+ "allocation",
2031
+ "결제",
2032
+ "구독",
2033
+ "청구",
2034
+ "배분",
2035
+ "크레딧",
2036
+ "دفع"
2037
+ ],
2038
+ "route": "/admin/subscriptions/new",
2039
+ "states": [
2040
+ {
2041
+ "route": "/admin/subscriptions/new",
2042
+ "state": "15-subscription-new"
2043
+ }
2044
+ ],
2045
+ "sourceFile": "app/admin/subscriptions/new/page.tsx",
2046
+ "evidence": "docs/design-system/ux-source-evidence/admin-subscriptions-new.json",
2047
+ "status": "source-indexed",
2048
+ "fragments": [
2049
+ {
2050
+ "id": "NewSubscriptionPage",
2051
+ "line": 15
2052
+ },
2053
+ {
2054
+ "id": "DRow",
2055
+ "line": 192
2056
+ }
2057
+ ],
2058
+ "tokens": [
2059
+ "--color-bg-brand-muted",
2060
+ "--color-border-brand",
2061
+ "--color-border-default",
2062
+ "--color-status-success-bg",
2063
+ "--color-status-success-text",
2064
+ "--color-text-brand",
2065
+ "--color-text-muted",
2066
+ "--color-text-primary",
2067
+ "--color-text-secondary",
2068
+ "--teal-500"
2069
+ ]
2070
+ },
2071
+ {
2072
+ "id": "admin-subscriptions",
2073
+ "category": "billing",
2074
+ "title": {
2075
+ "en": "Subscriptions list",
2076
+ "ko": "구독 목록"
2077
+ },
2078
+ "keywords": [
2079
+ "billing",
2080
+ "credit",
2081
+ "payment",
2082
+ "invoice",
2083
+ "subscription",
2084
+ "allocation",
2085
+ "결제",
2086
+ "구독",
2087
+ "청구",
2088
+ "배분",
2089
+ "크레딧",
2090
+ "دفع"
2091
+ ],
2092
+ "route": "/admin/subscriptions",
2093
+ "states": [
2094
+ {
2095
+ "route": "/admin/subscriptions",
2096
+ "state": "13-subscriptions"
2097
+ }
2098
+ ],
2099
+ "sourceFile": "app/admin/subscriptions/page.tsx",
2100
+ "evidence": "docs/design-system/ux-source-evidence/admin-subscriptions.json",
2101
+ "status": "source-indexed",
2102
+ "fragments": [
2103
+ {
2104
+ "id": "SubscriptionsListPage",
2105
+ "line": 15
2106
+ },
2107
+ {
2108
+ "id": "MetricCard",
2109
+ "line": 134
2110
+ }
2111
+ ],
2112
+ "tokens": [
2113
+ "--color-bg-subtle",
2114
+ "--color-border-default",
2115
+ "--color-status-error-text",
2116
+ "--color-status-warning-text",
2117
+ "--color-text-muted",
2118
+ "--color-text-primary",
2119
+ "--color-text-secondary",
2120
+ "--teal-500"
2121
+ ]
2122
+ },
2123
+ {
2124
+ "id": "admin-transactions",
2125
+ "category": "billing",
2126
+ "title": {
2127
+ "en": "Transaction ledger",
2128
+ "ko": "거래 원장"
2129
+ },
2130
+ "keywords": [
2131
+ "billing",
2132
+ "credit",
2133
+ "payment",
2134
+ "invoice",
2135
+ "subscription",
2136
+ "allocation",
2137
+ "결제",
2138
+ "구독",
2139
+ "청구",
2140
+ "배분",
2141
+ "크레딧",
2142
+ "دفع"
2143
+ ],
2144
+ "route": "/admin/transactions",
2145
+ "states": [
2146
+ {
2147
+ "route": "/admin/transactions",
2148
+ "state": "17-transactions"
2149
+ }
2150
+ ],
2151
+ "sourceFile": "app/admin/transactions/page.tsx",
2152
+ "evidence": "docs/design-system/ux-source-evidence/admin-transactions.json",
2153
+ "status": "source-indexed",
2154
+ "fragments": [
2155
+ {
2156
+ "id": "TransactionsPage",
2157
+ "line": 23
2158
+ },
2159
+ {
2160
+ "id": "TxnRow",
2161
+ "line": 115
2162
+ }
2163
+ ],
2164
+ "tokens": [
2165
+ "--color-bg-subtle",
2166
+ "--color-border-default",
2167
+ "--color-status-error-text",
2168
+ "--color-status-success-text",
2169
+ "--color-text-muted",
2170
+ "--color-text-primary",
2171
+ "--color-text-secondary",
2172
+ "--teal-500"
2173
+ ]
2174
+ },
2175
+ {
2176
+ "id": "marketing-blog",
2177
+ "category": "marketing",
2178
+ "title": {
2179
+ "en": "Article listing",
2180
+ "ko": "아티클 목록"
2181
+ },
2182
+ "keywords": [
2183
+ "landing",
2184
+ "contact",
2185
+ "blog",
2186
+ "public",
2187
+ "marketing",
2188
+ "랜딩",
2189
+ "문의",
2190
+ "블로그",
2191
+ "마케팅",
2192
+ "عام"
2193
+ ],
2194
+ "route": "/marketing/blog",
2195
+ "states": [
2196
+ {
2197
+ "route": "/marketing/blog",
2198
+ "state": "02-blog"
2199
+ }
2200
+ ],
2201
+ "sourceFile": "app/marketing/blog/page.tsx",
2202
+ "evidence": "docs/design-system/ux-source-evidence/marketing-blog.json",
2203
+ "status": "source-indexed",
2204
+ "fragments": [
2205
+ {
2206
+ "id": "CategoryBadge",
2207
+ "line": 102
2208
+ },
2209
+ {
2210
+ "id": "BlogPage",
2211
+ "line": 119
2212
+ }
2213
+ ],
2214
+ "tokens": [
2215
+ "--blue-500",
2216
+ "--blue-600",
2217
+ "--blue-700",
2218
+ "--color-bg-brand",
2219
+ "--color-bg-brand-muted",
2220
+ "--color-bg-default",
2221
+ "--color-bg-subtle",
2222
+ "--color-border-brand",
2223
+ "--color-border-default",
2224
+ "--color-text-brand",
2225
+ "--color-text-muted",
2226
+ "--color-text-on-brand",
2227
+ "--color-text-primary",
2228
+ "--color-text-secondary",
2229
+ "--green-500",
2230
+ "--green-700",
2231
+ "--teal-400",
2232
+ "--teal-500"
2233
+ ]
2234
+ },
2235
+ {
2236
+ "id": "marketing-contact",
2237
+ "category": "marketing",
2238
+ "title": {
2239
+ "en": "Contact form",
2240
+ "ko": "문의 양식"
2241
+ },
2242
+ "keywords": [
2243
+ "landing",
2244
+ "contact",
2245
+ "blog",
2246
+ "public",
2247
+ "marketing",
2248
+ "랜딩",
2249
+ "문의",
2250
+ "블로그",
2251
+ "마케팅",
2252
+ "عام"
2253
+ ],
2254
+ "route": "/marketing/contact",
2255
+ "states": [
2256
+ {
2257
+ "route": "/marketing/contact",
2258
+ "state": "03-contact"
2259
+ }
2260
+ ],
2261
+ "sourceFile": "app/marketing/contact/page.tsx",
2262
+ "evidence": "docs/design-system/ux-source-evidence/marketing-contact.json",
2263
+ "status": "source-indexed",
2264
+ "fragments": [
2265
+ {
2266
+ "id": "ContactPage",
2267
+ "line": 33
2268
+ }
2269
+ ],
2270
+ "tokens": [
2271
+ "--color-bg-brand",
2272
+ "--color-bg-brand-muted",
2273
+ "--color-bg-default",
2274
+ "--color-bg-subtle",
2275
+ "--color-border-default",
2276
+ "--color-text-brand",
2277
+ "--color-text-muted",
2278
+ "--color-text-on-brand",
2279
+ "--color-text-primary",
2280
+ "--color-text-secondary",
2281
+ "--teal-400",
2282
+ "--teal-500"
2283
+ ]
2284
+ },
2285
+ {
2286
+ "id": "marketing",
2287
+ "category": "marketing",
2288
+ "title": {
2289
+ "en": "Landing page sections",
2290
+ "ko": "랜딩 페이지 구성"
2291
+ },
2292
+ "keywords": [
2293
+ "landing",
2294
+ "contact",
2295
+ "blog",
2296
+ "public",
2297
+ "marketing",
2298
+ "랜딩",
2299
+ "문의",
2300
+ "블로그",
2301
+ "마케팅",
2302
+ "عام"
2303
+ ],
2304
+ "route": "/marketing",
2305
+ "states": [
2306
+ {
2307
+ "route": "/marketing",
2308
+ "state": "01-home"
2309
+ }
2310
+ ],
2311
+ "sourceFile": "app/marketing/page.tsx",
2312
+ "evidence": "docs/design-system/ux-source-evidence/marketing.json",
2313
+ "status": "source-indexed",
2314
+ "fragments": [
2315
+ {
2316
+ "id": "FAQItem",
2317
+ "line": 190
2318
+ },
2319
+ {
2320
+ "id": "PhotoCard",
2321
+ "line": 234
2322
+ },
2323
+ {
2324
+ "id": "FeatureCard",
2325
+ "line": 273
2326
+ },
2327
+ {
2328
+ "id": "MarketingPage",
2329
+ "line": 319
2330
+ }
2331
+ ],
2332
+ "tokens": [
2333
+ "--color-bg-brand-muted",
2334
+ "--color-bg-default",
2335
+ "--color-bg-subtle",
2336
+ "--color-border-brand",
2337
+ "--color-border-default",
2338
+ "--color-status-error-text",
2339
+ "--color-status-success-text",
2340
+ "--color-status-warning-text",
2341
+ "--color-text-brand",
2342
+ "--color-text-muted",
2343
+ "--color-text-primary",
2344
+ "--color-text-secondary",
2345
+ "--gray-950",
2346
+ "--red-500",
2347
+ "--shadow-glow",
2348
+ "--teal-400",
2349
+ "--teal-500"
2350
+ ]
2351
+ },
2352
+ {
2353
+ "id": "portal-mentor-messages",
2354
+ "category": "messaging",
2355
+ "title": {
2356
+ "en": "Conversation inbox",
2357
+ "ko": "대화와 메시지"
2358
+ },
2359
+ "keywords": [
2360
+ "chat",
2361
+ "message",
2362
+ "notification",
2363
+ "inbox",
2364
+ "conversation",
2365
+ "채팅",
2366
+ "메시지",
2367
+ "대화",
2368
+ "알림",
2369
+ "دردشة"
2370
+ ],
2371
+ "route": "/portal/mentor/messages",
2372
+ "states": [
2373
+ {
2374
+ "route": "/portal/mentor/messages",
2375
+ "state": "03-messages"
2376
+ }
2377
+ ],
2378
+ "sourceFile": "app/portal/mentor/messages/page.tsx",
2379
+ "evidence": "docs/design-system/ux-source-evidence/portal-mentor-messages.json",
2380
+ "status": "source-indexed",
2381
+ "fragments": [
2382
+ {
2383
+ "id": "MentorMessagesPage",
2384
+ "line": 14
2385
+ }
2386
+ ],
2387
+ "tokens": [
2388
+ "--color-bg-brand-muted",
2389
+ "--color-bg-subtle",
2390
+ "--color-border-muted",
2391
+ "--color-text-brand",
2392
+ "--color-text-muted",
2393
+ "--color-text-secondary",
2394
+ "--gray-950",
2395
+ "--teal-500"
2396
+ ]
2397
+ },
2398
+ {
2399
+ "id": "portal-mentor",
2400
+ "category": "dashboard",
2401
+ "title": {
2402
+ "en": "Service provider dashboard",
2403
+ "ko": "서비스 제공 현황"
2404
+ },
2405
+ "keywords": [
2406
+ "dashboard",
2407
+ "progress",
2408
+ "metric",
2409
+ "overview",
2410
+ "대시보드",
2411
+ "현황",
2412
+ "진행",
2413
+ "지표",
2414
+ "لوحة"
2415
+ ],
2416
+ "route": "/portal/mentor",
2417
+ "states": [
2418
+ {
2419
+ "route": "/portal/mentor",
2420
+ "state": "01-dashboard"
2421
+ }
2422
+ ],
2423
+ "sourceFile": "app/portal/mentor/page.tsx",
2424
+ "evidence": "docs/design-system/ux-source-evidence/portal-mentor.json",
2425
+ "status": "source-indexed",
2426
+ "fragments": [
2427
+ {
2428
+ "id": "MentorDashboardPage",
2429
+ "line": 15
2430
+ },
2431
+ {
2432
+ "id": "StatCard",
2433
+ "line": 153
2434
+ }
2435
+ ],
2436
+ "tokens": [
2437
+ "--color-bg-brand-muted",
2438
+ "--color-bg-subtle",
2439
+ "--color-status-warning-text",
2440
+ "--color-text-brand",
2441
+ "--color-text-muted",
2442
+ "--color-text-primary",
2443
+ "--color-text-secondary"
2444
+ ]
2445
+ },
2446
+ {
2447
+ "id": "portal-mentor-profile",
2448
+ "category": "directory",
2449
+ "title": {
2450
+ "en": "Profile editor",
2451
+ "ko": "프로필 편집"
2452
+ },
2453
+ "keywords": [
2454
+ "directory",
2455
+ "people",
2456
+ "profile",
2457
+ "member",
2458
+ "browse",
2459
+ "프로필",
2460
+ "구성원",
2461
+ "전문가",
2462
+ "검색",
2463
+ "أشخاص"
2464
+ ],
2465
+ "route": "/portal/mentor/profile",
2466
+ "states": [
2467
+ {
2468
+ "route": "/portal/mentor/profile",
2469
+ "state": "02-profile"
2470
+ }
2471
+ ],
2472
+ "sourceFile": "app/portal/mentor/profile/page.tsx",
2473
+ "evidence": "docs/design-system/ux-source-evidence/portal-mentor-profile.json",
2474
+ "status": "source-indexed",
2475
+ "fragments": [
2476
+ {
2477
+ "id": "MentorProfilePage",
2478
+ "line": 25
2479
+ }
2480
+ ],
2481
+ "tokens": []
2482
+ },
2483
+ {
2484
+ "id": "portal-mentor-requests-detail",
2485
+ "category": "scheduling",
2486
+ "title": {
2487
+ "en": "Accept, decline or propose a time",
2488
+ "ko": "수락·거절·일정 제안"
2489
+ },
2490
+ "keywords": [
2491
+ "schedule",
2492
+ "session",
2493
+ "booking",
2494
+ "calendar",
2495
+ "appointment",
2496
+ "일정",
2497
+ "세션",
2498
+ "예약",
2499
+ "평가",
2500
+ "جلسة"
2501
+ ],
2502
+ "route": "/portal/mentor/requests/[id]",
2503
+ "states": [
2504
+ {
2505
+ "route": "/portal/mentor/requests/req-001",
2506
+ "state": "04-request-specific"
2507
+ },
2508
+ {
2509
+ "route": "/portal/mentor/requests/req-002",
2510
+ "state": "05-request-broadcast"
2511
+ },
2512
+ {
2513
+ "route": "/portal/mentor/requests/req-003",
2514
+ "state": "06-request-escalated"
2515
+ }
2516
+ ],
2517
+ "sourceFile": "app/portal/mentor/requests/[id]/page.tsx",
2518
+ "evidence": "docs/design-system/ux-source-evidence/portal-mentor-requests-detail.json",
2519
+ "status": "source-indexed",
2520
+ "fragments": [
2521
+ {
2522
+ "id": "MentorRequestDetailPage",
2523
+ "line": 18
2524
+ },
2525
+ {
2526
+ "id": "DRow",
2527
+ "line": 211
2528
+ },
2529
+ {
2530
+ "id": "DRowSmall",
2531
+ "line": 220
2532
+ },
2533
+ {
2534
+ "id": "Stat",
2535
+ "line": 229
2536
+ }
2537
+ ],
2538
+ "tokens": [
2539
+ "--color-bg-brand-muted",
2540
+ "--color-bg-subtle",
2541
+ "--color-border-default",
2542
+ "--color-status-info-bg",
2543
+ "--color-status-info-text",
2544
+ "--color-status-warning-text",
2545
+ "--color-text-brand",
2546
+ "--color-text-muted",
2547
+ "--color-text-primary",
2548
+ "--color-text-secondary",
2549
+ "--green-500"
2550
+ ]
2551
+ },
2552
+ {
2553
+ "id": "portal-mentor-sessions-detail-assess",
2554
+ "category": "scheduling",
2555
+ "title": {
2556
+ "en": "Rubric-based assessment",
2557
+ "ko": "항목별 평가"
2558
+ },
2559
+ "keywords": [
2560
+ "schedule",
2561
+ "session",
2562
+ "booking",
2563
+ "calendar",
2564
+ "appointment",
2565
+ "일정",
2566
+ "세션",
2567
+ "예약",
2568
+ "평가",
2569
+ "جلسة"
2570
+ ],
2571
+ "route": "/portal/mentor/sessions/[id]/assess",
2572
+ "states": [
2573
+ {
2574
+ "route": "/portal/mentor/sessions/req-004/assess",
2575
+ "state": "07-assess-session"
2576
+ }
2577
+ ],
2578
+ "sourceFile": "app/portal/mentor/sessions/[id]/assess/page.tsx",
2579
+ "evidence": "docs/design-system/ux-source-evidence/portal-mentor-sessions-detail-assess.json",
2580
+ "status": "source-indexed",
2581
+ "fragments": [
2582
+ {
2583
+ "id": "AssessmentPage",
2584
+ "line": 16
2585
+ }
2586
+ ],
2587
+ "tokens": [
2588
+ "--color-bg-brand-muted",
2589
+ "--color-bg-subtle",
2590
+ "--color-border-brand",
2591
+ "--color-border-default",
2592
+ "--color-status-success-bg",
2593
+ "--color-status-success-text",
2594
+ "--color-status-warning-text",
2595
+ "--color-text-brand",
2596
+ "--color-text-muted",
2597
+ "--color-text-primary",
2598
+ "--color-text-secondary",
2599
+ "--gray-950",
2600
+ "--teal-500"
2601
+ ]
2602
+ },
2603
+ {
2604
+ "id": "portal-mentor-settings",
2605
+ "category": "settings",
2606
+ "title": {
2607
+ "en": "Account settings",
2608
+ "ko": "계정 설정"
2609
+ },
2610
+ "keywords": [
2611
+ "setting",
2612
+ "preference",
2613
+ "security",
2614
+ "account",
2615
+ "설정",
2616
+ "환경",
2617
+ "보안",
2618
+ "계정",
2619
+ "إعدادات"
2620
+ ],
2621
+ "route": "/portal/mentor/settings",
2622
+ "states": [],
2623
+ "sourceFile": "app/portal/mentor/settings/page.tsx",
2624
+ "evidence": "docs/design-system/ux-source-evidence/portal-mentor-settings.json",
2625
+ "status": "source-indexed",
2626
+ "fragments": [
2627
+ {
2628
+ "id": "MentorSettingsPage",
2629
+ "line": 4
2630
+ }
2631
+ ],
2632
+ "tokens": []
2633
+ },
2634
+ {
2635
+ "id": "portal-sessions-detail-live",
2636
+ "category": "media",
2637
+ "title": {
2638
+ "en": "Live collaboration session",
2639
+ "ko": "실시간 협업 세션"
2640
+ },
2641
+ "keywords": [
2642
+ "live",
2643
+ "video",
2644
+ "broadcast",
2645
+ "stream",
2646
+ "recording",
2647
+ "collaboration",
2648
+ "라이브",
2649
+ "방송",
2650
+ "영상",
2651
+ "실시간",
2652
+ "협업",
2653
+ "بث"
2654
+ ],
2655
+ "route": "/portal/sessions/[id]/live",
2656
+ "states": [
2657
+ {
2658
+ "route": "/portal/sessions/req-004/live",
2659
+ "state": "01-live-interface"
2660
+ }
2661
+ ],
2662
+ "sourceFile": "app/portal/sessions/[id]/live/page.tsx",
2663
+ "evidence": "docs/design-system/ux-source-evidence/portal-sessions-detail-live.json",
2664
+ "status": "source-indexed",
2665
+ "fragments": [
2666
+ {
2667
+ "id": "LiveSessionPage",
2668
+ "line": 37
2669
+ },
2670
+ {
2671
+ "id": "ParticipantTile",
2672
+ "line": 291
2673
+ }
2674
+ ],
2675
+ "tokens": [
2676
+ "--amber-500",
2677
+ "--color-bg-brand-muted",
2678
+ "--color-bg-subtle",
2679
+ "--color-status-info-bg",
2680
+ "--color-status-info-text",
2681
+ "--color-status-success-bg",
2682
+ "--color-status-success-text",
2683
+ "--color-status-warning-bg",
2684
+ "--color-status-warning-text",
2685
+ "--color-text-brand",
2686
+ "--color-text-secondary",
2687
+ "--gray-0",
2688
+ "--gray-50",
2689
+ "--gray-900",
2690
+ "--gray-950",
2691
+ "--green-500",
2692
+ "--red-500"
2693
+ ]
2694
+ },
2695
+ {
2696
+ "id": "portal-sponsor-billing",
2697
+ "category": "billing",
2698
+ "title": {
2699
+ "en": "Invoices and payment methods",
2700
+ "ko": "청구서와 결제 수단"
2701
+ },
2702
+ "keywords": [
2703
+ "billing",
2704
+ "credit",
2705
+ "payment",
2706
+ "invoice",
2707
+ "subscription",
2708
+ "allocation",
2709
+ "결제",
2710
+ "구독",
2711
+ "청구",
2712
+ "배분",
2713
+ "크레딧",
2714
+ "دفع"
2715
+ ],
2716
+ "route": "/portal/sponsor/billing",
2717
+ "states": [
2718
+ {
2719
+ "route": "/portal/sponsor/billing",
2720
+ "state": "05-billing"
2721
+ }
2722
+ ],
2723
+ "sourceFile": "app/portal/sponsor/billing/page.tsx",
2724
+ "evidence": "docs/design-system/ux-source-evidence/portal-sponsor-billing.json",
2725
+ "status": "source-indexed",
2726
+ "fragments": [
2727
+ {
2728
+ "id": "SponsorBillingPage",
2729
+ "line": 16
2730
+ }
2731
+ ],
2732
+ "tokens": [
2733
+ "--color-bg-subtle",
2734
+ "--color-text-muted",
2735
+ "--color-text-secondary"
2736
+ ]
2737
+ },
2738
+ {
2739
+ "id": "portal-sponsor",
2740
+ "category": "dashboard",
2741
+ "title": {
2742
+ "en": "Organization overview",
2743
+ "ko": "조직 현황"
2744
+ },
2745
+ "keywords": [
2746
+ "dashboard",
2747
+ "progress",
2748
+ "metric",
2749
+ "overview",
2750
+ "대시보드",
2751
+ "현황",
2752
+ "진행",
2753
+ "지표",
2754
+ "لوحة"
2755
+ ],
2756
+ "route": "/portal/sponsor",
2757
+ "states": [
2758
+ {
2759
+ "route": "/portal/sponsor",
2760
+ "state": "01-overview"
2761
+ }
2762
+ ],
2763
+ "sourceFile": "app/portal/sponsor/page.tsx",
2764
+ "evidence": "docs/design-system/ux-source-evidence/portal-sponsor.json",
2765
+ "status": "source-indexed",
2766
+ "fragments": [
2767
+ {
2768
+ "id": "SponsorOverviewPage",
2769
+ "line": 17
2770
+ },
2771
+ {
2772
+ "id": "MetricBlock",
2773
+ "line": 196
2774
+ },
2775
+ {
2776
+ "id": "LegendDot",
2777
+ "line": 206
2778
+ },
2779
+ {
2780
+ "id": "Row",
2781
+ "line": 215
2782
+ }
2783
+ ],
2784
+ "tokens": [
2785
+ "--color-bg-brand-muted",
2786
+ "--color-bg-subtle",
2787
+ "--color-border-default",
2788
+ "--color-text-brand",
2789
+ "--color-text-muted",
2790
+ "--color-text-primary",
2791
+ "--color-text-secondary",
2792
+ "--teal-300",
2793
+ "--teal-500"
2794
+ ]
2795
+ },
2796
+ {
2797
+ "id": "portal-sponsor-profile",
2798
+ "category": "directory",
2799
+ "title": {
2800
+ "en": "Profile editor",
2801
+ "ko": "프로필 편집"
2802
+ },
2803
+ "keywords": [
2804
+ "directory",
2805
+ "people",
2806
+ "profile",
2807
+ "member",
2808
+ "browse",
2809
+ "프로필",
2810
+ "구성원",
2811
+ "전문가",
2812
+ "검색",
2813
+ "أشخاص"
2814
+ ],
2815
+ "route": "/portal/sponsor/profile",
2816
+ "states": [
2817
+ {
2818
+ "route": "/portal/sponsor/profile",
2819
+ "state": "02-profile"
2820
+ }
2821
+ ],
2822
+ "sourceFile": "app/portal/sponsor/profile/page.tsx",
2823
+ "evidence": "docs/design-system/ux-source-evidence/portal-sponsor-profile.json",
2824
+ "status": "source-indexed",
2825
+ "fragments": [
2826
+ {
2827
+ "id": "SponsorProfilePage",
2828
+ "line": 24
2829
+ }
2830
+ ],
2831
+ "tokens": []
2832
+ },
2833
+ {
2834
+ "id": "portal-sponsor-sessions",
2835
+ "category": "scheduling",
2836
+ "title": {
2837
+ "en": "Session list and filters",
2838
+ "ko": "세션 목록과 필터"
2839
+ },
2840
+ "keywords": [
2841
+ "schedule",
2842
+ "session",
2843
+ "booking",
2844
+ "calendar",
2845
+ "appointment",
2846
+ "일정",
2847
+ "세션",
2848
+ "예약",
2849
+ "평가",
2850
+ "جلسة"
2851
+ ],
2852
+ "route": "/portal/sponsor/sessions",
2853
+ "states": [
2854
+ {
2855
+ "route": "/portal/sponsor/sessions",
2856
+ "state": "04-sessions"
2857
+ }
2858
+ ],
2859
+ "sourceFile": "app/portal/sponsor/sessions/page.tsx",
2860
+ "evidence": "docs/design-system/ux-source-evidence/portal-sponsor-sessions.json",
2861
+ "status": "source-indexed",
2862
+ "fragments": [
2863
+ {
2864
+ "id": "SponsorSessionsPage",
2865
+ "line": 18
2866
+ }
2867
+ ],
2868
+ "tokens": [
2869
+ "--color-bg-subtle",
2870
+ "--color-text-muted",
2871
+ "--color-text-secondary"
2872
+ ]
2873
+ },
2874
+ {
2875
+ "id": "portal-sponsor-settings",
2876
+ "category": "settings",
2877
+ "title": {
2878
+ "en": "Account settings",
2879
+ "ko": "계정 설정"
2880
+ },
2881
+ "keywords": [
2882
+ "setting",
2883
+ "preference",
2884
+ "security",
2885
+ "account",
2886
+ "설정",
2887
+ "환경",
2888
+ "보안",
2889
+ "계정",
2890
+ "إعدادات"
2891
+ ],
2892
+ "route": "/portal/sponsor/settings",
2893
+ "states": [],
2894
+ "sourceFile": "app/portal/sponsor/settings/page.tsx",
2895
+ "evidence": "docs/design-system/ux-source-evidence/portal-sponsor-settings.json",
2896
+ "status": "source-indexed",
2897
+ "fragments": [
2898
+ {
2899
+ "id": "SponsorSettingsPage",
2900
+ "line": 4
2901
+ }
2902
+ ],
2903
+ "tokens": []
2904
+ },
2905
+ {
2906
+ "id": "portal-sponsor-trainees",
2907
+ "category": "directory",
2908
+ "title": {
2909
+ "en": "Member resource allocation",
2910
+ "ko": "구성원 자원 배분"
2911
+ },
2912
+ "keywords": [
2913
+ "directory",
2914
+ "people",
2915
+ "profile",
2916
+ "member",
2917
+ "browse",
2918
+ "프로필",
2919
+ "구성원",
2920
+ "전문가",
2921
+ "검색",
2922
+ "أشخاص"
2923
+ ],
2924
+ "route": "/portal/sponsor/trainees",
2925
+ "states": [
2926
+ {
2927
+ "route": "/portal/sponsor/trainees",
2928
+ "state": "03-trainees"
2929
+ }
2930
+ ],
2931
+ "sourceFile": "app/portal/sponsor/trainees/page.tsx",
2932
+ "evidence": "docs/design-system/ux-source-evidence/portal-sponsor-trainees.json",
2933
+ "status": "source-indexed",
2934
+ "fragments": [
2935
+ {
2936
+ "id": "SponsorTraineesPage",
2937
+ "line": 13
2938
+ }
2939
+ ],
2940
+ "tokens": [
2941
+ "--color-bg-brand-muted",
2942
+ "--color-bg-subtle",
2943
+ "--color-border-default",
2944
+ "--color-status-error-text",
2945
+ "--color-text-brand",
2946
+ "--color-text-muted",
2947
+ "--color-text-primary",
2948
+ "--color-text-secondary",
2949
+ "--red-500",
2950
+ "--teal-500"
2951
+ ]
2952
+ },
2953
+ {
2954
+ "id": "portal-trainee-competency",
2955
+ "category": "dashboard",
2956
+ "title": {
2957
+ "en": "Skills and assessment progress",
2958
+ "ko": "역량과 평가 진행"
2959
+ },
2960
+ "keywords": [
2961
+ "dashboard",
2962
+ "progress",
2963
+ "metric",
2964
+ "overview",
2965
+ "대시보드",
2966
+ "현황",
2967
+ "진행",
2968
+ "지표",
2969
+ "لوحة"
2970
+ ],
2971
+ "route": "/portal/trainee/competency",
2972
+ "states": [
2973
+ {
2974
+ "route": "/portal/trainee/competency",
2975
+ "state": "12-competency"
2976
+ }
2977
+ ],
2978
+ "sourceFile": "app/portal/trainee/competency/page.tsx",
2979
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-competency.json",
2980
+ "status": "source-indexed",
2981
+ "fragments": [
2982
+ {
2983
+ "id": "CompetencyPage",
2984
+ "line": 32
2985
+ },
2986
+ {
2987
+ "id": "StatCard",
2988
+ "line": 187
2989
+ }
2990
+ ],
2991
+ "tokens": [
2992
+ "--color-bg-brand-muted",
2993
+ "--color-bg-subtle",
2994
+ "--color-border-default",
2995
+ "--color-text-brand",
2996
+ "--color-text-muted",
2997
+ "--color-text-primary",
2998
+ "--color-text-secondary",
2999
+ "--teal-500"
3000
+ ]
3001
+ },
3002
+ {
3003
+ "id": "portal-trainee-credits",
3004
+ "category": "billing",
3005
+ "title": {
3006
+ "en": "Credit wallet and transactions",
3007
+ "ko": "크레딧 지갑과 거래"
3008
+ },
3009
+ "keywords": [
3010
+ "billing",
3011
+ "credit",
3012
+ "payment",
3013
+ "invoice",
3014
+ "subscription",
3015
+ "allocation",
3016
+ "결제",
3017
+ "구독",
3018
+ "청구",
3019
+ "배분",
3020
+ "크레딧",
3021
+ "دفع"
3022
+ ],
3023
+ "route": "/portal/trainee/credits",
3024
+ "states": [
3025
+ {
3026
+ "route": "/portal/trainee/credits",
3027
+ "state": "07-credits"
3028
+ }
3029
+ ],
3030
+ "sourceFile": "app/portal/trainee/credits/page.tsx",
3031
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-credits.json",
3032
+ "status": "source-indexed",
3033
+ "fragments": [
3034
+ {
3035
+ "id": "TraineeCreditsPage",
3036
+ "line": 24
3037
+ },
3038
+ {
3039
+ "id": "Block",
3040
+ "line": 132
3041
+ }
3042
+ ],
3043
+ "tokens": [
3044
+ "--color-bg-brand-muted",
3045
+ "--color-bg-subtle",
3046
+ "--color-status-error-text",
3047
+ "--color-status-success-text",
3048
+ "--color-text-brand",
3049
+ "--color-text-muted",
3050
+ "--color-text-primary",
3051
+ "--color-text-secondary"
3052
+ ]
3053
+ },
3054
+ {
3055
+ "id": "portal-trainee-mentors",
3056
+ "category": "directory",
3057
+ "title": {
3058
+ "en": "Expert directory",
3059
+ "ko": "전문가 찾기"
3060
+ },
3061
+ "keywords": [
3062
+ "directory",
3063
+ "people",
3064
+ "profile",
3065
+ "member",
3066
+ "browse",
3067
+ "프로필",
3068
+ "구성원",
3069
+ "전문가",
3070
+ "검색",
3071
+ "أشخاص"
3072
+ ],
3073
+ "route": "/portal/trainee/mentors",
3074
+ "states": [
3075
+ {
3076
+ "route": "/portal/trainee/mentors",
3077
+ "state": "11-mentors"
3078
+ }
3079
+ ],
3080
+ "sourceFile": "app/portal/trainee/mentors/page.tsx",
3081
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-mentors.json",
3082
+ "status": "source-indexed",
3083
+ "fragments": [
3084
+ {
3085
+ "id": "MentorDirectoryPage",
3086
+ "line": 19
3087
+ },
3088
+ {
3089
+ "id": "MentorCard",
3090
+ "line": 92
3091
+ },
3092
+ {
3093
+ "id": "FilterSelect",
3094
+ "line": 144
3095
+ }
3096
+ ],
3097
+ "tokens": [
3098
+ "--amber-500",
3099
+ "--color-bg-subtle",
3100
+ "--color-border-default",
3101
+ "--color-status-success-bg",
3102
+ "--color-status-success-text",
3103
+ "--color-status-warning-bg",
3104
+ "--color-status-warning-text",
3105
+ "--color-text-muted",
3106
+ "--color-text-primary",
3107
+ "--color-text-secondary",
3108
+ "--gray-950",
3109
+ "--teal-500"
3110
+ ]
3111
+ },
3112
+ {
3113
+ "id": "portal-trainee-messages",
3114
+ "category": "messaging",
3115
+ "title": {
3116
+ "en": "Conversation inbox",
3117
+ "ko": "대화와 메시지"
3118
+ },
3119
+ "keywords": [
3120
+ "chat",
3121
+ "message",
3122
+ "notification",
3123
+ "inbox",
3124
+ "conversation",
3125
+ "채팅",
3126
+ "메시지",
3127
+ "대화",
3128
+ "알림",
3129
+ "دردشة"
3130
+ ],
3131
+ "route": "/portal/trainee/messages",
3132
+ "states": [
3133
+ {
3134
+ "route": "/portal/trainee/messages",
3135
+ "state": "08-messages"
3136
+ }
3137
+ ],
3138
+ "sourceFile": "app/portal/trainee/messages/page.tsx",
3139
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-messages.json",
3140
+ "status": "source-indexed",
3141
+ "fragments": [
3142
+ {
3143
+ "id": "TraineeMessagesPage",
3144
+ "line": 16
3145
+ }
3146
+ ],
3147
+ "tokens": [
3148
+ "--color-bg-brand-muted",
3149
+ "--color-bg-subtle",
3150
+ "--color-border-muted",
3151
+ "--color-text-brand",
3152
+ "--color-text-muted",
3153
+ "--color-text-secondary",
3154
+ "--gray-950",
3155
+ "--teal-500"
3156
+ ]
3157
+ },
3158
+ {
3159
+ "id": "portal-trainee-notifications",
3160
+ "category": "messaging",
3161
+ "title": {
3162
+ "en": "Notification inbox and preferences",
3163
+ "ko": "알림함과 수신 설정"
3164
+ },
3165
+ "keywords": [
3166
+ "chat",
3167
+ "message",
3168
+ "notification",
3169
+ "inbox",
3170
+ "conversation",
3171
+ "채팅",
3172
+ "메시지",
3173
+ "대화",
3174
+ "알림",
3175
+ "دردشة"
3176
+ ],
3177
+ "route": "/portal/trainee/notifications",
3178
+ "states": [
3179
+ {
3180
+ "route": "/portal/trainee/notifications",
3181
+ "state": "09-notifications"
3182
+ }
3183
+ ],
3184
+ "sourceFile": "app/portal/trainee/notifications/page.tsx",
3185
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-notifications.json",
3186
+ "status": "source-indexed",
3187
+ "fragments": [
3188
+ {
3189
+ "id": "TraineeNotificationsPage",
3190
+ "line": 17
3191
+ },
3192
+ {
3193
+ "id": "NotifList",
3194
+ "line": 50
3195
+ }
3196
+ ],
3197
+ "tokens": [
3198
+ "--color-bg-brand-muted",
3199
+ "--color-bg-subtle",
3200
+ "--color-border-muted",
3201
+ "--color-text-brand",
3202
+ "--color-text-muted",
3203
+ "--color-text-secondary",
3204
+ "--teal-500"
3205
+ ]
3206
+ },
3207
+ {
3208
+ "id": "portal-trainee",
3209
+ "category": "dashboard",
3210
+ "title": {
3211
+ "en": "Personal activity dashboard",
3212
+ "ko": "개인 활동 현황"
3213
+ },
3214
+ "keywords": [
3215
+ "dashboard",
3216
+ "progress",
3217
+ "metric",
3218
+ "overview",
3219
+ "대시보드",
3220
+ "현황",
3221
+ "진행",
3222
+ "지표",
3223
+ "لوحة"
3224
+ ],
3225
+ "route": "/portal/trainee",
3226
+ "states": [
3227
+ {
3228
+ "route": "/portal/trainee",
3229
+ "state": "01-dashboard"
3230
+ }
3231
+ ],
3232
+ "sourceFile": "app/portal/trainee/page.tsx",
3233
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee.json",
3234
+ "status": "source-indexed",
3235
+ "fragments": [
3236
+ {
3237
+ "id": "TraineeDashboardPage",
3238
+ "line": 23
3239
+ },
3240
+ {
3241
+ "id": "CreditMetric",
3242
+ "line": 184
3243
+ }
3244
+ ],
3245
+ "tokens": [
3246
+ "--color-bg-brand-muted",
3247
+ "--color-bg-subtle",
3248
+ "--color-border-default",
3249
+ "--color-status-error-text",
3250
+ "--color-status-success-text",
3251
+ "--color-text-brand",
3252
+ "--color-text-muted",
3253
+ "--color-text-primary",
3254
+ "--color-text-secondary",
3255
+ "--teal-300",
3256
+ "--teal-500"
3257
+ ]
3258
+ },
3259
+ {
3260
+ "id": "portal-trainee-profile",
3261
+ "category": "directory",
3262
+ "title": {
3263
+ "en": "Profile editor",
3264
+ "ko": "프로필 편집"
3265
+ },
3266
+ "keywords": [
3267
+ "directory",
3268
+ "people",
3269
+ "profile",
3270
+ "member",
3271
+ "browse",
3272
+ "프로필",
3273
+ "구성원",
3274
+ "전문가",
3275
+ "검색",
3276
+ "أشخاص"
3277
+ ],
3278
+ "route": "/portal/trainee/profile",
3279
+ "states": [
3280
+ {
3281
+ "route": "/portal/trainee/profile",
3282
+ "state": "02-profile"
3283
+ }
3284
+ ],
3285
+ "sourceFile": "app/portal/trainee/profile/page.tsx",
3286
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-profile.json",
3287
+ "status": "source-indexed",
3288
+ "fragments": [
3289
+ {
3290
+ "id": "TraineeProfilePage",
3291
+ "line": 28
3292
+ }
3293
+ ],
3294
+ "tokens": [
3295
+ "--color-bg-subtle",
3296
+ "--color-text-muted"
3297
+ ]
3298
+ },
3299
+ {
3300
+ "id": "portal-trainee-request",
3301
+ "category": "scheduling",
3302
+ "title": {
3303
+ "en": "Multi-step booking request",
3304
+ "ko": "단계별 예약 요청"
3305
+ },
3306
+ "keywords": [
3307
+ "schedule",
3308
+ "session",
3309
+ "booking",
3310
+ "calendar",
3311
+ "appointment",
3312
+ "일정",
3313
+ "세션",
3314
+ "예약",
3315
+ "평가",
3316
+ "جلسة"
3317
+ ],
3318
+ "route": "/portal/trainee/request",
3319
+ "states": [
3320
+ {
3321
+ "route": "/portal/trainee/request",
3322
+ "state": "10-request-session"
3323
+ }
3324
+ ],
3325
+ "sourceFile": "app/portal/trainee/request/page.tsx",
3326
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-request.json",
3327
+ "status": "source-indexed",
3328
+ "fragments": [
3329
+ {
3330
+ "id": "RequestSessionPage",
3331
+ "line": 21
3332
+ },
3333
+ {
3334
+ "id": "ModeCard",
3335
+ "line": 226
3336
+ },
3337
+ {
3338
+ "id": "DRow",
3339
+ "line": 251
3340
+ }
3341
+ ],
3342
+ "tokens": [
3343
+ "--color-bg-brand-muted",
3344
+ "--color-bg-subtle",
3345
+ "--color-border-brand",
3346
+ "--color-border-default",
3347
+ "--color-status-success-bg",
3348
+ "--color-status-success-text",
3349
+ "--color-text-brand",
3350
+ "--color-text-muted",
3351
+ "--color-text-primary",
3352
+ "--color-text-secondary",
3353
+ "--gray-950",
3354
+ "--teal-500"
3355
+ ]
3356
+ },
3357
+ {
3358
+ "id": "portal-trainee-sessions-detail-feedback",
3359
+ "category": "scheduling",
3360
+ "title": {
3361
+ "en": "Rating and feedback",
3362
+ "ko": "평점·피드백"
3363
+ },
3364
+ "keywords": [
3365
+ "schedule",
3366
+ "session",
3367
+ "booking",
3368
+ "calendar",
3369
+ "appointment",
3370
+ "일정",
3371
+ "세션",
3372
+ "예약",
3373
+ "평가",
3374
+ "جلسة"
3375
+ ],
3376
+ "route": "/portal/trainee/sessions/[id]/feedback",
3377
+ "states": [
3378
+ {
3379
+ "route": "/portal/trainee/sessions/req-004/feedback",
3380
+ "state": "06-feedback"
3381
+ }
3382
+ ],
3383
+ "sourceFile": "app/portal/trainee/sessions/[id]/feedback/page.tsx",
3384
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-sessions-detail-feedback.json",
3385
+ "status": "source-indexed",
3386
+ "fragments": [
3387
+ {
3388
+ "id": "FeedbackPage",
3389
+ "line": 23
3390
+ }
3391
+ ],
3392
+ "tokens": [
3393
+ "--amber-500",
3394
+ "--color-bg-subtle",
3395
+ "--color-border-strong",
3396
+ "--color-status-success-bg",
3397
+ "--color-status-success-text",
3398
+ "--color-text-muted",
3399
+ "--color-text-primary",
3400
+ "--color-text-secondary",
3401
+ "--teal-500"
3402
+ ]
3403
+ },
3404
+ {
3405
+ "id": "portal-trainee-sessions-detail",
3406
+ "category": "scheduling",
3407
+ "title": {
3408
+ "en": "[id]",
3409
+ "ko": "[id]"
3410
+ },
3411
+ "keywords": [
3412
+ "schedule",
3413
+ "session",
3414
+ "booking",
3415
+ "calendar",
3416
+ "appointment",
3417
+ "일정",
3418
+ "세션",
3419
+ "예약",
3420
+ "평가",
3421
+ "جلسة"
3422
+ ],
3423
+ "route": "/portal/trainee/sessions/[id]",
3424
+ "states": [
3425
+ {
3426
+ "route": "/portal/trainee/sessions/req-004",
3427
+ "state": "04-session-detail"
3428
+ }
3429
+ ],
3430
+ "sourceFile": "app/portal/trainee/sessions/[id]/page.tsx",
3431
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-sessions-detail.json",
3432
+ "status": "source-indexed",
3433
+ "fragments": [
3434
+ {
3435
+ "id": "SessionDetailPage",
3436
+ "line": 21
3437
+ },
3438
+ {
3439
+ "id": "Field",
3440
+ "line": 253
3441
+ },
3442
+ {
3443
+ "id": "DRowSmall",
3444
+ "line": 262
3445
+ }
3446
+ ],
3447
+ "tokens": [
3448
+ "--color-bg-brand-muted",
3449
+ "--color-bg-subtle",
3450
+ "--color-border-default",
3451
+ "--color-border-muted",
3452
+ "--color-status-success-bg",
3453
+ "--color-status-success-text",
3454
+ "--color-status-warning-bg",
3455
+ "--color-status-warning-text",
3456
+ "--color-text-brand",
3457
+ "--color-text-muted",
3458
+ "--color-text-primary",
3459
+ "--color-text-secondary",
3460
+ "--gray-950",
3461
+ "--teal-500"
3462
+ ]
3463
+ },
3464
+ {
3465
+ "id": "portal-trainee-sessions-detail-precheck",
3466
+ "category": "scheduling",
3467
+ "title": {
3468
+ "en": "Device and connection checks",
3469
+ "ko": "기기·연결 사전 점검"
3470
+ },
3471
+ "keywords": [
3472
+ "schedule",
3473
+ "session",
3474
+ "booking",
3475
+ "calendar",
3476
+ "appointment",
3477
+ "일정",
3478
+ "세션",
3479
+ "예약",
3480
+ "평가",
3481
+ "جلسة"
3482
+ ],
3483
+ "route": "/portal/trainee/sessions/[id]/precheck",
3484
+ "states": [
3485
+ {
3486
+ "route": "/portal/trainee/sessions/req-004/precheck",
3487
+ "state": "05-precheck"
3488
+ }
3489
+ ],
3490
+ "sourceFile": "app/portal/trainee/sessions/[id]/precheck/page.tsx",
3491
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-sessions-detail-precheck.json",
3492
+ "status": "source-indexed",
3493
+ "fragments": [
3494
+ {
3495
+ "id": "PreCheckPage",
3496
+ "line": 26
3497
+ },
3498
+ {
3499
+ "id": "BwStat",
3500
+ "line": 189
3501
+ }
3502
+ ],
3503
+ "tokens": [
3504
+ "--color-bg-subtle",
3505
+ "--color-border-muted",
3506
+ "--color-status-error-bg",
3507
+ "--color-status-error-text",
3508
+ "--color-status-success-bg",
3509
+ "--color-status-success-text",
3510
+ "--color-status-warning-bg",
3511
+ "--color-status-warning-text",
3512
+ "--color-text-muted",
3513
+ "--color-text-primary",
3514
+ "--color-text-secondary"
3515
+ ]
3516
+ },
3517
+ {
3518
+ "id": "portal-trainee-sessions",
3519
+ "category": "scheduling",
3520
+ "title": {
3521
+ "en": "Session list and filters",
3522
+ "ko": "세션 목록과 필터"
3523
+ },
3524
+ "keywords": [
3525
+ "schedule",
3526
+ "session",
3527
+ "booking",
3528
+ "calendar",
3529
+ "appointment",
3530
+ "일정",
3531
+ "세션",
3532
+ "예약",
3533
+ "평가",
3534
+ "جلسة"
3535
+ ],
3536
+ "route": "/portal/trainee/sessions",
3537
+ "states": [
3538
+ {
3539
+ "route": "/portal/trainee/sessions",
3540
+ "state": "03-sessions"
3541
+ }
3542
+ ],
3543
+ "sourceFile": "app/portal/trainee/sessions/page.tsx",
3544
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-sessions.json",
3545
+ "status": "source-indexed",
3546
+ "fragments": [
3547
+ {
3548
+ "id": "TraineeSessionsPage",
3549
+ "line": 15
3550
+ },
3551
+ {
3552
+ "id": "SessionsTable",
3553
+ "line": 76
3554
+ }
3555
+ ],
3556
+ "tokens": [
3557
+ "--color-bg-subtle",
3558
+ "--color-text-muted",
3559
+ "--color-text-secondary"
3560
+ ]
3561
+ },
3562
+ {
3563
+ "id": "portal-trainee-settings-notifications",
3564
+ "category": "settings",
3565
+ "title": {
3566
+ "en": "Notification inbox and preferences",
3567
+ "ko": "알림함과 수신 설정"
3568
+ },
3569
+ "keywords": [
3570
+ "setting",
3571
+ "preference",
3572
+ "security",
3573
+ "account",
3574
+ "설정",
3575
+ "환경",
3576
+ "보안",
3577
+ "계정",
3578
+ "إعدادات"
3579
+ ],
3580
+ "route": "/portal/trainee/settings/notifications",
3581
+ "states": [
3582
+ {
3583
+ "route": "/portal/trainee/settings/notifications",
3584
+ "state": "13-notif-prefs"
3585
+ }
3586
+ ],
3587
+ "sourceFile": "app/portal/trainee/settings/notifications/page.tsx",
3588
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-settings-notifications.json",
3589
+ "status": "source-indexed",
3590
+ "fragments": [
3591
+ {
3592
+ "id": "NotificationPreferencesPage",
3593
+ "line": 37
3594
+ }
3595
+ ],
3596
+ "tokens": [
3597
+ "--color-bg-brand-muted",
3598
+ "--color-bg-subtle",
3599
+ "--color-border-brand",
3600
+ "--color-border-default",
3601
+ "--color-border-muted",
3602
+ "--color-status-success-border",
3603
+ "--color-status-success-text",
3604
+ "--color-status-warning-border",
3605
+ "--color-status-warning-text",
3606
+ "--color-text-brand",
3607
+ "--color-text-muted",
3608
+ "--color-text-secondary"
3609
+ ]
3610
+ },
3611
+ {
3612
+ "id": "portal-trainee-settings",
3613
+ "category": "settings",
3614
+ "title": {
3615
+ "en": "Account settings",
3616
+ "ko": "계정 설정"
3617
+ },
3618
+ "keywords": [
3619
+ "setting",
3620
+ "preference",
3621
+ "security",
3622
+ "account",
3623
+ "설정",
3624
+ "환경",
3625
+ "보안",
3626
+ "계정",
3627
+ "إعدادات"
3628
+ ],
3629
+ "route": "/portal/trainee/settings",
3630
+ "states": [],
3631
+ "sourceFile": "app/portal/trainee/settings/page.tsx",
3632
+ "evidence": "docs/design-system/ux-source-evidence/portal-trainee-settings.json",
3633
+ "status": "source-indexed",
3634
+ "fragments": [
3635
+ {
3636
+ "id": "TraineeSettingsPage",
3637
+ "line": 4
3638
+ }
3639
+ ],
3640
+ "tokens": []
3641
+ },
3642
+ {
3643
+ "id": "portal-tv-detail",
3644
+ "category": "media",
3645
+ "title": {
3646
+ "en": "Broadcast viewer and lifecycle",
3647
+ "ko": "방송 시청과 상태"
3648
+ },
3649
+ "keywords": [
3650
+ "live",
3651
+ "video",
3652
+ "broadcast",
3653
+ "stream",
3654
+ "recording",
3655
+ "collaboration",
3656
+ "라이브",
3657
+ "방송",
3658
+ "영상",
3659
+ "실시간",
3660
+ "협업",
3661
+ "بث"
3662
+ ],
3663
+ "route": "/portal/tv/[id]",
3664
+ "states": [
3665
+ {
3666
+ "route": "/portal/tv/tv-001",
3667
+ "state": "02-tv-live"
3668
+ },
3669
+ {
3670
+ "route": "/portal/tv/tv-002",
3671
+ "state": "03-tv-scheduled"
3672
+ },
3673
+ {
3674
+ "route": "/portal/tv/tv-003",
3675
+ "state": "04-tv-cohort"
3676
+ },
3677
+ {
3678
+ "route": "/portal/tv/tv-004",
3679
+ "state": "05-tv-ended"
3680
+ }
3681
+ ],
3682
+ "sourceFile": "app/portal/tv/[id]/page.tsx",
3683
+ "evidence": "docs/design-system/ux-source-evidence/portal-tv-detail.json",
3684
+ "status": "source-indexed",
3685
+ "fragments": [
3686
+ {
3687
+ "id": "BroadcastViewerPage",
3688
+ "line": 12
3689
+ },
3690
+ {
3691
+ "id": "DRow",
3692
+ "line": 134
3693
+ }
3694
+ ],
3695
+ "tokens": [
3696
+ "--color-border-muted",
3697
+ "--color-text-muted",
3698
+ "--color-text-primary",
3699
+ "--color-text-secondary",
3700
+ "--gray-0",
3701
+ "--gray-50",
3702
+ "--gray-950",
3703
+ "--red-500",
3704
+ "--teal-500"
3705
+ ]
3706
+ },
3707
+ {
3708
+ "id": "portal-tv",
3709
+ "category": "media",
3710
+ "title": {
3711
+ "en": "Live and recorded content",
3712
+ "ko": "라이브·녹화 콘텐츠"
3713
+ },
3714
+ "keywords": [
3715
+ "live",
3716
+ "video",
3717
+ "broadcast",
3718
+ "stream",
3719
+ "recording",
3720
+ "collaboration",
3721
+ "라이브",
3722
+ "방송",
3723
+ "영상",
3724
+ "실시간",
3725
+ "협업",
3726
+ "بث"
3727
+ ],
3728
+ "route": "/portal/tv",
3729
+ "states": [
3730
+ {
3731
+ "route": "/portal/tv",
3732
+ "state": "01-tv-hub"
3733
+ }
3734
+ ],
3735
+ "sourceFile": "app/portal/tv/page.tsx",
3736
+ "evidence": "docs/design-system/ux-source-evidence/portal-tv.json",
3737
+ "status": "source-indexed",
3738
+ "fragments": [
3739
+ {
3740
+ "id": "MentixTvPage",
3741
+ "line": 12
3742
+ },
3743
+ {
3744
+ "id": "LiveHero",
3745
+ "line": 71
3746
+ },
3747
+ {
3748
+ "id": "BroadcastCard",
3749
+ "line": 124
3750
+ }
3751
+ ],
3752
+ "tokens": [
3753
+ "--color-bg-default",
3754
+ "--color-bg-subtle",
3755
+ "--color-text-brand",
3756
+ "--color-text-muted",
3757
+ "--color-text-secondary",
3758
+ "--gray-0",
3759
+ "--gray-950",
3760
+ "--red-500",
3761
+ "--teal-500"
3762
+ ]
3763
+ },
3764
+ {
3765
+ "id": "shared-admin-admin-shell",
3766
+ "category": "shared",
3767
+ "title": {
3768
+ "en": "admin shell",
3769
+ "ko": "admin shell"
3770
+ },
3771
+ "keywords": [
3772
+ "shell",
3773
+ "menu",
3774
+ "notification",
3775
+ "profile",
3776
+ "skeleton",
3777
+ "empty",
3778
+ "탐색",
3779
+ "메뉴",
3780
+ "알림",
3781
+ "프로필",
3782
+ "로딩",
3783
+ "빈"
3784
+ ],
3785
+ "route": null,
3786
+ "states": [],
3787
+ "sourceFile": "components/admin/admin-shell.tsx",
3788
+ "evidence": "docs/design-system/ux-source-evidence/shared-admin-admin-shell.json",
3789
+ "status": "source-indexed",
3790
+ "fragments": [
3791
+ {
3792
+ "id": "AdminShell",
3793
+ "line": 43
3794
+ }
3795
+ ],
3796
+ "tokens": [
3797
+ "--color-bg-brand-muted",
3798
+ "--color-bg-default",
3799
+ "--color-bg-subtle",
3800
+ "--color-border-default",
3801
+ "--color-text-brand",
3802
+ "--color-text-muted",
3803
+ "--color-text-primary",
3804
+ "--color-text-secondary",
3805
+ "--gray-950"
3806
+ ]
3807
+ },
3808
+ {
3809
+ "id": "shared-auth-auth-primitives",
3810
+ "category": "shared",
3811
+ "title": {
3812
+ "en": "auth primitives",
3813
+ "ko": "auth primitives"
3814
+ },
3815
+ "keywords": [
3816
+ "shell",
3817
+ "menu",
3818
+ "notification",
3819
+ "profile",
3820
+ "skeleton",
3821
+ "empty",
3822
+ "탐색",
3823
+ "메뉴",
3824
+ "알림",
3825
+ "프로필",
3826
+ "로딩",
3827
+ "빈"
3828
+ ],
3829
+ "route": null,
3830
+ "states": [],
3831
+ "sourceFile": "components/auth/auth-primitives.tsx",
3832
+ "evidence": "docs/design-system/ux-source-evidence/shared-auth-auth-primitives.json",
3833
+ "status": "source-indexed",
3834
+ "fragments": [
3835
+ {
3836
+ "id": "Spinner",
3837
+ "line": 12
3838
+ },
3839
+ {
3840
+ "id": "OrDivider",
3841
+ "line": 18
3842
+ },
3843
+ {
3844
+ "id": "InlineAlert",
3845
+ "line": 39
3846
+ },
3847
+ {
3848
+ "id": "Field",
3849
+ "line": 60
3850
+ },
3851
+ {
3852
+ "id": "PasswordInput",
3853
+ "line": 81
3854
+ },
3855
+ {
3856
+ "id": "passwordStrength",
3857
+ "line": 111
3858
+ },
3859
+ {
3860
+ "id": "PasswordStrength",
3861
+ "line": 123
3862
+ },
3863
+ {
3864
+ "id": "Checkbox",
3865
+ "line": 150
3866
+ },
3867
+ {
3868
+ "id": "SocialButtons",
3869
+ "line": 179
3870
+ },
3871
+ {
3872
+ "id": "GoogleIcon",
3873
+ "line": 225
3874
+ },
3875
+ {
3876
+ "id": "AppleIcon",
3877
+ "line": 235
3878
+ },
3879
+ {
3880
+ "id": "GitHubIcon",
3881
+ "line": 242
3882
+ },
3883
+ {
3884
+ "id": "OtpInput",
3885
+ "line": 252
3886
+ }
3887
+ ],
3888
+ "tokens": [
3889
+ "--amber-500",
3890
+ "--color-border-default",
3891
+ "--color-border-strong",
3892
+ "--color-status-error-bg",
3893
+ "--color-status-error-border",
3894
+ "--color-status-error-text",
3895
+ "--color-status-info-bg",
3896
+ "--color-status-info-border",
3897
+ "--color-status-info-text",
3898
+ "--color-status-success-bg",
3899
+ "--color-status-success-border",
3900
+ "--color-status-success-text",
3901
+ "--color-status-warning-bg",
3902
+ "--color-status-warning-border",
3903
+ "--color-status-warning-text",
3904
+ "--color-text-muted",
3905
+ "--color-text-primary",
3906
+ "--color-text-secondary",
3907
+ "--gray-950",
3908
+ "--green-500",
3909
+ "--red-500",
3910
+ "--teal-500"
3911
+ ]
3912
+ },
3913
+ {
3914
+ "id": "shared-auth-auth-shell",
3915
+ "category": "shared",
3916
+ "title": {
3917
+ "en": "auth shell",
3918
+ "ko": "auth shell"
3919
+ },
3920
+ "keywords": [
3921
+ "shell",
3922
+ "menu",
3923
+ "notification",
3924
+ "profile",
3925
+ "skeleton",
3926
+ "empty",
3927
+ "탐색",
3928
+ "메뉴",
3929
+ "알림",
3930
+ "프로필",
3931
+ "로딩",
3932
+ "빈"
3933
+ ],
3934
+ "route": null,
3935
+ "states": [],
3936
+ "sourceFile": "components/auth/auth-shell.tsx",
3937
+ "evidence": "docs/design-system/ux-source-evidence/shared-auth-auth-shell.json",
3938
+ "status": "source-indexed",
3939
+ "fragments": [
3940
+ {
3941
+ "id": "AuthShell",
3942
+ "line": 19
3943
+ }
3944
+ ],
3945
+ "tokens": [
3946
+ "--color-bg-default",
3947
+ "--color-border-muted",
3948
+ "--color-text-brand",
3949
+ "--color-text-primary",
3950
+ "--color-text-secondary"
3951
+ ]
3952
+ },
3953
+ {
3954
+ "id": "shared-auth-onboarding-primitives",
3955
+ "category": "shared",
3956
+ "title": {
3957
+ "en": "onboarding primitives",
3958
+ "ko": "onboarding primitives"
3959
+ },
3960
+ "keywords": [
3961
+ "shell",
3962
+ "menu",
3963
+ "notification",
3964
+ "profile",
3965
+ "skeleton",
3966
+ "empty",
3967
+ "탐색",
3968
+ "메뉴",
3969
+ "알림",
3970
+ "프로필",
3971
+ "로딩",
3972
+ "빈"
3973
+ ],
3974
+ "route": null,
3975
+ "states": [],
3976
+ "sourceFile": "components/auth/onboarding-primitives.tsx",
3977
+ "evidence": "docs/design-system/ux-source-evidence/shared-auth-onboarding-primitives.json",
3978
+ "status": "source-indexed",
3979
+ "fragments": [
3980
+ {
3981
+ "id": "Select",
3982
+ "line": 9
3983
+ },
3984
+ {
3985
+ "id": "MultiSelect",
3986
+ "line": 50
3987
+ },
3988
+ {
3989
+ "id": "FileDropZone",
3990
+ "line": 89
3991
+ },
3992
+ {
3993
+ "id": "formatBytes",
3994
+ "line": 170
3995
+ },
3996
+ {
3997
+ "id": "StepProgress",
3998
+ "line": 178
3999
+ }
4000
+ ],
4001
+ "tokens": [
4002
+ "--color-bg-brand-muted",
4003
+ "--color-bg-subtle",
4004
+ "--color-border-default",
4005
+ "--color-status-success-bg",
4006
+ "--color-status-success-border",
4007
+ "--color-status-success-text",
4008
+ "--color-text-brand",
4009
+ "--color-text-muted",
4010
+ "--color-text-secondary",
4011
+ "--gray-950",
4012
+ "--green-500",
4013
+ "--teal-500"
4014
+ ]
4015
+ },
4016
+ {
4017
+ "id": "shared-auth-onboarding-shell",
4018
+ "category": "shared",
4019
+ "title": {
4020
+ "en": "onboarding shell",
4021
+ "ko": "onboarding shell"
4022
+ },
4023
+ "keywords": [
4024
+ "shell",
4025
+ "menu",
4026
+ "notification",
4027
+ "profile",
4028
+ "skeleton",
4029
+ "empty",
4030
+ "탐색",
4031
+ "메뉴",
4032
+ "알림",
4033
+ "프로필",
4034
+ "로딩",
4035
+ "빈"
4036
+ ],
4037
+ "route": null,
4038
+ "states": [],
4039
+ "sourceFile": "components/auth/onboarding-shell.tsx",
4040
+ "evidence": "docs/design-system/ux-source-evidence/shared-auth-onboarding-shell.json",
4041
+ "status": "source-indexed",
4042
+ "fragments": [
4043
+ {
4044
+ "id": "OnboardingShell",
4045
+ "line": 41
4046
+ }
4047
+ ],
4048
+ "tokens": [
4049
+ "--color-border-muted",
4050
+ "--color-text-brand",
4051
+ "--color-text-muted",
4052
+ "--color-text-primary"
4053
+ ]
4054
+ },
4055
+ {
4056
+ "id": "shared-auth-status-indicator",
4057
+ "category": "shared",
4058
+ "title": {
4059
+ "en": "status indicator",
4060
+ "ko": "status indicator"
4061
+ },
4062
+ "keywords": [
4063
+ "shell",
4064
+ "menu",
4065
+ "notification",
4066
+ "profile",
4067
+ "skeleton",
4068
+ "empty",
4069
+ "탐색",
4070
+ "메뉴",
4071
+ "알림",
4072
+ "프로필",
4073
+ "로딩",
4074
+ "빈"
4075
+ ],
4076
+ "route": null,
4077
+ "states": [],
4078
+ "sourceFile": "components/auth/status-indicator.tsx",
4079
+ "evidence": "docs/design-system/ux-source-evidence/shared-auth-status-indicator.json",
4080
+ "status": "source-indexed",
4081
+ "fragments": [
4082
+ {
4083
+ "id": "StatusPill",
4084
+ "line": 9
4085
+ },
4086
+ {
4087
+ "id": "StatusFlow",
4088
+ "line": 35
4089
+ }
4090
+ ],
4091
+ "tokens": [
4092
+ "--color-bg-default",
4093
+ "--color-bg-subtle",
4094
+ "--color-border-default",
4095
+ "--color-status-error-bg",
4096
+ "--color-status-error-text",
4097
+ "--color-status-info-bg",
4098
+ "--color-status-info-text",
4099
+ "--color-status-success-bg",
4100
+ "--color-status-success-text",
4101
+ "--color-status-warning-bg",
4102
+ "--color-status-warning-text",
4103
+ "--color-text-brand",
4104
+ "--color-text-muted",
4105
+ "--color-text-primary",
4106
+ "--gray-950",
4107
+ "--teal-500"
4108
+ ]
4109
+ },
4110
+ {
4111
+ "id": "shared-portal-empty-state",
4112
+ "category": "shared",
4113
+ "title": {
4114
+ "en": "empty state",
4115
+ "ko": "empty state"
4116
+ },
4117
+ "keywords": [
4118
+ "shell",
4119
+ "menu",
4120
+ "notification",
4121
+ "profile",
4122
+ "skeleton",
4123
+ "empty",
4124
+ "탐색",
4125
+ "메뉴",
4126
+ "알림",
4127
+ "프로필",
4128
+ "로딩",
4129
+ "빈"
4130
+ ],
4131
+ "route": null,
4132
+ "states": [],
4133
+ "sourceFile": "components/portal/empty-state.tsx",
4134
+ "evidence": "docs/design-system/ux-source-evidence/shared-portal-empty-state.json",
4135
+ "status": "source-indexed",
4136
+ "fragments": [
4137
+ {
4138
+ "id": "EmptyState",
4139
+ "line": 13
4140
+ }
4141
+ ],
4142
+ "tokens": [
4143
+ "--color-bg-subtle",
4144
+ "--color-border-default",
4145
+ "--color-text-muted",
4146
+ "--color-text-primary",
4147
+ "--color-text-secondary"
4148
+ ]
4149
+ },
4150
+ {
4151
+ "id": "shared-portal-loading-skeleton",
4152
+ "category": "shared",
4153
+ "title": {
4154
+ "en": "loading skeleton",
4155
+ "ko": "loading skeleton"
4156
+ },
4157
+ "keywords": [
4158
+ "shell",
4159
+ "menu",
4160
+ "notification",
4161
+ "profile",
4162
+ "skeleton",
4163
+ "empty",
4164
+ "탐색",
4165
+ "메뉴",
4166
+ "알림",
4167
+ "프로필",
4168
+ "로딩",
4169
+ "빈"
4170
+ ],
4171
+ "route": null,
4172
+ "states": [],
4173
+ "sourceFile": "components/portal/loading-skeleton.tsx",
4174
+ "evidence": "docs/design-system/ux-source-evidence/shared-portal-loading-skeleton.json",
4175
+ "status": "source-indexed",
4176
+ "fragments": [
4177
+ {
4178
+ "id": "LoadingSkeleton",
4179
+ "line": 5
4180
+ },
4181
+ {
4182
+ "id": "Pulse",
4183
+ "line": 43
4184
+ }
4185
+ ],
4186
+ "tokens": [
4187
+ "--color-bg-default",
4188
+ "--color-bg-subtle",
4189
+ "--color-bg-ui",
4190
+ "--color-border-default"
4191
+ ]
4192
+ },
4193
+ {
4194
+ "id": "shared-portal-notifications-dropdown",
4195
+ "category": "shared",
4196
+ "title": {
4197
+ "en": "notifications dropdown",
4198
+ "ko": "notifications dropdown"
4199
+ },
4200
+ "keywords": [
4201
+ "shell",
4202
+ "menu",
4203
+ "notification",
4204
+ "profile",
4205
+ "skeleton",
4206
+ "empty",
4207
+ "탐색",
4208
+ "메뉴",
4209
+ "알림",
4210
+ "프로필",
4211
+ "로딩",
4212
+ "빈"
4213
+ ],
4214
+ "route": null,
4215
+ "states": [],
4216
+ "sourceFile": "components/portal/notifications-dropdown.tsx",
4217
+ "evidence": "docs/design-system/ux-source-evidence/shared-portal-notifications-dropdown.json",
4218
+ "status": "source-indexed",
4219
+ "fragments": [
4220
+ {
4221
+ "id": "NotificationsDropdown",
4222
+ "line": 27
4223
+ }
4224
+ ],
4225
+ "tokens": [
4226
+ "--color-bg-brand-muted",
4227
+ "--color-bg-default",
4228
+ "--color-bg-subtle",
4229
+ "--color-border-default",
4230
+ "--color-border-muted",
4231
+ "--color-status-info-bg",
4232
+ "--color-status-info-text",
4233
+ "--color-status-success-bg",
4234
+ "--color-status-success-text",
4235
+ "--color-status-warning-bg",
4236
+ "--color-status-warning-text",
4237
+ "--color-text-brand",
4238
+ "--color-text-muted",
4239
+ "--color-text-primary",
4240
+ "--color-text-secondary",
4241
+ "--gray-0",
4242
+ "--red-500",
4243
+ "--teal-500"
4244
+ ]
4245
+ },
4246
+ {
4247
+ "id": "shared-portal-portal-shell",
4248
+ "category": "shared",
4249
+ "title": {
4250
+ "en": "portal shell",
4251
+ "ko": "portal shell"
4252
+ },
4253
+ "keywords": [
4254
+ "shell",
4255
+ "menu",
4256
+ "notification",
4257
+ "profile",
4258
+ "skeleton",
4259
+ "empty",
4260
+ "탐색",
4261
+ "메뉴",
4262
+ "알림",
4263
+ "프로필",
4264
+ "로딩",
4265
+ "빈"
4266
+ ],
4267
+ "route": null,
4268
+ "states": [],
4269
+ "sourceFile": "components/portal/portal-shell.tsx",
4270
+ "evidence": "docs/design-system/ux-source-evidence/shared-portal-portal-shell.json",
4271
+ "status": "source-indexed",
4272
+ "fragments": [
4273
+ {
4274
+ "id": "PortalShell",
4275
+ "line": 78
4276
+ }
4277
+ ],
4278
+ "tokens": [
4279
+ "--color-bg-brand-muted",
4280
+ "--color-bg-default",
4281
+ "--color-bg-subtle",
4282
+ "--color-border-default",
4283
+ "--color-text-brand",
4284
+ "--color-text-muted",
4285
+ "--color-text-primary",
4286
+ "--color-text-secondary",
4287
+ "--gray-950",
4288
+ "--teal-500"
4289
+ ]
4290
+ },
4291
+ {
4292
+ "id": "shared-portal-profile-form",
4293
+ "category": "shared",
4294
+ "title": {
4295
+ "en": "profile form",
4296
+ "ko": "profile form"
4297
+ },
4298
+ "keywords": [
4299
+ "shell",
4300
+ "menu",
4301
+ "notification",
4302
+ "profile",
4303
+ "skeleton",
4304
+ "empty",
4305
+ "탐색",
4306
+ "메뉴",
4307
+ "알림",
4308
+ "프로필",
4309
+ "로딩",
4310
+ "빈"
4311
+ ],
4312
+ "route": null,
4313
+ "states": [],
4314
+ "sourceFile": "components/portal/profile-form.tsx",
4315
+ "evidence": "docs/design-system/ux-source-evidence/shared-portal-profile-form.json",
4316
+ "status": "source-indexed",
4317
+ "fragments": [
4318
+ {
4319
+ "id": "ProfileForm",
4320
+ "line": 25
4321
+ }
4322
+ ],
4323
+ "tokens": [
4324
+ "--color-bg-brand-muted",
4325
+ "--color-border-strong",
4326
+ "--color-status-error-bg",
4327
+ "--color-status-error-border",
4328
+ "--color-status-error-text",
4329
+ "--color-text-brand",
4330
+ "--color-text-muted",
4331
+ "--color-text-secondary"
4332
+ ]
4333
+ },
4334
+ {
4335
+ "id": "shared-portal-settings-view",
4336
+ "category": "shared",
4337
+ "title": {
4338
+ "en": "settings view",
4339
+ "ko": "settings view"
4340
+ },
4341
+ "keywords": [
4342
+ "shell",
4343
+ "menu",
4344
+ "notification",
4345
+ "profile",
4346
+ "skeleton",
4347
+ "empty",
4348
+ "탐색",
4349
+ "메뉴",
4350
+ "알림",
4351
+ "프로필",
4352
+ "로딩",
4353
+ "빈"
4354
+ ],
4355
+ "route": null,
4356
+ "states": [],
4357
+ "sourceFile": "components/portal/settings-view.tsx",
4358
+ "evidence": "docs/design-system/ux-source-evidence/shared-portal-settings-view.json",
4359
+ "status": "source-indexed",
4360
+ "fragments": [
4361
+ {
4362
+ "id": "SettingsView",
4363
+ "line": 35
4364
+ },
4365
+ {
4366
+ "id": "AccountSection",
4367
+ "line": 92
4368
+ },
4369
+ {
4370
+ "id": "NotificationsSection",
4371
+ "line": 190
4372
+ },
4373
+ {
4374
+ "id": "SecuritySection",
4375
+ "line": 243
4376
+ },
4377
+ {
4378
+ "id": "AppearanceSection",
4379
+ "line": 292
4380
+ },
4381
+ {
4382
+ "id": "DevicesSection",
4383
+ "line": 366
4384
+ },
4385
+ {
4386
+ "id": "DangerSection",
4387
+ "line": 410
4388
+ },
4389
+ {
4390
+ "id": "SettingRow",
4391
+ "line": 438
4392
+ },
4393
+ {
4394
+ "id": "ToggleRow",
4395
+ "line": 455
4396
+ }
4397
+ ],
4398
+ "tokens": [
4399
+ "--color-bg-brand-muted",
4400
+ "--color-bg-default",
4401
+ "--color-bg-subtle",
4402
+ "--color-border-brand",
4403
+ "--color-border-danger",
4404
+ "--color-border-default",
4405
+ "--color-status-error-bg",
4406
+ "--color-status-error-text",
4407
+ "--color-status-success-text",
4408
+ "--color-text-brand",
4409
+ "--color-text-muted",
4410
+ "--color-text-primary",
4411
+ "--color-text-secondary"
4412
+ ]
4413
+ },
4414
+ {
4415
+ "id": "shared-portal-usage-sparkline",
4416
+ "category": "shared",
4417
+ "title": {
4418
+ "en": "usage sparkline",
4419
+ "ko": "usage sparkline"
4420
+ },
4421
+ "keywords": [
4422
+ "shell",
4423
+ "menu",
4424
+ "notification",
4425
+ "profile",
4426
+ "skeleton",
4427
+ "empty",
4428
+ "탐색",
4429
+ "메뉴",
4430
+ "알림",
4431
+ "프로필",
4432
+ "로딩",
4433
+ "빈"
4434
+ ],
4435
+ "route": null,
4436
+ "states": [],
4437
+ "sourceFile": "components/portal/usage-sparkline.tsx",
4438
+ "evidence": "docs/design-system/ux-source-evidence/shared-portal-usage-sparkline.json",
4439
+ "status": "source-indexed",
4440
+ "fragments": [
4441
+ {
4442
+ "id": "UsageSparkline",
4443
+ "line": 5
4444
+ }
4445
+ ],
4446
+ "tokens": [
4447
+ "--color-text-muted",
4448
+ "--teal-500"
4449
+ ]
4450
+ },
4451
+ {
4452
+ "id": "shared-portal-user-menu",
4453
+ "category": "shared",
4454
+ "title": {
4455
+ "en": "user menu",
4456
+ "ko": "user menu"
4457
+ },
4458
+ "keywords": [
4459
+ "shell",
4460
+ "menu",
4461
+ "notification",
4462
+ "profile",
4463
+ "skeleton",
4464
+ "empty",
4465
+ "탐색",
4466
+ "메뉴",
4467
+ "알림",
4468
+ "프로필",
4469
+ "로딩",
4470
+ "빈"
4471
+ ],
4472
+ "route": null,
4473
+ "states": [],
4474
+ "sourceFile": "components/portal/user-menu.tsx",
4475
+ "evidence": "docs/design-system/ux-source-evidence/shared-portal-user-menu.json",
4476
+ "status": "source-indexed",
4477
+ "fragments": [
4478
+ {
4479
+ "id": "UserMenu",
4480
+ "line": 18
4481
+ },
4482
+ {
4483
+ "id": "Item",
4484
+ "line": 78
4485
+ }
4486
+ ],
4487
+ "tokens": [
4488
+ "--color-bg-default",
4489
+ "--color-bg-subtle",
4490
+ "--color-border-default",
4491
+ "--color-border-muted",
4492
+ "--color-status-error-text",
4493
+ "--color-text-muted",
4494
+ "--color-text-primary",
4495
+ "--gray-950",
4496
+ "--teal-500"
4497
+ ]
4498
+ },
4499
+ {
4500
+ "id": "error",
4501
+ "category": "system",
4502
+ "title": {
4503
+ "en": "error",
4504
+ "ko": "error"
4505
+ },
4506
+ "keywords": [
4507
+ "error",
4508
+ "loading",
4509
+ "empty",
4510
+ "404",
4511
+ "오류",
4512
+ "로딩",
4513
+ "빈",
4514
+ "خطأ"
4515
+ ],
4516
+ "route": null,
4517
+ "states": [],
4518
+ "sourceFile": "app/error.tsx",
4519
+ "evidence": "docs/design-system/ux-source-evidence/error.json",
4520
+ "status": "source-indexed",
4521
+ "fragments": [
4522
+ {
4523
+ "id": "ErrorPage",
4524
+ "line": 10
4525
+ }
4526
+ ],
4527
+ "tokens": [
4528
+ "--color-bg-default",
4529
+ "--color-border-muted",
4530
+ "--color-status-error-bg",
4531
+ "--color-status-error-text",
4532
+ "--color-text-muted",
4533
+ "--color-text-primary",
4534
+ "--color-text-secondary"
4535
+ ]
4536
+ },
4537
+ {
4538
+ "id": "not-found",
4539
+ "category": "system",
4540
+ "title": {
4541
+ "en": "not found",
4542
+ "ko": "not found"
4543
+ },
4544
+ "keywords": [
4545
+ "error",
4546
+ "loading",
4547
+ "empty",
4548
+ "404",
4549
+ "오류",
4550
+ "로딩",
4551
+ "빈",
4552
+ "خطأ"
4553
+ ],
4554
+ "route": null,
4555
+ "states": [],
4556
+ "sourceFile": "app/not-found.tsx",
4557
+ "evidence": "docs/design-system/ux-source-evidence/not-found.json",
4558
+ "status": "source-indexed",
4559
+ "fragments": [
4560
+ {
4561
+ "id": "NotFound",
4562
+ "line": 9
4563
+ }
4564
+ ],
4565
+ "tokens": [
4566
+ "--color-bg-default",
4567
+ "--color-border-muted",
4568
+ "--color-border-strong",
4569
+ "--color-text-muted",
4570
+ "--color-text-primary",
4571
+ "--color-text-secondary"
4572
+ ]
4573
+ },
4574
+ {
4575
+ "id": "loading",
4576
+ "category": "system",
4577
+ "title": {
4578
+ "en": "loading",
4579
+ "ko": "loading"
4580
+ },
4581
+ "keywords": [
4582
+ "error",
4583
+ "loading",
4584
+ "empty",
4585
+ "404",
4586
+ "오류",
4587
+ "로딩",
4588
+ "빈",
4589
+ "خطأ"
4590
+ ],
4591
+ "route": null,
4592
+ "states": [],
4593
+ "sourceFile": "app/loading.tsx",
4594
+ "evidence": "docs/design-system/ux-source-evidence/loading.json",
4595
+ "status": "source-indexed",
4596
+ "fragments": [
4597
+ {
4598
+ "id": "Loading",
4599
+ "line": 1
4600
+ }
4601
+ ],
4602
+ "tokens": [
4603
+ "--color-bg-default",
4604
+ "--color-text-muted",
4605
+ "--teal-500"
4606
+ ]
4607
+ },
4608
+ {
4609
+ "id": "portal-loading",
4610
+ "category": "system",
4611
+ "title": {
4612
+ "en": "loading",
4613
+ "ko": "loading"
4614
+ },
4615
+ "keywords": [
4616
+ "error",
4617
+ "loading",
4618
+ "empty",
4619
+ "404",
4620
+ "오류",
4621
+ "로딩",
4622
+ "빈",
4623
+ "خطأ"
4624
+ ],
4625
+ "route": null,
4626
+ "states": [],
4627
+ "sourceFile": "app/portal/loading.tsx",
4628
+ "evidence": "docs/design-system/ux-source-evidence/portal-loading.json",
4629
+ "status": "source-indexed",
4630
+ "fragments": [
4631
+ {
4632
+ "id": "PortalLoading",
4633
+ "line": 2
4634
+ }
4635
+ ],
4636
+ "tokens": []
4637
+ },
4638
+ {
4639
+ "id": "admin-loading",
4640
+ "category": "system",
4641
+ "title": {
4642
+ "en": "loading",
4643
+ "ko": "loading"
4644
+ },
4645
+ "keywords": [
4646
+ "error",
4647
+ "loading",
4648
+ "empty",
4649
+ "404",
4650
+ "오류",
4651
+ "로딩",
4652
+ "빈",
4653
+ "خطأ"
4654
+ ],
4655
+ "route": null,
4656
+ "states": [],
4657
+ "sourceFile": "app/admin/loading.tsx",
4658
+ "evidence": "docs/design-system/ux-source-evidence/admin-loading.json",
4659
+ "status": "source-indexed",
4660
+ "fragments": [
4661
+ {
4662
+ "id": "AdminLoading",
4663
+ "line": 2
4664
+ }
4665
+ ],
4666
+ "tokens": []
4667
+ }
4668
+ ]
4669
+ }