diff --git a/.changeset/plenty-moons-shake.md b/.changeset/plenty-moons-shake.md
new file mode 100644
index 0000000..3ce7b33
--- /dev/null
+++ b/.changeset/plenty-moons-shake.md
@@ -0,0 +1,9 @@
+---
+"@ginga-ui/core": minor
+---
+
+CodeBlock コンポーネントを追加し、Card と Anchor のスタイルを見直し
+
+- CodeBlock コンポーネントを新規追加。クリップボードコピー機能を内蔵し、シンタックスハイライト済みの React 要素を children で注入可能(shiki 等は非内包)
+- Card の視覚変更: border を `--color-primary-9` に変更し、box-shadow を削除
+- Anchor `variant="button"` の視覚変更: Button と統一(角丸を `calc(var(--size-radius) * 0.5)` に、フォーカスリングを outline 方式に、disabled 表現と transition を Button と同一に)
diff --git a/app/ginga-ui.com/src/app/globals.css b/app/ginga-ui.com/src/app/globals.css
index 6b3b511..6215851 100644
--- a/app/ginga-ui.com/src/app/globals.css
+++ b/app/ginga-ui.com/src/app/globals.css
@@ -142,41 +142,8 @@ body {
}
/* Code Block */
-.code-block {
+.ginga-code-block {
margin: 1.5rem 0;
- overflow: hidden;
- border: 1px solid var(--color-primary-2);
- border-radius: var(--size-radius);
-}
-
-.code-header {
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding: 0.75rem 1rem;
- background-color: var(--color-primary-1);
- border-bottom: 1px solid var(--color-primary-2);
-}
-
-.code-filename {
- font-size: 0.875rem;
- font-weight: 500;
- color: var(--color-secondary);
-}
-
-.copy-button {
- font-size: 0.875rem;
-}
-
-.code-content {
- overflow-x: auto;
-}
-
-.code-content pre {
- padding: 1rem;
- margin: 0;
- font-size: 0.875rem;
- line-height: 1.6;
}
/* Component Grid */
diff --git a/app/ginga-ui.com/src/app/page.module.css b/app/ginga-ui.com/src/app/page.module.css
index 3380674..0dacf0f 100644
--- a/app/ginga-ui.com/src/app/page.module.css
+++ b/app/ginga-ui.com/src/app/page.module.css
@@ -31,8 +31,3 @@
.gettingStartedContent {
margin-top: 1.5rem;
}
-
-.primaryLink {
- font-weight: 600;
- color: var(--color-primary);
-}
diff --git a/app/ginga-ui.com/src/app/page.tsx b/app/ginga-ui.com/src/app/page.tsx
index 3de4a67..8c72030 100644
--- a/app/ginga-ui.com/src/app/page.tsx
+++ b/app/ginga-ui.com/src/app/page.tsx
@@ -1,5 +1,5 @@
import Link from "next/link";
-import { Heading, Paragraph, Button, Card } from "@ginga-ui/core";
+import { Anchor, Heading, Paragraph, Button, Card } from "@ginga-ui/core";
import styles from "./page.module.css";
export default function Home() {
@@ -82,9 +82,7 @@ export default function Home() {
テーマがサイト全体に適用されました。ページをスクロールして変化を確認してください。
-
+
+ import
+ {"{ Button }"}
+ from
+ "@ginga-ui/core"
+ ;
+ {"\n\n"}
+ export const
+ App
+ = () =>
+ {"
+ Click me
+ {""}
+ ;
+
+
+ ),
+ },
+};
+
+export const CustomLabels: Story = {
+ args: { code: sampleCode, copyLabel: "コピー", copiedLabel: "コピー完了!" },
+};
diff --git a/packages/core/src/components/code-block/code-block.tsx b/packages/core/src/components/code-block/code-block.tsx
new file mode 100644
index 0000000..b93e542
--- /dev/null
+++ b/packages/core/src/components/code-block/code-block.tsx
@@ -0,0 +1,58 @@
+"use client";
+
+import { useState } from "react";
+
+import { cn } from "@ginga-ui/utils";
+
+import { Button } from "../button";
+import "./index.css";
+
+export type CodeBlockProps = React.HTMLAttributes
+ {code}
+
+ )}
+