@use "sass:map"; @use "tokens"; /// PC 이상(>= 768px). 미디어 쿼리 조건부는 `var()`를 해석하지 못해 브레이크포인트만 /// 컴파일타임 값이고, 그래서 이 믹스인 경유가 강제된다. @mixin pc { @media (min-width: tokens.$breakpoint-pc) { @content; } } /// PC 미만. `pc`와 경계가 겹치지 않도록 0.02px을 뺀다. @mixin mobile { @media (max-width: tokens.$breakpoint-pc - 0.02px) { @content; } } /// 이름 붙은 브레이크포인트 이상에서 적용 — `xsm`(768) · `sm`(1024) · `default`(1440). /// 같은 이름의 `grid-wrap-*`이 그 폭의 컨테이너다. @mixin from($name) { @if not map.has-key(tokens.$breakpoints, $name) { @error "[@fox] 알 수 없는 브레이크포인트: `#{$name}` — 사용 가능한 값: #{map.keys(tokens.$breakpoints)}"; } @media (min-width: map.get(tokens.$breakpoints, $name)) { @content; } }