@bendyline/gilde 0.2.4 → 0.2.6
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 +11 -0
- package/authoring/LICENSE-HankenGrotesk-OFL-1.1.txt +94 -0
- package/authoring/LICENSE-PTSerif-OFL-1.1.txt +94 -0
- package/authoring/knowledge-keywords/README.md +100 -0
- package/authoring/knowledge-keywords/rules.json +850 -0
- package/authoring/page-demo-bootstrap.js +209 -0
- package/authoring/page-demo-injector.mjs +7 -0
- package/authoring/page-demo-typography.css +88 -0
- package/data/craftbook-templates/a1/a11y-audit/art.json +13 -8
- package/data/craftbook-templates/a1/a11y-audit/logo.webp +0 -0
- package/data/craftbook-templates/ab/ab-test-readout/art.json +13 -9
- package/data/craftbook-templates/ab/ab-test-readout/logo.webp +0 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/art.json +14 -9
- package/data/craftbook-templates/ac/accessibility-retrofit/logo.webp +0 -0
- package/data/craftbook-templates/ad/ad-variations/art.json +14 -10
- package/data/craftbook-templates/ad/ad-variations/logo.webp +0 -0
- package/data/craftbook-templates/al/album-curate/art.json +13 -9
- package/data/craftbook-templates/al/album-curate/logo.webp +0 -0
- package/data/craftbook-templates/al/alert-rules/art.json +13 -8
- package/data/craftbook-templates/al/alert-rules/logo.webp +0 -0
- package/data/craftbook-templates/al/alt-text-pass/art.json +13 -8
- package/data/craftbook-templates/al/alt-text-pass/logo.webp +0 -0
- package/data/craftbook-templates/an/anniversary-cut/art.json +13 -9
- package/data/craftbook-templates/an/anniversary-cut/logo.webp +0 -0
- package/data/craftbook-templates/an/annotated-bibliography/art.json +14 -10
- package/data/craftbook-templates/an/annotated-bibliography/logo.webp +0 -0
- package/data/craftbook-templates/an/annual-document-review/art.json +13 -9
- package/data/craftbook-templates/an/annual-document-review/logo.webp +0 -0
- package/data/craftbook-templates/an/anomaly-scan/art.json +13 -8
- package/data/craftbook-templates/an/anomaly-scan/logo.webp +0 -0
- package/data/craftbook-templates/ap/api-contract-review/art.json +13 -9
- package/data/craftbook-templates/ap/api-contract-review/logo.webp +0 -0
- package/data/craftbook-templates/ap/apply-review-findings/art.json +14 -9
- package/data/craftbook-templates/ap/apply-review-findings/logo.webp +0 -0
- package/data/craftbook-templates/ar/artifact-integrity-review/art.json +13 -9
- package/data/craftbook-templates/ar/artifact-integrity-review/logo.webp +0 -0
- package/data/craftbook-templates/au/audio-ad-spot/art.json +13 -9
- package/data/craftbook-templates/au/audio-ad-spot/logo.webp +0 -0
- package/data/craftbook-templates/au/audio-highlight-reel/art.json +13 -9
- package/data/craftbook-templates/au/audio-highlight-reel/logo.webp +0 -0
- package/data/craftbook-templates/au/audiobook-master-pack/art.json +14 -10
- package/data/craftbook-templates/au/audiobook-master-pack/logo.webp +0 -0
- package/data/craftbook-templates/au/auth-flow/art.json +13 -8
- package/data/craftbook-templates/au/auth-flow/logo.webp +0 -0
- package/data/craftbook-templates/au/automation-recipe/art.json +13 -9
- package/data/craftbook-templates/au/automation-recipe/logo.webp +0 -0
- package/data/craftbook-templates/ba/backup-routine/art.json +13 -9
- package/data/craftbook-templates/ba/backup-routine/logo.webp +0 -0
- package/data/craftbook-templates/bl/blog-post/art.json +14 -10
- package/data/craftbook-templates/bl/blog-post/logo.webp +0 -0
- package/data/craftbook-templates/bo/board-deck/art.json +13 -9
- package/data/craftbook-templates/bo/board-deck/logo.webp +0 -0
- package/data/craftbook-templates/bo/board-game-web/art.json +13 -9
- package/data/craftbook-templates/bo/board-game-web/logo.webp +0 -0
- package/data/craftbook-templates/bo/booking-automation/art.json +13 -8
- package/data/craftbook-templates/bo/booking-automation/logo.webp +0 -0
- package/data/craftbook-templates/br/branding-website/art.json +13 -9
- package/data/craftbook-templates/br/branding-website/logo.webp +0 -0
- package/data/craftbook-templates/br/broadcast-announcement/art.json +13 -9
- package/data/craftbook-templates/br/broadcast-announcement/logo.webp +0 -0
- package/data/craftbook-templates/br/browser-qa-audit/art.json +13 -8
- package/data/craftbook-templates/br/browser-qa-audit/logo.webp +0 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/art.json +14 -9
- package/data/craftbook-templates/bu/bug-fix-tdd/logo.webp +0 -0
- package/data/craftbook-templates/bu/build-loop/art.json +13 -9
- package/data/craftbook-templates/bu/build-loop/logo.webp +0 -0
- package/data/craftbook-templates/ca/calendar-brief/art.json +13 -9
- package/data/craftbook-templates/ca/calendar-brief/logo.webp +0 -0
- package/data/craftbook-templates/ca/canvas-generative-art/art.json +13 -9
- package/data/craftbook-templates/ca/canvas-generative-art/logo.webp +0 -0
- package/data/craftbook-templates/ca/careful-mode/art.json +14 -10
- package/data/craftbook-templates/ca/careful-mode/logo.webp +0 -0
- package/data/craftbook-templates/ca/case-study/art.json +14 -10
- package/data/craftbook-templates/ca/case-study/logo.webp +0 -0
- package/data/craftbook-templates/ca/case-study-writeup/art.json +13 -9
- package/data/craftbook-templates/ca/case-study-writeup/logo.webp +0 -0
- package/data/craftbook-templates/ch/changelog-cut/art.json +13 -8
- package/data/craftbook-templates/ch/changelog-cut/logo.webp +0 -0
- package/data/craftbook-templates/ch/changelog-writeup/art.json +14 -10
- package/data/craftbook-templates/ch/changelog-writeup/logo.webp +0 -0
- package/data/craftbook-templates/ch/chapter-narration-run/art.json +13 -9
- package/data/craftbook-templates/ch/chapter-narration-run/logo.webp +0 -0
- package/data/craftbook-templates/ch/chapter-weave/art.json +13 -9
- package/data/craftbook-templates/ch/chapter-weave/logo.webp +0 -0
- package/data/craftbook-templates/ch/character-sheet/art.json +13 -9
- package/data/craftbook-templates/ch/character-sheet/logo.webp +0 -0
- package/data/craftbook-templates/ch/character-sheet/versions/1.0.4/craftbook.json +213 -0
- package/data/craftbook-templates/ch/character-sheet/versions/1.0.4/test.json +143 -0
- package/data/craftbook-templates/ch/character-turnaround/art.json +13 -9
- package/data/craftbook-templates/ch/character-turnaround/logo.webp +0 -0
- package/data/craftbook-templates/ch/character-turnaround/versions/1.0.4/craftbook.json +254 -0
- package/data/craftbook-templates/ch/character-turnaround/versions/1.0.4/test.json +189 -0
- package/data/craftbook-templates/ch/chart-pack/art.json +13 -9
- package/data/craftbook-templates/ch/chart-pack/logo.webp +0 -0
- package/data/craftbook-templates/ch/chrome-extension/art.json +13 -9
- package/data/craftbook-templates/ch/chrome-extension/logo.webp +0 -0
- package/data/craftbook-templates/ci/ci-pipeline/art.json +14 -9
- package/data/craftbook-templates/ci/ci-pipeline/logo.webp +0 -0
- package/data/craftbook-templates/ci/citation-audit/art.json +14 -9
- package/data/craftbook-templates/ci/citation-audit/logo.webp +0 -0
- package/data/craftbook-templates/cl/cli-tool/art.json +13 -9
- package/data/craftbook-templates/cl/cli-tool/logo.webp +0 -0
- package/data/craftbook-templates/co/code-review/art.json +14 -9
- package/data/craftbook-templates/co/code-review/logo.webp +0 -0
- package/data/craftbook-templates/co/codebase-refactoring-review/art.json +13 -8
- package/data/craftbook-templates/co/codebase-refactoring-review/logo.webp +0 -0
- package/data/craftbook-templates/co/codebase-ux-review/art.json +13 -9
- package/data/craftbook-templates/co/codebase-ux-review/logo.webp +0 -0
- package/data/craftbook-templates/co/codemod-sweep/art.json +14 -9
- package/data/craftbook-templates/co/codemod-sweep/logo.webp +0 -0
- package/data/craftbook-templates/co/cohort-analysis/art.json +13 -9
- package/data/craftbook-templates/co/cohort-analysis/logo.webp +0 -0
- package/data/craftbook-templates/co/company-research-brief/art.json +13 -9
- package/data/craftbook-templates/co/company-research-brief/logo.webp +0 -0
- package/data/craftbook-templates/co/comparison-matrix/art.json +14 -10
- package/data/craftbook-templates/co/comparison-matrix/logo.webp +0 -0
- package/data/craftbook-templates/co/compat-check/art.json +13 -9
- package/data/craftbook-templates/co/compat-check/logo.webp +0 -0
- package/data/craftbook-templates/co/competitive-analysis/art.json +14 -10
- package/data/craftbook-templates/co/competitive-analysis/logo.webp +0 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/art.json +14 -9
- package/data/craftbook-templates/co/comprehensive-codebase-review/logo.webp +0 -0
- package/data/craftbook-templates/co/config-scaffold/art.json +13 -9
- package/data/craftbook-templates/co/config-scaffold/logo.webp +0 -0
- package/data/craftbook-templates/co/content-accuracy-review/art.json +13 -8
- package/data/craftbook-templates/co/content-accuracy-review/logo.webp +0 -0
- package/data/craftbook-templates/co/content-deck/art.json +13 -9
- package/data/craftbook-templates/co/content-deck/logo.webp +0 -0
- package/data/craftbook-templates/co/contract-template/art.json +13 -8
- package/data/craftbook-templates/co/contract-template/logo.webp +0 -0
- package/data/craftbook-templates/co/cookbook-layout/art.json +13 -9
- package/data/craftbook-templates/co/cookbook-layout/logo.webp +0 -0
- package/data/craftbook-templates/co/copy-review/art.json +13 -9
- package/data/craftbook-templates/co/copy-review/logo.webp +0 -0
- package/data/craftbook-templates/co/corpus-email-digest/art.json +13 -9
- package/data/craftbook-templates/co/corpus-email-digest/logo.webp +0 -0
- package/data/craftbook-templates/co/corpus-synthesis/art.json +14 -10
- package/data/craftbook-templates/co/corpus-synthesis/logo.webp +0 -0
- package/data/craftbook-templates/co/cover-letter/art.json +14 -10
- package/data/craftbook-templates/co/cover-letter/logo.webp +0 -0
- package/data/craftbook-templates/cr/crm-update-batch/art.json +13 -8
- package/data/craftbook-templates/cr/crm-update-batch/logo.webp +0 -0
- package/data/craftbook-templates/cr/cron-job/art.json +13 -9
- package/data/craftbook-templates/cr/cron-job/logo.webp +0 -0
- package/data/craftbook-templates/cr/crossword-forge/art.json +13 -9
- package/data/craftbook-templates/cr/crossword-forge/logo.webp +0 -0
- package/data/craftbook-templates/cs/csv-transformer/art.json +13 -9
- package/data/craftbook-templates/cs/csv-transformer/logo.webp +0 -0
- package/data/craftbook-templates/da/dashboard-spec/art.json +13 -9
- package/data/craftbook-templates/da/dashboard-spec/logo.webp +0 -0
- package/data/craftbook-templates/da/data-dictionary/art.json +13 -9
- package/data/craftbook-templates/da/data-dictionary/logo.webp +0 -0
- package/data/craftbook-templates/da/data-export-migrate/art.json +13 -9
- package/data/craftbook-templates/da/data-export-migrate/logo.webp +0 -0
- package/data/craftbook-templates/da/data-join-merge/art.json +13 -9
- package/data/craftbook-templates/da/data-join-merge/logo.webp +0 -0
- package/data/craftbook-templates/da/data-pipeline-etl/art.json +13 -8
- package/data/craftbook-templates/da/data-pipeline-etl/logo.webp +0 -0
- package/data/craftbook-templates/da/data-quality-audit/art.json +13 -8
- package/data/craftbook-templates/da/data-quality-audit/logo.webp +0 -0
- package/data/craftbook-templates/da/data-to-report/art.json +13 -9
- package/data/craftbook-templates/da/data-to-report/logo.webp +0 -0
- package/data/craftbook-templates/da/data-viz-page/art.json +13 -9
- package/data/craftbook-templates/da/data-viz-page/logo.webp +0 -0
- package/data/craftbook-templates/da/dataset-clean/art.json +13 -9
- package/data/craftbook-templates/da/dataset-clean/logo.webp +0 -0
- package/data/craftbook-templates/db/db-index-tuning/art.json +13 -9
- package/data/craftbook-templates/db/db-index-tuning/logo.webp +0 -0
- package/data/craftbook-templates/de/deep-security-review/art.json +13 -8
- package/data/craftbook-templates/de/deep-security-review/logo.webp +0 -0
- package/data/craftbook-templates/de/dependency-audit/art.json +13 -8
- package/data/craftbook-templates/de/dependency-audit/logo.webp +0 -0
- package/data/craftbook-templates/de/dependency-upgrade/art.json +14 -9
- package/data/craftbook-templates/de/dependency-upgrade/logo.webp +0 -0
- package/data/craftbook-templates/de/deploy-checklist/art.json +14 -10
- package/data/craftbook-templates/de/deploy-checklist/logo.webp +0 -0
- package/data/craftbook-templates/de/design-review/art.json +13 -9
- package/data/craftbook-templates/de/design-review/logo.webp +0 -0
- package/data/craftbook-templates/de/design-system-consultation/art.json +13 -9
- package/data/craftbook-templates/de/design-system-consultation/logo.webp +0 -0
- package/data/craftbook-templates/di/diagram-from-text/art.json +13 -9
- package/data/craftbook-templates/di/diagram-from-text/logo.webp +0 -0
- package/data/craftbook-templates/di/digest-from-feeds/art.json +13 -9
- package/data/craftbook-templates/di/digest-from-feeds/logo.webp +0 -0
- package/data/craftbook-templates/do/doc-intake-pipeline/art.json +13 -9
- package/data/craftbook-templates/do/doc-intake-pipeline/logo.webp +0 -0
- package/data/craftbook-templates/do/doc-rewrite/art.json +14 -10
- package/data/craftbook-templates/do/doc-rewrite/logo.webp +0 -0
- package/data/craftbook-templates/do/dockerize-app/art.json +13 -8
- package/data/craftbook-templates/do/dockerize-app/logo.webp +0 -0
- package/data/craftbook-templates/do/docs-site/art.json +13 -9
- package/data/craftbook-templates/do/docs-site/logo.webp +0 -0
- package/data/craftbook-templates/do/documentation-drift-review/art.json +13 -9
- package/data/craftbook-templates/do/documentation-drift-review/logo.webp +0 -0
- package/data/craftbook-templates/dr/draft-social-post/art.json +17 -0
- package/data/craftbook-templates/dr/draft-social-post/logo.webp +0 -0
- package/data/craftbook-templates/dr/drive-wrap-up/art.json +13 -9
- package/data/craftbook-templates/dr/drive-wrap-up/logo.webp +0 -0
- package/data/craftbook-templates/du/due-diligence-brief/art.json +14 -10
- package/data/craftbook-templates/du/due-diligence-brief/logo.webp +0 -0
- package/data/craftbook-templates/eb/ebook-compile/art.json +13 -9
- package/data/craftbook-templates/eb/ebook-compile/logo.webp +0 -0
- package/data/craftbook-templates/ed/edit-notes/art.json +13 -9
- package/data/craftbook-templates/ed/edit-notes/logo.webp +0 -0
- package/data/craftbook-templates/em/email-sequence/art.json +14 -10
- package/data/craftbook-templates/em/email-sequence/logo.webp +0 -0
- package/data/craftbook-templates/em/email-template/art.json +13 -9
- package/data/craftbook-templates/em/email-template/logo.webp +0 -0
- package/data/craftbook-templates/en/engineering-retrospective/art.json +13 -8
- package/data/craftbook-templates/en/engineering-retrospective/logo.webp +0 -0
- package/data/craftbook-templates/ep/episode-plan/art.json +13 -9
- package/data/craftbook-templates/ep/episode-plan/logo.webp +0 -0
- package/data/craftbook-templates/es/escalation-playbook/art.json +13 -8
- package/data/craftbook-templates/es/escalation-playbook/logo.webp +0 -0
- package/data/craftbook-templates/ev/evidence-brief/art.json +14 -10
- package/data/craftbook-templates/ev/evidence-brief/logo.webp +0 -0
- package/data/craftbook-templates/ex/executive-level-review/art.json +13 -9
- package/data/craftbook-templates/ex/executive-level-review/logo.webp +0 -0
- package/data/craftbook-templates/ex/expense-categorize/art.json +13 -8
- package/data/craftbook-templates/ex/expense-categorize/logo.webp +0 -0
- package/data/craftbook-templates/ex/explain-code-folder/art.json +17 -0
- package/data/craftbook-templates/ex/explain-code-folder/logo.webp +0 -0
- package/data/craftbook-templates/ex/explain-code-folder/manifest.json +1 -0
- package/data/craftbook-templates/fa/fact-check/art.json +13 -8
- package/data/craftbook-templates/fa/fact-check/logo.webp +0 -0
- package/data/craftbook-templates/fa/family-story-chapter/art.json +13 -9
- package/data/craftbook-templates/fa/family-story-chapter/logo.webp +0 -0
- package/data/craftbook-templates/fa/faq-from-docs/art.json +14 -10
- package/data/craftbook-templates/fa/faq-from-docs/logo.webp +0 -0
- package/data/craftbook-templates/fa/favicon-set/art.json +13 -9
- package/data/craftbook-templates/fa/favicon-set/logo.webp +0 -0
- package/data/craftbook-templates/fa/favicon-set/versions/1.0.5/craftbook.json +282 -0
- package/data/craftbook-templates/fa/favicon-set/versions/1.0.5/test.json +94 -0
- package/data/craftbook-templates/fe/feature-flag-release/art.json +14 -10
- package/data/craftbook-templates/fe/feature-flag-release/logo.webp +0 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/art.json +13 -9
- package/data/craftbook-templates/fe/feature-flag-rollout/logo.webp +0 -0
- package/data/craftbook-templates/fe/feedback-widget/art.json +13 -9
- package/data/craftbook-templates/fe/feedback-widget/logo.webp +0 -0
- package/data/craftbook-templates/fl/flaky-test-fix/art.json +14 -9
- package/data/craftbook-templates/fl/flaky-test-fix/logo.webp +0 -0
- package/data/craftbook-templates/fo/folder-to-audio/art.json +13 -9
- package/data/craftbook-templates/fo/folder-to-audio/logo.webp +0 -0
- package/data/craftbook-templates/fo/forecast-model/art.json +13 -9
- package/data/craftbook-templates/fo/forecast-model/logo.webp +0 -0
- package/data/craftbook-templates/fo/form-fill-batch/art.json +13 -9
- package/data/craftbook-templates/fo/form-fill-batch/logo.webp +0 -0
- package/data/craftbook-templates/fo/form-wizard/art.json +13 -9
- package/data/craftbook-templates/fo/form-wizard/logo.webp +0 -0
- package/data/craftbook-templates/fr/freeze-scope/art.json +14 -10
- package/data/craftbook-templates/fr/freeze-scope/logo.webp +0 -0
- package/data/craftbook-templates/ga/game-with-screens/art.json +13 -9
- package/data/craftbook-templates/ga/game-with-screens/logo.webp +0 -0
- package/data/craftbook-templates/gl/glossary-build/art.json +13 -9
- package/data/craftbook-templates/gl/glossary-build/logo.webp +0 -0
- package/data/craftbook-templates/gr/graphql-api/art.json +13 -9
- package/data/craftbook-templates/gr/graphql-api/logo.webp +0 -0
- package/data/craftbook-templates/gr/grpc-service/art.json +13 -9
- package/data/craftbook-templates/gr/grpc-service/logo.webp +0 -0
- package/data/craftbook-templates/ha/handbook-section/art.json +13 -9
- package/data/craftbook-templates/ha/handbook-section/logo.webp +0 -0
- package/data/craftbook-templates/he/hero-image/art.json +13 -9
- package/data/craftbook-templates/he/hero-image/logo.webp +0 -0
- package/data/craftbook-templates/he/hero-image/versions/1.0.5/craftbook.json +287 -0
- package/data/craftbook-templates/he/hero-image/versions/1.0.5/test.json +94 -0
- package/data/craftbook-templates/ho/holiday-card-run/art.json +13 -9
- package/data/craftbook-templates/ho/holiday-card-run/logo.webp +0 -0
- package/data/craftbook-templates/ho/hotfix-flow/art.json +14 -10
- package/data/craftbook-templates/ho/hotfix-flow/logo.webp +0 -0
- package/data/craftbook-templates/ht/html-arcade-game/art.json +13 -9
- package/data/craftbook-templates/ht/html-arcade-game/logo.webp +0 -0
- package/data/craftbook-templates/ht/html-puzzle-game/art.json +13 -9
- package/data/craftbook-templates/ht/html-puzzle-game/logo.webp +0 -0
- package/data/craftbook-templates/ic/icon-pack/art.json +13 -9
- package/data/craftbook-templates/ic/icon-pack/logo.webp +0 -0
- package/data/craftbook-templates/ic/icon-pack/versions/1.0.5/craftbook.json +279 -0
- package/data/craftbook-templates/ic/icon-pack/versions/1.0.5/test.json +94 -0
- package/data/craftbook-templates/id/idea-office-hours/art.json +13 -8
- package/data/craftbook-templates/id/idea-office-hours/logo.webp +0 -0
- package/data/craftbook-templates/id/idle-clicker-game/art.json +13 -9
- package/data/craftbook-templates/id/idle-clicker-game/logo.webp +0 -0
- package/data/craftbook-templates/im/image-batch-edit/art.json +13 -8
- package/data/craftbook-templates/im/image-batch-edit/logo.webp +0 -0
- package/data/craftbook-templates/im/image-dedup-cluster/art.json +13 -9
- package/data/craftbook-templates/im/image-dedup-cluster/logo.webp +0 -0
- package/data/craftbook-templates/im/image-palette-extract/art.json +13 -9
- package/data/craftbook-templates/im/image-palette-extract/logo.webp +0 -0
- package/data/craftbook-templates/im/image-seo-rename/art.json +13 -9
- package/data/craftbook-templates/im/image-seo-rename/logo.webp +0 -0
- package/data/craftbook-templates/im/image-set-index/art.json +13 -9
- package/data/craftbook-templates/im/image-set-index/logo.webp +0 -0
- package/data/craftbook-templates/in/inbox-triage/art.json +13 -9
- package/data/craftbook-templates/in/inbox-triage/logo.webp +0 -0
- package/data/craftbook-templates/in/incident-comms-templates/art.json +13 -8
- package/data/craftbook-templates/in/incident-comms-templates/logo.webp +0 -0
- package/data/craftbook-templates/in/incident-postmortem/art.json +14 -9
- package/data/craftbook-templates/in/incident-postmortem/logo.webp +0 -0
- package/data/craftbook-templates/in/insurance-inventory/art.json +13 -9
- package/data/craftbook-templates/in/insurance-inventory/logo.webp +0 -0
- package/data/craftbook-templates/in/interactive-quiz/art.json +13 -9
- package/data/craftbook-templates/in/interactive-quiz/logo.webp +0 -0
- package/data/craftbook-templates/in/investigate/art.json +13 -8
- package/data/craftbook-templates/in/investigate/logo.webp +0 -0
- package/data/craftbook-templates/in/investigate-root-cause/art.json +13 -8
- package/data/craftbook-templates/in/investigate-root-cause/logo.webp +0 -0
- package/data/craftbook-templates/in/invitation-design/art.json +13 -9
- package/data/craftbook-templates/in/invitation-design/logo.webp +0 -0
- package/data/craftbook-templates/in/invoice-generator/art.json +13 -9
- package/data/craftbook-templates/in/invoice-generator/logo.webp +0 -0
- package/data/craftbook-templates/in/invoice-run/art.json +13 -9
- package/data/craftbook-templates/in/invoice-run/logo.webp +0 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/it/item-intake/art.json +13 -9
- package/data/craftbook-templates/it/item-intake/logo.webp +0 -0
- package/data/craftbook-templates/ju/juice-pass/art.json +13 -9
- package/data/craftbook-templates/ju/juice-pass/logo.webp +0 -0
- package/data/craftbook-templates/kn/knowledge-base-article/art.json +14 -10
- package/data/craftbook-templates/kn/knowledge-base-article/logo.webp +0 -0
- package/data/craftbook-templates/kp/kpi-scorecard/art.json +13 -9
- package/data/craftbook-templates/kp/kpi-scorecard/logo.webp +0 -0
- package/data/craftbook-templates/la/landing-copy/art.json +14 -10
- package/data/craftbook-templates/la/landing-copy/logo.webp +0 -0
- package/data/craftbook-templates/la/landing-page/art.json +13 -9
- package/data/craftbook-templates/la/landing-page/logo.webp +0 -0
- package/data/craftbook-templates/le/lead-enrichment/art.json +13 -8
- package/data/craftbook-templates/le/lead-enrichment/logo.webp +0 -0
- package/data/craftbook-templates/li/library-package/art.json +13 -9
- package/data/craftbook-templates/li/library-package/logo.webp +0 -0
- package/data/craftbook-templates/li/literature-review/art.json +14 -10
- package/data/craftbook-templates/li/literature-review/logo.webp +0 -0
- package/data/craftbook-templates/li/live-browser-qa/art.json +13 -8
- package/data/craftbook-templates/li/live-browser-qa/logo.webp +0 -0
- package/data/craftbook-templates/lo/localize-content/art.json +14 -9
- package/data/craftbook-templates/lo/localize-content/logo.webp +0 -0
- package/data/craftbook-templates/lo/logo-set/art.json +13 -9
- package/data/craftbook-templates/lo/logo-set/logo.webp +0 -0
- package/data/craftbook-templates/lo/logo-set/versions/1.0.5/craftbook.json +279 -0
- package/data/craftbook-templates/lo/logo-set/versions/1.0.5/test.json +94 -0
- package/data/craftbook-templates/ma/market-scan/art.json +14 -10
- package/data/craftbook-templates/ma/market-scan/logo.webp +0 -0
- package/data/craftbook-templates/me/meeting-minutes/art.json +13 -9
- package/data/craftbook-templates/me/meeting-minutes/logo.webp +0 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/art.json +13 -9
- package/data/craftbook-templates/me/meeting-notes-to-actions/logo.webp +0 -0
- package/data/craftbook-templates/me/meeting-prep-brief/art.json +13 -9
- package/data/craftbook-templates/me/meeting-prep-brief/logo.webp +0 -0
- package/data/craftbook-templates/me/meeting-summary-audio/art.json +13 -9
- package/data/craftbook-templates/me/meeting-summary-audio/logo.webp +0 -0
- package/data/craftbook-templates/me/memory-prompt-session/art.json +13 -9
- package/data/craftbook-templates/me/memory-prompt-session/logo.webp +0 -0
- package/data/craftbook-templates/me/message-queue-consumer/art.json +13 -9
- package/data/craftbook-templates/me/message-queue-consumer/logo.webp +0 -0
- package/data/craftbook-templates/mi/micro-game-jam/art.json +13 -9
- package/data/craftbook-templates/mi/micro-game-jam/logo.webp +0 -0
- package/data/craftbook-templates/mo/mock-interview/art.json +13 -9
- package/data/craftbook-templates/mo/mock-interview/logo.webp +0 -0
- package/data/craftbook-templates/mo/mod-scaffold/art.json +13 -9
- package/data/craftbook-templates/mo/mod-scaffold/logo.webp +0 -0
- package/data/craftbook-templates/mo/monitor-and-alert/art.json +13 -9
- package/data/craftbook-templates/mo/monitor-and-alert/logo.webp +0 -0
- package/data/craftbook-templates/mo/month-close/art.json +13 -9
- package/data/craftbook-templates/mo/month-close/logo.webp +0 -0
- package/data/craftbook-templates/mo/monthly-recording-review/art.json +13 -8
- package/data/craftbook-templates/mo/monthly-recording-review/logo.webp +0 -0
- package/data/craftbook-templates/mo/moodboard/art.json +13 -9
- package/data/craftbook-templates/mo/moodboard/logo.webp +0 -0
- package/data/craftbook-templates/mo/moodboard/versions/1.0.5/craftbook.json +219 -0
- package/data/craftbook-templates/mo/moodboard/versions/1.0.5/test.json +89 -0
- package/data/craftbook-templates/mo/morning-brief/art.json +13 -9
- package/data/craftbook-templates/mo/morning-brief/logo.webp +0 -0
- package/data/craftbook-templates/mo/morning-report/art.json +13 -9
- package/data/craftbook-templates/mo/morning-report/logo.webp +0 -0
- package/data/craftbook-templates/mu/music-metadata-tag/art.json +13 -9
- package/data/craftbook-templates/mu/music-metadata-tag/logo.webp +0 -0
- package/data/craftbook-templates/na/narrated-slideshow/art.json +14 -10
- package/data/craftbook-templates/na/narrated-slideshow/logo.webp +0 -0
- package/data/craftbook-templates/ne/newsletter-issue/art.json +13 -9
- package/data/craftbook-templates/ne/newsletter-issue/logo.webp +0 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/art.json +14 -9
- package/data/craftbook-templates/ni/nightly-fix-sweep/logo.webp +0 -0
- package/data/craftbook-templates/no/notification-router/art.json +13 -9
- package/data/craftbook-templates/no/notification-router/logo.webp +0 -0
- package/data/craftbook-templates/oc/ocr-extract/art.json +13 -9
- package/data/craftbook-templates/oc/ocr-extract/logo.webp +0 -0
- package/data/craftbook-templates/of/offer-compare/art.json +14 -10
- package/data/craftbook-templates/of/offer-compare/logo.webp +0 -0
- package/data/craftbook-templates/of/office-hours/art.json +13 -8
- package/data/craftbook-templates/of/office-hours/logo.webp +0 -0
- package/data/craftbook-templates/on/onboarding-checklist/art.json +13 -9
- package/data/craftbook-templates/on/onboarding-checklist/logo.webp +0 -0
- package/data/craftbook-templates/on/onboarding-flow/art.json +13 -9
- package/data/craftbook-templates/on/onboarding-flow/logo.webp +0 -0
- package/data/craftbook-templates/on/oncall-handoff/art.json +13 -8
- package/data/craftbook-templates/on/oncall-handoff/logo.webp +0 -0
- package/data/craftbook-templates/on/one-pager/art.json +13 -9
- package/data/craftbook-templates/on/one-pager/logo.webp +0 -0
- package/data/craftbook-templates/op/ops-runbook/art.json +13 -9
- package/data/craftbook-templates/op/ops-runbook/logo.webp +0 -0
- package/data/craftbook-templates/pa/page-spread/art.json +13 -9
- package/data/craftbook-templates/pa/page-spread/logo.webp +0 -0
- package/data/craftbook-templates/pa/page-spread/versions/1.0.4/craftbook.json +214 -0
- package/data/craftbook-templates/pa/page-spread/versions/1.0.4/test.json +132 -0
- package/data/craftbook-templates/pa/parser-grammar/art.json +13 -9
- package/data/craftbook-templates/pa/parser-grammar/logo.webp +0 -0
- package/data/craftbook-templates/pe/perf-audit/art.json +13 -8
- package/data/craftbook-templates/pe/perf-audit/logo.webp +0 -0
- package/data/craftbook-templates/pe/perf-optimization/art.json +14 -9
- package/data/craftbook-templates/pe/perf-optimization/logo.webp +0 -0
- package/data/craftbook-templates/pe/pest-diagnosis/art.json +13 -9
- package/data/craftbook-templates/pe/pest-diagnosis/logo.webp +0 -0
- package/data/craftbook-templates/ph/photo-cull/art.json +13 -9
- package/data/craftbook-templates/ph/photo-cull/logo.webp +0 -0
- package/data/craftbook-templates/ph/photo-library-nightly/art.json +17 -0
- package/data/craftbook-templates/ph/photo-library-nightly/logo.webp +0 -0
- package/data/craftbook-templates/ph/photo-library-nightly/manifest.json +1 -0
- package/data/craftbook-templates/ph/physics-toy/art.json +13 -9
- package/data/craftbook-templates/ph/physics-toy/logo.webp +0 -0
- package/data/craftbook-templates/pi/pitch-deck/art.json +13 -9
- package/data/craftbook-templates/pi/pitch-deck/logo.webp +0 -0
- package/data/craftbook-templates/pl/plan/art.json +13 -8
- package/data/craftbook-templates/pl/plan/logo.webp +0 -0
- package/data/craftbook-templates/pl/playtest-report/art.json +13 -8
- package/data/craftbook-templates/pl/playtest-report/logo.webp +0 -0
- package/data/craftbook-templates/po/podcast-chaptering/art.json +13 -9
- package/data/craftbook-templates/po/podcast-chaptering/logo.webp +0 -0
- package/data/craftbook-templates/po/portfolio-site/art.json +13 -9
- package/data/craftbook-templates/po/portfolio-site/logo.webp +0 -0
- package/data/craftbook-templates/po/powerpoint-deck/art.json +14 -10
- package/data/craftbook-templates/po/powerpoint-deck/logo.webp +0 -0
- package/data/craftbook-templates/pr/pr-security-review/art.json +13 -8
- package/data/craftbook-templates/pr/pr-security-review/logo.webp +0 -0
- package/data/craftbook-templates/pr/practice-exam/art.json +13 -8
- package/data/craftbook-templates/pr/practice-exam/logo.webp +0 -0
- package/data/craftbook-templates/pr/practice-session/art.json +13 -9
- package/data/craftbook-templates/pr/practice-session/logo.webp +0 -0
- package/data/craftbook-templates/pr/pre-departure-countdown/art.json +13 -9
- package/data/craftbook-templates/pr/pre-departure-countdown/logo.webp +0 -0
- package/data/craftbook-templates/pr/press-release/art.json +14 -10
- package/data/craftbook-templates/pr/press-release/logo.webp +0 -0
- package/data/craftbook-templates/pr/price-tracker/art.json +13 -9
- package/data/craftbook-templates/pr/price-tracker/logo.webp +0 -0
- package/data/craftbook-templates/pr/pricing-page/art.json +13 -9
- package/data/craftbook-templates/pr/pricing-page/logo.webp +0 -0
- package/data/craftbook-templates/pr/product-descriptions/art.json +14 -10
- package/data/craftbook-templates/pr/product-descriptions/logo.webp +0 -0
- package/data/craftbook-templates/pr/proposal-sow/art.json +13 -9
- package/data/craftbook-templates/pr/proposal-sow/logo.webp +0 -0
- package/data/craftbook-templates/pu/pull-request-review/art.json +14 -9
- package/data/craftbook-templates/pu/pull-request-review/logo.webp +0 -0
- package/data/craftbook-templates/pu/puzzle-pack-layout/art.json +13 -9
- package/data/craftbook-templates/pu/puzzle-pack-layout/logo.webp +0 -0
- package/data/craftbook-templates/pw/pwa-offline/art.json +13 -9
- package/data/craftbook-templates/pw/pwa-offline/logo.webp +0 -0
- package/data/craftbook-templates/qa/qa/art.json +13 -8
- package/data/craftbook-templates/qa/qa/logo.webp +0 -0
- package/data/craftbook-templates/qu/quarterly-summary/art.json +13 -9
- package/data/craftbook-templates/qu/quarterly-summary/logo.webp +0 -0
- package/data/craftbook-templates/raw-index.json +1 -1
- package/data/craftbook-templates/re/reading-list/art.json +13 -9
- package/data/craftbook-templates/re/reading-list/logo.webp +0 -0
- package/data/craftbook-templates/re/receipt-intake/art.json +13 -9
- package/data/craftbook-templates/re/receipt-intake/logo.webp +0 -0
- package/data/craftbook-templates/re/receipt-ocr-ledger/art.json +13 -9
- package/data/craftbook-templates/re/receipt-ocr-ledger/logo.webp +0 -0
- package/data/craftbook-templates/re/reception-report/art.json +17 -0
- package/data/craftbook-templates/re/reception-report/logo.webp +0 -0
- package/data/craftbook-templates/re/recipe-capture/art.json +13 -8
- package/data/craftbook-templates/re/recipe-capture/logo.webp +0 -0
- package/data/craftbook-templates/re/record-a-relative/art.json +13 -9
- package/data/craftbook-templates/re/record-a-relative/logo.webp +0 -0
- package/data/craftbook-templates/re/recurring-invoice-run/art.json +13 -9
- package/data/craftbook-templates/re/recurring-invoice-run/logo.webp +0 -0
- package/data/craftbook-templates/re/refactor-module/art.json +14 -9
- package/data/craftbook-templates/re/refactor-module/logo.webp +0 -0
- package/data/craftbook-templates/re/regex-builder/art.json +13 -8
- package/data/craftbook-templates/re/regex-builder/logo.webp +0 -0
- package/data/craftbook-templates/re/release-announcement/art.json +14 -10
- package/data/craftbook-templates/re/release-announcement/logo.webp +0 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/art.json +14 -10
- package/data/craftbook-templates/re/release-artifact-sanity-check/logo.webp +0 -0
- package/data/craftbook-templates/re/release-notes/art.json +13 -9
- package/data/craftbook-templates/re/release-notes/logo.webp +0 -0
- package/data/craftbook-templates/re/release-pipeline-ci/art.json +14 -10
- package/data/craftbook-templates/re/release-pipeline-ci/logo.webp +0 -0
- package/data/craftbook-templates/re/release-readiness-review/art.json +13 -9
- package/data/craftbook-templates/re/release-readiness-review/logo.webp +0 -0
- package/data/craftbook-templates/re/reliability-review/art.json +13 -8
- package/data/craftbook-templates/re/reliability-review/logo.webp +0 -0
- package/data/craftbook-templates/re/report-pdf/art.json +14 -10
- package/data/craftbook-templates/re/report-pdf/logo.webp +0 -0
- package/data/craftbook-templates/re/research-report/art.json +14 -10
- package/data/craftbook-templates/re/research-report/logo.webp +0 -0
- package/data/craftbook-templates/re/research-to-document/art.json +14 -10
- package/data/craftbook-templates/re/research-to-document/logo.webp +0 -0
- package/data/craftbook-templates/re/rest-api/art.json +13 -9
- package/data/craftbook-templates/re/rest-api/logo.webp +0 -0
- package/data/craftbook-templates/re/resume-cv/art.json +13 -9
- package/data/craftbook-templates/re/resume-cv/logo.webp +0 -0
- package/data/craftbook-templates/re/review-code-folder/art.json +17 -0
- package/data/craftbook-templates/re/review-code-folder/logo.webp +0 -0
- package/data/craftbook-templates/re/review-code-folder/manifest.json +1 -0
- package/data/craftbook-templates/re/reviewer-loop/art.json +13 -8
- package/data/craftbook-templates/re/reviewer-loop/logo.webp +0 -0
- package/data/craftbook-templates/ro/rollback-plan/art.json +14 -10
- package/data/craftbook-templates/ro/rollback-plan/logo.webp +0 -0
- package/data/craftbook-templates/ro/root-cause-investigation/art.json +13 -8
- package/data/craftbook-templates/ro/root-cause-investigation/logo.webp +0 -0
- package/data/craftbook-templates/ro/rough-cut-assembly/art.json +13 -9
- package/data/craftbook-templates/ro/rough-cut-assembly/logo.webp +0 -0
- package/data/craftbook-templates/ru/runbook/art.json +13 -8
- package/data/craftbook-templates/ru/runbook/logo.webp +0 -0
- package/data/craftbook-templates/sc/schema-migration/art.json +14 -10
- package/data/craftbook-templates/sc/schema-migration/logo.webp +0 -0
- package/data/craftbook-templates/sc/scrape-to-structured/art.json +13 -9
- package/data/craftbook-templates/sc/scrape-to-structured/logo.webp +0 -0
- package/data/craftbook-templates/sc/script-automation/art.json +13 -8
- package/data/craftbook-templates/sc/script-automation/logo.webp +0 -0
- package/data/craftbook-templates/sd/sdk-wrapper/art.json +13 -9
- package/data/craftbook-templates/sd/sdk-wrapper/logo.webp +0 -0
- package/data/craftbook-templates/se/seasonal-maintenance-sweep/art.json +13 -9
- package/data/craftbook-templates/se/seasonal-maintenance-sweep/logo.webp +0 -0
- package/data/craftbook-templates/se/security-architecture-review/art.json +13 -8
- package/data/craftbook-templates/se/security-architecture-review/logo.webp +0 -0
- package/data/craftbook-templates/se/seo-meta-pack/art.json +14 -10
- package/data/craftbook-templates/se/seo-meta-pack/logo.webp +0 -0
- package/data/craftbook-templates/sh/ship/art.json +13 -8
- package/data/craftbook-templates/sh/ship/logo.webp +0 -0
- package/data/craftbook-templates/so/social-digest/art.json +17 -0
- package/data/craftbook-templates/so/social-digest/logo.webp +0 -0
- package/data/craftbook-templates/so/social-thread/art.json +13 -9
- package/data/craftbook-templates/so/social-thread/logo.webp +0 -0
- package/data/craftbook-templates/so/source-quality-audit/art.json +13 -8
- package/data/craftbook-templates/so/source-quality-audit/logo.webp +0 -0
- package/data/craftbook-templates/sp/spa-dashboard/art.json +13 -9
- package/data/craftbook-templates/sp/spa-dashboard/logo.webp +0 -0
- package/data/craftbook-templates/sp/spec-authoring/art.json +13 -9
- package/data/craftbook-templates/sp/spec-authoring/logo.webp +0 -0
- package/data/craftbook-templates/sp/spec-doc/art.json +13 -9
- package/data/craftbook-templates/sp/spec-doc/logo.webp +0 -0
- package/data/craftbook-templates/sp/spreadsheet-findings/art.json +17 -0
- package/data/craftbook-templates/sp/spreadsheet-findings/logo.webp +0 -0
- package/data/craftbook-templates/sp/spreadsheet-findings/manifest.json +1 -0
- package/data/craftbook-templates/sp/spreadsheet-model/art.json +13 -9
- package/data/craftbook-templates/sp/spreadsheet-model/logo.webp +0 -0
- package/data/craftbook-templates/sp/sprite-sheet/art.json +13 -9
- package/data/craftbook-templates/sp/sprite-sheet/logo.webp +0 -0
- package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.5/craftbook.json +269 -0
- package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.5/test.json +94 -0
- package/data/craftbook-templates/sq/sql-analysis/art.json +13 -9
- package/data/craftbook-templates/sq/sql-analysis/logo.webp +0 -0
- package/data/craftbook-templates/st/standup-summary/art.json +13 -9
- package/data/craftbook-templates/st/standup-summary/logo.webp +0 -0
- package/data/craftbook-templates/st/state-machine/art.json +13 -8
- package/data/craftbook-templates/st/state-machine/logo.webp +0 -0
- package/data/craftbook-templates/st/status-report/art.json +13 -9
- package/data/craftbook-templates/st/status-report/logo.webp +0 -0
- package/data/craftbook-templates/su/subscription-audit/art.json +13 -8
- package/data/craftbook-templates/su/subscription-audit/logo.webp +0 -0
- package/data/craftbook-templates/su/subtitle-generator/art.json +13 -9
- package/data/craftbook-templates/su/subtitle-generator/logo.webp +0 -0
- package/data/craftbook-templates/su/summarize-long/art.json +14 -10
- package/data/craftbook-templates/su/summarize-long/logo.webp +0 -0
- package/data/craftbook-templates/su/survey-analysis/art.json +13 -9
- package/data/craftbook-templates/su/survey-analysis/logo.webp +0 -0
- package/data/craftbook-templates/sv/svg-animation/art.json +13 -9
- package/data/craftbook-templates/sv/svg-animation/logo.webp +0 -0
- package/data/craftbook-templates/ta/tailor-resume/art.json +13 -9
- package/data/craftbook-templates/ta/tailor-resume/logo.webp +0 -0
- package/data/craftbook-templates/te/technical-documentation/art.json +13 -9
- package/data/craftbook-templates/te/technical-documentation/logo.webp +0 -0
- package/data/craftbook-templates/te/test-coverage-review/art.json +13 -8
- package/data/craftbook-templates/te/test-coverage-review/logo.webp +0 -0
- package/data/craftbook-templates/te/test-suite-backfill/art.json +14 -9
- package/data/craftbook-templates/te/test-suite-backfill/logo.webp +0 -0
- package/data/craftbook-templates/th/thank-you-batch/art.json +13 -9
- package/data/craftbook-templates/th/thank-you-batch/logo.webp +0 -0
- package/data/craftbook-templates/th/thank-you-sweep/art.json +13 -9
- package/data/craftbook-templates/th/thank-you-sweep/logo.webp +0 -0
- package/data/craftbook-templates/th/threat-model/art.json +13 -9
- package/data/craftbook-templates/th/threat-model/logo.webp +0 -0
- package/data/craftbook-templates/th/thumbnail-generator/art.json +13 -9
- package/data/craftbook-templates/th/thumbnail-generator/logo.webp +0 -0
- package/data/craftbook-templates/ti/tidy-spreadsheet/art.json +17 -0
- package/data/craftbook-templates/ti/tidy-spreadsheet/logo.webp +0 -0
- package/data/craftbook-templates/ti/tidy-spreadsheet/manifest.json +1 -0
- package/data/craftbook-templates/ti/tileset-batch/art.json +13 -9
- package/data/craftbook-templates/ti/tileset-batch/logo.webp +0 -0
- package/data/craftbook-templates/ti/tileset-batch/versions/1.0.4/craftbook.json +319 -0
- package/data/craftbook-templates/ti/tileset-batch/versions/1.0.4/test.json +162 -0
- package/data/craftbook-templates/to/tone-rewrite/art.json +14 -10
- package/data/craftbook-templates/to/tone-rewrite/logo.webp +0 -0
- package/data/craftbook-templates/to/topic-explainer/art.json +14 -10
- package/data/craftbook-templates/to/topic-explainer/logo.webp +0 -0
- package/data/craftbook-templates/tr/transcribe-and-shownotes/art.json +13 -9
- package/data/craftbook-templates/tr/transcribe-and-shownotes/logo.webp +0 -0
- package/data/craftbook-templates/tr/transcribe-audio/art.json +13 -9
- package/data/craftbook-templates/tr/transcribe-audio/logo.webp +0 -0
- package/data/craftbook-templates/tr/transcribe-index/art.json +13 -9
- package/data/craftbook-templates/tr/transcribe-index/logo.webp +0 -0
- package/data/craftbook-templates/tr/translate-content/art.json +17 -0
- package/data/craftbook-templates/tr/translate-content/logo.webp +0 -0
- package/data/craftbook-templates/ty/type-safety-pass/art.json +14 -9
- package/data/craftbook-templates/ty/type-safety-pass/logo.webp +0 -0
- package/data/craftbook-templates/ux/ux-update/art.json +14 -9
- package/data/craftbook-templates/ux/ux-update/logo.webp +0 -0
- package/data/craftbook-templates/ve/version-bump/art.json +13 -9
- package/data/craftbook-templates/ve/version-bump/logo.webp +0 -0
- package/data/craftbook-templates/vi/video-storyboard/art.json +13 -9
- package/data/craftbook-templates/vi/video-storyboard/logo.webp +0 -0
- package/data/craftbook-templates/vi/visit-prep/art.json +13 -9
- package/data/craftbook-templates/vi/visit-prep/logo.webp +0 -0
- package/data/craftbook-templates/vo/voiceover-script/art.json +13 -9
- package/data/craftbook-templates/vo/voiceover-script/logo.webp +0 -0
- package/data/craftbook-templates/we/weak-spot-drill/art.json +13 -9
- package/data/craftbook-templates/we/weak-spot-drill/logo.webp +0 -0
- package/data/craftbook-templates/we/web-app-crud/art.json +13 -9
- package/data/craftbook-templates/we/web-app-crud/logo.webp +0 -0
- package/data/craftbook-templates/we/web-component/art.json +13 -9
- package/data/craftbook-templates/we/web-component/logo.webp +0 -0
- package/data/craftbook-templates/we/webhook-handler/art.json +13 -9
- package/data/craftbook-templates/we/webhook-handler/logo.webp +0 -0
- package/data/craftbook-templates/we/week-plan/art.json +13 -9
- package/data/craftbook-templates/we/week-plan/logo.webp +0 -0
- package/data/craftbook-templates/we/weekly-menu-plan/art.json +13 -9
- package/data/craftbook-templates/we/weekly-menu-plan/logo.webp +0 -0
- package/data/craftbook-templates/we/weekly-pipeline-review/art.json +13 -9
- package/data/craftbook-templates/we/weekly-pipeline-review/logo.webp +0 -0
- package/data/craftbook-templates/we/weekly-review/art.json +13 -9
- package/data/craftbook-templates/we/weekly-review/logo.webp +0 -0
- package/data/craftbook-templates/we/weekly-walkthrough/art.json +13 -9
- package/data/craftbook-templates/we/weekly-walkthrough/logo.webp +0 -0
- package/data/craftbook-templates/wh/whitepaper/art.json +13 -9
- package/data/craftbook-templates/wh/whitepaper/logo.webp +0 -0
- package/data/craftbook-templates/ye/year-in-review/art.json +13 -9
- package/data/craftbook-templates/ye/year-in-review/logo.webp +0 -0
- package/data/craftbook-templates/yo/youtube-chapters-seo/art.json +13 -9
- package/data/craftbook-templates/yo/youtube-chapters-seo/logo.webp +0 -0
- package/data/gezel-templates/il/illustrator/manifest.json +21 -0
- package/data/gezel-templates/il/illustrator/versions/1.0.0/about.md +28 -0
- package/data/gezel-templates/il/illustrator/versions/1.0.0/manifest.json +9 -0
- package/data/gezel-templates/index.json +1 -1
- package/data/gezel-templates/raw-index.json +1 -1
- package/data/image-models/an/animagine-xl-4/manifest.json +2 -0
- package/data/image-models/fl/flux-2-klein-4b-q4/manifest.json +3 -1
- package/data/image-models/index.json +1 -1
- package/data/image-models/ir/iris-3b-f32/manifest.json +4 -2
- package/data/image-models/ir/iris-3b-f32/versions/1.0.2/manifest.json +25 -0
- package/data/image-models/kr/krea-2-turbo-q4/manifest.json +2 -0
- package/data/image-models/kr/krea-2-turbo-q6/manifest.json +2 -0
- package/data/image-models/kr/krea-2-turbo-q8/manifest.json +2 -0
- package/data/image-models/mi/ming-image-0.1-design-bf16/manifest.json +2 -0
- package/data/image-models/mi/ming-image-0.1-design-bf16/versions/1.0.2/manifest.json +50 -0
- package/data/image-models/mo/moss-image-sft-q4/manifest.json +40 -0
- package/data/image-models/mo/moss-image-sft-q4/versions/1.0.0/manifest.json +37 -0
- package/data/image-models/mo/moss-image-sft-q4/versions/1.0.1/manifest.json +37 -0
- package/data/image-models/raw-index.json +1 -1
- package/data/image-models/sd/sd-1.5/manifest.json +2 -0
- package/data/image-models/sd/sd-turbo/manifest.json +2 -0
- package/data/image-models/sd/sdxl-base-1.0/manifest.json +2 -0
- package/data/image-models/sd/sdxl-lightning-4step/manifest.json +2 -0
- package/data/image-models/sd/sdxl-turbo/manifest.json +2 -0
- package/data/knowledge-catalogs/be/bendyline-how-to-books/keywords.json +56 -0
- package/data/knowledge-catalogs/ca/caselaw-alaska-part-0001/keywords.json +12 -0
- package/data/knowledge-catalogs/ca/caselaw-nevada-part-0001/keywords.json +13 -0
- package/data/knowledge-catalogs/ca/caselaw-us-300-399-part-0001/keywords.json +14 -0
- package/data/knowledge-catalogs/ca/caselaw-us-347-349/keywords.json +17 -0
- package/data/knowledge-catalogs/ca/caselaw-utah-part-0001/keywords.json +12 -0
- package/data/knowledge-catalogs/ca/caselaw-utah-part-0002/keywords.json +12 -0
- package/data/knowledge-catalogs/ca/caselaw-washington-part-0001/keywords.json +12 -0
- package/data/knowledge-catalogs/ca/caselaw-washington-part-0002/keywords.json +12 -0
- package/data/knowledge-catalogs/ca/caselaw-washington-part-0003/keywords.json +12 -0
- package/data/knowledge-catalogs/ca/caselaw-washington-part-0004/keywords.json +12 -0
- package/data/knowledge-catalogs/ca/caselaw-washington-part-0005/keywords.json +12 -0
- package/data/knowledge-catalogs/ca/caselaw-wyoming-part-0001/keywords.json +12 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/keywords.json +21 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/keywords.json +27 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/keywords.json +23 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/keywords.json +26 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/keywords.json +28 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/keywords.json +29 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-dotnet-en/keywords.json +21 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/keywords.json +14 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/keywords.json +20 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-powershell-en/keywords.json +24 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-sql-server-en/keywords.json +27 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/keywords.json +18 -0
- package/data/knowledge-catalogs/mi/microsoftdocs-windows-server-en/keywords.json +28 -0
- package/data/knowledge-catalogs/re/regional-american-south/keywords.json +1700 -0
- package/data/knowledge-catalogs/re/regional-andes-amazon/keywords.json +750 -0
- package/data/knowledge-catalogs/re/regional-australia-nz/keywords.json +1281 -0
- package/data/knowledge-catalogs/re/regional-brazil/keywords.json +1125 -0
- package/data/knowledge-catalogs/re/regional-britain-ireland/keywords.json +3287 -0
- package/data/knowledge-catalogs/re/regional-california-southwest/keywords.json +1835 -0
- package/data/knowledge-catalogs/re/regional-canada-alaska/keywords.json +1184 -0
- package/data/knowledge-catalogs/re/regional-central-eastern-europe/keywords.json +1503 -0
- package/data/knowledge-catalogs/re/regional-east-asia/keywords.json +2836 -0
- package/data/knowledge-catalogs/re/regional-east-southern-africa/keywords.json +813 -0
- package/data/knowledge-catalogs/re/regional-mediterranean/keywords.json +2082 -0
- package/data/knowledge-catalogs/re/regional-mexico-central-america/keywords.json +1481 -0
- package/data/knowledge-catalogs/re/regional-middle-east/keywords.json +1272 -0
- package/data/knowledge-catalogs/re/regional-midwest/keywords.json +758 -0
- package/data/knowledge-catalogs/re/regional-north-africa/keywords.json +896 -0
- package/data/knowledge-catalogs/re/regional-northeast/keywords.json +1281 -0
- package/data/knowledge-catalogs/re/regional-northern-eurasia/keywords.json +346 -0
- package/data/knowledge-catalogs/re/regional-northern-europe/keywords.json +2688 -0
- package/data/knowledge-catalogs/re/regional-pacific-islands/keywords.json +973 -0
- package/data/knowledge-catalogs/re/regional-pacific-northwest/keywords.json +937 -0
- package/data/knowledge-catalogs/re/regional-rockies-plains/keywords.json +608 -0
- package/data/knowledge-catalogs/re/regional-south-asia/keywords.json +633 -0
- package/data/knowledge-catalogs/re/regional-southeast-asia/keywords.json +2697 -0
- package/data/knowledge-catalogs/re/regional-southern-cone/keywords.json +606 -0
- package/data/knowledge-catalogs/re/regional-west-central-africa/keywords.json +564 -0
- package/data/knowledge-catalogs/re/regional-western-europe/keywords.json +3247 -0
- package/data/knowledge-catalogs/wi/wikipedia-arts/keywords.json +5437 -0
- package/data/knowledge-catalogs/wi/wikipedia-astronomy/keywords.json +4009 -0
- package/data/knowledge-catalogs/wi/wikipedia-biology/keywords.json +4009 -0
- package/data/knowledge-catalogs/wi/wikipedia-business/keywords.json +5583 -0
- package/data/knowledge-catalogs/wi/wikipedia-film-tv/keywords.json +6386 -0
- package/data/knowledge-catalogs/wi/wikipedia-food-drink/keywords.json +4009 -0
- package/data/knowledge-catalogs/wi/wikipedia-games/keywords.json +5672 -0
- package/data/knowledge-catalogs/wi/wikipedia-language/keywords.json +4009 -0
- package/data/knowledge-catalogs/wi/wikipedia-law/keywords.json +4009 -0
- package/data/knowledge-catalogs/wi/wikipedia-literature/keywords.json +5719 -0
- package/data/knowledge-catalogs/wi/wikipedia-mathematics/keywords.json +4009 -0
- package/data/knowledge-catalogs/wi/wikipedia-medicine/keywords.json +16009 -0
- package/data/knowledge-catalogs/wi/wikipedia-military/keywords.json +5843 -0
- package/data/knowledge-catalogs/wi/wikipedia-music/keywords.json +6264 -0
- package/data/knowledge-catalogs/wi/wikipedia-politics/keywords.json +5447 -0
- package/data/knowledge-catalogs/wi/wikipedia-religion-philosophy/keywords.json +4009 -0
- package/data/knowledge-catalogs/wi/wikipedia-science/keywords.json +4009 -0
- package/data/knowledge-catalogs/wi/wikipedia-sports/keywords.json +5209 -0
- package/data/knowledge-catalogs/wi/wikipedia-technology/keywords.json +6537 -0
- package/data/knowledge-catalogs/wi/wikipedia-transportation/keywords.json +5989 -0
- package/data/project-types/ca/caregiving-binder/art.json +17 -0
- package/data/project-types/ca/caregiving-binder/logo.webp +0 -0
- package/data/project-types/ca/caregiving-binder/manifest.json +1 -0
- package/data/project-types/ch/checkers/art.json +17 -0
- package/data/project-types/ch/checkers/logo.webp +0 -0
- package/data/project-types/ch/checkers/manifest.json +1 -0
- package/data/project-types/ch/chess/art.json +17 -0
- package/data/project-types/ch/chess/logo.webp +0 -0
- package/data/project-types/ch/chess/manifest.json +1 -0
- package/data/project-types/da/data-analysis/art.json +17 -0
- package/data/project-types/da/data-analysis/logo.webp +0 -0
- package/data/project-types/da/data-analysis/manifest.json +22 -0
- package/data/project-types/da/data-analysis/versions/1.0.0/about.md +20 -0
- package/data/project-types/da/data-analysis/versions/1.0.0/manifest.json +70 -0
- package/data/project-types/da/data-analysis/versions/1.0.0/mission.md +4 -0
- package/data/project-types/da/data-analysis/versions/1.0.0/pages/analytics.js +63 -0
- package/data/project-types/da/data-analysis/versions/1.0.0/pages/dashboard.css +86 -0
- package/data/project-types/da/data-analysis/versions/1.0.0/pages/dashboard.js +160 -0
- package/data/project-types/da/data-analysis/versions/1.0.0/pages/datasets.js +44 -0
- package/data/project-types/da/data-analysis/versions/1.0.0/pages/demo.js +9 -0
- package/data/project-types/da/data-analysis/versions/1.0.0/pages/index.html +111 -0
- package/data/project-types/da/data-analysis/versions/1.0.0/pages/insights.js +129 -0
- package/data/project-types/de/design-scheme/art.json +17 -0
- package/data/project-types/de/design-scheme/logo.webp +0 -0
- package/data/project-types/de/design-scheme/manifest.json +1 -0
- package/data/project-types/em/email/art.json +17 -0
- package/data/project-types/em/email/logo.webp +0 -0
- package/data/project-types/em/email/manifest.json +1 -0
- package/data/project-types/ev/event-planner/art.json +17 -0
- package/data/project-types/ev/event-planner/logo.webp +0 -0
- package/data/project-types/ev/event-planner/manifest.json +1 -0
- package/data/project-types/fi/fitness-coach/art.json +17 -0
- package/data/project-types/fi/fitness-coach/logo.webp +0 -0
- package/data/project-types/fi/fitness-coach/manifest.json +1 -0
- package/data/project-types/fl/flashcards/art.json +17 -0
- package/data/project-types/fl/flashcards/logo.webp +0 -0
- package/data/project-types/fl/flashcards/manifest.json +1 -0
- package/data/project-types/fr/freelance-office/art.json +17 -0
- package/data/project-types/fr/freelance-office/logo.webp +0 -0
- package/data/project-types/fr/freelance-office/manifest.json +1 -0
- package/data/project-types/fu/fundraiser-hq/art.json +17 -0
- package/data/project-types/fu/fundraiser-hq/logo.webp +0 -0
- package/data/project-types/fu/fundraiser-hq/manifest.json +1 -0
- package/data/project-types/go/go/art.json +17 -0
- package/data/project-types/go/go/logo.webp +0 -0
- package/data/project-types/go/go/manifest.json +1 -0
- package/data/project-types/ho/household-budget/art.json +17 -0
- package/data/project-types/ho/household-budget/logo.webp +0 -0
- package/data/project-types/ho/household-budget/manifest.json +1 -0
- package/data/project-types/ho/household-manual/art.json +17 -0
- package/data/project-types/ho/household-manual/logo.webp +0 -0
- package/data/project-types/ho/household-manual/manifest.json +1 -0
- package/data/project-types/im/image-feed/art.json +17 -0
- package/data/project-types/im/image-feed/logo.webp +0 -0
- package/data/project-types/im/image-feed/manifest.json +1 -0
- package/data/project-types/index.json +1 -1
- package/data/project-types/jo/job-hunt/art.json +17 -0
- package/data/project-types/jo/job-hunt/logo.webp +0 -0
- package/data/project-types/jo/job-hunt/manifest.json +1 -0
- package/data/project-types/ju/just-chat/art.json +17 -0
- package/data/project-types/ju/just-chat/logo.webp +0 -0
- package/data/project-types/ju/just-chat/manifest.json +1 -0
- package/data/project-types/la/language-trainer/art.json +17 -0
- package/data/project-types/la/language-trainer/logo.webp +0 -0
- package/data/project-types/la/language-trainer/manifest.json +1 -0
- package/data/project-types/li/life-binder/art.json +17 -0
- package/data/project-types/li/life-binder/logo.webp +0 -0
- package/data/project-types/li/life-binder/manifest.json +1 -0
- package/data/project-types/me/meal-planner/art.json +17 -0
- package/data/project-types/me/meal-planner/logo.webp +0 -0
- package/data/project-types/me/meal-planner/manifest.json +1 -0
- package/data/project-types/me/media-library/art.json +17 -0
- package/data/project-types/me/media-library/logo.webp +0 -0
- package/data/project-types/me/media-library/manifest.json +23 -0
- package/data/project-types/me/media-library/versions/1.0.0/about.md +17 -0
- package/data/project-types/me/media-library/versions/1.0.0/manifest.json +73 -0
- package/data/project-types/me/media-library/versions/1.0.0/mission.md +6 -0
- package/data/project-types/me/media-library/versions/1.0.0/pages/assets/alpine.svg +1 -0
- package/data/project-types/me/media-library/versions/1.0.0/pages/assets/coast.svg +1 -0
- package/data/project-types/me/media-library/versions/1.0.0/pages/assets/evening.svg +1 -0
- package/data/project-types/me/media-library/versions/1.0.0/pages/assets/forest.svg +1 -0
- package/data/project-types/me/media-library/versions/1.0.0/pages/assets/light.webm +0 -0
- package/data/project-types/me/media-library/versions/1.0.0/pages/assets/notes.wav +0 -0
- package/data/project-types/me/media-library/versions/1.0.0/pages/assets/study.svg +1 -0
- package/data/project-types/me/media-library/versions/1.0.0/pages/gallery.css +74 -0
- package/data/project-types/me/media-library/versions/1.0.0/pages/gallery.js +153 -0
- package/data/project-types/me/media-library/versions/1.0.0/pages/index.html +41 -0
- package/data/project-types/me/media-library/versions/1.0.0/pages/media-files.js +41 -0
- package/data/project-types/no/novel-writing-room/art.json +17 -0
- package/data/project-types/no/novel-writing-room/logo.webp +0 -0
- package/data/project-types/no/novel-writing-room/manifest.json +1 -0
- package/data/project-types/raw-index.json +1 -1
- package/data/project-types/so/social-feed/art.json +17 -0
- package/data/project-types/so/social-feed/logo.webp +0 -0
- package/data/project-types/so/social-feed/manifest.json +1 -0
- package/data/project-types/so/software-project/art.json +17 -0
- package/data/project-types/so/software-project/logo.webp +0 -0
- package/data/project-types/so/software-project/manifest.json +1 -0
- package/data/project-types/tr/trip-planner/art.json +17 -0
- package/data/project-types/tr/trip-planner/logo.webp +0 -0
- package/data/project-types/tr/trip-planner/manifest.json +1 -0
- package/data/project-types/wo/word-clues/art.json +17 -0
- package/data/project-types/wo/word-clues/logo.webp +0 -0
- package/data/project-types/wo/word-clues/manifest.json +1 -0
- package/package.json +4 -2
- package/schemas/image-model-identity.schema.json +10 -0
- package/schemas/knowledge-catalog-keywords.schema.json +50 -0
- package/schemas/project-type-version.schema.json +40 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"promptVersion": "workshop-mark-cutout-v3",
|
|
4
|
+
"subject": "a leather briefcase with a small key hanging from its handle",
|
|
5
|
+
"sourceSummary": "Run your job search like a campaign — a career coach tracks every application through the pipeline, a mock interviewer gets you ready, and a live board keeps the whole slog navigable.",
|
|
6
|
+
"styleReference": "wikipedia-astronomy",
|
|
7
|
+
"setReference": "data-dictionary-cutout-v3",
|
|
8
|
+
"sheet": "s02",
|
|
9
|
+
"cell": 7,
|
|
10
|
+
"fill": 0.88,
|
|
11
|
+
"shadow": {
|
|
12
|
+
"color": "#1c120a",
|
|
13
|
+
"opacity": 0.38,
|
|
14
|
+
"blur": 0.035,
|
|
15
|
+
"offsetY": 0.025
|
|
16
|
+
}
|
|
17
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"promptVersion": "workshop-mark-cutout-v3",
|
|
4
|
+
"subject": "a steaming cup of tea beside a single rounded speech bubble",
|
|
5
|
+
"sourceSummary": "A quiet room for talking — no tasks, no workspace, no deliverables.",
|
|
6
|
+
"styleReference": "wikipedia-astronomy",
|
|
7
|
+
"setReference": "data-dictionary-cutout-v3",
|
|
8
|
+
"sheet": "s02",
|
|
9
|
+
"cell": 4,
|
|
10
|
+
"fill": 0.88,
|
|
11
|
+
"shadow": {
|
|
12
|
+
"color": "#1c120a",
|
|
13
|
+
"opacity": 0.38,
|
|
14
|
+
"blur": 0.035,
|
|
15
|
+
"offsetY": 0.025
|
|
16
|
+
}
|
|
17
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"promptVersion": "workshop-mark-cutout-v3",
|
|
4
|
+
"subject": "two overlapping speech bubbles, one filled with a row of three dots",
|
|
5
|
+
"sourceSummary": "Practice a new language by chatting with a patient tutor who corrects gently and tracks your progress.",
|
|
6
|
+
"styleReference": "wikipedia-astronomy",
|
|
7
|
+
"setReference": "data-dictionary-cutout-v3",
|
|
8
|
+
"sheet": "round3-projects",
|
|
9
|
+
"cell": 3,
|
|
10
|
+
"fill": 0.88,
|
|
11
|
+
"shadow": {
|
|
12
|
+
"color": "#1c120a",
|
|
13
|
+
"opacity": 0.38,
|
|
14
|
+
"blur": 0.035,
|
|
15
|
+
"offsetY": 0.025
|
|
16
|
+
}
|
|
17
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"promptVersion": "workshop-mark-cutout-v3",
|
|
4
|
+
"subject": "a sturdy fireproof document box with a carry handle and a padlock",
|
|
5
|
+
"sourceSummary": "The \"in case of emergency\" file, actually complete.",
|
|
6
|
+
"styleReference": "wikipedia-astronomy",
|
|
7
|
+
"setReference": "data-dictionary-cutout-v3",
|
|
8
|
+
"sheet": "s03",
|
|
9
|
+
"cell": 2,
|
|
10
|
+
"fill": 0.88,
|
|
11
|
+
"shadow": {
|
|
12
|
+
"color": "#1c120a",
|
|
13
|
+
"opacity": 0.38,
|
|
14
|
+
"blur": 0.035,
|
|
15
|
+
"offsetY": 0.025
|
|
16
|
+
}
|
|
17
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"promptVersion": "workshop-mark-cutout-v3",
|
|
4
|
+
"subject": "a cooking pot with a sprig of herbs and three wisps of steam",
|
|
5
|
+
"sourceSummary": "Answer \"what's for dinner?\" once a week.",
|
|
6
|
+
"styleReference": "wikipedia-astronomy",
|
|
7
|
+
"setReference": "data-dictionary-cutout-v3",
|
|
8
|
+
"sheet": "round3-projects",
|
|
9
|
+
"cell": 2,
|
|
10
|
+
"fill": 0.88,
|
|
11
|
+
"shadow": {
|
|
12
|
+
"color": "#1c120a",
|
|
13
|
+
"opacity": 0.38,
|
|
14
|
+
"blur": 0.035,
|
|
15
|
+
"offsetY": 0.025
|
|
16
|
+
}
|
|
17
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"promptVersion": "workshop-mark-cutout-v3",
|
|
4
|
+
"subject": "a photo, a short film strip and a vinyl record stacked together",
|
|
5
|
+
"sourceSummary": "Browse a folder of images, videos, and audio in a live gallery.",
|
|
6
|
+
"styleReference": "wikipedia-astronomy",
|
|
7
|
+
"setReference": "data-dictionary-cutout-v3",
|
|
8
|
+
"sheet": "s01",
|
|
9
|
+
"cell": 5,
|
|
10
|
+
"fill": 0.88,
|
|
11
|
+
"shadow": {
|
|
12
|
+
"color": "#1c120a",
|
|
13
|
+
"opacity": 0.38,
|
|
14
|
+
"blur": 0.035,
|
|
15
|
+
"offsetY": 0.025
|
|
16
|
+
}
|
|
17
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"kind": "project-type",
|
|
4
|
+
"id": "media-library",
|
|
5
|
+
"name": "Media Library",
|
|
6
|
+
"description": "Browse a folder of images, videos, and audio in a live gallery. Preview and play your media without importing or moving the originals.",
|
|
7
|
+
"tags": [
|
|
8
|
+
"photos",
|
|
9
|
+
"images",
|
|
10
|
+
"video",
|
|
11
|
+
"audio",
|
|
12
|
+
"gallery",
|
|
13
|
+
"library",
|
|
14
|
+
"folder"
|
|
15
|
+
],
|
|
16
|
+
"category": "creative",
|
|
17
|
+
"icon": "camera",
|
|
18
|
+
"maintainer": {
|
|
19
|
+
"name": "Gezel"
|
|
20
|
+
},
|
|
21
|
+
"logo": "logo.webp",
|
|
22
|
+
"license": "MIT"
|
|
23
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Media Library
|
|
2
|
+
|
|
3
|
+
This project is a window into a folder of photos, illustrations, videos, and
|
|
4
|
+
recordings. The gallery finds media in the workspace and its subfolders, with
|
|
5
|
+
search, folder and format filters, sorting, and a larger preview. Files stay
|
|
6
|
+
where they are: no import, copy, or reorganization is needed.
|
|
7
|
+
|
|
8
|
+
Help the person find and understand their collection. Preserve original media
|
|
9
|
+
and folder names. Discuss proposed edits or organization before changing files.
|
|
10
|
+
Do not assume a filename or modification date proves when or where a photo was
|
|
11
|
+
taken. Playback depends on the device's supported formats; unpreviewable files
|
|
12
|
+
remain listed and can be opened through Gezel's existing viewers.
|
|
13
|
+
|
|
14
|
+
The shared Add files control can copy selected files into this workspace when managed writes are enabled. Existing names are preserved by choosing a new name. Browsing does not change files. Hidden folders, dependency folders, and document
|
|
15
|
+
companion folders are skipped. Scans stop after 100 folders or 10,000 files and
|
|
16
|
+
clearly label a partial library. The bundled samples are only a standalone demo;
|
|
17
|
+
they are never inserted into a real project's folder.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"releasedAt": "2026-10-19T00:00:00Z",
|
|
5
|
+
"extends": "media-production",
|
|
6
|
+
"nameTemplate": "Media Library",
|
|
7
|
+
"aboutTemplate": "about.md",
|
|
8
|
+
"missionTemplate": "mission.md",
|
|
9
|
+
"pages": {
|
|
10
|
+
"entry": "index.html",
|
|
11
|
+
"api": 1,
|
|
12
|
+
"reads": [
|
|
13
|
+
{
|
|
14
|
+
"source": "workspace",
|
|
15
|
+
"path": ".",
|
|
16
|
+
"subtree": true
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"imports": [
|
|
20
|
+
{
|
|
21
|
+
"id": "library",
|
|
22
|
+
"source": "workspace",
|
|
23
|
+
"path": ".",
|
|
24
|
+
"accept": [
|
|
25
|
+
".jpg",
|
|
26
|
+
".jpeg",
|
|
27
|
+
".png",
|
|
28
|
+
".gif",
|
|
29
|
+
".webp",
|
|
30
|
+
".avif",
|
|
31
|
+
".bmp",
|
|
32
|
+
".svg",
|
|
33
|
+
".ico",
|
|
34
|
+
".heic",
|
|
35
|
+
".heif",
|
|
36
|
+
".tif",
|
|
37
|
+
".tiff",
|
|
38
|
+
".dng",
|
|
39
|
+
".raw",
|
|
40
|
+
".cr2",
|
|
41
|
+
".cr3",
|
|
42
|
+
".nef",
|
|
43
|
+
".arw",
|
|
44
|
+
".orf",
|
|
45
|
+
".raf",
|
|
46
|
+
".mp4",
|
|
47
|
+
".webm",
|
|
48
|
+
".mov",
|
|
49
|
+
".m4v",
|
|
50
|
+
".ogv",
|
|
51
|
+
".avi",
|
|
52
|
+
".mkv",
|
|
53
|
+
".mpg",
|
|
54
|
+
".mpeg",
|
|
55
|
+
".mts",
|
|
56
|
+
".m2ts",
|
|
57
|
+
".mp3",
|
|
58
|
+
".wav",
|
|
59
|
+
".ogg",
|
|
60
|
+
".oga",
|
|
61
|
+
".m4a",
|
|
62
|
+
".aac",
|
|
63
|
+
".flac",
|
|
64
|
+
".opus",
|
|
65
|
+
".aif",
|
|
66
|
+
".aiff",
|
|
67
|
+
".wma"
|
|
68
|
+
],
|
|
69
|
+
"maxFileBytes": 268435456
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Mission
|
|
2
|
+
|
|
3
|
+
- Make the media in the selected folder easy to find and browse.
|
|
4
|
+
- Preview images and play supported video and audio in place.
|
|
5
|
+
- Keep original files intact and make unavailable previews clear.
|
|
6
|
+
- Reflect new, renamed, and removed files as the folder changes.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" viewBox="0 0 800 600"><title>Alpine morning — sample illustration</title><rect width="800" height="600" fill="#d8e5e1"/><circle cx="630" cy="135" r="58" fill="#edca91"/><path d="M0 450L210 120l175 230 120-170 295 290v130H0" fill="#829894"/><path d="M135 238l75-118 84 110-80-29z M460 243l45-63 72 76-73-27z" fill="#f9f4e9"/><path d="M0 460Q230 330 440 475T800 435v165H0" fill="#556f66"/><path d="M0 530Q280 420 500 540T800 500v100H0" fill="#354f48"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" viewBox="0 0 800 600"><title>Quiet coast — sample illustration</title><rect width="800" height="600" fill="#e6ded0"/><circle cx="570" cy="150" r="72" fill="#d8aa78"/><path d="M0 290Q180 270 800 305v295H0" fill="#9db9bb"/><path d="M0 400Q180 390 380 450T800 470v130H0" fill="#698e91"/><path d="M0 600V470Q260 400 380 475T800 530v70" fill="#d8c6a9"/><path d="M0 480Q240 414 395 487T800 541" stroke="#f7eee1" stroke-width="8" fill="none"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" viewBox="0 0 800 600"><title>Evening light — sample illustration</title><rect width="800" height="600" fill="#ccb7a7"/><circle cx="380" cy="285" r="100" fill="#e5b880"/><path d="M0 400Q240 190 475 400T800 320v280H0" fill="#9a8275"/><path d="M0 460Q250 330 510 450T800 420v180H0" fill="#6c7370"/><path d="M0 535Q210 450 450 550T800 470v130H0" fill="#3e5555"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" viewBox="0 0 800 600"><title>Forest path — sample illustration</title><rect width="800" height="600" fill="#becab3"/><path d="M0 600V290Q300 250 800 320v280" fill="#738971"/><path d="M285 600Q440 420 410 300Q485 430 535 600" fill="#c6b68e"/><g fill="#425e4a"><path d="M40 0h50v600H40z M180 0h38v600h-38z M570 0h60v600h-60z M730 0h50v600h-50z"/><circle cx="100" cy="75" r="140"/><circle cx="650" cy="35" r="180"/></g><g fill="#263f33"><path d="M10 0h30v600H10z M665 0h25v600h-25z"/></g></svg>
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" viewBox="0 0 800 600"><title>Color study — sample illustration</title><rect width="800" height="600" fill="#e9decc"/><rect x="130" y="100" width="270" height="340" rx="8" fill="#ad6b4b"/><circle cx="450" cy="300" r="170" fill="#63765c"/><rect x="355" y="350" width="280" height="150" rx="6" fill="#d4b16c"/><path d="M170 490L270 300l90 190z" fill="#3f555b"/></svg>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
color-scheme: light dark;
|
|
3
|
+
--bg: #faf7f2; --surface: #fffdf9; --text: #2b2620; --muted: #71675c;
|
|
4
|
+
--border: #dcd4c8; --accent: #835333; --soft: #eee5da; --danger: #a42b2b;
|
|
5
|
+
font-family: var(--font-body, system-ui, sans-serif); font-size: 16px;
|
|
6
|
+
}
|
|
7
|
+
@media (prefers-color-scheme: dark) { :root { --bg: #1c1a17; --surface: #262320; --text: #efe9e0; --muted: #b9aea0; --border: #464039; --accent: #e2b38c; --soft: #332b24; --danger: #ffaaaa; } }
|
|
8
|
+
:root[data-theme="light"] { color-scheme: light; --bg: #faf7f2; --surface: #fffdf9; --text: #2b2620; --muted: #71675c; --border: #dcd4c8; --accent: #835333; --soft: #eee5da; --danger: #a42b2b; }
|
|
9
|
+
:root[data-theme="dark"] { color-scheme: dark; --bg: #1c1a17; --surface: #262320; --text: #efe9e0; --muted: #b9aea0; --border: #464039; --accent: #e2b38c; --soft: #332b24; --danger: #ffaaaa; }
|
|
10
|
+
* { box-sizing: border-box; }
|
|
11
|
+
[hidden] { display: none !important; }
|
|
12
|
+
body { margin: 0; background: var(--bg); color: var(--text); line-height: 1.5; }
|
|
13
|
+
main { max-width: 1220px; margin: auto; padding: clamp(16px, 4vw, 44px); }
|
|
14
|
+
h1,h2 { font-family: var(--font-heading, Georgia, serif); font-weight: 400; line-height: 1.25; }
|
|
15
|
+
h1 { font-size: clamp(1.8rem, 5vw, 2.5rem); margin: 0; }
|
|
16
|
+
h2 { margin: 0; font-size: 1.3rem; overflow-wrap: anywhere; }
|
|
17
|
+
p { margin: 0 0 12px; }
|
|
18
|
+
header, .toolbar, .library-heading, .preview-heading, .preview-actions { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
|
|
19
|
+
header { margin: 26px 0 22px; }
|
|
20
|
+
.eyebrow { color: var(--accent); font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; margin-bottom: 8px; }
|
|
21
|
+
.intro { margin: 8px 0 0; color: var(--muted); }
|
|
22
|
+
button,input,select { font: inherit; font-family: var(--font-ui, system-ui, sans-serif); border: 1px solid var(--border); border-radius: 6px; color: var(--text); background: var(--surface); min-height: 44px; padding: 9px 12px; }
|
|
23
|
+
button { cursor: pointer; box-shadow: inset 0 1px 0 color-mix(in srgb, var(--text) 5%, transparent), 0 1px 2px #0000000d; }
|
|
24
|
+
button:hover { border-color: var(--accent); background: var(--soft); }
|
|
25
|
+
button:disabled { opacity: .5; cursor: default; }
|
|
26
|
+
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
|
|
27
|
+
input,select { display: block; width: 100%; margin-top: 5px; font-size: .9rem; }
|
|
28
|
+
.counts { display: flex; flex-wrap: wrap; gap: 28px; border-block: 1px solid var(--border); padding: 16px 0; margin: 24px 0; }
|
|
29
|
+
.counts div { display: flex; align-items: baseline; gap: 10px; }
|
|
30
|
+
dt { color: var(--muted); font-size: .85rem; } dd { margin: 0; font-size: 1.3rem; font-variant-numeric: tabular-nums; }
|
|
31
|
+
.filters { display: flex; gap: 12px; flex-wrap: wrap; margin: 20px 0; }
|
|
32
|
+
.filters label { flex: 1 1 120px; min-width: 0; color: var(--muted); font-size: .8rem; }
|
|
33
|
+
.filters label:first-child { flex: 2 1 210px; }
|
|
34
|
+
.muted, #status, footer, #updated { color: var(--muted); font-size: .85rem; }
|
|
35
|
+
.toolbar { margin-bottom: 16px; flex-wrap: wrap; }
|
|
36
|
+
.toolbar p { margin: 0; }
|
|
37
|
+
.view-choices { display: inline-flex; gap: 4px; padding: 4px; background: var(--soft); border: 1px solid var(--border); border-radius: 6px; }
|
|
38
|
+
.view-choices button { font-size: .85rem; }
|
|
39
|
+
.view-choices [aria-pressed="true"] { border-color: var(--accent); background: var(--soft); color: var(--accent); box-shadow: inset 0 1px 3px #0002; }
|
|
40
|
+
#gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); list-style: none; gap: 20px; margin: 0; padding: 0; }
|
|
41
|
+
#gallery li { min-width: 0; }
|
|
42
|
+
svg { width: 36px; height: 36px; stroke: currentColor; stroke-width: 1.4; fill: none; stroke-linecap: round; stroke-linejoin: round; }
|
|
43
|
+
#gallery[data-view="list"] { grid-template-columns: 1fr; gap: 8px; }
|
|
44
|
+
#show-more { display: block; margin: 24px auto; }
|
|
45
|
+
.empty { padding: 40px 20px; text-align: center; border: 1px dashed var(--border); border-radius: 10px; background: var(--surface); }
|
|
46
|
+
.empty p { margin: 12px 0 0; color: var(--muted); }
|
|
47
|
+
#error,#preview-error { color: var(--danger); overflow-wrap: anywhere; }
|
|
48
|
+
.notice,[data-gezel-demo-banner] { padding: 12px 16px; background: var(--soft); border-radius: 6px; font-size: .85rem; }
|
|
49
|
+
[data-gezel-demo-banner] { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
|
|
50
|
+
footer { margin-top: 32px; }
|
|
51
|
+
dialog { width: min(1040px, calc(100% - 32px)); max-height: calc(100dvh - 32px); padding: 20px; background: var(--bg); color: var(--text); border: 1px solid var(--border); border-radius: 10px; }
|
|
52
|
+
dialog::backdrop { background: #000b; }
|
|
53
|
+
.preview-heading { align-items: flex-start; }
|
|
54
|
+
.preview-heading > div { min-width: 0; }
|
|
55
|
+
#preview-path { overflow-wrap: anywhere; margin: 6px 0 0; }
|
|
56
|
+
#preview-media { min-height: 160px; max-height: 62dvh; display: flex; align-items: center; justify-content: center; margin: 20px 0 12px; background: var(--soft); border-radius: 6px; overflow: hidden; }
|
|
57
|
+
#preview-media img,#preview-media video { display: block; max-width: 100%; max-height: 62dvh; object-fit: contain; }
|
|
58
|
+
#preview-media audio { width: min(600px, 100%); }
|
|
59
|
+
.preview-actions { flex-wrap: wrap; }
|
|
60
|
+
.navigation { display: flex; align-items: center; gap: 12px; }
|
|
61
|
+
#position { font-size: .8rem; color: var(--muted); }
|
|
62
|
+
@media (max-width: 480px) {
|
|
63
|
+
#gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
|
|
64
|
+
.counts { gap: 20px; }
|
|
65
|
+
header { align-items: flex-start; }
|
|
66
|
+
.library-heading { align-items: flex-start; flex-direction: column; gap: 4px; }
|
|
67
|
+
dialog { padding: 14px; }
|
|
68
|
+
.preview-heading { flex-wrap: wrap; }
|
|
69
|
+
.navigation { flex-wrap: wrap; gap: 8px; }
|
|
70
|
+
[data-gezel-demo-banner] { align-items: flex-start; flex-direction: column; }
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Shared components own file presentation; the page owns its layout. */
|
|
74
|
+
#add-files { margin: 20px 0; }
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
(() => {
|
|
2
|
+
'use strict';
|
|
3
|
+
const model = window.mediaLibraryFiles;
|
|
4
|
+
const $ = (id) => document.getElementById(id);
|
|
5
|
+
const labels = { image: 'Image', video: 'Video', audio: 'Audio' };
|
|
6
|
+
const icons = { image: 'M3 3h18v18H3z M3 16l5-5 5 5 4-4 4 4 M15 7h.01', video: 'M4 3h16v18H4z M4 7h16 M4 17h16 M10 10l5 2-5 2z', audio: 'M9 18V5l11-2v12 M9 8l11-2 M9 18c0 3-6 3-6 0s6-3 6 0 M20 15c0 3-6 3-6 0s6-3 6 0' };
|
|
7
|
+
const samples = [
|
|
8
|
+
['Journeys/Alpine morning.svg', 'alpine.svg', 2210], ['Journeys/Quiet coast.svg', 'coast.svg', 1840],
|
|
9
|
+
['Journeys/Forest path.svg', 'forest.svg', 2670], ['Studio/Color study.svg', 'study.svg', 1420],
|
|
10
|
+
['Studio/Evening light.svg', 'evening.svg', 1980], ['Motion/Light study.webm', 'light.webm', 24000],
|
|
11
|
+
['Recordings/Three notes.wav', 'notes.wav', 96044],
|
|
12
|
+
].map(([path, asset, size], i) => ({ path, asset, kind: model.kind(path), size, mtime: 1792368000000 - i * 86400000 }));
|
|
13
|
+
const api = window.gezel || window.makeDemoGezel({ page: { typeName: 'Media Library' }, existingPaths: samples.map(file => file.path) });
|
|
14
|
+
const demoMode = api.page.mode === 'demo';
|
|
15
|
+
const components = api.ui.components;
|
|
16
|
+
const componentCards = [];
|
|
17
|
+
const mountAdder = () => components.fileAdder('#add-files', { target: 'library', onAdded: () => refresh() });
|
|
18
|
+
let adder = mountAdder();
|
|
19
|
+
let files = [], shown = [], visible = 24, view = 'grid', busy = false, again = false, stopped = false, debounce, currentPath = null, previewRevision = 0, focusPath = null;
|
|
20
|
+
const watches = new Map();
|
|
21
|
+
function element(tag, text, className) { const el = document.createElement(tag); if (text !== undefined) el.textContent = text; if (className) el.className = className; return el; }
|
|
22
|
+
function icon(type) {
|
|
23
|
+
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
24
|
+
svg.setAttribute('viewBox', '0 0 24 24'); svg.setAttribute('aria-hidden', 'true');
|
|
25
|
+
const path = document.createElementNS(svg.namespaceURI, 'path'); path.setAttribute('d', icons[type]); svg.append(path); return svg;
|
|
26
|
+
}
|
|
27
|
+
function message(id, text) { $(id).textContent = text; $(id).hidden = !text; }
|
|
28
|
+
function size(value) {
|
|
29
|
+
if (value < 1024) return `${value} B`;
|
|
30
|
+
const units = ['KB', 'MB', 'GB', 'TB']; let n = value / 1024, i = 0;
|
|
31
|
+
while (n >= 1024 && i < units.length - 1) { n /= 1024; i++; }
|
|
32
|
+
return `${new Intl.NumberFormat(undefined, { maximumFractionDigits: 1 }).format(n)} ${units[i]}`;
|
|
33
|
+
}
|
|
34
|
+
const stamp = (value) => value ? new Date(value).toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' }) : 'Date unavailable';
|
|
35
|
+
const mediaUrl = (file) => demoMode && file.asset ? `assets/${file.asset}` : api.data.url(file.path);
|
|
36
|
+
function stopPlayback() {
|
|
37
|
+
previewRevision++;
|
|
38
|
+
for (const media of $('preview-media').querySelectorAll('video,audio')) { media.pause(); media.removeAttribute('src'); media.load(); }
|
|
39
|
+
$('preview-media').replaceChildren();
|
|
40
|
+
}
|
|
41
|
+
function card(file) {
|
|
42
|
+
const li = document.createElement('li');
|
|
43
|
+
const card = components.fileCard(li, { file: { ...file, source: 'workspace' }, variant: view === 'list' ? 'row' : 'tile', thumbnail: file.kind === 'image' && model.browserImages.has(model.extension(file.path)) ? mediaUrl(file) : false, onActivate: () => openPreview(file.path) });
|
|
44
|
+
card.element.dataset.path = file.path; componentCards.push(card); return li;
|
|
45
|
+
}
|
|
46
|
+
function render() {
|
|
47
|
+
const previousFocus = document.activeElement?.dataset.path;
|
|
48
|
+
shown = model.select(files, { query: $('search').value, kind: $('kind').value, folder: $('folder').value, sort: $('sort').value });
|
|
49
|
+
$('gallery').dataset.view = view;
|
|
50
|
+
componentCards.splice(0).forEach(card => card.destroy());
|
|
51
|
+
$('gallery').replaceChildren(...shown.slice(0, visible).map(card));
|
|
52
|
+
for (const type of ['image', 'video', 'audio']) $(`${type}-count`).textContent = files.filter((f) => f.kind === type).length.toLocaleString();
|
|
53
|
+
$('file-count').textContent = `${files.length.toLocaleString()} media file${files.length === 1 ? '' : 's'}`;
|
|
54
|
+
$('status').textContent = shown.length > visible ? `Showing ${visible} of ${shown.length.toLocaleString()} matches` : `${shown.length.toLocaleString()} of ${files.length.toLocaleString()} media files`;
|
|
55
|
+
$('empty').hidden = files.length > 0;
|
|
56
|
+
$('no-matches').hidden = files.length === 0 || shown.length > 0;
|
|
57
|
+
$('show-more').hidden = shown.length <= visible;
|
|
58
|
+
$('view-grid').setAttribute('aria-pressed', String(view === 'grid')); $('view-list').setAttribute('aria-pressed', String(view === 'list'));
|
|
59
|
+
if (previousFocus) [...$('gallery').querySelectorAll('gezel-file-card')].find((el) => el.dataset.path === previousFocus)?.shadowRoot.querySelector('button').focus();
|
|
60
|
+
}
|
|
61
|
+
function openPreview(path) {
|
|
62
|
+
const file = files.find((f) => f.path === path); if (!file) return;
|
|
63
|
+
const wasOpen = $('preview').open;
|
|
64
|
+
if (!wasOpen) focusPath = path;
|
|
65
|
+
stopPlayback(); currentPath = path;
|
|
66
|
+
const rev = previewRevision;
|
|
67
|
+
$('preview-title').textContent = path.split('/').pop();
|
|
68
|
+
$('preview-path').textContent = path;
|
|
69
|
+
$('preview-detail').textContent = `${labels[file.kind]} · ${model.extension(path).toUpperCase()} · ${size(file.size)} · Modified ${stamp(file.mtime)}`;
|
|
70
|
+
message('preview-error', '');
|
|
71
|
+
$('open-file').hidden = !demoMode && (api.page.mode !== 'embedded' || !api.data.open);
|
|
72
|
+
const index = shown.findIndex((f) => f.path === path);
|
|
73
|
+
$('previous').disabled = index <= 0; $('next').disabled = index < 0 || index >= shown.length - 1;
|
|
74
|
+
$('position').textContent = index < 0 ? '' : `${index + 1} of ${shown.length}`;
|
|
75
|
+
if (file.kind === 'image' && !model.browserImages.has(model.extension(path))) {
|
|
76
|
+
$('preview-media').append(icon(file.kind));
|
|
77
|
+
message('preview-error', 'This image format cannot be previewed here. Open the file in Gezel to explore available viewers.');
|
|
78
|
+
} else {
|
|
79
|
+
const media = document.createElement(file.kind === 'image' ? 'img' : file.kind);
|
|
80
|
+
if (file.kind === 'image') media.alt = file.path.split('/').pop();
|
|
81
|
+
else { media.controls = true; media.preload = 'metadata'; if (file.kind === 'video') media.playsInline = true; }
|
|
82
|
+
media.addEventListener('error', () => {
|
|
83
|
+
if (rev !== previewRevision) return;
|
|
84
|
+
message('preview-error', 'This file could not be previewed. Its format may be unsupported, or the file may have moved. Try Refresh or open it in Gezel.');
|
|
85
|
+
});
|
|
86
|
+
media.addEventListener(file.kind === 'image' ? 'load' : 'loadedmetadata', () => {
|
|
87
|
+
if (rev !== previewRevision) return;
|
|
88
|
+
const dimensions = file.kind === 'image' ? `${media.naturalWidth} × ${media.naturalHeight}` : file.kind === 'video' ? `${media.videoWidth} × ${media.videoHeight}` : '';
|
|
89
|
+
const seconds = Number.isFinite(media.duration) ? `${Math.floor(media.duration / 60)}:${String(Math.floor(media.duration % 60)).padStart(2, '0')}` : '';
|
|
90
|
+
$('preview-detail').textContent = [labels[file.kind], dimensions, seconds, size(file.size), `Modified ${stamp(file.mtime)}`].filter(Boolean).join(' · ');
|
|
91
|
+
});
|
|
92
|
+
try { media.src = mediaUrl(file); $('preview-media').append(media); }
|
|
93
|
+
catch (error) { message('preview-error', error.message || 'Media preview is unavailable on this device.'); }
|
|
94
|
+
}
|
|
95
|
+
if (!wasOpen) $('preview').showModal();
|
|
96
|
+
}
|
|
97
|
+
function move(delta) {
|
|
98
|
+
const at = shown.findIndex((f) => f.path === currentPath); const next = shown[at + delta];
|
|
99
|
+
if (at >= 0 && next) openPreview(next.path);
|
|
100
|
+
}
|
|
101
|
+
function schedule() { clearTimeout(debounce); debounce = setTimeout(() => { if (!stopped) void refresh(); }, 250); }
|
|
102
|
+
async function refresh() {
|
|
103
|
+
if (busy) { again = true; return; } busy = true; $('refresh').disabled = true;
|
|
104
|
+
$('gallery').setAttribute('aria-busy', 'true'); message('error', '');
|
|
105
|
+
try {
|
|
106
|
+
const result = demoMode ? { files: samples.concat(components.demo.files().map(file => ({ ...file, kind: model.kind(file.path) }))), folders: ['.', 'Journeys', 'Studio', 'Motion', 'Recordings'] } : await model.scan((path) => api.data.list(path), { cancelled: () => stopped });
|
|
107
|
+
if (stopped) return;
|
|
108
|
+
files = result.files;
|
|
109
|
+
const chosen = $('folder').value;
|
|
110
|
+
const option = (value, text) => { const el = element('option', text); el.value = value; return el; };
|
|
111
|
+
$('folder').replaceChildren(option('', 'All folders'), ...result.folders.map((path) => option(path, path === '.' ? 'Project folder only' : path)));
|
|
112
|
+
$('folder').value = result.folders.includes(chosen) ? chosen : '';
|
|
113
|
+
const notes = [];
|
|
114
|
+
if (result.limited) notes.push(`Partial library: scanned up to ${result.maxFolders} folders and ${result.maxFiles.toLocaleString()} files.`);
|
|
115
|
+
if (result.skipped) notes.push(`${result.skipped} subfolder${result.skipped === 1 ? '' : 's'} could not be read.`);
|
|
116
|
+
message('notice', notes.join(' '));
|
|
117
|
+
if (!demoMode) {
|
|
118
|
+
const visited = new Set(result.folders);
|
|
119
|
+
for (const [path, stop] of watches) if (!visited.has(path)) { stop(); watches.delete(path); }
|
|
120
|
+
for (const path of visited) if (!watches.has(path)) watches.set(path, api.data.watch(path, schedule, { intervalMs: 15000 }));
|
|
121
|
+
}
|
|
122
|
+
render();
|
|
123
|
+
$('updated').textContent = demoMode ? 'Sample library' : `Updated ${new Date().toLocaleTimeString(undefined, { hour: 'numeric', minute: '2-digit' })}`;
|
|
124
|
+
if (currentPath && !files.some((f) => f.path === currentPath)) { stopPlayback(); message('preview-error', 'This file is no longer in the library. Close this preview to browse the updated folder.'); $('open-file').hidden = true; $('previous').disabled = true; $('next').disabled = true; }
|
|
125
|
+
} catch (error) { message('error', `Could not read the folder: ${error.message || 'Try Refresh.'}`); $('status').textContent = files.length ? 'Showing the previous listing.' : 'Folder unavailable.'; }
|
|
126
|
+
finally { busy = false; $('refresh').disabled = false; $('gallery').removeAttribute('aria-busy'); if (again && !stopped) { again = false; schedule(); } }
|
|
127
|
+
}
|
|
128
|
+
$('search').addEventListener('input', () => { visible = 24; render(); });
|
|
129
|
+
for (const id of ['kind', 'folder', 'sort']) $(id).addEventListener('change', () => { visible = 24; render(); });
|
|
130
|
+
for (const style of ['grid', 'list']) $(`view-${style}`).addEventListener('click', () => { view = style; render(); });
|
|
131
|
+
$('show-more').addEventListener('click', () => { visible += 24; render(); });
|
|
132
|
+
$('refresh').addEventListener('click', () => { void refresh(); });
|
|
133
|
+
$('reset-demo').addEventListener('click', () => { components.demo.reset(); adder.destroy(); adder = mountAdder(); $('search').value = ''; $('kind').value = ''; $('folder').value = ''; $('sort').value = 'newest'; visible = 24; view = 'grid'; $('preview').close(); void refresh(); });
|
|
134
|
+
$('close-preview').addEventListener('click', () => $('preview').close());
|
|
135
|
+
$('preview').addEventListener('close', () => { stopPlayback(); currentPath = null; [...$('gallery').querySelectorAll('gezel-file-card')].find((el) => el.dataset.path === focusPath)?.shadowRoot.querySelector('button').focus(); });
|
|
136
|
+
$('previous').addEventListener('click', () => move(-1)); $('next').addEventListener('click', () => move(1));
|
|
137
|
+
$('preview').addEventListener('keydown', (e) => {
|
|
138
|
+
if (['VIDEO', 'AUDIO', 'INPUT', 'SELECT'].includes(e.target.tagName)) return;
|
|
139
|
+
if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') { e.preventDefault(); move(e.key === 'ArrowLeft' ? -1 : 1); }
|
|
140
|
+
});
|
|
141
|
+
$('open-file').addEventListener('click', async () => {
|
|
142
|
+
if (demoMode) { message('preview-error', 'In Gezel, this button opens the original file in its project viewer.'); return; }
|
|
143
|
+
try { await api.data.open(currentPath); $('preview').close(); }
|
|
144
|
+
catch (error) { message('preview-error', error.message || 'Could not open the file.'); }
|
|
145
|
+
});
|
|
146
|
+
document.querySelector('[data-gezel-demo-banner]').hidden = !demoMode;
|
|
147
|
+
const theme = ({ mode }) => { document.documentElement.dataset.theme = mode; };
|
|
148
|
+
theme(api.ui.theme); const stopTheme = api.ui.onTheme(theme);
|
|
149
|
+
const timer = demoMode ? null : setInterval(() => { if (document.visibilityState !== 'hidden') void refresh(); }, 30000);
|
|
150
|
+
document.addEventListener('visibilitychange', () => { if (!demoMode && document.visibilityState !== 'hidden') schedule(); });
|
|
151
|
+
window.addEventListener('pagehide', () => { stopped = true; adder.destroy(); componentCards.forEach(card => card.destroy()); clearTimeout(debounce); clearInterval(timer); stopPlayback(); stopTheme(); for (const stop of watches.values()) stop(); }, { once: true });
|
|
152
|
+
void refresh();
|
|
153
|
+
})();
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<meta name="gezel-demo" content="standalone" />
|
|
7
|
+
<title>Media Library</title>
|
|
8
|
+
<link rel="stylesheet" href="gallery.css" />
|
|
9
|
+
<script src="media-files.js" defer></script>
|
|
10
|
+
<script src="gallery.js" defer></script>
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<main>
|
|
14
|
+
<aside data-gezel-demo-banner hidden><span>Sample library. Illustrations, a short clip, and three notes — all local to this page.</span><button id="reset-demo" type="button">Reset demo</button></aside>
|
|
15
|
+
<header><div><p class="eyebrow">Your collection, in place</p><h1>Media Library</h1><p class="intro">A window into your photos, films, and recordings.</p></div><button id="refresh" type="button">Refresh</button></header>
|
|
16
|
+
<div id="add-files"></div>
|
|
17
|
+
<dl class="counts" aria-label="Library summary"><div><dt>Images</dt><dd id="image-count">—</dd></div><div><dt>Videos</dt><dd id="video-count">—</dd></div><div><dt>Audio</dt><dd id="audio-count">—</dd></div></dl>
|
|
18
|
+
<section aria-labelledby="library-heading">
|
|
19
|
+
<div class="library-heading"><h2 id="library-heading">Browse your library</h2><span id="updated"></span></div>
|
|
20
|
+
<div class="filters">
|
|
21
|
+
<label>Find media<input id="search" type="search" placeholder="Search names and folders…" /></label>
|
|
22
|
+
<label>Media type<select id="kind"><option value="">All media</option><option value="image">Images</option><option value="video">Videos</option><option value="audio">Audio</option></select></label>
|
|
23
|
+
<label>Folder<select id="folder"><option value="">All folders</option></select></label>
|
|
24
|
+
<label>Sort by<select id="sort"><option value="newest">Recently modified</option><option value="oldest">Oldest modified</option><option value="name">Name</option><option value="size">Largest first</option></select></label>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="toolbar"><p id="status" role="status" aria-live="polite">Looking for media…</p><div class="view-choices" role="group" aria-label="Gallery layout"><button id="view-grid" type="button" aria-pressed="true">Grid</button><button id="view-list" type="button" aria-pressed="false">List</button></div></div>
|
|
27
|
+
<p id="error" role="alert" hidden></p><p id="notice" class="notice" hidden></p>
|
|
28
|
+
<ul id="gallery" data-view="grid" aria-label="Media files"></ul>
|
|
29
|
+
<button id="show-more" type="button" hidden>Show more</button>
|
|
30
|
+
<div id="empty" class="empty" hidden><h2>Your library starts here</h2><p>Choose a media folder when creating this project, or set its folder in project settings. Images, videos, and audio in that folder and its subfolders appear automatically.</p></div>
|
|
31
|
+
<p id="no-matches" class="empty" hidden>No media matches these filters. Try another name, folder, or media type.</p>
|
|
32
|
+
</section>
|
|
33
|
+
<footer><span id="file-count"></span> · Originals stay in your folder. Add files copies selected files into this folder. Playback depends on the formats supported by your device.</footer>
|
|
34
|
+
</main>
|
|
35
|
+
<dialog id="preview" aria-labelledby="preview-title">
|
|
36
|
+
<div class="preview-heading"><div><h2 id="preview-title"></h2><p id="preview-path" class="muted"></p></div><button id="close-preview" type="button" autofocus>Close</button></div>
|
|
37
|
+
<div id="preview-media"></div><p id="preview-detail" class="muted"></p><p id="preview-error" role="status" hidden></p>
|
|
38
|
+
<div class="preview-actions"><div class="navigation"><button id="previous" type="button">Previous</button><span id="position"></span><button id="next" type="button">Next</button></div><button id="open-file" type="button">Open in Gezel</button></div>
|
|
39
|
+
</dialog>
|
|
40
|
+
</body>
|
|
41
|
+
</html>
|