@nextsparkjs/ai-workflow 0.1.0-beta.100

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 (272) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +115 -0
  3. package/claude/_docs/workflows-optimizations.md +359 -0
  4. package/claude/agents/api-tester.md +634 -0
  5. package/claude/agents/architecture-supervisor.md +1351 -0
  6. package/claude/agents/backend-developer.md +997 -0
  7. package/claude/agents/backend-validator.md +417 -0
  8. package/claude/agents/bdd-docs-writer.md +737 -0
  9. package/claude/agents/block-developer.md +677 -0
  10. package/claude/agents/code-reviewer.md +1432 -0
  11. package/claude/agents/db-developer.md +721 -0
  12. package/claude/agents/db-validator.md +407 -0
  13. package/claude/agents/demo-video-generator.md +493 -0
  14. package/claude/agents/documentation-writer.md +1268 -0
  15. package/claude/agents/frontend-developer.md +1234 -0
  16. package/claude/agents/frontend-validator.md +777 -0
  17. package/claude/agents/functional-validator.md +630 -0
  18. package/claude/agents/mock-analyst.md +387 -0
  19. package/claude/agents/product-manager.md +963 -0
  20. package/claude/agents/qa-automation.md +1762 -0
  21. package/claude/agents/release-manager.md +634 -0
  22. package/claude/agents/selectors-translator.md +262 -0
  23. package/claude/agents/unit-test-writer.md +785 -0
  24. package/claude/agents/visual-comparator.md +329 -0
  25. package/claude/agents/workflow-maintainer.md +352 -0
  26. package/claude/commands/do/README.md +88 -0
  27. package/claude/commands/do/create-api.md +64 -0
  28. package/claude/commands/do/create-entity.md +66 -0
  29. package/claude/commands/do/create-migration.md +64 -0
  30. package/claude/commands/do/create-plugin.md +56 -0
  31. package/claude/commands/do/create-theme.md +70 -0
  32. package/claude/commands/do/mock-data.md +67 -0
  33. package/claude/commands/do/reset-db.md +71 -0
  34. package/claude/commands/do/setup-scheduled-action.md +75 -0
  35. package/claude/commands/do/sync-code-review.md +117 -0
  36. package/claude/commands/do/update-selectors.md +112 -0
  37. package/claude/commands/do/use-skills.md +90 -0
  38. package/claude/commands/do/validate-blocks.md +69 -0
  39. package/claude/commands/how-to/README.md +261 -0
  40. package/claude/commands/how-to/add-metadata.md +692 -0
  41. package/claude/commands/how-to/add-taxonomies.md +806 -0
  42. package/claude/commands/how-to/add-translations.md +571 -0
  43. package/claude/commands/how-to/create-api.md +577 -0
  44. package/claude/commands/how-to/create-block.md +575 -0
  45. package/claude/commands/how-to/create-child-entities.md +771 -0
  46. package/claude/commands/how-to/create-entity.md +597 -0
  47. package/claude/commands/how-to/create-migrations.md +605 -0
  48. package/claude/commands/how-to/create-plugin.md +654 -0
  49. package/claude/commands/how-to/customize-app.md +481 -0
  50. package/claude/commands/how-to/customize-dashboard.md +553 -0
  51. package/claude/commands/how-to/customize-theme.md +438 -0
  52. package/claude/commands/how-to/define-features-flows.md +632 -0
  53. package/claude/commands/how-to/deploy.md +507 -0
  54. package/claude/commands/how-to/handle-file-uploads.md +746 -0
  55. package/claude/commands/how-to/implement-search.md +1001 -0
  56. package/claude/commands/how-to/install-plugins.md +352 -0
  57. package/claude/commands/how-to/manage-test-coverage.md +984 -0
  58. package/claude/commands/how-to/run-tests.md +400 -0
  59. package/claude/commands/how-to/set-app-languages.md +601 -0
  60. package/claude/commands/how-to/set-plans-and-permissions.md +575 -0
  61. package/claude/commands/how-to/set-scheduled-actions.md +527 -0
  62. package/claude/commands/how-to/set-user-roles-and-permissions.md +550 -0
  63. package/claude/commands/how-to/setup-authentication.md +388 -0
  64. package/claude/commands/how-to/setup-claude-code.md +440 -0
  65. package/claude/commands/how-to/setup-database.md +274 -0
  66. package/claude/commands/how-to/setup-email-providers.md +598 -0
  67. package/claude/commands/how-to/setup-mobile-dev.md +627 -0
  68. package/claude/commands/how-to/start.md +500 -0
  69. package/claude/commands/how-to/use-devtools.md +639 -0
  70. package/claude/commands/how-to/use-superadmin.md +622 -0
  71. package/claude/commands/session/README.md +193 -0
  72. package/claude/commands/session/block-create.md +190 -0
  73. package/claude/commands/session/block-list.md +203 -0
  74. package/claude/commands/session/block-update.md +192 -0
  75. package/claude/commands/session/block-validate.md +218 -0
  76. package/claude/commands/session/changelog.md +115 -0
  77. package/claude/commands/session/close.md +225 -0
  78. package/claude/commands/session/commit.md +174 -0
  79. package/claude/commands/session/db-entity.md +206 -0
  80. package/claude/commands/session/db-fix.md +212 -0
  81. package/claude/commands/session/db-sample.md +206 -0
  82. package/claude/commands/session/demo.md +178 -0
  83. package/claude/commands/session/doc-bdd.md +207 -0
  84. package/claude/commands/session/doc-feature.md +218 -0
  85. package/claude/commands/session/doc-read.md +225 -0
  86. package/claude/commands/session/execute.md +204 -0
  87. package/claude/commands/session/explain.md +202 -0
  88. package/claude/commands/session/fix-bug.md +210 -0
  89. package/claude/commands/session/fix-build.md +182 -0
  90. package/claude/commands/session/fix-test.md +189 -0
  91. package/claude/commands/session/pending.md +232 -0
  92. package/claude/commands/session/refine.md +188 -0
  93. package/claude/commands/session/resume.md +192 -0
  94. package/claude/commands/session/review.md +192 -0
  95. package/claude/commands/session/scope-change.md +181 -0
  96. package/claude/commands/session/start-blocks.md +347 -0
  97. package/claude/commands/session/start.md +604 -0
  98. package/claude/commands/session/status.md +169 -0
  99. package/claude/commands/session/test-fix.md +221 -0
  100. package/claude/commands/session/test-run.md +203 -0
  101. package/claude/commands/session/test-write.md +242 -0
  102. package/claude/commands/session/validate.md +162 -0
  103. package/claude/config/context.json +40 -0
  104. package/claude/config/github.json +69 -0
  105. package/claude/config/github.schema.json +106 -0
  106. package/claude/config/team.json +46 -0
  107. package/claude/config/team.schema.json +106 -0
  108. package/claude/config/workspace.json +43 -0
  109. package/claude/config/workspace.schema.json +75 -0
  110. package/claude/skills/README.md +228 -0
  111. package/claude/skills/accessibility/SKILL.md +573 -0
  112. package/claude/skills/api-bypass-layers/SKILL.md +550 -0
  113. package/claude/skills/asana-integration/SKILL.md +499 -0
  114. package/claude/skills/better-auth/SKILL.md +666 -0
  115. package/claude/skills/billing-subscriptions/SKILL.md +660 -0
  116. package/claude/skills/block-decision-matrix/SKILL.md +359 -0
  117. package/claude/skills/clickup-integration/SKILL.md +434 -0
  118. package/claude/skills/core-theme-responsibilities/SKILL.md +485 -0
  119. package/claude/skills/create-plugin/SKILL.md +425 -0
  120. package/claude/skills/create-theme/SKILL.md +331 -0
  121. package/claude/skills/cypress-api/SKILL.md +511 -0
  122. package/claude/skills/cypress-api/scripts/generate-api-controller.py +329 -0
  123. package/claude/skills/cypress-api/scripts/generate-api-test.py +930 -0
  124. package/claude/skills/cypress-e2e/SKILL.md +526 -0
  125. package/claude/skills/cypress-e2e/scripts/extract-selectors.py +383 -0
  126. package/claude/skills/cypress-e2e/scripts/generate-uat-test.py +788 -0
  127. package/claude/skills/cypress-selectors/SKILL.md +309 -0
  128. package/claude/skills/cypress-selectors/scripts/extract-missing.py +243 -0
  129. package/claude/skills/cypress-selectors/scripts/generate-block-selectors.py +283 -0
  130. package/claude/skills/cypress-selectors/scripts/validate-selectors.py +145 -0
  131. package/claude/skills/database-migrations/SKILL.md +335 -0
  132. package/claude/skills/database-migrations/scripts/generate-sample-data.py +284 -0
  133. package/claude/skills/database-migrations/scripts/validate-migration.py +323 -0
  134. package/claude/skills/design-system/SKILL.md +682 -0
  135. package/claude/skills/documentation/SKILL.md +540 -0
  136. package/claude/skills/entity-api/SKILL.md +482 -0
  137. package/claude/skills/entity-system/SKILL.md +635 -0
  138. package/claude/skills/entity-system/scripts/generate-child-migration.py +298 -0
  139. package/claude/skills/entity-system/scripts/generate-metas-migration.py +233 -0
  140. package/claude/skills/entity-system/scripts/generate-migration.py +382 -0
  141. package/claude/skills/entity-system/scripts/generate-sample-data.py +418 -0
  142. package/claude/skills/entity-system/scripts/scaffold-entity.py +661 -0
  143. package/claude/skills/github/SKILL.md +467 -0
  144. package/claude/skills/i18n-nextintl/SKILL.md +302 -0
  145. package/claude/skills/i18n-nextintl/scripts/add-translation.py +243 -0
  146. package/claude/skills/i18n-nextintl/scripts/extract-hardcoded.py +246 -0
  147. package/claude/skills/i18n-nextintl/scripts/validate-translations.py +260 -0
  148. package/claude/skills/impact-analysis/SKILL.md +203 -0
  149. package/claude/skills/jest-unit/SKILL.md +306 -0
  150. package/claude/skills/jest-unit/references/component-testing.md +371 -0
  151. package/claude/skills/jest-unit/references/mocking-patterns.md +380 -0
  152. package/claude/skills/jest-unit/references/service-hook-testing.md +454 -0
  153. package/claude/skills/jira-integration/SKILL.md +539 -0
  154. package/claude/skills/media-library/SKILL.md +743 -0
  155. package/claude/skills/mock-analysis/SKILL.md +276 -0
  156. package/claude/skills/monorepo-architecture/SKILL.md +162 -0
  157. package/claude/skills/nextjs-api-development/SKILL.md +364 -0
  158. package/claude/skills/nextjs-api-development/scripts/generate-crud-tests.py +456 -0
  159. package/claude/skills/nextjs-api-development/scripts/scaffold-endpoint.py +481 -0
  160. package/claude/skills/nextjs-api-development/scripts/validate-api.py +283 -0
  161. package/claude/skills/notion-integration/SKILL.md +641 -0
  162. package/claude/skills/npm-development-workflow/SKILL.md +480 -0
  163. package/claude/skills/page-builder-blocks/SKILL.md +530 -0
  164. package/claude/skills/page-builder-blocks/scripts/scaffold-block.py +444 -0
  165. package/claude/skills/permissions-system/SKILL.md +619 -0
  166. package/claude/skills/plugins/SKILL.md +340 -0
  167. package/claude/skills/plugins/references/plugin-templates.md +414 -0
  168. package/claude/skills/plugins/references/plugin-testing.md +353 -0
  169. package/claude/skills/plugins/references/plugin-types.md +198 -0
  170. package/claude/skills/plugins/scripts/scaffold-plugin.py +443 -0
  171. package/claude/skills/pom-patterns/SKILL.md +452 -0
  172. package/claude/skills/pom-patterns/scripts/generate-pom.py +392 -0
  173. package/claude/skills/rate-limiting/SKILL.md +342 -0
  174. package/claude/skills/react-best-practices/AGENTS.md +2410 -0
  175. package/claude/skills/react-best-practices/README.md +123 -0
  176. package/claude/skills/react-best-practices/SKILL.md +125 -0
  177. package/claude/skills/react-best-practices/metadata.json +15 -0
  178. package/claude/skills/react-best-practices/rules/_sections.md +46 -0
  179. package/claude/skills/react-best-practices/rules/_template.md +28 -0
  180. package/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  181. package/claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  182. package/claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
  183. package/claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
  184. package/claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
  185. package/claude/skills/react-best-practices/rules/async-parallel.md +28 -0
  186. package/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  187. package/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  188. package/claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  189. package/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  190. package/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  191. package/claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
  192. package/claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  193. package/claude/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  194. package/claude/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  195. package/claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  196. package/claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  197. package/claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  198. package/claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  199. package/claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  200. package/claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  201. package/claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
  202. package/claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  203. package/claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
  204. package/claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  205. package/claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  206. package/claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  207. package/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  208. package/claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
  209. package/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  210. package/claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  211. package/claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  212. package/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  213. package/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  214. package/claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  215. package/claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  216. package/claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  217. package/claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  218. package/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  219. package/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  220. package/claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
  221. package/claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  222. package/claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  223. package/claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  224. package/claude/skills/react-best-practices/rules/server-cache-react.md +76 -0
  225. package/claude/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  226. package/claude/skills/react-best-practices/rules/server-serialization.md +38 -0
  227. package/claude/skills/react-patterns/SKILL.md +688 -0
  228. package/claude/skills/registry-system/SKILL.md +331 -0
  229. package/claude/skills/scheduled-actions/SKILL.md +671 -0
  230. package/claude/skills/scope-enforcement/SKILL.md +542 -0
  231. package/claude/skills/scope-enforcement/scripts/validate-scope.py +357 -0
  232. package/claude/skills/server-actions/SKILL.md +493 -0
  233. package/claude/skills/service-layer/SKILL.md +587 -0
  234. package/claude/skills/session-management/SKILL.md +266 -0
  235. package/claude/skills/session-management/scripts/create-session.py +166 -0
  236. package/claude/skills/session-management/scripts/iteration-close.sh +105 -0
  237. package/claude/skills/session-management/scripts/iteration-init.sh +180 -0
  238. package/claude/skills/session-management/scripts/session-archive.sh +87 -0
  239. package/claude/skills/session-management/scripts/session-close.sh +133 -0
  240. package/claude/skills/session-management/scripts/session-init.sh +225 -0
  241. package/claude/skills/session-management/scripts/session-list.sh +163 -0
  242. package/claude/skills/session-management/scripts/split-plan.sh +116 -0
  243. package/claude/skills/shadcn-components/SKILL.md +586 -0
  244. package/claude/skills/shadcn-theming/SKILL.md +446 -0
  245. package/claude/skills/suspense-loading/SKILL.md +280 -0
  246. package/claude/skills/tailwind-theming/SKILL.md +507 -0
  247. package/claude/skills/tanstack-query/SKILL.md +608 -0
  248. package/claude/skills/test-coverage/SKILL.md +239 -0
  249. package/claude/skills/web-design-guidelines/SKILL.md +39 -0
  250. package/claude/skills/zod-validation/SKILL.md +537 -0
  251. package/claude/templates/blocks/progress.md +86 -0
  252. package/claude/templates/iteration/changes.md +61 -0
  253. package/claude/templates/iteration/progress.md +55 -0
  254. package/claude/templates/log.md +31 -0
  255. package/claude/templates/story/context.md +77 -0
  256. package/claude/templates/story/pendings.md +37 -0
  257. package/claude/templates/story/plan.md +299 -0
  258. package/claude/templates/story/requirements.md +109 -0
  259. package/claude/templates/story/scope.json +10 -0
  260. package/claude/templates/story/tests.md +91 -0
  261. package/claude/templates/task/progress.md +58 -0
  262. package/claude/templates/task/requirements.md +54 -0
  263. package/claude/workflows/README.md +154 -0
  264. package/claude/workflows/blocks.md +614 -0
  265. package/claude/workflows/story.md +1207 -0
  266. package/claude/workflows/task.md +927 -0
  267. package/claude/workflows/tweak.md +527 -0
  268. package/cursor/.gitkeep +0 -0
  269. package/package.json +35 -0
  270. package/scripts/postinstall.mjs +198 -0
  271. package/scripts/setup.mjs +282 -0
  272. package/scripts/sync.mjs +209 -0
@@ -0,0 +1,553 @@
1
+ # /how-to:customize-dashboard
2
+
3
+ Interactive guide to customize the dashboard layout and navigation in NextSpark.
4
+
5
+ ---
6
+
7
+ ## Syntax
8
+
9
+ ```
10
+ /how-to:customize-dashboard
11
+ ```
12
+
13
+ ---
14
+
15
+ ## Behavior
16
+
17
+ Guides the user through customizing dashboard layout, sidebar navigation, menu items, and widgets.
18
+
19
+ ---
20
+
21
+ ## Tutorial Structure
22
+
23
+ ```
24
+ STEPS OVERVIEW (4 steps)
25
+
26
+ Step 1: Understanding Dashboard Structure
27
+ └── Layout components and config
28
+
29
+ Step 2: Customize Sidebar Navigation
30
+ └── Add/modify menu items
31
+
32
+ Step 3: Customize Dashboard Widgets
33
+ └── Add custom widgets and cards
34
+
35
+ Step 4: Theme the Dashboard
36
+ └── Colors, spacing, branding
37
+ ```
38
+
39
+ ---
40
+
41
+ ## Step 1: Understanding Dashboard Structure
42
+
43
+ ```
44
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
45
+ 📚 HOW TO: CUSTOMIZE DASHBOARD
46
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
47
+
48
+ STEP 1 OF 4: Understanding Dashboard Structure
49
+
50
+ The dashboard is composed of configurable components:
51
+
52
+ ┌─────────────────────────────────────────────┐
53
+ │ HEADER │
54
+ │ ───────────────────────────────────────── │
55
+ │ Logo │ Search │ Notifications │ User Menu │
56
+ ├─────────┬───────────────────────────────────┤
57
+ │ │ │
58
+ │ SIDEBAR │ MAIN CONTENT │
59
+ │ │ │
60
+ │ • Home │ ┌─────────┐ ┌─────────┐ │
61
+ │ • Entit │ │ Widget │ │ Widget │ │
62
+ │ • Setti │ └─────────┘ └─────────┘ │
63
+ │ │ │
64
+ │ │ ┌─────────────────────┐ │
65
+ │ │ │ Content Area │ │
66
+ │ │ └─────────────────────┘ │
67
+ │ │ │
68
+ └─────────┴───────────────────────────────────┘
69
+
70
+ ```
71
+
72
+ **📂 Dashboard Configuration Files:**
73
+
74
+ ```
75
+ contents/themes/your-theme/config/
76
+ ├── dashboard.config.ts # Dashboard layout
77
+ ├── navigation.config.ts # Sidebar menus
78
+ └── widgets.config.ts # Dashboard widgets
79
+ ```
80
+
81
+ ```
82
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
83
+
84
+ What would you like to do?
85
+
86
+ [1] Continue to Step 2 (Navigation)
87
+ [2] Show me the default dashboard config
88
+ [3] How does the layout system work?
89
+ ```
90
+
91
+ ---
92
+
93
+ ## Step 2: Customize Sidebar Navigation
94
+
95
+ ```
96
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
97
+ STEP 2 OF 4: Customize Sidebar Navigation
98
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
99
+
100
+ Configure sidebar menu items:
101
+ ```
102
+
103
+ **📋 navigation.config.ts Example:**
104
+
105
+ ```typescript
106
+ // contents/themes/your-theme/config/navigation.config.ts
107
+ import type { NavigationConfig } from '@/core/types/navigation'
108
+ import {
109
+ Home,
110
+ Package,
111
+ Users,
112
+ FileText,
113
+ Settings,
114
+ BarChart3,
115
+ CreditCard,
116
+ } from 'lucide-react'
117
+
118
+ export const navigationConfig: NavigationConfig = {
119
+ // Main sidebar menu
120
+ sidebar: [
121
+ // Static item
122
+ {
123
+ label: 'dashboard.sidebar.home', // i18n key
124
+ href: '/dashboard',
125
+ icon: Home,
126
+ },
127
+
128
+ // Section header
129
+ {
130
+ label: 'dashboard.sidebar.data',
131
+ type: 'section',
132
+ },
133
+
134
+ // Entity items (auto-generated from entity config)
135
+ {
136
+ label: 'entities.products.namePlural',
137
+ href: '/dashboard/products',
138
+ icon: Package,
139
+ entity: 'products', // Links to entity
140
+ permission: 'products.read', // Required permission
141
+ },
142
+ {
143
+ label: 'entities.customers.namePlural',
144
+ href: '/dashboard/customers',
145
+ icon: Users,
146
+ entity: 'customers',
147
+ permission: 'customers.read',
148
+ },
149
+ {
150
+ label: 'entities.invoices.namePlural',
151
+ href: '/dashboard/invoices',
152
+ icon: FileText,
153
+ entity: 'invoices',
154
+ permission: 'invoices.read',
155
+ badge: 'new', // Show badge
156
+ },
157
+
158
+ // Section header
159
+ {
160
+ label: 'dashboard.sidebar.insights',
161
+ type: 'section',
162
+ },
163
+
164
+ // Feature items
165
+ {
166
+ label: 'dashboard.sidebar.analytics',
167
+ href: '/dashboard/analytics',
168
+ icon: BarChart3,
169
+ feature: 'advanced_analytics', // Requires plan feature
170
+ },
171
+
172
+ // Nested menu (submenu)
173
+ {
174
+ label: 'dashboard.sidebar.settings',
175
+ icon: Settings,
176
+ children: [
177
+ {
178
+ label: 'settings.sections.profile',
179
+ href: '/dashboard/settings/profile',
180
+ },
181
+ {
182
+ label: 'settings.sections.billing',
183
+ href: '/dashboard/settings/billing',
184
+ icon: CreditCard,
185
+ permission: 'team.billing.manage',
186
+ },
187
+ {
188
+ label: 'settings.sections.team',
189
+ href: '/dashboard/settings/team',
190
+ permission: 'team.members.invite',
191
+ },
192
+ ],
193
+ },
194
+ ],
195
+
196
+ // Quick actions in header
197
+ quickActions: [
198
+ {
199
+ label: 'common.buttons.create',
200
+ icon: Plus,
201
+ actions: [
202
+ { label: 'entities.products.actions.create', href: '/dashboard/products/new' },
203
+ { label: 'entities.customers.actions.create', href: '/dashboard/customers/new' },
204
+ ],
205
+ },
206
+ ],
207
+ }
208
+ ```
209
+
210
+ **📋 Menu Item Options:**
211
+
212
+ | Property | Description |
213
+ |----------|-------------|
214
+ | `label` | i18n key for display text |
215
+ | `href` | Navigation URL |
216
+ | `icon` | Lucide icon component |
217
+ | `type` | 'item' (default), 'section', 'divider' |
218
+ | `permission` | Required permission to show |
219
+ | `feature` | Required plan feature to show |
220
+ | `badge` | Badge text ('new', count, etc.) |
221
+ | `children` | Submenu items |
222
+ | `entity` | Link to entity (auto-generates CRUD routes) |
223
+
224
+ ```
225
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
226
+
227
+ What would you like to do?
228
+
229
+ [1] Continue to Step 3 (Widgets)
230
+ [2] How do I add permission-based items?
231
+ [3] How do I create nested menus?
232
+ ```
233
+
234
+ ---
235
+
236
+ ## Step 3: Customize Dashboard Widgets
237
+
238
+ ```
239
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
240
+ STEP 3 OF 4: Customize Dashboard Widgets
241
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
242
+
243
+ Configure the main dashboard home page:
244
+ ```
245
+
246
+ **📋 widgets.config.ts Example:**
247
+
248
+ ```typescript
249
+ // contents/themes/your-theme/config/widgets.config.ts
250
+ import type { WidgetsConfig } from '@/core/types/widgets'
251
+
252
+ export const widgetsConfig: WidgetsConfig = {
253
+ // Dashboard home layout
254
+ home: {
255
+ // Grid layout for widgets
256
+ layout: [
257
+ // Stats row (4 columns)
258
+ { id: 'stats', cols: 4, rows: 1 },
259
+
260
+ // Charts row (2 columns each)
261
+ { id: 'revenue-chart', cols: 2, rows: 2 },
262
+ { id: 'orders-chart', cols: 2, rows: 2 },
263
+
264
+ // Recent activity (full width)
265
+ { id: 'recent-activity', cols: 4, rows: 2 },
266
+ ],
267
+
268
+ // Widget definitions
269
+ widgets: {
270
+ 'stats': {
271
+ type: 'stats-grid',
272
+ title: 'dashboard.widgets.overview',
273
+ stats: [
274
+ {
275
+ id: 'total-revenue',
276
+ label: 'dashboard.stats.totalRevenue',
277
+ query: 'analytics.totalRevenue',
278
+ format: 'currency',
279
+ icon: 'DollarSign',
280
+ trend: true,
281
+ },
282
+ {
283
+ id: 'total-orders',
284
+ label: 'dashboard.stats.totalOrders',
285
+ query: 'analytics.totalOrders',
286
+ format: 'number',
287
+ icon: 'ShoppingCart',
288
+ trend: true,
289
+ },
290
+ {
291
+ id: 'total-customers',
292
+ label: 'dashboard.stats.totalCustomers',
293
+ query: 'analytics.totalCustomers',
294
+ format: 'number',
295
+ icon: 'Users',
296
+ },
297
+ {
298
+ id: 'conversion-rate',
299
+ label: 'dashboard.stats.conversionRate',
300
+ query: 'analytics.conversionRate',
301
+ format: 'percent',
302
+ icon: 'TrendingUp',
303
+ trend: true,
304
+ },
305
+ ],
306
+ },
307
+
308
+ 'revenue-chart': {
309
+ type: 'chart',
310
+ title: 'dashboard.widgets.revenueChart',
311
+ chart: {
312
+ type: 'line',
313
+ query: 'analytics.revenueByDay',
314
+ xAxis: 'date',
315
+ yAxis: 'revenue',
316
+ period: 'last30days',
317
+ },
318
+ },
319
+
320
+ 'orders-chart': {
321
+ type: 'chart',
322
+ title: 'dashboard.widgets.ordersChart',
323
+ chart: {
324
+ type: 'bar',
325
+ query: 'analytics.ordersByDay',
326
+ xAxis: 'date',
327
+ yAxis: 'count',
328
+ },
329
+ },
330
+
331
+ 'recent-activity': {
332
+ type: 'activity-feed',
333
+ title: 'dashboard.widgets.recentActivity',
334
+ limit: 10,
335
+ entities: ['products', 'customers', 'invoices'],
336
+ },
337
+ },
338
+ },
339
+
340
+ // Entity-specific dashboard layouts
341
+ entities: {
342
+ products: {
343
+ widgets: {
344
+ 'top-products': {
345
+ type: 'table',
346
+ title: 'Top Selling Products',
347
+ query: 'products.topSelling',
348
+ limit: 5,
349
+ },
350
+ },
351
+ },
352
+ },
353
+ }
354
+ ```
355
+
356
+ **📋 Widget Types:**
357
+
358
+ - `stats-grid` - Key metrics cards
359
+ - `chart` - Line, bar, pie charts
360
+ - `table` - Data table widget
361
+ - `activity-feed` - Recent activity log
362
+ - `calendar` - Calendar view
363
+ - `custom` - Custom React component
364
+
365
+ **📋 Create Custom Widget:**
366
+
367
+ ```typescript
368
+ // contents/themes/your-theme/components/widgets/MyCustomWidget.tsx
369
+ 'use client'
370
+
371
+ import { Card, CardHeader, CardContent } from '@/core/components/ui/card'
372
+ import type { WidgetProps } from '@/core/types/widgets'
373
+
374
+ export function MyCustomWidget({ config }: WidgetProps) {
375
+ return (
376
+ <Card data-cy="widget-my-custom">
377
+ <CardHeader>
378
+ <h3>{config.title}</h3>
379
+ </CardHeader>
380
+ <CardContent>
381
+ {/* Your custom content */}
382
+ </CardContent>
383
+ </Card>
384
+ )
385
+ }
386
+ ```
387
+
388
+ **📋 Register Custom Widget:**
389
+
390
+ ```typescript
391
+ widgets: {
392
+ 'my-custom': {
393
+ type: 'custom',
394
+ component: 'MyCustomWidget',
395
+ title: 'My Custom Widget',
396
+ },
397
+ }
398
+ ```
399
+
400
+ ```
401
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
402
+
403
+ What would you like to do?
404
+
405
+ [1] Continue to Step 4 (Theme)
406
+ [2] How do I create chart widgets?
407
+ [3] Show me activity feed setup
408
+ ```
409
+
410
+ ---
411
+
412
+ ## Step 4: Theme the Dashboard
413
+
414
+ ```
415
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
416
+ STEP 4 OF 4: Theme the Dashboard
417
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
418
+
419
+ Configure dashboard appearance:
420
+ ```
421
+
422
+ **📋 dashboard.config.ts Example:**
423
+
424
+ ```typescript
425
+ // contents/themes/your-theme/config/dashboard.config.ts
426
+ import type { DashboardConfig } from '@/core/types/dashboard'
427
+
428
+ export const dashboardConfig: DashboardConfig = {
429
+ // Layout settings
430
+ layout: {
431
+ // Sidebar position
432
+ sidebarPosition: 'left', // 'left' | 'right'
433
+
434
+ // Sidebar style
435
+ sidebarStyle: 'fixed', // 'fixed' | 'floating' | 'collapsible'
436
+
437
+ // Default sidebar state
438
+ sidebarDefaultOpen: true,
439
+
440
+ // Header style
441
+ headerStyle: 'fixed', // 'fixed' | 'sticky' | 'static'
442
+
443
+ // Content max width
444
+ contentMaxWidth: '1400px', // or 'full'
445
+ },
446
+
447
+ // Branding
448
+ branding: {
449
+ // Logo for sidebar
450
+ logo: '/images/logo.svg',
451
+ logoCollapsed: '/images/logo-icon.svg',
452
+
453
+ // Favicon
454
+ favicon: '/favicon.ico',
455
+
456
+ // App name in header
457
+ appName: 'My App',
458
+ },
459
+
460
+ // Header configuration
461
+ header: {
462
+ // Show search bar
463
+ showSearch: true,
464
+ searchPlaceholder: 'dashboard.search.placeholder',
465
+
466
+ // Show notifications
467
+ showNotifications: true,
468
+
469
+ // Show breadcrumbs
470
+ showBreadcrumbs: true,
471
+
472
+ // Custom header actions
473
+ actions: [
474
+ {
475
+ icon: 'HelpCircle',
476
+ label: 'Help',
477
+ href: '/docs',
478
+ },
479
+ ],
480
+ },
481
+
482
+ // Footer configuration
483
+ footer: {
484
+ show: true,
485
+ text: '© 2024 My Company',
486
+ links: [
487
+ { label: 'Privacy', href: '/privacy' },
488
+ { label: 'Terms', href: '/terms' },
489
+ ],
490
+ },
491
+
492
+ // User menu configuration
493
+ userMenu: {
494
+ showAvatar: true,
495
+ showName: true,
496
+ showRole: true,
497
+ items: [
498
+ { label: 'Profile', href: '/dashboard/profile', icon: 'User' },
499
+ { label: 'Settings', href: '/dashboard/settings', icon: 'Settings' },
500
+ { type: 'divider' },
501
+ { label: 'Sign Out', action: 'signout', icon: 'LogOut' },
502
+ ],
503
+ },
504
+ }
505
+ ```
506
+
507
+ **📋 Sidebar Styles:**
508
+
509
+ - `fixed` - Always visible, fixed position
510
+ - `floating` - Overlay on mobile
511
+ - `collapsible` - Can collapse to icons only
512
+
513
+ **📋 Dashboard Colors:**
514
+
515
+ Configure in your theme's globals.css:
516
+
517
+ ```css
518
+ /* contents/themes/your-theme/styles/globals.css */
519
+ :root {
520
+ /* Dashboard-specific colors */
521
+ --dashboard-sidebar-bg: var(--background);
522
+ --dashboard-sidebar-border: var(--border);
523
+ --dashboard-header-bg: var(--background);
524
+ --dashboard-content-bg: var(--muted);
525
+ }
526
+ ```
527
+
528
+ ```
529
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
530
+
531
+ ✅ TUTORIAL STORY!
532
+
533
+ You've configured:
534
+ • Sidebar navigation with permissions
535
+ • Dashboard widgets and layout
536
+ • Branding and appearance
537
+ • Header and user menu
538
+
539
+ 📚 Related tutorials:
540
+ • /how-to:customize-theme - Design system customization
541
+ • /how-to:customize-app - App-level settings
542
+
543
+ 🔙 Back to menu: /how-to:start
544
+ ```
545
+
546
+ ---
547
+
548
+ ## Related Commands
549
+
550
+ | Command | Action |
551
+ |---------|--------|
552
+ | `/how-to:customize-theme` | Theme customization |
553
+ | `/how-to:customize-app` | App settings |