@hiai-gg/hiai-opencode 0.2.1 → 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 +34 -38
- package/ARCHITECTURE.md +4 -3
- package/LICENSE.md +14 -0
- package/README.md +52 -21
- 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 +3 -3
- 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/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/storage.d.ts +1 -0
- 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/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/git-operations.d.ts +47 -0
- package/dist/hooks/token-budget.d.ts +30 -0
- package/dist/index.js +1185 -1078
- 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/skill-discovery.md +288 -0
- package/package.json +1 -1
- 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,63 @@
|
|
|
1
|
+
/* html-ppt fx :: shared helpers */
|
|
2
|
+
(function(){
|
|
3
|
+
window.HPX = window.HPX || {};
|
|
4
|
+
const U = window.HPX._u = {};
|
|
5
|
+
|
|
6
|
+
U.css = (el, name, fb) => {
|
|
7
|
+
const v = getComputedStyle(el).getPropertyValue(name).trim();
|
|
8
|
+
return v || fb;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
U.accent = (el, fb) => U.css(el, '--accent', fb || '#7c5cff');
|
|
12
|
+
U.accent2 = (el, fb) => U.css(el, '--accent-2', fb || '#22d3ee');
|
|
13
|
+
U.text = (el, fb) => U.css(el, '--text-1', fb || '#eaeaf2');
|
|
14
|
+
|
|
15
|
+
U.palette = (el) => [
|
|
16
|
+
U.accent(el, '#7c5cff'),
|
|
17
|
+
U.accent2(el, '#22d3ee'),
|
|
18
|
+
U.css(el, '--ok', '#22c55e'),
|
|
19
|
+
U.css(el, '--warn', '#f59e0b'),
|
|
20
|
+
U.css(el, '--danger', '#ef4444'),
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
U.canvas = (el) => {
|
|
24
|
+
if (getComputedStyle(el).position === 'static') el.style.position = 'relative';
|
|
25
|
+
const c = document.createElement('canvas');
|
|
26
|
+
c.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;pointer-events:none;display:block;';
|
|
27
|
+
el.appendChild(c);
|
|
28
|
+
const ctx = c.getContext('2d');
|
|
29
|
+
let w = 0, h = 0, dpr = Math.max(1, Math.min(2, window.devicePixelRatio||1));
|
|
30
|
+
const fit = () => {
|
|
31
|
+
const r = el.getBoundingClientRect();
|
|
32
|
+
w = Math.max(1, r.width|0);
|
|
33
|
+
h = Math.max(1, r.height|0);
|
|
34
|
+
c.width = (w*dpr)|0;
|
|
35
|
+
c.height = (h*dpr)|0;
|
|
36
|
+
ctx.setTransform(dpr,0,0,dpr,0,0);
|
|
37
|
+
};
|
|
38
|
+
fit();
|
|
39
|
+
const ro = new ResizeObserver(fit);
|
|
40
|
+
ro.observe(el);
|
|
41
|
+
return {
|
|
42
|
+
c, ctx,
|
|
43
|
+
get w(){return w;}, get h(){return h;}, get dpr(){return dpr;},
|
|
44
|
+
destroy(){
|
|
45
|
+
try{ro.disconnect();}catch(e){}
|
|
46
|
+
if (c.parentNode) c.parentNode.removeChild(c);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
U.loop = (fn) => {
|
|
52
|
+
let raf = 0, stopped = false, t0 = performance.now();
|
|
53
|
+
const tick = (t) => {
|
|
54
|
+
if (stopped) return;
|
|
55
|
+
fn((t - t0)/1000);
|
|
56
|
+
raf = requestAnimationFrame(tick);
|
|
57
|
+
};
|
|
58
|
+
raf = requestAnimationFrame(tick);
|
|
59
|
+
return () => { stopped = true; cancelAnimationFrame(raf); };
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
U.rand = (a,b) => a + Math.random()*(b-a);
|
|
63
|
+
})();
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['chain-react'] = 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 N = 8;
|
|
8
|
+
const stop = U.loop((t) => {
|
|
9
|
+
ctx.clearRect(0,0,k.w,k.h);
|
|
10
|
+
const cy = k.h/2;
|
|
11
|
+
const pad = 60;
|
|
12
|
+
const dx = (k.w - pad*2)/(N-1);
|
|
13
|
+
const period = 2.4;
|
|
14
|
+
const phase = (t % period) / period; // 0..1
|
|
15
|
+
for (let i=0;i<N;i++){
|
|
16
|
+
const x = pad + i*dx;
|
|
17
|
+
const my = i/(N-1);
|
|
18
|
+
const d = Math.abs(phase - my);
|
|
19
|
+
const pulse = Math.max(0, 1 - d*6);
|
|
20
|
+
const r = 18 + pulse*18;
|
|
21
|
+
// glow
|
|
22
|
+
const g = ctx.createRadialGradient(x,cy,0,x,cy,r*2);
|
|
23
|
+
g.addColorStop(0, `rgba(124,92,255,${0.4*pulse})`);
|
|
24
|
+
g.addColorStop(1, 'rgba(0,0,0,0)');
|
|
25
|
+
ctx.fillStyle = g;
|
|
26
|
+
ctx.fillRect(x-r*2, cy-r*2, r*4, r*4);
|
|
27
|
+
// circle
|
|
28
|
+
ctx.fillStyle = pulse>0.1 ? ac2 : ac;
|
|
29
|
+
ctx.beginPath(); ctx.arc(x,cy,r,0,Math.PI*2); ctx.fill();
|
|
30
|
+
ctx.strokeStyle='rgba(255,255,255,0.4)'; ctx.lineWidth=2;
|
|
31
|
+
ctx.stroke();
|
|
32
|
+
// connectors
|
|
33
|
+
if (i<N-1){
|
|
34
|
+
ctx.strokeStyle='rgba(200,200,230,0.3)'; ctx.lineWidth=2;
|
|
35
|
+
ctx.beginPath(); ctx.moveTo(x+r,cy); ctx.lineTo(x+dx-r,cy); ctx.stroke();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['confetti-cannon'] = 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 fire = () => {
|
|
9
|
+
for (let side=0; side<2; side++){
|
|
10
|
+
const x0 = side===0 ? 20 : k.w-20;
|
|
11
|
+
const y0 = k.h - 20;
|
|
12
|
+
for (let i=0;i<40;i++){
|
|
13
|
+
const a = side===0 ? U.rand(-Math.PI*0.7, -Math.PI*0.4) : U.rand(-Math.PI*0.6, -Math.PI*0.3) - Math.PI/2 - Math.PI/6;
|
|
14
|
+
const spd = U.rand(300, 520);
|
|
15
|
+
parts.push({
|
|
16
|
+
x: x0, y: y0,
|
|
17
|
+
vx: Math.cos(a)*spd, vy: Math.sin(a)*spd,
|
|
18
|
+
w: U.rand(6,12), h: U.rand(3,7),
|
|
19
|
+
rot: Math.random()*Math.PI, vr: U.rand(-6,6),
|
|
20
|
+
c: pal[(Math.random()*pal.length)|0],
|
|
21
|
+
life: 1
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
fire();
|
|
27
|
+
let last = 0;
|
|
28
|
+
const stop = U.loop((t) => {
|
|
29
|
+
ctx.clearRect(0,0,k.w,k.h);
|
|
30
|
+
if (t - last > 3) { fire(); last = t; }
|
|
31
|
+
const dt = 1/60;
|
|
32
|
+
parts = parts.filter(p => p.life > 0 && p.y < k.h+40);
|
|
33
|
+
for (const p of parts){
|
|
34
|
+
p.vy += 520*dt;
|
|
35
|
+
p.x += p.vx*dt; p.y += p.vy*dt;
|
|
36
|
+
p.rot += p.vr*dt;
|
|
37
|
+
p.life -= 0.006;
|
|
38
|
+
ctx.save();
|
|
39
|
+
ctx.translate(p.x, p.y); ctx.rotate(p.rot);
|
|
40
|
+
ctx.globalAlpha = Math.max(0, p.life);
|
|
41
|
+
ctx.fillStyle = p.c;
|
|
42
|
+
ctx.fillRect(-p.w/2, -p.h/2, p.w, p.h);
|
|
43
|
+
ctx.restore();
|
|
44
|
+
}
|
|
45
|
+
ctx.globalAlpha = 1;
|
|
46
|
+
});
|
|
47
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
48
|
+
};
|
|
49
|
+
})();
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['constellation'] = function(el){
|
|
4
|
+
const U = window.HPX._u;
|
|
5
|
+
const k = U.canvas(el), ctx = k.ctx;
|
|
6
|
+
const ac = U.accent(el,'#9fb4ff');
|
|
7
|
+
const N = 70;
|
|
8
|
+
let pts = [];
|
|
9
|
+
const seed = () => {
|
|
10
|
+
pts = Array.from({length:N}, () => ({
|
|
11
|
+
x: Math.random()*k.w, y: Math.random()*k.h,
|
|
12
|
+
vx: U.rand(-0.3,0.3), vy: U.rand(-0.3,0.3)
|
|
13
|
+
}));
|
|
14
|
+
};
|
|
15
|
+
seed();
|
|
16
|
+
let lw=k.w, lh=k.h;
|
|
17
|
+
const stop = U.loop(() => {
|
|
18
|
+
if (k.w!==lw||k.h!==lh){ seed(); lw=k.w; lh=k.h; }
|
|
19
|
+
ctx.clearRect(0,0,k.w,k.h);
|
|
20
|
+
for (const p of pts){
|
|
21
|
+
p.x += p.vx; p.y += p.vy;
|
|
22
|
+
if (p.x<0||p.x>k.w) p.vx*=-1;
|
|
23
|
+
if (p.y<0||p.y>k.h) p.vy*=-1;
|
|
24
|
+
}
|
|
25
|
+
for (let i=0;i<N;i++){
|
|
26
|
+
for (let j=i+1;j<N;j++){
|
|
27
|
+
const a=pts[i], b=pts[j];
|
|
28
|
+
const d = Math.hypot(a.x-b.x, a.y-b.y);
|
|
29
|
+
if (d < 150){
|
|
30
|
+
ctx.globalAlpha = 1 - d/150;
|
|
31
|
+
ctx.strokeStyle = ac; ctx.lineWidth=1;
|
|
32
|
+
ctx.beginPath(); ctx.moveTo(a.x,a.y); ctx.lineTo(b.x,b.y); ctx.stroke();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
ctx.globalAlpha = 1;
|
|
37
|
+
ctx.fillStyle = ac;
|
|
38
|
+
for (const p of pts){
|
|
39
|
+
ctx.beginPath(); ctx.arc(p.x,p.y,1.8,0,Math.PI*2); ctx.fill();
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['counter-explosion'] = function(el){
|
|
4
|
+
const U = window.HPX._u;
|
|
5
|
+
if (getComputedStyle(el).position === 'static') el.style.position = 'relative';
|
|
6
|
+
const target = parseInt(el.getAttribute('data-fx-to') || '2400', 10);
|
|
7
|
+
const k = U.canvas(el), ctx = k.ctx;
|
|
8
|
+
const pal = U.palette(el);
|
|
9
|
+
// number overlay
|
|
10
|
+
const num = document.createElement('div');
|
|
11
|
+
num.style.cssText = 'position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:900 120px system-ui,sans-serif;color:var(--text-1,#fff);pointer-events:none;text-shadow:0 4px 40px rgba(124,92,255,0.5);';
|
|
12
|
+
num.textContent = '0';
|
|
13
|
+
el.appendChild(num);
|
|
14
|
+
let parts = [];
|
|
15
|
+
let state = 'count'; // count | burst | hold
|
|
16
|
+
let stateT = 0;
|
|
17
|
+
let value = 0;
|
|
18
|
+
let cycle = 0;
|
|
19
|
+
const burst = () => {
|
|
20
|
+
const cx = k.w/2, cy = k.h/2;
|
|
21
|
+
for (let i=0;i<120;i++){
|
|
22
|
+
const a = Math.random()*Math.PI*2;
|
|
23
|
+
const s = U.rand(120, 400);
|
|
24
|
+
parts.push({x:cx,y:cy,vx:Math.cos(a)*s,vy:Math.sin(a)*s,life:1,r:U.rand(2,5),c:pal[(Math.random()*pal.length)|0]});
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const stop = U.loop(() => {
|
|
28
|
+
ctx.clearRect(0,0,k.w,k.h);
|
|
29
|
+
const dt = 1/60;
|
|
30
|
+
stateT += dt;
|
|
31
|
+
if (state === 'count'){
|
|
32
|
+
const dur = 2.2;
|
|
33
|
+
const p = Math.min(1, stateT/dur);
|
|
34
|
+
const eased = 1 - Math.pow(1-p,3);
|
|
35
|
+
value = Math.round(target*eased);
|
|
36
|
+
num.textContent = value.toLocaleString();
|
|
37
|
+
if (p >= 1){ state='burst'; stateT=0; burst(); }
|
|
38
|
+
} else if (state === 'burst'){
|
|
39
|
+
if (stateT > 0.05 && stateT < 0.3 && parts.length < 200) {}
|
|
40
|
+
if (stateT > 2.5){ state='hold'; stateT=0; }
|
|
41
|
+
} else if (state === 'hold'){
|
|
42
|
+
if (stateT > 1.5){
|
|
43
|
+
state='count'; stateT=0; value=0; num.textContent='0'; cycle++;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
parts = parts.filter(p => p.life > 0);
|
|
47
|
+
for (const p of parts){
|
|
48
|
+
p.vy += 260*dt; p.vx *= 0.985; p.vy *= 0.985;
|
|
49
|
+
p.x += p.vx*dt; p.y += p.vy*dt; p.life -= 0.01;
|
|
50
|
+
ctx.globalAlpha = Math.max(0,p.life);
|
|
51
|
+
ctx.fillStyle = p.c;
|
|
52
|
+
ctx.beginPath(); ctx.arc(p.x,p.y,p.r,0,Math.PI*2); ctx.fill();
|
|
53
|
+
}
|
|
54
|
+
ctx.globalAlpha = 1;
|
|
55
|
+
});
|
|
56
|
+
return { stop(){ stop(); k.destroy(); if (num.parentNode) num.parentNode.removeChild(num); } };
|
|
57
|
+
};
|
|
58
|
+
})();
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['data-stream'] = function(el){
|
|
4
|
+
const U = window.HPX._u;
|
|
5
|
+
const k = U.canvas(el), ctx = k.ctx;
|
|
6
|
+
const ac = U.accent(el,'#22d3ee'), ac2 = U.accent2(el,'#7c5cff');
|
|
7
|
+
const rows = [];
|
|
8
|
+
const rh = 22;
|
|
9
|
+
const genRow = (y) => ({
|
|
10
|
+
y, dir: Math.random()<0.5?-1:1,
|
|
11
|
+
speed: U.rand(30, 90),
|
|
12
|
+
offset: Math.random()*2000,
|
|
13
|
+
text: Array.from({length:120}, () => {
|
|
14
|
+
const r = Math.random();
|
|
15
|
+
if (r<0.3) return Math.random()<0.5?'0':'1';
|
|
16
|
+
if (r<0.6) return '0x' + Math.floor(Math.random()*256).toString(16).padStart(2,'0');
|
|
17
|
+
return Math.random().toString(16).slice(2,6);
|
|
18
|
+
}).join(' ')
|
|
19
|
+
});
|
|
20
|
+
const init = () => {
|
|
21
|
+
rows.length = 0;
|
|
22
|
+
const n = Math.ceil(k.h/rh);
|
|
23
|
+
for (let i=0;i<n;i++) rows.push(genRow(i*rh + rh*0.7));
|
|
24
|
+
};
|
|
25
|
+
init();
|
|
26
|
+
let lh = k.h;
|
|
27
|
+
const stop = U.loop((t) => {
|
|
28
|
+
if (k.h!==lh){ init(); lh=k.h; }
|
|
29
|
+
ctx.fillStyle = 'rgba(5,8,14,0.35)';
|
|
30
|
+
ctx.fillRect(0,0,k.w,k.h);
|
|
31
|
+
ctx.font = '13px ui-monospace,Menlo,monospace';
|
|
32
|
+
for (let i=0;i<rows.length;i++){
|
|
33
|
+
const r = rows[i];
|
|
34
|
+
const x = r.dir>0
|
|
35
|
+
? ((t*r.speed + r.offset) % (k.w+400)) - 400
|
|
36
|
+
: k.w - (((t*r.speed + r.offset) % (k.w+400)) - 400);
|
|
37
|
+
ctx.fillStyle = (i%3===0)?ac:ac2;
|
|
38
|
+
ctx.globalAlpha = 0.65 + (i%2)*0.3;
|
|
39
|
+
ctx.fillText(r.text, x, r.y);
|
|
40
|
+
}
|
|
41
|
+
ctx.globalAlpha = 1;
|
|
42
|
+
});
|
|
43
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
44
|
+
};
|
|
45
|
+
})();
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['firework'] = 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 rockets = [], sparks = [];
|
|
8
|
+
const launch = () => {
|
|
9
|
+
rockets.push({
|
|
10
|
+
x: U.rand(k.w*0.2, k.w*0.8), y: k.h+10,
|
|
11
|
+
vx: U.rand(-30,30), vy: U.rand(-520,-380),
|
|
12
|
+
tgtY: U.rand(k.h*0.15, k.h*0.45),
|
|
13
|
+
c: pal[(Math.random()*pal.length)|0]
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
const burst = (x, y, c) => {
|
|
17
|
+
const n = 70;
|
|
18
|
+
for (let i=0;i<n;i++){
|
|
19
|
+
const a = Math.random()*Math.PI*2;
|
|
20
|
+
const s = U.rand(60, 240);
|
|
21
|
+
sparks.push({x,y,vx:Math.cos(a)*s,vy:Math.sin(a)*s,life:1,c});
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
let last = -1;
|
|
25
|
+
const stop = U.loop((t) => {
|
|
26
|
+
ctx.fillStyle = 'rgba(0,0,0,0.18)';
|
|
27
|
+
ctx.fillRect(0,0,k.w,k.h);
|
|
28
|
+
if (t - last > 0.7) { launch(); last = t; }
|
|
29
|
+
const dt = 1/60;
|
|
30
|
+
rockets = rockets.filter(r => {
|
|
31
|
+
r.x += r.vx*dt; r.y += r.vy*dt; r.vy += 260*dt;
|
|
32
|
+
ctx.fillStyle = r.c;
|
|
33
|
+
ctx.beginPath(); ctx.arc(r.x, r.y, 2.5, 0, Math.PI*2); ctx.fill();
|
|
34
|
+
if (r.y <= r.tgtY || r.vy >= 0) { burst(r.x, r.y, r.c); return false; }
|
|
35
|
+
return true;
|
|
36
|
+
});
|
|
37
|
+
sparks = sparks.filter(p => p.life > 0);
|
|
38
|
+
for (const p of sparks){
|
|
39
|
+
p.vy += 90*dt;
|
|
40
|
+
p.vx *= 0.98; p.vy *= 0.98;
|
|
41
|
+
p.x += p.vx*dt; p.y += p.vy*dt;
|
|
42
|
+
p.life -= 0.012;
|
|
43
|
+
ctx.globalAlpha = Math.max(0, p.life);
|
|
44
|
+
ctx.fillStyle = p.c;
|
|
45
|
+
ctx.beginPath(); ctx.arc(p.x, p.y, 2, 0, Math.PI*2); ctx.fill();
|
|
46
|
+
}
|
|
47
|
+
ctx.globalAlpha = 1;
|
|
48
|
+
});
|
|
49
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
50
|
+
};
|
|
51
|
+
})();
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['galaxy-swirl'] = 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 N = 800;
|
|
8
|
+
const parts = Array.from({length:N}, (_,i) => {
|
|
9
|
+
const arm = i%3;
|
|
10
|
+
const t = Math.random();
|
|
11
|
+
const r = t*180 + 8;
|
|
12
|
+
const base = (arm/3)*Math.PI*2;
|
|
13
|
+
return { r, a: base + Math.log(r+1)*1.6 + U.rand(-0.2,0.2),
|
|
14
|
+
c: pal[arm%pal.length],
|
|
15
|
+
s: U.rand(0.8, 2.2) };
|
|
16
|
+
});
|
|
17
|
+
const stop = U.loop((t) => {
|
|
18
|
+
ctx.fillStyle = 'rgba(0,0,0,0.15)';
|
|
19
|
+
ctx.fillRect(0,0,k.w,k.h);
|
|
20
|
+
const cx=k.w/2, cy=k.h/2;
|
|
21
|
+
for (const p of parts){
|
|
22
|
+
const a = p.a + t*0.15;
|
|
23
|
+
const x = cx + Math.cos(a)*p.r;
|
|
24
|
+
const y = cy + Math.sin(a)*p.r*0.7;
|
|
25
|
+
ctx.fillStyle = p.c;
|
|
26
|
+
ctx.globalAlpha = 0.7;
|
|
27
|
+
ctx.beginPath(); ctx.arc(x,y,p.s,0,Math.PI*2); ctx.fill();
|
|
28
|
+
}
|
|
29
|
+
ctx.globalAlpha = 1;
|
|
30
|
+
});
|
|
31
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
32
|
+
};
|
|
33
|
+
})();
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['gradient-blob'] = 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 blobs = Array.from({length:4}, (_,i) => ({
|
|
8
|
+
x: U.rand(0,1), y: U.rand(0,1),
|
|
9
|
+
vx: U.rand(-0.08,0.08), vy: U.rand(-0.08,0.08),
|
|
10
|
+
r: U.rand(180,320),
|
|
11
|
+
c: pal[i%pal.length]
|
|
12
|
+
}));
|
|
13
|
+
const hex2rgb = (h) => {
|
|
14
|
+
const m = h.replace('#','').match(/.{2}/g);
|
|
15
|
+
if (!m) return [124,92,255];
|
|
16
|
+
return m.map(x=>parseInt(x,16));
|
|
17
|
+
};
|
|
18
|
+
const stop = U.loop((t) => {
|
|
19
|
+
ctx.fillStyle = 'rgba(10,12,22,0.2)';
|
|
20
|
+
ctx.fillRect(0,0,k.w,k.h);
|
|
21
|
+
ctx.globalCompositeOperation = 'lighter';
|
|
22
|
+
for (const b of blobs){
|
|
23
|
+
b.x += b.vx*0.01; b.y += b.vy*0.01;
|
|
24
|
+
if (b.x<0||b.x>1) b.vx*=-1;
|
|
25
|
+
if (b.y<0||b.y>1) b.vy*=-1;
|
|
26
|
+
const px = b.x*k.w, py = b.y*k.h;
|
|
27
|
+
const r = b.r + Math.sin(t*0.8 + b.x*6)*30;
|
|
28
|
+
const [R,G,B] = hex2rgb(b.c);
|
|
29
|
+
const grad = ctx.createRadialGradient(px,py,0,px,py,r);
|
|
30
|
+
grad.addColorStop(0, `rgba(${R},${G},${B},0.55)`);
|
|
31
|
+
grad.addColorStop(1, `rgba(${R},${G},${B},0)`);
|
|
32
|
+
ctx.fillStyle = grad;
|
|
33
|
+
ctx.beginPath(); ctx.arc(px,py,r,0,Math.PI*2); ctx.fill();
|
|
34
|
+
}
|
|
35
|
+
ctx.globalCompositeOperation = 'source-over';
|
|
36
|
+
});
|
|
37
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['knowledge-graph'] = 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 tx = U.text(el, '#e7e7ef');
|
|
8
|
+
const labels = ['AI','ML','LLM','Graph','Node','Edge','Claude','GPT','RAG','Vector',
|
|
9
|
+
'Embed','Neural','Agent','Tool','Memory','Logic','Data','Train','Infer','Token',
|
|
10
|
+
'Prompt','Chain','Plan','Skill','Cloud','Edge','GPU','Code','Task','Flow'];
|
|
11
|
+
const N = 28;
|
|
12
|
+
const nodes = Array.from({length:N}, (_,i) => ({
|
|
13
|
+
x: U.rand(40, 300), y: U.rand(40, 200),
|
|
14
|
+
vx: 0, vy: 0, label: labels[i%labels.length],
|
|
15
|
+
c: pal[i%pal.length]
|
|
16
|
+
}));
|
|
17
|
+
const edges = [];
|
|
18
|
+
const made = new Set();
|
|
19
|
+
while (edges.length < 50){
|
|
20
|
+
const a = (Math.random()*N)|0, b = (Math.random()*N)|0;
|
|
21
|
+
if (a===b) continue;
|
|
22
|
+
const key = a<b ? a+'-'+b : b+'-'+a;
|
|
23
|
+
if (made.has(key)) continue;
|
|
24
|
+
made.add(key); edges.push([a,b]);
|
|
25
|
+
}
|
|
26
|
+
const stop = U.loop(() => {
|
|
27
|
+
// physics
|
|
28
|
+
for (let i=0;i<N;i++){
|
|
29
|
+
for (let j=i+1;j<N;j++){
|
|
30
|
+
const a=nodes[i], b=nodes[j];
|
|
31
|
+
const dx=b.x-a.x, dy=b.y-a.y;
|
|
32
|
+
let d2=dx*dx+dy*dy; if (d2<1) d2=1;
|
|
33
|
+
const d=Math.sqrt(d2);
|
|
34
|
+
const f=1600/d2;
|
|
35
|
+
const fx=(dx/d)*f, fy=(dy/d)*f;
|
|
36
|
+
a.vx-=fx; a.vy-=fy; b.vx+=fx; b.vy+=fy;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
for (const [i,j] of edges){
|
|
40
|
+
const a=nodes[i], b=nodes[j];
|
|
41
|
+
const dx=b.x-a.x, dy=b.y-a.y, d=Math.hypot(dx,dy)||1;
|
|
42
|
+
const f=(d-90)*0.008;
|
|
43
|
+
const fx=(dx/d)*f, fy=(dy/d)*f;
|
|
44
|
+
a.vx+=fx; a.vy+=fy; b.vx-=fx; b.vy-=fy;
|
|
45
|
+
}
|
|
46
|
+
const cx=k.w/2, cy=k.h/2;
|
|
47
|
+
for (const n of nodes){
|
|
48
|
+
n.vx += (cx-n.x)*0.002;
|
|
49
|
+
n.vy += (cy-n.y)*0.002;
|
|
50
|
+
n.vx *= 0.85; n.vy *= 0.85;
|
|
51
|
+
n.x += n.vx; n.y += n.vy;
|
|
52
|
+
}
|
|
53
|
+
ctx.clearRect(0,0,k.w,k.h);
|
|
54
|
+
ctx.strokeStyle = 'rgba(180,180,220,0.25)'; ctx.lineWidth=1;
|
|
55
|
+
for (const [i,j] of edges){
|
|
56
|
+
const a=nodes[i], b=nodes[j];
|
|
57
|
+
ctx.beginPath(); ctx.moveTo(a.x,a.y); ctx.lineTo(b.x,b.y); ctx.stroke();
|
|
58
|
+
}
|
|
59
|
+
ctx.font='11px system-ui,sans-serif'; ctx.textAlign='center'; ctx.textBaseline='middle';
|
|
60
|
+
for (const n of nodes){
|
|
61
|
+
ctx.fillStyle = n.c;
|
|
62
|
+
ctx.beginPath(); ctx.arc(n.x,n.y,7,0,Math.PI*2); ctx.fill();
|
|
63
|
+
ctx.fillStyle = tx;
|
|
64
|
+
ctx.fillText(n.label, n.x, n.y-14);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
68
|
+
};
|
|
69
|
+
})();
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['letter-explode'] = function(el){
|
|
4
|
+
const U = window.HPX._u;
|
|
5
|
+
if (getComputedStyle(el).position === 'static') el.style.position = 'relative';
|
|
6
|
+
const src = el.querySelector('[data-fx-text]') || el;
|
|
7
|
+
const text = (el.getAttribute('data-fx-text-value') || src.textContent || 'EXPLODE').trim();
|
|
8
|
+
// Build a container, hide source text
|
|
9
|
+
const wrap = document.createElement('div');
|
|
10
|
+
wrap.style.cssText = 'position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;';
|
|
11
|
+
const inner = document.createElement('div');
|
|
12
|
+
inner.style.cssText = 'font-size:64px;font-weight:900;letter-spacing:0.02em;color:var(--text-1,#fff);white-space:nowrap;';
|
|
13
|
+
wrap.appendChild(inner);
|
|
14
|
+
el.appendChild(wrap);
|
|
15
|
+
const spans = [];
|
|
16
|
+
for (const ch of text){
|
|
17
|
+
const s = document.createElement('span');
|
|
18
|
+
s.textContent = ch === ' ' ? '\u00A0' : ch;
|
|
19
|
+
s.style.display='inline-block';
|
|
20
|
+
s.style.transform='translate(0,0)';
|
|
21
|
+
s.style.transition='transform 900ms cubic-bezier(.2,.9,.3,1), opacity 900ms';
|
|
22
|
+
s.style.opacity='0';
|
|
23
|
+
inner.appendChild(s);
|
|
24
|
+
spans.push(s);
|
|
25
|
+
}
|
|
26
|
+
let stopped = false;
|
|
27
|
+
const run = () => {
|
|
28
|
+
if (stopped) return;
|
|
29
|
+
spans.forEach((s,i) => {
|
|
30
|
+
const dx = U.rand(-400, 400), dy = U.rand(-300, 300);
|
|
31
|
+
s.style.transition='none';
|
|
32
|
+
s.style.transform=`translate(${dx}px,${dy}px) rotate(${U.rand(-180,180)}deg)`;
|
|
33
|
+
s.style.opacity='0';
|
|
34
|
+
});
|
|
35
|
+
// force reflow
|
|
36
|
+
void inner.offsetWidth;
|
|
37
|
+
spans.forEach((s,i) => {
|
|
38
|
+
setTimeout(() => {
|
|
39
|
+
if (stopped) return;
|
|
40
|
+
s.style.transition='transform 900ms cubic-bezier(.2,.9,.3,1), opacity 900ms';
|
|
41
|
+
s.style.transform='translate(0,0) rotate(0deg)';
|
|
42
|
+
s.style.opacity='1';
|
|
43
|
+
}, i*35);
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
run();
|
|
47
|
+
const iv = setInterval(run, 4500);
|
|
48
|
+
return { stop(){ stopped=true; clearInterval(iv); if (wrap.parentNode) wrap.parentNode.removeChild(wrap); } };
|
|
49
|
+
};
|
|
50
|
+
})();
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['magnetic-field'] = 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 N = 60;
|
|
8
|
+
const parts = Array.from({length:N}, (_,i) => ({
|
|
9
|
+
phase: Math.random()*Math.PI*2,
|
|
10
|
+
freq: U.rand(0.4, 1.2),
|
|
11
|
+
amp: U.rand(30, 90),
|
|
12
|
+
y0: U.rand(0.15, 0.85),
|
|
13
|
+
c: pal[i%pal.length],
|
|
14
|
+
trail: []
|
|
15
|
+
}));
|
|
16
|
+
const stop = U.loop((t) => {
|
|
17
|
+
ctx.fillStyle = 'rgba(0,0,0,0.08)';
|
|
18
|
+
ctx.fillRect(0,0,k.w,k.h);
|
|
19
|
+
for (const p of parts){
|
|
20
|
+
const x = ((t*80 + p.phase*50) % (k.w+100)) - 50;
|
|
21
|
+
const y = k.h*p.y0 + Math.sin(x*0.02 + p.phase + t*p.freq)*p.amp;
|
|
22
|
+
p.trail.push([x,y]);
|
|
23
|
+
if (p.trail.length > 18) p.trail.shift();
|
|
24
|
+
ctx.strokeStyle = p.c;
|
|
25
|
+
ctx.lineWidth = 2;
|
|
26
|
+
ctx.beginPath();
|
|
27
|
+
for (let i=0;i<p.trail.length;i++){
|
|
28
|
+
const [tx,ty] = p.trail[i];
|
|
29
|
+
if (i===0) ctx.moveTo(tx,ty); else ctx.lineTo(tx,ty);
|
|
30
|
+
}
|
|
31
|
+
ctx.globalAlpha = 0.7;
|
|
32
|
+
ctx.stroke();
|
|
33
|
+
ctx.globalAlpha = 1;
|
|
34
|
+
ctx.fillStyle = p.c;
|
|
35
|
+
ctx.beginPath(); ctx.arc(x,y,2.5,0,Math.PI*2); ctx.fill();
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
(function(){
|
|
2
|
+
window.HPX = window.HPX || {};
|
|
3
|
+
window.HPX['matrix-rain'] = function(el){
|
|
4
|
+
const U = window.HPX._u;
|
|
5
|
+
const k = U.canvas(el), ctx = k.ctx;
|
|
6
|
+
const glyphs = 'アイウエオカキクケコサシスセソタチツテトナニヌネノ0123456789ABCDEF'.split('');
|
|
7
|
+
const fs = 16;
|
|
8
|
+
let cols = 0, drops = [];
|
|
9
|
+
const init = () => {
|
|
10
|
+
cols = Math.ceil(k.w/fs);
|
|
11
|
+
drops = Array.from({length:cols}, () => U.rand(-20, 0));
|
|
12
|
+
};
|
|
13
|
+
init();
|
|
14
|
+
let lw = k.w, lh = k.h;
|
|
15
|
+
const stop = U.loop(() => {
|
|
16
|
+
if (k.w!==lw || k.h!==lh){ init(); lw=k.w; lh=k.h; }
|
|
17
|
+
ctx.fillStyle = 'rgba(0,0,0,0.08)';
|
|
18
|
+
ctx.fillRect(0,0,k.w,k.h);
|
|
19
|
+
ctx.font = fs+'px monospace';
|
|
20
|
+
for (let i=0;i<cols;i++){
|
|
21
|
+
const ch = glyphs[(Math.random()*glyphs.length)|0];
|
|
22
|
+
const x = i*fs, y = drops[i]*fs;
|
|
23
|
+
ctx.fillStyle = '#9fffc9';
|
|
24
|
+
ctx.fillText(ch, x, y);
|
|
25
|
+
ctx.fillStyle = '#00ff6a';
|
|
26
|
+
ctx.fillText(ch, x, y - fs);
|
|
27
|
+
drops[i] += 1;
|
|
28
|
+
if (y > k.h && Math.random() > 0.975) drops[i] = 0;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return { stop(){ stop(); k.destroy(); } };
|
|
32
|
+
};
|
|
33
|
+
})();
|