UNPKG

bismillahcss

Version:

The next-gen utility-first CSS framework for modern, futuristic web development.

862 lines (697 loc) 17.9 kB
/** * BismillahCSS Responsive Extension * Responsive design elements with bismillah- prefix * * This extension provides responsive components and utilities * not included in the core BismillahCSS framework. */ /* ==================================== RESPONSIVE BREAKPOINTS ==================================== */ /* Mobile: < 768px Tablet: 768px - 1023px Desktop: 1024px - 1279px Large Desktop: >= 1280px */ /* ==================================== CONTAINER & LAYOUT ==================================== */ .bismillah-container-fluid { width: 100%; padding-right: 1rem; padding-left: 1rem; margin-right: auto; margin-left: auto; } .bismillah-container-responsive { width: 100%; padding-right: 1rem; padding-left: 1rem; margin-right: auto; margin-left: auto; } /* Container breakpoints */ @media (min-width: 640px) { .bismillah-container-responsive { max-width: 640px; } } @media (min-width: 768px) { .bismillah-container-responsive { max-width: 768px; } } @media (min-width: 1024px) { .bismillah-container-responsive { max-width: 1024px; } } @media (min-width: 1280px) { .bismillah-container-responsive { max-width: 1280px; } } /* ==================================== RESPONSIVE GRID SYSTEM ==================================== */ .bismillah-grid { display: grid; gap: 1rem; } /* Basic grid columns for different screen sizes */ .bismillah-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } .bismillah-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .bismillah-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .bismillah-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .bismillah-grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); } .bismillah-grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } .bismillah-grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); } /* Responsive grid columns */ /* Small (sm) */ @media (min-width: 640px) { .bismillah-sm-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } .bismillah-sm-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .bismillah-sm-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .bismillah-sm-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .bismillah-sm-grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } .bismillah-sm-grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); } } /* Medium (md) */ @media (min-width: 768px) { .bismillah-md-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } .bismillah-md-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .bismillah-md-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .bismillah-md-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .bismillah-md-grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } .bismillah-md-grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); } } /* Large (lg) */ @media (min-width: 1024px) { .bismillah-lg-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } .bismillah-lg-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .bismillah-lg-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .bismillah-lg-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .bismillah-lg-grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } .bismillah-lg-grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); } } /* Extra Large (xl) */ @media (min-width: 1280px) { .bismillah-xl-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } .bismillah-xl-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .bismillah-xl-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .bismillah-xl-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .bismillah-xl-grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } .bismillah-xl-grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); } } /* Grid gap utilities */ .bismillah-gap-0 { gap: 0; } .bismillah-gap-1 { gap: 0.25rem; } .bismillah-gap-2 { gap: 0.5rem; } .bismillah-gap-4 { gap: 1rem; } .bismillah-gap-6 { gap: 1.5rem; } .bismillah-gap-8 { gap: 2rem; } /* Grid column span utilities */ .bismillah-col-span-1 { grid-column: span 1 / span 1; } .bismillah-col-span-2 { grid-column: span 2 / span 2; } .bismillah-col-span-3 { grid-column: span 3 / span 3; } .bismillah-col-span-4 { grid-column: span 4 / span 4; } .bismillah-col-span-6 { grid-column: span 6 / span 6; } .bismillah-col-span-12 { grid-column: span 12 / span 12; } /* Responsive column spans */ @media (min-width: 640px) { .bismillah-sm-col-span-1 { grid-column: span 1 / span 1; } .bismillah-sm-col-span-2 { grid-column: span 2 / span 2; } .bismillah-sm-col-span-3 { grid-column: span 3 / span 3; } .bismillah-sm-col-span-4 { grid-column: span 4 / span 4; } .bismillah-sm-col-span-6 { grid-column: span 6 / span 6; } .bismillah-sm-col-span-12 { grid-column: span 12 / span 12; } } @media (min-width: 768px) { .bismillah-md-col-span-1 { grid-column: span 1 / span 1; } .bismillah-md-col-span-2 { grid-column: span 2 / span 2; } .bismillah-md-col-span-3 { grid-column: span 3 / span 3; } .bismillah-md-col-span-4 { grid-column: span 4 / span 4; } .bismillah-md-col-span-6 { grid-column: span 6 / span 6; } .bismillah-md-col-span-12 { grid-column: span 12 / span 12; } } @media (min-width: 1024px) { .bismillah-lg-col-span-1 { grid-column: span 1 / span 1; } .bismillah-lg-col-span-2 { grid-column: span 2 / span 2; } .bismillah-lg-col-span-3 { grid-column: span 3 / span 3; } .bismillah-lg-col-span-4 { grid-column: span 4 / span 4; } .bismillah-lg-col-span-6 { grid-column: span 6 / span 6; } .bismillah-lg-col-span-12 { grid-column: span 12 / span 12; } } /* ==================================== RESPONSIVE NAVIGATION ==================================== */ .bismillah-navbar { display: flex; justify-content: space-between; align-items: center; padding: 1rem; background-color: #ffffff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); position: relative; z-index: 50; } .bismillah-navbar-brand { font-weight: 700; font-size: 1.5rem; text-decoration: none; color: #333; } .bismillah-navbar-menu { display: flex; list-style: none; margin: 0; padding: 0; align-items: center; } .bismillah-navbar-item { margin-left: 1.5rem; } .bismillah-navbar-link { text-decoration: none; color: #333; font-weight: 500; transition: color 0.2s ease; } .bismillah-navbar-link:hover { color: #4f46e5; } .bismillah-navbar-toggle { display: none; background: none; border: none; cursor: pointer; padding: 0.5rem; } .bismillah-navbar-toggle-icon { display: block; position: relative; width: 24px; height: 2px; background-color: #333; transition: all 0.3s ease; } .bismillah-navbar-toggle-icon::before, .bismillah-navbar-toggle-icon::after { content: ""; position: absolute; width: 24px; height: 2px; background-color: #333; transition: all 0.3s ease; } .bismillah-navbar-toggle-icon::before { top: -8px; } .bismillah-navbar-toggle-icon::after { bottom: -8px; } /* Mobile navigation styles */ @media (max-width: 767px) { .bismillah-navbar-toggle { display: block; } .bismillah-navbar-menu { position: absolute; top: 100%; left: 0; right: 0; flex-direction: column; background-color: #ffffff; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); padding: 1rem 0; display: none; align-items: flex-start; } .bismillah-navbar-menu.bismillah-active { display: flex; } .bismillah-navbar-item { margin: 0; width: 100%; } .bismillah-navbar-link { display: block; padding: 0.75rem 1.5rem; width: 100%; } /* Hamburger menu animation */ .bismillah-navbar-toggle.bismillah-active .bismillah-navbar-toggle-icon { background-color: transparent; } .bismillah-navbar-toggle.bismillah-active .bismillah-navbar-toggle-icon::before { transform: rotate(45deg); top: 0; } .bismillah-navbar-toggle.bismillah-active .bismillah-navbar-toggle-icon::after { transform: rotate(-45deg); bottom: 0; } } /* ==================================== RESPONSIVE IMAGES ==================================== */ .bismillah-img-fluid { max-width: 100%; height: auto; display: block; } .bismillah-img-cover { width: 100%; height: 100%; object-fit: cover; } .bismillah-img-contain { width: 100%; height: 100%; object-fit: contain; } /* Image aspect ratios */ .bismillah-aspect-ratio { position: relative; width: 100%; overflow: hidden; } .bismillah-aspect-ratio::before { content: ""; display: block; } .bismillah-aspect-ratio img, .bismillah-aspect-ratio video, .bismillah-aspect-ratio iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; } /* 16:9 aspect ratio */ .bismillah-aspect-16-9::before { padding-top: 56.25%; } /* 4:3 aspect ratio */ .bismillah-aspect-4-3::before { padding-top: 75%; } /* 1:1 aspect ratio (square) */ .bismillah-aspect-1-1::before { padding-top: 100%; } /* 3:2 aspect ratio */ .bismillah-aspect-3-2::before { padding-top: 66.66%; } /* 2:3 aspect ratio (portrait) */ .bismillah-aspect-2-3::before { padding-top: 150%; } /* ==================================== RESPONSIVE UTILITIES ==================================== */ /* Hide on different screen sizes */ .bismillah-hide-xs { display: none; } @media (min-width: 640px) { .bismillah-hide-xs { display: initial; } .bismillah-hide-sm { display: none; } } @media (min-width: 768px) { .bismillah-hide-sm { display: initial; } .bismillah-hide-md { display: none; } } @media (min-width: 1024px) { .bismillah-hide-md { display: initial; } .bismillah-hide-lg { display: none; } } @media (min-width: 1280px) { .bismillah-hide-lg { display: initial; } .bismillah-hide-xl { display: none; } } /* Show only on specific screen sizes */ .bismillah-show-xs-only { display: initial; } .bismillah-show-sm-only, .bismillah-show-md-only, .bismillah-show-lg-only, .bismillah-show-xl-only { display: none; } @media (min-width: 640px) { .bismillah-show-xs-only { display: none; } .bismillah-show-sm-only { display: initial; } } @media (min-width: 768px) { .bismillah-show-sm-only { display: none; } .bismillah-show-md-only { display: initial; } } @media (min-width: 1024px) { .bismillah-show-md-only { display: none; } .bismillah-show-lg-only { display: initial; } } @media (min-width: 1280px) { .bismillah-show-lg-only { display: none; } .bismillah-show-xl-only { display: initial; } } /* Text alignment responsive utilities */ .bismillah-text-left { text-align: left; } .bismillah-text-center { text-align: center; } .bismillah-text-right { text-align: right; } @media (min-width: 640px) { .bismillah-sm-text-left { text-align: left; } .bismillah-sm-text-center { text-align: center; } .bismillah-sm-text-right { text-align: right; } } @media (min-width: 768px) { .bismillah-md-text-left { text-align: left; } .bismillah-md-text-center { text-align: center; } .bismillah-md-text-right { text-align: right; } } @media (min-width: 1024px) { .bismillah-lg-text-left { text-align: left; } .bismillah-lg-text-center { text-align: center; } .bismillah-lg-text-right { text-align: right; } } /* Flex direction responsive utilities */ .bismillah-flex-row { flex-direction: row; } .bismillah-flex-col { flex-direction: column; } @media (min-width: 640px) { .bismillah-sm-flex-row { flex-direction: row; } .bismillah-sm-flex-col { flex-direction: column; } } @media (min-width: 768px) { .bismillah-md-flex-row { flex-direction: row; } .bismillah-md-flex-col { flex-direction: column; } } @media (min-width: 1024px) { .bismillah-lg-flex-row { flex-direction: row; } .bismillah-lg-flex-col { flex-direction: column; } } /* ==================================== RESPONSIVE CARDS ==================================== */ .bismillah-card { background-color: #ffffff; border-radius: 0.5rem; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); overflow: hidden; display: flex; flex-direction: column; } .bismillah-card-img { width: 100%; height: auto; } .bismillah-card-body { padding: 1.5rem; flex: 1; } .bismillah-card-title { font-size: 1.25rem; font-weight: 600; margin-top: 0; margin-bottom: 0.75rem; } .bismillah-card-text { margin-bottom: 1rem; } .bismillah-card-footer { padding: 1rem 1.5rem; background-color: rgba(0, 0, 0, 0.03); border-top: 1px solid rgba(0, 0, 0, 0.1); } /* Horizontal card layout for larger screens */ @media (min-width: 768px) { .bismillah-card-horizontal { flex-direction: row; } .bismillah-card-horizontal .bismillah-card-img { width: 33.333%; height: auto; } .bismillah-card-horizontal .bismillah-card-body { width: 66.666%; } } /* ==================================== RESPONSIVE FORMS ==================================== */ .bismillah-form-group { margin-bottom: 1rem; } .bismillah-form-label { display: block; margin-bottom: 0.5rem; font-weight: 500; } .bismillah-form-control { display: block; width: 100%; padding: 0.75rem; font-size: 1rem; line-height: 1.5; color: #333; background-color: #fff; border: 1px solid #ddd; border-radius: 0.25rem; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } .bismillah-form-control:focus { border-color: #4f46e5; outline: 0; box-shadow: 0 0 0 0.2rem rgba(79, 70, 229, 0.25); } /* Responsive form layout */ @media (min-width: 768px) { .bismillah-form-row { display: flex; flex-wrap: wrap; margin-right: -0.5rem; margin-left: -0.5rem; } .bismillah-form-col { flex: 0 0 50%; max-width: 50%; padding-right: 0.5rem; padding-left: 0.5rem; } .bismillah-form-col-full { flex: 0 0 100%; max-width: 100%; padding-right: 0.5rem; padding-left: 0.5rem; } } /* JavaScript helper for the mobile navigation */ /* Add this script to your page: document.addEventListener('DOMContentLoaded', function() { const navbarToggle = document.querySelector('.bismillah-navbar-toggle'); const navbarMenu = document.querySelector('.bismillah-navbar-menu'); navbarToggle.addEventListener('click', function() { navbarToggle.classList.toggle('bismillah-active'); navbarMenu.classList.toggle('bismillah-active'); }); }); */