@hiai-gg/hiai-opencode 0.2.0 → 0.2.2
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/.env.example +4 -0
- package/AGENTS.md +40 -44
- package/ARCHITECTURE.md +4 -3
- package/LICENSE.md +14 -0
- package/README.md +61 -30
- package/assets/cli/hiai-opencode.mjs +4 -4
- package/config/hiai-opencode.schema.json +11 -13
- package/dist/agents/{bob.d.ts → bob/claude.d.ts} +6 -2
- package/dist/agents/bob/core.d.ts +6 -0
- package/dist/agents/bob/gpt.d.ts +11 -0
- package/dist/agents/bob/index.d.ts +3 -0
- package/dist/agents/coder/core.d.ts +4 -0
- package/dist/agents/coder/gpt.d.ts +1 -4
- package/dist/agents/coder/index.d.ts +1 -0
- package/dist/agents/manager/agent.d.ts +1 -1
- package/dist/agents/manager/default-prompt-sections.d.ts +4 -4
- package/dist/agents/manager/guard-integration.d.ts +1 -0
- package/dist/agents/prompt-library/index.d.ts +0 -1
- package/dist/agents/prompt-library/shared-execution.d.ts +9 -0
- package/dist/agents/strategist/behavioral-summary.d.ts +1 -1
- package/dist/agents/strategist/identity-constraints.d.ts +1 -1
- package/dist/agents/strategist/plan-generation.d.ts +1 -1
- package/dist/agents/types.d.ts +2 -1
- package/dist/config/defaults.d.ts +1 -0
- package/dist/config/platform-schema.d.ts +26 -26
- package/dist/config/schema/agent-names.d.ts +6 -6
- package/dist/config/schema/agent-overrides.d.ts +0 -128
- package/dist/config/schema/hiai-opencode-config.d.ts +0 -128
- package/dist/config/types.d.ts +2 -2
- package/dist/features/background-agent/error-classifier.d.ts +1 -0
- package/dist/features/background-agent/manager-notifier.d.ts +46 -0
- package/dist/features/background-agent/manager-types.d.ts +40 -0
- package/dist/features/background-agent/manager.d.ts +3 -19
- package/dist/features/background-agent/polling-manager.d.ts +51 -0
- package/dist/features/boulder-state/constants.d.ts +3 -0
- package/dist/features/boulder-state/storage.d.ts +95 -0
- package/dist/features/boulder-state/types.d.ts +17 -0
- package/dist/features/builtin-commands/templates/doctor.d.ts +1 -1
- package/dist/features/builtin-commands/templates/loop.d.ts +2 -0
- package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
- package/dist/features/builtin-skills/skills/interview-me.d.ts +2 -0
- package/dist/features/builtin-skills/skills/planning-and-task-breakdown.d.ts +2 -0
- package/dist/hooks/manager/resolve-active-boulder-session.d.ts +5 -0
- package/dist/hooks/manager/system-reminder-templates.d.ts +2 -2
- package/dist/hooks/reasoning-content-cache/hook.d.ts +11 -0
- package/dist/hooks/reasoning-content-cache/index.d.ts +1 -0
- package/dist/hooks/session-recovery/checkpoint.d.ts +48 -0
- package/dist/hooks/session-recovery/enhanced-hook.d.ts +30 -0
- package/dist/hooks/session-recovery/state-backup.d.ts +76 -0
- package/dist/hooks/shared/compaction-in-progress.d.ts +4 -0
- package/dist/hooks/start-work/context-info-builder.d.ts +2 -0
- package/dist/hooks/start-work/git-operations.d.ts +47 -0
- package/dist/hooks/start-work/worktree-block.d.ts +2 -1
- package/dist/hooks/start-work/worktree-detector.d.ts +45 -0
- package/dist/hooks/strategist-md-only/agent-resolution.d.ts +1 -1
- package/dist/hooks/strategist-md-only/constants.d.ts +6 -0
- package/dist/hooks/token-budget.d.ts +30 -0
- package/dist/index.js +1275 -1132
- package/dist/mcp/rate-limiter.d.ts +68 -0
- package/dist/plugin/chat-message.d.ts +8 -0
- package/dist/plugin/command-execute-before.d.ts +1 -1
- package/dist/plugin/event-handlers/message-updated.d.ts +2 -0
- package/dist/plugin/event-handlers/session-error.d.ts +2 -0
- package/dist/plugin/event-handlers/session-status.d.ts +2 -0
- package/dist/plugin/event-handlers/types.d.ts +62 -0
- package/dist/plugin/event-handlers/utils.d.ts +11 -0
- package/dist/plugin/event.d.ts +1 -1
- package/dist/shared/data-path.d.ts +1 -1
- package/dist/shared/errors.d.ts +70 -0
- package/dist/shared/extract-session-id.d.ts +8 -0
- package/dist/shared/git-worktree/get-git-state-summary.d.ts +14 -0
- package/dist/shared/index.d.ts +67 -68
- package/dist/shared/internal-initiator-marker.d.ts +1 -1
- package/dist/shared/logger.d.ts +5 -1
- package/dist/shared/reasoning-content-cache.d.ts +68 -0
- package/dist/shared/safe-create-hook.d.ts +4 -4
- package/dist/tools/call-hiai-agent/constants.d.ts +2 -2
- package/dist/tools/delegate-task/sub-agent.d.ts +1 -1
- package/dist/tools/look-at/constants.d.ts +1 -1
- package/docs/architecture/bob-manager-architecture.md +244 -0
- package/docs/hiai-opencode/adr/ADR-001-agent-identity-section-injection.md +66 -0
- package/docs/hiai-opencode/adr/ADR-002-anti-loop-guard-priority.md +63 -0
- package/docs/hiai-opencode/adr/ADR-003-compaction-mechanism.md +71 -0
- package/docs/hiai-opencode/adr/ADR-004-session-recovery.md +76 -0
- package/docs/hiai-opencode/api.md +305 -0
- package/docs/hiai-opencode/hooks-architecture.md +225 -0
- package/docs/hiai-opencode/migration.md +209 -0
- package/docs/quickstart.md +1 -1
- package/docs/skill-discovery.md +288 -0
- package/package.json +2 -2
- package/skills/agent-browser/SKILL.md +193 -0
- package/skills/apple-hig/SKILL.md +43 -0
- package/skills/article-magazine/SKILL.md +46 -0
- package/skills/article-magazine/example.html +81 -0
- package/skills/article-magazine/example.md +38 -0
- package/skills/canvas-design/SKILL.md +45 -0
- package/skills/design-templates/audio-jingle/SKILL.md +132 -0
- package/skills/design-templates/audio-jingle/example.html +128 -0
- package/skills/design-templates/blog-post/SKILL.md +80 -0
- package/skills/design-templates/blog-post/example.html +80 -0
- package/skills/design-templates/clinical-case-report/SKILL.md +209 -0
- package/skills/design-templates/clinical-case-report/example.html +698 -0
- package/skills/design-templates/clinical-case-report/examples/example-stemi.html +698 -0
- package/skills/design-templates/clinical-case-report/references/case-formats.md +94 -0
- package/skills/design-templates/clinical-case-report/references/checklist.md +41 -0
- package/skills/design-templates/critique/SKILL.md +258 -0
- package/skills/design-templates/critique/example.html +671 -0
- package/skills/design-templates/dashboard/SKILL.md +76 -0
- package/skills/design-templates/dashboard/example.html +118 -0
- package/skills/design-templates/dating-web/SKILL.md +92 -0
- package/skills/design-templates/dating-web/example.html +265 -0
- package/skills/design-templates/dcf-valuation/SKILL.md +140 -0
- package/skills/design-templates/dcf-valuation/references/sector-wacc.md +42 -0
- package/skills/design-templates/digital-eguide/SKILL.md +94 -0
- package/skills/design-templates/digital-eguide/example.html +204 -0
- package/skills/design-templates/docs-page/SKILL.md +80 -0
- package/skills/design-templates/docs-page/example.html +122 -0
- package/skills/design-templates/email-marketing/SKILL.md +84 -0
- package/skills/design-templates/email-marketing/example.html +159 -0
- package/skills/design-templates/eng-runbook/SKILL.md +51 -0
- package/skills/design-templates/eng-runbook/example.html +250 -0
- package/skills/design-templates/finance-report/SKILL.md +61 -0
- package/skills/design-templates/finance-report/example.html +242 -0
- package/skills/design-templates/flowai-live-dashboard-template/SKILL.md +87 -0
- package/skills/design-templates/flowai-live-dashboard-template/assets/template.html +387 -0
- package/skills/design-templates/flowai-live-dashboard-template/example.html +13 -0
- package/skills/design-templates/flowai-live-dashboard-template/references/checklist.md +35 -0
- package/skills/design-templates/gamified-app/SKILL.md +108 -0
- package/skills/design-templates/gamified-app/example.html +292 -0
- package/skills/design-templates/github-dashboard/SKILL.md +130 -0
- package/skills/design-templates/github-dashboard/example.html +473 -0
- package/skills/design-templates/github-dashboard/references/README.md +10 -0
- package/skills/design-templates/github-dashboard/references/artifact-example.json +15 -0
- package/skills/design-templates/github-dashboard/references/example-data.json +138 -0
- package/skills/design-templates/github-dashboard/references/provenance-example.json +92 -0
- package/skills/design-templates/github-dashboard/references/template.html +473 -0
- package/skills/design-templates/guizang-ppt/LICENSE +21 -0
- package/skills/design-templates/guizang-ppt/README.en.md +119 -0
- package/skills/design-templates/guizang-ppt/README.md +120 -0
- package/skills/design-templates/guizang-ppt/README.pt-BR.md +121 -0
- package/skills/design-templates/guizang-ppt/SKILL.md +313 -0
- package/skills/design-templates/guizang-ppt/assets/example-slides.html +318 -0
- package/skills/design-templates/guizang-ppt/assets/template.html +647 -0
- package/skills/design-templates/guizang-ppt/references/checklist.md +265 -0
- package/skills/design-templates/guizang-ppt/references/components.md +363 -0
- package/skills/design-templates/guizang-ppt/references/layouts.md +630 -0
- package/skills/design-templates/guizang-ppt/references/styles.md +195 -0
- package/skills/design-templates/guizang-ppt/references/themes.md +122 -0
- package/skills/design-templates/hr-onboarding/SKILL.md +52 -0
- package/skills/design-templates/hr-onboarding/example.html +219 -0
- package/skills/design-templates/html-ppt/.clawscan-allow +12 -0
- package/skills/design-templates/html-ppt/LICENSE +21 -0
- package/skills/design-templates/html-ppt/README.md +234 -0
- package/skills/design-templates/html-ppt/README.pt-BR.md +239 -0
- package/skills/design-templates/html-ppt/README.zh-CN.md +238 -0
- package/skills/design-templates/html-ppt/SKILL.md +250 -0
- package/skills/design-templates/html-ppt/assets/animations/animations.css +138 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/_util.js +63 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/chain-react.js +41 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/confetti-cannon.js +49 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/constellation.js +44 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/counter-explosion.js +58 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/data-stream.js +45 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/firework.js +51 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/galaxy-swirl.js +33 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/gradient-blob.js +39 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/knowledge-graph.js +69 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/letter-explode.js +50 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/magnetic-field.js +40 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/matrix-rain.js +33 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/neural-net.js +75 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/orbit-ring.js +38 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/particle-burst.js +42 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/shockwave.js +39 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/sparkle-trail.js +62 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/starfield.js +30 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/typewriter-multi.js +51 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/word-cascade.js +47 -0
- package/skills/design-templates/html-ppt/assets/animations/fx-runtime.js +99 -0
- package/skills/design-templates/html-ppt/assets/base.css +150 -0
- package/skills/design-templates/html-ppt/assets/fonts.css +9 -0
- package/skills/design-templates/html-ppt/assets/runtime.js +960 -0
- package/skills/design-templates/html-ppt/assets/themes/academic-paper.css +23 -0
- package/skills/design-templates/html-ppt/assets/themes/arctic-cool.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/aurora.css +20 -0
- package/skills/design-templates/html-ppt/assets/themes/bauhaus.css +16 -0
- package/skills/design-templates/html-ppt/assets/themes/blueprint.css +19 -0
- package/skills/design-templates/html-ppt/assets/themes/catppuccin-latte.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/catppuccin-mocha.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/corporate-clean.css +19 -0
- package/skills/design-templates/html-ppt/assets/themes/cyberpunk-neon.css +23 -0
- package/skills/design-templates/html-ppt/assets/themes/dracula.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/editorial-serif.css +18 -0
- package/skills/design-templates/html-ppt/assets/themes/engineering-whiteprint.css +26 -0
- package/skills/design-templates/html-ppt/assets/themes/glassmorphism.css +21 -0
- package/skills/design-templates/html-ppt/assets/themes/gruvbox-dark.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/japanese-minimal.css +21 -0
- package/skills/design-templates/html-ppt/assets/themes/magazine-bold.css +21 -0
- package/skills/design-templates/html-ppt/assets/themes/memphis-pop.css +20 -0
- package/skills/design-templates/html-ppt/assets/themes/midcentury.css +19 -0
- package/skills/design-templates/html-ppt/assets/themes/minimal-white.css +16 -0
- package/skills/design-templates/html-ppt/assets/themes/neo-brutalism.css +17 -0
- package/skills/design-templates/html-ppt/assets/themes/news-broadcast.css +20 -0
- package/skills/design-templates/html-ppt/assets/themes/nord.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/pitch-deck-vc.css +21 -0
- package/skills/design-templates/html-ppt/assets/themes/rainbow-gradient.css +16 -0
- package/skills/design-templates/html-ppt/assets/themes/retro-tv.css +22 -0
- package/skills/design-templates/html-ppt/assets/themes/rose-pine.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/sharp-mono.css +17 -0
- package/skills/design-templates/html-ppt/assets/themes/soft-pastel.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/solarized-light.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/sunset-warm.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/swiss-grid.css +17 -0
- package/skills/design-templates/html-ppt/assets/themes/terminal-green.css +18 -0
- package/skills/design-templates/html-ppt/assets/themes/tokyo-night.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/vaporwave.css +21 -0
- package/skills/design-templates/html-ppt/assets/themes/xiaohongshu-white.css +16 -0
- package/skills/design-templates/html-ppt/assets/themes/y2k-chrome.css +20 -0
- package/skills/design-templates/html-ppt/docs/readme/_theme-cell.html +56 -0
- package/skills/design-templates/html-ppt/docs/readme/animations.png +0 -0
- package/skills/design-templates/html-ppt/docs/readme/hero.gif +0 -0
- package/skills/design-templates/html-ppt/docs/readme/layouts-live.gif +0 -0
- package/skills/design-templates/html-ppt/docs/readme/layouts.png +0 -0
- package/skills/design-templates/html-ppt/docs/readme/montage-animations.html +61 -0
- package/skills/design-templates/html-ppt/docs/readme/montage-layouts.html +72 -0
- package/skills/design-templates/html-ppt/docs/readme/montage-templates.html +72 -0
- package/skills/design-templates/html-ppt/docs/readme/montage-themes.html +38 -0
- package/skills/design-templates/html-ppt/docs/readme/presenter-mode.png +0 -0
- package/skills/design-templates/html-ppt/docs/readme/templates.png +0 -0
- package/skills/design-templates/html-ppt/docs/readme/themes.png +0 -0
- package/skills/design-templates/html-ppt/examples/demo-deck/index.html +161 -0
- package/skills/design-templates/html-ppt/references/animations.md +147 -0
- package/skills/design-templates/html-ppt/references/authoring-guide.md +141 -0
- package/skills/design-templates/html-ppt/references/full-decks.md +98 -0
- package/skills/design-templates/html-ppt/references/layouts.md +103 -0
- package/skills/design-templates/html-ppt/references/presenter-mode.md +240 -0
- package/skills/design-templates/html-ppt/references/themes.md +107 -0
- package/skills/design-templates/html-ppt/scripts/new-deck.sh +46 -0
- package/skills/design-templates/html-ppt/scripts/render.sh +71 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_01.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_02.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_03.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_04.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_05.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_06.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_07.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_08.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_09.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_10.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_11.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_12.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_13.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_14.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_15.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_16.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_17.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_18.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_19.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_20.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_01.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_02.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_03.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_04.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_05.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_06.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_07.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_08.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_09.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_10.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_11.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_12.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_13.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_14.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_15.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_16.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_17.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_18.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_19.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_20.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_21.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_22.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_23.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_24.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_25.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_26.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_27.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_28.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_29.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_30.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_31.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_32.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_33.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_34.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_35.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_36.png +0 -0
- package/skills/design-templates/html-ppt/templates/animation-showcase.html +172 -0
- package/skills/design-templates/html-ppt/templates/deck.html +69 -0
- package/skills/design-templates/html-ppt/templates/full-decks/course-module/README.md +8 -0
- package/skills/design-templates/html-ppt/templates/full-decks/course-module/index.html +189 -0
- package/skills/design-templates/html-ppt/templates/full-decks/course-module/style.css +46 -0
- package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/index.html +138 -0
- package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/style.css +60 -0
- package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/index.html +180 -0
- package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/style.css +54 -0
- package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/index.html +199 -0
- package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/style.css +55 -0
- package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/index.html +190 -0
- package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/style.css +49 -0
- package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/index.html +144 -0
- package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/style.css +59 -0
- package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/README.md +9 -0
- package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/index.html +148 -0
- package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/style.css +40 -0
- package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/README.md +102 -0
- package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/index.html +187 -0
- package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/style.css +216 -0
- package/skills/design-templates/html-ppt/templates/full-decks/product-launch/README.md +8 -0
- package/skills/design-templates/html-ppt/templates/full-decks/product-launch/index.html +121 -0
- package/skills/design-templates/html-ppt/templates/full-decks/product-launch/style.css +39 -0
- package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/README.md +8 -0
- package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/index.html +156 -0
- package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/style.css +49 -0
- package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/index.html +183 -0
- package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/style.css +62 -0
- package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/README.md +8 -0
- package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/index.html +127 -0
- package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/style.css +55 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/index.html +147 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/style.css +66 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/README.md +9 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/index.html +133 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/style.css +47 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/index.html +187 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/style.css +63 -0
- package/skills/design-templates/html-ppt/templates/full-decks-index.html +82 -0
- package/skills/design-templates/html-ppt/templates/layout-showcase.html +47 -0
- package/skills/design-templates/html-ppt/templates/single-page/arch-diagram.html +46 -0
- package/skills/design-templates/html-ppt/templates/single-page/big-quote.html +18 -0
- package/skills/design-templates/html-ppt/templates/single-page/bullets.html +19 -0
- package/skills/design-templates/html-ppt/templates/single-page/chart-bar.html +30 -0
- package/skills/design-templates/html-ppt/templates/single-page/chart-line.html +35 -0
- package/skills/design-templates/html-ppt/templates/single-page/chart-pie.html +36 -0
- package/skills/design-templates/html-ppt/templates/single-page/chart-radar.html +31 -0
- package/skills/design-templates/html-ppt/templates/single-page/code.html +33 -0
- package/skills/design-templates/html-ppt/templates/single-page/comparison.html +47 -0
- package/skills/design-templates/html-ppt/templates/single-page/cover.html +32 -0
- package/skills/design-templates/html-ppt/templates/single-page/cta.html +27 -0
- package/skills/design-templates/html-ppt/templates/single-page/diff.html +35 -0
- package/skills/design-templates/html-ppt/templates/single-page/flow-diagram.html +33 -0
- package/skills/design-templates/html-ppt/templates/single-page/gantt.html +29 -0
- package/skills/design-templates/html-ppt/templates/single-page/image-grid.html +34 -0
- package/skills/design-templates/html-ppt/templates/single-page/image-hero.html +33 -0
- package/skills/design-templates/html-ppt/templates/single-page/kpi-grid.html +19 -0
- package/skills/design-templates/html-ppt/templates/single-page/mindmap.html +38 -0
- package/skills/design-templates/html-ppt/templates/single-page/process-steps.html +27 -0
- package/skills/design-templates/html-ppt/templates/single-page/pros-cons.html +31 -0
- package/skills/design-templates/html-ppt/templates/single-page/roadmap.html +46 -0
- package/skills/design-templates/html-ppt/templates/single-page/section-divider.html +17 -0
- package/skills/design-templates/html-ppt/templates/single-page/stat-highlight.html +17 -0
- package/skills/design-templates/html-ppt/templates/single-page/table.html +33 -0
- package/skills/design-templates/html-ppt/templates/single-page/terminal.html +35 -0
- package/skills/design-templates/html-ppt/templates/single-page/thanks.html +21 -0
- package/skills/design-templates/html-ppt/templates/single-page/three-column.html +18 -0
- package/skills/design-templates/html-ppt/templates/single-page/timeline.html +32 -0
- package/skills/design-templates/html-ppt/templates/single-page/toc.html +26 -0
- package/skills/design-templates/html-ppt/templates/single-page/todo-checklist.html +33 -0
- package/skills/design-templates/html-ppt/templates/single-page/two-column.html +39 -0
- package/skills/design-templates/html-ppt/templates/theme-showcase.html +151 -0
- package/skills/design-templates/html-ppt-course-module/SKILL.md +78 -0
- package/skills/design-templates/html-ppt-course-module/example.html +542 -0
- package/skills/design-templates/html-ppt-dir-key-nav-minimal/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-dir-key-nav-minimal/example.html +366 -0
- package/skills/design-templates/html-ppt-graphify-dark-graph/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-graphify-dark-graph/example.html +402 -0
- package/skills/design-templates/html-ppt-hermes-cyber-terminal/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-hermes-cyber-terminal/example.html +422 -0
- package/skills/design-templates/html-ppt-knowledge-arch-blueprint/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-knowledge-arch-blueprint/example.html +407 -0
- package/skills/design-templates/html-ppt-obsidian-claude-gradient/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-obsidian-claude-gradient/example.html +371 -0
- package/skills/design-templates/html-ppt-pitch-deck/SKILL.md +78 -0
- package/skills/design-templates/html-ppt-pitch-deck/example.html +495 -0
- package/skills/design-templates/html-ppt-presenter-mode-reveal/SKILL.md +78 -0
- package/skills/design-templates/html-ppt-presenter-mode-reveal/example.html +725 -0
- package/skills/design-templates/html-ppt-product-launch/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-product-launch/example.html +467 -0
- package/skills/design-templates/html-ppt-taste-brutalist/SKILL.md +70 -0
- package/skills/design-templates/html-ppt-taste-brutalist/example.html +774 -0
- package/skills/design-templates/html-ppt-taste-editorial/SKILL.md +62 -0
- package/skills/design-templates/html-ppt-taste-editorial/example.html +689 -0
- package/skills/design-templates/html-ppt-tech-sharing/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-tech-sharing/example.html +512 -0
- package/skills/design-templates/html-ppt-testing-safety-alert/SKILL.md +78 -0
- package/skills/design-templates/html-ppt-testing-safety-alert/example.html +413 -0
- package/skills/design-templates/html-ppt-weekly-report/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-weekly-report/example.html +489 -0
- package/skills/design-templates/html-ppt-xhs-pastel-card/SKILL.md +78 -0
- package/skills/design-templates/html-ppt-xhs-pastel-card/example.html +381 -0
- package/skills/design-templates/html-ppt-xhs-post/SKILL.md +78 -0
- package/skills/design-templates/html-ppt-xhs-post/example.html +487 -0
- package/skills/design-templates/html-ppt-xhs-white-editorial/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-xhs-white-editorial/example.html +418 -0
- package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/example.html +1640 -0
- package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/template.json +48 -0
- package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/example.html +833 -0
- package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/template.json +49 -0
- package/skills/design-templates/html-ppt-zhangzara-block-frame/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-block-frame/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-block-frame/example.html +1453 -0
- package/skills/design-templates/html-ppt-zhangzara-block-frame/template.json +47 -0
- package/skills/design-templates/html-ppt-zhangzara-blue-professional/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-blue-professional/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-blue-professional/example.html +1423 -0
- package/skills/design-templates/html-ppt-zhangzara-blue-professional/template.json +44 -0
- package/skills/design-templates/html-ppt-zhangzara-bold-poster/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-bold-poster/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-bold-poster/example.html +876 -0
- package/skills/design-templates/html-ppt-zhangzara-bold-poster/template.json +45 -0
- package/skills/design-templates/html-ppt-zhangzara-broadside/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-broadside/SKILL.md +92 -0
- package/skills/design-templates/html-ppt-zhangzara-broadside/example.html +2144 -0
- package/skills/design-templates/html-ppt-zhangzara-broadside/template.json +49 -0
- package/skills/design-templates/html-ppt-zhangzara-capsule/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-capsule/SKILL.md +92 -0
- package/skills/design-templates/html-ppt-zhangzara-capsule/example.html +1413 -0
- package/skills/design-templates/html-ppt-zhangzara-capsule/template.json +51 -0
- package/skills/design-templates/html-ppt-zhangzara-cartesian/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-cartesian/SKILL.md +92 -0
- package/skills/design-templates/html-ppt-zhangzara-cartesian/example.html +1136 -0
- package/skills/design-templates/html-ppt-zhangzara-cartesian/template.json +47 -0
- package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/example.html +1205 -0
- package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/template.json +49 -0
- package/skills/design-templates/html-ppt-zhangzara-coral/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-coral/SKILL.md +92 -0
- package/skills/design-templates/html-ppt-zhangzara-coral/example.html +1487 -0
- package/skills/design-templates/html-ppt-zhangzara-coral/template.json +45 -0
- package/skills/design-templates/html-ppt-zhangzara-creative-mode/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-creative-mode/SKILL.md +99 -0
- package/skills/design-templates/html-ppt-zhangzara-creative-mode/assets/deck-stage.js +619 -0
- package/skills/design-templates/html-ppt-zhangzara-creative-mode/example.html +636 -0
- package/skills/design-templates/html-ppt-zhangzara-creative-mode/template.json +47 -0
- package/skills/design-templates/html-ppt-zhangzara-daisy-days/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-daisy-days/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-daisy-days/example.html +469 -0
- package/skills/design-templates/html-ppt-zhangzara-daisy-days/template.json +54 -0
- package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/SKILL.md +98 -0
- package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/assets/deck-stage.js +619 -0
- package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/example.html +737 -0
- package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/template.json +44 -0
- package/skills/design-templates/html-ppt-zhangzara-grove/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-grove/SKILL.md +92 -0
- package/skills/design-templates/html-ppt-zhangzara-grove/example.html +1676 -0
- package/skills/design-templates/html-ppt-zhangzara-grove/template.json +51 -0
- package/skills/figma-code-connect-components/SKILL.md +42 -0
- package/skills/figma-create-design-system-rules/SKILL.md +42 -0
- package/skills/figma-create-new-file/SKILL.md +41 -0
- package/skills/figma-generate-design/SKILL.md +42 -0
- package/skills/figma-generate-library/SKILL.md +42 -0
- package/skills/figma-implement-design/SKILL.md +42 -0
- package/skills/figma-use/SKILL.md +42 -0
- package/skills/full-page-screenshot/SKILL.md +42 -0
- package/skills/interview-me/SKILL.md +64 -0
- package/skills/planning-and-task-breakdown/SKILL.md +52 -0
- package/skills/sora/SKILL.md +43 -0
- package/skills/theme-factory/SKILL.md +43 -0
- package/skills/web-design-guidelines/SKILL.md +42 -0
- package/dist/agents/prompt-library/orchestration.d.ts +0 -4
- package/skills/brainstorming/SKILL.md +0 -164
- package/skills/brainstorming/scripts/frame-template.html +0 -214
- package/skills/brainstorming/scripts/helper.js +0 -88
- package/skills/brainstorming/scripts/server.cjs +0 -354
- package/skills/brainstorming/scripts/start-server.sh +0 -148
- package/skills/brainstorming/scripts/stop-server.sh +0 -56
- package/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
- package/skills/brainstorming/visual-companion.md +0 -287
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['neural-net'] = function(el){
|
|
4
|
+
const U = window.HPX._u;
|
|
5
|
+
const k = U.canvas(el), ctx = k.ctx;
|
|
6
|
+
const ac = U.accent(el,'#7c5cff'), ac2 = U.accent2(el,'#22d3ee');
|
|
7
|
+
const layers = [4,6,6,3];
|
|
8
|
+
let nodes = [], edges = [], pulses = [];
|
|
9
|
+
const layout = () => {
|
|
10
|
+
nodes = [];
|
|
11
|
+
const pad = 40;
|
|
12
|
+
const cw = k.w - pad*2, ch = k.h - pad*2;
|
|
13
|
+
for (let L=0; L<layers.length; L++){
|
|
14
|
+
const x = pad + (cw * L / (layers.length-1));
|
|
15
|
+
const n = layers[L];
|
|
16
|
+
for (let i=0;i<n;i++){
|
|
17
|
+
const y = pad + (ch * (i+0.5) / n);
|
|
18
|
+
nodes.push({x,y,L,i});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
edges = [];
|
|
22
|
+
for (let L=0; L<layers.length-1; L++){
|
|
23
|
+
const a = nodes.filter(n=>n.L===L), b = nodes.filter(n=>n.L===L+1);
|
|
24
|
+
for (const x of a) for (const y of b) edges.push([nodes.indexOf(x),nodes.indexOf(y)]);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
layout();
|
|
28
|
+
let lw=k.w, lh=k.h, last=0;
|
|
29
|
+
const stop = U.loop((t) => {
|
|
30
|
+
if (k.w!==lw||k.h!==lh){ layout(); lw=k.w; lh=k.h; }
|
|
31
|
+
ctx.clearRect(0,0,k.w,k.h);
|
|
32
|
+
ctx.strokeStyle = 'rgba(160,160,200,0.22)'; ctx.lineWidth=1;
|
|
33
|
+
for (const [i,j] of edges){
|
|
34
|
+
const a=nodes[i], b=nodes[j];
|
|
35
|
+
ctx.beginPath(); ctx.moveTo(a.x,a.y); ctx.lineTo(b.x,b.y); ctx.stroke();
|
|
36
|
+
}
|
|
37
|
+
if (t - last > 0.25){
|
|
38
|
+
last = t;
|
|
39
|
+
const starts = nodes.filter(n=>n.L===0);
|
|
40
|
+
const s = starts[(Math.random()*starts.length)|0];
|
|
41
|
+
pulses.push({node:s, L:0, t:0});
|
|
42
|
+
}
|
|
43
|
+
pulses = pulses.filter(p => p.L < layers.length-1);
|
|
44
|
+
for (const p of pulses){
|
|
45
|
+
p.t += 0.03;
|
|
46
|
+
if (p.t >= 1){
|
|
47
|
+
const next = nodes.filter(n=>n.L===p.L+1);
|
|
48
|
+
p.node2 = next[(Math.random()*next.length)|0];
|
|
49
|
+
if (!p._started){ p._started = true; }
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// animate progression
|
|
53
|
+
for (const p of pulses){
|
|
54
|
+
if (!p.target){
|
|
55
|
+
const next = nodes.filter(n=>n.L===p.L+1);
|
|
56
|
+
p.target = next[(Math.random()*next.length)|0];
|
|
57
|
+
}
|
|
58
|
+
p.t += 0.04;
|
|
59
|
+
const a = p.node, b = p.target;
|
|
60
|
+
const x = a.x + (b.x-a.x)*Math.min(1,p.t);
|
|
61
|
+
const y = a.y + (b.y-a.y)*Math.min(1,p.t);
|
|
62
|
+
ctx.fillStyle = ac2;
|
|
63
|
+
ctx.beginPath(); ctx.arc(x,y,4,0,Math.PI*2); ctx.fill();
|
|
64
|
+
if (p.t >= 1){ p.node = b; p.target=null; p.L++; p.t=0; }
|
|
65
|
+
}
|
|
66
|
+
for (const n of nodes){
|
|
67
|
+
ctx.fillStyle = ac;
|
|
68
|
+
ctx.beginPath(); ctx.arc(n.x,n.y,6,0,Math.PI*2); ctx.fill();
|
|
69
|
+
ctx.strokeStyle = ac2; ctx.lineWidth=1.5;
|
|
70
|
+
ctx.beginPath(); ctx.arc(n.x,n.y,8,0,Math.PI*2); ctx.stroke();
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
74
|
+
};
|
|
75
|
+
})();
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['orbit-ring'] = function(el){
|
|
4
|
+
const U = window.HPX._u;
|
|
5
|
+
const k = U.canvas(el), ctx = k.ctx;
|
|
6
|
+
const pal = U.palette(el);
|
|
7
|
+
const rings = [
|
|
8
|
+
{r:40, n:3, sp:1.2, c:pal[0]},
|
|
9
|
+
{r:75, n:5, sp:0.8, c:pal[1]},
|
|
10
|
+
{r:110, n:8, sp:-0.6, c:pal[2]},
|
|
11
|
+
{r:145, n:12, sp:0.4, c:pal[3]},
|
|
12
|
+
{r:180, n:16, sp:-0.3, c:pal[4]}
|
|
13
|
+
];
|
|
14
|
+
const stop = U.loop((t) => {
|
|
15
|
+
ctx.clearRect(0,0,k.w,k.h);
|
|
16
|
+
const cx=k.w/2, cy=k.h/2;
|
|
17
|
+
// radial glow
|
|
18
|
+
const g = ctx.createRadialGradient(cx,cy,0,cx,cy,210);
|
|
19
|
+
g.addColorStop(0,'rgba(124,92,255,0.25)');
|
|
20
|
+
g.addColorStop(1,'rgba(0,0,0,0)');
|
|
21
|
+
ctx.fillStyle = g; ctx.fillRect(0,0,k.w,k.h);
|
|
22
|
+
for (const R of rings){
|
|
23
|
+
ctx.strokeStyle = 'rgba(200,200,230,0.2)'; ctx.lineWidth=1;
|
|
24
|
+
ctx.beginPath(); ctx.arc(cx,cy,R.r,0,Math.PI*2); ctx.stroke();
|
|
25
|
+
for (let i=0;i<R.n;i++){
|
|
26
|
+
const a = (i/R.n)*Math.PI*2 + t*R.sp;
|
|
27
|
+
const x = cx + Math.cos(a)*R.r;
|
|
28
|
+
const y = cy + Math.sin(a)*R.r;
|
|
29
|
+
ctx.fillStyle = R.c;
|
|
30
|
+
ctx.beginPath(); ctx.arc(x,y,4,0,Math.PI*2); ctx.fill();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
ctx.fillStyle = '#fff';
|
|
34
|
+
ctx.beginPath(); ctx.arc(cx,cy,5,0,Math.PI*2); ctx.fill();
|
|
35
|
+
});
|
|
36
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['particle-burst'] = function(el){
|
|
4
|
+
const U = window.HPX._u;
|
|
5
|
+
const k = U.canvas(el), ctx = k.ctx;
|
|
6
|
+
const pal = U.palette(el);
|
|
7
|
+
let parts = [];
|
|
8
|
+
const spawn = () => {
|
|
9
|
+
const cx = k.w/2, cy = k.h/2;
|
|
10
|
+
const n = 90;
|
|
11
|
+
for (let i=0;i<n;i++){
|
|
12
|
+
const a = Math.random()*Math.PI*2;
|
|
13
|
+
const s = U.rand(80, 260);
|
|
14
|
+
parts.push({
|
|
15
|
+
x: cx, y: cy,
|
|
16
|
+
vx: Math.cos(a)*s, vy: Math.sin(a)*s,
|
|
17
|
+
life: 1, r: U.rand(2,5),
|
|
18
|
+
c: pal[(Math.random()*pal.length)|0]
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
spawn();
|
|
23
|
+
let lastSpawn = 0;
|
|
24
|
+
const stop = U.loop((t) => {
|
|
25
|
+
ctx.clearRect(0,0,k.w,k.h);
|
|
26
|
+
if (t - lastSpawn > 2.5) { spawn(); lastSpawn = t; }
|
|
27
|
+
const dt = 1/60;
|
|
28
|
+
parts = parts.filter(p => p.life > 0);
|
|
29
|
+
for (const p of parts){
|
|
30
|
+
p.vy += 220*dt;
|
|
31
|
+
p.vx *= 0.985; p.vy *= 0.985;
|
|
32
|
+
p.x += p.vx*dt; p.y += p.vy*dt;
|
|
33
|
+
p.life -= 0.012;
|
|
34
|
+
ctx.globalAlpha = Math.max(0, p.life);
|
|
35
|
+
ctx.fillStyle = p.c;
|
|
36
|
+
ctx.beginPath(); ctx.arc(p.x, p.y, p.r, 0, Math.PI*2); ctx.fill();
|
|
37
|
+
}
|
|
38
|
+
ctx.globalAlpha = 1;
|
|
39
|
+
});
|
|
40
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['shockwave'] = function(el){
|
|
4
|
+
const U = window.HPX._u;
|
|
5
|
+
const k = U.canvas(el), ctx = k.ctx;
|
|
6
|
+
const ac = U.accent(el,'#7c5cff'), ac2 = U.accent2(el,'#22d3ee');
|
|
7
|
+
let waves = [];
|
|
8
|
+
let last = -1;
|
|
9
|
+
const stop = U.loop((t) => {
|
|
10
|
+
ctx.fillStyle = 'rgba(0,0,0,0.12)';
|
|
11
|
+
ctx.fillRect(0,0,k.w,k.h);
|
|
12
|
+
if (t - last > 0.6){ last = t; waves.push({t:0}); }
|
|
13
|
+
const cx=k.w/2, cy=k.h/2;
|
|
14
|
+
const max = Math.hypot(k.w,k.h)/2;
|
|
15
|
+
waves = waves.filter(w => w.t < 1);
|
|
16
|
+
for (const w of waves){
|
|
17
|
+
w.t += 0.012;
|
|
18
|
+
const r = w.t * max;
|
|
19
|
+
const alpha = 1 - w.t;
|
|
20
|
+
ctx.strokeStyle = w.t<0.5?ac2:ac;
|
|
21
|
+
ctx.globalAlpha = alpha;
|
|
22
|
+
ctx.lineWidth = 3 + (1-w.t)*3;
|
|
23
|
+
ctx.beginPath(); ctx.arc(cx,cy,r,0,Math.PI*2); ctx.stroke();
|
|
24
|
+
ctx.strokeStyle = '#fff';
|
|
25
|
+
ctx.lineWidth = 1;
|
|
26
|
+
ctx.globalAlpha = alpha*0.4;
|
|
27
|
+
ctx.beginPath(); ctx.arc(cx,cy,r*0.92,0,Math.PI*2); ctx.stroke();
|
|
28
|
+
}
|
|
29
|
+
ctx.globalAlpha = 1;
|
|
30
|
+
// core
|
|
31
|
+
const g = ctx.createRadialGradient(cx,cy,0,cx,cy,40);
|
|
32
|
+
g.addColorStop(0,'rgba(255,255,255,0.9)');
|
|
33
|
+
g.addColorStop(1,'rgba(124,92,255,0)');
|
|
34
|
+
ctx.fillStyle = g;
|
|
35
|
+
ctx.beginPath(); ctx.arc(cx,cy,40,0,Math.PI*2); ctx.fill();
|
|
36
|
+
});
|
|
37
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['sparkle-trail'] = function(el){
|
|
4
|
+
const U = window.HPX._u;
|
|
5
|
+
const k = U.canvas(el), ctx = k.ctx;
|
|
6
|
+
k.c.style.pointerEvents = 'none';
|
|
7
|
+
el.style.cursor = 'crosshair';
|
|
8
|
+
const pal = U.palette(el);
|
|
9
|
+
let sparks = [];
|
|
10
|
+
const onMove = (e) => {
|
|
11
|
+
const r = el.getBoundingClientRect();
|
|
12
|
+
const x = e.clientX - r.left, y = e.clientY - r.top;
|
|
13
|
+
for (let i=0;i<3;i++){
|
|
14
|
+
sparks.push({
|
|
15
|
+
x, y,
|
|
16
|
+
vx: U.rand(-60,60), vy: U.rand(-80,20),
|
|
17
|
+
life: 1, c: pal[(Math.random()*pal.length)|0],
|
|
18
|
+
r: U.rand(1.5,3.5)
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
// auto-wiggle if no mouse moves
|
|
23
|
+
let auto = true, autoT = 0;
|
|
24
|
+
const onAny = () => { auto = false; };
|
|
25
|
+
el.addEventListener('pointermove', onMove);
|
|
26
|
+
el.addEventListener('pointerenter', onAny);
|
|
27
|
+
const stop = U.loop(() => {
|
|
28
|
+
ctx.fillStyle = 'rgba(0,0,0,0.15)';
|
|
29
|
+
ctx.fillRect(0,0,k.w,k.h);
|
|
30
|
+
if (auto){
|
|
31
|
+
autoT += 0.04;
|
|
32
|
+
const x = k.w/2 + Math.cos(autoT)*k.w*0.3;
|
|
33
|
+
const y = k.h/2 + Math.sin(autoT*1.3)*k.h*0.3;
|
|
34
|
+
for (let i=0;i<3;i++){
|
|
35
|
+
sparks.push({
|
|
36
|
+
x, y,
|
|
37
|
+
vx: U.rand(-60,60), vy: U.rand(-80,20),
|
|
38
|
+
life: 1, c: pal[(Math.random()*pal.length)|0],
|
|
39
|
+
r: U.rand(1.5,3.5)
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const dt = 1/60;
|
|
44
|
+
sparks = sparks.filter(s => s.life > 0);
|
|
45
|
+
for (const s of sparks){
|
|
46
|
+
s.vy += 160*dt;
|
|
47
|
+
s.x += s.vx*dt; s.y += s.vy*dt;
|
|
48
|
+
s.life -= 0.018;
|
|
49
|
+
ctx.globalAlpha = Math.max(0, s.life);
|
|
50
|
+
ctx.fillStyle = s.c;
|
|
51
|
+
ctx.beginPath(); ctx.arc(s.x,s.y,s.r,0,Math.PI*2); ctx.fill();
|
|
52
|
+
}
|
|
53
|
+
ctx.globalAlpha = 1;
|
|
54
|
+
});
|
|
55
|
+
return { stop(){
|
|
56
|
+
el.removeEventListener('pointermove', onMove);
|
|
57
|
+
el.removeEventListener('pointerenter', onAny);
|
|
58
|
+
el.style.cursor = '';
|
|
59
|
+
stop(); k.destroy();
|
|
60
|
+
}};
|
|
61
|
+
};
|
|
62
|
+
})();
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['starfield'] = function(el){
|
|
4
|
+
const U = window.HPX._u;
|
|
5
|
+
const k = U.canvas(el), ctx = k.ctx;
|
|
6
|
+
const tx = U.text(el, '#ffffff');
|
|
7
|
+
const N = 260;
|
|
8
|
+
const stars = Array.from({length:N}, () => ({
|
|
9
|
+
x: U.rand(-1,1), y: U.rand(-1,1), z: Math.random()
|
|
10
|
+
}));
|
|
11
|
+
const stop = U.loop(() => {
|
|
12
|
+
ctx.fillStyle = 'rgba(0,0,0,0.25)';
|
|
13
|
+
ctx.fillRect(0,0,k.w,k.h);
|
|
14
|
+
const cx = k.w/2, cy = k.h/2;
|
|
15
|
+
for (const s of stars){
|
|
16
|
+
s.z -= 0.006;
|
|
17
|
+
if (s.z <= 0.02) { s.x = U.rand(-1,1); s.y = U.rand(-1,1); s.z = 1; }
|
|
18
|
+
const px = cx + (s.x/s.z)*cx;
|
|
19
|
+
const py = cy + (s.y/s.z)*cy;
|
|
20
|
+
if (px<0||py<0||px>k.w||py>k.h) continue;
|
|
21
|
+
const r = (1-s.z)*2.4;
|
|
22
|
+
ctx.globalAlpha = 1-s.z;
|
|
23
|
+
ctx.fillStyle = tx;
|
|
24
|
+
ctx.beginPath(); ctx.arc(px,py,r,0,Math.PI*2); ctx.fill();
|
|
25
|
+
}
|
|
26
|
+
ctx.globalAlpha = 1;
|
|
27
|
+
});
|
|
28
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
29
|
+
};
|
|
30
|
+
})();
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['typewriter-multi'] = function(el){
|
|
4
|
+
if (getComputedStyle(el).position === 'static') el.style.position = 'relative';
|
|
5
|
+
const lines = [
|
|
6
|
+
(el.getAttribute('data-fx-line1') || '> initializing knowledge graph...'),
|
|
7
|
+
(el.getAttribute('data-fx-line2') || '> loading 28 concept nodes'),
|
|
8
|
+
(el.getAttribute('data-fx-line3') || '> agent ready. awaiting prompt_'),
|
|
9
|
+
];
|
|
10
|
+
const wrap = document.createElement('div');
|
|
11
|
+
wrap.style.cssText = 'position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;gap:14px;padding:32px 48px;font:600 22px ui-monospace,Menlo,monospace;color:var(--text-1,#e7e7ef);';
|
|
12
|
+
el.appendChild(wrap);
|
|
13
|
+
const rows = lines.map((txt) => {
|
|
14
|
+
const row = document.createElement('div');
|
|
15
|
+
row.style.cssText = 'white-space:pre;display:flex;align-items:center;';
|
|
16
|
+
const span = document.createElement('span'); span.textContent = '';
|
|
17
|
+
const cur = document.createElement('span');
|
|
18
|
+
cur.textContent = '\u2588';
|
|
19
|
+
cur.style.cssText = 'display:inline-block;margin-left:2px;color:var(--accent,#22d3ee);animation:hpxBlink 1s steps(2) infinite;';
|
|
20
|
+
row.appendChild(span); row.appendChild(cur);
|
|
21
|
+
wrap.appendChild(row);
|
|
22
|
+
return {row, span, txt, i:0};
|
|
23
|
+
});
|
|
24
|
+
// inject blink keyframes once
|
|
25
|
+
if (!document.getElementById('hpx-blink-kf')){
|
|
26
|
+
const st = document.createElement('style');
|
|
27
|
+
st.id = 'hpx-blink-kf';
|
|
28
|
+
st.textContent = '@keyframes hpxBlink{50%{opacity:0}}';
|
|
29
|
+
document.head.appendChild(st);
|
|
30
|
+
}
|
|
31
|
+
let stopped = false;
|
|
32
|
+
const speeds = [55, 70, 45];
|
|
33
|
+
rows.forEach((r, idx) => {
|
|
34
|
+
const tick = () => {
|
|
35
|
+
if (stopped) return;
|
|
36
|
+
if (r.i < r.txt.length){
|
|
37
|
+
r.span.textContent += r.txt[r.i++];
|
|
38
|
+
setTimeout(tick, speeds[idx]);
|
|
39
|
+
} else {
|
|
40
|
+
setTimeout(() => {
|
|
41
|
+
if (stopped) return;
|
|
42
|
+
r.i = 0; r.span.textContent = '';
|
|
43
|
+
tick();
|
|
44
|
+
}, 2200);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
setTimeout(tick, idx*400);
|
|
48
|
+
});
|
|
49
|
+
return { stop(){ stopped = true; if (wrap.parentNode) wrap.parentNode.removeChild(wrap); } };
|
|
50
|
+
};
|
|
51
|
+
})();
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['word-cascade'] = function(el){
|
|
4
|
+
const U = window.HPX._u;
|
|
5
|
+
const k = U.canvas(el), ctx = k.ctx;
|
|
6
|
+
const pal = U.palette(el);
|
|
7
|
+
const WORDS = ['AI','知识','Graph','Claude','LLM','Agent','Vector','RAG','Token','神经',
|
|
8
|
+
'Prompt','Chain','Skill','Code','Cloud','GPU','Flow','推理','Data','Model'];
|
|
9
|
+
let items = [];
|
|
10
|
+
let last = -1;
|
|
11
|
+
let piles = {}; // column -> stack height
|
|
12
|
+
const stop = U.loop((t) => {
|
|
13
|
+
ctx.clearRect(0,0,k.w,k.h);
|
|
14
|
+
if (t - last > 0.18){
|
|
15
|
+
last = t;
|
|
16
|
+
const w = WORDS[(Math.random()*WORDS.length)|0];
|
|
17
|
+
items.push({
|
|
18
|
+
text: w, x: U.rand(40, k.w-40), y: -20,
|
|
19
|
+
vy: 0, c: pal[(Math.random()*pal.length)|0],
|
|
20
|
+
size: U.rand(16,26), landed: false
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
ctx.textAlign='center'; ctx.textBaseline='middle';
|
|
24
|
+
for (const it of items){
|
|
25
|
+
if (!it.landed){
|
|
26
|
+
it.vy += 0.4;
|
|
27
|
+
it.y += it.vy;
|
|
28
|
+
const col = Math.round(it.x/60);
|
|
29
|
+
const floor = k.h - (piles[col]||0) - it.size*0.6;
|
|
30
|
+
if (it.y >= floor){
|
|
31
|
+
it.y = floor; it.landed = true;
|
|
32
|
+
piles[col] = (piles[col]||0) + it.size*1.1;
|
|
33
|
+
if ((piles[col]||0) > k.h*0.8) piles[col] = 0; // reset if too high
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
ctx.fillStyle = it.c;
|
|
37
|
+
ctx.font = `700 ${it.size}px system-ui,sans-serif`;
|
|
38
|
+
ctx.fillText(it.text, it.x, it.y);
|
|
39
|
+
}
|
|
40
|
+
// prune old landed
|
|
41
|
+
if (items.length > 120){
|
|
42
|
+
items = items.filter(i => !i.landed).concat(items.filter(i=>i.landed).slice(-60));
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
46
|
+
};
|
|
47
|
+
})();
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/* html-ppt :: fx-runtime.js
|
|
2
|
+
* Canvas FX autoloader + lifecycle manager.
|
|
3
|
+
* - Dynamically loads all fx modules listed in FX_LIST
|
|
4
|
+
* - Initializes [data-fx] elements when their slide becomes active
|
|
5
|
+
* - Calls handle.stop() when the slide leaves
|
|
6
|
+
*/
|
|
7
|
+
(function(){
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
const FX_LIST = [
|
|
11
|
+
'_util',
|
|
12
|
+
'particle-burst','confetti-cannon','firework','starfield','matrix-rain',
|
|
13
|
+
'knowledge-graph','neural-net','constellation','orbit-ring','galaxy-swirl',
|
|
14
|
+
'word-cascade','letter-explode','chain-react','magnetic-field','data-stream',
|
|
15
|
+
'gradient-blob','sparkle-trail','shockwave','typewriter-multi','counter-explosion'
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
// Resolve base path of this script so it works from any page location.
|
|
19
|
+
const myScript = document.currentScript || (function(){
|
|
20
|
+
const all = document.getElementsByTagName('script');
|
|
21
|
+
for (const s of all){ if (s.src && s.src.indexOf('fx-runtime.js')>-1) return s; }
|
|
22
|
+
return null;
|
|
23
|
+
})();
|
|
24
|
+
const base = myScript ? myScript.src.replace(/fx-runtime\.js.*$/, 'fx/') : 'assets/animations/fx/';
|
|
25
|
+
|
|
26
|
+
let loaded = 0;
|
|
27
|
+
const total = FX_LIST.length;
|
|
28
|
+
const ready = new Promise((resolve) => {
|
|
29
|
+
if (!total) return resolve();
|
|
30
|
+
FX_LIST.forEach((name) => {
|
|
31
|
+
const s = document.createElement('script');
|
|
32
|
+
s.src = base + name + '.js';
|
|
33
|
+
s.async = false;
|
|
34
|
+
s.onload = s.onerror = () => { if (++loaded >= total) resolve(); };
|
|
35
|
+
document.head.appendChild(s);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
window.__hpxActive = window.__hpxActive || new Map();
|
|
40
|
+
|
|
41
|
+
function initFxIn(root){
|
|
42
|
+
if (!window.HPX) return;
|
|
43
|
+
const els = root.querySelectorAll('[data-fx]');
|
|
44
|
+
els.forEach((el) => {
|
|
45
|
+
if (window.__hpxActive.has(el)) return;
|
|
46
|
+
const name = el.getAttribute('data-fx');
|
|
47
|
+
const fn = window.HPX[name];
|
|
48
|
+
if (typeof fn !== 'function') return;
|
|
49
|
+
try {
|
|
50
|
+
const handle = fn(el, {}) || { stop(){} };
|
|
51
|
+
window.__hpxActive.set(el, handle);
|
|
52
|
+
} catch(e){ console.warn('[hpx-fx]', name, e); }
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function stopFxIn(root){
|
|
57
|
+
const els = root.querySelectorAll('[data-fx]');
|
|
58
|
+
els.forEach((el) => {
|
|
59
|
+
const h = window.__hpxActive.get(el);
|
|
60
|
+
if (h && typeof h.stop === 'function'){
|
|
61
|
+
try{ h.stop(); }catch(e){}
|
|
62
|
+
}
|
|
63
|
+
window.__hpxActive.delete(el);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function reinitFxIn(root){
|
|
68
|
+
stopFxIn(root);
|
|
69
|
+
initFxIn(root);
|
|
70
|
+
}
|
|
71
|
+
window.__hpxReinit = reinitFxIn;
|
|
72
|
+
|
|
73
|
+
function boot(){
|
|
74
|
+
ready.then(() => {
|
|
75
|
+
const active = document.querySelector('.slide.is-active') || document.querySelector('.slide');
|
|
76
|
+
if (active) initFxIn(active);
|
|
77
|
+
|
|
78
|
+
// Watch all slides for class changes
|
|
79
|
+
const slides = document.querySelectorAll('.slide');
|
|
80
|
+
slides.forEach((sl) => {
|
|
81
|
+
const mo = new MutationObserver((muts) => {
|
|
82
|
+
for (const m of muts){
|
|
83
|
+
if (m.attributeName === 'class'){
|
|
84
|
+
if (sl.classList.contains('is-active')) initFxIn(sl);
|
|
85
|
+
else stopFxIn(sl);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
mo.observe(sl, { attributes: true, attributeFilter: ['class'] });
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (document.readyState === 'loading'){
|
|
95
|
+
document.addEventListener('DOMContentLoaded', boot);
|
|
96
|
+
} else {
|
|
97
|
+
boot();
|
|
98
|
+
}
|
|
99
|
+
})();
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/* html-ppt :: base.css — reset + shared tokens + layout primitives */
|
|
2
|
+
/* Default tokens. Themes in assets/themes/*.css override the :root block. */
|
|
3
|
+
:root {
|
|
4
|
+
--bg: #ffffff;
|
|
5
|
+
--bg-soft: #f7f7f8;
|
|
6
|
+
--surface: #ffffff;
|
|
7
|
+
--surface-2: #f2f2f4;
|
|
8
|
+
--border: rgba(0,0,0,.08);
|
|
9
|
+
--border-strong: rgba(0,0,0,.16);
|
|
10
|
+
--text-1: #111216;
|
|
11
|
+
--text-2: #55596a;
|
|
12
|
+
--text-3: #8a8f9e;
|
|
13
|
+
--accent: #3b6cff;
|
|
14
|
+
--accent-2: #7a5cff;
|
|
15
|
+
--accent-3: #ff5c8a;
|
|
16
|
+
--good: #1aaf6c;
|
|
17
|
+
--warn: #f5a524;
|
|
18
|
+
--bad: #e0445a;
|
|
19
|
+
--grad: linear-gradient(135deg,#3b6cff,#7a5cff 55%,#ff5c8a);
|
|
20
|
+
--grad-soft: linear-gradient(135deg,#eef2ff,#f5ecff 55%,#ffeef5);
|
|
21
|
+
--radius: 18px;
|
|
22
|
+
--radius-sm: 12px;
|
|
23
|
+
--radius-lg: 26px;
|
|
24
|
+
--shadow: 0 10px 30px rgba(18,24,40,.08), 0 2px 6px rgba(18,24,40,.04);
|
|
25
|
+
--shadow-lg: 0 24px 60px rgba(18,24,40,.14), 0 6px 16px rgba(18,24,40,.06);
|
|
26
|
+
--font-sans: 'Inter','Noto Sans SC',-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;
|
|
27
|
+
--font-serif: 'Playfair Display','Noto Serif SC',Georgia,serif;
|
|
28
|
+
--font-mono: 'JetBrains Mono','IBM Plex Mono',SFMono-Regular,Menlo,monospace;
|
|
29
|
+
--font-display: var(--font-sans);
|
|
30
|
+
--letter-tight: -.03em;
|
|
31
|
+
--letter-normal: -.01em;
|
|
32
|
+
--ease: cubic-bezier(.4,0,.2,1);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
*,*::before,*::after{box-sizing:border-box}
|
|
36
|
+
html,body{margin:0;padding:0;background:var(--bg);color:var(--text-1);
|
|
37
|
+
font-family:var(--font-sans);font-weight:400;line-height:1.6;
|
|
38
|
+
-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
|
|
39
|
+
letter-spacing:var(--letter-normal)}
|
|
40
|
+
img,svg,video{max-width:100%;display:block}
|
|
41
|
+
a{color:var(--accent);text-decoration:none}
|
|
42
|
+
a:hover{text-decoration:underline}
|
|
43
|
+
code,kbd,pre,samp{font-family:var(--font-mono)}
|
|
44
|
+
|
|
45
|
+
/* ================= SLIDE SYSTEM ================= */
|
|
46
|
+
.deck{position:relative;width:100vw;height:100vh;overflow:hidden;background:var(--bg)}
|
|
47
|
+
.slide{
|
|
48
|
+
position:absolute;inset:0;
|
|
49
|
+
display:flex;flex-direction:column;justify-content:center;
|
|
50
|
+
padding:72px 96px;
|
|
51
|
+
box-sizing:border-box;
|
|
52
|
+
opacity:0;pointer-events:none;
|
|
53
|
+
transition:opacity .5s var(--ease), transform .5s var(--ease);
|
|
54
|
+
transform:translateX(30px);
|
|
55
|
+
overflow:hidden;
|
|
56
|
+
}
|
|
57
|
+
.slide.is-active{opacity:1;pointer-events:auto;transform:translateX(0);z-index:2}
|
|
58
|
+
.slide.is-prev{transform:translateX(-30px)}
|
|
59
|
+
|
|
60
|
+
/* single-page standalone (used when a layout file is opened directly) */
|
|
61
|
+
body.single .slide{position:relative;width:100vw;height:100vh;opacity:1;transform:none;pointer-events:auto}
|
|
62
|
+
|
|
63
|
+
/* ================= TYPOGRAPHY ================= */
|
|
64
|
+
.eyebrow{font-size:13px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3)}
|
|
65
|
+
.kicker{font-size:14px;font-weight:600;color:var(--accent);letter-spacing:.08em;text-transform:uppercase}
|
|
66
|
+
h1.title,.h1{font-family:var(--font-display);font-size:72px;line-height:1.05;font-weight:800;letter-spacing:var(--letter-tight);margin:0 0 18px;color:var(--text-1)}
|
|
67
|
+
h2.title,.h2{font-family:var(--font-display);font-size:54px;line-height:1.1;font-weight:700;letter-spacing:var(--letter-tight);margin:0 0 14px}
|
|
68
|
+
h3,.h3{font-size:32px;line-height:1.2;font-weight:600;letter-spacing:var(--letter-normal);margin:0 0 10px}
|
|
69
|
+
h4,.h4{font-size:22px;line-height:1.3;font-weight:600;margin:0 0 8px}
|
|
70
|
+
.lede{font-size:22px;line-height:1.55;color:var(--text-2);font-weight:300;max-width:62ch}
|
|
71
|
+
.dim{color:var(--text-2)}
|
|
72
|
+
.dim2{color:var(--text-3)}
|
|
73
|
+
.mono{font-family:var(--font-mono)}
|
|
74
|
+
.serif{font-family:var(--font-serif)}
|
|
75
|
+
.gradient-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
|
|
76
|
+
|
|
77
|
+
/* ================= LAYOUT PRIMITIVES ================= */
|
|
78
|
+
.stack>*+*{margin-top:14px}
|
|
79
|
+
.row{display:flex;gap:24px;align-items:center}
|
|
80
|
+
.row.wrap{flex-wrap:wrap}
|
|
81
|
+
.grid{display:grid;gap:24px}
|
|
82
|
+
.g2{grid-template-columns:repeat(2,1fr)}
|
|
83
|
+
.g3{grid-template-columns:repeat(3,1fr)}
|
|
84
|
+
.g4{grid-template-columns:repeat(4,1fr)}
|
|
85
|
+
.center{display:flex;align-items:center;justify-content:center;text-align:center}
|
|
86
|
+
.fill{flex:1}
|
|
87
|
+
.sp-t{padding-top:24px}.sp-b{padding-bottom:24px}
|
|
88
|
+
.mt-s{margin-top:8px}.mt-m{margin-top:18px}.mt-l{margin-top:32px}
|
|
89
|
+
.mb-s{margin-bottom:8px}.mb-m{margin-bottom:18px}.mb-l{margin-bottom:32px}
|
|
90
|
+
|
|
91
|
+
/* ================= CARDS ================= */
|
|
92
|
+
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
|
|
93
|
+
padding:26px 28px;box-shadow:var(--shadow);position:relative;overflow:hidden}
|
|
94
|
+
.card-soft{background:var(--surface-2);border:1px solid var(--border)}
|
|
95
|
+
.card-outline{background:transparent;border:1.5px solid var(--border-strong);box-shadow:none}
|
|
96
|
+
.card-accent{background:var(--surface);border-top:3px solid var(--accent)}
|
|
97
|
+
.card-hover{transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
|
|
98
|
+
.card-hover:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
|
|
99
|
+
|
|
100
|
+
.pill{display:inline-block;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:500;
|
|
101
|
+
background:var(--surface-2);color:var(--text-2);border:1px solid var(--border)}
|
|
102
|
+
.pill-accent{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 28%,transparent)}
|
|
103
|
+
|
|
104
|
+
/* ================= BARS / DIVIDERS ================= */
|
|
105
|
+
.divider{height:1px;background:var(--border);width:100%}
|
|
106
|
+
.divider-accent{height:3px;width:72px;background:var(--accent);border-radius:2px}
|
|
107
|
+
|
|
108
|
+
/* ================= CHROME (header/footer/progress) ================= */
|
|
109
|
+
.deck-header{position:absolute;top:24px;left:40px;right:40px;display:flex;align-items:center;justify-content:space-between;
|
|
110
|
+
font-size:12px;color:var(--text-3);letter-spacing:.12em;text-transform:uppercase;z-index:10;pointer-events:none}
|
|
111
|
+
.deck-footer{position:absolute;bottom:24px;left:40px;right:40px;display:flex;align-items:center;justify-content:space-between;
|
|
112
|
+
font-size:12px;color:var(--text-3);z-index:10;pointer-events:none}
|
|
113
|
+
.slide-number::before{content:attr(data-current)}
|
|
114
|
+
.slide-number::after{content:" / " attr(data-total)}
|
|
115
|
+
.progress-bar{position:fixed;left:0;right:0;bottom:0;height:3px;background:transparent;z-index:20}
|
|
116
|
+
.progress-bar > span{display:block;height:100%;width:0;background:var(--accent);transition:width .3s var(--ease)}
|
|
117
|
+
|
|
118
|
+
/* ================= PRESENTER / OVERVIEW ================= */
|
|
119
|
+
.notes{display:none!important}
|
|
120
|
+
.notes-overlay{position:fixed;inset:auto 0 0 0;max-height:42vh;background:rgba(20,22,30,.95);color:#e8ebf4;
|
|
121
|
+
padding:20px 32px;font-size:16px;line-height:1.6;border-top:1px solid rgba(255,255,255,.1);transform:translateY(100%);
|
|
122
|
+
transition:transform .3s var(--ease);z-index:40;overflow:auto;font-family:var(--font-sans)}
|
|
123
|
+
.notes-overlay.open{transform:translateY(0)}
|
|
124
|
+
.overview{position:fixed;inset:0;background:rgba(10,12,18,.92);backdrop-filter:blur(12px);z-index:50;
|
|
125
|
+
display:none;padding:40px;overflow:auto}
|
|
126
|
+
.overview.open{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;align-content:start}
|
|
127
|
+
.overview .thumb{background:var(--surface);border:1px solid var(--border);border-radius:12px;
|
|
128
|
+
aspect-ratio:16/9;overflow:hidden;cursor:pointer;position:relative;color:var(--text-1);padding:16px;
|
|
129
|
+
font-size:11px;transition:transform .2s var(--ease)}
|
|
130
|
+
.overview .thumb:hover{transform:scale(1.04)}
|
|
131
|
+
.overview .thumb .n{position:absolute;top:8px;left:10px;font-weight:700;font-size:14px;color:var(--text-3)}
|
|
132
|
+
.overview .thumb .t{position:absolute;bottom:10px;left:14px;right:14px;font-weight:600;color:var(--text-1)}
|
|
133
|
+
|
|
134
|
+
/* ================= PRESENTER VIEW ================= */
|
|
135
|
+
/* Presenter view opens in a separate popup window (S key).
|
|
136
|
+
* All presenter styles are self-contained in the popup HTML generated by runtime.js.
|
|
137
|
+
* The audience window (this file) is NOT affected — it stays as normal deck view.
|
|
138
|
+
* Only the .notes class below is needed to hide speaker notes from audience. */
|
|
139
|
+
|
|
140
|
+
/* ================= UTILITY ================= */
|
|
141
|
+
.hidden{display:none!important}
|
|
142
|
+
.nowrap{white-space:nowrap}
|
|
143
|
+
.tr{text-align:right}.tc{text-align:center}.tl{text-align:left}
|
|
144
|
+
.uppercase{text-transform:uppercase;letter-spacing:.12em}
|
|
145
|
+
|
|
146
|
+
/* ================= PRINT ================= */
|
|
147
|
+
@media print{
|
|
148
|
+
.slide{position:relative;opacity:1!important;transform:none!important;page-break-after:always;height:100vh}
|
|
149
|
+
.deck-header,.deck-footer,.progress-bar,.notes-overlay,.overview{display:none!important}
|
|
150
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/* html-ppt :: shared webfonts */
|
|
2
|
+
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;500;600;700;800;900&display=swap');
|
|
3
|
+
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@200;300;400;500;600;700;900&display=swap');
|
|
4
|
+
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@300;400;600;700&display=swap');
|
|
5
|
+
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap');
|
|
6
|
+
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,800;1,400&display=swap');
|
|
7
|
+
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap');
|
|
8
|
+
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500;700&display=swap');
|
|
9
|
+
@import url('https://fonts.googleapis.com/css2?family=Archivo+Black&display=swap');
|