{"version":3,"file":"index.mjs","names":["props","dom.getRootId","dom.getItemId","dom.getItemTriggerId","dom.getItemContentId","props","dom.getItemTriggerId"],"sources":["../src/accordion.anatomy.ts","../../../../node_modules/.pnpm/@zag-js+dom-query@1.40.0/node_modules/@zag-js/dom-query/dist/chunk-QZ7TP4HQ.mjs","../../../../node_modules/.pnpm/@zag-js+dom-query@1.40.0/node_modules/@zag-js/dom-query/dist/shared.mjs","../../../../node_modules/.pnpm/@zag-js+dom-query@1.40.0/node_modules/@zag-js/dom-query/dist/node.mjs","../../../../node_modules/.pnpm/@zag-js+dom-query@1.40.0/node_modules/@zag-js/dom-query/dist/platform.mjs","../../../../node_modules/.pnpm/@zag-js+dom-query@1.40.0/node_modules/@zag-js/dom-query/dist/raf.mjs","../src/accordion.dom.ts","../src/accordion.connect.ts","../src/accordion.machine.ts","../src/accordion.props.ts"],"sourcesContent":["import { createAnatomy } from '@zag-js/anatomy'\n\n// .usa-accordion (root) > .usa-accordion__heading > .usa-accordion__button (trigger)\n// .usa-accordion (root) > .usa-accordion__content (content)\nexport const anatomy = createAnatomy('accordion').parts('root', 'item', 'itemTrigger', 'itemContent')\nexport const parts = anatomy.build()\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\nexport {\n  __publicField\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/shared.ts\nvar clamp = (value) => Math.max(0, Math.min(1, value));\nvar wrap = (v, idx) => {\n  return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nvar pipe = (...fns) => (arg) => fns.reduce((acc, fn) => fn(acc), arg);\nvar noop = () => void 0;\nvar isObject = (v) => typeof v === \"object\" && v !== null;\nvar MAX_Z_INDEX = 2147483647;\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\nvar sanitize = (str) => str.split(\"\").map((char) => {\n  const code = char.charCodeAt(0);\n  if (code > 0 && code < 128) return char;\n  if (code >= 128 && code <= 255) return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n  return \"\";\n}).join(\"\").trim();\nexport {\n  MAX_Z_INDEX,\n  ariaAttr,\n  clamp,\n  dataAttr,\n  isObject,\n  noop,\n  pipe,\n  sanitize,\n  wrap\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/node.ts\nimport { isObject } from \"./shared.mjs\";\nvar ELEMENT_NODE = 1;\nvar DOCUMENT_NODE = 9;\nvar DOCUMENT_FRAGMENT_NODE = 11;\nvar isHTMLElement = (el) => isObject(el) && el.nodeType === ELEMENT_NODE && typeof el.nodeName === \"string\";\nvar isDocument = (el) => isObject(el) && el.nodeType === DOCUMENT_NODE;\nvar isWindow = (el) => isObject(el) && el === el.window;\nvar isVisualViewport = (el) => isObject(el) && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n  if (isHTMLElement(node)) return node.localName || \"\";\n  return \"#document\";\n};\nfunction isRootElement(node) {\n  return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => isObject(el) && el.nodeType !== void 0;\nvar isShadowRoot = (el) => isNode(el) && el.nodeType === DOCUMENT_FRAGMENT_NODE && \"host\" in el;\nvar isInputElement = (el) => isHTMLElement(el) && el.localName === \"input\";\nvar isAnchorElement = (el) => !!el?.matches(\"a[href]\");\nvar isElementVisible = (el) => {\n  if (!isHTMLElement(el)) return false;\n  return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n};\nfunction isActiveElement(element) {\n  if (!element) return false;\n  const rootNode = element.getRootNode();\n  return getActiveElement(rootNode) === element;\n}\nvar TEXTAREA_SELECT_REGEX = /(textarea|select)/;\nfunction isEditableElement(el) {\n  if (el == null || !isHTMLElement(el)) return false;\n  try {\n    return isInputElement(el) && el.selectionStart != null || TEXTAREA_SELECT_REGEX.test(el.localName) || el.isContentEditable || el.getAttribute(\"contenteditable\") === \"true\" || el.getAttribute(\"contenteditable\") === \"\";\n  } catch {\n    return false;\n  }\n}\nfunction getParentElement(node) {\n  const parentNode = node.parentNode;\n  if (isShadowRoot(parentNode)) return parentNode.host;\n  return parentNode;\n}\nfunction getAncestorElements(node) {\n  const ancestors = [];\n  while (node) {\n    ancestors.push(node);\n    node = getParentElement(node);\n  }\n  return ancestors;\n}\nfunction contains(parent, child) {\n  if (!parent || !child) return false;\n  if (!isHTMLElement(parent) || !isNode(child)) return false;\n  if (isHTMLElement(child) && parent === child) return true;\n  if (parent.contains(child)) return true;\n  const rootNode = child.getRootNode?.();\n  if (rootNode && isShadowRoot(rootNode)) {\n    let next = child;\n    while (next) {\n      if (parent === next) return true;\n      next = next.parentNode || next.host;\n    }\n  }\n  return false;\n}\nfunction getDocument(el) {\n  if (isDocument(el)) return el;\n  if (isWindow(el)) return el.document;\n  return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n  return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n  if (isShadowRoot(el)) return getWindow(el.host);\n  if (isDocument(el)) return el.defaultView ?? window;\n  if (isHTMLElement(el)) return el.ownerDocument?.defaultView ?? window;\n  return window;\n}\nfunction getActiveElement(rootNode) {\n  let activeElement = rootNode.activeElement;\n  while (activeElement?.shadowRoot) {\n    const el = activeElement.shadowRoot.activeElement;\n    if (!el || el === activeElement) break;\n    else activeElement = el;\n  }\n  return activeElement;\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === \"html\") return node;\n  const result = node.assignedSlot || node.parentNode || isShadowRoot(node) && node.host || getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getRootNode(node) {\n  let result;\n  try {\n    result = node.getRootNode({ composed: true });\n    if (isDocument(result) || isShadowRoot(result)) return result;\n  } catch {\n  }\n  return node.ownerDocument ?? document;\n}\nexport {\n  contains,\n  getActiveElement,\n  getAncestorElements,\n  getDocument,\n  getDocumentElement,\n  getNodeName,\n  getParentElement,\n  getParentNode,\n  getRootNode,\n  getWindow,\n  isActiveElement,\n  isAnchorElement,\n  isDocument,\n  isEditableElement,\n  isElementVisible,\n  isHTMLElement,\n  isInputElement,\n  isNode,\n  isRootElement,\n  isShadowRoot,\n  isVisualViewport,\n  isWindow\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n  const agent = navigator.userAgentData;\n  return agent?.platform ?? navigator.platform;\n}\nfunction getUserAgent() {\n  const ua2 = navigator.userAgentData;\n  if (ua2 && Array.isArray(ua2.brands)) {\n    return ua2.brands.map(({ brand, version }) => `${brand}/${version}`).join(\" \");\n  }\n  return navigator.userAgent;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(getUserAgent());\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isIPhone = () => pt(/^iPhone/i);\nvar isIPad = () => pt(/^iPad/i) || isMac() && navigator.maxTouchPoints > 1;\nvar isIos = () => isIPhone() || isIPad();\nvar isApple = () => isMac() || isIos();\nvar isMac = () => pt(/^Mac/i);\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/Firefox/i);\nvar isChrome = () => ua(/Chrome/i);\nvar isWebKit = () => ua(/AppleWebKit/i) && !isChrome();\nvar isAndroid = () => ua(/Android/i);\nexport {\n  getPlatform,\n  getUserAgent,\n  isAndroid,\n  isApple,\n  isChrome,\n  isDom,\n  isFirefox,\n  isIPad,\n  isIPhone,\n  isIos,\n  isMac,\n  isSafari,\n  isTouchDevice,\n  isWebKit\n};\n","import {\n  __publicField\n} from \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/raf.ts\nvar AnimationFrame = class _AnimationFrame {\n  constructor() {\n    __publicField(this, \"id\", null);\n    __publicField(this, \"fn_cleanup\");\n    __publicField(this, \"cleanup\", () => {\n      this.cancel();\n    });\n  }\n  static create() {\n    return new _AnimationFrame();\n  }\n  request(fn) {\n    this.cancel();\n    this.id = globalThis.requestAnimationFrame(() => {\n      this.id = null;\n      this.fn_cleanup = fn?.();\n    });\n  }\n  cancel() {\n    if (this.id !== null) {\n      globalThis.cancelAnimationFrame(this.id);\n      this.id = null;\n    }\n    this.fn_cleanup?.();\n    this.fn_cleanup = void 0;\n  }\n  isActive() {\n    return this.id !== null;\n  }\n};\nfunction raf(fn) {\n  const frame = AnimationFrame.create();\n  frame.request(fn);\n  return frame.cleanup;\n}\nfunction nextTick(fn) {\n  const set = /* @__PURE__ */ new Set();\n  function raf2(fn2) {\n    const id = globalThis.requestAnimationFrame(fn2);\n    set.add(() => globalThis.cancelAnimationFrame(id));\n  }\n  raf2(() => raf2(fn));\n  return function cleanup() {\n    set.forEach((fn2) => fn2());\n  };\n}\nfunction queueBeforeEvent(el, type, cb) {\n  const cancelTimer = raf(() => {\n    el.removeEventListener(type, exec, true);\n    cb();\n  });\n  const exec = () => {\n    cancelTimer();\n    cb();\n  };\n  el.addEventListener(type, exec, { once: true, capture: true });\n  return cancelTimer;\n}\nexport {\n  AnimationFrame,\n  nextTick,\n  queueBeforeEvent,\n  raf\n};\n","import type { Scope } from '@zag-js/core'\nimport { queryAll } from '@zag-js/dom-query'\n\n// ACCORDION = `.usa-accordion, .usa-accordion--bordered`\n// BUTTON = `.usa-accordion__button[aria-controls]:not(.usa-banner__button)`\n\nexport const getRootId = (ctx: Scope) => ctx.ids?.root ?? `accordion:${ctx.id}`\nexport const getItemId = (ctx: Scope, value: string) => ctx.ids?.item?.(value) ?? `accordion:${ctx.id}:item:${value}`\nexport function getItemContentId(ctx: Scope, value: string) {\n  return ctx.ids?.itemContent?.(value) ?? `accordion:${ctx.id}:content:${value}`\n}\nexport function getItemTriggerId(ctx: Scope, value: string) {\n  return ctx.ids?.itemTrigger?.(value) ?? `accordion:${ctx.id}:trigger:${value}`\n}\n\nexport const getRootEl = (ctx: Scope) => ctx.getById(getRootId(ctx))\n\n// Uses data-ownedby to filter to direct children, mirroring the\nexport function getTriggerEls(ctx: Scope) {\n  const ownerId = CSS.escape(getRootId(ctx))\n  const selector = `[data-controls][data-ownedby='${ownerId}']`\n  return queryAll(getRootEl(ctx), selector)\n}\n","import type { Service } from '@zag-js/core'\nimport type { NormalizeProps, PropTypes } from '@zag-js/types'\nimport type { AccordionApi, AccordionSchema, ItemProps } from './accordion.types'\nimport { isSafari } from '@zag-js/dom-query'\nimport { parts } from './accordion.anatomy'\nimport * as dom from './accordion.dom'\n\nexport function connect<T extends PropTypes>(\n  service: Service<AccordionSchema>,\n  normalize: NormalizeProps<T>,\n): AccordionApi<T> {\n  const { state, context, send, prop, scope } = service\n\n  const value = context.get('value')\n  const multiple = prop('multiple')\n\n  function show(itemValue: string) {\n    send({ type: 'TRIGGER.EXPAND', value: itemValue })\n  }\n\n  function hide(itemValue: string) {\n    send({ type: 'TRIGGER.COLLAPSE', value: itemValue })\n  }\n\n  function toggle(itemValue: string) {\n    if (value.includes(itemValue)) {\n      send({ type: 'TRIGGER.COLLAPSE', value: itemValue })\n    }\n    else {\n      send({ type: 'TRIGGER.EXPAND', value: itemValue })\n    }\n  }\n\n  function setValue(nextValue: string[]) {\n    let coerced = nextValue\n    if (!multiple && coerced.length > 1) {\n      coerced = [coerced[0]!]\n    }\n    send({ type: 'VALUE.SET', value: coerced })\n  }\n\n  function getItemState(props: ItemProps) {\n    return {\n      expanded: value.includes(props.value),\n    }\n  }\n\n  const focused = state.matches('focused')\n\n  return {\n    focused,\n    value,\n    setValue,\n    getItemState,\n    show,\n    hide,\n    toggle,\n\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        'id': dom.getRootId(scope),\n        'data-allow-multiple': multiple || undefined,\n      })\n    },\n\n    getItemProps(props) {\n      const itemState = getItemState(props)\n      return normalize.element({\n        ...parts.item.attrs,\n        'id': dom.getItemId(scope, props.value),\n        'data-state': itemState.expanded ? 'open' : 'closed',\n      })\n    },\n\n    getItemTriggerProps(props) {\n      const { value: itemValue } = props\n      const itemState = getItemState(props)\n\n      return normalize.button({\n        ...parts.itemTrigger.attrs,\n        'type': 'button',\n        'id': dom.getItemTriggerId(scope, itemValue),\n        'aria-expanded': itemState.expanded,\n        'aria-controls': dom.getItemContentId(scope, itemValue),\n        // data-controls and data-ownedby used by dom.ts getTriggerEls\n        // to filter buttons to this accordion instance\n        'data-controls': dom.getItemContentId(scope, itemValue),\n        'data-ownedby': dom.getRootId(scope),\n        'data-state': itemState.expanded ? 'open' : 'closed',\n        onClick(event) {\n          // Safari doesn't focus buttons on click — normalize behavior\n          if (isSafari()) {\n            event.currentTarget.focus()\n          }\n          send({ type: 'TRIGGER.CLICK', value: itemValue })\n        },\n        onFocus() {\n          send({ type: 'TRIGGER.FOCUS', value: itemValue })\n        },\n        onBlur() {\n          send({ type: 'TRIGGER.BLUR', value: itemValue })\n        },\n      })\n    },\n\n    getItemContentProps(props) {\n      const itemState = getItemState(props)\n      return normalize.element({\n        ...parts.itemContent.attrs,\n        'role': 'region',\n        'id': dom.getItemContentId(scope, props.value),\n        'aria-labelledby': dom.getItemTriggerId(scope, props.value),\n        'hidden': !itemState.expanded,\n        'data-state': itemState.expanded ? 'open' : 'closed',\n      })\n    },\n  }\n}\n","import type { AccordionSchema } from './accordion.types'\nimport { createMachine } from '@zag-js/core'\nimport { getWindow, raf } from '@zag-js/dom-query'\nimport * as dom from './accordion.dom'\n\n// Pure DOM read — checks if all four edges of the element are within the viewport.\nfunction isElementInViewport(el: HTMLElement) {\n  const win = getWindow(el)\n  const docEl = el.ownerDocument.documentElement\n  const rect = el.getBoundingClientRect()\n  return (\n    rect.top >= 0\n    && rect.left >= 0\n    && rect.bottom <= (win.innerHeight || docEl.clientHeight)\n    && rect.right <= (win.innerWidth || docEl.clientWidth)\n  )\n}\n\nexport const machine = createMachine<AccordionSchema>({\n  props({ props }) {\n    return {\n      multiple: false,\n      defaultValue: [],\n      ...props,\n    }\n  },\n\n  initialState() {\n    return 'idle'\n  },\n\n  context({ prop, bindable }) {\n    return {\n      value: bindable<string[]>(() => ({\n        defaultValue: prop('defaultValue'),\n        value: prop('value'),\n        onChange(value) {\n          prop('onValueChange')?.({ value })\n        },\n      })),\n    }\n  },\n\n  // Global events — always handled regardless of state\n  on: {\n    'VALUE.SET': {\n      actions: ['setValue'],\n    },\n  },\n\n  states: {\n    idle: {\n      on: {\n        'TRIGGER.CLICK': [\n          {\n            guard: 'isExpanded',\n            actions: ['collapse'],\n          },\n          {\n            actions: ['expand', 'scrollIntoView'],\n          },\n        ],\n        'TRIGGER.EXPAND': {\n          actions: ['expand', 'scrollIntoView'],\n        },\n        'TRIGGER.COLLAPSE': {\n          actions: ['collapse'],\n        },\n        'TRIGGER.FOCUS': {\n          target: 'focused',\n        },\n      },\n    },\n    focused: {\n      on: {\n        'TRIGGER.CLICK': [\n          {\n            guard: 'isExpanded',\n            actions: ['collapse'],\n          },\n          {\n            actions: ['expand', 'scrollIntoView'],\n          },\n        ],\n        'TRIGGER.EXPAND': {\n          actions: ['expand', 'scrollIntoView'],\n        },\n        'TRIGGER.COLLAPSE': {\n          actions: ['collapse'],\n        },\n        'TRIGGER.BLUR': {\n          target: 'idle',\n        },\n      },\n    },\n  },\n\n  implementations: {\n    guards: {\n      isExpanded: ({ context, event }) => context.get('value').includes(event.value),\n    },\n\n    actions: {\n      // In single-select: clearing the array (no other items to manage)\n      // In multiple: removing just this value from the array\n      collapse({ context, prop, event }) {\n        const current = context.get('value')\n        // In multiple, remove just this value.\n        const next = prop('multiple')\n          ? current.filter((v: string) => v !== event.value)\n          : []\n        context.set('value', next)\n      },\n\n      // In single-select (L49-54): expand this, collapse all others\n      //   → equivalent to replacing array with [event.value]\n      // In multiple: add to existing array\n      expand({ context, prop, event }) {\n        const current = context.get('value')\n        // If not multiselectable, replace entire array (collapses others implicitly).\n        const next = prop('multiple')\n          ? [...current, event.value]\n          : [event.value]\n        context.set('value', next)\n      },\n\n      // scroll it into view. Uses raf() because the framework hasn't re-rendered\n      // yet when actions fire — the collapsed sibling content needs to be hidden\n      // first so the viewport check is accurate.\n      scrollIntoView({ scope, event }) {\n        raf(() => {\n          const triggerEl = scope.getById(dom.getItemTriggerId(scope, event.value))\n          if (triggerEl && !isElementInViewport(triggerEl)) {\n            triggerEl.scrollIntoView()\n          }\n        })\n      },\n\n      setValue({ context, event }) {\n        context.set('value', event.value)\n      },\n    },\n  },\n})\n","import type { AccordionProps, ItemProps } from './accordion.types'\nimport { createProps } from '@zag-js/types'\nimport { createSplitProps } from '@zag-js/utils'\n\nexport const props = createProps<AccordionProps>()([\n  'defaultValue',\n  'getRootNode',\n  'id',\n  'ids',\n  'multiple',\n  'onValueChange',\n  'value',\n])\nexport const splitProps = createSplitProps<Partial<AccordionProps>>(props)\n\nexport const itemProps = createProps<ItemProps>()(['value'])\nexport const splitItemProps = createSplitProps<ItemProps>(itemProps)\n"],"x_google_ignoreList":[1,2,3,4,5],"mappings":"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"}