{"version":3,"file":"HeroComponent.420ff4c1.js","sources":["../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/Accordion/AccordionItem.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/Accordion/Accordion.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/ActiveFiltersBar.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/helpers.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/youtubeIframeApi.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/performance.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/FormFields/Checkbox.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/atoms/Portal.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/Drawer.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/FormFields/CheckboxGroup.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/FormFields/Radio.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/Filters.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/HeroArticle.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/HeroGeneric.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/HeroHome.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/HeroPrimary.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/YoutubeIframe.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/Video.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/HeroSecondary.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/utilities/pagination.js","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/Pagination/PageSelector.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/Pagination/PageSelectorDropdown.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/molecules/Pagination/Pagination.svelte","../../../../../../node_modules/@ObamaFoundation/of-design-system/dist/organisms/Section.svelte","../../../../../../src/lib/utilities/tags.js","../../../../../../src/lib/assets/logo.png","../../../../../../src/lib/utilities/seo.js","../../../../../../src/lib/components/SEO.svelte","../../../../../../src/lib/utilities/components/embeds.js","../../../../../../src/lib/utilities/contentTypes/video.js","../../../../../../src/lib/utilities/contentTypes/hero.js","../../../../../../src/lib/utilities/careers.js","../../../../../../src/lib/components/FilterList.svelte","../../../../../../src/lib/components/Hero.svelte","../../../../../../src/lib/contentTypes/HeroComponent.svelte"],"sourcesContent":["<script>\n  // @ts-check\n  import { onMount, tick } from \"svelte\";\n  import { v4 as uuid } from \"@lukeed/uuid\";\n  import Icon from \"../../atoms/Icon.svelte\";\n  import DynamicHeading from \"../../atoms/DynamicHeading.svelte\";\n  import DynamicHeadingContext from \"../../atoms/DynamicHeadingContext.svelte\";\n\n  /** Primarily used for testing\n   * @type {string}\n   * */\n  export let id = undefined;\n\n  /** label - accordion header label\n   *  @type {string}\n   * */\n  export let label;\n\n  /** subtitle - accordion header subtitle\n   *  @type {string}\n   * */\n  export let subtitle;\n\n  /** The class to be applied to each accordion item\n   *  @type {string}\n   * */\n  export let itemContainerClass = \"\";\n\n  /** The class to be applied to the heading of the accordion item\n   *  @type {string}\n   * */\n  export let itemHeadingClass = \"\";\n\n  /** The class to be applied to the body of the slot item\n   *  @type {string}\n   * */\n  export let itemBodySlotClass = \"\";\n\n  /** Determines if the item is active or not\n   *  @type {boolean}\n   * */\n  export let active = false;\n\n  /**\n   * A unique key for the accordion ids\n   *  @type {string}\n   * */\n  let key = uuid();\n\n  /**\n   * A reactive variable that tracks whether the accordion item is open or closed.\n   * It is initially set to the value of the `active` prop.\n   */\n  $: isOpen = active;\n\n  const visibleClass = \"overflow-visible visible\";\n  const hiddenClass = \"overflow-hidden invisible\";\n\n  let overflowClass = hiddenClass;\n\n  /**\n   * Handles the opening and closing of the accordion item.\n   * It sets `isOpen` to its opposite value, and updates `overflowClass` to start the closing animation.\n   */\n  const handleToggle = () => {\n    overflowClass = \"overflow-hidden\";\n    isOpen = !isOpen;\n  };\n\n  onMount(() => {\n    if (isOpen) {\n      overflowClass = visibleClass;\n    } else {\n      overflowClass = hiddenClass;\n    }\n  });\n\n  /**\n   * Handles the transition end event for collapsing the accordion item.\n   * If the item is open, it waits for the next tick and sets the overflow class to visible.\n   * If the item is closed, it sets the overflow class to hidden.\n   */\n  const collapseTransitionEnd = async () => {\n    if (isOpen) {\n      await tick();\n      overflowClass = visibleClass;\n    } else {\n      overflowClass = hiddenClass;\n    }\n  };\n\n  $: iconAnimationClass = isOpen && \"-rotate-180\";\n  $: contentAnimationClass = isOpen ? \"grid-rows-[1fr]\" : \"grid-rows-[0fr]\";\n  $: contentOpacityClass = isOpen ? \"opacity-[1]\" : \"opacity-[0]\";\n  $: contentItemAnimationClass = overflowClass;\n</script>\n\n<DynamicHeadingContext>\n  <div\n    {id}\n    role=\"group\"\n    class=\"relative w-full border-t-thin border-black py-6 lg:py-8 xl:py-10 {itemContainerClass}\"\n  >\n    <button\n      aria-controls={`accordion-text-${key}`}\n      aria-expanded={isOpen}\n      class=\"group w-full outline-offset-2 outline-black focus-visible:outline-dashed {itemHeadingClass}\"\n      id={`accordion-title-${key}`}\n      on:click={handleToggle}\n      type=\"button\"\n    >\n      <div class=\"flex flex-row items-center\">\n        <DynamicHeading\n          class=\"heading-xs w-full text-left text-black group-hover:text-cobalt-blue group-focus-visible:text-cobalt-blue\"\n        >\n          {label}\n        </DynamicHeading>\n        <Icon\n          iconClass=\"w-[17px] h-[17px] group-hover:text-cobalt-blue transition-all transform duration-[300ms] ease-accordion-ease-out {iconAnimationClass}\"\n          name=\"caretDown\"\n        />\n      </div>\n      {#if subtitle}\n        <p class=\"mt-4 text-left\">{subtitle}</p>\n      {/if}\n    </button>\n\n    <div\n      id={`accordion-text-${key}`}\n      aria-labelledby={`accordion-title-${key}`}\n      class=\"grid transition-all duration-[300ms] ease-accordion-ease-out {contentAnimationClass} {contentItemAnimationClass}\"\n      on:transitionend={collapseTransitionEnd}\n      aria-hidden={!isOpen}\n    >\n      <div\n        class=\"body-sm transition-all delay-[150ms] duration-[300ms] {contentItemAnimationClass} {contentOpacityClass}\"\n      >\n        <div class=\"pt-6 text-black lg:pt-7 xl:pt-8 {itemBodySlotClass}\">\n          <slot />\n        </div>\n      </div>\n    </div>\n  </div>\n</DynamicHeadingContext>\n","<script>\n  // @ts-check\n  import { createEventDispatcher } from \"svelte\";\n  import AccordionItem from \"./AccordionItem.svelte\";\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  /** @type { string } */\n  let className = \"\";\n  export { className as class };\n\n  /**\n   * @type {import('./AccordionTypes').AccordionItemListType[]} props - The component props.\n   */\n  export let items = [];\n\n  /** The class to be applied to the each accordion item\n   *  @type {string}\n   * */\n  export let itemContainerClass = \"\";\n\n  /** The class to be applied to the heading of the accordion item\n   *  @type {string}\n   * */\n  export let itemHeadingClass = \"\";\n\n  /** The class to be applied to the body of the slot item\n   *  @type {string}\n   * */\n  export let itemBodySlotClass = \"\";\n\n  const dispatch = createEventDispatcher();\n\n  /**\n   * Dispatches a custom event when a checkbox in the accordion item is selected.\n   * The event detail contains the value of the selected checkbox.\n   *\n   * @param {CustomEvent} e - The event object.\n   */\n  const onCheckBoxSelectionGroup = (e) => {\n    items = items.map((item) => {\n      if (e.detail.name === item.headline) {\n        item.bodyProps.options = e.detail.options;\n      }\n      return item;\n    });\n\n    dispatch(\"checkBoxSelectionGroup\", {\n      items\n    });\n  };\n</script>\n\n<div {id} class={className}>\n  {#each items as item}\n    <AccordionItem\n      label={item.headline}\n      subtitle={item.subtitle}\n      active={item.active}\n      {itemHeadingClass}\n      {itemContainerClass}\n      {itemBodySlotClass}\n    >\n      {#if typeof item.body === \"string\"}\n        <div>{item.body}</div>\n      {:else if item.bodyProps}\n        <svelte:component\n          this={item.body}\n          {...item.bodyProps}\n          on:checkBoxSelectionGroup={(e) => onCheckBoxSelectionGroup(e)}\n        />\n      {/if}\n    </AccordionItem>\n  {/each}\n</div>\n","<script context=\"module\">\n  /**\n   * @typedef {Object} FilterItem\n   * @property {string} id\n   * @property {string} label\n   * @property {boolean} [isChecked]\n   */\n</script>\n\n<script>\n  import Button from \"../atoms/Button.svelte\";\n  import Icon from \"../atoms/Icon.svelte\";\n  import { createEventDispatcher } from \"svelte\";\n  const dispatch = createEventDispatcher();\n\n  /**\n   * The filter items in the hero section\n   * @type {FilterItem[]}\n   */\n  export let filterItems = [];\n\n  function handleFilterButtonClick() {\n    dispatch(\"toggleFilterList\");\n  }\n\n  function handleOptionButtonClick(filterItemId) {\n    dispatch(\"deselectFilterItem\", {\n      filterItemId\n    });\n  }\n</script>\n\n<div class=\"flex flex-wrap gap-x-2 gap-y-2 pt-7.5 lg:pt-12.5\">\n  <Button\n    id=\"show-filters\"\n    on:click={handleFilterButtonClick}\n    variant=\"filled\"\n    label=\"Filter\"\n    theme=\"white\"\n    iconAlignment=\"trailing\"\n    iconName=\"filter\"\n  >\n    <Icon slot=\"icon\" name=\"filter\" />\n  </Button>\n  {#each filterItems as filterItem}\n    <Button\n      id={`remove-${filterItem.id}`}\n      on:click={handleOptionButtonClick(filterItem.id)}\n      variant=\"outline\"\n      label={filterItem.label}\n      theme=\"white\"\n      iconAlignment=\"trailing\"\n      iconName=\"close\"\n    >\n      <Icon slot=\"icon\" name=\"close\" />\n    </Button>\n  {/each}\n</div>\n","export function clickOutside(element, callbackFunction) {\n  function onClick(event) {\n    if (!element.contains(event.target)) {\n      callbackFunction(event);\n    }\n  }\n\n  document.body.addEventListener(\"click\", onClick);\n\n  return {\n    update(newCallbackFunction) {\n      callbackFunction = newCallbackFunction;\n    },\n    destroy() {\n      document.body.removeEventListener(\"click\", onClick);\n    }\n  };\n}\n","export const extractYoutubeVideoId = (url) => {\n  if (!url) {\n    return undefined;\n  }\n\n  const youtubeRegex =\n    /* eslint-disable-next-line */\n    /(?:https?:\\/\\/)?(?:www\\.)?youtu\\.?be(?:\\.com)?\\/?.*(?:watch|embed)?(?:.*v=|v\\/|\\/)([\\w\\-_]+)\\&?/;\n\n  const found = url.match(youtubeRegex);\n\n  return found ? found[1] : undefined;\n};\n","/**\n * Creates a debounced function that delays invoking `func` until after `wait` milliseconds have elapsed\n * since the last time the debounced function was invoked.\n *\n * @param {Function} func - The function to debounce.\n * @param {number} wait - The number of milliseconds to delay.\n * @param {boolean=} immediate - Specify invoking on the leading edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n */\nexport const debounce = (func, wait, immediate) => {\n  let timeout;\n  return function (...args) {\n    let context = this;\n    clearTimeout(timeout);\n    if (immediate && !timeout) {\n      func.apply(context, args);\n    }\n    timeout = setTimeout(function () {\n      timeout = null;\n      if (!immediate) {\n        func.apply(context, args);\n      }\n    }, wait);\n  };\n};\n","<script>\n  // @ts-check\n  import { createEventDispatcher } from \"svelte\";\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  /** The name for the checkbox\n   * @type {string} */\n  export let name = undefined;\n\n  /** The label for the checkbox\n   * @type {string} */\n  export let label = undefined;\n\n  /** The value for the checkbox\n   * @type {string} */\n  export let value = undefined;\n\n  /** The error message to display\n   * @type {string} */\n  export let errorMessage = undefined;\n\n  /** Whether the checkbox is checked or not\n   * @type {boolean} */\n  export let isChecked = false;\n\n  /** Whether the checkbox is disabled or not\n   * @type {boolean} */\n  export let disabled = false;\n\n  /** Indicates whether the input field is required or not.\n   * @type {boolean} */\n  export let required = false;\n\n  /**\n   * An optional CSS class to be applied to the component.\n   * @type {string}\n   */\n  export let componentClass = \"\";\n\n  $: checked = isChecked;\n\n  const dispatch = createEventDispatcher();\n  function toggleCheck() {\n    checked = !checked;\n\n    if (isInvalid) {\n      isInvalid = false;\n    }\n    dispatch(\"change\", { value: checked, id, label });\n  }\n\n  const inputBeforeClass =\n    \"before:absolute before:top-[50%] before:left-[50%] before:-translate-y-1/2 before:-translate-x-1/2 not:disabled:hover:before:top-[1px] not:disabled:hover:before:left-[1px] before:h-[0.625rem] before:w-[0.625rem] before:bg-black before:rounded-full before:opacity-[0] before:transition-opacity\";\n\n  let labelFocusClass = \"\";\n\n  /** @type {boolean} */\n  export let isInvalid = false;\n</script>\n\n<div {id} class={componentClass}>\n  <label class=\"inline-block {!disabled ? 'cursor-pointer' : ''} {labelFocusClass}\">\n    <div class=\"relative flex items-center\">\n      <input\n        id={`checkbox-${id}`}\n        {name}\n        type=\"checkbox\"\n        aria-invalid={isInvalid}\n        class=\"{!disabled\n          ? 'cursor-pointer'\n          : ''} relative h-6 w-6 appearance-none rounded-none bg-transparent {inputBeforeClass} not:disabled:hover:border-[2px] border-thin border-black outline-none checked:before:opacity-[10]\"\n        value={value || label}\n        {checked}\n        {disabled}\n        {required}\n        on:focusin={() =>\n          (labelFocusClass = \"outline-black outline-2 outline-offset-4 outline-dashed\")}\n        on:focusout={() => (labelFocusClass = \"\")}\n        on:change={toggleCheck}\n        on:invalid={(event) => {\n          event.preventDefault();\n          isInvalid = true;\n          dispatch(\"invalid\", { id });\n        }}\n      />\n      <span class=\"label ml-3\">\n        {#if $$slots.default}\n          <slot />\n        {:else}\n          {label}\n        {/if}\n      </span>\n    </div>\n  </label>\n  {#if isInvalid && errorMessage}\n    <div class=\"label absolute mt-1 text-system-red\">{errorMessage}</div>\n  {/if}\n</div>\n","<script>\n  /** Primarily used for testing\n   * @type {string} */\n  export let id;\n\n  /** Indicates whether the component should render.\n   * @type {boolean} */\n  export let shouldRender = false;\n\n  let ref;\n  $: ref && document.body.appendChild(ref);\n</script>\n\n{#if shouldRender}\n  <div {id} bind:this={ref}>\n    <slot />\n  </div>\n{/if}\n","<script>\n  // @ts-check\n  import { afterUpdate, createEventDispatcher, tick } from \"svelte\";\n  import { fade, fly } from \"svelte/transition\";\n  import { trapFocus } from \"../utilities/accessibility\";\n  import { clearBodyLocks, lock } from \"tua-body-scroll-lock\";\n  import Portal from \"../atoms/Portal.svelte\";\n  import Icon from \"../atoms/Icon.svelte\";\n  import Rule from \"../atoms/Rule.svelte\";\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  /** Indicates whether the drawer is open or closed.\n   * @type {boolean} */\n  export let open = false;\n\n  const dispatch = createEventDispatcher();\n\n  $: isOpen = open;\n\n  const closeDrawer = () => {\n    dispatch(\"drawerIsOpen\", false);\n  };\n\n  const handleWindowKeyDown = (event) => {\n    if (event.key === \"Escape\") {\n      closeDrawer();\n    }\n  };\n\n  const animationEnd = () => {\n    dispatch(\"animationEnd\");\n  };\n\n  let closeButtonRef = undefined;\n  let containerRef = undefined;\n\n  afterUpdate(async () => {\n    if (containerRef && isOpen) {\n      lock(containerRef);\n    } else {\n      await tick();\n      clearBodyLocks();\n    }\n  });\n</script>\n\n<svelte:window on:keydown={handleWindowKeyDown} />\n<Portal shouldRender={isOpen} {id}>\n  <div\n    role=\"dialog\"\n    aria-modal=\"true\"\n    class=\"h-[100vh]\"\n    use:trapFocus={{\n      shouldTrapFocus: true,\n      triggerElementQuery: \"\"\n    }}\n  >\n    <div class=\"relative\">\n      <div\n        aria-label=\"Close filter\"\n        role=\"button\"\n        tabindex=\"0\"\n        class=\"fixed left-0 top-0 z-[--stack-level-drawer-background] h-full w-full bg-dark-grey opacity-[0.5]\"\n        transition:fade={{ duration: 300 }}\n        on:click={closeDrawer}\n        on:keydown={closeDrawer}\n      />\n      <div\n        class=\"fixed left-0 top-0 z-[--stack-level-drawer] flex h-full w-[300px] flex-col items-center overflow-y-auto bg-light-grey p-7.5 text-white md:w-[304px] lg:w-[452px] lg:p-15 xl:w-[528px]\"\n        transition:fly={{ x: \"-100%\" }}\n        on:introend={() => closeButtonRef?.focus()}\n        on:outroend={animationEnd}\n      >\n        <div class=\"relative h-full w-full\">\n          <div class=\"flex w-full justify-between pb-5\">\n            <slot name=\"header\" />\n            <button\n              id=\"close-filter-panel\"\n              bind:this={closeButtonRef}\n              class=\"text-black focus:outline-dashed focus:outline-offset-2 focus-visible:outline-black\"\n              on:click={closeDrawer}\n            >\n              <Icon name=\"close\" />\n            </button>\n          </div>\n          <Rule type=\"thick\" theme=\"white\" class=\"mb-12.5 md:mb-15\" />\n          <div class=\"-mx-3 max-h-[calc(100%-180px)] overflow-y-auto px-3\" bind:this={containerRef}>\n            <slot name=\"filters\" />\n          </div>\n          <div class=\"lef-0 absolute bottom-0 w-full bg-light-grey pt-5\">\n            <slot name=\"button\" />\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</Portal>\n","<script>\n  // @ts-check\n  import { createEventDispatcher } from \"svelte\";\n  import Checkbox from \"./Checkbox.svelte\";\n\n  /** Primarily used for testing\n   * @type {string | undefined} */\n  export let id = undefined;\n\n  /** The name of the checkbox group\n   * @type {string} */\n  export let name;\n\n  /**\n   * The label for the entire checkbox group. Used only when the checkbox group is a part of a form.\n   * @type {string}\n   */\n  export let label;\n\n  /** The list of checkboxes to display\n   * @type {Array<{label: string; id: string; isChecked: boolean}>} */\n  export let options;\n\n  /** Indicates whether the input field is required or not.\n   * @type {boolean} */\n  export let required = false;\n\n  /** The error message to display\n   * @type {string | undefined} */\n  export let errorMessage = \"\";\n\n  export let isInvalid = false;\n\n  /**\n   * An optional CSS class to be applied to the component.\n   * @type {string}\n   */\n  export let componentClass = \"\";\n\n  const dispatch = createEventDispatcher();\n  function handleChange(checkbox) {\n    const { detail } = checkbox;\n\n    options = options.map((option) => {\n      if (option.id === detail.id) {\n        option.isChecked = detail.value;\n\n        if (detail.value) {\n          isInvalid = false;\n        }\n      }\n      return option;\n    });\n\n    if (required) {\n      isInvalid = options.every((option) => !option.isChecked);\n    }\n\n    dispatch(\"checkBoxSelectionGroup\", { options, name });\n  }\n</script>\n\n<div\n  {id}\n  class={$$props.type === \"multi-select\"\n    ? \"mb-9 first-of-type:mt-9 lg:mb-10 first-of-type:lg:mt-10\"\n    : \"\"}\n>\n  <div\n    class=\"flex w-full flex-col gap-6 {$$props.type === 'multi-select'\n      ? 'md:gap-[30px] lg:gap-9'\n      : ''} {componentClass}\"\n    id={name}\n  >\n    {#if label}\n      <p class=\"font-gotham-condensed text-body-m-xlarge font-bold\">{label}</p>\n    {/if}\n\n    {#each options as option}\n      <Checkbox {...option} on:change={handleChange} />\n    {/each}\n  </div>\n\n  <div id=\"{id}-error\" class=\"label mt-1 text-system-red\" role=\"alert\">\n    {#if isInvalid && errorMessage}\n      {errorMessage}\n    {:else}\n      &nbsp <!-- prevent layout shift -->\n    {/if}\n  </div>\n</div>\n","<script>\n  // @ts-check\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  /** The list of radio buttons to display\n   * @type {Array<{id: string; label: string; value: string}>} */\n  export let options;\n\n  /** The name of the radio button group\n   * @type {string} */\n  export let name;\n\n  /** The value of the selected radio button\n   * @type {string} */\n  export let selection = options[0].value;\n\n  /** The function to call when the selected radio button changes\n   * @type {import(\"svelte/elements\").ChangeEventHandler<HTMLInputElement>} */\n  export let onChange;\n\n  /**\n   * An optional CSS class to be applied to the component.\n   * @type {string}\n   */\n  export let componentClass = \"\";\n\n  const inputBeforeClass =\n    \"before:absolute before:top-1/2 before:left-1/2 before:-translate-x-1/2 before:-translate-y-1/2 before:h-[10px] before:w-[10px] before:bg-black before:rounded-full before:transition-opacity\";\n</script>\n\n<div {id} role=\"radiogroup\" class=\"flex w-full flex-col gap-3 {componentClass}\">\n  {#each options as { id, value, label }, _ (`${name}-${label}-${value}`)}\n    <label\n      class=\"inline-block cursor-pointer focus-within:outline-dashed focus-within:outline-2 focus-within:outline-offset-4 focus-within:outline-black\"\n    >\n      <div class=\"flex items-center\">\n        <input\n          {id}\n          {value}\n          type=\"radio\"\n          {name}\n          checked={selection === value}\n          on:change={onChange}\n          class=\"radius-0 relative h-6 w-6 shrink-0 cursor-pointer appearance-none bg-transparent {inputBeforeClass} {selection ===\n          value\n            ? 'before:opacity-[1]'\n            : 'before:opacity-[0]'} rounded-full border-thin border-black outline-none hover:border-[2px]\"\n        />\n        <span class=\"label ml-3\">{label}</span>\n      </div>\n    </label>\n  {/each}\n</div>\n","<script>\n  // @ts-check\n  import { createEventDispatcher } from \"svelte\";\n  import Accordion from \"../molecules/Accordion/Accordion.svelte\";\n  import CheckboxGroup from \"../molecules/FormFields/CheckboxGroup.svelte\";\n  import Radio from \"../molecules/FormFields/Radio.svelte\";\n\n  /** @typedef {import(\"svelte\").ComponentProps<Radio | CheckboxGroup>} FormItemProps */\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  export let componentName = undefined;\n\n  let component = componentName === \"checkbox\" ? CheckboxGroup : Radio;\n\n  /** @typedef {Object} FiltersListType\n   * @property {string} headline - Radio or Checkbox header label\n   * @property {FormItemProps} bodyProps - Radio or Checkbox body component\n   * @property {boolean} active - accordion active state\n   */\n  /** @type {FiltersListType[]} */\n  export let filters;\n\n  /** The class to be applied to the each accordion item\n   *  @type {string}\n   * */\n  export let itemContainerClass = \"\";\n\n  /** The class to be applied to the body of the slot item\n   *  @type {string}\n   * */\n  export let itemBodySlotClass = \"\";\n\n  $: items = filters.map((item) => {\n    return {\n      ...item,\n      body: component,\n      bodyProps: item.bodyProps\n    };\n  });\n\n  const dispatch = createEventDispatcher();\n</script>\n\n<Accordion\n  {id}\n  {items}\n  {itemContainerClass}\n  {itemBodySlotClass}\n  on:checkBoxSelectionGroup={(e) => {\n    dispatch(\"checkBoxSelectionGroup\", {\n      items: e.detail.items\n    });\n  }}\n/>\n","<script>\n  import Grid from \"../atoms/Grid.svelte\";\n  import GridContainer from \"../atoms/GridContainer.svelte\";\n  import Image from \"../atoms/Image.svelte\";\n  import { getTheme } from \"../utilities/themes\";\n  // eslint-disable-next-line no-unused-vars\n  import * as Types from \"../types/shared\";\n  import Rule from \"../atoms/Rule.svelte\";\n  import Tags from \"../atoms/Tags.svelte\";\n  import DynamicHeading from \"../atoms/DynamicHeading.svelte\";\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  /**\n   * Additional classes which apply to the container\n   * @type { string }\n   * */\n  let className = \"\";\n  export { className as class };\n\n  /**\n   * The title of the hero section\n   * @type {string}\n   */\n  export let title;\n  /**\n   * The subtitle of the hero section\n   * @type {string}\n   */\n  export let subtitle = null;\n  /**\n   * The eyebrow in the hero section.\n   * @type {import(\"../atoms/Tags.svelte\").Tag[]}\n   */\n  export let tags = null;\n  /**\n   * The featured image in the hero section\n   * @type {Types.Image}\n   */\n  export let featuredImage = null;\n  /**\n   * The theme of the hero section\n   * @type {import($lib/utilities/theme.js').ThemeName} ThemeName\n   */\n  export let theme = \"white\";\n  $: currentTheme = getTheme(theme) || {};\n\n  /**\n   * The image variant of the hero section\n   * @type {keyof typeof imageAspectRatios}\n   */\n  export let imageVariant = null;\n\n  let hasHalfWidthImage = featuredImage && imageVariant !== \"landscape\";\n\n  const contentClass = hasHalfWidthImage\n    ? \"md:col-span-6 md:flex md:flex-col md:h-full md:min-h-[450px]\"\n    : \"\";\n  const imageClass = hasHalfWidthImage ? \"md:col-span-6\" : \"md:mt-7 lg:mt-10\";\n  const imageAspectRatios = {\n    square: \"aspect-1/1\",\n    portrait: \"aspect-3/4\",\n    landscape: \"aspect-3/2\"\n  };\n</script>\n\n<GridContainer\n  {id}\n  containerElement=\"section\"\n  containerClass=\"{currentTheme.backgroundColor} {currentTheme.textColor} pt-15 pb-7.5 md:pt-20 lg:pb-15 xl:pt-25\"\n>\n  <Grid gridClass={className}>\n    <div class=\"col-full-width {contentClass}\">\n      <div class=\"md:grow\">\n        <Rule type=\"thick\" {theme} />\n        <div class=\"md:max-w-[600px] lg:max-w-[1000px] xl:max-w-[1400px]\">\n          <!-- Since Heroes are generally H1, we don't wrap with DynamicHeadingContext \n          to bump the heading level -->\n          <DynamicHeading class=\"heading-lg mt-4 lg:mt-6\">{title}</DynamicHeading>\n          {#if subtitle}\n            <p class=\"body-md mt-4 md:mt-7.5 md:max-w-[530px] lg:max-w-[700px] xl:max-w-[940px]\">\n              {subtitle}\n            </p>\n          {/if}\n        </div>\n      </div>\n      {#if tags}\n        <Tags\n          {theme}\n          {tags}\n          class=\"heading-xs mt-25 gap-x-5 gap-y-2 md:mt-36 \"\n          bulletClass=\"after:{currentTheme.ruleColor}\"\n        />\n      {/if}\n    </div>\n    {#if featuredImage}\n      <div class=\"col-full-width max-md:mt-7 {imageClass}\">\n        <Image {...featuredImage} aspectRatioClasses={imageAspectRatios[imageVariant]} />\n      </div>\n    {/if}\n  </Grid>\n</GridContainer>\n","<script>\n  // @ts-check\n  import Button from \"../atoms/Button.svelte\";\n  import DynamicHeading from \"../atoms/DynamicHeading.svelte\";\n  import Grid from \"../atoms/Grid.svelte\";\n  import GridContainer from \"../atoms/GridContainer.svelte\";\n  import Image from \"../atoms/Image.svelte\";\n  import ActiveFiltersBar from \"../molecules/ActiveFiltersBar.svelte\";\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  /**\n   * Additional classes which apply to the container\n   * @type { string }\n   * */\n  let className = \"\";\n  export { className as class };\n\n  /**\n   * The title of the hero section\n   * @type {string}\n   */\n  export let title;\n\n  /**\n   * The subtitle of the hero section\n   * @type {string}\n   */\n  export let subtitle = null;\n\n  /**\n   * The secondary text in the hero section.\n   * @type {string}\n   */\n  export let secondaryText = null;\n\n  /**\n   * The call to action in the hero section\n   * @type {import('../types/shared.js').CTA}\n   */\n  export let cta = null;\n\n  /**\n   * The featured image in the hero section\n   * @type {import('../types/shared.js').Image}\n   */\n  export let featuredImage = null;\n\n  /**\n   * The filter items in the hero section\n   * @type {import(\"../molecules/ActiveFiltersBar.svelte\").FilterItem[]}\n   */\n  export let filterItems;\n\n  const pseudoElementClass =\n    \"md:after:border-l-thin md:after:h-full md:after:absolute md:after:-right-grid-gutter-half md:after:top-0 md:after:w-px\";\n  const contentClass = featuredImage\n    ? `max-md:border-b-thin max-md:pb-7.5 md:col-span-6 md:relative ${pseudoElementClass}`\n    : \"\";\n</script>\n\n<GridContainer\n  {id}\n  containerElement=\"section\"\n  containerClass=\"bg-white text-black pt-15 pb-7.5 md:pt-20 md:pb-15 xl:pt-25\"\n>\n  <Grid gridClass={className}>\n    <div class=\"col-full-width flex flex-col {contentClass}\">\n      <div class=\"grow\">\n        <!-- Since Heroes are generally H1, we don't wrap with DynamicHeadingContext \n          to bump the heading level -->\n        <DynamicHeading class=\"heading-lg\">{title}</DynamicHeading>\n        {#if subtitle}\n          <p class=\"body-md mt-4 max-md:max-w-[600px] lg:mt-6 xl:mt-8\">{subtitle}</p>\n        {/if}\n      </div>\n      {#if secondaryText}\n        <p class=\"heading-xs mt-4 md:mt-6 xl:mt-8\">{secondaryText}</p>\n      {:else if cta}\n        <div class=\"mt-7.5 flex md:mt-6 xl:mt-8\">\n          <Button\n            url={cta.url}\n            label={cta.text}\n            target={cta.url && cta.isExternal ? \"_blank\" : null}\n            rel={cta.url && cta.isExternal ? \"noopener noreferrer\" : null}\n            id={cta.id}\n          />\n        </div>\n      {/if}\n    </div>\n    {#if featuredImage}\n      <div class=\"col-full-width max-md:mt-10 md:col-span-6\">\n        <Image {...featuredImage} aspectRatioClasses=\"aspect-1/1\" />\n      </div>\n    {/if}\n  </Grid>\n  {#if filterItems}\n    <ActiveFiltersBar {filterItems} on:toggleFilterList on:deselectFilterItem />\n  {/if}\n</GridContainer>\n","<script>\n  // @ts-check\n  import textFit from \"textfit\";\n  import { onMount } from \"svelte\";\n  import { v4 as uuid } from \"@lukeed/uuid\";\n\n  import { getTheme } from \"../utilities/themes\";\n  import { debounce } from \"../utilities/performance\";\n  import {\n    Breakpoints,\n    getBreakpoint,\n    maxFontSizeMapForFullWidthText\n  } from \"../utilities/breakpoints\";\n\n  import Image from \"../atoms/Image.svelte\";\n  import GridContainer from \"../atoms/GridContainer.svelte\";\n  import Grid from \"../atoms/Grid.svelte\";\n  import Link from \"../atoms/Link.svelte\";\n  import DynamicHeading from \"../atoms/DynamicHeading.svelte\";\n\n  /** Primarily used for testing @type {string} */\n  export let id = undefined;\n\n  /**\n   * Additional classes which apply to the container\n   * @type { string }\n   * */\n  let className = \"\";\n  export { className as class };\n\n  /**\n   * The title of the hero section\n   * @type {string}\n   */\n  export let title;\n\n  /**\n   * The subtitle of the hero section\n   * @type {string}\n   */\n  export let subtitle = null;\n\n  /**\n   * The call to action in the hero section\n   * @type {import('../types/shared.js').CTA}\n   */\n  export let cta;\n\n  /**\n   * The featured image in the hero section\n   * @type {import('../types/shared.js').Image}\n   */\n  export let featuredImage;\n\n  /**\n   * The theme of the hero section\n   * @type {import('../utilities/themes.js').ThemeName}\n   */\n  export let theme;\n\n  /**\n   * Flag to determine if the text size is variable (all caps, using textfit)\n   * @type {boolean}\n   */\n  export let hasVariableSizeText = false;\n\n  let currentTheme = getTheme(theme);\n\n  /** @type {HTMLHeadingElement} */\n  let titleEl;\n\n  let animate = !hasVariableSizeText;\n  let titleFontSize = null;\n  let titleWidth = null;\n\n  onMount(() => {\n    initTextFit();\n\n    // TODO: Find a better solution\n    setTimeout(() => {\n      animate = true;\n    }, 500);\n  });\n\n  const initTextFit = () => {\n    if (!hasVariableSizeText) {\n      return;\n    }\n\n    const triggerTextFit = async () => {\n      if (!titleEl) {\n        return;\n      }\n\n      // Reset element style (in case of multiline change)\n      titleEl?.setAttribute(\"style\", \"\");\n\n      const breakpoint = getBreakpoint(window.innerWidth);\n      const multiLine = breakpoint === Breakpoints.sm;\n      const maxFontSize = maxFontSizeMapForFullWidthText[breakpoint];\n\n      textFit(titleEl, {\n        minFontSize: 24,\n        maxFontSize,\n        widthOnly: true,\n        detectMultiLine: false,\n        reProcess: true,\n        multiLine\n      });\n    };\n\n    // Wait for fonts to load before triggering textfit\n    document.fonts.onloadingdone = async () => {\n      await triggerTextFit();\n    };\n\n    const debouncedTriggerTextFit = debounce(triggerTextFit, 100);\n\n    const recalculateTextFit = () => {\n      debouncedTriggerTextFit();\n\n      if (titleEl && titleEl.children[0]) {\n        titleFontSize = window.getComputedStyle(titleEl.children[0]).fontSize;\n        titleWidth = titleEl.children[0].clientWidth;\n      }\n    };\n\n    // We need to recalculate text fit when the title element size changes (e.g. window resize)\n    const resizeObserver = new ResizeObserver(() => {\n      recalculateTextFit();\n    });\n\n    resizeObserver.observe(titleEl);\n\n    // We also need to recalculate text fit when the title element content changes (e.g. textfit creates <span> child element)\n    const mutationObserver = new MutationObserver((mutations) => {\n      mutations.forEach((mutation) => {\n        if (mutation.addedNodes.length) {\n          recalculateTextFit();\n        }\n      });\n    });\n\n    let mutationConfig = {\n      childList: true,\n      subtree: true,\n      characterData: true\n    };\n\n    mutationObserver.observe(titleEl, mutationConfig);\n  };\n\n  const splitTitle = title.trim().split(\" \");\n\n  const titleClass = hasVariableSizeText ? \"heading-xxl uppercase\" : \"heading-xl md:col-span-9\";\n  const transitionContainerClass =\n    \"transition-all duration-[400ms] delay-[750ms] ease-[cubic-bezier(0.33, 1, 0.68, 1)]\";\n\n  $: animateContainer = animate ? \"translate-y-0\" : \"translate-y-[7%] md:translate-y-[20%]\";\n  $: animateTitleClass = animate ? \"[&>div>span]:translate-y-0\" : `[&>div>span]:translate-y-full`;\n  $: animateOpacity = animate ? \"opacity-100\" : \"opacity-transparent\";\n  $: titleFontSizeClass = `font-size: ${titleFontSize}`;\n  $: titleWidthClass = `width: ${titleWidth}px`;\n</script>\n\n<GridContainer\n  {id}\n  containerElement=\"section\"\n  containerClass=\"{currentTheme?.textColor} {currentTheme?.backgroundColor} transition-all duration-[1000ms] ease-[cubic-bezier(0.33, 1, 0.68, 1)] overflow-hidden pt-15 pb-7.5 md:pt-20 lg:pb-15 xl:pt-25\"\n>\n  <Grid gridClass=\"col-full-width {transitionContainerClass} {animateContainer} {className}\">\n    <div\n      bind:this={titleEl}\n      aria-hidden={true}\n      class=\"invisible col-full-width w-full leading-[0] {titleClass}\"\n    >\n      {title}\n    </div>\n    <DynamicHeading aria-label={title} class=\"col-full-width w-full {titleClass}\">\n      {#if hasVariableSizeText}\n        <div\n          class=\"{animateTitleClass} overflow-hidden md:flex md:justify-between\"\n          style={titleWidthClass}\n        >\n          {#each splitTitle as title, index (`${title}-${uuid()}`)}\n            <div class=\"overflow-y-clip\" aria-hidden={true}>\n              <span\n                class=\"block transition-all duration-[300ms] ease-spring-easing\"\n                style=\"transition-delay: {index * 100 + 400}ms; {titleFontSizeClass}\">{title}</span\n              >\n            </div>\n          {/each}\n        </div>\n      {:else}\n        {title}\n      {/if}\n    </DynamicHeading>\n\n    {#if hasVariableSizeText && subtitle}\n      <div\n        class=\"subtitle body-lg col-full-width overflow-hidden pt-5 lg:pt-7 {transitionContainerClass} {animateOpacity}\"\n      >\n        {subtitle}\n        {#if cta}\n          <Link\n            class=\"block max-md:pt-5 md:inline-flex md:pl-2\"\n            href={cta.url}\n            isExternal={cta.isExternal}\n            label={cta.text}\n            variant=\"large\"\n            {theme}\n            id={cta.id}\n          />\n        {/if}\n      </div>\n    {:else if cta}\n      <Link\n        class=\"col-full-width text-right max-md:pt-5 md:col-span-3 md:col-start-10 md:self-end md:justify-self-end {transitionContainerClass} {animateOpacity}\"\n        href={cta.url}\n        isExternal={cta.isExternal}\n        label={cta.text}\n        variant=\"large\"\n        {theme}\n        id={cta.id}\n      />\n    {/if}\n    <Image\n      {...featuredImage}\n      aspectRatioClasses=\"aspect-3/4 md:aspect-3/2\"\n      containerClass=\"col-full-width pt-7 lg:pt-12.5 {transitionContainerClass} {animateOpacity}\"\n    />\n  </Grid>\n  <!--\n    TODO: Add support for rich text / videos: https://github.com/ObamaFoundation/of-design-system/issues/89\n  -->\n</GridContainer>\n","<script>\n  // @ts-check\n  import DynamicHeading from \"../atoms/DynamicHeading.svelte\";\n  import Grid from \"../atoms/Grid.svelte\";\n  import GridContainer from \"../atoms/GridContainer.svelte\";\n  import Image from \"../atoms/Image.svelte\";\n  import ActiveFiltersBar from \"../molecules/ActiveFiltersBar.svelte\";\n  import { v4 as uuid } from \"@lukeed/uuid\";\n  import { onMount, onDestroy } from \"svelte\";\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  /**\n   * Additional classes which apply to the container\n   * @type { string }\n   * */\n  let className = \"\";\n  export { className as class };\n\n  /**\n   * The title of the hero section\n   * @type {string}\n   */\n  export let title;\n\n  /**\n   * The animated title of the hero section\n   * @type {string}\n   */\n  export let animatedTitle = null;\n\n  /**\n   * The subtitle of the hero section\n   * @type {string}\n   */\n  export let subtitle = null;\n\n  /**\n   * The featured image in the hero section\n   * @type {import('../types/shared.js').Image}\n   */\n  export let featuredImage = null;\n\n  /**\n   * The active filter items in the hero section\n   * @type {import(\"../molecules/ActiveFiltersBar.svelte\").FilterItem[]}\n   */\n  export let filterItems;\n\n  let animation;\n  let isAnimationReady = !animatedTitle;\n  let splitTitle = title?.split(\" \") || [];\n  let animationClass = \"ease-spring-easing transition-all duration-[520ms]\";\n\n  $: titleClass = isAnimationReady ? \"[&>div>span]:translate-y-0\" : \"[&>div>span]:translate-y-full\";\n  $: titleSpanClass = isAnimationReady\n    ? \"grid-rows-[1fr] opacity-[1]\"\n    : \"grid-rows-[0fr] opacity-[0]\";\n  $: containerAnimationClass = isAnimationReady ? \"translate-y-[0]\" : \"translate-y-[10%]\";\n  $: imageContainerClass = isAnimationReady ? \"translate-y-[0]\" : \"translate-y-[50%]\";\n\n  onMount(() => {\n    if (animatedTitle) {\n      animation = setTimeout(() => {\n        isAnimationReady = true;\n      }, 500);\n    }\n  });\n\n  onDestroy(() => {\n    clearInterval(animation);\n  });\n</script>\n\n<GridContainer\n  {id}\n  containerElement=\"section\"\n  containerClass=\"mt-15 mb-15 md:mt-20 md:mb-20 lg:mb-25 xl:mt-25\"\n>\n  <Grid gridClass=\"{containerAnimationClass} {animationClass} delay-[500ms] {className}\">\n    <DynamicHeading class=\"heading-xxl col-full-width uppercase\" aria-label={title}>\n      <div class=\"{titleClass} {animationClass} flex flex-wrap gap-x-2 overflow-hidden\">\n        {#each splitTitle as title (`${title}-${uuid()}`)}\n          <div class=\" overflow-hidden pr-2 lg:pr-4 xl:pr-6\" aria-hidden={true}>\n            <span class=\"{animationClass} block\">\n              {title}\n            </span>\n          </div>\n        {/each}\n      </div>\n      {#if animatedTitle}\n        <div class=\"{titleSpanClass} {animationClass} grid delay-[500ms]\">\n          <span class=\"overflow-hidden text-cobalt-blue\">\n            {animatedTitle}\n          </span>\n        </div>\n      {/if}\n    </DynamicHeading>\n    {#if featuredImage}\n      <div class=\"col-full-width overflow-hidden bg-white pt-7.5 lg:pt-12.5\">\n        <Image\n          {...featuredImage}\n          aspectRatioClasses=\"aspect-3/4 md:aspect-3/2\"\n          containerClass=\"{imageContainerClass} {animationClass}\"\n        />\n        <!-- TODO: Add support for rich text / videos: https://github.com/ObamaFoundation/of-design-system/issues/89 -->\n      </div>\n    {/if}\n    {#if subtitle}\n      <p class=\"body-lg col-full-width pt-7.5 lg:pt-12.5\">\n        {subtitle}\n      </p>\n    {/if}\n  </Grid>\n  <!-- gotcha: filterItems -->\n  {#if filterItems}\n    <ActiveFiltersBar {filterItems} on:toggleFilterList on:deselectFilterItem />\n  {/if}\n</GridContainer>\n","<script>\n  import { createEventDispatcher, onDestroy, onMount } from \"svelte\";\n  import { validateAspectRatioClasses } from \"../utilities/aspectRatios\";\n  import { v4 as uuid } from \"@lukeed/uuid\";\n\n  const dispatch = createEventDispatcher();\n\n  /** Primarily used for testing @type {string} */\n  export let id = undefined;\n\n  /**\n   * Indicates whether the video should start with autoplay config.\n   * @type {boolean}\n   */\n  export let shouldAutoPlay = false;\n\n  /**\n   * A string of space-separated aspect ratio Tailwind classes.\n   * @type {string}\n   * @default \"aspect-16/9\"\n   */\n  export let aspectRatioClasses = \"aspect-16/9\";\n  validateAspectRatioClasses(aspectRatioClasses);\n\n  /**\n   *\n   * @type {boolean} isPlaying - Indicates whether the video is currently playing.\n   * @type {boolean} isMuted - Indicates whether the video is currently muted.\n   */\n  export let isPlaying = false;\n  let isMuted;\n\n  /**\n   *\n   * @type {boolean} shouldShowControls - Indicates if the video should show the controls.\n   */\n  export let shouldShowControls = false;\n\n  /**\n   * Loop section of the video\n   *\n   * @param {Object} loopSection\n   * @param {number} loopSection.startTime - The start time of the loop section in seconds.\n   * @param {number} loopSection.endTime - The end time of the loop section in seconds.\n   */\n  export let loopSection = {\n    startTime: 0,\n    endTime: 0\n  };\n\n  /**\n   * The ID of the YouTube video to embed.\n   * @type {string}\n   */\n  export let videoId;\n\n  let divId = `player_${uuid()}`;\n  /**\n   * Determines whether the YouTube iframe should be muted.\n   * If `shouldAutoPlay` is true or both `loopSection.startTime` and `loopSection.endTime` are greater than 0,\n   * the iframe should be muted.\n   * @type {number}\n   */\n  const shouldMute =\n    shouldAutoPlay || (loopSection.startTime >= 0 && loopSection.endTime > 0) ? 1 : 0;\n\n  /**\n   * The player variable represents the YouTube iframe player.\n   */\n  let player;\n\n  let playerVars = {\n    rel: 0,\n    controls: 0,\n    autoplay: shouldAutoPlay || (loopSection.startTime >= 0 && loopSection.endTime > 0) ? 1 : 0,\n    mute: shouldMute\n  };\n\n  // Watch for changes in props and reload the iframe\n  $: {\n    if (player && shouldShowControls) {\n      loopSection = undefined;\n      player.destroy(); // Destroy existing player\n      clearTimeout(timer);\n      playerVars = {\n        rel: 0,\n        controls: 1,\n        autoplay: 1,\n        mute: shouldMute\n      };\n      loadPlayer(); // Reload player with new props\n    }\n  }\n\n  const loadPlayer = () => {\n    if (typeof window?.YT !== \"undefined\") {\n      /* eslint-disable no-undef */\n      window.YT.ready(() => {\n        player = new YT.Player(divId, {\n          width: \"100%\",\n          height: \"100%\",\n          videoId,\n          playerVars,\n          events: {\n            onReady: onPlayerReady,\n            onStateChange: onPlayerStateChange\n          }\n        });\n      });\n    }\n  };\n\n  onMount(() => {\n    if (!shouldAutoPlay) {\n      return;\n    }\n\n    if (typeof window !== \"undefined\") {\n      if (typeof window.YT !== \"undefined\") {\n        loadPlayer();\n      } else {\n        window.onYouTubeIframeAPIReady = loadPlayer();\n      }\n    }\n  });\n\n  onDestroy(() => {\n    if (player) {\n      player.destroy();\n    }\n  });\n\n  const onPlayerReady = () => {\n    if (loopSection && loopSection.startTime >= 0 && loopSection.endTime > 0) {\n      player.seekTo(loopSection.startTime);\n      isPlaying = true;\n    }\n  };\n\n  let timer = 0;\n  const onPlayerStateChange = ({ data }) => {\n    if (data === YT.PlayerState.PLAYING) {\n      isPlaying = true;\n\n      if (\n        !shouldShowControls &&\n        loopSection &&\n        loopSection.startTime >= 0 &&\n        loopSection.endTime > 0\n      ) {\n        const duration = loopSection.endTime - loopSection.startTime;\n        timer = setTimeout(restartVideoSection, duration * 1000);\n      }\n    } else {\n      isPlaying = false;\n    }\n  };\n\n  export const restartVideoSection = () => {\n    if (player?.seekTo) {\n      player.seekTo(loopSection.startTime);\n    }\n  };\n\n  export const startVideoFromBeginning = () => {\n    loadPlayer();\n    if (player?.seekTo) {\n      player.seekTo(0);\n    }\n  };\n\n  export const stopVideo = () => {\n    player?.stopVideo();\n  };\n\n  export const pauseVideo = () => {\n    player?.pauseVideo();\n  };\n\n  export const playVideo = () => {\n    player?.playVideo();\n  };\n\n  export const toggleMute = () => {\n    if (isMuted || player.isMuted()) {\n      player.unMute();\n      isMuted = false;\n    } else {\n      player.mute();\n      isMuted = true;\n    }\n  };\n\n  export const togglePause = () => {\n    if (isPlaying) {\n      player.pauseVideo();\n    } else {\n      player.playVideo();\n    }\n\n    dispatch(\"togglePause\");\n  };\n</script>\n\n<svelte:head>\n  <script src=\"https://www.youtube.com/iframe_api\"></script>\n</svelte:head>\n\n<div {id} class=\"{aspectRatioClasses} relative\">\n  <div\n    id={divId}\n    class=\"absolute left-0 top-0 z-[--stack-level-youtube-iframe] h-full w-full\"\n    data-chromatic=\"ignore\"\n  />\n</div>\n","<script>\n  import YoutubeIframe from \"../molecules/YoutubeIframe.svelte\";\n  import Icon from \"../atoms/Icon.svelte\";\n  import Image from \"../atoms/Image.svelte\";\n  import Button from \"../atoms/Button.svelte\";\n  import { extractYoutubeVideoId } from \"../utilities/youtubeIframeApi\";\n  import DynamicHeadingContext from \"../atoms/DynamicHeadingContext.svelte\";\n  import DynamicHeading from \"../atoms/DynamicHeading.svelte\";\n\n  /**\n   * @typedef {Object} LoopSection\n   * @property {number} startTime - The start time of the loop section in seconds.\n   * @property {number} endTime - The end time of the loop section in seconds.\n   */\n\n  /**\n   * @typedef {Object} Video\n   * @property {import($lib/types/shared.js').Image} videoCoverImage - The cover image for the video.\n   * @property {string} caption - The caption for the video.\n   * @property {string} header - The header for the video.\n   * @property {string} body - The body content for the video.\n   * @property {string} className - Used to style the container of the Video component\n   * @property {string} id - Primarily used for testing\n   * @property {string} videoUrl - The URL of the YouTube video to embed.\n   * @property {LoopSection} loopSection - Loop section of the video for autoplay behavior.\n   */\n\n  let className = \"\";\n  export { className as class };\n  export let id = undefined;\n  export let videoUrl = undefined;\n  export let videoId;\n  export let videoCoverImage = undefined;\n  export let caption = undefined;\n  export let header = undefined;\n  export let body = undefined;\n  export let loopSection = undefined;\n  export let isLiveStreamVideo = undefined;\n\n  // TODO: this videoUrl logic needs to be cleaned up, because currently Contentful does not have this field on Video so we will never have videoUrl, but must have videoId\n  if (!videoId && videoUrl) {\n    videoId = extractYoutubeVideoId(videoUrl);\n  }\n\n  const hasLoopingSection = !!loopSection && loopSection.startTime >= 0 && loopSection.endTime > 0;\n  let autoplay = hasLoopingSection;\n\n  let hasVideoStartedFromBeginning = false;\n  let youtube;\n\n  const youtubeTogglePause = () => {\n    youtube.togglePause();\n  };\n\n  const youtubeStartVideoFromBeginning = () => {\n    youtube.startVideoFromBeginning();\n    hasVideoStartedFromBeginning = true;\n    autoplay = true;\n    loopSection = { startTime: 0 };\n  };\n\n  const playPauseButtonClass = hasLoopingSection ? \"right-5\" : \"left-5\";\n\n  // TODO: find a way to detect live stream YouTube video;  Currently implement this for democracy forum page\n  $: isLiveStreamVideo =\n    isLiveStreamVideo || videoId === \"zklZVvrRZY0\" || videoId === \"E2xp8np3iM0\";\n  $: fixedWidthClass = isLiveStreamVideo ? \"w-60\" : \"w-20\";\n  $: leftPositionClass = isLiveStreamVideo ? \"left-[calc(50%-120px)]\" : \"left-[calc(50%-40px)]\";\n\n  let isPlayingLoopSection = autoplay;\n\n  const handleLoopToggle = () => {\n    youtubeTogglePause();\n    isPlayingLoopSection = !isPlayingLoopSection;\n  };\n</script>\n\n<DynamicHeadingContext>\n  <div {id} class={className}>\n    {#if videoId}\n      <div class=\"override-video relative\">\n        <YoutubeIframe\n          bind:this={youtube}\n          aspectRatioClasses=\"aspect-16/9\"\n          shouldShowControls={hasVideoStartedFromBeginning}\n          shouldAutoPlay={autoplay}\n          {videoId}\n          {loopSection}\n        />\n        {#if !hasVideoStartedFromBeginning}\n          <div\n            class=\"absolute left-0 top-0 z-[--stack-level-video-iframe] h-full w-full bg-transparent\"\n            on:click={youtubeStartVideoFromBeginning}\n            on:keydown={youtubeStartVideoFromBeginning}\n            role=\"button\"\n            tabindex=\"0\"\n            aria-label=\"Watch Video\"\n          >\n            {#if !isPlayingLoopSection && videoCoverImage && videoCoverImage.src}\n              <Image {...videoCoverImage} aspectRatioClasses=\"aspect-16/9\" />\n            {/if}\n          </div>\n\n          {#if hasLoopingSection}\n            <Button\n              buttonClass=\"override-[video]:absolute bottom-5 left-5 z-[--stack-level-video-controls]\"\n              on:click={youtubeStartVideoFromBeginning}\n              variant=\"filled\"\n              label=\"Watch Video\"\n              theme=\"black\"\n            >\n              <Icon slot=\"icon\" name=\"playOffset\" />\n            </Button>\n          {/if}\n\n          {#if !autoplay}\n            <Button\n              buttonClass=\"override-[video]:absolute bottom-[calc(50%-40px)] h-20 z-[--stack-level-video-controls] !bg-white hover:!bg-black justify-center whitespace-nowrap {playPauseButtonClass} {fixedWidthClass} {leftPositionClass} \"\n              on:click={hasLoopingSection ? handleLoopToggle : youtubeStartVideoFromBeginning}\n              variant=\"filled\"\n              theme=\"black\"\n              ariaLabel={isPlayingLoopSection ? \"Pause autoplay\" : \"Resume autoplay\"}\n              label={isLiveStreamVideo ? \"Start livestream\" : \"\"}\n            >\n              <Icon\n                slot=\"icon\"\n                iconClass=\"text-inherit\"\n                name={isPlayingLoopSection ? \"pause\" : \"play\"}\n              />\n            </Button>\n          {/if}\n        {/if}\n\n        <!--Overlay for the video-->\n        {#if !hasVideoStartedFromBeginning}\n          <div\n            class=\"absolute left-0 top-0 z-[--stack-level-overlay] h-full w-full bg-black-20\"\n          ></div>\n        {/if}\n      </div>\n    {/if}\n    {#if caption}\n      <p class=\"body-sm pt-3\">\n        {caption}\n      </p>\n    {/if}\n    {#if header?.trim().length > 0}\n      <DynamicHeading class=\"heading-xs pt-8\">\n        {header}\n      </DynamicHeading>\n    {/if}\n    {#if body}\n      <p class=\"body-md pt-4\">\n        {body}\n      </p>\n    {/if}\n  </div>\n</DynamicHeadingContext>\n","<script>\n  // @ts-check\n  import Grid from \"../atoms/Grid.svelte\";\n  import GridContainer from \"../atoms/GridContainer.svelte\";\n  import Image from \"../atoms/Image.svelte\";\n  import Link from \"../atoms/Link.svelte\";\n  import Button from \"../atoms/Button.svelte\";\n  import DynamicHeading from \"../atoms/DynamicHeading.svelte\";\n  import DynamicHeadingContext from \"../atoms/DynamicHeadingContext.svelte\";\n  import ActiveFiltersBar from \"../molecules/ActiveFiltersBar.svelte\";\n  import Video from \"./Video.svelte\";\n  import { getTheme } from \"../utilities\";\n\n  /**\n   * @typedef {Object} FeaturedStory\n   * @property {string} title\n   * @property {string} subtitle\n   * @property {import('../types/shared.js').Image} image\n   * @property {import('../types/shared.js').CTA} cta\n   */\n\n  /**\n   * Primarily used for testing\n   * @type {string}\n   */\n  export let id = undefined;\n\n  /**\n   * Additional classes which apply to the container\n   * @type { string }\n   * */\n  let className = \"\";\n  export { className as class };\n\n  /**\n   * The title of the hero section\n   * @type {string}\n   */\n  export let title;\n\n  /**\n   * The subtitle of the hero section\n   * @type {string}\n   */\n  export let subtitle = null;\n\n  /**\n   * The call to action for the component\n   * @type {import('../types/shared.js').CTA} CTA\n   */\n  export let cta = null;\n\n  /**\n   * The featured image in the hero section\n   * @type {import('../types/shared.js').Image} Image\n   */\n  export let featuredImage = null;\n\n  /**\n   * The optional featured story section\n   * @type {FeaturedStory}\n   */\n  export let featuredStory = null;\n\n  /**\n   * The featured video in the hero section\n   * @type {import('../types/shared.js').Video} Video\n   */\n  export let featuredVideo = null;\n\n  /**\n   * The filter items in the hero section\n   * @type {import(\"../molecules/ActiveFiltersBar.svelte\").FilterItem[]}\n   */\n  export let filterItems;\n\n  /**\n   * The theme of the hero section\n   * @type {import('../utilities/themes.js').ThemeName}\n   */\n  export let theme;\n\n  $: currentTheme = getTheme(theme);\n\n  const pseudoElementClass =\n    \"relative lg:static before:content-[''] before:absolute before:h-[1px] before:w-full before:top-0 lg:before:h-full lg:before:w-[1px] before:bg-black before:left-1/2 before:-translate-x-1/2\";\n\n  const columnClass = featuredStory ? \"lg:col-span-6\" : null;\n\n  const subtitleClass = featuredStory\n    ? \"body-md mt-4 mb-7.5 lg:mt-6 lg:mb-0\"\n    : \"body-lg mt-4 lg:mt-6 xl:mt-8\";\n\n  const isTextOnly = !featuredImage && !featuredStory && !cta && !subtitle;\n  const isFeatureImageLast = !featuredStory && featuredImage;\n\n  const getContainerPaddingBottom = () => {\n    if (isTextOnly) {\n      return \"pb-10 md:pb-12.5\";\n    }\n    if (isFeatureImageLast) {\n      return \"pb-15 md:pb-20 lg:pb-25\";\n    }\n    return \"pb-7.5 lg:pb-15\";\n  };\n</script>\n\n<GridContainer\n  {id}\n  containerElement=\"section\"\n  containerClass=\"{currentTheme?.textColor} {currentTheme?.backgroundColor} pt-15 md:pt-20 xl:pt-25 {getContainerPaddingBottom()}\"\n>\n  <div class={className}>\n    <Grid gridClass=\"lg:relative\">\n      <div class=\"col-full-width {columnClass}\">\n        <!-- Since Heroes are generally H1, we don't wrap with DynamicHeadingContext \n          to bump the heading level -->\n        <DynamicHeading class=\"heading-xl {featuredStory ? 'lg:heading-lg' : ''}\"\n          >{title}</DynamicHeading\n        >\n        {#if subtitle}\n          <p class={subtitleClass}>{subtitle}</p>\n        {/if}\n        {#if cta}\n          <Button\n            url={cta.url}\n            target={cta.url && cta.isExternal ? \"_blank\" : null}\n            rel={cta.url && cta.isExternal ? \"noopener noreferrer\" : null}\n            variant=\"outline\"\n            label={cta.text}\n            ariaLabel={cta.text}\n            buttonClass=\"w-fit mt-4 lg:mt-6 xl:mt-7.5\"\n            id={cta.id}\n          />\n        {/if}\n        {#if featuredImage && !featuredStory}\n          <Image\n            {...featuredImage}\n            aspectRatioClasses=\"aspect-3/2\"\n            containerClass=\"pt-7.5 lg:pt-12.5\"\n          />\n        {/if}\n        {#if featuredVideo && !featuredStory}\n          <Video {...featuredVideo} class=\"pt-4 lg:pt-12.5\" />\n        {/if}\n      </div>\n      {#if featuredStory}\n        <DynamicHeadingContext>\n          <div class=\"col-full-width pt-7.5 lg:pt-0 {columnClass} {pseudoElementClass}\">\n            <Image {...featuredStory.image} aspectRatioClasses=\"aspect-1/1\" />\n            <DynamicHeading class=\"heading-xs pt-5 xl:pt-7\">{featuredStory.title}</DynamicHeading>\n            <p class=\"body-sm pt-3\">{featuredStory.subtitle}</p>\n            <Link\n              href={featuredStory.cta.url}\n              isExternal={featuredStory.cta.isExternal}\n              label={featuredStory.cta.text}\n              variant=\"small\"\n              theme=\"white\"\n              class=\"pt-7 xl:pt-9\"\n              id={featuredStory.cta.id}\n            />\n          </div>\n        </DynamicHeadingContext>\n      {/if}\n    </Grid>\n    {#if filterItems}\n      <ActiveFiltersBar {filterItems} on:toggleFilterList on:deselectFilterItem />\n    {/if}\n  </div>\n</GridContainer>\n","/**\n * Determines the pages to be displayed in the pagination component.\n *\n * @param {number} totalPages - The total number of totalPages.\n * @param {number} maxVisiblePages - The maximum number of pages that can be navigated directly.\n * @param {number} currentPage - The current page number.\n * @returns {Object} An object containing the start page, previous pages, visible pages, next pages, and end page.\n */\n\nexport const pagination = (totalPages = 0, maxVisiblePages = 5, currentPage = 1) => {\n  /**\n   *\n   * @param {boolean} hasPagesOtherThanFirstAndLast - Indicates if there are pages other than the first and last page.\n   * @param {boolean} shouldEllipse - Indicates if the pagination should display ellipses for hidden pages.\n   * @param {boolean} shouldEllipsePrevious - Indicates if the pagination should display an ellipse before the current page.\n   * @param {boolean} shouldEllipseNext - Indicates if the pagination should display an ellipse after the current page.\n   */\n\n  const shouldEllipse = totalPages > maxVisiblePages;\n  const shouldEllipsePrevious = shouldEllipse && currentPage > maxVisiblePages - 2;\n  const shouldEllipseNext = shouldEllipse && totalPages - currentPage > maxVisiblePages - 2;\n  const hasPagesOtherThanFirstAndLast = totalPages > 2;\n  const startPage = 2; // 1 is fixed\n\n  /**\n   * Generates an array of page numbers from start to end.\n   *\n   * @param {number} start - The first page number.\n   * @param {number} end - The last page number.\n   * @returns {number[]} An array of page numbers.\n   */\n  const generatePages = (start, end) => {\n    /**\n     * There is a slight bug somewhere that causes the range to be less than 0 sometimes. I added a guard\n     * here to make sure that the range is never negative.\n     */\n\n    let range = end - start;\n    if (range < 0) {\n      range = 0;\n    }\n    return Array(range)\n      .fill()\n      .map((_, i) => i + start);\n  };\n\n  let previousPages = [];\n  let visiblePages = [];\n  let nextPages = [];\n\n  if (hasPagesOtherThanFirstAndLast) {\n    if (!shouldEllipse) {\n      visiblePages = generatePages(startPage, totalPages);\n    } else if (!shouldEllipsePrevious) {\n      // Generate all pages from 2 to maxVisiblePages\n      visiblePages = generatePages(startPage, maxVisiblePages);\n\n      // Generate nextPages dropdown from last item in visiblePages to totalPages\n      const generatedNextPages = generatePages(visiblePages.slice(-1)[0] + 1, totalPages);\n\n      // Only show nextPages dropdown if there is more than one item\n      if (generatedNextPages.length > 1) {\n        nextPages = generatedNextPages;\n      } else {\n        // Empty dropdown\n        nextPages = [];\n\n        const toPage = maxVisiblePages + 1; // need to add 1 because we need to include the item we removed from nextPages\n\n        // Generate visiblePages\n        visiblePages = generatePages(startPage, toPage);\n      }\n    } else if (shouldEllipseNext) {\n      // Generate previousPages pages from 2 to the current page\n      previousPages = generatePages(startPage, currentPage);\n\n      // Only show previousPages dropdown if there is more than one item\n      if (previousPages.length > 1) {\n        const fromPage = currentPage;\n\n        // Generate visiblePages\n        const generatedVisiblePages = generatePages(\n          fromPage,\n          // discounting the first and the last page from maxVisiblePages, which are fixed values.\n          currentPage + (maxVisiblePages - 2)\n        );\n\n        let toPage;\n\n        // Check if the last item in generatedVisiblePages is equal to the totalPages - 2.\n        if (generatedVisiblePages.slice(-1)[0] === totalPages - 2) {\n          //  Need to add + 1 to calculate the visiblePages, since we don't show ellipse with 1 item. So instead of removing 2 (fixed first and last), we remove only 1, so toPages gets an extra page.\n          toPage = currentPage + (maxVisiblePages - 1);\n\n          // Generate visiblePages\n          visiblePages = generatePages(fromPage, toPage);\n        } else {\n          // Generate visiblePages\n          visiblePages = generatedVisiblePages;\n        }\n      } else {\n        // Empty dropdown\n        previousPages = [];\n\n        const fromPage = currentPage - 1;\n        const toPage = currentPage + (maxVisiblePages - 3); // besides discounting the first and the last page from maxVisiblePages, we also discount the item we removed from previousPages.\n\n        // Generate visiblePages\n        visiblePages = generatePages(fromPage, toPage);\n      }\n\n      // Generate nextPages dropdown from last item in visiblePages to totalPages\n      const generatedNextPages = generatePages(visiblePages.slice(-1)[0] + 1, totalPages);\n\n      // Only show nextPages dropdown if there is more than one item\n      if (generatedNextPages.length > 1) {\n        nextPages = generatedNextPages;\n      }\n    } else {\n      /* Only shows previousPages dropdown */\n\n      // adding the first page and the last page, that are already visible to totalPages\n      const fromPage = totalPages - maxVisiblePages + 2;\n      const toPage = totalPages;\n\n      // Generate visiblePages\n      visiblePages = generatePages(fromPage, toPage);\n\n      // Generate previousPages\n      previousPages = generatePages(startPage, fromPage);\n    }\n  }\n\n  return {\n    start: totalPages >= 1 ? 1 : null,\n    previousPages,\n    visiblePages,\n    nextPages,\n    end: totalPages >= 1 ? totalPages : null\n  };\n};\n","<script>\n  /** Primarily used for testing @type {string} */\n  export let id = undefined;\n\n  /**\n   * @type {PageSelector} props - The component props.\n   */\n\n  export let pageNumber;\n  export let current = false;\n  export let arialLabel = null;\n  export let hasPopup = false;\n  export let expanded = false;\n\n  $: classFocus = `focus-visible:outline-dashed focus-visible:outline-black focus-visible:outline-offset-0 focus-visible:outline-[2px] ${\n    current && \"focus-visible:outline-cobalt-blue\"\n  }`;\n  $: classUnderline = `transition-colors block w-6 h-1 mt-[0.7rem] ${current && \"bg-cobalt-blue\"}`;\n\n  $: classButtonActive = `${current && \"text-cobalt-blue\"}`;\n</script>\n\n<div class=\"flex flex-col justify-between\">\n  <button\n    class=\"group relative pt-[0.69rem] transition-colors hover:text-cobalt-blue {classFocus} {classButtonActive}\"\n    on:click\n    {id}\n    aria-label={arialLabel}\n    aria-haspopup={hasPopup}\n    aria-expanded={hasPopup ? expanded : null}\n  >\n    {pageNumber}\n    <span class={classUnderline} />\n  </button>\n</div>\n","<script>\n  import PageSelector from \"./PageSelector.svelte\";\n  import { clickOutside } from \"../../utilities/helpers\";\n\n  /** Primarily used for testing @type {string} */\n  export let id = undefined;\n\n  /**\n   * @type {PageSelectorDropdown} props - The component props.\n   */\n  export let pageNumbers = [];\n  export let onSelect;\n  export let arialLabel = null;\n\n  let isOpen = false;\n  const toggle = () => {\n    isOpen = !isOpen;\n  };\n</script>\n\n<div\n  class=\"relative\"\n  use:clickOutside={() => {\n    isOpen = false;\n  }}\n>\n  <PageSelector pageNumber={\"...\"} on:click={toggle} {id} {arialLabel} hasPopup expanded={isOpen} />\n\n  {#if isOpen}\n    <ul\n      class=\"absolute left-[-1rem] top-[3.125rem] mt-5 flex max-h-[13.5rem] flex-col overflow-y-auto border-thin border-black bg-white\"\n    >\n      {#each pageNumbers as pageNumber}\n        <button\n          class=\"px-4 py-2\"\n          on:click={() => {\n            toggle();\n            onSelect(pageNumber);\n          }}\n          aria-label=\"Page {pageNumber}\"\n        >\n          {pageNumber}\n        </button>\n      {/each}\n    </ul>\n  {/if}\n</div>\n","<script context=\"module\">\n  import { pagination } from \"../../utilities/pagination\";\n</script>\n\n<script>\n  import { createEventDispatcher } from \"svelte\";\n  import { Breakpoints, getBreakpoint } from \"../../utilities/breakpoints\";\n\n  import Icon from \"../../atoms/Icon.svelte\";\n\n  import PageSelector from \"./PageSelector.svelte\";\n  import PageSelectorDropdown from \"./PageSelectorDropdown.svelte\";\n\n  /** Primarily used for testing @type {string} */\n  export let id = undefined;\n\n  /**\n   * @type {PaginationProps} props - The component props.\n   */\n  export let totalPages = 0;\n  export let maxVisiblePagesDesktop = 10;\n  export let maxVisiblePagesMobile = 4;\n  export let initialActivePage = 1;\n\n  $: currentPage = initialActivePage;\n\n  let componentClass = \"\";\n  export { componentClass as class };\n\n  const classArrowFocus = `h-[3.121rem] focus-visible:outline-dashed focus-visible:outline-black focus-visible:outline-offset-0 focus-visible:outline-[2px]`;\n\n  let ariaLiveRegionText;\n  const updateAriaLive = () => {\n    ariaLiveRegionText = `Current page is ${watchCurrentPage} out of ${totalPages}.`;\n  };\n\n  const ariaLabelContext = (defaultLabel, pageIdentifier) => {\n    if (String(currentPage) == pageIdentifier) {\n      return `${defaultLabel}, current page`;\n    } else {\n      return `${defaultLabel}`;\n    }\n  };\n\n  const dispatch = createEventDispatcher();\n  const navigateTo = (pageNumber) => {\n    let page;\n    if (pageNumber > 0 && pageNumber <= totalPages) {\n      page = pageNumber;\n    } else if (pageNumber <= 0) {\n      page = totalPages;\n    } else if (pageNumber > totalPages) {\n      page = 1;\n    }\n\n    currentPage = page;\n    dispatch(\"navigate\", {\n      page\n    });\n  };\n\n  let screenWidth = 0;\n  let visiblePagesOnDevice = 0;\n  $: maxVisiblePages = setMaxVisiblePages(screenWidth);\n\n  const setMaxVisiblePages = (screenWidth) => {\n    if (getBreakpoint(screenWidth) === Breakpoints.sm) {\n      visiblePagesOnDevice =\n        maxVisiblePagesMobile < totalPages ? maxVisiblePagesMobile : totalPages;\n    } else {\n      visiblePagesOnDevice =\n        maxVisiblePagesDesktop < totalPages ? maxVisiblePagesDesktop : totalPages;\n    }\n\n    return visiblePagesOnDevice;\n  };\n\n  $: watchCurrentPage = currentPage;\n  $: ({ start, previousPages, visiblePages, nextPages, end } = pagination(\n    totalPages,\n    maxVisiblePages,\n    watchCurrentPage\n  ));\n</script>\n\n<svelte:window bind:innerWidth={screenWidth} />\n\n{#if totalPages > 1}\n  <nav {id} class=\"w-full border-y-thin border-black {componentClass}\">\n    <ul class=\"cta-md flex w-full list-none items-center justify-center gap-5 sm:gap-5 md:gap-5\">\n      <li class=\"list-none\">\n        <button\n          on:click={() => {\n            navigateTo(watchCurrentPage - 1);\n            updateAriaLive();\n          }}\n          aria-label=\"Prev page\"\n          disabled={watchCurrentPage === 1}\n          class=\"disabled:cursor-not-allowed disabled:text-grey {classArrowFocus}\"\n        >\n          <Icon name=\"arrowLeft\" />\n        </button>\n      </li>\n\n      <li>\n        <PageSelector\n          pageNumber={start}\n          current={start === watchCurrentPage}\n          on:click={() => {\n            navigateTo(start);\n            updateAriaLive();\n          }}\n          arialLabel={ariaLabelContext(\"First page\", start)}\n        />\n      </li>\n\n      {#if previousPages.length > 0}\n        <li>\n          <PageSelectorDropdown\n            pageNumbers={previousPages}\n            onSelect={(pageNumber) => {\n              navigateTo(pageNumber);\n              updateAriaLive();\n            }}\n            arialLabel=\"Previous pages dropdown\"\n          />\n        </li>\n      {/if}\n\n      {#each visiblePages as pageNumber}\n        <li>\n          <PageSelector\n            {pageNumber}\n            current={pageNumber === watchCurrentPage}\n            on:click={() => {\n              navigateTo(pageNumber);\n              updateAriaLive();\n            }}\n            arialLabel={ariaLabelContext(`Page ${pageNumber}`, pageNumber)}\n          />\n        </li>\n      {/each}\n\n      {#if nextPages.length > 0}\n        <li>\n          <PageSelectorDropdown\n            pageNumbers={nextPages}\n            onSelect={(pageNumber) => {\n              navigateTo(pageNumber);\n              updateAriaLive();\n            }}\n            arialLabel=\"Next pages dropdown\"\n          />\n        </li>\n      {/if}\n\n      {#if end > start}\n        <li>\n          <PageSelector\n            pageNumber={end}\n            current={end === watchCurrentPage}\n            on:click={() => {\n              navigateTo(end);\n              updateAriaLive();\n            }}\n            arialLabel={ariaLabelContext(\"Last page\", end)}\n          />\n        </li>\n      {/if}\n\n      <li>\n        <button\n          on:click={() => {\n            navigateTo(watchCurrentPage + 1);\n            updateAriaLive();\n          }}\n          aria-label=\"Next page\"\n          disabled={watchCurrentPage === totalPages}\n          class=\"disabled:cursor-not-allowed disabled:text-grey {classArrowFocus}\"\n        >\n          <Icon name=\"arrowRight\" />\n        </button>\n      </li>\n    </ul>\n  </nav>\n  <div aria-live=\"polite\" class=\"sr-only\">\n    {ariaLiveRegionText}\n  </div>\n{/if}\n","<script>\n  // @ts-check\n  import DynamicHeading from \"../atoms/DynamicHeading.svelte\";\n  import DynamicHeadingContext from \"../atoms/DynamicHeadingContext.svelte\";\n  import GridContainer from \"../atoms/GridContainer.svelte\";\n  import Link from \"../atoms/Link.svelte\";\n  import Rule from \"../atoms/Rule.svelte\";\n  import Fragment from \"../atoms/Fragment.svelte\";\n  import { getTheme } from \"../utilities/themes\";\n\n  /** @type { string } */\n  let className = \"\";\n  export { className as class };\n\n  /** Primarily used for testing\n   * @type {string} */\n  export let id = undefined;\n\n  /**\n   * The title of the hero section\n   * @type {string}\n   */\n  export let title = null;\n\n  /**\n   * The call to action in the hero section\n   * @type {import('../types/shared.js').CTA}\n   */\n  export let cta = null;\n\n  /**\n   * The theme of the hero section\n   * @type {import('../utilities/themes.js').ThemeName}\n   */\n  export let theme = \"white\";\n  let currentTheme = getTheme(theme);\n\n  const themedSectionClass = theme === \"white\" ? \"\" : \"pt-15 pb-7.5\";\n</script>\n\n<svelte:component this={title ? DynamicHeadingContext : Fragment}>\n  <section\n    {id}\n    class=\"{currentTheme?.textColor}\n  {currentTheme?.backgroundColor}\n  {themedSectionClass}\n  {className}\"\n  >\n    <GridContainer>\n      <Rule type=\"thick\" {theme} class=\"mb-7.5\" />\n\n      {#if title}\n        <div class=\"mb-7.5 flex justify-between lg:mb-15\">\n          <DynamicHeading class=\"heading-sm\">\n            {title}\n          </DynamicHeading>\n          {#if cta}\n            <Link\n              class=\"max-md:hidden\"\n              href={cta.url}\n              isExternal={cta.isExternal}\n              label={cta.text}\n              variant=\"small\"\n              {theme}\n            >\n              {cta?.text}\n            </Link>\n          {/if}\n        </div>\n      {/if}\n    </GridContainer>\n\n    <!-- Section content -->\n    <slot />\n\n    {#if cta}\n      <GridContainer>\n        <div class=\"mt-7.5 md:hidden\">\n          <Rule type=\"thin\" {theme} />\n          <Link\n            class=\"pt-3\"\n            href={cta.url}\n            isExternal={cta.isExternal}\n            label={cta.text}\n            variant=\"small\"\n            {theme}\n          >\n            {cta?.text}\n          </Link>\n        </div>\n      </GridContainer>\n    {/if}\n  </section>\n</svelte:component>\n","/**\n *\n * @param {*} tags the contentTags attached ot the entry\n * @param {number} numberOfTags the desired number of tags; default is 1 as the assumption is that you want at least one tag\n * @param {boolean} useHref whether or not to link out to the \"stories\" page for the tag\n * @returns tags mapped in the form {name: tagName, href: tagPageLink}\n */\nexport const mapTags = (tags, numberOfTags = 1, useHref = false) => {\n  return tags?.slice(0, numberOfTags).map((tag) => {\n    return {\n      name: tag.fields.name,\n      href: useHref\n        ? `/stories/${tag.fields.name.toLowerCase().trim().replaceAll(/\\s+/g, \"-\")}`\n        : undefined\n    };\n  });\n};\n","export default \"__VITE_ASSET__ab211233__\"","export const checkIfShouldIndex = (host) => {\n  if (host !== \"www.obama.org\") {\n    const metaRobots = document.querySelector('meta[name=\"robots\"]');\n    metaRobots.setAttribute(\"content\", \"noindex,nofollow\");\n  }\n};\n","<script>\n  // eslint-disable-next-line  @ObamaFoundation/of-svelte/no-stores\n  import { page } from \"$app/stores\";\n  import logo from \"$lib/assets/logo.png\";\n  import { buildSrc } from \"$lib/utilities\";\n  import { correctedUrl, isRootRelative } from \"$lib/utilities/url-helpers\";\n  import { onMount } from \"svelte\";\n  import { checkIfShouldIndex } from \"$lib/utilities/seo.js\";\n\n  export let data = {};\n  export let errorPage = false;\n\n  const normalizeContentfulAssetUrl = (url) => (url ? `https:${url}` : \"\");\n\n  function createCanonicalUrl() {\n    let relativePath = $page?.url?.pathname; // starts with \"/\"\n    if (data.seoCanonicalLink) {\n      relativePath = isRootRelative(data.seoCanonicalLink)\n        ? correctedUrl(data.seoCanonicalLink)\n        : correctedUrl(`/${data.seoCanonicalLink}`);\n    }\n    let baseUrl = import.meta.env.VITE_BASE_URL || $page?.url?.origin;\n    if (baseUrl.endsWith(\"/\")) {\n      // remove trailing slash\n      baseUrl = baseUrl.substring(0, baseUrl.length - 1);\n    }\n    return `${baseUrl}${relativePath}`;\n  }\n\n  onMount(() => {\n    //Check that the host is obama.org to prevent blue/green environments from being indexed\n    checkIfShouldIndex(window.location.host);\n  });\n</script>\n\n<svelte:head>\n  <meta charset=\"UTF-8\" />\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n  <meta name=\"google-site-verification\" content=\"gd_ad0RSSgAZkAwXnOEALm4CavCD-a3uSIpVnEBBUOw\" />\n\n  <!-- favicon -->\n  <link rel=\"apple-touch-icon\" sizes=\"57x57\" href=\"/apple-icon-57x57.png\" />\n  <link rel=\"apple-touch-icon\" sizes=\"60x60\" href=\"/apple-icon-60x60.png\" />\n  <link rel=\"apple-touch-icon\" sizes=\"72x72\" href=\"/apple-icon-72x72.png\" />\n  <link rel=\"apple-touch-icon\" sizes=\"76x76\" href=\"/apple-icon-76x76.png\" />\n  <link rel=\"apple-touch-icon\" sizes=\"114x114\" href=\"/apple-icon-114x114.png\" />\n  <link rel=\"apple-touch-icon\" sizes=\"120x120\" href=\"/apple-icon-120x120.png\" />\n  <link rel=\"apple-touch-icon\" sizes=\"144x144\" href=\"/apple-icon-144x144.png\" />\n  <link rel=\"apple-touch-icon\" sizes=\"152x152\" href=\"/apple-icon-152x152.png\" />\n  <link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/apple-icon-180x180.png\" />\n  <link rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/android-icon-192x192.png\" />\n  <link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/favicon-32x32.png\" />\n  <link rel=\"icon\" type=\"image/png\" sizes=\"96x96\" href=\"/favicon-96x96.png\" />\n  <link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/favicon-16x16.png\" />\n  <link rel=\"manifest\" href=\"/manifest.json\" />\n  <meta name=\"msapplication-TileColor\" content=\"#ffffff\" />\n  <meta name=\"msapplication-TileImage\" content=\"/ms-icon-144x144.png\" />\n  <meta name=\"theme-color\" content=\"#ffffff\" />\n  <link rel=\"icon\" type=\"image/x-icon\" href=\"/favicon.ico\" />\n\n  <!-- general meta data -->\n  <!-- meta tags that Google understands: https://developers.google.com/search/docs/advanced/crawling/special-tags -->\n  <title>{data.headline} | The Obama Foundation</title>\n  <meta name=\"title\" content={data.seoTitle || data.headline} />\n  <meta name=\"description\" content={data.seoMetaDescription} />\n  <meta name=\"author\" content=\"Obama Foundation\" />\n  <meta name=\"subject\" content={data.seoKeyWords?.join(\", \")} />\n  <meta name=\"keywords\" content={data.seoKeyWords?.join(\", \")} />\n\n  {#if !errorPage}\n    <!-- Infinite loop in the build if we try to use the original URL in this spot -->\n    <link rel=\"canonical\" href={createCanonicalUrl()} />\n  {/if}\n\n  <meta\n    name=\"robots\"\n    content={import.meta.env.VITE_SEO_ROBOT_OVERRIDE ||\n      [data.seoNoIndex ? \"noindex\" : \"index\", data.seoNoFollow ? \"nofollow\" : \"follow\"].join(\",\")}\n  />\n\n  <!-- Twitter Card data https://dev.twitter.com/cards/overview -->\n  <meta name=\"twitter:card\" content=\"summary_large_image\" />\n  <meta name=\"twitter:site\" content=\"@ObamaFoundation\" />\n  <meta name=\"twitter:creator\" content=\"@ObamaFoundation\" />\n\n  <!-- Open Graph data http://ogp.me/ -->\n  <!-- required: used as Twitter Card fallback -->\n  <meta property=\"og:title\" content={data.seoTitle || data.headline} />\n  <meta property=\"og:type\" content=\"article\" />\n  <meta property=\"og:url\" content={createCanonicalUrl()} />\n  <meta\n    property=\"og:image\"\n    content={data.previewImageComponent?.fields?.imageAsset\n      ? normalizeContentfulAssetUrl(\n          buildSrc(data.previewImageComponent?.fields?.imageAsset, { w: 2108 })\n        )\n      : logo}\n  />\n  <meta property=\"og:image:alt\" content={data.previewImageComponent?.fields?.altText} />\n  <meta property=\"og:image:width\" content=\"2108\" />\n  <meta property=\"og:image:height\" content=\"1200\" />\n  <!-- recommended -->\n  <meta property=\"og:description\" content={data.seoMetaDescription} />\n  <meta property=\"og:locale\" content=\"en_US\" />\n  <meta property=\"og:site_name\" content=\"Obama Foundation\" />\n</svelte:head>\n","/**\n * Extracts the YouTube video ID from a given URL.\n *\n * @param {string} url - The YouTube video URL.\n * @returns {string|null} - The YouTube video ID if found, otherwise null.\n */\nexport const extractYoutubeVideoID = (url) => {\n  if (!url) {\n    return null;\n  }\n\n  const youtubeRegex =\n    /* eslint-disable-next-line */\n    /(?:https?:\\/\\/)?(?:www\\.)?youtu\\.?be(?:\\.com)?\\/?.*(?:watch|embed)?(?:.*v=|v\\/|\\/)([\\w\\-_]+)\\&?/;\n\n  const found = url.match(youtubeRegex);\n\n  return found ? found[1] : null;\n};\n\n/**\n * Returns the YouTube thumbnail URL for a given video ID.\n *\n * @param {string} videoId - The ID of the YouTube video.\n * @returns {string} The URL of the YouTube thumbnail.\n */\nexport const getYoutubeThumbnailUrlByVideoId = (videoId) =>\n  `https://i3.ytimg.com/vi/${videoId}/maxresdefault.jpg`;\n\n/**\n * Returns the YouTube thumbnail URL for a given YouTube video URL.\n * @param {string} url - The YouTube video URL.\n * @returns {string|null} The YouTube thumbnail URL or null if the video ID cannot be extracted.\n */\nexport const getYoutubeThumbnailUrl = (url) => {\n  let videoId = extractYoutubeVideoID(url);\n\n  return videoId ? getYoutubeThumbnailUrlByVideoId(videoId) : null;\n};\n\nconst VALID_SPOTIFY_EMBED_TYPES = [\"playlist\", \"episode\", \"show\", \"artist\", \"album\", \"track\"];\n\nexport const getSpotifyEmbedType = (url) => {\n  const urlParts = url.split(\"/\");\n  const type = urlParts[urlParts.length - 2];\n  return VALID_SPOTIFY_EMBED_TYPES.includes(type) ? type : null;\n};\n\n/**\n * Returns the Spotify iframe source URL from the share URL.\n *\n * @param {string} url - The Spotify share URL.\n * @returns {string} The Spotify iframe source URL.\n */\nexport const getSpotifyIframeSrcFromShareUrl = (url) => {\n  const urlParts = url.split(\"/\");\n  const type = getSpotifyEmbedType(url);\n  const id = urlParts[urlParts.length - 1];\n\n  return type && id ? `https://open.spotify.com/embed/${type}/${id}` : null;\n};\n","import { getYoutubeThumbnailUrlByVideoId } from \"$lib/utilities/components/embeds\";\n\nexport const getVideoComponentPropsForVideoContentType = (data) => {\n  const defaultThumbnail = getYoutubeThumbnailUrlByVideoId(data.fields?.embedID);\n\n  return {\n    header: data.fields?.videoTitle,\n    body: data.fields?.description,\n    caption: data.fields?.caption,\n    loopSection: {\n      startTime: data.fields?.loopStart || 0,\n      endTime: data.fields?.loopEnd\n    },\n    videoCoverImage: defaultThumbnail\n      ? {\n          src: defaultThumbnail,\n          alt: \"\"\n        }\n      : undefined,\n    videoId: data.fields?.embedID\n  };\n};\n","import {\n  buildSrc,\n  srcSetFromWidths,\n  sizesForBreakpoints,\n  SRCSET_WIDTHS,\n  mapTags\n} from \"$lib/utilities\";\nimport { textToId } from \"$lib/utilities/dom-helpers\";\nimport {\n  HeroHome,\n  HeroPrimary,\n  HeroSecondary,\n  HeroGeneric,\n  HeroArticle\n} from \"@ObamaFoundation/of-design-system\";\nimport { getImageAspectRatio } from \"../components/image-helpers\";\nimport { isExternalUrl } from \"../url-helpers\";\nimport { getVideoComponentPropsForVideoContentType } from \"$lib/utilities/contentTypes/video\";\n\nexport const HERO_VARIANTS = {\n  HOME_UPPER: \"Homepage - Upper case\",\n  HOME_LOWER: \"Homepage - Lower case\",\n  PRIMARY: \"Primary\",\n  SECONDARY: \"Secondary\",\n  DETAIL: \"Detail\",\n  FEATURED_STORY: \"Featured Story\"\n};\n\nexport const HERO_COMPONENT_MAP = {\n  [HERO_VARIANTS.HOME_UPPER]: HeroHome,\n  [HERO_VARIANTS.HOME_LOWER]: HeroHome,\n  [HERO_VARIANTS.PRIMARY]: HeroPrimary,\n  [HERO_VARIANTS.SECONDARY]: HeroSecondary,\n  [HERO_VARIANTS.DETAIL]: HeroGeneric,\n  [HERO_VARIANTS.FEATURED_STORY]: HeroArticle\n};\n\nexport const HERO_VARIANTS_WITH_THEME = [\n  HERO_VARIANTS.HOME_UPPER,\n  HERO_VARIANTS.HOME_LOWER,\n  HERO_VARIANTS.FEATURED_STORY,\n  HERO_VARIANTS.SECONDARY\n];\n\nconst HERO_IMAGE_SIZES = {\n  [HERO_VARIANTS.DETAIL]: { sm: \"100vw\", md: \"50vw\" },\n  [HERO_VARIANTS.FEATURED_STORY]: { sm: \"100vw\", md: \"50vw\" }\n};\n\n/**\n *\n * @param {*} fields\n * @param {*} pageData\n * @returns {{\n *  title: string,\n *  subtitle?: string,\n *  theme?: string,\n *  featuredImage?: Object,\n *  cta?: Object\n * }}\n */\nexport const getHeroBaseProps = (fields, pageData) => {\n  const widthsAt = HERO_IMAGE_SIZES[fields.formFactor];\n  const sizes = sizesForBreakpoints(widthsAt);\n  const showTheme = HERO_VARIANTS_WITH_THEME.includes(fields?.formFactor);\n\n  return {\n    title: fields?.title,\n    subtitle: fields?.subheadline,\n    theme: showTheme ? pageData?.fields?.theme || fields?.theme : null,\n    featuredImage: fields?.featuredImage\n      ? {\n          src: buildSrc(fields.featuredImage.fields?.imageAsset, { w: 3000 }),\n          alt: fields.featuredImage.fields?.altText,\n          srcset: srcSetFromWidths(\n            fields.featuredImage.fields?.imageAsset?.fields?.file?.url,\n            SRCSET_WIDTHS\n          ),\n          sizes,\n          eagerLoad: true,\n          theme: fields.featuredImage.fields.theme // TODO: might need to override in cases where the hero itself is themed\n        }\n      : null,\n    cta: fields?.callToAction\n      ? {\n          text: fields.callToAction.fields?.text,\n          url: fields.callToAction.fields?.destination?.fields?.url,\n          isExternal: isExternalUrl(fields.callToAction.fields?.destination?.fields?.url),\n          id: fields?.title ? `hero-cta-${textToId(fields.title)}` : null\n        }\n      : null\n  };\n};\n\n/**\n *\n * @param {*} fields\n * @param {*} pageData\n * @returns\n */\nexport const getHeroVariantProps = (fields, pageData) => {\n  const formFactorProps = {\n    [HERO_VARIANTS.HOME_UPPER]: {\n      ...getHeroBaseProps(fields, pageData),\n      hasVariableSizeText: true\n    },\n    [HERO_VARIANTS.HOME_LOWER]: {\n      ...getHeroBaseProps(fields, pageData)\n    },\n    [HERO_VARIANTS.PRIMARY]: {\n      ...getHeroBaseProps(fields, pageData),\n      animatedTitle: fields.animatedHeadline\n    },\n    [HERO_VARIANTS.SECONDARY]: {\n      ...getHeroBaseProps(fields, pageData),\n      featuredStory: fields.featuredStory\n        ? {\n            title: fields.featuredStory.fields.text,\n            subtitle: fields.featuredStory.fields.description,\n            cta: {\n              text: \"Learn more\",\n              url: fields.featuredStory.fields.url,\n              id: `hero-cta-${textToId(fields.featuredStory.fields.text)}`\n            },\n            image: {\n              src: buildSrc(fields.featuredStory.fields.image, { w: 1500 }),\n              alt: fields.featuredStory.fields.image.fields.description,\n              srcset: srcSetFromWidths(\n                fields.featuredStory.fields.image.fields.file.url,\n                SRCSET_WIDTHS\n              ),\n              sizes: sizesForBreakpoints({ sm: \"100vw\", md: \"50vw\" })\n            }\n          }\n        : null,\n      featuredVideo: fields.featuredVideo\n        ? getVideoComponentPropsForVideoContentType(fields.featuredVideo)\n        : null\n    },\n    [HERO_VARIANTS.DETAIL]: {\n      ...getHeroBaseProps(fields, pageData),\n      secondaryText: fields.secondaryText\n    },\n    [HERO_VARIANTS.FEATURED_STORY]: {\n      ...getHeroBaseProps(fields, pageData),\n      imageVariant:\n        fields.featuredImage &&\n        getImageAspectRatio(fields.featuredImage, fields.featuredImage.fields.aspectRatio),\n      tags: mapTags(pageData?.fields?.contentTags, 3, true)\n    }\n  };\n\n  // filter is the props passed into FilterList ContentType\n  const filters = fields.filters;\n\n  return { ...formFactorProps[fields.formFactor], filters };\n};\n","export function generateFilterOptions(headline, body, bodyProps, active) {\n  return {\n    headline,\n    active: active ?? false,\n    body,\n    bodyProps\n  };\n}\n\nexport function paginateJobs(jobs, jobsPerPage, upperBound) {\n  let index = -1;\n\n  return jobs.map((department) => {\n    const jobs = department.jobs.filter(() => {\n      index++;\n      return index >= upperBound - jobsPerPage && index < upperBound;\n    });\n\n    return {\n      ...department,\n      jobs\n    };\n  });\n}\n","<script>\n  import { onDestroy, onMount } from \"svelte\";\n\n  import { Filters, Button, Drawer, Checkbox } from \"@ObamaFoundation/of-design-system\";\n\n  import { getTotalNumberOfSelectedFilters } from \"$lib/utilities/filters\";\n  import { generateFilterOptions } from \"$lib/utilities/careers.js\";\n  import { textToId } from \"$lib/utilities/dom-helpers\";\n  import { filterItemsStore } from \"$lib/stores\";\n\n  /**\n   * The filter options as received from Contentful. They are used to generate the filter props\n   * we pass to the design system components on mount and reset filter state to its initial state.\n   * @type {Object}\n   */\n  export let rawFilters = undefined;\n\n  /**\n   * The transformed filter options that will appear in the filter list.\n   * @type {Object[]}\n   */\n  export let filterListIsOpen = false;\n\n  /**\n   * Filters that have been selected but not yet submitted.\n   * @type {Object[]}\n   */\n  let stagedFilters = [];\n\n  /**\n   * updates as selections are changed here\n   * or if store is otherwise modified (e.g., when an active filter is removed from Hero)\n   *\n   * @type {number}\n   */\n  $: numberOfSelectedOptions = getTotalNumberOfSelectedFilters(stagedFilters);\n  const unsubscribe = filterItemsStore.subscribe((store) => {\n    numberOfSelectedOptions = getTotalNumberOfSelectedFilters(store);\n  });\n\n  const toggleFilterList = (e) => {\n    filterListIsOpen = e.detail.drawerIsOpen;\n  };\n\n  const transformRawFiltersToFilterOptions = () =>\n    rawFilters?.fields.items?.map((filterItem) =>\n      generateFilterOptions(filterItem.fields.name, Checkbox, {\n        options: filterItem.fields.tags.map((tag) => {\n          return {\n            label: tag.fields.name,\n            id: `filter-${textToId(tag.fields.name.trim())}`,\n            isChecked: false\n          };\n        }),\n        name: filterItem.fields.name,\n        componentClass: \"lg:pt-[4px] lg:pb-4\"\n      })\n    ) || [];\n\n  const resetFilters = () => {\n    stagedFilters = transformRawFiltersToFilterOptions();\n  };\n\n  const handleClear = () => {\n    resetFilters();\n  };\n\n  const handleCheckBoxSelectionGroup = (e) => {\n    stagedFilters = e.detail.items;\n  };\n\n  const handleApply = () => {\n    filterItemsStore.set(stagedFilters);\n    filterListIsOpen = false;\n  };\n\n  onMount(() => {\n    resetFilters();\n  });\n\n  onDestroy(unsubscribe);\n</script>\n\n<Drawer on:drawerIsOpen={toggleFilterList} open={filterListIsOpen}>\n  <div slot=\"header\" class=\"text-black\" aria-live=\"polite\">\n    <p class=\"inline label\">Filter</p>\n    {#if numberOfSelectedOptions > 0}\n      <p class=\"inline label\">\n        <span>\n          {`(${numberOfSelectedOptions} selected): `}\n        </span>\n        <Button\n          id=\"clear-filters\"\n          class=\"underline\"\n          ariaLabel=\"Clear All Selected Filters\"\n          on:click={handleClear}>Clear All</Button\n        >\n      </p>\n    {/if}\n  </div>\n  <Filters\n    itemContainerClass=\"text-black\"\n    slot=\"filters\"\n    on:checkBoxSelectionGroup={handleCheckBoxSelectionGroup}\n    componentName=\"checkbox\"\n    filters={stagedFilters}\n  />\n  <Button\n    slot=\"button\"\n    on:click={handleApply}\n    id=\"apply-filters\"\n    disabled={numberOfSelectedOptions < 1}\n    variant=\"filled\"\n    label=\"Apply\"\n    buttonClass=\"w-full justify-center\"\n  />\n</Drawer>\n","<script>\n  import { onDestroy, setContext } from \"svelte\";\n\n  import { HeroGeneric, HeroSecondary, HeroPrimary } from \"@ObamaFoundation/of-design-system\";\n\n  import FilterList from \"$lib/components/FilterList.svelte\";\n  import { filterItemsStore } from \"$lib/stores\";\n  import { flattenAppliedFilterGroups } from \"$lib/utilities/filters\";\n\n  export let data;\n  export let component = HeroGeneric;\n\n  let filterListIsOpen = false;\n\n  setContext(\"containerized\", true);\n\n  const { featuredImage, featuredStory, cta, theme } = data;\n  const isTextOnly = !featuredImage && !featuredStory && !cta;\n\n  /**\n   * To avoid regressions we remove the margin on demand for components and cases with extra margins\n   *\n   * TODO: add tests for this once https://github.com/ObamaFoundation/obamaorg-swa/pull/2427 is merged in\n   * */\n  const getMargin = () => {\n    if (component === HeroSecondary && (featuredImage || !theme)) {\n      return \"mb-0\";\n    } else if ((component === HeroGeneric || component === HeroPrimary) && isTextOnly) {\n      return \"mb-0\";\n    }\n    return \"mb-15 md:mb-20 lg:mb-25\";\n  };\n\n  function toggleFilterList() {\n    filterListIsOpen = true;\n  }\n\n  let activeFilters;\n  const unsubscribe = filterItemsStore.subscribe((store) => {\n    if (data.filters) {\n      activeFilters = flattenAppliedFilterGroups(store);\n    }\n  });\n\n  const handleDeselectFilterItem = (e) => {\n    filterItemsStore.update((store) =>\n      store.map((currentFilterGroup) => {\n        currentFilterGroup.bodyProps.options.forEach((option) => {\n          if (option.id === e.detail.filterItemId) {\n            option.isChecked = false;\n          }\n        });\n        return currentFilterGroup;\n      })\n    );\n  };\n\n  onDestroy(unsubscribe);\n</script>\n\n<!-- TODO: Remove margins from this component.\nIf this is wrapping a single component the margins should be handled on the component itself -->\n<div class=\"-mt-[var(--nav-height)] {getMargin()}\">\n  <svelte:component\n    this={component}\n    {...data}\n    filterItems={activeFilters}\n    class=\"pt-[var(--nav-height)]\"\n    on:toggleFilterList={toggleFilterList}\n    on:deselectFilterItem={handleDeselectFilterItem}\n  />\n</div>\n\n{#if data.filters}\n  <FilterList rawFilters={data.filters} bind:filterListIsOpen />\n{/if}\n","<script>\n  // @ts-check\n  import { getContext } from \"svelte\";\n  import {\n    HERO_COMPONENT_MAP,\n    getHeroVariantProps,\n    HERO_VARIANTS_WITH_THEME\n  } from \"$lib/utilities/contentTypes/hero\";\n  import Hero from \"$lib/components/Hero.svelte\";\n  import { heroThemeStore } from \"$lib/stores\";\n  import { BREAK_POINTS } from \"$lib/utilities/constants\";\n  import { afterUpdate } from \"svelte\";\n\n  export let data;\n\n  let formFactor = data.fields?.formFactor;\n\n  const component = HERO_COMPONENT_MAP[formFactor];\n  const pageDataContext = getContext(\"pageData\");\n\n  let screenWidth = 0;\n\n  // The image displayed on the hero can depend on the current breakpoint.\n  $: breakpointAdjustedFields =\n    screenWidth < BREAK_POINTS.md && data.fields.mobileFeaturedImage\n      ? { ...data.fields, featuredImage: data.fields.mobileFeaturedImage }\n      : data.fields;\n\n  $: heroProps = getHeroVariantProps(breakpointAdjustedFields, pageDataContext);\n\n  let hasThemedBackground = HERO_VARIANTS_WITH_THEME.includes(formFactor);\n\n  afterUpdate(() => {\n    if (hasThemedBackground) {\n      // Used to update the the Global Navigation background color based on current Home Hero background color\n      heroThemeStore.set(heroProps?.theme ?? \"white\");\n    } else {\n      heroThemeStore.set(\"white\");\n    }\n  });\n</script>\n\n<svelte:window bind:innerWidth={screenWidth} />\n\n<Hero data={heroProps} {component} />\n"],"names":["ctx","insert_hydration","target","p","anchor","create_if_block","attr","div2","div2_class_value","div3","div3_class_value","div4","append_hydration","button","div0","div1","current","dirty","visibleClass","hiddenClass","id","$$props","label","subtitle","itemContainerClass","itemHeadingClass","itemBodySlotClass","active","key","uuid","overflowClass","handleToggle","$$invalidate","isOpen","onMount","collapseTransitionEnd","tick","iconAnimationClass","contentAnimationClass","contentOpacityClass","contentItemAnimationClass","switch_instance_spread_levels","switch_value","switch_instance_props","assign","get_spread_update","get_spread_object","t_value","div","set_data","t","accordionitem_changes","i","each_blocks","className","items","dispatch","createEventDispatcher","onCheckBoxSelectionGroup","e","item","button_changes","filterItems","handleFilterButtonClick","handleOptionButtonClick","filterItemId","clickOutside","element","callbackFunction","onClick","event","newCallbackFunction","extractYoutubeVideoId","url","youtubeRegex","found","debounce","func","wait","immediate","timeout","args","context","if_block1","input","input_class_value","inputBeforeClass","input_value_value","label_1","label_1_class_value","span","name","value","errorMessage","isChecked","disabled","required","componentClass","toggleCheck","checked","isInvalid","labelFocusClass","focusin_handler","focusout_handler","shouldRender","ref","$$value","div7","div6","div5","div0_transition","create_bidirectional_transition","fade","div5_transition","fly","open","closeDrawer","handleWindowKeyDown","animationEnd","closeButtonRef","containerRef","afterUpdate","lock","clearBodyLocks","introend_handler","create_if_block_1","options","handleChange","checkbox","detail","option","input_checked_value","is_function","t1","t1_value","selection","onChange","componentName","component","CheckboxGroup","Radio","filters","tags_1_changes","create_if_block_2","gridcontainer_changes","title","tags","featuredImage","theme","imageVariant","hasHalfWidthImage","contentClass","imageClass","imageAspectRatios","currentTheme","getTheme","image_spread_levels","create_if_block_4","pseudoElementClass","secondaryText","cta","get_key","span_style_value","create_if_block_3","transitionContainerClass","link_changes","div_class_value","_a","_b","hasVariableSizeText","titleEl","animate","titleFontSize","titleWidth","initTextFit","triggerTextFit","breakpoint","getBreakpoint","multiLine","Breakpoints","maxFontSize","maxFontSizeMapForFullWidthText","textFit","debouncedTriggerTextFit","recalculateTextFit","mutationObserver","mutations","mutation","mutationConfig","splitTitle","titleClass","animateContainer","animateTitleClass","animateOpacity","titleFontSizeClass","titleWidthClass","animationClass","animatedTitle","animation","isAnimationReady","onDestroy","titleSpanClass","containerAnimationClass","imageContainerClass","script","shouldAutoPlay","aspectRatioClasses","validateAspectRatioClasses","isPlaying","isMuted","shouldShowControls","loopSection","videoId","divId","shouldMute","player","playerVars","loadPlayer","onPlayerReady","onPlayerStateChange","timer","data","duration","restartVideoSection","startVideoFromBeginning","stopVideo","pauseVideo","playVideo","toggleMute","togglePause","create_if_block_5","if_block0","create_if_block_8","create_if_block_7","create_if_block_6","show_if","videoUrl","videoCoverImage","caption","header","body","isLiveStreamVideo","hasLoopingSection","autoplay","hasVideoStartedFromBeginning","youtube","youtubeTogglePause","youtubeStartVideoFromBeginning","playPauseButtonClass","isPlayingLoopSection","handleLoopToggle","fixedWidthClass","leftPositionClass","video_spread_levels","t2_value","t2","if_block2","if_block3","featuredStory","featuredVideo","columnClass","subtitleClass","isTextOnly","isFeatureImageLast","getContainerPaddingBottom","pagination","totalPages","maxVisiblePages","currentPage","shouldEllipse","shouldEllipsePrevious","shouldEllipseNext","hasPagesOtherThanFirstAndLast","startPage","generatePages","start","end","range","_","previousPages","visiblePages","nextPages","fromPage","generatedVisiblePages","toPage","generatedNextPages","button_class_value","pageNumber","arialLabel","hasPopup","expanded","classFocus","classUnderline","classButtonActive","ul","t0","t0_value","pageNumbers","onSelect","toggle","button0","button0_disabled_value","button1","button1_disabled_value","nav","li0","li1","li2","pageselector_changes","li","if_block","maxVisiblePagesDesktop","maxVisiblePagesMobile","initialActivePage","classArrowFocus","ariaLiveRegionText","updateAriaLive","watchCurrentPage","ariaLabelContext","defaultLabel","pageIdentifier","navigateTo","page","screenWidth","visiblePagesOnDevice","setMaxVisiblePages","section","DynamicHeadingContext","Fragment","themedSectionClass","mapTags","numberOfTags","useHref","tag","logo","checkIfShouldIndex","host","link","title_value","meta6","meta6_content_value","meta7","meta7_content_value","meta9","meta9_content_value","meta10","meta10_content_value","meta11","meta11_content_value","meta15","meta15_content_value","meta18","meta18_content_value","_d","_c","buildSrc","_f","_e","meta19","meta19_content_value","_h","_g","meta22","meta22_content_value","meta0","meta1","meta2","link0","link1","link2","link3","link4","link5","link6","link7","link8","link9","link10","link11","link12","link13","meta3","meta4","meta5","link14","meta8","meta12","meta13","meta14","meta16","meta17","meta20","meta21","meta23","meta24","errorPage","normalizeContentfulAssetUrl","createCanonicalUrl","relativePath","$page","isRootRelative","correctedUrl","baseUrl","extractYoutubeVideoID","getYoutubeThumbnailUrlByVideoId","getYoutubeThumbnailUrl","VALID_SPOTIFY_EMBED_TYPES","getSpotifyEmbedType","urlParts","type","getSpotifyIframeSrcFromShareUrl","getVideoComponentPropsForVideoContentType","defaultThumbnail","HERO_VARIANTS","HERO_COMPONENT_MAP","HeroHome","HeroPrimary","HeroSecondary","HeroGeneric","HeroArticle","HERO_VARIANTS_WITH_THEME","HERO_IMAGE_SIZES","getHeroBaseProps","fields","pageData","widthsAt","sizes","sizesForBreakpoints","showTheme","srcSetFromWidths","SRCSET_WIDTHS","_k","_j","_i","isExternalUrl","_n","_m","_l","textToId","getHeroVariantProps","formFactorProps","getImageAspectRatio","generateFilterOptions","headline","bodyProps","paginateJobs","jobs","jobsPerPage","upperBound","index","department","rawFilters","filterListIsOpen","stagedFilters","unsubscribe","filterItemsStore","store","numberOfSelectedOptions","getTotalNumberOfSelectedFilters","toggleFilterList","transformRawFiltersToFilterOptions","filterItem","Checkbox","resetFilters","handleClear","handleCheckBoxSelectionGroup","handleApply","filterlist_props","filterlist_changes","setContext","getMargin","activeFilters","flattenAppliedFilterGroups","handleDeselectFilterItem","currentFilterGroup","formFactor","pageDataContext","getContext","hasThemedBackground","heroThemeStore","heroProps","breakpointAdjustedFields","BREAK_POINTS"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]}