UNPKG

@buun_group/brutalist-ui

Version:
98 lines (84 loc) 2.23 kB
/* Aspect Ratio Component - Brutalist Styling */ .container { --brutal-aspect-ratio-bg: var(--brutal-gray-100, #f3f4f6); --brutal-aspect-ratio-border: var(--brutal-black, #000000); --brutal-aspect-ratio-radius: var(--brutal-radius, 4px); position: relative; width: 100%; overflow: hidden; background-color: var(--brutal-aspect-ratio-bg); border: 2px solid var(--brutal-aspect-ratio-border); border-radius: var(--brutal-aspect-ratio-radius); box-shadow: 4px 4px 0px var(--brutal-aspect-ratio-border); } .sizer { width: 100%; /* padding-bottom is set inline based on ratio */ } .content { position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: flex; align-items: center; justify-content: center; } /* Direct child image/video handling */ .content > img, .content > video, .content > iframe, .content > svg { width: 100%; height: 100%; display: block; } /* Object fit variations */ .container[data-object-fit="contain"] > .content > img, .container[data-object-fit="contain"] > .content > video { object-fit: contain; } .container[data-object-fit="cover"] > .content > img, .container[data-object-fit="cover"] > .content > video { object-fit: cover; } .container[data-object-fit="fill"] > .content > img, .container[data-object-fit="fill"] > .content > video { object-fit: fill; } .container[data-object-fit="none"] > .content > img, .container[data-object-fit="none"] > .content > video { object-fit: none; } .container[data-object-fit="scale-down"] > .content > img, .container[data-object-fit="scale-down"] > .content > video { object-fit: scale-down; } /* Dark mode support */ @media (prefers-color-scheme: dark) { .container { --brutal-aspect-ratio-bg: var(--brutal-gray-800, #1f2937); --brutal-aspect-ratio-border: var(--brutal-white, #ffffff); } } /* High contrast mode */ @media (prefers-contrast: high) { .container { border-width: 3px; box-shadow: 5px 5px 0px var(--brutal-aspect-ratio-border); } } /* Reduced motion */ @media (prefers-reduced-motion: reduce) { .container { transition: none; } } /* Print styles */ @media print { .container { box-shadow: none; border: 1px solid black; } }