UNPKG

vj-ui-components

Version:

A collection of beautiful, customizable React UI components including versatile navigation with dual layout support (sidebar/top), stylish input fields with icon support, advanced search with recommendations and autocomplete, elegant modals with animation

272 lines (229 loc) 4.65 kB
/* Skeleton Component Styles */ .skeleton { background-color: #e5e7eb; border-radius: 4px; display: block; } /* Skeleton Variants */ .skeleton-text { border-radius: 4px; height: 1em; } .skeleton-rectangular { border-radius: 4px; } .skeleton-circular { border-radius: 50%; } .skeleton-rounded { border-radius: 8px; } /* Animation Variants */ .skeleton-pulse { animation: skeleton-pulse 2s ease-in-out infinite; } .skeleton-wave { position: relative; overflow: hidden; background: linear-gradient(90deg, #e5e7eb 25%, #f3f4f6 50%, #e5e7eb 75%); background-size: 200% 100%; animation: skeleton-wave 2s ease-in-out infinite; } @keyframes skeleton-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } } @keyframes skeleton-wave { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } /* Container Styles */ .skeleton-container { width: 100%; } /* Skeleton Card */ .skeleton-card { padding: 1rem; border: 1px solid #e5e7eb; border-radius: 8px; background-color: white; } .skeleton-card-header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; } .skeleton-card-title { display: flex; flex-direction: column; gap: 0.25rem; flex: 1; } .skeleton-card-content { display: flex; flex-direction: column; gap: 0.5rem; } /* Skeleton Table */ .skeleton-table { width: 100%; border-collapse: collapse; } .skeleton-table-header { display: grid; grid-template-columns: repeat(var(--columns, 4), 1fr); gap: 1rem; padding: 0.75rem; border-bottom: 1px solid #e5e7eb; background-color: #f9fafb; } .skeleton-table-body { display: flex; flex-direction: column; } .skeleton-table-row { display: grid; grid-template-columns: repeat(var(--columns, 4), 1fr); gap: 1rem; padding: 0.75rem; border-bottom: 1px solid #e5e7eb; } .skeleton-table-row:last-child { border-bottom: none; } /* Skeleton List */ .skeleton-list { display: flex; flex-direction: column; gap: 0.5rem; } .skeleton-list-item { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem; border: 1px solid #e5e7eb; border-radius: 6px; background-color: white; } .skeleton-list-content { display: flex; flex-direction: column; gap: 0.25rem; flex: 1; } /* Skeleton Profile */ .skeleton-profile { padding: 1.5rem; border: 1px solid #e5e7eb; border-radius: 8px; background-color: white; } .skeleton-profile-header { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; } .skeleton-profile-info { display: flex; flex-direction: column; gap: 0.5rem; flex: 1; } .skeleton-profile-stats { display: flex; gap: 2rem; } .skeleton-profile-stat { display: flex; flex-direction: column; align-items: center; gap: 0.25rem; } /* Skeleton Image */ .skeleton-image { position: relative; display: inline-block; border-radius: 8px; overflow: hidden; } .skeleton-image-overlay { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); opacity: 0.7; } /* Dark Mode Support */ @media (prefers-color-scheme: dark) { .skeleton { background-color: #374151; } .skeleton-wave { background: linear-gradient(90deg, #374151 25%, #4b5563 50%, #374151 75%); background-size: 200% 100%; } .skeleton-card, .skeleton-list-item, .skeleton-profile { background-color: #1f2937; border-color: #374151; } .skeleton-table-header { background-color: #111827; } .skeleton-table-row { border-color: #374151; } } /* Responsive Design */ @media (max-width: 768px) { .skeleton-card { padding: 0.75rem; } .skeleton-card-header { gap: 0.5rem; margin-bottom: 0.75rem; } .skeleton-profile { padding: 1rem; } .skeleton-profile-header { flex-direction: column; align-items: flex-start; text-align: center; } .skeleton-profile-stats { justify-content: center; width: 100%; } .skeleton-table-header, .skeleton-table-row { padding: 0.5rem; gap: 0.5rem; } .skeleton-list-item { padding: 0.5rem; gap: 0.5rem; } } @media (max-width: 640px) { .skeleton-profile-stats { flex-direction: column; gap: 1rem; } .skeleton-table-header, .skeleton-table-row { grid-template-columns: 1fr; } }