lightswind
Version:
A collection of beautifully crafted React Components, Blocks & Templates built with Tailwind CSS. Create stunning web applications effortlessly by using our 100+ professional and animated react components.
882 lines (796 loc) • 19.3 kB
CSS
/*
* lightswind.com
* lightswind.css
*
* This file contains a standalone CSS library with custom themes, animations,
* and utility classes. It does NOT require Tailwind CSS for compilation.
* Users can directly import this file into their projects.
Also works without overriding your tailwind CSS
*/
/* ==========================================================================
1. CSS Variables for Theming
========================================================================== */
/* Light (default) theme variables */
:root {
--primarylw: #173eff;
--primarylw-2: #3758f9;
--darklw: #11131b;
--darklw-2: #1a1d25;
/* HSL values for theme colors */
--background: 0 0% 100%;
--foreground: 0 0% 0%;
--card: 0 0% 100%;
--card-foreground: 0 0% 0%;
--popover: 0 0% 100%;
--popover-foreground: 0 0% 0%;
--primary: 0 0% 0%;
--primary-foreground: 0 0% 100%;
--secondary: 0 0% 96%;
--secondary-foreground: 0 0% 0%;
--muted: 0 0% 96%;
--muted-foreground: 0 0% 45%;
--accent: 0 0% 96%;
--accent-foreground: 0 0% 0%;
--destructive: 0 84% 60%;
--destructive-foreground: 0 0% 100%;
--border: 0 0% 90%;
--input: 0 0% 90%;
--ring: 0 0% 0%;
--radius: 0.5rem; /* For rounded corners */
/* Scrollbar colors */
--scrollbar-thumb: 0 0% 75%;
--scrollbar-track: 0 0% 95%;
--scrollbar-hover: 0 0% 65%;
/* Custom named colors */
--greedy: #07eae6ff;
}
/* Dark theme variables */
.dark {
--primarylw: #173eff;
--primarylw-2: #3758f9;
--darklw: #11131b;
--darklw-2: #1a1d25;
/* HSL values for theme colors in dark mode */
--background: 0 0% 0%;
--foreground: 0 0% 100%;
--card: 0 0% 5%;
--card-foreground: 0 0% 100%;
--popover: 0 0% 5%;
--popover-foreground: 0 0% 100%;
--primary: 0 0% 100%;
--primary-foreground: 0 0% 0%;
--secondary: 0 0% 15%;
--secondary-foreground: 0 0% 100%;
--muted: 0 0% 15%;
--muted-foreground: 0 0% 65%;
--accent: 0 0% 15%;
--accent-foreground: 0 0% 100%;
--destructive: 0 62% 30%;
--destructive-foreground: 0 0% 100%;
--border: #000; /* Direct hex for dark border */
--input: 0 0% 20%;
--ring: 0 0% 20%;
/* Scrollbar colors for dark mode */
--scrollbar-thumb: 0 0% 25%;
--scrollbar-track: 0 0% 10%;
--scrollbar-hover: 0 0% 35%;
/* Custom named colors (same as light, but can be overridden if needed) */
--greedy: #07eae6ff;
}
/* ==========================================================================
2. Keyframe Animations
========================================================================== */
/* Neon Button Animations */
@keyframes neon-pulse {
0% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
100% {
transform: scale(1);
}
}
@keyframes neon-bounce {
0%,
100% {
transform: translateY(0);
}
50% {
transform: translateY(-10px);
}
}
/* Tiny Bar Loader Animation */
@keyframes tiny-bar-loader-anime {
0% {
opacity: 1;
}
100% {
opacity: 0.1;
}
}
/* Glassmorphism Animated Login Form Background */
@keyframes GlassLoginAnimateBg {
100% {
filter: hue-rotate(360deg);
}
}
/* Gradient Animated Background Turn */
@keyframes GradientAnimatedBgTurn {
to {
transform: rotate(1turn);
}
}
/* Glassmorphism Marquee Animation */
@keyframes marquee-right-left {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
/* Animated Gradient Border Button Property and Animation */
/* @property MUST be defined at the global scope, not inside a rule */
@property --border-angle {
syntax: "<angle>";
inherits: true;
initial-value: 0turn;
}
@keyframes bg-spin {
to {
--border-angle: 1turn;
}
}
/* Product Card Skeleton Loader Animation */
@keyframes skeletonLoader {
0% {
background-position: -2000px 0;
}
100% {
background-position: 2000px 0;
}
}
/* Skeleton Bars Loader Animation */
@keyframes skeletonBarsLoader {
0% {
background-position: -2000px 0;
}
100% {
background-position: 2000px 0;
}
}
/* Animated Cart Button Animations */
@keyframes AnimatedCartBtntruck {
0% {
left: -10%;
}
40%,
55% {
left: 50%;
}
100% {
left: 110%;
}
}
@keyframes AnimatedCartBtnbox {
0%,
40% {
top: -20%;
left: -5%;
}
55% {
top: 37%;
left: 52%;
}
100% {
top: 37%;
left: 110%;
}
}
@keyframes AnimatedCartBtntxt1 {
0% {
opacity: 1;
}
20%,
100% {
opacity: 0;
}
}
@keyframes AnimatedCartBtntxt2 {
0%,
80% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Shimmer Effect Animation */
@keyframes shimmer {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(100%);
}
}
/* Toast Notification Animations (Desktop & Mobile) */
@keyframes toast-enter {
0% {
transform: translateX(100%);
opacity: 0;
}
100% {
transform: translateX(0);
opacity: 1;
}
}
@keyframes toast-exit {
0% {
transform: translateX(0);
opacity: 1;
}
100% {
transform: translateX(100%);
opacity: 0;
}
}
@keyframes toast-enter-mobile {
0% {
transform: translateY(-100%);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
@keyframes toast-exit-mobile {
0% {
transform: translateY(0);
opacity: 1;
}
100% {
transform: translateY(-100%);
opacity: 0;
}
}
/* ==========================================================================
3. Base Styles & Global Utilities
========================================================================== */
/* Global Scrollbar Styling */
* {
scrollbar-width: thin;
scrollbar-color: hsl(var(--scrollbar-thumb)) hsl(var(--scrollbar-track));
/* Apply font family globally */
box-sizing: border-box; /* Good practice for all elements */
}
/* Body Styling */
body {
background-color: hsl(var(--background));
color: hsl(var(--foreground));
margin: 0; /* Reset default body margin */
padding: 0; /* Reset default body padding */
}
/* Overflow handling for dialogs/popovers */
.command-dialog-open,
.popover-open {
overflow: hidden;
}
.command-dialog-open::after,
.popover-open::after {
content: "";
position: fixed;
inset: 0;
z-index: 39;
backdrop-filter: blur(4px);
pointer-events: none;
transition: backdrop-filter 0.2s ease;
}
/* Border Styling (light and dark modes) */
.border {
border-width: 1px;
border-color: hsl(var(--border)); /* Use CSS variable for consistency */
}
.dark .border {
border-color: var(
--darklw-2
); /* Using darklw-2 as per your original config for dark border */
}
/* Smooth Scroll Utility */
.scroll-smooth {
scroll-behavior: smooth;
}
/* Hide Scrollbar Utility */
.scrollbar-hide {
scrollbar-width: none;
-ms-overflow-style: none; /* For IE and Edge */
}
.scrollbar-hide::-webkit-scrollbar {
display: none; /* For Chrome, Safari, and Opera */
}
/* Custom Card Component Styling */
.custom-card {
border-radius: var(--radius); /* Using CSS variable for radius */
box-shadow:
0 10px 15px -3px rgba(0, 0, 0, 0.1),
0 4px 6px -2px rgba(0, 0, 0, 0.05); /* shadow-lg */
padding: 1.5rem; /* spacing.6 */
background-color: hsl(var(--card)); /* Use card background color */
border: 1px solid hsl(var(--border)); /* Use border color */
}
/* Dynamic Navigation Classes */
.dynamicNav-nav-bg {
background-color: #000000;
width: 100%;
position: relative;
}
.dynamicNav-highlight-glow {
box-shadow: inset 0 0 10px #fff;
}
.dynamicNav-nav-link {
color: #ffffff;
transition:
color 0.3s ease,
transform 0.3s ease;
}
.dynamicNav-nav-link:hover {
transform: scale(1.1);
}
.dynamicNav-highlight-transition {
transition: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}
.dynamicNav-active-link {
background-color: rgba(255, 255, 255, 0.1);
}
/* Interactive Gallery Card Styles */
.InteractiveGalleryCard:hover {
transform: perspective(1000px);
}
.InteractiveGalleryCard {
transition:
transform 0.2s ease,
box-shadow 0.2s ease;
will-change: transform;
}
/* Glass Marquee Styles */
.GlassMarqueeContainer {
display: flex;
width: 200%; /* Important for marquee effect */
gap: 20px;
white-space: nowrap;
align-items: center;
animation: marquee-right-left 12s linear infinite;
}
.GlassMarqueeContainer:hover {
animation-play-state: paused;
}
.GlassMarqueeCard {
flex-shrink: 0;
transition:
transform 0.3s,
box-shadow 0.3s,
filter 0.3s;
}
.GlassMarqueeCard:hover {
transform: translateY(-10px) scale(1.05);
box-shadow: 0px 20px 30px rgba(0, 0, 0, 0.4);
}
.GlassMarqueeEffect {
backdrop-filter: blur(10px);
background: rgba(255, 255, 255, 0.15);
}
/* Animated Gradient Border Button Styles */
.gradient-border {
--border-angle: 0turn;
background:
conic-gradient(from var(--border-angle), #000, #000) padding-box,
conic-gradient(
from var(--border-angle),
transparent 25%,
#08f,
rgb(1, 206, 46) 99%,
transparent
)
border-box;
animation: bg-spin 3s linear infinite;
border: 1px solid transparent;
background-origin: border-box;
}
.gradient-border:hover {
animation-play-state: paused;
}
/* Animated Range Input Styles */
.animatedRangeInput .animatedRangeInputLevel::-webkit-slider-thumb {
-webkit-appearance: none;
width: 0;
height: 0;
-webkit-box-shadow: -200px 0 0 200px #fff;
box-shadow: -200px 0 0 200px #fff;
}
.animatedRangeInput .animatedRangeInputLevel::-moz-range-thumb {
width: 0;
height: 0;
border-radius: 0;
border: none;
box-shadow: -200px 0 0 200px #fff;
}
/* Toggle Theme Sidebar Transitions */
.ToggleThemeSidebar {
transition:
width 0.4s ease,
padding 0.4s ease;
}
.ToggleThemeSidebar-expanded {
width: 160px;
}
.ToggleThemeSidebar-collapsed {
width: 64px;
}
/* Smooth transition for theme changes */
.transition-colors {
transition:
background-color 0.4s,
color 0.4s;
}
/* Content Max Height and Overflow for dialogs/popovers */
.dropdown-content,
.select-content,
.popover-content,
.command-dialog {
max-height: calc(90vh - 2rem);
overflow-y: auto;
}
/* No Scroll Utility */
.no-scroll {
overflow: hidden;
}
/* Custom Scrollbar Styling */
.custom-scrollbar::-webkit-scrollbar {
width: 5px;
height: 5px;
}
.custom-scrollbar::-webkit-scrollbar-track {
background: transparent;
border-radius: 10px;
}
.custom-scrollbar::-webkit-scrollbar-thumb {
background-color: rgba(120, 120, 120, 0.3);
border-radius: 10px;
transition: all 0.2s ease;
}
.custom-scrollbar:hover::-webkit-scrollbar-thumb {
background-color: rgba(120, 120, 120, 0.5);
}
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
background-color: rgba(120, 120, 120, 0.7);
}
.custom-scrollbar::-webkit-scrollbar-corner {
background: transparent;
}
/* Flex Wrap Tabs Layout */
.flex-wrap-tabs {
display: flex;
flex-wrap: wrap;
gap: 0.25rem; /* 4px */
}
/* Sidebar Scrollable Syntax Scrollbar */
.sidebar-scrollable-syntax::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.sidebar-scrollable-syntax::-webkit-scrollbar-track {
background-color: #f0f0f0;
border-radius: 10px;
}
.sidebar-scrollable-syntax::-webkit-scrollbar-thumb {
background-color: #505050;
border-radius: 10px;
border: 2px solid #f0f0f0;
}
.sidebar-scrollable-syntax::-webkit-scrollbar-thumb:hover {
background-color: #b3b3b3;
}
/* ==========================================================================
4. Utility Classes (Explicitly Defined)
========================================================================== */
/* Color Utilities (text- and background- colors) */
.text-greedy {
color: var(--greedy);
}
.bg-greedy {
background-color: var(--greedy);
}
.text-primarylw {
color: var(--primarylw);
}
.bg-primarylw {
background-color: var(--primarylw);
}
.text-primarylw-2 {
color: var(--primarylw-2);
}
.bg-primarylw-2 {
background-color: var(--primarylw-2);
}
.text-darklw {
color: var(--darklw);
}
.bg-darklw {
background-color: var(--darklw);
}
.text-darklw-2 {
color: var(--darklw-2);
}
.bg-darklw-2 {
background-color: var(--darklw-2);
}
.text-background {
color: hsl(var(--background));
}
.bg-background {
background-color: hsl(var(--background));
}
.text-foreground {
color: hsl(var(--foreground));
}
.bg-foreground {
background-color: hsl(var(--foreground));
}
.text-card {
color: hsl(var(--card));
}
.bg-card {
background-color: hsl(var(--card));
}
.text-card-foreground {
color: hsl(var(--card-foreground));
}
.bg-card-foreground {
background-color: hsl(var(--card-foreground));
}
.text-popover {
color: hsl(var(--popover));
}
.bg-popover {
background-color: hsl(var(--popover));
}
.text-popover-foreground {
color: hsl(var(--popover-foreground));
}
.bg-popover-foreground {
background-color: hsl(var(--popover-foreground));
}
.text-primary {
color: hsl(var(--primary));
}
.bg-primary {
background-color: hsl(var(--primary));
}
.text-primary-foreground {
color: hsl(var(--primary-foreground));
}
.bg-primary-foreground {
background-color: hsl(var(--primary-foreground));
}
.text-secondary {
color: hsl(var(--secondary));
}
.bg-secondary {
background-color: hsl(var(--secondary));
}
.text-secondary-foreground {
color: hsl(var(--secondary-foreground));
}
.bg-secondary-foreground {
background-color: hsl(var(--secondary-foreground));
}
.text-muted {
color: hsl(var(--muted));
}
.bg-muted {
background-color: hsl(var(--muted));
}
.text-muted-foreground {
color: hsl(var(--muted-foreground));
}
.bg-muted-foreground {
background-color: hsl(var(--muted-foreground));
}
.text-accent {
color: hsl(var(--accent));
}
.bg-accent {
background-color: hsl(var(--accent));
}
.text-accent-foreground {
color: hsl(var(--accent-foreground));
}
.bg-accent-foreground {
background-color: hsl(var(--accent-foreground));
}
.text-destructive {
color: hsl(var(--destructive));
}
.bg-destructive {
background-color: hsl(var(--destructive));
}
.text-destructive-foreground {
color: hsl(var(--destructive-foreground));
}
.bg-destructive-foreground {
background-color: hsl(var(--destructive-foreground));
}
.text-border {
color: hsl(var(--border));
}
.bg-border {
background-color: hsl(var(--border));
}
.text-input {
color: hsl(var(--input));
}
.bg-input {
background-color: hsl(var(--input));
}
.text-ring {
color: hsl(var(--ring));
}
.bg-ring {
background-color: hsl(var(--ring));
}
/* Scrollbar Color Utilities */
.text-scrollbar-thumb {
color: hsl(var(--scrollbar-thumb));
}
.bg-scrollbar-thumb {
background-color: hsl(var(--scrollbar-thumb));
}
.text-scrollbar-track {
color: hsl(var(--scrollbar-track));
}
.bg-scrollbar-track {
background-color: hsl(var(--scrollbar-track));
}
.text-scrollbar-hover {
color: hsl(var(--scrollbar-hover));
}
.bg-scrollbar-hover {
background-color: hsl(var(--scrollbar-hover));
}
/* Animation Utility Classes */
.neon-pulse-animation {
animation: neon-pulse 0.6s ease-in-out infinite;
}
.neon-bounce-animation {
animation: neon-bounce 0.3s ease-in-out infinite;
}
.tiny-bar-loader {
animation: tiny-bar-loader-anime 1s linear infinite;
}
.GlassMarqueeContainer {
/* This class is also used for layout, but also for animation */
animation: marquee-right-left 12s linear infinite;
}
.animated-gradient-border-button {
--border-angle: 0turn;
animation: bg-spin 3s linear infinite;
}
.animate-skeletonLoader {
animation: skeletonLoader 5s ease-in-out infinite;
}
.skeletonBarsLoaders {
background-size: 200% 100%;
animation: skeletonBarsLoader 6s ease-in-out infinite;
}
.animate-shimmer {
animation: shimmer 2s infinite;
}
/* Animated Cart Button Specific Classes */
.cart-button.clicked .cart-shopping-svg {
animation: AnimatedCartBtntruck 2s ease-in-out forwards;
}
.cart-button.clicked .cart-box-svg {
animation: AnimatedCartBtnbox 2s ease-in-out forwards;
}
.cart-button.clicked span.add-to-cart {
animation: AnimatedCartBtntxt1 2s ease-in-out forwards;
}
.cart-button.clicked span.added {
animation: AnimatedCartBtntxt2 2s ease-in-out forwards;
}
/* Card Hover Effect */
.card-hover {
transition-property: transform;
transition-duration: 300ms;
transition-timing-function: ease;
transform: none;
}
.card-hover:hover {
transform: scale(1.02);
box-shadow:
0 10px 15px -3px rgba(0, 0, 0, 0.1),
0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
/* Toggle Switch Component */
.toggle-switch {
position: relative;
width: 2.5rem; /* w-10 */
height: 1.25rem; /* h-5 */
border-radius: 9999px;
background-color: hsl(var(--secondary));
transition-property: background-color;
transition-duration: 200ms;
}
.toggle-switch.active {
background-color: hsl(var(--primary));
}
.toggle-switch .toggle-knob {
position: absolute;
top: 2px;
left: 2px;
width: 1rem; /* w-4 */
height: 1rem; /* h-4 */
border-radius: 9999px;
background-color: hsl(var(--foreground));
transition-property: transform;
transition-duration: 200ms;
}
.toggle-switch.active .toggle-knob {
transform: translateX(1.25rem); /* translate-x-5 */
background-color: hsl(var(--background));
}
/* Dropdown Hover Item */
.dropdown-hover-item {
display: flex;
align-items: center;
padding: 0.5rem 0.5rem;
font-size: 0.875rem;
border-radius: 0.375rem;
cursor: pointer;
transition-property: color, background-color;
transition-duration: 200ms;
}
.dropdown-hover-item:hover {
background-color: hsl(var(--accent));
color: hsl(var(--accent-foreground));
}
/* Dropdown Category & Item */
.dropdown-category {
font-size: 0.75rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 0.25rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
color: hsl(var(--muted-foreground));
}
.dropdown-category-item {
display: flex;
align-items: center;
gap: 0.5rem;
width: 100%;
font-size: 0.875rem;
}
/* Tabs Background Indicator */
.tabs-bg-indicator {
position: absolute;
border-radius: 0.125rem;
background-color: hsl(var(--primary));
transition-property: all;
transition-duration: 200ms;
transition-timing-function: ease-out;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
transform-origin: center center;
}
/* Sidebar Menu Indicator */
.sidebar-menu-indicator {
position: absolute;
transition-property: all;
transition-duration: 200ms;
transition-timing-function: ease-out;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}