////
/// @group index
/// Outputs all component stylesheets, optionally choose to set includes or excludes to narrow down components that are output.
////

@forward "accordion" as accordion-*;
@forward "adaptive-spacing" as adaptive-spacing-*;
@forward "badge" as badge-*;
@forward "basic-hero" as basic-hero-*;
@forward "button" as button-*;
@forward "button-group" as button-group-*;
@forward "button-verbose" as button-verbose-*;
@forward "callout" as callout-*;
@forward "card" as card-*;
@forward "card-grid" as card-grid-*;
@forward "counter-list" as counter-list-*;
@forward "css-icon" as css-icon-*;
@forward "data-grid" as data-grid-*;
@forward "data-table" as data-table-*;
@forward "fill-context" as fill-context-*;
@forward "flipcard" as flipcard-*;
@forward "flipcard-grid" as flipcard-grid-*;
@forward "form-theme" as form-theme-*;
@forward "headline-label" as headline-label-*;
@forward "horizontal-rule" as horizontal-rule-*;
@forward "image-grid" as image-grid-*;
@forward "links" as links-*;
@forward "list-lines" as list-lines-*;
@forward "list-inline" as list-inline-*;
@forward "list-ordered" as list-ordered-*;
@forward "list-unordered" as list-unordered-*;
@forward "menu-stack" as menu-stack-*;
@forward "modal" as modal-*;
@forward "nav-strip" as nav-strip-*;
@forward "overlay-section" as overlay-section-*;
@forward "pager" as pager-*;
@forward "panel" as panel-*;
@forward "placeholder-block" as placeholder-block-*;
@forward "pull-quote" as pull-quote-*;
@forward "popover" as popover-*;
@forward "rail" as rail-*;
@forward "ratio-box" as ratio-box-*;
@forward "rule" as rule-*;
@forward "scroll-slider" as scroll-slider-*;
@forward "skip-link" as skip-link-*;
@forward "sticky-list" as sticky-list-*;
@forward "slider" as slider-*;
@forward "hero" as hero-*;
@forward "tabs" as tabs-*;
@forward "tag" as tag-*;
@forward "table-sticky" as table-sticky-*;
@forward "tile-grid" as tile-grid-*;
@forward "tile-button" as tile-button-*;
@forward "tile-grid-overlay" as tile-grid-overlay-*;
@forward "vignette" as vignette-*;
@forward "captioned-figure" as captioned-figure-*;
@forward "spoke-spinner" as spoke-spinner-*;
@forward "wysiwyg" as wysiwyg-*;

@use "sass:list";

@use "../utils";
@use "adaptive-spacing";
@use "accordion";
@use "badge";
@use "basic-hero";
@use "button";
@use "button-group";
@use "button-verbose";
@use "callout";
@use "card";
@use "card-grid";
@use "counter-list";
@use "css-icon";
@use "data-grid";
@use "data-table";
@use "fill-context";
@use "flipcard";
@use "flipcard-grid";
@use "form-theme";
@use "headline-label";
@use "horizontal-rule";
@use "image-grid";
@use "list-lines";
@use "list-inline";
@use "list-ordered";
@use "list-unordered";
@use "links";
@use "menu-stack";
@use "modal";
@use "nav-strip";
@use "overlay-section";
@use "pager";
@use "panel";
@use "placeholder-block";
@use "popover";
@use "pull-quote";
@use "rail";
@use "ratio-box";
@use "rule";
@use "scroll-slider";
@use "skip-link";
@use "sticky-list";
@use "slider";
@use "hero";
@use "tabs";
@use "tag";
@use "tile-grid";
@use "table-sticky";
@use "tile-button";
@use "tile-grid-overlay";
@use "vignette";
@use "captioned-figure";
@use "spoke-spinner";
@use "wysiwyg";

/// Default includes, all modules
/// @type List

$all-includes: (
  "accordion",
  "adaptive-spacing",
  "badge",
  "basic-hero",
  "button",
  "button-group",
  "button-verbose",
  "callout",
  "card",
  "card-grid",
  "counter-list",
  "css-icon",
  "data-grid",
  "data-table",
  "fill-context",
  "flipcard",
  "flipcard-grid",
  "form-theme",
  "headline-label",
  "horizontal-rule",
  "image-grid",
  "links",
  "list-lines",
  "list-inline",
  "list-ordered",
  "list-unordered",
  "menu-stack",
  "modal",
  "nav-strip",
  "overlay-section",
  "pager",
  "panel",
  "popover",
  "rail",
  "ratio-box",
  "rule",
  "scroll-slider",
  "skip-link",
  "sticky-list",
  "slider",
  "hero",
  "tabs",
  "tag",
  // "table-sticky", // Has to be included (for vue plugin)
  "tile-grid",
  "tile-button",
  "tile-grid-overlay",
  "placeholder-block",
  "pull-quote",
  "vignette",
  "captioned-figure",
  "spoke-spinner",
  "wysiwyg",
);

/// Current included modules (for output when using styles), defaults to all
/// @type List

$current-includes: $all-includes;

/// Change default includes (when user prints modules)
/// - This available as configuration so that it can be configured (to allow easily copying configuration)
/// @param {List} $includes List of modules by name to be included when styles are printed

@mixin set-includes($includes) {
  @include utils.require-list-contains($all-includes, $includes, "components.set-includes", true);
  $current-includes: $includes !global;
}

/// Exclude certain items from includes
/// @param {List} $excludes List of item names

@mixin set-excludes($excludes) {
  $current-includes: utils.list-without($current-includes, $excludes) !global;
}

/// Prints all Components styles
/// @name component-styles
/// @param {List} $includes [$all-includes] A list of components to include (defaults to all)
/// @example scss
///  @include ulu.component-styles();

@mixin styles($includes: $current-includes) {
  @include utils.file-header("components");

  @include utils.require-list-contains($all-includes, $includes, "components.$includes", true);
  
  @if (list.index($includes, "accordion")) {
    @include accordion.styles;
  }
  @if (list.index($includes, "adaptive-spacing")) {
    @include adaptive-spacing.styles;
  }
  @if (list.index($includes, "hero")) {
    @include hero.styles;
  }
  @if (list.index($includes, "button")) {
    @include button.styles;
  }
  @if (list.index($includes, "button-group")) {
    @include button-group.styles;
  }
  @if (list.index($includes, "button-verbose")) {
    @include button-verbose.styles;
  }
  @if (list.index($includes, "badge")) {
    @include badge.styles;
  }
  @if (list.index($includes, "basic-hero")) {
    @include basic-hero.styles;
  }
  @if (list.index($includes, "tag")) {
    @include tag.styles;
  }
  @if (list.index($includes, "callout")) {
    @include callout.styles;
  }
  @if (list.index($includes, "card")) {
    @include card.styles;
  }
  @if (list.index($includes, "card-grid")) {
    @include card-grid.styles;
  }
  @if (list.index($includes, "counter-list")) {
    @include counter-list.styles;
  }
  @if (list.index($includes, "css-icon")) {
    @include css-icon.styles;
  }
  @if (list.index($includes, "data-grid")) {
    @include data-grid.styles;
  }
  @if (list.index($includes, "data-table")) {
    @include data-table.styles;
  }
  @if (list.index($includes, "fill-context")) {
    @include fill-context.styles;
  }
  @if (list.index($includes, "flipcard")) {
    @include flipcard.styles;
  }
  @if (list.index($includes, "flipcard-grid")) {
    @include flipcard-grid.styles;
  }
  @if (list.index($includes, "form-theme")) {
    @include form-theme.styles;
  }
  @if (list.index($includes, "headline-label")) {
    @include headline-label.styles;
  }
  @if (list.index($includes, "horizontal-rule")) {
    @include horizontal-rule.styles;
  }
  @if (list.index($includes, "image-grid")) {
    @include image-grid.styles;
  }
  @if (list.index($includes, "links")) {
    @include links.styles;
  }
  @if (list.index($includes, "list-lines")) {
    @include list-lines.styles;
  }
  @if (list.index($includes, "list-inline")) {
    @include list-inline.styles;
  }
  @if (list.index($includes, "list-unordered")) {
    @include list-unordered.styles;
  }
  @if (list.index($includes, "list-ordered")) {
    @include list-ordered.styles;
  }
  @if (list.index($includes, "menu-stack")) {
    @include menu-stack.styles;
  }
  @if (list.index($includes, "modal")) {
    @include modal.styles;
  }
  @if (list.index($includes, "nav-strip")) {
    @include nav-strip.styles;
  }
  @if (list.index($includes, "overlay-section")) {
    @include overlay-section.styles;
  }
  @if (list.index($includes, "pager")) {
    @include pager.styles;
  }
  @if (list.index($includes, "panel")) {
    @include panel.styles;
  }
  @if (list.index($includes, "placeholder-block")) {
    @include placeholder-block.styles;
  }
  @if (list.index($includes, "popover")) {
    @include popover.styles;
  }
  @if (list.index($includes, "pull-quote")) {
    @include pull-quote.styles;
  }
  @if (list.index($includes, "rail")) {
    @include rail.styles;
  }
  @if (list.index($includes, "ratio-box")) {
    @include ratio-box.styles;
  }
  @if (list.index($includes, "rule")) {
    @include rule.styles;
  }
  @if (list.index($includes, "scroll-slider")) {
    @include scroll-slider.styles;
  }
  @if (list.index($includes, "skip-link")) {
    @include skip-link.styles;
  }
  @if (list.index($includes, "sticky-list")) {
    @include sticky-list.styles;
  }
  @if (list.index($includes, "slider")) {
    @include slider.styles;
  }
  @if (list.index($includes, "tabs")) {
    @include tabs.styles;
  }
  @if (list.index($includes, "table-sticky")) {
    @include table-sticky.styles;
  }
  @if (list.index($includes, "tile-grid")) {
    @include tile-grid.styles;
  }
  @if (list.index($includes, "tile-button")) {
    @include tile-button.styles;
  }
  @if (list.index($includes, "tile-grid-overlay")) {
    @include tile-grid-overlay.styles;
  }
  @if (list.index($includes, "vignette")) {
    @include vignette.styles;
  }
  @if (list.index($includes, "captioned-figure")) {
    @include captioned-figure.styles;
  }
  @if (list.index($includes, "spoke-spinner")) {
    @include spoke-spinner.styles;
  }
  @if (list.index($includes, "wysiwyg")) {
    @include wysiwyg.styles;
  }
}