diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx
index 0f464a11..4b2f7b4d 100644
--- a/.storybook/preview.tsx
+++ b/.storybook/preview.tsx
@@ -1,6 +1,7 @@
import React from 'react';
import type { Preview } from '@storybook/react';
import '../src/app/_styles/globals.css';
+import { AppProvider } from '../src/providers/app';
import { M_PLUS_2 } from 'next/font/google';
const font = M_PLUS_2({ subsets: ['latin'] });
@@ -17,9 +18,11 @@ const preview: Preview = {
},
decorators: [
(Story) => (
-
-
-
+
+
+
+
+
),
],
};
diff --git a/package.json b/package.json
index e1b752c2..b6d33830 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,7 @@
"@vercel/speed-insights": "1.0.12",
"autoprefixer": "10.4.19",
"clsx": "2.1.1",
+ "framer-motion": "11.3.19",
"next": "14.2.5",
"postcss": "8.4.40",
"react": "18.3.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 18e83c21..da37032e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -32,6 +32,9 @@ importers:
clsx:
specifier: 2.1.1
version: 2.1.1
+ framer-motion:
+ specifier: 11.3.19
+ version: 11.3.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next:
specifier: 14.2.5
version: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -3683,6 +3686,20 @@ packages:
fraction.js@4.3.7:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+ framer-motion@11.3.19:
+ resolution: {integrity: sha512-+luuQdx4AsamyMcvzW7jUAJYIKvQs1KE7oHvKkW3eNzmo0S+3PSDWjBuQkuIP9WyneGnKGMLUSuHs8OP7jKpQg==}
+ peerDependencies:
+ '@emotion/is-prop-valid': '*'
+ react: ^18.0.0
+ react-dom: ^18.0.0
+ peerDependenciesMeta:
+ '@emotion/is-prop-valid':
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+
fresh@0.5.2:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
@@ -11113,6 +11130,13 @@ snapshots:
fraction.js@4.3.7: {}
+ framer-motion@11.3.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ dependencies:
+ tslib: 2.6.3
+ optionalDependencies:
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
fresh@0.5.2: {}
fromentries@1.3.2: {}
diff --git a/src/app/characters/check-syntax/_components/result/result.tsx b/src/app/characters/check-syntax/_components/result/result.tsx
index adb6c92f..f2791edd 100644
--- a/src/app/characters/check-syntax/_components/result/result.tsx
+++ b/src/app/characters/check-syntax/_components/result/result.tsx
@@ -9,12 +9,14 @@ import {
import { Button } from '@/components/button';
import { Heading } from '@/components/heading';
import { ClipboardIcon } from '@heroicons/react/24/solid';
+import { useClipboard } from '@/hooks/clipboard';
export const Result: FC = () => {
const id = useId();
const fixedText = useFixedText();
const resetResult = useResetResult();
const isCheckResult = useConvertIncomplete();
+ const { writeClipboard } = useClipboard();
return (
@@ -32,7 +34,7 @@ export const Result: FC = () => {
修正後のテキスト