summaryrefslogtreecommitdiff
path: root/scss/values/spacing/_spacing.scss
diff options
context:
space:
mode:
Diffstat (limited to 'scss/values/spacing/_spacing.scss')
-rw-r--r--scss/values/spacing/_spacing.scss32
1 files changed, 32 insertions, 0 deletions
diff --git a/scss/values/spacing/_spacing.scss b/scss/values/spacing/_spacing.scss
new file mode 100644
index 0000000..4fd94e8
--- /dev/null
+++ b/scss/values/spacing/_spacing.scss
@@ -0,0 +1,32 @@
+@use 'sass:list';
+@use 'sass:map';
+
+@use 'constants';
+@use 'grid';
+
+/**
+ * - size: sm, md, lg
+ * - direction: inline, block
+ */
+@function spacing($direction, $size, $breakpoint: initial) {
+ $factor: map.get(
+ map.get(constants.$spacing-factor, $direction),
+ $size
+ );
+
+ @if list.index([xxl xl lg md sm], ($breakpoint)) {
+ @return grid.er-to-absolute($factor, $breakpoint);
+ }
+ @else if $breakpoint == xs {
+ @return clamp(
+ spacing($direction, $size, initial),
+ grid.er-to-absolute($factor, xs),
+ spacing($direction, $size, sm)
+ );
+ }
+ @else if $breakpoint == initial {
+ @return calc($factor * 0.0625rem);
+ }
+ @error "Invalid breakpoint: #{$breakpoint}";
+}
+