create-mithaq 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/LICENSES/openstatus-time-picker.txt +21 -0
  2. package/index.js +457 -63
  3. package/package.json +1 -1
  4. package/template/apps/{asas-platform → asas-backoffice}/package.json +5 -3
  5. package/template/apps/{asas-platform → asas-backoffice}/src/api.ts +1 -1
  6. package/template/apps/{asas-platform → asas-backoffice}/src/auth-frame.tsx +12 -12
  7. package/template/apps/asas-backoffice/src/components.ts +35 -0
  8. package/template/apps/asas-backoffice/src/first-user.ts +14 -0
  9. package/template/apps/{asas-platform → asas-backoffice}/src/links.ts +1 -1
  10. package/template/apps/{asas-platform → asas-backoffice}/src/locale-switch.tsx +7 -5
  11. package/template/apps/asas-backoffice/src/no-organization.tsx +5 -0
  12. package/template/apps/asas-backoffice/src/redirect.ts +1 -0
  13. package/template/apps/{asas-platform → asas-backoffice}/src/request-headers.ts +1 -1
  14. package/template/apps/asas-backoffice/src/routeTree.gen.ts +206 -0
  15. package/template/apps/asas-backoffice/src/router.tsx +18 -0
  16. package/template/apps/asas-backoffice/src/routes/(screens)/backoffice/files.ts +10 -0
  17. package/template/apps/{asas-platform/src/routes/(screens)/platform → asas-backoffice/src/routes/(screens)/backoffice}/screen.json +426 -64
  18. package/template/apps/{asas-platform/src/routes/(screens)/platform → asas-backoffice/src/routes/(screens)/backoffice}/types.ts +18 -0
  19. package/template/apps/{asas-platform/src/routes/(screens)/platform.$.tsx → asas-backoffice/src/routes/(screens)/backoffice.$.tsx} +4 -4
  20. package/template/apps/{asas-platform/src/routes/(screens)/platform.index.tsx → asas-backoffice/src/routes/(screens)/backoffice.index.tsx} +3 -3
  21. package/template/apps/{asas-platform/src/routes/(screens)/platform.tsx → asas-backoffice/src/routes/(screens)/backoffice.tsx} +3 -3
  22. package/template/apps/{asas-platform → asas-backoffice}/src/routes/__root.tsx +2 -2
  23. package/template/apps/asas-backoffice/src/routes/api/$.ts +34 -0
  24. package/template/apps/asas-backoffice/src/routes/auth.create-first-user.tsx +113 -0
  25. package/template/apps/{asas-platform → asas-backoffice}/src/routes/auth.sign-in.tsx +9 -4
  26. package/template/apps/{asas-platform → asas-backoffice}/src/routes/unauthorized.tsx +24 -12
  27. package/template/apps/{asas-platform → asas-backoffice}/src/screen-form.tsx +5 -3
  28. package/template/apps/{asas-platform → asas-backoffice}/src/screen-list.tsx +6 -5
  29. package/template/apps/{asas-platform → asas-backoffice}/src/screen-names.ts +1 -1
  30. package/template/apps/{asas-platform → asas-backoffice}/src/screens.tsx +46 -26
  31. package/template/apps/asas-backoffice/src/server.ts +30 -0
  32. package/template/apps/{asas-platform → asas-backoffice}/src/slide.ts +1 -1
  33. package/template/apps/{asas-platform → asas-backoffice}/src/start.ts +1 -1
  34. package/template/apps/{asas-platform → asas-backoffice}/src/styles.css +9 -7
  35. package/template/apps/{asas-platform → asas-backoffice}/tsconfig.json +2 -2
  36. package/template/apps/{asas-platform → asas-backoffice}/vite.config.ts +7 -1
  37. package/template/apps/asas-tanstack/package.json +4 -2
  38. package/template/apps/asas-tanstack/src/api.ts +1 -1
  39. package/template/apps/asas-tanstack/src/auth-frame.tsx +12 -12
  40. package/template/apps/asas-tanstack/src/choose-password.tsx +150 -0
  41. package/template/apps/asas-tanstack/src/components.ts +35 -0
  42. package/template/apps/asas-tanstack/src/copy.ts +416 -79
  43. package/template/apps/asas-tanstack/src/first-run.ts +16 -0
  44. package/template/apps/asas-tanstack/src/links.ts +1 -1
  45. package/template/apps/asas-tanstack/src/locale-switch.tsx +7 -5
  46. package/template/apps/asas-tanstack/src/no-organization.tsx +108 -0
  47. package/template/apps/asas-tanstack/src/redirect.ts +20 -1
  48. package/template/apps/asas-tanstack/src/request-headers.ts +1 -1
  49. package/template/apps/asas-tanstack/src/routeTree.gen.ts +42 -0
  50. package/template/apps/asas-tanstack/src/router.tsx +12 -1
  51. package/template/apps/asas-tanstack/src/routes/(screens)/dashboard/files.ts +9 -2
  52. package/template/apps/asas-tanstack/src/routes/(screens)/dashboard/screen.json +475 -116
  53. package/template/apps/asas-tanstack/src/routes/(screens)/dashboard/types.ts +4 -2
  54. package/template/apps/asas-tanstack/src/routes/(screens)/portal/files.ts +7 -2
  55. package/template/apps/asas-tanstack/src/routes/(screens)/portal/screen.json +83 -319
  56. package/template/apps/asas-tanstack/src/routes/(screens)/portal/types.ts +3 -1
  57. package/template/apps/asas-tanstack/src/routes/__root.tsx +1 -1
  58. package/template/apps/asas-tanstack/src/routes/auth.accept-invitation.tsx +14 -7
  59. package/template/apps/asas-tanstack/src/routes/auth.first-run.tsx +114 -0
  60. package/template/apps/asas-tanstack/src/routes/auth.forgot-password.tsx +2 -2
  61. package/template/apps/asas-tanstack/src/routes/auth.handoff.ts +5 -5
  62. package/template/apps/asas-tanstack/src/routes/auth.reset-password.tsx +7 -100
  63. package/template/apps/asas-tanstack/src/routes/auth.set-password.tsx +16 -0
  64. package/template/apps/asas-tanstack/src/routes/auth.sign-in.tsx +27 -15
  65. package/template/apps/asas-tanstack/src/routes/auth.sign-up.tsx +59 -38
  66. package/template/apps/asas-tanstack/src/routes/index.tsx +18 -14
  67. package/template/apps/asas-tanstack/src/routes/unauthorized.tsx +24 -12
  68. package/template/apps/asas-tanstack/src/screen-form.tsx +5 -3
  69. package/template/apps/asas-tanstack/src/screen-list.tsx +6 -5
  70. package/template/apps/asas-tanstack/src/screen-names.ts +1 -1
  71. package/template/apps/asas-tanstack/src/screens.tsx +46 -26
  72. package/template/apps/asas-tanstack/src/server.ts +10 -0
  73. package/template/apps/asas-tanstack/src/slide.ts +1 -1
  74. package/template/apps/asas-tanstack/src/styles.css +7 -3
  75. package/template/apps/asas-tanstack/tsconfig.json +2 -2
  76. package/template/apps/asas-tanstack/vite.config.ts +7 -1
  77. package/template/package.json +3 -3
  78. package/template/templates/asas/.claude/skills/add-field/SKILL.md +27 -0
  79. package/template/templates/asas/.claude/skills/add-kayan/SKILL.md +26 -0
  80. package/template/templates/asas/.claude/skills/eject-admin-piece/SKILL.md +28 -0
  81. package/template/templates/asas/.claude/skills/upgrade-mithaq/SKILL.md +35 -0
  82. package/template/templates/asas/.env.example +22 -5
  83. package/template/templates/asas/AGENTS.md +101 -0
  84. package/template/templates/asas/CLAUDE.md +1 -0
  85. package/template/templates/asas/README.md +1056 -0
  86. package/template/templates/asas/package.json +19 -4
  87. package/template/templates/asas/src/asas.ts +81 -56
  88. package/template/templates/asas/src/{platform-http.ts → backoffice-http.ts} +48 -27
  89. package/template/templates/asas/src/dev-setup.ts +112 -0
  90. package/template/templates/asas/src/local-database.ts +22 -0
  91. package/template/templates/asas/src/messages/account.json +129 -103
  92. package/template/templates/asas/src/messages/auditLog.json +223 -105
  93. package/template/templates/asas/src/messages/backofficeLog.json +132 -0
  94. package/template/templates/asas/src/messages/courses.json +256 -214
  95. package/template/templates/asas/src/messages/enrollments.json +45 -27
  96. package/template/templates/asas/src/messages/invitation.json +72 -56
  97. package/template/templates/asas/src/messages/localUsers.json +34 -28
  98. package/template/templates/asas/src/messages/media.json +31 -21
  99. package/template/templates/asas/src/messages/member.json +59 -39
  100. package/template/templates/asas/src/messages/memberRoles.json +37 -31
  101. package/template/templates/asas/src/messages/mithaq.json +206 -162
  102. package/template/templates/asas/src/messages/organization.json +63 -41
  103. package/template/templates/asas/src/messages/organizationRole.json +59 -47
  104. package/template/templates/asas/src/messages/roles.json +59 -45
  105. package/template/templates/asas/src/messages/session.json +99 -79
  106. package/template/templates/asas/src/messages/sessions.json +110 -80
  107. package/template/templates/asas/src/messages/settings.json +51 -53
  108. package/template/templates/asas/src/messages/tags.json +31 -21
  109. package/template/templates/asas/src/messages/user.json +109 -87
  110. package/template/templates/asas/src/messages/verification.json +59 -47
  111. package/template/templates/asas/src/migrations/20261014221355_tags_restrict/migration.sql +1 -0
  112. package/template/templates/asas/src/migrations/20261014221355_tags_restrict/snapshot.json +3881 -0
  113. package/template/templates/asas/src/migrations/20261014222218_one_seat_per_session/migration.sql +1 -0
  114. package/template/templates/asas/src/migrations/20261014222218_one_seat_per_session/snapshot.json +3894 -0
  115. package/template/templates/asas/src/migrations/20261014223522_session_archive_reason/migration.sql +1 -0
  116. package/template/templates/asas/src/migrations/20261014223522_session_archive_reason/snapshot.json +3907 -0
  117. package/template/templates/asas/src/migrations/20261014225728_course_archive_by_operation/migration.sql +1 -0
  118. package/template/templates/asas/src/migrations/20261014225728_course_archive_by_operation/snapshot.json +3907 -0
  119. package/template/templates/asas/src/migrations/20261015042444_organization_names/migration.sql +1 -0
  120. package/template/templates/asas/src/migrations/20261015042444_organization_names/snapshot.json +3920 -0
  121. package/template/templates/asas/src/migrations/20261015053212_member_last_seen/migration.sql +1 -0
  122. package/template/templates/asas/src/migrations/20261015053212_member_last_seen/snapshot.json +3933 -0
  123. package/template/templates/asas/src/migrations/20261015093203_activity_and_staff_history/migration.sql +15 -0
  124. package/template/templates/asas/src/migrations/20261015093203_activity_and_staff_history/snapshot.json +4113 -0
  125. package/template/templates/asas/src/migrations/20261015095752_portal/migration.sql +2 -0
  126. package/template/templates/asas/src/migrations/20261015095752_portal/snapshot.json +4113 -0
  127. package/template/templates/asas/src/migrations/20261015135529_better_auth_indexes/migration.sql +9 -0
  128. package/template/templates/asas/src/migrations/20261015135529_better_auth_indexes/snapshot.json +4302 -0
  129. package/template/templates/asas/src/migrations/20261015162438_audit_changes_json/migration.sql +27 -0
  130. package/template/templates/asas/src/migrations/20261015162438_audit_changes_json/snapshot.json +4289 -0
  131. package/template/templates/asas/src/migrations/schema.ts +1 -0
  132. package/template/templates/asas/src/mithaq.ts +4 -406
  133. package/template/templates/asas/src/organizations.ts +3 -0
  134. package/template/templates/asas/src/seed.ts +147 -45
  135. package/template/templates/asas/src/{ui-platform → ui-backoffice}/home.tsx +9 -9
  136. package/template/templates/asas/src/ui-backoffice/organization-actions.tsx +121 -0
  137. package/template/templates/asas/src/{ui-platform → ui-backoffice}/record-page.tsx +4 -4
  138. package/template/templates/asas/src/{ui-platform → ui-backoffice}/role-cells.tsx +13 -6
  139. package/template/templates/asas/src/{ui-platform → ui-backoffice}/user-actions.tsx +46 -48
  140. package/template/templates/asas/src/ui-dashboard/dashboard.tsx +10 -4
  141. package/template/templates/asas/src/ui-dashboard/home.tsx +73 -0
  142. package/template/templates/asas/src/ui-dashboard/members-card.tsx +147 -0
  143. package/template/templates/asas/src/ui-dashboard/members.tsx +637 -438
  144. package/template/templates/asas/src/ui-dashboard/versions.tsx +22 -8
  145. package/template/templates/asas/src/ui-portal/courses-home.tsx +96 -0
  146. package/template/templates/asas/src/ui-portal/home.tsx +9 -13
  147. package/template/templates/features/audit-log/audit-log/audit-log.ts +284 -0
  148. package/template/templates/features/audit-log/backoffice-log/backoffice-log.ts +67 -0
  149. package/template/templates/features/audit-log/index.ts +4 -0
  150. package/template/templates/features/audit-log/package.json +13 -0
  151. package/template/templates/features/auth/index.ts +11 -0
  152. package/template/templates/{asas/src → features/auth}/local-users/local-users.ts +7 -7
  153. package/template/templates/{auth → features/auth}/package.json +2 -3
  154. package/template/templates/{asas/src/kayan → features}/auth/user/account.access.ts +2 -2
  155. package/template/templates/{asas/src/kayan → features}/auth/user/account.ts +2 -2
  156. package/template/templates/{asas/src/kayan → features}/auth/user/invitation.access.ts +1 -1
  157. package/template/templates/{asas/src/kayan → features}/auth/user/invitation.ts +3 -3
  158. package/template/templates/{asas/src/kayan → features}/auth/user/member.access.ts +4 -4
  159. package/template/templates/{asas/src/kayan → features}/auth/user/member.screens.ts +5 -5
  160. package/template/templates/{asas/src/kayan → features}/auth/user/member.ts +4 -3
  161. package/template/templates/{asas/src/kayan → features}/auth/user/organization.access.ts +6 -6
  162. package/template/templates/{asas/src/kayan → features}/auth/user/organization.screens.ts +6 -6
  163. package/template/templates/{asas/src/kayan → features}/auth/user/organization.ts +2 -1
  164. package/template/templates/{asas/src/kayan → features}/auth/user/organizationRole.access.ts +2 -2
  165. package/template/templates/{asas/src/kayan → features}/auth/user/organizationRole.ts +3 -3
  166. package/template/templates/{asas/src/kayan → features}/auth/user/session.access.ts +2 -2
  167. package/template/templates/{asas/src/kayan → features}/auth/user/session.ts +2 -2
  168. package/template/templates/{asas/src/kayan → features}/auth/user/user.access.ts +8 -7
  169. package/template/templates/{asas/src/kayan → features}/auth/user/user.screens.ts +9 -9
  170. package/template/templates/{asas/src/kayan → features}/auth/user/user.ts +2 -2
  171. package/template/templates/{asas/src/kayan → features}/auth/user/verification.access.ts +2 -2
  172. package/template/templates/{asas/src/kayan → features}/auth/user/verification.ts +2 -2
  173. package/template/templates/{asas/src → features/courses}/courses/courses.ts +122 -133
  174. package/template/templates/features/courses/courses/cover-reads.ts +33 -0
  175. package/template/templates/features/courses/courses/ui/archived-badge.tsx +9 -0
  176. package/template/templates/{asas/src → features/courses}/courses/ui/fee-cell.tsx +1 -1
  177. package/template/templates/{asas/src → features/courses}/courses/ui/status-cell.tsx +5 -3
  178. package/template/templates/features/courses/courses/ui/unpublish-button.tsx +15 -0
  179. package/template/templates/features/courses/domain/archive.ts +39 -0
  180. package/template/templates/features/courses/domain/on-offer.ts +6 -0
  181. package/template/templates/features/courses/enrollments/enrollments.ts +309 -0
  182. package/template/templates/{asas/src → features/courses}/enrollments/ui/session-cell.tsx +17 -7
  183. package/template/templates/{asas/src → features/courses/enrollments}/ui/session-labels.tsx +3 -3
  184. package/template/templates/features/courses/index.ts +8 -0
  185. package/template/templates/features/courses/package.json +24 -0
  186. package/template/templates/features/courses/portal/ui/catalogue.tsx +86 -0
  187. package/template/templates/features/courses/portal/ui/course.tsx +176 -0
  188. package/template/templates/features/courses/portal/ui/enrollments.tsx +170 -0
  189. package/template/templates/features/courses/portal/ui/parts.tsx +95 -0
  190. package/template/templates/features/courses/portal/ui/reads.ts +76 -0
  191. package/template/templates/features/courses/portal/ui/rules.ts +87 -0
  192. package/template/templates/features/courses/portal/ui/shell.tsx +194 -0
  193. package/template/templates/features/courses/sessions/seats.ts +42 -0
  194. package/template/templates/{asas/src → features/courses}/sessions/sessions.ts +45 -14
  195. package/template/templates/features/media/index.ts +10 -0
  196. package/template/templates/{asas/src → features/media}/media/media.ts +34 -40
  197. package/template/templates/{asas/src → features/media}/media/ui/preview.tsx +2 -2
  198. package/template/templates/features/media/package.json +19 -0
  199. package/template/templates/features/roles/index.ts +4 -0
  200. package/template/templates/{asas/src → features/roles}/member-roles/member-roles.ts +15 -15
  201. package/template/templates/features/roles/package.json +21 -0
  202. package/template/templates/{asas/src → features/roles}/roles/roles.ts +23 -23
  203. package/template/templates/{asas/src → features/roles}/roles/ui/role-form.tsx +65 -24
  204. package/template/templates/{asas/src → features/roles}/roles/ui/roles.tsx +49 -25
  205. package/template/templates/features/settings/index.ts +3 -0
  206. package/template/templates/features/settings/package.json +13 -0
  207. package/template/templates/{asas/src → features/settings}/settings/settings.ts +12 -17
  208. package/template/templates/features/tags/index.ts +3 -0
  209. package/template/templates/features/tags/package.json +14 -0
  210. package/template/templates/{asas/src → features/tags}/tags/tags.ts +15 -15
  211. package/template/templates/mithaq/package.json +33 -0
  212. package/template/templates/mithaq/src/mail/index.ts +32 -0
  213. package/template/templates/mithaq/src/mail/mailers.ts +36 -0
  214. package/template/templates/{asas/src/audit-log/sink.ts → mithaq/src/mithaq/audit-sink.ts} +31 -9
  215. package/template/templates/{auth/src/platform-roles.ts → mithaq/src/mithaq/auth/backoffice-roles.ts} +44 -23
  216. package/template/templates/mithaq/src/mithaq/auth/index.ts +1859 -0
  217. package/template/templates/mithaq/src/mithaq/auth/organizations.ts +80 -0
  218. package/template/templates/{asas/src → mithaq/src/mithaq}/pages.ts +16 -7
  219. package/template/templates/mithaq/src/mithaq/rich-text-nodes.ts +19 -0
  220. package/template/templates/mithaq/src/mithaq.ts +593 -0
  221. package/template/templates/mithaq/src/roles/default-member-roles.ts +29 -0
  222. package/template/templates/{asas → mithaq}/src/roles/grants.ts +1 -1
  223. package/template/templates/mithaq/src/roles/member-access.ts +11 -0
  224. package/template/templates/{asas/src → mithaq/src/roles}/statements.ts +6 -4
  225. package/template/templates/mithaq/src/roles/system-roles.ts +16 -0
  226. package/template/templates/{asas/src → mithaq/src/roles}/tenant-access.ts +96 -57
  227. package/template/templates/{asas/src → mithaq/src/roles}/tenant-roles.ts +84 -25
  228. package/template/templates/{asas → mithaq}/src/steps/expected-updated-at.ts +2 -2
  229. package/template/templates/{asas → mithaq}/src/storage/index.ts +3 -1
  230. package/template/templates/mithaq/src/ui/activity-page.tsx +33 -0
  231. package/template/templates/mithaq/src/ui/activity.tsx +527 -0
  232. package/template/templates/{asas → mithaq}/src/ui/app-shell.tsx +27 -19
  233. package/template/templates/mithaq/src/ui/rich-text-nodes.tsx +33 -0
  234. package/template/templates/{asas → mithaq}/src/ui/screen-nav.tsx +1 -1
  235. package/template/templates/{asas → mithaq}/src/ui/top-shell.tsx +8 -8
  236. package/template/apps/asas-platform/src/components/mithaq/cells.tsx +0 -112
  237. package/template/apps/asas-platform/src/components/mithaq/controls.tsx +0 -650
  238. package/template/apps/asas-platform/src/components/mithaq/field-shell.tsx +0 -53
  239. package/template/apps/asas-platform/src/components/mithaq/filter-operators.ts +0 -108
  240. package/template/apps/asas-platform/src/components/mithaq/form.tsx +0 -1467
  241. package/template/apps/asas-platform/src/components/mithaq/list-columns.tsx +0 -108
  242. package/template/apps/asas-platform/src/components/mithaq/list-filters.tsx +0 -368
  243. package/template/apps/asas-platform/src/components/mithaq/list-pagination.tsx +0 -153
  244. package/template/apps/asas-platform/src/components/mithaq/list-query.ts +0 -432
  245. package/template/apps/asas-platform/src/components/mithaq/list-selection.tsx +0 -74
  246. package/template/apps/asas-platform/src/components/mithaq/list.tsx +0 -865
  247. package/template/apps/asas-platform/src/components/mithaq/nav.tsx +0 -871
  248. package/template/apps/asas-platform/src/components/mithaq/nodes.tsx +0 -1024
  249. package/template/apps/asas-platform/src/components/mithaq/relationship-cell.tsx +0 -127
  250. package/template/apps/asas-platform/src/components/mithaq/relationship-control.tsx +0 -400
  251. package/template/apps/asas-platform/src/components/mithaq/rich-text-nodes.ts +0 -6
  252. package/template/apps/asas-platform/src/components/mithaq/rich-text.tsx +0 -1083
  253. package/template/apps/asas-platform/src/components/mithaq/upload.tsx +0 -686
  254. package/template/apps/asas-platform/src/components/ui/drawer.tsx +0 -216
  255. package/template/apps/asas-platform/src/redirect.ts +0 -1
  256. package/template/apps/asas-platform/src/routeTree.gen.ts +0 -181
  257. package/template/apps/asas-platform/src/router.tsx +0 -7
  258. package/template/apps/asas-platform/src/routes/(screens)/platform/files.ts +0 -4
  259. package/template/apps/asas-platform/src/routes/api/$.ts +0 -30
  260. package/template/apps/asas-platform/src/server.ts +0 -20
  261. package/template/apps/asas-tanstack/src/components/mithaq/cells.tsx +0 -112
  262. package/template/apps/asas-tanstack/src/components/mithaq/controls.tsx +0 -650
  263. package/template/apps/asas-tanstack/src/components/mithaq/field-shell.tsx +0 -53
  264. package/template/apps/asas-tanstack/src/components/mithaq/filter-operators.ts +0 -108
  265. package/template/apps/asas-tanstack/src/components/mithaq/form.tsx +0 -1467
  266. package/template/apps/asas-tanstack/src/components/mithaq/list-columns.tsx +0 -108
  267. package/template/apps/asas-tanstack/src/components/mithaq/list-filters.tsx +0 -368
  268. package/template/apps/asas-tanstack/src/components/mithaq/list-pagination.tsx +0 -153
  269. package/template/apps/asas-tanstack/src/components/mithaq/list-query.ts +0 -432
  270. package/template/apps/asas-tanstack/src/components/mithaq/list-selection.tsx +0 -74
  271. package/template/apps/asas-tanstack/src/components/mithaq/list.tsx +0 -865
  272. package/template/apps/asas-tanstack/src/components/mithaq/nav.tsx +0 -871
  273. package/template/apps/asas-tanstack/src/components/mithaq/nodes.tsx +0 -1024
  274. package/template/apps/asas-tanstack/src/components/mithaq/relationship-cell.tsx +0 -127
  275. package/template/apps/asas-tanstack/src/components/mithaq/relationship-control.tsx +0 -400
  276. package/template/apps/asas-tanstack/src/components/mithaq/rich-text-nodes.ts +0 -6
  277. package/template/apps/asas-tanstack/src/components/mithaq/rich-text.tsx +0 -1083
  278. package/template/apps/asas-tanstack/src/components/mithaq/upload.tsx +0 -686
  279. package/template/apps/asas-tanstack/src/components/ui/drawer.tsx +0 -215
  280. package/template/templates/asas/src/audit-log/audit-log.ts +0 -187
  281. package/template/templates/asas/src/audit-log/ui/activity.tsx +0 -243
  282. package/template/templates/asas/src/courses/ui/archive-button.tsx +0 -25
  283. package/template/templates/asas/src/courses/ui/no-courses-on-offer.tsx +0 -11
  284. package/template/templates/asas/src/courses/ui/on-offer.ts +0 -6
  285. package/template/templates/asas/src/enrollments/enrollments.ts +0 -137
  286. package/template/templates/asas/src/rich-text-nodes.ts +0 -11
  287. package/template/templates/asas/src/roles.ts +0 -16
  288. package/template/templates/asas/src/ui/rich-text-nodes.tsx +0 -15
  289. package/template/templates/asas/src/ui-platform/organization-actions.tsx +0 -114
  290. package/template/templates/auth/src/index.ts +0 -690
  291. /package/template/apps/{asas-platform → asas-backoffice}/components.json +0 -0
  292. /package/template/apps/{asas-platform → asas-backoffice}/gitignore +0 -0
  293. /package/template/apps/{asas-platform → asas-backoffice}/public/favicon.svg +0 -0
  294. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/accordion.tsx +0 -0
  295. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/alert-dialog.tsx +0 -0
  296. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/avatar.tsx +0 -0
  297. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/badge.tsx +0 -0
  298. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/breadcrumb.tsx +0 -0
  299. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/button-group.tsx +0 -0
  300. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/button.tsx +0 -0
  301. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/calendar.tsx +0 -0
  302. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/card.tsx +0 -0
  303. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/chart.tsx +0 -0
  304. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/checkbox.tsx +0 -0
  305. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/collapsible.tsx +0 -0
  306. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/combobox.tsx +0 -0
  307. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/dialog.tsx +0 -0
  308. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/direction.tsx +0 -0
  309. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/directional-icon.tsx +0 -0
  310. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/dropdown-menu.tsx +0 -0
  311. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/field.tsx +0 -0
  312. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/input-group.tsx +0 -0
  313. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/input-otp.tsx +0 -0
  314. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/input.tsx +0 -0
  315. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/label.tsx +0 -0
  316. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/popover.tsx +0 -0
  317. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/radio-group.tsx +0 -0
  318. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/resizable.tsx +0 -0
  319. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/scroll-area.tsx +0 -0
  320. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/select.tsx +0 -0
  321. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/separator.tsx +0 -0
  322. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/sheet.tsx +0 -0
  323. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/sidebar.tsx +0 -0
  324. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/skeleton.tsx +0 -0
  325. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/slider.tsx +0 -0
  326. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/spinner.tsx +0 -0
  327. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/switch.tsx +0 -0
  328. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/table.tsx +0 -0
  329. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/tabs.tsx +0 -0
  330. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/textarea.tsx +0 -0
  331. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/toggle-group.tsx +0 -0
  332. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/toggle.tsx +0 -0
  333. /package/template/apps/{asas-platform → asas-backoffice}/src/components/ui/tooltip.tsx +0 -0
  334. /package/template/apps/{asas-platform → asas-backoffice}/src/copy.ts +0 -0
  335. /package/template/apps/{asas-platform → asas-backoffice}/src/hooks/use-mobile.ts +0 -0
  336. /package/template/apps/{asas-platform → asas-backoffice}/src/lib/utils.ts +0 -0
  337. /package/template/apps/{asas-platform → asas-backoffice}/src/theme.ts +0 -0
  338. /package/template/templates/{asas/src/kayan → features}/auth/user/index.ts +0 -0
  339. /package/template/templates/{asas/src → features/courses}/courses/ui/no-courses.tsx +0 -0
  340. /package/template/templates/{asas → mithaq}/components.json +0 -0
  341. /package/template/templates/{asas → mithaq}/src/storage/defaults.ts +0 -0
  342. /package/template/templates/{asas → mithaq}/src/storage/local.ts +0 -0
  343. /package/template/templates/{asas → mithaq}/src/storage/r2.ts +0 -0
  344. /package/template/templates/{asas → mithaq}/src/storage/s3.ts +0 -0
  345. /package/template/templates/{asas → mithaq}/src/storage/uploadthing.ts +0 -0
  346. /package/template/templates/{asas → mithaq}/src/ui/kpi-card.tsx +0 -0
  347. /package/template/templates/{asas → mithaq}/src/ui/record-page.tsx +0 -0
  348. /package/template/templates/{asas → mithaq}/src/ui/table-page.tsx +0 -0
@@ -0,0 +1,132 @@
1
+ {
2
+ "action": {
3
+ "$value": {
4
+ "ar": "الإجراء",
5
+ "en": "Action"
6
+ },
7
+ "invalid": {
8
+ "ar": "هذا ليس نصا.",
9
+ "en": "This is not text."
10
+ },
11
+ "required": {
12
+ "ar": "هذا الحقل مطلوب.",
13
+ "en": "This field is required."
14
+ }
15
+ },
16
+ "actor": {
17
+ "$value": {
18
+ "ar": "عضو الطاقم",
19
+ "en": "Staff member"
20
+ },
21
+ "invalid": {
22
+ "ar": "هذا ليس نصا.",
23
+ "en": "This is not text."
24
+ },
25
+ "required": {
26
+ "ar": "هذا الحقل مطلوب.",
27
+ "en": "This field is required."
28
+ }
29
+ },
30
+ "actorEmail": {
31
+ "$value": {
32
+ "ar": "بريد عضو الطاقم",
33
+ "en": "Staff member's email"
34
+ },
35
+ "invalid": {
36
+ "ar": "هذا ليس نصا.",
37
+ "en": "This is not text."
38
+ },
39
+ "required": {
40
+ "ar": "هذا الحقل مطلوب.",
41
+ "en": "This field is required."
42
+ }
43
+ },
44
+ "banReason": {
45
+ "$value": {
46
+ "ar": "سبب الحظر",
47
+ "en": "Ban reason"
48
+ },
49
+ "invalid": {
50
+ "ar": "هذا ليس نصا.",
51
+ "en": "This is not text."
52
+ },
53
+ "required": {
54
+ "ar": "هذا الحقل مطلوب.",
55
+ "en": "This field is required."
56
+ }
57
+ },
58
+ "id": {
59
+ "invalid": {
60
+ "ar": "هذا ليس معرفا فريدا.",
61
+ "en": "This is not a unique identifier."
62
+ },
63
+ "required": {
64
+ "ar": "هذا الحقل مطلوب.",
65
+ "en": "This field is required."
66
+ }
67
+ },
68
+ "plural": {
69
+ "ar": "سجل الطاقم",
70
+ "en": "Staff history"
71
+ },
72
+ "previousRole": {
73
+ "$value": {
74
+ "ar": "الدور السابق",
75
+ "en": "Role before"
76
+ },
77
+ "invalid": {
78
+ "ar": "هذا ليس نصا.",
79
+ "en": "This is not text."
80
+ },
81
+ "required": {
82
+ "ar": "هذا الحقل مطلوب.",
83
+ "en": "This field is required."
84
+ }
85
+ },
86
+ "role": {
87
+ "$value": {
88
+ "ar": "الدور الجديد",
89
+ "en": "Role after"
90
+ },
91
+ "invalid": {
92
+ "ar": "هذا ليس نصا.",
93
+ "en": "This is not text."
94
+ },
95
+ "required": {
96
+ "ar": "هذا الحقل مطلوب.",
97
+ "en": "This field is required."
98
+ }
99
+ },
100
+ "singular": {
101
+ "ar": "إجراء طاقم",
102
+ "en": "Staff action"
103
+ },
104
+ "target": {
105
+ "$value": {
106
+ "ar": "الشخص",
107
+ "en": "Person"
108
+ },
109
+ "invalid": {
110
+ "ar": "هذا ليس نصا.",
111
+ "en": "This is not text."
112
+ },
113
+ "required": {
114
+ "ar": "هذا الحقل مطلوب.",
115
+ "en": "This field is required."
116
+ }
117
+ },
118
+ "targetEmail": {
119
+ "$value": {
120
+ "ar": "بريد الشخص",
121
+ "en": "Person's email"
122
+ },
123
+ "invalid": {
124
+ "ar": "هذا ليس نصا.",
125
+ "en": "This is not text."
126
+ },
127
+ "required": {
128
+ "ar": "هذا الحقل مطلوب.",
129
+ "en": "This field is required."
130
+ }
131
+ }
132
+ }
@@ -1,192 +1,212 @@
1
1
  {
2
2
  "_status": {
3
- "ar": "الحالة",
4
- "en": "Status"
5
- },
6
- "_status.invalid": {
7
- "ar": "هذا ليس نصا.",
8
- "en": "This is not text."
9
- },
10
- "_status.required": {
11
- "ar": "هذا الحقل مطلوب.",
12
- "en": "This field is required."
3
+ "$value": {
4
+ "ar": "الحالة",
5
+ "en": "Status"
6
+ },
7
+ "invalid": {
8
+ "ar": "هذا ليس نصا.",
9
+ "en": "This is not text."
10
+ },
11
+ "required": {
12
+ "ar": "هذا الحقل مطلوب.",
13
+ "en": "This field is required."
14
+ }
13
15
  },
14
16
  "accessCode": {
15
- "ar": "رمز الدخول",
16
- "en": "Access code"
17
- },
18
- "accessCode.invalid": {
19
- "ar": "هذا ليس نصا.",
20
- "en": "This is not text."
21
- },
22
- "accessCode.maxLength": {
23
- "ar": "القيمة طويلة جدًا.",
24
- "en": "The value is too long."
25
- },
26
- "accessCode.required": {
27
- "ar": "هذا الحقل مطلوب.",
28
- "en": "This field is required."
17
+ "$value": {
18
+ "ar": "رمز الدخول",
19
+ "en": "Access code"
20
+ },
21
+ "invalid": {
22
+ "ar": "هذا ليس نصا.",
23
+ "en": "This is not text."
24
+ },
25
+ "maxLength": {
26
+ "ar": "القيمة طويلة جدًا.",
27
+ "en": "The value is too long."
28
+ },
29
+ "required": {
30
+ "ar": "هذا الحقل مطلوب.",
31
+ "en": "This field is required."
32
+ }
29
33
  },
30
34
  "archiveReason": {
31
35
  "ar": "سبب الأرشفة",
32
36
  "en": "Archive reason"
33
37
  },
34
- "archiveReason.invalid": {
35
- "ar": "هذا ليس نصا.",
36
- "en": "This is not text."
37
- },
38
- "archiveReason.maxLength": {
39
- "ar": "القيمة طويلة جدًا.",
40
- "en": "The value is too long."
41
- },
42
- "archiveReason.required": {
43
- "ar": "هذا الحقل مطلوب.",
44
- "en": "This field is required."
45
- },
46
38
  "archived": {
47
39
  "ar": "مؤرشف",
48
40
  "en": "Archived"
49
41
  },
50
- "archived.invalid": {
51
- "ar": "يجاب على هذا بنعم أو لا.",
52
- "en": "This is answered yes or no."
53
- },
54
- "archived.required": {
55
- "ar": "هذا الحقل مطلوب.",
56
- "en": "This field is required."
57
- },
58
42
  "audience": {
59
- "ar": "الجمهور",
60
- "en": "Audience"
61
- },
62
- "audience.invalid": {
63
- "ar": "هذا ليس نصا.",
64
- "en": "This is not text."
65
- },
66
- "audience.required": {
67
- "ar": "هذا الحقل مطلوب.",
68
- "en": "This field is required."
43
+ "$value": {
44
+ "ar": "الجمهور",
45
+ "en": "Audience"
46
+ },
47
+ "invalid": {
48
+ "ar": "هذا ليس نصا.",
49
+ "en": "This is not text."
50
+ },
51
+ "required": {
52
+ "ar": "هذا الحقل مطلوب.",
53
+ "en": "This field is required."
54
+ }
69
55
  },
70
56
  "cover": {
71
- "ar": "صورة الغلاف",
72
- "en": "Cover image"
73
- },
74
- "cover.invalid": {
75
- "ar": "اختر ملفا من القائمة.",
76
- "en": "Pick one of the listed files."
77
- },
78
- "cover.required": {
79
- "ar": "هذا الحقل مطلوب.",
80
- "en": "This field is required."
57
+ "$value": {
58
+ "ar": "صورة الغلاف",
59
+ "en": "Cover image"
60
+ },
61
+ "invalid": {
62
+ "ar": "اختر ملفا من القائمة.",
63
+ "en": "Pick one of the listed files."
64
+ },
65
+ "required": {
66
+ "ar": "هذا الحقل مطلوب.",
67
+ "en": "This field is required."
68
+ }
81
69
  },
82
70
  "currency": {
83
- "ar": "العملة",
84
- "en": "Currency"
85
- },
86
- "currency.invalid": {
87
- "ar": "هذا ليس نصا.",
88
- "en": "This is not text."
89
- },
90
- "currency.required": {
91
- "ar": "هذا الحقل مطلوب.",
92
- "en": "This field is required."
71
+ "$value": {
72
+ "ar": "العملة",
73
+ "en": "Currency"
74
+ },
75
+ "invalid": {
76
+ "ar": "هذا ليس نصا.",
77
+ "en": "This is not text."
78
+ },
79
+ "required": {
80
+ "ar": "هذا الحقل مطلوب.",
81
+ "en": "This field is required."
82
+ }
93
83
  },
94
84
  "delivery": {
95
- "ar": "طريقة التقديم",
96
- "en": "Delivery"
97
- },
98
- "delivery.invalid": {
99
- "ar": "هذا ليس نصا.",
100
- "en": "This is not text."
101
- },
102
- "delivery.required": {
103
- "ar": "هذا الحقل مطلوب.",
104
- "en": "This field is required."
85
+ "$value": {
86
+ "ar": "طريقة التقديم",
87
+ "en": "Delivery"
88
+ },
89
+ "invalid": {
90
+ "ar": "هذا ليس نصا.",
91
+ "en": "This is not text."
92
+ },
93
+ "required": {
94
+ "ar": "هذا الحقل مطلوب.",
95
+ "en": "This field is required."
96
+ }
105
97
  },
106
98
  "details": {
107
- "ar": "التفاصيل",
108
- "en": "Details"
109
- },
110
- "details.invalid": {
111
- "ar": "هذا ليس نصا منسقا.",
112
- "en": "This is not rich text."
113
- },
114
- "details.required": {
115
- "ar": "هذا الحقل مطلوب.",
116
- "en": "This field is required."
99
+ "$value": {
100
+ "ar": "التفاصيل",
101
+ "en": "Details"
102
+ },
103
+ "invalid": {
104
+ "ar": "هذا ليس نصا منسقا.",
105
+ "en": "This is not rich text."
106
+ },
107
+ "required": {
108
+ "ar": "هذا الحقل مطلوب.",
109
+ "en": "This field is required."
110
+ }
117
111
  },
118
112
  "fee": {
119
- "ar": "الرسوم",
120
- "en": "Fee"
121
- },
122
- "fee.invalid": {
123
- "ar": "هذا ليس رقما.",
124
- "en": "This is not a number."
125
- },
126
- "fee.min": {
127
- "ar": "الرسوم لا تكون سالبة أبدًا.",
128
- "en": "A fee is never negative."
129
- },
130
- "id.invalid": {
131
- "ar": "هذا ليس معرفا فريدا.",
132
- "en": "This is not a unique identifier."
133
- },
134
- "id.required": {
135
- "ar": "هذا الحقل مطلوب.",
136
- "en": "This field is required."
113
+ "$value": {
114
+ "ar": "الرسوم",
115
+ "en": "Fee"
116
+ },
117
+ "invalid": {
118
+ "ar": "هذا ليس رقما.",
119
+ "en": "This is not a number."
120
+ },
121
+ "min": {
122
+ "ar": "الرسوم لا تكون سالبة أبدًا.",
123
+ "en": "A fee is never negative."
124
+ }
125
+ },
126
+ "id": {
127
+ "invalid": {
128
+ "ar": "هذا ليس معرفا فريدا.",
129
+ "en": "This is not a unique identifier."
130
+ },
131
+ "required": {
132
+ "ar": "هذا الحقل مطلوب.",
133
+ "en": "This field is required."
134
+ }
137
135
  },
138
136
  "level": {
139
- "ar": "المستوى",
140
- "en": "Level"
141
- },
142
- "level.invalid": {
143
- "ar": "هذا ليس رقما.",
144
- "en": "This is not a number."
145
- },
146
- "level.max": {
147
- "ar": "القيمة أكبر من المسموح.",
148
- "en": "The value is too large."
149
- },
150
- "level.min": {
151
- "ar": "القيمة أصغر من المسموح.",
152
- "en": "The value is too small."
153
- },
154
- "level.required": {
155
- "ar": "هذا الحقل مطلوب.",
156
- "en": "This field is required."
137
+ "$value": {
138
+ "ar": "المستوى",
139
+ "en": "Level"
140
+ },
141
+ "invalid": {
142
+ "ar": "هذا ليس رقما.",
143
+ "en": "This is not a number."
144
+ },
145
+ "max": {
146
+ "ar": "القيمة أكبر من المسموح.",
147
+ "en": "The value is too large."
148
+ },
149
+ "min": {
150
+ "ar": "القيمة أصغر من المسموح.",
151
+ "en": "The value is too small."
152
+ },
153
+ "required": {
154
+ "ar": "هذا الحقل مطلوب.",
155
+ "en": "This field is required."
156
+ }
157
157
  },
158
158
  "notifications": {
159
- "ar": "الإشعارات",
160
- "en": "Notifications"
161
- },
162
- "notifications.invalid": {
163
- "ar": "يجاب على هذا بنعم أو لا.",
164
- "en": "This is answered yes or no."
165
- },
166
- "notifications.required": {
167
- "ar": "هذا الحقل مطلوب.",
168
- "en": "This field is required."
159
+ "$value": {
160
+ "ar": "الإشعارات",
161
+ "en": "Notifications"
162
+ },
163
+ "invalid": {
164
+ "ar": "يجاب على هذا بنعم أو لا.",
165
+ "en": "This is answered yes or no."
166
+ },
167
+ "required": {
168
+ "ar": "هذا الحقل مطلوب.",
169
+ "en": "This field is required."
170
+ }
169
171
  },
170
172
  "opensOn": {
171
- "ar": "يفتح في",
172
- "en": "Opens on"
173
- },
174
- "opensOn.invalid": {
175
- "ar": "هذا ليس تاريخا.",
176
- "en": "This is not a date."
177
- },
178
- "opensOn.required": {
179
- "ar": "هذا الحقل مطلوب.",
180
- "en": "This field is required."
181
- },
182
- "operations.archive.reason": {
183
- "ar": "السبب",
184
- "en": "Reason"
173
+ "$value": {
174
+ "ar": "يفتح في",
175
+ "en": "Opens on"
176
+ },
177
+ "invalid": {
178
+ "ar": "هذا ليس تاريخا.",
179
+ "en": "This is not a date."
180
+ },
181
+ "required": {
182
+ "ar": "هذا الحقل مطلوب.",
183
+ "en": "This field is required."
184
+ }
185
+ },
186
+ "operations": {
187
+ "archive": {
188
+ "reason": {
189
+ "ar": "السبب",
190
+ "en": "Reason"
191
+ }
192
+ },
193
+ "unarchive": {
194
+ "reason": {
195
+ "ar": "السبب",
196
+ "en": "Reason"
197
+ }
198
+ }
185
199
  },
186
200
  "organization": {
187
201
  "ar": "المؤسسة",
188
202
  "en": "Organization"
189
203
  },
204
+ "page": {
205
+ "description": {
206
+ "ar": "كل ما هو معروض في الدليل، وما يكلفه مقعد في كل منها.",
207
+ "en": "Everything on offer in the catalogue, and what a seat on each costs."
208
+ }
209
+ },
190
210
  "plural": {
191
211
  "ar": "الدورات",
192
212
  "en": "Courses"
@@ -195,76 +215,98 @@
195
215
  "ar": "الجلسات المجدولة",
196
216
  "en": "Scheduled sessions"
197
217
  },
218
+ "selfEnroll": {
219
+ "$value": {
220
+ "ar": "يسجّل الطلاب أنفسهم",
221
+ "en": "Students may enroll themselves"
222
+ },
223
+ "invalid": {
224
+ "ar": "يجاب على هذا بنعم أو لا.",
225
+ "en": "This is answered yes or no."
226
+ },
227
+ "required": {
228
+ "ar": "هذا الحقل مطلوب.",
229
+ "en": "This field is required."
230
+ }
231
+ },
198
232
  "singular": {
199
233
  "ar": "دورة",
200
234
  "en": "Course"
201
235
  },
202
236
  "summary": {
203
- "ar": "الملخص",
204
- "en": "Summary"
205
- },
206
- "summary.invalid": {
207
- "ar": "هذا ليس نصا.",
208
- "en": "This is not text."
209
- },
210
- "summary.maxLength": {
211
- "ar": "القيمة طويلة جدًا.",
212
- "en": "The value is too long."
213
- },
214
- "summary.required": {
215
- "ar": "هذا الحقل مطلوب.",
216
- "en": "This field is required."
237
+ "$value": {
238
+ "ar": "الملخص",
239
+ "en": "Summary"
240
+ },
241
+ "invalid": {
242
+ "ar": "هذا ليس نصا.",
243
+ "en": "This is not text."
244
+ },
245
+ "maxLength": {
246
+ "ar": "القيمة طويلة جدًا.",
247
+ "en": "The value is too long."
248
+ },
249
+ "required": {
250
+ "ar": "هذا الحقل مطلوب.",
251
+ "en": "This field is required."
252
+ }
217
253
  },
218
254
  "tags": {
219
- "ar": "الوسوم",
220
- "en": "Tags"
221
- },
222
- "tags.invalid": {
223
- "ar": "اختر عنصرًا من القائمة.",
224
- "en": "Pick one of the listed entries."
225
- },
226
- "tags.required": {
227
- "ar": "هذا الحقل مطلوب.",
228
- "en": "This field is required."
255
+ "$value": {
256
+ "ar": "الوسوم",
257
+ "en": "Tags"
258
+ },
259
+ "invalid": {
260
+ "ar": "اختر عنصرًا من القائمة.",
261
+ "en": "Pick one of the listed entries."
262
+ },
263
+ "required": {
264
+ "ar": "هذا الحقل مطلوب.",
265
+ "en": "This field is required."
266
+ }
229
267
  },
230
268
  "title": {
231
- "ar": "العنوان",
232
- "en": "Title"
233
- },
234
- "title.description": {
235
- "ar": "الاسم الذي يراه الطالب في الدليل.",
236
- "en": "The name a student sees in the catalogue."
237
- },
238
- "title.invalid": {
239
- "ar": "هذا ليس نصا.",
240
- "en": "This is not text."
241
- },
242
- "title.maxLength": {
243
- "ar": "القيمة طويلة جدًا.",
244
- "en": "The value is too long."
245
- },
246
- "title.placeholder": {
247
- "ar": "مقدمة في الخط العربي",
248
- "en": "Introduction to Arabic calligraphy"
249
- },
250
- "title.required": {
251
- "ar": "هذا الحقل مطلوب.",
252
- "en": "This field is required."
269
+ "$value": {
270
+ "ar": "العنوان",
271
+ "en": "Title"
272
+ },
273
+ "description": {
274
+ "ar": "الاسم الذي يراه الطالب في الدليل.",
275
+ "en": "The name a student sees in the catalogue."
276
+ },
277
+ "invalid": {
278
+ "ar": "هذا ليس نصا.",
279
+ "en": "This is not text."
280
+ },
281
+ "maxLength": {
282
+ "ar": "القيمة طويلة جدًا.",
283
+ "en": "The value is too long."
284
+ },
285
+ "placeholder": {
286
+ "ar": "مقدمة في الخط العربي",
287
+ "en": "Introduction to Arabic calligraphy"
288
+ },
289
+ "required": {
290
+ "ar": "هذا الحقل مطلوب.",
291
+ "en": "This field is required."
292
+ }
253
293
  },
254
294
  "topics": {
255
- "ar": "المواضيع",
256
- "en": "Topics"
257
- },
258
- "topics.invalid": {
259
- "ar": "هذه ليست قائمة نصوص.",
260
- "en": "This is not a list of text."
261
- },
262
- "topics.maxRows": {
263
- "ar": "هذه القائمة فيها عناصر أكثر من المسموح.",
264
- "en": "This list has too many entries."
265
- },
266
- "topics.required": {
267
- "ar": "هذا الحقل مطلوب.",
268
- "en": "This field is required."
295
+ "$value": {
296
+ "ar": "المواضيع",
297
+ "en": "Topics"
298
+ },
299
+ "invalid": {
300
+ "ar": "هذه ليست قائمة نصوص.",
301
+ "en": "This is not a list of text."
302
+ },
303
+ "maxRows": {
304
+ "ar": "هذه القائمة فيها عناصر أكثر من المسموح.",
305
+ "en": "This list has too many entries."
306
+ },
307
+ "required": {
308
+ "ar": "هذا الحقل مطلوب.",
309
+ "en": "This field is required."
310
+ }
269
311
  }
270
312
  }