@einja/dev-cli 0.1.39 → 0.1.41
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/README.md +89 -1
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +71 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +187 -13
- package/dist/commands/sync.js.map +1 -1
- package/dist/lib/dependency-checker.d.ts.map +1 -1
- package/dist/lib/merger.d.ts +12 -0
- package/dist/lib/merger.d.ts.map +1 -1
- package/dist/lib/merger.js +28 -0
- package/dist/lib/merger.js.map +1 -1
- package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -1
- package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
- package/dist/lib/preset-update/preset-finder.d.ts.map +1 -1
- package/dist/lib/preset.d.ts.map +1 -1
- package/dist/lib/sync/category-validator.d.ts +1 -1
- package/dist/lib/sync/category-validator.d.ts.map +1 -1
- package/dist/lib/sync/category-validator.js +2 -1
- package/dist/lib/sync/category-validator.js.map +1 -1
- package/dist/lib/sync/category-validator.test.js +3 -1
- package/dist/lib/sync/category-validator.test.js.map +1 -1
- package/dist/lib/sync/conflict-reporter.d.ts.map +1 -1
- package/dist/lib/sync/diff-engine.d.ts.map +1 -1
- package/dist/lib/sync/file-filter.d.ts.map +1 -1
- package/dist/lib/sync/file-filter.js +1 -0
- package/dist/lib/sync/file-filter.js.map +1 -1
- package/dist/lib/sync/integration.test.js +255 -69
- package/dist/lib/sync/integration.test.js.map +1 -1
- package/dist/lib/sync/json-processor.d.ts +4 -4
- package/dist/lib/sync/json-processor.d.ts.map +1 -1
- package/dist/lib/sync/json-processor.js +11 -11
- package/dist/lib/sync/json-processor.js.map +1 -1
- package/dist/lib/sync/marker-processor.d.ts +60 -8
- package/dist/lib/sync/marker-processor.d.ts.map +1 -1
- package/dist/lib/sync/marker-processor.js +117 -26
- package/dist/lib/sync/marker-processor.js.map +1 -1
- package/dist/lib/sync/marker-processor.test.js +261 -40
- package/dist/lib/sync/marker-processor.test.js.map +1 -1
- package/dist/lib/sync/metadata-manager.d.ts +4 -0
- package/dist/lib/sync/metadata-manager.d.ts.map +1 -1
- package/dist/lib/sync/metadata-manager.js +15 -0
- package/dist/lib/sync/metadata-manager.js.map +1 -1
- package/dist/lib/sync/metadata-manager.test.js +68 -0
- package/dist/lib/sync/metadata-manager.test.js.map +1 -1
- package/dist/lib/sync/orphan-cleaner.d.ts +29 -0
- package/dist/lib/sync/orphan-cleaner.d.ts.map +1 -0
- package/dist/lib/sync/orphan-cleaner.js +80 -0
- package/dist/lib/sync/orphan-cleaner.js.map +1 -0
- package/dist/lib/sync/orphan-cleaner.test.d.ts +2 -0
- package/dist/lib/sync/orphan-cleaner.test.d.ts.map +1 -0
- package/dist/lib/sync/orphan-cleaner.test.js +169 -0
- package/dist/lib/sync/orphan-cleaner.test.js.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.d.ts +52 -0
- package/dist/lib/sync/project-private-synchronizer.d.ts.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.js +106 -0
- package/dist/lib/sync/project-private-synchronizer.js.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.test.d.ts +2 -0
- package/dist/lib/sync/project-private-synchronizer.test.d.ts.map +1 -0
- package/dist/lib/sync/project-private-synchronizer.test.js +348 -0
- package/dist/lib/sync/project-private-synchronizer.test.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/sync.d.ts +36 -6
- package/dist/types/sync.d.ts.map +1 -1
- package/dist/types/sync.js +2 -2
- package/dist/types/sync.js.map +1 -1
- package/package.json +5 -4
- package/presets/default/.claude/agents/einja/Explore.md +140 -0
- package/presets/default/.claude/agents/einja/backend-architect.md +4 -0
- package/presets/default/.claude/agents/einja/codex-agent.md +4 -0
- package/presets/default/.claude/agents/einja/design-engineer.md +4 -0
- package/presets/default/.claude/agents/einja/docs/docs-updater.md +4 -0
- package/presets/default/.claude/agents/einja/frontend-architect.md +4 -0
- package/presets/default/.claude/agents/einja/frontend-coder.md +4 -0
- package/presets/default/.claude/agents/einja/git/conflict-resolver.md +4 -0
- package/presets/default/.claude/agents/einja/specs/spec-design-generator.md +4 -1
- package/presets/default/.claude/agents/einja/specs/spec-qa-generator.md +4 -0
- package/presets/default/.claude/agents/einja/specs/spec-requirements-generator.md +4 -1
- package/presets/default/.claude/agents/einja/specs/spec-tasks-generator.md +6 -2
- package/presets/default/.claude/agents/einja/specs/spec-tasks-validator.md +4 -0
- package/presets/default/.claude/agents/einja/task/task-executer.md +57 -115
- package/presets/default/.claude/agents/einja/task/task-modification-analyzer.md +4 -0
- package/presets/default/.claude/agents/einja/task/task-qa.md +4 -0
- package/presets/default/.claude/agents/einja/task/task-reviewer.md +4 -0
- package/presets/default/.claude/commands/einja/einja-sync.md +5 -1
- package/presets/default/.claude/commands/einja/frontend-implement.md +3 -1
- package/presets/default/.claude/commands/einja/issue-exec.md +403 -0
- package/presets/default/.claude/commands/einja/spec-create.md +15 -1
- package/presets/default/.claude/commands/einja/start-dev.md +4 -0
- package/presets/default/.claude/commands/einja/sync-cursor-commands.md +4 -0
- package/presets/default/.claude/commands/einja/task-exec.md +106 -14
- package/presets/default/.claude/commands/einja/update-docs-by-task-specs.md +4 -0
- package/presets/default/.claude/hooks/einja/plan-mode-skill-loader.sh +23 -0
- package/presets/default/.claude/settings.json +15 -1
- package/presets/default/.claude/skills/einja-conflict-resolver/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-general-context-loader/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-output-format/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-project-overview/SKILL.md +7 -3
- package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +266 -274
- package/presets/default/.claude/skills/einja-skill-creator/agents/analyzer.md +274 -0
- package/presets/default/.claude/skills/einja-skill-creator/agents/comparator.md +202 -0
- package/presets/default/.claude/skills/einja-skill-creator/agents/grader.md +195 -0
- package/presets/default/.claude/skills/einja-skill-creator/assets/eval_review.html +146 -0
- package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/generate_review.py +471 -0
- package/presets/default/.claude/skills/einja-skill-creator/eval-viewer/viewer.html +1325 -0
- package/presets/default/.claude/skills/einja-skill-creator/references/schemas.md +430 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/aggregate_benchmark.py +154 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/generate_report.py +265 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/improve_description.py +252 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/init_skill.py +13 -19
- package/presets/default/.claude/skills/einja-skill-creator/scripts/package_skill.py +36 -7
- package/presets/default/.claude/skills/einja-skill-creator/scripts/run_eval.py +310 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/run_loop.py +295 -0
- package/presets/default/.claude/skills/einja-skill-creator/scripts/utils.py +48 -0
- package/presets/default/.claude/skills/einja-spec-context-loader/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-task-commit/SKILL.md +4 -0
- package/presets/default/.claude/skills/einja-task-qa/SKILL.md +4 -0
- package/presets/default/.envrc +5 -0
- package/presets/default/.mcp.json +2 -12
- package/presets/default/CLAUDE.md.template +26 -4
- package/presets/default/docs/einja/example/specs/issues/issue999-example-task/tasks.md +1 -1
- package/presets/default/docs/einja/instructions/deployment-setup.md +3 -8
- package/presets/default/docs/einja/instructions/environment-setup.md +3 -8
- package/presets/default/docs/einja/instructions/issue-exec-workflow.md +276 -0
- package/presets/default/docs/einja/instructions/local-server-environment-and-worktree.md +70 -8
- package/presets/default/docs/einja/instructions/neon-cli-reference.md +3 -8
- package/presets/default/docs/einja/instructions/task-execute.md +23 -28
- package/presets/default/docs/einja/instructions/vercel-cli-reference.md +17 -10
- package/presets/default/docs/einja/steering/README.md +11 -11
- package/presets/default/docs/einja/steering/acceptance-criteria-and-qa-guide.md +3 -8
- package/presets/default/docs/einja/steering/architecture.md +3 -8
- package/presets/default/docs/einja/steering/branch-strategy.md +63 -70
- package/presets/default/docs/einja/steering/commit-rules.md +3 -8
- package/presets/default/docs/einja/steering/db-schema-design.md +3 -8
- package/presets/default/docs/einja/steering/development/api-development.md +3 -8
- package/presets/default/docs/einja/steering/development/backend-architecture.md +3 -8
- package/presets/default/docs/einja/steering/development/coding-standards.md +723 -0
- package/presets/default/docs/einja/steering/development/component-design.md +502 -0
- package/presets/default/docs/einja/steering/development/database-guidelines.md +54 -5
- package/presets/default/docs/einja/steering/development/frontend-development.md +3 -8
- package/presets/default/docs/einja/steering/development/playwright-guidelines.md +59 -0
- package/presets/default/docs/einja/steering/development/review-guidelines.md +3 -8
- package/presets/default/docs/einja/steering/development/testing-strategy.md +3 -8
- package/presets/default/docs/einja/steering/development-workflow.md +71 -124
- package/presets/default/docs/einja/steering/infrastructure/deployment.md +49 -55
- package/presets/default/docs/einja/steering/infrastructure/environment-variables.md +4 -8
- package/presets/default/docs/einja/steering/product.md +3 -8
- package/presets/default/docs/einja/steering/task-management.md +14 -98
- package/presets/default/scripts/ensure-serena.sh +75 -0
- package/presets/default/scripts/env-rotate-secrets.ts +336 -0
- package/presets/default/scripts/env-show.ts +130 -0
- package/presets/default/scripts/env.ts +479 -0
- package/presets/default/scripts/init.sh +92 -0
- package/presets/default/scripts/lib/env-common.ts +108 -0
- package/presets/default/scripts/lib/worktree-config.ts +64 -0
- package/presets/default/scripts/setup-dev.ts +640 -0
- package/presets/default/scripts/stop-serena.sh +25 -0
- package/presets/default/scripts/worktree/dev.ts +872 -0
- package/dist/lib/sync/seed-synchronizer.d.ts +0 -27
- package/dist/lib/sync/seed-synchronizer.d.ts.map +0 -1
- package/dist/lib/sync/seed-synchronizer.js +0 -72
- package/dist/lib/sync/seed-synchronizer.js.map +0 -1
- package/dist/lib/sync/seed-synchronizer.test.d.ts +0 -2
- package/dist/lib/sync/seed-synchronizer.test.d.ts.map +0 -1
- package/dist/lib/sync/seed-synchronizer.test.js +0 -147
- package/dist/lib/sync/seed-synchronizer.test.js.map +0 -1
- package/presets/default/.claude/skills/einja-api-development/SKILL.md +0 -14
- package/presets/default/.claude/skills/einja-backend-architecture/SKILL.md +0 -18
- package/presets/default/.claude/skills/einja-coding-standards/SKILL.md +0 -132
- package/presets/default/.claude/skills/einja-coding-standards/references/import-conventions.md +0 -69
- package/presets/default/.claude/skills/einja-coding-standards/references/naming-conventions.md +0 -107
- package/presets/default/.claude/skills/einja-coding-standards/references/prohibited-patterns.md +0 -169
- package/presets/default/.claude/skills/einja-coding-standards/references/typescript-rules.md +0 -247
- package/presets/default/.claude/skills/einja-component-design/SKILL.md +0 -109
- package/presets/default/.claude/skills/einja-component-design/references/directory-structure.md +0 -117
- package/presets/default/.claude/skills/einja-component-design/references/props-patterns.md +0 -159
- package/presets/default/.claude/skills/einja-component-design/references/styling-guide.md +0 -122
- package/presets/default/.claude/skills/einja-frontend-development/SKILL.md +0 -14
- package/presets/default/docs/einja/instructions/task-vibe-kanban-loop.md +0 -565
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# Props設計パターン
|
|
2
|
-
|
|
3
|
-
## 型定義
|
|
4
|
-
|
|
5
|
-
### Props インターフェース
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
interface ButtonProps {
|
|
9
|
-
children: React.ReactNode;
|
|
10
|
-
variant?: "primary" | "secondary" | "danger";
|
|
11
|
-
size?: "sm" | "md" | "lg";
|
|
12
|
-
disabled?: boolean;
|
|
13
|
-
onClick?: () => void;
|
|
14
|
-
}
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
### デフォルトProps
|
|
18
|
-
|
|
19
|
-
```typescript
|
|
20
|
-
const defaultProps: Partial<ButtonProps> = {
|
|
21
|
-
variant: "primary",
|
|
22
|
-
size: "md",
|
|
23
|
-
disabled: false,
|
|
24
|
-
};
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## イベントハンドリング
|
|
28
|
-
|
|
29
|
-
### 命名規則
|
|
30
|
-
- `on` + 動詞の命名規則を使用
|
|
31
|
-
- 例: `onClick`, `onSubmit`, `onChange`
|
|
32
|
-
|
|
33
|
-
### 型定義
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
interface FormProps {
|
|
37
|
-
onSubmit: (data: FormData) => void;
|
|
38
|
-
onChange: (field: string, value: string) => void;
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## 状態管理
|
|
43
|
-
|
|
44
|
-
### ローカル状態
|
|
45
|
-
- `useState` でローカル状態を管理
|
|
46
|
-
- 複雑な状態は `useReducer` を検討
|
|
47
|
-
|
|
48
|
-
```typescript
|
|
49
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
50
|
-
|
|
51
|
-
// 複雑な状態の場合
|
|
52
|
-
const [state, dispatch] = useReducer(reducer, initialState);
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## エラーハンドリング
|
|
56
|
-
|
|
57
|
-
### Error Boundary
|
|
58
|
-
- 予期しないエラーをキャッチ
|
|
59
|
-
- ユーザーフレンドリーなエラー表示
|
|
60
|
-
|
|
61
|
-
### バリデーション
|
|
62
|
-
- フォーム入力のバリデーション
|
|
63
|
-
- 適切なエラーメッセージの表示
|
|
64
|
-
|
|
65
|
-
## 実装例
|
|
66
|
-
|
|
67
|
-
### 基本的なButtonコンポーネント
|
|
68
|
-
|
|
69
|
-
```typescript
|
|
70
|
-
// index.tsx
|
|
71
|
-
export interface ButtonProps {
|
|
72
|
-
children: React.ReactNode;
|
|
73
|
-
variant?: "primary" | "secondary" | "danger";
|
|
74
|
-
size?: "sm" | "md" | "lg";
|
|
75
|
-
disabled?: boolean;
|
|
76
|
-
onClick?: () => void;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
import { button } from "styled-system/recipes";
|
|
80
|
-
import type { ButtonProps } from "./types";
|
|
81
|
-
|
|
82
|
-
export const Button: React.FC<ButtonProps> = ({
|
|
83
|
-
children,
|
|
84
|
-
variant = "primary",
|
|
85
|
-
size = "md",
|
|
86
|
-
disabled = false,
|
|
87
|
-
onClick,
|
|
88
|
-
}) => {
|
|
89
|
-
return (
|
|
90
|
-
<button
|
|
91
|
-
className={button({ variant, size })}
|
|
92
|
-
disabled={disabled}
|
|
93
|
-
onClick={onClick}
|
|
94
|
-
>
|
|
95
|
-
{children}
|
|
96
|
-
</button>
|
|
97
|
-
);
|
|
98
|
-
};
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## パフォーマンス
|
|
102
|
-
|
|
103
|
-
### メモ化
|
|
104
|
-
- `React.memo` で不要な再レンダリングを防止
|
|
105
|
-
- `useMemo`, `useCallback` で計算結果をキャッシュ
|
|
106
|
-
|
|
107
|
-
```typescript
|
|
108
|
-
const MemoizedComponent = React.memo(({ data, onClick }) => {
|
|
109
|
-
return <div onClick={onClick}>{data.name}</div>;
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
// useCallbackでコールバックをメモ化
|
|
113
|
-
const handleClick = useCallback(() => {
|
|
114
|
-
// 処理
|
|
115
|
-
}, [dependency]);
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### 遅延読み込み
|
|
119
|
-
- `React.lazy` で大きなコンポーネントの遅延読み込み
|
|
120
|
-
- `Suspense` で読み込み状態を表示
|
|
121
|
-
|
|
122
|
-
```typescript
|
|
123
|
-
const HeavyComponent = React.lazy(() => import('./HeavyComponent'));
|
|
124
|
-
|
|
125
|
-
function App() {
|
|
126
|
-
return (
|
|
127
|
-
<Suspense fallback={<Loading />}>
|
|
128
|
-
<HeavyComponent />
|
|
129
|
-
</Suspense>
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
## アクセシビリティ
|
|
135
|
-
|
|
136
|
-
### セマンティックHTML
|
|
137
|
-
- 適切なHTMLタグを使用
|
|
138
|
-
- `aria-*` 属性の適切な使用
|
|
139
|
-
|
|
140
|
-
```typescript
|
|
141
|
-
<button
|
|
142
|
-
aria-label="メニューを開く"
|
|
143
|
-
aria-expanded={isOpen}
|
|
144
|
-
>
|
|
145
|
-
<MenuIcon />
|
|
146
|
-
</button>
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### キーボード操作
|
|
150
|
-
- キーボードのみでの操作を可能にする
|
|
151
|
-
- フォーカス管理の実装
|
|
152
|
-
|
|
153
|
-
```typescript
|
|
154
|
-
const handleKeyDown = (e: React.KeyboardEvent) => {
|
|
155
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
156
|
-
handleClick();
|
|
157
|
-
}
|
|
158
|
-
};
|
|
159
|
-
```
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
# スタイリングガイド(Tailwind CSS)
|
|
2
|
-
|
|
3
|
-
## 基本的な使い方
|
|
4
|
-
|
|
5
|
-
### Tailwind CSS の使用
|
|
6
|
-
- Tailwind CSS v4 のユーティリティクラスを使用してスタイルを定義
|
|
7
|
-
- CSS変数(globals.css)でデザイントークンを管理
|
|
8
|
-
- shadcn/ui のコンポーネントを活用
|
|
9
|
-
|
|
10
|
-
```typescript
|
|
11
|
-
// ユーティリティクラスの使用
|
|
12
|
-
<div className="flex items-center gap-4 rounded-lg bg-white p-6 shadow-md">
|
|
13
|
-
<h2 className="text-xl font-bold text-gray-900">Title</h2>
|
|
14
|
-
</div>
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## cva によるバリアント管理
|
|
18
|
-
|
|
19
|
-
### 基本的な使用方法
|
|
20
|
-
|
|
21
|
-
```typescript
|
|
22
|
-
import { cva } from "class-variance-authority";
|
|
23
|
-
import { cn } from "@repo/ui/utils";
|
|
24
|
-
|
|
25
|
-
const buttonVariants = cva(
|
|
26
|
-
"inline-flex items-center justify-center rounded-md font-medium transition-colors",
|
|
27
|
-
{
|
|
28
|
-
variants: {
|
|
29
|
-
variant: {
|
|
30
|
-
primary: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
31
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
32
|
-
outline: "border border-input bg-transparent hover:bg-accent",
|
|
33
|
-
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
34
|
-
},
|
|
35
|
-
size: {
|
|
36
|
-
sm: "h-8 px-3 text-sm",
|
|
37
|
-
md: "h-10 px-4 text-base",
|
|
38
|
-
lg: "h-12 px-6 text-lg",
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
defaultVariants: {
|
|
42
|
-
variant: "primary",
|
|
43
|
-
size: "md",
|
|
44
|
-
},
|
|
45
|
-
}
|
|
46
|
-
);
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## クラス名の結合
|
|
50
|
-
|
|
51
|
-
### cn(className)ユーティリティの使用
|
|
52
|
-
|
|
53
|
-
```typescript
|
|
54
|
-
import { cn } from "@repo/ui/utils";
|
|
55
|
-
|
|
56
|
-
export function Card({ className, children }: CardProps) {
|
|
57
|
-
return (
|
|
58
|
-
<div className={cn("border rounded-lg p-4", className)}>
|
|
59
|
-
{children}
|
|
60
|
-
</div>
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### 条件付きスタイル
|
|
66
|
-
|
|
67
|
-
```typescript
|
|
68
|
-
import { cn } from "@repo/ui/utils";
|
|
69
|
-
|
|
70
|
-
export function Button({ isActive, className }: ButtonProps) {
|
|
71
|
-
return (
|
|
72
|
-
<button
|
|
73
|
-
className={cn(
|
|
74
|
-
"px-4 py-2 rounded-md",
|
|
75
|
-
isActive ? "bg-blue-500 text-white" : "bg-gray-200 text-gray-900",
|
|
76
|
-
className
|
|
77
|
-
)}
|
|
78
|
-
>
|
|
79
|
-
Click me
|
|
80
|
-
</button>
|
|
81
|
-
);
|
|
82
|
-
}
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## レスポンシブデザイン
|
|
86
|
-
|
|
87
|
-
### ブレークポイント
|
|
88
|
-
|
|
89
|
-
```typescript
|
|
90
|
-
<div className="text-sm p-2 md:text-base md:p-4 lg:text-lg lg:p-6">
|
|
91
|
-
レスポンシブコンテンツ
|
|
92
|
-
</div>
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### カスタムブレークポイント
|
|
96
|
-
- sm: 640px
|
|
97
|
-
- md: 768px
|
|
98
|
-
- lg: 1024px
|
|
99
|
-
- xl: 1280px
|
|
100
|
-
- 2xl: 1440px
|
|
101
|
-
|
|
102
|
-
## ダークモード対応
|
|
103
|
-
|
|
104
|
-
```typescript
|
|
105
|
-
<div className="bg-white text-gray-900 dark:bg-gray-900 dark:text-gray-100">
|
|
106
|
-
テーマ対応コンテンツ
|
|
107
|
-
</div>
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## ベストプラクティス
|
|
111
|
-
|
|
112
|
-
### 1. デザイントークンの活用
|
|
113
|
-
- `globals.css` で定義されたCSS変数を使用
|
|
114
|
-
- shadcn/ui のカラートークンを活用(`text-primary`, `bg-muted` 等)
|
|
115
|
-
|
|
116
|
-
### 2. shadcn/ui コンポーネントを優先
|
|
117
|
-
- 既存の shadcn/ui コンポーネントを優先的に使用
|
|
118
|
-
- カスタムが必要な場合のみ cva で独自バリアントを定義
|
|
119
|
-
|
|
120
|
-
### 3. スタイルの一貫性
|
|
121
|
-
- プロジェクト全体で同じTailwindユーティリティパターンを使用
|
|
122
|
-
- カラーパレット、スペーシングの統一
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: frontend-development
|
|
3
|
-
description: "Next.js + React + Tanstack Queryを使用したフロントエンド実装のガイドライン"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# フロントエンド開発ガイド Skill
|
|
7
|
-
|
|
8
|
-
## 概要
|
|
9
|
-
|
|
10
|
-
このSkillは、フロントエンド実装時に参照すべきガイドラインを提供します。
|
|
11
|
-
|
|
12
|
-
## 詳細ドキュメント
|
|
13
|
-
|
|
14
|
-
@docs/einja/steering/development/frontend-development.md
|