\n {showGradient && (\n // Adjust gradient colors if needed based on background (was bg-white, now likely uses containerClassName bg)\n // Example assuming a dark background like the SignInPage uses:\n \n )}\n
\n );\n};\n\ninterface DotMatrixProps {\n colors?: number[][];\n opacities?: number[];\n totalSize?: number;\n dotSize?: number;\n shader?: string;\n center?: (\"x\" | \"y\")[];\n}\n\nconst DotMatrix: React.FC = ({\n colors = [[0, 0, 0]],\n opacities = [0.04, 0.04, 0.04, 0.04, 0.04, 0.08, 0.08, 0.08, 0.08, 0.14],\n totalSize = 20,\n dotSize = 2,\n shader = \"\", // This shader string will now contain the animation logic\n center = [\"x\", \"y\"],\n}) => {\n // ... uniforms calculation remains the same for colors, opacities, etc.\n const uniforms = React.useMemo(() => {\n let colorsArray = [\n colors[0],\n colors[0],\n colors[0],\n colors[0],\n colors[0],\n colors[0],\n ];\n if (colors.length === 2) {\n colorsArray = [\n colors[0],\n colors[0],\n colors[0],\n colors[1],\n colors[1],\n colors[1],\n ];\n } else if (colors.length === 3) {\n colorsArray = [\n colors[0],\n colors[0],\n colors[1],\n colors[1],\n colors[2],\n colors[2],\n ];\n }\n return {\n u_colors: {\n value: colorsArray.map((color) => [\n color[0] / 255,\n color[1] / 255,\n color[2] / 255,\n ]),\n type: \"uniform3fv\",\n },\n u_opacities: {\n value: opacities,\n type: \"uniform1fv\",\n },\n u_total_size: {\n value: totalSize,\n type: \"uniform1f\",\n },\n u_dot_size: {\n value: dotSize,\n type: \"uniform1f\",\n },\n u_reverse: {\n value: shader.includes(\"u_reverse_active\") ? 1 : 0, // Convert boolean to number (1 or 0)\n type: \"uniform1i\", // Use 1i for bool in WebGL1/GLSL100, or just bool for GLSL300+ if supported\n },\n };\n }, [colors, opacities, totalSize, dotSize, shader]); // Add shader to dependencies\n\n return (\n \n );\n};\n\nconst ShaderMaterial = ({\n source,\n uniforms,\n}: {\n source: string;\n hovered?: boolean;\n maxFps?: number;\n uniforms: Uniforms;\n}) => {\n const { size } = useThree();\n const ref = useRef(null);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let lastFrameTime = 0;\n\n useFrame(({ clock }) => {\n if (!ref.current) return;\n const timestamp = clock.getElapsedTime();\n\n lastFrameTime = timestamp;\n\n const material = ref.current.material as THREE.ShaderMaterial;\n const timeLocation = material.uniforms.u_time;\n timeLocation.value = timestamp;\n });\n\n const getUniforms = () => {\n const preparedUniforms: Record =\n {};\n\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n\n switch (uniform.type) {\n case \"uniform1f\":\n preparedUniforms[uniformName] = { value: uniform.value, type: \"1f\" };\n break;\n case \"uniform1i\":\n preparedUniforms[uniformName] = { value: uniform.value, type: \"1i\" };\n break;\n case \"uniform3f\":\n preparedUniforms[uniformName] = {\n value: new THREE.Vector3().fromArray(uniform.value as number[]),\n type: \"3f\",\n };\n break;\n case \"uniform1fv\":\n preparedUniforms[uniformName] = { value: uniform.value, type: \"1fv\" };\n break;\n case \"uniform3fv\":\n preparedUniforms[uniformName] = {\n value: Array.isArray(uniform.value)\n ? (uniform.value as number[][]).map((v: number[]) =>\n new THREE.Vector3().fromArray(v),\n )\n : [],\n type: \"3fv\",\n };\n break;\n case \"uniform2f\":\n preparedUniforms[uniformName] = {\n value: new THREE.Vector2().fromArray(uniform.value as number[]),\n type: \"2f\",\n };\n break;\n default:\n console.error(`Invalid uniform type for '${uniformName}'.`);\n break;\n }\n }\n\n preparedUniforms[\"u_time\"] = { value: 0, type: \"1f\" };\n preparedUniforms[\"u_resolution\"] = {\n value: new THREE.Vector2(size.width * 2, size.height * 2),\n }; // Initialize u_resolution\n return preparedUniforms;\n };\n\n // Shader material\n const material = useMemo(() => {\n const materialObject = new THREE.ShaderMaterial({\n vertexShader: `\n precision mediump float;\n in vec2 coordinates;\n uniform vec2 u_resolution;\n out vec2 fragCoord;\n void main(){\n float x = position.x;\n float y = position.y;\n gl_Position = vec4(x, y, 0.0, 1.0);\n fragCoord = (position.xy + vec2(1.0)) * 0.5 * u_resolution;\n fragCoord.y = u_resolution.y - fragCoord.y;\n }\n `,\n fragmentShader: source,\n uniforms: getUniforms(),\n glslVersion: THREE.GLSL3,\n blending: THREE.CustomBlending,\n blendSrc: THREE.SrcAlphaFactor,\n blendDst: THREE.OneFactor,\n });\n\n return materialObject;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [size.width, size.height, source]);\n\n return (\n \n \n \n \n );\n};\n\nconst Shader: React.FC = ({ source, uniforms, maxFps = 60 }) => {\n return (\n \n );\n};\n\nexport const SignInPage = ({ className }: SignInPageProps) => {\n const [email, setEmail] = useState(\"\");\n const [step, setStep] = useState<\"email\" | \"code\" | \"success\">(\"email\");\n const [code, setCode] = useState([\"\", \"\", \"\", \"\", \"\", \"\"]);\n const codeInputRefs = useRef<(HTMLInputElement | null)[]>([]);\n const [initialCanvasVisible, setInitialCanvasVisible] = useState(true);\n const [reverseCanvasVisible, setReverseCanvasVisible] = useState(false);\n\n const handleEmailSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (email) {\n setStep(\"code\");\n }\n };\n\n // Focus first input when code screen appears\n useEffect(() => {\n if (step === \"code\") {\n setTimeout(() => {\n codeInputRefs.current[0]?.focus();\n }, 500);\n }\n }, [step]);\n\n const handleCodeChange = (index: number, value: string) => {\n if (value.length <= 1) {\n const newCode = [...code];\n newCode[index] = value;\n setCode(newCode);\n\n // Focus next input if value is entered\n if (value && index < 5) {\n codeInputRefs.current[index + 1]?.focus();\n }\n\n // Check if code is complete\n if (index === 5 && value) {\n const isComplete = newCode.every((digit) => digit.length === 1);\n if (isComplete) {\n // First show the new reverse canvas\n setReverseCanvasVisible(true);\n\n // Then hide the original canvas after a small delay\n setTimeout(() => {\n setInitialCanvasVisible(false);\n }, 50);\n\n // Transition to success screen after animation\n setTimeout(() => {\n setStep(\"success\");\n }, 2000);\n }\n }\n }\n };\n\n const handleKeyDown = (\n index: number,\n e: React.KeyboardEvent,\n ) => {\n if (e.key === \"Backspace\" && !code[index] && index > 0) {\n codeInputRefs.current[index - 1]?.focus();\n }\n };\n\n const handleBackClick = () => {\n setStep(\"email\");\n setCode([\"\", \"\", \"\", \"\", \"\", \"\"]);\n // Reset animations if going back\n setReverseCanvasVisible(false);\n setInitialCanvasVisible(true);\n };\n\n return (\n
\n {/* Subtle card inner patterns */}\n \n\n {/* Logo and header */}\n
\n \n {/* Logo placeholder - would be an SVG in practice */}\n {/* */}\n \n S\n \n\n {/* Inner lighting effect */}\n \n \n\n \n Welcome Back\n \n\n \n Sign in to continue to StyleMe\n \n
)}
- {/* Backdrop to close dropdown when clicking outside */}
{isOpen && (
{sourceCode.trim() ||
`Component ${componentName} not found in registry.`}
diff --git a/src/content/docs/animated-list.mdx b/src/content/docs/animated-list.mdx
index 2c987e8..b7754a3 100644
--- a/src/content/docs/animated-list.mdx
+++ b/src/content/docs/animated-list.mdx
@@ -24,26 +24,7 @@ description: "A stylish animated list component for modern UIs, built with acces
Install dependencies
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/banner.mdx b/src/content/docs/banner.mdx
index 7c524e7..60d5e21 100644
--- a/src/content/docs/banner.mdx
+++ b/src/content/docs/banner.mdx
@@ -24,30 +24,7 @@ description: "A stylish banner component for modern UIs, built with accessibilit
Install dependencies
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/bars-background.mdx b/src/content/docs/bars-background.mdx
index 13bf73f..4eecb28 100644
--- a/src/content/docs/bars-background.mdx
+++ b/src/content/docs/bars-background.mdx
@@ -24,26 +24,7 @@ description: "A stylish bars background component for modern UIs, built with acc
Install dependencies
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/border-button.mdx b/src/content/docs/border-button.mdx
index 218e01e..6644845 100644
--- a/src/content/docs/border-button.mdx
+++ b/src/content/docs/border-button.mdx
@@ -24,27 +24,13 @@ description: "A stylish border button component for modern UIs, built with acces
Install dependencies
-
+Add util file
`lib/utils.ts`
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/contact-form.mdx b/src/content/docs/contact-form.mdx
index 5acb26b..3da1d8d 100644
--- a/src/content/docs/contact-form.mdx
+++ b/src/content/docs/contact-form.mdx
@@ -24,39 +24,13 @@ description: "A stylish contact-form component for modern UIs, built with access
Install dependencies
-
+Add util file
`lib/utils.ts`
-
+Copy and paste the following code into your project.
@@ -84,7 +58,6 @@ export function cn(...inputs: ClassValue[]) {
-
### Props
`background-shine-button`
@@ -118,4 +91,4 @@ export function cn(...inputs: ClassValue[]) {
| `className` | `string` | `-` | Custom Tailwind class names for the container div. |
| `icon` | `ReactNode` | `-` | Optional icon element displayed beside the textarea. |
| `borderHoverAnimation` | `string` | `"1px solid var(--primary-color)"` | CSS border style applied on hover. |
-| `focus` | `string` | `"focus:border-[var(--primary-color)]"` | Tailwind focus border utility class. |
\ No newline at end of file
+| `focus` | `string` | `"focus:border-[var(--primary-color)]"` | Tailwind focus border utility class. |
diff --git a/src/content/docs/counter-loader.mdx b/src/content/docs/counter-loader.mdx
index 120d883..f36b70d 100644
--- a/src/content/docs/counter-loader.mdx
+++ b/src/content/docs/counter-loader.mdx
@@ -24,14 +24,7 @@ description: "A visually engaging counter animation component using CSS grid and
Install dependencies
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/creative-pricing.mdx b/src/content/docs/creative-pricing.mdx
index 06944d3..04ba502 100644
--- a/src/content/docs/creative-pricing.mdx
+++ b/src/content/docs/creative-pricing.mdx
@@ -24,39 +24,13 @@ description: "A stylish creative pricing component for modern UIs, built with ac
Install dependencies
-
+Add util file
`lib/utils.ts`
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/digital-hero.mdx b/src/content/docs/digital-hero.mdx
index ac4d581..b5d3c4d 100644
--- a/src/content/docs/digital-hero.mdx
+++ b/src/content/docs/digital-hero.mdx
@@ -26,33 +26,7 @@ description: "A stylish digital-hero component for modern UIs, built with access
Add the following animations to your `globals.css` or others file.
-
+Copy and paste the following code into your project.
@@ -72,4 +46,4 @@ Add the following animations to your `globals.css` or others file.
| Prop | Type | Default | Description |
| ---------- | ---- | ------- | ----------------------------------------- |
-| *No props* | – | – | This component does not accept any props. |
\ No newline at end of file
+| _No props_ | – | – | This component does not accept any props. |
diff --git a/src/content/docs/draw-cursor.mdx b/src/content/docs/draw-cursor.mdx
index 26c9375..a32a006 100644
--- a/src/content/docs/draw-cursor.mdx
+++ b/src/content/docs/draw-cursor.mdx
@@ -24,26 +24,7 @@ description: "A stylish following draw cursor component for modern UIs, built wi
Install dependencies
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/dynamic-card.mdx b/src/content/docs/dynamic-card.mdx
index 302a430..da1b8b0 100644
--- a/src/content/docs/dynamic-card.mdx
+++ b/src/content/docs/dynamic-card.mdx
@@ -24,49 +24,13 @@ description: "A stylish dynamic-card component for modern UIs, built with access
Install dependencies
-
+Add the required CSS animations
Add the following animations to your `globals.css` or others file.
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/flow-form.mdx b/src/content/docs/flow-form.mdx
index ef364cf..36ccfca 100644
--- a/src/content/docs/flow-form.mdx
+++ b/src/content/docs/flow-form.mdx
@@ -24,39 +24,13 @@ description: "A stylish flow-form component for modern UIs, built with accessibi
Install dependencies
-
+Add util file
`lib/utils.ts`
-
+Copy and paste the following code into your project.
@@ -72,7 +46,6 @@ export function cn(...inputs: ClassValue[]) {
-
### Props
`CanvasRevealEffect`
@@ -87,7 +60,6 @@ export function cn(...inputs: ClassValue[]) {
| `showGradient` | `boolean` | `true` | Whether to show a subtle gradient overlay on top of the canvas for visual depth. |
| `reverse` | `boolean` | `false` | Controls animation direction: `false` = intro (dots appear), `true` = outro (dots disappear). |
-
`DotMatrix`
| Prop | Type | Default | Description | |
diff --git a/src/content/docs/future-button.mdx b/src/content/docs/future-button.mdx
index 6a3ed8e..4d76f59 100644
--- a/src/content/docs/future-button.mdx
+++ b/src/content/docs/future-button.mdx
@@ -24,30 +24,7 @@ description: "A stylish future button component for modern UIs, built with acces
Install dependencies
-
+Copy and paste the following code into your project.
@@ -87,4 +64,4 @@ description: "A stylish future button component for modern UIs, built with acces
| `paths` | `Paths` (array) | **Required** | SVG shape definitions with styling and command points. |
| `enableBackdropBlur` | `boolean` | `false` | Enables background blur filter using ``. |
| `className` | `string` | `-` | Additional Tailwind classes for the container. |
-| `...props` | `React.SVGProps` | `-` | All standard SVG element attributes. |
\ No newline at end of file
+| `...props` | `React.SVGProps` | `-` | All standard SVG element attributes. |
diff --git a/src/content/docs/future-navbar.mdx b/src/content/docs/future-navbar.mdx
index 199894c..7f3f694 100644
--- a/src/content/docs/future-navbar.mdx
+++ b/src/content/docs/future-navbar.mdx
@@ -24,30 +24,7 @@ description: "A stylish future Navbar component for modern UIs, built with acces
Install dependencies
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/gaming-form.mdx b/src/content/docs/gaming-form.mdx
index 563a62d..132134b 100644
--- a/src/content/docs/gaming-form.mdx
+++ b/src/content/docs/gaming-form.mdx
@@ -24,26 +24,7 @@ description: "A stylish gaming-form component for modern UIs, built with accessi
Install dependencies
-
+Copy and paste the following code into your project.
@@ -59,7 +40,6 @@ description: "A stylish gaming-form component for modern UIs, built with accessi
-
### Props
`FormInput`
@@ -92,4 +72,4 @@ description: "A stylish gaming-form component for modern UIs, built with accessi
| Prop | Type | Default | Description |
| ---------- | -------- | ------- | --------------------------------------------- |
-| `videoUrl` | `string` | `-` | URL of the background video (must be `.mp4`). |
\ No newline at end of file
+| `videoUrl` | `string` | `-` | URL of the background video (must be `.mp4`). |
diff --git a/src/content/docs/glassy-faq.mdx b/src/content/docs/glassy-faq.mdx
index 379ad47..8d201e1 100644
--- a/src/content/docs/glassy-faq.mdx
+++ b/src/content/docs/glassy-faq.mdx
@@ -24,14 +24,7 @@ description: "A stylish glassy-faq component for modern UIs, built with accessib
Install dependencies
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/glob-map.mdx b/src/content/docs/glob-map.mdx
index 0f48005..3aa4a13 100644
--- a/src/content/docs/glob-map.mdx
+++ b/src/content/docs/glob-map.mdx
@@ -33,43 +33,13 @@ keywords:
Install dependencies
-
+Add util file
`lib/utils.ts`
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/glowing-card.mdx b/src/content/docs/glowing-card.mdx
index 29f339e..e9a8362 100644
--- a/src/content/docs/glowing-card.mdx
+++ b/src/content/docs/glowing-card.mdx
@@ -24,39 +24,13 @@ description: "A stylish glowing-card component for modern UIs, built with access
Install dependencies
-
+Add util file
`lib/utils.ts`
-
+Copy and paste the following code into your project.
@@ -76,4 +50,4 @@ export function cn(...inputs: ClassValue[]) {
| Prop | Type | Default | Description |
| ----------- | -------- | ------- | -------------------------------------------------------------- |
-| `className` | `string` | `""` | Additional custom classes for positioning or styling the card. |
\ No newline at end of file
+| `className` | `string` | `""` | Additional custom classes for positioning or styling the card. |
diff --git a/src/content/docs/gradient-background.mdx b/src/content/docs/gradient-background.mdx
index 6e7e873..1cbbabb 100644
--- a/src/content/docs/gradient-background.mdx
+++ b/src/content/docs/gradient-background.mdx
@@ -24,26 +24,7 @@ description: "A stylish gradient background component for modern UIs, built with
Install dependencies
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/gradient-button.mdx b/src/content/docs/gradient-button.mdx
index 5661f16..478cea0 100644
--- a/src/content/docs/gradient-button.mdx
+++ b/src/content/docs/gradient-button.mdx
@@ -29,64 +29,19 @@ keywords:
Install dependencies
-
+Add util file
`lib/utils.ts`
-
+Add the required CSS animations
Add the following animations to your `globals.css` or others file.
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/gradient-hero.mdx b/src/content/docs/gradient-hero.mdx
index c9ac86e..bb44c48 100644
--- a/src/content/docs/gradient-hero.mdx
+++ b/src/content/docs/gradient-hero.mdx
@@ -24,43 +24,13 @@ description: "A stylish gradient-hero component for modern UIs, built with acces
Install dependencies
-
+Add util file
`lib/utils.ts`
-
+Copy and paste the following code into your project.
diff --git a/src/content/docs/hacker-background.mdx b/src/content/docs/hacker-background.mdx
index e579b9b..b981533 100644
--- a/src/content/docs/hacker-background.mdx
+++ b/src/content/docs/hacker-background.mdx
@@ -22,8 +22,6 @@ description: "A stylish hacker background component for modern UIs, built with a
-Install dependencies
-
Copy and paste the following code into your project.
`components/nurui/hacker-background.tsx`
diff --git a/src/content/docs/hover-footer.mdx b/src/content/docs/hover-footer.mdx
index f333a06..0aaf50c 100644
--- a/src/content/docs/hover-footer.mdx
+++ b/src/content/docs/hover-footer.mdx
@@ -24,26 +24,7 @@ description: "A stylish hover footer component for modern UIs, built with access
Install dependencies
-
+Copy and paste the following code into your project.
@@ -70,4 +51,4 @@ description: "A stylish hover footer component for modern UIs, built with access
| `text` | `string` | — | The text content to display. |
| `duration?` | `number` | `0` | Transition duration (in seconds) for the gradient mask movement animation. |
| `className?` | `string` | — | Additional CSS class names applied to the root `