You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							426 lines
						
					
					
						
							17 KiB
						
					
					
				
			
		
		
	
	
							426 lines
						
					
					
						
							17 KiB
						
					
					
				| import type { Meta, StoryObj } from '@storybook/react';
 | |
| 
 | |
| import { CodeBlock } from '@/components/code-block';
 | |
| import { Markdown, Padding } from './decorators';
 | |
| 
 | |
| const meta: Meta<typeof CodeBlock> = {
 | |
|   title: 'Code Block',
 | |
|   component: CodeBlock,
 | |
|   render: (args) => (
 | |
|     <CodeBlock {...args}>
 | |
|       <CodeLight />
 | |
|       <CodeDark />
 | |
|     </CodeBlock>
 | |
|   ),
 | |
|   decorators: [
 | |
|     (Story) => (
 | |
|       <div className="w-full">
 | |
|         <Story />
 | |
|       </div>
 | |
|     ),
 | |
|     Markdown,
 | |
|     Padding,
 | |
|   ],
 | |
| };
 | |
| 
 | |
| export default meta;
 | |
| type Story = StoryObj<typeof CodeBlock>;
 | |
| 
 | |
| export const Normal: Story = {};
 | |
| 
 | |
| export const WithTitle: Story = {
 | |
|   decorators: [
 | |
|     (Story) => (
 | |
|       <>
 | |
|         <div data-rehype-pretty-code-title="">/src/components/parallax.tsx</div>
 | |
|         <Story />
 | |
|       </>
 | |
|     ),
 | |
|   ],
 | |
| };
 | |
| 
 | |
| /** Generated by rehype-pretty-code */
 | |
| const CodeLight = () => (
 | |
|   <code data-language="tsx" data-theme="light">
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#D73A49' }}>export</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#D73A49' }}>default</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#D73A49' }}>function</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>Parallax</span>
 | |
|       <span style={{ color: '#24292E' }}>() {'{'}</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}></span>
 | |
|       <span style={{ color: '#D73A49' }}>const</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#005CC5' }}>ref</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>useRef</span>
 | |
|       <span style={{ color: '#24292E' }}><</span>
 | |
|       <span style={{ color: '#6F42C1' }}>HTMLDivElement</span>
 | |
|       <span style={{ color: '#24292E' }}>>(</span>
 | |
|       <span style={{ color: '#005CC5' }}>null</span>
 | |
|       <span style={{ color: '#24292E' }}>);</span>
 | |
|     </span>
 | |
|     <span className="line"> </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}></span>
 | |
|       <span style={{ color: '#D73A49' }}>const</span>
 | |
|       <span style={{ color: '#24292E' }}> {'{'} </span>
 | |
|       <span style={{ color: '#005CC5' }}>scrollYProgress</span>
 | |
|       <span style={{ color: '#24292E' }}> {'}'} </span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>useScroll</span>
 | |
|       <span style={{ color: '#24292E' }}>
 | |
|         ({'{'} target: ref {'}'});
 | |
|       </span>
 | |
|     </span>
 | |
|     <span className="line"> </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}></span>
 | |
|       <span style={{ color: '#D73A49' }}>const</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#005CC5' }}>yYellow</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>useParallax</span>
 | |
|       <span style={{ color: '#24292E' }}>(scrollYProgress, </span>
 | |
|       <span style={{ color: '#005CC5' }}>300</span>
 | |
|       <span style={{ color: '#24292E' }}>);</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}></span>
 | |
|       <span style={{ color: '#D73A49' }}>const</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#005CC5' }}>yGreen</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>useParallax</span>
 | |
|       <span style={{ color: '#24292E' }}>(scrollYProgress, </span>
 | |
|       <span style={{ color: '#005CC5' }}>600</span>
 | |
|       <span style={{ color: '#24292E' }}>);</span>
 | |
|     </span>
 | |
|     <span className="line"> </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}></span>
 | |
|       <span style={{ color: '#D73A49' }}>return</span>
 | |
|       <span style={{ color: '#24292E' }}> (</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> <</span>
 | |
|       <span style={{ color: '#005CC5' }}>motion.div</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>ref</span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#24292E' }}>
 | |
|         {'{'}ref{'}'}{' '}
 | |
|       </span>
 | |
|       <span style={{ color: '#6F42C1' }}>className</span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#032F62' }}>
 | |
|         "flex h-1/2 w-2/3 flex-row gap-2"
 | |
|       </span>
 | |
|       <span style={{ color: '#24292E' }}>></span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> <</span>
 | |
|       <span style={{ color: '#005CC5' }}>motion.div</span>
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>className</span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#032F62' }}>"w-1/3 bg-rose-600"</span>
 | |
|       <span style={{ color: '#24292E' }}> /></span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> <</span>
 | |
|       <span style={{ color: '#005CC5' }}>motion.div</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>className</span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#032F62' }}>"w-1/3 bg-amber-600"</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>initial</span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#24292E' }}>
 | |
|         {'{'}
 | |
|         {'{'} y:{' '}
 | |
|       </span>
 | |
|       <span style={{ color: '#005CC5' }}>0</span>
 | |
|       <span style={{ color: '#24292E' }}>
 | |
|         {' '}
 | |
|         {'}'}
 | |
|         {'}'}
 | |
|       </span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>style</span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#24292E' }}>
 | |
|         {'{'}
 | |
|         {'{'} y: yYellow {'}'}
 | |
|         {'}'}
 | |
|       </span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> /></span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> <</span>
 | |
|       <span style={{ color: '#005CC5' }}>motion.div</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>className</span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#032F62' }}>"w-1/3 bg-emerald-600"</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>initial</span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#24292E' }}>
 | |
|         {'{'}
 | |
|         {'{'} y:{' '}
 | |
|       </span>
 | |
|       <span style={{ color: '#005CC5' }}>0</span>
 | |
|       <span style={{ color: '#24292E' }}>
 | |
|         {' '}
 | |
|         {'}'}
 | |
|         {'}'}
 | |
|       </span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> </span>
 | |
|       <span style={{ color: '#6F42C1' }}>style</span>
 | |
|       <span style={{ color: '#D73A49' }}>=</span>
 | |
|       <span style={{ color: '#24292E' }}>
 | |
|         {'{'}
 | |
|         {'{'} y: yGreen {'}'}
 | |
|         {'}'}
 | |
|       </span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> /></span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> </</span>
 | |
|       <span style={{ color: '#005CC5' }}>motion.div</span>
 | |
|       <span style={{ color: '#24292E' }}>></span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}> );</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: '#24292E' }}>{'}'}</span>
 | |
|     </span>
 | |
|   </code>
 | |
| );
 | |
| 
 | |
| /** Generated by rehype-pretty-code */
 | |
| const CodeDark = () => (
 | |
|   <code data-language="tsx" data-theme="dark">
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>export</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>default</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>function</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>Parallax</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>() {'{'}</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>const</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>ref</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>useRef</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}><</span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>HTMLDivElement</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>>(</span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>null</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>);</span>
 | |
|     </span>
 | |
|     <span className="line"> </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}></span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>const</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> {'{'} </span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>scrollYProgress</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> {'}'} </span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>useScroll</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>
 | |
|         ({'{'} target: ref {'}'});
 | |
|       </span>
 | |
|     </span>
 | |
|     <span className="line"> </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}></span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>const</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>yYellow</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>useParallax</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>(scrollYProgress, </span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>300</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>);</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}></span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>const</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>yGreen</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>useParallax</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>(scrollYProgress, </span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>600</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>);</span>
 | |
|     </span>
 | |
|     <span className="line"> </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}></span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>return</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> (</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> <</span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>motion.div</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>ref</span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>
 | |
|         {'{'}ref{'}'}{' '}
 | |
|       </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>className</span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(158, 203, 255)' }}>
 | |
|         "flex h-1/2 w-2/3 flex-row gap-2"
 | |
|       </span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>></span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> <</span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>motion.div</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>className</span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(158, 203, 255)' }}>
 | |
|         "w-1/3 bg-rose-600"
 | |
|       </span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> /></span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> <</span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>motion.div</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>className</span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(158, 203, 255)' }}>
 | |
|         "w-1/3 bg-amber-600"
 | |
|       </span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>initial</span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>
 | |
|         {'{'}
 | |
|         {'{'} y:{' '}
 | |
|       </span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>0</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>
 | |
|         {' '}
 | |
|         {'}'}
 | |
|         {'}'}
 | |
|       </span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>style</span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>
 | |
|         {'{'}
 | |
|         {'{'} y: yYellow {'}'}
 | |
|         {'}'}
 | |
|       </span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> /></span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> <</span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>motion.div</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>className</span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(158, 203, 255)' }}>
 | |
|         "w-1/3 bg-emerald-600"
 | |
|       </span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>initial</span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>
 | |
|         {'{'}
 | |
|         {'{'} y:{' '}
 | |
|       </span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>0</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>
 | |
|         {' '}
 | |
|         {'}'}
 | |
|         {'}'}
 | |
|       </span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </span>
 | |
|       <span style={{ color: 'rgb(179, 146, 240)' }}>style</span>
 | |
|       <span style={{ color: 'rgb(249, 117, 131)' }}>=</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>
 | |
|         {'{'}
 | |
|         {'{'} y: yGreen {'}'}
 | |
|         {'}'}
 | |
|       </span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> /></span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> </</span>
 | |
|       <span style={{ color: 'rgb(121, 184, 255)' }}>motion.div</span>
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>></span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}> );</span>
 | |
|     </span>
 | |
|     <span className="line">
 | |
|       <span style={{ color: 'rgb(225, 228, 232)' }}>{'}'}</span>
 | |
|     </span>
 | |
|   </code>
 | |
| );
 | |
| 
 |