@atlashub/smartstack-cli 1.13.2 → 1.14.1
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.
- package/.documentation/agents.html +1 -1
- package/.documentation/apex.html +1 -1
- package/.documentation/business-analyse.html +1 -1
- package/.documentation/cli-commands.html +3 -3
- package/.documentation/commands.html +1 -1
- package/.documentation/efcore.html +1 -1
- package/.documentation/gitflow.html +231 -236
- package/.documentation/hooks.html +1 -1
- package/.documentation/index.html +1 -1
- package/.documentation/init.html +3 -3
- package/.documentation/installation.html +1075 -351
- package/.documentation/ralph-loop.html +1 -1
- package/.documentation/test-web.html +1 -1
- package/README.md +88 -20
- package/config/default-config.json +10 -1
- package/dist/index.js +276 -85
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/agents/code-reviewer.md +163 -0
- package/templates/agents/efcore/db-deploy.md +25 -7
- package/templates/agents/efcore/db-reset.md +31 -10
- package/templates/agents/efcore/db-status.md +22 -5
- package/templates/agents/efcore/migration.md +70 -20
- package/templates/agents/gitflow/cleanup.md +8 -1
- package/templates/agents/gitflow/commit.md +7 -5
- package/templates/agents/gitflow/finish.md +6 -4
- package/templates/agents/gitflow/pr.md +8 -1
- package/templates/agents/gitflow/start.md +1 -1
- package/templates/commands/check-version.md +267 -0
- package/templates/commands/efcore/_shared.md +31 -2
- package/templates/commands/efcore/db-reset.md +18 -6
- package/templates/commands/efcore/migration.md +1 -1
- package/templates/commands/efcore/rebase-snapshot.md +1 -1
- package/templates/commands/efcore/squash.md +1 -0
- package/templates/commands/refactor.md +164 -0
- package/templates/project/DependencyInjection.Application.cs.template +25 -0
- package/templates/project/DependencyInjection.Infrastructure.cs.template +61 -0
- package/templates/project/DesignTimeExtensionsDbContextFactory.cs.template +70 -0
- package/templates/project/ExampleEntity.cs.template +116 -0
- package/templates/project/ExampleEntityConfiguration.cs.template +64 -0
- package/templates/project/ExampleService.cs.template +146 -0
- package/templates/project/ExtensionsDbContext.cs.template +41 -0
- package/templates/project/IExtensionsDbContext.cs.template +22 -0
- package/templates/project/Program.cs.template +47 -0
- package/templates/project/README.md +79 -0
- package/templates/ralph/README.md +10 -8
- package/templates/ralph/ralph.config.yaml +2 -2
- package/templates/skills/_shared.md +44 -44
- package/templates/skills/ai-prompt/SKILL.md +55 -55
- package/templates/skills/apex/SKILL.md +235 -0
- package/templates/skills/apex/steps/step-00-init.md +203 -0
- package/templates/skills/apex/steps/step-01-analyze.md +210 -0
- package/templates/skills/apex/steps/step-02-plan.md +217 -0
- package/templates/skills/apex/steps/step-03-execute.md +178 -0
- package/templates/skills/apex/steps/step-04-validate.md +217 -0
- package/templates/skills/apex/steps/step-05-examine.md +207 -0
- package/templates/skills/apex/steps/step-06-resolve.md +181 -0
- package/templates/skills/apex/steps/step-07-tests.md +206 -0
- package/templates/skills/apex/steps/step-08-run-tests.md +207 -0
- package/templates/skills/apex/templates/00-context.md +46 -0
- package/templates/skills/apex/templates/01-analyze.md +63 -0
- package/templates/skills/apex/templates/02-plan.md +63 -0
- package/templates/skills/apex/templates/03-execute.md +34 -0
- package/templates/skills/apex/templates/04-validate.md +61 -0
- package/templates/skills/apex/templates/05-examine.md +58 -0
- package/templates/skills/apex/templates/06-resolve.md +39 -0
- package/templates/skills/apex/templates/07-tests.md +56 -0
- package/templates/skills/apex/templates/08-run-tests.md +41 -0
- package/templates/skills/apex/templates/README.md +69 -0
- package/templates/skills/application/SKILL.md +50 -50
- package/templates/skills/application/templates-backend.md +25 -25
- package/templates/skills/application/templates-frontend.md +43 -43
- package/templates/skills/application/templates-i18n.md +29 -29
- package/templates/skills/application/templates-seed.md +77 -77
- package/templates/skills/business-analyse/SKILL.md +223 -0
- package/templates/skills/business-analyse/_shared.md +258 -0
- package/templates/skills/business-analyse/questionnaire/01-context.md +33 -0
- package/templates/skills/business-analyse/questionnaire/02-stakeholders.md +35 -0
- package/templates/skills/business-analyse/questionnaire/03-scope.md +35 -0
- package/templates/skills/business-analyse/questionnaire/04-data.md +36 -0
- package/templates/skills/business-analyse/questionnaire/05-integrations.md +36 -0
- package/templates/skills/business-analyse/questionnaire/06-security.md +40 -0
- package/templates/skills/business-analyse/questionnaire/07-ui.md +36 -0
- package/templates/skills/business-analyse/questionnaire/08-performance.md +35 -0
- package/templates/skills/business-analyse/questionnaire/09-constraints.md +35 -0
- package/templates/skills/business-analyse/questionnaire/10-documentation.md +35 -0
- package/templates/skills/business-analyse/questionnaire.md +177 -177
- package/templates/skills/business-analyse/react/components.md +340 -0
- package/templates/skills/business-analyse/react/i18n-template.md +245 -0
- package/templates/skills/business-analyse/react/schema.md +151 -0
- package/templates/skills/business-analyse/steps/step-00-init.md +293 -0
- package/templates/skills/business-analyse/steps/step-01-discover.md +267 -0
- package/templates/skills/business-analyse/steps/step-02-analyse.md +243 -0
- package/templates/skills/business-analyse/steps/step-03-specify.md +317 -0
- package/templates/skills/business-analyse/steps/step-04-validate.md +239 -0
- package/templates/skills/business-analyse/steps/step-05-handoff.md +336 -0
- package/templates/skills/business-analyse/steps/step-06-doc-html.md +261 -0
- package/templates/skills/business-analyse/templates/00-context.md +105 -0
- package/templates/skills/business-analyse/templates/frd-brd.md +97 -0
- package/templates/skills/business-analyse/templates/frd-discovery.md +78 -0
- package/templates/skills/business-analyse/templates/frd-handoff.md +118 -0
- package/templates/skills/business-analyse/templates/frd-spec.md +168 -0
- package/templates/skills/business-analyse/templates-frd.md +217 -217
- package/templates/skills/business-analyse/templates-react.md +26 -26
- package/templates/skills/controller/SKILL.md +141 -92
- package/templates/skills/controller/postman-templates.md +15 -15
- package/templates/skills/controller/steps/step-00-init.md +191 -0
- package/templates/skills/controller/steps/step-01-analyze.md +146 -0
- package/templates/skills/controller/steps/step-02-plan.md +176 -0
- package/templates/skills/controller/steps/step-03-generate.md +219 -0
- package/templates/skills/controller/steps/step-04-perms.md +219 -0
- package/templates/skills/controller/steps/step-05-validate.md +107 -0
- package/templates/skills/controller/templates.md +77 -77
- package/templates/skills/documentation/SKILL.md +79 -79
- package/templates/skills/feature-full/SKILL.md +38 -38
- package/templates/skills/gitflow/SKILL.md +277 -0
- package/templates/{commands → skills}/gitflow/_shared.md +20 -20
- package/templates/skills/gitflow/phases/abort.md +173 -0
- package/templates/skills/gitflow/phases/cleanup.md +226 -0
- package/templates/skills/gitflow/phases/status.md +178 -0
- package/templates/skills/gitflow/steps/step-commit.md +255 -0
- package/templates/skills/gitflow/steps/step-finish.md +255 -0
- package/templates/skills/gitflow/steps/step-init.md +209 -0
- package/templates/skills/gitflow/steps/step-merge.md +225 -0
- package/templates/skills/gitflow/steps/step-plan.md +208 -0
- package/templates/skills/gitflow/steps/step-pr.md +235 -0
- package/templates/skills/gitflow/steps/step-start.md +334 -0
- package/templates/skills/gitflow/steps/step-sync.md +200 -0
- package/templates/skills/gitflow/templates/config.json +53 -0
- package/templates/skills/notification/SKILL.md +51 -51
- package/templates/skills/ralph-loop/SKILL.md +228 -0
- package/templates/skills/ralph-loop/steps/step-00-init.md +201 -0
- package/templates/skills/ralph-loop/steps/step-01-task.md +169 -0
- package/templates/skills/ralph-loop/steps/step-02-execute.md +173 -0
- package/templates/skills/ralph-loop/steps/step-03-commit.md +170 -0
- package/templates/skills/ralph-loop/steps/step-04-check.md +162 -0
- package/templates/skills/ralph-loop/steps/step-05-report.md +181 -0
- package/templates/skills/review-code/SKILL.md +219 -0
- package/templates/skills/review-code/references/clean-code-principles.md +140 -0
- package/templates/skills/review-code/references/code-quality-metrics.md +174 -0
- package/templates/skills/review-code/references/feedback-patterns.md +149 -0
- package/templates/skills/review-code/references/security-checklist.md +127 -0
- package/templates/skills/ui-components/SKILL.md +54 -54
- package/templates/skills/workflow/SKILL.md +46 -46
- package/templates/commands/ai-prompt.md +0 -315
- package/templates/commands/apex/1-analyze.md +0 -100
- package/templates/commands/apex/2-plan.md +0 -145
- package/templates/commands/apex/3-execute.md +0 -171
- package/templates/commands/apex/4-examine.md +0 -116
- package/templates/commands/apex/5-tasks.md +0 -209
- package/templates/commands/apex.md +0 -76
- package/templates/commands/application/create.md +0 -362
- package/templates/commands/application/templates-backend.md +0 -463
- package/templates/commands/application/templates-frontend.md +0 -517
- package/templates/commands/application/templates-i18n.md +0 -478
- package/templates/commands/application/templates-seed.md +0 -362
- package/templates/commands/application.md +0 -303
- package/templates/commands/business-analyse/0-orchestrate.md +0 -156
- package/templates/commands/business-analyse/1-init.md +0 -99
- package/templates/commands/business-analyse/2-discover.md +0 -143
- package/templates/commands/business-analyse/3-analyse.md +0 -106
- package/templates/commands/business-analyse/4-specify.md +0 -133
- package/templates/commands/business-analyse/5-validate.md +0 -132
- package/templates/commands/business-analyse/6-handoff.md +0 -157
- package/templates/commands/business-analyse/7-doc-html.md +0 -103
- package/templates/commands/business-analyse/_shared.md +0 -176
- package/templates/commands/business-analyse/bug.md +0 -118
- package/templates/commands/business-analyse/change-request.md +0 -144
- package/templates/commands/business-analyse/hotfix.md +0 -116
- package/templates/commands/business-analyse.md +0 -121
- package/templates/commands/controller/create.md +0 -216
- package/templates/commands/controller/postman-templates.md +0 -528
- package/templates/commands/controller/templates.md +0 -600
- package/templates/commands/controller.md +0 -337
- package/templates/commands/create/agent.md +0 -138
- package/templates/commands/create/command.md +0 -166
- package/templates/commands/create/hook.md +0 -234
- package/templates/commands/create/plugin.md +0 -329
- package/templates/commands/create/project.md +0 -508
- package/templates/commands/create/skill.md +0 -199
- package/templates/commands/create.md +0 -220
- package/templates/commands/documentation/module.md +0 -202
- package/templates/commands/documentation/templates.md +0 -432
- package/templates/commands/documentation.md +0 -190
- package/templates/commands/epct.md +0 -69
- package/templates/commands/explain.md +0 -186
- package/templates/commands/feature-full.md +0 -267
- package/templates/commands/gitflow/1-init.md +0 -188
- package/templates/commands/gitflow/10-start.md +0 -190
- package/templates/commands/gitflow/11-finish.md +0 -382
- package/templates/commands/gitflow/12-cleanup.md +0 -103
- package/templates/commands/gitflow/13-sync.md +0 -216
- package/templates/commands/gitflow/14-rebase.md +0 -251
- package/templates/commands/gitflow/2-status.md +0 -122
- package/templates/commands/gitflow/3-commit.md +0 -209
- package/templates/commands/gitflow/4-plan.md +0 -174
- package/templates/commands/gitflow/5-exec.md +0 -202
- package/templates/commands/gitflow/6-abort.md +0 -121
- package/templates/commands/gitflow/7-pull-request.md +0 -176
- package/templates/commands/gitflow/8-review.md +0 -113
- package/templates/commands/gitflow/9-merge.md +0 -157
- package/templates/commands/gitflow.md +0 -128
- package/templates/commands/implement.md +0 -663
- package/templates/commands/init.md +0 -567
- package/templates/commands/mcp-integration.md +0 -330
- package/templates/commands/notification.md +0 -129
- package/templates/commands/oneshot.md +0 -57
- package/templates/commands/quickstart.md +0 -154
- package/templates/commands/ralph-loop/cancel-ralph.md +0 -18
- package/templates/commands/ralph-loop/help.md +0 -126
- package/templates/commands/ralph-loop/ralph-loop.md +0 -120
- package/templates/commands/review.md +0 -106
- package/templates/commands/workflow.md +0 -193
- package/templates/gitflow/config.json +0 -138
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
# React Components - FRD Documentation
|
|
2
|
+
|
|
3
|
+
> **Usage:** React component templates for documentation pages
|
|
4
|
+
> **Loaded in:** step-06-doc-html.md
|
|
5
|
+
> **Context7:** /facebook/react, /lucide-icons/lucide-react
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## FrdDocPage Component
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
// web/smartstack-web/src/pages/docs/business/{app}/{module}/FrdDocPage.tsx
|
|
13
|
+
|
|
14
|
+
import { Link } from 'react-router-dom';
|
|
15
|
+
import { useTranslation } from 'react-i18next';
|
|
16
|
+
import {
|
|
17
|
+
FileText,
|
|
18
|
+
Users,
|
|
19
|
+
Shield,
|
|
20
|
+
CheckCircle,
|
|
21
|
+
AlertTriangle,
|
|
22
|
+
ChevronRight,
|
|
23
|
+
ArrowRight,
|
|
24
|
+
List,
|
|
25
|
+
Layout,
|
|
26
|
+
Database
|
|
27
|
+
} from 'lucide-react';
|
|
28
|
+
import type { FrdData } from './types';
|
|
29
|
+
|
|
30
|
+
// Import data (generated from FRD)
|
|
31
|
+
import { frdData } from './frdData';
|
|
32
|
+
|
|
33
|
+
// Priority Badge Component
|
|
34
|
+
function PriorityBadge({ priority }: { priority: string }) {
|
|
35
|
+
const colors = {
|
|
36
|
+
Must: 'bg-red-500/10 text-red-600',
|
|
37
|
+
Should: 'bg-yellow-500/10 text-yellow-600',
|
|
38
|
+
Could: 'bg-blue-500/10 text-blue-600'
|
|
39
|
+
};
|
|
40
|
+
return (
|
|
41
|
+
<span className={`px-2 py-0.5 rounded text-xs font-medium ${colors[priority as keyof typeof colors] || 'bg-gray-500/10 text-gray-600'}`}>
|
|
42
|
+
{priority}
|
|
43
|
+
</span>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Numbered Section Component
|
|
48
|
+
function NumberedSection({
|
|
49
|
+
number,
|
|
50
|
+
title,
|
|
51
|
+
icon: Icon,
|
|
52
|
+
children
|
|
53
|
+
}: {
|
|
54
|
+
number: number;
|
|
55
|
+
title: string;
|
|
56
|
+
icon: React.ComponentType<{ className?: string }>;
|
|
57
|
+
children: React.ReactNode;
|
|
58
|
+
}) {
|
|
59
|
+
return (
|
|
60
|
+
<section id={`section-${number}`} className="scroll-mt-4">
|
|
61
|
+
<h2 className="text-xl font-semibold mb-4 flex items-center gap-3">
|
|
62
|
+
<span className="w-8 h-8 rounded-full bg-[var(--color-primary-600)] text-white flex items-center justify-center text-sm font-bold">
|
|
63
|
+
{number}
|
|
64
|
+
</span>
|
|
65
|
+
<Icon className="w-5 h-5 text-[var(--color-primary-600)]" />
|
|
66
|
+
{title}
|
|
67
|
+
</h2>
|
|
68
|
+
<div className="card p-6">
|
|
69
|
+
{children}
|
|
70
|
+
</div>
|
|
71
|
+
</section>
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Export page component
|
|
76
|
+
export function {ModuleName}FrdDocPage() {
|
|
77
|
+
const { t } = useTranslation('docs-business');
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<div className="space-y-8">
|
|
81
|
+
{/* Component implementation follows standard patterns */}
|
|
82
|
+
</div>
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export function {ModuleName}FrdDocPage() {
|
|
87
|
+
const { t } = useTranslation('docs-business');
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
<div className="space-y-8">
|
|
91
|
+
{/* Breadcrumb */}
|
|
92
|
+
<nav className="flex items-center gap-2 text-sm text-[var(--text-secondary)]">
|
|
93
|
+
<Link to="/docs" className="hover:text-[var(--color-primary-600)]">
|
|
94
|
+
{t('breadcrumb.docs')}
|
|
95
|
+
</Link>
|
|
96
|
+
<span>/</span>
|
|
97
|
+
<Link to="/docs/business" className="hover:text-[var(--color-primary-600)]">
|
|
98
|
+
{t('breadcrumb.business')}
|
|
99
|
+
</Link>
|
|
100
|
+
<span>/</span>
|
|
101
|
+
<Link to={`/docs/business/${frdData.applicationName.toLowerCase()}`} className="hover:text-[var(--color-primary-600)]">
|
|
102
|
+
{t(`apps.${frdData.applicationName.toLowerCase()}.name`)}
|
|
103
|
+
</Link>
|
|
104
|
+
<span>/</span>
|
|
105
|
+
<span>{t(`modules.${frdData.moduleName.toLowerCase()}.name`)}</span>
|
|
106
|
+
</nav>
|
|
107
|
+
|
|
108
|
+
{/* Header */}
|
|
109
|
+
<header>
|
|
110
|
+
<div className="flex items-center gap-2 mb-2">
|
|
111
|
+
<span className="px-2 py-0.5 rounded bg-[var(--color-primary-600)]/10 text-[var(--color-primary-600)] text-xs font-medium">
|
|
112
|
+
{frdData.featureId}
|
|
113
|
+
</span>
|
|
114
|
+
<span className="px-2 py-0.5 rounded bg-green-500/10 text-green-600 text-xs font-medium">
|
|
115
|
+
v{frdData.version}
|
|
116
|
+
</span>
|
|
117
|
+
</div>
|
|
118
|
+
<h1 className="text-3xl font-bold mb-4 flex items-center gap-3">
|
|
119
|
+
<FileText className="w-8 h-8 text-[var(--color-primary-600)]" />
|
|
120
|
+
{t(`modules.${frdData.moduleName.toLowerCase()}.title`)}
|
|
121
|
+
</h1>
|
|
122
|
+
<p className="text-lg text-[var(--text-secondary)]">
|
|
123
|
+
{t(`modules.${frdData.moduleName.toLowerCase()}.subtitle`)}
|
|
124
|
+
</p>
|
|
125
|
+
</header>
|
|
126
|
+
|
|
127
|
+
{/* Table of Contents */}
|
|
128
|
+
<div className="card p-4 bg-[var(--bg-secondary)]">
|
|
129
|
+
<h2 className="font-semibold mb-3 flex items-center gap-2">
|
|
130
|
+
<List className="w-4 h-4" />
|
|
131
|
+
{t('common.tableOfContents')}
|
|
132
|
+
</h2>
|
|
133
|
+
<nav className="grid grid-cols-2 md:grid-cols-3 gap-2">
|
|
134
|
+
{['overview', 'useCases', 'businessRules', 'permissions', 'wireframes', 'api'].map((section, idx) => (
|
|
135
|
+
<a
|
|
136
|
+
key={section}
|
|
137
|
+
href={`#section-${idx + 1}`}
|
|
138
|
+
className="flex items-center gap-2 p-2 rounded hover:bg-[var(--bg-tertiary)] text-sm"
|
|
139
|
+
>
|
|
140
|
+
<ChevronRight className="w-4 h-4 text-[var(--color-primary-600)]" />
|
|
141
|
+
{t(`sections.${section}`)}
|
|
142
|
+
</a>
|
|
143
|
+
))}
|
|
144
|
+
</nav>
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
{/* Sections follow standard pattern - see templates-react.md */}
|
|
148
|
+
|
|
149
|
+
{/* Section 1: Overview */}
|
|
150
|
+
<NumberedSection number={1} title={t('sections.overview')} icon={Layout}>
|
|
151
|
+
<p className="text-[var(--text-secondary)] mb-4">
|
|
152
|
+
{t(`modules.${frdData.moduleName.toLowerCase()}.overview`)}
|
|
153
|
+
</p>
|
|
154
|
+
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 mt-4">
|
|
155
|
+
<div className="p-4 rounded-lg bg-[var(--bg-secondary)] text-center">
|
|
156
|
+
<div className="text-2xl font-bold text-[var(--color-primary-600)]">
|
|
157
|
+
{frdData.useCases.length}
|
|
158
|
+
</div>
|
|
159
|
+
<div className="text-sm text-[var(--text-secondary)]">{t('stats.useCases')}</div>
|
|
160
|
+
</div>
|
|
161
|
+
<div className="p-4 rounded-lg bg-[var(--bg-secondary)] text-center">
|
|
162
|
+
<div className="text-2xl font-bold text-[var(--color-primary-600)]">
|
|
163
|
+
{frdData.businessRules.length}
|
|
164
|
+
</div>
|
|
165
|
+
<div className="text-sm text-[var(--text-secondary)]">{t('stats.businessRules')}</div>
|
|
166
|
+
</div>
|
|
167
|
+
<div className="p-4 rounded-lg bg-[var(--bg-secondary)] text-center">
|
|
168
|
+
<div className="text-2xl font-bold text-[var(--color-primary-600)]">
|
|
169
|
+
{frdData.permissions.length}
|
|
170
|
+
</div>
|
|
171
|
+
<div className="text-sm text-[var(--text-secondary)]">{t('stats.permissions')}</div>
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
174
|
+
</NumberedSection>
|
|
175
|
+
|
|
176
|
+
{/* Section 2: Use Cases */}
|
|
177
|
+
<NumberedSection number={2} title={t('sections.useCases')} icon={Users}>
|
|
178
|
+
<div className="space-y-4">
|
|
179
|
+
{frdData.useCases.map((uc) => (
|
|
180
|
+
<div key={uc.id} className="border border-[var(--border-color)] rounded-lg p-4">
|
|
181
|
+
<div className="flex items-center justify-between mb-2">
|
|
182
|
+
<h3 className="font-semibold flex items-center gap-2">
|
|
183
|
+
<span className="px-2 py-0.5 rounded bg-[var(--color-primary-600)]/10 text-[var(--color-primary-600)] text-xs font-mono">
|
|
184
|
+
{uc.id}
|
|
185
|
+
</span>
|
|
186
|
+
{uc.name}
|
|
187
|
+
</h3>
|
|
188
|
+
<span className="text-sm text-[var(--text-secondary)]">
|
|
189
|
+
{t('labels.actor')}: {uc.actor}
|
|
190
|
+
</span>
|
|
191
|
+
</div>
|
|
192
|
+
<p className="text-sm text-[var(--text-secondary)] mb-2">{uc.description}</p>
|
|
193
|
+
<div className="flex items-center gap-2 text-xs">
|
|
194
|
+
<Shield className="w-3 h-3 text-amber-500" />
|
|
195
|
+
<code className="bg-[var(--bg-secondary)] px-2 py-0.5 rounded">{uc.permission}</code>
|
|
196
|
+
</div>
|
|
197
|
+
</div>
|
|
198
|
+
))}
|
|
199
|
+
</div>
|
|
200
|
+
</NumberedSection>
|
|
201
|
+
|
|
202
|
+
{/* Section 3: Business Rules */}
|
|
203
|
+
<NumberedSection number={3} title={t('sections.businessRules')} icon={CheckCircle}>
|
|
204
|
+
<div className="overflow-x-auto">
|
|
205
|
+
<table className="w-full text-sm">
|
|
206
|
+
<thead>
|
|
207
|
+
<tr className="bg-[var(--bg-secondary)]">
|
|
208
|
+
<th className="text-left py-2 px-3 rounded-tl-lg">ID</th>
|
|
209
|
+
<th className="text-left py-2 px-3">{t('labels.rule')}</th>
|
|
210
|
+
<th className="text-left py-2 px-3">{t('labels.category')}</th>
|
|
211
|
+
<th className="text-left py-2 px-3 rounded-tr-lg">{t('labels.priority')}</th>
|
|
212
|
+
</tr>
|
|
213
|
+
</thead>
|
|
214
|
+
<tbody>
|
|
215
|
+
{frdData.businessRules.map((br, idx) => (
|
|
216
|
+
<tr key={br.id} className={idx % 2 === 1 ? 'bg-[var(--bg-secondary)]/50' : ''}>
|
|
217
|
+
<td className="py-2 px-3 font-mono text-[var(--color-primary-600)]">{br.id}</td>
|
|
218
|
+
<td className="py-2 px-3">{br.rule}</td>
|
|
219
|
+
<td className="py-2 px-3 text-[var(--text-secondary)]">{br.category}</td>
|
|
220
|
+
<td className="py-2 px-3"><PriorityBadge priority={br.priority} /></td>
|
|
221
|
+
</tr>
|
|
222
|
+
))}
|
|
223
|
+
</tbody>
|
|
224
|
+
</table>
|
|
225
|
+
</div>
|
|
226
|
+
</NumberedSection>
|
|
227
|
+
|
|
228
|
+
{/* Section 4: Permissions */}
|
|
229
|
+
<NumberedSection number={4} title={t('sections.permissions')} icon={Shield}>
|
|
230
|
+
<div className="space-y-3">
|
|
231
|
+
{frdData.permissions.map((perm) => (
|
|
232
|
+
<div key={perm.path} className="flex items-center justify-between p-3 rounded-lg bg-[var(--bg-secondary)]">
|
|
233
|
+
<div>
|
|
234
|
+
<code className="text-sm font-mono text-[var(--color-primary-600)]">{perm.path}</code>
|
|
235
|
+
<p className="text-sm text-[var(--text-secondary)] mt-1">{perm.description}</p>
|
|
236
|
+
</div>
|
|
237
|
+
<div className="flex gap-1">
|
|
238
|
+
{perm.roles.map((role) => (
|
|
239
|
+
<span key={role} className="px-2 py-0.5 rounded bg-[var(--bg-tertiary)] text-xs">
|
|
240
|
+
{role}
|
|
241
|
+
</span>
|
|
242
|
+
))}
|
|
243
|
+
</div>
|
|
244
|
+
</div>
|
|
245
|
+
))}
|
|
246
|
+
</div>
|
|
247
|
+
|
|
248
|
+
{/* Permission Warning */}
|
|
249
|
+
<div className="mt-4 p-4 rounded-lg bg-amber-500/10 border border-amber-500/20 flex items-start gap-3">
|
|
250
|
+
<AlertTriangle className="w-5 h-5 text-amber-600 flex-shrink-0 mt-0.5" />
|
|
251
|
+
<div>
|
|
252
|
+
<div className="font-medium text-amber-600">{t('warnings.permissionCheck')}</div>
|
|
253
|
+
<p className="text-sm text-[var(--text-secondary)]">
|
|
254
|
+
{t('warnings.permissionCheckDescription')}
|
|
255
|
+
</p>
|
|
256
|
+
</div>
|
|
257
|
+
</div>
|
|
258
|
+
</NumberedSection>
|
|
259
|
+
|
|
260
|
+
{/* Section 5: Wireframes */}
|
|
261
|
+
<NumberedSection number={5} title={t('sections.wireframes')} icon={Layout}>
|
|
262
|
+
<div className="border-2 border-dashed border-[var(--border-color)] rounded-lg p-6">
|
|
263
|
+
<div className="text-center text-sm text-[var(--text-tertiary)] mb-4">
|
|
264
|
+
{t('common.wireframePreview')}
|
|
265
|
+
</div>
|
|
266
|
+
<div className="space-y-4">
|
|
267
|
+
<div className="h-12 bg-[var(--bg-secondary)] rounded flex items-center px-4 justify-between">
|
|
268
|
+
<span className="text-sm">[Header + Navigation]</span>
|
|
269
|
+
<span className="text-sm">[User Menu]</span>
|
|
270
|
+
</div>
|
|
271
|
+
<div className="grid grid-cols-4 gap-4">
|
|
272
|
+
<div className="col-span-1 h-64 bg-[var(--bg-secondary)] rounded p-4">
|
|
273
|
+
<span className="text-sm">[Filters]</span>
|
|
274
|
+
</div>
|
|
275
|
+
<div className="col-span-3 h-64 bg-[var(--bg-secondary)] rounded p-4">
|
|
276
|
+
<span className="text-sm">[Data Table]</span>
|
|
277
|
+
</div>
|
|
278
|
+
</div>
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
</NumberedSection>
|
|
282
|
+
|
|
283
|
+
{/* Section 6: API Endpoints */}
|
|
284
|
+
<NumberedSection number={6} title={t('sections.api')} icon={Database}>
|
|
285
|
+
<div className="overflow-x-auto">
|
|
286
|
+
<table className="w-full text-sm font-mono">
|
|
287
|
+
<thead>
|
|
288
|
+
<tr className="bg-[var(--bg-secondary)]">
|
|
289
|
+
<th className="text-left py-2 px-3 rounded-tl-lg">Method</th>
|
|
290
|
+
<th className="text-left py-2 px-3">Endpoint</th>
|
|
291
|
+
<th className="text-left py-2 px-3 rounded-tr-lg">Permission</th>
|
|
292
|
+
</tr>
|
|
293
|
+
</thead>
|
|
294
|
+
<tbody>
|
|
295
|
+
<tr>
|
|
296
|
+
<td className="py-2 px-3"><span className="px-2 py-0.5 rounded bg-green-500/10 text-green-600">GET</span></td>
|
|
297
|
+
<td className="py-2 px-3">/api/business/{'{module}'}</td>
|
|
298
|
+
<td className="py-2 px-3 text-[var(--text-secondary)]">.read</td>
|
|
299
|
+
</tr>
|
|
300
|
+
<tr className="bg-[var(--bg-secondary)]/50">
|
|
301
|
+
<td className="py-2 px-3"><span className="px-2 py-0.5 rounded bg-blue-500/10 text-blue-600">POST</span></td>
|
|
302
|
+
<td className="py-2 px-3">/api/business/{'{module}'}</td>
|
|
303
|
+
<td className="py-2 px-3 text-[var(--text-secondary)]">.create</td>
|
|
304
|
+
</tr>
|
|
305
|
+
<tr>
|
|
306
|
+
<td className="py-2 px-3"><span className="px-2 py-0.5 rounded bg-yellow-500/10 text-yellow-600">PUT</span></td>
|
|
307
|
+
<td className="py-2 px-3">/api/business/{'{module}'}/{'{id}'}</td>
|
|
308
|
+
<td className="py-2 px-3 text-[var(--text-secondary)]">.update</td>
|
|
309
|
+
</tr>
|
|
310
|
+
<tr className="bg-[var(--bg-secondary)]/50">
|
|
311
|
+
<td className="py-2 px-3"><span className="px-2 py-0.5 rounded bg-red-500/10 text-red-600">DELETE</span></td>
|
|
312
|
+
<td className="py-2 px-3">/api/business/{'{module}'}/{'{id}'}</td>
|
|
313
|
+
<td className="py-2 px-3 text-[var(--text-secondary)]">.delete</td>
|
|
314
|
+
</tr>
|
|
315
|
+
</tbody>
|
|
316
|
+
</table>
|
|
317
|
+
</div>
|
|
318
|
+
</NumberedSection>
|
|
319
|
+
|
|
320
|
+
{/* Navigation Footer */}
|
|
321
|
+
<div className="flex justify-between pt-6 border-t border-[var(--border-color)]">
|
|
322
|
+
<Link
|
|
323
|
+
to={`/docs/business/${frdData.applicationName.toLowerCase()}`}
|
|
324
|
+
className="flex items-center gap-2 text-[var(--text-secondary)] hover:text-[var(--color-primary-600)]"
|
|
325
|
+
>
|
|
326
|
+
<ArrowRight className="w-4 h-4 rotate-180" />
|
|
327
|
+
{t('nav.backToApp')}
|
|
328
|
+
</Link>
|
|
329
|
+
<Link
|
|
330
|
+
to="/docs/business"
|
|
331
|
+
className="flex items-center gap-2 text-[var(--color-primary-600)]"
|
|
332
|
+
>
|
|
333
|
+
{t('nav.allModules')}
|
|
334
|
+
<ArrowRight className="w-4 h-4" />
|
|
335
|
+
</Link>
|
|
336
|
+
</div>
|
|
337
|
+
</div>
|
|
338
|
+
);
|
|
339
|
+
}
|
|
340
|
+
```
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# i18n Template - Documentation Translations
|
|
2
|
+
|
|
3
|
+
> **Usage:** Translation templates for 4 languages
|
|
4
|
+
> **Loaded in:** step-06-doc-html.md
|
|
5
|
+
> **Languages:** FR (source), EN, IT, DE
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## French (Source)
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
// web/smartstack-web/src/i18n/locales/fr/docs-{{app}}-{{module}}.json
|
|
13
|
+
{
|
|
14
|
+
"breadcrumb": {
|
|
15
|
+
"docs": "Documentation",
|
|
16
|
+
"business": "Business"
|
|
17
|
+
},
|
|
18
|
+
"common": {
|
|
19
|
+
"tableOfContents": "Table des matières",
|
|
20
|
+
"wireframePreview": "Aperçu du wireframe",
|
|
21
|
+
"modules": "Modules"
|
|
22
|
+
},
|
|
23
|
+
"sections": {
|
|
24
|
+
"overview": "Vue d'ensemble",
|
|
25
|
+
"useCases": "Cas d'utilisation",
|
|
26
|
+
"businessRules": "Règles métier",
|
|
27
|
+
"permissions": "Permissions",
|
|
28
|
+
"wireframes": "Wireframes",
|
|
29
|
+
"api": "Points d'accès API"
|
|
30
|
+
},
|
|
31
|
+
"labels": {
|
|
32
|
+
"actor": "Acteur",
|
|
33
|
+
"rule": "Règle",
|
|
34
|
+
"category": "Catégorie",
|
|
35
|
+
"priority": "Priorité"
|
|
36
|
+
},
|
|
37
|
+
"stats": {
|
|
38
|
+
"useCases": "Cas d'utilisation",
|
|
39
|
+
"businessRules": "Règles métier",
|
|
40
|
+
"permissions": "Permissions"
|
|
41
|
+
},
|
|
42
|
+
"warnings": {
|
|
43
|
+
"permissionCheck": "Vérification des permissions requise",
|
|
44
|
+
"permissionCheckDescription": "Assurez-vous que toutes les permissions sont enregistrées dans PermissionConfiguration.cs avant le déploiement."
|
|
45
|
+
},
|
|
46
|
+
"nav": {
|
|
47
|
+
"backToApp": "Retour à l'application",
|
|
48
|
+
"allModules": "Tous les modules"
|
|
49
|
+
},
|
|
50
|
+
"apps": {
|
|
51
|
+
"{{app}}": {
|
|
52
|
+
"name": "{{Application Name FR}}",
|
|
53
|
+
"description": "{{Application description FR}}"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"modules": {
|
|
57
|
+
"{{module}}": {
|
|
58
|
+
"name": "{{Module Name FR}}",
|
|
59
|
+
"title": "{{Module Title FR}}",
|
|
60
|
+
"subtitle": "{{Module subtitle FR}}",
|
|
61
|
+
"overview": "{{Module overview FR}}"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## English
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
// web/smartstack-web/src/i18n/locales/en/docs-{{app}}-{{module}}.json
|
|
73
|
+
{
|
|
74
|
+
"breadcrumb": {
|
|
75
|
+
"docs": "Documentation",
|
|
76
|
+
"business": "Business"
|
|
77
|
+
},
|
|
78
|
+
"common": {
|
|
79
|
+
"tableOfContents": "Table of Contents",
|
|
80
|
+
"wireframePreview": "Wireframe Preview",
|
|
81
|
+
"modules": "Modules"
|
|
82
|
+
},
|
|
83
|
+
"sections": {
|
|
84
|
+
"overview": "Overview",
|
|
85
|
+
"useCases": "Use Cases",
|
|
86
|
+
"businessRules": "Business Rules",
|
|
87
|
+
"permissions": "Permissions",
|
|
88
|
+
"wireframes": "Wireframes",
|
|
89
|
+
"api": "API Endpoints"
|
|
90
|
+
},
|
|
91
|
+
"labels": {
|
|
92
|
+
"actor": "Actor",
|
|
93
|
+
"rule": "Rule",
|
|
94
|
+
"category": "Category",
|
|
95
|
+
"priority": "Priority"
|
|
96
|
+
},
|
|
97
|
+
"stats": {
|
|
98
|
+
"useCases": "Use Cases",
|
|
99
|
+
"businessRules": "Business Rules",
|
|
100
|
+
"permissions": "Permissions"
|
|
101
|
+
},
|
|
102
|
+
"warnings": {
|
|
103
|
+
"permissionCheck": "Permission Check Required",
|
|
104
|
+
"permissionCheckDescription": "Ensure all permissions are registered in PermissionConfiguration.cs before deployment."
|
|
105
|
+
},
|
|
106
|
+
"nav": {
|
|
107
|
+
"backToApp": "Back to Application",
|
|
108
|
+
"allModules": "All Modules"
|
|
109
|
+
},
|
|
110
|
+
"apps": {
|
|
111
|
+
"{{app}}": {
|
|
112
|
+
"name": "{{Application Name EN}}",
|
|
113
|
+
"description": "{{Application description EN}}"
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"modules": {
|
|
117
|
+
"{{module}}": {
|
|
118
|
+
"name": "{{Module Name EN}}",
|
|
119
|
+
"title": "{{Module Title EN}}",
|
|
120
|
+
"subtitle": "{{Module subtitle EN}}",
|
|
121
|
+
"overview": "{{Module overview EN}}"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Italian
|
|
130
|
+
|
|
131
|
+
```json
|
|
132
|
+
// web/smartstack-web/src/i18n/locales/it/docs-{{app}}-{{module}}.json
|
|
133
|
+
{
|
|
134
|
+
"breadcrumb": {
|
|
135
|
+
"docs": "Documentazione",
|
|
136
|
+
"business": "Business"
|
|
137
|
+
},
|
|
138
|
+
"common": {
|
|
139
|
+
"tableOfContents": "Indice",
|
|
140
|
+
"wireframePreview": "Anteprima wireframe",
|
|
141
|
+
"modules": "Moduli"
|
|
142
|
+
},
|
|
143
|
+
"sections": {
|
|
144
|
+
"overview": "Panoramica",
|
|
145
|
+
"useCases": "Casi d'uso",
|
|
146
|
+
"businessRules": "Regole di business",
|
|
147
|
+
"permissions": "Permessi",
|
|
148
|
+
"wireframes": "Wireframe",
|
|
149
|
+
"api": "Endpoint API"
|
|
150
|
+
},
|
|
151
|
+
"labels": {
|
|
152
|
+
"actor": "Attore",
|
|
153
|
+
"rule": "Regola",
|
|
154
|
+
"category": "Categoria",
|
|
155
|
+
"priority": "Priorità"
|
|
156
|
+
},
|
|
157
|
+
"stats": {
|
|
158
|
+
"useCases": "Casi d'uso",
|
|
159
|
+
"businessRules": "Regole di business",
|
|
160
|
+
"permissions": "Permessi"
|
|
161
|
+
},
|
|
162
|
+
"warnings": {
|
|
163
|
+
"permissionCheck": "Verifica permessi richiesta",
|
|
164
|
+
"permissionCheckDescription": "Assicurarsi che tutti i permessi siano registrati in PermissionConfiguration.cs prima del deployment."
|
|
165
|
+
},
|
|
166
|
+
"nav": {
|
|
167
|
+
"backToApp": "Torna all'applicazione",
|
|
168
|
+
"allModules": "Tutti i moduli"
|
|
169
|
+
},
|
|
170
|
+
"apps": {
|
|
171
|
+
"{{app}}": {
|
|
172
|
+
"name": "{{Application Name IT}}",
|
|
173
|
+
"description": "{{Application description IT}}"
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
"modules": {
|
|
177
|
+
"{{module}}": {
|
|
178
|
+
"name": "{{Module Name IT}}",
|
|
179
|
+
"title": "{{Module Title IT}}",
|
|
180
|
+
"subtitle": "{{Module subtitle IT}}",
|
|
181
|
+
"overview": "{{Module overview IT}}"
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## German
|
|
190
|
+
|
|
191
|
+
```json
|
|
192
|
+
// web/smartstack-web/src/i18n/locales/de/docs-{{app}}-{{module}}.json
|
|
193
|
+
{
|
|
194
|
+
"breadcrumb": {
|
|
195
|
+
"docs": "Dokumentation",
|
|
196
|
+
"business": "Geschäft"
|
|
197
|
+
},
|
|
198
|
+
"common": {
|
|
199
|
+
"tableOfContents": "Inhaltsverzeichnis",
|
|
200
|
+
"wireframePreview": "Wireframe-Vorschau",
|
|
201
|
+
"modules": "Module"
|
|
202
|
+
},
|
|
203
|
+
"sections": {
|
|
204
|
+
"overview": "Übersicht",
|
|
205
|
+
"useCases": "Anwendungsfälle",
|
|
206
|
+
"businessRules": "Geschäftsregeln",
|
|
207
|
+
"permissions": "Berechtigungen",
|
|
208
|
+
"wireframes": "Wireframes",
|
|
209
|
+
"api": "API-Endpunkte"
|
|
210
|
+
},
|
|
211
|
+
"labels": {
|
|
212
|
+
"actor": "Akteur",
|
|
213
|
+
"rule": "Regel",
|
|
214
|
+
"category": "Kategorie",
|
|
215
|
+
"priority": "Priorität"
|
|
216
|
+
},
|
|
217
|
+
"stats": {
|
|
218
|
+
"useCases": "Anwendungsfälle",
|
|
219
|
+
"businessRules": "Geschäftsregeln",
|
|
220
|
+
"permissions": "Berechtigungen"
|
|
221
|
+
},
|
|
222
|
+
"warnings": {
|
|
223
|
+
"permissionCheck": "Berechtigungsprüfung erforderlich",
|
|
224
|
+
"permissionCheckDescription": "Stellen Sie sicher, dass alle Berechtigungen in PermissionConfiguration.cs vor dem Deployment registriert sind."
|
|
225
|
+
},
|
|
226
|
+
"nav": {
|
|
227
|
+
"backToApp": "Zurück zur Anwendung",
|
|
228
|
+
"allModules": "Alle Module"
|
|
229
|
+
},
|
|
230
|
+
"apps": {
|
|
231
|
+
"{{app}}": {
|
|
232
|
+
"name": "{{Application Name DE}}",
|
|
233
|
+
"description": "{{Application description DE}}"
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
"modules": {
|
|
237
|
+
"{{module}}": {
|
|
238
|
+
"name": "{{Module Name DE}}",
|
|
239
|
+
"title": "{{Module Title DE}}",
|
|
240
|
+
"subtitle": "{{Module subtitle DE}}",
|
|
241
|
+
"overview": "{{Module overview DE}}"
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
```
|