@goldencomm/create-baseline 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -0
- package/index.mjs +296 -0
- package/package.json +44 -0
- package/templates/next/.claude/skills/ai-elements/SKILL.md +160 -0
- package/templates/next/.claude/skills/ai-elements/references/agent.md +134 -0
- package/templates/next/.claude/skills/ai-elements/references/artifact.md +84 -0
- package/templates/next/.claude/skills/ai-elements/references/attachments.md +190 -0
- package/templates/next/.claude/skills/ai-elements/references/audio-player.md +134 -0
- package/templates/next/.claude/skills/ai-elements/references/canvas.md +34 -0
- package/templates/next/.claude/skills/ai-elements/references/chain-of-thought.md +81 -0
- package/templates/next/.claude/skills/ai-elements/references/checkpoint.md +183 -0
- package/templates/next/.claude/skills/ai-elements/references/code-block.md +170 -0
- package/templates/next/.claude/skills/ai-elements/references/commit.md +177 -0
- package/templates/next/.claude/skills/ai-elements/references/confirmation.md +262 -0
- package/templates/next/.claude/skills/ai-elements/references/connection.md +34 -0
- package/templates/next/.claude/skills/ai-elements/references/context.md +126 -0
- package/templates/next/.claude/skills/ai-elements/references/controls.md +32 -0
- package/templates/next/.claude/skills/ai-elements/references/conversation.md +224 -0
- package/templates/next/.claude/skills/ai-elements/references/edge.md +52 -0
- package/templates/next/.claude/skills/ai-elements/references/environment-variables.md +102 -0
- package/templates/next/.claude/skills/ai-elements/references/file-tree.md +72 -0
- package/templates/next/.claude/skills/ai-elements/references/image.md +146 -0
- package/templates/next/.claude/skills/ai-elements/references/inline-citation.md +299 -0
- package/templates/next/.claude/skills/ai-elements/references/jsx-preview.md +104 -0
- package/templates/next/.claude/skills/ai-elements/references/message.md +237 -0
- package/templates/next/.claude/skills/ai-elements/references/mic-selector.md +189 -0
- package/templates/next/.claude/skills/ai-elements/references/model-selector.md +112 -0
- package/templates/next/.claude/skills/ai-elements/references/node.md +73 -0
- package/templates/next/.claude/skills/ai-elements/references/open-in-chat.md +67 -0
- package/templates/next/.claude/skills/ai-elements/references/package-info.md +95 -0
- package/templates/next/.claude/skills/ai-elements/references/panel.md +33 -0
- package/templates/next/.claude/skills/ai-elements/references/persona.md +166 -0
- package/templates/next/.claude/skills/ai-elements/references/plan.md +79 -0
- package/templates/next/.claude/skills/ai-elements/references/prompt-input.md +579 -0
- package/templates/next/.claude/skills/ai-elements/references/queue.md +172 -0
- package/templates/next/.claude/skills/ai-elements/references/reasoning.md +238 -0
- package/templates/next/.claude/skills/ai-elements/references/sandbox.md +129 -0
- package/templates/next/.claude/skills/ai-elements/references/schema-display.md +102 -0
- package/templates/next/.claude/skills/ai-elements/references/shimmer.md +48 -0
- package/templates/next/.claude/skills/ai-elements/references/snippet.md +64 -0
- package/templates/next/.claude/skills/ai-elements/references/sources.md +209 -0
- package/templates/next/.claude/skills/ai-elements/references/speech-input.md +163 -0
- package/templates/next/.claude/skills/ai-elements/references/stack-trace.md +224 -0
- package/templates/next/.claude/skills/ai-elements/references/suggestion.md +124 -0
- package/templates/next/.claude/skills/ai-elements/references/task.md +222 -0
- package/templates/next/.claude/skills/ai-elements/references/terminal.md +103 -0
- package/templates/next/.claude/skills/ai-elements/references/test-results.md +157 -0
- package/templates/next/.claude/skills/ai-elements/references/tool.md +285 -0
- package/templates/next/.claude/skills/ai-elements/references/toolbar.md +32 -0
- package/templates/next/.claude/skills/ai-elements/references/transcription.md +120 -0
- package/templates/next/.claude/skills/ai-elements/references/voice-selector.md +241 -0
- package/templates/next/.claude/skills/ai-elements/references/web-preview.md +200 -0
- package/templates/next/.claude/skills/ai-elements/scripts/agent.tsx +61 -0
- package/templates/next/.claude/skills/ai-elements/scripts/artifact.tsx +127 -0
- package/templates/next/.claude/skills/ai-elements/scripts/attachments-inline.tsx +128 -0
- package/templates/next/.claude/skills/ai-elements/scripts/attachments-list.tsx +95 -0
- package/templates/next/.claude/skills/ai-elements/scripts/attachments.tsx +85 -0
- package/templates/next/.claude/skills/ai-elements/scripts/audio-player-remote.tsx +35 -0
- package/templates/next/.claude/skills/ai-elements/scripts/audio-player.tsx +68 -0
- package/templates/next/.claude/skills/ai-elements/scripts/chain-of-thought.tsx +82 -0
- package/templates/next/.claude/skills/ai-elements/scripts/checkpoint.tsx +110 -0
- package/templates/next/.claude/skills/ai-elements/scripts/code-block-dark.tsx +46 -0
- package/templates/next/.claude/skills/ai-elements/scripts/code-block.tsx +120 -0
- package/templates/next/.claude/skills/ai-elements/scripts/commit.tsx +94 -0
- package/templates/next/.claude/skills/ai-elements/scripts/confirmation-accepted.tsx +40 -0
- package/templates/next/.claude/skills/ai-elements/scripts/confirmation-rejected.tsx +40 -0
- package/templates/next/.claude/skills/ai-elements/scripts/confirmation-request.tsx +54 -0
- package/templates/next/.claude/skills/ai-elements/scripts/confirmation.tsx +55 -0
- package/templates/next/.claude/skills/ai-elements/scripts/context.tsx +45 -0
- package/templates/next/.claude/skills/ai-elements/scripts/conversation.tsx +177 -0
- package/templates/next/.claude/skills/ai-elements/scripts/environment-variables.tsx +62 -0
- package/templates/next/.claude/skills/ai-elements/scripts/file-tree-basic.tsx +18 -0
- package/templates/next/.claude/skills/ai-elements/scripts/file-tree-expanded.tsx +21 -0
- package/templates/next/.claude/skills/ai-elements/scripts/file-tree-selection.tsx +24 -0
- package/templates/next/.claude/skills/ai-elements/scripts/file-tree.tsx +42 -0
- package/templates/next/.claude/skills/ai-elements/scripts/image.tsx +20 -0
- package/templates/next/.claude/skills/ai-elements/scripts/inline-citation.tsx +97 -0
- package/templates/next/.claude/skills/ai-elements/scripts/jsx-preview.tsx +104 -0
- package/templates/next/.claude/skills/ai-elements/scripts/message.tsx +365 -0
- package/templates/next/.claude/skills/ai-elements/scripts/mic-selector.tsx +49 -0
- package/templates/next/.claude/skills/ai-elements/scripts/model-selector.tsx +365 -0
- package/templates/next/.claude/skills/ai-elements/scripts/open-in-chat.tsx +33 -0
- package/templates/next/.claude/skills/ai-elements/scripts/package-info.tsx +51 -0
- package/templates/next/.claude/skills/ai-elements/scripts/persona-command.tsx +110 -0
- package/templates/next/.claude/skills/ai-elements/scripts/persona-glint.tsx +110 -0
- package/templates/next/.claude/skills/ai-elements/scripts/persona-halo.tsx +110 -0
- package/templates/next/.claude/skills/ai-elements/scripts/persona-mana.tsx +110 -0
- package/templates/next/.claude/skills/ai-elements/scripts/persona-obsidian.tsx +110 -0
- package/templates/next/.claude/skills/ai-elements/scripts/persona-opal.tsx +110 -0
- package/templates/next/.claude/skills/ai-elements/scripts/plan.tsx +65 -0
- package/templates/next/.claude/skills/ai-elements/scripts/prompt-input-cursor.tsx +502 -0
- package/templates/next/.claude/skills/ai-elements/scripts/prompt-input-tooltip.tsx +44 -0
- package/templates/next/.claude/skills/ai-elements/scripts/prompt-input.tsx +267 -0
- package/templates/next/.claude/skills/ai-elements/scripts/queue-prompt-input.tsx +394 -0
- package/templates/next/.claude/skills/ai-elements/scripts/queue.tsx +295 -0
- package/templates/next/.claude/skills/ai-elements/scripts/reasoning.tsx +71 -0
- package/templates/next/.claude/skills/ai-elements/scripts/sandbox.tsx +178 -0
- package/templates/next/.claude/skills/ai-elements/scripts/schema-display-basic.tsx +9 -0
- package/templates/next/.claude/skills/ai-elements/scripts/schema-display-body.tsx +20 -0
- package/templates/next/.claude/skills/ai-elements/scripts/schema-display-nested.tsx +23 -0
- package/templates/next/.claude/skills/ai-elements/scripts/schema-display-params.tsx +16 -0
- package/templates/next/.claude/skills/ai-elements/scripts/schema-display.tsx +110 -0
- package/templates/next/.claude/skills/ai-elements/scripts/shimmer-duration.tsx +31 -0
- package/templates/next/.claude/skills/ai-elements/scripts/shimmer-elements.tsx +43 -0
- package/templates/next/.claude/skills/ai-elements/scripts/shimmer.tsx +17 -0
- package/templates/next/.claude/skills/ai-elements/scripts/snippet-plain.tsx +19 -0
- package/templates/next/.claude/skills/ai-elements/scripts/snippet.tsx +25 -0
- package/templates/next/.claude/skills/ai-elements/scripts/sources-custom.tsx +39 -0
- package/templates/next/.claude/skills/ai-elements/scripts/sources.tsx +32 -0
- package/templates/next/.claude/skills/ai-elements/scripts/speech-input.tsx +84 -0
- package/templates/next/.claude/skills/ai-elements/scripts/stack-trace-collapsed.tsx +39 -0
- package/templates/next/.claude/skills/ai-elements/scripts/stack-trace-no-internal.tsx +41 -0
- package/templates/next/.claude/skills/ai-elements/scripts/stack-trace.tsx +58 -0
- package/templates/next/.claude/skills/ai-elements/scripts/suggestion-input.tsx +144 -0
- package/templates/next/.claude/skills/ai-elements/scripts/suggestion.tsx +32 -0
- package/templates/next/.claude/skills/ai-elements/scripts/task.tsx +59 -0
- package/templates/next/.claude/skills/ai-elements/scripts/terminal-basic.tsx +7 -0
- package/templates/next/.claude/skills/ai-elements/scripts/terminal-clear.tsx +19 -0
- package/templates/next/.claude/skills/ai-elements/scripts/terminal-streaming.tsx +38 -0
- package/templates/next/.claude/skills/ai-elements/scripts/terminal.tsx +82 -0
- package/templates/next/.claude/skills/ai-elements/scripts/test-results-basic.tsx +27 -0
- package/templates/next/.claude/skills/ai-elements/scripts/test-results-errors.tsx +51 -0
- package/templates/next/.claude/skills/ai-elements/scripts/test-results-suites.tsx +40 -0
- package/templates/next/.claude/skills/ai-elements/scripts/test-results.tsx +102 -0
- package/templates/next/.claude/skills/ai-elements/scripts/tool-input-available.tsx +31 -0
- package/templates/next/.claude/skills/ai-elements/scripts/tool-input-streaming.tsx +30 -0
- package/templates/next/.claude/skills/ai-elements/scripts/tool-output-available.tsx +80 -0
- package/templates/next/.claude/skills/ai-elements/scripts/tool-output-error.tsx +44 -0
- package/templates/next/.claude/skills/ai-elements/scripts/tool.tsx +222 -0
- package/templates/next/.claude/skills/ai-elements/scripts/transcription.tsx +290 -0
- package/templates/next/.claude/skills/ai-elements/scripts/voice-selector.tsx +245 -0
- package/templates/next/.claude/skills/ai-elements/scripts/web-preview.tsx +115 -0
- package/templates/next/.claude/skills/ai-sdk/SKILL.md +78 -0
- package/templates/next/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/templates/next/.claude/skills/frontend-design/SKILL.md +55 -0
- package/templates/next/.claude/skills/gc-implement-figma-page/SKILL.md +93 -0
- package/templates/next/.claude/skills/migrate-ai-sdk-v6-to-v7/SKILL.md +108 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/AGENTS.md +946 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/README.md +60 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/SKILL.md +89 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/metadata.json +11 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/_sections.md +29 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/_template.md +24 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/templates/next/.claude/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/AGENTS.md +3810 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/README.md +123 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/SKILL.md +149 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/metadata.json +15 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/_sections.md +46 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/_template.md +28 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-defer-await.md +82 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md +63 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
- package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/templates/next/.claude/skills/web-design-guidelines/SKILL.md +39 -0
- package/templates/next/CLAUDE.md +42 -0
- package/templates/next/README.md +30 -0
- package/templates/next/_gitignore +4 -0
- package/templates/next/app/globals.css +13 -0
- package/templates/next/app/layout.tsx +44 -0
- package/templates/next/app/page.tsx +30 -0
- package/templates/next/globals.d.ts +8 -0
- package/templates/next/next.config.mjs +6 -0
- package/templates/next/package.json +38 -0
- package/templates/next/postcss.config.mjs +5 -0
- package/templates/next/skills-lock.json +47 -0
- package/templates/next/tsconfig.json +36 -0
- package/templates/shopify-theme/.claude/skills/gc-shopify-block/SKILL.md +44 -0
- package/templates/shopify-theme/.claude/skills/shopify-dev/SKILL.md +51 -0
- package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/log_skill_use.mjs +205 -0
- package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/search_docs.mjs +272 -0
- package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/track-telemetry.ps1 +361 -0
- package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/track-telemetry.sh +527 -0
- package/templates/shopify-theme/.claude/skills/shopify-liquid/SKILL.md +343 -0
- package/templates/shopify-theme/.claude/skills/shopify-liquid/blocks/hero-slide.liquid +342 -0
- package/templates/shopify-theme/.claude/skills/shopify-liquid/config/settings_schema.json +1 -0
- package/templates/shopify-theme/.claude/skills/shopify-liquid/featured-collection.liquid +457 -0
- package/templates/shopify-theme/.claude/skills/shopify-liquid/locales/en.default.json +10 -0
- package/templates/shopify-theme/.claude/skills/shopify-liquid/locales/en.default.schema.json +103 -0
- package/templates/shopify-theme/.claude/skills/shopify-liquid/package.json +10 -0
- package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/search_docs.mjs +759 -0
- package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/track-telemetry.ps1 +361 -0
- package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/track-telemetry.sh +527 -0
- package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/validate.mjs +654 -0
- package/templates/shopify-theme/.claude/skills/shopify-liquid/sections/hero-banner.liquid +329 -0
- package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/SKILL.md +165 -0
- package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/scripts/log_skill_use.mjs +205 -0
- package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/scripts/track-telemetry.ps1 +361 -0
- package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/scripts/track-telemetry.sh +527 -0
- package/templates/shopify-theme/.shopifyignore +9 -0
- package/templates/shopify-theme/CLAUDE.md +51 -0
- package/templates/shopify-theme/README.md +92 -0
- package/templates/shopify-theme/assets/baseline.css +8390 -0
- package/templates/shopify-theme/assets/swiper-element-bundle.min.js +14 -0
- package/templates/shopify-theme/blocks/_accordion.liquid +59 -0
- package/templates/shopify-theme/blocks/_carousel-slide.liquid +24 -0
- package/templates/shopify-theme/blocks/_modal-body.liquid +18 -0
- package/templates/shopify-theme/blocks/_modal-footer.liquid +36 -0
- package/templates/shopify-theme/blocks/_modal-header.liquid +19 -0
- package/templates/shopify-theme/blocks/_modal-media.liquid +37 -0
- package/templates/shopify-theme/blocks/accordion-group.liquid +53 -0
- package/templates/shopify-theme/blocks/alert.liquid +92 -0
- package/templates/shopify-theme/blocks/avatar-group.liquid +51 -0
- package/templates/shopify-theme/blocks/avatar.liquid +56 -0
- package/templates/shopify-theme/blocks/badge.liquid +33 -0
- package/templates/shopify-theme/blocks/breadcrumb.liquid +45 -0
- package/templates/shopify-theme/blocks/button.liquid +51 -0
- package/templates/shopify-theme/blocks/buttons.liquid +41 -0
- package/templates/shopify-theme/blocks/card.liquid +67 -0
- package/templates/shopify-theme/blocks/carousel.liquid +55 -0
- package/templates/shopify-theme/blocks/column.liquid +33 -0
- package/templates/shopify-theme/blocks/image.liquid +37 -0
- package/templates/shopify-theme/blocks/modal.liquid +52 -0
- package/templates/shopify-theme/blocks/popover.liquid +24 -0
- package/templates/shopify-theme/blocks/skeleton.liquid +22 -0
- package/templates/shopify-theme/blocks/spinner.liquid +22 -0
- package/templates/shopify-theme/blocks/split.liquid +39 -0
- package/templates/shopify-theme/blocks/tab.liquid +19 -0
- package/templates/shopify-theme/blocks/tabs.liquid +78 -0
- package/templates/shopify-theme/blocks/tags.liquid +55 -0
- package/templates/shopify-theme/blocks/text.liquid +55 -0
- package/templates/shopify-theme/blocks/tooltip.liquid +50 -0
- package/templates/shopify-theme/blocks/typography.liquid +90 -0
- package/templates/shopify-theme/config/settings_data.json +4 -0
- package/templates/shopify-theme/config/settings_schema.json +10 -0
- package/templates/shopify-theme/layout/theme.liquid +21 -0
- package/templates/shopify-theme/locales/en.default.json +5 -0
- package/templates/shopify-theme/locales/en.default.schema.json +131 -0
- package/templates/shopify-theme/package.json +21 -0
- package/templates/shopify-theme/scripts/sync-tokens.mjs +32 -0
- package/templates/shopify-theme/sections/baseline-components.liquid +81 -0
- package/templates/shopify-theme/skills-lock.json +23 -0
- package/templates/shopify-theme/snippets/lucide.liquid +34 -0
- package/templates/shopify-theme/snippets/pagination.liquid +44 -0
- package/templates/shopify-theme/templates/collection.json +13 -0
- package/templates/shopify-theme/templates/gift_card.liquid +5 -0
- package/templates/shopify-theme/templates/index.json +135 -0
- package/templates/shopify-theme/templates/list-collections.json +13 -0
- package/templates/shopify-theme/templates/product.json +13 -0
- package/templates/wordpress/.claude/CLAUDE.md +37 -0
- package/templates/wordpress/.claude/skills/wp-block-development/SKILL.md +174 -0
- package/templates/wordpress/.claude/skills/wp-block-development/references/attributes-and-serialization.md +22 -0
- package/templates/wordpress/.claude/skills/wp-block-development/references/block-json.md +49 -0
- package/templates/wordpress/.claude/skills/wp-block-development/references/creating-new-blocks.md +46 -0
- package/templates/wordpress/.claude/skills/wp-block-development/references/debugging.md +36 -0
- package/templates/wordpress/.claude/skills/wp-block-development/references/deprecations.md +24 -0
- package/templates/wordpress/.claude/skills/wp-block-development/references/dynamic-rendering.md +23 -0
- package/templates/wordpress/.claude/skills/wp-block-development/references/inner-blocks.md +25 -0
- package/templates/wordpress/.claude/skills/wp-block-development/references/registration.md +30 -0
- package/templates/wordpress/.claude/skills/wp-block-development/references/supports-and-wrappers.md +18 -0
- package/templates/wordpress/.claude/skills/wp-block-development/references/tooling-and-testing.md +21 -0
- package/templates/wordpress/.claude/skills/wp-block-development/scripts/list_blocks.mjs +121 -0
- package/templates/wordpress/.claude/skills/wp-block-themes/SKILL.md +116 -0
- package/templates/wordpress/.claude/skills/wp-block-themes/references/creating-new-block-theme.md +37 -0
- package/templates/wordpress/.claude/skills/wp-block-themes/references/debugging.md +24 -0
- package/templates/wordpress/.claude/skills/wp-block-themes/references/patterns.md +18 -0
- package/templates/wordpress/.claude/skills/wp-block-themes/references/style-variations.md +14 -0
- package/templates/wordpress/.claude/skills/wp-block-themes/references/templates-and-parts.md +16 -0
- package/templates/wordpress/.claude/skills/wp-block-themes/references/theme-json.md +59 -0
- package/templates/wordpress/.claude/skills/wp-block-themes/scripts/detect_block_themes.mjs +117 -0
- package/templates/wordpress/.claude/skills/wp-performance/SKILL.md +146 -0
- package/templates/wordpress/.claude/skills/wp-performance/references/autoload-options.md +24 -0
- package/templates/wordpress/.claude/skills/wp-performance/references/cron.md +20 -0
- package/templates/wordpress/.claude/skills/wp-performance/references/database.md +20 -0
- package/templates/wordpress/.claude/skills/wp-performance/references/http-api.md +15 -0
- package/templates/wordpress/.claude/skills/wp-performance/references/measurement.md +21 -0
- package/templates/wordpress/.claude/skills/wp-performance/references/object-cache.md +24 -0
- package/templates/wordpress/.claude/skills/wp-performance/references/query-monitor-headless.md +38 -0
- package/templates/wordpress/.claude/skills/wp-performance/references/server-timing.md +22 -0
- package/templates/wordpress/.claude/skills/wp-performance/references/wp-cli-doctor.md +24 -0
- package/templates/wordpress/.claude/skills/wp-performance/references/wp-cli-profile.md +32 -0
- package/templates/wordpress/.claude/skills/wp-performance/scripts/perf_inspect.mjs +128 -0
- package/templates/wordpress/.claude/skills/wp-plugin-development/SKILL.md +112 -0
- package/templates/wordpress/.claude/skills/wp-plugin-development/references/data-and-cron.md +19 -0
- package/templates/wordpress/.claude/skills/wp-plugin-development/references/debugging.md +19 -0
- package/templates/wordpress/.claude/skills/wp-plugin-development/references/lifecycle.md +33 -0
- package/templates/wordpress/.claude/skills/wp-plugin-development/references/security.md +29 -0
- package/templates/wordpress/.claude/skills/wp-plugin-development/references/settings-api.md +22 -0
- package/templates/wordpress/.claude/skills/wp-plugin-development/references/structure.md +16 -0
- package/templates/wordpress/.claude/skills/wp-plugin-development/scripts/detect_plugins.mjs +122 -0
- package/templates/wordpress/.claude/skills/wp-rest-api/SKILL.md +114 -0
- package/templates/wordpress/.claude/skills/wp-rest-api/references/authentication.md +18 -0
- package/templates/wordpress/.claude/skills/wp-rest-api/references/custom-content-types.md +20 -0
- package/templates/wordpress/.claude/skills/wp-rest-api/references/discovery-and-params.md +20 -0
- package/templates/wordpress/.claude/skills/wp-rest-api/references/responses-and-fields.md +30 -0
- package/templates/wordpress/.claude/skills/wp-rest-api/references/routes-and-endpoints.md +36 -0
- package/templates/wordpress/.claude/skills/wp-rest-api/references/schema.md +22 -0
- package/templates/wordpress/.ddev/commands/web/seed +7 -0
- package/templates/wordpress/.ddev/config.yaml +18 -0
- package/templates/wordpress/.ddev/docker-compose.packages.yaml +14 -0
- package/templates/wordpress/.ddev/docker-compose.redis.yaml +11 -0
- package/templates/wordpress/.env.example +33 -0
- package/templates/wordpress/CLAUDE.md +34 -0
- package/templates/wordpress/README.md +45 -0
- package/templates/wordpress/_gitignore +33 -0
- package/templates/wordpress/auth.json.example +18 -0
- package/templates/wordpress/composer.json +91 -0
- package/templates/wordpress/composer.lock +1594 -0
- package/templates/wordpress/package.json +13 -0
- package/templates/wordpress/scripts/seed.sh +64 -0
- package/templates/wordpress/skills-lock.json +35 -0
- package/templates/wordpress/wp-config.php +89 -0
- package/templates/wordpress/wp-content/index.php +2 -0
- package/templates/wordpress/wp-content/mu-plugins/baseline-bootstrap.php +26 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# Checkpoint
|
|
2
|
+
|
|
3
|
+
A simple component for marking conversation history points and restoring the chat to a previous state.
|
|
4
|
+
|
|
5
|
+
The `Checkpoint` component provides a way to mark specific points in a conversation history and restore the chat to that state. Inspired by VSCode's Copilot checkpoint feature, it allows users to revert to an earlier conversation state while maintaining a clear visual separation between different conversation segments.
|
|
6
|
+
|
|
7
|
+
See `scripts/checkpoint.tsx` for this example.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx ai-elements@latest add checkpoint
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- Simple flex layout with icon, trigger, and separator
|
|
18
|
+
- Visual separator line for clear conversation breaks
|
|
19
|
+
- Clickable restore button for reverting to checkpoint
|
|
20
|
+
- Customizable icon (defaults to BookmarkIcon)
|
|
21
|
+
- Keyboard accessible with proper ARIA labels
|
|
22
|
+
- Responsive design that adapts to different screen sizes
|
|
23
|
+
- Seamless light/dark theme integration
|
|
24
|
+
|
|
25
|
+
## Usage with AI SDK
|
|
26
|
+
|
|
27
|
+
Build a chat interface with conversation checkpoints that allow users to restore to previous states.
|
|
28
|
+
|
|
29
|
+
Add the following component to your frontend:
|
|
30
|
+
|
|
31
|
+
```tsx title="app/page.tsx"
|
|
32
|
+
"use client";
|
|
33
|
+
|
|
34
|
+
import { useState, Fragment } from "react";
|
|
35
|
+
import { useChat } from "@ai-sdk/react";
|
|
36
|
+
import {
|
|
37
|
+
Checkpoint,
|
|
38
|
+
CheckpointIcon,
|
|
39
|
+
CheckpointTrigger,
|
|
40
|
+
} from "@/components/ai-elements/checkpoint";
|
|
41
|
+
import {
|
|
42
|
+
Message,
|
|
43
|
+
MessageContent,
|
|
44
|
+
MessageResponse,
|
|
45
|
+
} from "@/components/ai-elements/message";
|
|
46
|
+
import {
|
|
47
|
+
Conversation,
|
|
48
|
+
ConversationContent,
|
|
49
|
+
} from "@/components/ai-elements/conversation";
|
|
50
|
+
|
|
51
|
+
type CheckpointType = {
|
|
52
|
+
id: string;
|
|
53
|
+
messageIndex: number;
|
|
54
|
+
timestamp: Date;
|
|
55
|
+
messageCount: number;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const CheckpointDemo = () => {
|
|
59
|
+
const { messages, setMessages } = useChat();
|
|
60
|
+
const [checkpoints, setCheckpoints] = useState<CheckpointType[]>([]);
|
|
61
|
+
|
|
62
|
+
const createCheckpoint = (messageIndex: number) => {
|
|
63
|
+
const checkpoint: CheckpointType = {
|
|
64
|
+
id: nanoid(),
|
|
65
|
+
messageIndex,
|
|
66
|
+
timestamp: new Date(),
|
|
67
|
+
messageCount: messageIndex + 1,
|
|
68
|
+
};
|
|
69
|
+
setCheckpoints([...checkpoints, checkpoint]);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const restoreToCheckpoint = (messageIndex: number) => {
|
|
73
|
+
// Restore messages to checkpoint state
|
|
74
|
+
setMessages(messages.slice(0, messageIndex + 1));
|
|
75
|
+
// Remove checkpoints after this point
|
|
76
|
+
setCheckpoints(checkpoints.filter((cp) => cp.messageIndex <= messageIndex));
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
return (
|
|
80
|
+
<div className="max-w-4xl mx-auto p-6 relative size-full rounded-lg border h-[600px]">
|
|
81
|
+
<Conversation>
|
|
82
|
+
<ConversationContent>
|
|
83
|
+
{messages.map((message, index) => {
|
|
84
|
+
const checkpoint = checkpoints.find(
|
|
85
|
+
(cp) => cp.messageIndex === index
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
return (
|
|
89
|
+
<Fragment key={message.id}>
|
|
90
|
+
<Message from={message.role}>
|
|
91
|
+
<MessageContent>
|
|
92
|
+
<MessageResponse>{message.content}</MessageResponse>
|
|
93
|
+
</MessageContent>
|
|
94
|
+
</Message>
|
|
95
|
+
{checkpoint && (
|
|
96
|
+
<Checkpoint>
|
|
97
|
+
<CheckpointIcon />
|
|
98
|
+
<CheckpointTrigger
|
|
99
|
+
onClick={() =>
|
|
100
|
+
restoreToCheckpoint(checkpoint.messageIndex)
|
|
101
|
+
}
|
|
102
|
+
>
|
|
103
|
+
Restore checkpoint
|
|
104
|
+
</CheckpointTrigger>
|
|
105
|
+
</Checkpoint>
|
|
106
|
+
)}
|
|
107
|
+
</Fragment>
|
|
108
|
+
);
|
|
109
|
+
})}
|
|
110
|
+
</ConversationContent>
|
|
111
|
+
</Conversation>
|
|
112
|
+
</div>
|
|
113
|
+
);
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
export default CheckpointDemo;
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Use Cases
|
|
120
|
+
|
|
121
|
+
### Manual Checkpoints
|
|
122
|
+
|
|
123
|
+
Allow users to manually create checkpoints at important conversation points:
|
|
124
|
+
|
|
125
|
+
```tsx
|
|
126
|
+
<Button onClick={() => createCheckpoint(messages.length - 1)}>
|
|
127
|
+
Create Checkpoint
|
|
128
|
+
</Button>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Automatic Checkpoints
|
|
132
|
+
|
|
133
|
+
Create checkpoints automatically after significant conversation milestones:
|
|
134
|
+
|
|
135
|
+
```tsx
|
|
136
|
+
useEffect(() => {
|
|
137
|
+
// Create checkpoint every 5 messages
|
|
138
|
+
if (messages.length > 0 && messages.length % 5 === 0) {
|
|
139
|
+
createCheckpoint(messages.length - 1);
|
|
140
|
+
}
|
|
141
|
+
}, [messages.length]);
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Branching Conversations
|
|
145
|
+
|
|
146
|
+
Use checkpoints to enable conversation branching where users can explore different conversation paths:
|
|
147
|
+
|
|
148
|
+
```tsx
|
|
149
|
+
const restoreAndBranch = (messageIndex: number) => {
|
|
150
|
+
// Save current branch
|
|
151
|
+
const currentBranch = messages.slice(messageIndex + 1);
|
|
152
|
+
saveBranch(currentBranch);
|
|
153
|
+
|
|
154
|
+
// Restore to checkpoint
|
|
155
|
+
restoreToCheckpoint(messageIndex);
|
|
156
|
+
};
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Props
|
|
160
|
+
|
|
161
|
+
### `<Checkpoint />`
|
|
162
|
+
|
|
163
|
+
| Prop | Type | Default | Description |
|
|
164
|
+
|------|------|---------|-------------|
|
|
165
|
+
| `children` | `React.ReactNode` | - | The checkpoint icon and trigger components. Automatically includes a Separator at the end. |
|
|
166
|
+
| `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Any other props are spread to the root div. |
|
|
167
|
+
|
|
168
|
+
### `<CheckpointIcon />`
|
|
169
|
+
|
|
170
|
+
| Prop | Type | Default | Description |
|
|
171
|
+
|------|------|---------|-------------|
|
|
172
|
+
| `children` | `React.ReactNode` | - | Custom icon content. If not provided, defaults to a BookmarkIcon from lucide-react. |
|
|
173
|
+
| `...props` | `LucideProps` | - | Any other props are spread to the BookmarkIcon component. |
|
|
174
|
+
|
|
175
|
+
### `<CheckpointTrigger />`
|
|
176
|
+
|
|
177
|
+
| Prop | Type | Default | Description |
|
|
178
|
+
|------|------|---------|-------------|
|
|
179
|
+
| `children` | `React.ReactNode` | - | The text or content to display in the trigger button. |
|
|
180
|
+
| `tooltip` | `string` | - | Optional tooltip text shown on hover. |
|
|
181
|
+
| `variant` | `string` | - | The button variant style. |
|
|
182
|
+
| `size` | `string` | - | The button size. |
|
|
183
|
+
| `...props` | `React.ComponentProps<typeof Button>` | - | Any other props are spread to the underlying shadcn/ui Button component. |
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Code Block
|
|
2
|
+
|
|
3
|
+
Provides syntax highlighting, line numbers, and copy to clipboard functionality for code blocks.
|
|
4
|
+
|
|
5
|
+
The `CodeBlock` component provides syntax highlighting, line numbers, and copy to clipboard functionality for code blocks. It's fully composable, allowing you to customize the header, actions, and content.
|
|
6
|
+
|
|
7
|
+
See `scripts/code-block.tsx` for this example.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx ai-elements@latest add code-block
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
The CodeBlock is fully composable. Here's a basic example:
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
import {
|
|
21
|
+
CodeBlock,
|
|
22
|
+
CodeBlockActions,
|
|
23
|
+
CodeBlockCopyButton,
|
|
24
|
+
CodeBlockFilename,
|
|
25
|
+
CodeBlockHeader,
|
|
26
|
+
CodeBlockTitle,
|
|
27
|
+
} from "@/components/ai-elements/code-block";
|
|
28
|
+
import { FileIcon } from "lucide-react";
|
|
29
|
+
|
|
30
|
+
export const Example = () => (
|
|
31
|
+
<CodeBlock code={code} language="typescript">
|
|
32
|
+
<CodeBlockHeader>
|
|
33
|
+
<CodeBlockTitle>
|
|
34
|
+
<FileIcon size={14} />
|
|
35
|
+
<CodeBlockFilename>example.ts</CodeBlockFilename>
|
|
36
|
+
</CodeBlockTitle>
|
|
37
|
+
<CodeBlockActions>
|
|
38
|
+
<CodeBlockCopyButton />
|
|
39
|
+
</CodeBlockActions>
|
|
40
|
+
</CodeBlockHeader>
|
|
41
|
+
</CodeBlock>
|
|
42
|
+
);
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Features
|
|
46
|
+
|
|
47
|
+
- Syntax highlighting with Shiki
|
|
48
|
+
- Line numbers (optional)
|
|
49
|
+
- Copy to clipboard functionality
|
|
50
|
+
- Automatic light/dark theme switching via CSS variables
|
|
51
|
+
- Language selector for multi-language examples
|
|
52
|
+
- Fully composable architecture
|
|
53
|
+
- Accessible design
|
|
54
|
+
|
|
55
|
+
## Examples
|
|
56
|
+
|
|
57
|
+
### Dark Mode
|
|
58
|
+
|
|
59
|
+
To use the `CodeBlock` component in dark mode, wrap it in a `div` with the `dark` class.
|
|
60
|
+
|
|
61
|
+
See `scripts/code-block-dark.tsx` for this example.
|
|
62
|
+
|
|
63
|
+
### Language Selector
|
|
64
|
+
|
|
65
|
+
Add a language selector to switch between different code implementations:
|
|
66
|
+
|
|
67
|
+
See `scripts/code-block.tsx` for this example.
|
|
68
|
+
|
|
69
|
+
## Props
|
|
70
|
+
|
|
71
|
+
### `<CodeBlock />`
|
|
72
|
+
|
|
73
|
+
| Prop | Type | Default | Description |
|
|
74
|
+
|------|------|---------|-------------|
|
|
75
|
+
| `code` | `string` | - | The code content to display. |
|
|
76
|
+
| `language` | `BundledLanguage` | - | The programming language for syntax highlighting. |
|
|
77
|
+
| `showLineNumbers` | `boolean` | `false` | Whether to show line numbers. |
|
|
78
|
+
| `children` | `React.ReactNode` | - | Child elements like CodeBlockHeader. |
|
|
79
|
+
| `className` | `string` | - | Additional CSS classes. |
|
|
80
|
+
|
|
81
|
+
### `<CodeBlockHeader />`
|
|
82
|
+
|
|
83
|
+
Container for the header row. Uses flexbox with `justify-between`.
|
|
84
|
+
|
|
85
|
+
| Prop | Type | Default | Description |
|
|
86
|
+
|------|------|---------|-------------|
|
|
87
|
+
| `children` | `React.ReactNode` | - | Header content (CodeBlockTitle, CodeBlockActions, etc.). |
|
|
88
|
+
| `className` | `string` | - | Additional CSS classes. |
|
|
89
|
+
|
|
90
|
+
### `<CodeBlockTitle />`
|
|
91
|
+
|
|
92
|
+
Left-aligned container for icon and filename. Uses flexbox with `gap-2`.
|
|
93
|
+
|
|
94
|
+
| Prop | Type | Default | Description |
|
|
95
|
+
|------|------|---------|-------------|
|
|
96
|
+
| `children` | `React.ReactNode` | - | Title content (icon, CodeBlockFilename, etc.). |
|
|
97
|
+
| `className` | `string` | - | Additional CSS classes. |
|
|
98
|
+
|
|
99
|
+
### `<CodeBlockFilename />`
|
|
100
|
+
|
|
101
|
+
Displays the filename in monospace font.
|
|
102
|
+
|
|
103
|
+
| Prop | Type | Default | Description |
|
|
104
|
+
|------|------|---------|-------------|
|
|
105
|
+
| `children` | `React.ReactNode` | - | The filename to display. |
|
|
106
|
+
| `className` | `string` | - | Additional CSS classes. |
|
|
107
|
+
|
|
108
|
+
### `<CodeBlockActions />`
|
|
109
|
+
|
|
110
|
+
Right-aligned container for action buttons. Uses flexbox with `gap-2`.
|
|
111
|
+
|
|
112
|
+
| Prop | Type | Default | Description |
|
|
113
|
+
|------|------|---------|-------------|
|
|
114
|
+
| `children` | `React.ReactNode` | - | Action buttons (CodeBlockCopyButton, CodeBlockLanguageSelector, etc.). |
|
|
115
|
+
| `className` | `string` | - | Additional CSS classes. |
|
|
116
|
+
|
|
117
|
+
### `<CodeBlockCopyButton />`
|
|
118
|
+
|
|
119
|
+
| Prop | Type | Default | Description |
|
|
120
|
+
|------|------|---------|-------------|
|
|
121
|
+
| `onCopy` | `() => void` | - | Callback fired after a successful copy. |
|
|
122
|
+
| `onError` | `(error: Error) => void` | - | Callback fired if copying fails. |
|
|
123
|
+
| `timeout` | `number` | `2000` | How long to show the copied state (ms). |
|
|
124
|
+
| `children` | `React.ReactNode` | - | Custom content for the button. Defaults to copy/check icons. |
|
|
125
|
+
| `className` | `string` | - | Additional CSS classes. |
|
|
126
|
+
|
|
127
|
+
### `<CodeBlockLanguageSelector />`
|
|
128
|
+
|
|
129
|
+
Wrapper for the language selector. Extends shadcn/ui Select.
|
|
130
|
+
|
|
131
|
+
| Prop | Type | Default | Description |
|
|
132
|
+
|------|------|---------|-------------|
|
|
133
|
+
| `value` | `string` | - | The currently selected language. |
|
|
134
|
+
| `onValueChange` | `(value: string) => void` | - | Callback when the language changes. |
|
|
135
|
+
| `children` | `React.ReactNode` | - | Selector components (Trigger, Content, Items). |
|
|
136
|
+
|
|
137
|
+
### `<CodeBlockLanguageSelectorTrigger />`
|
|
138
|
+
|
|
139
|
+
Trigger button for the language selector dropdown. Pre-styled for code block header.
|
|
140
|
+
|
|
141
|
+
### `<CodeBlockLanguageSelectorValue />`
|
|
142
|
+
|
|
143
|
+
Displays the selected language value.
|
|
144
|
+
|
|
145
|
+
### `<CodeBlockLanguageSelectorContent />`
|
|
146
|
+
|
|
147
|
+
Dropdown content container. Defaults to `align="end"`.
|
|
148
|
+
|
|
149
|
+
### `<CodeBlockLanguageSelectorItem />`
|
|
150
|
+
|
|
151
|
+
Individual language option in the dropdown.
|
|
152
|
+
|
|
153
|
+
| Prop | Type | Default | Description |
|
|
154
|
+
|------|------|---------|-------------|
|
|
155
|
+
| `value` | `string` | - | The language value. |
|
|
156
|
+
| `children` | `React.ReactNode` | - | The display label. |
|
|
157
|
+
|
|
158
|
+
### `<CodeBlockContainer />`
|
|
159
|
+
|
|
160
|
+
Low-level container component with performance optimizations (`contentVisibility`). Used internally by CodeBlock.
|
|
161
|
+
|
|
162
|
+
### `<CodeBlockContent />`
|
|
163
|
+
|
|
164
|
+
Low-level component that handles syntax highlighting. Used internally by CodeBlock, but can be used directly for custom layouts.
|
|
165
|
+
|
|
166
|
+
| Prop | Type | Default | Description |
|
|
167
|
+
|------|------|---------|-------------|
|
|
168
|
+
| `code` | `string` | - | The code content to display. |
|
|
169
|
+
| `language` | `BundledLanguage` | - | The programming language for syntax highlighting. |
|
|
170
|
+
| `showLineNumbers` | `boolean` | `false` | Whether to show line numbers. |
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Commit
|
|
2
|
+
|
|
3
|
+
Display commit information with hash, message, author, and file changes.
|
|
4
|
+
|
|
5
|
+
The `Commit` component displays commit details including hash, message, author, timestamp, and changed files.
|
|
6
|
+
|
|
7
|
+
See `scripts/commit.tsx` for this example.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx ai-elements@latest add commit
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- Commit hash display with copy button
|
|
18
|
+
- Author avatar with initials
|
|
19
|
+
- Relative timestamp formatting
|
|
20
|
+
- Collapsible file changes list
|
|
21
|
+
- Color-coded file status (added/modified/deleted/renamed)
|
|
22
|
+
- Line additions/deletions count
|
|
23
|
+
|
|
24
|
+
## File Status
|
|
25
|
+
|
|
26
|
+
| Status | Label | Color |
|
|
27
|
+
| ---------- | ----- | ------ |
|
|
28
|
+
| `added` | A | Green |
|
|
29
|
+
| `modified` | M | Yellow |
|
|
30
|
+
| `deleted` | D | Red |
|
|
31
|
+
| `renamed` | R | Blue |
|
|
32
|
+
|
|
33
|
+
## Props
|
|
34
|
+
|
|
35
|
+
### `<Commit />`
|
|
36
|
+
|
|
37
|
+
| Prop | Type | Default | Description |
|
|
38
|
+
|------|------|---------|-------------|
|
|
39
|
+
| `...props` | `React.ComponentProps<typeof Collapsible>` | - | Spread to the Collapsible component. |
|
|
40
|
+
|
|
41
|
+
### `<CommitHeader />`
|
|
42
|
+
|
|
43
|
+
| Prop | Type | Default | Description |
|
|
44
|
+
|------|------|---------|-------------|
|
|
45
|
+
| `...props` | `React.ComponentProps<typeof CollapsibleTrigger>` | - | Spread to the CollapsibleTrigger component. |
|
|
46
|
+
|
|
47
|
+
### `<CommitAuthor />`
|
|
48
|
+
|
|
49
|
+
| Prop | Type | Default | Description |
|
|
50
|
+
|------|------|---------|-------------|
|
|
51
|
+
| `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the container div. |
|
|
52
|
+
|
|
53
|
+
### `<CommitAuthorAvatar />`
|
|
54
|
+
|
|
55
|
+
| Prop | Type | Default | Description |
|
|
56
|
+
|------|------|---------|-------------|
|
|
57
|
+
| `initials` | `string` | Required | Author initials to display. |
|
|
58
|
+
| `...props` | `React.ComponentProps<typeof Avatar>` | - | Spread to the Avatar component. |
|
|
59
|
+
|
|
60
|
+
### `<CommitInfo />`
|
|
61
|
+
|
|
62
|
+
| Prop | Type | Default | Description |
|
|
63
|
+
|------|------|---------|-------------|
|
|
64
|
+
| `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the container div. |
|
|
65
|
+
|
|
66
|
+
### `<CommitMessage />`
|
|
67
|
+
|
|
68
|
+
| Prop | Type | Default | Description |
|
|
69
|
+
|------|------|---------|-------------|
|
|
70
|
+
| `...props` | `React.HTMLAttributes<HTMLSpanElement>` | - | Spread to the span element. |
|
|
71
|
+
|
|
72
|
+
### `<CommitMetadata />`
|
|
73
|
+
|
|
74
|
+
| Prop | Type | Default | Description |
|
|
75
|
+
|------|------|---------|-------------|
|
|
76
|
+
| `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the container div. |
|
|
77
|
+
|
|
78
|
+
### `<CommitHash />`
|
|
79
|
+
|
|
80
|
+
| Prop | Type | Default | Description |
|
|
81
|
+
|------|------|---------|-------------|
|
|
82
|
+
| `...props` | `React.HTMLAttributes<HTMLSpanElement>` | - | Spread to the span element. |
|
|
83
|
+
|
|
84
|
+
### `<CommitSeparator />`
|
|
85
|
+
|
|
86
|
+
| Prop | Type | Default | Description |
|
|
87
|
+
|------|------|---------|-------------|
|
|
88
|
+
| `children` | `React.ReactNode` | - | Custom separator content. |
|
|
89
|
+
| `...props` | `React.HTMLAttributes<HTMLSpanElement>` | - | Spread to the span element. |
|
|
90
|
+
|
|
91
|
+
### `<CommitTimestamp />`
|
|
92
|
+
|
|
93
|
+
| Prop | Type | Default | Description |
|
|
94
|
+
|------|------|---------|-------------|
|
|
95
|
+
| `date` | `Date` | Required | Commit date. |
|
|
96
|
+
| `children` | `React.ReactNode` | - | Custom timestamp content. Defaults to relative time. |
|
|
97
|
+
| `...props` | `React.HTMLAttributes<HTMLTimeElement>` | - | Spread to the time element. |
|
|
98
|
+
|
|
99
|
+
### `<CommitActions />`
|
|
100
|
+
|
|
101
|
+
| Prop | Type | Default | Description |
|
|
102
|
+
|------|------|---------|-------------|
|
|
103
|
+
| `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the container div. |
|
|
104
|
+
|
|
105
|
+
### `<CommitCopyButton />`
|
|
106
|
+
|
|
107
|
+
| Prop | Type | Default | Description |
|
|
108
|
+
|------|------|---------|-------------|
|
|
109
|
+
| `hash` | `string` | Required | Commit hash to copy. |
|
|
110
|
+
| `onCopy` | `() => void` | - | Callback after successful copy. |
|
|
111
|
+
| `onError` | `(error: Error) => void` | - | Callback if copying fails. |
|
|
112
|
+
| `timeout` | `number` | `2000` | Duration to show copied state (ms). |
|
|
113
|
+
| `...props` | `React.ComponentProps<typeof Button>` | - | Spread to the Button component. |
|
|
114
|
+
|
|
115
|
+
### `<CommitContent />`
|
|
116
|
+
|
|
117
|
+
| Prop | Type | Default | Description |
|
|
118
|
+
|------|------|---------|-------------|
|
|
119
|
+
| `...props` | `React.ComponentProps<typeof CollapsibleContent>` | - | Spread to the CollapsibleContent component. |
|
|
120
|
+
|
|
121
|
+
### `<CommitFiles />`
|
|
122
|
+
|
|
123
|
+
| Prop | Type | Default | Description |
|
|
124
|
+
|------|------|---------|-------------|
|
|
125
|
+
| `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the container div. |
|
|
126
|
+
|
|
127
|
+
### `<CommitFile />`
|
|
128
|
+
|
|
129
|
+
| Prop | Type | Default | Description |
|
|
130
|
+
|------|------|---------|-------------|
|
|
131
|
+
| `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the row div. |
|
|
132
|
+
|
|
133
|
+
### `<CommitFileInfo />`
|
|
134
|
+
|
|
135
|
+
| Prop | Type | Default | Description |
|
|
136
|
+
|------|------|---------|-------------|
|
|
137
|
+
| `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the container div. |
|
|
138
|
+
|
|
139
|
+
### `<CommitFileStatus />`
|
|
140
|
+
|
|
141
|
+
| Prop | Type | Default | Description |
|
|
142
|
+
|------|------|---------|-------------|
|
|
143
|
+
| `status` | `unknown` | Required | File change status. |
|
|
144
|
+
| `children` | `React.ReactNode` | - | Custom status label. |
|
|
145
|
+
| `...props` | `React.HTMLAttributes<HTMLSpanElement>` | - | Spread to the span element. |
|
|
146
|
+
|
|
147
|
+
### `<CommitFileIcon />`
|
|
148
|
+
|
|
149
|
+
| Prop | Type | Default | Description |
|
|
150
|
+
|------|------|---------|-------------|
|
|
151
|
+
| `...props` | `React.ComponentProps<typeof FileIcon>` | - | Spread to the FileIcon component. |
|
|
152
|
+
|
|
153
|
+
### `<CommitFilePath />`
|
|
154
|
+
|
|
155
|
+
| Prop | Type | Default | Description |
|
|
156
|
+
|------|------|---------|-------------|
|
|
157
|
+
| `...props` | `React.HTMLAttributes<HTMLSpanElement>` | - | Spread to the span element. |
|
|
158
|
+
|
|
159
|
+
### `<CommitFileChanges />`
|
|
160
|
+
|
|
161
|
+
| Prop | Type | Default | Description |
|
|
162
|
+
|------|------|---------|-------------|
|
|
163
|
+
| `...props` | `React.HTMLAttributes<HTMLDivElement>` | - | Spread to the container div. |
|
|
164
|
+
|
|
165
|
+
### `<CommitFileAdditions />`
|
|
166
|
+
|
|
167
|
+
| Prop | Type | Default | Description |
|
|
168
|
+
|------|------|---------|-------------|
|
|
169
|
+
| `count` | `number` | Required | Number of lines added. |
|
|
170
|
+
| `...props` | `React.HTMLAttributes<HTMLSpanElement>` | - | Spread to the span element. |
|
|
171
|
+
|
|
172
|
+
### `<CommitFileDeletions />`
|
|
173
|
+
|
|
174
|
+
| Prop | Type | Default | Description |
|
|
175
|
+
|------|------|---------|-------------|
|
|
176
|
+
| `count` | `number` | Required | Number of lines deleted. |
|
|
177
|
+
| `...props` | `React.HTMLAttributes<HTMLSpanElement>` | - | Spread to the span element. |
|