ma-agents 3.18.0-beta.2 → 3.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/cli.js +29 -32
- package/docs/architecture.md +2 -2
- package/lib/bmad-cache/cache-manifest.json +0 -12
- package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +1 -1
- package/lib/bmad.js +33 -34
- package/package.json +1 -1
- package/scripts/build-bmad-cache.js +18 -9
- package/lib/bmad-cache/gds/.claude-plugin/marketplace.json +0 -56
- package/lib/bmad-cache/gds/.markdownlint-cli2.yaml +0 -35
- package/lib/bmad-cache/gds/.nvmrc +0 -1
- package/lib/bmad-cache/gds/.prettierignore +0 -9
- package/lib/bmad-cache/gds/CNAME +0 -1
- package/lib/bmad-cache/gds/LICENSE +0 -26
- package/lib/bmad-cache/gds/README.md +0 -134
- package/lib/bmad-cache/gds/_git_preserved/HEAD +0 -1
- package/lib/bmad-cache/gds/_git_preserved/config +0 -13
- package/lib/bmad-cache/gds/_git_preserved/description +0 -1
- package/lib/bmad-cache/gds/_git_preserved/hooks/applypatch-msg.sample +0 -15
- package/lib/bmad-cache/gds/_git_preserved/hooks/commit-msg.sample +0 -74
- package/lib/bmad-cache/gds/_git_preserved/hooks/fsmonitor-watchman.sample +0 -168
- package/lib/bmad-cache/gds/_git_preserved/hooks/post-update.sample +0 -8
- package/lib/bmad-cache/gds/_git_preserved/hooks/pre-applypatch.sample +0 -14
- package/lib/bmad-cache/gds/_git_preserved/hooks/pre-commit.sample +0 -49
- package/lib/bmad-cache/gds/_git_preserved/hooks/pre-merge-commit.sample +0 -13
- package/lib/bmad-cache/gds/_git_preserved/hooks/pre-push.sample +0 -53
- package/lib/bmad-cache/gds/_git_preserved/hooks/pre-rebase.sample +0 -169
- package/lib/bmad-cache/gds/_git_preserved/hooks/pre-receive.sample +0 -24
- package/lib/bmad-cache/gds/_git_preserved/hooks/prepare-commit-msg.sample +0 -42
- package/lib/bmad-cache/gds/_git_preserved/hooks/push-to-checkout.sample +0 -78
- package/lib/bmad-cache/gds/_git_preserved/hooks/sendemail-validate.sample +0 -77
- package/lib/bmad-cache/gds/_git_preserved/hooks/update.sample +0 -128
- package/lib/bmad-cache/gds/_git_preserved/index +0 -0
- package/lib/bmad-cache/gds/_git_preserved/info/exclude +0 -6
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.idx +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.pack +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.rev +0 -0
- package/lib/bmad-cache/gds/_git_preserved/packed-refs +0 -2
- package/lib/bmad-cache/gds/_git_preserved/refs/heads/main +0 -1
- package/lib/bmad-cache/gds/_git_preserved/shallow +0 -1
- package/lib/bmad-cache/gds/eslint.config.mjs +0 -141
- package/lib/bmad-cache/gds/package.json +0 -91
- package/lib/bmad-cache/gds/prettier.config.mjs +0 -32
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-architect/customize.toml +0 -57
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/customize.toml +0 -59
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/customize.toml +0 -129
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/gametest/qa-index.csv +0 -18
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/customize.toml +0 -55
- package/lib/bmad-cache/gds/src/agents/gds-agent-tech-writer/customize.toml +0 -65
- package/lib/bmad-cache/gds/src/module-help.csv +0 -30
- package/lib/bmad-cache/gds/src/module.yaml +0 -113
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/game-brain-methods.csv +0 -26
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/customize.toml +0 -116
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/gds-domain-research/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-narrative/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/game-types.csv +0 -25
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/genre-complexity.csv +0 -26
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/validation-report-template.html +0 -190
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/customize.toml +0 -99
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/scripts/render-validation-html.py +0 -290
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-prd/assets/validation-report-template.html +0 -190
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-prd/customize.toml +0 -84
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/assets/validation-report-template.html +0 -319
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/customize.toml +0 -101
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-check-implementation-readiness/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-create-epics-and-stories/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/architecture-patterns.yaml +0 -508
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/decision-catalog.yaml +0 -428
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/engine-mcps.yaml +0 -392
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/pattern-categories.csv +0 -13
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-generate-project-context/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-code-review/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-correct-course/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-create-story/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-dev-story/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-investigate/customize.toml +0 -62
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-retrospective/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/sprint-status-template.yaml +0 -55
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-status/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-e2e-scaffold/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-performance-test/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-playtest-plan/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-automate/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-design/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-framework/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-review/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/gds-document-project/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/gds-document-project/documentation-requirements.csv +0 -12
- package/lib/bmad-cache/gds/src/workflows/gds-document-project/templates/project-scan-report-schema.json +0 -160
- package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/customize.toml +0 -41
- package/lib/bmad-cache/gds/tools/build-docs.mjs +0 -450
- package/lib/bmad-cache/gds/website/astro.config.mjs +0 -142
- package/lib/bmad-cache/gds/website/public/favicon.ico +0 -0
- package/lib/bmad-cache/gds/website/public/img/bmad-dark.png +0 -0
- package/lib/bmad-cache/gds/website/public/img/bmad-light.png +0 -0
- package/lib/bmad-cache/gds/website/src/components/Banner.astro +0 -71
- package/lib/bmad-cache/gds/website/src/components/Header.astro +0 -94
- package/lib/bmad-cache/gds/website/src/components/MobileMenuFooter.astro +0 -33
- package/lib/bmad-cache/gds/website/src/content/config.ts +0 -6
- package/lib/bmad-cache/gds/website/src/content/docs +0 -1
- package/lib/bmad-cache/gds/website/src/lib/site-url.mjs +0 -25
- package/lib/bmad-cache/gds/website/src/rehype-base-paths.js +0 -88
- package/lib/bmad-cache/gds/website/src/rehype-markdown-links.js +0 -117
- package/lib/bmad-cache/gds/website/src/styles/custom.css +0 -503
- package/lib/bmad-cache/wds/.claude-plugin/marketplace.json +0 -35
- package/lib/bmad-cache/wds/.markdownlint-cli2.yaml +0 -38
- package/lib/bmad-cache/wds/.nvmrc +0 -1
- package/lib/bmad-cache/wds/.prettierignore +0 -9
- package/lib/bmad-cache/wds/LICENSE +0 -27
- package/lib/bmad-cache/wds/README.md +0 -139
- package/lib/bmad-cache/wds/_git_preserved/HEAD +0 -1
- package/lib/bmad-cache/wds/_git_preserved/config +0 -13
- package/lib/bmad-cache/wds/_git_preserved/description +0 -1
- package/lib/bmad-cache/wds/_git_preserved/hooks/applypatch-msg.sample +0 -15
- package/lib/bmad-cache/wds/_git_preserved/hooks/commit-msg.sample +0 -74
- package/lib/bmad-cache/wds/_git_preserved/hooks/fsmonitor-watchman.sample +0 -168
- package/lib/bmad-cache/wds/_git_preserved/hooks/post-update.sample +0 -8
- package/lib/bmad-cache/wds/_git_preserved/hooks/pre-applypatch.sample +0 -14
- package/lib/bmad-cache/wds/_git_preserved/hooks/pre-commit.sample +0 -49
- package/lib/bmad-cache/wds/_git_preserved/hooks/pre-merge-commit.sample +0 -13
- package/lib/bmad-cache/wds/_git_preserved/hooks/pre-push.sample +0 -53
- package/lib/bmad-cache/wds/_git_preserved/hooks/pre-rebase.sample +0 -169
- package/lib/bmad-cache/wds/_git_preserved/hooks/pre-receive.sample +0 -24
- package/lib/bmad-cache/wds/_git_preserved/hooks/prepare-commit-msg.sample +0 -42
- package/lib/bmad-cache/wds/_git_preserved/hooks/push-to-checkout.sample +0 -78
- package/lib/bmad-cache/wds/_git_preserved/hooks/sendemail-validate.sample +0 -77
- package/lib/bmad-cache/wds/_git_preserved/hooks/update.sample +0 -128
- package/lib/bmad-cache/wds/_git_preserved/index +0 -0
- package/lib/bmad-cache/wds/_git_preserved/info/exclude +0 -6
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.idx +0 -0
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.pack +0 -0
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.rev +0 -0
- package/lib/bmad-cache/wds/_git_preserved/packed-refs +0 -2
- package/lib/bmad-cache/wds/_git_preserved/refs/heads/main +0 -1
- package/lib/bmad-cache/wds/_git_preserved/refs/tags/v0.4.3 +0 -1
- package/lib/bmad-cache/wds/_git_preserved/shallow +0 -1
- package/lib/bmad-cache/wds/eslint.config.mjs +0 -152
- package/lib/bmad-cache/wds/package.json +0 -82
- package/lib/bmad-cache/wds/prettier.config.mjs +0 -32
- package/lib/bmad-cache/wds/src/agents/wds-agent-freya-ux/customize.toml +0 -80
- package/lib/bmad-cache/wds/src/agents/wds-agent-mimir-builder/customize.toml +0 -52
- package/lib/bmad-cache/wds/src/agents/wds-agent-saga-analyst/customize.toml +0 -70
- package/lib/bmad-cache/wds/src/module-help.csv +0 -19
- package/lib/bmad-cache/wds/src/module.yaml +0 -173
- package/lib/bmad-cache/wds/src/scripts/README.md +0 -155
- package/lib/bmad-cache/wds/src/scripts/wds-add-object.js +0 -202
- package/lib/bmad-cache/wds/src/scripts/wds-add-spacing.js +0 -158
- package/lib/bmad-cache/wds/src/scripts/wds-init-page.js +0 -229
- package/lib/bmad-cache/wds/src/scripts/wds-init-scenario.js +0 -120
- package/lib/bmad-cache/wds/src/scripts/wds-nav.js +0 -201
- package/lib/bmad-cache/wds/src/scripts/wds-validate.js +0 -301
- package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/resources/wds-1-project-brief/templates/platform-requirements.template.yaml +0 -69
- package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/resources/wds-7-design-system/templates/catalog.template.html +0 -363
- package/lib/bmad-cache/wds/src/workflows/wds-1-project-brief/templates/platform-requirements.template.yaml +0 -69
- package/lib/bmad-cache/wds/src/workflows/wds-3-scenarios/workflow.xml +0 -450
- package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/templates/design-delivery.template.yaml +0 -104
- package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/templates/test-scenario.template.yaml +0 -192
- package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/workflow-specify.xml +0 -387
- package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.css +0 -164
- package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.html +0 -18
- package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.js +0 -430
- package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/demo-data-template.json +0 -63
- package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/page-template.html +0 -465
- package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/work-file-template.yaml +0 -264
- package/lib/bmad-cache/wds/src/workflows/wds-7-design-system/templates/catalog.template.html +0 -363
package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.css
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/* ============================================================================
|
|
2
|
-
PROTOTYPE DEV MODE STYLES
|
|
3
|
-
|
|
4
|
-
Styles for developer/feedback mode that allows copying Object IDs
|
|
5
|
-
|
|
6
|
-
Usage: Include these styles in your prototype HTML or CSS file
|
|
7
|
-
============================================================================ */
|
|
8
|
-
|
|
9
|
-
/* Dev Mode Toggle Button */
|
|
10
|
-
.dev-mode-toggle {
|
|
11
|
-
position: fixed;
|
|
12
|
-
top: 20px;
|
|
13
|
-
right: 20px;
|
|
14
|
-
z-index: 9999;
|
|
15
|
-
background: #fff;
|
|
16
|
-
border: 2px solid #e5e7eb;
|
|
17
|
-
border-radius: 8px;
|
|
18
|
-
padding: 10px 16px;
|
|
19
|
-
display: flex;
|
|
20
|
-
align-items: center;
|
|
21
|
-
gap: 8px;
|
|
22
|
-
cursor: pointer;
|
|
23
|
-
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
24
|
-
transition: all 0.2s;
|
|
25
|
-
font-size: 14px;
|
|
26
|
-
font-weight: 500;
|
|
27
|
-
color: #6b7280;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.dev-mode-toggle:hover {
|
|
31
|
-
background: #f9fafb;
|
|
32
|
-
border-color: #d1d5db;
|
|
33
|
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.dev-mode-toggle.active {
|
|
37
|
-
background: #0066CC;
|
|
38
|
-
border-color: #0066CC;
|
|
39
|
-
color: #fff;
|
|
40
|
-
box-shadow: 0 4px 12px rgba(0, 102, 204, 0.3);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.dev-mode-toggle svg {
|
|
44
|
-
flex-shrink: 0;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/* Dev Mode Active State */
|
|
48
|
-
body.dev-mode-active {
|
|
49
|
-
cursor: help !important; /* Show help cursor to indicate special mode */
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/* Subtle element highlighting on hover (not Shift held) */
|
|
53
|
-
body.dev-mode-active [id]:hover {
|
|
54
|
-
outline: 2px solid #6b7280 !important;
|
|
55
|
-
outline-offset: 2px !important;
|
|
56
|
-
box-shadow: 0 0 0 2px rgba(107, 114, 128, 0.2) !important;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/* Active highlighting when Shift is held (ready to copy) */
|
|
60
|
-
body.dev-mode-active.shift-held {
|
|
61
|
-
cursor: copy !important;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
body.dev-mode-active.shift-held [id]:hover {
|
|
65
|
-
outline: 3px solid #10B981 !important;
|
|
66
|
-
outline-offset: 3px !important;
|
|
67
|
-
box-shadow: 0 0 0 5px rgba(16, 185, 129, 0.4) !important;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/* Dev Mode Tooltip */
|
|
71
|
-
.dev-mode-tooltip {
|
|
72
|
-
position: fixed;
|
|
73
|
-
background: #1F2937;
|
|
74
|
-
color: #fff;
|
|
75
|
-
padding: 8px 12px;
|
|
76
|
-
border-radius: 6px;
|
|
77
|
-
font-size: 13px;
|
|
78
|
-
font-weight: 600;
|
|
79
|
-
font-family: 'Courier New', monospace;
|
|
80
|
-
z-index: 10000;
|
|
81
|
-
pointer-events: none;
|
|
82
|
-
white-space: nowrap;
|
|
83
|
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
|
|
84
|
-
transition: background 0.2s;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.dev-mode-tooltip::before {
|
|
88
|
-
content: '';
|
|
89
|
-
position: absolute;
|
|
90
|
-
top: -4px;
|
|
91
|
-
left: 8px;
|
|
92
|
-
width: 8px;
|
|
93
|
-
height: 8px;
|
|
94
|
-
background: inherit;
|
|
95
|
-
transform: rotate(45deg);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/* Disable only certain interactions when Shift is held in dev mode */
|
|
99
|
-
body.dev-mode-active.shift-held button:not(#dev-mode-toggle),
|
|
100
|
-
body.dev-mode-active.shift-held input,
|
|
101
|
-
body.dev-mode-active.shift-held select,
|
|
102
|
-
body.dev-mode-active.shift-held textarea,
|
|
103
|
-
body.dev-mode-active.shift-held a {
|
|
104
|
-
pointer-events: none !important;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/* But allow the toggle button to work */
|
|
108
|
-
body.dev-mode-active #dev-mode-toggle,
|
|
109
|
-
body.dev-mode-active #dev-mode-toggle * {
|
|
110
|
-
pointer-events: auto !important;
|
|
111
|
-
cursor: pointer !important;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/* Feedback overlay (created dynamically) */
|
|
115
|
-
@keyframes fadeInOut {
|
|
116
|
-
0% {
|
|
117
|
-
opacity: 0;
|
|
118
|
-
transform: translate(-50%, -50%) scale(0.9);
|
|
119
|
-
}
|
|
120
|
-
20% {
|
|
121
|
-
opacity: 1;
|
|
122
|
-
transform: translate(-50%, -50%) scale(1);
|
|
123
|
-
}
|
|
124
|
-
80% {
|
|
125
|
-
opacity: 1;
|
|
126
|
-
transform: translate(-50%, -50%) scale(1);
|
|
127
|
-
}
|
|
128
|
-
100% {
|
|
129
|
-
opacity: 0;
|
|
130
|
-
transform: translate(-50%, -50%) scale(0.9);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/* Responsive: Adjust toggle button on mobile */
|
|
135
|
-
@media (max-width: 768px) {
|
|
136
|
-
.dev-mode-toggle {
|
|
137
|
-
top: 10px;
|
|
138
|
-
right: 10px;
|
|
139
|
-
padding: 8px 12px;
|
|
140
|
-
font-size: 12px;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
.dev-mode-toggle span {
|
|
144
|
-
display: none; /* Hide text on mobile, show only icon */
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
.dev-mode-toggle.active span {
|
|
148
|
-
display: inline; /* Show "ON" status */
|
|
149
|
-
max-width: 60px;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/* Optional: Add visual indicator when Shift is held */
|
|
154
|
-
body.dev-mode-active.shift-held .dev-mode-toggle::after {
|
|
155
|
-
content: '⬆️';
|
|
156
|
-
margin-left: 4px;
|
|
157
|
-
animation: pulse 1s infinite;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
@keyframes pulse {
|
|
161
|
-
0%, 100% { opacity: 1; transform: scale(1); }
|
|
162
|
-
50% { opacity: 0.7; transform: scale(1.1); }
|
|
163
|
-
}
|
|
164
|
-
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<!-- ============================================================================
|
|
2
|
-
PROTOTYPE DEV MODE - HTML SNIPPET
|
|
3
|
-
|
|
4
|
-
Add this HTML to your prototype page (inside <body>, preferably at the top)
|
|
5
|
-
============================================================================ -->
|
|
6
|
-
|
|
7
|
-
<!-- Dev Mode Toggle Button (fixed position, top-right) -->
|
|
8
|
-
<button id="dev-mode-toggle" class="dev-mode-toggle" title="Toggle Dev Mode (Ctrl+E)">
|
|
9
|
-
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
10
|
-
<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path>
|
|
11
|
-
<path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path>
|
|
12
|
-
</svg>
|
|
13
|
-
<span>Dev Mode: OFF</span>
|
|
14
|
-
</button>
|
|
15
|
-
|
|
16
|
-
<!-- Dev Mode Tooltip (shown when hovering over elements in dev mode) -->
|
|
17
|
-
<div id="dev-mode-tooltip" class="dev-mode-tooltip" style="display: none;"></div>
|
|
18
|
-
|
package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.js
DELETED
|
@@ -1,430 +0,0 @@
|
|
|
1
|
-
/* eslint-disable n/no-unsupported-features/node-builtins */
|
|
2
|
-
/* global document, window */
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* PROTOTYPE DEV MODE
|
|
6
|
-
*
|
|
7
|
-
* Developer/feedback mode that allows users to easily copy Object IDs to clipboard
|
|
8
|
-
* for providing precise feedback on prototype elements.
|
|
9
|
-
*
|
|
10
|
-
* Features:
|
|
11
|
-
* - Toggle dev mode with button or Ctrl+E
|
|
12
|
-
* - Prototype works NORMALLY when dev mode is on
|
|
13
|
-
* - Hold Shift + Click any element to copy its Object ID
|
|
14
|
-
* - Visual highlights show what will be copied (green when Shift is held)
|
|
15
|
-
* - Tooltip shows Object ID on hover
|
|
16
|
-
* - Success feedback when copied
|
|
17
|
-
*
|
|
18
|
-
* Usage:
|
|
19
|
-
* 1. Include this script in your prototype HTML
|
|
20
|
-
* 2. Add the HTML toggle button and tooltip (see HTML template)
|
|
21
|
-
* 3. Add the CSS styles (see CSS template)
|
|
22
|
-
* 4. Call initDevMode() on page load
|
|
23
|
-
*
|
|
24
|
-
* How it works:
|
|
25
|
-
* - Activate dev mode (Ctrl+E or click button)
|
|
26
|
-
* - Hover over elements to see their Object IDs (gray outline)
|
|
27
|
-
* - Hold Shift key (outline turns green)
|
|
28
|
-
* - Click while holding Shift to copy Object ID
|
|
29
|
-
* - Prototype works normally without Shift held
|
|
30
|
-
* - **Shift is disabled when typing in form fields** (input, textarea, etc.)
|
|
31
|
-
*/
|
|
32
|
-
|
|
33
|
-
// ============================================================================
|
|
34
|
-
// DEV MODE STATE
|
|
35
|
-
// ============================================================================
|
|
36
|
-
|
|
37
|
-
let devModeActive = false;
|
|
38
|
-
let shiftKeyPressed = false;
|
|
39
|
-
let currentHighlightedElement = null;
|
|
40
|
-
|
|
41
|
-
// ============================================================================
|
|
42
|
-
// INITIALIZATION
|
|
43
|
-
// ============================================================================
|
|
44
|
-
|
|
45
|
-
function initDevMode() {
|
|
46
|
-
const toggleButton = document.querySelector('#dev-mode-toggle');
|
|
47
|
-
const tooltip = document.querySelector('#dev-mode-tooltip');
|
|
48
|
-
|
|
49
|
-
if (!toggleButton || !tooltip) {
|
|
50
|
-
console.warn('⚠️ Dev Mode: Toggle button or tooltip not found');
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Check if user agent supports clipboard API
|
|
55
|
-
if (typeof navigator !== 'undefined' && navigator.clipboard) {
|
|
56
|
-
// Clipboard API available
|
|
57
|
-
} else {
|
|
58
|
-
console.warn('⚠️ Clipboard API not supported in this browser');
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
setupKeyboardShortcuts();
|
|
63
|
-
setupToggleButton(toggleButton, tooltip);
|
|
64
|
-
setupHoverHighlight(tooltip);
|
|
65
|
-
setupClickCopy();
|
|
66
|
-
|
|
67
|
-
console.log('%c💡 Dev Mode available: Press Ctrl+E or click the Dev Mode button', 'color: #0066CC; font-weight: bold;');
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// ============================================================================
|
|
71
|
-
// KEYBOARD SHORTCUTS
|
|
72
|
-
// ============================================================================
|
|
73
|
-
|
|
74
|
-
function setupKeyboardShortcuts() {
|
|
75
|
-
// Track Shift key for container selection
|
|
76
|
-
document.addEventListener('keydown', (e) => {
|
|
77
|
-
if (e.key === 'Shift') {
|
|
78
|
-
// Don't activate if user is typing in a form field
|
|
79
|
-
if (isTypingInField()) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
shiftKeyPressed = true;
|
|
84
|
-
document.body.classList.add('shift-held');
|
|
85
|
-
if (devModeActive) {
|
|
86
|
-
console.log('%c⬆️ Shift held: Click any element to copy its Object ID', 'color: #10B981; font-weight: bold;');
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Ctrl+E toggle
|
|
91
|
-
if (e.ctrlKey && e.key === 'e') {
|
|
92
|
-
e.preventDefault();
|
|
93
|
-
document.querySelector('#dev-mode-toggle')?.click();
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
document.addEventListener('keyup', (e) => {
|
|
98
|
-
if (e.key === 'Shift') {
|
|
99
|
-
shiftKeyPressed = false;
|
|
100
|
-
document.body.classList.remove('shift-held');
|
|
101
|
-
if (devModeActive) {
|
|
102
|
-
console.log('%c⬇️ Shift released: Prototype works normally (hold Shift to copy)', 'color: #6b7280;');
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// ============================================================================
|
|
109
|
-
// TOGGLE BUTTON
|
|
110
|
-
// ============================================================================
|
|
111
|
-
|
|
112
|
-
function setupToggleButton(toggleButton, tooltip) {
|
|
113
|
-
toggleButton.addEventListener('click', function (e) {
|
|
114
|
-
e.stopPropagation();
|
|
115
|
-
if (typeof globalThis !== 'undefined') {
|
|
116
|
-
globalThis.devModeActive = true;
|
|
117
|
-
} else if (globalThis.window !== undefined) {
|
|
118
|
-
globalThis.devModeActive = true;
|
|
119
|
-
}
|
|
120
|
-
devModeActive = !devModeActive;
|
|
121
|
-
|
|
122
|
-
// Update UI
|
|
123
|
-
document.body.classList.toggle('dev-mode-active', devModeActive);
|
|
124
|
-
toggleButton.classList.toggle('active', devModeActive);
|
|
125
|
-
|
|
126
|
-
const statusText = toggleButton.querySelector('span');
|
|
127
|
-
if (statusText) {
|
|
128
|
-
statusText.textContent = devModeActive ? 'Dev Mode: ON' : 'Dev Mode: OFF';
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
// Log status
|
|
132
|
-
console.log(`🔧 Dev Mode: ${devModeActive ? 'ACTIVATED' : 'DEACTIVATED'}`);
|
|
133
|
-
|
|
134
|
-
if (devModeActive) {
|
|
135
|
-
console.log('%c🔧 DEV MODE ACTIVE', 'color: #0066CC; font-size: 16px; font-weight: bold;');
|
|
136
|
-
console.log('%c⚠️ Hold SHIFT + Click any element to copy its Object ID', 'color: #FFB800; font-size: 14px; font-weight: bold;');
|
|
137
|
-
console.log('%cWithout Shift: Prototype works normally', 'color: #6b7280;');
|
|
138
|
-
console.log('%cPress Ctrl+E to toggle Dev Mode', 'color: #6b7280;');
|
|
139
|
-
} else {
|
|
140
|
-
tooltip.style.display = 'none';
|
|
141
|
-
if (currentHighlightedElement) {
|
|
142
|
-
clearHighlight();
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// ============================================================================
|
|
149
|
-
// HOVER HIGHLIGHT
|
|
150
|
-
// ============================================================================
|
|
151
|
-
|
|
152
|
-
function setupHoverHighlight(tooltip) {
|
|
153
|
-
// Show tooltip and highlight on hover
|
|
154
|
-
document.addEventListener('mouseover', function (e) {
|
|
155
|
-
if (!devModeActive) return;
|
|
156
|
-
|
|
157
|
-
// Don't highlight if user is typing in a field
|
|
158
|
-
if (isTypingInField()) {
|
|
159
|
-
tooltip.style.display = 'none';
|
|
160
|
-
clearHighlight();
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
clearHighlight();
|
|
165
|
-
|
|
166
|
-
let element = findElementWithId(e.target);
|
|
167
|
-
|
|
168
|
-
if (!element || !element.id || isSystemElement(element.id)) {
|
|
169
|
-
tooltip.style.display = 'none';
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// Highlight element
|
|
174
|
-
highlightElement(element, shiftKeyPressed);
|
|
175
|
-
currentHighlightedElement = element;
|
|
176
|
-
|
|
177
|
-
// Show tooltip
|
|
178
|
-
const prefix = shiftKeyPressed ? '✓ Click to Copy: ' : '⬆️ Hold Shift + Click: ';
|
|
179
|
-
tooltip.textContent = prefix + element.id;
|
|
180
|
-
tooltip.style.display = 'block';
|
|
181
|
-
tooltip.style.background = shiftKeyPressed ? '#10B981' : '#6b7280';
|
|
182
|
-
tooltip.style.color = '#fff';
|
|
183
|
-
|
|
184
|
-
updateTooltipPosition(e, tooltip);
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
// Update tooltip position on mouse move
|
|
188
|
-
document.addEventListener('mousemove', function (e) {
|
|
189
|
-
if (devModeActive && tooltip.style.display === 'block') {
|
|
190
|
-
updateTooltipPosition(e, tooltip);
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
// Clear highlight on mouse out
|
|
195
|
-
document.addEventListener('mouseout', function (e) {
|
|
196
|
-
if (!devModeActive) return;
|
|
197
|
-
if (e.target.id) {
|
|
198
|
-
tooltip.style.display = 'none';
|
|
199
|
-
clearHighlight();
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// ============================================================================
|
|
205
|
-
// CLICK TO COPY
|
|
206
|
-
// ============================================================================
|
|
207
|
-
|
|
208
|
-
function setupClickCopy() {
|
|
209
|
-
// Use capture phase to intercept clicks with Shift
|
|
210
|
-
document.addEventListener(
|
|
211
|
-
'click',
|
|
212
|
-
function (e) {
|
|
213
|
-
if (!devModeActive) return;
|
|
214
|
-
|
|
215
|
-
// Allow toggle button to work normally
|
|
216
|
-
if (isToggleButton(e.target)) return;
|
|
217
|
-
|
|
218
|
-
// ONLY copy if Shift is held
|
|
219
|
-
if (!shiftKeyPressed) {
|
|
220
|
-
// Let prototype work normally without Shift
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
// Don't intercept if user is clicking in/around a form field
|
|
225
|
-
if (isTypingInField() || isFormElement(e.target)) {
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
// Shift is held and not in a form field - intercept and copy
|
|
230
|
-
e.preventDefault();
|
|
231
|
-
e.stopPropagation();
|
|
232
|
-
e.stopImmediatePropagation();
|
|
233
|
-
|
|
234
|
-
let element = findElementWithId(e.target);
|
|
235
|
-
|
|
236
|
-
if (!element || !element.id || isSystemElement(element.id)) {
|
|
237
|
-
console.log('❌ No Object ID found');
|
|
238
|
-
return false;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
// Copy to clipboard
|
|
242
|
-
const objectId = element.id;
|
|
243
|
-
copyToClipboard(objectId);
|
|
244
|
-
|
|
245
|
-
// Show feedback
|
|
246
|
-
showCopyFeedback(element, objectId);
|
|
247
|
-
|
|
248
|
-
return false;
|
|
249
|
-
},
|
|
250
|
-
true,
|
|
251
|
-
); // Capture phase
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
// ============================================================================
|
|
255
|
-
// HELPER FUNCTIONS
|
|
256
|
-
// ============================================================================
|
|
257
|
-
|
|
258
|
-
function findElementWithId(element) {
|
|
259
|
-
let current = element;
|
|
260
|
-
let attempts = 0;
|
|
261
|
-
|
|
262
|
-
while (current && !current.id && attempts < 10) {
|
|
263
|
-
current = current.parentElement;
|
|
264
|
-
attempts++;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
return current;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
function isSystemElement(id) {
|
|
271
|
-
const systemIds = ['app', 'dev-mode-toggle', 'dev-mode-tooltip'];
|
|
272
|
-
return systemIds.includes(id);
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
function isToggleButton(element) {
|
|
276
|
-
return element.id === 'dev-mode-toggle' || element.closest('#dev-mode-toggle') || element.classList.contains('dev-mode-toggle');
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
function isTypingInField() {
|
|
280
|
-
const activeElement = document.activeElement;
|
|
281
|
-
if (!activeElement) return false;
|
|
282
|
-
|
|
283
|
-
const tagName = activeElement.tagName.toLowerCase();
|
|
284
|
-
const isEditable = activeElement.isContentEditable;
|
|
285
|
-
|
|
286
|
-
// Check if user is currently typing in a form field
|
|
287
|
-
return tagName === 'input' || tagName === 'textarea' || tagName === 'select' || isEditable;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
function isFormElement(element) {
|
|
291
|
-
if (!element) return false;
|
|
292
|
-
|
|
293
|
-
const tagName = element.tagName.toLowerCase();
|
|
294
|
-
const isEditable = element.isContentEditable;
|
|
295
|
-
|
|
296
|
-
// Check if the clicked element is a form element
|
|
297
|
-
return tagName === 'input' || tagName === 'textarea' || tagName === 'select' || isEditable;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
function highlightElement(element, isShiftHeld) {
|
|
301
|
-
const color = isShiftHeld ? '#10B981' : '#6b7280';
|
|
302
|
-
const width = isShiftHeld ? '3px' : '2px';
|
|
303
|
-
const offset = isShiftHeld ? '3px' : '2px';
|
|
304
|
-
const shadowSpread = isShiftHeld ? '5px' : '2px';
|
|
305
|
-
const shadowOpacity = isShiftHeld ? '0.4' : '0.2';
|
|
306
|
-
|
|
307
|
-
element.style.outline = `${width} solid ${color}`;
|
|
308
|
-
element.style.outlineOffset = offset;
|
|
309
|
-
element.style.boxShadow = `0 0 0 ${shadowSpread} rgba(${isShiftHeld ? '16, 185, 129' : '107, 114, 128'}, ${shadowOpacity})`;
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
function clearHighlight() {
|
|
313
|
-
if (currentHighlightedElement) {
|
|
314
|
-
currentHighlightedElement.style.outline = '';
|
|
315
|
-
currentHighlightedElement.style.boxShadow = '';
|
|
316
|
-
currentHighlightedElement = null;
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
function updateTooltipPosition(e, tooltip) {
|
|
321
|
-
const offset = 15;
|
|
322
|
-
let x = e.clientX + offset;
|
|
323
|
-
let y = e.clientY + offset;
|
|
324
|
-
|
|
325
|
-
// Keep tooltip on screen
|
|
326
|
-
const rect = tooltip.getBoundingClientRect();
|
|
327
|
-
if (x + rect.width > window.innerWidth) {
|
|
328
|
-
x = e.clientX - rect.width - offset;
|
|
329
|
-
}
|
|
330
|
-
if (y + rect.height > window.innerHeight) {
|
|
331
|
-
y = e.clientY - rect.height - offset;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
tooltip.style.left = x + 'px';
|
|
335
|
-
tooltip.style.top = y + 'px';
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
function copyToClipboard(text) {
|
|
339
|
-
if (typeof navigator !== 'undefined' && navigator.clipboard && navigator.clipboard.writeText) {
|
|
340
|
-
navigator.clipboard
|
|
341
|
-
.writeText(text)
|
|
342
|
-
.then(() => {
|
|
343
|
-
console.log(`📋 Copied to clipboard: ${text}`);
|
|
344
|
-
})
|
|
345
|
-
.catch((error) => {
|
|
346
|
-
console.error('Dev Mode error:', error);
|
|
347
|
-
fallbackCopy(text);
|
|
348
|
-
});
|
|
349
|
-
} else {
|
|
350
|
-
fallbackCopy(text);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
function fallbackCopy(text) {
|
|
355
|
-
const textarea = document.createElement('textarea');
|
|
356
|
-
textarea.value = text;
|
|
357
|
-
textarea.style.position = 'fixed';
|
|
358
|
-
textarea.style.left = '-999999px';
|
|
359
|
-
document.body.append(textarea);
|
|
360
|
-
textarea.focus();
|
|
361
|
-
textarea.select();
|
|
362
|
-
|
|
363
|
-
try {
|
|
364
|
-
document.execCommand('copy');
|
|
365
|
-
console.log(`📋 Copied (fallback): ${text}`);
|
|
366
|
-
} catch (error) {
|
|
367
|
-
console.error('Dev Mode error:', error);
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
textarea.remove();
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
function showCopyFeedback(element, objectId) {
|
|
374
|
-
// Create feedback overlay
|
|
375
|
-
const feedback = document.createElement('div');
|
|
376
|
-
feedback.textContent = '✓ Copied: ' + objectId;
|
|
377
|
-
feedback.style.cssText = `
|
|
378
|
-
position: fixed;
|
|
379
|
-
top: 50%;
|
|
380
|
-
left: 50%;
|
|
381
|
-
transform: translate(-50%, -50%);
|
|
382
|
-
background: #10B981;
|
|
383
|
-
color: #fff;
|
|
384
|
-
padding: 16px 32px;
|
|
385
|
-
border-radius: 8px;
|
|
386
|
-
font-size: 16px;
|
|
387
|
-
font-weight: 600;
|
|
388
|
-
z-index: 100000;
|
|
389
|
-
box-shadow: 0 10px 25px rgba(0,0,0,0.3);
|
|
390
|
-
animation: fadeInOut 1.5s ease-in-out;
|
|
391
|
-
pointer-events: none;
|
|
392
|
-
`;
|
|
393
|
-
|
|
394
|
-
document.body.append(feedback);
|
|
395
|
-
|
|
396
|
-
setTimeout(() => {
|
|
397
|
-
feedback.remove();
|
|
398
|
-
}, 1500);
|
|
399
|
-
|
|
400
|
-
// Flash element
|
|
401
|
-
const originalOutline = element.style.outline;
|
|
402
|
-
element.style.outline = '3px solid #10B981';
|
|
403
|
-
setTimeout(() => {
|
|
404
|
-
element.style.outline = originalOutline;
|
|
405
|
-
}, 300);
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
// Add CSS animation
|
|
409
|
-
const style = document.createElement('style');
|
|
410
|
-
style.textContent = `
|
|
411
|
-
@keyframes fadeInOut {
|
|
412
|
-
0% { opacity: 0; transform: translate(-50%, -50%) scale(0.9); }
|
|
413
|
-
20% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
|
|
414
|
-
80% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
|
|
415
|
-
100% { opacity: 0; transform: translate(-50%, -50%) scale(0.9); }
|
|
416
|
-
}
|
|
417
|
-
`;
|
|
418
|
-
document.head.append(style);
|
|
419
|
-
|
|
420
|
-
// ============================================================================
|
|
421
|
-
// EXPORT
|
|
422
|
-
// ============================================================================
|
|
423
|
-
|
|
424
|
-
// Make available globally
|
|
425
|
-
globalThis.initDevMode = initDevMode;
|
|
426
|
-
|
|
427
|
-
// Export for use in other scripts
|
|
428
|
-
if (typeof globalThis !== 'undefined' && globalThis.exports) {
|
|
429
|
-
globalThis.exports = { initDevMode };
|
|
430
|
-
}
|
package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/demo-data-template.json
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"user": {
|
|
3
|
-
"id": "demo-user-001",
|
|
4
|
-
"firstName": "[First Name]",
|
|
5
|
-
"lastName": "[Last Name]",
|
|
6
|
-
"email": "[email@example.com]",
|
|
7
|
-
"phoneNumber": "[+1234567890]",
|
|
8
|
-
"picture": "",
|
|
9
|
-
"role": "owner",
|
|
10
|
-
"createdAt": "2024-01-01T00:00:00.000Z",
|
|
11
|
-
"updatedAt": "2024-01-01T00:00:00.000Z"
|
|
12
|
-
},
|
|
13
|
-
"family": {
|
|
14
|
-
"id": "demo-family-001",
|
|
15
|
-
"name": "[Family Name]",
|
|
16
|
-
"description": "[Brief family description]",
|
|
17
|
-
"location": "[City, Country]",
|
|
18
|
-
"picture": "",
|
|
19
|
-
"ownerId": "demo-user-001",
|
|
20
|
-
"createdAt": "2024-01-01T00:00:00.000Z",
|
|
21
|
-
"updatedAt": "2024-01-01T00:00:00.000Z"
|
|
22
|
-
},
|
|
23
|
-
"members": [
|
|
24
|
-
{
|
|
25
|
-
"id": "demo-member-001",
|
|
26
|
-
"familyId": "demo-family-001",
|
|
27
|
-
"userId": "demo-user-001",
|
|
28
|
-
"firstName": "[Member 1 First Name]",
|
|
29
|
-
"lastName": "[Member 1 Last Name]",
|
|
30
|
-
"email": "[member1@example.com]",
|
|
31
|
-
"role": "owner",
|
|
32
|
-
"picture": "",
|
|
33
|
-
"createdAt": "2024-01-01T00:00:00.000Z"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"id": "demo-member-002",
|
|
37
|
-
"familyId": "demo-family-001",
|
|
38
|
-
"userId": "demo-user-002",
|
|
39
|
-
"firstName": "[Member 2 First Name]",
|
|
40
|
-
"lastName": "[Member 2 Last Name]",
|
|
41
|
-
"email": "[member2@example.com]",
|
|
42
|
-
"role": "co-owner",
|
|
43
|
-
"picture": "",
|
|
44
|
-
"createdAt": "2024-01-02T00:00:00.000Z"
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
"dogs": [
|
|
48
|
-
{
|
|
49
|
-
"id": "demo-dog-001",
|
|
50
|
-
"familyId": "demo-family-001",
|
|
51
|
-
"name": "[Dog Name]",
|
|
52
|
-
"breed": "[Dog Breed]",
|
|
53
|
-
"gender": "male",
|
|
54
|
-
"birthDate": "2020-05-15",
|
|
55
|
-
"color": "[Color]",
|
|
56
|
-
"specialNeeds": "[Any special needs or notes]",
|
|
57
|
-
"picture": "",
|
|
58
|
-
"createdAt": "2024-01-01T00:00:00.000Z",
|
|
59
|
-
"updatedAt": "2024-01-01T00:00:00.000Z"
|
|
60
|
-
}
|
|
61
|
-
],
|
|
62
|
-
"comment": "This is demo data that loads automatically when prototype is opened for the first time. Edit this file to change the demo data. All fields with empty strings ('') are optional."
|
|
63
|
-
}
|