@askrjs/cli 0.0.2 → 0.0.4

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 (310) hide show
  1. package/README.md +46 -7
  2. package/dist/add.d.ts +16 -0
  3. package/dist/add.js +558 -1
  4. package/dist/cli.d.ts +5 -0
  5. package/dist/cli.js +43 -16
  6. package/dist/create.d.ts +5 -0
  7. package/dist/create.js +104 -26
  8. package/dist/directory-swap-DWoHtx7C.js +35 -0
  9. package/dist/discovery-Difb7Y4G.js +323 -0
  10. package/dist/generate.d.ts +5 -0
  11. package/dist/generate.js +461 -0
  12. package/dist/is-direct-execution-Cdlr-ZUl.js +0 -2
  13. package/dist/openapi.d.ts +25 -0
  14. package/dist/openapi.js +49 -16
  15. package/dist/planner-VAj7qlxr.js +285 -0
  16. package/dist/range-YUs9eimn.js +125 -0
  17. package/dist/registry-CyrRHRG5.js +209 -0
  18. package/dist/skills/askr-dashboard-charts/SKILL.md +61 -44
  19. package/dist/skills/askr-dashboard-charts/agents/openai.yaml +2 -2
  20. package/dist/skills/askr-ssr-ssg/SKILL.md +3 -1
  21. package/dist/{skills-Bh0mEhIx.js → skills-B7CbWur9.js} +89 -26
  22. package/dist/skills.d.ts +18 -0
  23. package/dist/skills.js +1 -1
  24. package/dist/specification-DXnDOC-0.js +49 -0
  25. package/dist/ssg-config.d.ts +41 -0
  26. package/dist/ssg-config.js +1 -0
  27. package/dist/ssg.d.ts +61 -0
  28. package/dist/ssg.js +360 -24
  29. package/dist/templates/full-stack/AGENTS.md +0 -1
  30. package/dist/templates/full-stack/README.md +0 -1
  31. package/dist/templates/full-stack/index.html +0 -1
  32. package/dist/templates/full-stack/package.json +5 -3
  33. package/dist/templates/full-stack/server.ts +5 -9
  34. package/dist/templates/full-stack/src/action-authorizations.ts +2 -2
  35. package/dist/templates/full-stack/src/actions/create-message.ts +5 -5
  36. package/dist/templates/full-stack/src/i18n.ts +4 -4
  37. package/dist/templates/full-stack/src/main.tsx +4 -5
  38. package/dist/templates/full-stack/src/pages/home.tsx +5 -5
  39. package/dist/templates/full-stack/src/pages/layout.tsx +15 -5
  40. package/dist/templates/full-stack/src/pages/not-found.tsx +5 -2
  41. package/dist/templates/full-stack/src/routes.tsx +11 -12
  42. package/dist/templates/full-stack/src/schemas.ts +1 -2
  43. package/dist/templates/full-stack/src/server/action-registry.ts +5 -10
  44. package/dist/templates/full-stack/src/server/actions/create-message.ts +4 -4
  45. package/dist/templates/full-stack/src/server/app.ts +67 -57
  46. package/dist/templates/full-stack/src/server/dependencies.ts +10 -10
  47. package/dist/templates/full-stack/src/server/entry-server.ts +3 -3
  48. package/dist/templates/full-stack/src/telemetry.ts +1 -2
  49. package/dist/templates/full-stack/tests/actions/create-message.test.ts +7 -8
  50. package/dist/templates/full-stack/tsconfig.json +1 -2
  51. package/dist/templates/full-stack/vite.config.ts +5 -6
  52. package/dist/templates/spa/AGENTS.md +1 -1
  53. package/dist/templates/spa/package.json +3 -4
  54. package/dist/templates/spa/src/adapters/operations-client.ts +7 -2
  55. package/dist/templates/spa/src/pages/app/_routes.tsx +2 -0
  56. package/dist/templates/spa/src/pages/app/admin-home.tsx +21 -3
  57. package/dist/templates/spa/src/pages/public/_routes.tsx +2 -0
  58. package/dist/templates/spa/src/styles.css +1 -1
  59. package/dist/templates/spa/tsconfig.json +2 -1
  60. package/dist/templates/spa/vitest.config.ts +0 -4
  61. package/dist/templates/ssg/README.md +1 -1
  62. package/dist/templates/ssg/package.json +1 -1
  63. package/dist/templates/ssg/ssg.config.ts +7 -0
  64. package/dist/templates/ssg/tests/ssg-config.test.ts +5 -3
  65. package/dist/templates/ssg/tsconfig.json +2 -1
  66. package/dist/templates/ssg/vitest.config.ts +0 -4
  67. package/dist/templates/ssr/package.json +2 -2
  68. package/dist/templates/ssr/server.ts +4 -10
  69. package/dist/templates/ssr/src/entry-server.tsx +6 -4
  70. package/dist/templates/startkit/package.json +2 -2
  71. package/dist/templates/startkit/src/lib/mock-data.ts +17 -39
  72. package/dist/templates/startkit/tsconfig.json +2 -1
  73. package/dist/update.d.ts +41 -0
  74. package/dist/update.js +282 -2
  75. package/dist/writer-D8qe_7ud.js +226 -0
  76. package/package.json +23 -22
  77. package/dist/add-DqhqRzBQ.js +0 -555
  78. package/dist/add-DqhqRzBQ.js.map +0 -1
  79. package/dist/cli.js.map +0 -1
  80. package/dist/create.js.map +0 -1
  81. package/dist/is-direct-execution-Cdlr-ZUl.js.map +0 -1
  82. package/dist/openapi.js.map +0 -1
  83. package/dist/skills-Bh0mEhIx.js.map +0 -1
  84. package/dist/ssg.js.map +0 -1
  85. package/dist/templates/full-stack/src/vite-server.d.ts +0 -6
  86. package/dist/templates/spa/src/styles.d.ts +0 -1
  87. package/dist/templates/ssg/src/vite-env.d.ts +0 -5
  88. package/dist/templates/ssr/src/vite-server.d.ts +0 -7
  89. package/dist/templates/startkit/src/vite-env.d.ts +0 -5
  90. package/dist/update-DyW1na5V.js +0 -1140
  91. package/dist/update-DyW1na5V.js.map +0 -1
  92. package/skills/askr-accessibility/SKILL.md +0 -68
  93. package/skills/askr-accessibility/agents/openai.yaml +0 -4
  94. package/skills/askr-agent-execution/SKILL.md +0 -85
  95. package/skills/askr-agent-execution/agents/openai.yaml +0 -4
  96. package/skills/askr-agent-workflows/SKILL.md +0 -57
  97. package/skills/askr-agent-workflows/agents/openai.yaml +0 -4
  98. package/skills/askr-api-integration/SKILL.md +0 -79
  99. package/skills/askr-api-integration/agents/openai.yaml +0 -4
  100. package/skills/askr-app-builder/SKILL.md +0 -99
  101. package/skills/askr-app-builder/agents/openai.yaml +0 -4
  102. package/skills/askr-auth-access/SKILL.md +0 -74
  103. package/skills/askr-auth-access/agents/openai.yaml +0 -4
  104. package/skills/askr-cli-vite/SKILL.md +0 -76
  105. package/skills/askr-cli-vite/agents/openai.yaml +0 -4
  106. package/skills/askr-dashboard-charts/SKILL.md +0 -82
  107. package/skills/askr-dashboard-charts/agents/openai.yaml +0 -4
  108. package/skills/askr-design-system/SKILL.md +0 -86
  109. package/skills/askr-design-system/agents/openai.yaml +0 -4
  110. package/skills/askr-env-config/SKILL.md +0 -74
  111. package/skills/askr-env-config/agents/openai.yaml +0 -4
  112. package/skills/askr-error-loading-empty/SKILL.md +0 -89
  113. package/skills/askr-error-loading-empty/agents/openai.yaml +0 -4
  114. package/skills/askr-file-upload-artifacts/SKILL.md +0 -77
  115. package/skills/askr-file-upload-artifacts/agents/openai.yaml +0 -4
  116. package/skills/askr-forms-tables-crud/SKILL.md +0 -98
  117. package/skills/askr-forms-tables-crud/agents/openai.yaml +0 -4
  118. package/skills/askr-mental-model/SKILL.md +0 -109
  119. package/skills/askr-mental-model/agents/openai.yaml +0 -4
  120. package/skills/askr-migration-react/SKILL.md +0 -81
  121. package/skills/askr-migration-react/agents/openai.yaml +0 -4
  122. package/skills/askr-observability-debugging/SKILL.md +0 -83
  123. package/skills/askr-observability-debugging/agents/openai.yaml +0 -4
  124. package/skills/askr-project-structure/SKILL.md +0 -79
  125. package/skills/askr-project-structure/agents/openai.yaml +0 -4
  126. package/skills/askr-query-mutation/SKILL.md +0 -115
  127. package/skills/askr-query-mutation/agents/openai.yaml +0 -4
  128. package/skills/askr-realtime-streaming/SKILL.md +0 -76
  129. package/skills/askr-realtime-streaming/agents/openai.yaml +0 -4
  130. package/skills/askr-resources-data/SKILL.md +0 -100
  131. package/skills/askr-resources-data/agents/openai.yaml +0 -4
  132. package/skills/askr-routing-layouts/SKILL.md +0 -107
  133. package/skills/askr-routing-layouts/agents/openai.yaml +0 -4
  134. package/skills/askr-runtime-reactivity/SKILL.md +0 -92
  135. package/skills/askr-runtime-reactivity/agents/openai.yaml +0 -4
  136. package/skills/askr-ssr-ssg/SKILL.md +0 -76
  137. package/skills/askr-ssr-ssg/agents/openai.yaml +0 -4
  138. package/skills/askr-testing-determinism/SKILL.md +0 -75
  139. package/skills/askr-testing-determinism/agents/openai.yaml +0 -4
  140. package/skills/askr-theming/SKILL.md +0 -86
  141. package/skills/askr-theming/agents/openai.yaml +0 -4
  142. package/skills/askr-ui-composition/SKILL.md +0 -92
  143. package/skills/askr-ui-composition/agents/openai.yaml +0 -4
  144. package/templates/full-stack/AGENTS.md +0 -12
  145. package/templates/full-stack/README.md +0 -18
  146. package/templates/full-stack/gitignore.template +0 -4
  147. package/templates/full-stack/index.html +0 -14
  148. package/templates/full-stack/package.json +0 -37
  149. package/templates/full-stack/server.ts +0 -13
  150. package/templates/full-stack/src/action-authorizations.ts +0 -10
  151. package/templates/full-stack/src/actions/create-message.ts +0 -10
  152. package/templates/full-stack/src/i18n.ts +0 -8
  153. package/templates/full-stack/src/main.tsx +0 -12
  154. package/templates/full-stack/src/pages/home.tsx +0 -25
  155. package/templates/full-stack/src/pages/layout.tsx +0 -33
  156. package/templates/full-stack/src/pages/not-found.tsx +0 -4
  157. package/templates/full-stack/src/routes.tsx +0 -20
  158. package/templates/full-stack/src/schemas.ts +0 -11
  159. package/templates/full-stack/src/server/action-registry.ts +0 -12
  160. package/templates/full-stack/src/server/actions/create-message.ts +0 -14
  161. package/templates/full-stack/src/server/app.ts +0 -66
  162. package/templates/full-stack/src/server/dependencies.ts +0 -55
  163. package/templates/full-stack/src/server/entry-server.ts +0 -8
  164. package/templates/full-stack/src/telemetry.ts +0 -4
  165. package/templates/full-stack/src/vite-server.d.ts +0 -6
  166. package/templates/full-stack/tests/actions/create-message.test.ts +0 -13
  167. package/templates/full-stack/tsconfig.json +0 -16
  168. package/templates/full-stack/vite.config.ts +0 -11
  169. package/templates/spa/AGENTS.md +0 -60
  170. package/templates/spa/README.md +0 -96
  171. package/templates/spa/gitignore.template +0 -16
  172. package/templates/spa/index.html +0 -13
  173. package/templates/spa/package.json +0 -35
  174. package/templates/spa/src/adapters/operations-client.ts +0 -90
  175. package/templates/spa/src/components/shared/metric-card.tsx +0 -27
  176. package/templates/spa/src/components/shared/status-badge.tsx +0 -24
  177. package/templates/spa/src/features/operations/operations.query.ts +0 -9
  178. package/templates/spa/src/main.tsx +0 -10
  179. package/templates/spa/src/pages/_layout.tsx +0 -9
  180. package/templates/spa/src/pages/_routes.tsx +0 -27
  181. package/templates/spa/src/pages/app/_layout.tsx +0 -94
  182. package/templates/spa/src/pages/app/_routes.tsx +0 -10
  183. package/templates/spa/src/pages/app/admin-home.tsx +0 -152
  184. package/templates/spa/src/pages/app/agent-runs.tsx +0 -93
  185. package/templates/spa/src/pages/app/settings.tsx +0 -91
  186. package/templates/spa/src/pages/auth/_layout.tsx +0 -38
  187. package/templates/spa/src/pages/auth/_routes.tsx +0 -6
  188. package/templates/spa/src/pages/auth/login.tsx +0 -63
  189. package/templates/spa/src/pages/not-found.tsx +0 -22
  190. package/templates/spa/src/pages/public/_layout.tsx +0 -47
  191. package/templates/spa/src/pages/public/_routes.tsx +0 -6
  192. package/templates/spa/src/pages/public/home.tsx +0 -143
  193. package/templates/spa/src/shared/format.ts +0 -12
  194. package/templates/spa/src/shared/navigation.ts +0 -15
  195. package/templates/spa/src/styles/components.css +0 -49
  196. package/templates/spa/src/styles/layout.css +0 -192
  197. package/templates/spa/src/styles/reset.css +0 -44
  198. package/templates/spa/src/styles/theme.css +0 -57
  199. package/templates/spa/src/styles/tokens.css +0 -20
  200. package/templates/spa/src/styles.css +0 -7
  201. package/templates/spa/src/styles.d.ts +0 -1
  202. package/templates/spa/tests/app.test.tsx +0 -37
  203. package/templates/spa/tests/components/shared.test.tsx +0 -12
  204. package/templates/spa/tests/resources.test.ts +0 -22
  205. package/templates/spa/tsconfig.json +0 -20
  206. package/templates/spa/tsconfig.node.json +0 -10
  207. package/templates/spa/vite.config.ts +0 -24
  208. package/templates/spa/vitest.config.ts +0 -17
  209. package/templates/ssg/AGENTS.md +0 -55
  210. package/templates/ssg/README.md +0 -39
  211. package/templates/ssg/gitignore.template +0 -17
  212. package/templates/ssg/index.html +0 -13
  213. package/templates/ssg/package.json +0 -35
  214. package/templates/ssg/src/app.tsx +0 -14
  215. package/templates/ssg/src/components/badge.tsx +0 -3
  216. package/templates/ssg/src/components/counter.tsx +0 -30
  217. package/templates/ssg/src/components/site-shell.tsx +0 -111
  218. package/templates/ssg/src/jsx.d.ts +0 -23
  219. package/templates/ssg/src/main.tsx +0 -8
  220. package/templates/ssg/src/pages/about.tsx +0 -82
  221. package/templates/ssg/src/pages/content.tsx +0 -63
  222. package/templates/ssg/src/pages/example.tsx +0 -97
  223. package/templates/ssg/src/pages/home.tsx +0 -51
  224. package/templates/ssg/src/resources/user.ts +0 -15
  225. package/templates/ssg/src/routes.tsx +0 -15
  226. package/templates/ssg/src/styles.css +0 -89
  227. package/templates/ssg/src/vite-env.d.ts +0 -5
  228. package/templates/ssg/ssg.config.ts +0 -34
  229. package/templates/ssg/tests/app.test.tsx +0 -19
  230. package/templates/ssg/tests/components/counter.test.tsx +0 -18
  231. package/templates/ssg/tests/resources.test.ts +0 -11
  232. package/templates/ssg/tests/ssg-config.test.ts +0 -11
  233. package/templates/ssg/tsconfig.json +0 -20
  234. package/templates/ssg/tsconfig.node.json +0 -10
  235. package/templates/ssg/vite.config.ts +0 -24
  236. package/templates/ssg/vitest.config.ts +0 -17
  237. package/templates/ssr/AGENTS.md +0 -28
  238. package/templates/ssr/README.md +0 -38
  239. package/templates/ssr/gitignore.template +0 -16
  240. package/templates/ssr/index.html +0 -13
  241. package/templates/ssr/package.json +0 -34
  242. package/templates/ssr/server.ts +0 -16
  243. package/templates/ssr/src/app.tsx +0 -21
  244. package/templates/ssr/src/components/counter.tsx +0 -26
  245. package/templates/ssr/src/entry-server.tsx +0 -10
  246. package/templates/ssr/src/main.tsx +0 -11
  247. package/templates/ssr/src/pages/about.tsx +0 -75
  248. package/templates/ssr/src/pages/example.tsx +0 -113
  249. package/templates/ssr/src/pages/home.tsx +0 -56
  250. package/templates/ssr/src/resources/user.ts +0 -15
  251. package/templates/ssr/src/routes.tsx +0 -13
  252. package/templates/ssr/src/styles.css +0 -148
  253. package/templates/ssr/src/vite-server.d.ts +0 -7
  254. package/templates/ssr/tests/app.test.tsx +0 -24
  255. package/templates/ssr/tests/components/counter.test.tsx +0 -13
  256. package/templates/ssr/tests/resources.test.ts +0 -11
  257. package/templates/ssr/tsconfig.json +0 -22
  258. package/templates/ssr/tsconfig.node.json +0 -10
  259. package/templates/ssr/tsconfig.server.json +0 -15
  260. package/templates/ssr/vite.config.ts +0 -25
  261. package/templates/ssr/vitest.config.ts +0 -13
  262. package/templates/startkit/AGENTS.md +0 -77
  263. package/templates/startkit/README.md +0 -192
  264. package/templates/startkit/gitignore.template +0 -16
  265. package/templates/startkit/index.html +0 -13
  266. package/templates/startkit/package.json +0 -35
  267. package/templates/startkit/src/components/app-header.tsx +0 -93
  268. package/templates/startkit/src/components/app-sidebar.tsx +0 -95
  269. package/templates/startkit/src/components/data-table.tsx +0 -80
  270. package/templates/startkit/src/components/empty-state.tsx +0 -13
  271. package/templates/startkit/src/components/page-header.tsx +0 -23
  272. package/templates/startkit/src/components/stat-card.tsx +0 -24
  273. package/templates/startkit/src/features/accounts/account-filters.tsx +0 -61
  274. package/templates/startkit/src/features/accounts/account-table.tsx +0 -79
  275. package/templates/startkit/src/lib/format.ts +0 -31
  276. package/templates/startkit/src/lib/mock-data.ts +0 -441
  277. package/templates/startkit/src/lib/routes.ts +0 -116
  278. package/templates/startkit/src/main.tsx +0 -12
  279. package/templates/startkit/src/pages/_layout.tsx +0 -56
  280. package/templates/startkit/src/pages/auth/_layout.tsx +0 -7
  281. package/templates/startkit/src/pages/auth/login.tsx +0 -129
  282. package/templates/startkit/src/pages/home.tsx +0 -83
  283. package/templates/startkit/src/pages/not-found.tsx +0 -24
  284. package/templates/startkit/src/pages/workspace/_layout.tsx +0 -17
  285. package/templates/startkit/src/pages/workspace/accounts/index.tsx +0 -217
  286. package/templates/startkit/src/pages/workspace/dashboard.tsx +0 -118
  287. package/templates/startkit/src/pages/workspace/settings.tsx +0 -218
  288. package/templates/startkit/src/router.tsx +0 -7
  289. package/templates/startkit/src/routes/auth-config.ts +0 -38
  290. package/templates/startkit/src/routes/auth.ts +0 -8
  291. package/templates/startkit/src/routes/index.ts +0 -28
  292. package/templates/startkit/src/routes/public.ts +0 -8
  293. package/templates/startkit/src/routes/workspace/accounts.ts +0 -8
  294. package/templates/startkit/src/routes/workspace/index.ts +0 -14
  295. package/templates/startkit/src/styles/components.css +0 -396
  296. package/templates/startkit/src/styles/layout.css +0 -192
  297. package/templates/startkit/src/styles/reset.css +0 -38
  298. package/templates/startkit/src/styles/theme.css +0 -76
  299. package/templates/startkit/src/styles/tokens.css +0 -67
  300. package/templates/startkit/src/styles.css +0 -7
  301. package/templates/startkit/src/toast.ts +0 -55
  302. package/templates/startkit/src/utils/join-classes.ts +0 -4
  303. package/templates/startkit/src/vite-env.d.ts +0 -5
  304. package/templates/startkit/tests/app.test.tsx +0 -32
  305. package/templates/startkit/tests/preferences.test.ts +0 -43
  306. package/templates/startkit/tests/resources.test.ts +0 -82
  307. package/templates/startkit/tsconfig.json +0 -20
  308. package/templates/startkit/tsconfig.node.json +0 -10
  309. package/templates/startkit/vite.config.ts +0 -32
  310. package/templates/startkit/vitest.config.ts +0 -13
@@ -1,67 +0,0 @@
1
- @layer tokens {
2
- :root {
3
- --ak-color-primary: #2166ee;
4
- --ak-color-primary-hover: #154fbf;
5
- --ak-color-bg: #f7f8fa;
6
- --ak-color-fg: #0f1728;
7
- --ak-color-surface: #ffffff;
8
- --ak-color-surface-muted: #f1f3f7;
9
- --ak-color-border: #dde2ea;
10
- --ak-color-muted: #5a6578;
11
- --ak-color-danger: #b03a3a;
12
- --ak-color-focus-ring: rgba(33, 102, 238, 0.24);
13
-
14
- --ak-space-2xs: 0.25rem;
15
- --ak-space-lg-plus: 1.25rem;
16
- --ak-space-2xl: 2rem;
17
-
18
- --ak-font-size-xs: 0.75rem;
19
- --ak-font-size-xl: 1.25rem;
20
- --ak-font-size-2xl: 2rem;
21
-
22
- --starter-color-success: #1f7a43;
23
- --starter-content-max-ch: 74ch;
24
- --starter-shadow-soft: 0 10px 30px rgba(13, 24, 43, 0.08);
25
- --starter-shadow-press: 0 4px 14px rgba(13, 24, 43, 0.1);
26
- --starter-surface-glass: color-mix(
27
- in srgb,
28
- var(--ak-color-surface) 88%,
29
- transparent
30
- );
31
- }
32
-
33
- :root[data-sk-appearance='harbor'] {
34
- --ak-color-primary: #0f7b8f;
35
- --ak-color-primary-hover: #0d6171;
36
- --ak-color-bg: #eff5f8;
37
- --ak-color-fg: #102736;
38
- --ak-color-surface: #f9fcfe;
39
- --ak-color-surface-muted: #e8f0f5;
40
- --ak-color-border: #cedce8;
41
- --ak-color-muted: #4f6879;
42
- --ak-color-focus-ring: rgba(15, 123, 143, 0.24);
43
- --starter-color-success: #0f7a4b;
44
- --starter-shadow-soft: 0 10px 30px rgba(8, 34, 45, 0.08);
45
- --starter-shadow-press: 0 4px 14px rgba(8, 34, 45, 0.1);
46
- }
47
-
48
- :root[data-sk-appearance='ink'] {
49
- --ak-color-primary: #6fa6ff;
50
- --ak-color-primary-hover: #4a89ee;
51
- --ak-color-bg: #151a22;
52
- --ak-color-fg: #e7eefc;
53
- --ak-color-surface: #1c2230;
54
- --ak-color-surface-muted: #252e41;
55
- --ak-color-border: #334055;
56
- --ak-color-muted: #aeb9d2;
57
- --ak-color-focus-ring: rgba(111, 166, 255, 0.3);
58
- --starter-color-success: #58c38a;
59
- --starter-shadow-soft: 0 12px 32px rgba(0, 0, 0, 0.3);
60
- --starter-shadow-press: 0 5px 16px rgba(0, 0, 0, 0.34);
61
- --starter-surface-glass: color-mix(
62
- in srgb,
63
- var(--ak-color-surface) 78%,
64
- transparent
65
- );
66
- }
67
- }
@@ -1,7 +0,0 @@
1
- @layer reset, tokens, theme, layout, components;
2
-
3
- @import './styles/reset.css';
4
- @import './styles/tokens.css';
5
- @import './styles/theme.css';
6
- @import './styles/layout.css';
7
- @import './styles/components.css';
@@ -1,55 +0,0 @@
1
- export type AppToast = {
2
- title: string;
3
- description?: string;
4
- };
5
-
6
- type ToastBindings = {
7
- setMessage: (message: AppToast | null) => void;
8
- setOpen: (open: boolean) => void;
9
- };
10
-
11
- let toastMessageValue: AppToast | null = null;
12
- let toastOpenValue = false;
13
- let toastBindings: ToastBindings | null = null;
14
-
15
- export function bindToast(bindings: ToastBindings) {
16
- toastBindings = bindings;
17
- }
18
-
19
- export function toastMessage() {
20
- return toastMessageValue;
21
- }
22
-
23
- export function toastOpen() {
24
- return toastOpenValue;
25
- }
26
-
27
- function syncToastBindings() {
28
- if (!toastBindings) {
29
- return;
30
- }
31
-
32
- toastBindings.setMessage(toastMessageValue);
33
- toastBindings.setOpen(toastOpenValue);
34
- }
35
-
36
- export function setToastMessage(message: AppToast | null) {
37
- toastMessageValue = message;
38
- syncToastBindings();
39
- }
40
-
41
- export function setToastOpen(open: boolean) {
42
- toastOpenValue = open;
43
- syncToastBindings();
44
- }
45
-
46
- export function showToast(message: AppToast) {
47
- setToastMessage(message);
48
- setToastOpen(false);
49
- queueMicrotask(() => setToastOpen(true));
50
- }
51
-
52
- export function clearToast() {
53
- setToastOpen(false);
54
- setToastMessage(null);
55
- }
@@ -1,4 +0,0 @@
1
- /** Merge class name strings, dropping any empty/undefined values. */
2
- export function joinClasses(...parts: Array<string | undefined>): string {
3
- return parts.filter(Boolean).join(' ');
4
- }
@@ -1,5 +0,0 @@
1
- declare module '*.css' {
2
- const css: string;
3
-
4
- export default css;
5
- }
@@ -1,32 +0,0 @@
1
- import { describe, it, expect } from 'vite-plus/test';
2
-
3
- describe('App Component', () => {
4
- it('exposes the current starter route set', () => {
5
- const routes = [
6
- '/',
7
- '/login',
8
- '/dashboard',
9
- '/accounts',
10
- '/settings',
11
- '/*',
12
- ];
13
-
14
- expect(routes).toContain('/settings');
15
- expect(routes).toContain('/accounts');
16
- expect(routes).toContain('/login');
17
- });
18
-
19
- it('uses the updated primary nav labels', () => {
20
- const navLabels = ['Dashboard', 'Accounts', 'Settings'];
21
-
22
- expect(navLabels).toContain('Accounts');
23
- expect(navLabels).toContain('Settings');
24
- });
25
-
26
- it('documents the starter appearance presets', () => {
27
- const appearanceModes = ['Default', 'Harbor', 'Ink'];
28
-
29
- expect(appearanceModes).toContain('Harbor');
30
- expect(appearanceModes).toContain('Ink');
31
- });
32
- });
@@ -1,43 +0,0 @@
1
- import { beforeEach, describe, expect, it } from 'vite-plus/test';
2
- import {
3
- appearanceMode,
4
- initializeAppSession,
5
- nextAppearance,
6
- resetAppearancePreference,
7
- setAppearance,
8
- } from '../src/lib/mock-data';
9
-
10
- describe('appearance preferences', () => {
11
- beforeEach(() => {
12
- const values = new Map<string, string>();
13
- Object.defineProperty(window, 'localStorage', {
14
- configurable: true,
15
- value: {
16
- clear: () => values.clear(),
17
- getItem: (key: string) => values.get(key) ?? null,
18
- key: (index: number) => [...values.keys()][index] ?? null,
19
- get length() {
20
- return values.size;
21
- },
22
- removeItem: (key: string) => values.delete(key),
23
- setItem: (key: string, value: string) => values.set(key, value),
24
- },
25
- });
26
- resetAppearancePreference();
27
- });
28
-
29
- it('should persist and apply selected appearance', () => {
30
- setAppearance('harbor');
31
- initializeAppSession();
32
-
33
- expect(appearanceMode()).toBe('harbor');
34
- expect(document.documentElement.dataset.skAppearance).toBe('harbor');
35
- expect(window.localStorage.getItem('startkit:appearance')).toBe('harbor');
36
- });
37
-
38
- it('should cycle appearance modes in stable order', () => {
39
- expect(nextAppearance('default')).toBe('harbor');
40
- expect(nextAppearance('harbor')).toBe('ink');
41
- expect(nextAppearance('ink')).toBe('default');
42
- });
43
- });
@@ -1,82 +0,0 @@
1
- import { beforeEach, describe, expect, it } from 'vite-plus/test';
2
- import {
3
- archiveAccounts,
4
- getDashboardData,
5
- isAuthenticated,
6
- listAccounts,
7
- resetMockData,
8
- signIn,
9
- signOut,
10
- } from '../src/lib/mock-data';
11
-
12
- describe('lib mock data', () => {
13
- beforeEach(() => {
14
- resetMockData();
15
- });
16
-
17
- it('should return dashboard stats and activities', async () => {
18
- const result = await getDashboardData({
19
- signal: new AbortController().signal,
20
- });
21
-
22
- expect(result.stats.length).toBeGreaterThan(0);
23
- expect(result.activities.length).toBeGreaterThan(0);
24
- });
25
-
26
- it('should filter and paginate accounts', async () => {
27
- const result = await listAccounts({
28
- signal: new AbortController().signal,
29
- query: 'northwind',
30
- status: 'all',
31
- page: 1,
32
- pageSize: 5,
33
- });
34
-
35
- expect(result.items.length).toBeGreaterThan(0);
36
- expect(result.items[0]?.name.toLowerCase()).toContain('northwind');
37
- expect(result.totalPages).toBeGreaterThanOrEqual(1);
38
- });
39
-
40
- it('should archive selected accounts', async () => {
41
- const before = await listAccounts({
42
- signal: new AbortController().signal,
43
- query: '',
44
- status: 'active',
45
- page: 1,
46
- pageSize: 20,
47
- });
48
-
49
- const ids = before.items.slice(0, 2).map((item) => item.id);
50
- const archiveResult = await archiveAccounts({
51
- ids,
52
- signal: new AbortController().signal,
53
- });
54
-
55
- expect(archiveResult.archived).toBe(2);
56
-
57
- const after = await listAccounts({
58
- signal: new AbortController().signal,
59
- query: '',
60
- status: 'archived',
61
- page: 1,
62
- pageSize: 20,
63
- });
64
-
65
- expect(after.items.some((item) => ids.includes(item.id))).toBe(true);
66
- });
67
-
68
- it('should sign in and sign out session state', async () => {
69
- expect(isAuthenticated()).toBe(false);
70
-
71
- await signIn({
72
- email: 'alex@example.com',
73
- password: 'askr1234',
74
- signal: new AbortController().signal,
75
- });
76
-
77
- expect(isAuthenticated()).toBe(true);
78
-
79
- signOut();
80
- expect(isAuthenticated()).toBe(false);
81
- });
82
- });
@@ -1,20 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2020",
4
- "useDefineForClassFields": true,
5
- "lib": ["ES2020", "DOM", "DOM.Iterable"],
6
- "module": "ESNext",
7
- "moduleResolution": "bundler",
8
- "skipLibCheck": true,
9
- "esModuleInterop": true,
10
- "allowSyntheticDefaultImports": true,
11
- "strict": true,
12
- "resolveJsonModule": true,
13
- "isolatedModules": true,
14
- "noEmit": true,
15
- "jsx": "preserve",
16
- "jsxImportSource": "@askrjs/askr"
17
- },
18
- "include": ["src"],
19
- "references": [{ "path": "./tsconfig.node.json" }]
20
- }
@@ -1,10 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "composite": true,
4
- "skipLibCheck": true,
5
- "module": "ESNext",
6
- "moduleResolution": "bundler",
7
- "allowSyntheticDefaultImports": true
8
- },
9
- "include": ["vite.config.ts", "vitest.config.ts"]
10
- }
@@ -1,32 +0,0 @@
1
- import { defineConfig } from 'vite-plus';
2
- import { askr } from '@askrjs/vite';
3
-
4
- export default defineConfig({
5
- plugins: [askr()],
6
- lint: {
7
- ignorePatterns: ['dist/**', 'node_modules/**', 'coverage/**'],
8
- },
9
- fmt: {
10
- semi: true,
11
- singleQuote: true,
12
- trailingComma: 'es5',
13
- printWidth: 80,
14
- tabWidth: 2,
15
- },
16
- server: {
17
- host: '127.0.0.1',
18
- port: 5173,
19
- strictPort: true,
20
- open: true,
21
- hmr: {
22
- host: '127.0.0.1',
23
- port: 5173,
24
- clientPort: 5173,
25
- protocol: 'ws',
26
- },
27
- },
28
- build: {
29
- outDir: 'dist',
30
- sourcemap: true,
31
- },
32
- });
@@ -1,13 +0,0 @@
1
- import { defineConfig } from 'vite-plus';
2
- import { askr } from '@askrjs/vite';
3
-
4
- export default defineConfig({
5
- plugins: [askr()],
6
- test: {
7
- environment: 'jsdom',
8
- globals: true,
9
- coverage: {
10
- reporter: ['text', 'json', 'html'],
11
- },
12
- },
13
- });