Feedback loadingspinner
Neon Spinner
Glow-style loading spinner.
Preview
Usage
Copy the full block below to use this component with its imports.
astro
---
import { NeonSpinner } from 'astro-component-kit';
---
<NeonSpinner size="md" /> ---
import { NeonSpinner } from 'astro-component-kit';
---
<NeonSpinner size="md" /> Manual Installation
If you are not using the npm package, create a new file src/components/lib/NeonSpinner.astro and paste the following code:
astro
---
/**
* NeonSpinner — A sleek, glowing loading spinner with customizable color and size.
*
* @param {string} color - CSS color for the primary spinning segment. Default is 'var(--c-primary)'.
* @param {'sm'|'md'|'lg'} size - Predetermined size variant. Default is 'md'.
*/
interface Props {
color?: string;
size?: 'sm' | 'md' | 'lg';
}
const { color = 'var(--c-primary, #6366f1)', size = 'md' } = Astro.props;
const dimensions = {
sm: '24px',
md: '40px',
lg: '64px'
};
---
<div
class="neon-spinner"
style={`--spinner-color: ${color}; --spinner-size: ${dimensions[size]};`}
role="status"
aria-label="Loading"
></div>
<style>
.neon-spinner {
width: var(--spinner-size);
height: var(--spinner-size);
border: 3px solid var(--c-bg-elev, #111);
border-top-color: var(--spinner-color);
border-radius: var(--r-full, 50%);
animation: neon-spin 0.8s linear infinite;
filter: drop-shadow(0 0 5px var(--spinner-color));
}
@keyframes neon-spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
</style> ---
/**
* NeonSpinner — A sleek, glowing loading spinner with customizable color and size.
*
* @param {string} color - CSS color for the primary spinning segment. Default is 'var(--c-primary)'.
* @param {'sm'|'md'|'lg'} size - Predetermined size variant. Default is 'md'.
*/
interface Props {
color?: string;
size?: 'sm' | 'md' | 'lg';
}
const { color = 'var(--c-primary, #6366f1)', size = 'md' } = Astro.props;
const dimensions = {
sm: '24px',
md: '40px',
lg: '64px'
};
---
<div
class="neon-spinner"
style={`--spinner-color: ${color}; --spinner-size: ${dimensions[size]};`}
role="status"
aria-label="Loading"
></div>
<style>
.neon-spinner {
width: var(--spinner-size);
height: var(--spinner-size);
border: 3px solid var(--c-bg-elev, #111);
border-top-color: var(--spinner-color);
border-radius: var(--r-full, 50%);
animation: neon-spin 0.8s linear infinite;
filter: drop-shadow(0 0 5px var(--spinner-color));
}
@keyframes neon-spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
</style>
Quick Info
- Category
- Feedback
- Filename
NeonSpinner.astro- Dependencies
- None — pure Astro + CSS
- Tags
- loadingspinner