// Core configuration maps and variables for the Beathers Design System.

// Defines CSS properties for color utilities.
$colorsPropertiesMap: (
  null: color,
  bg: background-color,
  border: border-color,
  fill: fill,
  stroke: stroke,
  text-stroke: -webkit-text-stroke-color,
);

// Defines pseudo-classes for color variants.
$colorsPseudoMap: (
  'placeholder': '::placeholder',
  'hover': ':hover',
  'focus': ':focus',
);

// Defines available font weights.
$fontWeightsValues: (
  'thin': 100,
  'extra-light': 200,
  'light': 300,
  'regular': 400,
  'medium': 500,
  'semibold': 600,
  'bold': 700,
  'extra-bold': 800,
  'black': 900,
);

// Defines text transformation and decoration options.
$fontShapes: (
  'transform': (
    uppercase,
    lowercase,
    capitalize,
  ),
  'decoration': (
    underline,
    line-through,
  ),
  'styles': (
    wavy,
    double,
    dotted,
    dashed,
  ),
);

// Defines text alignment options.
$aligns: (left, start, right, end, justify, center);

// Defines flexbox properties.
$flexProperties: (
  flex-wrap: wrap nowrap,
  flex-direction: row row-reverse column column-reverse,
);

// Defines display utility options.
$displays: (inline, block, inline-block, flex, inline-flex, inline-grid, table, table-cell, none);

// Defines overflow directions.
$overflowsDirections: (null, 'x', 'y');
// Defines overflow behaviors.
$overflows: (visible, hidden, auto, scroll);
// Defines object-fit property values.
$objectsFits: (cover, fill, contain, none);

// Defines available cursor types.
$cursors: (
  alias,
  auto,
  cell,
  context-menu,
  copy,
  crosshair,
  default,
  grab,
  grabbing,
  help,
  move,
  no-drop,
  none,
  not-allowed,
  pointer,
  progress,
  col-resize,
  row-resize,
  text,
  wait,
  zoom-in,
  zoom-out
);

// Defines shadow presets.
$shadows: (
  'light': (
    rgba(0, 0, 0, 0.25) 0px 0.0625em 0.0625em,
    rgba(0, 0, 0, 0.25) 0px 0.125em 0.5em,
    rgba(255, 255, 255, 0.1) 0px 0px 0px 1px inset,
  ),
  'soft': (
    rgba(0, 0, 0, 0.1) 0px 20px 25px -5px,
    rgba(0, 0, 0, 0.04) 0px 10px 10px -5px,
  ),
  'medium': (
    rgba(0, 0, 0, 0.1) 0px 10px 50px,
  ),
  'solid': (
    rgba(0, 0, 0, 0.2) 0px 12px 28px 0px,
    rgba(0, 0, 0, 0.1) 0px 2px 4px 0px,
    rgba(255, 255, 255, 0.05) 0px 0px 0px 1px inset,
  ),
  'floating': (
    rgba(50, 50, 93, 0.25) 0px 13px 27px -5px,
    rgba(0, 0, 0, 0.3) 0px 8px 16px -8px,
  ),
  'flat': (
    rgba(0, 0, 0, 0.15) 0px 3px 3px 0px,
  ),
) !default;

// Defines utility classes for clearing properties.
$clearanceOptions: (
  no-bg: (
    background: unset,
    background-color: unset,
  ),
  no-border: (
    border: unset,
  ),
  no-radius: (
    border-radius: unset,
  ),
  no-events: (
    pointer-events: none,
  ),
  no-position: (
    position: unset,
  ),
);

// Defines available position values.
$positions: static, relative, fixed, absolute, sticky;

// Defines inset positioning options.
$insetPositions: null, inline, block;

// Defines the step for spacing utilities.
$spacesStep: 5;

// Defines properties for width and height utilities.
$spacesDirections: (
  'w': width,
  'min#{\:}w': min-width,
  'max#{\:}w': max-width,
  'h': height,
  'min#{\:}h': min-height,
  'max#{\:}h': max-height,
);

// Defines properties for padding, margin and gap utilities.
$gutters: (
  p: padding,
  px: padding-inline,
  py: padding-block,
  ps: padding-inline-start,
  pe: padding-inline-end,
  pt: padding-block-start,
  pb: padding-block-end,
  m: margin,
  mx: margin-inline,
  my: margin-block,
  ms: margin-inline-start,
  me: margin-inline-end,
  mt: margin-block-start,
  mb: margin-block-end,
  g: gap,
  gx: column-gap,
  gy: row-gap,
);

// Defines border direction properties.
$bordersDirections: (
  null: border,
  'top': border-block-start,
  'bottom': border-block-end,
  'start': border-inline-start,
  'end': border-inline-end,
);

// Defines border-radius direction properties.
$radiusDirection: (
  null: (
    border-radius,
  ),
  'top': (
    border-start-start-radius,
    border-start-end-radius,
  ),
  'bottom': (
    border-end-start-radius,
    border-end-end-radius,
  ),
  'start': (
    border-start-start-radius,
    border-end-start-radius,
  ),
  'end': (
    border-start-end-radius,
    border-end-end-radius,
  ),
  'top-start': (
    border-start-start-radius,
  ),
  'top-end': (
    border-start-end-radius,
  ),
  'bottom-start': (
    border-end-start-radius,
  ),
  'bottom-end': (
    border-end-end-radius,
  ),
);

$justify: (
  justify: (
    content: (
      start,
      center,
      end,
      between,
      around,
      evenly,
    ),
    self: (
      auto,
      center,
      stretch,
    ),
  ),
  align: (
    content: (
      start,
      center,
      end,
      around,
      between,
      stretch,
    ),
    items: (
      start,
      center,
      end,
      stretch,
      baseline,
    ),
    self: (
      auto,
      start,
      center,
      end,
      stretch,
      baseline,
    ),
  ),
);
