@mond-design-system/react 6.1.0 → 6.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +275 -82
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +154 -8
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +37 -8
- package/dist/index.d.ts +37 -8
- package/dist/index.js +275 -82
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/internal/cx.ts","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Text/Text.module.css?mds-scoped","../src/components/Text/Text.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Heading/Heading.module.css?mds-scoped","../src/components/Heading/Heading.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Spinner/Spinner.module.css?mds-scoped","../src/components/Spinner/Spinner.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Icon/Icon.module.css?mds-scoped","../src/components/Icon/Icon.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Button/Button.module.css?mds-scoped","../src/components/Button/Button.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Link/Link.module.css?mds-scoped","../src/components/Link/Link.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Avatar/Avatar.module.css?mds-scoped","../src/components/Avatar/Avatar.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/AvatarGroup/AvatarGroup.module.css?mds-scoped","../src/components/AvatarGroup/AvatarGroup.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Badge/Badge.module.css?mds-scoped","../src/components/Badge/Badge.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/Chip.module.css?mds-scoped","../src/components/Chip/Chip.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/ChipGroup.module.css?mds-scoped","../src/components/Chip/ChipGroup.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/ChipBar.module.css?mds-scoped","../src/components/Chip/ChipBar.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/CountButton/CountButton.module.css?mds-scoped","../src/components/CountButton/CountButton.tsx","../src/internal/glyphs.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Field/Field.module.css?mds-scoped","../src/components/Field/Field.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Select/Select.module.css?mds-scoped","../src/components/Select/Select.tsx","../src/hooks/overlayHistory.ts","../src/hooks/useOverlay.ts","../src/hooks/usePresence.ts","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/internal/Overlay.module.css?mds-scoped","../src/internal/Overlay.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Sheet/Sheet.module.css?mds-scoped","../src/components/Sheet/Sheet.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/DateTimePicker/DateTimePicker.module.css?mds-scoped","../src/components/DateTimePicker/DateTimePicker.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tag/Tag.module.css?mds-scoped","../src/components/Tag/Tag.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Divider/Divider.module.css?mds-scoped","../src/components/Divider/Divider.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/VisuallyHidden/VisuallyHidden.module.css?mds-scoped","../src/components/VisuallyHidden/VisuallyHidden.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Skeleton/Skeleton.module.css?mds-scoped","../src/components/Skeleton/Skeleton.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ProgressBar/ProgressBar.module.css?mds-scoped","../src/components/ProgressBar/ProgressBar.tsx","../src/internal/forkRef.ts","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Input/Input.module.css?mds-scoped","../src/components/Input/Input.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/PasswordInput/PasswordInput.module.css?mds-scoped","../src/components/PasswordInput/PasswordInput.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Textarea/Textarea.module.css?mds-scoped","../src/components/Textarea/Textarea.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Checkbox/Checkbox.module.css?mds-scoped","../src/components/Checkbox/Checkbox.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Radio/Radio.module.css?mds-scoped","../src/components/Radio/Radio.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Switch/Switch.module.css?mds-scoped","../src/components/Switch/Switch.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/SegmentedControl/SegmentedControl.module.css?mds-scoped","../src/components/SegmentedControl/SegmentedControl.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Scroller/Scroller.module.css?mds-scoped","../src/components/Scroller/Scroller.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/List/List.module.css?mds-scoped","../src/components/List/List.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/DataTable/DataTable.module.css?mds-scoped","../src/components/DataTable/DataTable.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/EmptyState/EmptyState.module.css?mds-scoped","../src/components/EmptyState/EmptyState.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tabs/Tabs.module.css?mds-scoped","../src/components/Tabs/Tabs.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Toast/Toast.module.css?mds-scoped","../src/components/Toast/Toast.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Stack/Stack.module.css?mds-scoped","../src/components/Stack/Stack.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Inline/Inline.module.css?mds-scoped","../src/components/Inline/Inline.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Container/Container.module.css?mds-scoped","../src/components/Container/Container.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Card/Card.module.css?mds-scoped","../src/components/Card/Card.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Modal/Modal.module.css?mds-scoped","../src/components/Modal/Modal.tsx","../src/internal/useAnchoredPosition.ts","../src/internal/useDismissOnOutside.ts","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Popover/Popover.module.css?mds-scoped","../src/components/Popover/Popover.tsx","../src/hooks/useRovingGroup.ts","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Menu/Menu.module.css?mds-scoped","../src/components/Menu/Menu.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tooltip/Tooltip.module.css?mds-scoped","../src/components/Tooltip/Tooltip.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ConfirmDialog/ConfirmDialog.module.css?mds-scoped","../src/components/ConfirmDialog/ConfirmDialog.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Screen/Screen.module.css?mds-scoped","../src/components/Screen/Screen.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/AppBar/AppBar.module.css?mds-scoped","../src/components/AppBar/AppBar.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/TabBar/TabBar.module.css?mds-scoped","../src/components/TabBar/TabBar.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/SideNav/SideNav.module.css?mds-scoped","../src/components/SideNav/SideNav.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/MediaPlaceholder/MediaPlaceholder.module.css?mds-scoped","../src/components/MediaPlaceholder/MediaPlaceholder.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ImageCarousel/ImageCarousel.module.css?mds-scoped","../src/components/ImageCarousel/ImageCarousel.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/UploadProgress/UploadProgress.module.css?mds-scoped","../src/components/UploadProgress/UploadProgress.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/FileDrop/FileDrop.module.css?mds-scoped","../src/components/FileDrop/FileDrop.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Lightbox/Lightbox.module.css?mds-scoped","../src/components/Lightbox/Lightbox.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/VideoPlayer/VideoPlayer.module.css?mds-scoped","../src/components/VideoPlayer/VideoPlayer.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Breadcrumb/Breadcrumb.module.css?mds-scoped","../src/components/Breadcrumb/Breadcrumb.tsx"],"names":["createElement","size","jsx","createContext","useContext","jsxs","Children","Fragment","useId","useRef","useEffect","useState","createPortal","useMemo","useCallback","tab","Element","computePosition","offset","flip","shift","autoUpdate","GAP","STEP","at"],"mappings":";;;;;;;;AASO,SAAS,MAAM,KAAA,EAAyD;AAC7E,EAAA,OAAO,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACvC;;;ACVA,IAAO,sBAAQ,EAAC,MAAA,EAAO,gBAAA,EAAiB,cAAA,EAAe,0BAAyB,eAAA,EAAgB,yBAAA,EAA0B,cAAA,EAAe,wBAAA,EAAyB,gBAAe,wBAAA,EAAyB,iBAAA,EAAkB,6BAA4B,cAAA,EAAe,wBAAA,EAAyB,kBAAiB,0BAAA,EAA2B,YAAA,EAAa,sBAAA,EAAuB,cAAA,EAAe,0BAAyB,aAAA,EAAc,uBAAA,EAAwB,iBAAgB,yBAAA,EAA0B,aAAA,EAAc,yBAAwB,cAAA,EAAe,wBAAA,EAAyB,cAAA,EAAe,wBAAA,EAAyB,cAAa,sBAAA,EAAuB,cAAA,EAAe,0BAAyB,aAAA,EAAc,uBAAA,EAAwB,YAAW,oBAAA,EAAoB;;;AC6B/uB,IAAM,OAAA,GAA4D;AAAA,EAChE,IAAA,EAAM,GAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,IAAA,EAAM,GAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,YAAA,GAAuD;AAAA,EAC3D,IAAA,EAAM,WAAA;AAAA,EACN,IAAA,EAAM,OAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAYO,SAAS,IAAA,CAAK;AAAA,EACnB,OAAA,GAAU,MAAA;AAAA,EACV,EAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,MAAM,OAAA,GAAU,EAAA,IAAM,OAAA,CAAQ,OAAO,CAAA;AACrC,EAAA,MAAM,YAAA,GAAe,IAAA,IAAQ,YAAA,CAAa,OAAO,CAAA,IAAK,SAAA;AACtD,EAAA,OAAOA,oBAAc,OAAA,EAAS;AAAA,IAC5B,SAAA,EAAW,EAAA;AAAA,MACT,mBAAA,CAAO,IAAA;AAAA,MACP,mBAAA,CAAO,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA;AAAA,MAC3B,mBAAA,CAAO,CAAA,KAAA,EAAQ,YAAY,CAAA,CAAE,CAAA;AAAA,MAC7B,KAAA,IAAS,mBAAA,CAAO,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,CAAA;AAAA,MAChC,YAAY,mBAAA,CAAO,QAAA;AAAA,MACnB;AAAA,KACF;AAAA,IACA,GAAG;AAAA,GACJ,CAAA;AACH;;;AC3EA,IAAO,sBAAA,GAAQ,EAAC,SAAA,EAAU,sBAAA,EAAuB,mBAAkB,8BAAA,EAA+B,eAAA,EAAgB,8BAA6B,kBAAA,EAAmB,+BAAA,EAAgC,iBAAgB,4BAAA,EAA6B,cAAA,EAAe,6BAA4B,gBAAA,EAAiB,6BAAA,EAA8B,gBAAe,2BAAA,EAA4B,aAAA,EAAc,0BAAA,EAA2B,eAAA,EAAgB,4BAAA,EAA4B;;;ACkBzc,IAAM,aAAA,GAAsD;AAAA,EAC1D,CAAA,EAAG,SAAA;AAAA,EACH,CAAA,EAAG,OAAA;AAAA,EACH,CAAA,EAAG,UAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AAUO,SAAS,OAAA,CAAQ;AAAA,EACtB,KAAA,GAAQ,CAAA;AAAA,EACR,OAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA+B;AAC7B,EAAA,OAAOA,mBAAAA,CAAc,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI;AAAA,IAChC,SAAA,EAAW,EAAA;AAAA,MACT,sBAAA,CAAO,OAAA;AAAA,MACP,uBAAO,CAAA,QAAA,EAAW,OAAA,IAAW,aAAA,CAAc,KAAK,CAAC,CAAA,CAAE,CAAA;AAAA,MACnD,sBAAA,CAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAA;AAAA,MACrB;AAAA,KACF;AAAA,IACA,GAAG;AAAA,GACJ,CAAA;AACH;;;ACjDA,IAAO,sBAAA,GAAQ,EAAC,SAAA,EAAU,sBAAiD,CAAA;ACsBpE,SAAS,OAAA,CAAQ;AAAA,EACtB,MAAAC,KAAAA,GAAO,EAAA;AAAA,EACP,KAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA+B;AAG7B,EAAA,MAAM,IAAA,GAAgB;AAAA,IACpB,gBAAA,EAAkB,GAAGA,KAAI,CAAA,EAAA,CAAA;AAAA,IACzB,kBAAA,EAAoB,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAMA,KAAAA,GAAO,EAAE,CAAC,CAAC,CAAA,EAAA;AAAA,GAC3D;AACA,EAAA,uBACEC,cAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,EAAA,CAAG,sBAAA,CAAO,OAAA,EAAS,SAAS,CAAA;AAAA,MACvC,KAAA,EAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM;AAAA,MAC1B,GAAG;AAAA;AAAA,GACN;AAEJ;;;AC5CA,IAAO,mBAAA,GAAQ,EAAC,MAAA,EAAO,gBAAA,EAAiB,WAAA,EAAY,qBAAA,EAAsB,SAAA,EAAU,mBAAA,EAAoB,SAAA,EAAU,mBAAA,EAAoB,SAAA,EAAU,mBAAA,EAAmB;ACenK,IAAM,WAAA,GAAcC,oBAAiC,IAAI,CAAA;AAsBlD,SAAS,YAAA,CAAa,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAoC;AAClF,EAAA,uBAAOD,cAAAA,CAAC,WAAA,CAAY,UAAZ,EAAqB,KAAA,EAAO,QAAS,QAAA,EAAS,CAAA;AACxD;AAMA,IAAM,UAAoC,EAAE,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAG;AAanE,IAAM,MAAA,uBAAa,GAAA,EAAY;AAGxB,SAAS,IAAA,CAAK,EAAE,IAAA,EAAM,IAAA,EAAAD,OAAM,KAAA,EAAO,SAAA,EAAW,GAAG,IAAA,EAAK,EAA4B;AACvF,EAAA,MAAM,MAAA,GAASG,iBAAW,WAAW,CAAA;AACrC,EAAA,IAAI,WAAW,IAAA,IAAQ,CAAC,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA,EAAG;AACxC,IAAA,MAAA,CAAO,IAAI,IAAI,CAAA;AACf,IAAA,OAAA,CAAQ,KAAA;AAAA,MACN,SAAS,IAAI,CAAA,iFAAA;AAAA,KACf;AAAA,EACF;AACA,EAAA,uBACEF,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,mBAAA,CAAO,IAAA,EAAM,mBAAA,CAAO,QAAQD,KAAAA,IAAQ,MAAM,CAAA,CAAE,CAAA,EAAG,SAAS,CAAA;AAAA,MACrE,GAAI,KAAA,GAAQ,EAAE,IAAA,EAAM,KAAA,EAAO,cAAc,KAAA,EAAM,GAAI,EAAE,aAAA,EAAe,IAAA,EAAK;AAAA,MACzE,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA,MAAA,GAAS,IAAA,EAAM,EAAE,IAAA,EAAMA,KAAAA,KAAS,SAAY,MAAA,GAAY,OAAA,CAAQA,KAAI,CAAA,EAAG;AAAA;AAAA,GAC1E;AAEJ;;;AC9EA,IAAO,qBAAA,GAAQ,EAAC,QAAA,EAAS,oBAAA,EAAqB,WAAU,qBAAA,EAAsB,SAAA,EAAU,qBAAA,EAAsB,SAAA,EAAU,qBAAA,EAAsB,MAAA,EAAO,kBAAA,EAAmB,iBAAA,EAAkB,+BAA8B,mBAAA,EAAoB,+BAAA,EAAgC,eAAA,EAAgB,2BAAA,EAA4B,mBAAA,EAAoB,+BAAA,EAAgC,gBAAA,EAAiB,4BAAA,EAA6B,mBAAkB,6BAAA,EAA8B,WAAA,EAAY,uBAAA,EAAwB,WAAA,EAAY,yBAAwB,UAAA,EAAW,sBAAA,EAAuB,YAAA,EAAa,wBAAA,EAAyB,cAAa,wBAAA,EAAwB;AC8C/nB,IAAM,UAAsC,EAAE,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAG;AAc9D,SAAS,MAAA,CAAO;AAAA,EACrB,OAAA,GAAU,SAAA;AAAA,EACV,MAAAA,KAAAA,GAAO,IAAA;AAAA,EACP,KAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA,GAAW,KAAA;AAAA,EACX,IAAA,GAAO,QAAA;AAAA,EACP,IAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA8B;AAO5B,EAAA,MAAM,KAAA,GACJ,QAAA,IAAY,QAAA,IAAY,IAAA,mBAAOC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,qBAAA,CAAO,IAAA,EAAO,QAAA,EAAS,CAAA,GAAU,QAAA;AAInF,EAAA,MAAM,IAAA,GAAO,OAAA,IAAW,QAAA,GAAW,IAAA,GAAO,KAAA;AAE1C,EAAA,MAAM,OAAA,GAAuB,EAAA,KAAO,IAAA,KAAS,MAAA,GAAY,GAAA,GAAM,QAAA,CAAA;AAC/D,EAAA,MAAM,WAAW,OAAA,KAAY,QAAA;AAC7B,EAAA,MAAM,GAAA,GAAM,WAAW,EAAE,IAAA,EAAM,UAAU,QAAA,IAAY,OAAA,EAAQ,GAAI,EAAE,IAAA,EAAK;AAExE,EAAA,uBACEG,eAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,qBAAA,CAAO,MAAA;AAAA,QACP,qBAAA,CAAO,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA;AAAA,QAC3B,qBAAA,CAAO,CAAA,KAAA,EAAQJ,KAAI,CAAA,CAAE,CAAA;AAAA,QACrB,aAAa,qBAAA,CAAO,SAAA;AAAA,QACpB,QAAA,IAAY,sBAAO,WAAW,CAAA;AAAA,QAC9B,KAAA,KAAU,MAAA,IAAa,qBAAA,CAAO,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,CAAA;AAAA,QAC9C,OAAA,IAAW,sBAAO,UAAU,CAAA;AAAA,QAC5B;AAAA,OACF;AAAA,MACA,aAAW,OAAA,IAAW,MAAA;AAAA,MACrB,GAAG,GAAA;AAAA,MACH,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,OAAA,mBACCC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,qBAAA,CAAO,IAAA,EACtB,QAAA,kBAAAA,cAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,OAAA,CAAQD,KAAI,CAAA,EAAG,KAAA,EAAM,EAAA,EAAG,aAAA,EAAY,MAAA,EAAO,CAAA,EAC5D,CAAA,GAEA,QAAA,mBAAWC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,qBAAA,CAAO,IAAA,EAAO,QAAA,EAAA,QAAA,EAAS,CAAA,GAAU,IAAA;AAAA,QAE9D,IAAA;AAAA,QACA,CAAC,OAAA,IAAW,SAAA,mBAAYA,cAAAA,CAAC,UAAK,SAAA,EAAW,qBAAA,CAAO,IAAA,EAAO,QAAA,EAAA,SAAA,EAAU,CAAA,GAAU;AAAA;AAAA;AAAA,GAC9E;AAEJ;;;AC1HA,IAAO,sBAAQ,EAAC,MAAA,EAAO,kBAAiB,gBAAA,EAAiB,0BAAA,EAA2B,sBAAqB,8BAAA,EAA+B,eAAA,EAAgB,2BAA0B,SAAA,EAAU,mBAAA,EAAoB,WAAU,mBAAA,EAAoB,WAAA,EAAY,uBAAsB,SAAA,EAAU,mBAAA,EAAoB,WAAU,mBAAA,EAAmB;ACqCpU,SAAS,IAAA,CAAkC;AAAA,EAChD,OAAA,GAAU,QAAA;AAAA,EACV,IAAA,EAAAD,KAAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,EAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA+B;AAC7B,EAAA,MAAM,UAAuB,EAAA,IAAM,GAAA;AAGnC,EAAA,MAAM,EAAE,SAAA,EAAW,IAAA,EAAM,GAAG,QAAO,GAAI,IAAA;AAIvC,EAAA,MAAM,aAAA,GAAgB,WAAW,EAAE,MAAA,EAAQ,UAAU,GAAA,EAAK,qBAAA,KAA0B,EAAC;AAGrF,EAAA,MAAM,SAAA,GAAY,OAAA,KAAY,QAAA,GAAW,EAAE,IAAA,EAAM,IAAA,IAAQ,QAAA,EAAS,GAAI,IAAA,KAAS,MAAA,GAAY,EAAE,IAAA,KAAS,EAAC;AACvG,EAAA,uBACEC,cAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,mBAAA,CAAO,IAAA;AAAA,QACP,mBAAA,CAAO,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA;AAAA,QAC3BD,KAAAA,IAAQ,mBAAA,CAAO,CAAA,KAAA,EAAQA,KAAI,CAAA,CAAE,CAAA;AAAA,QAC7B;AAAA,OACF;AAAA,MACC,GAAG,aAAA;AAAA,MACH,GAAG,MAAA;AAAA,MACH,GAAG;AAAA;AAAA,GACN;AAEJ;;;ACpEA,IAAO,qBAAA,GAAQ,EAAC,QAAA,EAAS,oBAAA,EAAqB,SAAA,EAAU,qBAAA,EAAsB,SAAA,EAAU,qBAAA,EAAsB,SAAA,EAAU,qBAAA,EAAsB,SAAA,EAAU,qBAAA,EAAsB,SAAA,EAAU,qBAAA,EAAsB,QAAA,EAAS,oBAAA,EAAqB,QAAA,EAAS,oBAAA,EAAqB,QAAA,EAAS,oBAAA,EAAqB,QAAA,EAAS,oBAAA,EAAqB,QAAA,EAAS,oBAAA,EAAqB,OAAA,EAAQ,mBAAA,EAAoB,UAAA,EAAW,sBAAA,EAAsB;ACyBja,SAAS,SAAS,IAAA,EAAsB;AACtC,EAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,EAAK,CAAE,MAAM,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AACrD,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,CAAC,CAAA,GAAI,CAAC,CAAA,IAAK,EAAA;AAC/B,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,MAAA,GAAS,CAAA,GAAK,KAAA,CAAM,GAAG,EAAE,CAAA,GAAI,CAAC,CAAA,IAAK,EAAA,GAAM,EAAA;AAC5D,EAAA,OAAA,CAAQ,KAAA,GAAQ,MAAM,WAAA,EAAY;AACpC;AAUO,SAAS,MAAA,CAAO;AAAA,EACrB,IAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAAA,KAAAA,GAAO,IAAA;AAAA,EACP,IAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA8B;AAC5B,EAAA,uBACEC,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,qBAAA,CAAO,MAAA;AAAA,QACP,qBAAA,CAAO,CAAA,KAAA,EAAQD,KAAI,CAAA,CAAE,CAAA;AAAA,QACrB,IAAA,KAAS,MAAA,IAAa,qBAAA,CAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAA;AAAA,QAC3C;AAAA,OACF;AAAA,MACA,eAAa,UAAA,IAAc,MAAA;AAAA,MAC1B,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA,GAAA,mBACCC,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,qBAAA,CAAO,KAAA,EAAO,GAAA,EAAU,GAAA,EAAK,UAAA,GAAa,EAAA,GAAK,IAAA,EAAM,oBAErEA,cAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,aAAa,MAAA,GAAY,KAAA;AAAA,UAC/B,YAAA,EAAY,aAAa,MAAA,GAAY,IAAA;AAAA,UACrC,WAAW,qBAAA,CAAO,QAAA;AAAA,UAEjB,mBAAS,IAAI;AAAA;AAAA;AAChB;AAAA,GAEJ;AAEJ;;;ACzEA,IAAO,6BAAQ,EAAC,OAAA,EAAQ,wBAAA,EAAyB,MAAA,EAAO,yBAAwB,UAAA,EAAW,2BAAA,EAA4B,SAAA,EAAU,0BAAA,EAA2B,WAAU,0BAAA,EAA2B,SAAA,EAAU,4BAA2B,SAAA,EAAU,0BAAA,EAA2B,WAAU,0BAAA,EAA0B;AC+BxS,SAAS,WAAA,CAAY;AAAA,EAC1B,QAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,MAAAD,KAAAA,GAAO,IAAA;AAAA,EACP,aAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmC;AACjC,EAAA,MAAM,GAAA,GAAMK,cAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA;AACrC,EAAA,MAAM,OAAA,GAAU,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA;AAChC,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,GAAS,OAAA,CAAQ,MAAA;AAEpC,EAAA,uBACED,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,2BAAO,KAAA,EAAO,SAAS,CAAA,EAAI,GAAG,IAAA,EAC9C,QAAA,EAAA;AAAA,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,KAAA,EAAO,CAAA,qBACnBH,cAAAA,CAAC,MAAA,EAAA,EAAa,SAAA,EAAW,0BAAA,CAAO,IAAA,EAC7B,QAAA,EAAA,KAAA,EAAA,EADQ,CAEX,CACD,CAAA;AAAA,IACA,MAAA,GAAS,qBACRG,eAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,0BAAA,CAAO,IAAA,EAAM,0BAAA,CAAO,UAAU,0BAAA,CAAO,CAAA,KAAA,EAAQJ,KAAI,CAAA,CAAE,CAAC,CAAA;AAAA,QAClE,YAAA,EAAY,cAAc,MAAM,CAAA;AAAA,QACjC,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UACG;AAAA;AAAA;AAAA;AACJ,GAAA,EAEJ,CAAA;AAEJ;;;AC5DA,IAAO,oBAAA,GAAQ,EAAC,OAAA,EAAQ,kBAAA,EAAmB,gBAAe,yBAAA,EAA0B,aAAA,EAAc,wBAAA,EAAyB,gBAAA,EAAiB,6BAA4B,aAAA,EAAc,wBAAA,EAAyB,cAAA,EAAe,yBAAA,EAA0B,gBAAe,yBAAA,EAAyB;ACkBzR,SAAS,MAAM,EAAE,IAAA,GAAO,WAAW,SAAA,EAAW,GAAG,MAAK,EAA6B;AACxF,EAAA,uBAAOC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,oBAAA,CAAO,KAAA,EAAO,oBAAA,CAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,CAAA;AACzF;;;ACpBA,IAAO,sBAAQ,EAAC,MAAA,EAAO,gBAAA,EAAiB,MAAA,EAAO,kBAAiB,cAAA,EAAe,wBAAA,EAAyB,iBAAA,EAAkB,2BAAA,EAA4B,qBAAoB,6BAAA,EAA8B,UAAA,EAAW,sBAAqB,aAAA,EAAc,uBAAA,EAAwB,YAAW,oBAAA,EAAoB;ACgCtS,SAAS,IAAA,CAAK;AAAA,EACnB,QAAA;AAAA,EACA,OAAA,GAAU,MAAA;AAAA,EACV,QAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,MAAM,WAAA,GAAc,OAAO,OAAA,KAAY,UAAA;AAEvC,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,SAAA,EAAW,EAAA;AAAA,MACT,mBAAA,CAAO,IAAA;AAAA,MACP,mBAAA,CAAO,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA;AAAA,MAC3B,YAAY,mBAAA,CAAO,QAAA;AAAA,MACnB,WAAA,IAAe,CAAC,QAAA,IAAY,mBAAA,CAAO,WAAA;AAAA,MACnC,YAAY,mBAAA,CAAO,QAAA;AAAA,MACnB;AAAA,KACF;AAAA,IACA,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,OAAA,mBACJG,eAAAA,CAAAE,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,IAAA,mBAAOL,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,mBAAA,CAAO,IAAA,EAAO,gBAAK,CAAA,GAAU,IAAA;AAAA,IACrD;AAAA,GAAA,EACH,CAAA;AAGF,EAAA,OAAO,8BACLA,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,OAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA,EAAc,QAAA,KAAa,MAAA,GAAY,MAAA,GAAY,QAAA;AAAA,MACnD,GAAA;AAAA,MACC,GAAG,MAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,sBAGHA,cAAAA,CAAC,UAAK,GAAA,EAAmC,GAAG,QAAS,QAAA,EAAA,OAAA,EAAQ,CAAA;AAEjE;;;AC9EA,IAAO,wBAAA,GAAQ,EAAC,OAAA,EAAQ,sBAAA,EAAuB,gBAAe,6BAAA,EAA8B,WAAA,EAAY,0BAAA,EAA2B,UAAA,EAAW,yBAAA,EAAyB;AC4BhK,SAAS,SAAA,CAAU,EAAE,QAAA,EAAU,GAAA,GAAM,SAAS,SAAA,EAAW,GAAG,MAAK,EAAiC;AACvG,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,yBAAO,KAAA,EAAO,wBAAA,CAAO,CAAA,IAAA,EAAO,GAAG,EAAE,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,MACpE,QAAA,EACH,CAAA;AAEJ;;;AClCA,IAAO,sBAAA,GAAQ,EAAC,KAAA,EAAM,kBAAA,EAAmB,gBAAe,2BAAA,EAA4B,WAAA,EAAY,wBAAA,EAAyB,UAAA,EAAW,yBAAwB,UAAA,EAAW,uBAAA,EAAwB,MAAA,EAAO,mBAAA,EAAoB,QAAO,mBAAA,EAAmB;ACkC7O,SAAS,OAAA,CAAQ;AAAA,EACtB,QAAA;AAAA,EACA,GAAA,GAAM,OAAA;AAAA,EACN,QAAA,GAAW,KAAA;AAAA,EACX,IAAA,GAAO,IAAA;AAAA,EACP,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA+B;AAC7B,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,sBAAA,CAAO,GAAA,EAAK,uBAAO,CAAA,IAAA,EAAO,GAAG,CAAA,CAAE,CAAA,EAAG,YAAY,sBAAA,CAAO,QAAA,EAAU,IAAA,IAAQ,sBAAA,CAAO,MAAM,SAAS,CAAA;AAAA,MAC1G,GAAG,IAAA;AAAA,MAEH,QAAA,EAAAI,cAAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAC,KAAA,qBACvBJ,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,sBAAA,CAAO,IAAA,EAAO,iBAAM,CACrC;AAAA;AAAA,GACH;AAEJ;;;ACpDA,IAAO,0BAAA,GAAQ,EAAC,QAAA,EAAS,yBAAA,EAA0B,eAAc,8BAAA,EAA+B,aAAA,EAAc,8BAAA,EAA+B,OAAA,EAAQ,wBAAA,EAAwB;ACS7K,IAAM,UAAA,GAAa,EAAA;AA8CZ,SAAS,WAAA,CAAY;AAAA,EAC1B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,QAAA,GAAW,KAAA;AAAA,EACX,OAAA,GAAU,KAAA;AAAA,EACV,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmC;AACjC,EAAA,MAAM,WAAW,MAAA,KAAW,MAAA;AAE5B,EAAA,uBACEG,eAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,UAAU,QAAA,IAAY,OAAA;AAAA,MACtB,YAAA,EAAY,KAAA;AAAA,MACZ,cAAA,EAAc,WAAW,MAAA,GAAS,MAAA;AAAA,MAClC,aAAW,OAAA,IAAW,MAAA;AAAA,MACtB,SAAA,EAAW,EAAA,CAAG,0BAAA,CAAO,MAAA,EAAQ,MAAA,IAAU,2BAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAA,EAAG,SAAS,CAAA;AAAA,MACvE,GAAG,IAAA;AAAA,MAGJ,QAAA,EAAA;AAAA,wBAAAH,eAAC,MAAA,EAAA,EAAK,SAAA,EAAW,0BAAA,CAAO,KAAA,EACrB,oCAAUA,cAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,YAAY,KAAA,EAAM,EAAA,EAAG,aAAA,EAAY,MAAA,EAAO,IAAK,IAAA,EACzE,CAAA;AAAA,QACC,YAAY,IAAA,mBAAOA,cAAAA,CAAC,MAAA,EAAA,EAAM,UAAS,CAAA,GAAU;AAAA;AAAA;AAAA,GAChD;AAEJ;ACrEO,SAAS,UAAA,CAAW,EAAE,SAAA,EAAU,EAA6B;AAClE,EAAA,uBACEA,eAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,aAAY,KAAA,EAAM,KAAA,EAAM,MAAA,EAAO,KAAA,EAAM,aAAA,EAAY,MAAA,EAAO,WACnE,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,oBAAA,EAAqB,MAAA,EAAO,gBAAe,WAAA,EAAY,MAAA,EAAO,aAAA,EAAc,OAAA,EAAQ,CAAA,EAC9F,CAAA;AAEJ;AAEO,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAU,EAA6B;AACxE,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,KAAA,EAAM,KAAA,EAAM,MAAA,EAAO,KAAA,EAAM,aAAA,EAAY,MAAA,EAAO,SAAA,EACnE,QAAA,kBAAAA,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAE,gBAAA;AAAA,MACF,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,MAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEO,SAAS,iBAAA,CAAkB,EAAE,SAAA,EAAU,EAA6B;AACzE,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,KAAA,EAAM,KAAA,EAAM,MAAA,EAAO,KAAA,EAAM,aAAA,EAAY,MAAA,EAAO,SAAA,EACnE,QAAA,kBAAAA,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAE,cAAA;AAAA,MACF,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,MAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,QAAA,EAAS,EAA0D;AACjG,EAAA,uBACEA,eAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,aAAY,KAAA,EAAM,KAAA,EAAM,MAAA,EAAO,KAAA,EAAM,aAAA,EAAY,MAAA,EAAO,WACnE,QAAA,kBAAAG,eAAAA,CAAC,OAAE,IAAA,EAAK,MAAA,EAAO,QAAO,cAAA,EAAe,WAAA,EAAY,MAAA,EAAO,aAAA,EAAc,OAAA,EACpE,QAAA,EAAA;AAAA,oBAAAH,eAAC,QAAA,EAAA,EAAO,EAAA,EAAG,KAAI,EAAA,EAAG,GAAA,EAAI,GAAE,MAAA,EAAO,CAAA;AAAA,oBAC/BA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,kBAAA,EAAmB,CAAA;AAAA,IAC1B;AAAA,GAAA,EACH,CAAA,EACF,CAAA;AAEJ;AAEO,SAAS,WAAA,CAAY,EAAE,SAAA,EAAU,EAA6B;AACnE,EAAA,uBACEA,eAAC,SAAA,EAAA,EAAU,SAAA,EACT,0BAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,wBAAA,EAAyB,CAAA,EACnC,CAAA;AAEJ;AAEO,SAAS,YAAA,CAAa,EAAE,SAAA,EAAU,EAA6B;AACpE,EAAA,uBACEA,eAAC,SAAA,EAAA,EAAU,SAAA,EACT,0BAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,aAAA,EAAc,CAAA,EACxB,CAAA;AAEJ;AAEO,SAAS,SAAA,CAAU,EAAE,SAAA,EAAU,EAA6B;AACjE,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAQ,WAAA,EAAY,KAAA,EAAM,OAAM,MAAA,EAAO,KAAA,EAAM,eAAY,MAAA,EAAO,SAAA,EACnE,0BAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,GAAE,wBAAA,EAAyB,IAAA,EAAK,gBAAe,CAAA,EACvD,CAAA;AAEJ;AAEO,SAAS,UAAA,CAAW,EAAE,SAAA,EAAU,EAA6B;AAClE,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAQ,WAAA,EAAY,KAAA,EAAM,OAAM,MAAA,EAAO,KAAA,EAAM,eAAY,MAAA,EAAO,SAAA,EACnE,0BAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,GAAE,0CAAA,EAA2C,IAAA,EAAK,gBAAe,CAAA,EACzE,CAAA;AAEJ;AAGA,SAAS,OAAA,GAAwB;AAC/B,EAAA,uBAAOA,eAAC,MAAA,EAAA,EAAK,CAAA,EAAE,2CAA0C,IAAA,EAAK,cAAA,EAAe,QAAO,MAAA,EAAO,CAAA;AAC7F;AAEO,SAAS,WAAA,CAAY,EAAE,SAAA,EAAU,EAA6B;AACnE,EAAA,uBACEA,eAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,aAAY,KAAA,EAAM,KAAA,EAAM,MAAA,EAAO,KAAA,EAAM,aAAA,EAAY,MAAA,EAAO,WACnE,QAAA,kBAAAG,eAAAA,CAAC,OAAE,IAAA,EAAK,MAAA,EAAO,QAAO,cAAA,EAAe,WAAA,EAAY,KAAA,EAAM,aAAA,EAAc,OAAA,EACnE,QAAA,EAAA;AAAA,oBAAAH,eAAC,OAAA,EAAA,EAAQ,CAAA;AAAA,oBACTA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,gCAAA,EAAiC,CAAA;AAAA,oBACzCA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,+BAAA,EAAgC;AAAA,GAAA,EAC1C,CAAA,EACF,CAAA;AAEJ;AAEO,SAAS,cAAA,CAAe,EAAE,SAAA,EAAU,EAA6B;AACtE,EAAA,uBACEA,eAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,aAAY,KAAA,EAAM,KAAA,EAAM,MAAA,EAAO,KAAA,EAAM,aAAA,EAAY,MAAA,EAAO,WACnE,QAAA,kBAAAG,eAAAA,CAAC,OAAE,IAAA,EAAK,MAAA,EAAO,QAAO,cAAA,EAAe,WAAA,EAAY,KAAA,EAAM,aAAA,EAAc,OAAA,EACnE,QAAA,EAAA;AAAA,oBAAAH,eAAC,OAAA,EAAA,EAAQ,CAAA;AAAA,oBACTA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,yCAAA,EAA0C;AAAA,GAAA,EACpD,CAAA,EACF,CAAA;AAEJ;AAEO,SAAS,aAAA,CAAc,EAAE,SAAA,EAAU,EAA6B;AACrE,EAAA,uBACEA,eAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,aAAY,KAAA,EAAM,KAAA,EAAM,MAAA,EAAO,KAAA,EAAM,aAAA,EAAY,MAAA,EAAO,WACnE,QAAA,kBAAAG,eAAAA,CAAC,OAAE,IAAA,EAAK,MAAA,EAAO,QAAO,cAAA,EAAe,WAAA,EAAY,KAAA,EAAM,aAAA,EAAc,OAAA,EACnE,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,MAAA,EAAO,CAAA,EAAE,MAAA,EAAO,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,KAAA,EAAM,EAAA,EAAG,GAAA,EAAI,CAAA;AAAA,oBACzDA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,mDAAA,EAAoD;AAAA,GAAA,EAC9D,CAAA,EACF,CAAA;AAEJ;AAEO,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAU,EAA6B;AACvE,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,KAAA,EAAM,KAAA,EAAM,MAAA,EAAO,KAAA,EAAM,aAAA,EAAY,MAAA,EAAO,SAAA,EACnE,QAAA,kBAAAA,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAE,wDAAA;AAAA,MACF,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,KAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEO,SAAS,mBAAA,CAAoB,EAAE,SAAA,EAAU,EAA6B;AAC3E,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,KAAA,EAAM,KAAA,EAAM,MAAA,EAAO,KAAA,EAAM,aAAA,EAAY,MAAA,EAAO,SAAA,EACnE,QAAA,kBAAAA,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAE,wDAAA;AAAA,MACF,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,KAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;;;ACrKA,IAAO,oBAAA,GAAQ,EAAC,OAAA,EAAQ,kBAAA,EAAmB,OAAA,EAAQ,kBAAA,EAAmB,UAAA,EAAW,qBAAA,EAAsB,SAAA,EAAU,oBAAA,EAAqB,OAAA,EAAQ,kBAAA,EAAkB;ACYhK,IAAM,YAAA,GAAeC,oBAAwC,IAAI,CAAA;AAG1D,SAAS,eAAA,GAA4C;AAC1D,EAAA,OAAOC,iBAAW,YAAY,CAAA;AAChC;AAwBO,SAAS,KAAA,CAAM,EAAE,KAAA,EAAO,QAAA,EAAU,MAAM,KAAA,EAAO,QAAA,GAAW,KAAA,EAAO,SAAA,EAAU,EAA6B;AAC7G,EAAA,MAAM,KAAKI,WAAA,EAAM;AACjB,EAAA,MAAM,SAAA,GAAY,GAAG,EAAE,CAAA,QAAA,CAAA;AACvB,EAAA,MAAM,UAAU,KAAA,IAAS,IAAA;AAEzB,EAAA,uBACEH,gBAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,oBAAA,CAAO,KAAA,EAAO,SAAS,CAAA,EACxC,QAAA,EAAA;AAAA,oBAAAA,gBAAC,OAAA,EAAA,EAAM,SAAA,EAAW,oBAAA,CAAO,KAAA,EAAO,SAAS,EAAA,EACtC,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,QAAA,oBACCH,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,oBAAA,CAAO,QAAA,EAAU,aAAA,EAAY,MAAA,EAAO,QAAA,EAAA,GAAA,EAErD;AAAA,KAAA,EAEJ,CAAA;AAAA,oBACAA,cAAAA;AAAA,MAAC,YAAA,CAAa,QAAA;AAAA,MAAb;AAAA,QACC,KAAA,EAAO,EAAE,EAAA,EAAI,WAAA,EAAa,UAAU,SAAA,GAAY,MAAA,EAAW,OAAA,EAAS,KAAA,KAAU,MAAA,EAAU;AAAA,QAEvF;AAAA;AAAA,KACH;AAAA,IACC,2BACCA,cAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,IAAA,EAAM,KAAA,KAAU,MAAA,GAAY,OAAA,GAAU,MAAA;AAAA,QACtC,WAAW,EAAA,CAAG,oBAAA,CAAO,SAAS,KAAA,KAAU,MAAA,IAAa,qBAAO,KAAK,CAAA;AAAA,QAEhE,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EAEJ,CAAA;AAEJ;;;ACxEA,IAAO,qBAAA,GAAQ,EAAC,MAAA,EAAO,kBAAA,EAAmB,QAAA,EAAS,oBAAA,EAAqB,SAAA,EAAU,qBAAA,EAAsB,SAAA,EAAU,qBAAA,EAAsB,SAAA,EAAU,qBAAA,EAAsB,WAAU,qBAAA,EAAqB;ACyBhM,SAAS,MAAA,CAAO,EAAE,IAAA,EAAAD,KAAAA,GAAO,MAAM,SAAA,EAAW,QAAA,EAAU,GAAG,IAAA,EAAK,EAA8B;AAC/F,EAAA,MAAM,QAAQ,eAAA,EAAgB;AAC9B,EAAA,uBACEI,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,sBAAO,IAAA,EACtB,QAAA,EAAA;AAAA,oBAAAH,cAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,IAAA,CAAK,EAAA,IAAM,KAAA,EAAO,EAAA;AAAA,QACtB,kBAAA,EAAkB,IAAA,CAAK,kBAAkB,CAAA,IAAK,KAAA,EAAO,WAAA;AAAA,QACrD,cAAA,EAAc,IAAA,CAAK,cAAc,CAAA,KAAM,OAAO,OAAA,IAAW,MAAA,CAAA;AAAA,QACzD,SAAA,EAAW,GAAG,qBAAA,CAAO,MAAA,EAAQ,sBAAO,CAAA,KAAA,EAAQD,KAAI,CAAA,CAAE,CAAA,EAAG,SAAS,CAAA;AAAA,QAC7D,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,oBACAC,cAAAA,CAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,eAAY,MAAA,EAAO,SAAA,EAAW,qBAAA,CAAO,OAAA,EAC5D,QAAA,kBAAAA,cAAAA,CAAC,UAAK,CAAA,EAAE,cAAA,EAAe,IAAA,EAAK,MAAA,EAAO,MAAA,EAAO,cAAA,EAAe,WAAA,EAAY,MAAA,EAAO,aAAA,EAAc,OAAA,EAAQ,cAAA,EAAe,OAAA,EAAQ,CAAA,EAC3H;AAAA,GAAA,EACF,CAAA;AAEJ;ACJO,IAAM,qBAAA,GAAwBC,oBAAqC,IAAI;;;ACtB9E,IAAM,SAAA,GACJ,2IAAA;AAUK,SAAS,WAAkC,OAAA,EAAiD;AACjG,EAAA,MAAM,GAAA,GAAMM,aAAU,IAAI,CAAA;AAC1B,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,UAAA,GAAa,MAAK,GAAI,OAAA;AAC7C,EAAA,MAAM,KAAA,GAAQA,aAAO,OAAO,CAAA;AAC5B,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,KAAA,CAAM,OAAA,GAAU,OAAA;AAAA,EAClB,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAMZ,EAAA,MAAM,cAAA,GAAiBN,iBAAW,qBAAqB,CAAA;AACvD,EAAAM,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,cAAA,EAAgB;AAC9B,IAAA,OAAO,cAAA,CAAe,QAAA,CAAS,MAAM,KAAA,CAAM,SAAS,CAAA;AAAA,EACtD,CAAA,EAAG,CAAC,IAAA,EAAM,cAAc,CAAC,CAAA;AAEzB,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,QAAQ,GAAA,CAAI,OAAA;AAClB,IAAA,MAAM,QAAA,GAAW,QAAA,CAAS,aAAA,YAAyB,WAAA,GAAc,SAAS,aAAA,GAAgB,IAAA;AAC1F,IAAA,KAAA,EAAO,KAAA,EAAM;AAEb,IAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAyB;AAC1C,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,QAAA,KAAA,CAAM,OAAA,EAAQ;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,KAAA,IAAS,CAAC,KAAA,EAAO;AACnC,MAAA,MAAM,YAAY,CAAC,GAAG,KAAA,CAAM,gBAAA,CAA8B,SAAS,CAAC,CAAA;AACpE,MAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,KAAA,CAAM,KAAA,EAAM;AACZ,QAAA;AAAA,MACF;AACA,MAAA,MAAM,KAAA,GAAQ,UAAU,CAAC,CAAA;AACzB,MAAA,MAAM,IAAA,GAAO,SAAA,CAAU,SAAA,CAAU,MAAA,GAAS,CAAC,CAAA;AAC3C,MAAA,MAAM,SAAS,QAAA,CAAS,aAAA;AACxB,MAAA,IAAI,KAAA,CAAM,QAAA,KAAa,MAAA,KAAW,KAAA,IAAS,WAAW,KAAA,CAAA,EAAQ;AAC5D,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,IAAA,EAAM,KAAA,EAAM;AAAA,MACd,CAAA,MAAA,IAAW,CAAC,KAAA,CAAM,QAAA,IAAY,WAAW,IAAA,EAAM;AAC7C,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,KAAA,EAAO,KAAA,EAAM;AAAA,MACf;AAAA,IACF,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAC9C,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,QAAA;AACzC,IAAA,IAAI,UAAA,EAAY,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,QAAA,GAAW,QAAA;AAC/C,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,SAAS,CAAA;AACjD,MAAA,IAAI,UAAA,EAAY,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,QAAA,GAAW,YAAA;AAC/C,MAAA,QAAA,EAAU,KAAA,EAAM;AAAA,IAClB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,UAAU,CAAC,CAAA;AAErB,EAAA,OAAO,GAAA;AACT;AC1EO,SAAS,WAAA,CAAY,MAAe,UAAA,EAA8B;AACvE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAI5C,EAAA,IAAI,IAAA,IAAQ,CAAC,OAAA,EAAS,UAAA,CAAW,IAAI,CAAA;AACrC,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAA,EAAS,UAAA,CAAW,KAAK,CAAA;AAEtC,EAAAD,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AAGX,IAAA,IAAI,MAAA,GAAS,CAAA;AACb,IAAA,MAAM,KAAA,GAAQ,sBAAsB,MAAM;AACxC,MAAA,MAAA,GAAS,qBAAA,CAAsB,MAAM,UAAA,CAAW,IAAI,CAAC,CAAA;AAAA,IACvD,CAAC,CAAA;AACD,IAAA,OAAO,MAAM;AACX,MAAA,oBAAA,CAAqB,KAAK,CAAA;AAC1B,MAAA,oBAAA,CAAqB,MAAM,CAAA;AAAA,IAC7B,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM;AACV,IAAA,MAAM,QAAQ,UAAA,CAAW,MAAM,UAAA,CAAW,KAAK,GAAG,UAAU,CAAA;AAC5D,IAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,EACjC,CAAA,EAAG,CAAC,IAAA,EAAM,UAAU,CAAC,CAAA;AAErB,EAAA,OAAO,EAAE,OAAA,EAAS,IAAA,IAAQ,OAAA,EAAS,OAAA,EAAQ;AAC7C;;;AC5CA,IAAO,sBAAA,GAAQ,EAAC,OAAA,EAAQ,oBAAA,EAAqB,iBAAgB,4BAAA,EAA6B,eAAA,EAAgB,4BAAA,EAA6B,kBAAA,EAAmB,+BAAA,EAA+B;ACOlL,IAAM,eAAA,GAAkB,GAAA;AAKxB,IAAM,aAAA,GAAgB,GAAA;AAqBtB,SAAS,OAAA,CAAQ,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,IAAA,GAAO,QAAA,EAAU,iBAAA,EAAmB,cAAA,EAAgB,QAAA,EAAS,EAAiB;AACrI,EAAA,MAAM,EAAE,SAAS,OAAA,EAAQ,GAAI,YAAY,IAAA,EAAM,OAAA,KAAY,OAAA,GAAU,aAAA,GAAgB,eAAe,CAAA;AACpG,EAAA,MAAM,GAAA,GAAM,UAAA,CAA2B,EAAE,IAAA,EAAM,SAAS,CAAA;AAExD,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AAErB,EAAA,OAAOE,qBAAA;AAAA,oBACLV,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,sBAAA,CAAO,KAAA,EAAO,uBAAO,CAAA,QAAA,EAAW,OAAO,EAAE,CAAC,CAAA;AAAA,QACxD,aAAW,OAAA,IAAW,MAAA;AAAA,QACtB,aAAA,EAAY,WAAA;AAAA,QACZ,OAAA,EAAS,oBAAoB,OAAA,GAAU,MAAA;AAAA,QAEvC,QAAA,kBAAAA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,IAAA;AAAA,YACA,YAAA,EAAW,MAAA;AAAA,YACX,YAAA,EAAY,KAAA;AAAA,YACZ,QAAA,EAAU,EAAA;AAAA,YACV,SAAA,EAAW,cAAA;AAAA,YACX,aAAW,OAAA,IAAW,MAAA;AAAA,YACtB,OAAA,EAAS,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA,EAAgB;AAAA,YAEzC;AAAA;AAAA;AACH;AAAA,KACF;AAAA,IACA,QAAA,CAAS;AAAA,GACX;AACF;;;AC7DA,IAAO,oBAAA,GAAQ,EAAC,OAAA,EAAQ,kBAAA,EAAmB,UAAS,mBAAA,EAAoB,MAAA,EAAO,iBAAA,EAAkB,QAAA,EAAS,qBAAoB,aAAA,EAAc,wBAAA,EAAyB,OAAA,EAAQ,kBAAA,EAAmB,cAAa,uBAAA,EAAuB;ACyB7N,SAAS,KAAA,CAAM,EAAE,IAAA,EAAM,OAAA,EAAS,OAAO,iBAAA,GAAoB,IAAA,EAAM,UAAS,EAAe;AAC9F,EAAA,uBACEA,cAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA,EAAQ,OAAA;AAAA,MACR,iBAAA;AAAA,MACA,gBAAgB,oBAAA,CAAO,KAAA;AAAA,MAEtB;AAAA;AAAA,GACH;AAEJ;AAYO,SAAS,WAAA,CAAY,EAAE,QAAA,EAAU,OAAA,EAAS,YAAW,EAAqB;AAC/E,EAAA,uBACEG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,qBAAO,MAAA,EAGrB,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,oBAAA,CAAO,aAAc,QAAA,EAAS,CAAA;AAAA,IAC5C,OAAA,KAAY,0BACXA,cAAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,cAAY,UAAA,EAAY,SAAA,EAAW,qBAAO,KAAA,EAAO,OAAA,EAAS,SAC9E,QAAA,kBAAAA,cAAAA,CAAC,cAAW,SAAA,EAAW,oBAAA,CAAO,YAAY,CAAA,EAC5C;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAEO,SAAS,SAAA,CAAU,EAAE,QAAA,EAAS,EAA4B;AAC/D,EAAA,uBAAOA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,oBAAA,CAAO,MAAO,QAAA,EAAS,CAAA;AAChD;AAEO,SAAS,WAAA,CAAY,EAAE,QAAA,EAAS,EAA4B;AACjE,EAAA,uBAAOA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,oBAAA,CAAO,QAAS,QAAA,EAAS,CAAA;AAClD;;;ACvEA,IAAO,6BAAA,GAAQ,EAAC,SAAA,EAAU,6BAAA,EAA8B,YAAW,8BAAA,EAA+B,cAAA,EAAe,kCAAA,EAAmC,OAAA,EAAQ,6BAA4B,SAAA,EAAU,6BAAA,EAA8B,MAAA,EAAO,0BAAA,EAA2B,YAAW,8BAAA,EAA+B,OAAA,EAAQ,2BAAA,EAA4B,gBAAA,EAAiB,sCAAqC,YAAA,EAAa,gCAAA,EAAiC,UAAA,EAAW,8BAAA,EAA+B,WAAU,6BAAA,EAA8B,MAAA,EAAO,0BAAA,EAA2B,KAAA,EAAM,2BAA0B,OAAA,EAAQ,2BAAA,EAA4B,UAAA,EAAW,8BAAA,EAA+B,WAAU,6BAAA,EAA6B;ACoE7rB,SAAS,WAAW,MAAA,EAAwC;AAC1D,EAAA,MAAM,WAAW,IAAI,IAAA,CAAK,eAAe,MAAM,CAAA,CAAE,iBAAgB,CAAE,MAAA;AAInE,EAAA,MAAM,UAAA,GAAa,IAAI,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA;AAC3C,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,WAAA,IAAc,IAAK,UAAA,CAAW,QAAA;AAC1D,EAAA,MAAM,QAAA,GAAA,CAAY,QAAA,EAAU,QAAA,IAAY,CAAA,IAAK,CAAA;AAG7C,EAAA,MAAM,UAAA,GAAa,IAAI,IAAA,CAAK,cAAA,CAAe,QAAA,EAAU,EAAE,OAAA,EAAS,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,CAAA;AAC1F,EAAA,MAAM,WAAW,KAAA,CAAM,IAAA;AAAA,IAAK,EAAE,QAAQ,CAAA,EAAE;AAAA,IAAG,CAAC,CAAA,EAAG,CAAA,KAC7C,UAAA,CAAW,MAAA,CAAO,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,GAAG,CAAA,GAAA,CAAM,QAAA,GAAW,CAAA,IAAK,CAAE,CAAC,CAAC;AAAA,GACzE;AAEA,EAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,cAAA,CAAe,UAAU,EAAE,IAAA,EAAM,WAAW,CAAA;AACrE,EAAA,MAAM,EAAE,SAAA,EAAU,GAAI,OAAA,CAAQ,eAAA,EAAgB;AAC9C,EAAA,MAAM,MAAA,GAAS,SAAA,KAAc,KAAA,IAAS,SAAA,KAAc,KAAA;AAEpD,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAChB,IAAI,KAAK,cAAA,CAAe,QAAA,EAAU,EAAE,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,IAAA,EAAM,EAChE,aAAA,CAAc,IAAI,IAAA,CAAK,IAAA,EAAM,CAAA,EAAG,CAAA,EAAG,IAAI,CAAC,EACxC,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,SAAS,WAAW,CAAA,EAAG,KAAA,KAAU,IAAA,GAAO,KAAK,IAAA,GAAO,IAAA,CAAA;AAE7E,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAY,CAAC,QAAA,CAAS,CAAC,CAAA,EAAG,QAAA,CAAS,EAAE,CAAC,CAAA;AAAA,IACtC,UAAA,EAAY,IAAI,IAAA,CAAK,cAAA,CAAe,QAAA,EAAU,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChF,QAAA,EAAU,IAAI,IAAA,CAAK,cAAA,CAAe,QAAA,EAAU,EAAE,KAAA,EAAO,MAAA,EAAQ,GAAA,EAAK,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC9F,IAAA,EAAM,IAAI,IAAA,CAAK,cAAA,CAAe,QAAA,EAAU;AAAA,MACtC,OAAA,EAAS,OAAA;AAAA,MACT,KAAA,EAAO,OAAA;AAAA,MACP,GAAA,EAAK,SAAA;AAAA,MACL,IAAA,EAAM,SAAA;AAAA,MACN,MAAA,EAAQ;AAAA,KACT;AAAA,GACH;AACF;AAIA,SAAS,WAAW,CAAA,EAAiB;AACnC,EAAA,OAAO,IAAI,IAAA,CAAK,CAAA,CAAE,WAAA,EAAY,EAAG,CAAA,CAAE,QAAA,EAAS,EAAG,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,OAAA,EAAQ;AACtE;AAEA,SAAS,WAAA,CAAY,GAAS,IAAA,EAAoB;AAChD,EAAA,MAAM,GAAA,GAAM,IAAI,IAAA,CAAK,CAAC,CAAA;AACtB,EAAA,GAAA,CAAI,UAAA,CAAW,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,UAAA,KAAe,IAAI,CAAA,GAAI,IAAA,EAAM,CAAA,EAAG,CAAC,CAAA;AAC/D,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,OAAA,CAAQ,GAAS,CAAA,EAAiB;AACzC,EAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,CAAC,CAAA;AACpB,EAAA,CAAA,CAAE,OAAA,CAAQ,CAAA,CAAE,OAAA,EAAQ,GAAI,CAAC,CAAA;AACzB,EAAA,OAAO,CAAA;AACT;AAEA,SAAS,SAAA,CAAU,GAAS,CAAA,EAAiB;AAC3C,EAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,CAAC,CAAA;AACpB,EAAA,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAA,EAAS,GAAI,CAAC,CAAA;AAC3B,EAAA,OAAO,CAAA;AACT;AAEA,SAAS,cAAc,IAAA,EAAwB;AAC7C,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,KAAA,CAAM,IAAI,CAAC,CAAC,CAAA;AACpD,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAK,KAAA,CAAM,EAAA,GAAK,CAAC,CAAA,EAAE,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,CAAC,CAAA;AACnE;AAEA,SAAS,KAAK,CAAA,EAAmB;AAC/B,EAAA,OAAO,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAClC;AAIA,IAAM,aAAA,mBACJG,eAAAA,CAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,aAAY,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,6BAAA,CAAO,KAAA,EAC5D,QAAA,EAAA;AAAA,kBAAAH,eAAC,MAAA,EAAA,EAAK,CAAA,EAAE,KAAA,EAAM,CAAA,EAAE,OAAM,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,IAAG,KAAA,EAAM,IAAA,EAAK,QAAO,MAAA,EAAO,cAAA,EAAe,aAAY,KAAA,EAAM,CAAA;AAAA,kBAC1GA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,kCAAA,EAAmC,IAAA,EAAK,MAAA,EAAO,MAAA,EAAO,cAAA,EAAe,WAAA,EAAY,KAAA,EAAM,aAAA,EAAc,OAAA,EAAQ;AAAA,CAAA,EACvH,CAAA;AAEF,IAAM,UAAA,mBACJG,eAAAA,CAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,aAAY,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,6BAAA,CAAO,KAAA,EAC5D,QAAA,EAAA;AAAA,kBAAAH,cAAAA,CAAC,QAAA,EAAA,EAAO,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,CAAA,EAAE,MAAA,EAAO,IAAA,EAAK,MAAA,EAAO,MAAA,EAAO,cAAA,EAAe,aAAY,KAAA,EAAM,CAAA;AAAA,kBACnFA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,mBAAkB,IAAA,EAAK,MAAA,EAAO,MAAA,EAAO,cAAA,EAAe,WAAA,EAAY,KAAA,EAAM,aAAA,EAAc,OAAA,EAAQ,gBAAe,OAAA,EAAQ;AAAA,CAAA,EAC7H,CAAA;AAuBK,SAAS,cAAA,CAAe;AAAA,EAC7B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,QAAA,GAAW,KAAA;AAAA,EACX,EAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,MAAA;AAAA,EACA,MAAA,EAAQ;AACV,CAAA,EAAsC;AAIpC,EAAA,MAAM,QAAQ,eAAA,EAAgB;AAC9B,EAAA,MAAM,IAAA,GAAOW,cAAQ,MAAM,UAAA,CAAW,MAAM,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEvD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIF,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAIA,eAAe,sBAAM,IAAI,MAAM,CAAA;AACzD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,eAAmC,MAAM;AAC/D,IAAA,MAAM,CAAA,uBAAQ,IAAA,EAAK;AACnB,IAAA,OAAO,EAAE,GAAG,CAAA,CAAE,WAAA,IAAe,CAAA,EAAG,CAAA,CAAE,UAAS,EAAE;AAAA,EAC/C,CAAC,CAAA;AAGD,EAAA,MAAM,CAAC,YAAY,aAAa,CAAA,GAAIA,eAAe,sBAAM,IAAI,MAAM,CAAA;AACnE,EAAA,MAAM,OAAA,GAAUF,YAAAA,iBAAuC,IAAI,GAAA,EAAK,CAAA;AAChE,EAAA,MAAM,eAAA,GAAkBA,aAAO,KAAK,CAAA;AAEpC,EAAA,MAAM,UAAU,GAAA,GAAM,IAAI,KAAK,GAAG,CAAA,uBAAQ,IAAA,EAAK;AAC/C,EAAA,MAAM,QAAA,GAAW,WAAW,OAAO,CAAA;AAKnC,EAAA,SAAS,UAAA,GAAmB;AAC1B,IAAA,MAAM,IAAA,GAAO,WAAA,CAAY,KAAA,GAAQ,IAAI,IAAA,CAAK,KAAK,CAAA,mBAAI,IAAI,IAAA,EAAK,EAAG,UAAU,CAAA;AACzE,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAI,CAAA,IAAK,WAAW,IAAA,GAAO,IAAI,KAAK,QAAQ,CAAA;AACrE,IAAA,OAAA,CAAQ,EAAE,GAAG,KAAA,CAAM,WAAA,IAAe,CAAA,EAAG,KAAA,CAAM,QAAA,EAAS,EAAG,CAAA;AACvD,IAAA,aAAA,CAAc,KAAK,CAAA;AACnB,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd;AAIA,EAAAC,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,gBAAgB,OAAA,EAAS;AAC9B,IAAA,eAAA,CAAgB,OAAA,GAAU,KAAA;AAC1B,IAAA,OAAA,CAAQ,QAAQ,GAAA,CAAI,UAAA,CAAW,UAAU,CAAC,GAAG,KAAA,EAAM;AAAA,EACrD,CAAA,EAAG,CAAC,UAAA,EAAY,IAAI,CAAC,CAAA;AAErB,EAAA,MAAM,GAAA,GAAM,MAAM,QAAA,EAAS;AAC3B,EAAA,MAAM,GAAA,GAAM,MAAM,EAAA,IAAM,EAAA;AACxB,EAAA,MAAM,OAAO,GAAA,IAAO,EAAA;AAEpB,EAAA,SAAS,QAAQ,CAAA,EAAiB;AAChC,IAAA,MAAM,EAAA,GAAK,IAAI,IAAA,CAAK,KAAK,CAAA;AACzB,IAAA,EAAA,CAAG,QAAA,CAAS,IAAA,CAAK,MAAA,GAAU,MAAA,CAAO,CAAC,CAAA,GAAI,EAAA,IAAO,IAAA,GAAO,EAAA,GAAK,CAAA,CAAA,GAAK,MAAA,CAAO,CAAC,CAAC,CAAA;AACxE,IAAA,QAAA,CAAS,EAAE,CAAA;AAAA,EACb;AACA,EAAA,SAAS,UAAU,CAAA,EAAiB;AAClC,IAAA,MAAM,EAAA,GAAK,IAAI,IAAA,CAAK,KAAK,CAAA;AACzB,IAAA,EAAA,CAAG,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA;AAC7B,IAAA,QAAA,CAAS,EAAE,CAAA;AAAA,EACb;AACA,EAAA,SAAS,YAAY,CAAA,EAAiB;AACpC,IAAA,MAAM,EAAA,GAAK,IAAI,IAAA,CAAK,KAAK,CAAA;AACzB,IAAA,EAAA,CAAG,SAAU,GAAA,GAAM,EAAA,IAAO,CAAA,KAAM,IAAA,GAAO,KAAK,CAAA,CAAE,CAAA;AAC9C,IAAA,QAAA,CAAS,EAAE,CAAA;AAAA,EACb;AACA,EAAA,SAAS,QAAQ,GAAA,EAAmB;AAClC,IAAA,MAAM,EAAA,GAAK,IAAI,IAAA,CAAK,KAAK,CAAA;AACzB,IAAA,EAAA,CAAG,WAAA,CAAY,IAAA,CAAK,CAAA,EAAG,IAAA,CAAK,GAAG,GAAG,CAAA;AAClC,IAAA,QAAA,CAAS,EAAE,CAAA;AAAA,EACb;AAGA,EAAA,SAAS,oBAAA,CAAqB,GAAW,CAAA,EAAiB;AACxD,IAAA,MAAM,UAAA,GAAa,IAAI,IAAA,CAAK,CAAA,EAAG,GAAG,CAAC,CAAA;AACnC,IAAA,OAAO,WAAW,UAAU,CAAA,IAAK,WAAW,UAAA,GAAa,IAAI,KAAK,QAAQ,CAAA;AAAA,EAC5E;AACA,EAAA,SAAS,WAAW,KAAA,EAAqB;AACvC,IAAA,IAAI,CAAA,GAAI,KAAK,CAAA,GAAI,KAAA;AACjB,IAAA,IAAI,IAAI,IAAA,CAAK,CAAA;AACb,IAAA,IAAI,IAAI,CAAA,EAAG;AAAE,MAAA,CAAA,GAAI,EAAA;AAAI,MAAA,CAAA,IAAK,CAAA;AAAA,IAAG;AAC7B,IAAA,IAAI,IAAI,EAAA,EAAI;AAAE,MAAA,CAAA,GAAI,CAAA;AAAG,MAAA,CAAA,IAAK,CAAA;AAAA,IAAG;AAC7B,IAAA,OAAA,CAAQ,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA;AAChB,IAAA,aAAA,CAAc,oBAAA,CAAqB,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,EAC1C;AACA,EAAA,SAAS,OAAA,GAAgB;AACvB,IAAA,MAAM,CAAA,uBAAQ,IAAA,EAAK;AACnB,IAAA,OAAA,CAAQ,EAAE,GAAG,CAAA,CAAE,WAAA,IAAe,CAAA,EAAG,CAAA,CAAE,QAAA,EAAS,EAAG,CAAA;AAC/C,IAAA,aAAA,CAAc,UAAA,CAAW,CAAC,CAAA,IAAK,QAAA,GAAW,IAAI,IAAI,IAAA,CAAK,QAAQ,CAAC,CAAA;AAAA,EAClE;AAGA,EAAA,SAAS,UAAU,IAAA,EAAkB;AACnC,IAAA,IAAI,UAAA,CAAW,IAAI,CAAA,GAAI,QAAA,EAAU;AACjC,IAAA,eAAA,CAAgB,OAAA,GAAU,IAAA;AAC1B,IAAA,IAAI,IAAA,CAAK,UAAS,KAAM,IAAA,CAAK,KAAK,IAAA,CAAK,WAAA,EAAY,KAAM,IAAA,CAAK,CAAA,EAAG;AAC/D,MAAA,OAAA,CAAQ,EAAE,GAAG,IAAA,CAAK,WAAA,IAAe,CAAA,EAAG,IAAA,CAAK,QAAA,EAAS,EAAG,CAAA;AAAA,IACvD;AACA,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB;AACA,EAAA,SAAS,YAAA,CAAa,GAAqC,IAAA,EAAkB;AAE3E,IAAA,MAAM,cAAc,IAAA,CAAK,MAAA,EAAO,GAAI,IAAA,CAAK,WAAW,CAAA,IAAK,CAAA;AACzD,IAAA,QAAQ,EAAE,GAAA;AAAK,MACb,KAAK,WAAA;AAAa,QAAA,CAAA,CAAE,cAAA,EAAe;AAAG,QAAA,SAAA,CAAU,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA;AAAG,QAAA;AAAA,MACpE,KAAK,YAAA;AAAc,QAAA,CAAA,CAAE,cAAA,EAAe;AAAG,QAAA,SAAA,CAAU,OAAA,CAAQ,IAAA,EAAM,CAAC,CAAC,CAAA;AAAG,QAAA;AAAA,MACpE,KAAK,SAAA;AAAW,QAAA,CAAA,CAAE,cAAA,EAAe;AAAG,QAAA,SAAA,CAAU,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA;AAAG,QAAA;AAAA,MAClE,KAAK,WAAA;AAAa,QAAA,CAAA,CAAE,cAAA,EAAe;AAAG,QAAA,SAAA,CAAU,OAAA,CAAQ,IAAA,EAAM,CAAC,CAAC,CAAA;AAAG,QAAA;AAAA,MACnE,KAAK,MAAA;AAAQ,QAAA,CAAA,CAAE,cAAA,EAAe;AAAG,QAAA,SAAA,CAAU,OAAA,CAAQ,IAAA,EAAM,CAAC,UAAU,CAAC,CAAA;AAAG,QAAA;AAAA,MACxE,KAAK,KAAA;AAAO,QAAA,CAAA,CAAE,cAAA,EAAe;AAAG,QAAA,SAAA,CAAU,OAAA,CAAQ,IAAA,EAAM,CAAA,GAAI,UAAU,CAAC,CAAA;AAAG,QAAA;AAAA,MAC1E,KAAK,QAAA;AAAU,QAAA,CAAA,CAAE,cAAA,EAAe;AAAG,QAAA,SAAA,CAAU,SAAA,CAAU,IAAA,EAAM,EAAE,CAAC,CAAA;AAAG,QAAA;AAAA,MACnE,KAAK,UAAA;AAAY,QAAA,CAAA,CAAE,cAAA,EAAe;AAAG,QAAA,SAAA,CAAU,SAAA,CAAU,IAAA,EAAM,CAAC,CAAC,CAAA;AAAG,QAAA;AAAA,MACpE,KAAK,OAAA;AAAA,MACL,KAAK,GAAA;AACH,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAA;AACtB,QAAA;AACO;AACX,EACF;AACA,EAAA,SAAS,OAAA,GAAgB;AACvB,IAAA,QAAA,CAAS,KAAA,CAAM,aAAa,CAAA;AAC5B,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf;AAEA,EAAA,MAAM,QAAQ,IAAI,IAAA,CAAK,KAAK,CAAA,EAAG,IAAA,CAAK,GAAG,CAAC,CAAA;AACxC,EAAA,MAAM,gBAAgB,KAAA,CAAM,MAAA,EAAO,GAAI,IAAA,CAAK,WAAW,CAAA,IAAK,CAAA;AAC5D,EAAA,MAAM,WAAA,GAAc,IAAI,IAAA,CAAK,IAAA,CAAK,CAAA,EAAG,KAAK,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,CAAE,OAAA,EAAQ;AAC5D,EAAA,MAAM,YAAA,GACJ,IAAA,CAAK,CAAA,GAAI,OAAA,CAAQ,aAAY,IAAM,IAAA,CAAK,CAAA,KAAM,OAAA,CAAQ,WAAA,EAAY,IAAK,IAAA,CAAK,CAAA,IAAK,QAAQ,QAAA,EAAS;AACpG,EAAA,MAAM,UAAA,GAAa,UAAA,iBAAW,IAAI,IAAA,EAAM,CAAA;AACxC,EAAA,MAAM,UAAA,GAAa,WAAW,KAAK,CAAA;AAMnC,EAAA,MAAM,YAAY,IAAA,CAAK,IAAA,CAAA,CAAM,YAAA,GAAe,WAAA,IAAe,CAAC,CAAA,GAAI,CAAA;AAChE,EAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,EAAE,QAAQ,SAAA,EAAU,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM;AAC3D,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,IAAA,CAAK,GAAG,IAAA,CAAK,CAAA,EAAG,CAAA,GAAI,YAAA,GAAe,CAAC,CAAA;AAC1D,IAAA,MAAM,OAAA,GAAU,KAAK,QAAA,EAAS,KAAM,KAAK,CAAA,IAAK,IAAA,CAAK,WAAA,EAAY,KAAM,IAAA,CAAK,CAAA;AAC1E,IAAA,MAAM,SAAA,GAAY,KAAK,OAAA,EAAQ;AAC/B,IAAA,MAAM,UAAA,GAAa,CAAC,OAAA,IAAW,SAAA,GAAY,QAAA;AAC3C,IAAA,MAAM,UAAA,GAAa,WAAW,SAAA,KAAc,UAAA;AAC5C,IAAA,MAAM,OAAA,GAAU,WAAW,SAAA,KAAc,UAAA;AACzC,IAAA,MAAM,gBAAgB,OAAA,IAAW,CAAC,UAAA,IAAc,SAAA,KAAc,WAAW,UAAU,CAAA;AACnF,IAAA,uBACER,cAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,UAAA;AAAA,QAGV,QAAA,EAAU,gBAAgB,CAAA,GAAI,EAAA;AAAA,QAC9B,GAAA,EACE,OAAA,IAAW,CAAC,UAAA,GACR,CAAC,EAAA,KAAa;AACZ,UAAA,IAAI,EAAA,EAAI,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,WAAW,EAAE,CAAA;AAAA,eACpC,OAAA,CAAQ,OAAA,CAAQ,MAAA,CAAO,SAAS,CAAA;AAAA,QACvC,CAAA,GACA,MAAA;AAAA,QAEN,aAAA,EAAa,UAAU,MAAA,GAAY,IAAA;AAAA,QACnC,YAAA,EAAY,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,IAAI,CAAA;AAAA,QACrC,cAAA,EAAc,UAAA;AAAA,QACd,SAAS,OAAA,GAAU,MAAM,QAAQ,IAAA,CAAK,OAAA,EAAS,CAAA,GAAI,MAAA;AAAA,QACnD,SAAA,EAAW,WAAW,CAAC,UAAA,GAAa,CAAC,CAAA,KAAM,YAAA,CAAa,CAAA,EAAG,IAAI,CAAA,GAAI,MAAA;AAAA,QACnE,SAAA,EAAW,EAAA,CAAG,6BAAA,CAAO,GAAA,EAAK,OAAA,IAAW,6BAAA,CAAO,KAAA,EAAO,UAAA,IAAc,6BAAA,CAAO,QAAA,EAAU,CAAC,OAAA,IAAW,8BAAO,OAAO,CAAA;AAAA,QAE3G,eAAK,OAAA;AAAQ,OAAA;AAAA,MArBT,KAAK,CAAC,CAAA;AAAA,KAsBb;AAAA,EAEJ,CAAC,CAAA;AAKD,EAAA,MAAM,KAAA,GAAQ,QAAQ,IAAA,CAAK,IAAA,CAAK,OAAO,IAAI,IAAA,CAAK,KAAK,CAAC,CAAA,GAAI,WAAA;AAE1D,EAAA,uBACEG,eAAAA,CAAAE,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAF,eAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,MAAM,KAAA,EAAO,EAAA;AAAA,QACjB,IAAA,EAAK,QAAA;AAAA,QACL,QAAA;AAAA,QACA,oBAAkB,KAAA,EAAO,WAAA;AAAA,QACzB,eAAA,EAAc,QAAA;AAAA,QACd,eAAA,EAAe,IAAA;AAAA,QAEf,YAAA,EAAY,SAAA,KAAc,MAAA,GAAY,MAAA,GAAY,CAAC,SAAA,EAAW,KAAK,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,QAC9F,OAAA,EAAS,UAAA;AAAA,QACT,WAAW,EAAA,CAAG,6BAAA,CAAO,OAAA,EAAS,KAAA,IAAS,8BAAO,QAAQ,CAAA;AAAA,QAErD,QAAA,EAAA;AAAA,UAAA,aAAA;AAAA,0BACDH,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,6BAAA,CAAO,cAAe,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,KAC/C;AAAA,oBAEAG,eAAAA,CAAC,KAAA,EAAA,EAAM,IAAA,EAAY,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,KAAA,EAAO,SAAA,IAAa,IAAA,CAAK,MAAA,EACzE,QAAA,EAAA;AAAA,sBAAAH,eAAC,WAAA,EAAA,EAAa,QAAA,EAAA,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,EAAE,CAAA;AAAA,sBACtCG,gBAAC,SAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,6BAAA,CAAO,OAAA,EACpB,QAAA,EAAA;AAAA,UAAA,UAAA;AAAA,UACA,IAAA,CAAK,MAAA,mBACJA,eAAAA,CAAAE,qBAAA,EACE,QAAA,EAAA;AAAA,4BAAAL,eAAC,MAAA,EAAA,EAAO,YAAA,EAAY,KAAK,IAAA,EAAM,KAAA,EAAO,OAAO,GAAG,CAAA,EAAG,UAAU,CAAC,CAAA,KAAM,QAAQ,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,EAAG,SAAA,EAAW,8BAAO,IAAA,EAC5G,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,QAAQ,EAAA,EAAG,EAAG,CAAC,CAAA,EAAG,CAAA,qBAC9BA,cAAAA,CAAC,QAAA,EAAA,EAAmB,OAAO,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,EACpC,QAAA,EAAA,CAAA,GAAI,KADM,CAAA,GAAI,CAEjB,CACD,CAAA,EACH,CAAA;AAAA,4BACAA,eAAC,MAAA,EAAA,EAAK,SAAA,EAAW,8BAAO,KAAA,EAAO,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,4BACnDA,cAAAA,CAAC,MAAA,EAAA,EAAO,cAAY,IAAA,CAAK,MAAA,EAAQ,OAAO,MAAA,CAAO,KAAA,CAAM,UAAA,EAAY,GAAG,QAAA,EAAU,CAAC,MAAM,SAAA,CAAU,CAAA,CAAE,OAAO,KAAK,CAAA,EAAG,SAAA,EAAW,6BAAA,CAAO,MAC/H,QAAA,EAAA,aAAA,CAAc,UAAU,EAAE,GAAA,CAAI,CAAC,sBAC9BA,cAAAA,CAAC,YAAe,KAAA,EAAO,MAAA,CAAO,CAAC,CAAA,EAC5B,QAAA,EAAA,IAAA,CAAK,CAAC,CAAA,EAAA,EADI,CAEb,CACD,CAAA,EACH,CAAA;AAAA,4BACAG,gBAAC,MAAA,EAAA,EAAO,YAAA,EAAY,KAAK,SAAA,EAAW,KAAA,EAAO,OAAO,IAAA,GAAO,IAAA,EAAM,UAAU,CAAC,CAAA,KAAM,YAAY,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,EAAG,SAAA,EAAW,8BAAO,QAAA,EAC7H,QAAA,EAAA;AAAA,8BAAAH,eAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAM,QAAA,EAAA,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,EAAE,CAAA;AAAA,8BACvCA,eAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAM,QAAA,EAAA,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,EAAE;AAAA,aAAA,EACzC;AAAA,WAAA,EACF,CAAA,mBAEAG,eAAAA,CAAAE,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAAL,eAAC,MAAA,EAAA,EAAO,YAAA,EAAY,KAAK,IAAA,EAAM,KAAA,EAAO,OAAO,GAAG,CAAA,EAAG,QAAA,EAAU,CAAC,MAAM,OAAA,CAAQ,CAAA,CAAE,OAAO,KAAK,CAAA,EAAG,WAAW,6BAAA,CAAO,IAAA,EAC5G,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,EAAA,IAAM,CAAC,CAAA,EAAG,sBAC9BA,cAAAA,CAAC,YAAe,KAAA,EAAO,MAAA,CAAO,CAAC,CAAA,EAC5B,QAAA,EAAA,IAAA,CAAK,CAAC,CAAA,EAAA,EADI,CAEb,CACD,CAAA,EACH,CAAA;AAAA,4BACAA,eAAC,MAAA,EAAA,EAAK,SAAA,EAAW,8BAAO,KAAA,EAAO,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,4BACnDA,cAAAA,CAAC,MAAA,EAAA,EAAO,cAAY,IAAA,CAAK,MAAA,EAAQ,OAAO,MAAA,CAAO,KAAA,CAAM,UAAA,EAAY,GAAG,QAAA,EAAU,CAAC,MAAM,SAAA,CAAU,CAAA,CAAE,OAAO,KAAK,CAAA,EAAG,SAAA,EAAW,6BAAA,CAAO,MAC/H,QAAA,EAAA,aAAA,CAAc,UAAU,EAAE,GAAA,CAAI,CAAC,sBAC9BA,cAAAA,CAAC,YAAe,KAAA,EAAO,MAAA,CAAO,CAAC,CAAA,EAC5B,QAAA,EAAA,IAAA,CAAK,CAAC,CAAA,EAAA,EADI,CAEb,CACD,CAAA,EACH;AAAA,WAAA,EACF;AAAA,SAAA,EAEJ,CAAA;AAAA,wBAEAG,eAAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,OAAA,EAAQ,cAAY,IAAA,CAAK,UAAA,CAAW,MAAA,CAAO,KAAK,CAAA,EACxD,QAAA,EAAA;AAAA,0BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,6BAAA,CAAO,cAAA,EACrB,QAAA,EAAA;AAAA,4BAAAH,cAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAQ,IAAA;AAAA,gBACR,cAAY,IAAA,CAAK,aAAA;AAAA,gBACjB,OAAA,EAAQ,OAAA;AAAA,gBACR,IAAA,EAAK,IAAA;AAAA,gBACL,QAAA,EAAU,YAAA;AAAA,gBACV,OAAA,EAAS,MAAM,UAAA,CAAW,EAAE,CAAA;AAAA,gBAE5B,QAAA,kBAAAA,cAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAW,8BAAO,KAAA,EAAO;AAAA;AAAA,aAC7C;AAAA,4BACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,6BAAA,CAAO,YAAa,QAAA,EAAA,IAAA,CAAK,UAAA,CAAW,MAAA,CAAO,KAAK,CAAA,EAAE,CAAA;AAAA,4BACnEA,eAAC,MAAA,EAAA,EAAO,QAAA,EAAQ,MAAC,YAAA,EAAY,IAAA,CAAK,SAAA,EAAW,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAK,MAAK,OAAA,EAAS,MAAM,UAAA,CAAW,CAAC,CAAA,EAChG,QAAA,kBAAAA,eAAC,iBAAA,EAAA,EAAkB,SAAA,EAAW,6BAAA,CAAO,KAAA,EAAO,CAAA,EAC9C;AAAA,WAAA,EACF,CAAA;AAAA,0BACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,6BAAA,CAAO,UACpB,QAAA,EAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACrBA,cAAAA,CAAC,MAAA,EAAA,EAAqB,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,6BAAA,CAAO,OAAA,EACxD,QAAA,EAAA,CAAA,EAAA,EADQ,CAAA,GAAA,EAAM,CAAC,CAAA,CAElB,CACD,CAAA,EACH,CAAA;AAAA,0BACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,6BAAA,CAAO,MAAO,QAAA,EAAA,QAAA,EAAS;AAAA,SAAA,EACzC;AAAA,OAAA,EACF,CAAA;AAAA,sBACAG,gBAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAH,eAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,SAAQ,OAAA,EAAS,OAAA,EAC9B,eAAK,KAAA,EACR,CAAA;AAAA,wBACAA,eAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,WAAU,OAAA,EAAS,OAAA,EAChC,eAAK,IAAA,EACR;AAAA,OAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;ACldA,IAAO,kBAAA,GAAQ,EAAC,KAAA,EAAM,cAAA,EAAe,eAAc,sBAAA,EAAuB,QAAA,EAAS,uCAAA,EAAwC,aAAA,EAAc,sBAAA,EAAsB;AC8BxJ,SAAS,GAAA,CAAI;AAAA,EAClB,QAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,uBACEG,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,kBAAA,CAAO,GAAA,EAAK,kBAAA,CAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,IAAA,EACrE,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,QAAA,KAAa,0BACZH,cAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,WAAW,kBAAA,CAAO,MAAA;AAAA,QAClB,YAAA,EAAY,WAAA;AAAA,QACZ,OAAA,EAAS,QAAA;AAAA,QAET,QAAA,kBAAAA,cAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,mBAAO,WAAA,EAAa;AAAA;AAAA;AAC7C,GAAA,EAEJ,CAAA;AAEJ;;;ACrDA,IAAO,yBAAQ,EAAC,SAAA,EAAU,wBAAuB,YAAA,EAAa,yBAAA,EAA0B,YAAW,uBAAA,EAAuB;ACgBnH,SAAS,QAAQ,EAAE,WAAA,GAAc,cAAc,SAAA,EAAW,GAAG,MAAK,EAA+B;AACtG,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,WAAA;AAAA,MACL,kBAAA,EAAkB,WAAA,KAAgB,UAAA,GAAa,UAAA,GAAa,MAAA;AAAA,MAC5D,WAAW,EAAA,CAAG,sBAAA,CAAO,SAAS,sBAAA,CAAO,WAAW,GAAG,SAAS,CAAA;AAAA,MAC3D,GAAG;AAAA;AAAA,GACN;AAEJ;;;ACzBA,IAAO,6BAAA,GAAQ,EAAC,QAAA,EAAS,4BAAA,EAA4B;;;ACuB9C,SAAS,eAAe,EAAE,EAAA,GAAK,QAAQ,SAAA,EAAW,GAAG,MAAK,EAAsC;AACrG,EAAA,OAAOF,mBAAAA,CAAc,EAAA,EAAI,EAAE,SAAA,EAAW,EAAA,CAAG,6BAAA,CAAO,MAAA,EAAQ,SAAS,CAAA,EAAG,GAAG,IAAA,EAAM,CAAA;AAC/E;;;ACzBA,IAAO,uBAAA,GAAQ,EAAC,UAAA,EAAW,wBAAA,EAAyB,OAAA,EAAQ,qBAAA,EAAsB,OAAA,EAAQ,qBAAA,EAAsB,cAAA,EAAe,4BAAA,EAA6B,cAAA,EAAe,4BAAA,EAA6B,kBAAiB,8BAAA,EAA8B;ACmBvP,IAAM,SAAA,GAAY,KAAA;AAqBX,SAAS,QAAA,CAAS;AAAA,EACvB,OAAA,GAAU,MAAA;AAAA,EACV,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA,GAAQ,CAAA;AAAA,EACR,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgC;AAC9B,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,GAAI,KAAA,GAAQ,EAAE,cAAA,EAAgB,KAAA,KAAU,EAAC;AAAA,IACzC,GAAI,MAAA,GAAS,EAAE,cAAA,EAAgB,MAAA,KAAW;AAAC,GAC7C;AACA,EAAA,MAAM,GAAA,GAAM,GAAG,uBAAA,CAAO,QAAA,EAAU,wBAAO,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA,EAAG,SAAS,CAAA;AAEvE,EAAA,IAAI,OAAA,KAAY,MAAA,IAAU,KAAA,GAAQ,CAAA,EAAG;AACnC,IAAA,uBACEE,eAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAO,SAAA,EAAW,uBAAA,CAAO,OAAO,KAAA,EAAe,GAAG,MACjE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAA,IAAS,CAAC,CAAA,EAAG,yBACjCA,cAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAW,GAAA;AAAA,QACX,KAAA,EAAO,SAAS,KAAA,GAAQ,CAAA,GAAI,EAAE,GAAG,IAAA,EAAM,cAAA,EAAgB,SAAA,EAAU,GAAqB;AAAA,OAAA;AAAA,MAFjF;AAAA,KAIR,CAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBAAOA,cAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAO,SAAA,EAAW,GAAA,EAAK,KAAA,EAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM,EAAI,GAAG,IAAA,EAAM,CAAA;AAC1F;;;ACtEA,IAAO,0BAAA,GAAQ,EAAC,OAAA,EAAQ,wBAAA,EAAyB,QAAO,uBAAA,EAAwB,eAAA,EAAgB,gCAAiE,CAAA;ACuB1J,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA,GAAQ,CAAA;AAAA,EACR,KAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA,GAAgB,KAAA;AAAA,EAChB,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmC;AACjC,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAC,CAAA;AAChD,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAY,KAAA;AAAA,MACZ,eAAA,EAAe,CAAA;AAAA,MACf,eAAA,EAAe,GAAA;AAAA,MACf,eAAA,EAAe,gBAAgB,MAAA,GAAY,OAAA;AAAA,MAC3C,gBAAA,EAAgB,SAAA;AAAA,MAChB,WAAW,EAAA,CAAG,0BAAA,CAAO,OAAO,aAAA,IAAiB,0BAAA,CAAO,eAAe,SAAS,CAAA;AAAA,MAC5E,KAAA,EAAO,EAAE,GAAK,EAAE,YAAA,EAAc,GAAG,OAAO,CAAA,CAAA,CAAA,EAAI,EAAqB,GAAG,KAAA,EAAM;AAAA,MACzE,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,2BAAO,IAAA,EAAM;AAAA;AAAA,GAChC;AAEJ;;;ACzCO,SAAS,OAAA,CAAW,KAA0B,KAAA,EAA2B;AAC9E,EAAA,OAAO,CAAC,IAAA,KAAmB;AACzB,IAAA,GAAA,CAAI,OAAA,GAAU,IAAA;AACd,IAAA,IAAI,OAAO,KAAA,KAAU,UAAA,EAAY,KAAA,CAAM,IAAI,CAAA;AAAA,SAAA,IAClC,KAAA,IAAS,IAAA,EAAM,KAAA,CAAM,OAAA,GAAU,IAAA;AAAA,EAC1C,CAAA;AACF;;;ACbA,IAAO,oBAAA,GAAQ,EAAC,OAAA,EAAQ,kBAAA,EAAmB,aAAY,sBAAA,EAAuB,SAAA,EAAU,oBAAA,EAAqB,SAAA,EAAU,oBAAA,EAAqB,SAAA,EAAU,oBAAA,EAAqB,UAAA,EAAW,uBAAsB,MAAA,EAAO,iBAAA,EAAkB,SAAA,EAAU,oBAAA,EAAqB,SAAA,EAAU,oBAAA,EAAqB,SAAA,EAAU,oBAAA,EAAqB,YAAW,qBAAA,EAAsB,WAAA,EAAY,sBAAA,EAAuB,gBAAA,EAAiB,6BAA4B,iBAAA,EAAkB,4BAAA,EAA6B,OAAA,EAAQ,wCAAA,EAAyC,cAAa,uBAAA,EAAuB;ACsFhjB,SAAS,KAAA,CAAM;AAAA,EACpB,MAAAD,KAAAA,GAAO,IAAA;AAAA,EACP,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6B;AAC3B,EAAA,MAAM,QAAQ,eAAA,EAAgB;AAC9B,EAAA,MAAM,GAAA,GAAMQ,aAAyB,IAAI,CAAA;AAKzC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIE,cAAAA,CAAS,MAAM,MAAA,CAAO,IAAA,CAAK,YAAA,IAAgB,EAAE,CAAA,KAAM,EAAE,CAAA;AACvF,EAAA,MAAM,OAAA,GAAU,KAAK,KAAA,KAAU,MAAA,GAAY,OAAO,IAAA,CAAK,KAAK,MAAM,EAAA,GAAK,SAAA;AACvE,EAAA,MAAM,SAAA,GAAY,WAAW,IAAA,IAAQ,OAAA;AAErC,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAyC;AAC7D,IAAA,IAAI,WAAW,IAAA,EAAM,YAAA,CAAa,KAAA,CAAM,MAAA,CAAO,UAAU,EAAE,CAAA;AAC3D,IAAA,IAAA,CAAK,WAAW,KAAK,CAAA;AAAA,EACvB,CAAA;AAEA,EAAA,MAAM,QAAQ,MAAM;AAGlB,IAAA,IAAI,IAAA,CAAK,UAAU,MAAA,IAAa,GAAA,CAAI,WAAW,IAAA,EAAM,GAAA,CAAI,QAAQ,KAAA,GAAQ,EAAA;AACzE,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,GAAA,CAAI,SAAS,KAAA,EAAM;AACnB,IAAA,OAAA,IAAU;AAAA,EACZ,CAAA;AAEA,EAAA,MAAM,wBACJT,cAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAA;AAAA,MACrB,EAAA,EAAI,IAAA,CAAK,EAAA,IAAM,KAAA,EAAO,EAAA;AAAA,MACtB,kBAAA,EAAkB,IAAA,CAAK,kBAAkB,CAAA,IAAK,KAAA,EAAO,WAAA;AAAA,MACrD,gBAAc,IAAA,CAAK,cAAc,CAAA,KAAA,CAAO,OAAA,IAAW,OAAO,OAAA,KAAY,MAAA,CAAA;AAAA,MACtE,SAAA,EAAW,EAAA;AAAA,QACT,oBAAA,CAAO,KAAA;AAAA,QACP,oBAAA,CAAO,CAAA,KAAA,EAAQD,KAAI,CAAA,CAAE,CAAA;AAAA,QACrB,QAAA,IAAY,IAAA,IAAQ,oBAAA,CAAO,gBAAgB,CAAA;AAAA,QAAA,CAC1C,SAAA,IAAa,IAAA,IAAQ,SAAA,KAAc,oBAAA,CAAO,iBAAiB,CAAA;AAAA,QAC5D,OAAA,IAAW,IAAA,IAAQ,oBAAA,CAAO,WAAW,CAAA;AAAA,QACrC;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MACJ,QAAA,EAAU;AAAA;AAAA,GACZ;AAGF,EAAA,IAAI,YAAY,IAAA,IAAQ,SAAA,IAAa,IAAA,IAAQ,OAAA,IAAW,MAAM,OAAO,KAAA;AAErE,EAAA,uBACEI,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,oBAAA,CAAO,QAAA,EAAU,oBAAA,CAAO,CAAA,KAAA,EAAQJ,KAAI,CAAA,CAAE,CAAC,CAAA,EACxD,QAAA,EAAA;AAAA,IAAA,KAAA;AAAA,IACA,QAAA,IAAY,IAAA,oBACXC,cAAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,oBAAA,CAAO,IAAA,EAAM,oBAAA,CAAO,QAAQ,CAAA,EAAG,aAAA,EAAY,QAC5D,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,IAED,SAAA,IAAa,IAAA,oBACZA,cAAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,oBAAA,CAAO,IAAA,EAAM,oBAAA,CAAO,SAAS,CAAA,EAAG,aAAA,EAAY,QAC7D,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,IAED,6BACCA,cAAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,cAAY,UAAA,EAAY,SAAA,EAAW,qBAAO,KAAA,EAAO,OAAA,EAAS,OAC9E,QAAA,kBAAAA,cAAAA,CAAC,cAAW,SAAA,EAAW,oBAAA,CAAO,YAAY,CAAA,EAC5C;AAAA,GAAA,EAEJ,CAAA;AAEJ;;;AClKA,IAAO,+BAAQ,EAAC,MAAA,EAAO,2BAA0B,OAAA,EAAQ,0BAAA,EAA2B,UAAS,2BAAA,EAA2B;AC6BjH,SAAS,aAAA,CAAc;AAAA,EAC5B,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqC;AACnC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIS,eAAS,KAAK,CAAA;AAC5C,EAAA,uBACEN,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,6BAAO,IAAA,EACtB,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,KAAA,EAAA,EAAO,GAAG,IAAA,EAAM,IAAA,EAAM,OAAA,GAAU,MAAA,GAAS,UAAA,EAAY,SAAA,EAAW,EAAA,CAAG,4BAAA,CAAO,KAAA,EAAO,SAAS,CAAA,EAAG,CAAA;AAAA,oBAC9FA,cAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,WAAW,4BAAA,CAAO,MAAA;AAAA,QAClB,YAAA,EAAY,UAAU,SAAA,GAAY,SAAA;AAAA,QAClC,cAAA,EAAc,OAAA;AAAA,QACd,SAAS,MAAM,UAAA,CAAW,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,QAElC,QAAA,EAAA,OAAA;AAAA;AAAA,0BAECG,gBAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,aAAY,KAAA,EAAM,KAAA,EAAM,QAAO,KAAA,EAAM,IAAA,EAAK,QAAO,MAAA,EAAO,cAAA,EAAe,aAAY,GAAA,EAAI,aAAA,EAAc,SAAQ,cAAA,EAAe,OAAA,EAAQ,eAAY,MAAA,EAC3J,QAAA,EAAA;AAAA,4BAAAH,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,iFAAA,EAAkF,CAAA;AAAA,4BAC1FA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,wEAAA,EAAyE,CAAA;AAAA,4BACjFA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,kCAAA,EAAmC,CAAA;AAAA,4BAC3CA,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA,WAAA,EACtC;AAAA;AAAA;AAAA,0BAGAG,gBAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,aAAY,KAAA,EAAM,KAAA,EAAM,QAAO,KAAA,EAAM,IAAA,EAAK,QAAO,MAAA,EAAO,cAAA,EAAe,aAAY,GAAA,EAAI,aAAA,EAAc,SAAQ,cAAA,EAAe,OAAA,EAAQ,eAAY,MAAA,EAC3J,QAAA,EAAA;AAAA,4BAAAH,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,8CAAA,EAA+C,CAAA;AAAA,4BACvDA,eAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI;AAAA,WAAA,EAChC;AAAA;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ;;;AChEA,IAAO,0BAAQ,EAAC,UAAA,EAAW,0BAAyB,MAAA,EAAO,oBAAA,EAAqB,SAAQ,qBAAA,EAAqB;ACoBtG,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,CAAA,EAAG,YAAY,KAAA,EAAO,SAAA,EAAW,GAAG,IAAA,EAAK,EAAgC;AACzG,EAAA,MAAM,QAAQ,eAAA,EAAgB;AAC9B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIS,cAAAA,CAAS,MAAM,MAAA,CAAO,IAAA,CAAK,YAAA,IAAgB,EAAE,CAAC,CAAA;AAC5E,EAAA,MAAM,UAAU,IAAA,CAAK,KAAA,KAAU,SAAY,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,GAAI,OAAA;AAEhE,EAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAA4C;AAC5D,IAAA,UAAA,CAAW,KAAA,CAAM,OAAO,KAAK,CAAA;AAC7B,IAAA,IAAA,CAAK,WAAW,KAAK,CAAA;AAAA,EACvB,CAAA;AAEA,EAAA,MAAM,2BACJT,cAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,IAAA,CAAK,EAAA,IAAM,KAAA,EAAO,EAAA;AAAA,MACtB,kBAAA,EAAkB,IAAA,CAAK,kBAAkB,CAAA,IAAK,KAAA,EAAO,WAAA;AAAA,MACrD,cAAA,EAAc,IAAA,CAAK,cAAc,CAAA,KAAM,OAAO,OAAA,IAAW,MAAA,CAAA;AAAA,MACzD,IAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,uBAAA,CAAO,QAAA,EAAU,SAAS,CAAA;AAAA,MACvC,GAAG,IAAA;AAAA,MACH,GAAI,SAAA,GAAY,EAAE,QAAA,KAAa;AAAC;AAAA,GACnC;AAGF,EAAA,IAAI,CAAC,WAAW,OAAO,QAAA;AACvB,EAAA,uBACEG,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,wBAAO,IAAA,EACrB,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,oBACDH,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,uBAAA,CAAO,KAAA,EAAO,eAAY,MAAA,EACxC,QAAA,EAAA,IAAA,CAAK,cAAc,MAAA,GAAY,CAAA,EAAG,QAAQ,MAAM,CAAA,CAAA,EAAI,KAAK,SAAS,CAAA,CAAA,GAAK,QAAQ,MAAA,EAClF;AAAA,GAAA,EACF,CAAA;AAEJ;;;ACnDA,IAAO,uBAAA,GAAQ,EAAC,MAAA,EAAO,oBAAA,EAAqB,OAAM,yCAAA,EAA0C,MAAA,EAAO,oBAAA,EAAqB,OAAA,EAAQ,qBAAA,EAAqB;ACmC9I,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,aAAA,GAAgB,KAAA;AAAA,EAChB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgC;AAC9B,EAAA,MAAM,GAAA,GAAMO,aAAyB,IAAI,CAAA;AAEzC,EAAAC,gBAAU,MAAM;AACd,IAAA,IAAI,GAAA,CAAI,OAAA,KAAY,IAAA,EAAM,GAAA,CAAI,QAAQ,aAAA,GAAgB,aAAA;AAAA,EACxD,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,uBACEL,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,EAAA,CAAG,uBAAA,CAAO,IAAA,EAAM,WAAA,IAAe,uBAAA,CAAO,IAAA,EAAM,SAAS,CAAA,EACrE,QAAA,EAAA;AAAA,oBAAAH,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,UAAA;AAAA,QACL,WAAW,uBAAA,CAAO,GAAA;AAAA,QAClB,GAAA,EAAK,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAA;AAAA,QACpB,GAAG;AAAA;AAAA,KACN;AAAA,IACC,WAAA,mBACCA,cAAAA,CAAC,cAAA,EAAA,EAAe,WAAW,uBAAA,CAAO,KAAA,EAAQ,QAAA,EAAA,KAAA,EAAM,CAAA,mBAEhDA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,uBAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAE1C,CAAA;AAEJ;;;AChEA,IAAO,oBAAA,GAAQ,EAAC,MAAA,EAAO,iBAAA,EAAkB,SAAA,EAAU,oBAAA,EAAqB,SAAA,EAAU,oBAAA,EAAqB,KAAA,EAAM,sCAAA,EAAuC,OAAA,EAAQ,kBAAA,EAAkB;ACyBvK,SAAS,KAAA,CAAM,EAAE,KAAA,EAAO,IAAA,EAAAD,QAAO,IAAA,EAAM,SAAA,EAAW,GAAG,IAAA,EAAK,EAA6B;AAC1F,EAAA,uBACEI,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,EAAA,CAAG,oBAAA,CAAO,IAAA,EAAM,oBAAA,CAAO,CAAA,KAAA,EAAQJ,KAAI,CAAA,CAAE,CAAA,EAAG,SAAS,CAAA,EACjE,QAAA,EAAA;AAAA,oBAAAC,cAAAA,CAAC,WAAM,IAAA,EAAK,OAAA,EAAQ,WAAW,oBAAA,CAAO,GAAA,EAAM,GAAG,IAAA,EAAM,CAAA;AAAA,oBACrDA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,oBAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EACxC,CAAA;AAEJ;;;AChCA,IAAO,qBAAA,GAAQ,EAAC,MAAA,EAAO,kBAAA,EAAmB,OAAA,EAAQ,yCAAA,EAA0C,WAAA,EAAY,uBAAA,EAAwB,SAAA,EAAU,qBAAA,EAAsB,OAAA,EAAQ,mBAAA,EAAmB;ACgCpL,SAAS,MAAA,CAAO;AAAA,EACrB,KAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA8B;AAC5B,EAAA,uBACEG,gBAAC,OAAA,EAAA,EAAM,SAAA,EAAW,GAAG,qBAAA,CAAO,IAAA,EAAM,SAAS,CAAA,EACzC,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,qBAAA,CAAO,SAAA,EACtB,QAAA,EAAA;AAAA,sBAAAH,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,UAAA;AAAA,UACL,IAAA,EAAK,QAAA;AAAA,UACL,WAAW,qBAAA,CAAO,KAAA;AAAA,UAClB,UAAU,QAAA,IAAY,OAAA;AAAA,UACtB,aAAW,OAAA,IAAW,MAAA;AAAA,UACrB,GAAG;AAAA;AAAA,OACN;AAAA,MAEC,OAAA,oBACCA,cAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,EAAA,EAAI,KAAA,EAAM,EAAA,EAAG,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,qBAAA,CAAO,OAAA,EAAS;AAAA,KAAA,EAE9E,CAAA;AAAA,IACC,KAAA,KAAU,0BAAaA,cAAAA,CAAC,UAAK,SAAA,EAAW,qBAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAChE,CAAA;AAEJ;;;AC1DA,IAAO,kCAAQ,EAAC,OAAA,EAAQ,6BAAA,EAA8B,SAAA,EAAU,iCAAgC,MAAA,EAAO,4BAAA,EAA6B,SAAA,EAAU,+BAAA,EAAgC,QAAO,4BAAA,EAA6B,SAAA,EAAU,iCAAgC,WAAA,EAAY,iCAAA,EAAkC,SAAQ,6BAAA,EAA6B;ACuDxU,SAAS,gBAAA,CAA4C;AAAA,EAC1D,KAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,KAAA;AAAA,EACZ,MAAAD,KAAAA,GAAO,IAAA;AAAA,EACP,IAAA,GAAO,KAAA;AAAA,EACP,MAAA,GAAS,KAAA;AAAA,EACT;AACF,CAAA,EAA2C;AACzC,EAAA,MAAM,OAAOO,WAAAA,EAAM;AACnB,EAAA,uBACEN,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,YAAA;AAAA,MACL,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,EAAA;AAAA,QACT,+BAAA,CAAO,KAAA;AAAA,QACP,+BAAA,CAAO,CAAA,KAAA,EAAQD,KAAI,CAAA,CAAE,CAAA;AAAA,QACrB,aAAa,+BAAA,CAAO,SAAA;AAAA,QACpB,QAAQ,+BAAA,CAAO,IAAA;AAAA,QACf;AAAA,OACF;AAAA,MAEC,QAAA,EAAA,OAAA,CAAQ,IAAI,CAAC,MAAA,qBACZI,eAAAA,CAAC,OAAA,EAAA,EAAyB,SAAA,EAAW,+BAAA,CAAO,OAAA,EAC1C,QAAA,EAAA;AAAA,wBAAAH,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,OAAA;AAAA,YACL,IAAA;AAAA,YACA,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,OAAA,EAAS,OAAO,KAAA,KAAU,KAAA;AAAA,YAC1B,QAAA,EAAU,MAAM,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA;AAAA,YAGrC,OAAA,EACE,UAAU,MAAA,CAAO,KAAA,KAAU,QAAQ,MAAM,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA,GAAI,MAAA;AAAA,YAEpE,QAAA;AAAA,YACA,WAAW,+BAAA,CAAO;AAAA;AAAA,SACpB;AAAA,wBACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,+BAAA,CAAO,IAAA,EAAO,iBAAO,KAAA,EAAM;AAAA,OAAA,EAAA,EAflC,MAAA,CAAO,KAgBnB,CACD;AAAA;AAAA,GACH;AAEJ;;;ACrGA,IAAO,uBAAA,GAAQ,EAAC,UAAA,EAAW,wBAAA,EAAyB,QAAA,EAAS,sBAAA,EAAuB,UAAA,EAAW,wBAAA,EAAyB,OAAA,EAAQ,qBAAA,EAAsB,QAAA,EAAS,sBAAA,EAAsB;AC2BrL,IAAM,IAAA,GAAO,GAAA;AAeN,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA,GAAQ,CAAA;AAAA,EACR,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgC;AAC9B,EAAA,MAAM,KAAA,GAAQO,aAAuB,IAAI,CAAA;AACzC,EAAA,MAAM,UAAUD,WAAAA,EAAM;AACtB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIG,eAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAS,IAAI,CAAA;AAEvC,EAAA,MAAM,OAAA,GAAUG,kBAAY,MAAM;AAChC,IAAA,MAAM,MAAM,KAAA,CAAM,OAAA;AAClB,IAAA,IAAI,QAAQ,IAAA,EAAM;AAElB,IAAA,UAAA,CAAW,GAAA,CAAI,cAAc,CAAC,CAAA;AAC9B,IAAA,QAAA,CAAS,IAAI,UAAA,GAAa,GAAA,CAAI,WAAA,IAAe,GAAA,CAAI,cAAc,CAAC,CAAA;AAAA,EAClE,CAAA,EAAG,EAAE,CAAA;AAIL,EAAAJ,gBAAU,OAAO,CAAA;AAEjB,EAAAA,gBAAU,MAAM;AACd,IAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,OAAO,CAAA;AACzC,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,QAAA,EAAU,OAAO,CAAA;AAAA,EAC3D,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,IAAA,GAAO,CAAC,SAAA,KAAsB;AAClC,IAAA,MAAM,MAAM,KAAA,CAAM,OAAA;AAClB,IAAA,IAAI,QAAQ,IAAA,EAAM;AAElB,IAAA,GAAA,CAAI,QAAA,CAAS,EAAE,IAAA,EAAM,SAAA,GAAY,IAAA,CAAK,MAAM,GAAA,CAAI,WAAA,GAAc,IAAI,CAAA,EAAG,CAAA;AAAA,EACvE,CAAA;AAEA,EAAA,uBACEL,eAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,wBAAO,QAAA,EAAU,SAAS,CAAA,EAAI,GAAG,IAAA,EACtD,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,uBAAA,CAAO,MAAA,EACrB,QAAA,EAAA;AAAA,sBAAAH,eAAC,OAAA,EAAA,EAAQ,KAAA,EAAc,SAAQ,OAAA,EAAQ,EAAA,EAAI,SACxC,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,sBAEAG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,wBAAO,QAAA,EACpB,QAAA,EAAA;AAAA,QAAA,MAAA;AAAA,wBAEDA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,wBAAO,MAAA,EACrB,QAAA,EAAA;AAAA,0BAAAH,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,QAAA,EAAQ,IAAA;AAAA,cACR,cAAY,MAAA,CAAO,QAAA;AAAA,cACnB,QAAA,EAAU,OAAA;AAAA,cACV,OAAA,EAAS,MAAM,IAAA,CAAK,EAAE,CAAA;AAAA,cAEtB,QAAA,kBAAAA,eAAC,gBAAA,EAAA,EAAiB;AAAA;AAAA,WACpB;AAAA,0BACAA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,QAAA,EAAQ,IAAA;AAAA,cACR,cAAY,MAAA,CAAO,IAAA;AAAA,cACnB,QAAA,EAAU,KAAA;AAAA,cACV,OAAA,EAAS,MAAM,IAAA,CAAK,CAAC,CAAA;AAAA,cAErB,QAAA,kBAAAA,eAAC,iBAAA,EAAA,EAAkB;AAAA;AAAA;AACrB,SAAA,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAEAA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAW,uBAAA,CAAO,KAAA;AAAA,QAClB,GAAA,EAAK,KAAA;AAAA,QACL,IAAA,EAAK,OAAA;AAAA,QACL,iBAAA,EAAiB,OAAA;AAAA,QACjB,QAAA,EAAU,OAAA;AAAA,QAET;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ;;;AC9HA,IAAO,mBAAA,GAAQ,EAAC,OAAA,EAAQ,iBAAA,EAAkB,iBAAgB,yBAAA,EAA0B,OAAA,EAAQ,iBAAA,EAAkB,MAAA,EAAO,kBAAiB,cAAA,EAAe,wBAAA,EAAyB,gBAAA,EAAiB,0BAAA,EAA2B,kBAAiB,0BAAA,EAA2B,eAAA,EAAgB,yBAAA,EAA0B,KAAA,EAAM,iBAAgB,aAAA,EAAc,uBAAA,EAAwB,aAAA,EAAc,uBAAA,EAAwB,WAAU,mBAAA,EAAoB,SAAA,EAAU,mBAAA,EAAoB,UAAA,EAAW,sBAAqB,MAAA,EAAO,gBAAA,EAAiB,OAAA,EAAQ,iBAAA,EAAkB,eAAc,uBAAA,EAAuB;ACKrkB,IAAM,gBAAA,GAAmBC,oBAAc,KAAK,CAAA;AAwBrC,SAAS,UAAU,EAAE,KAAA,EAAO,SAAA,EAAW,GAAG,MAAK,EAAiC;AACrF,EAAA,MAAM,YAAYK,WAAAA,EAAM;AAExB,EAAA,MAAM,IAAA,mBACJN,cAAAA,CAAC,gBAAA,CAAiB,UAAjB,EAA0B,KAAA,EAAO,MAChC,QAAA,kBAAAA,cAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,mBAAA,CAAO,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,iBAAA,EAAiB,KAAA,IAAS,IAAA,GAAO,SAAA,GAAY,MAAA;AAAA,MAC5C,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAGF,EAAA,IAAI,KAAA,IAAS,MAAM,OAAO,IAAA;AAC1B,EAAA,uBACEG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,oBAAO,aAAA,EACrB,QAAA,EAAA;AAAA,oBAAAH,eAAC,MAAA,EAAA,EAAK,SAAA,EAAW,oBAAO,KAAA,EAAO,EAAA,EAAI,WAChC,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,IACC;AAAA,GAAA,EACH,CAAA;AAEJ;AA6CO,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgC;AAC9B,EAAA,MAAM,OAAA,GAAUE,iBAAW,gBAAgB,CAAA;AAC3C,EAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,KAAA;AAC9B,EAAA,MAAM,cAA2B,EAAA,IAAM,GAAA;AAGvC,EAAA,MAAM,QAAA,GAAW,OAAA,KAAY,OAAA,GAAU,MAAA,GAAY,MAAA,CAAA;AAEnD,EAAA,MAAM,OAAA,mBACJC,eAAAA,CAAAE,mBAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,OAAA,IAAW,wBAAQL,cAAAA,CAAC,UAAK,SAAA,EAAW,mBAAA,CAAO,SAAU,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,oBAC9DG,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,oBAAO,IAAA,EACtB,QAAA,EAAA;AAAA,sBAAAH,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,mBAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MACrC,WAAA,IAAe,wBAAQA,cAAAA,CAAC,UAAK,SAAA,EAAW,mBAAA,CAAO,aAAc,QAAA,EAAA,WAAA,EAAY;AAAA,KAAA,EAC5E,CAAA;AAAA,IACC,QAAA,IAAY,wBAAQA,cAAAA,CAAC,UAAK,SAAA,EAAW,mBAAA,CAAO,UAAW,QAAA,EAAA,QAAA,EAAS;AAAA,GAAA,EACnE,CAAA;AAGF,EAAA,uBACEG,eAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,mBAAA,CAAO,IAAA;AAAA,QACP,OAAA,IAAW,QAAQ,mBAAA,CAAO,WAAA;AAAA,QAC1B,QAAA,IAAY,mBAAA,CAAO,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE,CAAA;AAAA,QACxC;AAAA,OACF;AAAA,MACA,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA,KAAS,yBACRH,cAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAW,GAAG,mBAAA,CAAO,GAAA,EAAK,mBAAA,CAAO,WAAW,GAAG,IAAA,EAAY,OAAA,EACrE,mBACH,CAAA,GACE,OAAA,KAAY,yBACdA,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAW,EAAA,CAAG,mBAAA,CAAO,GAAA,EAAK,oBAAO,WAAW,CAAA;AAAA,YAC5C,OAAA;AAAA,YACA,cAAA,EAAc,OAAA;AAAA,YAEb,QAAA,EAAA;AAAA;AAAA,4BAGHA,cAAAA,CAAC,UAAK,SAAA,EAAW,mBAAA,CAAO,KAAM,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QAEvC,OAAA,IAAW,wBAAQA,cAAAA,CAAC,UAAK,SAAA,EAAW,mBAAA,CAAO,SAAU,QAAA,EAAA,OAAA,EAAQ;AAAA;AAAA;AAAA,GAChE;AAEJ;;;AC/JA,IAAO,wBAAA,GAAQ,EAAC,MAAA,EAAO,qBAAA,EAAsB,QAAA,EAAS,uBAAA,EAAwB,OAAA,EAAQ,sBAAA,EAAuB,KAAA,EAAM,oBAAA,EAAqB,MAAA,EAAO,qBAAA,EAAsB,UAAA,EAAW,yBAAA,EAA0B,MAAA,EAAO,qBAAA,EAAsB,QAAA,EAAS,uBAAA,EAAwB,SAAA,EAAU,wBAAA,EAAyB,OAAA,EAAQ,sBAAA,EAAuB,OAAA,EAAQ,sBAAA,EAAuB,MAAA,EAAO,qBAAA,EAAsB,aAAA,EAAc,4BAAA,EAA4B;ACqFza,SAAS,SAAA,CAAe;AAAA,EAC7B,KAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsC;AACpC,EAAA,MAAM,aAAa,QAAA,KAAa,MAAA;AAChC,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAC5B,EAAA,MAAM,GAAA,GAAM,UAAA,IAAc,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,IAAA,CAAK,KAAA,CAAM,CAAC,GAAA,KAAQ,QAAA,CAAS,QAAA,CAAS,GAAG,CAAC,CAAA;AACvF,EAAA,MAAM,IAAA,GAAO,UAAA,IAAc,CAAC,GAAA,IAAO,IAAA,CAAK,IAAA,CAAK,CAAC,GAAA,KAAQ,QAAA,CAAS,QAAA,CAAS,GAAG,CAAC,CAAA;AAC5E,EAAA,MAAM,OAAO,OAAA,CAAQ,MAAA,IAAU,aAAa,CAAA,GAAI,CAAA,CAAA,IAAM,aAAa,CAAA,GAAI,CAAA,CAAA;AAKvE,EAAA,MAAM,MAAA,GAAS,CAAC,GAAA,EAAa,KAAA,KAAmB;AAC9C,IAAA,IAAI,aAAa,MAAA,EAAW;AAC5B,IAAA,MAAM,IAAA,GAAO,KAAA,GAAQ,CAAC,GAAG,QAAA,EAAU,GAAG,CAAA,GAAI,QAAA,CAAS,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,KAAS,GAAG,CAAA;AAChF,IAAA,gBAAA,CAAiB,IAAA,CAAK,OAAO,CAAC,IAAA,KAAS,KAAK,QAAA,CAAS,IAAI,CAAC,CAAC,CAAA;AAAA,EAC7D,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,GAAA,KAAqB;AACnC,IAAA,IAAI,QAAA,KAAa,MAAA,EAAW,OAAO,QAAA,CAAS,GAAG,CAAA;AAC/C,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,CAAC,CAAA,EAAG,KAAK,GAAG,CAAA;AAClC,IAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,OAAO,GAAG,CAAA;AAAA,EACvD,CAAA;AAEA,EAAA,uBACEG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,wBAAA,CAAO,IAAA,EAAM,SAAS,CAAA,EAAG,GAAA,EAAW,GAAG,IAAA,EAGxD,QAAA,EAAA;AAAA,oBAAAH,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,yBAAO,MAAA,EAAQ,IAAA,EAAK,UAAS,YAAA,EAAY,KAAA,EAAO,QAAA,EAAU,CAAA,EACxE,0BAAAG,eAAAA,CAAC,OAAA,EAAA,EAAM,WAAW,wBAAA,CAAO,KAAA,EAAO,cAAY,KAAA,EAC1C,QAAA,EAAA;AAAA,sBAAAA,gBAAC,UAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,UAAA,oBAAcH,eAAC,KAAA,EAAA,EAAI,CAAA;AAAA,QACnB,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACZA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO,OAAO,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,MAAA,CAAO,OAAM,GAAI;AAAA,WAAA;AAAA,UADzD,MAAA,CAAO;AAAA,SAGf,CAAA;AAAA,QACA,UAAA,oBAAcA,cAAAA,CAAC,KAAA,EAAA,EAAI;AAAA,OAAA,EACtB,CAAA;AAAA,sBAEAA,eAAC,OAAA,EAAA,EACC,QAAA,kBAAAG,gBAAC,IAAA,EAAA,EAAG,SAAA,EAAW,yBAAO,GAAA,EACnB,QAAA,EAAA;AAAA,QAAA,UAAA,oBACCH,eAAC,IAAA,EAAA,EAAG,KAAA,EAAM,OAAM,SAAA,EAAW,wBAAA,CAAO,QAChC,QAAA,kBAAAA,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAO,eAAA,CAAgB,GAAA;AAAA,YACvB,WAAA,EAAW,IAAA;AAAA,YACX,OAAA,EAAS,GAAA;AAAA,YACT,aAAA,EAAe,IAAA;AAAA,YACf,QAAA,EAAU,CAAC,KAAA,KAAU,gBAAA,CAAiB,MAAM,MAAA,CAAO,OAAA,GAAU,IAAA,GAAO,EAAE;AAAA;AAAA,SACxE,EACF,CAAA;AAAA,QAED,QAAQ,GAAA,CAAI,CAAC,MAAA,qBACZA,eAAC,IAAA,EAAA,EAAG,KAAA,EAAM,KAAA,EAAuB,SAAA,EAAW,yBAAO,IAAA,EAChD,QAAA,EAAA,MAAA,CAAO,MAAA,EAAA,EADW,MAAA,CAAO,GAE5B,CACD,CAAA;AAAA,QACA,UAAA,oBACCA,cAAAA,CAAC,IAAA,EAAA,EAAG,OAAM,KAAA,EAAM,SAAA,EAAW,wBAAA,CAAO,OAAA,EAC/B,QAAA,EAAA,aAAA,EACH;AAAA,OAAA,EAEJ,CAAA,EACF,CAAA;AAAA,sBAEAA,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,wBAAA,CAAO,IAAA,EACtB,QAAA,EAAA,IAAA,CAAK,MAAA,GAAS,CAAA,GACX,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ;AAChB,QAAA,MAAM,GAAA,GAAM,OAAO,GAAG,CAAA;AACtB,QAAA,MAAM,KAAA,GAAQ,QAAA,EAAU,QAAA,CAAS,GAAG,CAAA,IAAK,KAAA;AACzC,QAAA,uBACEG,eAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,EAAA;AAAA,cACT,wBAAA,CAAO,GAAA;AAAA,cACP,SAAS,wBAAA,CAAO,QAAA;AAAA,cAChB,QAAA,GAAW,GAAG,CAAA,KAAM,IAAA,IAAQ,wBAAA,CAAO;AAAA,aACrC;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,UAAA,oBACCH,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,wBAAA,CAAO,QACpB,QAAA,kBAAAA,cAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,eAAA,CAAgB,GAAA,CAAI,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,kBACtC,WAAA,EAAW,IAAA;AAAA,kBACX,OAAA,EAAS,KAAA;AAAA,kBACT,UAAU,CAAC,KAAA,KAAU,OAAO,GAAA,EAAK,KAAA,CAAM,OAAO,OAAO;AAAA;AAAA,eACvD,EACF,CAAA;AAAA,cAED,QAAQ,GAAA,CAAI,CAAC,MAAA,qBACZA,eAAC,IAAA,EAAA,EAAoB,SAAA,EAAW,wBAAA,CAAO,IAAA,EACpC,iBAAO,IAAA,CAAK,GAAG,CAAA,EAAA,EADT,MAAA,CAAO,GAEhB,CACD,CAAA;AAAA,cACA,UAAA,oBAAcA,cAAAA,CAAC,IAAA,EAAA,EAAG,WAAW,wBAAA,CAAO,OAAA,EAAU,QAAA,EAAA,UAAA,CAAW,GAAG,CAAA,EAAE;AAAA;AAAA,WAAA;AAAA,UAtB1D;AAAA,SAuBP;AAAA,MAEJ,CAAC,CAAA,GACD,KAAA,KAAU,MAAA,oBACRA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,wBAAA,CAAO,GAAA,EACpB,QAAA,kBAAAA,cAAAA,CAAC,IAAA,EAAA,EAAG,WAAW,wBAAA,CAAO,KAAA,EAAO,OAAA,EAAS,IAAA,EACpC,QAAA,kBAAAA,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,MAAA,EAAQ,QAAA,EAAA,KAAA,EAAM,CAAA,EAC9B,CAAA,EACF,CAAA,EAER;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,IAEC,UAAA,IAAc,QAAA,CAAS,MAAA,GAAS,CAAA,IAAK,WAAA,KAAgB,MAAA,oBACpDG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,wBAAA,CAAO,IAAA,EAAM,MAAK,QAAA,EAChC,QAAA,EAAA;AAAA,sBAAAH,cAAAA,CAAC,QAAK,OAAA,EAAQ,MAAA,EAAQ,0BAAgB,KAAA,CAAM,QAAA,CAAS,MAAM,CAAA,EAAE,CAAA;AAAA,sBAC7DA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,wBAAA,CAAO,aAAc,QAAA,EAAA,WAAA,EAAY;AAAA,KAAA,EACnD;AAAA,GAAA,EAEJ,CAAA;AAEJ;;;AC3NA,IAAO,4BAAQ,EAAC,MAAA,EAAO,wBAAuB,MAAA,EAAO,sBAAA,EAAuB,UAAS,wBAAA,EAAwB;AC2BtG,SAAS,WAAW,EAAE,KAAA,EAAO,aAAa,IAAA,EAAM,MAAA,EAAQ,WAAU,EAAkC;AACzG,EAAA,uBACEG,gBAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,yBAAA,CAAO,IAAA,EAAM,SAAS,CAAA,EACtC,QAAA,EAAA;AAAA,IAAA,IAAA,IAAQ,IAAA,oBACPH,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,yBAAA,CAAO,IAAA,EAAM,aAAA,EAAY,MAAA,EACvC,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,oBAEFA,cAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,GAAI,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IACzB,gBAAgB,MAAA,oBAAaA,eAAC,IAAA,EAAA,EAAK,IAAA,EAAK,aAAa,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,IACjE,MAAA,IAAU,wBAAQA,cAAAA,CAAC,UAAK,SAAA,EAAW,yBAAA,CAAO,QAAS,QAAA,EAAA,MAAA,EAAO;AAAA,GAAA,EAC7D,CAAA;AAEJ;;;ACxCA,IAAO,mBAAA,GAAQ,EAAC,MAAA,EAAO,gBAAA,EAAiB,OAAM,eAAA,EAAgB,UAAA,EAAW,oBAAA,EAAqB,OAAA,EAAQ,iBAAA,EAAiB;ACevH,IAAM,WAAA,GAAcC,oBAAuC,IAAI,CAAA;AAE/D,SAAS,QAAQ,SAAA,EAAqC;AACpD,EAAA,MAAM,OAAA,GAAUC,iBAAW,WAAW,CAAA;AACtC,EAAA,IAAI,YAAY,IAAA,EAAM,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,SAAS,CAAA,uBAAA,CAAyB,CAAA;AAC3E,EAAA,OAAO,OAAA;AACT;AAsBO,SAAS,IAAA,CAAK,EAAE,KAAA,EAAO,QAAA,EAAU,UAAS,EAA4B;AAC3E,EAAA,MAAM,SAASI,WAAAA,EAAM;AACrB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,IAAIG,cAAAA,iBAA8B,IAAI,KAAK,CAAA;AACnE,EAAA,MAAM,aAAA,GAAgBG,iBAAAA,CAAY,CAAC,KAAA,KAAkB;AACnD,IAAA,SAAA,CAAU,CAAC,SAAS,IAAI,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,KAAK,CAAC,CAAA;AAC5C,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,CAAU,CAAC,IAAA,KAAS;AAClB,QAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,QAAA,IAAA,CAAK,OAAO,KAAK,CAAA;AACjB,QAAA,OAAO,IAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,uBACEZ,cAAAA,CAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,aAAA,IAC7D,QAAA,EACH,CAAA;AAEJ;AAWA,SAAS,OAAA,CAAQ,OAAsC,QAAA,EAAqC;AAC1F,EAAA,MAAM,IAAA,GAAO,CAAC,WAAA,EAAa,YAAA,EAAc,QAAQ,KAAK,CAAA;AACtD,EAAA,IAAI,CAAC,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,EAAG;AAC/B,EAAA,MAAM,OAAO,CAAC,GAAG,MAAM,aAAA,CAAc,gBAAA,CAAoC,cAAc,CAAC,CAAA;AACxF,EAAA,MAAM,UAAU,IAAA,CAAK,SAAA,CAAU,CAACa,IAAAA,KAAQA,IAAAA,KAAQ,SAAS,aAAa,CAAA;AACtE,EAAA,IAAI,YAAY,EAAA,EAAI;AACpB,EAAA,KAAA,CAAM,cAAA,EAAe;AACrB,EAAA,MAAM,OACJ,KAAA,CAAM,GAAA,KAAQ,SACV,CAAA,GACA,KAAA,CAAM,QAAQ,KAAA,GACZ,IAAA,CAAK,SAAS,CAAA,GAAA,CACb,OAAA,IAAW,MAAM,GAAA,KAAQ,YAAA,GAAe,IAAI,EAAA,CAAA,GAAM,IAAA,CAAK,UAAU,IAAA,CAAK,MAAA;AAC/E,EAAA,MAAM,GAAA,GAAM,KAAK,IAAI,CAAA;AACrB,EAAA,IAAI,CAAC,GAAA,EAAK;AACV,EAAA,GAAA,CAAI,KAAA,EAAM;AACV,EAAA,MAAM,KAAA,GAAQ,IAAI,OAAA,CAAQ,KAAA;AAC1B,EAAA,IAAI,KAAA,KAAU,MAAA,EAAW,QAAA,CAAS,KAAK,CAAA;AACzC;AAEO,SAAS,QAAQ,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,MAAK,EAA+B;AAC3F,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,OAAA,CAAQ,SAAS,CAAA;AACtC,EAAA,uBACEb,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,SAAA;AAAA,MACL,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA,EAAW,EAAA,CAAG,mBAAA,CAAO,IAAA,EAAM,SAAS,CAAA;AAAA,MACpC,SAAA,EAAW,CAAC,KAAA,KAAU,OAAA,CAAQ,OAAO,QAAQ,CAAA;AAAA,MAC5C,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAQO,SAAS,IAAI,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,MAAK,EAA2B;AACnF,EAAA,MAAM,IAAA,GAAO,QAAQ,KAAK,CAAA;AAC1B,EAAA,MAAM,QAAA,GAAW,KAAK,KAAA,KAAU,KAAA;AAChC,EAAA,uBACEA,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,IAAA,EAAK,KAAA;AAAA,MACL,EAAA,EAAI,CAAA,EAAG,IAAA,CAAK,MAAM,QAAQ,KAAK,CAAA,CAAA;AAAA,MAC/B,eAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAe,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA,GAAI,CAAA,EAAG,IAAA,CAAK,MAAM,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,GAAK,MAAA;AAAA,MAC1E,QAAA,EAAU,WAAW,CAAA,GAAI,EAAA;AAAA,MACzB,YAAA,EAAY,KAAA;AAAA,MACZ,WAAW,EAAA,CAAG,mBAAA,CAAO,KAAK,QAAA,IAAY,mBAAA,CAAO,UAAU,SAAS,CAAA;AAAA,MAChE,OAAA,EAAS,MAAM,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA;AAAA,MACjC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAQO,SAAS,SAAS,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,MAAK,EAAgC;AAC7F,EAAA,MAAM,IAAA,GAAO,QAAQ,UAAU,CAAA;AAC/B,EAAA,MAAM,QAAA,GAAW,KAAK,KAAA,KAAU,KAAA;AAChC,EAAA,MAAM,EAAE,eAAc,GAAI,IAAA;AAC1B,EAAAQ,eAAAA,CAAU,MAAM,aAAA,CAAc,KAAK,GAAG,CAAC,aAAA,EAAe,KAAK,CAAC,CAAA;AAC5D,EAAA,uBACER,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,UAAA;AAAA,MACL,EAAA,EAAI,CAAA,EAAG,IAAA,CAAK,MAAM,UAAU,KAAK,CAAA,CAAA;AAAA,MACjC,iBAAA,EAAiB,CAAA,EAAG,IAAA,CAAK,MAAM,QAAQ,KAAK,CAAA,CAAA;AAAA,MAC5C,QAAQ,CAAC,QAAA;AAAA,MACT,SAAA,EAAW,EAAA,CAAG,mBAAA,CAAO,KAAA,EAAO,SAAS,CAAA;AAAA,MACpC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;;;AC7JA,IAAO,oBAAA,GAAQ,EAAC,UAAA,EAAW,qBAAA,EAAsB,SAAQ,kBAAA,EAAmB,cAAA,EAAe,2BAA0B,aAAA,EAAc,wBAAA,EAAyB,QAAO,iBAAA,EAAkB,OAAA,EAAQ,oBAAmB,aAAA,EAAc,wBAAA,EAAyB,SAAQ,wCAAA,EAAyC,YAAA,EAAa,uBAAA,EAAwB,QAAA,EAAS,yCAAA,EAAyC;ACwC/X,IAAM,YAAA,GAAeC,oBAAwC,IAAI,CAAA;AAE1D,SAAS,QAAA,GAA8B;AAC5C,EAAA,MAAM,OAAA,GAAUC,iBAAW,YAAY,CAAA;AACvC,EAAA,IAAI,OAAA,KAAY,IAAA,EAAM,MAAM,IAAI,MAAM,2CAA2C,CAAA;AACjF,EAAA,OAAO,OAAA;AACT;AA0BO,SAAS,aAAA,CAAc;AAAA,EAC5B,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EAAqC;AACnC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIO,cAAAA,CAAuB,EAAE,CAAA;AACrD,EAAA,MAAM,MAAA,GAASF,aAAO,CAAC,CAAA;AAIvB,EAAA,MAAM,OAAA,GAAUA,YAAAA,iBAAO,IAAI,GAAA,EAAyB,CAAA;AAEpD,EAAA,MAAM,OAAA,GAAUK,iBAAAA,CAAY,CAAC,EAAA,KAAe;AAC1C,IAAA,SAAA,CAAU,CAAC,YAAY,OAAA,CAAQ,MAAA,CAAO,CAAC,KAAA,KAAU,KAAA,CAAM,EAAA,KAAO,EAAE,CAAC,CAAA;AACjE,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA;AACnC,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,OAAA,CAAQ,OAAA,CAAQ,OAAO,EAAE,CAAA;AACzB,MAAA,IAAA,EAAK;AAAA,IACP;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQA,iBAAAA;AAAA,IACZ,CAAC,EAAE,KAAA,EAAO,WAAA,EAAa,IAAA,GAAO,WAAW,QAAA,GAAW,GAAA,EAAM,MAAA,EAAQ,SAAA,EAAU,KAAoB;AAC9F,MAAA,MAAM,KAAK,MAAA,CAAO,OAAA,EAAA;AAClB,MAAA,IAAI,cAAc,MAAA,EAAW,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,IAAI,SAAS,CAAA;AAC9D,MAAA,SAAA,CAAU,CAAC,OAAA,KAAY,CAAC,GAAG,OAAA,EAAS,EAAE,EAAA,EAAI,KAAA,EAAO,WAAA,EAAa,IAAA,EAAM,MAAA,EAAQ,CAAC,CAAA;AAC7E,MAAA,IAAI,WAAW,CAAA,EAAG,UAAA,CAAW,MAAM,OAAA,CAAQ,EAAE,GAAG,QAAQ,CAAA;AACxD,MAAA,OAAO,EAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AAEA,EAAA,MAAM,KAAA,GAAQD,aAAAA,CAAQ,OAAO,EAAE,KAAA,EAAO,SAAQ,CAAA,EAAI,CAAC,KAAA,EAAO,OAAO,CAAC,CAAA;AAElE,EAAA,uBACER,eAAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EACpB,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,oBACDH,cAAAA,CAAC,KAAA,EAAA,EAAI,IAAA,EAAK,UAAS,YAAA,EAAY,WAAA,EAAa,SAAA,EAAW,oBAAA,CAAO,QAAA,EAC3D,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,0BACXG,eAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAKC,IAAA,EAAM,KAAA,CAAM,IAAA,KAAS,QAAA,GAAW,OAAA,GAAU,QAAA;AAAA,QAC1C,SAAA,EAAW,GAAG,oBAAA,CAAO,KAAA,EAAO,qBAAO,CAAA,KAAA,EAAQ,KAAA,CAAM,IAAI,CAAA,CAAE,CAAC,CAAA;AAAA,QAExD,QAAA,EAAA;AAAA,0BAAAA,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,oBAAA,CAAO,IAAA,EACtB,QAAA,EAAA;AAAA,4BAAAH,eAAC,MAAA,EAAA,EAAK,SAAA,EAAW,oBAAA,CAAO,KAAA,EAAQ,gBAAM,KAAA,EAAM,CAAA;AAAA,YAC3C,KAAA,CAAM,WAAA,KAAgB,MAAA,oBACrBA,cAAAA,CAAC,UAAK,SAAA,EAAW,oBAAA,CAAO,WAAA,EAAc,QAAA,EAAA,KAAA,CAAM,WAAA,EAAY;AAAA,WAAA,EAE5D,CAAA;AAAA,UACC,KAAA,CAAM,MAAA,KAAW,MAAA,oBAChBA,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,WAAW,oBAAA,CAAO,MAAA;AAAA,cAClB,SAAS,MAAM;AACb,gBAAA,KAAA,CAAM,QAAQ,OAAA,EAAQ;AACtB,gBAAA,OAAA,CAAQ,MAAM,EAAE,CAAA;AAAA,cAClB,CAAA;AAAA,cAEC,gBAAM,MAAA,CAAO;AAAA;AAAA,WAChB;AAAA,0BAEFA,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,YAAA,EAAY,CAAA,EAAG,YAAY,CAAA,EAAA,EAAK,MAAM,KAAK,CAAA,CAAA;AAAA,cAC3C,WAAW,oBAAA,CAAO,KAAA;AAAA,cAClB,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAA,CAAM,EAAE,CAAA;AAAA,cAE/B,QAAA,kBAAAA,cAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,qBAAO,UAAA,EAAY;AAAA;AAAA;AAC5C;AAAA,OAAA;AAAA,MAhCK,KAAA,CAAM;AAAA,KAkCd,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;;;ACtJA,IAAO,oBAAA,GAAQ,EAAC,OAAA,EAAQ,kBAAA,EAAmB,gBAAe,yBAAA,EAA0B,WAAA,EAAY,sBAAA,EAAuB,UAAA,EAAW,qBAAA,EAAsB,WAAA,EAAY,wBAAuB,WAAA,EAAY,sBAAA,EAAuB,aAAA,EAAc,wBAAA,EAAyB,aAAA,EAAc,wBAAA,EAAyB,gBAAe,yBAAA,EAA0B,WAAA,EAAY,sBAAA,EAAuB,eAAA,EAAgB,0BAAA,EAA0B;;;AC6B3Z,SAAS,MAAqC,KAAA,EAAoC;AACvF,EAAA,MAAM;AAAA,IACJ,GAAA,GAAM,MAAA;AAAA,IACN,KAAA,GAAQ,SAAA;AAAA,IACR,EAAA,GAAK,KAAA;AAAA,IACL,SAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,OAAOF,oBAAc,EAAA,EAAI;AAAA,IACvB,SAAA,EAAW,EAAA,CAAG,oBAAA,CAAO,KAAA,EAAO,qBAAO,CAAA,IAAA,EAAO,GAAG,CAAA,CAAE,CAAA,EAAG,oBAAA,CAAO,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,GAAG,SAAS,CAAA;AAAA,IACrF,GAAG;AAAA,GACJ,CAAA;AACH;;;AC1CA,IAAO,qBAAA,GAAQ,EAAC,QAAA,EAAS,oBAAA,EAAqB,cAAA,EAAe,0BAAA,EAA2B,WAAA,EAAY,uBAAA,EAAwB,UAAA,EAAW,sBAAA,EAAuB,WAAA,EAAY,uBAAA,EAAwB,aAAA,EAAc,yBAAA,EAA0B,cAAA,EAAe,0BAAA,EAA2B,WAAA,EAAY,uBAAA,EAAwB,gBAAA,EAAiB,4BAAA,EAA6B,eAAA,EAAgB,2BAAA,EAA4B,gBAAA,EAAiB,4BAAA,EAA6B,aAAA,EAAc,yBAAA,EAA0B,iBAAA,EAAkB,6BAAA,EAA8B,QAAO,kBAAA,EAAkB;;;ACgC1iB,SAAS,OAAsC,KAAA,EAAqC;AACzF,EAAA,MAAM;AAAA,IACJ,GAAA,GAAM,MAAA;AAAA,IACN,KAAA,GAAQ,QAAA;AAAA,IACR,OAAA,GAAU,OAAA;AAAA,IACV,IAAA,GAAO,KAAA;AAAA,IACP,EAAA,GAAK,KAAA;AAAA,IACL,SAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,OAAOA,oBAAc,EAAA,EAAI;AAAA,IACvB,SAAA,EAAW,EAAA;AAAA,MACT,qBAAA,CAAO,MAAA;AAAA,MACP,qBAAA,CAAO,CAAA,IAAA,EAAO,GAAG,CAAA,CAAE,CAAA;AAAA,MACnB,qBAAA,CAAO,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,CAAA;AAAA,MACvB,qBAAA,CAAO,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA;AAAA,MAC3B,QAAQ,qBAAA,CAAO,IAAA;AAAA,MACf;AAAA,KACF;AAAA,IACA,GAAG;AAAA,GACJ,CAAA;AACH;;;ACtDA,IAAO,2BAAQ,EAAC,WAAA,EAAY,4BAA2B,eAAA,EAAgB,8BAAA,EAA+B,cAAa,2BAAA,EAA2B;;;ACuBvI,SAAS,UAAyC,KAAA,EAAwC;AAC/F,EAAA,MAAM,EAAE,QAAQ,SAAA,EAAW,EAAA,GAAK,OAAO,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAE9D,EAAA,OAAOA,oBAAc,EAAA,EAAI;AAAA,IACvB,SAAA,EAAW,GAAG,wBAAA,CAAO,SAAA,EAAW,yBAAO,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,CAAA,EAAG,SAAS,CAAA;AAAA,IACnE,GAAG;AAAA,GACJ,CAAA;AACH;;;AC9BA,IAAO,sBAAQ,EAAC,MAAA,EAAO,kBAAiB,gBAAA,EAAiB,0BAAA,EAA2B,kBAAiB,0BAAA,EAA2B,UAAA,EAAW,sBAAqB,aAAA,EAAc,uBAAA,EAAwB,UAAS,kBAAA,EAAmB,MAAA,EAAO,kBAAiB,QAAA,EAAS,kBAAA,EAAmB,WAAU,mBAAA,EAAmB;ACyC5S,SAAS,IAAA,CAAK,EAAE,QAAA,EAAU,OAAA,GAAU,QAAQ,QAAA,GAAW,KAAA,EAAO,OAAA,EAAS,IAAA,EAAM,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK,GAAG,MAAK,EAA4B;AAC1I,EAAA,MAAM,SAAA,GAAY,EAAA,CAAG,mBAAA,CAAO,IAAA,EAAM,mBAAA,CAAO,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA,EAAG,QAAA,IAAY,mBAAA,CAAO,QAAA,EAAU,SAAS,CAAA;AAEtG,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,MAAMgB,WAAuB,EAAA,IAAM,GAAA;AACnC,IAAA,uBACEd,cAAAA,CAACc,QAAAA,EAAA,EAAQ,WAAW,EAAA,CAAG,SAAA,EAAW,mBAAA,CAAO,WAAW,CAAA,EAAG,IAAA,EAAY,GAAA,EAAqC,GAAG,MACxG,QAAA,EACH,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,uBACEd,cAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,mBAAA,CAAO,WAAW,CAAA;AAAA,QAC3C,OAAA;AAAA,QACA,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACA,EAAA,MAAM,UAAuB,EAAA,IAAM,KAAA;AACnC,EAAA,uBACEA,eAAC,OAAA,EAAA,EAAQ,SAAA,EAAW,WAAW,GAAA,EAAkC,GAAG,MACjE,QAAA,EACH,CAAA;AAEJ;AAKO,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,MAAK,EAAmC;AACjF,EAAA,uBAAOA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,oBAAO,MAAA,EAAQ,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,CAAA;AACjE;AAoBO,SAAS,SAAS,EAAE,KAAA,EAAO,WAAW,KAAA,EAAO,GAAG,MAAK,EAAgC;AAC1F,EAAA,MAAM,OAAO,KAAA,KAAU,MAAA,GAAY,MAAA,GAAa,EAAE,gBAAgB,KAAA,EAAM;AACxE,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,GAAG,mBAAA,CAAO,IAAA,EAAM,UAAU,MAAA,IAAa,mBAAA,CAAO,SAAS,SAAS,CAAA;AAAA,MAC3E,KAAA,EAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM;AAAA,MAC1B,GAAG;AAAA;AAAA,GACN;AAEJ;AAGO,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,MAAK,EAAmC;AACjF,EAAA,uBAAOA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,oBAAO,MAAA,EAAQ,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,CAAA;AACjE;;;AChHA,IAAO,oBAAA,GAAQ,EAAC,OAAA,EAAQ,kBAAA,EAAmB,QAAA,EAAS,mBAAA,EAAoB,aAAA,EAAc,wBAAA,EAAyB,MAAA,EAAO,iBAAA,EAAkB,QAAA,EAAS,mBAAA,EAAmB;AC2B7J,SAAS,KAAA,CAAM,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,oBAAoB,IAAA,EAAM,IAAA,GAAO,QAAA,EAAU,QAAA,EAAS,EAAe;AAC/G,EAAA,uBACEA,cAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA,EAAQ,OAAA;AAAA,MACR,IAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAgB,oBAAA,CAAO,KAAA;AAAA,MAEtB;AAAA;AAAA,GACH;AAEJ;AAEO,SAAS,WAAA,CAAY,EAAE,QAAA,EAAS,EAA4B;AACjE,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,oBAAA,CAAO,MAAA,EAErB,QAAA,kBAAAA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,oBAAA,CAAO,WAAA,EAAc,UAAS,CAAA,EAC/C,CAAA;AAEJ;AAEO,SAAS,SAAA,CAAU,EAAE,QAAA,EAAS,EAA4B;AAC/D,EAAA,uBAAOA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,oBAAA,CAAO,MAAO,QAAA,EAAS,CAAA;AAChD;AAEO,SAAS,WAAA,CAAY,EAAE,QAAA,EAAS,EAA4B;AACjE,EAAA,uBAAOA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,oBAAA,CAAO,QAAS,QAAA,EAAS,CAAA;AAClD;AClDA,IAAM,YAAA,GAAe,CAAA;AAIrB,IAAM,UAAA,GAAa,GAAA;AAsBZ,SAAS,mBAAA,CAAoB;AAAA,EAClC,IAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAkC;AAChC,EAAAQ,gBAAU,MAAM;AACd,IAAA,MAAM,SAAS,SAAA,CAAU,OAAA;AACzB,IAAA,MAAM,WAAW,WAAA,CAAY,OAAA;AAC7B,IAAA,IAAI,CAAC,IAAA,IAAQ,MAAA,KAAW,IAAA,IAAQ,aAAa,IAAA,EAAM;AAEnD,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,KAAKO,mBAAA,CAAgB,QAAQ,QAAA,EAAU;AAAA,QACrC,SAAA;AAAA,QACA,QAAA,EAAU,OAAA;AAAA,QACV,UAAA,EAAY;AAAA,UACVC,WAAO,GAAG,CAAA;AAAA;AAAA;AAAA;AAAA,UAIVC,QAAA,CAAK,EAAE,OAAA,EAAS,YAAA,EAAc,CAAA;AAAA,UAC9BlB,QAAA,CAAK;AAAA,YACH,OAAA,EAAS,YAAA;AAAA,YACT,KAAA,CAAM,EAAE,eAAA,EAAiB,QAAA,EAAS,EAAG;AACnC,cAAA,QAAA,CAAS,QAAA,CAAS,MAAM,SAAA,GAAY,CAAA,EAAG,KAAK,GAAA,CAAI,eAAA,EAAiB,UAAU,CAAC,CAAA,EAAA,CAAA;AAAA,YAC9E;AAAA,WACD,CAAA;AAAA,UACDmB,SAAA,CAAM,EAAE,OAAA,EAAS,YAAA,EAAc;AAAA;AACjC,OACD,EAAE,IAAA,CAAK,CAAC,EAAE,CAAA,EAAG,CAAA,EAAG,SAAA,EAAW,QAAA,EAAS,KAAM;AACzC,QAAA,QAAA,CAAS,KAAA,CAAM,IAAA,GAAO,CAAA,EAAG,CAAC,CAAA,EAAA,CAAA;AAC1B,QAAA,QAAA,CAAS,KAAA,CAAM,GAAA,GAAM,CAAA,EAAG,CAAC,CAAA,EAAA,CAAA;AACzB,QAAA,QAAA,CAAS,QAAQ,SAAA,GAAY,QAAA;AAAA,MAC/B,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,OAAOC,cAAA,CAAW,MAAA,EAAQ,QAAA,EAAU,MAAM,CAAA;AAAA,EAC5C,GAAG,CAAC,IAAA,EAAM,WAAW,WAAA,EAAa,SAAA,EAAW,GAAG,CAAC,CAAA;AACnD;AC9DO,SAAS,mBAAA,CACd,IAAA,EACA,SAAA,EACA,MAAA,EACM;AAGN,EAAA,MAAM,MAAA,GAASZ,YAAAA,CAAO,EAAE,SAAA,EAAW,QAAQ,CAAA;AAC3C,EAAAC,gBAAU,MAAM;AACd,IAAA,MAAA,CAAO,OAAA,GAAU,EAAE,SAAA,EAAW,MAAA,EAAO;AAAA,EACvC,CAAC,CAAA;AAED,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAwB;AAC7C,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IAAI,EAAE,kBAAkB,IAAA,CAAA,EAAO;AAC/B,MAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAS,MAAA,EAAQ,IAAA,KAAS,MAAA,CAAO,OAAA;AACpD,MAAA,IAAI,IAAA,CAAK,KAAK,CAAC,GAAA,KAAQ,IAAI,OAAA,EAAS,QAAA,CAAS,MAAM,CAAC,CAAA,EAAG;AACvD,MAAA,OAAA,EAAQ;AAAA,IACV,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,eAAe,aAAa,CAAA;AACtD,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,aAAA,EAAe,aAAa,CAAA;AAAA,EACxE,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AACX;;;ACnCA,IAAO,sBAAA,GAAQ,EAAC,OAAA,EAAQ,oBAAA,EAAqB,UAAS,qBAAA,EAAsB,aAAA,EAAc,0BAAA,EAA2B,OAAA,EAAQ,sBAAqB,YAAA,EAAa,yBAAA,EAA0B,MAAA,EAAO,mBAAA,EAAoB,UAAS,qBAAA,EAAqB;ACW3O,IAAM,eAAA,GAAkB,GAAA;AAG/B,IAAM,GAAA,GAAM,CAAA;AAqCL,SAAS,OAAA,CAAQ;AAAA,EACtB,IAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,cAAA;AAAA,EACZ,SAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAQ,GAAI,WAAA,CAAY,MAAM,eAAe,CAAA;AAG9D,EAAA,MAAM,WAAW,UAAA,CAA2B,EAAE,MAAM,OAAA,EAAS,UAAA,EAAY,OAAO,CAAA;AAChF,EAAA,mBAAA,CAAoB,EAAE,MAAM,OAAA,EAAS,SAAA,EAAW,aAAa,QAAA,EAAU,SAAA,EAAW,GAAA,EAAK,GAAA,EAAK,CAAA;AAC5F,EAAA,mBAAA,CAAoB,IAAA,EAAM,OAAA,EAAS,CAAC,QAAA,EAAU,SAAS,CAAC,CAAA;AAExD,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AAErB,EAAA,OAAOE,qBAAAA;AAAA,oBACLV,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAY,KAAA;AAAA,QACZ,QAAA,EAAU,EAAA;AAAA,QACV,SAAA,EAAW,EAAA,CAAG,sBAAA,CAAO,KAAA,EAAO,SAAS,CAAA;AAAA,QACrC,aAAW,OAAA,IAAW,MAAA;AAAA,QAErB;AAAA;AAAA,KACH;AAAA,IACA,QAAA,CAAS;AAAA,GACX;AACF;AAYO,SAAS,aAAA,CAAc,EAAE,QAAA,EAAU,OAAA,EAAS,YAAW,EAAuB;AACnF,EAAA,uBACEG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,uBAAO,MAAA,EAGrB,QAAA,EAAA;AAAA,oBAAAH,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,sBAAA,CAAO,aAAc,QAAA,EAAS,CAAA;AAAA,IAC5C,OAAA,KAAY,0BACXA,cAAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,cAAY,UAAA,EAAY,SAAA,EAAW,uBAAO,KAAA,EAAO,OAAA,EAAS,SAC9E,QAAA,kBAAAA,cAAAA,CAAC,cAAW,SAAA,EAAW,sBAAA,CAAO,YAAY,CAAA,EAC5C;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAEO,SAAS,WAAA,CAAY,EAAE,QAAA,EAAS,EAA4B;AACjE,EAAA,uBAAOA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,sBAAA,CAAO,MAAO,QAAA,EAAS,CAAA;AAChD;AAEO,SAAS,aAAA,CAAc,EAAE,QAAA,EAAS,EAA4B;AACnE,EAAA,uBAAOA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,sBAAA,CAAO,QAAS,QAAA,EAAS,CAAA;AAClD;ACrGO,SAAS,eACd,GAAA,EACA,EAAE,QAAA,EAAU,WAAA,GAAc,cAAa,EACM;AAC7C,EAAA,OAAOY,iBAAAA;AAAA,IACL,CAAC,KAAA,KAAsC;AACrC,MAAA,MAAM,aAAa,WAAA,KAAgB,UAAA;AACnC,MAAA,MAAM,WAAW,WAAA,KAAgB,YAAA;AACjC,MAAA,MAAM,UAAW,UAAA,IAAc,KAAA,CAAM,QAAQ,YAAA,IAAkB,QAAA,IAAY,MAAM,GAAA,KAAQ,WAAA;AACzF,MAAA,MAAM,WAAY,UAAA,IAAc,KAAA,CAAM,QAAQ,WAAA,IAAiB,QAAA,IAAY,MAAM,GAAA,KAAQ,SAAA;AACzF,MAAA,MAAM,IAAA,GAAO,MAAM,GAAA,KAAQ,MAAA;AAC3B,MAAA,MAAM,GAAA,GAAM,MAAM,GAAA,KAAQ,KAAA;AAC1B,MAAA,IAAI,CAAC,OAAA,IAAW,CAAC,YAAY,CAAC,IAAA,IAAQ,CAAC,GAAA,EAAK;AAE5C,MAAA,MAAM,YAAY,GAAA,CAAI,OAAA;AACtB,MAAA,IAAI,cAAc,IAAA,EAAM;AACxB,MAAA,MAAM,QAAQ,CAAC,GAAG,UAAU,gBAAA,CAA8B,QAAQ,CAAC,CAAA,CAAE,MAAA;AAAA,QACnE,CAAC,IAAA,KAAS,CAAC,IAAA,CAAK,aAAa,UAAU;AAAA,OACzC;AACA,MAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,aAA4B,CAAA;AACnE,MAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,IAAK,OAAA,KAAY,EAAA,EAAI;AAE1C,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,MAAM,IAAA,GAAO,IAAA,GACT,CAAA,GACA,GAAA,GACE,KAAA,CAAM,MAAA,GAAS,CAAA,GAAA,CACd,OAAA,IAAW,OAAA,GAAU,CAAA,GAAI,EAAA,CAAA,GAAM,KAAA,CAAM,UAAU,KAAA,CAAM,MAAA;AAC5D,MAAA,KAAA,CAAM,IAAI,GAAG,KAAA,EAAM;AAAA,IACrB,CAAA;AAAA,IACA,CAAC,GAAA,EAAK,QAAA,EAAU,WAAW;AAAA,GAC7B;AACF;;;AC9CA,IAAO,sBAAQ,EAAC,OAAA,EAAQ,mBAAkB,MAAA,EAAO,gBAAA,EAAiB,eAAc,uBAAA,EAAuB;ACYhG,IAAM,YAAA,GAAe,GAAA;AAG5B,IAAMQ,IAAAA,GAAM,CAAA;AAEZ,IAAM,aAAA,GAAgB,mBAAA;AActB,IAAM,WAAA,GAAcnB,oBAA4C,IAAI,CAAA;AA4B7D,SAAS,IAAA,CAAK,EAAE,KAAA,EAAO,OAAA,EAAS,YAAY,YAAA,EAAc,SAAA,EAAW,UAAS,EAAc;AACjG,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIQ,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAQ,GAAI,WAAA,CAAY,MAAM,YAAY,CAAA;AAC3D,EAAA,MAAM,UAAA,GAAaF,aAAoB,IAAI,CAAA;AAC3C,EAAA,MAAM,QAAA,GAAWA,aAAuB,IAAI,CAAA;AAK5C,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,OAAA,CAAQ,KAAK,CAAA;AACb,IAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAAA,EAC5B,CAAA;AACA,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,KAAK,CAAA;AAEnC,EAAA,mBAAA,CAAoB,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,UAAA,EAAY,aAAa,QAAA,EAAU,SAAA,EAAW,GAAA,EAAKa,IAAAA,EAAK,CAAA;AACxG,EAAA,mBAAA,CAAoB,IAAA,EAAM,OAAA,EAAS,CAAC,QAAA,EAAU,UAAU,CAAC,CAAA;AAEzD,EAAA,MAAM,WAAA,GAAc,eAAe,QAAA,EAAU;AAAA,IAC3C,QAAA,EAAU,aAAA;AAAA,IACV,WAAA,EAAa;AAAA,GACd,CAAA;AAID,EAAAZ,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,KAAA,GAAQ,SAAS,OAAA,EAAS,aAAA;AAAA,MAC9B,GAAG,aAAa,CAAA,gBAAA;AAAA,KAClB;AACA,IAAA,KAAA,EAAO,KAAA,EAAM;AAAA,EACf,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAsC;AAC9D,IAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,WAAA,IAAe,KAAA,CAAM,QAAQ,SAAA,EAAW;AAC1D,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA;AAMA,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,cAAa,GAAI,OAAA;AAE/C,EAAA,uBACEL,gBAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,KAAA,EAAO,EAAE,OAAM,EACnC,QAAA,EAAA;AAAA,oBAAAH,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACE,GAAG,YAAA;AAAA,QACJ,GAAA,EAAK,OAAA,CAAQ,UAAA,EAAY,YAAA,CAAa,GAAG,CAAA;AAAA,QACzC,eAAA,EAAc,MAAA;AAAA,QACd,eAAA,EAAe,IAAA;AAAA,QACf,OAAA,EAAS,CAAC,KAAA,KAAmC;AAC3C,UAAA,YAAA,CAAa,UAAU,KAAK,CAAA;AAC5B,UAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,QACnB,CAAA;AAAA,QACA,SAAA,EAAW,CAAC,KAAA,KAAsC;AAChD,UAAA,YAAA,CAAa,YAAY,KAAK,CAAA;AAC9B,UAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,QACxB;AAAA;AAAA,KACF;AAAA,IACC,OAAA,IACCU,qBAAAA;AAAA,sBACEV,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,QAAA;AAAA,UACL,IAAA,EAAK,MAAA;AAAA,UACL,YAAA,EAAY,KAAA;AAAA,UACZ,SAAA,EAAW,EAAA,CAAG,mBAAA,CAAO,KAAA,EAAO,SAAS,CAAA;AAAA,UACrC,aAAW,OAAA,IAAW,MAAA;AAAA,UACtB,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,YAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,cAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,cAAA,KAAA,EAAM;AACN,cAAA;AAAA,YACF;AAKA,YAAA,IAAI,KAAA,CAAM,QAAQ,KAAA,EAAO;AACvB,cAAA,KAAA,CAAM,cAAA,EAAe;AACrB,cAAA,KAAA,EAAM;AACN,cAAA;AAAA,YACF;AACA,YAAA,WAAA,CAAY,KAAK,CAAA;AAAA,UACnB,CAAA;AAAA,UAEC;AAAA;AAAA,OACH;AAAA,MACA,QAAA,CAAS;AAAA;AACX,GAAA,EACJ,CAAA;AAEJ;AAWO,SAAS,QAAA,CAAS,EAAE,QAAA,EAAU,QAAA,GAAW,OAAO,IAAA,GAAO,SAAA,EAAW,UAAS,EAAkB;AAClG,EAAA,MAAM,IAAA,GAAOE,iBAAW,WAAW,CAAA;AACnC,EAAA,uBACEF,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,IAAA,EAAK,UAAA;AAAA,MAGL,QAAA,EAAU,EAAA;AAAA,MACV,QAAA;AAAA,MACA,SAAA,EAAW,GAAG,mBAAA,CAAO,IAAA,EAAM,oBAAO,CAAA,KAAA,EAAQ,IAAI,EAAE,CAAC,CAAA;AAAA,MACjD,SAAS,MAAM;AACb,QAAA,QAAA,EAAS;AACT,QAAA,IAAA,EAAM,KAAA,EAAM;AAAA,MACd,CAAA;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;;;ACtLA,IAAO,sBAAA,GAAQ,EAAC,SAAA,EAAU,sBAAA,EAAsB;ACQhD,IAAMoB,IAAAA,GAAM,CAAA;AAIZ,IAAM,gBAAA,GAAmB,GAAA;AAwClB,SAAS,OAAA,CAAQ;AAAA,EACtB,OAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,OAAA,GAAU,gBAAA;AAAA,EACV;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,KAAKd,WAAAA,EAAM;AACjB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIG,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,SAAA,GAAYF,aAAoB,IAAI,CAAA;AAC1C,EAAA,MAAM,UAAA,GAAaA,aAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,KAAA,GAAQA,aAAsC,MAAS,CAAA;AAE7D,EAAA,MAAM,OAAO,MAAM;AACjB,IAAA,YAAA,CAAa,MAAM,OAAO,CAAA;AAC1B,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA;AACA,EAAA,MAAM,OAAO,MAAM;AACjB,IAAA,YAAA,CAAa,MAAM,OAAO,CAAA;AAC1B,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAAC,gBAAU,MAAM,YAAA,CAAa,MAAM,OAAO,CAAA,EAAG,EAAE,CAAA;AAE/C,EAAA,mBAAA,CAAoB,EAAE,MAAM,SAAA,EAAW,WAAA,EAAa,YAAY,SAAA,EAAW,GAAA,EAAKY,MAAK,CAAA;AAIrF,EAAAZ,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAyB;AAC1C,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,QAAA,EAAU,IAAA,EAAK;AAAA,IACnC,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAC9C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,SAAS,CAAA;AAAA,EAChE,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAMT,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,cAAa,GAAI,QAAA;AAE/C,EAAA,uBACEL,eAAAA,CAAAE,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAL,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACE,GAAG,YAAA;AAAA,QACJ,GAAA,EAAK,OAAA,CAAQ,SAAA,EAAW,YAAA,CAAa,GAAG,CAAA;AAAA,QAGxC,kBAAA,EAAkB,IAAA,GAAO,EAAA,GAAK,YAAA,CAAa,kBAAkB,CAAA;AAAA,QAC7D,cAAA,EAAgB,CAAC,KAAA,KAAqC;AACpD,UAAA,YAAA,CAAa,iBAAiB,KAAK,CAAA;AAInC,UAAA,IAAI,KAAA,CAAM,gBAAgB,OAAA,EAAS;AACnC,UAAA,YAAA,CAAa,MAAM,OAAO,CAAA;AAC1B,UAAA,KAAA,CAAM,OAAA,GAAU,UAAA,CAAW,IAAA,EAAM,OAAO,CAAA;AAAA,QAC1C,CAAA;AAAA,QACA,cAAA,EAAgB,CAAC,KAAA,KAAqC;AACpD,UAAA,YAAA,CAAa,iBAAiB,KAAK,CAAA;AACnC,UAAA,IAAA,EAAK;AAAA,QACP,CAAA;AAAA,QAGA,OAAA,EAAS,CAAC,KAAA,KAAmC;AAC3C,UAAA,YAAA,CAAa,UAAU,KAAK,CAAA;AAC5B,UAAA,IAAA,EAAK;AAAA,QACP,CAAA;AAAA,QACA,MAAA,EAAQ,CAAC,KAAA,KAAmC;AAC1C,UAAA,YAAA,CAAa,SAAS,KAAK,CAAA;AAC3B,UAAA,IAAA,EAAK;AAAA,QACP;AAAA;AAAA,KACF;AAAA,IACC,IAAA,IACCU,qBAAAA;AAAA,sBACEV,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,UAAA,EAAY,EAAA,EAAQ,IAAA,EAAK,SAAA,EAAU,SAAA,EAAW,sBAAA,CAAO,OAAA,EAC5D,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,MACA,QAAA,CAAS;AAAA;AACX,GAAA,EACJ,CAAA;AAEJ;;;ACvIA,IAAO,4BAAA,GAAQ,EAAC,aAAA,EAAc,gCAAA,EAAiC,SAAQ,0BAAA,EAA0B;ACqDjG,IAAM,eAAA,GAAkB;AAAA,EACtB,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,QAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAwBO,SAAS,aAAA,CAAwB;AAAA,EACtC,MAAA;AAAA,EACA,OAAO,MAAA,IAAU,IAAA;AAAA,EACjB,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIS,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAwB,IAAI,CAAA;AAOtD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAAS,IAAI,CAAA;AAC7C,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IACf;AAAA,EACF;AAMA,EAAA,MAAM,OAAiB,EAAE,MAAA,EAAQ,OAAO,WAAA,EAAa,YAAA,EAAc,aAAa,IAAA,EAAK;AACrF,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAmB,IAAI,CAAA;AACnD,EAAA,MAAM,IAAA,GAAO,OAAO,IAAA,GAAO,MAAA;AAE3B,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,OAAA,IAAU;AAAA,EACZ,CAAA;AAEA,EAAA,MAAM,gBAAgB,YAAY;AAChC,IAAA,IAAI,CAAC,SAAA,EAAW;AAGhB,IAAA,MAAM,QAAQ,IAAA,CAAK,MAAA;AACnB,IAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,UAAU,KAAK,CAAA;AAGrB,MAAA,KAAA,EAAM;AAAA,IACR,SAAS,CAAA,EAAG;AACV,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,MAAM,UAAW,CAAA,CAAY,OAAA;AAC7B,MAAA,QAAA,CAAS,YAAA,GAAe,OAAO,CAAA,IAAK,OAAO,CAAA;AAAA,IAC7C;AAAA,EACF,CAAA;AAEA,EAAA,uBACEN,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MAIA,OAAA,EAAS,KAAA;AAAA,MACT,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,IAAA,EAAK,aAAA;AAAA,MACL,iBAAA,EAAmB,KAAA;AAAA,MAEnB,QAAA,EAAA;AAAA,wBAAAH,cAAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,wBACzBG,gBAAC,SAAA,EAAA,EACE,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,WAAA,IAAe,IAAA,mBAAOH,cAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,4BAAA,CAAO,WAAA,EAAc,QAAA,EAAA,IAAA,CAAK,WAAA,EAAY,CAAA,GAAO,IAAA;AAAA,UACtF,KAAA,IAAS,IAAA,mBACRA,cAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAK,OAAA,EAAQ,SAAA,EAAW,4BAAA,CAAO,KAAA,EAC/B,QAAA,EAAA,KAAA,EACH,CAAA,GACE;AAAA,SAAA,EACN,CAAA;AAAA,wBACAG,gBAAC,WAAA,EAAA,EAGC,QAAA,EAAA;AAAA,0BAAAH,eAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,aAAY,OAAA,EAAS,KAAA,EAClC,eAAK,WAAA,EACR,CAAA;AAAA,0BACAA,cAAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAS,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA,EAAG,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,aAAA,EAClE,eAAK,YAAA,EACR;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;;;AC9KA,IAAO,wBAAQ,EAAC,QAAA,EAAS,sBAAqB,SAAA,EAAU,qBAAA,EAAsB,SAAQ,mBAAA,EAAmB;ACoBlG,SAAS,MAAA,CAAO,EAAE,QAAA,EAAS,EAA4B;AAC5D,EAAA,uBAAOA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,qBAAA,CAAO,QAAS,QAAA,EAAS,CAAA;AAClD;AAcO,SAAS,aAAA,CAAc,EAAE,QAAA,EAAU,KAAA,GAAQ,OAAO,SAAA,EAAW,GAAA,EAAK,GAAG,IAAA,EAAK,EAAuB;AACtG,EAAA,uBACEA,cAAAA,CAAC,MAAA,EAAA,EAAK,GAAA,EAAU,WAAW,EAAA,CAAG,qBAAA,CAAO,OAAA,EAAS,KAAA,IAAS,sBAAO,KAAA,EAAO,SAAS,CAAA,EAAI,GAAG,MAClF,QAAA,EACH,CAAA;AAEJ;;;AC1CA,IAAO,qBAAA,GAAQ,EAAC,KAAA,EAAM,iBAAA,EAAkB,OAAA,EAAQ,mBAAA,EAAoB,MAAA,EAAO,kBAAA,EAAmB,UAAA,EAAW,sBAAA,EAAuB,MAAA,EAAO,kBAAA,EAAmB,YAAW,sBAAA,EAAsB;AC+BpL,SAAS,MAAA,CAAO,EAAE,KAAA,EAAO,QAAA,EAAU,OAAA,EAAS,UAAU,SAAA,EAAW,GAAA,EAAK,GAAG,IAAA,EAAK,EAAgB;AACnG,EAAA,MAAM,OAAA,GAAU,wBAAQA,cAAAA,CAAC,QAAG,SAAA,EAAW,qBAAA,CAAO,KAAA,EAAQ,QAAA,EAAA,KAAA,EAAM,CAAA,GAAQ,IAAA;AACpE,EAAA,uBACEG,eAAAA,CAAC,QAAA,EAAA,EAAO,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,qBAAA,CAAO,GAAA,EAAK,SAAS,CAAA,EAAI,GAAG,IAAA,EACzD,QAAA,EAAA;AAAA,IAAA,OAAA,mBAAUH,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,qBAAA,CAAO,IAAA,EAAO,mBAAQ,CAAA,GAAS,IAAA;AAAA,IACzD,YAAY,IAAA,mBACXG,gBAAC,KAAA,EAAA,EAAI,SAAA,EAAW,sBAAO,IAAA,EACpB,QAAA,EAAA;AAAA,MAAA,OAAA;AAAA,sBACDH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,qBAAA,CAAO,UAAW,QAAA,EAAA,QAAA,EAAS;AAAA,KAAA,EAC7C,CAAA,GAEA,OAAA;AAAA,IAED,QAAA,mBAAWA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,EAAG,qBAAA,CAAO,IAAI,CAAA,CAAA,EAAI,qBAAA,CAAO,QAAQ,CAAA,CAAA,EAAK,oBAAS,CAAA,GAAS;AAAA,GAAA,EACtF,CAAA;AAEJ;;;AC/CA,IAAO,qBAAA,GAAQ,EAAC,KAAA,EAAM,iBAAA,EAAkB,QAAO,kBAAA,EAAmB,QAAA,EAAS,oBAAA,EAAqB,MAAA,EAAO,oBAAmB,OAAA,EAAQ,mBAAA,EAAoB,OAAA,EAAQ,mBAAA,EAAoB,UAAS,oBAAA,EAAoB;ACsBxM,SAAS,MAAA,CAAO,EAAE,KAAA,EAAO,QAAA,EAAS,EAAgB;AACvD,EAAA,uBACEA,eAAC,KAAA,EAAA,EAAI,YAAA,EAAY,OAAO,SAAA,EAAW,qBAAA,CAAO,KACvC,QAAA,EACH,CAAA;AAEJ;AAqBO,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,KAAA,GAAQ,KAAA;AAAA,EACR,EAAA;AAAA,EACA,SAAA,GAAY;AACd,CAAA,EAAoB;AAClB,EAAA,MAAM,YAAY,EAAA,CAAG,qBAAA,CAAO,IAAA,EAAM,MAAA,IAAU,sBAAO,MAAM,CAAA;AACzD,EAAA,MAAM,OAAA,mBACJG,eAAAA,CAAAE,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAF,gBAAC,MAAA,EAAA,EAAK,SAAA,EAAW,qBAAA,CAAO,IAAA,EAAM,eAAY,MAAA,EACvC,QAAA,EAAA;AAAA,MAAA,IAAA;AAAA,MACA,KAAA,mBAAQH,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,qBAAA,CAAO,KAAA,EAAO,aAAA,EAAY,kBAAA,EAAmB,CAAA,GAAK;AAAA,KAAA,EAC9E,CAAA;AAAA,IACC,SAAA,mBACCA,cAAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,KAAA,EAAM,CAAA,mBAEvBA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,qBAAA,CAAO,KAAA,EAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAE1C,CAAA;AAEF,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,MAAM,UAAuB,EAAA,IAAM,GAAA;AACnC,IAAA,uBACEA,cAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,SAAA,EAAsB,gBAAc,MAAA,GAAS,MAAA,GAAS,MAAA,EAAW,OAAA,EACnF,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,EAEJ;AACA,EAAA,uBACEA,cAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,SAAA,EAAsB,cAAA,EAAc,MAAA,GAAS,MAAA,GAAS,MAAA,EAAW,OAAA,EACpF,QAAA,EAAA,OAAA,EACH,CAAA;AAEJ;AAWO,SAAS,YAAA,CAAa,EAAE,KAAA,EAAO,IAAA,EAAM,SAAQ,EAAsB;AACxE,EAAA,uBACEA,eAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,YAAA,EAAY,KAAA,EAAO,WAAW,qBAAA,CAAO,MAAA,EAAQ,SACjE,QAAA,kBAAAA,cAAAA,CAAC,UAAK,SAAA,EAAW,qBAAA,CAAO,MAAM,aAAA,EAAY,MAAA,EACvC,gBACH,CAAA,EACF,CAAA;AAEJ;;;ACzGA,IAAO,yBAAQ,EAAC,KAAA,EAAM,kBAAA,EAAmB,OAAA,EAAQ,sBAAqB,SAAA,EAAU,sBAAA,EAAuB,MAAA,EAAO,mBAAA,EAAoB,UAAS,qBAAA,EAAsB,MAAA,EAAO,qBAAoB,OAAA,EAAQ,oBAAA,EAAqB,SAAQ,oBAAA,EAAoB;ACiC9O,SAAS,OAAA,CAAQ,EAAE,KAAA,EAAO,SAAA,EAAW,UAAU,GAAA,EAAK,GAAG,MAAK,EAA+B;AAChG,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,cAAY,KAAA,EAAO,SAAA,EAAW,EAAA,CAAG,sBAAA,CAAO,GAAA,EAAK,SAAS,CAAA,EAAI,GAAG,MACzE,QAAA,EACH,CAAA;AAEJ;AAYO,SAAS,YAAA,CAAa;AAAA,EAC3B,KAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoC;AAClC,EAAA,MAAM,YAAYM,WAAAA,EAAM;AAExB,EAAA,uBACEH,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,sBAAA,CAAO,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,IAAA,EAAM,KAAA,IAAS,IAAA,GAAO,OAAA,GAAU,MAAA;AAAA,MAChC,iBAAA,EAAiB,KAAA,IAAS,IAAA,GAAO,SAAA,GAAY,MAAA;AAAA,MAC5C,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,KAAA,IAAS,IAAA,oBACRH,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,sBAAA,CAAO,OAAA,EAAS,EAAA,EAAI,SAAA,EAClC,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,QAED;AAAA;AAAA;AAAA,GACH;AAEJ;AAuBO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,KAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA,GAAM,EAAA;AAAA,EACN;AACF,CAAA,EAAmC;AACjC,EAAA,MAAM,YAAY,EAAA,CAAG,sBAAA,CAAO,IAAA,EAAM,MAAA,IAAU,uBAAO,MAAM,CAAA;AACzD,EAAA,MAAM,OAAA,GAAU,SAAS,MAAA,GAAS,MAAA;AAClC,EAAA,MAAM,OAAA,mBACJG,eAAAA,CAAAE,mBAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,IAAA,IAAQ,IAAA,oBACPL,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,sBAAA,CAAO,IAAA,EAAM,aAAA,EAAY,MAAA,EACvC,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,oBAEFA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,sBAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IACrC,KAAA,KAAU,UAAa,KAAA,GAAQ,CAAA,oBAC9BA,cAAAA,CAAC,KAAA,EAAA,EAAM,MAAK,QAAA,EAAS,IAAA,EAAK,UAAS,YAAA,EAAY,UAAA,EAAY,WAAW,sBAAA,CAAO,KAAA,EAC1E,kBAAQ,GAAA,GAAM,CAAA,EAAG,GAAG,CAAA,CAAA,CAAA,GAAM,KAAA,EAC7B;AAAA,GAAA,EAEJ,CAAA;AAGF,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,MAAM,UAAuB,EAAA,IAAM,GAAA;AACnC,IAAA,uBACEA,eAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,WAAsB,cAAA,EAAc,OAAA,EAAS,SAC/D,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,eAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,SAAA,EAAsB,cAAA,EAAc,OAAA,EAAS,OAAA,EAChE,QAAA,EAAA,OAAA,EACH,CAAA;AAEJ;;;AC9IA,IAAO,+BAAA,GAAQ,EAAC,OAAA,EAAQ,6BAAA,EAA8B,MAAA,EAAO,4BAAA,EAA6B,OAAA,EAAQ,6BAAA,EAA8B,SAAA,EAAU,+BAAA,EAAgC,OAAA,EAAQ,6BAAA,EAA8B,WAAU,+BAAA,EAA+B;ACwClP,SAAS,gBAAA,CAAiB;AAAA,EAC/B,MAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA,GAAM,EAAA;AAAA,EACN,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,KAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwC;AAGtC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIS,cAAAA,EAAiB;AAC7C,EAAA,MAAM,OAAA,GAAU,GAAA,KAAQ,MAAA,IAAa,MAAA,KAAW,GAAA;AAChD,EAAA,MAAM,OAAQ,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,kBAAkB,MAAA,EAAO;AAErE,EAAA,uBACEN,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,+BAAA,CAAO,OAAO,OAAA,IAAW,+BAAA,CAAO,SAAS,SAAS,CAAA;AAAA,MAChE,KAAA,EAAO,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAM;AAAA,MAC1B,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,OAAA,mBACCH,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,WAAW,+BAAA,CAAO,KAAA;AAAA,YAClB,GAAA;AAAA,YACA,GAAA;AAAA,YACA,OAAA,EAAQ,MAAA;AAAA,YACR,QAAA,EAAS,OAAA;AAAA,YACT,OAAA,EAAS,MAAM,SAAA,CAAU,GAAG;AAAA;AAAA,SAC9B,mBAEAG,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,+BAAA,CAAO,IAAA,EAAM,eAAY,MAAA,EACtC,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA,YAAY,MAAA,oBAAaH,eAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,QAAQ,QAAA,EAAA,OAAA,EAAQ;AAAA,SAAA,EAC1D,CAAA;AAAA,QAED,OAAA,IAAW,OAAA,KAAY,MAAA,oBACtBA,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,MAAA,EAAO,IAAA,EAAK,UAAA,EAAW,SAAA,EAAW,+BAAA,CAAO,SACpD,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,QAED,KAAA,KAAU,0BAAaA,cAAAA,CAAC,SAAI,SAAA,EAAW,+BAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,GAC/D;AAEJ;;;ACvFA,IAAO,4BAAA,GAAQ,EAAC,UAAA,EAAW,6BAAA,EAA8B,UAAA,EAAW,6BAAA,EAA8B,OAAA,EAAQ,0BAAA,EAA2B,MAAA,EAAO,yBAAA,EAA0B,MAAA,EAAO,yBAAA,EAA0B,MAAA,EAAO,yBAAA,EAA0B,MAAA,EAAO,yBAAA,EAA0B,SAAA,EAAU,4BAAA,EAA6B,QAAA,EAAS,2BAAA,EAA4B,OAAA,EAAQ,0BAAA,EAA2B,MAAA,EAAO,yBAAA,EAA0B,MAAA,EAAO,yBAAA,EAA0B,KAAA,EAAM,wBAAA,EAAwB;ACoExd,IAAM,eAAA,GAAkB,EAAA;AAejB,SAAS,aAAA,CAAc;AAAA,EAC5B,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,aAAA;AAAA,EACA,KAAA,GAAQ,YAAA;AAAA,EACR,aAAA,GAAgB,CAAA;AAAA,EAChB,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4C;AAC1C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIS,eAAS,YAAY,CAAA;AACrD,EAAA,MAAM,UAAA,GAAaF,aAAsB,IAAI,CAAA;AAE7C,EAAA,MAAM,OAAO,KAAA,KAAU,MAAA;AACvB,EAAA,MAAM,IAAA,GAAO,OAAO,MAAA,GAAS,CAAA;AAC7B,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,OAAO,KAAA,GAAQ,QAAA,EAAU,CAAC,CAAA,EAAG,IAAI,CAAA;AACnE,EAAA,MAAM,IAAA,GAAO,OAAO,MAAA,GAAS,CAAA;AAC7B,EAAA,MAAM,KAAA,GAAQ,OAAO,OAAO,CAAA;AAC5B,EAAA,IAAI,KAAA,KAAU,QAAW,OAAO,IAAA;AAEhC,EAAA,MAAM,IAAA,GAAO,CAAC,IAAA,KAAiB;AAC7B,IAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,IAAA,EAAM,CAAC,GAAG,IAAI,CAAA;AAChD,IAAA,IAAI,YAAY,OAAA,EAAS;AACzB,IAAA,IAAI,CAAC,IAAA,EAAM,WAAA,CAAY,OAAO,CAAA;AAC9B,IAAA,aAAA,GAAgB,OAAO,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAsC;AACvD,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,IAAA,GAA+B;AAAA,MACnC,WAAW,OAAA,GAAU,CAAA;AAAA,MACrB,YAAY,OAAA,GAAU,CAAA;AAAA,MACtB,IAAA,EAAM,CAAA;AAAA,MACN,GAAA,EAAK;AAAA,KACP;AACA,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC3B,IAAA,IAAI,SAAS,MAAA,EAAW;AACxB,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,IAAA,CAAK,IAAI,CAAA;AAAA,EACX,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAwC;AAC3D,IAAA,MAAM,QAAQ,UAAA,CAAW,OAAA;AACzB,IAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AACrB,IAAA,IAAI,UAAU,IAAA,EAAM;AACpB,IAAA,MAAM,SAAA,GAAY,MAAM,OAAA,GAAU,KAAA;AAElC,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,SAAS,CAAA,GAAI,eAAA,EAAiB;AAEzC,MAAA,MAAM,SAAA,GAAa,KAAA,CAAM,MAAA,CAAuB,OAAA,CAAQ,QAAQ,CAAA,KAAM,IAAA;AACtE,MAAA,IAAI,MAAA,KAAW,UAAa,CAAC,SAAA,IAAa,MAAM,OAAA,KAAY,IAAA,SAAa,OAAO,CAAA;AAChF,MAAA;AAAA,IACF;AACA,IAAA,IAAI,MAAM,IAAA,CAAK,SAAA,GAAY,IAAI,OAAA,GAAU,CAAA,GAAI,UAAU,CAAC,CAAA;AAAA,EAC1D,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,UAAU,YAAA,GAAe,MAAA,CAAO,MAAM,CAAA,EAAG,aAAa,IAAI,EAAC;AACzE,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,GAAS,KAAA,CAAM,MAAA;AACrC,EAAA,MAAM,UAAU,MAAA,CAAO,OAAA,CAAQ,OAAA,GAAU,CAAA,EAAG,OAAO,MAAM,CAAA;AAEzD,EAAA,uBACEJ,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,4BAAA,CAAO,QAAA,EAAU,SAAS,CAAA;AAAA,MACxC,wBAAsB,MAAA,CAAO,YAAA;AAAA,MAC7B,cAAY,MAAA,CAAO,MAAA;AAAA,MACnB,QAAA,EAAU,CAAA;AAAA,MACV,SAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAA,eAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,WAAW,4BAAA,CAAO,QAAA;AAAA,YAClB,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,cAAA,UAAA,CAAW,UAAU,KAAA,CAAM,OAAA;AAAA,YAC7B,CAAA;AAAA,YACA,WAAA;AAAA,YACA,iBAAiB,MAAM;AACrB,cAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AAAA,YACvB,CAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,4BAAA,CAAO,KAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,sBAAA,EAAsB,MAAA,CAAO,SAAA,EAAW,YAAA,EAAY,OAAA,EAC7F,QAAA,kBAAAA,cAAAA;AAAA,gBAAC,gBAAA;AAAA,gBAAA;AAAA,kBACC,MAAA,EAAQ,MAAM,MAAA,IAAU,OAAA;AAAA,kBACvB,GAAI,MAAM,GAAA,KAAQ,MAAA,GAAY,EAAC,GAAI,EAAE,GAAA,EAAK,KAAA,CAAM,GAAA,EAAI;AAAA,kBACpD,GAAI,MAAM,GAAA,KAAQ,MAAA,GAAY,EAAC,GAAI,EAAE,GAAA,EAAK,KAAA,CAAM,GAAA,EAAI;AAAA,kBACpD,GAAI,MAAM,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAS,KAAA,CAAM,OAAA,EAAQ;AAAA,kBACjE,OAAA,EAAS,MAAM,OAAA,KAAY,IAAA;AAAA,kBAC1B,GAAI,MAAM,KAAA,KAAU,MAAA,GAAY,EAAC,GAAI,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA;AAAM;AAAA,eAC7D,EACF,CAAA;AAAA,cAEC,MAAA,KAAW,MAAA,IAAa,KAAA,CAAM,OAAA,KAAY,wBACzCA,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,WAAW,4BAAA,CAAO,IAAA;AAAA,kBAClB,OAAA,EAAQ,WAAA;AAAA,kBACR,IAAA,EAAK,IAAA;AAAA,kBACL,QAAA,EAAQ,IAAA;AAAA,kBACR,YAAA,EAAY,SAAA;AAAA,kBACZ,OAAA,EAAS,MAAM,MAAA,CAAO,OAAO,CAAA;AAAA,kBAE5B,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,cAGD,IAAA,oBACCG,eAAAA,CAAAE,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,gCAAAL,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,EAAA,CAAG,4BAAA,CAAO,IAAA,EAAM,6BAAO,IAAI,CAAA;AAAA,oBACtC,OAAA,EAAQ,WAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,QAAA,EAAQ,IAAA;AAAA,oBACR,cAAY,MAAA,CAAO,QAAA;AAAA,oBACnB,UAAU,OAAA,KAAY,CAAA;AAAA,oBACtB,OAAA,EAAS,MAAM,IAAA,CAAK,OAAA,GAAU,CAAC,CAAA;AAAA,oBAE/B,QAAA,kBAAAA,eAAC,gBAAA,EAAA,EAAiB;AAAA;AAAA,iBACpB;AAAA,gCACAA,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,EAAA,CAAG,4BAAA,CAAO,IAAA,EAAM,6BAAO,IAAI,CAAA;AAAA,oBACtC,OAAA,EAAQ,WAAA;AAAA,oBACR,IAAA,EAAK,IAAA;AAAA,oBACL,QAAA,EAAQ,IAAA;AAAA,oBACR,cAAY,MAAA,CAAO,IAAA;AAAA,oBACnB,UAAU,OAAA,KAAY,IAAA;AAAA,oBACtB,OAAA,EAAS,MAAM,IAAA,CAAK,OAAA,GAAU,CAAC,CAAA;AAAA,oBAE/B,QAAA,kBAAAA,eAAC,iBAAA,EAAA,EAAkB;AAAA;AAAA,iBACrB;AAAA,gCACAA,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,MAAA,EAAO,WAAW,4BAAA,CAAO,OAAA,EAAS,WAAA,EAAU,QAAA,EACvD,QAAA,EAAA,OAAA,EACH;AAAA,eAAA,EACF;AAAA;AAAA;AAAA,SAEJ;AAAA,QAEC,IAAA,IAAQ,UAAU,YAAA,oBACjBG,gBAAC,KAAA,EAAA,EAAI,SAAA,EAAW,6BAAO,MAAA,EACpB,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,GAAA,CAAI,CAAC,KAAA,EAAO,QAAA,qBACjBH,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EAAK,QAAA;AAAA,cACL,WAAW,4BAAA,CAAO,KAAA;AAAA,cAClB,YAAA,EAAY,MAAA,CAAO,KAAA,CAAM,QAAA,GAAW,CAAC,CAAA;AAAA,cACrC,cAAA,EAAc,QAAA,KAAa,OAAA,GAAU,MAAA,GAAS,MAAA;AAAA,cAC9C,OAAA,EAAS,MAAM,IAAA,CAAK,QAAQ,CAAA;AAAA,cAE5B,QAAA,kBAAAA,cAAAA;AAAA,gBAAC,gBAAA;AAAA,gBAAA;AAAA,kBACC,MAAA,EAAO,OAAA;AAAA,kBACN,GAAI,MAAM,GAAA,KAAQ,MAAA,GAAY,EAAC,GAAI,EAAE,GAAA,EAAK,KAAA,CAAM,GAAA,EAAI;AAAA,kBACrD,OAAA,EAAS,MAAM,OAAA,KAAY;AAAA;AAAA;AAC7B,aAAA;AAAA,YAXK,KAAA,CAAM;AAAA,WAad,CAAA;AAAA,UACA,MAAA,GAAS,qBACRA,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAW,EAAA,CAAG,4BAAA,CAAO,KAAA,EAAO,6BAAO,IAAI,CAAA;AAAA,cACvC,YAAA,EAAY,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAAA,cAC9B,OAAA,EAAS,MAAM,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA;AAAA,cAEhC,QAAA,kBAAAG,eAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,MAAA,EAAO,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBAAE;AAAA,eAAA,EAAO;AAAA;AAAA;AAChC,SAAA,EAEJ,CAAA;AAAA,QAGD,IAAA,IAAQ,KAAA,KAAU,MAAA,oBACjBH,eAAC,KAAA,EAAA,EAAI,SAAA,EAAW,4BAAA,CAAO,IAAA,EACpB,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,6BAClBA,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAK,QAAA;AAAA,YACL,WAAW,4BAAA,CAAO,GAAA;AAAA,YAClB,YAAA,EAAY,MAAA,CAAO,KAAA,CAAM,QAAA,GAAW,CAAC,CAAA;AAAA,YACrC,cAAA,EAAc,QAAA,KAAa,OAAA,GAAU,MAAA,GAAS,MAAA;AAAA,YAC9C,OAAA,EAAS,MAAM,IAAA,CAAK,QAAQ;AAAA,WAAA;AAAA,UALvB,KAAA,CAAM;AAAA,SAOd,CAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;;;AC5QA,IAAO,gCAAQ,EAAC,QAAA,EAAS,4BAAA,EAA6B,MAAA,EAAO,4BAA2B,SAAA,EAAU,6BAAA,EAA8B,MAAA,EAAO,0BAAA,EAA2B,QAAO,0BAAA,EAA2B,MAAA,EAAO,4BAA2B,aAAA,EAAc,iCAAA,EAAkC,gBAAe,kCAAA,EAAkC;AC0DhU,SAAS,cAAA,CAAe;AAAA,EAC7B,IAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA,GAAS,WAAA;AAAA,EACT,MAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsC;AACpC,EAAA,MAAM,OAAA,GAAU,MAAA,KAAW,WAAA,IAAe,MAAA,KAAW,YAAA;AAErD,EAAA,uBACEG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,6BAAA,CAAO,MAAA,EAAQ,6BAAA,CAAO,CAAA,OAAA,EAAU,MAAM,CAAA,CAAE,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,IAAA,EAC5E,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,6BAAA,CAAO,IAAA,EACpB,QAAA,EAAA;AAAA,MAAA,OAAA,KAAY,0BAAaH,cAAAA,CAAC,SAAI,SAAA,EAAW,6BAAA,CAAO,SAAU,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,MAClE,IAAA,KAAS,0BAAaA,cAAAA,CAAC,UAAK,SAAA,EAAW,6BAAA,CAAO,MAAO,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,sBAC3DA,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,OAAA,EAAQ,UAAQ,IAAA,EAAC,SAAA,EAAW,6BAAA,CAAO,IAAA,EAC9C,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,MACC,OAAA,IAAW,aAAa,MAAA,oBACvBA,eAAC,MAAA,EAAA,EAAO,QAAA,EAAQ,MAAC,IAAA,EAAK,IAAA,EAAK,SAAQ,OAAA,EAAQ,YAAA,EAAY,OAAO,MAAA,EAAQ,OAAA,EAAS,UAC7E,QAAA,kBAAAA,cAAAA,CAAC,cAAW,CAAA,EACd,CAAA;AAAA,MAED,CAAC,WAAW,QAAA,KAAa,MAAA,oBACxBA,cAAAA,CAAC,MAAA,EAAA,EAAO,UAAQ,IAAA,EAAC,IAAA,EAAK,MAAK,OAAA,EAAQ,OAAA,EAAQ,cAAY,MAAA,CAAO,MAAA,EAAQ,SAAS,QAAA,EAC7E,QAAA,kBAAAA,cAAAA,CAAC,UAAA,EAAA,EAAW,CAAA,EACd,CAAA;AAAA,MAED,MAAA,KAAW,OAAA,IAAW,OAAA,KAAY,MAAA,oBACjCA,cAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,IAAA,EAAK,OAAA,EAAQ,WAAA,EAAY,OAAA,EAAS,OAAA,EAC5C,iBAAO,KAAA,EACV;AAAA,KAAA,EAEJ,CAAA;AAAA,IAEC,2BACCA,cAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,OAAO,CAAA,EAAG,MAAA,CAAO,MAAM,CAAC,IAAI,IAAI,CAAA,CAAA;AAAA,QAChC,OAAO,KAAA,IAAS,CAAA;AAAA,QAChB,eAAe,MAAA,KAAW,YAAA;AAAA,QACzB,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,WAAW,MAAA;AAAO;AAAA,KACvD;AAAA,oBAGFA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,6BAAA,CAAO,MACpB,QAAA,EAAA,MAAA,KAAW,OAAA,mBACVA,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,QAAO,IAAA,EAAK,QAAA,EAAS,IAAA,EAAK,OAAA,EACrC,QAAA,EAAA,KAAA,IAAS,MAAA,CAAO,OACnB,CAAA,mBAEAG,eAAAA,CAAAE,mBAAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,MAAA,KAAW,WAAA,oBAAeL,cAAAA,CAAC,IAAA,EAAA,EAAK,SAAQ,MAAA,EAAQ,QAAA,EAAA,MAAA,CAAO,MAAM,CAAA,EAAE,CAAA;AAAA,MAC/D,WAAW,MAAA,oBAAaA,eAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,QAAQ,QAAA,EAAA,MAAA,EAAO;AAAA,KAAA,EACxD,CAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ;;;AC3HA,IAAO,uBAAA,GAAQ,EAAC,MAAA,EAAO,oBAAA,EAAqB,QAAA,EAAS,sBAAA,EAAuB,MAAA,EAAO,oBAAA,EAAqB,MAAA,EAAO,oBAAA,EAAqB,QAAA,EAAS,sBAAA,EAAsB;ACsC5J,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,OAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgC;AAC9B,EAAA,MAAM,MAAA,GAASO,aAAyB,IAAI,CAAA;AAC5C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIE,eAAS,KAAK,CAAA;AAEtC,EAAA,MAAM,IAAA,GAAO,CAAC,IAAA,KAA0B;AACtC,IAAA,IAAI,QAAA,IAAY,IAAA,KAAS,IAAA,IAAQ,IAAA,CAAK,WAAW,CAAA,EAAG;AACpD,IAAA,MAAM,KAAA,GAAQ,CAAC,GAAG,IAAI,CAAA;AACtB,IAAA,OAAA,CAAQ,WAAW,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,EAC9C,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAAqC;AACpD,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,OAAA,CAAQ,KAAK,CAAA;AACb,IAAA,IAAA,CAAK,KAAA,CAAM,aAAa,KAAK,CAAA;AAAA,EAC/B,CAAA;AAEA,EAAA,uBACEN,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,uBAAA,CAAO,MAAM,IAAA,IAAQ,uBAAA,CAAO,MAAM,SAAS,CAAA;AAAA,MACzD,GAAA;AAAA,MACA,UAAA,EAAY,CAAC,KAAA,KAAU;AACrB,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,OAAA,CAAQ,CAAC,QAAQ,CAAA;AAAA,MACnB,CAAA;AAAA,MACA,WAAA,EAAa,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,MAChC,MAAA,EAAQ,OAAA;AAAA,MACP,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAA,eAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,WAAW,uBAAA,CAAO,MAAA;AAAA,YAClB,QAAA;AAAA,YACA,OAAA,EAAS,MAAM,MAAA,CAAO,OAAA,EAAS,KAAA,EAAM;AAAA,YAEpC,QAAA,EAAA;AAAA,cAAA,IAAA,KAAS,0BAAaH,cAAAA,CAAC,UAAK,SAAA,EAAW,uBAAA,CAAO,MAAO,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,8BAC3DA,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,SAAS,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,cAC5B,SAAS,MAAA,oBAAaA,eAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,QAAQ,QAAA,EAAA,IAAA,EAAK;AAAA;AAAA;AAAA,SACpD;AAAA,wBAIAA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,MAAA;AAAA,YACL,WAAW,uBAAA,CAAO,MAAA;AAAA,YAClB,GAAA,EAAK,MAAA;AAAA,YACL,QAAA,EAAU,EAAA;AAAA,YACV,aAAA,EAAY,MAAA;AAAA,YACZ,QAAA;AAAA,YACC,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA,EAAO;AAAA,YAC1C,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,cAAA,IAAA,CAAK,KAAA,CAAM,OAAO,KAAK,CAAA;AACvB,cAAA,KAAA,CAAM,OAAO,KAAA,GAAQ,EAAA;AAAA,YACvB;AAAA;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;;;ACzGA,IAAO,uBAAA,GAAQ,EAAC,OAAA,EAAQ,qBAAA,EAAsB,KAAA,EAAM,mBAAA,EAAoB,SAAA,EAAU,uBAAA,EAAwB,OAAA,EAAQ,qBAAA,EAAsB,SAAA,EAAU,uBAAA,EAAuB;ACyBzK,IAAM,SAAA,GAAY,CAAA;AAClB,IAAM,SAAA,GAAY,CAAA;AAElB,IAAMqB,KAAAA,GAAO,CAAA;AAEb,IAAM,MAAA,GAAS,GAAA;AAEf,IAAM,KAAA,GAAQ,IAAA;AAEd,IAAM,MAAA,GAAS,EAAE,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAE;AAE5B,IAAM,KAAA,GAAQ,CAAC,KAAA,EAAe,GAAA,EAAa,IAAA,KAAiB,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA,EAAG,IAAI,CAAA;AAE/F,IAAM,QAAQ,CAAC,KAAA,KAAkB,KAAK,KAAA,CAAM,KAAA,GAAQ,GAAI,CAAA,GAAI,GAAA;AAE5D,IAAM,QAAA,GAAW,CAAC,CAAA,EAA6B,CAAA,KAAgC,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,CAAA,GAAI,CAAA,CAAE,CAAA,EAAG,CAAA,CAAE,CAAA,GAAI,EAAE,CAAC,CAAA;AAgBvG,SAAS,QAAA,CAAS,EAAE,IAAA,EAAM,OAAA,EAAS,KAAK,GAAA,GAAM,EAAA,EAAI,OAAA,EAAS,MAAA,EAAO,EAAkB;AAGzF,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIZ,eAAgC,IAAI,CAAA;AAElE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAS,SAAS,CAAA;AAC5C,EAAA,MAAM,CAACO,OAAAA,EAAQ,SAAS,CAAA,GAAIP,eAAS,MAAM,CAAA;AAE3C,EAAA,MAAM,MAAA,GAASF,YAAAA,iBAAO,IAAI,GAAA,EAAuC,CAAA;AACjE,EAAA,MAAM,IAAA,GAAOA,YAAAA,CAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,KAAA,EAAO,SAAA,EAAW,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,MAAA,EAAQ,QAAQ,CAAA;AAE/E,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAIE,eAAS,EAAE,GAAA,EAAK,MAAM,CAAA;AAChD,EAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,GAAA,IAAO,KAAA,CAAM,SAAS,IAAA,EAAM;AAC5C,IAAA,QAAA,CAAS,EAAE,GAAA,EAAK,IAAA,EAAM,CAAA;AACtB,IAAA,QAAA,CAAS,SAAS,CAAA;AAClB,IAAA,SAAA,CAAU,MAAM,CAAA;AAAA,EAClB;AAKA,EAAAD,gBAAU,MAAM;AACd,IAAA,MAAA,CAAO,QAAQ,KAAA,EAAM;AAAA,EACvB,CAAA,EAAG,CAAC,GAAA,EAAK,IAAI,CAAC,CAAA;AAEd,EAAA,MAAM,IAAA,GAAOI,iBAAAA;AAAA,IACX,CAAC,MAAgCU,GAAAA,KAAe;AAC9C,MAAA,MAAM,GAAA,GAAM,SAAS,qBAAA,EAAsB;AAC3C,MAAA,IAAI,CAAC,KAAK,OAAO,MAAA;AAGjB,MAAA,MAAM,IAAA,GAAO,EAAE,CAAA,EAAI,GAAA,CAAI,KAAA,IAASA,GAAAA,GAAK,CAAA,CAAA,GAAM,CAAA,EAAG,CAAA,EAAI,GAAA,CAAI,MAAA,IAAUA,GAAAA,GAAK,KAAM,CAAA,EAAE;AAC7E,MAAA,OAAO,EAAE,GAAG,KAAA,CAAM,IAAA,CAAK,GAAG,CAAC,IAAA,CAAK,GAAG,IAAA,CAAK,CAAC,GAAG,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA,EAAG,CAAC,KAAK,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA,EAAE;AAAA,IAChF,CAAA;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AAEA,EAAA,MAAM,IAAA,GAAOV,iBAAAA;AAAA,IACX,CAAC,EAAA,KAAe;AACd,MAAA,MAAM,OAAO,KAAA,CAAM,KAAA,CAAM,EAAE,CAAA,EAAG,WAAW,SAAS,CAAA;AAClD,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,SAAA,CAAU,CAAC,OAAA,KAAY,IAAA,CAAK,OAAA,EAAS,IAAI,CAAC,CAAA;AAAA,IAC5C,CAAA;AAAA,IACA,CAAC,IAAI;AAAA,GACP;AAEA,EAAA,MAAM,EAAA,GAAKL,aAAO,KAAK,CAAA;AACvB,EAAAC,gBAAU,MAAM;AACd,IAAA,EAAA,CAAG,OAAA,GAAU,KAAA;AAAA,EACf,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAIV,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS;AAEd,IAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAAsB;AACrC,MAAA,IAAI,CAAC,MAAM,OAAA,EAAS;AACpB,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,IAAA,CAAK,EAAA,CAAG,UAAU,IAAA,CAAK,GAAA,CAAI,CAAC,KAAA,CAAM,MAAA,GAAS,KAAK,CAAC,CAAA;AAAA,IACnD,CAAA;AAEA,IAAA,OAAA,CAAQ,iBAAiB,OAAA,EAAS,OAAA,EAAS,EAAE,OAAA,EAAS,OAAO,CAAA;AAC7D,IAAA,OAAO,MAAM,OAAA,CAAQ,mBAAA,CAAoB,OAAA,EAAS,OAAO,CAAA;AAAA,EAC3D,CAAA,EAAG,CAAC,OAAA,EAAS,IAAI,CAAC,CAAA;AAElB,EAAA,SAAS,cAAc,KAAA,EAA0C;AAC/D,IAAA,MAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,SAAA,EAAW,EAAE,CAAA,EAAG,KAAA,CAAM,OAAA,EAAS,CAAA,EAAG,KAAA,CAAM,OAAA,EAAS,CAAA;AAC1E,IAAA,MAAM,CAAC,OAAO,MAAM,CAAA,GAAI,CAAC,GAAG,MAAA,CAAO,OAAA,CAAQ,MAAA,EAAQ,CAAA;AAEnD,IAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,MAAA,IAAA,CAAK,OAAA,GAAU,EAAE,GAAG,IAAA,CAAK,OAAA,EAAS,QAAQ,QAAA,CAAS,KAAA,EAAO,MAAM,CAAA,EAAG,KAAA,EAAM;AACzE,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,EAAO,IAAA,CAAK,OAAA,GAAU,EAAE,GAAG,IAAA,CAAK,OAAA,EAAS,CAAA,EAAG,KAAA,CAAM,CAAA,EAAG,CAAA,EAAG,KAAA,CAAM,CAAA,EAAG,QAAAQ,OAAAA,EAAO;AAAA,EAC9E;AAEA,EAAA,SAAS,cAAc,KAAA,EAA0C;AAC/D,IAAA,IAAI,CAAC,MAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AAC1C,IAAA,MAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,KAAA,CAAM,SAAA,EAAW,EAAE,CAAA,EAAG,KAAA,CAAM,OAAA,EAAS,CAAA,EAAG,KAAA,CAAM,OAAA,EAAS,CAAA;AAE1E,IAAA,MAAM,CAAC,OAAO,MAAM,CAAA,GAAI,CAAC,GAAG,MAAA,CAAO,OAAA,CAAQ,MAAA,EAAQ,CAAA;AACnD,IAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,KAAA,EAAO,MAAM,CAAA;AACrC,MAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AAC/B,MAAA,IAAA,CAAK,KAAK,OAAA,CAAQ,KAAA,IAAS,MAAA,GAAS,IAAA,CAAK,QAAQ,MAAA,CAAO,CAAA;AACxD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,SAAS,SAAA,EAAW;AAExB,IAAA,SAAA;AAAA,MACE,IAAA;AAAA,QACE;AAAA,UACE,CAAA,EAAG,KAAK,OAAA,CAAQ,MAAA,CAAO,KAAK,KAAA,CAAM,CAAA,GAAI,KAAK,OAAA,CAAQ,CAAA,CAAA;AAAA,UACnD,CAAA,EAAG,KAAK,OAAA,CAAQ,MAAA,CAAO,KAAK,KAAA,CAAM,CAAA,GAAI,KAAK,OAAA,CAAQ,CAAA;AAAA,SACrD;AAAA,QACA;AAAA;AACF,KACF;AAAA,EACF;AAEA,EAAA,SAAS,YAAY,KAAA,EAA0C;AAC7D,IAAA,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,SAAS,CAAA;AAGrC,IAAA,MAAM,CAAC,IAAI,CAAA,GAAI,CAAC,GAAG,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA;AAC1C,IAAA,IAAI,IAAA,EAAM,IAAA,CAAK,OAAA,GAAU,EAAE,GAAG,IAAA,CAAK,OAAA,EAAS,CAAA,EAAG,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,IAAA,CAAK,CAAA,EAAG,QAAAA,OAAAA,EAAO;AAAA,EAC3E;AAEA,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,QAAA,EAAU,MAAA,CAAO,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,IAC7B,SAAA,EAAW,CAAA,EAAG,KAAA,CAAMA,OAAAA,CAAO,CAAC,CAAC,CAAA,EAAA,CAAA;AAAA,IAC7B,SAAA,EAAW,CAAA,EAAG,KAAA,CAAMA,OAAAA,CAAO,CAAC,CAAC,CAAA,EAAA;AAAA,GAC/B;AAEA,EAAA,uBACEb,eAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAO,MAAA,CAAO,MAAA;AAAA,MACd,OAAA,EAAQ,UAAA;AAAA,MACR,iBAAA,EAAmB,KAAA;AAAA,MACnB,gBAAgB,uBAAA,CAAO,KAAA;AAAA,MAEvB,QAAA,EAAA;AAAA,wBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,uBAAA,CAAO,GAAA,EACrB,QAAA,EAAA;AAAA,0BAAAH,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAQ,IAAA;AAAA,cACR,cAAY,MAAA,CAAO,OAAA;AAAA,cACnB,OAAA,EAAQ,OAAA;AAAA,cACR,OAAA,EAAO,IAAA;AAAA,cACP,UAAU,KAAA,IAAS,SAAA;AAAA,cACnB,OAAA,EAAS,MAAM,IAAA,CAAK,KAAA,GAAQqB,KAAI,CAAA;AAAA,cAEhC,QAAA,kBAAArB,eAAC,YAAA,EAAA,EAAa;AAAA;AAAA,WAChB;AAAA,0BACAA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAQ,IAAA;AAAA,cACR,cAAY,MAAA,CAAO,MAAA;AAAA,cACnB,OAAA,EAAQ,OAAA;AAAA,cACR,OAAA,EAAO,IAAA;AAAA,cACP,UAAU,KAAA,IAAS,SAAA;AAAA,cACnB,OAAA,EAAS,MAAM,IAAA,CAAK,KAAA,GAAQqB,KAAI,CAAA;AAAA,cAEhC,QAAA,kBAAArB,eAAC,WAAA,EAAA,EAAY;AAAA;AAAA,WACf;AAAA,0BACAA,cAAAA,CAAC,MAAA,EAAA,EAAO,QAAA,EAAQ,IAAA,EAAC,cAAY,MAAA,CAAO,KAAA,EAAO,OAAA,EAAQ,OAAA,EAAQ,SAAO,IAAA,EAAC,OAAA,EAAS,SAC1E,QAAA,kBAAAA,cAAAA,CAAC,cAAW,CAAA,EACd;AAAA,SAAA,EACF,CAAA;AAAA,wBAEAA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,UAAA;AAAA,YACL,WAAW,uBAAA,CAAO,OAAA;AAAA,YAClB,aAAA;AAAA,YACA,aAAA;AAAA,YACA,WAAA;AAAA,YACA,eAAA,EAAiB,WAAA;AAAA,YACjB,eAAe,MAAM,IAAA,CAAK,KAAA,GAAQ,SAAA,GAAY,YAAY,MAAM,CAAA;AAAA,YAEhE,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,uBAAA,CAAO,KAAA,EAAO,GAAA,EAAU,GAAA,EAAU,SAAA,EAAW,KAAA,EAAO,KAAA,EAAO,IAAA,EAAM;AAAA;AAAA,SACnF;AAAA,QAEC,OAAA,KAAY,MAAA,oBACXA,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,MAAA,EAAO,IAAA,EAAK,UAAA,EAAW,SAAA,EAAW,uBAAA,CAAO,OAAA,EACpD,QAAA,EAAA,OAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;;;ACrOA,IAAO,0BAAA,GAAQ,EAAC,QAAA,EAAS,yBAAA,EAA0B,OAAA,EAAQ,wBAAA,EAAyB,OAAA,EAAQ,wBAAA,EAAyB,SAAA,EAAU,0BAAA,EAA2B,OAAA,EAAQ,wBAAA,EAAyB,YAAA,EAAa,6BAAA,EAA8B,OAAA,EAAQ,wBAAA,EAAyB,UAAA,EAAW,2BAAA,EAA4B,OAAA,EAAQ,wBAAA,EAAyB,MAAA,EAAO,uBAAA,EAAwB,UAAA,EAAW,2BAAA,EAA4B,SAAA,EAAU,0BAAA,EAA2B,WAAA,EAAY,4BAAA,EAA4B;ACiEle,IAAM,aAAA,GAAgB,IAAA;AAEtB,IAAM,iBAAA,GAAoB,EAAA;AAC1B,IAAM,eAAA,GAAkB,IAAA;AAExB,SAAS,MAAM,OAAA,EAAyB;AACtC,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA,IAAK,OAAA,GAAU,GAAG,OAAO,MAAA;AAErD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AAChC,EAAA,MAAM,IAAI,KAAA,GAAQ,iBAAA;AAClB,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,iBAAiB,CAAA,GAAI,iBAAA;AAClD,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,eAAe,CAAA;AAE5C,EAAA,MAAM,KAAK,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AACpC,EAAA,OAAO,IAAI,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA,EAAI,EAAE,KAAK,CAAA,EAAG,CAAC,IAAI,EAAE,CAAA,CAAA;AACxE;AAiBO,SAAS,WAAA,CAAY;AAAA,EAC1B,GAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,OAAA,GAAU,KAAA;AAAA,EACV,KAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmC;AACjC,EAAA,MAAM,KAAA,GAAQO,aAAyB,IAAI,CAAA;AAC3C,EAAA,MAAM,IAAA,GAAOA,aAAoB,IAAI,CAAA;AAErC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIE,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAS,KAAK,CAAA;AACxC,EAAA,MAAM,CAAC,EAAA,EAAI,KAAK,CAAA,GAAIA,eAAS,CAAC,CAAA;AAC9B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAS,CAAC,CAAA;AACtC,EAAA,MAAM,CAAC,YAAA,EAAc,aAAa,CAAA,GAAIA,eAAS,KAAK,CAAA;AAEpD,EAAA,SAAS,MAAA,GAAS;AAChB,IAAA,MAAM,KAAK,KAAA,CAAM,OAAA;AACjB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,IAAI,OAAA,KAAY,KAAA,EAAM;AAAA,SACjB,KAAK,GAAG,IAAA,EAAK;AAAA,EACpB;AAEA,EAAA,SAAS,WAAA,GAAc;AACrB,IAAA,MAAM,KAAK,KAAA,CAAM,OAAA;AACjB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,MAAM,OAAO,CAAC,KAAA;AACd,IAAA,EAAA,CAAG,KAAA,GAAQ,IAAA;AACX,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf;AAEA,EAAA,SAAS,WAAW,KAAA,EAAyC;AAC3D,IAAA,MAAM,KAAK,KAAA,CAAM,aAAA;AACjB,IAAA,SAAA,CAAU,GAAG,QAAQ,CAAA;AAGrB,IAAA,IAAI,WAAW,MAAA,IAAa,EAAA,CAAG,WAAA,KAAgB,CAAA,KAAM,WAAA,GAAc,aAAA;AAAA,EACrE;AAEA,EAAA,SAAS,KAAK,OAAA,EAAiB;AAC7B,IAAA,MAAM,KAAK,KAAA,CAAM,OAAA;AACjB,IAAA,IAAI,EAAA,KAAO,WAAA,GAAc,OAAA;AACzB,IAAA,KAAA,CAAM,OAAO,CAAA;AAAA,EACf;AAEA,EAAA,SAAS,cAAA,GAAiB;AACxB,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,OAAA,EAAS,UAAA,GAAa,CAAC,CAAA;AAC3C,IAAA,IAAI,OAAO,KAAA,CAAM,IAAA,GAAO,KAAA,CAAM,IAAA,KAAS,YAAY,UAAA,GAAa,SAAA;AAAA,EAClE;AAEA,EAAA,SAAS,cAAc,OAAA,EAAuB;AAC5C,IAAA,IAAA,CAAK,QAAQ,EAAE,CAAA;AACf,IAAA,eAAA,GAAkB,QAAQ,EAAE,CAAA;AAAA,EAC9B;AAEA,EAAAD,gBAAU,MAAM;AACd,IAAA,MAAM,OAAO,MAAM,aAAA,CAAc,QAAA,CAAS,iBAAA,KAAsB,KAAK,OAAO,CAAA;AAC5E,IAAA,QAAA,CAAS,gBAAA,CAAiB,oBAAoB,IAAI,CAAA;AAClD,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,kBAAA,EAAoB,IAAI,CAAA;AAAA,EACpE,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAS,gBAAA,GAAmB;AAC1B,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,KAAK,SAAS,cAAA,IAAiB;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAM,IAAA,CAAK,OAAA;AACjB,IAAA,IAAI,KAAK,iBAAA,EAAmB;AAC1B,MAAA,KAAK,IAAI,iBAAA,EAAkB;AAC3B,MAAA;AAAA,IACF;AAGA,IAAC,KAAA,CAAM,SAAuE,qBAAA,IAAwB;AAAA,EACxG;AAEA,EAAA,uBACEL,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,0BAAA,CAAO,QAAQ,OAAA,IAAW,0BAAA,CAAO,SAAS,SAAS,CAAA;AAAA,MACjE,cAAY,MAAA,CAAO,MAAA;AAAA,MACnB,GAAA,EAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA;AAAA,MACrB,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,0BAAA,CAAO,KAAA,EACrB,QAAA,EAAA;AAAA,0BAAAH,cAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,KAAA;AAAA,cACL,WAAW,0BAAA,CAAO,KAAA;AAAA,cAClB,GAAA;AAAA,cACA,MAAA;AAAA,cACA,QAAA,EAAU,YAAY,CAAC,OAAA;AAAA,cACvB,WAAA,EAAW,IAAA;AAAA,cACX,OAAA,EAAQ,UAAA;AAAA,cACR,MAAA,EAAQ,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,cAC7B,OAAA,EAAS,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,cAC/B,cAAc,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,CAAM,cAAc,WAAW,CAAA;AAAA,cAC9D,gBAAA,EAAkB,UAAA;AAAA,cAEjB,QAAA,EAAA,QAAA,KAAa,0BACZA,cAAAA;AAAA,gBAAC,OAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,UAAA;AAAA,kBACL,KAAK,QAAA,CAAS,GAAA;AAAA,kBACd,SAAS,QAAA,CAAS,IAAA;AAAA,kBAClB,OAAO,QAAA,CAAS,KAAA;AAAA,kBAChB,SAAS,QAAA,CAAS;AAAA;AAAA;AACpB;AAAA,WAEJ;AAAA,UAEC,CAAC,WAAW,CAAC,OAAA;AAAA;AAAA,0BAGZA,cAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,WAAW,0BAAA,CAAO,KAAA,EAAO,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAY,MAAA,EAAO,UAAU,EAAA,EAC3F,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,0BAAA,CAAO,YACtB,QAAA,kBAAAA,cAAAA,CAAC,SAAA,EAAA,EAAU,CAAA,EACb,CAAA,EACF,CAAA;AAAA,UAGD,KAAA,KAAU,0BAAaA,cAAAA,CAAC,SAAI,SAAA,EAAW,0BAAA,CAAO,OAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,SAAA,EAC/D,CAAA;AAAA,wBAEAG,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,2BAAO,QAAA,EACrB,QAAA,EAAA;AAAA,0BAAAH,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAQ,IAAA;AAAA,cACR,YAAA,EAAY,OAAA,GAAU,MAAA,CAAO,KAAA,GAAQ,MAAA,CAAO,IAAA;AAAA,cAC5C,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cAER,oCAAUA,cAAAA,CAAC,cAAW,CAAA,mBAAKA,eAAC,SAAA,EAAA,EAAU;AAAA;AAAA,WACzC;AAAA,0BAEAA,cAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,OAAA;AAAA,cACL,WAAW,0BAAA,CAAO,KAAA;AAAA,cAClB,cAAY,MAAA,CAAO,IAAA;AAAA,cACnB,GAAA,EAAK,CAAA;AAAA,cACL,KAAK,MAAA,IAAU,CAAA;AAAA,cACf,IAAA,EAAM,CAAA;AAAA,cACN,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,UAAU,CAAC,CAAA;AAAA,cAC/B,QAAA,EAAU,CAAC,KAAA,KAAU,IAAA,CAAK,OAAO,KAAA,CAAM,MAAA,CAAO,KAAK,CAAC;AAAA;AAAA,WACtD;AAAA,0BAEAA,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,MAAA,EAAO,WAAW,0BAAA,CAAO,IAAA,EACpC,QAAA,EAAA,CAAA,EAAG,KAAA,CAAM,EAAE,CAAC,CAAA,GAAA,EAAM,KAAA,CAAM,MAAM,CAAC,CAAA,CAAA,EAClC,CAAA;AAAA,0BAEAA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAQ,IAAA;AAAA,cACR,YAAA,EAAY,KAAA,GAAQ,MAAA,CAAO,MAAA,GAAS,MAAA,CAAO,IAAA;AAAA,cAC3C,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAS,WAAA;AAAA,cAER,kCAAQA,cAAAA,CAAC,kBAAe,CAAA,mBAAKA,eAAC,WAAA,EAAA,EAAY;AAAA;AAAA,WAC7C;AAAA,UAEC,QAAA,KAAa,0BACZA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAQ,IAAA;AAAA,cACR,YAAA,EAAY,aAAA;AAAA,cACZ,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,cAAA,EAAc,SAAS,SAAA,IAAa,KAAA;AAAA,cACpC,OAAA,EAAS,cAAA;AAAA,cAET,QAAA,kBAAAA,eAAC,aAAA,EAAA,EAAc;AAAA;AAAA,WACjB;AAAA,0BAGFA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAQ,IAAA;AAAA,cACR,YAAA,EAAY,YAAA,GAAe,MAAA,CAAO,cAAA,GAAiB,MAAA,CAAO,UAAA;AAAA,cAC1D,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAS,gBAAA;AAAA,cAER,yCAAeA,cAAAA,CAAC,uBAAoB,CAAA,mBAAKA,eAAC,eAAA,EAAA,EAAgB;AAAA;AAAA;AAC7D,SAAA,EACF,CAAA;AAAA,QAEC,QAAA,KAAa,MAAA,IAAa,QAAA,CAAS,MAAA,GAAS,qBAC3CA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,2BAAO,QAAA,EAAU,YAAA,EAAY,aAAA,EACzC,QAAA,EAAA,QAAA,CAAS,IAAI,CAAC,OAAA,qBACbA,cAAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAG,eAAAA,CAAC,MAAA,EAAA,EAAO,SAAQ,OAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,SAAA,EAAW,2BAAO,OAAA,EAAS,OAAA,EAAS,MAAM,aAAA,CAAc,OAAO,CAAA,EAC/F,QAAA,EAAA;AAAA,0BAAAH,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,MAAA,EAAO,SAAA,EAAW,2BAAO,SAAA,EACpC,QAAA,EAAA,KAAA,CAAM,OAAA,CAAQ,EAAE,CAAA,EACnB,CAAA;AAAA,0BACAA,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,MAAA,EAAQ,kBAAQ,KAAA,EAAM;AAAA,SAAA,EACtC,CAAA,EAAA,EANO,OAAA,CAAQ,EAOjB,CACD,CAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;;;AChTA,IAAO,yBAAA,GAAQ,EAAC,QAAA,EAAS,wBAAA,EAAyB,MAAA,EAAO,sBAAA,EAAuB,MAAA,EAAO,sBAAA,EAAuB,WAAA,EAAY,2BAAA,EAA4B,MAAA,EAAO,sBAAA,EAAsB;ACmC5K,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA,GAAS,GAAA;AAAA,EACT,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyC;AACvC,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAE/B,EAAA,uBACEA,eAAC,KAAA,EAAA,EAAI,YAAA,EAAY,OAAO,SAAA,EAAW,EAAA,CAAG,yBAAA,CAAO,MAAA,EAAQ,SAAS,CAAA,EAAI,GAAG,IAAA,EACnE,QAAA,kBAAAA,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,yBAAA,CAAO,MACnB,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC1B,IAAA,MAAM,IAAA,GAAO,KAAA,KAAU,KAAA,CAAM,MAAA,GAAS,CAAA;AACtC,IAAA,uBACEG,eAAAA,CAAC,IAAA,EAAA,EAAkC,SAAA,EAAW,0BAAO,IAAA,EAClD,QAAA,EAAA;AAAA,MAAA,KAAA,GAAQ,qBAAKH,cAAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAW,0BAAO,SAAA,EAAW,CAAA;AAAA,MAC7D,QAAQ,IAAA,CAAK,IAAA,KAAS,MAAA,mBACrBA,eAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,MAAA,EAAO,IAAA,EAAM,OAAO,SAAA,GAAY,OAAA,EAAS,cAAA,EAAc,IAAA,GAAO,SAAS,MAAA,EAClF,QAAA,EAAA,IAAA,CAAK,KAAA,EACR,CAAA,mBAEAA,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,OAAA,EAAQ,MAAK,IAAA,EAAK,EAAA,EAAI,MAAA,EAAQ,IAAA,EAAM,KAAK,IAAA,EAAM,SAAA,EAAW,yBAAA,CAAO,IAAA,EAC5E,eAAK,KAAA,EACR;AAAA,KAAA,EAAA,EATK,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,CAW/B,CAAA;AAAA,EAEJ,CAAC,GACH,CAAA,EACF,CAAA;AAEJ","file":"index.cjs","sourcesContent":["import type { CSSProperties } from \"react\";\n\n/**\n * Join class names, dropping anything falsy.\n *\n * Every component takes a `className` from the call site and owns one of its\n * own from a CSS Module, so the merge happens in one place rather than in\n * forty slightly different inline expressions.\n */\nexport function cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(\" \");\n}\n\n/**\n * A style object that may also carry CSS custom properties.\n *\n * `React.CSSProperties` has no index signature, so `{ '--mds-x': 1 }` is a\n * type error against it. Values that genuinely vary per render (a slider's\n * percent, an avatar's pixel size) belong in a custom property the stylesheet\n * reads — this types that without an assertion.\n */\nexport type CSSVars = CSSProperties & Record<`--${string}`, string | number>;\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Text/Text.module.css?mds-scoped\";\nexport default {\"text\":\"mds-Text__text\",\"variant-body\":\"mds-Text__variant-body\",\"variant-label\":\"mds-Text__variant-label\",\"variant-note\":\"mds-Text__variant-note\",\"variant-meta\":\"mds-Text__variant-meta\",\"variant-eyebrow\":\"mds-Text__variant-eyebrow\",\"tone-primary\":\"mds-Text__tone-primary\",\"tone-secondary\":\"mds-Text__tone-secondary\",\"tone-muted\":\"mds-Text__tone-muted\",\"tone-inverse\":\"mds-Text__tone-inverse\",\"tone-accent\":\"mds-Text__tone-accent\",\"tone-on-media\":\"mds-Text__tone-on-media\",\"tone-danger\":\"mds-Text__tone-danger\",\"tone-warning\":\"mds-Text__tone-warning\",\"tone-success\":\"mds-Text__tone-success\",\"align-left\":\"mds-Text__align-left\",\"align-center\":\"mds-Text__align-center\",\"align-right\":\"mds-Text__align-right\",\"truncate\":\"mds-Text__truncate\"};","import type { HTMLAttributes, JSX, ReactElement } from \"react\";\nimport { createElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Text.module.css\";\n\nexport type TextVariant = \"body\" | \"label\" | \"note\" | \"meta\" | \"eyebrow\";\n\nexport type TextTone =\n | \"primary\"\n | \"secondary\"\n | \"muted\"\n | \"inverse\"\n | \"accent\"\n | \"on-media\"\n | \"danger\"\n | \"warning\"\n | \"success\";\n\nexport interface TextProps extends HTMLAttributes<HTMLElement> {\n /** Type role from the core scale. Default \"body\". */\n variant?: TextVariant;\n /** Element override when the default doesn't fit the markup. */\n as?: keyof JSX.IntrinsicElements;\n /** Semantic color. Variants carry sensible defaults. */\n tone?: TextTone;\n align?: \"left\" | \"center\" | \"right\";\n /** Single-line ellipsis. */\n truncate?: boolean;\n}\n\nconst ELEMENT: Record<TextVariant, keyof JSX.IntrinsicElements> = {\n body: \"p\",\n label: \"span\",\n note: \"p\",\n meta: \"span\",\n eyebrow: \"span\",\n};\n\nconst DEFAULT_TONE: Partial<Record<TextVariant, TextTone>> = {\n note: \"secondary\",\n meta: \"muted\",\n eyebrow: \"muted\",\n};\n\n/**\n * Body-copy primitive. One class per type role — screens never hand-roll styled tags.\n *\n * ```tsx\n * <Text>Body copy.</Text>\n * <Text variant=\"label\" as=\"span\">Field label</Text>\n * <Text variant=\"meta\" tone=\"muted\">Updated 2h ago</Text>\n * <Text truncate>Very long single line…</Text>\n * ```\n */\nexport function Text({\n variant = \"body\",\n as,\n tone,\n align,\n truncate = false,\n className,\n ...rest\n}: TextProps): ReactElement {\n const element = as ?? ELEMENT[variant];\n const resolvedTone = tone ?? DEFAULT_TONE[variant] ?? \"primary\";\n return createElement(element, {\n className: cx(\n styles.text,\n styles[`variant-${variant}`],\n styles[`tone-${resolvedTone}`],\n align && styles[`align-${align}`],\n truncate && styles.truncate,\n className,\n ),\n ...rest,\n });\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Heading/Heading.module.css?mds-scoped\";\nexport default {\"heading\":\"mds-Heading__heading\",\"variant-display\":\"mds-Heading__variant-display\",\"variant-title\":\"mds-Heading__variant-title\",\"variant-subtitle\":\"mds-Heading__variant-subtitle\",\"variant-label\":\"mds-Heading__variant-label\",\"tone-primary\":\"mds-Heading__tone-primary\",\"tone-secondary\":\"mds-Heading__tone-secondary\",\"tone-inverse\":\"mds-Heading__tone-inverse\",\"tone-accent\":\"mds-Heading__tone-accent\",\"tone-on-media\":\"mds-Heading__tone-on-media\"};","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { createElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Heading.module.css\";\n\nexport type HeadingVariant = \"display\" | \"title\" | \"subtitle\" | \"label\";\nexport type HeadingLevel = 1 | 2 | 3 | 4;\nexport type HeadingTone = \"primary\" | \"secondary\" | \"inverse\" | \"accent\" | \"on-media\";\n\nexport interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {\n /** Document outline level → h1–h4, with a matching default type role. Default 2. */\n level?: HeadingLevel;\n /** Type role override — outline level and visual size are separate concerns.\n `label` is the small one: a rail beside the page, a group inside a form —\n a title that names its section without competing with the page's own. */\n variant?: HeadingVariant;\n tone?: HeadingTone;\n}\n\nconst LEVEL_VARIANT: Record<HeadingLevel, HeadingVariant> = {\n 1: \"display\",\n 2: \"title\",\n 3: \"subtitle\",\n 4: \"subtitle\",\n};\n\n/**\n * Brand headings on the core roles. `level` = semantics, `variant` = size.\n *\n * ```tsx\n * <Heading level={1}>Sessions</Heading>\n * <Heading level={2} variant=\"subtitle\" tone=\"secondary\">This week</Heading>\n * ```\n */\nexport function Heading({\n level = 2,\n variant,\n tone = \"primary\",\n className,\n ...rest\n}: HeadingProps): ReactElement {\n return createElement(`h${level}`, {\n className: cx(\n styles.heading,\n styles[`variant-${variant ?? LEVEL_VARIANT[level]}`],\n styles[`tone-${tone}`],\n className,\n ),\n ...rest,\n });\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Spinner/Spinner.module.css?mds-scoped\";\nexport default {\"spinner\":\"mds-Spinner__spinner\",\"spin\":\"mds-Spinner__spin\"};","import type { HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx, type CSSVars } from \"../../internal/cx\";\nimport styles from \"./Spinner.module.css\";\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLSpanElement> {\n /** Diameter in px. Default 20. */\n size?: number;\n /** Accessible label. Required: the words are the app's, in the app's\n language, and a default here is one no translation file can reach. */\n label: string;\n ref?: Ref<HTMLSpanElement>;\n}\n\n/**\n * Indeterminate loading ring. Arc takes currentColor, so it matches whatever\n * text it sits beside. Keyframe is local: CSS Modules localizes\n * animation-name, a global one resolves to nothing. base.css stops it under\n * prefers-reduced-motion.\n *\n * ```tsx\n * <Spinner label=\"Loading sessions\" />\n * ```\n */\nexport function Spinner({\n size = 20,\n label,\n className,\n style,\n ...rest\n}: SpinnerProps): ReactElement {\n /* Per-instance knobs, not design tokens. Ring thickness scales with the\n diameter, floored so small spinners stay visible. */\n const vars: CSSVars = {\n \"--spinner-size\": `${size}px`,\n \"--spinner-border\": `${Math.max(2, Math.round(size / 10))}px`,\n };\n return (\n <span\n role=\"status\"\n aria-label={label}\n className={cx(styles.spinner, className)}\n style={{ ...vars, ...style }}\n {...rest}\n />\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Icon/Icon.module.css?mds-scoped\";\nexport default {\"icon\":\"mds-Icon__icon\",\"size-slot\":\"mds-Icon__size-slot\",\"size-sm\":\"mds-Icon__size-sm\",\"size-md\":\"mds-Icon__size-md\",\"size-lg\":\"mds-Icon__size-lg\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { createContext, useContext } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Icon.module.css\";\n\nexport interface IconRenderProps {\n /** Pixel size of the requested step, or undefined when the glyph should take\n the size of the slot it sits in. An icon set that can only be sized with a\n number falls back to its own default; one that can read a CSS length uses\n var(--mds-icon-slot, var(--mds-icon-md)). */\n size?: number | undefined;\n}\n\n/** Brand-owned glyph resolver: name → rendered glyph (svg, font ligature, …). */\nexport type IconRender = (name: string, props: IconRenderProps) => ReactNode;\n\nconst IconContext = createContext<IconRender | null>(null);\n\nexport interface IconProviderProps {\n render: IconRender;\n children: ReactNode;\n}\n\n/**\n * Registry seam. The system never bundles an icon set — the app registers its\n * own (lucide, Material Symbols, …) once, at the root. Iconography is brand,\n * like color.\n *\n * ```tsx\n * // App root: map names to your icon set once.\n * <IconProvider render={(name, { size }) => <MyGlyph name={name} width={size ?? 20} />}>\n * <App />\n * </IconProvider>\n *\n * // Anywhere below:\n * <Icon name=\"check\" size=\"sm\" />\n * ```\n */\nexport function IconProvider({ render, children }: IconProviderProps): ReactElement {\n return <IconContext.Provider value={render}>{children}</IconContext.Provider>;\n}\n\nexport type IconSize = \"sm\" | \"md\" | \"lg\";\n\n/* Must match --mds-icon-* in core/layout.css — the renderer needs a number,\n a stylesheet cannot hand one over. */\nconst SIZE_PX: Record<IconSize, number> = { sm: 16, md: 20, lg: 24 };\n\nexport interface IconProps extends HTMLAttributes<HTMLSpanElement> {\n /** Glyph name in the app's registered set. */\n name: string;\n /** A step on the icon scale. Left unset, the glyph takes the step of the\n control slot around it, and the md step outside one. */\n size?: IconSize;\n /** Accessible name. Omitted = decorative (aria-hidden). */\n label?: string;\n ref?: Ref<HTMLSpanElement>;\n}\n\nconst warned = new Set<string>();\n\n/** A glyph from the app-registered set, sized on the core scale. */\nexport function Icon({ name, size, label, className, ...rest }: IconProps): ReactElement {\n const render = useContext(IconContext);\n if (render === null && !warned.has(name)) {\n warned.add(name);\n console.error(\n `Icon \"${name}\": no IconProvider above this tree. Register the app's icon set once at the root.`,\n );\n }\n return (\n <span\n className={cx(styles.icon, styles[`size-${size ?? \"slot\"}`], className)}\n {...(label ? { role: \"img\", \"aria-label\": label } : { \"aria-hidden\": true })}\n {...rest}\n >\n {render?.(name, { size: size === undefined ? undefined : SIZE_PX[size] })}\n </span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Button/Button.module.css?mds-scoped\";\nexport default {\"button\":\"mds-Button__button\",\"size-sm\":\"mds-Button__size-sm\",\"size-md\":\"mds-Button__size-md\",\"size-lg\":\"mds-Button__size-lg\",\"slot\":\"mds-Button__slot\",\"variant-primary\":\"mds-Button__variant-primary\",\"variant-secondary\":\"mds-Button__variant-secondary\",\"variant-ghost\":\"mds-Button__variant-ghost\",\"variant-highlight\":\"mds-Button__variant-highlight\",\"variant-danger\":\"mds-Button__variant-danger\",\"variant-warning\":\"mds-Button__variant-warning\",\"fullWidth\":\"mds-Button__fullWidth\",\"icon-only\":\"mds-Button__icon-only\",\"on-media\":\"mds-Button__on-media\",\"shape-rect\":\"mds-Button__shape-rect\",\"shape-pill\":\"mds-Button__shape-pill\"};","import type { ButtonHTMLAttributes, ElementType, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Spinner } from \"../Spinner/Spinner\";\nimport styles from \"./Button.module.css\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\" | \"warning\" | \"highlight\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\nexport type ButtonShape = \"rect\" | \"pill\";\n\ninterface ButtonBaseProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"type\"> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n /** Standing on a picture, where the page's own foreground would be read\n * against a photograph. Only the two see-through variants take it up: a\n * filled button brings its own ground. */\n onMedia?: boolean;\n /** Corner shape, when the default is not the one this button wants: a\n * rectangle where `iconOnly` would round it, or a pill around words.\n * Unset, the shape follows from the size — rect, or a circle when\n * `iconOnly`. */\n shape?: ButtonShape;\n /** Glyph slots — pass an <Icon> or any node. Agnostic of icon set; the\n * button sizes the slot from its own size, and publishes that step as\n * --mds-icon-slot for an icon set that can only size itself. */\n iconLeft?: ReactNode;\n iconRight?: ReactNode;\n /** Spinner replaces the left slot; disables and announces busy. */\n loading?: boolean;\n fullWidth?: boolean;\n type?: \"button\" | \"submit\" | \"reset\";\n /** Renders an <a> — for navigation styled as a button. */\n href?: string;\n /** Element override, e.g. a router's Link. */\n as?: ElementType;\n ref?: Ref<HTMLButtonElement>;\n}\n\n/* Icon-only collapses the button to a circle holding one glyph. A glyph says\n nothing to a screen reader, so the type demands the name. */\ntype IconOnlyEnforcement =\n | { iconOnly: true; \"aria-label\": string }\n | { iconOnly?: false | undefined };\n\nexport type ButtonProps = ButtonBaseProps & IconOnlyEnforcement;\n\n/* Must match --mds-icon-slot on the size classes: the spinner takes the left\n glyph's place and Spinner needs a number, which a stylesheet cannot hand it. */\nconst ICON_PX: Record<ButtonSize, number> = { sm: 16, md: 20, lg: 24 };\n\n/**\n * The tappable action. Semantics: button by default, link when `href`/`as` says so.\n *\n * ```tsx\n * <Button onClick={save}>Save</Button>\n * <Button variant=\"secondary\" size=\"sm\">Cancel</Button>\n * <Button variant=\"danger\" loading={deleting} onClick={remove}>Delete</Button>\n * <Button iconOnly aria-label=\"Close\" variant=\"ghost\"><Icon name=\"close\" /></Button>\n * <Button href=\"/settings\">Settings</Button>\n * <Button iconOnly aria-label=\"Menu\" shape=\"rect\"><Icon name=\"menu\" /></Button>\n * ```\n */\nexport function Button({\n variant = \"primary\",\n size = \"md\",\n shape,\n onMedia = false,\n iconLeft,\n iconRight,\n loading = false,\n disabled = false,\n fullWidth = false,\n iconOnly = false,\n type = \"button\",\n href,\n as,\n className,\n children,\n ...rest\n}: ButtonProps): ReactElement {\n /* An icon-only button's glyph arrives as `children`, so it gets the same slot the\n named slots get — otherwise its size is the browser's default for an <svg> with\n a viewBox and no width, and there is no agreement on what that is: Chrome invents\n 300x150 and shrinks it to fit, WebKit gives 0x0 and the control disappears. Both\n spellings of an icon button are in use, `iconLeft` with nothing between the tags\n and a glyph as the child, so this waits to be given one. */\n const glyph =\n iconOnly && children != null ? <span className={styles.slot}>{children}</span> : children;\n\n /* The spinner is standing in for that glyph, not queuing behind it: two marks in a\n 32px circle is neither of them. */\n const body = loading && iconOnly ? null : glyph;\n\n const Element: ElementType = as ?? (href !== undefined ? \"a\" : \"button\");\n const isButton = Element === \"button\";\n const own = isButton ? { type, disabled: disabled || loading } : { href };\n\n return (\n <Element\n className={cx(\n styles.button,\n styles[`variant-${variant}`],\n styles[`size-${size}`],\n fullWidth && styles.fullWidth,\n iconOnly && styles[\"icon-only\"],\n shape !== undefined && styles[`shape-${shape}`],\n onMedia && styles[\"on-media\"],\n className,\n )}\n aria-busy={loading || undefined}\n {...own}\n {...rest}\n >\n {loading ? (\n <span className={styles.slot}>\n <Spinner size={ICON_PX[size]} label=\"\" aria-hidden=\"true\" />\n </span>\n ) : (\n iconLeft ? <span className={styles.slot}>{iconLeft}</span> : null\n )}\n {body}\n {!loading && iconRight ? <span className={styles.slot}>{iconRight}</span> : null}\n </Element>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Link/Link.module.css?mds-scoped\";\nexport default {\"link\":\"mds-Link__link\",\"variant-inline\":\"mds-Link__variant-inline\",\"variant-standalone\":\"mds-Link__variant-standalone\",\"variant-plain\":\"mds-Link__variant-plain\",\"size-xs\":\"mds-Link__size-xs\",\"size-sm\":\"mds-Link__size-sm\",\"size-base\":\"mds-Link__size-base\",\"size-lg\":\"mds-Link__size-lg\",\"size-xl\":\"mds-Link__size-xl\"};","import type { ComponentPropsWithRef, ElementType, ReactElement, ReactNode } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Link.module.css\";\n\nexport type LinkVariant = \"inline\" | \"standalone\" | \"plain\";\n\nexport type LinkSize = \"xs\" | \"sm\" | \"base\" | \"lg\" | \"xl\";\n\ntype LinkOwnProps<E extends ElementType> = {\n /** inline = underlined, lives in running text. standalone = nav/action link.\n plain = inherits the surrounding color and weight, underlines on hover —\n for links whose context already marks them (a card title, a list row). */\n variant?: LinkVariant;\n /** Font size on the core text scale. Default inherits from context. */\n size?: LinkSize;\n /** Opens in a new tab with rel protection. */\n external?: boolean;\n /** Element override — `'button'` for a link-styled action, or a router's\n Link component, whose own props (`to`, `href`, …) then type-check. */\n as?: E;\n children?: ReactNode;\n};\n\n/* WithRef, not Without: the ref goes to whatever `as` rendered, and a link a\n caller cannot measure is a link a popover cannot anchor to. */\nexport type LinkProps<E extends ElementType = \"a\"> = LinkOwnProps<E> &\n Omit<ComponentPropsWithRef<E>, keyof LinkOwnProps<E>>;\n\n/**\n * Text link. Inline links keep their underline: color alone fails WCAG 1.4.1\n * for links inside prose.\n *\n * ```tsx\n * <Text>Read the <Link href=\"/terms\">terms</Link>.</Text>\n * <Link variant=\"standalone\" href=\"https://example.com\" external>Docs</Link>\n * <Link as={RouterLink} to=\"/about\">About</Link>\n * ```\n */\nexport function Link<E extends ElementType = \"a\">({\n variant = \"inline\",\n size,\n external = false,\n as,\n ...rest\n}: LinkProps<E>): ReactElement {\n const Element: ElementType = as ?? \"a\";\n // className and type live on the generic remainder — a plain destructure\n // cannot reach into ComponentPropsWithoutRef<E> while E is still open.\n const { className, type, ...others } = rest as {\n className?: string;\n type?: string;\n } & Record<string, unknown>;\n const externalProps = external ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {};\n // A button-rendered link defaults to type=\"button\" — inside a form, the\n // browser's \"submit\" default would fire on every click.\n const typeProps = Element === \"button\" ? { type: type ?? \"button\" } : type !== undefined ? { type } : {};\n return (\n <Element\n className={cx(\n styles.link,\n styles[`variant-${variant}`],\n size && styles[`size-${size}`],\n className,\n )}\n {...externalProps}\n {...others}\n {...typeProps}\n />\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Avatar/Avatar.module.css?mds-scoped\";\nexport default {\"avatar\":\"mds-Avatar__avatar\",\"size-xs\":\"mds-Avatar__size-xs\",\"size-sm\":\"mds-Avatar__size-sm\",\"size-md\":\"mds-Avatar__size-md\",\"size-lg\":\"mds-Avatar__size-lg\",\"size-xl\":\"mds-Avatar__size-xl\",\"tone-1\":\"mds-Avatar__tone-1\",\"tone-2\":\"mds-Avatar__tone-2\",\"tone-3\":\"mds-Avatar__tone-3\",\"tone-4\":\"mds-Avatar__tone-4\",\"tone-5\":\"mds-Avatar__tone-5\",\"image\":\"mds-Avatar__image\",\"initials\":\"mds-Avatar__initials\"};","import type { HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Avatar.module.css\";\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\n/** One of the five brand identity tints (`--mds-avatar-tone-1..5`). */\nexport type AvatarTone = 1 | 2 | 3 | 4 | 5;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n /** Person's display name — accessible name and initials source. */\n name: string;\n /** Image URL; initials render when absent or empty. */\n src?: string;\n size?: AvatarSize;\n /** Identity tint behind the initials. Pick per person (e.g. hash the name)\n so the same person keeps the same color. */\n tone?: AvatarTone;\n /** Hide from assistive tech — for avatars that repeat a name already in\n the row's text. The name prop still drives the initials. */\n decorative?: boolean;\n ref?: Ref<HTMLSpanElement>;\n}\n\n/* First + last word: \"Ada Byron King Lovelace\" → AL. Middle names add noise\n at 24px. */\nfunction initials(name: string): string {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n const first = words[0]?.[0] ?? \"\";\n const last = words.length > 1 ? (words.at(-1)?.[0] ?? \"\") : \"\";\n return (first + last).toUpperCase();\n}\n\n/**\n * Person marker. Image when available, initials otherwise — never an empty circle.\n *\n * ```tsx\n * <Avatar name=\"Ada Lovelace\" src=\"/ada.jpg\" />\n * <Avatar name=\"Grace Hopper\" size=\"lg\" tone={2} />\n * ```\n */\nexport function Avatar({\n name,\n src,\n size = \"md\",\n tone,\n decorative = false,\n className,\n ...rest\n}: AvatarProps): ReactElement {\n return (\n <span\n className={cx(\n styles.avatar,\n styles[`size-${size}`],\n tone !== undefined && styles[`tone-${tone}`],\n className,\n )}\n aria-hidden={decorative || undefined}\n {...rest}\n >\n {src ? (\n <img className={styles.image} src={src} alt={decorative ? \"\" : name} />\n ) : (\n <span\n role={decorative ? undefined : \"img\"}\n aria-label={decorative ? undefined : name}\n className={styles.initials}\n >\n {initials(name)}\n </span>\n )}\n </span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/AvatarGroup/AvatarGroup.module.css?mds-scoped\";\nexport default {\"group\":\"mds-AvatarGroup__group\",\"item\":\"mds-AvatarGroup__item\",\"overflow\":\"mds-AvatarGroup__overflow\",\"size-xs\":\"mds-AvatarGroup__size-xs\",\"size-sm\":\"mds-AvatarGroup__size-sm\",\"size-md\":\"mds-AvatarGroup__size-md\",\"size-lg\":\"mds-AvatarGroup__size-lg\",\"size-xl\":\"mds-AvatarGroup__size-xl\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { Children } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { AvatarSize } from \"../Avatar/Avatar\";\nimport styles from \"./AvatarGroup.module.css\";\n\nexport interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Avatar children. */\n children: ReactNode;\n /** Visible cap; the rest collapse into \"+N\". Default 4. */\n max?: number;\n /** Sizes the overflow chip to match the avatars. Default \"md\". */\n size?: AvatarSize;\n /** Names the \"+N\" chip, e.g. `(n) => `${n} more``. Required and a function:\n the chip stands for people whose names are not on screen, and only the app\n knows how its language counts them. */\n overflowLabel: (hidden: number) => string;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * Overlapping stack of avatars with a \"+N\" chip past `max`.\n *\n * ```tsx\n * <AvatarGroup max={3} overflowLabel={(n) => `${n} more`}>\n * <Avatar name=\"Ada Lovelace\" />\n * <Avatar name=\"Grace Hopper\" />\n * <Avatar name=\"Margaret Hamilton\" />\n * <Avatar name=\"Katherine Johnson\" />\n * </AvatarGroup>\n * ```\n */\nexport function AvatarGroup({\n children,\n max = 4,\n size = \"md\",\n overflowLabel,\n className,\n ...rest\n}: AvatarGroupProps): ReactElement {\n const all = Children.toArray(children);\n const visible = all.slice(0, max);\n const hidden = all.length - visible.length;\n\n return (\n <div className={cx(styles.group, className)} {...rest}>\n {visible.map((child, i) => (\n <span key={i} className={styles.item}>\n {child}\n </span>\n ))}\n {hidden > 0 && (\n <span\n className={cx(styles.item, styles.overflow, styles[`size-${size}`])}\n aria-label={overflowLabel(hidden)}\n >\n +{hidden}\n </span>\n )}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Badge/Badge.module.css?mds-scoped\";\nexport default {\"badge\":\"mds-Badge__badge\",\"tone-neutral\":\"mds-Badge__tone-neutral\",\"tone-accent\":\"mds-Badge__tone-accent\",\"tone-highlight\":\"mds-Badge__tone-highlight\",\"tone-danger\":\"mds-Badge__tone-danger\",\"tone-warning\":\"mds-Badge__tone-warning\",\"tone-success\":\"mds-Badge__tone-success\"};","import type { HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Badge.module.css\";\n\nexport type BadgeTone = \"neutral\" | \"accent\" | \"danger\" | \"warning\" | \"success\" | \"highlight\";\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: BadgeTone;\n ref?: Ref<HTMLSpanElement>;\n}\n\n/**\n * Small status marker — counts, \"new\", state words. Soft fill, strong text.\n *\n * ```tsx\n * <Badge tone=\"success\">Paid</Badge>\n * <Badge tone=\"danger\">3</Badge>\n * ```\n */\nexport function Badge({ tone = \"neutral\", className, ...rest }: BadgeProps): ReactElement {\n return <span className={cx(styles.badge, styles[`tone-${tone}`], className)} {...rest} />;\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/Chip.module.css?mds-scoped\";\nexport default {\"chip\":\"mds-Chip__chip\",\"icon\":\"mds-Chip__icon\",\"variant-soft\":\"mds-Chip__variant-soft\",\"variant-outline\":\"mds-Chip__variant-outline\",\"variant-highlight\":\"mds-Chip__variant-highlight\",\"selected\":\"mds-Chip__selected\",\"interactive\":\"mds-Chip__interactive\",\"disabled\":\"mds-Chip__disabled\"};","import type { HTMLAttributes, MouseEventHandler, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Chip.module.css\";\n\nexport type ChipVariant = \"soft\" | \"outline\" | \"highlight\";\n\nexport interface ChipProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode;\n /** Unselected appearance. Default \"soft\". */\n variant?: ChipVariant;\n /** Toggle state. When given on an interactive chip it also sets aria-pressed;\n * omit for a plain action chip so it does not announce as a toggle. */\n selected?: boolean;\n /** Leading glyph, sized by the chip. */\n icon?: ReactNode;\n /** When provided, Chip renders as a `<button>`. */\n onClick?: MouseEventHandler;\n disabled?: boolean;\n /** The root is a `<button>` when it has an onClick and a `<span>` otherwise,\n so the ref is typed to what both are. */\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * Compact pill for filters and single/multi choices. Interactive (a button,\n * with aria-pressed when `selected` is given) when `onClick` is set, otherwise\n * a static pill. For a passive content label use Tag instead.\n *\n * ```tsx\n * <Chip selected={filter === \"all\"} onClick={() => setFilter(\"all\")}>All</Chip>\n * <Chip variant=\"outline\" icon={<Icon name=\"pin\" />}>Nearby</Chip>\n * ```\n */\nexport function Chip({\n children,\n variant = \"soft\",\n selected,\n icon,\n onClick,\n disabled = false,\n className,\n ref,\n ...rest\n}: ChipProps): ReactElement {\n const interactive = typeof onClick === \"function\";\n\n const shared = {\n className: cx(\n styles.chip,\n styles[`variant-${variant}`],\n selected && styles.selected,\n interactive && !disabled && styles.interactive,\n disabled && styles.disabled,\n className,\n ),\n ...rest,\n };\n\n const content = (\n <>\n {icon ? <span className={styles.icon}>{icon}</span> : null}\n {children}\n </>\n );\n\n return interactive ? (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n aria-pressed={selected === undefined ? undefined : selected}\n ref={ref as Ref<HTMLButtonElement>}\n {...shared}\n >\n {content}\n </button>\n ) : (\n <span ref={ref as Ref<HTMLSpanElement>} {...shared}>{content}</span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/ChipGroup.module.css?mds-scoped\";\nexport default {\"group\":\"mds-ChipGroup__group\",\"gap-hairline\":\"mds-ChipGroup__gap-hairline\",\"gap-tight\":\"mds-ChipGroup__gap-tight\",\"gap-base\":\"mds-ChipGroup__gap-base\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./ChipGroup.module.css\";\n\nexport type ChipGroupGap = \"hairline\" | \"tight\" | \"base\";\n\nexport interface ChipGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Chips (or any inline items) laid out in a wrapping group. */\n children: ReactNode;\n /** Space between items, on the gap scale. Default \"tight\". */\n gap?: ChipGroupGap;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * Wrapping row of Chips for multi-select choices inside a form (pick several\n * days, locations, tags…). Items wrap onto new lines so nothing scrolls\n * off-screen; use ChipBar for a single-line scrolling filter strip.\n *\n * ```tsx\n * <ChipGroup>\n * {days.map((day) => (\n * <Chip key={day} selected={picked.has(day)} onClick={() => toggle(day)}>\n * {day}\n * </Chip>\n * ))}\n * </ChipGroup>\n * ```\n */\nexport function ChipGroup({ children, gap = \"tight\", className, ...rest }: ChipGroupProps): ReactElement {\n return (\n <div className={cx(styles.group, styles[`gap-${gap}`], className)} {...rest}>\n {children}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/ChipBar.module.css?mds-scoped\";\nexport default {\"bar\":\"mds-ChipBar__bar\",\"gap-hairline\":\"mds-ChipBar__gap-hairline\",\"gap-tight\":\"mds-ChipBar__gap-tight\",\"gap-base\":\"mds-ChipBar__gap-base\",\"bordered\":\"mds-ChipBar__bordered\",\"fade\":\"mds-ChipBar__fade\",\"item\":\"mds-ChipBar__item\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { Children } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./ChipBar.module.css\";\n\nexport type ChipBarGap = \"hairline\" | \"tight\" | \"base\";\n\nexport interface ChipBarProps extends HTMLAttributes<HTMLDivElement> {\n /** Chips (or any inline items) laid out in a single scrolling row. */\n children: ReactNode;\n /** Space between items, on the gap scale. Default \"tight\". */\n gap?: ChipBarGap;\n /** Frame the strip so overflow reads as a scroll area. Default false. */\n bordered?: boolean;\n /** Fade the trailing edge to hint that the row scrolls. Default true. */\n fade?: boolean;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * Horizontally scrollable single-line row of Chips — a filter strip. Items\n * never wrap; the row scrolls when they overflow. `fade` dissolves the\n * trailing edge so the last chip hints at more rather than getting chopped\n * mid-word. Use ChipGroup for a wrapping set of choices inside a form.\n *\n * ```tsx\n * <ChipBar>\n * {segments.map((s) => (\n * <Chip key={s} selected={s === segment} onClick={() => setSegment(s)}>\n * {s}\n * </Chip>\n * ))}\n * </ChipBar>\n * ```\n */\nexport function ChipBar({\n children,\n gap = \"tight\",\n bordered = false,\n fade = true,\n className,\n ...rest\n}: ChipBarProps): ReactElement {\n return (\n <div\n className={cx(styles.bar, styles[`gap-${gap}`], bordered && styles.bordered, fade && styles.fade, className)}\n {...rest}\n >\n {Children.map(children, (child) => (\n <div className={styles.item}>{child}</div>\n ))}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/CountButton/CountButton.module.css?mds-scoped\";\nexport default {\"button\":\"mds-CountButton__button\",\"tone-accent\":\"mds-CountButton__tone-accent\",\"tone-danger\":\"mds-CountButton__tone-danger\",\"glyph\":\"mds-CountButton__glyph\"};","import type { ButtonHTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Spinner } from \"../Spinner/Spinner\";\nimport styles from \"./CountButton.module.css\";\n\nexport type CountButtonTone = \"accent\" | \"danger\";\n\n/* Matches --mds-icon-md; the spinner replaces an md glyph without reflow. */\n/* Must match --mds-icon-slot on .glyph: the spinner stands in the glyph's\n place and Spinner needs a number, which a stylesheet cannot hand it. */\nconst SPINNER_PX = 20;\n\nexport interface CountButtonProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"aria-label\" | \"aria-pressed\"> {\n /** Glyph shown before the text, e.g. `<Icon name=\"heart\" />`. Sized by the\n button, whatever the icon set's own default is. */\n icon: ReactNode;\n /** Accessible label (required) — describes the action for screen readers. */\n label: string;\n /**\n * Toggle state. When defined, sets `aria-pressed` and tints the control\n * with the tone colour. Omit for non-toggle actions (e.g. comment).\n */\n active?: boolean;\n /** Token the active tint reads. Default \"accent\". */\n tone?: CountButtonTone;\n /**\n * The write behind this action is in flight. Swaps the glyph for a spinner\n * of the same size and locks the control — a second tap in that window\n * would toggle the write straight back off.\n */\n loading?: boolean;\n /** Visible text beside the icon — typically a count or a word. */\n children?: ReactNode;\n ref?: Ref<HTMLButtonElement>;\n}\n\n/**\n * Inline, chrome-less pressable pairing an icon with a count or word — like,\n * comment, react actions. Owns hover, press, disabled, loading and active\n * (`aria-pressed`) states so consumers never hand-roll button chrome.\n *\n * The app owns the glyph, so it also owns the filled/outline swap:\n *\n * ```tsx\n * <CountButton\n * icon={<Icon name={liked ? \"heart-filled\" : \"heart\"} />}\n * label={liked ? \"Unlike\" : \"Like\"}\n * active={liked}\n * loading={likeMutation.isPending}\n * onClick={() => likeMutation.mutate()}\n * >\n * {likeCount}\n * </CountButton>\n * ```\n */\nexport function CountButton({\n icon,\n label,\n active,\n tone = \"accent\",\n disabled = false,\n loading = false,\n className,\n children,\n ...rest\n}: CountButtonProps): ReactElement {\n const isToggle = active !== undefined;\n\n return (\n <button\n type=\"button\"\n disabled={disabled || loading}\n aria-label={label}\n aria-pressed={isToggle ? active : undefined}\n aria-busy={loading || undefined}\n className={cx(styles.button, active && styles[`tone-${tone}`], className)}\n {...rest}\n >\n {/* The button's own aria-busy announces the wait; the spinner is decor. */}\n <span className={styles.glyph}>\n {loading ? <Spinner size={SPINNER_PX} label=\"\" aria-hidden=\"true\" /> : icon}\n </span>\n {children != null ? <span>{children}</span> : null}\n </button>\n );\n}\n","/* Marks a control cannot work without.\n *\n * Iconography belongs to the app — that is what IconProvider is for — but the\n * ✕ that closes a sheet and the chevron that pages a calendar are part of the\n * control, not of the app's icon set: a component whose close button waits for\n * a registry is a component that ships broken until one arrives.\n *\n * They live together because the same ✕ was written out in four components,\n * which is four places for one of them to drift a half-pixel.\n */\nimport type { ReactElement } from \"react\";\n\ninterface GlyphProps {\n /** The class of the slot the glyph sits in — it takes its size from there. */\n className?: string | undefined;\n}\n\nexport function CloseGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nexport function ChevronLeftGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path\n d=\"M10 3l-5 5 5 5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport function ChevronRightGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path\n d=\"M6 3l5 5-5 5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction Magnifier({ className, children }: GlyphProps & { children: ReactElement }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <g fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\">\n <circle cx=\"7\" cy=\"7\" r=\"4.25\" />\n <path d=\"M10.2 10.2L14 14\" />\n {children}\n </g>\n </svg>\n );\n}\n\nexport function ZoomInGlyph({ className }: GlyphProps): ReactElement {\n return (\n <Magnifier className={className}>\n <path d=\"M4.75 7h4.5M7 4.75v4.5\" />\n </Magnifier>\n );\n}\n\nexport function ZoomOutGlyph({ className }: GlyphProps): ReactElement {\n return (\n <Magnifier className={className}>\n <path d=\"M4.75 7h4.5\" />\n </Magnifier>\n );\n}\n\nexport function PlayGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path d=\"M5 3.2l7.5 4.8L5 12.8z\" fill=\"currentColor\" />\n </svg>\n );\n}\n\nexport function PauseGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path d=\"M4.5 3h2.25v10H4.5zM9.25 3h2.25v10H9.25z\" fill=\"currentColor\" />\n </svg>\n );\n}\n\n/** The speaker cone the two sound marks share. */\nfunction Speaker(): ReactElement {\n return <path d=\"M2.5 6.25h2.25L8 3.4v9.2L4.75 9.75H2.5z\" fill=\"currentColor\" stroke=\"none\" />;\n}\n\nexport function VolumeGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <g fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\">\n <Speaker />\n <path d=\"M10.5 5.75a3.25 3.25 0 010 4.5\" />\n <path d=\"M12.5 3.9a5.75 5.75 0 010 8.2\" />\n </g>\n </svg>\n );\n}\n\nexport function VolumeOffGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <g fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\">\n <Speaker />\n <path d=\"M10.75 6.25l3.5 3.5M14.25 6.25l-3.5 3.5\" />\n </g>\n </svg>\n );\n}\n\nexport function CaptionsGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <g fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\">\n <rect x=\"1.75\" y=\"3.25\" width=\"12.5\" height=\"9.5\" rx=\"2\" />\n <path d=\"M6.25 6.75a2 2 0 100 2.5M11.25 6.75a2 2 0 100 2.5\" />\n </g>\n </svg>\n );\n}\n\nexport function FullscreenGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path\n d=\"M6 2.5H2.5V6M10 2.5h3.5V6M6 13.5H2.5V10M10 13.5h3.5V10\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport function FullscreenExitGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path\n d=\"M2.5 6H6V2.5M13.5 6H10V2.5M2.5 10H6v3.5M13.5 10H10v3.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Field/Field.module.css?mds-scoped\";\nexport default {\"field\":\"mds-Field__field\",\"label\":\"mds-Field__label\",\"required\":\"mds-Field__required\",\"message\":\"mds-Field__message\",\"error\":\"mds-Field__error\"};","import type { ReactElement, ReactNode } from \"react\";\nimport { createContext, useContext, useId } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Field.module.css\";\n\nexport interface FieldContextValue {\n /** Control id — the label points here. */\n id: string;\n /** Space-joined ids of hint/error, for aria-describedby. */\n describedBy: string | undefined;\n invalid: boolean;\n}\n\nconst FieldContext = createContext<FieldContextValue | null>(null);\n\n/** Controls call this to pick up Field wiring. Null outside a Field. */\nexport function useFieldContext(): FieldContextValue | null {\n return useContext(FieldContext);\n}\n\nexport interface FieldProps {\n label: string;\n children: ReactNode;\n /** Guidance under the control. */\n hint?: string;\n /** Validation message; replaces the hint and flags the control invalid. */\n error?: string;\n required?: boolean;\n className?: string;\n}\n\n/**\n * Label + control + hint/error, wired for assistive tech. The control inside\n * (Input, Textarea, Select, …) picks up id, aria-describedby and aria-invalid\n * from context — no manual plumbing at call sites.\n *\n * ```tsx\n * <Field label=\"Email\" hint=\"Work email preferred\" error={errors.email} required>\n * <Input type=\"email\" value={email} onChange={(e) => setEmail(e.target.value)} />\n * </Field>\n * ```\n */\nexport function Field({ label, children, hint, error, required = false, className }: FieldProps): ReactElement {\n const id = useId();\n const messageId = `${id}-message`;\n const message = error ?? hint;\n\n return (\n <div className={cx(styles.field, className)}>\n <label className={styles.label} htmlFor={id}>\n {label}\n {required && (\n <span className={styles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n <FieldContext.Provider\n value={{ id, describedBy: message ? messageId : undefined, invalid: error !== undefined }}\n >\n {children}\n </FieldContext.Provider>\n {message && (\n <span\n id={messageId}\n role={error !== undefined ? \"alert\" : undefined}\n className={cx(styles.message, error !== undefined && styles.error)}\n >\n {message}\n </span>\n )}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Select/Select.module.css?mds-scoped\";\nexport default {\"wrap\":\"mds-Select__wrap\",\"select\":\"mds-Select__select\",\"size-sm\":\"mds-Select__size-sm\",\"size-md\":\"mds-Select__size-md\",\"size-lg\":\"mds-Select__size-lg\",\"chevron\":\"mds-Select__chevron\"};","import type { ReactElement, Ref, SelectHTMLAttributes } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { useFieldContext } from \"../Field/Field\";\nimport styles from \"./Select.module.css\";\n\nexport type SelectSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, \"size\"> {\n size?: SelectSize;\n ref?: Ref<HTMLSelectElement>;\n}\n\n/**\n * Native select, styled. Native = free keyboard, mobile pickers, screen\n * reader behavior; a custom popover earns its complexity only when options\n * need rich content.\n *\n * ```tsx\n * <Field label=\"Language\">\n * <Select value={lang} onChange={(e) => setLang(e.target.value)}>\n * <option value=\"de\">Deutsch</option>\n * <option value=\"en\">English</option>\n * </Select>\n * </Field>\n * ```\n */\nexport function Select({ size = \"md\", className, children, ...rest }: SelectProps): ReactElement {\n const field = useFieldContext();\n return (\n <span className={styles.wrap}>\n <select\n id={rest.id ?? field?.id}\n aria-describedby={rest[\"aria-describedby\"] ?? field?.describedBy}\n aria-invalid={rest[\"aria-invalid\"] ?? (field?.invalid || undefined)}\n className={cx(styles.select, styles[`size-${size}`], className)}\n {...rest}\n >\n {children}\n </select>\n <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\" className={styles.chevron}>\n <path d=\"M4 6l4 4 4-4\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </span>\n );\n}\n","import { createContext } from \"react\";\n\nexport interface OverlayHistory {\n /**\n * An overlay has opened. The implementation adds a history entry, and calls\n * `onPop` if the user goes back to it. Returns a dispose for when the\n * overlay closes some other way — its close button, Escape, the scrim, or\n * unmounting. The implementation owes the entry back: one left behind is a\n * back tap that does nothing.\n */\n register(onPop: () => void): () => void;\n}\n\n/**\n * On a phone, back is also the dismiss gesture: an open overlay that ignores\n * it costs the user the screen underneath instead. The library owns *when* an\n * overlay opens and closes; the app owns the history mechanism, because a raw\n * `history.pushState` from a library corrupts a router's own bookkeeping\n * (React Router keeps its index in `history.state`).\n *\n * Null wherever no app has supplied one — Storybook, a unit test, a consumer\n * that has not opted in. Overlays go on working; they just do not answer back.\n *\n * `useOverlay` registers every open overlay, so Modal, Sheet and\n * ConfirmDialog are covered with no per-call-site wiring:\n *\n * ```tsx\n * // App root — e.g. backed by the app router:\n * const overlayHistory = useMemo<OverlayHistory>(() => ({\n * register(onPop) {\n * pushOverlayEntry(onPop); // app-owned, via the router\n * return () => popOverlayEntry(); // give the entry back\n * },\n * }), []);\n *\n * <OverlayHistoryContext.Provider value={overlayHistory}>\n * <App />\n * </OverlayHistoryContext.Provider>\n * ```\n */\nexport const OverlayHistoryContext = createContext<OverlayHistory | null>(null);\n","import { useContext, useEffect, useRef } from \"react\";\nimport type { RefObject } from \"react\";\nimport { OverlayHistoryContext } from \"./overlayHistory\";\n\nexport interface UseOverlayOptions {\n open: boolean;\n onClose: () => void;\n /**\n * Freeze the page behind the surface. Default true.\n *\n * False for anchored surfaces: a popover is pinned to a trigger that scrolls\n * with the page, so locking the page would strand it over content the reader\n * can no longer reach, and locking it *and* letting the popover follow the\n * anchor are the same gesture answered two ways.\n */\n lockScroll?: boolean;\n}\n\nconst FOCUSABLE =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Shared modal-surface behaviour: focus capture and restore, Escape to\n * close, Tab cycling inside the panel, body scroll lock. Attach the\n * returned ref to the dialog element (it needs tabIndex={-1}).\n *\n * Popover uses it too, with `lockScroll: false`; where it sits on the screen\n * is a separate question, answered by useAnchoredPosition.\n */\nexport function useOverlay<T extends HTMLElement>(options: UseOverlayOptions): RefObject<T | null> {\n const ref = useRef<T>(null);\n const { open, onClose, lockScroll = true } = options;\n const close = useRef(onClose);\n useEffect(() => {\n close.current = onClose;\n }, [onClose]);\n\n /* Back-button contract: an app that supplies OverlayHistory gets every open\n overlay registered, so back dismisses the innermost one instead of leaving\n the screen underneath. Null context (Storybook, tests, non-opted apps) is\n a no-op. The register/dispose pair keeps history balanced either way. */\n const overlayHistory = useContext(OverlayHistoryContext);\n useEffect(() => {\n if (!open || !overlayHistory) return;\n return overlayHistory.register(() => close.current());\n }, [open, overlayHistory]);\n\n useEffect(() => {\n if (!open) return;\n const panel = ref.current;\n const previous = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n panel?.focus();\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.stopPropagation();\n close.current();\n return;\n }\n if (event.key !== \"Tab\" || !panel) return;\n const focusable = [...panel.querySelectorAll<HTMLElement>(FOCUSABLE)];\n if (focusable.length === 0) {\n event.preventDefault();\n panel.focus();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement;\n if (event.shiftKey && (active === first || active === panel)) {\n event.preventDefault();\n last?.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first?.focus();\n }\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n const bodyOverflow = document.body.style.overflow;\n if (lockScroll) document.body.style.overflow = \"hidden\";\n return () => {\n document.removeEventListener(\"keydown\", onKeyDown);\n if (lockScroll) document.body.style.overflow = bodyOverflow;\n previous?.focus();\n };\n }, [open, lockScroll]);\n\n return ref;\n}\n","import { useEffect, useState } from \"react\";\n\nexport interface Presence {\n /** Keep the element in the DOM (true during exit animation). */\n mounted: boolean;\n /** Drive the visual state — false on the frame it enters and during exit. */\n visible: boolean;\n}\n\n/**\n * Enter/exit animation helper. An element inserted already carrying its open\n * style has nothing to transition from, so `visible` stays false for the frame\n * the closed style is painted in and flips on the next one. `mounted` lags\n * `open` by `durationMs` on close so the exit transition can finish.\n */\nexport function usePresence(open: boolean, durationMs: number): Presence {\n const [mounted, setMounted] = useState(open);\n const [visible, setVisible] = useState(false);\n\n // Syncing on the prop belongs in render, not an effect (\"adjusting state when\n // props change\" pattern); the effects own only the frame and the timer.\n if (open && !mounted) setMounted(true);\n if (!open && visible) setVisible(false);\n\n useEffect(() => {\n if (!open) return;\n // Two frames, not one: the callback of the first runs before anything has\n // been painted, so flipping there is still a jump.\n let second = 0;\n const first = requestAnimationFrame(() => {\n second = requestAnimationFrame(() => setVisible(true));\n });\n return () => {\n cancelAnimationFrame(first);\n cancelAnimationFrame(second);\n };\n }, [open]);\n\n useEffect(() => {\n if (open) return;\n const timer = setTimeout(() => setMounted(false), durationMs);\n return () => clearTimeout(timer);\n }, [open, durationMs]);\n\n return { mounted: open || mounted, visible };\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/internal/Overlay.module.css?mds-scoped\";\nexport default {\"scrim\":\"mds-Overlay__scrim\",\"variant-modal\":\"mds-Overlay__variant-modal\",\"variant-sheet\":\"mds-Overlay__variant-sheet\",\"variant-lightbox\":\"mds-Overlay__variant-lightbox\"};","import { createPortal } from \"react-dom\";\nimport type { ReactNode } from \"react\";\nimport { cx } from \"./cx\";\nimport { useOverlay } from \"../hooks/useOverlay\";\nimport { usePresence } from \"../hooks/usePresence\";\nimport styles from \"./Overlay.module.css\";\n\n/** Matches --mds-dur-base; usePresence needs the number in JS. */\nexport const OVERLAY_EXIT_MS = 200;\n\n/** Matches --mds-dur-slow. A sheet travels its own height where a modal only\n fades, so it is on the slower clock — unmounting it on the fade's clock cut\n the slide off partway down. */\nexport const SHEET_EXIT_MS = 320;\n\nexport interface OverlayProps {\n open: boolean;\n onClose: () => void;\n /** Accessible name of the dialog. */\n label: string;\n variant: \"modal\" | \"sheet\" | \"lightbox\";\n /** alertdialog interrupts — confirms use it so AT announces the question. */\n role?: \"dialog\" | \"alertdialog\";\n /** Scrim click dismisses. Confirmations turn this off. */\n closeOnScrimClick: boolean;\n panelClassName: string | undefined;\n children: ReactNode;\n}\n\n/**\n * Internal shell shared by Modal, Sheet and Lightbox: portal, scrim, dialog\n * semantics, useOverlay behaviour, exit-animation presence. Not exported\n * from the package.\n */\nexport function Overlay({ open, onClose, label, variant, role = \"dialog\", closeOnScrimClick, panelClassName, children }: OverlayProps) {\n const { mounted, visible } = usePresence(open, variant === \"sheet\" ? SHEET_EXIT_MS : OVERLAY_EXIT_MS);\n const ref = useOverlay<HTMLDivElement>({ open, onClose });\n\n if (!mounted) return null;\n\n return createPortal(\n <div\n className={cx(styles.scrim, styles[`variant-${variant}`])}\n data-open={visible || undefined}\n data-testid=\"mds-scrim\"\n onClick={closeOnScrimClick ? onClose : undefined}\n >\n <div\n ref={ref}\n role={role}\n aria-modal=\"true\"\n aria-label={label}\n tabIndex={-1}\n className={panelClassName}\n data-open={visible || undefined}\n onClick={(event) => event.stopPropagation()}\n >\n {children}\n </div>\n </div>,\n document.body,\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Sheet/Sheet.module.css?mds-scoped\";\nexport default {\"panel\":\"mds-Sheet__panel\",\"header\":\"mds-Sheet__header\",\"body\":\"mds-Sheet__body\",\"footer\":\"mds-Sheet__footer\",\"headerTitle\":\"mds-Sheet__headerTitle\",\"close\":\"mds-Sheet__close\",\"closeGlyph\":\"mds-Sheet__closeGlyph\"};","import type { ReactNode } from \"react\";\nimport { Overlay } from \"../../internal/Overlay\";\nimport { CloseGlyph } from \"../../internal/glyphs\";\nimport styles from \"./Sheet.module.css\";\n\nexport interface SheetProps {\n open: boolean;\n onClose: () => void;\n /** Accessible name of the dialog. */\n label: string;\n /** Scrim click dismisses. Default true. */\n closeOnScrimClick?: boolean;\n children: ReactNode;\n}\n\n/**\n * Bottom sheet. Same composition and dismissal model as Modal:\n *\n * ```tsx\n * <Sheet open={open} onClose={() => setOpen(false)} label=\"Filters\">\n * <SheetHeader>Filters</SheetHeader>\n * <SheetBody>…</SheetBody>\n * <SheetFooter><Button onClick={apply}>Apply</Button></SheetFooter>\n * </Sheet>\n * ```\n */\nexport function Sheet({ open, onClose, label, closeOnScrimClick = true, children }: SheetProps) {\n return (\n <Overlay\n open={open}\n onClose={onClose}\n label={label}\n variant=\"sheet\"\n closeOnScrimClick={closeOnScrimClick}\n panelClassName={styles.panel}\n >\n {children}\n </Overlay>\n );\n}\n\nexport type SheetHeaderProps = { children: ReactNode } & (\n | {\n /** Renders a close button after the title. Wire it to the sheet's own onClose. */\n onClose: () => void;\n /** Accessible name of the close button (localise). */\n closeLabel: string;\n }\n | { onClose?: undefined; closeLabel?: undefined }\n);\n\nexport function SheetHeader({ children, onClose, closeLabel }: SheetHeaderProps) {\n return (\n <div className={styles.header}>\n {/* The panel's title is its heading: the one landmark a reader jumping\n by heading inside a tall sheet has to go by. */}\n <h2 className={styles.headerTitle}>{children}</h2>\n {onClose !== undefined && (\n <button type=\"button\" aria-label={closeLabel} className={styles.close} onClick={onClose}>\n <CloseGlyph className={styles.closeGlyph} />\n </button>\n )}\n </div>\n );\n}\n\nexport function SheetBody({ children }: { children: ReactNode }) {\n return <div className={styles.body}>{children}</div>;\n}\n\nexport function SheetFooter({ children }: { children: ReactNode }) {\n return <div className={styles.footer}>{children}</div>;\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/DateTimePicker/DateTimePicker.module.css?mds-scoped\";\nexport default {\"trigger\":\"mds-DateTimePicker__trigger\",\"hasValue\":\"mds-DateTimePicker__hasValue\",\"triggerLabel\":\"mds-DateTimePicker__triggerLabel\",\"glyph\":\"mds-DateTimePicker__glyph\",\"timeRow\":\"mds-DateTimePicker__timeRow\",\"grow\":\"mds-DateTimePicker__grow\",\"meridiem\":\"mds-DateTimePicker__meridiem\",\"colon\":\"mds-DateTimePicker__colon\",\"calendarHeader\":\"mds-DateTimePicker__calendarHeader\",\"monthLabel\":\"mds-DateTimePicker__monthLabel\",\"weekdays\":\"mds-DateTimePicker__weekdays\",\"weekday\":\"mds-DateTimePicker__weekday\",\"grid\":\"mds-DateTimePicker__grid\",\"day\":\"mds-DateTimePicker__day\",\"today\":\"mds-DateTimePicker__today\",\"selected\":\"mds-DateTimePicker__selected\",\"outside\":\"mds-DateTimePicker__outside\"};","import type { KeyboardEvent, ReactElement } from \"react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { ChevronLeftGlyph, ChevronRightGlyph } from \"../../internal/glyphs\";\nimport { useFieldContext } from \"../Field/Field\";\nimport { Button } from \"../Button/Button\";\nimport { Select } from \"../Select/Select\";\nimport { Sheet, SheetBody, SheetFooter, SheetHeader } from \"../Sheet/Sheet\";\nimport styles from \"./DateTimePicker.module.css\";\n\nexport interface DateTimePickerLabels {\n /** Accessible name of the picker dialog. */\n dialog: string;\n previousMonth: string;\n nextMonth: string;\n today: string;\n done: string;\n hour: string;\n minute: string;\n dayPeriod: string;\n}\n\nexport interface DateTimePickerProps {\n /** Current value as an ISO 8601 string. */\n value?: string | undefined;\n /** Fires with the combined ISO string when the user confirms. */\n onChange: (iso: string) => void;\n /** Shown on the trigger when nothing is selected. Nothing is shown without\n it: the component ships no words of its own. */\n placeholder?: string | undefined;\n /** Earliest selectable moment as an ISO string. Default: now. */\n min?: string | undefined;\n /** Minute granularity. Default 5; use 30 for :00/:30 only. */\n minuteStep?: number | undefined;\n disabled?: boolean | undefined;\n /** Applied to the trigger button so a `<label htmlFor>` can point at it. */\n id?: string | undefined;\n /** Field name for the trigger, e.g. \"Starts\". Announced alongside the value. */\n \"aria-label\"?: string | undefined;\n /** BCP 47 tag for names, week start and hour cycle. Default: runtime locale. */\n locale?: string | undefined;\n /** Every string the picker says. Required and whole rather than a partial\n over English defaults: a default is a word no translation file reaches,\n and a partial makes the one nobody filled in look deliberate. */\n labels: DateTimePickerLabels;\n}\n\n/* --- Intl-derived locale facts, computed once per locale ------------------ */\n\ninterface LocaleData {\n /** JS day index (0 = Sunday) the week starts on. */\n firstDay: number;\n /** Weekday column headers, ordered from firstDay. */\n weekdays: string[];\n /** 12-hour clock? */\n hour12: boolean;\n /** Localized day-period labels, e.g. [\"AM\", \"PM\"]. */\n dayPeriods: [string, string];\n monthTitle: Intl.DateTimeFormat;\n dayLabel: Intl.DateTimeFormat;\n full: Intl.DateTimeFormat;\n}\n\n/* getWeekInfo is not in the TS lib yet; some engines expose it as an accessor. */\ninterface WeekInfoLocale extends Intl.Locale {\n getWeekInfo?: () => { firstDay: number };\n weekInfo?: { firstDay: number };\n}\n\nfunction localeData(locale: string | undefined): LocaleData {\n const resolved = new Intl.DateTimeFormat(locale).resolvedOptions().locale;\n\n /* Spec counts 1 = Monday … 7 = Sunday; JS Date counts 0 = Sunday. Engines\n without weekInfo fall back to Monday — most of the world's week start. */\n const intlLocale = new Intl.Locale(resolved) as WeekInfoLocale;\n const weekInfo = intlLocale.getWeekInfo?.() ?? intlLocale.weekInfo;\n const firstDay = (weekInfo?.firstDay ?? 1) % 7;\n\n /* 2021-08-01 was a Sunday; format a known week to get the headers. */\n const weekdayFmt = new Intl.DateTimeFormat(resolved, { weekday: \"short\", timeZone: \"UTC\" });\n const weekdays = Array.from({ length: 7 }, (_, i) =>\n weekdayFmt.format(new Date(Date.UTC(2021, 7, 1 + ((firstDay + i) % 7)))),\n );\n\n const hourFmt = new Intl.DateTimeFormat(resolved, { hour: \"numeric\" });\n const { hourCycle } = hourFmt.resolvedOptions();\n const hour12 = hourCycle === \"h11\" || hourCycle === \"h12\";\n\n const periodOf = (hour: number): string =>\n new Intl.DateTimeFormat(resolved, { hour: \"numeric\", hour12: true })\n .formatToParts(new Date(2021, 0, 1, hour))\n .find((part) => part.type === \"dayPeriod\")?.value ?? (hour < 12 ? \"AM\" : \"PM\");\n\n return {\n firstDay,\n weekdays,\n hour12,\n dayPeriods: [periodOf(9), periodOf(21)],\n monthTitle: new Intl.DateTimeFormat(resolved, { month: \"long\", year: \"numeric\" }),\n dayLabel: new Intl.DateTimeFormat(resolved, { month: \"long\", day: \"numeric\", year: \"numeric\" }),\n full: new Intl.DateTimeFormat(resolved, {\n weekday: \"short\",\n month: \"short\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"2-digit\",\n }),\n };\n}\n\n/* --- date arithmetic ------------------------------------------------------ */\n\nfunction startOfDay(d: Date): number {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();\n}\n\nfunction snapMinutes(d: Date, step: number): Date {\n const out = new Date(d);\n out.setMinutes(Math.round(out.getMinutes() / step) * step, 0, 0);\n return out;\n}\n\nfunction addDays(d: Date, n: number): Date {\n const o = new Date(d);\n o.setDate(o.getDate() + n);\n return o;\n}\n\nfunction addMonths(d: Date, n: number): Date {\n const o = new Date(d);\n o.setMonth(o.getMonth() + n);\n return o;\n}\n\nfunction minuteOptions(step: number): number[] {\n const s = Math.max(1, Math.min(60, Math.floor(step)));\n return Array.from({ length: Math.floor(60 / s) }, (_, i) => i * s);\n}\n\nfunction pad2(n: number): string {\n return String(n).padStart(2, \"0\");\n}\n\n/* --- glyphs this picker alone draws; the shared ones are in internal/glyphs --- */\n\nconst calendarGlyph = (\n <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\" className={styles.glyph}>\n <rect x=\"2.5\" y=\"3.5\" width=\"11\" height=\"10\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M2.5 6.5h11M5.5 2v2.5M10.5 2v2.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n);\nconst clockGlyph = (\n <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\" className={styles.glyph}>\n <circle cx=\"8\" cy=\"8\" r=\"5.75\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 5v3.25l2 1.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n/**\n * Mobile-first date + time picker. A trigger styled like Input opens a bottom\n * sheet with a month calendar (roving-focus grid, arrow keys move the day)\n * and native Select time controls. Controlled via `value` (ISO); emits the\n * combined ISO string on confirm. All names, the week start and the 12/24-hour\n * clock come from `Intl` for the given locale.\n *\n * ```tsx\n * <Field label=\"Starts\">\n * <DateTimePicker\n * value={startsAt}\n * onChange={setStartsAt}\n * labels={t(\"picker\", { returnObjects: true })}\n * min={new Date().toISOString()}\n * minuteStep={30}\n * locale={i18n.language}\n * />\n * </Field>\n * ```\n */\nexport function DateTimePicker({\n value,\n onChange,\n placeholder,\n min,\n minuteStep = 5,\n disabled = false,\n id,\n \"aria-label\": ariaLabel,\n locale,\n labels: text,\n}: DateTimePickerProps): ReactElement {\n /* Inside a Field, claim its generated control id and message wiring, the\n same way Input/Select/Textarea do — the field's <label htmlFor> points at\n the control id, and without it the label names nothing. */\n const field = useFieldContext();\n const intl = useMemo(() => localeData(locale), [locale]);\n\n const [open, setOpen] = useState(false);\n const [draft, setDraft] = useState<Date>(() => new Date());\n const [view, setView] = useState<{ y: number; m: number }>(() => {\n const d = new Date();\n return { y: d.getFullYear(), m: d.getMonth() };\n });\n /* The calendar grid is a single tab stop: `focusedDay` is the one day that\n carries tabIndex 0; arrow keys move it (roving focus), crossing months. */\n const [focusedDay, setFocusedDay] = useState<Date>(() => new Date());\n const dayRefs = useRef<Map<number, HTMLButtonElement>>(new Map());\n const pendingFocusRef = useRef(false);\n\n const minDate = min ? new Date(min) : new Date();\n const minStart = startOfDay(minDate);\n\n /* Re-seed the draft + visible month from the current value each time the\n panel opens. When `value` precedes `min` the roving tab stop clamps to\n `min`, and the view must follow it or no day in the grid is focusable. */\n function openPicker(): void {\n const base = snapMinutes(value ? new Date(value) : new Date(), minuteStep);\n setDraft(base);\n const start = startOfDay(base) >= minStart ? base : new Date(minStart);\n setView({ y: start.getFullYear(), m: start.getMonth() });\n setFocusedDay(start);\n setOpen(true);\n }\n\n /* Move DOM focus onto the roving target after an arrow-key move (only then —\n never steal focus when the panel first opens). */\n useEffect(() => {\n if (!pendingFocusRef.current) return;\n pendingFocusRef.current = false;\n dayRefs.current.get(startOfDay(focusedDay))?.focus();\n }, [focusedDay, view]);\n\n const h24 = draft.getHours();\n const h12 = h24 % 12 || 12;\n const isPM = h24 >= 12;\n\n function setHour(v: string): void {\n const nd = new Date(draft);\n nd.setHours(intl.hour12 ? (Number(v) % 12) + (isPM ? 12 : 0) : Number(v));\n setDraft(nd);\n }\n function setMinute(v: string): void {\n const nd = new Date(draft);\n nd.setMinutes(Number(v), 0, 0);\n setDraft(nd);\n }\n function setMeridiem(v: string): void {\n const nd = new Date(draft);\n nd.setHours((h12 % 12) + (v === \"pm\" ? 12 : 0));\n setDraft(nd);\n }\n function pickDay(day: number): void {\n const nd = new Date(draft);\n nd.setFullYear(view.y, view.m, day);\n setDraft(nd);\n }\n /* First selectable day in a month — the 1st, or `min` when it falls\n mid-month. Keeps the roving tab stop pointed at an enabled, in-view day. */\n function firstFocusableInView(y: number, m: number): Date {\n const monthStart = new Date(y, m, 1);\n return startOfDay(monthStart) >= minStart ? monthStart : new Date(minStart);\n }\n function shiftMonth(delta: number): void {\n let m = view.m + delta;\n let y = view.y;\n if (m < 0) { m = 11; y -= 1; }\n if (m > 11) { m = 0; y += 1; }\n setView({ y, m });\n setFocusedDay(firstFocusableInView(y, m));\n }\n function goToday(): void {\n const t = new Date();\n setView({ y: t.getFullYear(), m: t.getMonth() });\n setFocusedDay(startOfDay(t) >= minStart ? t : new Date(minStart));\n }\n /* Move the roving focus to `next` (clamped to >= min), following it across a\n month boundary, then focus the target cell once it renders. */\n function focusDate(next: Date): void {\n if (startOfDay(next) < minStart) return;\n pendingFocusRef.current = true;\n if (next.getMonth() !== view.m || next.getFullYear() !== view.y) {\n setView({ y: next.getFullYear(), m: next.getMonth() });\n }\n setFocusedDay(next);\n }\n function onDayKeyDown(e: KeyboardEvent<HTMLButtonElement>, cell: Date): void {\n /* Home/End go to the locale's start/end of week, not Sunday/Saturday. */\n const weekOffset = (cell.getDay() - intl.firstDay + 7) % 7;\n switch (e.key) {\n case \"ArrowLeft\": e.preventDefault(); focusDate(addDays(cell, -1)); break;\n case \"ArrowRight\": e.preventDefault(); focusDate(addDays(cell, 1)); break;\n case \"ArrowUp\": e.preventDefault(); focusDate(addDays(cell, -7)); break;\n case \"ArrowDown\": e.preventDefault(); focusDate(addDays(cell, 7)); break;\n case \"Home\": e.preventDefault(); focusDate(addDays(cell, -weekOffset)); break;\n case \"End\": e.preventDefault(); focusDate(addDays(cell, 6 - weekOffset)); break;\n case \"PageUp\": e.preventDefault(); focusDate(addMonths(cell, -1)); break;\n case \"PageDown\": e.preventDefault(); focusDate(addMonths(cell, 1)); break;\n case \"Enter\":\n case \" \":\n e.preventDefault();\n pickDay(cell.getDate());\n break;\n default: break;\n }\n }\n function confirm(): void {\n onChange(draft.toISOString());\n setOpen(false);\n }\n\n const first = new Date(view.y, view.m, 1);\n const startWeekday = (first.getDay() - intl.firstDay + 7) % 7;\n const daysInMonth = new Date(view.y, view.m + 1, 0).getDate();\n const prevDisabled =\n view.y < minDate.getFullYear() || (view.y === minDate.getFullYear() && view.m <= minDate.getMonth());\n const todayStart = startOfDay(new Date());\n const draftStart = startOfDay(draft);\n\n /* Render the month's natural span of weeks: trailing days of the previous\n month, in-month days 1..N, then enough of the next month to complete the\n last week (4/5/6 rows). Neighbour-month days are dimmed + non-interactive;\n the grid reserves 6 rows of height so the panel never jumps. */\n const spanCells = Math.ceil((startWeekday + daysInMonth) / 7) * 7;\n const dayCells = Array.from({ length: spanCells }, (_, i) => {\n const cell = new Date(view.y, view.m, 1 - startWeekday + i);\n const inMonth = cell.getMonth() === view.m && cell.getFullYear() === view.y;\n const cellStart = cell.getTime();\n const isDisabled = !inMonth || cellStart < minStart;\n const isSelected = inMonth && cellStart === draftStart;\n const isToday = inMonth && cellStart === todayStart;\n const isFocusTarget = inMonth && !isDisabled && cellStart === startOfDay(focusedDay);\n return (\n <button\n key={`c-${i}`}\n type=\"button\"\n disabled={isDisabled}\n /* Single tab stop: only the roving-focus day is tabbable; the rest are\n reached with the arrow keys (WCAG 2.1.1 / grid pattern). */\n tabIndex={isFocusTarget ? 0 : -1}\n ref={\n inMonth && !isDisabled\n ? (el): void => {\n if (el) dayRefs.current.set(cellStart, el);\n else dayRefs.current.delete(cellStart);\n }\n : undefined\n }\n aria-hidden={inMonth ? undefined : true}\n aria-label={intl.dayLabel.format(cell)}\n aria-pressed={isSelected}\n onClick={inMonth ? () => pickDay(cell.getDate()) : undefined}\n onKeyDown={inMonth && !isDisabled ? (e) => onDayKeyDown(e, cell) : undefined}\n className={cx(styles.day, isToday && styles.today, isSelected && styles.selected, !inMonth && styles.outside)}\n >\n {cell.getDate()}\n </button>\n );\n });\n\n /* The trigger shows the value, or the placeholder, or nothing: the\n placeholder is optional, and interpolating it while unset would print\n \"undefined\" into the accessible name. */\n const shown = value ? intl.full.format(new Date(value)) : placeholder;\n\n return (\n <>\n <button\n id={id ?? field?.id}\n type=\"button\"\n disabled={disabled}\n aria-describedby={field?.describedBy}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n /* Announce the field name (when given) alongside the current value. */\n aria-label={ariaLabel === undefined ? undefined : [ariaLabel, shown].filter(Boolean).join(\": \")}\n onClick={openPicker}\n className={cx(styles.trigger, value && styles.hasValue)}\n >\n {calendarGlyph}\n <span className={styles.triggerLabel}>{shown}</span>\n </button>\n\n <Sheet open={open} onClose={() => setOpen(false)} label={ariaLabel ?? text.dialog}>\n <SheetHeader>{intl.full.format(draft)}</SheetHeader>\n <SheetBody>\n <div className={styles.timeRow}>\n {clockGlyph}\n {intl.hour12 ? (\n <>\n <Select aria-label={text.hour} value={String(h12)} onChange={(e) => setHour(e.target.value)} className={styles.grow}>\n {Array.from({ length: 12 }, (_, i) => (\n <option key={i + 1} value={String(i + 1)}>\n {i + 1}\n </option>\n ))}\n </Select>\n <span className={styles.colon} aria-hidden=\"true\">:</span>\n <Select aria-label={text.minute} value={String(draft.getMinutes())} onChange={(e) => setMinute(e.target.value)} className={styles.grow}>\n {minuteOptions(minuteStep).map((m) => (\n <option key={m} value={String(m)}>\n {pad2(m)}\n </option>\n ))}\n </Select>\n <Select aria-label={text.dayPeriod} value={isPM ? \"pm\" : \"am\"} onChange={(e) => setMeridiem(e.target.value)} className={styles.meridiem}>\n <option value=\"am\">{intl.dayPeriods[0]}</option>\n <option value=\"pm\">{intl.dayPeriods[1]}</option>\n </Select>\n </>\n ) : (\n <>\n <Select aria-label={text.hour} value={String(h24)} onChange={(e) => setHour(e.target.value)} className={styles.grow}>\n {Array.from({ length: 24 }, (_, i) => (\n <option key={i} value={String(i)}>\n {pad2(i)}\n </option>\n ))}\n </Select>\n <span className={styles.colon} aria-hidden=\"true\">:</span>\n <Select aria-label={text.minute} value={String(draft.getMinutes())} onChange={(e) => setMinute(e.target.value)} className={styles.grow}>\n {minuteOptions(minuteStep).map((m) => (\n <option key={m} value={String(m)}>\n {pad2(m)}\n </option>\n ))}\n </Select>\n </>\n )}\n </div>\n\n <div role=\"group\" aria-label={intl.monthTitle.format(first)}>\n <div className={styles.calendarHeader}>\n <Button\n iconOnly\n aria-label={text.previousMonth}\n variant=\"ghost\"\n size=\"sm\"\n disabled={prevDisabled}\n onClick={() => shiftMonth(-1)}\n >\n <ChevronLeftGlyph className={styles.glyph} />\n </Button>\n <span className={styles.monthLabel}>{intl.monthTitle.format(first)}</span>\n <Button iconOnly aria-label={text.nextMonth} variant=\"ghost\" size=\"sm\" onClick={() => shiftMonth(1)}>\n <ChevronRightGlyph className={styles.glyph} />\n </Button>\n </div>\n <div className={styles.weekdays}>\n {intl.weekdays.map((w, i) => (\n <span key={`wd-${i}`} aria-hidden=\"true\" className={styles.weekday}>\n {w}\n </span>\n ))}\n </div>\n <div className={styles.grid}>{dayCells}</div>\n </div>\n </SheetBody>\n <SheetFooter>\n <Button variant=\"ghost\" onClick={goToday}>\n {text.today}\n </Button>\n <Button variant=\"primary\" onClick={confirm}>\n {text.done}\n </Button>\n </SheetFooter>\n </Sheet>\n </>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tag/Tag.module.css?mds-scoped\";\nexport default {\"tag\":\"mds-Tag__tag\",\"tone-accent\":\"mds-Tag__tone-accent\",\"remove\":\"mds-Tag__remove mds-hit-area__hitArea\",\"removeGlyph\":\"mds-Tag__removeGlyph\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { CloseGlyph } from \"../../internal/glyphs\";\nimport styles from \"./Tag.module.css\";\n\nexport type TagTone = \"neutral\" | \"accent\";\n\nexport type TagProps = HTMLAttributes<HTMLSpanElement> & {\n children: ReactNode;\n tone?: TagTone;\n ref?: Ref<HTMLSpanElement>;\n} & (\n | {\n /** Renders a ✕ button after the content. */\n onRemove: () => void;\n /** Names that button, e.g. \"Remove Beginner\". Required alongside\n `onRemove`: the glyph says nothing, and only the app knows how its\n language builds the sentence. */\n removeLabel: string;\n }\n | { onRemove?: undefined; removeLabel?: undefined }\n );\n\n/**\n * Content label chip — categories, filters, topics.\n *\n * ```tsx\n * <Tag>Design</Tag>\n * <Tag tone=\"accent\" onRemove={() => remove(id)} removeLabel=\"Remove Beginner\">Beginner</Tag>\n * ```\n */\nexport function Tag({\n children,\n tone = \"neutral\",\n onRemove,\n removeLabel,\n className,\n ...rest\n}: TagProps): ReactElement {\n return (\n <span className={cx(styles.tag, styles[`tone-${tone}`], className)} {...rest}>\n {children}\n {onRemove !== undefined && (\n <button\n type=\"button\"\n className={styles.remove}\n aria-label={removeLabel}\n onClick={onRemove}\n >\n <CloseGlyph className={styles.removeGlyph} />\n </button>\n )}\n </span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Divider/Divider.module.css?mds-scoped\";\nexport default {\"divider\":\"mds-Divider__divider\",\"horizontal\":\"mds-Divider__horizontal\",\"vertical\":\"mds-Divider__vertical\"};","import type { HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Divider.module.css\";\n\nexport interface DividerProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: \"horizontal\" | \"vertical\";\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * Visual separator. Semantic separator role via <hr>-equivalent div.\n *\n * ```tsx\n * <Divider />\n * <Divider orientation=\"vertical\" />\n * ```\n */\nexport function Divider({ orientation = \"horizontal\", className, ...rest }: DividerProps): ReactElement {\n return (\n <div\n role=\"separator\"\n aria-orientation={orientation === \"vertical\" ? \"vertical\" : undefined}\n className={cx(styles.divider, styles[orientation], className)}\n {...rest}\n />\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/VisuallyHidden/VisuallyHidden.module.css?mds-scoped\";\nexport default {\"hidden\":\"mds-VisuallyHidden__hidden\"};","import type { HTMLAttributes, JSX, ReactElement } from \"react\";\nimport { createElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./VisuallyHidden.module.css\";\n\nexport interface VisuallyHiddenProps extends HTMLAttributes<HTMLElement> {\n /** Element override when the markup needs a particular tag — a page's h1, a\n table's thead. Default \"span\". */\n as?: keyof JSX.IntrinsicElements;\n}\n\n/**\n * Text for screen readers and not for eyes.\n *\n * The design does not always draw what the markup owes: a screen whose title is\n * the tab bar underneath it still needs an h1, and a table whose columns are\n * obvious to look at still needs a thead. Both go here rather than into a\n * one-off class in the app.\n *\n * ```tsx\n * <VisuallyHidden as=\"h1\">Discover</VisuallyHidden>\n * <VisuallyHidden role=\"status\" aria-live=\"polite\">{message}</VisuallyHidden>\n * ```\n */\nexport function VisuallyHidden({ as = \"span\", className, ...rest }: VisuallyHiddenProps): ReactElement {\n return createElement(as, { className: cx(styles.hidden, className), ...rest });\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Skeleton/Skeleton.module.css?mds-scoped\";\nexport default {\"skeleton\":\"mds-Skeleton__skeleton\",\"pulse\":\"mds-Skeleton__pulse\",\"lines\":\"mds-Skeleton__lines\",\"variant-text\":\"mds-Skeleton__variant-text\",\"variant-rect\":\"mds-Skeleton__variant-rect\",\"variant-circle\":\"mds-Skeleton__variant-circle\"};","import type { CSSProperties, HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Skeleton.module.css\";\n\nexport type SkeletonVariant = \"text\" | \"rect\" | \"circle\";\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: SkeletonVariant;\n /** Any CSS length. Text defaults to full width, one line tall. */\n width?: string;\n height?: string;\n /** How many lines of text to stand in for. Above one, the last is cut short\n — a paragraph ends mid-line, and a block of full-width bars reads as a\n table. Text only: a rect or a circle is one shape however many lines of\n copy it replaces. */\n lines?: number;\n ref?: Ref<HTMLSpanElement>;\n}\n\n/* Where a paragraph's last line tends to land. */\nconst LAST_LINE = \"62%\";\n\n/**\n * Loading placeholder. aria-hidden — the loading announcement belongs to the\n * region (aria-busy), not to each shimmering box.\n *\n * ```tsx\n * <div aria-busy={loading}>\n * {loading ? (\n * <Stack gap=\"tight\">\n * <Skeleton width=\"40%\" />\n * <Skeleton />\n * <Skeleton lines={3} />\n * <Skeleton variant=\"rect\" height=\"8rem\" />\n * </Stack>\n * ) : (\n * content\n * )}\n * </div>\n * ```\n */\nexport function Skeleton({\n variant = \"text\",\n width,\n height,\n lines = 1,\n className,\n style,\n ...rest\n}: SkeletonProps): ReactElement {\n const vars = {\n ...(width ? { \"--skeleton-w\": width } : {}),\n ...(height ? { \"--skeleton-h\": height } : {}),\n } as CSSProperties;\n const box = cx(styles.skeleton, styles[`variant-${variant}`], className);\n\n if (variant === \"text\" && lines > 1) {\n return (\n <span aria-hidden=\"true\" className={styles.lines} style={style} {...rest}>\n {Array.from({ length: lines }, (_, line) => (\n <span\n key={line}\n className={box}\n style={line === lines - 1 ? { ...vars, \"--skeleton-w\": LAST_LINE } as CSSProperties : vars}\n />\n ))}\n </span>\n );\n }\n\n return <span aria-hidden=\"true\" className={box} style={{ ...vars, ...style }} {...rest} />;\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ProgressBar/ProgressBar.module.css?mds-scoped\";\nexport default {\"track\":\"mds-ProgressBar__track\",\"fill\":\"mds-ProgressBar__fill\",\"indeterminate\":\"mds-ProgressBar__indeterminate\",\"slide\":\"mds-ProgressBar__slide\"};","import type { CSSProperties, HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./ProgressBar.module.css\";\n\nexport interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {\n /** 0–100; clamped. Ignored when indeterminate. */\n value?: number;\n /** Accessible name — required. A bare bar announces nothing useful. */\n label: string;\n /** What the bar has got through, in words — \"2.1 MB of 5 MB\". Read instead\n of the percentage, which is not always what the number means. */\n valueText?: string;\n indeterminate?: boolean;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * Determinate or indeterminate progress track.\n *\n * ```tsx\n * <ProgressBar label=\"Upload\" value={64} />\n * <ProgressBar label=\"Syncing\" indeterminate />\n * ```\n */\nexport function ProgressBar({\n value = 0,\n label,\n valueText,\n indeterminate = false,\n className,\n style,\n ...rest\n}: ProgressBarProps): ReactElement {\n const clamped = Math.min(100, Math.max(0, value));\n return (\n <div\n role=\"progressbar\"\n aria-label={label}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={indeterminate ? undefined : clamped}\n aria-valuetext={valueText}\n className={cx(styles.track, indeterminate && styles.indeterminate, className)}\n style={{ ...( { \"--progress\": `${clamped}%` } as CSSProperties), ...style }}\n {...rest}\n >\n <span className={styles.fill} />\n </div>\n );\n}\n","import type { Ref, RefObject } from \"react\";\n\n/**\n * One node, two holders. React hands the element to a single ref, so a\n * component that needs the node for itself — to set a DOM property no\n * attribute carries, to measure it — has to pass it on to the caller's ref\n * as well, and both kinds of ref have to be honoured.\n */\nexport function forkRef<T>(own: RefObject<T | null>, given: Ref<T> | undefined) {\n return (node: T | null) => {\n own.current = node;\n if (typeof given === \"function\") given(node);\n else if (given != null) given.current = node;\n };\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Input/Input.module.css?mds-scoped\";\nexport default {\"input\":\"mds-Input__input\",\"own-clear\":\"mds-Input__own-clear\",\"size-sm\":\"mds-Input__size-sm\",\"size-md\":\"mds-Input__size-md\",\"size-lg\":\"mds-Input__size-lg\",\"iconWrap\":\"mds-Input__iconWrap\",\"icon\":\"mds-Input__icon\",\"slot-sm\":\"mds-Input__slot-sm\",\"slot-md\":\"mds-Input__slot-md\",\"slot-lg\":\"mds-Input__slot-lg\",\"iconLeft\":\"mds-Input__iconLeft\",\"iconRight\":\"mds-Input__iconRight\",\"with-icon-left\":\"mds-Input__with-icon-left\",\"with-icon-right\":\"mds-Input__with-icon-right\",\"clear\":\"mds-Input__clear mds-hit-area__hitArea\",\"clearGlyph\":\"mds-Input__clearGlyph\"};","import type {\n ChangeEvent,\n HTMLInputTypeAttribute,\n InputHTMLAttributes,\n ReactElement,\n ReactNode,\n Ref,\n} from \"react\";\nimport { useRef, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { forkRef } from \"../../internal/forkRef\";\nimport { CloseGlyph } from \"../../internal/glyphs\";\nimport { useFieldContext } from \"../Field/Field\";\nimport styles from \"./Input.module.css\";\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\ninterface InputBaseProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /** The native input type, passed straight through — the system adds no types\n of its own, so `email`, `tel`, `url` and `number` behave as the platform\n defines them, keyboard and validation included. Default \"text\".\n\n One type the component answers to: with `type=\"search\"`, `onClear` takes\n over the browser's own clear cross, so the field shows one clear\n affordance rather than two. Without `onClear` the native cross is left\n alone — there it is the only way to empty the field. */\n type?: HTMLInputTypeAttribute;\n /** Control height and type size. The icon slots, the gutter and the clear\n button all step with it. Default \"md\". */\n size?: InputSize;\n /** Marks the value as failing validation — sets aria-invalid and the danger\n border. Inside a Field the field's error state does this already. */\n invalid?: boolean;\n /** Decorative icon inside the leading edge. Icons carry no name here —\n the input's label does the talking. */\n iconLeft?: ReactNode;\n /** Decorative icon inside the trailing edge. */\n iconRight?: ReactNode;\n ref?: Ref<HTMLInputElement>;\n}\n\n/* The clear button and iconRight are the same slot, so only one of them may be\n asked for, and a glyph button is nothing to a screen reader without a name —\n the type collects both rules. The words are the app's: \"Clear search\" and\n \"Clear filter\" are not interchangeable. */\ntype ClearEnforcement =\n | {\n /** Raises a clear button in the trailing slot whenever the field holds\n text, and runs when it is pressed. An uncontrolled field is emptied\n for you; a controlled one is yours to empty here. Rules out\n iconRight — they are the same slot. */\n onClear: () => void;\n /** Names that button, e.g. \"Clear search\". Required: the cross says\n nothing to a screen reader, and the words are the app's — \"Clear\n search\" and \"Clear filter\" are not interchangeable. */\n clearLabel: string;\n iconRight?: undefined;\n }\n | { onClear?: undefined; clearLabel?: undefined };\n\nexport type InputProps = InputBaseProps & ClearEnforcement;\n\n/**\n * Single-line text input. Inside a Field it inherits id/description/invalid.\n *\n * Sizes are `sm` / `md` / `lg`; the icon slots and the clear button step with\n * them. `onClear` folds in what SearchField used to be — pair it with\n * `type=\"search\"` and it replaces the browser's own clear cross.\n *\n * ```tsx\n * <Field label=\"Name\">\n * <Input value={name} onChange={(e) => setName(e.target.value)} />\n * </Field>\n *\n * <Input aria-label=\"Search\" iconLeft={<Icon name=\"search\" />} />\n *\n * <Input\n * type=\"search\"\n * aria-label=\"Search sessions\"\n * iconLeft={<Icon name=\"search\" />}\n * value={query}\n * onChange={(e) => setQuery(e.target.value)}\n * clearLabel=\"Clear search\"\n * onClear={() => setQuery(\"\")}\n * />\n * ```\n */\nexport function Input({\n size = \"md\",\n invalid,\n iconLeft,\n iconRight,\n onClear,\n clearLabel,\n className,\n ref,\n ...rest\n}: InputProps): ReactElement {\n const field = useFieldContext();\n const own = useRef<HTMLInputElement>(null);\n\n /* Whether there is anything to clear. A controlled field answers from its\n own value; an uncontrolled one only knows what it has been typed into, so\n the change events carry the answer. */\n const [typedInto, setTypedInto] = useState(() => String(rest.defaultValue ?? \"\") !== \"\");\n const hasText = rest.value !== undefined ? String(rest.value) !== \"\" : typedInto;\n const showClear = onClear != null && hasText;\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (onClear != null) setTypedInto(event.target.value !== \"\");\n rest.onChange?.(event);\n };\n\n const clear = () => {\n /* An uncontrolled field holds its text in the DOM, so emptying it is a DOM\n write; a controlled one is the caller's to empty in onClear. */\n if (rest.value === undefined && own.current != null) own.current.value = \"\";\n setTypedInto(false);\n own.current?.focus();\n onClear?.();\n };\n\n const input = (\n <input\n ref={forkRef(own, ref)}\n id={rest.id ?? field?.id}\n aria-describedby={rest[\"aria-describedby\"] ?? field?.describedBy}\n aria-invalid={rest[\"aria-invalid\"] ?? ((invalid ?? field?.invalid) || undefined)}\n className={cx(\n styles.input,\n styles[`size-${size}`],\n iconLeft != null && styles[\"with-icon-left\"],\n (iconRight != null || showClear) && styles[\"with-icon-right\"],\n onClear != null && styles[\"own-clear\"],\n className,\n )}\n {...rest}\n onChange={handleChange}\n />\n );\n\n if (iconLeft == null && iconRight == null && onClear == null) return input;\n\n return (\n <span className={cx(styles.iconWrap, styles[`slot-${size}`])}>\n {input}\n {iconLeft != null && (\n <span className={cx(styles.icon, styles.iconLeft)} aria-hidden=\"true\">\n {iconLeft}\n </span>\n )}\n {iconRight != null && (\n <span className={cx(styles.icon, styles.iconRight)} aria-hidden=\"true\">\n {iconRight}\n </span>\n )}\n {showClear && (\n <button type=\"button\" aria-label={clearLabel} className={styles.clear} onClick={clear}>\n <CloseGlyph className={styles.clearGlyph} />\n </button>\n )}\n </span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/PasswordInput/PasswordInput.module.css?mds-scoped\";\nexport default {\"wrap\":\"mds-PasswordInput__wrap\",\"input\":\"mds-PasswordInput__input\",\"toggle\":\"mds-PasswordInput__toggle\"};","import { useState } from \"react\";\nimport type { ReactElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Input } from \"../Input/Input\";\nimport type { InputProps } from \"../Input/Input\";\nimport styles from \"./PasswordInput.module.css\";\n\n/* The reveal toggle is this field's trailing slot, so nothing else may claim\n it — and Omit collapses Input's either/or branch anyway, which would leave\n the clear button's two halves separable. Both reasons drop the same keys. */\nexport interface PasswordInputProps\n extends Omit<InputProps, \"type\" | \"onClear\" | \"clearLabel\" | \"iconRight\"> {\n /** Names the reveal button while the password is hidden, e.g. \"Show password\".\n Required: the button carries no visible text, so this is the only thing a\n screen reader has, and it is the app's language rather than the system's. */\n showLabel: string;\n /** Names the same button while the password is visible, e.g. \"Hide password\". */\n hideLabel: string;\n}\n\n/**\n * Password field with a reveal toggle. Composes Input, so inside a Field it\n * inherits id/description/invalid the same way.\n *\n * ```tsx\n * <Field label=\"Password\" hint=\"At least 12 characters\">\n * <PasswordInput showLabel=\"Show password\" hideLabel=\"Hide password\" autoComplete=\"new-password\" />\n * </Field>\n * ```\n */\nexport function PasswordInput({\n showLabel,\n hideLabel,\n className,\n ...rest\n}: PasswordInputProps): ReactElement {\n const [visible, setVisible] = useState(false);\n return (\n <span className={styles.wrap}>\n <Input {...rest} type={visible ? \"text\" : \"password\"} className={cx(styles.input, className)} />\n <button\n type=\"button\"\n className={styles.toggle}\n aria-label={visible ? hideLabel : showLabel}\n aria-pressed={visible}\n onClick={() => setVisible((v) => !v)}\n >\n {visible ? (\n /* eye-off */\n <svg viewBox=\"0 0 24 24\" width=\"1em\" height=\"1em\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94\" />\n <path d=\"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19\" />\n <path d=\"M14.12 14.12a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n ) : (\n /* eye */\n <svg viewBox=\"0 0 24 24\" width=\"1em\" height=\"1em\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )}\n </button>\n </span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Textarea/Textarea.module.css?mds-scoped\";\nexport default {\"textarea\":\"mds-Textarea__textarea\",\"wrap\":\"mds-Textarea__wrap\",\"count\":\"mds-Textarea__count\"};","import { useState } from \"react\";\nimport type { ChangeEvent, ReactElement, Ref, TextareaHTMLAttributes } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { useFieldContext } from \"../Field/Field\";\nimport styles from \"./Textarea.module.css\";\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** Character counter under the control; pairs with native maxLength. */\n showCount?: boolean;\n ref?: Ref<HTMLTextAreaElement>;\n}\n\n/**\n * Multi-line text input. Inside a Field it inherits id/description/invalid.\n *\n * ```tsx\n * <Field label=\"Bio\">\n * <Textarea maxLength={160} showCount />\n * </Field>\n * ```\n */\nexport function Textarea({ rows = 3, showCount = false, className, ...rest }: TextareaProps): ReactElement {\n const field = useFieldContext();\n const [tracked, setTracked] = useState(() => String(rest.defaultValue ?? \"\"));\n const current = rest.value !== undefined ? String(rest.value) : tracked;\n\n const onChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n setTracked(event.target.value);\n rest.onChange?.(event);\n };\n\n const textarea = (\n <textarea\n id={rest.id ?? field?.id}\n aria-describedby={rest[\"aria-describedby\"] ?? field?.describedBy}\n aria-invalid={rest[\"aria-invalid\"] ?? (field?.invalid || undefined)}\n rows={rows}\n className={cx(styles.textarea, className)}\n {...rest}\n {...(showCount ? { onChange } : {})}\n />\n );\n\n if (!showCount) return textarea;\n return (\n <span className={styles.wrap}>\n {textarea}\n <span className={styles.count} aria-hidden=\"true\">\n {rest.maxLength !== undefined ? `${current.length}/${rest.maxLength}` : current.length}\n </span>\n </span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Checkbox/Checkbox.module.css?mds-scoped\";\nexport default {\"root\":\"mds-Checkbox__root\",\"box\":\"mds-Checkbox__box mds-hit-area__hitArea\",\"bare\":\"mds-Checkbox__bare\",\"label\":\"mds-Checkbox__label\"};","import type { InputHTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { useEffect, useRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { forkRef } from \"../../internal/forkRef\";\nimport { VisuallyHidden } from \"../VisuallyHidden/VisuallyHidden\";\nimport styles from \"./Checkbox.module.css\";\n\nexport interface CheckboxProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n /** Inline label — part of the click target. Rich content welcome (an\n inline link, a Text run); the label element names the box either way. */\n label: ReactNode;\n /** Keep the name for readers and take it off the screen. A box in a table's\n select column has no room for the word and the column header says it\n anyway, but a reader who cannot see which row they are in still needs\n to be told. Naming it is not optional; showing it is. */\n labelHidden?: boolean;\n /** Neither checked nor unchecked: the third thing a box governing a set of\n others has to say. Only the DOM property carries it — there is no\n attribute — so a caller cannot set it without this. */\n indeterminate?: boolean;\n ref?: Ref<HTMLInputElement>;\n}\n\n/**\n * Native checkbox, styled box. Label is the touch target too.\n *\n * ```tsx\n * <Checkbox label=\"Remember me\" defaultChecked />\n * <Checkbox\n * label=\"Accept terms\"\n * checked={accepted}\n * onChange={(e) => setAccepted(e.target.checked)}\n * />\n * ```\n */\nexport function Checkbox({\n label,\n labelHidden = false,\n indeterminate = false,\n className,\n ref,\n ...rest\n}: CheckboxProps): ReactElement {\n const own = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (own.current !== null) own.current.indeterminate = indeterminate;\n }, [indeterminate]);\n\n return (\n <label className={cx(styles.root, labelHidden && styles.bare, className)}>\n <input\n type=\"checkbox\"\n className={styles.box}\n ref={forkRef(own, ref)}\n {...rest}\n />\n {labelHidden ? (\n <VisuallyHidden className={styles.label}>{label}</VisuallyHidden>\n ) : (\n <span className={styles.label}>{label}</span>\n )}\n </label>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Radio/Radio.module.css?mds-scoped\";\nexport default {\"root\":\"mds-Radio__root\",\"size-sm\":\"mds-Radio__size-sm\",\"size-lg\":\"mds-Radio__size-lg\",\"dot\":\"mds-Radio__dot mds-hit-area__hitArea\",\"label\":\"mds-Radio__label\"};","import type { InputHTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Radio.module.css\";\n\nexport type RadioSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n /** Inline label — part of the click target. */\n label: string;\n /** Control step. Default md. The 44px target holds at every step. */\n size?: RadioSize;\n ref?: Ref<HTMLInputElement>;\n}\n\n/**\n * Native radio, styled dot. Group by `name`; wrap the group in\n * `<fieldset>`/`<legend>` for a group label.\n *\n * ```tsx\n * <fieldset>\n * <legend>Plan</legend>\n * <Radio name=\"plan\" label=\"Free\" checked={plan === \"free\"} onChange={() => setPlan(\"free\")} />\n * <Radio name=\"plan\" label=\"Pro\" checked={plan === \"pro\"} onChange={() => setPlan(\"pro\")} />\n * </fieldset>\n * ```\n */\nexport function Radio({ label, size = \"md\", className, ...rest }: RadioProps): ReactElement {\n return (\n <label className={cx(styles.root, styles[`size-${size}`], className)}>\n <input type=\"radio\" className={styles.dot} {...rest} />\n <span className={styles.label}>{label}</span>\n </label>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Switch/Switch.module.css?mds-scoped\";\nexport default {\"root\":\"mds-Switch__root\",\"track\":\"mds-Switch__track mds-hit-area__hitArea\",\"trackWrap\":\"mds-Switch__trackWrap\",\"spinner\":\"mds-Switch__spinner\",\"label\":\"mds-Switch__label\"};","import type { InputHTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Spinner } from \"../Spinner/Spinner\";\nimport styles from \"./Switch.module.css\";\n\ninterface SwitchBaseProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n /** Busy blocks toggling for the same reason disabled does — a second tap\n would queue a write against a value the first one is still deciding. */\n loading?: boolean;\n ref?: Ref<HTMLInputElement>;\n}\n\n/* A switch with no words beside it still needs a name — a row whose title\n already labels it, a column under one header. The type demands it. */\ntype SwitchLabelEnforcement =\n | { /** Inline label — part of the click target. */ label: string }\n | { label?: undefined; \"aria-label\": string };\n\nexport type SwitchProps = SwitchBaseProps & SwitchLabelEnforcement;\n\n/**\n * On/off toggle. Checkbox under the hood with role=\"switch\" — native\n * semantics and forms integration, switch announcement.\n *\n * ```tsx\n * <Switch\n * label=\"Notifications\"\n * checked={enabled}\n * onChange={(e) => setEnabled(e.target.checked)}\n * />\n * <Switch aria-label=\"Email on new posts\" checked={on} loading={saving} onChange={toggle} />\n * ```\n */\nexport function Switch({\n label,\n loading = false,\n disabled = false,\n className,\n ...rest\n}: SwitchProps): ReactElement {\n return (\n <label className={cx(styles.root, className)}>\n <span className={styles.trackWrap}>\n <input\n type=\"checkbox\"\n role=\"switch\"\n className={styles.track}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...rest}\n />\n {/* Purely visual — aria-busy on the input carries the state. */}\n {loading && (\n <Spinner size={12} label=\"\" aria-hidden=\"true\" className={styles.spinner} />\n )}\n </span>\n {label !== undefined && <span className={styles.label}>{label}</span>}\n </label>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/SegmentedControl/SegmentedControl.module.css?mds-scoped\";\nexport default {\"group\":\"mds-SegmentedControl__group\",\"size-md\":\"mds-SegmentedControl__size-md\",\"face\":\"mds-SegmentedControl__face\",\"size-sm\":\"mds-SegmentedControl__size-sm\",\"bare\":\"mds-SegmentedControl__bare\",\"segment\":\"mds-SegmentedControl__segment\",\"fullWidth\":\"mds-SegmentedControl__fullWidth\",\"input\":\"mds-SegmentedControl__input\"};","import type { ReactElement } from \"react\";\nimport { useId } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./SegmentedControl.module.css\";\n\nexport interface SegmentOption<T extends string = string> {\n value: T;\n label: string;\n}\n\nexport type SegmentedControlSize = \"sm\" | \"md\";\n\nexport interface SegmentedControlProps<T extends string = string> {\n /** Accessible group name. */\n label: string;\n options: readonly SegmentOption<T>[];\n value: T;\n onChange: (value: T) => void;\n /** Disables the whole control — e.g. a choice locked while editing. */\n disabled?: boolean;\n /** Stretch across the container, segments sharing the width equally —\n the usual shape when the control heads a screen-wide view switch. */\n fullWidth?: boolean;\n /** Control step. Default md. sm is for chrome — a switch sharing a header\n bar with an avatar and a menu, where the medium step is the tallest\n thing up there. */\n size?: SegmentedControlSize;\n /** Report the segment already chosen being picked again. Off by default:\n a radio only fires when its checked state changes, and for most choices\n that is the whole story. Turn it on where confirming the value on screen\n is itself an act — pinning a language that until now was inferred from\n the browser, so it stops following it. */\n repick?: boolean;\n /** Drop the frame: no tray, no padding around the segments. The tray is\n what makes the group read as a form field, and in a header bar a field\n is what it is not. The chosen segment still carries its own surface. */\n bare?: boolean;\n className?: string;\n}\n\n/**\n * Exclusive choice among few visible options. Native radios under the hood —\n * free keyboard model and semantics.\n *\n * ```tsx\n * <SegmentedControl\n * label=\"View\"\n * options={[\n * { value: \"list\", label: \"List\" },\n * { value: \"grid\", label: \"Grid\" },\n * ]}\n * value={view}\n * onChange={setView}\n * />\n * ```\n */\nexport function SegmentedControl<T extends string = string>({\n label,\n options,\n value,\n onChange,\n disabled = false,\n fullWidth = false,\n size = \"md\",\n bare = false,\n repick = false,\n className,\n}: SegmentedControlProps<T>): ReactElement {\n const name = useId();\n return (\n <div\n role=\"radiogroup\"\n aria-label={label}\n className={cx(\n styles.group,\n styles[`size-${size}`],\n fullWidth && styles.fullWidth,\n bare && styles.bare,\n className,\n )}\n >\n {options.map((option) => (\n <label key={option.value} className={styles.segment}>\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={option.value === value}\n onChange={() => onChange(option.value)}\n /* Only for the segment already chosen: for any other, the click\n is followed by a change event and this would say it twice. */\n onClick={\n repick && option.value === value ? () => onChange(option.value) : undefined\n }\n disabled={disabled}\n className={styles.input}\n />\n <span className={styles.face}>{option.label}</span>\n </label>\n ))}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Scroller/Scroller.module.css?mds-scoped\";\nexport default {\"scroller\":\"mds-Scroller__scroller\",\"header\":\"mds-Scroller__header\",\"trailing\":\"mds-Scroller__trailing\",\"track\":\"mds-Scroller__track\",\"arrows\":\"mds-Scroller__arrows\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { useCallback, useEffect, useId, useRef, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { ChevronLeftGlyph, ChevronRightGlyph } from \"../../internal/glyphs\";\nimport { Button } from \"../Button/Button\";\nimport { Heading, type HeadingLevel } from \"../Heading/Heading\";\nimport styles from \"./Scroller.module.css\";\n\nexport interface ScrollerLabels {\n previous: string;\n next: string;\n}\n\nexport interface ScrollerProps extends Omit<HTMLAttributes<HTMLElement>, \"title\"> {\n /** Words over the row. They name the scrolling group too. */\n title: string;\n /** The arrows are glyphs, so the words are the app's. */\n labels: ScrollerLabels;\n /** Where the title sits in the document outline. Default 2. */\n level?: HeadingLevel;\n /** Beside the title, before the arrows — a link to the rest. */\n action?: ReactNode;\n children: ReactNode;\n ref?: Ref<HTMLElement>;\n}\n\n/* Not a whole screenful: the item at the edge stays half in view, so the\n reader keeps their place in the row. */\nconst STEP = 0.8;\n\n/**\n * A titled row that scrolls sideways — featured posts, a shelf of covers.\n * The row scrolls with the finger; the arrows do the same for a pointer or a\n * key, and shut themselves at each end.\n *\n * ```tsx\n * <Scroller title={t(\"home.featured\")} labels={t.scroller}>\n * {slots.map((slot) => (\n * <PostCard key={slot.id} post={slot.post} variant=\"grid\" />\n * ))}\n * </Scroller>\n * ```\n */\nexport function Scroller({\n title,\n labels,\n level = 2,\n action,\n children,\n className,\n ...rest\n}: ScrollerProps): ReactElement {\n const track = useRef<HTMLDivElement>(null);\n const titleId = useId();\n const [atStart, setAtStart] = useState(true);\n const [atEnd, setAtEnd] = useState(true);\n\n const measure = useCallback(() => {\n const row = track.current;\n if (row === null) return;\n\n setAtStart(row.scrollLeft <= 0);\n setAtEnd(row.scrollLeft + row.clientWidth >= row.scrollWidth - 1);\n }, []);\n\n /* The children are the app's and can change width under us, so the ends are\n read after every render rather than only on scroll. */\n useEffect(measure);\n\n useEffect(() => {\n window.addEventListener(\"resize\", measure);\n return () => window.removeEventListener(\"resize\", measure);\n }, [measure]);\n\n const step = (direction: 1 | -1) => {\n const row = track.current;\n if (row === null) return;\n\n row.scrollBy({ left: direction * Math.round(row.clientWidth * STEP) });\n };\n\n return (\n <section className={cx(styles.scroller, className)} {...rest}>\n <div className={styles.header}>\n <Heading level={level} variant=\"label\" id={titleId}>\n {title}\n </Heading>\n\n <div className={styles.trailing}>\n {action}\n\n <div className={styles.arrows}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n iconOnly\n aria-label={labels.previous}\n disabled={atStart}\n onClick={() => step(-1)}\n >\n <ChevronLeftGlyph />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n iconOnly\n aria-label={labels.next}\n disabled={atEnd}\n onClick={() => step(1)}\n >\n <ChevronRightGlyph />\n </Button>\n </div>\n </div>\n </div>\n\n <div\n className={styles.track}\n ref={track}\n role=\"group\"\n aria-labelledby={titleId}\n onScroll={measure}\n >\n {children}\n </div>\n </section>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/List/List.module.css?mds-scoped\";\nexport default {\"group\":\"mds-List__group\",\"labelledGroup\":\"mds-List__labelledGroup\",\"label\":\"mds-List__label\",\"item\":\"mds-List__item\",\"surface-card\":\"mds-List__surface-card\",\"surface-sunken\":\"mds-List__surface-sunken\",\"surface-accent\":\"mds-List__surface-accent\",\"surface-plain\":\"mds-List__surface-plain\",\"row\":\"mds-List__row\",\"interactive\":\"mds-List__interactive\",\"withActions\":\"mds-List__withActions\",\"actions\":\"mds-List__actions\",\"leading\":\"mds-List__leading\",\"trailing\":\"mds-List__trailing\",\"text\":\"mds-List__text\",\"title\":\"mds-List__title\",\"description\":\"mds-List__description\"};","import type { ElementType, HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { createContext, useContext, useId } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./List.module.css\";\n\n/* Tells an item whether a group is painting the card around it. */\nconst ListGroupContext = createContext(false);\n\nexport interface ListGroupProps extends HTMLAttributes<HTMLUListElement> {\n children: ReactNode;\n /** Heading over the group. Also names the list to a screen reader. */\n label?: ReactNode;\n ref?: Ref<HTMLUListElement>;\n}\n\n/**\n * Card-styled list container for ListItems.\n *\n * ```tsx\n * <ListGroup label=\"Account\">\n * <ListItem\n * title=\"Profile\"\n * description=\"Name, avatar\"\n * leading={<Icon name=\"user\" />}\n * href=\"/profile\"\n * />\n * <ListItem title=\"Log out\" onClick={logout} />\n * </ListGroup>\n * ```\n */\nexport function ListGroup({ label, className, ...rest }: ListGroupProps): ReactElement {\n const headingId = useId();\n\n const list = (\n <ListGroupContext.Provider value={true}>\n <ul\n className={cx(styles.group, className)}\n aria-labelledby={label != null ? headingId : undefined}\n {...rest}\n />\n </ListGroupContext.Provider>\n );\n\n if (label == null) return list;\n return (\n <div className={styles.labelledGroup}>\n <span className={styles.label} id={headingId}>\n {label}\n </span>\n {list}\n </div>\n );\n}\n\nexport type ListItemSurface = \"card\" | \"sunken\" | \"accent\" | \"plain\";\n\nexport interface ListItemProps extends Omit<HTMLAttributes<HTMLElement>, \"title\" | \"onClick\"> {\n title: ReactNode;\n description?: ReactNode;\n /** Slot before the text — Avatar, Icon, … */\n leading?: ReactNode;\n /** Slot after the text — Badge, chevron, … Inside the row's hit target, so\n it is for things that are read, not pressed. */\n trailing?: ReactNode;\n /** Controls of the row's own, beside it rather than in it. A roster row\n navigates to the member and carries an add/remove button: put that in\n `trailing` and it is a button inside the link. This slot sits outside\n the hit target, where a second control can be reached. */\n actions?: ReactNode;\n /** Makes the whole row a button — or, with `href`, reports the press on the\n way out: a notification marked read, a tap counted. */\n onClick?: () => void;\n /** Marks an onClick row as a toggle — a picker row that selects rather than\n navigates. Lands as aria-pressed on the row button itself, where the\n screen reader's focus is. Leave unset for rows that navigate. */\n pressed?: boolean;\n /** Makes the whole row a link. The row navigates rather than acts, and any\n onClick rides along with the navigation. */\n href?: string;\n /** Element override for that link, e.g. a router's Link. */\n as?: ElementType;\n /** What the row paints behind itself. Inside a ListGroup the group is the\n card, so grouped rows default to painting nothing; standalone rows\n default to their own card. `accent` is the tinted, accent-edged prompt\n row. The row paints it itself because a background drawn by a wrapper\n brings its own corner radius, which peeks past the row's in all four\n corners. */\n surface?: ListItemSurface;\n /** The root is an `<li>` inside a ListGroup and a `<div>` outside one, so\n the ref is typed to what both are. */\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * One row. Static by default; interactive as one whole-row button/link.\n * An `<li>` inside a ListGroup, a standalone `<div>` row anywhere else.\n */\nexport function ListItem({\n title,\n description,\n leading,\n trailing,\n actions,\n onClick,\n pressed,\n href,\n as,\n surface,\n className,\n ref,\n ...rest\n}: ListItemProps): ReactElement {\n const inGroup = useContext(ListGroupContext);\n const Root = inGroup ? \"li\" : \"div\";\n const LinkElement: ElementType = as ?? \"a\";\n // Grouped rows paint nothing unless told otherwise; standalone rows carry\n // their own card.\n const resolved = surface ?? (inGroup ? undefined : \"card\");\n\n const content = (\n <>\n {leading != null && <span className={styles.leading}>{leading}</span>}\n <span className={styles.text}>\n <span className={styles.title}>{title}</span>\n {description != null && <span className={styles.description}>{description}</span>}\n </span>\n {trailing != null && <span className={styles.trailing}>{trailing}</span>}\n </>\n );\n\n return (\n <Root\n className={cx(\n styles.item,\n actions != null && styles.withActions,\n resolved && styles[`surface-${resolved}`],\n className,\n )}\n ref={ref as Ref<HTMLLIElement & HTMLDivElement>}\n {...rest}\n >\n {href !== undefined ? (\n <LinkElement className={cx(styles.row, styles.interactive)} href={href} onClick={onClick}>\n {content}\n </LinkElement>\n ) : onClick !== undefined ? (\n <button\n type=\"button\"\n className={cx(styles.row, styles.interactive)}\n onClick={onClick}\n aria-pressed={pressed}\n >\n {content}\n </button>\n ) : (\n <span className={styles.row}>{content}</span>\n )}\n {actions != null && <span className={styles.actions}>{actions}</span>}\n </Root>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/DataTable/DataTable.module.css?mds-scoped\";\nexport default {\"root\":\"mds-DataTable__root\",\"scroll\":\"mds-DataTable__scroll\",\"table\":\"mds-DataTable__table\",\"row\":\"mds-DataTable__row\",\"body\":\"mds-DataTable__body\",\"selected\":\"mds-DataTable__selected\",\"cell\":\"mds-DataTable__cell\",\"select\":\"mds-DataTable__select\",\"actions\":\"mds-DataTable__actions\",\"muted\":\"mds-DataTable__muted\",\"empty\":\"mds-DataTable__empty\",\"bulk\":\"mds-DataTable__bulk\",\"bulkActions\":\"mds-DataTable__bulkActions\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Checkbox } from \"../Checkbox/Checkbox\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./DataTable.module.css\";\n\nexport interface DataColumn<Row> {\n key: string;\n /** Read in the header row. */\n header: ReactNode;\n /** CSS width for the column, applied through the colgroup. */\n width?: string;\n cell: (row: Row) => ReactNode;\n}\n\nexport interface DataTableSelectionLabels {\n /** Names one row's box — \"Select Ada Lovelace\". The row's own label is\n handed in, so the sentence is the app's to build. */\n row: (label: string) => string;\n /** Names the header box, which takes or lets go of every row at once. */\n all: string;\n /** \"3 selected\" — a function, because only the app knows how its language\n counts. */\n count: (selected: number) => string;\n}\n\ntype DataTableSelection =\n | {\n /** Row keys currently taken. Held by the caller: the table draws it and\n says what changed, and never keeps a second copy. */\n selected: string[];\n onSelectedChange: (keys: string[]) => void;\n selectionLabels: DataTableSelectionLabels;\n /** What can be done to the taken rows, shown with the count of them. */\n bulkActions?: ReactNode;\n }\n | {\n selected?: undefined;\n onSelectedChange?: undefined;\n selectionLabels?: undefined;\n bulkActions?: undefined;\n };\n\nexport type DataTableProps<Row> = Omit<HTMLAttributes<HTMLDivElement>, \"children\"> & {\n /** Names the table. Required: a table of rows with no name is a grid of\n values with nothing saying what they are a list of. */\n label: string;\n columns: DataColumn<Row>[];\n rows: Row[];\n rowKey: (row: Row) => string;\n /** Names one row where its first cell will not do — a row led by an avatar,\n or by a title that repeats down the table. */\n rowLabel?: (row: Row) => string;\n /** What can be done to one row, in a column of its own at the end. */\n rowActions?: (row: Row) => ReactNode;\n /** Names that column. */\n actionsHeader?: ReactNode;\n /** A row the table still lists but no longer counts — suspended, hidden. */\n rowMuted?: (row: Row) => boolean;\n /** Shown in place of the rows when there are none. */\n empty?: ReactNode;\n ref?: Ref<HTMLDivElement>;\n} & DataTableSelection;\n\n/**\n * Rows and columns, at every width.\n *\n * A table is for reading across a row and comparing down a column, and it stays\n * one on a narrow screen rather than turning into something else: where the\n * columns need more room than there is, the table pans sideways inside a box\n * that takes focus. An app wanting cards on a phone builds cards — that is a\n * different component, not this one wearing a second layout.\n *\n * ```tsx\n * <DataTable\n * label={t(\"admin.members.table\")}\n * columns={[\n * { key: \"name\", header: t(\"admin.name\"), cell: (m) => m.name },\n * { key: \"role\", header: t(\"admin.role\"), cell: (m) => <Tag>{m.role}</Tag> },\n * ]}\n * rows={members}\n * rowKey={(m) => m.id}\n * empty={t(\"admin.members.none\")}\n * />\n * ```\n */\nexport function DataTable<Row>({\n label,\n columns,\n rows,\n rowKey,\n rowLabel,\n rowActions,\n actionsHeader,\n rowMuted,\n empty,\n ref,\n selected,\n onSelectedChange,\n selectionLabels,\n bulkActions,\n className,\n ...rest\n}: DataTableProps<Row>): ReactElement {\n const selectable = selected !== undefined;\n const keys = rows.map(rowKey);\n const all = selectable && keys.length > 0 && keys.every((key) => selected.includes(key));\n const some = selectable && !all && keys.some((key) => selected.includes(key));\n const span = columns.length + (selectable ? 1 : 0) + (rowActions ? 1 : 0);\n\n /* Reported in the table's own order, not the order they were clicked in:\n the caller reads it back as a list of rows, and a list of rows has the\n order the reader sees. */\n const toggle = (key: string, taken: boolean) => {\n if (selected === undefined) return;\n const next = taken ? [...selected, key] : selected.filter((each) => each !== key);\n onSelectedChange(keys.filter((each) => next.includes(each)));\n };\n\n const nameOf = (row: Row): string => {\n if (rowLabel !== undefined) return rowLabel(row);\n const first = columns[0]?.cell(row);\n return typeof first === \"string\" ? first : rowKey(row);\n };\n\n return (\n <div className={cx(styles.root, className)} ref={ref} {...rest}>\n {/* Named as well as the table it holds: whoever tabs into the box to\n pan it is told what they have landed in. */}\n <div className={styles.scroll} role=\"region\" aria-label={label} tabIndex={0}>\n <table className={styles.table} aria-label={label}>\n <colgroup>\n {selectable && <col />}\n {columns.map((column) => (\n <col\n key={column.key}\n style={column.width !== undefined ? { width: column.width } : undefined}\n />\n ))}\n {rowActions && <col />}\n </colgroup>\n\n <thead>\n <tr className={styles.row}>\n {selectable && (\n <th scope=\"col\" className={styles.select}>\n <Checkbox\n label={selectionLabels.all}\n labelHidden\n checked={all}\n indeterminate={some}\n onChange={(event) => onSelectedChange(event.target.checked ? keys : [])}\n />\n </th>\n )}\n {columns.map((column) => (\n <th scope=\"col\" key={column.key} className={styles.cell}>\n {column.header}\n </th>\n ))}\n {rowActions && (\n <th scope=\"col\" className={styles.actions}>\n {actionsHeader}\n </th>\n )}\n </tr>\n </thead>\n\n <tbody className={styles.body}>\n {rows.length > 0\n ? rows.map((row) => {\n const key = rowKey(row);\n const taken = selected?.includes(key) ?? false;\n return (\n <tr\n key={key}\n className={cx(\n styles.row,\n taken && styles.selected,\n rowMuted?.(row) === true && styles.muted,\n )}\n >\n {selectable && (\n <td className={styles.select}>\n <Checkbox\n label={selectionLabels.row(nameOf(row))}\n labelHidden\n checked={taken}\n onChange={(event) => toggle(key, event.target.checked)}\n />\n </td>\n )}\n {columns.map((column) => (\n <td key={column.key} className={styles.cell}>\n {column.cell(row)}\n </td>\n ))}\n {rowActions && <td className={styles.actions}>{rowActions(row)}</td>}\n </tr>\n );\n })\n : empty !== undefined && (\n <tr className={styles.row}>\n <td className={styles.empty} colSpan={span}>\n <Text variant=\"note\">{empty}</Text>\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n\n {selectable && selected.length > 0 && bulkActions !== undefined && (\n <div className={styles.bulk} role=\"status\">\n <Text variant=\"meta\">{selectionLabels.count(selected.length)}</Text>\n <div className={styles.bulkActions}>{bulkActions}</div>\n </div>\n )}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/EmptyState/EmptyState.module.css?mds-scoped\";\nexport default {\"root\":\"mds-EmptyState__root\",\"icon\":\"mds-EmptyState__icon\",\"action\":\"mds-EmptyState__action\"};","import type { ReactElement, ReactNode } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Heading } from \"../Heading/Heading\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./EmptyState.module.css\";\n\nexport interface EmptyStateProps {\n title: string;\n description?: string;\n /** Illustration or Icon slot. */\n icon?: ReactNode;\n /** Usually a Button. */\n action?: ReactNode;\n className?: string;\n}\n\n/**\n * Nothing-here view: explains the empty screen and offers the next step.\n *\n * ```tsx\n * <EmptyState\n * icon={<Icon name=\"inbox\" size=\"lg\" />}\n * title=\"No sessions yet\"\n * description=\"Create your first session to get started.\"\n * action={<Button onClick={create}>New session</Button>}\n * />\n * ```\n */\nexport function EmptyState({ title, description, icon, action, className }: EmptyStateProps): ReactElement {\n return (\n <div className={cx(styles.root, className)}>\n {icon != null && (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <Heading level={3}>{title}</Heading>\n {description !== undefined && <Text tone=\"secondary\">{description}</Text>}\n {action != null && <span className={styles.action}>{action}</span>}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tabs/Tabs.module.css?mds-scoped\";\nexport default {\"list\":\"mds-Tabs__list\",\"tab\":\"mds-Tabs__tab\",\"selected\":\"mds-Tabs__selected\",\"panel\":\"mds-Tabs__panel\"};","import type { ButtonHTMLAttributes, HTMLAttributes, KeyboardEvent, ReactElement, ReactNode, Ref } from \"react\";\nimport { createContext, useCallback, useContext, useEffect, useId, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Tabs.module.css\";\n\ninterface TabsContextValue {\n value: string;\n onChange: (value: string) => void;\n baseId: string;\n /** Values whose TabPanel is currently mounted. A tab only claims\n * aria-controls over a panel that exists — the strip is also used as a\n * filter over one shared region, where there are no panels at all. */\n panels: ReadonlySet<string>;\n registerPanel: (value: string) => () => void;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nfunction useTabs(component: string): TabsContextValue {\n const context = useContext(TabsContext);\n if (context === null) throw new Error(`${component} must sit inside <Tabs>`);\n return context;\n}\n\nexport interface TabsProps {\n value: string;\n onChange: (value: string) => void;\n children: ReactNode;\n}\n\n/**\n * Controlled tabs root. Compose with TabList, Tab, TabPanel.\n *\n * ```tsx\n * <Tabs value={tab} onChange={setTab}>\n * <TabList label=\"Session details\">\n * <Tab value=\"info\">Info</Tab>\n * <Tab value=\"notes\">Notes</Tab>\n * </TabList>\n * <TabPanel value=\"info\">…</TabPanel>\n * <TabPanel value=\"notes\">…</TabPanel>\n * </Tabs>\n * ```\n */\nexport function Tabs({ value, onChange, children }: TabsProps): ReactElement {\n const baseId = useId();\n const [panels, setPanels] = useState<ReadonlySet<string>>(new Set());\n const registerPanel = useCallback((panel: string) => {\n setPanels((prev) => new Set(prev).add(panel));\n return () => {\n setPanels((prev) => {\n const next = new Set(prev);\n next.delete(panel);\n return next;\n });\n };\n }, []);\n return (\n <TabsContext.Provider value={{ value, onChange, baseId, panels, registerPanel }}>\n {children}\n </TabsContext.Provider>\n );\n}\n\nexport interface TabListProps extends HTMLAttributes<HTMLDivElement> {\n /** Accessible name for the tab set. */\n label: string;\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n}\n\n/* Selection follows focus (WAI-APG \"automatic activation\") — panels here are\n local content, not expensive loads. */\nfunction onArrow(event: KeyboardEvent<HTMLDivElement>, onChange: (v: string) => void): void {\n const keys = [\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"];\n if (!keys.includes(event.key)) return;\n const tabs = [...event.currentTarget.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]')];\n const current = tabs.findIndex((tab) => tab === document.activeElement);\n if (current === -1) return;\n event.preventDefault();\n const next =\n event.key === \"Home\"\n ? 0\n : event.key === \"End\"\n ? tabs.length - 1\n : (current + (event.key === \"ArrowRight\" ? 1 : -1) + tabs.length) % tabs.length;\n const tab = tabs[next];\n if (!tab) return;\n tab.focus();\n const value = tab.dataset.value;\n if (value !== undefined) onChange(value);\n}\n\nexport function TabList({ label, className, children, ...rest }: TabListProps): ReactElement {\n const { onChange } = useTabs(\"TabList\");\n return (\n <div\n role=\"tablist\"\n aria-label={label}\n className={cx(styles.list, className)}\n onKeyDown={(event) => onArrow(event, onChange)}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\nexport interface TabProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"value\" | \"type\"> {\n value: string;\n children: ReactNode;\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport function Tab({ value, className, children, ...rest }: TabProps): ReactElement {\n const tabs = useTabs(\"Tab\");\n const selected = tabs.value === value;\n return (\n <button\n type=\"button\"\n role=\"tab\"\n id={`${tabs.baseId}-tab-${value}`}\n aria-selected={selected}\n aria-controls={tabs.panels.has(value) ? `${tabs.baseId}-panel-${value}` : undefined}\n tabIndex={selected ? 0 : -1}\n data-value={value}\n className={cx(styles.tab, selected && styles.selected, className)}\n onClick={() => tabs.onChange(value)}\n {...rest}\n >\n {children}\n </button>\n );\n}\n\nexport interface TabPanelProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function TabPanel({ value, className, children, ...rest }: TabPanelProps): ReactElement {\n const tabs = useTabs(\"TabPanel\");\n const selected = tabs.value === value;\n const { registerPanel } = tabs;\n useEffect(() => registerPanel(value), [registerPanel, value]);\n return (\n <div\n role=\"tabpanel\"\n id={`${tabs.baseId}-panel-${value}`}\n aria-labelledby={`${tabs.baseId}-tab-${value}`}\n hidden={!selected}\n className={cx(styles.panel, className)}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Toast/Toast.module.css?mds-scoped\";\nexport default {\"viewport\":\"mds-Toast__viewport\",\"toast\":\"mds-Toast__toast\",\"tone-success\":\"mds-Toast__tone-success\",\"tone-danger\":\"mds-Toast__tone-danger\",\"body\":\"mds-Toast__body\",\"title\":\"mds-Toast__title\",\"description\":\"mds-Toast__description\",\"close\":\"mds-Toast__close mds-hit-area__hitArea\",\"closeGlyph\":\"mds-Toast__closeGlyph\",\"action\":\"mds-Toast__action mds-hit-area__hitArea\"};","import type { ReactElement, ReactNode } from \"react\";\nimport { createContext, useCallback, useContext, useMemo, useRef, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { CloseGlyph } from \"../../internal/glyphs\";\nimport styles from \"./Toast.module.css\";\n\nexport type ToastTone = \"neutral\" | \"success\" | \"danger\";\n\nexport interface ToastAction {\n /** The word on the button — localise. */\n label: string;\n onClick: () => void;\n}\n\nexport interface ToastOptions {\n title: string;\n description?: string | undefined;\n tone?: ToastTone | undefined;\n /** ms until auto-dismiss. 0 = stays until dismissed. Default 5000. */\n duration?: number | undefined;\n /** One thing to do about the message, beside it. A toast that asks for\n something — \"Update ready\", \"Add to home screen\" — has nowhere else to\n put the doing. Taking it closes the toast: the message is answered. */\n action?: ToastAction | undefined;\n /** Fires however the toast leaves — timeout, dismiss button, or action.\n A nudge that must remember a refusal has one place to write it down,\n rather than three that can disagree. */\n onDismiss?: (() => void) | undefined;\n}\n\ninterface ToastEntry extends Required<Pick<ToastOptions, \"title\" | \"tone\">> {\n id: number;\n description: string | undefined;\n action: ToastAction | undefined;\n}\n\ninterface ToastContextValue {\n toast: (options: ToastOptions) => number;\n dismiss: (id: number) => void;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport function useToast(): ToastContextValue {\n const context = useContext(ToastContext);\n if (context === null) throw new Error(\"useToast needs a <ToastProvider> above it\");\n return context;\n}\n\nexport interface ToastProviderProps {\n children: ReactNode;\n /** Accessible name of the notification region, e.g. \"Notifications\".\n Required: it is read aloud, in the app's language. */\n regionLabel: string;\n /** Prefix of each dismiss button's accessible name. The toast's title follows\n * it, so every dismiss control names its own toast: \"Dismiss: Saved\". */\n dismissLabel: string;\n}\n\n/**\n * Mount once near the root. Renders the notification region itself.\n *\n * ```tsx\n * // App root\n * <ToastProvider regionLabel=\"Notifications\" dismissLabel=\"Dismiss\">\n * <App />\n * </ToastProvider>\n *\n * // Anywhere below\n * const { toast } = useToast();\n * toast({ title: \"Saved\", tone: \"success\" });\n * ```\n */\nexport function ToastProvider({\n children,\n regionLabel,\n dismissLabel,\n}: ToastProviderProps): ReactElement {\n const [toasts, setToasts] = useState<ToastEntry[]>([]);\n const nextId = useRef(1);\n /* Held outside the entry so that a toast already gone cannot fire its\n callback a second time when its timeout comes round: the way out that\n got there first takes the callback with it. */\n const leaving = useRef(new Map<number, () => void>());\n\n const dismiss = useCallback((id: number) => {\n setToasts((current) => current.filter((entry) => entry.id !== id));\n const said = leaving.current.get(id);\n if (said !== undefined) {\n leaving.current.delete(id);\n said();\n }\n }, []);\n\n const toast = useCallback(\n ({ title, description, tone = \"neutral\", duration = 5000, action, onDismiss }: ToastOptions) => {\n const id = nextId.current++;\n if (onDismiss !== undefined) leaving.current.set(id, onDismiss);\n setToasts((current) => [...current, { id, title, description, tone, action }]);\n if (duration > 0) setTimeout(() => dismiss(id), duration);\n return id;\n },\n [dismiss],\n );\n\n const value = useMemo(() => ({ toast, dismiss }), [toast, dismiss]);\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n <div role=\"region\" aria-label={regionLabel} className={styles.viewport}>\n {toasts.map((entry) => (\n <div\n key={entry.id}\n /* A refusal interrupts: what the reader asked for did not happen,\n and they are about to carry on as though it did. Anything\n calmer waits its turn. */\n role={entry.tone === \"danger\" ? \"alert\" : \"status\"}\n className={cx(styles.toast, styles[`tone-${entry.tone}`])}\n >\n <span className={styles.body}>\n <span className={styles.title}>{entry.title}</span>\n {entry.description !== undefined && (\n <span className={styles.description}>{entry.description}</span>\n )}\n </span>\n {entry.action !== undefined && (\n <button\n type=\"button\"\n className={styles.action}\n onClick={() => {\n entry.action?.onClick();\n dismiss(entry.id);\n }}\n >\n {entry.action.label}\n </button>\n )}\n <button\n type=\"button\"\n aria-label={`${dismissLabel}: ${entry.title}`}\n className={styles.close}\n onClick={() => dismiss(entry.id)}\n >\n <CloseGlyph className={styles.closeGlyph} />\n </button>\n </div>\n ))}\n </div>\n </ToastContext.Provider>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Stack/Stack.module.css?mds-scoped\";\nexport default {\"stack\":\"mds-Stack__stack\",\"gap-hairline\":\"mds-Stack__gap-hairline\",\"gap-tight\":\"mds-Stack__gap-tight\",\"gap-base\":\"mds-Stack__gap-base\",\"gap-loose\":\"mds-Stack__gap-loose\",\"gap-group\":\"mds-Stack__gap-group\",\"gap-section\":\"mds-Stack__gap-section\",\"align-start\":\"mds-Stack__align-start\",\"align-center\":\"mds-Stack__align-center\",\"align-end\":\"mds-Stack__align-end\",\"align-stretch\":\"mds-Stack__align-stretch\"};","import type { ElementType, ReactElement } from \"react\";\nimport { createElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { AnyPolymorphic, Polymorphic } from \"../../internal/polymorphic\";\nimport styles from \"./Stack.module.css\";\n\nexport type StackGap = \"hairline\" | \"tight\" | \"base\" | \"loose\" | \"group\" | \"section\";\nexport type StackAlign = \"start\" | \"center\" | \"end\" | \"stretch\";\n\nexport interface StackOwnProps {\n /** Space between children, on the gap scale. Default \"base\". */\n gap?: StackGap;\n /** Cross-axis alignment. Default \"stretch\". */\n align?: StackAlign;\n}\n\nexport type StackProps<T extends ElementType = \"div\"> = Polymorphic<T, StackOwnProps>;\n\n/**\n * Vertical flow. The parent owns spacing between siblings via gap —\n * children carry no outer margins. Token-bounded on purpose: no arbitrary\n * lengths, no style prop.\n *\n * ```tsx\n * <Stack gap=\"base\">\n * <Heading level={2}>Profile</Heading>\n * <Text tone=\"secondary\">Public information</Text>\n * </Stack>\n * ```\n */\nexport function Stack<T extends ElementType = \"div\">(props: StackProps<T>): ReactElement {\n const {\n gap = \"base\",\n align = \"stretch\",\n as = \"div\",\n className,\n ...rest\n } = props as AnyPolymorphic<StackOwnProps>;\n\n return createElement(as, {\n className: cx(styles.stack, styles[`gap-${gap}`], styles[`align-${align}`], className),\n ...rest,\n });\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Inline/Inline.module.css?mds-scoped\";\nexport default {\"inline\":\"mds-Inline__inline\",\"gap-hairline\":\"mds-Inline__gap-hairline\",\"gap-tight\":\"mds-Inline__gap-tight\",\"gap-base\":\"mds-Inline__gap-base\",\"gap-loose\":\"mds-Inline__gap-loose\",\"align-start\":\"mds-Inline__align-start\",\"align-center\":\"mds-Inline__align-center\",\"align-end\":\"mds-Inline__align-end\",\"align-baseline\":\"mds-Inline__align-baseline\",\"justify-start\":\"mds-Inline__justify-start\",\"justify-center\":\"mds-Inline__justify-center\",\"justify-end\":\"mds-Inline__justify-end\",\"justify-between\":\"mds-Inline__justify-between\",\"wrap\":\"mds-Inline__wrap\"};","import type { ElementType, ReactElement } from \"react\";\nimport { createElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { AnyPolymorphic, Polymorphic } from \"../../internal/polymorphic\";\nimport styles from \"./Inline.module.css\";\n\nexport type InlineGap = \"hairline\" | \"tight\" | \"base\" | \"loose\";\nexport type InlineAlign = \"start\" | \"center\" | \"end\" | \"baseline\";\nexport type InlineJustify = \"start\" | \"center\" | \"end\" | \"between\";\n\nexport interface InlineOwnProps {\n /** Space between children, on the gap scale. Default \"base\". */\n gap?: InlineGap;\n /** Cross-axis alignment. Default \"center\". */\n align?: InlineAlign;\n /** Main-axis distribution. Default \"start\". */\n justify?: InlineJustify;\n /** Allow wrapping onto new lines. */\n wrap?: boolean;\n}\n\nexport type InlineProps<T extends ElementType = \"div\"> = Polymorphic<T, InlineOwnProps>;\n\n/**\n * Horizontal flow — Stack's row twin. Same token-bounded contract.\n *\n * ```tsx\n * <Inline gap=\"tight\" align=\"center\" justify=\"between\">\n * <Text variant=\"label\">Total</Text>\n * <Text>42</Text>\n * </Inline>\n * ```\n */\nexport function Inline<T extends ElementType = \"div\">(props: InlineProps<T>): ReactElement {\n const {\n gap = \"base\",\n align = \"center\",\n justify = \"start\",\n wrap = false,\n as = \"div\",\n className,\n ...rest\n } = props as AnyPolymorphic<InlineOwnProps>;\n\n return createElement(as, {\n className: cx(\n styles.inline,\n styles[`gap-${gap}`],\n styles[`align-${align}`],\n styles[`justify-${justify}`],\n wrap && styles.wrap,\n className,\n ),\n ...rest,\n });\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Container/Container.module.css?mds-scoped\";\nexport default {\"container\":\"mds-Container__container\",\"width-content\":\"mds-Container__width-content\",\"width-wide\":\"mds-Container__width-wide\"};","import type { ElementType, ReactElement } from \"react\";\nimport { createElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { AnyPolymorphic, Polymorphic } from \"../../internal/polymorphic\";\nimport styles from \"./Container.module.css\";\n\nexport type ContainerWidth = \"content\" | \"wide\";\n\nexport interface ContainerOwnProps {\n /** content = reading column, wide = desktop shell. Default \"content\". */\n width?: ContainerWidth;\n}\n\nexport type ContainerProps<T extends ElementType = \"div\"> = Polymorphic<T, ContainerOwnProps>;\n\n/**\n * Centered max-width column with page-edge padding.\n *\n * ```tsx\n * <Container>\n * <Stack gap=\"section\">…</Stack>\n * </Container>\n * ```\n */\nexport function Container<T extends ElementType = \"div\">(props: ContainerProps<T>): ReactElement {\n const { width = \"content\", as = \"div\", className, ...rest } = props as AnyPolymorphic<ContainerOwnProps>;\n\n return createElement(as, {\n className: cx(styles.container, styles[`width-${width}`], className),\n ...rest,\n });\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Card/Card.module.css?mds-scoped\";\nexport default {\"card\":\"mds-Card__card\",\"variant-raised\":\"mds-Card__variant-raised\",\"variant-sunken\":\"mds-Card__variant-sunken\",\"emphasis\":\"mds-Card__emphasis\",\"interactive\":\"mds-Card__interactive\",\"header\":\"mds-Card__header\",\"body\":\"mds-Card__body\",\"footer\":\"mds-Card__footer\",\"clipped\":\"mds-Card__clipped\"};","import type { CSSProperties, ElementType, HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Card.module.css\";\n\nexport type CardVariant = \"card\" | \"raised\" | \"sunken\";\n\nexport interface CardProps extends Omit<HTMLAttributes<HTMLElement>, \"onClick\"> {\n children: ReactNode;\n /** card = flat on border, raised = elevated, sunken = recessed fill for\n secondary tiles. Default \"card\". */\n variant?: CardVariant;\n /** Accent border — marks the card out from its neighbours (a pinned post,\n the active choice) without changing its surface. */\n emphasis?: boolean;\n /** Makes the whole card a button. */\n onClick?: () => void;\n /** Makes the whole card a link. Wins over onClick. */\n href?: string;\n /** Element override for the root. With href, the link element — a router's\n Link. Without one, what the card is in the outline: a <section> that names\n itself, an <article> holding a post. No wrapper can supply that from\n outside, since the wrapper is not the card. Default div. */\n as?: ElementType;\n /** The root is an `<a>`, a `<button>` or a `<div>` depending on the props,\n so the ref is typed to what all three are. */\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * Surface container. Compose with CardHeader/CardBody/CardFooter — the card\n * owns internal spacing, sections own their content.\n *\n * ```tsx\n * <Card>\n * <CardHeader><Heading level={3}>Next session</Heading></CardHeader>\n * <CardBody><Text>Tomorrow, 19:00</Text></CardBody>\n * <CardFooter><Button size=\"sm\">Join</Button></CardFooter>\n * </Card>\n *\n * <Card href=\"/items/42\" variant=\"flat\">…</Card>\n * ```\n */\nexport function Card({ children, variant = \"card\", emphasis = false, onClick, href, as, className, ref, ...rest }: CardProps): ReactElement {\n const cardClass = cx(styles.card, styles[`variant-${variant}`], emphasis && styles.emphasis, className);\n\n if (href !== undefined) {\n const Element: ElementType = as ?? \"a\";\n return (\n <Element className={cx(cardClass, styles.interactive)} href={href} ref={ref as Ref<HTMLAnchorElement>} {...rest}>\n {children}\n </Element>\n );\n }\n if (onClick !== undefined) {\n return (\n <button\n type=\"button\"\n className={cx(cardClass, styles.interactive)}\n onClick={onClick}\n ref={ref as Ref<HTMLButtonElement>}\n {...rest}\n >\n {children}\n </button>\n );\n }\n const Element: ElementType = as ?? \"div\";\n return (\n <Element className={cardClass} ref={ref as Ref<HTMLDivElement>} {...rest}>\n {children}\n </Element>\n );\n}\n\nexport type CardSectionProps = HTMLAttributes<HTMLDivElement> & { ref?: Ref<HTMLDivElement> };\n\n/** Top slot — title row, media, tabs. */\nexport function CardHeader({ className, ...rest }: CardSectionProps): ReactElement {\n return <div className={cx(styles.header, className)} {...rest} />;\n}\n\nexport interface CardBodyProps extends CardSectionProps {\n /** How many lines of content the card affords. Past it the body clips, with\n an ellipsis on the last line. Unset, the body grows to what it holds. */\n lines?: number;\n}\n\n/**\n * Main content slot.\n *\n * The card is the box, so the box is what says how much of a thing fits:\n * `lines` clips whatever the body holds — a paragraph, two of them, a bare\n * string — rather than asking each child to clip itself.\n *\n * A budgeted body counts lines, which is a thing only `-webkit-box` does, so it\n * is no longer a flex column: `gap` between its children stops applying and a\n * margin is what separates them. A body doing layout for a card keeps its own\n * budget-free, and holds a budgeted one for the part that has to fit.\n */\nexport function CardBody({ lines, className, style, ...rest }: CardBodyProps): ReactElement {\n const vars = lines === undefined ? undefined : ({ \"--card-lines\": lines } as CSSProperties);\n return (\n <div\n className={cx(styles.body, lines !== undefined && styles.clipped, className)}\n style={{ ...vars, ...style }}\n {...rest}\n />\n );\n}\n\n/** Bottom slot — actions, meta. */\nexport function CardFooter({ className, ...rest }: CardSectionProps): ReactElement {\n return <div className={cx(styles.footer, className)} {...rest} />;\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Modal/Modal.module.css?mds-scoped\";\nexport default {\"panel\":\"mds-Modal__panel\",\"header\":\"mds-Modal__header\",\"headerTitle\":\"mds-Modal__headerTitle\",\"body\":\"mds-Modal__body\",\"footer\":\"mds-Modal__footer\"};","import type { ReactNode } from \"react\";\nimport { Overlay } from \"../../internal/Overlay\";\nimport styles from \"./Modal.module.css\";\n\nexport interface ModalProps {\n open: boolean;\n onClose: () => void;\n /** Accessible name of the dialog. */\n label: string;\n /** Scrim click dismisses. Default true. */\n closeOnScrimClick?: boolean;\n /** alertdialog interrupts — ConfirmDialog sets it. Default \"dialog\". */\n role?: \"dialog\" | \"alertdialog\";\n children: ReactNode;\n}\n\n/**\n * Centered dialog. Escape, scrim click (`closeOnScrimClick`), and focus trap\n * are handled. Compose the sections:\n *\n * ```tsx\n * <Modal open={open} onClose={() => setOpen(false)} label=\"Edit session\">\n * <ModalHeader>Edit session</ModalHeader>\n * <ModalBody>…</ModalBody>\n * <ModalFooter><Button onClick={save}>Save</Button></ModalFooter>\n * </Modal>\n * ```\n */\nexport function Modal({ open, onClose, label, closeOnScrimClick = true, role = \"dialog\", children }: ModalProps) {\n return (\n <Overlay\n open={open}\n onClose={onClose}\n label={label}\n variant=\"modal\"\n role={role}\n closeOnScrimClick={closeOnScrimClick}\n panelClassName={styles.panel}\n >\n {children}\n </Overlay>\n );\n}\n\nexport function ModalHeader({ children }: { children: ReactNode }) {\n return (\n <div className={styles.header}>\n {/* The panel's title is its heading, not a styled line of text. */}\n <h2 className={styles.headerTitle}>{children}</h2>\n </div>\n );\n}\n\nexport function ModalBody({ children }: { children: ReactNode }) {\n return <div className={styles.body}>{children}</div>;\n}\n\nexport function ModalFooter({ children }: { children: ReactNode }) {\n return <div className={styles.footer}>{children}</div>;\n}\n","import { useEffect } from \"react\";\nimport type { RefObject } from \"react\";\nimport { autoUpdate, computePosition, flip, offset, shift, size } from \"@floating-ui/dom\";\nimport type { Placement } from \"@floating-ui/dom\";\n\n/** Side the surface prefers, and the edge it lines up with. */\nexport type { Placement };\n\n/** How far a surface clears the viewport edge before shift() pulls it back. */\nconst VIEWPORT_PAD = 8;\n\n/** A surface shorter than this is not worth flipping to — it would scroll on\n two lines. Below it, size() stops shrinking and shift() takes over. */\nconst MIN_HEIGHT = 120;\n\nexport interface AnchoredPositionOptions {\n open: boolean;\n /** The element the surface hangs off. */\n anchorRef: RefObject<HTMLElement | null>;\n /** The surface itself. */\n floatingRef: RefObject<HTMLElement | null>;\n placement: Placement;\n /** Distance from the anchor, px. */\n gap: number;\n}\n\n/**\n * Keep a portalled surface pinned to its anchor.\n *\n * Writes `left`/`top` straight onto the element rather than through state:\n * autoUpdate fires on every scroll and resize frame of every scrollable\n * ancestor, and a re-render per frame is a re-render of the surface's whole\n * subtree. The resolved side lands in `data-placement` so the stylesheet can\n * grow the surface out of the edge it is actually attached to.\n */\nexport function useAnchoredPosition({\n open,\n anchorRef,\n floatingRef,\n placement,\n gap,\n}: AnchoredPositionOptions): void {\n useEffect(() => {\n const anchor = anchorRef.current;\n const floating = floatingRef.current;\n if (!open || anchor === null || floating === null) return;\n\n const update = () => {\n void computePosition(anchor, floating, {\n placement,\n strategy: \"fixed\",\n middleware: [\n offset(gap),\n // Order is load-bearing: choose the side first, then cap the height\n // to what that side has, then slide along the cross axis. Sizing\n // before flipping caps against the side being abandoned.\n flip({ padding: VIEWPORT_PAD }),\n size({\n padding: VIEWPORT_PAD,\n apply({ availableHeight, elements }) {\n elements.floating.style.maxHeight = `${Math.max(availableHeight, MIN_HEIGHT)}px`;\n },\n }),\n shift({ padding: VIEWPORT_PAD }),\n ],\n }).then(({ x, y, placement: resolved }) => {\n floating.style.left = `${x}px`;\n floating.style.top = `${y}px`;\n floating.dataset.placement = resolved;\n });\n };\n\n return autoUpdate(anchor, floating, update);\n }, [open, anchorRef, floatingRef, placement, gap]);\n}\n","import { useEffect, useRef } from \"react\";\nimport type { RefObject } from \"react\";\n\n/**\n * Close a non-modal surface when the pointer goes down anywhere outside it.\n *\n * pointerdown rather than click, for two reasons. A drag that starts inside\n * the surface and ends outside it is a text selection, not a dismissal, and\n * click fires on the release. And a trigger that toggles on click would see\n * the surface closed out from under it and reopen on the same press — which\n * is why the anchor is one of the elements passed in, not just the panel.\n */\nexport function useDismissOnOutside(\n open: boolean,\n onDismiss: () => void,\n inside: readonly RefObject<HTMLElement | null>[],\n): void {\n // Both change identity every render; the listener reads them at event time\n // so it can be attached once per open instead of re-attached per render.\n const latest = useRef({ onDismiss, inside });\n useEffect(() => {\n latest.current = { onDismiss, inside };\n });\n\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (event: PointerEvent) => {\n const target = event.target;\n if (!(target instanceof Node)) return;\n const { onDismiss: dismiss, inside: refs } = latest.current;\n if (refs.some((ref) => ref.current?.contains(target))) return;\n dismiss();\n };\n document.addEventListener(\"pointerdown\", onPointerDown);\n return () => document.removeEventListener(\"pointerdown\", onPointerDown);\n }, [open]);\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Popover/Popover.module.css?mds-scoped\";\nexport default {\"panel\":\"mds-Popover__panel\",\"header\":\"mds-Popover__header\",\"headerTitle\":\"mds-Popover__headerTitle\",\"close\":\"mds-Popover__close\",\"closeGlyph\":\"mds-Popover__closeGlyph\",\"body\":\"mds-Popover__body\",\"footer\":\"mds-Popover__footer\"};","import { createPortal } from \"react-dom\";\nimport type { ReactNode, RefObject } from \"react\";\nimport { useOverlay } from \"../../hooks/useOverlay\";\nimport { usePresence } from \"../../hooks/usePresence\";\nimport { useAnchoredPosition } from \"../../internal/useAnchoredPosition\";\nimport type { Placement } from \"../../internal/useAnchoredPosition\";\nimport { useDismissOnOutside } from \"../../internal/useDismissOnOutside\";\nimport { cx } from \"../../internal/cx\";\nimport { CloseGlyph } from \"../../internal/glyphs\";\nimport styles from \"./Popover.module.css\";\n\n/** Matches --mds-dur-fast; usePresence needs the number in JS. */\nexport const POPOVER_EXIT_MS = 120;\n\n/** Distance from the anchor, matching --mds-space-2. */\nconst GAP = 8;\n\nexport type PopoverPlacement = Placement;\n\nexport interface PopoverProps {\n open: boolean;\n onClose: () => void;\n /** The trigger the panel hangs off. It stays interactive while open. */\n anchorRef: RefObject<HTMLElement | null>;\n /** Accessible name of the panel. */\n label: string;\n /** Side it prefers. It flips and slides to stay on screen. Default \"bottom-start\". */\n placement?: PopoverPlacement;\n className?: string;\n children: ReactNode;\n}\n\n/**\n * Anchored, non-modal surface. The page behind it stays live and scrollable\n * and the panel travels with the anchor; a press outside, Escape, or the\n * trigger itself dismisses it.\n *\n * Modal by contrast: reach for Modal when the answer must come before anything\n * else, and for Sheet when the content is a task rather than a detail — a\n * form with its own header and footer belongs in one of those, not here.\n *\n * ```tsx\n * const anchor = useRef<HTMLButtonElement>(null);\n * const [open, setOpen] = useState(false);\n * <Button ref={anchor} aria-expanded={open} onClick={() => setOpen((v) => !v)}>\n * Equipment\n * </Button>\n * <Popover open={open} onClose={() => setOpen(false)} anchorRef={anchor} label=\"Equipment\">\n * <PopoverBody>…</PopoverBody>\n * </Popover>\n * ```\n */\nexport function Popover({\n open,\n onClose,\n anchorRef,\n label,\n placement = \"bottom-start\",\n className,\n children,\n}: PopoverProps) {\n const { mounted, visible } = usePresence(open, POPOVER_EXIT_MS);\n // Focus capture, Escape, Tab cycling and focus restore are the modal\n // surface's behaviour and are the same here; only the page lock differs.\n const panelRef = useOverlay<HTMLDivElement>({ open, onClose, lockScroll: false });\n useAnchoredPosition({ open: mounted, anchorRef, floatingRef: panelRef, placement, gap: GAP });\n useDismissOnOutside(open, onClose, [panelRef, anchorRef]);\n\n if (!mounted) return null;\n\n return createPortal(\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-label={label}\n tabIndex={-1}\n className={cx(styles.panel, className)}\n data-open={visible || undefined}\n >\n {children}\n </div>,\n document.body,\n );\n}\n\nexport type PopoverHeaderProps = { children: ReactNode } & (\n | {\n /** Renders a close button after the title. Wire it to the popover's own onClose. */\n onClose: () => void;\n /** Accessible name of the close button (localise). */\n closeLabel: string;\n }\n | { onClose?: undefined; closeLabel?: undefined }\n);\n\nexport function PopoverHeader({ children, onClose, closeLabel }: PopoverHeaderProps) {\n return (\n <div className={styles.header}>\n {/* Same contract as a sheet's header: the panel's title is the one\n landmark a reader jumping by heading has to go by. */}\n <h2 className={styles.headerTitle}>{children}</h2>\n {onClose !== undefined && (\n <button type=\"button\" aria-label={closeLabel} className={styles.close} onClick={onClose}>\n <CloseGlyph className={styles.closeGlyph} />\n </button>\n )}\n </div>\n );\n}\n\nexport function PopoverBody({ children }: { children: ReactNode }) {\n return <div className={styles.body}>{children}</div>;\n}\n\nexport function PopoverFooter({ children }: { children: ReactNode }) {\n return <div className={styles.footer}>{children}</div>;\n}\n","import type { KeyboardEvent, RefObject } from \"react\";\nimport { useCallback } from \"react\";\n\nexport interface RovingGroupOptions {\n /** Selector for the focusable items inside the container. */\n selector: string;\n /** Arrow axis. Default \"horizontal\". */\n orientation?: \"horizontal\" | \"vertical\" | \"both\";\n}\n\n/**\n * Arrow-key focus movement for composite widgets (toolbars, menus, tab bars).\n * Wraps at the edges; Home/End jump. Returns a keydown handler for the\n * container.\n */\nexport function useRovingGroup(\n ref: RefObject<HTMLElement | null>,\n { selector, orientation = \"horizontal\" }: RovingGroupOptions,\n): (event: KeyboardEvent<HTMLElement>) => void {\n return useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n const horizontal = orientation !== \"vertical\";\n const vertical = orientation !== \"horizontal\";\n const forward = (horizontal && event.key === \"ArrowRight\") || (vertical && event.key === \"ArrowDown\");\n const backward = (horizontal && event.key === \"ArrowLeft\") || (vertical && event.key === \"ArrowUp\");\n const home = event.key === \"Home\";\n const end = event.key === \"End\";\n if (!forward && !backward && !home && !end) return;\n\n const container = ref.current;\n if (container === null) return;\n const items = [...container.querySelectorAll<HTMLElement>(selector)].filter(\n (item) => !item.hasAttribute(\"disabled\"),\n );\n const current = items.indexOf(document.activeElement as HTMLElement);\n if (items.length === 0 || current === -1) return;\n\n event.preventDefault();\n const next = home\n ? 0\n : end\n ? items.length - 1\n : (current + (forward ? 1 : -1) + items.length) % items.length;\n items[next]?.focus();\n },\n [ref, selector, orientation],\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Menu/Menu.module.css?mds-scoped\";\nexport default {\"panel\":\"mds-Menu__panel\",\"item\":\"mds-Menu__item\",\"tone-danger\":\"mds-Menu__tone-danger\"};","import { createContext, useContext, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { KeyboardEvent, MouseEvent, ReactElement, ReactNode, Ref } from \"react\";\nimport { usePresence } from \"../../hooks/usePresence\";\nimport { useRovingGroup } from \"../../hooks/useRovingGroup\";\nimport { forkRef } from \"../../internal/forkRef\";\nimport { cx } from \"../../internal/cx\";\nimport { useAnchoredPosition } from \"../../internal/useAnchoredPosition\";\nimport type { Placement } from \"../../internal/useAnchoredPosition\";\nimport { useDismissOnOutside } from \"../../internal/useDismissOnOutside\";\nimport styles from \"./Menu.module.css\";\n\n/** Matches --mds-dur-fast; usePresence needs the number in JS. */\nexport const MENU_EXIT_MS = 120;\n\n/** Distance from the trigger, matching --mds-space-2. */\nconst GAP = 8;\n\nconst ITEM_SELECTOR = '[role=\"menuitem\"]';\n\nexport type MenuPlacement = Placement;\n\n/** What Menu needs to be able to put on its trigger. */\ntype MenuTriggerProps = {\n ref?: Ref<HTMLElement> | undefined;\n \"aria-haspopup\"?: \"menu\" | undefined;\n \"aria-expanded\"?: boolean | undefined;\n onClick?: ((event: MouseEvent<HTMLElement>) => void) | undefined;\n onKeyDown?: ((event: KeyboardEvent<HTMLElement>) => void) | undefined;\n};\n\n/** Closing an open menu, and what focus does about it. */\nconst MenuContext = createContext<{ close: () => void } | null>(null);\n\nexport interface MenuProps {\n /** Accessible name of the menu — what the list of actions is *for*. */\n label: string;\n /** The control that opens it. Gets the ref, the ARIA and the key handling. */\n trigger: ReactElement<MenuTriggerProps>;\n /** Side it prefers. It flips and slides to stay on screen. Default \"bottom-end\". */\n placement?: MenuPlacement;\n className?: string;\n children: ReactNode;\n}\n\n/**\n * A button that opens a short list of actions (APG's menu button).\n *\n * Open state is the menu's own: a list of actions has no meaning outside the\n * button that opened it, so unlike Modal, Sheet and Popover there is nothing\n * for a caller to hold. Reach for Popover instead the moment the panel holds\n * anything but actions — a form, a filter, a list of things to read.\n *\n * ```tsx\n * <Menu label=\"Heat actions\" trigger={<Button variant=\"ghost\">Actions</Button>}>\n * <MenuItem onSelect={edit}>Edit</MenuItem>\n * <MenuItem onSelect={remove} tone=\"danger\">Delete</MenuItem>\n * </Menu>\n * ```\n */\nexport function Menu({ label, trigger, placement = \"bottom-end\", className, children }: MenuProps) {\n const [open, setOpen] = useState(false);\n const { mounted, visible } = usePresence(open, MENU_EXIT_MS);\n const triggerRef = useRef<HTMLElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n\n /* Two ways to shut: one where the reader is still on the keyboard and the\n trigger is where they left off, and one where the pointer has already\n landed somewhere else and pulling focus back would be a theft. */\n const close = () => {\n setOpen(false);\n triggerRef.current?.focus();\n };\n const dismiss = () => setOpen(false);\n\n useAnchoredPosition({ open: mounted, anchorRef: triggerRef, floatingRef: panelRef, placement, gap: GAP });\n useDismissOnOutside(open, dismiss, [panelRef, triggerRef]);\n\n const onArrowKeys = useRovingGroup(panelRef, {\n selector: ITEM_SELECTOR,\n orientation: \"vertical\",\n });\n\n /* Opening lands on the first action, so the next arrow key moves through the\n list instead of opening something. */\n useEffect(() => {\n if (!open) return;\n const first = panelRef.current?.querySelector<HTMLElement>(\n `${ITEM_SELECTOR}:not([disabled])`,\n );\n first?.focus();\n }, [open]);\n\n const openWithKeyboard = (event: KeyboardEvent<HTMLElement>) => {\n if (event.key !== \"ArrowDown\" && event.key !== \"ArrowUp\") return;\n event.preventDefault();\n setOpen(true);\n };\n\n /* The trigger is rebuilt from its own type and props rather than cloned. It\n renders identically, and the fork lands on a JSX ref attribute — which is\n what says \"hand this the node at commit\" rather than \"read a ref while\n rendering\", the thing cloneElement's props object cannot express. */\n const { type: Trigger, props: triggerProps } = trigger;\n\n return (\n <MenuContext.Provider value={{ close }}>\n <Trigger\n {...triggerProps}\n ref={forkRef(triggerRef, triggerProps.ref)}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n onClick={(event: MouseEvent<HTMLElement>) => {\n triggerProps.onClick?.(event);\n setOpen((v) => !v);\n }}\n onKeyDown={(event: KeyboardEvent<HTMLElement>) => {\n triggerProps.onKeyDown?.(event);\n openWithKeyboard(event);\n }}\n />\n {mounted &&\n createPortal(\n <div\n ref={panelRef}\n role=\"menu\"\n aria-label={label}\n className={cx(styles.panel, className)}\n data-open={visible || undefined}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.stopPropagation();\n close();\n return;\n }\n /* Tab out of a menu closes it (APG). Focus goes back to the\n trigger rather than onward: the panel is portalled to the end\n of <body>, so \"onward\" from inside it is nowhere near where\n the reader thinks they are. */\n if (event.key === \"Tab\") {\n event.preventDefault();\n close();\n return;\n }\n onArrowKeys(event);\n }}\n >\n {children}\n </div>,\n document.body,\n )}\n </MenuContext.Provider>\n );\n}\n\nexport interface MenuItemProps {\n /** What the action does. The menu closes itself around it. */\n onSelect: () => void;\n disabled?: boolean;\n /** \"danger\" for an action that destroys something. Default \"default\". */\n tone?: \"default\" | \"danger\";\n children: ReactNode;\n}\n\nexport function MenuItem({ onSelect, disabled = false, tone = \"default\", children }: MenuItemProps) {\n const menu = useContext(MenuContext);\n return (\n <button\n type=\"button\"\n role=\"menuitem\"\n // The menu is one stop on the page's tab ring; the arrow keys move\n // inside it, so the items are focusable but not tabbable.\n tabIndex={-1}\n disabled={disabled}\n className={cx(styles.item, styles[`tone-${tone}`])}\n onClick={() => {\n onSelect();\n menu?.close();\n }}\n >\n {children}\n </button>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tooltip/Tooltip.module.css?mds-scoped\";\nexport default {\"surface\":\"mds-Tooltip__surface\"};","import { useEffect, useId, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { FocusEvent, PointerEvent, ReactElement, ReactNode, Ref } from \"react\";\nimport { forkRef } from \"../../internal/forkRef\";\nimport { useAnchoredPosition } from \"../../internal/useAnchoredPosition\";\nimport type { Placement } from \"../../internal/useAnchoredPosition\";\nimport styles from \"./Tooltip.module.css\";\n\n/** Distance from the trigger, matching --mds-space-2. */\nconst GAP = 8;\n\n/** Pointer dwell before it appears. Long enough that crossing the control on\n the way somewhere else does not flash a label. */\nconst DEFAULT_DELAY_MS = 400;\n\nexport type TooltipPlacement = Placement;\n\n/** What Tooltip needs to be able to put on its trigger. */\ntype TriggerProps = {\n ref?: Ref<HTMLElement> | undefined;\n \"aria-describedby\"?: string | undefined;\n onPointerEnter?: ((event: PointerEvent<HTMLElement>) => void) | undefined;\n onPointerLeave?: ((event: PointerEvent<HTMLElement>) => void) | undefined;\n onFocus?: ((event: FocusEvent<HTMLElement>) => void) | undefined;\n onBlur?: ((event: FocusEvent<HTMLElement>) => void) | undefined;\n};\n\nexport interface TooltipProps {\n /** The label. Plain text — nothing here is reachable by pointer or key. */\n content: ReactNode;\n /** Side it prefers. It flips and slides to stay on screen. Default \"top\". */\n placement?: TooltipPlacement;\n /** Pointer dwell in ms. Keyboard focus ignores it. Default 400. */\n delayMs?: number;\n /** The control being labelled. Gets the ref and the handlers. */\n children: ReactElement<TriggerProps>;\n}\n\n/**\n * A name for a control that shows only its glyph, on hover and on focus.\n *\n * It describes; it does not hold anything. There is nothing to click inside\n * it and focus never moves into it, so anything the reader has to act on —\n * a link, a button, a form — belongs in a Popover instead. A control whose\n * label is *only* here still needs an aria-label of its own: this is the\n * accessible description, not the accessible name.\n *\n * ```tsx\n * <Tooltip content=\"Remove from heat\">\n * <Button variant=\"ghost\" aria-label=\"Remove from heat\"><Icon name=\"x\" /></Button>\n * </Tooltip>\n * ```\n */\nexport function Tooltip({\n content,\n placement = \"top\",\n delayMs = DEFAULT_DELAY_MS,\n children,\n}: TooltipProps) {\n const id = useId();\n const [open, setOpen] = useState(false);\n const anchorRef = useRef<HTMLElement>(null);\n const surfaceRef = useRef<HTMLDivElement>(null);\n const timer = useRef<ReturnType<typeof setTimeout>>(undefined);\n\n const show = () => {\n clearTimeout(timer.current);\n setOpen(true);\n };\n const hide = () => {\n clearTimeout(timer.current);\n setOpen(false);\n };\n\n useEffect(() => clearTimeout(timer.current), []);\n\n useAnchoredPosition({ open, anchorRef, floatingRef: surfaceRef, placement, gap: GAP });\n\n /* WCAG 1.4.13 (Content on Hover or Focus): whatever put it there, Escape\n takes it away without moving the pointer or the focus. */\n useEffect(() => {\n if (!open) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") hide();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [open]);\n\n /* The trigger is rebuilt from its own type and props rather than cloned. It\n renders identically, and the fork lands on a JSX ref attribute — which is\n what says \"hand this the node at commit\" rather than \"read a ref while\n rendering\", the thing cloneElement's props object cannot express. */\n const { type: Trigger, props: triggerProps } = children;\n\n return (\n <>\n <Trigger\n {...triggerProps}\n ref={forkRef(anchorRef, triggerProps.ref)}\n // Only while it exists: a describedby pointing at nothing is a broken\n // reference, and axe reads it as one.\n aria-describedby={open ? id : triggerProps[\"aria-describedby\"]}\n onPointerEnter={(event: PointerEvent<HTMLElement>) => {\n triggerProps.onPointerEnter?.(event);\n // A touch fires pointerenter with no way to leave, so the label would\n // stick until the next tap somewhere else. Touch gets nothing here;\n // the control needs a real name either way.\n if (event.pointerType === \"touch\") return;\n clearTimeout(timer.current);\n timer.current = setTimeout(show, delayMs);\n }}\n onPointerLeave={(event: PointerEvent<HTMLElement>) => {\n triggerProps.onPointerLeave?.(event);\n hide();\n }}\n // No dwell on focus: the reader has already committed to the control,\n // and a delay on a keyboard path reads as the tooltip being broken.\n onFocus={(event: FocusEvent<HTMLElement>) => {\n triggerProps.onFocus?.(event);\n show();\n }}\n onBlur={(event: FocusEvent<HTMLElement>) => {\n triggerProps.onBlur?.(event);\n hide();\n }}\n />\n {open &&\n createPortal(\n <div ref={surfaceRef} id={id} role=\"tooltip\" className={styles.surface}>\n {content}\n </div>,\n document.body,\n )}\n </>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ConfirmDialog/ConfirmDialog.module.css?mds-scoped\";\nexport default {\"description\":\"mds-ConfirmDialog__description\",\"error\":\"mds-ConfirmDialog__error\"};","import type { ReactNode } from \"react\";\nimport { useState } from \"react\";\nimport { Button } from \"../Button/Button\";\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from \"../Modal/Modal\";\nimport styles from \"./ConfirmDialog.module.css\";\n\nexport type ConfirmDialogTone = \"default\" | \"danger\" | \"warning\";\n\nexport interface ConfirmDialogProps<T = void> {\n /** The row in question, or null when nothing is being asked. Held by the\n caller — only it knows which row was tapped — and handed back to\n `onConfirm`, so the action runs against the row the user actually saw. */\n target?: T | null;\n /** Defaults to \"there is a row in question\"; pass it directly for a\n one-off prompt that has no row. */\n open?: boolean;\n /** Cancel, or the action having landed. Clear the row here. */\n onClose?: () => void;\n /** The action, given the row it was asked about. Return the promise the\n write is riding on — typically `mutateAsync(...)` — and do not catch:\n a handled rejection resolves, and a resolved action is\n indistinguishable from a write that landed. Typed as a promise so\n fire-and-forget is a type error rather than a prompt that closes on\n the click. */\n onConfirm?: (target: T) => Promise<unknown>;\n /** Short question, e.g. \"Delete session?\" */\n title: string;\n /** Consequence explained in a sentence or two. */\n description?: ReactNode;\n confirmLabel: string;\n /** Names the way out, e.g. \"Cancel\". Required: it is a button with words on\n it, and the words are the app's. */\n cancelLabel: string;\n /** Styles the confirm action: danger for destructive, warning for\n consequential-but-recoverable. */\n tone?: ConfirmDialogTone;\n /** How to phrase a failure, given the error's own message. Defaults to\n that message — supply this rather than catching inside `onConfirm`,\n so the copy stays with the caller. */\n errorMessage?: (message: string) => string;\n}\n\n/** What the panel is showing, the row included. Frozen at close so the exit\n animation still has a question to animate away after the caller has\n dropped what it was asking about. */\ninterface Shown<T> {\n target: T | null | undefined;\n title: string;\n description: ReactNode;\n confirmLabel: string;\n cancelLabel: string;\n tone: ConfirmDialogTone;\n}\n\nconst CONFIRM_VARIANT = {\n default: \"primary\",\n danger: \"danger\",\n warning: \"warning\",\n} as const;\n\n/**\n * A binary confirm/cancel prompt for consequential actions. role=\"alertdialog\"\n * so assistive tech announces it and holds focus until the user decides.\n *\n * The prompt owns everything downstream of the tap: it stays busy until\n * `onConfirm` settles, closes only once the write has landed, and keeps\n * itself up with the reason shown if it fails. Callers supply the question,\n * not the mechanics.\n *\n * ```tsx\n * <ConfirmDialog\n * target={asked}\n * onClose={() => setAsked(null)}\n * onConfirm={(row) => remove.mutateAsync(row.id)}\n * title=\"Delete session?\"\n * description=\"This cannot be undone.\"\n * confirmLabel=\"Delete\"\n * cancelLabel=\"Cancel\"\n * tone=\"danger\"\n * />\n * ```\n */\nexport function ConfirmDialog<T = void>({\n target,\n open = target != null,\n onClose,\n onConfirm,\n title,\n description,\n confirmLabel,\n cancelLabel,\n tone = \"default\",\n errorMessage,\n}: ConfirmDialogProps<T>) {\n const [busy, setBusy] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Each new question starts idle. Reset on the way in rather than on the\n // way out: on the way out the panel is still visible, and wiping the\n // spinner there restores the unanswered question for the length of the\n // exit animation. Render-phase adjust, the \"state from props\" pattern —\n // an effect would paint the stale frame first.\n const [prevOpen, setPrevOpen] = useState(open);\n if (open !== prevOpen) {\n setPrevOpen(open);\n if (open) {\n setBusy(false);\n setError(null);\n }\n }\n\n // While open, show the live props. Closing freezes them (in the close\n // handlers, where state writes are free) because the closing render's\n // props are already stale: the caller clears its row in the same set of\n // state updates that closes the prompt.\n const live: Shown<T> = { target, title, description, confirmLabel, cancelLabel, tone };\n const [frozen, setFrozen] = useState<Shown<T>>(live);\n const view = open ? live : frozen;\n\n const close = () => {\n setFrozen(live);\n onClose?.();\n };\n\n const handleConfirm = async () => {\n if (!onConfirm) return;\n // Read the row now, at the tap, not after the await: by then the caller\n // has been told to close and has cleared it.\n const asked = live.target as T;\n setBusy(true);\n setError(null);\n try {\n await onConfirm(asked);\n // Only now: before this point the write may still fail, and a prompt\n // that has already closed has told the user something it doesn't know.\n close();\n } catch (e) {\n setBusy(false);\n const message = (e as Error).message;\n setError(errorMessage?.(message) ?? message);\n }\n };\n\n return (\n <Modal\n open={open}\n // Escape must always work — dropping onClose while busy would leave\n // the dialog with no keyboard exit (WCAG 2.1.2). The scrim stays\n // guarded regardless, so a stray click can't dismiss the question.\n onClose={close}\n label={view.title}\n role=\"alertdialog\"\n closeOnScrimClick={false}\n >\n <ModalHeader>{view.title}</ModalHeader>\n <ModalBody>\n {view.description != null ? <p className={styles.description}>{view.description}</p> : null}\n {error != null ? (\n <p role=\"alert\" className={styles.error}>\n {error}\n </p>\n ) : null}\n </ModalBody>\n <ModalFooter>\n {/* Stays enabled while busy so focus always has an operable home\n (only Confirm is locked, to block a double submit). */}\n <Button variant=\"secondary\" onClick={close}>\n {view.cancelLabel}\n </Button>\n <Button variant={CONFIRM_VARIANT[view.tone]} loading={busy} onClick={handleConfirm}>\n {view.confirmLabel}\n </Button>\n </ModalFooter>\n </Modal>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Screen/Screen.module.css?mds-scoped\";\nexport default {\"screen\":\"mds-Screen__screen\",\"content\":\"mds-Screen__content\",\"flush\":\"mds-Screen__flush\"};","import type { HTMLAttributes, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Screen.module.css\";\n\n/**\n * Page scaffold. Compose:\n *\n * ```tsx\n * <Screen>\n * <AppBar title=\"Sessions\" />\n * <ScreenContent>…</ScreenContent>\n * <TabBar label=\"Primary\">…</TabBar>\n * </Screen>\n * ```\n *\n * Fills the height its host gives it — the app root, a device frame, a\n * `flex: 1; min-height: 0` slot — rather than claiming the viewport itself:\n * on iOS the software keyboard shrinks the visual viewport without shrinking\n * 100dvh, so only the host can know the real height. A standalone app gives\n * the root chain `height: 100%`.\n */\nexport function Screen({ children }: { children: ReactNode }) {\n return <div className={styles.screen}>{children}</div>;\n}\n\nexport interface ScreenContentProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode;\n /** Drop the page gutter — full-bleed lists whose rows carry their own\n padding. Default keeps it: forms and prose want the margin. */\n flush?: boolean;\n /** The scrolling element. A screen that drives the scroll — restores an\n offset on back, pins a thread to the bottom — has no other way to reach\n it. Read it; restyling it is the sheet's job. */\n ref?: Ref<HTMLElement>;\n}\n\n/** The scrollable main region of a Screen. */\nexport function ScreenContent({ children, flush = false, className, ref, ...rest }: ScreenContentProps) {\n return (\n <main ref={ref} className={cx(styles.content, flush && styles.flush, className)} {...rest}>\n {children}\n </main>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/AppBar/AppBar.module.css?mds-scoped\";\nexport default {\"bar\":\"mds-AppBar__bar\",\"title\":\"mds-AppBar__title\",\"text\":\"mds-AppBar__text\",\"subtitle\":\"mds-AppBar__subtitle\",\"slot\":\"mds-AppBar__slot\",\"trailing\":\"mds-AppBar__trailing\"};","import type { HTMLAttributes, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./AppBar.module.css\";\n\nexport interface AppBarProps extends Omit<HTMLAttributes<HTMLElement>, \"title\"> {\n /** Page heading — rendered as the h1. A node is allowed for titles that\n are themselves a control (e.g. a thread title that opens the event). */\n title?: ReactNode;\n /** Second line under the title — a member count, a status. Kept out of\n the h1 so the accessible page name stays just the title. */\n subtitle?: ReactNode;\n /** Left slot — typically a back icon-only Button. */\n leading?: ReactNode;\n /** Right slot — actions. */\n trailing?: ReactNode;\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * Top app bar. Sticky, one per screen; the title is the page h1.\n *\n * ```tsx\n * <AppBar\n * title=\"Sessions\"\n * trailing={\n * <Button iconOnly aria-label=\"Settings\" variant=\"ghost\" onClick={openSettings}>\n * <Icon name=\"settings\" />\n * </Button>\n * }\n * />\n * ```\n */\nexport function AppBar({ title, subtitle, leading, trailing, className, ref, ...rest }: AppBarProps) {\n const heading = title ? <h1 className={styles.title}>{title}</h1> : null;\n return (\n <header ref={ref} className={cx(styles.bar, className)} {...rest}>\n {leading ? <div className={styles.slot}>{leading}</div> : null}\n {subtitle != null ? (\n <div className={styles.text}>\n {heading}\n <div className={styles.subtitle}>{subtitle}</div>\n </div>\n ) : (\n heading\n )}\n {trailing ? <div className={`${styles.slot} ${styles.trailing}`}>{trailing}</div> : null}\n </header>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/TabBar/TabBar.module.css?mds-scoped\";\nexport default {\"bar\":\"mds-TabBar__bar\",\"item\":\"mds-TabBar__item\",\"active\":\"mds-TabBar__active\",\"icon\":\"mds-TabBar__icon\",\"badge\":\"mds-TabBar__badge\",\"label\":\"mds-TabBar__label\",\"action\":\"mds-TabBar__action\"};","import type { ElementType, MouseEventHandler, ReactNode } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { VisuallyHidden } from \"../VisuallyHidden/VisuallyHidden\";\nimport styles from \"./TabBar.module.css\";\n\nexport interface TabBarProps {\n /** Accessible name of the navigation landmark. */\n label: string;\n children: ReactNode;\n}\n\n/**\n * Bottom navigation. Items are links (or buttons for non-route actions);\n * they stay in the natural tab order — roving focus is for composite\n * widgets, not navigation landmarks.\n *\n * ```tsx\n * <TabBar label=\"Primary\">\n * <TabBarItem label=\"Home\" icon={<Icon name=\"home\" />} href=\"/\" active />\n * <TabBarItem label=\"Search\" icon={<Icon name=\"search\" />} href=\"/search\" />\n * </TabBar>\n * ```\n */\nexport function TabBar({ label, children }: TabBarProps) {\n return (\n <nav aria-label={label} className={styles.bar}>\n {children}\n </nav>\n );\n}\n\nexport interface TabBarItemProps {\n label: string;\n icon: ReactNode;\n href?: string | undefined;\n onClick?: MouseEventHandler | undefined;\n active?: boolean | undefined;\n /** Attention dot on the icon — unread, pending. Boolean only: the count\n lives on the destination screen, the bar just says \"something's there\". */\n badge?: boolean | undefined;\n /** Element override for the link, e.g. a router's Link. A bottom bar is\n where a full page reload costs the most — it restarts the whole shell. */\n as?: ElementType;\n /** Take the caption off the screen and leave it in the accessible name.\n For a bar whose glyphs carry the meaning: four captions on the narrowest\n phone wrap, and a translation twice the length of the English wraps\n everywhere. Hidden, never dropped — the word is the item's name. */\n hideLabel?: boolean | undefined;\n}\n\nexport function TabBarItem({\n label,\n icon,\n href,\n onClick,\n active = false,\n badge = false,\n as,\n hideLabel = false,\n}: TabBarItemProps) {\n const className = cx(styles.item, active && styles.active);\n const content = (\n <>\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n {badge ? <span className={styles.badge} data-testid=\"mds-tabbar-badge\" /> : null}\n </span>\n {hideLabel ? (\n <VisuallyHidden>{label}</VisuallyHidden>\n ) : (\n <span className={styles.label}>{label}</span>\n )}\n </>\n );\n if (href !== undefined) {\n const Element: ElementType = as ?? \"a\";\n return (\n <Element href={href} className={className} aria-current={active ? \"page\" : undefined} onClick={onClick}>\n {content}\n </Element>\n );\n }\n return (\n <button type=\"button\" className={className} aria-current={active ? \"page\" : undefined} onClick={onClick}>\n {content}\n </button>\n );\n}\n\nexport interface TabBarActionProps {\n /** Names the action — icon-only, so this is all a screen reader gets. */\n label: string;\n icon: ReactNode;\n onClick?: MouseEventHandler | undefined;\n}\n\n/** Raised center action (a create button). Place it between the item halves:\n it is a peer child, and the bar's flex layout leaves it its own width. */\nexport function TabBarAction({ label, icon, onClick }: TabBarActionProps) {\n return (\n <button type=\"button\" aria-label={label} className={styles.action} onClick={onClick}>\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n </button>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/SideNav/SideNav.module.css?mds-scoped\";\nexport default {\"nav\":\"mds-SideNav__nav\",\"group\":\"mds-SideNav__group\",\"heading\":\"mds-SideNav__heading\",\"item\":\"mds-SideNav__item\",\"active\":\"mds-SideNav__active\",\"icon\":\"mds-SideNav__icon\",\"label\":\"mds-SideNav__label\",\"count\":\"mds-SideNav__count\"};","import type { ElementType, HTMLAttributes, MouseEventHandler, ReactElement, ReactNode, Ref } from \"react\";\nimport { useId } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Badge } from \"../Badge/Badge\";\nimport styles from \"./SideNav.module.css\";\n\nexport interface SideNavProps extends Omit<HTMLAttributes<HTMLElement>, \"children\"> {\n /** Accessible name of the navigation landmark. There is more than one\n navigation on a page wide enough to show this one. */\n label: string;\n children: ReactNode;\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * The standing column of destinations, from the width where it costs nothing.\n * TabBar is the same list on a phone; both are navigation landmarks whose\n * items stay in the natural tab order — roving focus is for composite\n * widgets, not for navigation.\n *\n * ```tsx\n * <SideNav label=\"Primary\">\n * <SideNavItem label=\"Home\" icon={<Icon name=\"home\" />} href=\"/\" active />\n * <Divider />\n * <SideNavGroup label=\"More\">\n * <SideNavItem label=\"Settings\" icon={<Icon name=\"settings\" />} href=\"/settings\" />\n * </SideNavGroup>\n * <Button fullWidth iconLeft={<Icon name=\"plus\" />} onClick={compose}>New post</Button>\n * </SideNav>\n * ```\n *\n * The column's own placement is the host's — a sticky offset under a header,\n * a fixed rail, a plain block — so it takes a className and sets none of it.\n */\nexport function SideNav({ label, className, children, ref, ...rest }: SideNavProps): ReactElement {\n return (\n <nav ref={ref} aria-label={label} className={cx(styles.nav, className)} {...rest}>\n {children}\n </nav>\n );\n}\n\nexport interface SideNavGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Heading over the run, which also names it to a screen reader. Without\n one the rows are still a run on screen and nothing to be told about, so\n the group takes no role. */\n label?: ReactNode;\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n}\n\n/** A run of destinations under one heading, or none. */\nexport function SideNavGroup({\n label,\n className,\n children,\n ref,\n ...rest\n}: SideNavGroupProps): ReactElement {\n const headingId = useId();\n\n return (\n <div\n ref={ref}\n className={cx(styles.group, className)}\n role={label != null ? \"group\" : undefined}\n aria-labelledby={label != null ? headingId : undefined}\n {...rest}\n >\n {label != null && (\n <span className={styles.heading} id={headingId}>\n {label}\n </span>\n )}\n {children}\n </div>\n );\n}\n\nexport interface SideNavItemProps {\n label: ReactNode;\n icon?: ReactNode;\n href?: string | undefined;\n onClick?: MouseEventHandler | undefined;\n /** The destination the reader is on. Lands as aria-current=\"page\". */\n active?: boolean | undefined;\n /** How many are waiting, at the far end of the row. Nothing at zero: an\n absence needs no mark. */\n count?: number | undefined;\n /** What the count counts, in words — the badge is read as this, and a bare\n number is read as nothing. */\n countLabel?: string | undefined;\n /** The last number worth printing; above it the badge says `99+`, because\n the column's width is fixed and a fourth digit takes it from the word. */\n max?: number | undefined;\n /** Element override for the link, e.g. a router's Link. */\n as?: ElementType;\n}\n\n/** One destination. A link where it has one, a button where it does not. */\nexport function SideNavItem({\n label,\n icon,\n href,\n onClick,\n active = false,\n count,\n countLabel,\n max = 99,\n as,\n}: SideNavItemProps): ReactElement {\n const className = cx(styles.item, active && styles.active);\n const current = active ? \"page\" : undefined;\n const content = (\n <>\n {icon != null && (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span className={styles.label}>{label}</span>\n {count !== undefined && count > 0 && (\n <Badge tone=\"accent\" role=\"status\" aria-label={countLabel} className={styles.count}>\n {count > max ? `${max}+` : count}\n </Badge>\n )}\n </>\n );\n\n if (href !== undefined) {\n const Element: ElementType = as ?? \"a\";\n return (\n <Element href={href} className={className} aria-current={current} onClick={onClick}>\n {content}\n </Element>\n );\n }\n\n return (\n <button type=\"button\" className={className} aria-current={current} onClick={onClick}>\n {content}\n </button>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/MediaPlaceholder/MediaPlaceholder.module.css?mds-scoped\";\nexport default {\"media\":\"mds-MediaPlaceholder__media\",\"fill\":\"mds-MediaPlaceholder__fill\",\"image\":\"mds-MediaPlaceholder__image\",\"caption\":\"mds-MediaPlaceholder__caption\",\"cover\":\"mds-MediaPlaceholder__cover\",\"blurred\":\"mds-MediaPlaceholder__blurred\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { CSSVars } from \"../../internal/cx\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./MediaPlaceholder.module.css\";\n\nexport interface MediaPlaceholderProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** CSS aspect-ratio for the box, e.g. \"4 / 5\". Default 16 / 9. */\n aspect?: string;\n /** Picture to draw. Absent, or broken, leaves the empty surface showing. */\n src?: string;\n /** Describes the picture. Empty = decorative, which is the honest default:\n a file name is not a description. */\n alt?: string;\n /** Glyph for the empty surface — an <Icon> or any node. */\n glyph?: ReactNode;\n /** A few words under the glyph, or over the picture. */\n caption?: string;\n /** Obscures the media without hiding that there is media. */\n blurred?: boolean;\n /** Drawn over the surface, outside the blur — a reveal prompt, a badge, a\n play button. The consent vocabulary that usually goes here belongs to the\n app, so the system takes it as a node and asks no questions about it. */\n cover?: ReactNode;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * The box a picture goes in, whether or not there is one yet.\n *\n * ```tsx\n * <MediaPlaceholder\n * aspect=\"4 / 5\"\n * src={post.media.src}\n * alt={post.media.alt}\n * blurred={!revealed}\n * cover={post.sensitive && <SensitiveMediaOverlay onReveal={reveal} />}\n * />\n * ```\n */\nexport function MediaPlaceholder({\n aspect,\n src,\n alt = \"\",\n glyph,\n caption,\n blurred = false,\n cover,\n className,\n style,\n ...rest\n}: MediaPlaceholderProps): ReactElement {\n /* The source that failed, not a flag: a flag stays true after the caller\n hands over a different picture, and the second one never gets drawn. */\n const [failed, setFailed] = useState<string>();\n const picture = src !== undefined && failed !== src;\n const vars = (aspect === undefined ? {} : { \"--media-aspect\": aspect }) as CSSVars;\n\n return (\n <div\n className={cx(styles.media, blurred && styles.blurred, className)}\n style={{ ...vars, ...style }}\n {...rest}\n >\n {picture ? (\n <img\n className={styles.image}\n src={src}\n alt={alt}\n loading=\"lazy\"\n decoding=\"async\"\n onError={() => setFailed(src)}\n />\n ) : (\n <div className={styles.fill} aria-hidden=\"true\">\n {glyph}\n {caption !== undefined && <Text variant=\"meta\">{caption}</Text>}\n </div>\n )}\n {picture && caption !== undefined && (\n <Text variant=\"meta\" tone=\"on-media\" className={styles.caption}>\n {caption}\n </Text>\n )}\n {cover !== undefined && <div className={styles.cover}>{cover}</div>}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ImageCarousel/ImageCarousel.module.css?mds-scoped\";\nexport default {\"carousel\":\"mds-ImageCarousel__carousel\",\"viewport\":\"mds-ImageCarousel__viewport\",\"slide\":\"mds-ImageCarousel__slide\",\"step\":\"mds-ImageCarousel__step\",\"zoom\":\"mds-ImageCarousel__zoom\",\"prev\":\"mds-ImageCarousel__prev\",\"next\":\"mds-ImageCarousel__next\",\"counter\":\"mds-ImageCarousel__counter\",\"thumbs\":\"mds-ImageCarousel__thumbs\",\"thumb\":\"mds-ImageCarousel__thumb\",\"more\":\"mds-ImageCarousel__more\",\"dots\":\"mds-ImageCarousel__dots\",\"dot\":\"mds-ImageCarousel__dot\"};","import type { HTMLAttributes, KeyboardEvent, PointerEvent, ReactElement, ReactNode, Ref } from \"react\";\nimport { useRef, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { ChevronLeftGlyph, ChevronRightGlyph } from \"../../internal/glyphs\";\nimport { Button } from \"../Button/Button\";\nimport { MediaPlaceholder } from \"../MediaPlaceholder/MediaPlaceholder\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./ImageCarousel.module.css\";\n\nexport interface CarouselSlide {\n id: string;\n src?: string;\n alt?: string;\n /** CSS aspect-ratio for this frame. Default 4 / 3. */\n aspect?: string;\n caption?: string;\n /** Obscures the frame and takes away the way into it: a covered frame does\n not open larger, however it is tapped. */\n covered?: boolean;\n /** Drawn over the frame, outside the blur — whatever the app asks consent\n with. */\n cover?: ReactNode;\n}\n\nexport type CarouselPager = \"thumbnails\" | \"dots\" | \"none\";\n\nexport interface ImageCarouselLabels {\n /** Names the carousel landmark, e.g. \"Images\". */\n region: string;\n /** Read out in place of \"region\", e.g. \"carousel\". A screen reader says it\n aloud, so it is the app's word in the app's language. */\n carouselRole: string;\n /** The same for one frame, e.g. \"slide\". */\n slideRole: string;\n previous: string;\n next: string;\n /** \"3 of 8\" — a function, because only the app knows how its language counts. */\n counter: (current: number, total: number) => string;\n /** Names one frame's thumbnail or dot, e.g. \"Image 3\". */\n slide: (position: number) => string;\n /** Names the button standing for the frames no thumbnail fits. */\n more: (hidden: number) => string;\n}\n\nexport type ImageCarouselProps = Omit<HTMLAttributes<HTMLElement>, \"children\" | \"onChange\"> & {\n slides: CarouselSlide[];\n labels: ImageCarouselLabels;\n /** Held index. Unset, the carousel keeps its own. */\n index?: number;\n defaultIndex?: number;\n onIndexChange?: (index: number) => void;\n pager?: CarouselPager;\n maxThumbnails?: number;\n ref?: Ref<HTMLElement>;\n} & (\n | {\n /** Called with the frame to open larger — by the control, or by a tap\n on the frame itself. */\n onZoom: (index: number) => void;\n /** Glyph for that control, from the app's icon set. */\n zoomIcon: ReactNode;\n zoomLabel: string;\n }\n | { onZoom?: undefined; zoomIcon?: undefined; zoomLabel?: undefined }\n );\n\n/* Below this a drag is a tap: a finger never lands and lifts on the same\n pixel, and a photograph that only opens for a perfectly still hand reads as\n broken. */\nconst SWIPE_THRESHOLD = 40;\n\n/**\n * A gallery of frames, one on show.\n *\n * ```tsx\n * <ImageCarousel\n * slides={post.images.map((image) => ({ ...image, covered: !revealed }))}\n * labels={t.gallery}\n * onZoom={openLightbox}\n * zoomIcon={<Icon name=\"zoom-in\" />}\n * zoomLabel={t.viewLarger}\n * />\n * ```\n */\nexport function ImageCarousel({\n slides,\n labels,\n index,\n defaultIndex = 0,\n onIndexChange,\n pager = \"thumbnails\",\n maxThumbnails = 4,\n onZoom,\n zoomIcon,\n zoomLabel,\n className,\n ...rest\n}: ImageCarouselProps): ReactElement | null {\n const [ownIndex, setOwnIndex] = useState(defaultIndex);\n const swipeStart = useRef<number | null>(null);\n\n const held = index !== undefined;\n const last = slides.length - 1;\n const current = Math.min(Math.max(held ? index : ownIndex, 0), last);\n const many = slides.length > 1;\n const slide = slides[current];\n if (slide === undefined) return null;\n\n const goTo = (next: number) => {\n const clamped = Math.min(Math.max(next, 0), last);\n if (clamped === current) return;\n if (!held) setOwnIndex(clamped);\n onIndexChange?.(clamped);\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (!many) return;\n const step: Record<string, number> = {\n ArrowLeft: current - 1,\n ArrowRight: current + 1,\n Home: 0,\n End: last,\n };\n const next = step[event.key];\n if (next === undefined) return;\n event.preventDefault();\n goTo(next);\n };\n\n const onPointerUp = (event: PointerEvent<HTMLDivElement>) => {\n const start = swipeStart.current;\n swipeStart.current = null;\n if (start === null) return;\n const travelled = event.clientX - start;\n\n if (Math.abs(travelled) < SWIPE_THRESHOLD) {\n /* A tap that landed on a control was the control's, not the frame's. */\n const onControl = (event.target as HTMLElement).closest(\"button\") !== null;\n if (onZoom !== undefined && !onControl && slide.covered !== true) onZoom(current);\n return;\n }\n if (many) goTo(travelled < 0 ? current + 1 : current - 1);\n };\n\n const shown = pager === \"thumbnails\" ? slides.slice(0, maxThumbnails) : [];\n const hidden = slides.length - shown.length;\n const counted = labels.counter(current + 1, slides.length);\n\n return (\n <section\n className={cx(styles.carousel, className)}\n aria-roledescription={labels.carouselRole}\n aria-label={labels.region}\n tabIndex={0}\n onKeyDown={onKeyDown}\n {...rest}\n >\n <div\n className={styles.viewport}\n onPointerDown={(event) => {\n swipeStart.current = event.clientX;\n }}\n onPointerUp={onPointerUp}\n onPointerCancel={() => {\n swipeStart.current = null;\n }}\n >\n <div className={styles.slide} role=\"group\" aria-roledescription={labels.slideRole} aria-label={counted}>\n <MediaPlaceholder\n aspect={slide.aspect ?? \"4 / 3\"}\n {...(slide.src === undefined ? {} : { src: slide.src })}\n {...(slide.alt === undefined ? {} : { alt: slide.alt })}\n {...(slide.caption === undefined ? {} : { caption: slide.caption })}\n blurred={slide.covered === true}\n {...(slide.cover === undefined ? {} : { cover: slide.cover })}\n />\n </div>\n\n {onZoom !== undefined && slide.covered !== true && (\n <Button\n className={styles.zoom}\n variant=\"secondary\"\n size=\"sm\"\n iconOnly\n aria-label={zoomLabel}\n onClick={() => onZoom(current)}\n >\n {zoomIcon}\n </Button>\n )}\n\n {many && (\n <>\n <Button\n className={cx(styles.step, styles.prev)}\n variant=\"secondary\"\n size=\"sm\"\n iconOnly\n aria-label={labels.previous}\n disabled={current === 0}\n onClick={() => goTo(current - 1)}\n >\n <ChevronLeftGlyph />\n </Button>\n <Button\n className={cx(styles.step, styles.next)}\n variant=\"secondary\"\n size=\"sm\"\n iconOnly\n aria-label={labels.next}\n disabled={current === last}\n onClick={() => goTo(current + 1)}\n >\n <ChevronRightGlyph />\n </Button>\n <Text variant=\"meta\" className={styles.counter} aria-live=\"polite\">\n {counted}\n </Text>\n </>\n )}\n </div>\n\n {many && pager === \"thumbnails\" && (\n <div className={styles.thumbs}>\n {shown.map((frame, position) => (\n <button\n key={frame.id}\n type=\"button\"\n className={styles.thumb}\n aria-label={labels.slide(position + 1)}\n aria-current={position === current ? \"true\" : undefined}\n onClick={() => goTo(position)}\n >\n <MediaPlaceholder\n aspect=\"1 / 1\"\n {...(frame.src === undefined ? {} : { src: frame.src })}\n blurred={frame.covered === true}\n />\n </button>\n ))}\n {hidden > 0 && (\n <button\n type=\"button\"\n className={cx(styles.thumb, styles.more)}\n aria-label={labels.more(hidden)}\n onClick={() => goTo(shown.length)}\n >\n <Text variant=\"meta\">+{hidden}</Text>\n </button>\n )}\n </div>\n )}\n\n {many && pager === \"dots\" && (\n <div className={styles.dots}>\n {slides.map((frame, position) => (\n <button\n key={frame.id}\n type=\"button\"\n className={styles.dot}\n aria-label={labels.slide(position + 1)}\n aria-current={position === current ? \"true\" : undefined}\n onClick={() => goTo(position)}\n />\n ))}\n </div>\n )}\n </section>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/UploadProgress/UploadProgress.module.css?mds-scoped\";\nexport default {\"upload\":\"mds-UploadProgress__upload\",\"head\":\"mds-UploadProgress__head\",\"preview\":\"mds-UploadProgress__preview\",\"mark\":\"mds-UploadProgress__mark\",\"name\":\"mds-UploadProgress__name\",\"foot\":\"mds-UploadProgress__foot\",\"status-done\":\"mds-UploadProgress__status-done\",\"status-error\":\"mds-UploadProgress__status-error\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { CloseGlyph } from \"../../internal/glyphs\";\nimport { Button } from \"../Button/Button\";\nimport { ProgressBar } from \"../ProgressBar/ProgressBar\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./UploadProgress.module.css\";\n\nexport type UploadStatus = \"uploading\" | \"processing\" | \"done\" | \"error\";\n\nexport interface UploadProgressLabels {\n /** Names the bar while bytes are moving, and the state after. */\n uploading: string;\n processing: string;\n done: string;\n /** Shown when the caller has no more specific `error` to give. */\n error: string;\n cancel: string;\n retry: string;\n remove: string;\n}\n\nexport interface UploadProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** The file, as the person who picked it would name it. */\n name: string;\n labels: UploadProgressLabels;\n /** Thumbnail of what is going up — an `<img>`, a `<video>`, anything. */\n preview?: ReactNode;\n /** Glyph for the state it ended in, from the app's icon set. Tinted by the\n status: the system says which state, the app says with what glyph. */\n mark?: ReactNode;\n /** 0–100. Ignored while processing, which reports no percentage. */\n value?: number;\n status?: UploadStatus;\n /** The progress in words — \"2.1 MB of 5 MB\". Read out instead of the\n percentage, and shown under the bar. */\n detail?: string;\n /** Why it failed. Falls back to `labels.error`. */\n error?: string;\n onCancel?: () => void;\n onRetry?: () => void;\n onRemove?: () => void;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * One file on its way up: what it is, how far it has got, and the way out.\n *\n * ```tsx\n * <UploadProgress\n * name={file.name}\n * status={upload.status}\n * value={upload.percent}\n * detail={`${sent} of ${total}`}\n * onCancel={upload.abort}\n * labels={t.upload}\n * />\n * ```\n */\nexport function UploadProgress({\n name,\n labels,\n preview,\n mark,\n value,\n status = \"uploading\",\n detail,\n error,\n onCancel,\n onRetry,\n onRemove,\n className,\n ...rest\n}: UploadProgressProps): ReactElement {\n const running = status === \"uploading\" || status === \"processing\";\n\n return (\n <div className={cx(styles.upload, styles[`status-${status}`], className)} {...rest}>\n <div className={styles.head}>\n {preview !== undefined && <div className={styles.preview}>{preview}</div>}\n {mark !== undefined && <span className={styles.mark}>{mark}</span>}\n <Text variant=\"label\" truncate className={styles.name}>\n {name}\n </Text>\n {running && onCancel !== undefined && (\n <Button iconOnly size=\"sm\" variant=\"ghost\" aria-label={labels.cancel} onClick={onCancel}>\n <CloseGlyph />\n </Button>\n )}\n {!running && onRemove !== undefined && (\n <Button iconOnly size=\"sm\" variant=\"ghost\" aria-label={labels.remove} onClick={onRemove}>\n <CloseGlyph />\n </Button>\n )}\n {status === \"error\" && onRetry !== undefined && (\n <Button size=\"sm\" variant=\"secondary\" onClick={onRetry}>\n {labels.retry}\n </Button>\n )}\n </div>\n\n {running && (\n <ProgressBar\n label={`${labels[status]} ${name}`}\n value={value ?? 0}\n indeterminate={status === \"processing\"}\n {...(detail === undefined ? {} : { valueText: detail })}\n />\n )}\n\n <div className={styles.foot}>\n {status === \"error\" ? (\n <Text variant=\"meta\" tone=\"danger\" role=\"alert\">\n {error ?? labels.error}\n </Text>\n ) : (\n <>\n {status !== \"uploading\" && <Text variant=\"meta\">{labels[status]}</Text>}\n {detail !== undefined && <Text variant=\"meta\">{detail}</Text>}\n </>\n )}\n </div>\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/FileDrop/FileDrop.module.css?mds-scoped\";\nexport default {\"drop\":\"mds-FileDrop__drop\",\"target\":\"mds-FileDrop__target\",\"over\":\"mds-FileDrop__over\",\"icon\":\"mds-FileDrop__icon\",\"picker\":\"mds-FileDrop__picker\"};","import type { DragEvent, HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { useRef, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./FileDrop.module.css\";\n\nexport interface FileDropProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onDrop\"> {\n /** The invitation, in the app's words — what to hand over, and how. */\n label: string;\n /** The rule under it: the kinds taken, the size ceiling, how many fit. */\n hint?: string;\n /** Glyph above the words, from the app's icon set. */\n icon?: ReactNode;\n /** Passed to the picker, so it offers the right kinds. Same syntax as the\n input attribute: \"image/*\", \".pdf,.docx\". */\n accept?: string;\n /** More than one at a time. A drop of several is cut to one without it —\n the picker would not have let them through either. */\n multiple?: boolean;\n disabled?: boolean;\n /** What arrived, picked or dropped. Never empty. */\n onFiles: (files: File[]) => void;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * A place to hand over a file: press it for the picker, or drop one on it.\n * The list of what is on its way up is UploadProgress' job.\n *\n * ```tsx\n * <FileDrop\n * label={t.upload.drop}\n * hint={t.upload.limit}\n * accept=\"image/*\"\n * multiple\n * onFiles={upload.add}\n * />\n * ```\n */\nexport function FileDrop({\n label,\n hint,\n icon,\n accept,\n multiple = false,\n disabled = false,\n onFiles,\n className,\n ref,\n ...rest\n}: FileDropProps): ReactElement {\n const picker = useRef<HTMLInputElement>(null);\n const [over, setOver] = useState(false);\n\n const take = (list: FileList | null) => {\n if (disabled || list === null || list.length === 0) return;\n const files = [...list];\n onFiles(multiple ? files : files.slice(0, 1));\n };\n\n const dropped = (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setOver(false);\n take(event.dataTransfer.files);\n };\n\n return (\n <div\n className={cx(styles.drop, over && styles.over, className)}\n ref={ref}\n onDragOver={(event) => {\n event.preventDefault();\n setOver(!disabled);\n }}\n onDragLeave={() => setOver(false)}\n onDrop={dropped}\n {...rest}\n >\n <button\n type=\"button\"\n className={styles.target}\n disabled={disabled}\n onClick={() => picker.current?.click()}\n >\n {icon !== undefined && <span className={styles.icon}>{icon}</span>}\n <Text variant=\"label\">{label}</Text>\n {hint !== undefined && <Text variant=\"meta\">{hint}</Text>}\n </button>\n\n {/* Off the screen rather than out of the tree: the button is the control\n a person sees, and the input is only how the browser opens a picker. */}\n <input\n type=\"file\"\n className={styles.picker}\n ref={picker}\n tabIndex={-1}\n aria-hidden=\"true\"\n multiple={multiple}\n {...(accept === undefined ? {} : { accept })}\n onChange={(event) => {\n take(event.target.files);\n event.target.value = \"\";\n }}\n />\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Lightbox/Lightbox.module.css?mds-scoped\";\nexport default {\"panel\":\"mds-Lightbox__panel\",\"bar\":\"mds-Lightbox__bar\",\"surface\":\"mds-Lightbox__surface\",\"image\":\"mds-Lightbox__image\",\"caption\":\"mds-Lightbox__caption\"};","import { useCallback, useEffect, useRef, useState, type PointerEvent as ReactPointerEvent } from \"react\";\nimport type { CSSVars } from \"../../internal/cx\";\nimport { Overlay } from \"../../internal/Overlay\";\nimport { CloseGlyph, ZoomInGlyph, ZoomOutGlyph } from \"../../internal/glyphs\";\nimport { Button } from \"../Button/Button\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./Lightbox.module.css\";\n\nexport interface LightboxLabels {\n /** Names the dialog itself, e.g. \"Image\". */\n dialog: string;\n close: string;\n zoomIn: string;\n zoomOut: string;\n}\n\nexport interface LightboxProps {\n open: boolean;\n onClose: () => void;\n src: string;\n /** Empty says the picture is decoration — rare here, where it is the point. */\n alt?: string;\n caption?: string;\n labels: LightboxLabels;\n}\n\nconst MIN_SCALE = 1;\nconst MAX_SCALE = 4;\n/** One press of a zoom control. */\nconst STEP = 1;\n/** Where a double tap lands: in far enough to be worth the tap, short of the end. */\nconst DOUBLE = 2.5;\n/** Trackpad pinches arrive as wheel deltas; this turns one into a factor. */\nconst WHEEL = 0.01;\n\nconst ORIGIN = { x: 0, y: 0 };\n\nconst clamp = (value: number, low: number, high: number) => Math.min(Math.max(value, low), high);\n\nconst round = (value: number) => Math.round(value * 1000) / 1000;\n\nconst distance = (a: { x: number; y: number }, b: { x: number; y: number }) => Math.hypot(a.x - b.x, a.y - b.y);\n\n/**\n * One picture, full screen, zoomable and pannable. Escape and the focus trap\n * come from the overlay shell; the gestures are the component's own.\n *\n * ```tsx\n * <Lightbox\n * open={shown !== null}\n * onClose={() => setShown(null)}\n * src={shown?.src ?? \"\"}\n * alt={shown?.alt ?? \"\"}\n * labels={{ dialog: t(\"image\"), close: t(\"close\"), zoomIn: t(\"zoomIn\"), zoomOut: t(\"zoomOut\") }}\n * />\n * ```\n */\nexport function Lightbox({ open, onClose, src, alt = \"\", caption, labels }: LightboxProps) {\n /* State, not a ref: the portal mounts a commit late, so a ref reads null and\n the wheel listener would never find anything to attach to. */\n const [surface, setSurface] = useState<HTMLDivElement | null>(null);\n\n const [scale, setScale] = useState(MIN_SCALE);\n const [offset, setOffset] = useState(ORIGIN);\n\n const points = useRef(new Map<number, { x: number; y: number }>());\n const from = useRef({ spread: 0, scale: MIN_SCALE, x: 0, y: 0, offset: ORIGIN });\n\n const [shown, setShown] = useState({ src, open });\n if (shown.src !== src || shown.open !== open) {\n setShown({ src, open });\n setScale(MIN_SCALE);\n setOffset(ORIGIN);\n }\n\n /* Fingers on the last picture are not on this one. The map is a ref, so it\n is emptied after the commit rather than during the render — and a pointer\n event cannot arrive in between. */\n useEffect(() => {\n points.current.clear();\n }, [src, open]);\n\n const hold = useCallback(\n (next: { x: number; y: number }, at: number) => {\n const box = surface?.getBoundingClientRect();\n if (!box) return ORIGIN;\n\n /* Half the overhang on each side: past that the frame shows through. */\n const room = { x: (box.width * (at - 1)) / 2, y: (box.height * (at - 1)) / 2 };\n return { x: clamp(next.x, -room.x, room.x), y: clamp(next.y, -room.y, room.y) };\n },\n [surface],\n );\n\n const zoom = useCallback(\n (to: number) => {\n const next = clamp(round(to), MIN_SCALE, MAX_SCALE);\n setScale(next);\n setOffset((current) => hold(current, next));\n },\n [hold],\n );\n\n const at = useRef(scale);\n useEffect(() => {\n at.current = scale;\n }, [scale]);\n\n /* Native and non-passive: React's root `wheel` is passive, so `onWheel`\n cannot preventDefault, and the browser zooms the page instead. */\n useEffect(() => {\n if (!surface) return;\n\n const onWheel = (event: WheelEvent) => {\n if (!event.ctrlKey) return;\n event.preventDefault();\n zoom(at.current * Math.exp(-event.deltaY * WHEEL));\n };\n\n surface.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => surface.removeEventListener(\"wheel\", onWheel);\n }, [surface, zoom]);\n\n function onPointerDown(event: ReactPointerEvent<HTMLDivElement>) {\n points.current.set(event.pointerId, { x: event.clientX, y: event.clientY });\n const [first, second] = [...points.current.values()];\n\n if (first && second) {\n from.current = { ...from.current, spread: distance(first, second), scale };\n return;\n }\n\n if (first) from.current = { ...from.current, x: first.x, y: first.y, offset };\n }\n\n function onPointerMove(event: ReactPointerEvent<HTMLDivElement>) {\n if (!points.current.has(event.pointerId)) return;\n points.current.set(event.pointerId, { x: event.clientX, y: event.clientY });\n\n const [first, second] = [...points.current.values()];\n if (!first) return;\n\n if (second) {\n const spread = distance(first, second);\n if (from.current.spread === 0) return;\n zoom(from.current.scale * (spread / from.current.spread));\n return;\n }\n\n if (scale <= MIN_SCALE) return;\n\n setOffset(\n hold(\n {\n x: from.current.offset.x + (first.x - from.current.x),\n y: from.current.offset.y + (first.y - from.current.y),\n },\n scale,\n ),\n );\n }\n\n function onPointerUp(event: ReactPointerEvent<HTMLDivElement>) {\n points.current.delete(event.pointerId);\n\n /* A finger lifted off a pinch leaves the other one panning from where it is. */\n const [rest] = [...points.current.values()];\n if (rest) from.current = { ...from.current, x: rest.x, y: rest.y, offset };\n }\n\n const vars = {\n \"--zoom\": String(round(scale)),\n \"--pan-x\": `${round(offset.x)}px`,\n \"--pan-y\": `${round(offset.y)}px`,\n } as CSSVars;\n\n return (\n <Overlay\n open={open}\n onClose={onClose}\n label={labels.dialog}\n variant=\"lightbox\"\n closeOnScrimClick={false}\n panelClassName={styles.panel}\n >\n <div className={styles.bar}>\n <Button\n iconOnly\n aria-label={labels.zoomOut}\n variant=\"ghost\"\n onMedia\n disabled={scale <= MIN_SCALE}\n onClick={() => zoom(scale - STEP)}\n >\n <ZoomOutGlyph />\n </Button>\n <Button\n iconOnly\n aria-label={labels.zoomIn}\n variant=\"ghost\"\n onMedia\n disabled={scale >= MAX_SCALE}\n onClick={() => zoom(scale + STEP)}\n >\n <ZoomInGlyph />\n </Button>\n <Button iconOnly aria-label={labels.close} variant=\"ghost\" onMedia onClick={onClose}>\n <CloseGlyph />\n </Button>\n </div>\n\n <div\n ref={setSurface}\n className={styles.surface}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerUp}\n onDoubleClick={() => zoom(scale > MIN_SCALE ? MIN_SCALE : DOUBLE)}\n >\n <img className={styles.image} src={src} alt={alt} draggable={false} style={vars} />\n </div>\n\n {caption !== undefined && (\n <Text variant=\"meta\" tone=\"on-media\" className={styles.caption}>\n {caption}\n </Text>\n )}\n </Overlay>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/VideoPlayer/VideoPlayer.module.css?mds-scoped\";\nexport default {\"player\":\"mds-VideoPlayer__player\",\"frame\":\"mds-VideoPlayer__frame\",\"media\":\"mds-VideoPlayer__media\",\"covered\":\"mds-VideoPlayer__covered\",\"start\":\"mds-VideoPlayer__start\",\"startGlyph\":\"mds-VideoPlayer__startGlyph\",\"cover\":\"mds-VideoPlayer__cover\",\"controls\":\"mds-VideoPlayer__controls\",\"scrub\":\"mds-VideoPlayer__scrub\",\"time\":\"mds-VideoPlayer__time\",\"chapters\":\"mds-VideoPlayer__chapters\",\"chapter\":\"mds-VideoPlayer__chapter\",\"chapterAt\":\"mds-VideoPlayer__chapterAt\"};","import { useEffect, useRef, useState } from \"react\";\nimport type { HTMLAttributes, ReactElement, ReactNode, Ref, SyntheticEvent } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { forkRef } from \"../../internal/forkRef\";\nimport {\n CaptionsGlyph,\n FullscreenExitGlyph,\n FullscreenGlyph,\n PauseGlyph,\n PlayGlyph,\n VolumeGlyph,\n VolumeOffGlyph,\n} from \"../../internal/glyphs\";\nimport { Button } from \"../Button/Button\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./VideoPlayer.module.css\";\n\nexport interface VideoChapter {\n /** Where the chapter starts, in seconds. */\n at: number;\n label: string;\n}\n\nexport interface VideoCaptions {\n src: string;\n lang: string;\n /** Shown in the browser's own track menu, so it is the app's word. */\n label: string;\n defaultOn?: boolean;\n}\n\nexport interface VideoPlayerLabels {\n /** Names the player itself, e.g. \"Hip harness, slowly\". */\n region: string;\n play: string;\n pause: string;\n mute: string;\n unmute: string;\n fullscreen: string;\n exitFullscreen: string;\n seek: string;\n}\n\n/* Chapters and captions bring words of their own. Each is paired with the name\n of the thing it adds, so a player that has neither is asked for neither. */\ntype Chaptered =\n | { chapters: VideoChapter[]; chaptersLabel: string; onChapterSelect?: (at: number) => void }\n | { chapters?: undefined; chaptersLabel?: undefined; onChapterSelect?: undefined };\n\ntype Captioned = { captions: VideoCaptions; captionsLabel: string } | { captions?: undefined; captionsLabel?: undefined };\n\nexport type VideoPlayerProps = Omit<HTMLAttributes<HTMLElement>, \"children\"> & {\n src: string;\n poster?: string;\n labels: VideoPlayerLabels;\n autoPlay?: boolean;\n /** Obscures the picture and takes away the way into it — the cover is the\n only way in while this is set. */\n covered?: boolean;\n /** Drawn over the picture, outside the blur: whatever asks to be let past. */\n cover?: ReactNode;\n ref?: Ref<HTMLElement>;\n} & Chaptered &\n Captioned;\n\n/** Far enough in to have a frame to show, short enough to still be the start. */\nconst FIRST_FRAME_S = 0.001;\n\nconst SECONDS_IN_MINUTE = 60;\nconst SECONDS_IN_HOUR = 3600;\n\nfunction clock(seconds: number): string {\n if (!Number.isFinite(seconds) || seconds < 0) return \"0:00\";\n\n const whole = Math.floor(seconds);\n const s = whole % SECONDS_IN_MINUTE;\n const m = Math.floor(whole / SECONDS_IN_MINUTE) % SECONDS_IN_MINUTE;\n const h = Math.floor(whole / SECONDS_IN_HOUR);\n\n const ss = String(s).padStart(2, \"0\");\n return h > 0 ? `${h}:${String(m).padStart(2, \"0\")}:${ss}` : `${m}:${ss}`;\n}\n\n/**\n * A video with its own transport: play, seek, sound, captions, fullscreen and\n * chapters. The picture can be covered — `covered` obscures it and `cover`\n * holds whatever asks to be let past, which is the app's to write.\n *\n * ```tsx\n * <VideoPlayer\n * src={video.url}\n * poster={video.posterUrl}\n * labels={{ region: t(\"video.of\", { title }), play: t(\"video.play\"), … }}\n * chapters={chapters}\n * chaptersLabel={t(\"video.chapters\")}\n * />\n * ```\n */\nexport function VideoPlayer({\n src,\n poster,\n labels,\n chapters,\n chaptersLabel,\n onChapterSelect,\n captions,\n captionsLabel,\n autoPlay = false,\n covered = false,\n cover,\n className,\n ref,\n ...rest\n}: VideoPlayerProps): ReactElement {\n const media = useRef<HTMLVideoElement>(null);\n const root = useRef<HTMLElement>(null);\n\n const [playing, setPlaying] = useState(false);\n const [muted, setMuted] = useState(false);\n const [at, setAt] = useState(0);\n const [length, setLength] = useState(0);\n const [isFullscreen, setFullscreen] = useState(false);\n\n function toggle() {\n const el = media.current;\n if (!el) return;\n if (playing) el.pause();\n else void el.play();\n }\n\n function toggleSound() {\n const el = media.current;\n if (!el) return;\n const next = !muted;\n el.muted = next;\n setMuted(next);\n }\n\n function onMetadata(event: SyntheticEvent<HTMLVideoElement>) {\n const el = event.currentTarget;\n setLength(el.duration);\n /* Without a poster the frame is blank until the first frame is decoded, and\n a video that has been seeked already has a frame of its own. */\n if (poster === undefined && el.currentTime === 0) el.currentTime = FIRST_FRAME_S;\n }\n\n function goTo(seconds: number) {\n const el = media.current;\n if (el) el.currentTime = seconds;\n setAt(seconds);\n }\n\n function toggleCaptions() {\n const track = media.current?.textTracks?.[0];\n if (track) track.mode = track.mode === \"showing\" ? \"disabled\" : \"showing\";\n }\n\n function selectChapter(chapter: VideoChapter) {\n goTo(chapter.at);\n onChapterSelect?.(chapter.at);\n }\n\n useEffect(() => {\n const read = () => setFullscreen(document.fullscreenElement === root.current);\n document.addEventListener(\"fullscreenchange\", read);\n return () => document.removeEventListener(\"fullscreenchange\", read);\n }, []);\n\n function toggleFullscreen() {\n if (isFullscreen) {\n void document.exitFullscreen?.();\n return;\n }\n\n const box = root.current;\n if (box?.requestFullscreen) {\n void box.requestFullscreen();\n return;\n }\n\n /* iPhone Safari has no element fullscreen: the video goes up on its own. */\n (media.current as HTMLVideoElement & { webkitEnterFullscreen?: () => void })?.webkitEnterFullscreen?.();\n }\n\n return (\n <section\n className={cx(styles.player, covered && styles.covered, className)}\n aria-label={labels.region}\n ref={forkRef(root, ref)}\n {...rest}\n >\n <div className={styles.frame}>\n <video\n ref={media}\n className={styles.media}\n src={src}\n poster={poster}\n autoPlay={autoPlay && !covered}\n playsInline\n preload=\"metadata\"\n onPlay={() => setPlaying(true)}\n onPause={() => setPlaying(false)}\n onTimeUpdate={(event) => setAt(event.currentTarget.currentTime)}\n onLoadedMetadata={onMetadata}\n >\n {captions !== undefined && (\n <track\n kind=\"captions\"\n src={captions.src}\n srcLang={captions.lang}\n label={captions.label}\n default={captions.defaultOn}\n />\n )}\n </video>\n\n {!playing && !covered && (\n /* The picture is the target here; the control row below says the same\n thing in words, so this one is not said twice. */\n <button type=\"button\" className={styles.start} onClick={toggle} aria-hidden=\"true\" tabIndex={-1}>\n <span className={styles.startGlyph}>\n <PlayGlyph />\n </span>\n </button>\n )}\n\n {cover !== undefined && <div className={styles.cover}>{cover}</div>}\n </div>\n\n <div className={styles.controls}>\n <Button\n iconOnly\n aria-label={playing ? labels.pause : labels.play}\n variant=\"ghost\"\n size=\"sm\"\n onClick={toggle}\n >\n {playing ? <PauseGlyph /> : <PlayGlyph />}\n </Button>\n\n <input\n type=\"range\"\n className={styles.scrub}\n aria-label={labels.seek}\n min={0}\n max={length || 0}\n step={1}\n value={Math.min(at, length || 0)}\n onChange={(event) => goTo(Number(event.target.value))}\n />\n\n <Text variant=\"meta\" className={styles.time}>\n {`${clock(at)} / ${clock(length)}`}\n </Text>\n\n <Button\n iconOnly\n aria-label={muted ? labels.unmute : labels.mute}\n variant=\"ghost\"\n size=\"sm\"\n onClick={toggleSound}\n >\n {muted ? <VolumeOffGlyph /> : <VolumeGlyph />}\n </Button>\n\n {captions !== undefined && (\n <Button\n iconOnly\n aria-label={captionsLabel}\n variant=\"ghost\"\n size=\"sm\"\n aria-pressed={captions.defaultOn ?? false}\n onClick={toggleCaptions}\n >\n <CaptionsGlyph />\n </Button>\n )}\n\n <Button\n iconOnly\n aria-label={isFullscreen ? labels.exitFullscreen : labels.fullscreen}\n variant=\"ghost\"\n size=\"sm\"\n onClick={toggleFullscreen}\n >\n {isFullscreen ? <FullscreenExitGlyph /> : <FullscreenGlyph />}\n </Button>\n </div>\n\n {chapters !== undefined && chapters.length > 0 && (\n <ul className={styles.chapters} aria-label={chaptersLabel}>\n {chapters.map((chapter) => (\n <li key={chapter.at}>\n <Button variant=\"ghost\" size=\"sm\" className={styles.chapter} onClick={() => selectChapter(chapter)}>\n <Text variant=\"meta\" className={styles.chapterAt}>\n {clock(chapter.at)}\n </Text>\n <Text variant=\"body\">{chapter.label}</Text>\n </Button>\n </li>\n ))}\n </ul>\n )}\n </section>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Breadcrumb/Breadcrumb.module.css?mds-scoped\";\nexport default {\"crumbs\":\"mds-Breadcrumb__crumbs\",\"list\":\"mds-Breadcrumb__list\",\"item\":\"mds-Breadcrumb__item\",\"separator\":\"mds-Breadcrumb__separator\",\"link\":\"mds-Breadcrumb__link\"};","import type { ElementType, HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { ChevronRightGlyph } from \"../../internal/glyphs\";\nimport { Link } from \"../Link/Link\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./Breadcrumb.module.css\";\n\nexport interface Crumb {\n label: string;\n /** Absent = not a link. The last step never links, wherever it points. */\n href?: string;\n}\n\nexport interface BreadcrumbProps extends Omit<HTMLAttributes<HTMLElement>, \"children\"> {\n /** The trail, root first. The last item is where the reader is. */\n items: Crumb[];\n /** Names the landmark, e.g. \"Breadcrumb\". Required: a page can hold several\n navigation landmarks, and the words are the app's. */\n label: string;\n /** Element the links render as, e.g. a router's Link. */\n linkAs?: ElementType;\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * The trail back up. A navigation landmark holding an ordered list, with the\n * current page as its last, unlinked step.\n *\n * ```tsx\n * <Breadcrumb\n * label={t(\"nav.breadcrumb\")}\n * linkAs={RouterLink}\n * items={[{ label: \"Library\", href: \"/library\" }, { label: \"Kihon\" }]}\n * />\n * ```\n */\nexport function Breadcrumb({\n items,\n label,\n linkAs = \"a\",\n className,\n ...rest\n}: BreadcrumbProps): ReactElement | null {\n if (items.length === 0) return null;\n\n return (\n <nav aria-label={label} className={cx(styles.crumbs, className)} {...rest}>\n <ol className={styles.list}>\n {items.map((item, index) => {\n const last = index === items.length - 1;\n return (\n <li key={`${item.label}-${index}`} className={styles.item}>\n {index > 0 && <ChevronRightGlyph className={styles.separator} />}\n {last || item.href === undefined ? (\n <Text variant=\"meta\" tone={last ? \"primary\" : \"muted\"} aria-current={last ? \"page\" : undefined}>\n {item.label}\n </Text>\n ) : (\n <Link variant=\"plain\" size=\"xs\" as={linkAs} href={item.href} className={styles.link}>\n {item.label}\n </Link>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/internal/cx.ts","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Text/Text.module.css?mds-scoped","../src/components/Text/Text.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Heading/Heading.module.css?mds-scoped","../src/components/Heading/Heading.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Spinner/Spinner.module.css?mds-scoped","../src/components/Spinner/Spinner.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Icon/Icon.module.css?mds-scoped","../src/components/Icon/Icon.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Button/Button.module.css?mds-scoped","../src/components/Button/Button.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Link/Link.module.css?mds-scoped","../src/components/Link/Link.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Avatar/Avatar.module.css?mds-scoped","../src/components/Avatar/Avatar.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/AvatarGroup/AvatarGroup.module.css?mds-scoped","../src/components/AvatarGroup/AvatarGroup.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Badge/Badge.module.css?mds-scoped","../src/components/Badge/Badge.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/Chip.module.css?mds-scoped","../src/components/Chip/Chip.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/ChipGroup.module.css?mds-scoped","../src/components/Chip/ChipGroup.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/ChipBar.module.css?mds-scoped","../src/components/Chip/ChipBar.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/CountButton/CountButton.module.css?mds-scoped","../src/components/CountButton/CountButton.tsx","../src/internal/glyphs.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Field/Field.module.css?mds-scoped","../src/components/Field/Field.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Select/Select.module.css?mds-scoped","../src/components/Select/Select.tsx","../src/hooks/overlayHistory.ts","../src/hooks/useOverlay.ts","../src/hooks/usePresence.ts","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/internal/Overlay.module.css?mds-scoped","../src/internal/Overlay.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Sheet/Sheet.module.css?mds-scoped","../src/components/Sheet/Sheet.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/DateTimePicker/DateTimePicker.module.css?mds-scoped","../src/components/DateTimePicker/DateTimePicker.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tag/Tag.module.css?mds-scoped","../src/components/Tag/Tag.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Divider/Divider.module.css?mds-scoped","../src/components/Divider/Divider.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/VisuallyHidden/VisuallyHidden.module.css?mds-scoped","../src/components/VisuallyHidden/VisuallyHidden.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Skeleton/Skeleton.module.css?mds-scoped","../src/components/Skeleton/Skeleton.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ProgressBar/ProgressBar.module.css?mds-scoped","../src/components/ProgressBar/ProgressBar.tsx","../src/internal/forkRef.ts","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Input/Input.module.css?mds-scoped","../src/components/Input/Input.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/PasswordInput/PasswordInput.module.css?mds-scoped","../src/components/PasswordInput/PasswordInput.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Textarea/Textarea.module.css?mds-scoped","../src/components/Textarea/Textarea.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Checkbox/Checkbox.module.css?mds-scoped","../src/components/Checkbox/Checkbox.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Radio/Radio.module.css?mds-scoped","../src/components/Radio/Radio.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Switch/Switch.module.css?mds-scoped","../src/components/Switch/Switch.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/SegmentedControl/SegmentedControl.module.css?mds-scoped","../src/components/SegmentedControl/SegmentedControl.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Scroller/Scroller.module.css?mds-scoped","../src/components/Scroller/Scroller.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/List/List.module.css?mds-scoped","../src/components/List/List.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/DataTable/DataTable.module.css?mds-scoped","../src/components/DataTable/DataTable.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/EmptyState/EmptyState.module.css?mds-scoped","../src/components/EmptyState/EmptyState.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tabs/Tabs.module.css?mds-scoped","../src/components/Tabs/Tabs.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Toast/Toast.module.css?mds-scoped","../src/components/Toast/Toast.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Stack/Stack.module.css?mds-scoped","../src/components/Stack/Stack.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Inline/Inline.module.css?mds-scoped","../src/components/Inline/Inline.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Container/Container.module.css?mds-scoped","../src/components/Container/Container.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Card/Card.module.css?mds-scoped","../src/components/Card/Card.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Modal/Modal.module.css?mds-scoped","../src/components/Modal/Modal.tsx","../src/internal/useAnchoredPosition.ts","../src/internal/useDismissOnOutside.ts","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Popover/Popover.module.css?mds-scoped","../src/components/Popover/Popover.tsx","../src/hooks/useRovingGroup.ts","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Menu/Menu.module.css?mds-scoped","../src/components/Menu/Menu.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tooltip/Tooltip.module.css?mds-scoped","../src/components/Tooltip/Tooltip.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ConfirmDialog/ConfirmDialog.module.css?mds-scoped","../src/components/ConfirmDialog/ConfirmDialog.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Screen/Screen.module.css?mds-scoped","../src/components/Screen/Screen.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/AppBar/AppBar.module.css?mds-scoped","../src/components/AppBar/AppBar.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/TabBar/TabBar.module.css?mds-scoped","../src/components/TabBar/TabBar.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/SideNav/SideNav.module.css?mds-scoped","../src/components/SideNav/SideNav.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/MediaPlaceholder/MediaPlaceholder.module.css?mds-scoped","../src/components/MediaPlaceholder/MediaPlaceholder.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ImageCarousel/ImageCarousel.module.css?mds-scoped","../src/components/ImageCarousel/ImageCarousel.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/UploadProgress/UploadProgress.module.css?mds-scoped","../src/components/UploadProgress/UploadProgress.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/FileDrop/FileDrop.module.css?mds-scoped","../src/components/FileDrop/FileDrop.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Lightbox/Lightbox.module.css?mds-scoped","../src/components/Lightbox/Lightbox.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/VideoPlayer/VideoPlayer.module.css?mds-scoped","../src/components/VideoPlayer/VideoPlayer.tsx","mds-cssmod:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Breadcrumb/Breadcrumb.module.css?mds-scoped","../src/components/Breadcrumb/Breadcrumb.tsx"],"names":["createElement","size","jsx","createContext","useContext","jsxs","Children","Fragment","useId","useRef","useEffect","useState","createPortal","useMemo","useCallback","tab","clock","Element","computePosition","offset","flip","shift","autoUpdate","GAP","STEP","at"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { CSSProperties } from \"react\";\n\n/**\n * Join class names, dropping anything falsy.\n *\n * Every component takes a `className` from the call site and owns one of its\n * own from a CSS Module, so the merge happens in one place rather than in\n * forty slightly different inline expressions.\n */\nexport function cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(\" \");\n}\n\n/**\n * A style object that may also carry CSS custom properties.\n *\n * `React.CSSProperties` has no index signature, so `{ '--mds-x': 1 }` is a\n * type error against it. Values that genuinely vary per render (a slider's\n * percent, an avatar's pixel size) belong in a custom property the stylesheet\n * reads — this types that without an assertion.\n */\nexport type CSSVars = CSSProperties & Record<`--${string}`, string | number>;\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Text/Text.module.css?mds-scoped\";\nexport default {\"text\":\"mds-Text__text\",\"variant-body\":\"mds-Text__variant-body\",\"variant-label\":\"mds-Text__variant-label\",\"variant-note\":\"mds-Text__variant-note\",\"variant-meta\":\"mds-Text__variant-meta\",\"variant-eyebrow\":\"mds-Text__variant-eyebrow\",\"tone-primary\":\"mds-Text__tone-primary\",\"tone-secondary\":\"mds-Text__tone-secondary\",\"tone-muted\":\"mds-Text__tone-muted\",\"tone-inverse\":\"mds-Text__tone-inverse\",\"tone-accent\":\"mds-Text__tone-accent\",\"tone-on-media\":\"mds-Text__tone-on-media\",\"tone-danger\":\"mds-Text__tone-danger\",\"tone-warning\":\"mds-Text__tone-warning\",\"tone-success\":\"mds-Text__tone-success\",\"align-left\":\"mds-Text__align-left\",\"align-center\":\"mds-Text__align-center\",\"align-right\":\"mds-Text__align-right\",\"truncate\":\"mds-Text__truncate\"};","import type { HTMLAttributes, JSX, ReactElement } from \"react\";\nimport { createElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Text.module.css\";\n\nexport type TextVariant = \"body\" | \"label\" | \"note\" | \"meta\" | \"eyebrow\";\n\nexport type TextTone =\n | \"primary\"\n | \"secondary\"\n | \"muted\"\n | \"inverse\"\n | \"accent\"\n | \"on-media\"\n | \"danger\"\n | \"warning\"\n | \"success\";\n\nexport interface TextProps extends HTMLAttributes<HTMLElement> {\n /** Type role from the core scale. Default \"body\". */\n variant?: TextVariant;\n /** Element override when the default doesn't fit the markup. */\n as?: keyof JSX.IntrinsicElements;\n /** Semantic color. Variants carry sensible defaults. */\n tone?: TextTone;\n align?: \"left\" | \"center\" | \"right\";\n /** Single-line ellipsis. */\n truncate?: boolean;\n}\n\nconst ELEMENT: Record<TextVariant, keyof JSX.IntrinsicElements> = {\n body: \"p\",\n label: \"span\",\n note: \"p\",\n meta: \"span\",\n eyebrow: \"span\",\n};\n\nconst DEFAULT_TONE: Partial<Record<TextVariant, TextTone>> = {\n note: \"secondary\",\n meta: \"muted\",\n eyebrow: \"muted\",\n};\n\n/**\n * Body-copy primitive. One class per type role — screens never hand-roll styled tags.\n *\n * ```tsx\n * <Text>Body copy.</Text>\n * <Text variant=\"label\" as=\"span\">Field label</Text>\n * <Text variant=\"meta\" tone=\"muted\">Updated 2h ago</Text>\n * <Text truncate>Very long single line…</Text>\n * ```\n */\nexport function Text({\n variant = \"body\",\n as,\n tone,\n align,\n truncate = false,\n className,\n ...rest\n}: TextProps): ReactElement {\n const element = as ?? ELEMENT[variant];\n const resolvedTone = tone ?? DEFAULT_TONE[variant] ?? \"primary\";\n return createElement(element, {\n className: cx(\n styles.text,\n styles[`variant-${variant}`],\n styles[`tone-${resolvedTone}`],\n align && styles[`align-${align}`],\n truncate && styles.truncate,\n className,\n ),\n ...rest,\n });\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Heading/Heading.module.css?mds-scoped\";\nexport default {\"heading\":\"mds-Heading__heading\",\"variant-display\":\"mds-Heading__variant-display\",\"variant-title\":\"mds-Heading__variant-title\",\"variant-subtitle\":\"mds-Heading__variant-subtitle\",\"variant-label\":\"mds-Heading__variant-label\",\"tone-primary\":\"mds-Heading__tone-primary\",\"tone-secondary\":\"mds-Heading__tone-secondary\",\"tone-inverse\":\"mds-Heading__tone-inverse\",\"tone-accent\":\"mds-Heading__tone-accent\",\"tone-on-media\":\"mds-Heading__tone-on-media\"};","import type { HTMLAttributes, ReactElement } from \"react\";\nimport { createElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Heading.module.css\";\n\nexport type HeadingVariant = \"display\" | \"title\" | \"subtitle\" | \"label\";\nexport type HeadingLevel = 1 | 2 | 3 | 4;\nexport type HeadingTone = \"primary\" | \"secondary\" | \"inverse\" | \"accent\" | \"on-media\";\n\nexport interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {\n /** Document outline level → h1–h4, with a matching default type role. Default 2. */\n level?: HeadingLevel;\n /** Type role override — outline level and visual size are separate concerns.\n `label` is the small one: a rail beside the page, a group inside a form —\n a title that names its section without competing with the page's own. */\n variant?: HeadingVariant;\n tone?: HeadingTone;\n}\n\nconst LEVEL_VARIANT: Record<HeadingLevel, HeadingVariant> = {\n 1: \"display\",\n 2: \"title\",\n 3: \"subtitle\",\n 4: \"subtitle\",\n};\n\n/**\n * Brand headings on the core roles. `level` = semantics, `variant` = size.\n *\n * ```tsx\n * <Heading level={1}>Sessions</Heading>\n * <Heading level={2} variant=\"subtitle\" tone=\"secondary\">This week</Heading>\n * ```\n */\nexport function Heading({\n level = 2,\n variant,\n tone = \"primary\",\n className,\n ...rest\n}: HeadingProps): ReactElement {\n return createElement(`h${level}`, {\n className: cx(\n styles.heading,\n styles[`variant-${variant ?? LEVEL_VARIANT[level]}`],\n styles[`tone-${tone}`],\n className,\n ),\n ...rest,\n });\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Spinner/Spinner.module.css?mds-scoped\";\nexport default {\"spinner\":\"mds-Spinner__spinner\",\"spin\":\"mds-Spinner__spin\"};","import type { HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx, type CSSVars } from \"../../internal/cx\";\nimport styles from \"./Spinner.module.css\";\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLSpanElement> {\n /** Diameter in px. Default 20. */\n size?: number;\n /** Accessible label. Required: the words are the app's, in the app's\n language, and a default here is one no translation file can reach. */\n label: string;\n ref?: Ref<HTMLSpanElement>;\n}\n\n/**\n * Indeterminate loading ring. Arc takes currentColor, so it matches whatever\n * text it sits beside. Keyframe is local: CSS Modules localizes\n * animation-name, a global one resolves to nothing. base.css stops it under\n * prefers-reduced-motion.\n *\n * ```tsx\n * <Spinner label=\"Loading sessions\" />\n * ```\n */\nexport function Spinner({\n size = 20,\n label,\n className,\n style,\n ...rest\n}: SpinnerProps): ReactElement {\n /* Per-instance knobs, not design tokens. Ring thickness scales with the\n diameter, floored so small spinners stay visible. */\n const vars: CSSVars = {\n \"--spinner-size\": `${size}px`,\n \"--spinner-border\": `${Math.max(2, Math.round(size / 10))}px`,\n };\n return (\n <span\n role=\"status\"\n aria-label={label}\n className={cx(styles.spinner, className)}\n style={{ ...vars, ...style }}\n {...rest}\n />\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Icon/Icon.module.css?mds-scoped\";\nexport default {\"icon\":\"mds-Icon__icon\",\"size-slot\":\"mds-Icon__size-slot\",\"size-sm\":\"mds-Icon__size-sm\",\"size-md\":\"mds-Icon__size-md\",\"size-lg\":\"mds-Icon__size-lg\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { createContext, useContext } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Icon.module.css\";\n\nexport interface IconRenderProps {\n /** Pixel size of the requested step, or undefined when the glyph should take\n the size of the slot it sits in. An icon set that can only be sized with a\n number falls back to its own default; one that can read a CSS length uses\n var(--mds-icon-slot, var(--mds-icon-md)). */\n size?: number | undefined;\n}\n\n/** Brand-owned glyph resolver: name → rendered glyph (svg, font ligature, …). */\nexport type IconRender = (name: string, props: IconRenderProps) => ReactNode;\n\nconst IconContext = createContext<IconRender | null>(null);\n\nexport interface IconProviderProps {\n render: IconRender;\n children: ReactNode;\n}\n\n/**\n * Registry seam. The system never bundles an icon set — the app registers its\n * own (lucide, Material Symbols, …) once, at the root. Iconography is brand,\n * like color.\n *\n * ```tsx\n * // App root: map names to your icon set once.\n * <IconProvider render={(name, { size }) => <MyGlyph name={name} width={size ?? 20} />}>\n * <App />\n * </IconProvider>\n *\n * // Anywhere below:\n * <Icon name=\"check\" size=\"sm\" />\n * ```\n */\nexport function IconProvider({ render, children }: IconProviderProps): ReactElement {\n return <IconContext.Provider value={render}>{children}</IconContext.Provider>;\n}\n\nexport type IconSize = \"sm\" | \"md\" | \"lg\";\n\n/* Must match --mds-icon-* in core/layout.css — the renderer needs a number,\n a stylesheet cannot hand one over. */\nconst SIZE_PX: Record<IconSize, number> = { sm: 16, md: 20, lg: 24 };\n\nexport interface IconProps extends HTMLAttributes<HTMLSpanElement> {\n /** Glyph name in the app's registered set. */\n name: string;\n /** A step on the icon scale. Left unset, the glyph takes the step of the\n control slot around it, and the md step outside one. */\n size?: IconSize;\n /** Accessible name. Omitted = decorative (aria-hidden). */\n label?: string;\n ref?: Ref<HTMLSpanElement>;\n}\n\nconst warned = new Set<string>();\n\n/** A glyph from the app-registered set, sized on the core scale. */\nexport function Icon({ name, size, label, className, ...rest }: IconProps): ReactElement {\n const render = useContext(IconContext);\n if (render === null && !warned.has(name)) {\n warned.add(name);\n console.error(\n `Icon \"${name}\": no IconProvider above this tree. Register the app's icon set once at the root.`,\n );\n }\n return (\n <span\n className={cx(styles.icon, styles[`size-${size ?? \"slot\"}`], className)}\n {...(label ? { role: \"img\", \"aria-label\": label } : { \"aria-hidden\": true })}\n {...rest}\n >\n {render?.(name, { size: size === undefined ? undefined : SIZE_PX[size] })}\n </span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Button/Button.module.css?mds-scoped\";\nexport default {\"button\":\"mds-Button__button\",\"size-sm\":\"mds-Button__size-sm\",\"size-md\":\"mds-Button__size-md\",\"size-lg\":\"mds-Button__size-lg\",\"slot\":\"mds-Button__slot\",\"variant-primary\":\"mds-Button__variant-primary\",\"variant-secondary\":\"mds-Button__variant-secondary\",\"variant-ghost\":\"mds-Button__variant-ghost\",\"variant-highlight\":\"mds-Button__variant-highlight\",\"variant-danger\":\"mds-Button__variant-danger\",\"variant-warning\":\"mds-Button__variant-warning\",\"fullWidth\":\"mds-Button__fullWidth\",\"icon-only\":\"mds-Button__icon-only mds-hit-area__hitArea\",\"on-media\":\"mds-Button__on-media\",\"shape-rect\":\"mds-Button__shape-rect\",\"shape-pill\":\"mds-Button__shape-pill\"};","import type { ButtonHTMLAttributes, ElementType, MouseEvent, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Spinner } from \"../Spinner/Spinner\";\nimport styles from \"./Button.module.css\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\" | \"warning\" | \"highlight\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\nexport type ButtonShape = \"rect\" | \"pill\";\n\ninterface ButtonBaseProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"type\"> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n /** Standing on a picture, where the page's own foreground would be read\n * against a photograph. Only the two see-through variants take it up: a\n * filled button brings its own ground. */\n onMedia?: boolean;\n /** Corner shape, when the default is not the one this button wants: a\n * rectangle where `iconOnly` would round it, or a pill around words.\n * Unset, the shape follows from the size — rect, or a circle when\n * `iconOnly`. */\n shape?: ButtonShape;\n /** Glyph slots — pass an <Icon> or any node. Agnostic of icon set; the\n * button sizes the slot from its own size, and publishes that step as\n * --mds-icon-slot for an icon set that can only size itself. */\n iconLeft?: ReactNode;\n iconRight?: ReactNode;\n /** Spinner replaces the left slot; disables and announces busy. */\n loading?: boolean;\n fullWidth?: boolean;\n type?: \"button\" | \"submit\" | \"reset\";\n /** Renders an <a> — for navigation styled as a button. */\n href?: string;\n /** Element override, e.g. a router's Link. */\n as?: ElementType;\n ref?: Ref<HTMLButtonElement>;\n}\n\n/* Icon-only collapses the button to a circle holding one glyph. A glyph says\n nothing to a screen reader, so the type demands the name. */\ntype IconOnlyEnforcement =\n | { iconOnly: true; \"aria-label\": string }\n | { iconOnly?: false | undefined };\n\nexport type ButtonProps = ButtonBaseProps & IconOnlyEnforcement;\n\n/* Must match --mds-icon-slot on the size classes: the spinner takes the left\n glyph's place and Spinner needs a number, which a stylesheet cannot hand it. */\nconst ICON_PX: Record<ButtonSize, number> = { sm: 16, md: 20, lg: 24 };\n\n/**\n * The tappable action. Semantics: button by default, link when `href`/`as` says so.\n *\n * ```tsx\n * <Button onClick={save}>Save</Button>\n * <Button variant=\"secondary\" size=\"sm\">Cancel</Button>\n * <Button variant=\"danger\" loading={deleting} onClick={remove}>Delete</Button>\n * <Button iconOnly aria-label=\"Close\" variant=\"ghost\"><Icon name=\"close\" /></Button>\n * <Button href=\"/settings\">Settings</Button>\n * <Button iconOnly aria-label=\"Menu\" shape=\"rect\"><Icon name=\"menu\" /></Button>\n * ```\n */\nexport function Button({\n variant = \"primary\",\n size = \"md\",\n shape,\n onMedia = false,\n iconLeft,\n iconRight,\n loading = false,\n disabled = false,\n fullWidth = false,\n iconOnly = false,\n type = \"button\",\n href,\n as,\n className,\n children,\n onClick,\n ...rest\n}: ButtonProps): ReactElement {\n /* An icon-only button's glyph arrives as `children`, so it gets the same slot the\n named slots get — otherwise its size is the browser's default for an <svg> with\n a viewBox and no width, and there is no agreement on what that is: Chrome invents\n 300x150 and shrinks it to fit, WebKit gives 0x0 and the control disappears. Both\n spellings of an icon button are in use, `iconLeft` with nothing between the tags\n and a glyph as the child, so this waits to be given one. */\n const glyph =\n iconOnly && children != null ? <span className={styles.slot}>{children}</span> : children;\n\n /* The spinner is standing in for that glyph, not queuing behind it: two marks in a\n 32px circle is neither of them. */\n const body = loading && iconOnly ? null : glyph;\n\n const Element: ElementType = as ?? (href !== undefined ? \"a\" : \"button\");\n const isButton = Element === \"button\";\n /* Loading locks the button but does not disable it: a disabled attribute\n throws keyboard focus back to the body the instant a press starts a save.\n The swallowed click also cancels a submit button's native submission. */\n const own = isButton ? { type, disabled } : { href };\n\n return (\n <Element\n className={cx(\n styles.button,\n styles[`variant-${variant}`],\n styles[`size-${size}`],\n fullWidth && styles.fullWidth,\n iconOnly && styles[\"icon-only\"],\n shape !== undefined && styles[`shape-${shape}`],\n onMedia && styles[\"on-media\"],\n className,\n )}\n aria-busy={loading || undefined}\n aria-disabled={loading || undefined}\n onClick={loading ? (event: MouseEvent<HTMLButtonElement>) => event.preventDefault() : onClick}\n {...own}\n {...rest}\n >\n {loading ? (\n <span className={styles.slot}>\n <Spinner size={ICON_PX[size]} label=\"\" aria-hidden=\"true\" />\n </span>\n ) : (\n iconLeft ? <span className={styles.slot}>{iconLeft}</span> : null\n )}\n {body}\n {!loading && iconRight ? <span className={styles.slot}>{iconRight}</span> : null}\n </Element>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Link/Link.module.css?mds-scoped\";\nexport default {\"link\":\"mds-Link__link\",\"variant-inline\":\"mds-Link__variant-inline\",\"variant-standalone\":\"mds-Link__variant-standalone\",\"variant-plain\":\"mds-Link__variant-plain\",\"size-xs\":\"mds-Link__size-xs\",\"size-sm\":\"mds-Link__size-sm\",\"size-base\":\"mds-Link__size-base\",\"size-lg\":\"mds-Link__size-lg\",\"size-xl\":\"mds-Link__size-xl\",\"hiddenNote\":\"mds-Link__hiddenNote\"};","import type { ComponentPropsWithRef, ElementType, ReactElement, ReactNode } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Link.module.css\";\n\nexport type LinkVariant = \"inline\" | \"standalone\" | \"plain\";\n\nexport type LinkSize = \"xs\" | \"sm\" | \"base\" | \"lg\" | \"xl\";\n\ntype LinkOwnProps<E extends ElementType> = {\n /** inline = underlined, lives in running text. standalone = nav/action link.\n plain = inherits the surrounding color and weight, underlines on hover —\n for links whose context already marks them (a card title, a list row). */\n variant?: LinkVariant;\n /** Font size on the core text scale. Default inherits from context. */\n size?: LinkSize;\n /** Opens in a new tab with rel protection. */\n external?: boolean;\n /** Announced after the link text, unseen — a new tab is a context change a\n reader cannot see coming, e.g. \"opens in new tab\". The words are the\n app's, so they arrive here rather than being baked in English. */\n externalLabel?: string;\n /** Element override — `'button'` for a link-styled action, or a router's\n Link component, whose own props (`to`, `href`, …) then type-check. */\n as?: E;\n children?: ReactNode;\n};\n\n/* WithRef, not Without: the ref goes to whatever `as` rendered, and a link a\n caller cannot measure is a link a popover cannot anchor to. */\nexport type LinkProps<E extends ElementType = \"a\"> = LinkOwnProps<E> &\n Omit<ComponentPropsWithRef<E>, keyof LinkOwnProps<E>>;\n\n/**\n * Text link. Inline links keep their underline: color alone fails WCAG 1.4.1\n * for links inside prose.\n *\n * ```tsx\n * <Text>Read the <Link href=\"/terms\">terms</Link>.</Text>\n * <Link variant=\"standalone\" href=\"https://example.com\" external>Docs</Link>\n * <Link as={RouterLink} to=\"/about\">About</Link>\n * ```\n */\nexport function Link<E extends ElementType = \"a\">({\n variant = \"inline\",\n size,\n external = false,\n externalLabel,\n as,\n children,\n ...rest\n}: LinkProps<E>): ReactElement {\n const Element: ElementType = as ?? \"a\";\n // className and type live on the generic remainder — a plain destructure\n // cannot reach into ComponentPropsWithoutRef<E> while E is still open.\n const { className, type, ...others } = rest as {\n className?: string;\n type?: string;\n } & Record<string, unknown>;\n const externalProps = external ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {};\n // A button-rendered link defaults to type=\"button\" — inside a form, the\n // browser's \"submit\" default would fire on every click.\n const typeProps = Element === \"button\" ? { type: type ?? \"button\" } : type !== undefined ? { type } : {};\n return (\n <Element\n className={cx(\n styles.link,\n styles[`variant-${variant}`],\n size && styles[`size-${size}`],\n className,\n )}\n {...externalProps}\n {...others}\n {...typeProps}\n >\n {children}\n {external && externalLabel !== undefined && (\n /* The leading space keeps the name \"Docs opens in new tab\", not\n \"Docsopens…\" — inline text concatenates without one. */\n <span className={styles.hiddenNote}>{` ${externalLabel}`}</span>\n )}\n </Element>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Avatar/Avatar.module.css?mds-scoped\";\nexport default {\"avatar\":\"mds-Avatar__avatar\",\"size-xs\":\"mds-Avatar__size-xs\",\"size-sm\":\"mds-Avatar__size-sm\",\"size-md\":\"mds-Avatar__size-md\",\"size-lg\":\"mds-Avatar__size-lg\",\"size-xl\":\"mds-Avatar__size-xl\",\"tone-1\":\"mds-Avatar__tone-1\",\"tone-2\":\"mds-Avatar__tone-2\",\"tone-3\":\"mds-Avatar__tone-3\",\"tone-4\":\"mds-Avatar__tone-4\",\"tone-5\":\"mds-Avatar__tone-5\",\"image\":\"mds-Avatar__image\",\"initials\":\"mds-Avatar__initials\"};","import type { HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Avatar.module.css\";\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\n/** One of the five brand identity tints (`--mds-avatar-tone-1..5`). */\nexport type AvatarTone = 1 | 2 | 3 | 4 | 5;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n /** Person's display name — accessible name and initials source. */\n name: string;\n /** Image URL; initials render when absent or empty. */\n src?: string;\n size?: AvatarSize;\n /** Identity tint behind the initials. Pick per person (e.g. hash the name)\n so the same person keeps the same color. */\n tone?: AvatarTone;\n /** Hide from assistive tech — for avatars that repeat a name already in\n the row's text. The name prop still drives the initials. */\n decorative?: boolean;\n ref?: Ref<HTMLSpanElement>;\n}\n\n/* First + last word: \"Ada Byron King Lovelace\" → AL. Middle names add noise\n at 24px. */\nfunction initials(name: string): string {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n const first = words[0]?.[0] ?? \"\";\n const last = words.length > 1 ? (words.at(-1)?.[0] ?? \"\") : \"\";\n return (first + last).toUpperCase();\n}\n\n/**\n * Person marker. Image when available, initials otherwise — never an empty circle.\n *\n * ```tsx\n * <Avatar name=\"Ada Lovelace\" src=\"/ada.jpg\" />\n * <Avatar name=\"Grace Hopper\" size=\"lg\" tone={2} />\n * ```\n */\nexport function Avatar({\n name,\n src,\n size = \"md\",\n tone,\n decorative = false,\n className,\n ...rest\n}: AvatarProps): ReactElement {\n return (\n <span\n className={cx(\n styles.avatar,\n styles[`size-${size}`],\n tone !== undefined && styles[`tone-${tone}`],\n className,\n )}\n aria-hidden={decorative || undefined}\n {...rest}\n >\n {src ? (\n <img className={styles.image} src={src} alt={decorative ? \"\" : name} />\n ) : (\n <span\n role={decorative ? undefined : \"img\"}\n aria-label={decorative ? undefined : name}\n className={styles.initials}\n >\n {initials(name)}\n </span>\n )}\n </span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/AvatarGroup/AvatarGroup.module.css?mds-scoped\";\nexport default {\"group\":\"mds-AvatarGroup__group\",\"item\":\"mds-AvatarGroup__item\",\"overflow\":\"mds-AvatarGroup__overflow\",\"size-xs\":\"mds-AvatarGroup__size-xs\",\"size-sm\":\"mds-AvatarGroup__size-sm\",\"size-md\":\"mds-AvatarGroup__size-md\",\"size-lg\":\"mds-AvatarGroup__size-lg\",\"size-xl\":\"mds-AvatarGroup__size-xl\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { Children } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { AvatarSize } from \"../Avatar/Avatar\";\nimport styles from \"./AvatarGroup.module.css\";\n\nexport interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Avatar children. */\n children: ReactNode;\n /** Visible cap; the rest collapse into \"+N\". Default 4. */\n max?: number;\n /** Sizes the overflow chip to match the avatars. Default \"md\". */\n size?: AvatarSize;\n /** Names the \"+N\" chip, e.g. `(n) => `${n} more``. Required and a function:\n the chip stands for people whose names are not on screen, and only the app\n knows how its language counts them. */\n overflowLabel: (hidden: number) => string;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * Overlapping stack of avatars with a \"+N\" chip past `max`.\n *\n * ```tsx\n * <AvatarGroup max={3} overflowLabel={(n) => `${n} more`}>\n * <Avatar name=\"Ada Lovelace\" />\n * <Avatar name=\"Grace Hopper\" />\n * <Avatar name=\"Margaret Hamilton\" />\n * <Avatar name=\"Katherine Johnson\" />\n * </AvatarGroup>\n * ```\n */\nexport function AvatarGroup({\n children,\n max = 4,\n size = \"md\",\n overflowLabel,\n className,\n ...rest\n}: AvatarGroupProps): ReactElement {\n const all = Children.toArray(children);\n const visible = all.slice(0, max);\n const hidden = all.length - visible.length;\n\n return (\n <div className={cx(styles.group, className)} {...rest}>\n {visible.map((child, i) => (\n <span key={i} className={styles.item}>\n {child}\n </span>\n ))}\n {hidden > 0 && (\n <span\n className={cx(styles.item, styles.overflow, styles[`size-${size}`])}\n aria-label={overflowLabel(hidden)}\n >\n +{hidden}\n </span>\n )}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Badge/Badge.module.css?mds-scoped\";\nexport default {\"badge\":\"mds-Badge__badge\",\"tone-neutral\":\"mds-Badge__tone-neutral\",\"tone-accent\":\"mds-Badge__tone-accent\",\"tone-highlight\":\"mds-Badge__tone-highlight\",\"tone-danger\":\"mds-Badge__tone-danger\",\"tone-warning\":\"mds-Badge__tone-warning\",\"tone-success\":\"mds-Badge__tone-success\"};","import type { HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Badge.module.css\";\n\nexport type BadgeTone = \"neutral\" | \"accent\" | \"danger\" | \"warning\" | \"success\" | \"highlight\";\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: BadgeTone;\n ref?: Ref<HTMLSpanElement>;\n}\n\n/**\n * Small status marker — counts, \"new\", state words. Soft fill, strong text.\n *\n * ```tsx\n * <Badge tone=\"success\">Paid</Badge>\n * <Badge tone=\"danger\">3</Badge>\n * ```\n */\nexport function Badge({ tone = \"neutral\", className, ...rest }: BadgeProps): ReactElement {\n return <span className={cx(styles.badge, styles[`tone-${tone}`], className)} {...rest} />;\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/Chip.module.css?mds-scoped\";\nexport default {\"chip\":\"mds-Chip__chip\",\"icon\":\"mds-Chip__icon\",\"variant-soft\":\"mds-Chip__variant-soft\",\"variant-outline\":\"mds-Chip__variant-outline\",\"variant-highlight\":\"mds-Chip__variant-highlight\",\"selected\":\"mds-Chip__selected\",\"interactive\":\"mds-Chip__interactive\",\"disabled\":\"mds-Chip__disabled\"};","import type { HTMLAttributes, MouseEventHandler, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Chip.module.css\";\n\nexport type ChipVariant = \"soft\" | \"outline\" | \"highlight\";\n\nexport interface ChipProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode;\n /** Unselected appearance. Default \"soft\". */\n variant?: ChipVariant;\n /** Toggle state. When given on an interactive chip it also sets aria-pressed;\n * omit for a plain action chip so it does not announce as a toggle. */\n selected?: boolean;\n /** Leading glyph, sized by the chip. */\n icon?: ReactNode;\n /** When provided, Chip renders as a `<button>`. */\n onClick?: MouseEventHandler;\n disabled?: boolean;\n /** The root is a `<button>` when it has an onClick and a `<span>` otherwise,\n so the ref is typed to what both are. */\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * Compact pill for filters and single/multi choices. Interactive (a button,\n * with aria-pressed when `selected` is given) when `onClick` is set, otherwise\n * a static pill. For a passive content label use Tag instead.\n *\n * ```tsx\n * <Chip selected={filter === \"all\"} onClick={() => setFilter(\"all\")}>All</Chip>\n * <Chip variant=\"outline\" icon={<Icon name=\"pin\" />}>Nearby</Chip>\n * ```\n */\nexport function Chip({\n children,\n variant = \"soft\",\n selected,\n icon,\n onClick,\n disabled = false,\n className,\n ref,\n ...rest\n}: ChipProps): ReactElement {\n const interactive = typeof onClick === \"function\";\n\n const shared = {\n className: cx(\n styles.chip,\n styles[`variant-${variant}`],\n selected && styles.selected,\n interactive && !disabled && styles.interactive,\n disabled && styles.disabled,\n className,\n ),\n ...rest,\n };\n\n const content = (\n <>\n {icon ? <span className={styles.icon}>{icon}</span> : null}\n {children}\n </>\n );\n\n return interactive ? (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n aria-pressed={selected === undefined ? undefined : selected}\n ref={ref as Ref<HTMLButtonElement>}\n {...shared}\n >\n {content}\n </button>\n ) : (\n <span ref={ref as Ref<HTMLSpanElement>} {...shared}>{content}</span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/ChipGroup.module.css?mds-scoped\";\nexport default {\"group\":\"mds-ChipGroup__group\",\"gap-hairline\":\"mds-ChipGroup__gap-hairline\",\"gap-tight\":\"mds-ChipGroup__gap-tight\",\"gap-base\":\"mds-ChipGroup__gap-base\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./ChipGroup.module.css\";\n\nexport type ChipGroupGap = \"hairline\" | \"tight\" | \"base\";\n\nexport interface ChipGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Chips (or any inline items) laid out in a wrapping group. */\n children: ReactNode;\n /** Space between items, on the gap scale. Default \"tight\". */\n gap?: ChipGroupGap;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * Wrapping row of Chips for multi-select choices inside a form (pick several\n * days, locations, tags…). Items wrap onto new lines so nothing scrolls\n * off-screen; use ChipBar for a single-line scrolling filter strip.\n *\n * ```tsx\n * <ChipGroup>\n * {days.map((day) => (\n * <Chip key={day} selected={picked.has(day)} onClick={() => toggle(day)}>\n * {day}\n * </Chip>\n * ))}\n * </ChipGroup>\n * ```\n */\nexport function ChipGroup({ children, gap = \"tight\", className, ...rest }: ChipGroupProps): ReactElement {\n return (\n <div className={cx(styles.group, styles[`gap-${gap}`], className)} {...rest}>\n {children}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Chip/ChipBar.module.css?mds-scoped\";\nexport default {\"bar\":\"mds-ChipBar__bar\",\"gap-hairline\":\"mds-ChipBar__gap-hairline\",\"gap-tight\":\"mds-ChipBar__gap-tight\",\"gap-base\":\"mds-ChipBar__gap-base\",\"bordered\":\"mds-ChipBar__bordered\",\"fade\":\"mds-ChipBar__fade\",\"item\":\"mds-ChipBar__item\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { Children } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./ChipBar.module.css\";\n\nexport type ChipBarGap = \"hairline\" | \"tight\" | \"base\";\n\nexport interface ChipBarProps extends HTMLAttributes<HTMLDivElement> {\n /** Chips (or any inline items) laid out in a single scrolling row. */\n children: ReactNode;\n /** Space between items, on the gap scale. Default \"tight\". */\n gap?: ChipBarGap;\n /** Frame the strip so overflow reads as a scroll area. Default false. */\n bordered?: boolean;\n /** Fade the trailing edge to hint that the row scrolls. Default true. */\n fade?: boolean;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * Horizontally scrollable single-line row of Chips — a filter strip. Items\n * never wrap; the row scrolls when they overflow. `fade` dissolves the\n * trailing edge so the last chip hints at more rather than getting chopped\n * mid-word. Use ChipGroup for a wrapping set of choices inside a form.\n *\n * ```tsx\n * <ChipBar>\n * {segments.map((s) => (\n * <Chip key={s} selected={s === segment} onClick={() => setSegment(s)}>\n * {s}\n * </Chip>\n * ))}\n * </ChipBar>\n * ```\n */\nexport function ChipBar({\n children,\n gap = \"tight\",\n bordered = false,\n fade = true,\n className,\n ...rest\n}: ChipBarProps): ReactElement {\n return (\n <div\n className={cx(styles.bar, styles[`gap-${gap}`], bordered && styles.bordered, fade && styles.fade, className)}\n {...rest}\n >\n {Children.map(children, (child) => (\n <div className={styles.item}>{child}</div>\n ))}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/CountButton/CountButton.module.css?mds-scoped\";\nexport default {\"button\":\"mds-CountButton__button mds-hit-area__hitArea\",\"tone-accent\":\"mds-CountButton__tone-accent\",\"tone-danger\":\"mds-CountButton__tone-danger\",\"glyph\":\"mds-CountButton__glyph\"};","import type { ButtonHTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Spinner } from \"../Spinner/Spinner\";\nimport styles from \"./CountButton.module.css\";\n\nexport type CountButtonTone = \"accent\" | \"danger\";\n\n/* Matches --mds-icon-md; the spinner replaces an md glyph without reflow. */\n/* Must match --mds-icon-slot on .glyph: the spinner stands in the glyph's\n place and Spinner needs a number, which a stylesheet cannot hand it. */\nconst SPINNER_PX = 20;\n\nexport interface CountButtonProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"aria-label\" | \"aria-pressed\"> {\n /** Glyph shown before the text, e.g. `<Icon name=\"heart\" />`. Sized by the\n button, whatever the icon set's own default is. */\n icon: ReactNode;\n /** Accessible label (required) — describes the action for screen readers. */\n label: string;\n /**\n * Toggle state. When defined, sets `aria-pressed` and tints the control\n * with the tone colour. Omit for non-toggle actions (e.g. comment).\n */\n active?: boolean;\n /** Token the active tint reads. Default \"accent\". */\n tone?: CountButtonTone;\n /**\n * The write behind this action is in flight. Swaps the glyph for a spinner\n * of the same size and locks the control — a second tap in that window\n * would toggle the write straight back off.\n */\n loading?: boolean;\n /** Visible text beside the icon — typically a count or a word. */\n children?: ReactNode;\n ref?: Ref<HTMLButtonElement>;\n}\n\n/**\n * Inline, chrome-less pressable pairing an icon with a count or word — like,\n * comment, react actions. Owns hover, press, disabled, loading and active\n * (`aria-pressed`) states so consumers never hand-roll button chrome.\n *\n * The app owns the glyph, so it also owns the filled/outline swap:\n *\n * ```tsx\n * <CountButton\n * icon={<Icon name={liked ? \"heart-filled\" : \"heart\"} />}\n * label={liked ? \"Unlike\" : \"Like\"}\n * active={liked}\n * loading={likeMutation.isPending}\n * onClick={() => likeMutation.mutate()}\n * >\n * {likeCount}\n * </CountButton>\n * ```\n */\nexport function CountButton({\n icon,\n label,\n active,\n tone = \"accent\",\n disabled = false,\n loading = false,\n className,\n children,\n onClick,\n ...rest\n}: CountButtonProps): ReactElement {\n const isToggle = active !== undefined;\n\n /* The visible count belongs in the name (WCAG 2.5.3): a voice user says\n what they see, and \"Like 12\" must land on the button showing \"12\". */\n const spoken =\n typeof children === \"string\" || typeof children === \"number\" ? `${label} ${children}` : label;\n\n return (\n <button\n type=\"button\"\n /* Loading locks but does not disable: a disabled attribute would drop\n keyboard focus to the body the instant the press starts the write. */\n disabled={disabled}\n onClick={loading ? (event) => event.preventDefault() : onClick}\n aria-label={spoken}\n aria-pressed={isToggle ? active : undefined}\n aria-disabled={loading || undefined}\n aria-busy={loading || undefined}\n className={cx(styles.button, active && styles[`tone-${tone}`], className)}\n {...rest}\n >\n {/* The button's own aria-busy announces the wait; the spinner is decor. */}\n <span className={styles.glyph}>\n {loading ? <Spinner size={SPINNER_PX} label=\"\" aria-hidden=\"true\" /> : icon}\n </span>\n {children != null ? <span>{children}</span> : null}\n </button>\n );\n}\n","/* Marks a control cannot work without.\n *\n * Iconography belongs to the app — that is what IconProvider is for — but the\n * ✕ that closes a sheet and the chevron that pages a calendar are part of the\n * control, not of the app's icon set: a component whose close button waits for\n * a registry is a component that ships broken until one arrives.\n *\n * They live together because the same ✕ was written out in four components,\n * which is four places for one of them to drift a half-pixel.\n */\nimport type { ReactElement } from \"react\";\n\ninterface GlyphProps {\n /** The class of the slot the glyph sits in — it takes its size from there. */\n className?: string | undefined;\n}\n\nexport function CloseGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nexport function ChevronLeftGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path\n d=\"M10 3l-5 5 5 5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport function ChevronRightGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path\n d=\"M6 3l5 5-5 5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction Magnifier({ className, children }: GlyphProps & { children: ReactElement }): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <g fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\">\n <circle cx=\"7\" cy=\"7\" r=\"4.25\" />\n <path d=\"M10.2 10.2L14 14\" />\n {children}\n </g>\n </svg>\n );\n}\n\nexport function ZoomInGlyph({ className }: GlyphProps): ReactElement {\n return (\n <Magnifier className={className}>\n <path d=\"M4.75 7h4.5M7 4.75v4.5\" />\n </Magnifier>\n );\n}\n\nexport function ZoomOutGlyph({ className }: GlyphProps): ReactElement {\n return (\n <Magnifier className={className}>\n <path d=\"M4.75 7h4.5\" />\n </Magnifier>\n );\n}\n\nexport function PlayGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path d=\"M5 3.2l7.5 4.8L5 12.8z\" fill=\"currentColor\" />\n </svg>\n );\n}\n\nexport function PauseGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path d=\"M4.5 3h2.25v10H4.5zM9.25 3h2.25v10H9.25z\" fill=\"currentColor\" />\n </svg>\n );\n}\n\n/** The speaker cone the two sound marks share. */\nfunction Speaker(): ReactElement {\n return <path d=\"M2.5 6.25h2.25L8 3.4v9.2L4.75 9.75H2.5z\" fill=\"currentColor\" stroke=\"none\" />;\n}\n\nexport function VolumeGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <g fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\">\n <Speaker />\n <path d=\"M10.5 5.75a3.25 3.25 0 010 4.5\" />\n <path d=\"M12.5 3.9a5.75 5.75 0 010 8.2\" />\n </g>\n </svg>\n );\n}\n\nexport function VolumeOffGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <g fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\">\n <Speaker />\n <path d=\"M10.75 6.25l3.5 3.5M14.25 6.25l-3.5 3.5\" />\n </g>\n </svg>\n );\n}\n\nexport function CaptionsGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <g fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\">\n <rect x=\"1.75\" y=\"3.25\" width=\"12.5\" height=\"9.5\" rx=\"2\" />\n <path d=\"M6.25 6.75a2 2 0 100 2.5M11.25 6.75a2 2 0 100 2.5\" />\n </g>\n </svg>\n );\n}\n\nexport function FullscreenGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path\n d=\"M6 2.5H2.5V6M10 2.5h3.5V6M6 13.5H2.5V10M10 13.5h3.5V10\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport function FullscreenExitGlyph({ className }: GlyphProps): ReactElement {\n return (\n <svg viewBox=\"0 0 16 16\" width=\"1em\" height=\"1em\" aria-hidden=\"true\" className={className}>\n <path\n d=\"M2.5 6H6V2.5M13.5 6H10V2.5M2.5 10H6v3.5M13.5 10H10v3.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Field/Field.module.css?mds-scoped\";\nexport default {\"field\":\"mds-Field__field\",\"label\":\"mds-Field__label\",\"required\":\"mds-Field__required\",\"message\":\"mds-Field__message\",\"error\":\"mds-Field__error\"};","import type { ReactElement, ReactNode } from \"react\";\nimport { createContext, useContext, useId } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Field.module.css\";\n\nexport interface FieldContextValue {\n /** Control id — the label points here. */\n id: string;\n /** Space-joined ids of hint/error, for aria-describedby. */\n describedBy: string | undefined;\n invalid: boolean;\n /** The label's asterisk is aria-hidden decoration; controls carry the\n * requirement as aria-required so assistive tech hears it too. */\n required: boolean;\n}\n\nconst FieldContext = createContext<FieldContextValue | null>(null);\n\n/** Controls call this to pick up Field wiring. Null outside a Field. */\nexport function useFieldContext(): FieldContextValue | null {\n return useContext(FieldContext);\n}\n\nexport interface FieldProps {\n label: string;\n children: ReactNode;\n /** Guidance under the control. */\n hint?: string;\n /** Validation message; replaces the hint and flags the control invalid. */\n error?: string;\n required?: boolean;\n className?: string;\n}\n\n/**\n * Label + control + hint/error, wired for assistive tech. The control inside\n * (Input, Textarea, Select, …) picks up id, aria-describedby and aria-invalid\n * from context — no manual plumbing at call sites.\n *\n * ```tsx\n * <Field label=\"Email\" hint=\"Work email preferred\" error={errors.email} required>\n * <Input type=\"email\" value={email} onChange={(e) => setEmail(e.target.value)} />\n * </Field>\n * ```\n */\nexport function Field({ label, children, hint, error, required = false, className }: FieldProps): ReactElement {\n const id = useId();\n const messageId = `${id}-message`;\n const message = error ?? hint;\n\n return (\n <div className={cx(styles.field, className)}>\n <label className={styles.label} htmlFor={id}>\n {label}\n {required && (\n <span className={styles.required} aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n <FieldContext.Provider\n value={{ id, describedBy: message ? messageId : undefined, invalid: error !== undefined, required }}\n >\n {children}\n </FieldContext.Provider>\n {message && (\n <span\n id={messageId}\n role={error !== undefined ? \"alert\" : undefined}\n className={cx(styles.message, error !== undefined && styles.error)}\n >\n {message}\n </span>\n )}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Select/Select.module.css?mds-scoped\";\nexport default {\"wrap\":\"mds-Select__wrap\",\"select\":\"mds-Select__select\",\"size-sm\":\"mds-Select__size-sm\",\"size-md\":\"mds-Select__size-md\",\"size-lg\":\"mds-Select__size-lg\",\"chevron\":\"mds-Select__chevron\"};","import type { ReactElement, Ref, SelectHTMLAttributes } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { useFieldContext } from \"../Field/Field\";\nimport styles from \"./Select.module.css\";\n\nexport type SelectSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, \"size\"> {\n size?: SelectSize;\n ref?: Ref<HTMLSelectElement>;\n}\n\n/**\n * Native select, styled. Native = free keyboard, mobile pickers, screen\n * reader behavior; a custom popover earns its complexity only when options\n * need rich content.\n *\n * ```tsx\n * <Field label=\"Language\">\n * <Select value={lang} onChange={(e) => setLang(e.target.value)}>\n * <option value=\"de\">Deutsch</option>\n * <option value=\"en\">English</option>\n * </Select>\n * </Field>\n * ```\n */\nexport function Select({ size = \"md\", className, children, ...rest }: SelectProps): ReactElement {\n const field = useFieldContext();\n return (\n <span className={styles.wrap}>\n <select\n id={rest.id ?? field?.id}\n aria-describedby={rest[\"aria-describedby\"] ?? field?.describedBy}\n aria-invalid={rest[\"aria-invalid\"] ?? (field?.invalid || undefined)}\n aria-required={rest[\"aria-required\"] ?? (field?.required || undefined)}\n className={cx(styles.select, styles[`size-${size}`], className)}\n {...rest}\n >\n {children}\n </select>\n <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\" className={styles.chevron}>\n <path d=\"M4 6l4 4 4-4\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </span>\n );\n}\n","import { createContext } from \"react\";\n\nexport interface OverlayHistory {\n /**\n * An overlay has opened. The implementation adds a history entry, and calls\n * `onPop` if the user goes back to it. Returns a dispose for when the\n * overlay closes some other way — its close button, Escape, the scrim, or\n * unmounting. The implementation owes the entry back: one left behind is a\n * back tap that does nothing.\n */\n register(onPop: () => void): () => void;\n}\n\n/**\n * On a phone, back is also the dismiss gesture: an open overlay that ignores\n * it costs the user the screen underneath instead. The library owns *when* an\n * overlay opens and closes; the app owns the history mechanism, because a raw\n * `history.pushState` from a library corrupts a router's own bookkeeping\n * (React Router keeps its index in `history.state`).\n *\n * Null wherever no app has supplied one — Storybook, a unit test, a consumer\n * that has not opted in. Overlays go on working; they just do not answer back.\n *\n * `useOverlay` registers every open overlay, so Modal, Sheet and\n * ConfirmDialog are covered with no per-call-site wiring:\n *\n * ```tsx\n * // App root — e.g. backed by the app router:\n * const overlayHistory = useMemo<OverlayHistory>(() => ({\n * register(onPop) {\n * pushOverlayEntry(onPop); // app-owned, via the router\n * return () => popOverlayEntry(); // give the entry back\n * },\n * }), []);\n *\n * <OverlayHistoryContext.Provider value={overlayHistory}>\n * <App />\n * </OverlayHistoryContext.Provider>\n * ```\n */\nexport const OverlayHistoryContext = createContext<OverlayHistory | null>(null);\n","import { useContext, useEffect, useRef } from \"react\";\nimport type { RefObject } from \"react\";\nimport { OverlayHistoryContext } from \"./overlayHistory\";\n\nexport interface UseOverlayOptions {\n open: boolean;\n onClose: () => void;\n /**\n * Freeze the page behind the surface. Default true.\n *\n * False for anchored surfaces: a popover is pinned to a trigger that scrolls\n * with the page, so locking the page would strand it over content the reader\n * can no longer reach, and locking it *and* letting the popover follow the\n * anchor are the same gesture answered two ways.\n */\n lockScroll?: boolean;\n /**\n * Trap Tab inside the panel and always hand focus back on close. Default\n * true.\n *\n * False for non-modal surfaces: the page behind a popover is still live,\n * so Tab walks out of the panel instead of cycling, and focus returns to\n * the opener only when the close takes it from inside the panel — a press\n * elsewhere on the page already put it where the reader wanted it.\n */\n modal?: boolean;\n}\n\nconst FOCUSABLE =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), summary, audio[controls], video[controls], [contenteditable]:not([contenteditable=\"false\"]), [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Shared modal-surface behaviour: focus capture and restore, Escape to\n * close, Tab cycling inside the panel, body scroll lock. Attach the\n * returned ref to the dialog element (it needs tabIndex={-1}).\n *\n * Popover uses it too, with `lockScroll: false`; where it sits on the screen\n * is a separate question, answered by useAnchoredPosition.\n */\nexport function useOverlay<T extends HTMLElement>(options: UseOverlayOptions): RefObject<T | null> {\n const ref = useRef<T>(null);\n const { open, onClose, lockScroll = true, modal = true } = options;\n const close = useRef(onClose);\n useEffect(() => {\n close.current = onClose;\n }, [onClose]);\n\n /* Back-button contract: an app that supplies OverlayHistory gets every open\n overlay registered, so back dismisses the innermost one instead of leaving\n the screen underneath. Null context (Storybook, tests, non-opted apps) is\n a no-op. The register/dispose pair keeps history balanced either way. */\n const overlayHistory = useContext(OverlayHistoryContext);\n useEffect(() => {\n if (!open || !overlayHistory) return;\n return overlayHistory.register(() => close.current());\n }, [open, overlayHistory]);\n\n useEffect(() => {\n if (!open) return;\n const panel = ref.current;\n const previous = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n panel?.focus();\n\n /* aria-modal promises assistive tech the rest of the page is gone; inert\n enforces it for the readers that promise alone misses, and takes the\n background out of the Tab order for everyone. Only siblings not already\n inert are marked, so a modal over a modal restores exactly what it\n inerted and no more. */\n let marked: Element[] = [];\n if (modal && panel) {\n let portal: Element = panel;\n while (portal.parentElement && portal.parentElement !== document.body) {\n portal = portal.parentElement;\n }\n marked = [...document.body.children].filter(\n (sibling) => sibling !== portal && !sibling.hasAttribute(\"inert\"),\n );\n for (const sibling of marked) sibling.setAttribute(\"inert\", \"\");\n }\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.stopPropagation();\n close.current();\n return;\n }\n if (!modal || event.key !== \"Tab\" || !panel) return;\n const focusable = [...panel.querySelectorAll<HTMLElement>(FOCUSABLE)];\n if (focusable.length === 0) {\n event.preventDefault();\n panel.focus();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement;\n if (event.shiftKey && (active === first || active === panel)) {\n event.preventDefault();\n last?.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first?.focus();\n }\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n const bodyOverflow = document.body.style.overflow;\n if (lockScroll) document.body.style.overflow = \"hidden\";\n return () => {\n document.removeEventListener(\"keydown\", onKeyDown);\n if (lockScroll) document.body.style.overflow = bodyOverflow;\n // Before the focus restore: focus will not land on an inert element.\n for (const sibling of marked) sibling.removeAttribute(\"inert\");\n const active = document.activeElement;\n if (modal || (panel && active instanceof HTMLElement && panel.contains(active))) {\n previous?.focus();\n }\n };\n }, [open, lockScroll, modal]);\n\n return ref;\n}\n","import { useEffect, useState } from \"react\";\n\nexport interface Presence {\n /** Keep the element in the DOM (true during exit animation). */\n mounted: boolean;\n /** Drive the visual state — false on the frame it enters and during exit. */\n visible: boolean;\n}\n\n/**\n * Enter/exit animation helper. An element inserted already carrying its open\n * style has nothing to transition from, so `visible` stays false for the frame\n * the closed style is painted in and flips on the next one. `mounted` lags\n * `open` by `durationMs` on close so the exit transition can finish.\n */\nexport function usePresence(open: boolean, durationMs: number): Presence {\n const [mounted, setMounted] = useState(open);\n const [visible, setVisible] = useState(false);\n\n // Syncing on the prop belongs in render, not an effect (\"adjusting state when\n // props change\" pattern); the effects own only the frame and the timer.\n if (open && !mounted) setMounted(true);\n if (!open && visible) setVisible(false);\n\n useEffect(() => {\n if (!open) return;\n // Two frames, not one: the callback of the first runs before anything has\n // been painted, so flipping there is still a jump.\n let second = 0;\n const first = requestAnimationFrame(() => {\n second = requestAnimationFrame(() => setVisible(true));\n });\n return () => {\n cancelAnimationFrame(first);\n cancelAnimationFrame(second);\n };\n }, [open]);\n\n useEffect(() => {\n if (open) return;\n // Under reduced motion the CSS exit collapses to nothing (the motion\n // tokens zero out), so waiting the full duration would hold a\n // visually-gone element in the tree.\n const reduced =\n typeof window.matchMedia === \"function\" &&\n window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n const timer = setTimeout(() => setMounted(false), reduced ? 0 : durationMs);\n return () => clearTimeout(timer);\n }, [open, durationMs]);\n\n return { mounted: open || mounted, visible };\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/internal/Overlay.module.css?mds-scoped\";\nexport default {\"scrim\":\"mds-Overlay__scrim\",\"variant-modal\":\"mds-Overlay__variant-modal\",\"variant-sheet\":\"mds-Overlay__variant-sheet\",\"variant-lightbox\":\"mds-Overlay__variant-lightbox\"};","import { createPortal } from \"react-dom\";\nimport type { ReactNode } from \"react\";\nimport { cx } from \"./cx\";\nimport { useOverlay } from \"../hooks/useOverlay\";\nimport { usePresence } from \"../hooks/usePresence\";\nimport styles from \"./Overlay.module.css\";\n\n/** Matches --mds-dur-base; usePresence needs the number in JS. */\nexport const OVERLAY_EXIT_MS = 200;\n\n/** Matches --mds-dur-slow. A sheet travels its own height where a modal only\n fades, so it is on the slower clock — unmounting it on the fade's clock cut\n the slide off partway down. */\nexport const SHEET_EXIT_MS = 320;\n\nexport interface OverlayProps {\n open: boolean;\n onClose: () => void;\n /** Accessible name of the dialog. */\n label: string;\n variant: \"modal\" | \"sheet\" | \"lightbox\";\n /** alertdialog interrupts — confirms use it so AT announces the question. */\n role?: \"dialog\" | \"alertdialog\";\n /** id of the element that explains the dialog, read out with its name. */\n describedBy?: string | undefined;\n /** Scrim click dismisses. Confirmations turn this off. */\n closeOnScrimClick: boolean;\n panelClassName: string | undefined;\n children: ReactNode;\n}\n\n/**\n * Internal shell shared by Modal, Sheet and Lightbox: portal, scrim, dialog\n * semantics, useOverlay behaviour, exit-animation presence. Not exported\n * from the package.\n */\nexport function Overlay({ open, onClose, label, variant, role = \"dialog\", describedBy, closeOnScrimClick, panelClassName, children }: OverlayProps) {\n const { mounted, visible } = usePresence(open, variant === \"sheet\" ? SHEET_EXIT_MS : OVERLAY_EXIT_MS);\n const ref = useOverlay<HTMLDivElement>({ open, onClose });\n\n if (!mounted) return null;\n\n return createPortal(\n <div\n className={cx(styles.scrim, styles[`variant-${variant}`])}\n data-open={visible || undefined}\n data-testid=\"mds-scrim\"\n onClick={closeOnScrimClick ? onClose : undefined}\n >\n <div\n ref={ref}\n role={role}\n aria-modal=\"true\"\n aria-label={label}\n aria-describedby={describedBy}\n tabIndex={-1}\n className={panelClassName}\n data-open={visible || undefined}\n onClick={(event) => event.stopPropagation()}\n >\n {children}\n </div>\n </div>,\n document.body,\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Sheet/Sheet.module.css?mds-scoped\";\nexport default {\"panel\":\"mds-Sheet__panel\",\"header\":\"mds-Sheet__header\",\"body\":\"mds-Sheet__body\",\"footer\":\"mds-Sheet__footer\",\"headerTitle\":\"mds-Sheet__headerTitle\",\"close\":\"mds-Sheet__close\",\"closeGlyph\":\"mds-Sheet__closeGlyph\"};","import type { ReactNode } from \"react\";\nimport { Overlay } from \"../../internal/Overlay\";\nimport { CloseGlyph } from \"../../internal/glyphs\";\nimport styles from \"./Sheet.module.css\";\n\nexport interface SheetProps {\n open: boolean;\n onClose: () => void;\n /** Accessible name of the dialog. */\n label: string;\n /** Scrim click dismisses. Default true. */\n closeOnScrimClick?: boolean;\n children: ReactNode;\n}\n\n/**\n * Bottom sheet. Same composition and dismissal model as Modal:\n *\n * ```tsx\n * <Sheet open={open} onClose={() => setOpen(false)} label=\"Filters\">\n * <SheetHeader>Filters</SheetHeader>\n * <SheetBody>…</SheetBody>\n * <SheetFooter><Button onClick={apply}>Apply</Button></SheetFooter>\n * </Sheet>\n * ```\n */\nexport function Sheet({ open, onClose, label, closeOnScrimClick = true, children }: SheetProps) {\n return (\n <Overlay\n open={open}\n onClose={onClose}\n label={label}\n variant=\"sheet\"\n closeOnScrimClick={closeOnScrimClick}\n panelClassName={styles.panel}\n >\n {children}\n </Overlay>\n );\n}\n\nexport type SheetHeaderProps = { children: ReactNode } & (\n | {\n /** Renders a close button after the title. Wire it to the sheet's own onClose. */\n onClose: () => void;\n /** Accessible name of the close button (localise). */\n closeLabel: string;\n }\n | { onClose?: undefined; closeLabel?: undefined }\n);\n\nexport function SheetHeader({ children, onClose, closeLabel }: SheetHeaderProps) {\n return (\n <div className={styles.header}>\n {/* The panel's title is its heading: the one landmark a reader jumping\n by heading inside a tall sheet has to go by. */}\n <h2 className={styles.headerTitle}>{children}</h2>\n {onClose !== undefined && (\n <button type=\"button\" aria-label={closeLabel} className={styles.close} onClick={onClose}>\n <CloseGlyph className={styles.closeGlyph} />\n </button>\n )}\n </div>\n );\n}\n\nexport function SheetBody({ children }: { children: ReactNode }) {\n return <div className={styles.body}>{children}</div>;\n}\n\nexport function SheetFooter({ children }: { children: ReactNode }) {\n return <div className={styles.footer}>{children}</div>;\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/DateTimePicker/DateTimePicker.module.css?mds-scoped\";\nexport default {\"trigger\":\"mds-DateTimePicker__trigger\",\"hasValue\":\"mds-DateTimePicker__hasValue\",\"triggerLabel\":\"mds-DateTimePicker__triggerLabel\",\"glyph\":\"mds-DateTimePicker__glyph\",\"timeRow\":\"mds-DateTimePicker__timeRow\",\"grow\":\"mds-DateTimePicker__grow\",\"meridiem\":\"mds-DateTimePicker__meridiem\",\"colon\":\"mds-DateTimePicker__colon\",\"calendarHeader\":\"mds-DateTimePicker__calendarHeader\",\"monthLabel\":\"mds-DateTimePicker__monthLabel\",\"weekdays\":\"mds-DateTimePicker__weekdays\",\"weekday\":\"mds-DateTimePicker__weekday\",\"grid\":\"mds-DateTimePicker__grid\",\"week\":\"mds-DateTimePicker__week\",\"day\":\"mds-DateTimePicker__day\",\"today\":\"mds-DateTimePicker__today\",\"selected\":\"mds-DateTimePicker__selected\",\"outside\":\"mds-DateTimePicker__outside\"};","import type { KeyboardEvent, ReactElement } from \"react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { ChevronLeftGlyph, ChevronRightGlyph } from \"../../internal/glyphs\";\nimport { useFieldContext } from \"../Field/Field\";\nimport { Button } from \"../Button/Button\";\nimport { Select } from \"../Select/Select\";\nimport { Sheet, SheetBody, SheetFooter, SheetHeader } from \"../Sheet/Sheet\";\nimport styles from \"./DateTimePicker.module.css\";\n\nexport interface DateTimePickerLabels {\n /** Accessible name of the picker dialog. */\n dialog: string;\n previousMonth: string;\n nextMonth: string;\n today: string;\n done: string;\n hour: string;\n minute: string;\n dayPeriod: string;\n}\n\nexport interface DateTimePickerProps {\n /** Current value as an ISO 8601 string. */\n value?: string | undefined;\n /** Fires with the combined ISO string when the user confirms. */\n onChange: (iso: string) => void;\n /** Shown on the trigger when nothing is selected. Nothing is shown without\n it: the component ships no words of its own. */\n placeholder?: string | undefined;\n /** Earliest selectable moment as an ISO string. Default: now. */\n min?: string | undefined;\n /** Minute granularity. Default 5; use 30 for :00/:30 only. */\n minuteStep?: number | undefined;\n disabled?: boolean | undefined;\n /** Applied to the trigger button so a `<label htmlFor>` can point at it. */\n id?: string | undefined;\n /** Field name for the trigger, e.g. \"Starts\". Announced alongside the value. */\n \"aria-label\"?: string | undefined;\n /** BCP 47 tag for names, week start and hour cycle. Default: runtime locale. */\n locale?: string | undefined;\n /** Every string the picker says. Required and whole rather than a partial\n over English defaults: a default is a word no translation file reaches,\n and a partial makes the one nobody filled in look deliberate. */\n labels: DateTimePickerLabels;\n}\n\n/* --- Intl-derived locale facts, computed once per locale ------------------ */\n\ninterface LocaleData {\n /** JS day index (0 = Sunday) the week starts on. */\n firstDay: number;\n /** Weekday column headers, ordered from firstDay. */\n weekdays: string[];\n /** 12-hour clock? */\n hour12: boolean;\n /** Localized day-period labels, e.g. [\"AM\", \"PM\"]. */\n dayPeriods: [string, string];\n monthTitle: Intl.DateTimeFormat;\n dayLabel: Intl.DateTimeFormat;\n full: Intl.DateTimeFormat;\n}\n\n/* getWeekInfo is not in the TS lib yet; some engines expose it as an accessor. */\ninterface WeekInfoLocale extends Intl.Locale {\n getWeekInfo?: () => { firstDay: number };\n weekInfo?: { firstDay: number };\n}\n\nfunction localeData(locale: string | undefined): LocaleData {\n const resolved = new Intl.DateTimeFormat(locale).resolvedOptions().locale;\n\n /* Spec counts 1 = Monday … 7 = Sunday; JS Date counts 0 = Sunday. Engines\n without weekInfo fall back to Monday — most of the world's week start. */\n const intlLocale = new Intl.Locale(resolved) as WeekInfoLocale;\n const weekInfo = intlLocale.getWeekInfo?.() ?? intlLocale.weekInfo;\n const firstDay = (weekInfo?.firstDay ?? 1) % 7;\n\n /* 2021-08-01 was a Sunday; format a known week to get the headers. */\n const weekdayFmt = new Intl.DateTimeFormat(resolved, { weekday: \"short\", timeZone: \"UTC\" });\n const weekdays = Array.from({ length: 7 }, (_, i) =>\n weekdayFmt.format(new Date(Date.UTC(2021, 7, 1 + ((firstDay + i) % 7)))),\n );\n\n const hourFmt = new Intl.DateTimeFormat(resolved, { hour: \"numeric\" });\n const { hourCycle } = hourFmt.resolvedOptions();\n const hour12 = hourCycle === \"h11\" || hourCycle === \"h12\";\n\n const periodOf = (hour: number): string =>\n new Intl.DateTimeFormat(resolved, { hour: \"numeric\", hour12: true })\n .formatToParts(new Date(2021, 0, 1, hour))\n .find((part) => part.type === \"dayPeriod\")?.value ?? (hour < 12 ? \"AM\" : \"PM\");\n\n return {\n firstDay,\n weekdays,\n hour12,\n dayPeriods: [periodOf(9), periodOf(21)],\n monthTitle: new Intl.DateTimeFormat(resolved, { month: \"long\", year: \"numeric\" }),\n dayLabel: new Intl.DateTimeFormat(resolved, { month: \"long\", day: \"numeric\", year: \"numeric\" }),\n full: new Intl.DateTimeFormat(resolved, {\n weekday: \"short\",\n month: \"short\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"2-digit\",\n }),\n };\n}\n\n/* --- date arithmetic ------------------------------------------------------ */\n\nfunction startOfDay(d: Date): number {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();\n}\n\nfunction snapMinutes(d: Date, step: number): Date {\n const out = new Date(d);\n out.setMinutes(Math.round(out.getMinutes() / step) * step, 0, 0);\n return out;\n}\n\nfunction addDays(d: Date, n: number): Date {\n const o = new Date(d);\n o.setDate(o.getDate() + n);\n return o;\n}\n\nfunction addMonths(d: Date, n: number): Date {\n const o = new Date(d);\n o.setMonth(o.getMonth() + n);\n return o;\n}\n\nfunction minuteOptions(step: number): number[] {\n const s = Math.max(1, Math.min(60, Math.floor(step)));\n return Array.from({ length: Math.floor(60 / s) }, (_, i) => i * s);\n}\n\nfunction pad2(n: number): string {\n return String(n).padStart(2, \"0\");\n}\n\n/* --- glyphs this picker alone draws; the shared ones are in internal/glyphs --- */\n\nconst calendarGlyph = (\n <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\" className={styles.glyph}>\n <rect x=\"2.5\" y=\"3.5\" width=\"11\" height=\"10\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M2.5 6.5h11M5.5 2v2.5M10.5 2v2.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n);\nconst clockGlyph = (\n <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\" className={styles.glyph}>\n <circle cx=\"8\" cy=\"8\" r=\"5.75\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 5v3.25l2 1.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n/**\n * Mobile-first date + time picker. A trigger styled like Input opens a bottom\n * sheet with a month calendar (roving-focus grid, arrow keys move the day)\n * and native Select time controls. Controlled via `value` (ISO); emits the\n * combined ISO string on confirm. All names, the week start and the 12/24-hour\n * clock come from `Intl` for the given locale.\n *\n * ```tsx\n * <Field label=\"Starts\">\n * <DateTimePicker\n * value={startsAt}\n * onChange={setStartsAt}\n * labels={t(\"picker\", { returnObjects: true })}\n * min={new Date().toISOString()}\n * minuteStep={30}\n * locale={i18n.language}\n * />\n * </Field>\n * ```\n */\nexport function DateTimePicker({\n value,\n onChange,\n placeholder,\n min,\n minuteStep = 5,\n disabled = false,\n id,\n \"aria-label\": ariaLabel,\n locale,\n labels: text,\n}: DateTimePickerProps): ReactElement {\n /* Inside a Field, claim its generated control id and message wiring, the\n same way Input/Select/Textarea do — the field's <label htmlFor> points at\n the control id, and without it the label names nothing. */\n const field = useFieldContext();\n const intl = useMemo(() => localeData(locale), [locale]);\n\n const [open, setOpen] = useState(false);\n const [draft, setDraft] = useState<Date>(() => new Date());\n const [view, setView] = useState<{ y: number; m: number }>(() => {\n const d = new Date();\n return { y: d.getFullYear(), m: d.getMonth() };\n });\n /* The calendar grid is a single tab stop: `focusedDay` is the one day that\n carries tabIndex 0; arrow keys move it (roving focus), crossing months. */\n const [focusedDay, setFocusedDay] = useState<Date>(() => new Date());\n const dayRefs = useRef<Map<number, HTMLButtonElement>>(new Map());\n const pendingFocusRef = useRef(false);\n\n const minDate = min ? new Date(min) : new Date();\n const minStart = startOfDay(minDate);\n\n /* Re-seed the draft + visible month from the current value each time the\n panel opens. When `value` precedes `min` the roving tab stop clamps to\n `min`, and the view must follow it or no day in the grid is focusable. */\n function openPicker(): void {\n const base = snapMinutes(value ? new Date(value) : new Date(), minuteStep);\n setDraft(base);\n const start = startOfDay(base) >= minStart ? base : new Date(minStart);\n setView({ y: start.getFullYear(), m: start.getMonth() });\n setFocusedDay(start);\n setOpen(true);\n }\n\n /* Move DOM focus onto the roving target after an arrow-key move (only then —\n never steal focus when the panel first opens). */\n useEffect(() => {\n if (!pendingFocusRef.current) return;\n pendingFocusRef.current = false;\n dayRefs.current.get(startOfDay(focusedDay))?.focus();\n }, [focusedDay, view]);\n\n const h24 = draft.getHours();\n const h12 = h24 % 12 || 12;\n const isPM = h24 >= 12;\n\n function setHour(v: string): void {\n const nd = new Date(draft);\n nd.setHours(intl.hour12 ? (Number(v) % 12) + (isPM ? 12 : 0) : Number(v));\n setDraft(nd);\n }\n function setMinute(v: string): void {\n const nd = new Date(draft);\n nd.setMinutes(Number(v), 0, 0);\n setDraft(nd);\n }\n function setMeridiem(v: string): void {\n const nd = new Date(draft);\n nd.setHours((h12 % 12) + (v === \"pm\" ? 12 : 0));\n setDraft(nd);\n }\n function pickDay(day: number): void {\n const nd = new Date(draft);\n nd.setFullYear(view.y, view.m, day);\n setDraft(nd);\n }\n /* First selectable day in a month — the 1st, or `min` when it falls\n mid-month. Keeps the roving tab stop pointed at an enabled, in-view day. */\n function firstFocusableInView(y: number, m: number): Date {\n const monthStart = new Date(y, m, 1);\n return startOfDay(monthStart) >= minStart ? monthStart : new Date(minStart);\n }\n function shiftMonth(delta: number): void {\n let m = view.m + delta;\n let y = view.y;\n if (m < 0) { m = 11; y -= 1; }\n if (m > 11) { m = 0; y += 1; }\n setView({ y, m });\n setFocusedDay(firstFocusableInView(y, m));\n }\n function goToday(): void {\n const t = new Date();\n setView({ y: t.getFullYear(), m: t.getMonth() });\n setFocusedDay(startOfDay(t) >= minStart ? t : new Date(minStart));\n }\n /* Move the roving focus to `next` (clamped to >= min), following it across a\n month boundary, then focus the target cell once it renders. */\n function focusDate(next: Date): void {\n if (startOfDay(next) < minStart) return;\n pendingFocusRef.current = true;\n if (next.getMonth() !== view.m || next.getFullYear() !== view.y) {\n setView({ y: next.getFullYear(), m: next.getMonth() });\n }\n setFocusedDay(next);\n }\n function onDayKeyDown(e: KeyboardEvent<HTMLButtonElement>, cell: Date): void {\n /* Home/End go to the locale's start/end of week, not Sunday/Saturday. */\n const weekOffset = (cell.getDay() - intl.firstDay + 7) % 7;\n switch (e.key) {\n case \"ArrowLeft\": e.preventDefault(); focusDate(addDays(cell, -1)); break;\n case \"ArrowRight\": e.preventDefault(); focusDate(addDays(cell, 1)); break;\n case \"ArrowUp\": e.preventDefault(); focusDate(addDays(cell, -7)); break;\n case \"ArrowDown\": e.preventDefault(); focusDate(addDays(cell, 7)); break;\n case \"Home\": e.preventDefault(); focusDate(addDays(cell, -weekOffset)); break;\n case \"End\": e.preventDefault(); focusDate(addDays(cell, 6 - weekOffset)); break;\n case \"PageUp\": e.preventDefault(); focusDate(addMonths(cell, -1)); break;\n case \"PageDown\": e.preventDefault(); focusDate(addMonths(cell, 1)); break;\n case \"Enter\":\n case \" \":\n e.preventDefault();\n pickDay(cell.getDate());\n break;\n default: break;\n }\n }\n function confirm(): void {\n onChange(draft.toISOString());\n setOpen(false);\n }\n\n const first = new Date(view.y, view.m, 1);\n const startWeekday = (first.getDay() - intl.firstDay + 7) % 7;\n const daysInMonth = new Date(view.y, view.m + 1, 0).getDate();\n const prevDisabled =\n view.y < minDate.getFullYear() || (view.y === minDate.getFullYear() && view.m <= minDate.getMonth());\n const todayStart = startOfDay(new Date());\n const draftStart = startOfDay(draft);\n\n /* Render the month's natural span of weeks: trailing days of the previous\n month, in-month days 1..N, then enough of the next month to complete the\n last week (4/5/6 rows). Neighbour-month days are dimmed + non-interactive;\n the grid reserves 6 rows of height so the panel never jumps. */\n const spanCells = Math.ceil((startWeekday + daysInMonth) / 7) * 7;\n const dayCells = Array.from({ length: spanCells }, (_, i) => {\n const cell = new Date(view.y, view.m, 1 - startWeekday + i);\n const inMonth = cell.getMonth() === view.m && cell.getFullYear() === view.y;\n const cellStart = cell.getTime();\n const isDisabled = !inMonth || cellStart < minStart;\n const isSelected = inMonth && cellStart === draftStart;\n const isToday = inMonth && cellStart === todayStart;\n const isFocusTarget = inMonth && !isDisabled && cellStart === startOfDay(focusedDay);\n return (\n <button\n key={`c-${i}`}\n type=\"button\"\n disabled={isDisabled}\n /* Single tab stop: only the roving-focus day is tabbable; the rest are\n reached with the arrow keys (WCAG 2.1.1 / grid pattern). */\n tabIndex={isFocusTarget ? 0 : -1}\n ref={\n inMonth && !isDisabled\n ? (el): void => {\n if (el) dayRefs.current.set(cellStart, el);\n else dayRefs.current.delete(cellStart);\n }\n : undefined\n }\n /* gridcell on the button itself: the cell is the interactive thing,\n and a wrapper would add a layer the grid pattern does not need. */\n role=\"gridcell\"\n aria-hidden={inMonth ? undefined : true}\n aria-label={intl.dayLabel.format(cell)}\n aria-selected={isSelected}\n aria-current={isToday ? \"date\" : undefined}\n onClick={inMonth ? () => pickDay(cell.getDate()) : undefined}\n onKeyDown={inMonth && !isDisabled ? (e) => onDayKeyDown(e, cell) : undefined}\n className={cx(styles.day, isToday && styles.today, isSelected && styles.selected, !inMonth && styles.outside)}\n >\n {cell.getDate()}\n </button>\n );\n });\n\n /* The trigger shows the value, or the placeholder, or nothing: the\n placeholder is optional, and interpolating it while unset would print\n \"undefined\" into the accessible name. */\n const shown = value ? intl.full.format(new Date(value)) : placeholder;\n\n return (\n <>\n <button\n id={id ?? field?.id}\n type=\"button\"\n disabled={disabled}\n aria-describedby={field?.describedBy}\n aria-invalid={field?.invalid || undefined}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n /* Announce the field name (when given) alongside the current value. */\n aria-label={ariaLabel === undefined ? undefined : [ariaLabel, shown].filter(Boolean).join(\": \")}\n onClick={openPicker}\n className={cx(styles.trigger, value && styles.hasValue)}\n >\n {calendarGlyph}\n <span className={styles.triggerLabel}>{shown}</span>\n </button>\n\n <Sheet open={open} onClose={() => setOpen(false)} label={ariaLabel ?? text.dialog}>\n <SheetHeader>{intl.full.format(draft)}</SheetHeader>\n <SheetBody>\n <div className={styles.timeRow}>\n {clockGlyph}\n {intl.hour12 ? (\n <>\n <Select aria-label={text.hour} value={String(h12)} onChange={(e) => setHour(e.target.value)} className={styles.grow}>\n {Array.from({ length: 12 }, (_, i) => (\n <option key={i + 1} value={String(i + 1)}>\n {i + 1}\n </option>\n ))}\n </Select>\n <span className={styles.colon} aria-hidden=\"true\">:</span>\n <Select aria-label={text.minute} value={String(draft.getMinutes())} onChange={(e) => setMinute(e.target.value)} className={styles.grow}>\n {minuteOptions(minuteStep).map((m) => (\n <option key={m} value={String(m)}>\n {pad2(m)}\n </option>\n ))}\n </Select>\n <Select aria-label={text.dayPeriod} value={isPM ? \"pm\" : \"am\"} onChange={(e) => setMeridiem(e.target.value)} className={styles.meridiem}>\n <option value=\"am\">{intl.dayPeriods[0]}</option>\n <option value=\"pm\">{intl.dayPeriods[1]}</option>\n </Select>\n </>\n ) : (\n <>\n <Select aria-label={text.hour} value={String(h24)} onChange={(e) => setHour(e.target.value)} className={styles.grow}>\n {Array.from({ length: 24 }, (_, i) => (\n <option key={i} value={String(i)}>\n {pad2(i)}\n </option>\n ))}\n </Select>\n <span className={styles.colon} aria-hidden=\"true\">:</span>\n <Select aria-label={text.minute} value={String(draft.getMinutes())} onChange={(e) => setMinute(e.target.value)} className={styles.grow}>\n {minuteOptions(minuteStep).map((m) => (\n <option key={m} value={String(m)}>\n {pad2(m)}\n </option>\n ))}\n </Select>\n </>\n )}\n </div>\n\n <div role=\"group\" aria-label={intl.monthTitle.format(first)}>\n <div className={styles.calendarHeader}>\n <Button\n iconOnly\n aria-label={text.previousMonth}\n variant=\"ghost\"\n size=\"sm\"\n disabled={prevDisabled}\n onClick={() => shiftMonth(-1)}\n >\n <ChevronLeftGlyph className={styles.glyph} />\n </Button>\n {/* Live, because the arrows change the calendar without moving focus:\n without an announcement the month flip is silent to a reader. */}\n <span className={styles.monthLabel} aria-live=\"polite\">\n {intl.monthTitle.format(first)}\n </span>\n <Button iconOnly aria-label={text.nextMonth} variant=\"ghost\" size=\"sm\" onClick={() => shiftMonth(1)}>\n <ChevronRightGlyph className={styles.glyph} />\n </Button>\n </div>\n {/* APG grid: rows and columnheaders give a reader the week\n structure the eyes get from the layout. The row wrappers are\n display: contents so the CSS grid still lays out flat cells. */}\n <div role=\"grid\" aria-label={intl.monthTitle.format(first)}>\n <div role=\"row\" className={styles.weekdays}>\n {intl.weekdays.map((w, i) => (\n <span key={`wd-${i}`} role=\"columnheader\" className={styles.weekday}>\n {w}\n </span>\n ))}\n </div>\n <div role=\"rowgroup\" className={styles.grid}>\n {Array.from({ length: spanCells / 7 }, (_, w) => (\n <div key={`w-${w}`} role=\"row\" className={styles.week}>\n {dayCells.slice(w * 7, w * 7 + 7)}\n </div>\n ))}\n </div>\n </div>\n </div>\n </SheetBody>\n <SheetFooter>\n <Button variant=\"ghost\" onClick={goToday}>\n {text.today}\n </Button>\n <Button variant=\"primary\" onClick={confirm}>\n {text.done}\n </Button>\n </SheetFooter>\n </Sheet>\n </>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tag/Tag.module.css?mds-scoped\";\nexport default {\"tag\":\"mds-Tag__tag\",\"tone-accent\":\"mds-Tag__tone-accent\",\"remove\":\"mds-Tag__remove mds-hit-area__hitArea\",\"removeGlyph\":\"mds-Tag__removeGlyph\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { CloseGlyph } from \"../../internal/glyphs\";\nimport styles from \"./Tag.module.css\";\n\nexport type TagTone = \"neutral\" | \"accent\";\n\nexport type TagProps = HTMLAttributes<HTMLSpanElement> & {\n children: ReactNode;\n tone?: TagTone;\n ref?: Ref<HTMLSpanElement>;\n} & (\n | {\n /** Renders a ✕ button after the content. */\n onRemove: () => void;\n /** Names that button, e.g. \"Remove Beginner\". Required alongside\n `onRemove`: the glyph says nothing, and only the app knows how its\n language builds the sentence. */\n removeLabel: string;\n }\n | { onRemove?: undefined; removeLabel?: undefined }\n );\n\n/**\n * Content label chip — categories, filters, topics.\n *\n * ```tsx\n * <Tag>Design</Tag>\n * <Tag tone=\"accent\" onRemove={() => remove(id)} removeLabel=\"Remove Beginner\">Beginner</Tag>\n * ```\n */\nexport function Tag({\n children,\n tone = \"neutral\",\n onRemove,\n removeLabel,\n className,\n ...rest\n}: TagProps): ReactElement {\n return (\n <span className={cx(styles.tag, styles[`tone-${tone}`], className)} {...rest}>\n {children}\n {onRemove !== undefined && (\n <button\n type=\"button\"\n className={styles.remove}\n aria-label={removeLabel}\n onClick={onRemove}\n >\n <CloseGlyph className={styles.removeGlyph} />\n </button>\n )}\n </span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Divider/Divider.module.css?mds-scoped\";\nexport default {\"divider\":\"mds-Divider__divider\",\"horizontal\":\"mds-Divider__horizontal\",\"vertical\":\"mds-Divider__vertical\"};","import type { HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Divider.module.css\";\n\nexport interface DividerProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: \"horizontal\" | \"vertical\";\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * Visual separator. Semantic separator role via <hr>-equivalent div.\n *\n * ```tsx\n * <Divider />\n * <Divider orientation=\"vertical\" />\n * ```\n */\nexport function Divider({ orientation = \"horizontal\", className, ...rest }: DividerProps): ReactElement {\n return (\n <div\n role=\"separator\"\n aria-orientation={orientation === \"vertical\" ? \"vertical\" : undefined}\n className={cx(styles.divider, styles[orientation], className)}\n {...rest}\n />\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/VisuallyHidden/VisuallyHidden.module.css?mds-scoped\";\nexport default {\"hidden\":\"mds-VisuallyHidden__hidden\"};","import type { HTMLAttributes, JSX, ReactElement } from \"react\";\nimport { createElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./VisuallyHidden.module.css\";\n\nexport interface VisuallyHiddenProps extends HTMLAttributes<HTMLElement> {\n /** Element override when the markup needs a particular tag — a page's h1, a\n table's thead. Default \"span\". */\n as?: keyof JSX.IntrinsicElements;\n}\n\n/**\n * Text for screen readers and not for eyes.\n *\n * The design does not always draw what the markup owes: a screen whose title is\n * the tab bar underneath it still needs an h1, and a table whose columns are\n * obvious to look at still needs a thead. Both go here rather than into a\n * one-off class in the app.\n *\n * ```tsx\n * <VisuallyHidden as=\"h1\">Discover</VisuallyHidden>\n * <VisuallyHidden role=\"status\" aria-live=\"polite\">{message}</VisuallyHidden>\n * ```\n */\nexport function VisuallyHidden({ as = \"span\", className, ...rest }: VisuallyHiddenProps): ReactElement {\n return createElement(as, { className: cx(styles.hidden, className), ...rest });\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Skeleton/Skeleton.module.css?mds-scoped\";\nexport default {\"skeleton\":\"mds-Skeleton__skeleton\",\"pulse\":\"mds-Skeleton__pulse\",\"lines\":\"mds-Skeleton__lines\",\"variant-text\":\"mds-Skeleton__variant-text\",\"variant-rect\":\"mds-Skeleton__variant-rect\",\"variant-circle\":\"mds-Skeleton__variant-circle\"};","import type { CSSProperties, HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Skeleton.module.css\";\n\nexport type SkeletonVariant = \"text\" | \"rect\" | \"circle\";\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: SkeletonVariant;\n /** Any CSS length. Text defaults to full width, one line tall. */\n width?: string;\n height?: string;\n /** How many lines of text to stand in for. Above one, the last is cut short\n — a paragraph ends mid-line, and a block of full-width bars reads as a\n table. Text only: a rect or a circle is one shape however many lines of\n copy it replaces. */\n lines?: number;\n ref?: Ref<HTMLSpanElement>;\n}\n\n/* Where a paragraph's last line tends to land. */\nconst LAST_LINE = \"62%\";\n\n/**\n * Loading placeholder. aria-hidden — the loading announcement belongs to the\n * region (aria-busy), not to each shimmering box.\n *\n * ```tsx\n * <div aria-busy={loading}>\n * {loading ? (\n * <Stack gap=\"tight\">\n * <Skeleton width=\"40%\" />\n * <Skeleton />\n * <Skeleton lines={3} />\n * <Skeleton variant=\"rect\" height=\"8rem\" />\n * </Stack>\n * ) : (\n * content\n * )}\n * </div>\n * ```\n */\nexport function Skeleton({\n variant = \"text\",\n width,\n height,\n lines = 1,\n className,\n style,\n ...rest\n}: SkeletonProps): ReactElement {\n const vars = {\n ...(width ? { \"--skeleton-w\": width } : {}),\n ...(height ? { \"--skeleton-h\": height } : {}),\n } as CSSProperties;\n const box = cx(styles.skeleton, styles[`variant-${variant}`], className);\n\n if (variant === \"text\" && lines > 1) {\n return (\n <span aria-hidden=\"true\" className={styles.lines} style={style} {...rest}>\n {Array.from({ length: lines }, (_, line) => (\n <span\n key={line}\n className={box}\n style={line === lines - 1 ? { ...vars, \"--skeleton-w\": LAST_LINE } as CSSProperties : vars}\n />\n ))}\n </span>\n );\n }\n\n return <span aria-hidden=\"true\" className={box} style={{ ...vars, ...style }} {...rest} />;\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ProgressBar/ProgressBar.module.css?mds-scoped\";\nexport default {\"track\":\"mds-ProgressBar__track\",\"fill\":\"mds-ProgressBar__fill\",\"indeterminate\":\"mds-ProgressBar__indeterminate\",\"slide\":\"mds-ProgressBar__slide\"};","import type { CSSProperties, HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./ProgressBar.module.css\";\n\nexport interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {\n /** 0–100; clamped. Ignored when indeterminate. */\n value?: number;\n /** Accessible name — required. A bare bar announces nothing useful. */\n label: string;\n /** What the bar has got through, in words — \"2.1 MB of 5 MB\". Read instead\n of the percentage, which is not always what the number means. */\n valueText?: string;\n indeterminate?: boolean;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * Determinate or indeterminate progress track.\n *\n * ```tsx\n * <ProgressBar label=\"Upload\" value={64} />\n * <ProgressBar label=\"Syncing\" indeterminate />\n * ```\n */\nexport function ProgressBar({\n value = 0,\n label,\n valueText,\n indeterminate = false,\n className,\n style,\n ...rest\n}: ProgressBarProps): ReactElement {\n const clamped = Math.min(100, Math.max(0, value));\n return (\n <div\n role=\"progressbar\"\n aria-label={label}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={indeterminate ? undefined : clamped}\n aria-valuetext={valueText}\n className={cx(styles.track, indeterminate && styles.indeterminate, className)}\n style={{ ...( { \"--progress\": `${clamped}%` } as CSSProperties), ...style }}\n {...rest}\n >\n <span className={styles.fill} />\n </div>\n );\n}\n","import type { Ref, RefObject } from \"react\";\n\n/**\n * One node, two holders. React hands the element to a single ref, so a\n * component that needs the node for itself — to set a DOM property no\n * attribute carries, to measure it — has to pass it on to the caller's ref\n * as well, and both kinds of ref have to be honoured.\n */\nexport function forkRef<T>(own: RefObject<T | null>, given: Ref<T> | undefined) {\n return (node: T | null) => {\n own.current = node;\n if (typeof given === \"function\") given(node);\n else if (given != null) given.current = node;\n };\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Input/Input.module.css?mds-scoped\";\nexport default {\"input\":\"mds-Input__input\",\"own-clear\":\"mds-Input__own-clear\",\"size-sm\":\"mds-Input__size-sm\",\"size-md\":\"mds-Input__size-md\",\"size-lg\":\"mds-Input__size-lg\",\"iconWrap\":\"mds-Input__iconWrap\",\"icon\":\"mds-Input__icon\",\"slot-sm\":\"mds-Input__slot-sm\",\"slot-md\":\"mds-Input__slot-md\",\"slot-lg\":\"mds-Input__slot-lg\",\"iconLeft\":\"mds-Input__iconLeft\",\"iconRight\":\"mds-Input__iconRight\",\"with-icon-left\":\"mds-Input__with-icon-left\",\"with-icon-right\":\"mds-Input__with-icon-right\",\"clear\":\"mds-Input__clear mds-hit-area__hitArea\",\"clearGlyph\":\"mds-Input__clearGlyph\"};","import type {\n ChangeEvent,\n HTMLInputTypeAttribute,\n InputHTMLAttributes,\n ReactElement,\n ReactNode,\n Ref,\n} from \"react\";\nimport { useRef, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { forkRef } from \"../../internal/forkRef\";\nimport { CloseGlyph } from \"../../internal/glyphs\";\nimport { useFieldContext } from \"../Field/Field\";\nimport styles from \"./Input.module.css\";\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\ninterface InputBaseProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /** The native input type, passed straight through — the system adds no types\n of its own, so `email`, `tel`, `url` and `number` behave as the platform\n defines them, keyboard and validation included. Default \"text\".\n\n One type the component answers to: with `type=\"search\"`, `onClear` takes\n over the browser's own clear cross, so the field shows one clear\n affordance rather than two. Without `onClear` the native cross is left\n alone — there it is the only way to empty the field. */\n type?: HTMLInputTypeAttribute;\n /** Control height and type size. The icon slots, the gutter and the clear\n button all step with it. Default \"md\". */\n size?: InputSize;\n /** Marks the value as failing validation — sets aria-invalid and the danger\n border. Inside a Field the field's error state does this already. */\n invalid?: boolean;\n /** Decorative icon inside the leading edge. Icons carry no name here —\n the input's label does the talking. */\n iconLeft?: ReactNode;\n /** Decorative icon inside the trailing edge. */\n iconRight?: ReactNode;\n ref?: Ref<HTMLInputElement>;\n}\n\n/* The clear button and iconRight are the same slot, so only one of them may be\n asked for, and a glyph button is nothing to a screen reader without a name —\n the type collects both rules. The words are the app's: \"Clear search\" and\n \"Clear filter\" are not interchangeable. */\ntype ClearEnforcement =\n | {\n /** Raises a clear button in the trailing slot whenever the field holds\n text, and runs when it is pressed. An uncontrolled field is emptied\n for you; a controlled one is yours to empty here. Rules out\n iconRight — they are the same slot. */\n onClear: () => void;\n /** Names that button, e.g. \"Clear search\". Required: the cross says\n nothing to a screen reader, and the words are the app's — \"Clear\n search\" and \"Clear filter\" are not interchangeable. */\n clearLabel: string;\n iconRight?: undefined;\n }\n | { onClear?: undefined; clearLabel?: undefined };\n\nexport type InputProps = InputBaseProps & ClearEnforcement;\n\n/**\n * Single-line text input. Inside a Field it inherits id/description/invalid.\n *\n * Sizes are `sm` / `md` / `lg`; the icon slots and the clear button step with\n * them. `onClear` folds in what SearchField used to be — pair it with\n * `type=\"search\"` and it replaces the browser's own clear cross.\n *\n * ```tsx\n * <Field label=\"Name\">\n * <Input value={name} onChange={(e) => setName(e.target.value)} />\n * </Field>\n *\n * <Input aria-label=\"Search\" iconLeft={<Icon name=\"search\" />} />\n *\n * <Input\n * type=\"search\"\n * aria-label=\"Search sessions\"\n * iconLeft={<Icon name=\"search\" />}\n * value={query}\n * onChange={(e) => setQuery(e.target.value)}\n * clearLabel=\"Clear search\"\n * onClear={() => setQuery(\"\")}\n * />\n * ```\n */\nexport function Input({\n size = \"md\",\n invalid,\n iconLeft,\n iconRight,\n onClear,\n clearLabel,\n className,\n ref,\n ...rest\n}: InputProps): ReactElement {\n const field = useFieldContext();\n const own = useRef<HTMLInputElement>(null);\n\n /* Whether there is anything to clear. A controlled field answers from its\n own value; an uncontrolled one only knows what it has been typed into, so\n the change events carry the answer. */\n const [typedInto, setTypedInto] = useState(() => String(rest.defaultValue ?? \"\") !== \"\");\n const hasText = rest.value !== undefined ? String(rest.value) !== \"\" : typedInto;\n const showClear = onClear != null && hasText;\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (onClear != null) setTypedInto(event.target.value !== \"\");\n rest.onChange?.(event);\n };\n\n const clear = () => {\n /* An uncontrolled field holds its text in the DOM, so emptying it is a DOM\n write; a controlled one is the caller's to empty in onClear. */\n if (rest.value === undefined && own.current != null) own.current.value = \"\";\n setTypedInto(false);\n own.current?.focus();\n onClear?.();\n };\n\n const input = (\n <input\n ref={forkRef(own, ref)}\n id={rest.id ?? field?.id}\n aria-describedby={rest[\"aria-describedby\"] ?? field?.describedBy}\n aria-invalid={rest[\"aria-invalid\"] ?? ((invalid ?? field?.invalid) || undefined)}\n aria-required={rest[\"aria-required\"] ?? (field?.required || undefined)}\n className={cx(\n styles.input,\n styles[`size-${size}`],\n iconLeft != null && styles[\"with-icon-left\"],\n (iconRight != null || showClear) && styles[\"with-icon-right\"],\n onClear != null && styles[\"own-clear\"],\n className,\n )}\n {...rest}\n onChange={handleChange}\n />\n );\n\n if (iconLeft == null && iconRight == null && onClear == null) return input;\n\n return (\n <span className={cx(styles.iconWrap, styles[`slot-${size}`])}>\n {input}\n {iconLeft != null && (\n <span className={cx(styles.icon, styles.iconLeft)} aria-hidden=\"true\">\n {iconLeft}\n </span>\n )}\n {iconRight != null && (\n <span className={cx(styles.icon, styles.iconRight)} aria-hidden=\"true\">\n {iconRight}\n </span>\n )}\n {showClear && (\n <button type=\"button\" aria-label={clearLabel} className={styles.clear} onClick={clear}>\n <CloseGlyph className={styles.clearGlyph} />\n </button>\n )}\n </span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/PasswordInput/PasswordInput.module.css?mds-scoped\";\nexport default {\"wrap\":\"mds-PasswordInput__wrap\",\"input\":\"mds-PasswordInput__input\",\"toggle\":\"mds-PasswordInput__toggle mds-hit-area__hitArea\"};","import { useState } from \"react\";\nimport type { ReactElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Input } from \"../Input/Input\";\nimport type { InputProps } from \"../Input/Input\";\nimport styles from \"./PasswordInput.module.css\";\n\n/* The reveal toggle is this field's trailing slot, so nothing else may claim\n it — and Omit collapses Input's either/or branch anyway, which would leave\n the clear button's two halves separable. Both reasons drop the same keys. */\nexport interface PasswordInputProps\n extends Omit<InputProps, \"type\" | \"onClear\" | \"clearLabel\" | \"iconRight\"> {\n /** Names the reveal button while the password is hidden, e.g. \"Show password\".\n Required: the button carries no visible text, so this is the only thing a\n screen reader has, and it is the app's language rather than the system's. */\n showLabel: string;\n /** Names the same button while the password is visible, e.g. \"Hide password\". */\n hideLabel: string;\n}\n\n/**\n * Password field with a reveal toggle. Composes Input, so inside a Field it\n * inherits id/description/invalid the same way.\n *\n * ```tsx\n * <Field label=\"Password\" hint=\"At least 12 characters\">\n * <PasswordInput showLabel=\"Show password\" hideLabel=\"Hide password\" autoComplete=\"new-password\" />\n * </Field>\n * ```\n */\nexport function PasswordInput({\n showLabel,\n hideLabel,\n className,\n ...rest\n}: PasswordInputProps): ReactElement {\n const [visible, setVisible] = useState(false);\n return (\n <span className={styles.wrap}>\n <Input {...rest} type={visible ? \"text\" : \"password\"} className={cx(styles.input, className)} />\n <button\n type=\"button\"\n className={styles.toggle}\n aria-label={visible ? hideLabel : showLabel}\n aria-pressed={visible}\n onClick={() => setVisible((v) => !v)}\n >\n {visible ? (\n /* eye-off */\n <svg viewBox=\"0 0 24 24\" width=\"1em\" height=\"1em\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94\" />\n <path d=\"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19\" />\n <path d=\"M14.12 14.12a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n ) : (\n /* eye */\n <svg viewBox=\"0 0 24 24\" width=\"1em\" height=\"1em\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )}\n </button>\n </span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Textarea/Textarea.module.css?mds-scoped\";\nexport default {\"textarea\":\"mds-Textarea__textarea\",\"wrap\":\"mds-Textarea__wrap\",\"count\":\"mds-Textarea__count\"};","import { useId, useState } from \"react\";\nimport type { ChangeEvent, ReactElement, Ref, TextareaHTMLAttributes } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { useFieldContext } from \"../Field/Field\";\nimport styles from \"./Textarea.module.css\";\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** Character counter under the control; pairs with native maxLength. */\n showCount?: boolean;\n ref?: Ref<HTMLTextAreaElement>;\n}\n\n/**\n * Multi-line text input. Inside a Field it inherits id/description/invalid.\n *\n * ```tsx\n * <Field label=\"Bio\">\n * <Textarea maxLength={160} showCount />\n * </Field>\n * ```\n */\nexport function Textarea({ rows = 3, showCount = false, className, ...rest }: TextareaProps): ReactElement {\n const field = useFieldContext();\n const countId = useId();\n const [tracked, setTracked] = useState(() => String(rest.defaultValue ?? \"\"));\n const current = rest.value !== undefined ? String(rest.value) : tracked;\n\n const onChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n setTracked(event.target.value);\n rest.onChange?.(event);\n };\n\n /* The count joins the hint/error in the description rather than replacing\n it — and it must land after the rest spread, or a caller's\n aria-describedby would knock the count back out. */\n const describedBy =\n [rest[\"aria-describedby\"] ?? field?.describedBy, showCount ? countId : undefined]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const textarea = (\n <textarea\n id={rest.id ?? field?.id}\n aria-invalid={rest[\"aria-invalid\"] ?? (field?.invalid || undefined)}\n aria-required={rest[\"aria-required\"] ?? (field?.required || undefined)}\n rows={rows}\n className={cx(styles.textarea, className)}\n {...rest}\n aria-describedby={describedBy}\n {...(showCount ? { onChange } : {})}\n />\n );\n\n if (!showCount) return textarea;\n return (\n <span className={styles.wrap}>\n {textarea}\n <span id={countId} className={styles.count}>\n {rest.maxLength !== undefined ? `${current.length}/${rest.maxLength}` : current.length}\n </span>\n </span>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Checkbox/Checkbox.module.css?mds-scoped\";\nexport default {\"root\":\"mds-Checkbox__root\",\"box\":\"mds-Checkbox__box mds-hit-area__hitArea\",\"bare\":\"mds-Checkbox__bare\",\"label\":\"mds-Checkbox__label\"};","import type { InputHTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { useEffect, useRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { forkRef } from \"../../internal/forkRef\";\nimport { VisuallyHidden } from \"../VisuallyHidden/VisuallyHidden\";\nimport styles from \"./Checkbox.module.css\";\n\nexport interface CheckboxProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n /** Inline label — part of the click target. Rich content welcome (an\n inline link, a Text run); the label element names the box either way. */\n label: ReactNode;\n /** Keep the name for readers and take it off the screen. A box in a table's\n select column has no room for the word and the column header says it\n anyway, but a reader who cannot see which row they are in still needs\n to be told. Naming it is not optional; showing it is. */\n labelHidden?: boolean;\n /** Neither checked nor unchecked: the third thing a box governing a set of\n others has to say. Only the DOM property carries it — there is no\n attribute — so a caller cannot set it without this. */\n indeterminate?: boolean;\n ref?: Ref<HTMLInputElement>;\n}\n\n/**\n * Native checkbox, styled box. Label is the touch target too.\n *\n * ```tsx\n * <Checkbox label=\"Remember me\" defaultChecked />\n * <Checkbox\n * label=\"Accept terms\"\n * checked={accepted}\n * onChange={(e) => setAccepted(e.target.checked)}\n * />\n * ```\n */\nexport function Checkbox({\n label,\n labelHidden = false,\n indeterminate = false,\n className,\n ref,\n ...rest\n}: CheckboxProps): ReactElement {\n const own = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (own.current !== null) own.current.indeterminate = indeterminate;\n }, [indeterminate]);\n\n return (\n <label className={cx(styles.root, labelHidden && styles.bare, className)}>\n <input\n type=\"checkbox\"\n className={styles.box}\n ref={forkRef(own, ref)}\n {...rest}\n />\n {labelHidden ? (\n <VisuallyHidden className={styles.label}>{label}</VisuallyHidden>\n ) : (\n <span className={styles.label}>{label}</span>\n )}\n </label>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Radio/Radio.module.css?mds-scoped\";\nexport default {\"root\":\"mds-Radio__root\",\"size-sm\":\"mds-Radio__size-sm\",\"size-lg\":\"mds-Radio__size-lg\",\"dot\":\"mds-Radio__dot mds-hit-area__hitArea\",\"label\":\"mds-Radio__label\"};","import type { InputHTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Radio.module.css\";\n\nexport type RadioSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n /** Inline label — part of the click target. */\n label: string;\n /** Control step. Default md. The 44px target holds at every step. */\n size?: RadioSize;\n ref?: Ref<HTMLInputElement>;\n}\n\n/**\n * Native radio, styled dot. Group by `name`; wrap the group in\n * `<fieldset>`/`<legend>` for a group label.\n *\n * ```tsx\n * <fieldset>\n * <legend>Plan</legend>\n * <Radio name=\"plan\" label=\"Free\" checked={plan === \"free\"} onChange={() => setPlan(\"free\")} />\n * <Radio name=\"plan\" label=\"Pro\" checked={plan === \"pro\"} onChange={() => setPlan(\"pro\")} />\n * </fieldset>\n * ```\n */\nexport function Radio({ label, size = \"md\", className, ...rest }: RadioProps): ReactElement {\n return (\n <label className={cx(styles.root, styles[`size-${size}`], className)}>\n <input type=\"radio\" className={styles.dot} {...rest} />\n <span className={styles.label}>{label}</span>\n </label>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Switch/Switch.module.css?mds-scoped\";\nexport default {\"root\":\"mds-Switch__root\",\"track\":\"mds-Switch__track mds-hit-area__hitArea\",\"trackWrap\":\"mds-Switch__trackWrap\",\"spinner\":\"mds-Switch__spinner\",\"label\":\"mds-Switch__label\"};","import type { InputHTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Spinner } from \"../Spinner/Spinner\";\nimport styles from \"./Switch.module.css\";\n\ninterface SwitchBaseProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n /** Busy blocks toggling for the same reason disabled does — a second tap\n would queue a write against a value the first one is still deciding. */\n loading?: boolean;\n ref?: Ref<HTMLInputElement>;\n}\n\n/* A switch with no words beside it still needs a name — a row whose title\n already labels it, a column under one header. The type demands it. */\ntype SwitchLabelEnforcement =\n | { /** Inline label — part of the click target. */ label: string }\n | { label?: undefined; \"aria-label\": string };\n\nexport type SwitchProps = SwitchBaseProps & SwitchLabelEnforcement;\n\n/**\n * On/off toggle. Checkbox under the hood with role=\"switch\" — native\n * semantics and forms integration, switch announcement.\n *\n * ```tsx\n * <Switch\n * label=\"Notifications\"\n * checked={enabled}\n * onChange={(e) => setEnabled(e.target.checked)}\n * />\n * <Switch aria-label=\"Email on new posts\" checked={on} loading={saving} onChange={toggle} />\n * ```\n */\nexport function Switch({\n label,\n loading = false,\n disabled = false,\n className,\n onClick,\n onChange,\n ...rest\n}: SwitchProps): ReactElement {\n return (\n <label className={cx(styles.root, className)}>\n <span className={styles.trackWrap}>\n <input\n type=\"checkbox\"\n role=\"switch\"\n className={styles.track}\n /* Loading locks but does not disable: a disabled attribute would\n drop keyboard focus to the body the instant the toggle starts its\n write. preventDefault on click cancels the checkbox's activation,\n which covers Space and label clicks in the same stroke — but React\n raises onChange from the click regardless, so both are guarded. */\n disabled={disabled}\n onClick={loading ? (event) => event.preventDefault() : onClick}\n onChange={loading ? undefined : onChange}\n aria-disabled={loading || undefined}\n aria-busy={loading || undefined}\n {...rest}\n />\n {/* Purely visual — aria-busy on the input carries the state. */}\n {loading && (\n <Spinner size={12} label=\"\" aria-hidden=\"true\" className={styles.spinner} />\n )}\n </span>\n {label !== undefined && <span className={styles.label}>{label}</span>}\n </label>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/SegmentedControl/SegmentedControl.module.css?mds-scoped\";\nexport default {\"group\":\"mds-SegmentedControl__group\",\"size-md\":\"mds-SegmentedControl__size-md\",\"face\":\"mds-SegmentedControl__face\",\"size-sm\":\"mds-SegmentedControl__size-sm\",\"bare\":\"mds-SegmentedControl__bare\",\"segment\":\"mds-SegmentedControl__segment\",\"fullWidth\":\"mds-SegmentedControl__fullWidth\",\"input\":\"mds-SegmentedControl__input\"};","import type { ReactElement } from \"react\";\nimport { useId } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./SegmentedControl.module.css\";\n\nexport interface SegmentOption<T extends string = string> {\n value: T;\n label: string;\n}\n\nexport type SegmentedControlSize = \"sm\" | \"md\";\n\nexport interface SegmentedControlProps<T extends string = string> {\n /** Accessible group name. */\n label: string;\n options: readonly SegmentOption<T>[];\n value: T;\n onChange: (value: T) => void;\n /** Disables the whole control — e.g. a choice locked while editing. */\n disabled?: boolean;\n /** Stretch across the container, segments sharing the width equally —\n the usual shape when the control heads a screen-wide view switch. */\n fullWidth?: boolean;\n /** Control step. Default md. sm is for chrome — a switch sharing a header\n bar with an avatar and a menu, where the medium step is the tallest\n thing up there. */\n size?: SegmentedControlSize;\n /** Report the segment already chosen being picked again. Off by default:\n a radio only fires when its checked state changes, and for most choices\n that is the whole story. Turn it on where confirming the value on screen\n is itself an act — pinning a language that until now was inferred from\n the browser, so it stops following it. */\n repick?: boolean;\n /** Drop the frame: no tray, no padding around the segments. The tray is\n what makes the group read as a form field, and in a header bar a field\n is what it is not. The chosen segment still carries its own surface. */\n bare?: boolean;\n className?: string;\n}\n\n/**\n * Exclusive choice among few visible options. Native radios under the hood —\n * free keyboard model and semantics.\n *\n * ```tsx\n * <SegmentedControl\n * label=\"View\"\n * options={[\n * { value: \"list\", label: \"List\" },\n * { value: \"grid\", label: \"Grid\" },\n * ]}\n * value={view}\n * onChange={setView}\n * />\n * ```\n */\nexport function SegmentedControl<T extends string = string>({\n label,\n options,\n value,\n onChange,\n disabled = false,\n fullWidth = false,\n size = \"md\",\n bare = false,\n repick = false,\n className,\n}: SegmentedControlProps<T>): ReactElement {\n const name = useId();\n return (\n <div\n role=\"radiogroup\"\n aria-label={label}\n className={cx(\n styles.group,\n styles[`size-${size}`],\n fullWidth && styles.fullWidth,\n bare && styles.bare,\n className,\n )}\n >\n {options.map((option) => (\n <label key={option.value} className={styles.segment}>\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={option.value === value}\n onChange={() => onChange(option.value)}\n /* Only for the segment already chosen: for any other, the click\n is followed by a change event and this would say it twice. */\n onClick={\n repick && option.value === value ? () => onChange(option.value) : undefined\n }\n disabled={disabled}\n className={styles.input}\n />\n <span className={styles.face}>{option.label}</span>\n </label>\n ))}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Scroller/Scroller.module.css?mds-scoped\";\nexport default {\"scroller\":\"mds-Scroller__scroller\",\"header\":\"mds-Scroller__header\",\"trailing\":\"mds-Scroller__trailing\",\"track\":\"mds-Scroller__track\",\"arrows\":\"mds-Scroller__arrows\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { useCallback, useEffect, useId, useRef, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { ChevronLeftGlyph, ChevronRightGlyph } from \"../../internal/glyphs\";\nimport { Button } from \"../Button/Button\";\nimport { Heading, type HeadingLevel } from \"../Heading/Heading\";\nimport styles from \"./Scroller.module.css\";\n\nexport interface ScrollerLabels {\n previous: string;\n next: string;\n}\n\nexport interface ScrollerProps extends Omit<HTMLAttributes<HTMLElement>, \"title\"> {\n /** Words over the row. They name the scrolling group too. */\n title: string;\n /** The arrows are glyphs, so the words are the app's. */\n labels: ScrollerLabels;\n /** Where the title sits in the document outline. Default 2. */\n level?: HeadingLevel;\n /** Beside the title, before the arrows — a link to the rest. */\n action?: ReactNode;\n children: ReactNode;\n ref?: Ref<HTMLElement>;\n}\n\n/* Not a whole screenful: the item at the edge stays half in view, so the\n reader keeps their place in the row. */\nconst STEP = 0.8;\n\n/**\n * A titled row that scrolls sideways — featured posts, a shelf of covers.\n * The row scrolls with the finger; the arrows do the same for a pointer or a\n * key, and shut themselves at each end.\n *\n * ```tsx\n * <Scroller title={t(\"home.featured\")} labels={t.scroller}>\n * {slots.map((slot) => (\n * <PostCard key={slot.id} post={slot.post} variant=\"grid\" />\n * ))}\n * </Scroller>\n * ```\n */\nexport function Scroller({\n title,\n labels,\n level = 2,\n action,\n children,\n className,\n ...rest\n}: ScrollerProps): ReactElement {\n const track = useRef<HTMLDivElement>(null);\n const titleId = useId();\n const [atStart, setAtStart] = useState(true);\n const [atEnd, setAtEnd] = useState(true);\n\n const measure = useCallback(() => {\n const row = track.current;\n if (row === null) return;\n\n setAtStart(row.scrollLeft <= 0);\n setAtEnd(row.scrollLeft + row.clientWidth >= row.scrollWidth - 1);\n }, []);\n\n /* The children are the app's and can change width under us, so the ends are\n read after every render rather than only on scroll. */\n useEffect(measure);\n\n useEffect(() => {\n window.addEventListener(\"resize\", measure);\n return () => window.removeEventListener(\"resize\", measure);\n }, [measure]);\n\n const step = (direction: 1 | -1) => {\n const row = track.current;\n if (row === null) return;\n\n row.scrollBy({ left: direction * Math.round(row.clientWidth * STEP) });\n };\n\n return (\n <section className={cx(styles.scroller, className)} {...rest}>\n <div className={styles.header}>\n <Heading level={level} variant=\"label\" id={titleId}>\n {title}\n </Heading>\n\n <div className={styles.trailing}>\n {action}\n\n <div className={styles.arrows}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n iconOnly\n aria-label={labels.previous}\n disabled={atStart}\n onClick={() => step(-1)}\n >\n <ChevronLeftGlyph />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n iconOnly\n aria-label={labels.next}\n disabled={atEnd}\n onClick={() => step(1)}\n >\n <ChevronRightGlyph />\n </Button>\n </div>\n </div>\n </div>\n\n <div\n className={styles.track}\n ref={track}\n role=\"group\"\n aria-labelledby={titleId}\n onScroll={measure}\n >\n {children}\n </div>\n </section>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/List/List.module.css?mds-scoped\";\nexport default {\"group\":\"mds-List__group\",\"labelledGroup\":\"mds-List__labelledGroup\",\"label\":\"mds-List__label\",\"item\":\"mds-List__item\",\"surface-card\":\"mds-List__surface-card\",\"surface-sunken\":\"mds-List__surface-sunken\",\"surface-accent\":\"mds-List__surface-accent\",\"surface-plain\":\"mds-List__surface-plain\",\"row\":\"mds-List__row\",\"interactive\":\"mds-List__interactive\",\"withActions\":\"mds-List__withActions\",\"actions\":\"mds-List__actions\",\"leading\":\"mds-List__leading\",\"trailing\":\"mds-List__trailing\",\"text\":\"mds-List__text\",\"title\":\"mds-List__title\",\"description\":\"mds-List__description\"};","import type { ElementType, HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { createContext, useContext, useId } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./List.module.css\";\n\n/* Tells an item whether a group is painting the card around it. */\nconst ListGroupContext = createContext(false);\n\nexport interface ListGroupProps extends HTMLAttributes<HTMLUListElement> {\n children: ReactNode;\n /** Heading over the group. Also names the list to a screen reader. */\n label?: ReactNode;\n ref?: Ref<HTMLUListElement>;\n}\n\n/**\n * Card-styled list container for ListItems.\n *\n * ```tsx\n * <ListGroup label=\"Account\">\n * <ListItem\n * title=\"Profile\"\n * description=\"Name, avatar\"\n * leading={<Icon name=\"user\" />}\n * href=\"/profile\"\n * />\n * <ListItem title=\"Log out\" onClick={logout} />\n * </ListGroup>\n * ```\n */\nexport function ListGroup({ label, className, ...rest }: ListGroupProps): ReactElement {\n const headingId = useId();\n\n const list = (\n <ListGroupContext.Provider value={true}>\n <ul\n /* Explicit, though redundant on a <ul>: Safari/VoiceOver drops list\n semantics from a list-style: none list unless the role says so. */\n role=\"list\"\n className={cx(styles.group, className)}\n aria-labelledby={label != null ? headingId : undefined}\n {...rest}\n />\n </ListGroupContext.Provider>\n );\n\n if (label == null) return list;\n return (\n <div className={styles.labelledGroup}>\n <span className={styles.label} id={headingId}>\n {label}\n </span>\n {list}\n </div>\n );\n}\n\nexport type ListItemSurface = \"card\" | \"sunken\" | \"accent\" | \"plain\";\n\nexport interface ListItemProps extends Omit<HTMLAttributes<HTMLElement>, \"title\" | \"onClick\"> {\n title: ReactNode;\n description?: ReactNode;\n /** Slot before the text — Avatar, Icon, … */\n leading?: ReactNode;\n /** Slot after the text — Badge, chevron, … Inside the row's hit target, so\n it is for things that are read, not pressed. */\n trailing?: ReactNode;\n /** Controls of the row's own, beside it rather than in it. A roster row\n navigates to the member and carries an add/remove button: put that in\n `trailing` and it is a button inside the link. This slot sits outside\n the hit target, where a second control can be reached. */\n actions?: ReactNode;\n /** Makes the whole row a button — or, with `href`, reports the press on the\n way out: a notification marked read, a tap counted. */\n onClick?: () => void;\n /** Marks an onClick row as a toggle — a picker row that selects rather than\n navigates. Lands as aria-pressed on the row button itself, where the\n screen reader's focus is. Leave unset for rows that navigate. */\n pressed?: boolean;\n /** Makes the whole row a link. The row navigates rather than acts, and any\n onClick rides along with the navigation. */\n href?: string;\n /** Element override for that link, e.g. a router's Link. */\n as?: ElementType;\n /** What the row paints behind itself. Inside a ListGroup the group is the\n card, so grouped rows default to painting nothing; standalone rows\n default to their own card. `accent` is the tinted, accent-edged prompt\n row. The row paints it itself because a background drawn by a wrapper\n brings its own corner radius, which peeks past the row's in all four\n corners. */\n surface?: ListItemSurface;\n /** The root is an `<li>` inside a ListGroup and a `<div>` outside one, so\n the ref is typed to what both are. */\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * One row. Static by default; interactive as one whole-row button/link.\n * An `<li>` inside a ListGroup, a standalone `<div>` row anywhere else.\n */\nexport function ListItem({\n title,\n description,\n leading,\n trailing,\n actions,\n onClick,\n pressed,\n href,\n as,\n surface,\n className,\n ref,\n ...rest\n}: ListItemProps): ReactElement {\n const inGroup = useContext(ListGroupContext);\n const Root = inGroup ? \"li\" : \"div\";\n const LinkElement: ElementType = as ?? \"a\";\n // Grouped rows paint nothing unless told otherwise; standalone rows carry\n // their own card.\n const resolved = surface ?? (inGroup ? undefined : \"card\");\n\n const content = (\n <>\n {leading != null && <span className={styles.leading}>{leading}</span>}\n <span className={styles.text}>\n <span className={styles.title}>{title}</span>\n {description != null && <span className={styles.description}>{description}</span>}\n </span>\n {trailing != null && <span className={styles.trailing}>{trailing}</span>}\n </>\n );\n\n return (\n <Root\n className={cx(\n styles.item,\n actions != null && styles.withActions,\n resolved && styles[`surface-${resolved}`],\n className,\n )}\n ref={ref as Ref<HTMLLIElement & HTMLDivElement>}\n {...rest}\n >\n {href !== undefined ? (\n <LinkElement className={cx(styles.row, styles.interactive)} href={href} onClick={onClick}>\n {content}\n </LinkElement>\n ) : onClick !== undefined ? (\n <button\n type=\"button\"\n className={cx(styles.row, styles.interactive)}\n onClick={onClick}\n aria-pressed={pressed}\n >\n {content}\n </button>\n ) : (\n <span className={styles.row}>{content}</span>\n )}\n {actions != null && <span className={styles.actions}>{actions}</span>}\n </Root>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/DataTable/DataTable.module.css?mds-scoped\";\nexport default {\"root\":\"mds-DataTable__root\",\"scroll\":\"mds-DataTable__scroll\",\"table\":\"mds-DataTable__table\",\"row\":\"mds-DataTable__row\",\"body\":\"mds-DataTable__body\",\"selected\":\"mds-DataTable__selected\",\"cell\":\"mds-DataTable__cell\",\"select\":\"mds-DataTable__select\",\"actions\":\"mds-DataTable__actions\",\"muted\":\"mds-DataTable__muted\",\"empty\":\"mds-DataTable__empty\",\"bulk\":\"mds-DataTable__bulk\",\"bulkActions\":\"mds-DataTable__bulkActions\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Checkbox } from \"../Checkbox/Checkbox\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./DataTable.module.css\";\n\nexport interface DataColumn<Row> {\n key: string;\n /** Read in the header row. */\n header: ReactNode;\n /** CSS width for the column, applied through the colgroup. */\n width?: string;\n cell: (row: Row) => ReactNode;\n}\n\nexport interface DataTableSelectionLabels {\n /** Names one row's box — \"Select Ada Lovelace\". The row's own label is\n handed in, so the sentence is the app's to build. */\n row: (label: string) => string;\n /** Names the header box, which takes or lets go of every row at once. */\n all: string;\n /** \"3 selected\" — a function, because only the app knows how its language\n counts. */\n count: (selected: number) => string;\n}\n\ntype DataTableSelection =\n | {\n /** Row keys currently taken. Held by the caller: the table draws it and\n says what changed, and never keeps a second copy. */\n selected: string[];\n onSelectedChange: (keys: string[]) => void;\n selectionLabels: DataTableSelectionLabels;\n /** What can be done to the taken rows, shown with the count of them. */\n bulkActions?: ReactNode;\n }\n | {\n selected?: undefined;\n onSelectedChange?: undefined;\n selectionLabels?: undefined;\n bulkActions?: undefined;\n };\n\nexport type DataTableProps<Row> = Omit<HTMLAttributes<HTMLDivElement>, \"children\"> & {\n /** Names the table. Required: a table of rows with no name is a grid of\n values with nothing saying what they are a list of. */\n label: string;\n columns: DataColumn<Row>[];\n rows: Row[];\n rowKey: (row: Row) => string;\n /** Names one row where its first cell will not do — a row led by an avatar,\n or by a title that repeats down the table. */\n rowLabel?: (row: Row) => string;\n /** What can be done to one row, in a column of its own at the end. */\n rowActions?: (row: Row) => ReactNode;\n /** Names that column. */\n actionsHeader?: ReactNode;\n /** A row the table still lists but no longer counts — suspended, hidden. */\n rowMuted?: (row: Row) => boolean;\n /** Shown in place of the rows when there are none. */\n empty?: ReactNode;\n ref?: Ref<HTMLDivElement>;\n} & DataTableSelection;\n\n/**\n * Rows and columns, at every width.\n *\n * A table is for reading across a row and comparing down a column, and it stays\n * one on a narrow screen rather than turning into something else: where the\n * columns need more room than there is, the table pans sideways inside a box\n * that takes focus. An app wanting cards on a phone builds cards — that is a\n * different component, not this one wearing a second layout.\n *\n * ```tsx\n * <DataTable\n * label={t(\"admin.members.table\")}\n * columns={[\n * { key: \"name\", header: t(\"admin.name\"), cell: (m) => m.name },\n * { key: \"role\", header: t(\"admin.role\"), cell: (m) => <Tag>{m.role}</Tag> },\n * ]}\n * rows={members}\n * rowKey={(m) => m.id}\n * empty={t(\"admin.members.none\")}\n * />\n * ```\n */\nexport function DataTable<Row>({\n label,\n columns,\n rows,\n rowKey,\n rowLabel,\n rowActions,\n actionsHeader,\n rowMuted,\n empty,\n ref,\n selected,\n onSelectedChange,\n selectionLabels,\n bulkActions,\n className,\n ...rest\n}: DataTableProps<Row>): ReactElement {\n const selectable = selected !== undefined;\n const keys = rows.map(rowKey);\n const all = selectable && keys.length > 0 && keys.every((key) => selected.includes(key));\n const some = selectable && !all && keys.some((key) => selected.includes(key));\n const span = columns.length + (selectable ? 1 : 0) + (rowActions ? 1 : 0);\n\n /* Reported in the table's own order, not the order they were clicked in:\n the caller reads it back as a list of rows, and a list of rows has the\n order the reader sees. */\n const toggle = (key: string, taken: boolean) => {\n if (selected === undefined) return;\n const next = taken ? [...selected, key] : selected.filter((each) => each !== key);\n onSelectedChange(keys.filter((each) => next.includes(each)));\n };\n\n const nameOf = (row: Row): string => {\n if (rowLabel !== undefined) return rowLabel(row);\n const first = columns[0]?.cell(row);\n return typeof first === \"string\" ? first : rowKey(row);\n };\n\n return (\n <div className={cx(styles.root, className)} ref={ref} {...rest}>\n {/* Named as well as the table it holds: whoever tabs into the box to\n pan it is told what they have landed in. */}\n <div className={styles.scroll} role=\"region\" aria-label={label} tabIndex={0}>\n <table className={styles.table} aria-label={label}>\n <colgroup>\n {selectable && <col />}\n {columns.map((column) => (\n <col\n key={column.key}\n style={column.width !== undefined ? { width: column.width } : undefined}\n />\n ))}\n {rowActions && <col />}\n </colgroup>\n\n <thead>\n <tr className={styles.row}>\n {selectable && (\n <th scope=\"col\" className={styles.select}>\n <Checkbox\n label={selectionLabels.all}\n labelHidden\n checked={all}\n indeterminate={some}\n onChange={(event) => onSelectedChange(event.target.checked ? keys : [])}\n />\n </th>\n )}\n {columns.map((column) => (\n <th scope=\"col\" key={column.key} className={styles.cell}>\n {column.header}\n </th>\n ))}\n {rowActions && (\n <th scope=\"col\" className={styles.actions}>\n {actionsHeader}\n </th>\n )}\n </tr>\n </thead>\n\n <tbody className={styles.body}>\n {rows.length > 0\n ? rows.map((row) => {\n const key = rowKey(row);\n const taken = selected?.includes(key) ?? false;\n return (\n <tr\n key={key}\n className={cx(\n styles.row,\n taken && styles.selected,\n rowMuted?.(row) === true && styles.muted,\n )}\n >\n {selectable && (\n <td className={styles.select}>\n <Checkbox\n label={selectionLabels.row(nameOf(row))}\n labelHidden\n checked={taken}\n onChange={(event) => toggle(key, event.target.checked)}\n />\n </td>\n )}\n {columns.map((column) => (\n <td key={column.key} className={styles.cell}>\n {column.cell(row)}\n </td>\n ))}\n {rowActions && <td className={styles.actions}>{rowActions(row)}</td>}\n </tr>\n );\n })\n : empty !== undefined && (\n <tr className={styles.row}>\n <td className={styles.empty} colSpan={span}>\n <Text variant=\"note\">{empty}</Text>\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n\n {selectable && selected.length > 0 && bulkActions !== undefined && (\n <div className={styles.bulk} role=\"status\">\n <Text variant=\"meta\">{selectionLabels.count(selected.length)}</Text>\n <div className={styles.bulkActions}>{bulkActions}</div>\n </div>\n )}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/EmptyState/EmptyState.module.css?mds-scoped\";\nexport default {\"root\":\"mds-EmptyState__root\",\"icon\":\"mds-EmptyState__icon\",\"action\":\"mds-EmptyState__action\"};","import type { ReactElement, ReactNode } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { HeadingLevel } from \"../Heading/Heading\";\nimport { Heading } from \"../Heading/Heading\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./EmptyState.module.css\";\n\nexport interface EmptyStateProps {\n title: string;\n /** Outline level of the title — the caller knows where the empty state\n * sits in the page's heading structure. Default 3. */\n level?: HeadingLevel;\n description?: string;\n /** Illustration or Icon slot. */\n icon?: ReactNode;\n /** Usually a Button. */\n action?: ReactNode;\n className?: string;\n}\n\n/**\n * Nothing-here view: explains the empty screen and offers the next step.\n *\n * ```tsx\n * <EmptyState\n * icon={<Icon name=\"inbox\" size=\"lg\" />}\n * title=\"No sessions yet\"\n * description=\"Create your first session to get started.\"\n * action={<Button onClick={create}>New session</Button>}\n * />\n * ```\n */\nexport function EmptyState({ title, level = 3, description, icon, action, className }: EmptyStateProps): ReactElement {\n return (\n <div className={cx(styles.root, className)}>\n {icon != null && (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <Heading level={level}>{title}</Heading>\n {description !== undefined && <Text tone=\"secondary\">{description}</Text>}\n {action != null && <span className={styles.action}>{action}</span>}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tabs/Tabs.module.css?mds-scoped\";\nexport default {\"list\":\"mds-Tabs__list\",\"tab\":\"mds-Tabs__tab\",\"selected\":\"mds-Tabs__selected\",\"panel\":\"mds-Tabs__panel\"};","import type { ButtonHTMLAttributes, HTMLAttributes, KeyboardEvent, ReactElement, ReactNode, Ref } from \"react\";\nimport { createContext, useCallback, useContext, useEffect, useId, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Tabs.module.css\";\n\ninterface TabsContextValue {\n value: string;\n onChange: (value: string) => void;\n baseId: string;\n /** Values whose TabPanel is currently mounted. A tab only claims\n * aria-controls over a panel that exists — the strip is also used as a\n * filter over one shared region, where there are no panels at all. */\n panels: ReadonlySet<string>;\n registerPanel: (value: string) => () => void;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nfunction useTabs(component: string): TabsContextValue {\n const context = useContext(TabsContext);\n if (context === null) throw new Error(`${component} must sit inside <Tabs>`);\n return context;\n}\n\nexport interface TabsProps {\n value: string;\n onChange: (value: string) => void;\n children: ReactNode;\n}\n\n/**\n * Controlled tabs root. Compose with TabList, Tab, TabPanel.\n *\n * ```tsx\n * <Tabs value={tab} onChange={setTab}>\n * <TabList label=\"Session details\">\n * <Tab value=\"info\">Info</Tab>\n * <Tab value=\"notes\">Notes</Tab>\n * </TabList>\n * <TabPanel value=\"info\">…</TabPanel>\n * <TabPanel value=\"notes\">…</TabPanel>\n * </Tabs>\n * ```\n */\nexport function Tabs({ value, onChange, children }: TabsProps): ReactElement {\n const baseId = useId();\n const [panels, setPanels] = useState<ReadonlySet<string>>(new Set());\n const registerPanel = useCallback((panel: string) => {\n setPanels((prev) => new Set(prev).add(panel));\n return () => {\n setPanels((prev) => {\n const next = new Set(prev);\n next.delete(panel);\n return next;\n });\n };\n }, []);\n return (\n <TabsContext.Provider value={{ value, onChange, baseId, panels, registerPanel }}>\n {children}\n </TabsContext.Provider>\n );\n}\n\nexport interface TabListProps extends HTMLAttributes<HTMLDivElement> {\n /** Accessible name for the tab set. */\n label: string;\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n}\n\n/* Selection follows focus (WAI-APG \"automatic activation\") — panels here are\n local content, not expensive loads. */\nfunction onArrow(event: KeyboardEvent<HTMLDivElement>, onChange: (v: string) => void): void {\n const keys = [\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"];\n if (!keys.includes(event.key)) return;\n const tabs = [...event.currentTarget.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]')];\n const current = tabs.findIndex((tab) => tab === document.activeElement);\n if (current === -1) return;\n event.preventDefault();\n const next =\n event.key === \"Home\"\n ? 0\n : event.key === \"End\"\n ? tabs.length - 1\n : (current + (event.key === \"ArrowRight\" ? 1 : -1) + tabs.length) % tabs.length;\n const tab = tabs[next];\n if (!tab) return;\n tab.focus();\n const value = tab.dataset.value;\n if (value !== undefined) onChange(value);\n}\n\nexport function TabList({ label, className, children, ...rest }: TabListProps): ReactElement {\n const { onChange } = useTabs(\"TabList\");\n return (\n <div\n role=\"tablist\"\n aria-label={label}\n className={cx(styles.list, className)}\n onKeyDown={(event) => onArrow(event, onChange)}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\nexport interface TabProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"value\" | \"type\"> {\n value: string;\n children: ReactNode;\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport function Tab({ value, className, children, ...rest }: TabProps): ReactElement {\n const tabs = useTabs(\"Tab\");\n const selected = tabs.value === value;\n return (\n <button\n type=\"button\"\n role=\"tab\"\n id={`${tabs.baseId}-tab-${value}`}\n aria-selected={selected}\n aria-controls={tabs.panels.has(value) ? `${tabs.baseId}-panel-${value}` : undefined}\n tabIndex={selected ? 0 : -1}\n data-value={value}\n className={cx(styles.tab, selected && styles.selected, className)}\n onClick={() => tabs.onChange(value)}\n {...rest}\n >\n {children}\n </button>\n );\n}\n\nexport interface TabPanelProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function TabPanel({ value, className, children, ...rest }: TabPanelProps): ReactElement {\n const tabs = useTabs(\"TabPanel\");\n const selected = tabs.value === value;\n const { registerPanel } = tabs;\n useEffect(() => registerPanel(value), [registerPanel, value]);\n return (\n <div\n role=\"tabpanel\"\n id={`${tabs.baseId}-panel-${value}`}\n aria-labelledby={`${tabs.baseId}-tab-${value}`}\n /* APG: the panel is itself a tab stop, so a panel of plain text is\n still the next thing Tab reaches after the strip. */\n tabIndex={0}\n hidden={!selected}\n className={cx(styles.panel, className)}\n {...rest}\n >\n {children}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Toast/Toast.module.css?mds-scoped\";\nexport default {\"viewport\":\"mds-Toast__viewport\",\"toast\":\"mds-Toast__toast\",\"tone-success\":\"mds-Toast__tone-success\",\"tone-danger\":\"mds-Toast__tone-danger\",\"body\":\"mds-Toast__body\",\"title\":\"mds-Toast__title\",\"description\":\"mds-Toast__description\",\"close\":\"mds-Toast__close mds-hit-area__hitArea\",\"closeGlyph\":\"mds-Toast__closeGlyph\",\"action\":\"mds-Toast__action mds-hit-area__hitArea\"};","import type { ReactElement, ReactNode } from \"react\";\nimport { createContext, useCallback, useContext, useMemo, useRef, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { CloseGlyph } from \"../../internal/glyphs\";\nimport styles from \"./Toast.module.css\";\n\nexport type ToastTone = \"neutral\" | \"success\" | \"danger\";\n\nexport interface ToastAction {\n /** The word on the button — localise. */\n label: string;\n onClick: () => void;\n}\n\nexport interface ToastOptions {\n title: string;\n description?: string | undefined;\n tone?: ToastTone | undefined;\n /** ms until auto-dismiss. 0 = stays until dismissed. Default 5000. */\n duration?: number | undefined;\n /** One thing to do about the message, beside it. A toast that asks for\n something — \"Update ready\", \"Add to home screen\" — has nowhere else to\n put the doing. Taking it closes the toast: the message is answered. */\n action?: ToastAction | undefined;\n /** Fires however the toast leaves — timeout, dismiss button, or action.\n A nudge that must remember a refusal has one place to write it down,\n rather than three that can disagree. */\n onDismiss?: (() => void) | undefined;\n}\n\ninterface ToastEntry extends Required<Pick<ToastOptions, \"title\" | \"tone\">> {\n id: number;\n description: string | undefined;\n action: ToastAction | undefined;\n}\n\ninterface ToastContextValue {\n toast: (options: ToastOptions) => number;\n dismiss: (id: number) => void;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport function useToast(): ToastContextValue {\n const context = useContext(ToastContext);\n if (context === null) throw new Error(\"useToast needs a <ToastProvider> above it\");\n return context;\n}\n\nexport interface ToastProviderProps {\n children: ReactNode;\n /** Accessible name of the notification region, e.g. \"Notifications\".\n Required: it is read aloud, in the app's language. */\n regionLabel: string;\n /** Prefix of each dismiss button's accessible name. The toast's title follows\n * it, so every dismiss control names its own toast: \"Dismiss: Saved\". */\n dismissLabel: string;\n}\n\n/**\n * Mount once near the root. Renders the notification region itself.\n *\n * ```tsx\n * // App root\n * <ToastProvider regionLabel=\"Notifications\" dismissLabel=\"Dismiss\">\n * <App />\n * </ToastProvider>\n *\n * // Anywhere below\n * const { toast } = useToast();\n * toast({ title: \"Saved\", tone: \"success\" });\n * ```\n */\nexport function ToastProvider({\n children,\n regionLabel,\n dismissLabel,\n}: ToastProviderProps): ReactElement {\n const [toasts, setToasts] = useState<ToastEntry[]>([]);\n const nextId = useRef(1);\n /* Held outside the entry so that a toast already gone cannot fire its\n callback a second time when its timeout comes round: the way out that\n got there first takes the callback with it. */\n const leaving = useRef(new Map<number, () => void>());\n /* WCAG 2.2.1: the clocks stop while the reader is engaging with the region\n — pointer over it or focus inside it — and run on with the time they had\n left. Each open clock remembers when it started so pausing can bank the\n remainder. */\n const clocks = useRef(\n new Map<number, { handle: ReturnType<typeof setTimeout>; startedAt: number; remaining: number }>(),\n );\n const held = useRef(0);\n /* The toast elements by id, so a dismissal can tell whether it is taking\n the focused element with it. */\n const surfaces = useRef(new Map<number, HTMLDivElement>());\n\n const dismiss = useCallback((id: number) => {\n const clock = clocks.current.get(id);\n if (clock !== undefined) {\n clearTimeout(clock.handle);\n clocks.current.delete(id);\n }\n /* Taking the focused toast away would drop focus on <body> and send the\n next Tab back to the top of the page; its neighbour inherits it. The\n last toast has no neighbour, and nothing here knows where the reader\n was before, so that one is left to the browser. */\n const surface = surfaces.current.get(id);\n if (surface?.contains(document.activeElement)) {\n const neighbour = surface.nextElementSibling ?? surface.previousElementSibling;\n neighbour?.querySelector<HTMLButtonElement>(\"button:last-child\")?.focus();\n }\n setToasts((current) => current.filter((entry) => entry.id !== id));\n const said = leaving.current.get(id);\n if (said !== undefined) {\n leaving.current.delete(id);\n said();\n }\n }, []);\n\n const start = useCallback(\n (id: number, remaining: number) => {\n clocks.current.set(id, {\n handle: setTimeout(() => dismiss(id), remaining),\n startedAt: Date.now(),\n remaining,\n });\n },\n [dismiss],\n );\n\n /* Hold/release rather than a boolean: focus moving between two buttons in\n the region fires a release and a hold back to back, and the pointer can\n be over the region while focus is inside it. */\n const hold = useCallback(() => {\n if (held.current++ > 0) return;\n for (const clock of clocks.current.values()) {\n clearTimeout(clock.handle);\n clock.remaining -= Date.now() - clock.startedAt;\n }\n }, []);\n\n const release = useCallback(() => {\n if (--held.current > 0) return;\n held.current = 0;\n for (const [id, clock] of clocks.current) {\n start(id, Math.max(clock.remaining, 0));\n }\n }, [start]);\n\n const toast = useCallback(\n ({ title, description, tone = \"neutral\", duration = 5000, action, onDismiss }: ToastOptions) => {\n const id = nextId.current++;\n if (onDismiss !== undefined) leaving.current.set(id, onDismiss);\n setToasts((current) => [...current, { id, title, description, tone, action }]);\n if (duration > 0) {\n start(id, duration);\n // Born into a held region: its clock waits for the release too.\n if (held.current > 0) clearTimeout(clocks.current.get(id)?.handle);\n }\n return id;\n },\n [start],\n );\n\n const value = useMemo(() => ({ toast, dismiss }), [toast, dismiss]);\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n <div\n role=\"region\"\n aria-label={regionLabel}\n className={styles.viewport}\n onPointerEnter={hold}\n onPointerLeave={release}\n onFocus={hold}\n onBlur={release}\n >\n {toasts.map((entry) => (\n <div\n key={entry.id}\n ref={(node) => {\n if (node !== null) surfaces.current.set(entry.id, node);\n else surfaces.current.delete(entry.id);\n }}\n /* A refusal interrupts: what the reader asked for did not happen,\n and they are about to carry on as though it did. Anything\n calmer waits its turn. */\n role={entry.tone === \"danger\" ? \"alert\" : \"status\"}\n className={cx(styles.toast, styles[`tone-${entry.tone}`])}\n >\n <span className={styles.body}>\n <span className={styles.title}>{entry.title}</span>\n {entry.description !== undefined && (\n <span className={styles.description}>{entry.description}</span>\n )}\n </span>\n {entry.action !== undefined && (\n <button\n type=\"button\"\n className={styles.action}\n onClick={() => {\n entry.action?.onClick();\n dismiss(entry.id);\n }}\n >\n {entry.action.label}\n </button>\n )}\n <button\n type=\"button\"\n aria-label={`${dismissLabel}: ${entry.title}`}\n className={styles.close}\n onClick={() => dismiss(entry.id)}\n >\n <CloseGlyph className={styles.closeGlyph} />\n </button>\n </div>\n ))}\n </div>\n </ToastContext.Provider>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Stack/Stack.module.css?mds-scoped\";\nexport default {\"stack\":\"mds-Stack__stack\",\"gap-hairline\":\"mds-Stack__gap-hairline\",\"gap-tight\":\"mds-Stack__gap-tight\",\"gap-base\":\"mds-Stack__gap-base\",\"gap-loose\":\"mds-Stack__gap-loose\",\"gap-group\":\"mds-Stack__gap-group\",\"gap-section\":\"mds-Stack__gap-section\",\"align-start\":\"mds-Stack__align-start\",\"align-center\":\"mds-Stack__align-center\",\"align-end\":\"mds-Stack__align-end\",\"align-stretch\":\"mds-Stack__align-stretch\"};","import type { ElementType, ReactElement } from \"react\";\nimport { createElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { AnyPolymorphic, Polymorphic } from \"../../internal/polymorphic\";\nimport styles from \"./Stack.module.css\";\n\nexport type StackGap = \"hairline\" | \"tight\" | \"base\" | \"loose\" | \"group\" | \"section\";\nexport type StackAlign = \"start\" | \"center\" | \"end\" | \"stretch\";\n\nexport interface StackOwnProps {\n /** Space between children, on the gap scale. Default \"base\". */\n gap?: StackGap;\n /** Cross-axis alignment. Default \"stretch\". */\n align?: StackAlign;\n}\n\nexport type StackProps<T extends ElementType = \"div\"> = Polymorphic<T, StackOwnProps>;\n\n/**\n * Vertical flow. The parent owns spacing between siblings via gap —\n * children carry no outer margins. Token-bounded on purpose: no arbitrary\n * lengths, no style prop.\n *\n * ```tsx\n * <Stack gap=\"base\">\n * <Heading level={2}>Profile</Heading>\n * <Text tone=\"secondary\">Public information</Text>\n * </Stack>\n * ```\n */\nexport function Stack<T extends ElementType = \"div\">(props: StackProps<T>): ReactElement {\n const {\n gap = \"base\",\n align = \"stretch\",\n as = \"div\",\n className,\n ...rest\n } = props as AnyPolymorphic<StackOwnProps>;\n\n return createElement(as, {\n className: cx(styles.stack, styles[`gap-${gap}`], styles[`align-${align}`], className),\n ...rest,\n });\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Inline/Inline.module.css?mds-scoped\";\nexport default {\"inline\":\"mds-Inline__inline\",\"gap-hairline\":\"mds-Inline__gap-hairline\",\"gap-tight\":\"mds-Inline__gap-tight\",\"gap-base\":\"mds-Inline__gap-base\",\"gap-loose\":\"mds-Inline__gap-loose\",\"align-start\":\"mds-Inline__align-start\",\"align-center\":\"mds-Inline__align-center\",\"align-end\":\"mds-Inline__align-end\",\"align-baseline\":\"mds-Inline__align-baseline\",\"justify-start\":\"mds-Inline__justify-start\",\"justify-center\":\"mds-Inline__justify-center\",\"justify-end\":\"mds-Inline__justify-end\",\"justify-between\":\"mds-Inline__justify-between\",\"wrap\":\"mds-Inline__wrap\"};","import type { ElementType, ReactElement } from \"react\";\nimport { createElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { AnyPolymorphic, Polymorphic } from \"../../internal/polymorphic\";\nimport styles from \"./Inline.module.css\";\n\nexport type InlineGap = \"hairline\" | \"tight\" | \"base\" | \"loose\";\nexport type InlineAlign = \"start\" | \"center\" | \"end\" | \"baseline\";\nexport type InlineJustify = \"start\" | \"center\" | \"end\" | \"between\";\n\nexport interface InlineOwnProps {\n /** Space between children, on the gap scale. Default \"base\". */\n gap?: InlineGap;\n /** Cross-axis alignment. Default \"center\". */\n align?: InlineAlign;\n /** Main-axis distribution. Default \"start\". */\n justify?: InlineJustify;\n /** Allow wrapping onto new lines. */\n wrap?: boolean;\n}\n\nexport type InlineProps<T extends ElementType = \"div\"> = Polymorphic<T, InlineOwnProps>;\n\n/**\n * Horizontal flow — Stack's row twin. Same token-bounded contract.\n *\n * ```tsx\n * <Inline gap=\"tight\" align=\"center\" justify=\"between\">\n * <Text variant=\"label\">Total</Text>\n * <Text>42</Text>\n * </Inline>\n * ```\n */\nexport function Inline<T extends ElementType = \"div\">(props: InlineProps<T>): ReactElement {\n const {\n gap = \"base\",\n align = \"center\",\n justify = \"start\",\n wrap = false,\n as = \"div\",\n className,\n ...rest\n } = props as AnyPolymorphic<InlineOwnProps>;\n\n return createElement(as, {\n className: cx(\n styles.inline,\n styles[`gap-${gap}`],\n styles[`align-${align}`],\n styles[`justify-${justify}`],\n wrap && styles.wrap,\n className,\n ),\n ...rest,\n });\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Container/Container.module.css?mds-scoped\";\nexport default {\"container\":\"mds-Container__container\",\"width-content\":\"mds-Container__width-content\",\"width-wide\":\"mds-Container__width-wide\"};","import type { ElementType, ReactElement } from \"react\";\nimport { createElement } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { AnyPolymorphic, Polymorphic } from \"../../internal/polymorphic\";\nimport styles from \"./Container.module.css\";\n\nexport type ContainerWidth = \"content\" | \"wide\";\n\nexport interface ContainerOwnProps {\n /** content = reading column, wide = desktop shell. Default \"content\". */\n width?: ContainerWidth;\n}\n\nexport type ContainerProps<T extends ElementType = \"div\"> = Polymorphic<T, ContainerOwnProps>;\n\n/**\n * Centered max-width column with page-edge padding.\n *\n * ```tsx\n * <Container>\n * <Stack gap=\"section\">…</Stack>\n * </Container>\n * ```\n */\nexport function Container<T extends ElementType = \"div\">(props: ContainerProps<T>): ReactElement {\n const { width = \"content\", as = \"div\", className, ...rest } = props as AnyPolymorphic<ContainerOwnProps>;\n\n return createElement(as, {\n className: cx(styles.container, styles[`width-${width}`], className),\n ...rest,\n });\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Card/Card.module.css?mds-scoped\";\nexport default {\"card\":\"mds-Card__card\",\"variant-raised\":\"mds-Card__variant-raised\",\"variant-sunken\":\"mds-Card__variant-sunken\",\"emphasis\":\"mds-Card__emphasis\",\"interactive\":\"mds-Card__interactive\",\"header\":\"mds-Card__header\",\"body\":\"mds-Card__body\",\"footer\":\"mds-Card__footer\",\"clipped\":\"mds-Card__clipped\"};","import type { CSSProperties, ElementType, HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { useEffect, useRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { forkRef } from \"../../internal/forkRef\";\nimport styles from \"./Card.module.css\";\n\nexport type CardVariant = \"card\" | \"raised\" | \"sunken\";\n\nexport interface CardProps extends Omit<HTMLAttributes<HTMLElement>, \"onClick\"> {\n children: ReactNode;\n /** card = flat on border, raised = elevated, sunken = recessed fill for\n secondary tiles. Default \"card\". */\n variant?: CardVariant;\n /** Accent border — marks the card out from its neighbours (a pinned post,\n the active choice) without changing its surface. */\n emphasis?: boolean;\n /** Makes the whole card a button. */\n onClick?: () => void;\n /** Makes the whole card a link. Wins over onClick. */\n href?: string;\n /** Element override for the root. With href, the link element — a router's\n Link. Without one, what the card is in the outline: a <section> that names\n itself, an <article> holding a post. No wrapper can supply that from\n outside, since the wrapper is not the card. Default div. */\n as?: ElementType;\n /** The root is an `<a>`, a `<button>` or a `<div>` depending on the props,\n so the ref is typed to what all three are. */\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * Surface container. Compose with CardHeader/CardBody/CardFooter — the card\n * owns internal spacing, sections own their content.\n *\n * ```tsx\n * <Card>\n * <CardHeader><Heading level={3}>Next session</Heading></CardHeader>\n * <CardBody><Text>Tomorrow, 19:00</Text></CardBody>\n * <CardFooter><Button size=\"sm\">Join</Button></CardFooter>\n * </Card>\n *\n * <Card href=\"/items/42\" variant=\"flat\">…</Card>\n * ```\n */\nexport function Card({ children, variant = \"card\", emphasis = false, onClick, href, as, className, ref, ...rest }: CardProps): ReactElement {\n const cardClass = cx(styles.card, styles[`variant-${variant}`], emphasis && styles.emphasis, className);\n\n /* An interactive card is itself the control, so a control inside it is\n nested interactive: invalid inside a <button>, and unreachable or\n confusing for assistive tech either way. The children are opaque nodes,\n so the check is against the rendered DOM — a warning, since the tree is\n the caller's to fix. */\n const own = useRef<HTMLElement>(null);\n const interactive = href !== undefined || onClick !== undefined;\n useEffect(() => {\n if (!interactive) return;\n const nested = own.current?.querySelector(\n \"a[href], button, input, select, textarea, [tabindex]\",\n );\n if (nested != null) {\n console.warn(\n \"Card: this card is a link or button, and it contains another interactive element. Move the control outside the card, or drop onClick/href.\",\n nested,\n );\n }\n });\n\n if (href !== undefined) {\n const Element: ElementType = as ?? \"a\";\n return (\n <Element className={cx(cardClass, styles.interactive)} href={href} ref={forkRef(own, ref)} {...rest}>\n {children}\n </Element>\n );\n }\n if (onClick !== undefined) {\n return (\n <button\n type=\"button\"\n className={cx(cardClass, styles.interactive)}\n onClick={onClick}\n ref={forkRef(own, ref) as Ref<HTMLButtonElement>}\n {...rest}\n >\n {children}\n </button>\n );\n }\n const Element: ElementType = as ?? \"div\";\n return (\n <Element className={cardClass} ref={ref as Ref<HTMLDivElement>} {...rest}>\n {children}\n </Element>\n );\n}\n\nexport type CardSectionProps = HTMLAttributes<HTMLDivElement> & { ref?: Ref<HTMLDivElement> };\n\n/** Top slot — title row, media, tabs. */\nexport function CardHeader({ className, ...rest }: CardSectionProps): ReactElement {\n return <div className={cx(styles.header, className)} {...rest} />;\n}\n\nexport interface CardBodyProps extends CardSectionProps {\n /** How many lines of content the card affords. Past it the body clips, with\n an ellipsis on the last line. Unset, the body grows to what it holds. */\n lines?: number;\n}\n\n/**\n * Main content slot.\n *\n * The card is the box, so the box is what says how much of a thing fits:\n * `lines` clips whatever the body holds — a paragraph, two of them, a bare\n * string — rather than asking each child to clip itself.\n *\n * A budgeted body counts lines, which is a thing only `-webkit-box` does, so it\n * is no longer a flex column: `gap` between its children stops applying and a\n * margin is what separates them. A body doing layout for a card keeps its own\n * budget-free, and holds a budgeted one for the part that has to fit.\n */\nexport function CardBody({ lines, className, style, ...rest }: CardBodyProps): ReactElement {\n const vars = lines === undefined ? undefined : ({ \"--card-lines\": lines } as CSSProperties);\n return (\n <div\n className={cx(styles.body, lines !== undefined && styles.clipped, className)}\n style={{ ...vars, ...style }}\n {...rest}\n />\n );\n}\n\n/** Bottom slot — actions, meta. */\nexport function CardFooter({ className, ...rest }: CardSectionProps): ReactElement {\n return <div className={cx(styles.footer, className)} {...rest} />;\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Modal/Modal.module.css?mds-scoped\";\nexport default {\"panel\":\"mds-Modal__panel\",\"header\":\"mds-Modal__header\",\"headerTitle\":\"mds-Modal__headerTitle\",\"body\":\"mds-Modal__body\",\"footer\":\"mds-Modal__footer\"};","import type { ReactNode } from \"react\";\nimport { Overlay } from \"../../internal/Overlay\";\nimport styles from \"./Modal.module.css\";\n\nexport interface ModalProps {\n open: boolean;\n onClose: () => void;\n /** Accessible name of the dialog. */\n label: string;\n /** Scrim click dismisses. Default true. */\n closeOnScrimClick?: boolean;\n /** alertdialog interrupts — ConfirmDialog sets it. Default \"dialog\". */\n role?: \"dialog\" | \"alertdialog\";\n /** id of the element that explains the dialog, read out with its name. */\n describedBy?: string | undefined;\n children: ReactNode;\n}\n\n/**\n * Centered dialog. Escape, scrim click (`closeOnScrimClick`), and focus trap\n * are handled. Compose the sections:\n *\n * ```tsx\n * <Modal open={open} onClose={() => setOpen(false)} label=\"Edit session\">\n * <ModalHeader>Edit session</ModalHeader>\n * <ModalBody>…</ModalBody>\n * <ModalFooter><Button onClick={save}>Save</Button></ModalFooter>\n * </Modal>\n * ```\n */\nexport function Modal({ open, onClose, label, closeOnScrimClick = true, role = \"dialog\", describedBy, children }: ModalProps) {\n return (\n <Overlay\n open={open}\n onClose={onClose}\n label={label}\n variant=\"modal\"\n role={role}\n describedBy={describedBy}\n closeOnScrimClick={closeOnScrimClick}\n panelClassName={styles.panel}\n >\n {children}\n </Overlay>\n );\n}\n\nexport function ModalHeader({ children }: { children: ReactNode }) {\n return (\n <div className={styles.header}>\n {/* The panel's title is its heading, not a styled line of text. */}\n <h2 className={styles.headerTitle}>{children}</h2>\n </div>\n );\n}\n\nexport function ModalBody({ children }: { children: ReactNode }) {\n return <div className={styles.body}>{children}</div>;\n}\n\nexport function ModalFooter({ children }: { children: ReactNode }) {\n return <div className={styles.footer}>{children}</div>;\n}\n","import { useEffect } from \"react\";\nimport type { RefObject } from \"react\";\nimport { autoUpdate, computePosition, flip, offset, shift, size } from \"@floating-ui/dom\";\nimport type { Placement } from \"@floating-ui/dom\";\n\n/** Side the surface prefers, and the edge it lines up with. */\nexport type { Placement };\n\n/** How far a surface clears the viewport edge before shift() pulls it back. */\nconst VIEWPORT_PAD = 8;\n\n/** A surface shorter than this is not worth flipping to — it would scroll on\n two lines. Below it, size() stops shrinking and shift() takes over. */\nconst MIN_HEIGHT = 120;\n\nexport interface AnchoredPositionOptions {\n open: boolean;\n /** The element the surface hangs off. */\n anchorRef: RefObject<HTMLElement | null>;\n /** The surface itself. */\n floatingRef: RefObject<HTMLElement | null>;\n placement: Placement;\n /** Distance from the anchor, px. */\n gap: number;\n}\n\n/**\n * Keep a portalled surface pinned to its anchor.\n *\n * Writes `left`/`top` straight onto the element rather than through state:\n * autoUpdate fires on every scroll and resize frame of every scrollable\n * ancestor, and a re-render per frame is a re-render of the surface's whole\n * subtree. The resolved side lands in `data-placement` so the stylesheet can\n * grow the surface out of the edge it is actually attached to.\n */\nexport function useAnchoredPosition({\n open,\n anchorRef,\n floatingRef,\n placement,\n gap,\n}: AnchoredPositionOptions): void {\n useEffect(() => {\n const anchor = anchorRef.current;\n const floating = floatingRef.current;\n if (!open || anchor === null || floating === null) return;\n\n const update = () => {\n void computePosition(anchor, floating, {\n placement,\n strategy: \"fixed\",\n middleware: [\n offset(gap),\n // Order is load-bearing: choose the side first, then cap the height\n // to what that side has, then slide along the cross axis. Sizing\n // before flipping caps against the side being abandoned.\n flip({ padding: VIEWPORT_PAD }),\n size({\n padding: VIEWPORT_PAD,\n apply({ availableHeight, elements }) {\n elements.floating.style.maxHeight = `${Math.max(availableHeight, MIN_HEIGHT)}px`;\n },\n }),\n shift({ padding: VIEWPORT_PAD }),\n ],\n }).then(({ x, y, placement: resolved }) => {\n floating.style.left = `${x}px`;\n floating.style.top = `${y}px`;\n floating.dataset.placement = resolved;\n });\n };\n\n return autoUpdate(anchor, floating, update);\n }, [open, anchorRef, floatingRef, placement, gap]);\n}\n","import { useEffect, useRef } from \"react\";\nimport type { RefObject } from \"react\";\n\n/**\n * Close a non-modal surface when the pointer goes down anywhere outside it.\n *\n * pointerdown rather than click, for two reasons. A drag that starts inside\n * the surface and ends outside it is a text selection, not a dismissal, and\n * click fires on the release. And a trigger that toggles on click would see\n * the surface closed out from under it and reopen on the same press — which\n * is why the anchor is one of the elements passed in, not just the panel.\n */\nexport function useDismissOnOutside(\n open: boolean,\n onDismiss: () => void,\n inside: readonly RefObject<HTMLElement | null>[],\n): void {\n // Both change identity every render; the listener reads them at event time\n // so it can be attached once per open instead of re-attached per render.\n const latest = useRef({ onDismiss, inside });\n useEffect(() => {\n latest.current = { onDismiss, inside };\n });\n\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (event: PointerEvent) => {\n const target = event.target;\n if (!(target instanceof Node)) return;\n const { onDismiss: dismiss, inside: refs } = latest.current;\n if (refs.some((ref) => ref.current?.contains(target))) return;\n dismiss();\n };\n document.addEventListener(\"pointerdown\", onPointerDown);\n return () => document.removeEventListener(\"pointerdown\", onPointerDown);\n }, [open]);\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Popover/Popover.module.css?mds-scoped\";\nexport default {\"panel\":\"mds-Popover__panel\",\"header\":\"mds-Popover__header\",\"headerTitle\":\"mds-Popover__headerTitle\",\"close\":\"mds-Popover__close\",\"closeGlyph\":\"mds-Popover__closeGlyph\",\"body\":\"mds-Popover__body\",\"footer\":\"mds-Popover__footer\"};","import { createPortal } from \"react-dom\";\nimport type { ReactNode, RefObject } from \"react\";\nimport { useOverlay } from \"../../hooks/useOverlay\";\nimport { usePresence } from \"../../hooks/usePresence\";\nimport { useAnchoredPosition } from \"../../internal/useAnchoredPosition\";\nimport type { Placement } from \"../../internal/useAnchoredPosition\";\nimport { useDismissOnOutside } from \"../../internal/useDismissOnOutside\";\nimport { cx } from \"../../internal/cx\";\nimport { CloseGlyph } from \"../../internal/glyphs\";\nimport styles from \"./Popover.module.css\";\n\n/** Matches --mds-dur-fast; usePresence needs the number in JS. */\nexport const POPOVER_EXIT_MS = 120;\n\n/** Distance from the anchor, matching --mds-space-2. */\nconst GAP = 8;\n\nexport type PopoverPlacement = Placement;\n\nexport interface PopoverProps {\n open: boolean;\n onClose: () => void;\n /** The trigger the panel hangs off. It stays interactive while open. */\n anchorRef: RefObject<HTMLElement | null>;\n /** Accessible name of the panel. */\n label: string;\n /** Lands on the panel element, so the trigger's aria-controls has something\n to point at. The trigger is the caller's, so the wiring is too. */\n id?: string | undefined;\n /** Side it prefers. It flips and slides to stay on screen. Default \"bottom-start\". */\n placement?: PopoverPlacement;\n className?: string;\n children: ReactNode;\n}\n\n/**\n * Anchored, non-modal surface. The page behind it stays live and scrollable\n * and the panel travels with the anchor; a press outside, Escape, or the\n * trigger itself dismisses it.\n *\n * Modal by contrast: reach for Modal when the answer must come before anything\n * else, and for Sheet when the content is a task rather than a detail — a\n * form with its own header and footer belongs in one of those, not here.\n *\n * ```tsx\n * const anchor = useRef<HTMLButtonElement>(null);\n * const [open, setOpen] = useState(false);\n * <Button ref={anchor} aria-expanded={open} onClick={() => setOpen((v) => !v)}>\n * Equipment\n * </Button>\n * <Popover open={open} onClose={() => setOpen(false)} anchorRef={anchor} label=\"Equipment\">\n * <PopoverBody>…</PopoverBody>\n * </Popover>\n * ```\n */\nexport function Popover({\n open,\n onClose,\n anchorRef,\n label,\n id,\n placement = \"bottom-start\",\n className,\n children,\n}: PopoverProps) {\n const { mounted, visible } = usePresence(open, POPOVER_EXIT_MS);\n // Focus capture and Escape are shared with the modal surfaces; the page\n // lock, the Tab trap and the unconditional focus restore are not — the\n // page behind this panel stays live.\n const panelRef = useOverlay<HTMLDivElement>({ open, onClose, lockScroll: false, modal: false });\n useAnchoredPosition({ open: mounted, anchorRef, floatingRef: panelRef, placement, gap: GAP });\n useDismissOnOutside(open, onClose, [panelRef, anchorRef]);\n\n if (!mounted) return null;\n\n return createPortal(\n <div\n ref={panelRef}\n id={id}\n role=\"dialog\"\n aria-label={label}\n tabIndex={-1}\n className={cx(styles.panel, className)}\n data-open={visible || undefined}\n >\n {children}\n </div>,\n document.body,\n );\n}\n\nexport type PopoverHeaderProps = { children: ReactNode } & (\n | {\n /** Renders a close button after the title. Wire it to the popover's own onClose. */\n onClose: () => void;\n /** Accessible name of the close button (localise). */\n closeLabel: string;\n }\n | { onClose?: undefined; closeLabel?: undefined }\n);\n\nexport function PopoverHeader({ children, onClose, closeLabel }: PopoverHeaderProps) {\n return (\n <div className={styles.header}>\n {/* Same contract as a sheet's header: the panel's title is the one\n landmark a reader jumping by heading has to go by. */}\n <h2 className={styles.headerTitle}>{children}</h2>\n {onClose !== undefined && (\n <button type=\"button\" aria-label={closeLabel} className={styles.close} onClick={onClose}>\n <CloseGlyph className={styles.closeGlyph} />\n </button>\n )}\n </div>\n );\n}\n\nexport function PopoverBody({ children }: { children: ReactNode }) {\n return <div className={styles.body}>{children}</div>;\n}\n\nexport function PopoverFooter({ children }: { children: ReactNode }) {\n return <div className={styles.footer}>{children}</div>;\n}\n","import type { KeyboardEvent, RefObject } from \"react\";\nimport { useCallback } from \"react\";\n\nexport interface RovingGroupOptions {\n /** Selector for the focusable items inside the container. */\n selector: string;\n /** Arrow axis. Default \"horizontal\". */\n orientation?: \"horizontal\" | \"vertical\" | \"both\";\n}\n\n/**\n * Arrow-key focus movement for composite widgets (toolbars, menus, tab bars).\n * Wraps at the edges; Home/End jump. Returns a keydown handler for the\n * container.\n */\nexport function useRovingGroup(\n ref: RefObject<HTMLElement | null>,\n { selector, orientation = \"horizontal\" }: RovingGroupOptions,\n): (event: KeyboardEvent<HTMLElement>) => void {\n return useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n const horizontal = orientation !== \"vertical\";\n const vertical = orientation !== \"horizontal\";\n const forward = (horizontal && event.key === \"ArrowRight\") || (vertical && event.key === \"ArrowDown\");\n const backward = (horizontal && event.key === \"ArrowLeft\") || (vertical && event.key === \"ArrowUp\");\n const home = event.key === \"Home\";\n const end = event.key === \"End\";\n if (!forward && !backward && !home && !end) return;\n\n const container = ref.current;\n if (container === null) return;\n const items = [...container.querySelectorAll<HTMLElement>(selector)].filter(\n (item) => !item.hasAttribute(\"disabled\"),\n );\n const current = items.indexOf(document.activeElement as HTMLElement);\n if (items.length === 0 || current === -1) return;\n\n event.preventDefault();\n const next = home\n ? 0\n : end\n ? items.length - 1\n : (current + (forward ? 1 : -1) + items.length) % items.length;\n items[next]?.focus();\n },\n [ref, selector, orientation],\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Menu/Menu.module.css?mds-scoped\";\nexport default {\"panel\":\"mds-Menu__panel\",\"item\":\"mds-Menu__item\",\"tone-danger\":\"mds-Menu__tone-danger\"};","import { createContext, useContext, useEffect, useId, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { KeyboardEvent, MouseEvent, ReactElement, ReactNode, Ref } from \"react\";\nimport { usePresence } from \"../../hooks/usePresence\";\nimport { useRovingGroup } from \"../../hooks/useRovingGroup\";\nimport { forkRef } from \"../../internal/forkRef\";\nimport { cx } from \"../../internal/cx\";\nimport { useAnchoredPosition } from \"../../internal/useAnchoredPosition\";\nimport type { Placement } from \"../../internal/useAnchoredPosition\";\nimport { useDismissOnOutside } from \"../../internal/useDismissOnOutside\";\nimport styles from \"./Menu.module.css\";\n\n/** Matches --mds-dur-fast; usePresence needs the number in JS. */\nexport const MENU_EXIT_MS = 120;\n\n/** Distance from the trigger, matching --mds-space-2. */\nconst GAP = 8;\n\nconst ITEM_SELECTOR = '[role=\"menuitem\"]';\n\nexport type MenuPlacement = Placement;\n\n/** What Menu needs to be able to put on its trigger. */\ntype MenuTriggerProps = {\n ref?: Ref<HTMLElement> | undefined;\n \"aria-haspopup\"?: \"menu\" | undefined;\n \"aria-expanded\"?: boolean | undefined;\n onClick?: ((event: MouseEvent<HTMLElement>) => void) | undefined;\n onKeyDown?: ((event: KeyboardEvent<HTMLElement>) => void) | undefined;\n};\n\n/** Closing an open menu, and what focus does about it. */\nconst MenuContext = createContext<{ close: () => void } | null>(null);\n\nexport interface MenuProps {\n /** Accessible name of the menu — what the list of actions is *for*. */\n label: string;\n /** The control that opens it. Gets the ref, the ARIA and the key handling. */\n trigger: ReactElement<MenuTriggerProps>;\n /** Side it prefers. It flips and slides to stay on screen. Default \"bottom-end\". */\n placement?: MenuPlacement;\n className?: string;\n children: ReactNode;\n}\n\n/**\n * A button that opens a short list of actions (APG's menu button).\n *\n * Open state is the menu's own: a list of actions has no meaning outside the\n * button that opened it, so unlike Modal, Sheet and Popover there is nothing\n * for a caller to hold. Reach for Popover instead the moment the panel holds\n * anything but actions — a form, a filter, a list of things to read.\n *\n * ```tsx\n * <Menu label=\"Heat actions\" trigger={<Button variant=\"ghost\">Actions</Button>}>\n * <MenuItem onSelect={edit}>Edit</MenuItem>\n * <MenuItem onSelect={remove} tone=\"danger\">Delete</MenuItem>\n * </Menu>\n * ```\n */\nexport function Menu({ label, trigger, placement = \"bottom-end\", className, children }: MenuProps) {\n const id = useId();\n const [open, setOpen] = useState(false);\n /* APG: ArrowUp comes in from the bottom, everything else from the top. */\n const enterAt = useRef<\"first\" | \"last\">(\"first\");\n const { mounted, visible } = usePresence(open, MENU_EXIT_MS);\n const triggerRef = useRef<HTMLElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n\n /* Two ways to shut: one where the reader is still on the keyboard and the\n trigger is where they left off, and one where the pointer has already\n landed somewhere else and pulling focus back would be a theft. */\n const close = () => {\n setOpen(false);\n triggerRef.current?.focus();\n };\n const dismiss = () => setOpen(false);\n\n useAnchoredPosition({ open: mounted, anchorRef: triggerRef, floatingRef: panelRef, placement, gap: GAP });\n useDismissOnOutside(open, dismiss, [panelRef, triggerRef]);\n\n const onArrowKeys = useRovingGroup(panelRef, {\n selector: ITEM_SELECTOR,\n orientation: \"vertical\",\n });\n\n /* Opening lands on an action, so the next arrow key moves through the\n list instead of opening something. First unless ArrowUp opened it —\n that reader asked to come in from the bottom. */\n useEffect(() => {\n if (!open) return;\n const items = panelRef.current?.querySelectorAll<HTMLElement>(\n `${ITEM_SELECTOR}:not([disabled])`,\n );\n if (items === undefined || items.length === 0) return;\n items[enterAt.current === \"last\" ? items.length - 1 : 0]?.focus();\n }, [open]);\n\n const openWithKeyboard = (event: KeyboardEvent<HTMLElement>) => {\n if (event.key !== \"ArrowDown\" && event.key !== \"ArrowUp\") return;\n event.preventDefault();\n enterAt.current = event.key === \"ArrowUp\" ? \"last\" : \"first\";\n setOpen(true);\n };\n\n /* The trigger is rebuilt from its own type and props rather than cloned. It\n renders identically, and the fork lands on a JSX ref attribute — which is\n what says \"hand this the node at commit\" rather than \"read a ref while\n rendering\", the thing cloneElement's props object cannot express. */\n const { type: Trigger, props: triggerProps } = trigger;\n\n return (\n <MenuContext.Provider value={{ close }}>\n <Trigger\n {...triggerProps}\n ref={forkRef(triggerRef, triggerProps.ref)}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={open ? id : undefined}\n onClick={(event: MouseEvent<HTMLElement>) => {\n triggerProps.onClick?.(event);\n enterAt.current = \"first\";\n setOpen((v) => !v);\n }}\n onKeyDown={(event: KeyboardEvent<HTMLElement>) => {\n triggerProps.onKeyDown?.(event);\n openWithKeyboard(event);\n }}\n />\n {mounted &&\n createPortal(\n <div\n ref={panelRef}\n id={id}\n role=\"menu\"\n aria-label={label}\n className={cx(styles.panel, className)}\n data-open={visible || undefined}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.stopPropagation();\n close();\n return;\n }\n /* Tab out of a menu closes it and moves on (APG). Putting focus\n back on the trigger first — without eating the key — is what\n makes \"on\" mean the stop after the trigger, not wherever the\n panel's portal sits at the end of <body>. */\n if (event.key === \"Tab\") {\n close();\n return;\n }\n /* APG type-ahead: a printable key jumps to the next enabled\n item whose label starts with it, wrapping past the end. */\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n const items = [\n ...(panelRef.current?.querySelectorAll<HTMLElement>(\n `${ITEM_SELECTOR}:not([disabled])`,\n ) ?? []),\n ];\n const current = items.indexOf(event.target as HTMLElement);\n const fromNext = [...items.slice(current + 1), ...items.slice(0, current + 1)];\n fromNext\n .find((item) =>\n item.textContent?.trim().toLowerCase().startsWith(event.key.toLowerCase()),\n )\n ?.focus();\n return;\n }\n onArrowKeys(event);\n }}\n >\n {children}\n </div>,\n document.body,\n )}\n </MenuContext.Provider>\n );\n}\n\nexport interface MenuItemProps {\n /** What the action does. The menu closes itself around it. */\n onSelect: () => void;\n disabled?: boolean;\n /** \"danger\" for an action that destroys something. Default \"default\". */\n tone?: \"default\" | \"danger\";\n children: ReactNode;\n}\n\nexport function MenuItem({ onSelect, disabled = false, tone = \"default\", children }: MenuItemProps) {\n const menu = useContext(MenuContext);\n return (\n <button\n type=\"button\"\n role=\"menuitem\"\n // The menu is one stop on the page's tab ring; the arrow keys move\n // inside it, so the items are focusable but not tabbable.\n tabIndex={-1}\n disabled={disabled}\n className={cx(styles.item, styles[`tone-${tone}`])}\n onClick={() => {\n onSelect();\n menu?.close();\n }}\n >\n {children}\n </button>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Tooltip/Tooltip.module.css?mds-scoped\";\nexport default {\"surface\":\"mds-Tooltip__surface\"};","import { useEffect, useId, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { FocusEvent, PointerEvent, ReactElement, ReactNode, Ref } from \"react\";\nimport { forkRef } from \"../../internal/forkRef\";\nimport { useAnchoredPosition } from \"../../internal/useAnchoredPosition\";\nimport type { Placement } from \"../../internal/useAnchoredPosition\";\nimport styles from \"./Tooltip.module.css\";\n\n/** Distance from the trigger, matching --mds-space-2. */\nconst GAP = 8;\n\n/** Pointer dwell before it appears. Long enough that crossing the control on\n the way somewhere else does not flash a label. */\nconst DEFAULT_DELAY_MS = 400;\n\n/** Grace after the pointer leaves, long enough to cross the gap onto the\n surface (WCAG 1.4.13: hover content must itself be hoverable). Reaching\n either side stops the clock; blur and Escape still hide at once. */\nconst HOVER_GRACE_MS = 150;\n\nexport type TooltipPlacement = Placement;\n\n/** What Tooltip needs to be able to put on its trigger. */\ntype TriggerProps = {\n ref?: Ref<HTMLElement> | undefined;\n \"aria-describedby\"?: string | undefined;\n onPointerEnter?: ((event: PointerEvent<HTMLElement>) => void) | undefined;\n onPointerLeave?: ((event: PointerEvent<HTMLElement>) => void) | undefined;\n onFocus?: ((event: FocusEvent<HTMLElement>) => void) | undefined;\n onBlur?: ((event: FocusEvent<HTMLElement>) => void) | undefined;\n};\n\nexport interface TooltipProps {\n /** The label. Plain text — nothing here is reachable by pointer or key. */\n content: ReactNode;\n /** Side it prefers. It flips and slides to stay on screen. Default \"top\". */\n placement?: TooltipPlacement;\n /** Pointer dwell in ms. Keyboard focus ignores it. Default 400. */\n delayMs?: number;\n /** The control being labelled. Gets the ref and the handlers. */\n children: ReactElement<TriggerProps>;\n}\n\n/**\n * A name for a control that shows only its glyph, on hover and on focus.\n *\n * It describes; it does not hold anything. There is nothing to click inside\n * it and focus never moves into it, so anything the reader has to act on —\n * a link, a button, a form — belongs in a Popover instead. A control whose\n * label is *only* here still needs an aria-label of its own: this is the\n * accessible description, not the accessible name.\n *\n * ```tsx\n * <Tooltip content=\"Remove from heat\">\n * <Button variant=\"ghost\" aria-label=\"Remove from heat\"><Icon name=\"x\" /></Button>\n * </Tooltip>\n * ```\n */\nexport function Tooltip({\n content,\n placement = \"top\",\n delayMs = DEFAULT_DELAY_MS,\n children,\n}: TooltipProps) {\n const id = useId();\n const [open, setOpen] = useState(false);\n const anchorRef = useRef<HTMLElement>(null);\n const surfaceRef = useRef<HTMLDivElement>(null);\n const timer = useRef<ReturnType<typeof setTimeout>>(undefined);\n\n const show = () => {\n clearTimeout(timer.current);\n setOpen(true);\n };\n const hide = () => {\n clearTimeout(timer.current);\n setOpen(false);\n };\n const hideAfterGrace = () => {\n clearTimeout(timer.current);\n timer.current = setTimeout(hide, HOVER_GRACE_MS);\n };\n\n useEffect(() => clearTimeout(timer.current), []);\n\n useAnchoredPosition({ open, anchorRef, floatingRef: surfaceRef, placement, gap: GAP });\n\n /* WCAG 1.4.13 (Content on Hover or Focus): whatever put it there, Escape\n takes it away without moving the pointer or the focus. */\n useEffect(() => {\n if (!open) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") hide();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [open]);\n\n /* The trigger is rebuilt from its own type and props rather than cloned. It\n renders identically, and the fork lands on a JSX ref attribute — which is\n what says \"hand this the node at commit\" rather than \"read a ref while\n rendering\", the thing cloneElement's props object cannot express. */\n const { type: Trigger, props: triggerProps } = children;\n\n return (\n <>\n <Trigger\n {...triggerProps}\n ref={forkRef(anchorRef, triggerProps.ref)}\n // Only while it exists: a describedby pointing at nothing is a broken\n // reference, and axe reads it as one.\n aria-describedby={open ? id : triggerProps[\"aria-describedby\"]}\n onPointerEnter={(event: PointerEvent<HTMLElement>) => {\n triggerProps.onPointerEnter?.(event);\n // A touch fires pointerenter with no way to leave, so the label would\n // stick until the next tap somewhere else. Touch gets nothing here;\n // the control needs a real name either way.\n if (event.pointerType === \"touch\") return;\n clearTimeout(timer.current);\n timer.current = setTimeout(show, delayMs);\n }}\n onPointerLeave={(event: PointerEvent<HTMLElement>) => {\n triggerProps.onPointerLeave?.(event);\n hideAfterGrace();\n }}\n // No dwell on focus: the reader has already committed to the control,\n // and a delay on a keyboard path reads as the tooltip being broken.\n onFocus={(event: FocusEvent<HTMLElement>) => {\n triggerProps.onFocus?.(event);\n show();\n }}\n onBlur={(event: FocusEvent<HTMLElement>) => {\n triggerProps.onBlur?.(event);\n hide();\n }}\n />\n {open &&\n createPortal(\n <div\n ref={surfaceRef}\n id={id}\n role=\"tooltip\"\n className={styles.surface}\n onPointerEnter={show}\n onPointerLeave={hideAfterGrace}\n >\n {content}\n </div>,\n document.body,\n )}\n </>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ConfirmDialog/ConfirmDialog.module.css?mds-scoped\";\nexport default {\"description\":\"mds-ConfirmDialog__description\",\"error\":\"mds-ConfirmDialog__error\"};","import type { ReactNode } from \"react\";\nimport { useId, useState } from \"react\";\nimport { Button } from \"../Button/Button\";\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from \"../Modal/Modal\";\nimport styles from \"./ConfirmDialog.module.css\";\n\nexport type ConfirmDialogTone = \"default\" | \"danger\" | \"warning\";\n\nexport interface ConfirmDialogProps<T = void> {\n /** The row in question, or null when nothing is being asked. Held by the\n caller — only it knows which row was tapped — and handed back to\n `onConfirm`, so the action runs against the row the user actually saw. */\n target?: T | null;\n /** Defaults to \"there is a row in question\"; pass it directly for a\n one-off prompt that has no row. */\n open?: boolean;\n /** Cancel, or the action having landed. Clear the row here. */\n onClose?: () => void;\n /** The action, given the row it was asked about. Return the promise the\n write is riding on — typically `mutateAsync(...)` — and do not catch:\n a handled rejection resolves, and a resolved action is\n indistinguishable from a write that landed. Typed as a promise so\n fire-and-forget is a type error rather than a prompt that closes on\n the click. */\n onConfirm?: (target: T) => Promise<unknown>;\n /** Short question, e.g. \"Delete session?\" */\n title: string;\n /** Consequence explained in a sentence or two. */\n description?: ReactNode;\n confirmLabel: string;\n /** Names the way out, e.g. \"Cancel\". Required: it is a button with words on\n it, and the words are the app's. */\n cancelLabel: string;\n /** Styles the confirm action: danger for destructive, warning for\n consequential-but-recoverable. */\n tone?: ConfirmDialogTone;\n /** How to phrase a failure, given the error's own message. Defaults to\n that message — supply this rather than catching inside `onConfirm`,\n so the copy stays with the caller. */\n errorMessage?: (message: string) => string;\n}\n\n/** What the panel is showing, the row included. Frozen at close so the exit\n animation still has a question to animate away after the caller has\n dropped what it was asking about. */\ninterface Shown<T> {\n target: T | null | undefined;\n title: string;\n description: ReactNode;\n confirmLabel: string;\n cancelLabel: string;\n tone: ConfirmDialogTone;\n}\n\nconst CONFIRM_VARIANT = {\n default: \"primary\",\n danger: \"danger\",\n warning: \"warning\",\n} as const;\n\n/**\n * A binary confirm/cancel prompt for consequential actions. role=\"alertdialog\"\n * so assistive tech announces it and holds focus until the user decides.\n *\n * The prompt owns everything downstream of the tap: it stays busy until\n * `onConfirm` settles, closes only once the write has landed, and keeps\n * itself up with the reason shown if it fails. Callers supply the question,\n * not the mechanics.\n *\n * ```tsx\n * <ConfirmDialog\n * target={asked}\n * onClose={() => setAsked(null)}\n * onConfirm={(row) => remove.mutateAsync(row.id)}\n * title=\"Delete session?\"\n * description=\"This cannot be undone.\"\n * confirmLabel=\"Delete\"\n * cancelLabel=\"Cancel\"\n * tone=\"danger\"\n * />\n * ```\n */\nexport function ConfirmDialog<T = void>({\n target,\n open = target != null,\n onClose,\n onConfirm,\n title,\n description,\n confirmLabel,\n cancelLabel,\n tone = \"default\",\n errorMessage,\n}: ConfirmDialogProps<T>) {\n const descriptionId = useId();\n const [busy, setBusy] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Each new question starts idle. Reset on the way in rather than on the\n // way out: on the way out the panel is still visible, and wiping the\n // spinner there restores the unanswered question for the length of the\n // exit animation. Render-phase adjust, the \"state from props\" pattern —\n // an effect would paint the stale frame first.\n const [prevOpen, setPrevOpen] = useState(open);\n if (open !== prevOpen) {\n setPrevOpen(open);\n if (open) {\n setBusy(false);\n setError(null);\n }\n }\n\n // While open, show the live props. Closing freezes them (in the close\n // handlers, where state writes are free) because the closing render's\n // props are already stale: the caller clears its row in the same set of\n // state updates that closes the prompt.\n const live: Shown<T> = { target, title, description, confirmLabel, cancelLabel, tone };\n const [frozen, setFrozen] = useState<Shown<T>>(live);\n const view = open ? live : frozen;\n\n const close = () => {\n setFrozen(live);\n onClose?.();\n };\n\n const handleConfirm = async () => {\n if (!onConfirm) return;\n // Read the row now, at the tap, not after the await: by then the caller\n // has been told to close and has cleared it.\n const asked = live.target as T;\n setBusy(true);\n setError(null);\n try {\n await onConfirm(asked);\n // Only now: before this point the write may still fail, and a prompt\n // that has already closed has told the user something it doesn't know.\n close();\n } catch (e) {\n setBusy(false);\n const message = (e as Error).message;\n setError(errorMessage?.(message) ?? message);\n }\n };\n\n return (\n <Modal\n open={open}\n // Escape must always work — dropping onClose while busy would leave\n // the dialog with no keyboard exit (WCAG 2.1.2). The scrim stays\n // guarded regardless, so a stray click can't dismiss the question.\n onClose={close}\n label={view.title}\n role=\"alertdialog\"\n /* The consequence is why the dialog interrupts: as the accessible\n description it is read out with the question. */\n describedBy={view.description != null ? descriptionId : undefined}\n closeOnScrimClick={false}\n >\n <ModalHeader>{view.title}</ModalHeader>\n <ModalBody>\n {view.description != null ? (\n <p id={descriptionId} className={styles.description}>\n {view.description}\n </p>\n ) : null}\n {error != null ? (\n <p role=\"alert\" className={styles.error}>\n {error}\n </p>\n ) : null}\n </ModalBody>\n <ModalFooter>\n {/* Stays enabled while busy so focus always has an operable home\n (only Confirm is locked, to block a double submit). */}\n <Button variant=\"secondary\" onClick={close}>\n {view.cancelLabel}\n </Button>\n <Button variant={CONFIRM_VARIANT[view.tone]} loading={busy} onClick={handleConfirm}>\n {view.confirmLabel}\n </Button>\n </ModalFooter>\n </Modal>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Screen/Screen.module.css?mds-scoped\";\nexport default {\"screen\":\"mds-Screen__screen\",\"content\":\"mds-Screen__content\",\"flush\":\"mds-Screen__flush\"};","import type { HTMLAttributes, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./Screen.module.css\";\n\n/**\n * Page scaffold. Compose:\n *\n * ```tsx\n * <Screen>\n * <AppBar title=\"Sessions\" />\n * <ScreenContent>…</ScreenContent>\n * <TabBar label=\"Primary\">…</TabBar>\n * </Screen>\n * ```\n *\n * Fills the height its host gives it — the app root, a device frame, a\n * `flex: 1; min-height: 0` slot — rather than claiming the viewport itself:\n * on iOS the software keyboard shrinks the visual viewport without shrinking\n * 100dvh, so only the host can know the real height. A standalone app gives\n * the root chain `height: 100%`.\n */\nexport function Screen({ children }: { children: ReactNode }) {\n return <div className={styles.screen}>{children}</div>;\n}\n\nexport interface ScreenContentProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode;\n /** Drop the page gutter — full-bleed lists whose rows carry their own\n padding. Default keeps it: forms and prose want the margin. */\n flush?: boolean;\n /** The scrolling element. A screen that drives the scroll — restores an\n offset on back, pins a thread to the bottom — has no other way to reach\n it. Read it; restyling it is the sheet's job. */\n ref?: Ref<HTMLElement>;\n}\n\n/** The scrollable main region of a Screen. */\nexport function ScreenContent({ children, flush = false, className, ref, ...rest }: ScreenContentProps) {\n return (\n <main ref={ref} className={cx(styles.content, flush && styles.flush, className)} {...rest}>\n {children}\n </main>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/AppBar/AppBar.module.css?mds-scoped\";\nexport default {\"bar\":\"mds-AppBar__bar\",\"title\":\"mds-AppBar__title\",\"text\":\"mds-AppBar__text\",\"subtitle\":\"mds-AppBar__subtitle\",\"slot\":\"mds-AppBar__slot\",\"trailing\":\"mds-AppBar__trailing\"};","import type { HTMLAttributes, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport styles from \"./AppBar.module.css\";\n\nexport interface AppBarProps extends Omit<HTMLAttributes<HTMLElement>, \"title\"> {\n /** Page heading — rendered as the h1. A node is allowed for titles that\n are themselves a control (e.g. a thread title that opens the event). */\n title?: ReactNode;\n /** Second line under the title — a member count, a status. Kept out of\n the h1 so the accessible page name stays just the title. */\n subtitle?: ReactNode;\n /** Left slot — typically a back icon-only Button. */\n leading?: ReactNode;\n /** Right slot — actions. */\n trailing?: ReactNode;\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * Top app bar. Sticky, one per screen; the title is the page h1.\n *\n * ```tsx\n * <AppBar\n * title=\"Sessions\"\n * trailing={\n * <Button iconOnly aria-label=\"Settings\" variant=\"ghost\" onClick={openSettings}>\n * <Icon name=\"settings\" />\n * </Button>\n * }\n * />\n * ```\n */\nexport function AppBar({ title, subtitle, leading, trailing, className, ref, ...rest }: AppBarProps) {\n const heading = title ? <h1 className={styles.title}>{title}</h1> : null;\n return (\n <header ref={ref} className={cx(styles.bar, className)} {...rest}>\n {leading ? <div className={styles.slot}>{leading}</div> : null}\n {subtitle != null ? (\n <div className={styles.text}>\n {heading}\n <div className={styles.subtitle}>{subtitle}</div>\n </div>\n ) : (\n heading\n )}\n {trailing ? <div className={`${styles.slot} ${styles.trailing}`}>{trailing}</div> : null}\n </header>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/TabBar/TabBar.module.css?mds-scoped\";\nexport default {\"bar\":\"mds-TabBar__bar\",\"item\":\"mds-TabBar__item\",\"active\":\"mds-TabBar__active\",\"icon\":\"mds-TabBar__icon\",\"badge\":\"mds-TabBar__badge\",\"label\":\"mds-TabBar__label\",\"action\":\"mds-TabBar__action\"};","import type { ElementType, MouseEventHandler, ReactNode } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { VisuallyHidden } from \"../VisuallyHidden/VisuallyHidden\";\nimport styles from \"./TabBar.module.css\";\n\nexport interface TabBarProps {\n /** Accessible name of the navigation landmark. */\n label: string;\n children: ReactNode;\n}\n\n/**\n * Bottom navigation. Items are links (or buttons for non-route actions);\n * they stay in the natural tab order — roving focus is for composite\n * widgets, not navigation landmarks.\n *\n * ```tsx\n * <TabBar label=\"Primary\">\n * <TabBarItem label=\"Home\" icon={<Icon name=\"home\" />} href=\"/\" active />\n * <TabBarItem label=\"Search\" icon={<Icon name=\"search\" />} href=\"/search\" />\n * </TabBar>\n * ```\n */\nexport function TabBar({ label, children }: TabBarProps) {\n return (\n <nav aria-label={label} className={styles.bar}>\n {children}\n </nav>\n );\n}\n\nexport interface TabBarItemProps {\n label: string;\n icon: ReactNode;\n href?: string | undefined;\n onClick?: MouseEventHandler | undefined;\n active?: boolean | undefined;\n /** Attention dot on the icon — unread, pending. Boolean only: the count\n lives on the destination screen, the bar just says \"something's there\". */\n badge?: boolean | undefined;\n /** What the dot means, e.g. \"New messages\" — the dot itself sits inside the\n aria-hidden icon, so without these words the badge is invisible to a\n reader. The words are the app's, like every label here. */\n badgeLabel?: string | undefined;\n /** Element override for the link, e.g. a router's Link. A bottom bar is\n where a full page reload costs the most — it restarts the whole shell. */\n as?: ElementType;\n /** Take the caption off the screen and leave it in the accessible name.\n For a bar whose glyphs carry the meaning: four captions on the narrowest\n phone wrap, and a translation twice the length of the English wraps\n everywhere. Hidden, never dropped — the word is the item's name. */\n hideLabel?: boolean | undefined;\n}\n\nexport function TabBarItem({\n label,\n icon,\n href,\n onClick,\n active = false,\n badge = false,\n badgeLabel,\n as,\n hideLabel = false,\n}: TabBarItemProps) {\n const className = cx(styles.item, active && styles.active);\n const content = (\n <>\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n {badge ? <span className={styles.badge} data-testid=\"mds-tabbar-badge\" /> : null}\n </span>\n {hideLabel ? (\n <VisuallyHidden>{label}</VisuallyHidden>\n ) : (\n <span className={styles.label}>{label}</span>\n )}\n {/* After the caption, so the name reads \"Messages New messages\" — the\n dot itself sits inside the aria-hidden icon and says nothing. */}\n {badge && badgeLabel !== undefined && <VisuallyHidden>{badgeLabel}</VisuallyHidden>}\n </>\n );\n if (href !== undefined) {\n const Element: ElementType = as ?? \"a\";\n return (\n <Element href={href} className={className} aria-current={active ? \"page\" : undefined} onClick={onClick}>\n {content}\n </Element>\n );\n }\n return (\n <button type=\"button\" className={className} aria-current={active ? \"page\" : undefined} onClick={onClick}>\n {content}\n </button>\n );\n}\n\nexport interface TabBarActionProps {\n /** Names the action — icon-only, so this is all a screen reader gets. */\n label: string;\n icon: ReactNode;\n onClick?: MouseEventHandler | undefined;\n}\n\n/** Raised center action (a create button). Place it between the item halves:\n it is a peer child, and the bar's flex layout leaves it its own width. */\nexport function TabBarAction({ label, icon, onClick }: TabBarActionProps) {\n return (\n <button type=\"button\" aria-label={label} className={styles.action} onClick={onClick}>\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n </button>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/SideNav/SideNav.module.css?mds-scoped\";\nexport default {\"nav\":\"mds-SideNav__nav\",\"group\":\"mds-SideNav__group\",\"heading\":\"mds-SideNav__heading\",\"item\":\"mds-SideNav__item\",\"active\":\"mds-SideNav__active\",\"icon\":\"mds-SideNav__icon\",\"label\":\"mds-SideNav__label\",\"count\":\"mds-SideNav__count\"};","import type { ElementType, HTMLAttributes, MouseEventHandler, ReactElement, ReactNode, Ref } from \"react\";\nimport { useId } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Badge } from \"../Badge/Badge\";\nimport styles from \"./SideNav.module.css\";\n\nexport interface SideNavProps extends Omit<HTMLAttributes<HTMLElement>, \"children\"> {\n /** Accessible name of the navigation landmark. There is more than one\n navigation on a page wide enough to show this one. */\n label: string;\n children: ReactNode;\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * The standing column of destinations, from the width where it costs nothing.\n * TabBar is the same list on a phone; both are navigation landmarks whose\n * items stay in the natural tab order — roving focus is for composite\n * widgets, not for navigation.\n *\n * ```tsx\n * <SideNav label=\"Primary\">\n * <SideNavItem label=\"Home\" icon={<Icon name=\"home\" />} href=\"/\" active />\n * <Divider />\n * <SideNavGroup label=\"More\">\n * <SideNavItem label=\"Settings\" icon={<Icon name=\"settings\" />} href=\"/settings\" />\n * </SideNavGroup>\n * <Button fullWidth iconLeft={<Icon name=\"plus\" />} onClick={compose}>New post</Button>\n * </SideNav>\n * ```\n *\n * The column's own placement is the host's — a sticky offset under a header,\n * a fixed rail, a plain block — so it takes a className and sets none of it.\n */\nexport function SideNav({ label, className, children, ref, ...rest }: SideNavProps): ReactElement {\n return (\n <nav ref={ref} aria-label={label} className={cx(styles.nav, className)} {...rest}>\n {children}\n </nav>\n );\n}\n\nexport interface SideNavGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Heading over the run, which also names it to a screen reader. Without\n one the rows are still a run on screen and nothing to be told about, so\n the group takes no role. */\n label?: ReactNode;\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n}\n\n/** A run of destinations under one heading, or none. */\nexport function SideNavGroup({\n label,\n className,\n children,\n ref,\n ...rest\n}: SideNavGroupProps): ReactElement {\n const headingId = useId();\n\n return (\n <div\n ref={ref}\n className={cx(styles.group, className)}\n role={label != null ? \"group\" : undefined}\n aria-labelledby={label != null ? headingId : undefined}\n {...rest}\n >\n {label != null && (\n <span className={styles.heading} id={headingId}>\n {label}\n </span>\n )}\n {children}\n </div>\n );\n}\n\nexport interface SideNavItemProps {\n label: ReactNode;\n icon?: ReactNode;\n href?: string | undefined;\n onClick?: MouseEventHandler | undefined;\n /** The destination the reader is on. Lands as aria-current=\"page\". */\n active?: boolean | undefined;\n /** How many are waiting, at the far end of the row. Nothing at zero: an\n absence needs no mark. */\n count?: number | undefined;\n /** What the count counts, in words — the badge is read as this, and a bare\n number is read as nothing. */\n countLabel?: string | undefined;\n /** The last number worth printing; above it the badge says `99+`, because\n the column's width is fixed and a fourth digit takes it from the word. */\n max?: number | undefined;\n /** Element override for the link, e.g. a router's Link. */\n as?: ElementType;\n}\n\n/** One destination. A link where it has one, a button where it does not. */\nexport function SideNavItem({\n label,\n icon,\n href,\n onClick,\n active = false,\n count,\n countLabel,\n max = 99,\n as,\n}: SideNavItemProps): ReactElement {\n const className = cx(styles.item, active && styles.active);\n const current = active ? \"page\" : undefined;\n const content = (\n <>\n {icon != null && (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span className={styles.label}>{label}</span>\n {count !== undefined && count > 0 && (\n <Badge tone=\"accent\" role=\"status\" aria-label={countLabel} className={styles.count}>\n {count > max ? `${max}+` : count}\n </Badge>\n )}\n </>\n );\n\n if (href !== undefined) {\n const Element: ElementType = as ?? \"a\";\n return (\n <Element href={href} className={className} aria-current={current} onClick={onClick}>\n {content}\n </Element>\n );\n }\n\n return (\n <button type=\"button\" className={className} aria-current={current} onClick={onClick}>\n {content}\n </button>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/MediaPlaceholder/MediaPlaceholder.module.css?mds-scoped\";\nexport default {\"media\":\"mds-MediaPlaceholder__media\",\"fill\":\"mds-MediaPlaceholder__fill\",\"image\":\"mds-MediaPlaceholder__image\",\"caption\":\"mds-MediaPlaceholder__caption\",\"cover\":\"mds-MediaPlaceholder__cover\",\"blurred\":\"mds-MediaPlaceholder__blurred\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { CSSVars } from \"../../internal/cx\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./MediaPlaceholder.module.css\";\n\nexport interface MediaPlaceholderProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** CSS aspect-ratio for the box, e.g. \"4 / 5\". Default 16 / 9. */\n aspect?: string;\n /** Picture to draw. Absent, or broken, leaves the empty surface showing. */\n src?: string;\n /** Describes the picture. Empty = decorative, which is the honest default:\n a file name is not a description. */\n alt?: string;\n /** Glyph for the empty surface — an <Icon> or any node. */\n glyph?: ReactNode;\n /** A few words under the glyph, or over the picture. */\n caption?: string;\n /** Obscures the media without hiding that there is media. */\n blurred?: boolean;\n /** Drawn over the surface, outside the blur — a reveal prompt, a badge, a\n play button. The consent vocabulary that usually goes here belongs to the\n app, so the system takes it as a node and asks no questions about it. */\n cover?: ReactNode;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * The box a picture goes in, whether or not there is one yet.\n *\n * ```tsx\n * <MediaPlaceholder\n * aspect=\"4 / 5\"\n * src={post.media.src}\n * alt={post.media.alt}\n * blurred={!revealed}\n * cover={post.sensitive && <SensitiveMediaOverlay onReveal={reveal} />}\n * />\n * ```\n */\nexport function MediaPlaceholder({\n aspect,\n src,\n alt = \"\",\n glyph,\n caption,\n blurred = false,\n cover,\n className,\n style,\n ...rest\n}: MediaPlaceholderProps): ReactElement {\n /* The source that failed, not a flag: a flag stays true after the caller\n hands over a different picture, and the second one never gets drawn. */\n const [failed, setFailed] = useState<string>();\n const picture = src !== undefined && failed !== src;\n const vars = (aspect === undefined ? {} : { \"--media-aspect\": aspect }) as CSSVars;\n\n return (\n <div\n className={cx(styles.media, blurred && styles.blurred, className)}\n style={{ ...vars, ...style }}\n {...rest}\n >\n {picture ? (\n <img\n className={styles.image}\n src={src}\n alt={alt}\n loading=\"lazy\"\n decoding=\"async\"\n onError={() => setFailed(src)}\n />\n ) : (\n <div className={styles.fill}>\n {/* The glyph is decoration; the caption is words, and words read out. */}\n {glyph != null && <span aria-hidden=\"true\">{glyph}</span>}\n {caption !== undefined && <Text variant=\"meta\">{caption}</Text>}\n </div>\n )}\n {picture && caption !== undefined && (\n <Text variant=\"meta\" tone=\"on-media\" className={styles.caption}>\n {caption}\n </Text>\n )}\n {cover !== undefined && <div className={styles.cover}>{cover}</div>}\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/ImageCarousel/ImageCarousel.module.css?mds-scoped\";\nexport default {\"carousel\":\"mds-ImageCarousel__carousel\",\"viewport\":\"mds-ImageCarousel__viewport\",\"slide\":\"mds-ImageCarousel__slide\",\"step\":\"mds-ImageCarousel__step\",\"zoom\":\"mds-ImageCarousel__zoom\",\"prev\":\"mds-ImageCarousel__prev\",\"next\":\"mds-ImageCarousel__next\",\"counter\":\"mds-ImageCarousel__counter\",\"thumbs\":\"mds-ImageCarousel__thumbs\",\"thumb\":\"mds-ImageCarousel__thumb\",\"more\":\"mds-ImageCarousel__more\",\"dots\":\"mds-ImageCarousel__dots\",\"dot\":\"mds-ImageCarousel__dot\"};","import type { HTMLAttributes, KeyboardEvent, PointerEvent, ReactElement, ReactNode, Ref } from \"react\";\nimport { useRef, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { ChevronLeftGlyph, ChevronRightGlyph } from \"../../internal/glyphs\";\nimport { Button } from \"../Button/Button\";\nimport { MediaPlaceholder } from \"../MediaPlaceholder/MediaPlaceholder\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./ImageCarousel.module.css\";\n\nexport interface CarouselSlide {\n id: string;\n src?: string;\n alt?: string;\n /** CSS aspect-ratio for this frame. Default 4 / 3. */\n aspect?: string;\n caption?: string;\n /** Obscures the frame and takes away the way into it: a covered frame does\n not open larger, however it is tapped. */\n covered?: boolean;\n /** Drawn over the frame, outside the blur — whatever the app asks consent\n with. */\n cover?: ReactNode;\n}\n\nexport type CarouselPager = \"thumbnails\" | \"dots\" | \"none\";\n\nexport interface ImageCarouselLabels {\n /** Names the carousel landmark, e.g. \"Images\". */\n region: string;\n /** Read out in place of \"region\", e.g. \"carousel\". A screen reader says it\n aloud, so it is the app's word in the app's language. */\n carouselRole: string;\n /** The same for one frame, e.g. \"slide\". */\n slideRole: string;\n previous: string;\n next: string;\n /** \"3 of 8\" — a function, because only the app knows how its language counts. */\n counter: (current: number, total: number) => string;\n /** Names one frame's thumbnail or dot, e.g. \"Image 3\". */\n slide: (position: number) => string;\n /** Names the button standing for the frames no thumbnail fits. */\n more: (hidden: number) => string;\n}\n\nexport type ImageCarouselProps = Omit<HTMLAttributes<HTMLElement>, \"children\" | \"onChange\"> & {\n slides: CarouselSlide[];\n labels: ImageCarouselLabels;\n /** Held index. Unset, the carousel keeps its own. */\n index?: number;\n defaultIndex?: number;\n onIndexChange?: (index: number) => void;\n pager?: CarouselPager;\n maxThumbnails?: number;\n ref?: Ref<HTMLElement>;\n} & (\n | {\n /** Called with the frame to open larger — by the control, or by a tap\n on the frame itself. */\n onZoom: (index: number) => void;\n /** Glyph for that control, from the app's icon set. */\n zoomIcon: ReactNode;\n zoomLabel: string;\n }\n | { onZoom?: undefined; zoomIcon?: undefined; zoomLabel?: undefined }\n );\n\n/* Below this a drag is a tap: a finger never lands and lifts on the same\n pixel, and a photograph that only opens for a perfectly still hand reads as\n broken. */\nconst SWIPE_THRESHOLD = 40;\n\n/**\n * A gallery of frames, one on show.\n *\n * ```tsx\n * <ImageCarousel\n * slides={post.images.map((image) => ({ ...image, covered: !revealed }))}\n * labels={t.gallery}\n * onZoom={openLightbox}\n * zoomIcon={<Icon name=\"zoom-in\" />}\n * zoomLabel={t.viewLarger}\n * />\n * ```\n */\nexport function ImageCarousel({\n slides,\n labels,\n index,\n defaultIndex = 0,\n onIndexChange,\n pager = \"thumbnails\",\n maxThumbnails = 4,\n onZoom,\n zoomIcon,\n zoomLabel,\n className,\n ...rest\n}: ImageCarouselProps): ReactElement | null {\n const [ownIndex, setOwnIndex] = useState(defaultIndex);\n const swipeStart = useRef<number | null>(null);\n\n const held = index !== undefined;\n const last = slides.length - 1;\n const current = Math.min(Math.max(held ? index : ownIndex, 0), last);\n const many = slides.length > 1;\n const slide = slides[current];\n if (slide === undefined) return null;\n\n const goTo = (next: number) => {\n const clamped = Math.min(Math.max(next, 0), last);\n if (clamped === current) return;\n if (!held) setOwnIndex(clamped);\n onIndexChange?.(clamped);\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (!many) return;\n const step: Record<string, number> = {\n ArrowLeft: current - 1,\n ArrowRight: current + 1,\n Home: 0,\n End: last,\n };\n const next = step[event.key];\n if (next === undefined) return;\n event.preventDefault();\n goTo(next);\n };\n\n const onPointerUp = (event: PointerEvent<HTMLDivElement>) => {\n const start = swipeStart.current;\n swipeStart.current = null;\n if (start === null) return;\n const travelled = event.clientX - start;\n\n if (Math.abs(travelled) < SWIPE_THRESHOLD) {\n /* A tap that landed on a control was the control's, not the frame's. */\n const onControl = (event.target as HTMLElement).closest(\"button\") !== null;\n if (onZoom !== undefined && !onControl && slide.covered !== true) onZoom(current);\n return;\n }\n if (many) goTo(travelled < 0 ? current + 1 : current - 1);\n };\n\n const shown = pager === \"thumbnails\" ? slides.slice(0, maxThumbnails) : [];\n const hidden = slides.length - shown.length;\n const counted = labels.counter(current + 1, slides.length);\n\n return (\n <section\n className={cx(styles.carousel, className)}\n aria-roledescription={labels.carouselRole}\n aria-label={labels.region}\n tabIndex={0}\n onKeyDown={onKeyDown}\n {...rest}\n >\n <div\n className={styles.viewport}\n onPointerDown={(event) => {\n swipeStart.current = event.clientX;\n }}\n onPointerUp={onPointerUp}\n onPointerCancel={() => {\n swipeStart.current = null;\n }}\n >\n <div className={styles.slide} role=\"group\" aria-roledescription={labels.slideRole} aria-label={counted}>\n <MediaPlaceholder\n aspect={slide.aspect ?? \"4 / 3\"}\n {...(slide.src === undefined ? {} : { src: slide.src })}\n {...(slide.alt === undefined ? {} : { alt: slide.alt })}\n {...(slide.caption === undefined ? {} : { caption: slide.caption })}\n blurred={slide.covered === true}\n {...(slide.cover === undefined ? {} : { cover: slide.cover })}\n />\n </div>\n\n {onZoom !== undefined && slide.covered !== true && (\n <Button\n className={styles.zoom}\n variant=\"secondary\"\n size=\"sm\"\n iconOnly\n aria-label={zoomLabel}\n onClick={() => onZoom(current)}\n >\n {zoomIcon}\n </Button>\n )}\n\n {many && (\n <>\n <Button\n className={cx(styles.step, styles.prev)}\n variant=\"secondary\"\n size=\"sm\"\n iconOnly\n aria-label={labels.previous}\n disabled={current === 0}\n onClick={() => goTo(current - 1)}\n >\n <ChevronLeftGlyph />\n </Button>\n <Button\n className={cx(styles.step, styles.next)}\n variant=\"secondary\"\n size=\"sm\"\n iconOnly\n aria-label={labels.next}\n disabled={current === last}\n onClick={() => goTo(current + 1)}\n >\n <ChevronRightGlyph />\n </Button>\n <Text variant=\"meta\" className={styles.counter} aria-live=\"polite\">\n {counted}\n </Text>\n </>\n )}\n </div>\n\n {many && pager === \"thumbnails\" && (\n <div className={styles.thumbs}>\n {shown.map((frame, position) => (\n <button\n key={frame.id}\n type=\"button\"\n className={styles.thumb}\n aria-label={labels.slide(position + 1)}\n aria-current={position === current ? \"true\" : undefined}\n onClick={() => goTo(position)}\n >\n <MediaPlaceholder\n aspect=\"1 / 1\"\n {...(frame.src === undefined ? {} : { src: frame.src })}\n blurred={frame.covered === true}\n />\n </button>\n ))}\n {hidden > 0 && (\n <button\n type=\"button\"\n className={cx(styles.thumb, styles.more)}\n aria-label={labels.more(hidden)}\n onClick={() => goTo(shown.length)}\n >\n <Text variant=\"meta\">+{hidden}</Text>\n </button>\n )}\n </div>\n )}\n\n {many && pager === \"dots\" && (\n <div className={styles.dots}>\n {slides.map((frame, position) => (\n <button\n key={frame.id}\n type=\"button\"\n className={styles.dot}\n aria-label={labels.slide(position + 1)}\n aria-current={position === current ? \"true\" : undefined}\n onClick={() => goTo(position)}\n />\n ))}\n </div>\n )}\n </section>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/UploadProgress/UploadProgress.module.css?mds-scoped\";\nexport default {\"upload\":\"mds-UploadProgress__upload\",\"head\":\"mds-UploadProgress__head\",\"preview\":\"mds-UploadProgress__preview\",\"mark\":\"mds-UploadProgress__mark\",\"name\":\"mds-UploadProgress__name\",\"foot\":\"mds-UploadProgress__foot\",\"status-done\":\"mds-UploadProgress__status-done\",\"status-error\":\"mds-UploadProgress__status-error\"};","import type { HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { CloseGlyph } from \"../../internal/glyphs\";\nimport { Button } from \"../Button/Button\";\nimport { ProgressBar } from \"../ProgressBar/ProgressBar\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./UploadProgress.module.css\";\n\nexport type UploadStatus = \"uploading\" | \"processing\" | \"done\" | \"error\";\n\nexport interface UploadProgressLabels {\n /** Names the bar while bytes are moving, and the state after. */\n uploading: string;\n processing: string;\n done: string;\n /** Shown when the caller has no more specific `error` to give. */\n error: string;\n cancel: string;\n retry: string;\n remove: string;\n}\n\nexport interface UploadProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** The file, as the person who picked it would name it. */\n name: string;\n labels: UploadProgressLabels;\n /** Thumbnail of what is going up — an `<img>`, a `<video>`, anything. */\n preview?: ReactNode;\n /** Glyph for the state it ended in, from the app's icon set. Tinted by the\n status: the system says which state, the app says with what glyph. */\n mark?: ReactNode;\n /** 0–100. Ignored while processing, which reports no percentage. */\n value?: number;\n status?: UploadStatus;\n /** The progress in words — \"2.1 MB of 5 MB\". Read out instead of the\n percentage, and shown under the bar. */\n detail?: string;\n /** Why it failed. Falls back to `labels.error`. */\n error?: string;\n onCancel?: () => void;\n onRetry?: () => void;\n onRemove?: () => void;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * One file on its way up: what it is, how far it has got, and the way out.\n *\n * ```tsx\n * <UploadProgress\n * name={file.name}\n * status={upload.status}\n * value={upload.percent}\n * detail={`${sent} of ${total}`}\n * onCancel={upload.abort}\n * labels={t.upload}\n * />\n * ```\n */\nexport function UploadProgress({\n name,\n labels,\n preview,\n mark,\n value,\n status = \"uploading\",\n detail,\n error,\n onCancel,\n onRetry,\n onRemove,\n className,\n ...rest\n}: UploadProgressProps): ReactElement {\n const running = status === \"uploading\" || status === \"processing\";\n\n return (\n <div className={cx(styles.upload, styles[`status-${status}`], className)} {...rest}>\n <div className={styles.head}>\n {preview !== undefined && <div className={styles.preview}>{preview}</div>}\n {/* The status is announced in words; the mark is its decoration. */}\n {mark !== undefined && (\n <span className={styles.mark} aria-hidden=\"true\">\n {mark}\n </span>\n )}\n <Text variant=\"label\" truncate className={styles.name}>\n {name}\n </Text>\n {running && onCancel !== undefined && (\n <Button iconOnly size=\"sm\" variant=\"ghost\" aria-label={labels.cancel} onClick={onCancel}>\n <CloseGlyph />\n </Button>\n )}\n {!running && onRemove !== undefined && (\n <Button iconOnly size=\"sm\" variant=\"ghost\" aria-label={labels.remove} onClick={onRemove}>\n <CloseGlyph />\n </Button>\n )}\n {status === \"error\" && onRetry !== undefined && (\n <Button size=\"sm\" variant=\"secondary\" onClick={onRetry}>\n {labels.retry}\n </Button>\n )}\n </div>\n\n {running && (\n <ProgressBar\n label={`${labels[status]} ${name}`}\n value={value ?? 0}\n indeterminate={status === \"processing\"}\n {...(detail === undefined ? {} : { valueText: detail })}\n />\n )}\n\n <div className={styles.foot}>\n {status === \"error\" ? (\n <Text variant=\"meta\" tone=\"danger\" role=\"alert\">\n {error ?? labels.error}\n </Text>\n ) : (\n <>\n {/* Mounted empty from the start: a live region only reads out changes\n that happen inside it, so it must be there before the news is.\n The detail stays outside — it ticks with every progress event. */}\n <Text variant=\"meta\" role=\"status\">\n {status === \"uploading\" ? null : labels[status]}\n </Text>\n {detail !== undefined && <Text variant=\"meta\">{detail}</Text>}\n </>\n )}\n </div>\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/FileDrop/FileDrop.module.css?mds-scoped\";\nexport default {\"drop\":\"mds-FileDrop__drop\",\"target\":\"mds-FileDrop__target\",\"over\":\"mds-FileDrop__over\",\"icon\":\"mds-FileDrop__icon\",\"picker\":\"mds-FileDrop__picker\"};","import type { DragEvent, HTMLAttributes, ReactElement, ReactNode, Ref } from \"react\";\nimport { useRef, useState } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./FileDrop.module.css\";\n\nexport interface FileDropProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onDrop\"> {\n /** The invitation, in the app's words — what to hand over, and how. */\n label: string;\n /** The rule under it: the kinds taken, the size ceiling, how many fit. */\n hint?: string;\n /** Glyph above the words, from the app's icon set. */\n icon?: ReactNode;\n /** Passed to the picker, so it offers the right kinds. Same syntax as the\n input attribute: \"image/*\", \".pdf,.docx\". */\n accept?: string;\n /** More than one at a time. A drop of several is cut to one without it —\n the picker would not have let them through either. */\n multiple?: boolean;\n disabled?: boolean;\n /** What arrived, picked or dropped. Never empty. */\n onFiles: (files: File[]) => void;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * A place to hand over a file: press it for the picker, or drop one on it.\n * The list of what is on its way up is UploadProgress' job.\n *\n * ```tsx\n * <FileDrop\n * label={t.upload.drop}\n * hint={t.upload.limit}\n * accept=\"image/*\"\n * multiple\n * onFiles={upload.add}\n * />\n * ```\n */\nexport function FileDrop({\n label,\n hint,\n icon,\n accept,\n multiple = false,\n disabled = false,\n onFiles,\n className,\n ref,\n ...rest\n}: FileDropProps): ReactElement {\n const picker = useRef<HTMLInputElement>(null);\n const [over, setOver] = useState(false);\n\n const take = (list: FileList | null) => {\n if (disabled || list === null || list.length === 0) return;\n const files = [...list];\n onFiles(multiple ? files : files.slice(0, 1));\n };\n\n const dropped = (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setOver(false);\n take(event.dataTransfer.files);\n };\n\n return (\n <div\n className={cx(styles.drop, over && styles.over, className)}\n ref={ref}\n onDragOver={(event) => {\n event.preventDefault();\n setOver(!disabled);\n }}\n onDragLeave={() => setOver(false)}\n onDrop={dropped}\n {...rest}\n >\n <button\n type=\"button\"\n className={styles.target}\n disabled={disabled}\n onClick={() => picker.current?.click()}\n >\n {/* Decoration for the words beside it — readers get the words. */}\n {icon !== undefined && (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <Text variant=\"label\">{label}</Text>\n {hint !== undefined && <Text variant=\"meta\">{hint}</Text>}\n </button>\n\n {/* Off the screen rather than out of the tree: the button is the control\n a person sees, and the input is only how the browser opens a picker. */}\n <input\n type=\"file\"\n className={styles.picker}\n ref={picker}\n tabIndex={-1}\n aria-hidden=\"true\"\n multiple={multiple}\n {...(accept === undefined ? {} : { accept })}\n onChange={(event) => {\n take(event.target.files);\n event.target.value = \"\";\n }}\n />\n </div>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Lightbox/Lightbox.module.css?mds-scoped\";\nexport default {\"panel\":\"mds-Lightbox__panel\",\"bar\":\"mds-Lightbox__bar\",\"surface\":\"mds-Lightbox__surface\",\"image\":\"mds-Lightbox__image\",\"caption\":\"mds-Lightbox__caption\"};","import { useCallback, useEffect, useRef, useState, type PointerEvent as ReactPointerEvent } from \"react\";\nimport type { CSSVars } from \"../../internal/cx\";\nimport { Overlay } from \"../../internal/Overlay\";\nimport { CloseGlyph, ZoomInGlyph, ZoomOutGlyph } from \"../../internal/glyphs\";\nimport { Button } from \"../Button/Button\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./Lightbox.module.css\";\n\nexport interface LightboxLabels {\n /** Names the dialog itself, e.g. \"Image\". */\n dialog: string;\n close: string;\n zoomIn: string;\n zoomOut: string;\n}\n\nexport interface LightboxProps {\n open: boolean;\n onClose: () => void;\n src: string;\n /** Empty says the picture is decoration — rare here, where it is the point. */\n alt?: string;\n caption?: string;\n labels: LightboxLabels;\n}\n\nconst MIN_SCALE = 1;\nconst MAX_SCALE = 4;\n/** One press of a zoom control. */\nconst STEP = 1;\n/** Where a double tap lands: in far enough to be worth the tap, short of the end. */\nconst DOUBLE = 2.5;\n/** Trackpad pinches arrive as wheel deltas; this turns one into a factor. */\nconst WHEEL = 0.01;\n\n/** One arrow press of pan. */\nconst KEY_PAN_PX = 48;\n\n/* An arrow looks that way: ArrowRight brings the right-hand part of the\n picture into the frame, so the picture itself goes left. */\nconst ARROWS: Record<string, { x: number; y: number }> = {\n ArrowLeft: { x: 1, y: 0 },\n ArrowRight: { x: -1, y: 0 },\n ArrowUp: { x: 0, y: 1 },\n ArrowDown: { x: 0, y: -1 },\n};\n\nconst ORIGIN = { x: 0, y: 0 };\n\nconst clamp = (value: number, low: number, high: number) => Math.min(Math.max(value, low), high);\n\nconst round = (value: number) => Math.round(value * 1000) / 1000;\n\nconst distance = (a: { x: number; y: number }, b: { x: number; y: number }) => Math.hypot(a.x - b.x, a.y - b.y);\n\n/**\n * One picture, full screen, zoomable and pannable. Escape and the focus trap\n * come from the overlay shell; the gestures are the component's own.\n *\n * ```tsx\n * <Lightbox\n * open={shown !== null}\n * onClose={() => setShown(null)}\n * src={shown?.src ?? \"\"}\n * alt={shown?.alt ?? \"\"}\n * labels={{ dialog: t(\"image\"), close: t(\"close\"), zoomIn: t(\"zoomIn\"), zoomOut: t(\"zoomOut\") }}\n * />\n * ```\n */\nexport function Lightbox({ open, onClose, src, alt = \"\", caption, labels }: LightboxProps) {\n /* State, not a ref: the portal mounts a commit late, so a ref reads null and\n the wheel listener would never find anything to attach to. */\n const [surface, setSurface] = useState<HTMLDivElement | null>(null);\n\n const [scale, setScale] = useState(MIN_SCALE);\n const [offset, setOffset] = useState(ORIGIN);\n\n const points = useRef(new Map<number, { x: number; y: number }>());\n const from = useRef({ spread: 0, scale: MIN_SCALE, x: 0, y: 0, offset: ORIGIN });\n\n const [shown, setShown] = useState({ src, open });\n if (shown.src !== src || shown.open !== open) {\n setShown({ src, open });\n setScale(MIN_SCALE);\n setOffset(ORIGIN);\n }\n\n /* Fingers on the last picture are not on this one. The map is a ref, so it\n is emptied after the commit rather than during the render — and a pointer\n event cannot arrive in between. */\n useEffect(() => {\n points.current.clear();\n }, [src, open]);\n\n const hold = useCallback(\n (next: { x: number; y: number }, at: number) => {\n const box = surface?.getBoundingClientRect();\n if (!box) return ORIGIN;\n\n /* Half the overhang on each side: past that the frame shows through. */\n const room = { x: (box.width * (at - 1)) / 2, y: (box.height * (at - 1)) / 2 };\n return { x: clamp(next.x, -room.x, room.x), y: clamp(next.y, -room.y, room.y) };\n },\n [surface],\n );\n\n const zoom = useCallback(\n (to: number) => {\n const next = clamp(round(to), MIN_SCALE, MAX_SCALE);\n setScale(next);\n setOffset((current) => hold(current, next));\n },\n [hold],\n );\n\n const at = useRef(scale);\n useEffect(() => {\n at.current = scale;\n }, [scale]);\n\n /* Native and non-passive: React's root `wheel` is passive, so `onWheel`\n cannot preventDefault, and the browser zooms the page instead. */\n useEffect(() => {\n if (!surface) return;\n\n const onWheel = (event: WheelEvent) => {\n if (!event.ctrlKey) return;\n event.preventDefault();\n zoom(at.current * Math.exp(-event.deltaY * WHEEL));\n };\n\n surface.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => surface.removeEventListener(\"wheel\", onWheel);\n }, [surface, zoom]);\n\n /* WCAG 2.1.1: the drag needs a keyboard equal. Zoom has its buttons; the\n pan gets the arrows. On the document because the overlay panel holds\n focus, and nothing else in a lightbox answers to an arrow. */\n useEffect(() => {\n if (!open) return;\n\n const onKeyDown = (event: KeyboardEvent) => {\n const step = ARROWS[event.key];\n if (step === undefined || at.current <= MIN_SCALE) return;\n event.preventDefault();\n setOffset((current) =>\n hold({ x: current.x + step.x * KEY_PAN_PX, y: current.y + step.y * KEY_PAN_PX }, at.current),\n );\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [open, hold]);\n\n function onPointerDown(event: ReactPointerEvent<HTMLDivElement>) {\n points.current.set(event.pointerId, { x: event.clientX, y: event.clientY });\n const [first, second] = [...points.current.values()];\n\n if (first && second) {\n from.current = { ...from.current, spread: distance(first, second), scale };\n return;\n }\n\n if (first) from.current = { ...from.current, x: first.x, y: first.y, offset };\n }\n\n function onPointerMove(event: ReactPointerEvent<HTMLDivElement>) {\n if (!points.current.has(event.pointerId)) return;\n points.current.set(event.pointerId, { x: event.clientX, y: event.clientY });\n\n const [first, second] = [...points.current.values()];\n if (!first) return;\n\n if (second) {\n const spread = distance(first, second);\n if (from.current.spread === 0) return;\n zoom(from.current.scale * (spread / from.current.spread));\n return;\n }\n\n if (scale <= MIN_SCALE) return;\n\n setOffset(\n hold(\n {\n x: from.current.offset.x + (first.x - from.current.x),\n y: from.current.offset.y + (first.y - from.current.y),\n },\n scale,\n ),\n );\n }\n\n function onPointerUp(event: ReactPointerEvent<HTMLDivElement>) {\n points.current.delete(event.pointerId);\n\n /* A finger lifted off a pinch leaves the other one panning from where it is. */\n const [rest] = [...points.current.values()];\n if (rest) from.current = { ...from.current, x: rest.x, y: rest.y, offset };\n }\n\n const vars = {\n \"--zoom\": String(round(scale)),\n \"--pan-x\": `${round(offset.x)}px`,\n \"--pan-y\": `${round(offset.y)}px`,\n } as CSSVars;\n\n return (\n <Overlay\n open={open}\n onClose={onClose}\n label={labels.dialog}\n variant=\"lightbox\"\n closeOnScrimClick={false}\n panelClassName={styles.panel}\n >\n <div className={styles.bar}>\n <Button\n iconOnly\n aria-label={labels.zoomOut}\n variant=\"ghost\"\n onMedia\n disabled={scale <= MIN_SCALE}\n onClick={() => zoom(scale - STEP)}\n >\n <ZoomOutGlyph />\n </Button>\n <Button\n iconOnly\n aria-label={labels.zoomIn}\n variant=\"ghost\"\n onMedia\n disabled={scale >= MAX_SCALE}\n onClick={() => zoom(scale + STEP)}\n >\n <ZoomInGlyph />\n </Button>\n <Button iconOnly aria-label={labels.close} variant=\"ghost\" onMedia onClick={onClose}>\n <CloseGlyph />\n </Button>\n </div>\n\n <div\n ref={setSurface}\n className={styles.surface}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerUp}\n onDoubleClick={() => zoom(scale > MIN_SCALE ? MIN_SCALE : DOUBLE)}\n >\n <img className={styles.image} src={src} alt={alt} draggable={false} style={vars} />\n </div>\n\n {caption !== undefined && (\n <Text variant=\"meta\" tone=\"on-media\" className={styles.caption}>\n {caption}\n </Text>\n )}\n </Overlay>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/VideoPlayer/VideoPlayer.module.css?mds-scoped\";\nexport default {\"player\":\"mds-VideoPlayer__player\",\"frame\":\"mds-VideoPlayer__frame\",\"media\":\"mds-VideoPlayer__media\",\"covered\":\"mds-VideoPlayer__covered\",\"start\":\"mds-VideoPlayer__start\",\"startGlyph\":\"mds-VideoPlayer__startGlyph\",\"cover\":\"mds-VideoPlayer__cover\",\"controls\":\"mds-VideoPlayer__controls\",\"scrub\":\"mds-VideoPlayer__scrub\",\"time\":\"mds-VideoPlayer__time\",\"chapters\":\"mds-VideoPlayer__chapters\",\"chapter\":\"mds-VideoPlayer__chapter\",\"chapterAt\":\"mds-VideoPlayer__chapterAt\"};","import { useEffect, useRef, useState } from \"react\";\nimport type { HTMLAttributes, ReactElement, ReactNode, Ref, SyntheticEvent } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { forkRef } from \"../../internal/forkRef\";\nimport {\n CaptionsGlyph,\n FullscreenExitGlyph,\n FullscreenGlyph,\n PauseGlyph,\n PlayGlyph,\n VolumeGlyph,\n VolumeOffGlyph,\n} from \"../../internal/glyphs\";\nimport { Button } from \"../Button/Button\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./VideoPlayer.module.css\";\n\nexport interface VideoChapter {\n /** Where the chapter starts, in seconds. */\n at: number;\n label: string;\n}\n\nexport interface VideoCaptions {\n src: string;\n lang: string;\n /** Shown in the browser's own track menu, so it is the app's word. */\n label: string;\n defaultOn?: boolean;\n}\n\nexport interface VideoPlayerLabels {\n /** Names the player itself, e.g. \"Hip harness, slowly\". */\n region: string;\n play: string;\n pause: string;\n mute: string;\n unmute: string;\n fullscreen: string;\n exitFullscreen: string;\n seek: string;\n}\n\n/* Chapters and captions bring words of their own. Each is paired with the name\n of the thing it adds, so a player that has neither is asked for neither. */\ntype Chaptered =\n | { chapters: VideoChapter[]; chaptersLabel: string; onChapterSelect?: (at: number) => void }\n | { chapters?: undefined; chaptersLabel?: undefined; onChapterSelect?: undefined };\n\ntype Captioned = { captions: VideoCaptions; captionsLabel: string } | { captions?: undefined; captionsLabel?: undefined };\n\nexport type VideoPlayerProps = Omit<HTMLAttributes<HTMLElement>, \"children\"> & {\n src: string;\n poster?: string;\n labels: VideoPlayerLabels;\n autoPlay?: boolean;\n /** Obscures the picture and takes away the way into it — the cover is the\n only way in while this is set. */\n covered?: boolean;\n /** Drawn over the picture, outside the blur: whatever asks to be let past. */\n cover?: ReactNode;\n ref?: Ref<HTMLElement>;\n} & Chaptered &\n Captioned;\n\n/** Far enough in to have a frame to show, short enough to still be the start. */\nconst FIRST_FRAME_S = 0.001;\n\nconst SECONDS_IN_MINUTE = 60;\nconst SECONDS_IN_HOUR = 3600;\n\nfunction clock(seconds: number): string {\n if (!Number.isFinite(seconds) || seconds < 0) return \"0:00\";\n\n const whole = Math.floor(seconds);\n const s = whole % SECONDS_IN_MINUTE;\n const m = Math.floor(whole / SECONDS_IN_MINUTE) % SECONDS_IN_MINUTE;\n const h = Math.floor(whole / SECONDS_IN_HOUR);\n\n const ss = String(s).padStart(2, \"0\");\n return h > 0 ? `${h}:${String(m).padStart(2, \"0\")}:${ss}` : `${m}:${ss}`;\n}\n\n/**\n * A video with its own transport: play, seek, sound, captions, fullscreen and\n * chapters. The picture can be covered — `covered` obscures it and `cover`\n * holds whatever asks to be let past, which is the app's to write.\n *\n * ```tsx\n * <VideoPlayer\n * src={video.url}\n * poster={video.posterUrl}\n * labels={{ region: t(\"video.of\", { title }), play: t(\"video.play\"), … }}\n * chapters={chapters}\n * chaptersLabel={t(\"video.chapters\")}\n * />\n * ```\n */\nexport function VideoPlayer({\n src,\n poster,\n labels,\n chapters,\n chaptersLabel,\n onChapterSelect,\n captions,\n captionsLabel,\n autoPlay = false,\n covered = false,\n cover,\n className,\n ref,\n ...rest\n}: VideoPlayerProps): ReactElement {\n const media = useRef<HTMLVideoElement>(null);\n const root = useRef<HTMLElement>(null);\n\n const [playing, setPlaying] = useState(false);\n const [muted, setMuted] = useState(false);\n const [at, setAt] = useState(0);\n const [length, setLength] = useState(0);\n const [isFullscreen, setFullscreen] = useState(false);\n /* The toggle's pressed state — reading defaultOn at render told the truth\n only until the first press. */\n const [captionsOn, setCaptionsOn] = useState(captions?.defaultOn ?? false);\n\n function toggle() {\n const el = media.current;\n if (!el) return;\n if (playing) el.pause();\n else void el.play();\n }\n\n function toggleSound() {\n const el = media.current;\n if (!el) return;\n const next = !muted;\n el.muted = next;\n setMuted(next);\n }\n\n function onMetadata(event: SyntheticEvent<HTMLVideoElement>) {\n const el = event.currentTarget;\n setLength(el.duration);\n /* Without a poster the frame is blank until the first frame is decoded, and\n a video that has been seeked already has a frame of its own. */\n if (poster === undefined && el.currentTime === 0) el.currentTime = FIRST_FRAME_S;\n }\n\n function goTo(seconds: number) {\n const el = media.current;\n if (el) el.currentTime = seconds;\n setAt(seconds);\n }\n\n function toggleCaptions() {\n const track = media.current?.textTracks?.[0];\n if (!track) return;\n const next = track.mode !== \"showing\";\n track.mode = next ? \"showing\" : \"disabled\";\n setCaptionsOn(next);\n }\n\n function selectChapter(chapter: VideoChapter) {\n goTo(chapter.at);\n onChapterSelect?.(chapter.at);\n }\n\n useEffect(() => {\n const read = () => setFullscreen(document.fullscreenElement === root.current);\n document.addEventListener(\"fullscreenchange\", read);\n return () => document.removeEventListener(\"fullscreenchange\", read);\n }, []);\n\n function toggleFullscreen() {\n if (isFullscreen) {\n void document.exitFullscreen?.();\n return;\n }\n\n const box = root.current;\n if (box?.requestFullscreen) {\n void box.requestFullscreen();\n return;\n }\n\n /* iPhone Safari has no element fullscreen: the video goes up on its own. */\n (media.current as HTMLVideoElement & { webkitEnterFullscreen?: () => void })?.webkitEnterFullscreen?.();\n }\n\n return (\n <section\n className={cx(styles.player, covered && styles.covered, className)}\n aria-label={labels.region}\n ref={forkRef(root, ref)}\n {...rest}\n >\n <div className={styles.frame}>\n <video\n ref={media}\n className={styles.media}\n src={src}\n poster={poster}\n autoPlay={autoPlay && !covered}\n playsInline\n preload=\"metadata\"\n onPlay={() => setPlaying(true)}\n onPause={() => setPlaying(false)}\n onTimeUpdate={(event) => setAt(event.currentTarget.currentTime)}\n onLoadedMetadata={onMetadata}\n >\n {captions !== undefined && (\n <track\n kind=\"captions\"\n src={captions.src}\n srcLang={captions.lang}\n label={captions.label}\n default={captions.defaultOn}\n />\n )}\n </video>\n\n {!playing && !covered && (\n /* The picture is the target here; the control row below says the same\n thing in words, so this one is not said twice. */\n <button type=\"button\" className={styles.start} onClick={toggle} aria-hidden=\"true\" tabIndex={-1}>\n <span className={styles.startGlyph}>\n <PlayGlyph />\n </span>\n </button>\n )}\n\n {cover !== undefined && <div className={styles.cover}>{cover}</div>}\n </div>\n\n <div className={styles.controls}>\n <Button\n iconOnly\n aria-label={playing ? labels.pause : labels.play}\n variant=\"ghost\"\n size=\"sm\"\n onClick={toggle}\n >\n {playing ? <PauseGlyph /> : <PlayGlyph />}\n </Button>\n\n <input\n type=\"range\"\n className={styles.scrub}\n aria-label={labels.seek}\n /* Spoken as clock time — a raw count of seconds is a sum the\n listener has to do in their head. */\n aria-valuetext={`${clock(Math.min(at, length || 0))} / ${clock(length)}`}\n min={0}\n max={length || 0}\n step={1}\n value={Math.min(at, length || 0)}\n onChange={(event) => goTo(Number(event.target.value))}\n />\n\n <Text variant=\"meta\" className={styles.time}>\n {`${clock(at)} / ${clock(length)}`}\n </Text>\n\n <Button\n iconOnly\n aria-label={muted ? labels.unmute : labels.mute}\n variant=\"ghost\"\n size=\"sm\"\n onClick={toggleSound}\n >\n {muted ? <VolumeOffGlyph /> : <VolumeGlyph />}\n </Button>\n\n {captions !== undefined && (\n <Button\n iconOnly\n aria-label={captionsLabel}\n variant=\"ghost\"\n size=\"sm\"\n aria-pressed={captionsOn}\n onClick={toggleCaptions}\n >\n <CaptionsGlyph />\n </Button>\n )}\n\n <Button\n iconOnly\n aria-label={isFullscreen ? labels.exitFullscreen : labels.fullscreen}\n variant=\"ghost\"\n size=\"sm\"\n onClick={toggleFullscreen}\n >\n {isFullscreen ? <FullscreenExitGlyph /> : <FullscreenGlyph />}\n </Button>\n </div>\n\n {chapters !== undefined && chapters.length > 0 && (\n <ul className={styles.chapters} aria-label={chaptersLabel}>\n {chapters.map((chapter) => (\n <li key={chapter.at}>\n <Button variant=\"ghost\" size=\"sm\" className={styles.chapter} onClick={() => selectChapter(chapter)}>\n <Text variant=\"meta\" className={styles.chapterAt}>\n {clock(chapter.at)}\n </Text>\n <Text variant=\"body\">{chapter.label}</Text>\n </Button>\n </li>\n ))}\n </ul>\n )}\n </section>\n );\n}\n","import \"mds-css:/home/runner/work/mond-design-system/mond-design-system/packages/react/src/components/Breadcrumb/Breadcrumb.module.css?mds-scoped\";\nexport default {\"crumbs\":\"mds-Breadcrumb__crumbs\",\"list\":\"mds-Breadcrumb__list\",\"item\":\"mds-Breadcrumb__item\",\"separator\":\"mds-Breadcrumb__separator\",\"link\":\"mds-Breadcrumb__link\"};","import type { ElementType, HTMLAttributes, ReactElement, Ref } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { ChevronRightGlyph } from \"../../internal/glyphs\";\nimport { Link } from \"../Link/Link\";\nimport { Text } from \"../Text/Text\";\nimport styles from \"./Breadcrumb.module.css\";\n\nexport interface Crumb {\n label: string;\n /** Absent = not a link. The last step never links, wherever it points. */\n href?: string;\n}\n\nexport interface BreadcrumbProps extends Omit<HTMLAttributes<HTMLElement>, \"children\"> {\n /** The trail, root first. The last item is where the reader is. */\n items: Crumb[];\n /** Names the landmark, e.g. \"Breadcrumb\". Required: a page can hold several\n navigation landmarks, and the words are the app's. */\n label: string;\n /** Element the links render as, e.g. a router's Link. */\n linkAs?: ElementType;\n ref?: Ref<HTMLElement>;\n}\n\n/**\n * The trail back up. A navigation landmark holding an ordered list, with the\n * current page as its last, unlinked step.\n *\n * ```tsx\n * <Breadcrumb\n * label={t(\"nav.breadcrumb\")}\n * linkAs={RouterLink}\n * items={[{ label: \"Library\", href: \"/library\" }, { label: \"Kihon\" }]}\n * />\n * ```\n */\nexport function Breadcrumb({\n items,\n label,\n linkAs = \"a\",\n className,\n ...rest\n}: BreadcrumbProps): ReactElement | null {\n if (items.length === 0) return null;\n\n return (\n <nav aria-label={label} className={cx(styles.crumbs, className)} {...rest}>\n <ol className={styles.list}>\n {items.map((item, index) => {\n const last = index === items.length - 1;\n return (\n <li key={`${item.label}-${index}`} className={styles.item}>\n {index > 0 && <ChevronRightGlyph className={styles.separator} />}\n {last || item.href === undefined ? (\n <Text variant=\"meta\" tone={last ? \"primary\" : \"muted\"} aria-current={last ? \"page\" : undefined}>\n {item.label}\n </Text>\n ) : (\n /* inline, not plain: the underline is what separates a step\n you can go back to from the one you are standing on, for a\n reader who cannot tell the two text colors apart. */\n <Link variant=\"inline\" size=\"xs\" as={linkAs} href={item.href} className={styles.link}>\n {item.label}\n </Link>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n"]}
|