Forms checkboxcyberpunk
Cyberpunk Checkbox
Neon themed bold checkbox.
Preview
Usage
Copy the full block below to use this component with its imports.
astro
---
import { CyberpunkCheckbox } from 'astro-component-kit';
---
<CyberpunkCheckbox id="accept" label="Accept Protocols" checked /> ---
import { CyberpunkCheckbox } from 'astro-component-kit';
---
<CyberpunkCheckbox id="accept" label="Accept Protocols" checked /> Manual Installation
If you are not using the npm package, create a new file src/components/lib/CyberpunkCheckbox.astro and paste the following code:
astro
---
/**
* CyberpunkCheckbox — A bold, neon-themed checkbox with angular borders and glitch-toggle effect.
*
* @param {string} label - Text label displayed alongside the checkbox.
* @param {string} id - HTML ID for the checkbox.
* @param {string} name - HTML name binding.
* @param {boolean} checked - Initial toggle state.
*/
interface Props {
label: string;
id: string;
name?: string;
checked?: boolean;
}
const { label, id, name, checked = false } = Astro.props;
---
<label class="cyber-check" for={id}>
<input type="checkbox" {id} {name} {checked} />
<span class="checkmark" aria-hidden="true"></span>
<span class="cyber-text">{label}</span>
</label>
<style>
.cyber-check {
display: flex; align-items: center; gap: var(--sp-4, 1rem);
cursor: pointer;
color: var(--c-primary-light, #00e0ff);
font-family: 'Courier New', Courier, monospace;
font-weight: 800;
text-transform: uppercase;
user-select: none;
padding: var(--sp-2, 0.5rem);
transition: 0.2s;
}
.cyber-check:hover .checkmark { border-color: var(--c-primary-light); }
.cyber-check input { display: none; }
.checkmark {
width: 20px; height: 20px;
border: 2px solid var(--c-primary, #ff003c);
position: relative; transition: all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
flex-shrink: 0;
clip-path: polygon(10% 0%, 100% 0%, 90% 100%, 0% 100%);
}
.cyber-check input:checked + .checkmark {
background: var(--c-primary, #ff003c);
box-shadow: 0 0 15px var(--c-primary, #ff003c);
transform: rotate(5deg) scale(1.1);
}
.checkmark::after {
content: ''; position: absolute; display: none;
left: 7px; top: 2px; width: 4px; height: 10px;
border: solid #fff; border-width: 0 3px 3px 0;
transform: rotate(45deg);
}
.cyber-check input:checked + .checkmark::after { display: block; }
.cyber-text { letter-spacing: 0.05em; font-size: 0.9rem; }
.cyber-check input:checked ~ .cyber-text {
text-shadow: 0 0 8px var(--c-primary-light);
}
</style> ---
/**
* CyberpunkCheckbox — A bold, neon-themed checkbox with angular borders and glitch-toggle effect.
*
* @param {string} label - Text label displayed alongside the checkbox.
* @param {string} id - HTML ID for the checkbox.
* @param {string} name - HTML name binding.
* @param {boolean} checked - Initial toggle state.
*/
interface Props {
label: string;
id: string;
name?: string;
checked?: boolean;
}
const { label, id, name, checked = false } = Astro.props;
---
<label class="cyber-check" for={id}>
<input type="checkbox" {id} {name} {checked} />
<span class="checkmark" aria-hidden="true"></span>
<span class="cyber-text">{label}</span>
</label>
<style>
.cyber-check {
display: flex; align-items: center; gap: var(--sp-4, 1rem);
cursor: pointer;
color: var(--c-primary-light, #00e0ff);
font-family: 'Courier New', Courier, monospace;
font-weight: 800;
text-transform: uppercase;
user-select: none;
padding: var(--sp-2, 0.5rem);
transition: 0.2s;
}
.cyber-check:hover .checkmark { border-color: var(--c-primary-light); }
.cyber-check input { display: none; }
.checkmark {
width: 20px; height: 20px;
border: 2px solid var(--c-primary, #ff003c);
position: relative; transition: all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
flex-shrink: 0;
clip-path: polygon(10% 0%, 100% 0%, 90% 100%, 0% 100%);
}
.cyber-check input:checked + .checkmark {
background: var(--c-primary, #ff003c);
box-shadow: 0 0 15px var(--c-primary, #ff003c);
transform: rotate(5deg) scale(1.1);
}
.checkmark::after {
content: ''; position: absolute; display: none;
left: 7px; top: 2px; width: 4px; height: 10px;
border: solid #fff; border-width: 0 3px 3px 0;
transform: rotate(45deg);
}
.cyber-check input:checked + .checkmark::after { display: block; }
.cyber-text { letter-spacing: 0.05em; font-size: 0.9rem; }
.cyber-check input:checked ~ .cyber-text {
text-shadow: 0 0 8px var(--c-primary-light);
}
</style>
Quick Info
- Category
- Forms
- Filename
CyberpunkCheckbox.astro- Dependencies
- None — pure Astro + CSS
- Tags
- checkboxcyberpunk